Re: [HACKERS] multi-byte aware char_length() etc. - Mailing list pgsql-hackers
From | t-ishii@sra.co.jp |
---|---|
Subject | Re: [HACKERS] multi-byte aware char_length() etc. |
Date | |
Msg-id | 199804230405.NAA02584@srapc451.sra.co.jp Whole thread Raw |
In response to | Re: [HACKERS] multi-byte aware char_length() etc. ("Thomas G. Lockhart" <lockhart@alumni.caltech.edu>) |
Responses |
Re: [HACKERS] multi-byte aware char_length() etc.
Re: [HACKERS] multi-byte aware char_length() etc. |
List | pgsql-hackers |
Hi, here are patches I promised (against 6.3.2): * character_length(), position(), substring() are now aware of multi-byte characters * add octet_length() * add --with-mb option to configure * new regression tests for EUC_KR (contributed by "Soonmyung. Hong" <hong@lunaris.hanmesoft.co.kr>) * add some test cases to the EUC_JP regression test * fix problem in regress/regress.sh in case of System V * fix toupper(), tolower() to handle 8bit chars note that: o patches for both configure.in and configure are included. maybe the one for configure is not necessary. o pg_proc.h was modified to add octet_length(). I used OIDs (1374-1379) for that. Please let me know if these numbers are not appropriate. >> I'm planning to modify some string functions so that they would be >> aware of multi-byte strings if compiled with the multi-byte >> capability. Followings are files I'm going to modify. I would like to >> hear your opinions if you have any. >> >> o character_length() >> >> It seems that the function is implemented as textlen() in >> utils/adt/varlena.c or as varcharlen() in varchar.c. Current >> implementaion returns an octet length rather than a char length. So I >> will change them. However, there might be necessity for getting an >> octet length in some applications. Maybe this is a good chance to add >> SQL92's octet_length(). > >Yes. > >> o lower()/upper() >> >> Implemented in oracle_compat.c. One thing I have noticed is that it >> uses toupper()/tolower(). For ASCII, they are fine. But on some >> platforms (I guess SysV) they might have some problems: >> >> char c; /* c is an 8-bit letter and this platform uses char as >> signed char */ >> toupper(c); /* may cause segfault or any other bad thing */ >> >> So I will change like: >> >> toupper((unsigned char)c); > >I would like to move these routines, as you clean them up, to varlena.c >or whatever Postgres-specific source file is appropriate. Let's leave >oracle_compat.c for non-standard, Oracle-specific functions. Perhaps >eventually we can move any of those which remain to the contrib >directory, assuming that there are good equivalent functions available >in SQL92. > >Sort of annoying having oracle_compat when Oracle doesn't return the >favor by having a "postgres_compat". Well, maybe DataBlades are the same >thing?? :) > >> o position() >> >> Implemented as textpos() in varlena.c. >> >> o substring() >> >> Implemented as text_substr() in varlena.c. > >These two are OK. I'm not yet clear on where in the parser these varlena >functions are matched up with both text and varchar() types. We may need >to do something different as we keep working on getting the >text/varchar/char behavior improved. > ----------------------------- cut here -------------------------- begin 644 cl.patch.gz M'XL("(>Z/C4``V-L+G!A=&@`[%QI6]O(LO[,_(7SI>W(89,7R8LDP`E@S+X- MD$G.\\P=CRS+6"!+'DEFR3*__51UMQ8;V9@,2<@YERS8K>[JJK?>KJ[NEK3G M=,R[%3)P_>#2,_V_['RM4"[(Q8YK%,^:&UM'S4*__4O'ZG9)WGBDVHI4H']F MK%:H%:1?EI:69JP^=^0Z9&/@$;E$I-)*N;Q2D8BD:>HO^7S^$1ES%[TA:ULF MDKQ2T5;*-=9V:?2'ZB.)%4*_9!)B"8@E_:$=6/GV?6`N'&TNDH$>UR>B@3 MUM,<(4>Z!]HQV83`WSGZ<Z$'_M`E>W[/LJ+"(&_A]W7?TPN&6[@:4$NP=_B= MG]8[H=W[P\'`]8*X<[#0LHDL?6WW:6#41$EE:%!Y>T[@N9VA$5BN@R49<K3) M<;!\8CF!"83JD*[K$=VVW5O+N22GS(SS7P])X)*>[G1L,V$,R#!ZNJ<;O<#T MB&\&/E@&\G2?--\U%IIW5"9YYUAWI.%VS$41/QOPB8`H<C2T401V[3FZ3?!" M@;RW@AX)>F:LWKT[)(;ND*&?[)QW'?9,!1'/O#3O!E3ZX=Y!LT`N0)#I@&0T MQ[_W`[,/#5W?=-#JC@G-^Y8#=NL!=HH6N?V!!68&5M\L,*!0"%-%MWV7=*T[ M$RQU^U#JN6W;[/O0RC'`"NSE%@U0\VTK(#Y\!U$4*S*F,*AKV$.JU][YB:I6 MM0)9V".W[M#N$,>%QOH]>H*XW:@;$-+3;T"@"?JC&IT"V2-70S]`!;J6UP=+ M@AZS!<$`"OK@;Q*84,73L9JB!`.NF:MV3;`WAZL6YH"FK0-A'O#K,F"`$H MD%/;U,$/MAE0SE.24=)/(-D%\V3(^"=1#9I/]'<:TSJ3J(9D![)-HYKIZ`!Q M9P+9(J8GO!>2342F440I);I#AYKOIY*/"II(OS3R@6[_S[H$Z])"G5P2*]5$ MK-MU;Y%%((IAN-%%^_7!P+Y'RY/1122&9^I`+]\SBD?ZM=D%_`L&&.?VF1HZ ML5']3`S=2NB9>NC=%O<N[?VV9WJQX_DE]+?KF(`K;PV\;>V?0C3?UP>Z8X)U M4,++&\=0WNA98\4'9U!\X(*^3J+TXCV=)ZS;J/3=\5[C9*L)Q7P,++R[V,ZK MBZCSN\-F:^_XHGEVO'$X-S<R*ICVS3N]/[!-KF4.!D-`QG!AMC,#6+6]+@(* M)B*%.B;ZNR/BEQ[B#>7@:><2'&O>&>8@`#\'E)$L*F`="`8@Z@&!Q^A;8#J> MF5T3&63Z-`B!^ZMR(@J-NW\V#S_P[UR*@S-X`>*6-W08^2^'X.N(KOTV<0<X M^E=8S;E<HE8^C_7R_?8_H<W<)-[,32#.7#ISYM*I,S>%.W-/)<_<)/;,Q?1A M,%'G3\8K63>B6L?R:<C^/CQ+"SM55:R56=BA<V%55,LA#><H;"S*T^%`T+U< M[JX%0'CWORP3^!OF?B)-_EB$-QVPPS#[IA/X11KYH>+<4JQERS:=RZ"W`/,< MY)H64@X_^\.V'WA@UL(BT0%"!T:"?HN?()ZC")(ZHW+I>J=#7/@>1-+C\L@9 MG.`XP")7L6H.!/:QZ._329XQ$"H15&`!FH&.[6$`H+3O2?;<=9W^_="Y+,#( M=2ZS9*T'O];MH:-[EE\`)/JF[W8#S'6OO3<)I2A6=)8Q8'KP42<<A8PNX[JP M9@!F.+'Q.1SK%/GO@M_#4I2&B)VS,?A;W#1P@4JFAU@'+J0N^#&1&ZM(*X35 M9[[%185<Y9X%VN**@Z9`ANL!(W6$`$:0FTQ_<!4D,9ZP-0EOCFT]DTZ$'208 M@V!\N@WQWC\5^53"<NWDT/UE;Y:U(ZXK9EL^0LT95Y")FC,N(A,M_LDZ$L3, MO0>P:7.9-J^!A&E+2>GQM229M)BD/RB[6"["HO)?PN:*LU[XU\)F<FTW!\7K MIZ5NX]7>>W9ITO(.KT`2%@2#E6+Q]O:V$%TJ#DP7`FZ1MRG&/"JRKJ`/X410 M!5TXR,QC+QG""LO"<>[77".W(9QDLKEWN:O,FK`/%<C9UN;1^<*9:>LXSB%9 MWM(#O8TCXDAW]$L:E/C(6$1!QZ'4!(<7$KK&Z!5<[[+(VJSLO%5V=[`[1!2+ M=K8_'_RNVEC$IB*FYKZP!^K]D;O.;>1.<T)N=U]=_2AX)45X#2;L"IZ\M5,7 M#@1-N!;>@I7'0AO^[0A:YE5H8L)JL-83LL(V5,;&!T)/N,ID2_OR&C3"$I&+ MVQ>NA#]02.0SZM$"RAA79E=0A.U,ENF?R3:ZVE^JC8H+Q^5M[2\*$-H$;3-9 M^,PGUO`KETTC\]@2A2(@YLHY'^P0<M>K?PL'&TN;U.;,J]Q.9BWW-O=O^%\# ME4]0%MN'D.3TC8B"_/A61$S=2E&67AAUQWF&50Z$)4$2KI-NR55S_P>H[`HG MW+4]8,O^=F-K7O!6OP@-((#P4[HW-5)I41;".JI0,VAKH<X'Q('0?F"8N+I[ M]"OV%6M9347@>+U:%??J:EW-K-RF-:NE-T-@Z.(8KJ8UI=Z$A`!A>"NL"PH% M3!;+8H5[=@O\M"V<\$#%ANZ^4(3_VW2@[G`?+C)NC,X!5,;Q]M]K5_M?#C)Q M]!N;*0+=*UQ^9&Q#C1-#A@D`QT-'Q^K=6BG7REF`:Q5M%':2X30K7&/C+N4Y M_%^XTB')*^@&9?JP7>RT^WZ2X[35LF"A?B`^'_.1BY3?"A94.#[Z<E2&"F7X MDZR^+PAO;.T2HW?8*.X\,<B@:Z/?*896%<%DUG?[Z.[HU]2>0?82E3H.16XI M=Y53<_NYT%8:4QD:)Z/FCT;]2/).W!7\'9V''KCJ:4;1:9A][K=A-BZPO0-P M;=2[1]Q!H2H(HYJ$6E"2+0MO1Z9+WO`MJP33908'K.`UU?(RE/\Q8A:L M8BZ'SD=K0![H$EJ5QM1<G0[UR3*!J>2N^S&=P.%X0E$X&>Z.>3#J9Q?&U.O< M3NY5SLX5(59>"2)EP37.FYDLA(RR<!":;G1HFQ1MX,JH\-"T&$JO>0-0/FC) M\J7\0")K8P"1A`P6=ZDSMF'$KS.'K65@,D##TA;SL761?U8<G.#Y%(7_QC8N M6%<T4M&Y3KL0O*T]N9&PF*\F*'\J?PAZF"_DRN"N/8AI'[;&!C";*,.%.K)G M)+4A\5I]9Y/)C:(\4*S1W5=9MSB%H$`Z5\"RE,A1E&(3O2)62N&"\R>*_,NT MJ5)XRFJ6!8_C9%>Q*,+C$)WTH[D%RP286[7<+I1?CXQGX/^[W"+(@C#.0M=8 M5G&2[`D<%&84"L\=5@5_)&:FIA_>45[]R))3C&N"M]X^7$\.)L[![T1FG*1` M(ILQXGT6J%DM;I<P^TBD2P>4U^,#GY#'=VBH&L@#/D(8:"><_D\<2QF>(*CU ME99PO+:Y,42'9;()^2>C&932`QE5`5*U-4``2T(Y-)"7FDO"P?ZOFD:C).;\ M)[Q'<"E-);['\$U+Y#19U)3$=I(F:B.CFTT2.MAZ*ASO?\%L()?-[5'.P;2Q MM4*M`!7HT@>">*6V]FZ,;2RS^'OKZNCCL<=&!-VH&$OYJYF=.C(G\Q:DE^K" M>I75?.(6%-/XP9"=HUILGDI_1U)'MYWP,G:/D,/'[!)^L!PKZ+293*$C7&V] M$90]\>A]K%F2T319>9]3<I<YGS(`MU\248*+9]HLF'>%*;3F.TYL&RL>8^-; M+['27.I3=[:HZ*K@;_FU#&5BU"T?,Y.Z908^XAFF5,(]XF346<^)3;&H=[;P M_RVY\MKUU59%6\^/T"1UHRQ2E>Z3\2@AB,T3S%>.'&CT@QR1,:M8X%+Q8? M\[5<E*L/]LZHFZ]P0R.GT5#'-][H:FL-5OS:WS`F;)JPAXN_>*\FK.F%(GB\ M71K;5A-']]2F^\<+<9VT\S8R`US:;ENW"Y8S>?\MO?[D7;CI]2?OQ4UOE[(C M5YNR(Y<N;&Q?K@)R*E/VY2J**%7E.$RR`B4,E!]:AWN;YW6RSCZL8Y$D\<*\ M#9_Q4O/#Q=E&5`'X]`K_\4/@Y!X)WQZA5XV>Z^*^,#^.P2).B>8N900+$"([ M61'Y28HXNO6ZC$=GZT>;ZXQYKY[U!P5.I5B\8S^565&UZ81Z4&TZCQY4_PKZ M1#)26%.=S!I9$<L)SN#72L@8W6CU3'M0SPK\$PT(^3PC0]XS<?Z&4,3)8=Q[ MEFU;!F$7H@VT;*JH92HJG$[6PM.]-Y.I!H*6)^I$!0TNL5Y]#?]WAOTW_-`+ M#YIT$$=\6!`&PP&9HE9"6F#8N$.']SO`1ZB?>M*E2&)54<)=IJ[%V&O"D"`H MU"%96'L;UWC"U@._A;?:!/<#,YLM%`JTEI$ETIO7-<C%:,-L3(BJ4ETADR60 M-Z^KK$>\U-)M2_?K`G[&&QQP:SHKQ%>RD"I0-U>5,FBMA8[^!EHKSZQU&O:U MJB;6:LG;&R;9`#DF/>,$#08VGG@'[BQFU&KEA!EI0K@EKT@#:^%)==`SO8A! M84TW+'*'05QZJ_ODTKHQ'3S\M+IL4LP*G[!B*ZRU#-U^R9(Z=K^*AW@.Y2C6 MN=%M8.Y([2Q+D&L2`*,D#OZ?'9CJ3P=,&H,48)`2,VCJ.`BM?'?>;!V>-#8. MF[,@I:12*"%C(E`\RMJNH=L<*'ZP'Y9-@HFU;+%:$V!B=1A0(_49@Q1@D!(S MZ)L`DT:A%PU,*H.4BJBHI2?$H,:_SUIG34R`9H))45-@2LAX#"8^&8_`Q,L> M@8G5FATF5I_S1ZD!+/(3(M`385%+/QLLJ>Q155'1'L2?Q[#::FZW3G=.3\XN M9L)*2PM!"1G38S5+JD8C-2^;&J=9G=FB-*O+J:.51%4NC8<>R/VF8G*T^1"+ MY10LTJ(.M*48+$_"`&_N2=H/WQ.V+S^PO=].L7OYH=W]=I86XY*>YSV\!DUZ MEL/-ML]L'?69K:,^LW749[Z.^CRRCEJ,=G[9#RRJ8J&K;.^`TXMFO4$VFPUO M\:5WZT65(Q"3/ZM4Q-)B*.C3`XB)Z7FNMX*<)O]VAY#(8_8WQ%M,B>X0W;L< MTALE^"U)#VZ?8JO(IR\@J;KR*C'OK(!(J^0+4Y$I;/JZ@;]'T."F(4ULWZ3? M1G$);Z2+H8"_0$CZ^WD'J2JEQ?D7.4C3`IE:4D15*C]A&L29_J)Q.!LVTH14 M`04\DFG"RFTTR82"Z?FE8<^86AHVBUAJ61;5LOJ$R>XIQI=K+];X5"94)%&M M1`MB5/1#7>#ZS@C-:?-L-FPJDW)(*N&1(6-Z8^C0DNG#!6K,.%B@)F='K2:J M2I0*?5M`E+2TZ`4!DLH86&NHM8@QYAT-6Z'2,R"T<7[>/+L@C=UFXV#O>&<F MH%)7'^."'DLB8<KVS3#LAEED6/A(&LFKS9Y'\@:<5"J02HM(]7TPT]+(]7-@ MELH[%<*V&CT)./>*-.\"/">B>4G7\J#O6]?K8#:2O32,K$A\E^!MS)#&M$VB MX^W2EY[>)X[>YX\Z0'9#;Y''0\W.L-^_)]!P%?<945)=D"?Y!>].%GBUF9RA M)J>%D=;<`P`?@D&R%,3?LW]2$?/"_/RG>11]TT+U6XW&/,5S_L_?.:39)*8) M71<,'3KL+(YH1ECNA)S4(`?0I/@^_Y\*3VTDQ_CA>*;Q%50$?)7XAL:I`'\M MOM\*WNI+@I?2M5P3M4H40G\N."NEEP1G*ENKFJC-N+4:3A*(>R-\U-,C"T*C M083&]N'&SCD1#K?HAT7TR;4_$THC>Z]?TTE\4`$=F7=!W6!3&ZO-G^JS'+QJ M#`;`"D/'XZ+\I4CR)R(Q`Z/`GS8*"'C#ZA"LQA:Z0!1*0[4B:MJ#[8[OBI.J MOFR<4OF%=P$I6L@OPW-]O\6T!2OJ0H+D!GS$RTQ#?/#N#;VG!8=&06`:D[6U MYLDV@/.*/O&H*>4$0GA4^(H]!&FRXH[9]0L]+._KEK.P^,DS@Z'G+)065[]` M(1,%8_`36:##D$*>0!S/QWZG^PS0W?7OV47T3765UP[+%XE,2[^0UZ]9+I3W M(\T3XW345NJ2^KWI\ZBVUR6W)D:M^8`^G:F3P+-N+.B'!S`1KR/\^/@7Y$WW M9(@/`$)%"EO$@0(5"%8M%(JQ%KC?@HH6.^9-T1G:-E>,DENKB%*I%)TH/[>7 M-/5;>@DTE__KW90ZMK0R<UN4:DS>YK,</]!M]D@4)O5A#5;`'RA<2482,!'' M.7_VV+PSC6&`V;I?>+B%QP/B,T1#"$(<J'Q8=:;8J"E?'1O3NN21<F2?,6T4 M1!/L[$-F*DB<.HPQ.\?O2&,6Z]D(F$78T](.2.*?*XV32I(*9)6U.)'[GR4K MP)#FKO\=MLII@_6EL#4MTL(`4X"]4N(Q-9@15G$F,YV.U1V=I=`!WGU]7OC4 M:.0-XPO)-^,ITIA?G3R1X>J6360@(&T>@^)H&L.9[#/!FS4'J`V)YPRL(:7/ M:``2G\RHL2E7'9</V+(,)L?[Y=_(9-PW?P$FIWM=1@AD-?8Z-/3U&[/%AF4] MR\=GEE[DA0_8]H#J$4JZ@6]Y\"'#GG'@U%(&3IJTIXT<&/*7SQ?H\7[64K4< M\^8'@U:57C1HZ<RK(?-JZ@PG=3WVLAC,1=D,,H#1X;F&Z?ONC--1K39R&^`T M>=&^\8E#SH>.+])W6.#KGGR8K$Y/Z2X+3E$=RS,-?$E(<H\X#XICK6R<@G=X M20(Y^%KG7%*12UIYAC.[9X!!DUX>#.GL4!`654ON,9XP/8_-#Q<B,0P,P*"[ MS]_*!4NMH.>YP\M>\C5=WKQ/!KKGFY[(I6`215^,%=:&!3Y;J,RTT@.EI!F7 M>E'Y&MO\+_3>0.GYO1/H=Z2)>2"?84@XN;"49C!XJ,3(-!!==8=!%C2;./.H MRA-F'KYGXGGU/^GLD[\A\W^0I>5YDNSOSZ23/[)<#-HDO;K"F`VQ7)0DJ9+< MUWP9+H1P\+.X4)+D'^/"]%&)NRB(7C0JO3[)>]U(_%(TK+/)/"D?>'K'8N\J MR0,XV:>,MYFW5GZ\LTJ5'SG>)`V<4Y;B\?;MG2/)L^Y._GCGR-H+&DE2&4=2 M64L\)"55T7^UZF@FP.[OVMWXK=GX\*$^CQ]:C8$]]/%?O:M#?C7/:NX=GU]L M'!Z>;ESLUK/%H>\5AT9[1<#OZ<?.$)LQ0E>B%&SJN1/:AEGAUYT^A:V_Q1D4 MF/`,1]!ZT&MQ")]MH2#55`!8B:;`GQ9@17YQ`*<R6I9JHB3+\DR,[MKFW=>! MC2V_"="R_$S'J8?-#\_&8AG#A%Q19V+Q2P3U.<+#,X*:SMP*1'^Y6HU3JZ5% M0H]UVG4;[QVF/>#-PQ.W$="R^_M;3Q_@"6?>9J="[=DPJI;',$J3Q.%BWUHW M.LR.D290,M^:YZT^$WQ%\/Q]KE!<SN=:K4$K-__G3$"C8"'NX!_AS=BK5`%8 M-9$6?5]@%>V_#]AT!E=AR2XGWW,6[HK1)[NS`O["5)!]C8PG)+HR6](IUV9= M@1>7R,D-)&06?<<XO65+CM_O!F,Z</$Q4-P%T6]<JX./!=`#F@*PI,@$O*?O MNZ9O;HAN%P`1I&]=]N!_^DXD]E)M/-&ECY5B(-1I9YR":ADIJ#W<+WQN9%3E MIT$FG4.8,,E*=-[+6+^`+WQ9#>646'K^Z)FYK#SKF7GJ8HJ-N=0!AAORV=%Y M%%?/Y5)TA\T_,DY37XQQZ9[\#WE?WM\VCJ3]M_,I..[TQHYEAP?`(YGTMN-X MNKV3:VUG.CN[LQI9HFV-)5&O2,5QI_/=WRJ`ETC0!BE*I++I7R>V1("HZT$5 M4"@X6./2D3N/'BU9CR8X/NET(>B?"A:^T[V4G.#?=<]J<YL,#?#0T(U2"55E M.6#HHJ7_YCD@U`E#`T?22*X\D>+(XZ]O#_]ZO#_NW;C?^/T(_\,_^B;'($V\ MH538:<BO5&25>I;YI_A3.#]O/]:WEYB3&<NQN^[CKV''W[KPYN6]'L,`(#4( M*:5\R[*:B/;\OV=6B[6<:,AZ2RH&G?4FZ/]5"IAXVY6$3`:I*4OZ]/`=N##U M8:J)F&H94J%H6WEKU93@7Q]OQ7ILJ<AK4VXM93@95`S[H>6*^$SJ6;3"$=:G MP8[9T8BJRRVFM(^K1*UAA:I.K@IUEZAX.8`JA\%!;U:-R=!P13RN`7V1Q\&2 M<7Y:<8D.T$L,.>AM'TN-&D"W1I:*M1;ST8@AMQ_C3T?#H!J36=,5L;FFG1@V MQ/ITEX(W3$RY?9AV,M:L:0>F-L:*-=@TD-&.E`:[0>_*K\9HUG1%C+;J830; M8GT:;#O`6(=*:7`[&>MD=QB:9JQ8@W&1CJJJE`9_00968S1KNB)&V_4PF@VQ M-@VFNHI584TI#6XE8ZE>4T!1&V.%&DQU"HPV-"D-'D[[%?F,+5?$YNR.644V MXPCK4U\*$05-BAAO'%=I33%%75P5ZRZ%Z)B:<OD;,)+9N#*;9^/5\-FL*3YF M0ZQ/?6T(+:@ME\/13L;646>D5L:*-1@=-9I44MS4E"]:E[MV?EJ;$IL:S&RF MKFUZ.IVIU33#U<-;H1Z;!-PUD\BM_M[UJE8EP9:KX3&IR5G#$=:GP2;,;Z8E MM_K;1JY:-<UN=7%5K+N6AER66_V]&/K>I!J;6=,5\;DF;XT-L3[U=:R.9JER M:\"M9*REUK0.7!MCA1ILX4QGZ9I4I@12@65%>$JA?SF4JIP/[\C.0IE.BI(2 M\<LGW2?LZ7;D(_*;]G#?W2)RI>*K\BRW+[ZQ/!/KG6X`#PU3.H<3Z2J=IFCI MLFF*R!7,*&1%<Y2OCZ+Z.8\JI,Q9!FE-RERHL!`J6*8NG19:C=E4]HA6K<S& M,+@ES!9K.FX)62:I@+#]^<QWY=+SK-RV3:Z;(L3@7[<+,[C:V@0X)UDHKCKG M[.PJ]D9S3JR#&`U8EB.-MIRR\A!@J4U`0+VEY6K`6T?O:+9*I?&V*KL=V>/E M=;+;5HW6L%NH[3;FY-BJ7$;XHL$'[FS<[TVE@,/.)<_D^RE"CO#[=D$'TUT; MLV]L0RZ9?`GFY=)D-IQY!9H(CI>=G!)]$`A"TDHC`5Y$T0`2Z.WQO;CR&A#- MVL26!M[*_#:<)OA-S-;P6ZSO!#PVFZH5D/=ZZ&-I'SGP(,4N6]1/$7B$W[<+ M/+CR8AJT;9D5D+<4\W+9RAO./+$F4G3!3"J-O"%IY9&`-N*#F>WQP4+EA2C7 M=C1IY*W,;UMO@M^VTQI^B_4=J[O9CE$!>6=N;X"\E4,/I]AOBSLJ@H_H@7;A M!]-?1S,Z\)?<_<!+\,_1LEF?&\\_L3XZX(DYJJ#<9P$>1+25!P2G"5?,4=OC MBG$%UB'H=0PB#<"5&>[HM`F&&^TY9"_4>,=040"F-`+?SH:!VXWFP0I08F0= MN?MZE,"4Q>;M`!>NVYBLYR3[%ZMG;2ZW[CMD;8$6@Q_G$+)ZW,:+B#:EA`C7 M0A."6\=2UX"PIFPERN99(]8BW'!TDAI3"^I?$?]IRR(>!\L].4FYISIHM%H> M9<0TAW)-[BO$"WO?';X]WE;^]!*Z'W[95O9[^<]'T^L>OB(<XY:$>WWARR7< M.+GZ5XM]%*$T?-<N?QJU2U=5K0-_Q3DF+>(T#*MXXV.C."W6<:RAY3CRF2E` M5GF$EZZ?5:L/[;0K,04TR0$MU^434RKP6E>;V!L!JMJS-R+2<V`+XWT\1S^Z M[RZ?12,?R\&$GDWL3_=0!!+C=D$$5U-"@54TGNKK9Q4IGKLVAE5B+=,M8!U1 MI=%T7-Z^#=DJC;7:M]&>NGA<2:D!G#9-:2RMP&G:P*P%-+5GUA+KN*DCY^6J MS2T:]V`DAP]F]DC:0A=%`#$8M0LAN)[:-G#+D2L85XU;3G$NY`9Q2ZQKE@K< ML^5KWPY&Y<W<(DV8N:VUQLRYHCIF1]=4^6*Z%5BMJ0TD3,);VY,P*=1R306' M2],JG4KQ^C=@:#(X`;(M/F/!NRD\9<&^;A=>,*75#`TX9U0ZFU*"<\8]IU,V MCW-B'=3`G]+T$B=4&&7E(4!KPJG2]/8X5:'B0CBJT1)G5"JRFS2Q&J#1EJ\& M:,1&]E<YI3+QY=PR$&XA:&`?18@!W[4++KB^6@089E<YG"+-,*LXS7&C&";6 M.(KNE2E_)@7(*F_M9B/^E=D>_XHKJPT1JN;('TBIQ&N[@4Q(H*H]^X)B/7?0 M(Y.\GV#1R(?3OAQ0.,7N&/91!!3P7;N`@BDKX%Y'UR6O,ZC&,%TOSF+<*(85 M:!RX4N#A22,KD%7:VG6U"3\*8K;66#M75ATB5=V0/W%2B==Z`RF.0%5[4AR% M>JX;X(+II,IIDY,/1W)`812[8-A'$5#`=^T""JZLI@H,,ZN<,)%FF%E\NF2C M&";6.`)^U,+=>0]8.Y!5WMI)$WZ4WK+\*AUOZ-(7KM-;!:^M!DZ3Z'K+\[Q@ M@.B"V55.DXPD/3"[V`,;%3M@HY;Y7TQ3#=7HP%]5SHY(<LM0BT^-;!"WQ+IF MHP?ER)\4&55PH.Q&'"BG/0X45U0-0E%#ES\C4H'5AM;`Z1`@JMVG0V"`*K)> M_G1(>LM:+BW3R%4-7^RC>-^[96F97%>)"0RC\F<^*C",9D]Y;"C#"C0._"># M:"4R!<KG5AI&$_Z38;3'?^+*2B$2-4RK1*I`!5Y3V5,AM?+:I*WAM5C/3?2^ MDGV$,M[71`XG<C>U+'11Z'U-VH427%-M![B5[`2L@%NY>MX;R2VQKEGH0-GR MI^-&D_)F;C7B0-GM<:"XHCH0@A)-_K1=!583M8G,8:*V)W-8J.5$-9'U>A5$ ME?.\B%;L>=WC>+7-[V**BG?IZ239`5@!MW)WW6TDM\2ZIH'G1'1+'E'+.TY$ M:\)Q(GI['">NJ`1"4$(->42MP&K21.HPH>U)'19K.7&0];0"HO:]\;0GEY5) M:+'G%7936,F6?=TNO.!*:U'@7+(+L"+.W7-V>`,Y)]9!B@Z5)7\2BU-6'@+, M1IPJLSU.%5=<&\)2XL@?QZK*[B9.$@-A[4D?%FN[@UZ94^5,UJNSUW*@X12[ M9=A'$6+`=^V""Z:O5+,[.M6K',N291C5BQ.`-XIA0HVC*KA75),_F05DE;9V MJC;A7U&M/?X55U8=(E1JR!_-JL1KHXG<86JT)W=8K.<&>&245#F;U9_=3>4< M,FK<XY"Q7@K],?RV77#!5=;4@&UFE8-9)=AF%B<";QS;Q-I'P*VB5/Y4%B.L MO.V3)KPJ2MOC585*"W$KM>4/957DMM5$+C&UVY-++-9U"UTRN\J9K"M7;K.& MVL4N&?91!!?P7;O`@JFKJ9*.;FI5SF3),LQ4BQ."-XIA8HVST:]RY,]D`5GE MK=UIQ*]RVN-7<675($(U=?DS655X;6I-Y!*;>GMRB85Z;NH:\K[*F:P/O\GA MA%[LB4$713#QX;=VH0375&(!MVB5`UFRW*+%V<`;Q*T"70,?RB3RI[$^_%;> MS(TF'"B3M,>!XHI*(30U3?G#6%5839M()3;-]J02B[7<1-9;9JJ:X'T(<?CN M[$0Y4J[=WL"=`:",Y"YKA-=DUP5$/4E?L,Q;=?U@4,L=X?BLI!9)EUB*/_\S MC!+$<7#]4_;3WNP*/^4F@*>-+55/E2I<B1QR)XXW4PZ6=/TE>3F([0-C.3.) MY9*&ER.O%_#><&@,LX+9W4MF[/WI-$_#3\\&[N=GD_EH!.8>?^O-@VT@K!!! MD@0OZ%T$(/!QC!]\&.X,9MJKF3M5]C\K3_Y7>;KW1$F_+YQA.=#\KK#.H<WV M?4C#M-3"0,U*`K6U<\-*<K`:Y8985QR*-IRKLOTX9RQ@(H#,J1?\H)S-)^_/ M%'+P1?&1CGP;4R\%Q?F7B!,G#[H][,5<;N^&D'1Q',>K,[+`Z/UGL@/P=* M7[F2M@\^FDBR7`_0#\=+NC-5KEM#J25]UTDQI4(96UA=RM*<2C(^.3M2]`/U M0%<B+,I3?CESW:4HERY+)4;&1,98V,DBM)*,UT*I=$6H8DK%,L;SZ5:Z]NWS M"C.4(9N\EHRNCW<TA!,4?(_]G)R]>?_;\>E.?U?9>=)[HOSYI8(_@YN(_\!O M3WY_LAL*#$^)6^E"LE6&;99W<"H/6\Q]+-ILT1A%W2_#0-E1=SF>RSC=%EG^ MF`D;ZL&SQ`?'86"+>-9ZI"0*'S.:"P*SS2TK1L<*%%C+YR!6I$`L$]Q/L&SY MB@W^G?_LMC<$CP!>`8HW])4/[\]./AUH8>+5\&(D=:4/L"*;'"?7=VD?]L[O M8J_=ZS5[LE9YG$`.H,WY.6<V9DT85ECHDMBJ?.6(&@7G9$.^[TMPMG1*1TG! MB2W007!/;K?P@<3?3OYR_.GD_/BULN/O*O^N_(:_G9T?GG\\8Y\\5[07518M MK"1)#.4"(:$(@,*O8@QZ:)FB0&BX1+&`GK9F@LHF=TNLDM+41=CKI50H8QMS MZFTC1MF!]RA<";MTPY53-M3KP6R[<.6TT+*CEC*V:VO9W;+XO26M\W$X_C7; MIE[>-0PI7'4$:^OMB&"YK>'1`KP).;2U!C6.9`_!;YC&D?*A];HT+LE.:=^: MB8TGL&VK#9A'-QSSS/9BGMDFS+,1\YPV8)Z]X9@G79UG_1KGM!GS',`\1VL# MYCF;C7F.=#'3M6N@TY*="H9Y#E8QPCNN&\<\)U?L:,,T3KJDZ_HUSF@QYCFX MIN[0%F">DRL-NV$:6&';8UT:2-J$>;@=XEAMP+Q<;=T-TSBSO9AGM1GS\*H1 MQVD#YN5N)-DP#;3;BWEV>S#/4%6U8ZA:\Y@'(]EHS(/QMQ7S0+[MQ3P8G`X: MJ!N2^:2WWHS]#+WZ4D<E4;LSBK78A[1ZX;X.-%BS6NE5BVQP^S9LX"YQ)+-$ M*W"79,^5;11W*Y_^%.NR:0*W+3VERV5W&*'YZG880QYG=U`-U4$;=.R4EI0? M=U(#>QWC%O/?MC@=(?\?3%Z8#P?=`$^?I/;9Y=3>R9YC$78EK?W8H,NZ6+,! M.++'Q@IS$J+\/P/OT32T$H5%*G-?T[)U6C>3^YHN6U3Y7NX+;4'3-9!&B>H- MPPD.2H[_N3-O8>,2:,];U,7OQ5Y?3M"-Q7'!YS>W"CMAQEC>#9_H=N,?7W"G M5UIF2Q3"_L:P.Z]+SPH](XJR4EL5>`LR'_^#!?*!<SMW>S,%5H!"!6*U'= MHHQ:Y0X'_A]2JR5J?M>B5DGU[S6KE1B]3$2OQ)-R_5[_`44;>P.W*^>T:OGJ M*;QQN1F#-UKSE&%5.,>432*\5,[.7Q]U?ST^?'U\>A8:-OI.6N(#ULSQG+^T M.1Q?WD7*<5RL\P[I&+HJ7SO4N[R49G]V.8^W+<=]UF:]S)>_?+*DNNNZ"LPV MY,N-RC-;S^U8;@JS*VQ55M)T7;>0^?)QFC_\719I0*;9+'+>N!S[>:,U\]^H M'VFXLE.(S'13/C(KPV^:C<4VA]_FTN&7I+Z;"#:67"QV>^T"S3,E&([=@VNE M-QGPH);_.N[=*1=><*U<N$HX**G:\L;B?9T57E)V&1[[6K<\:\"OA2\8.WX* MC<@V08B.7.2S*B$ZZG<O1*?"05P9(8HMTT*?*SFGY@>S>3]0@K'R-)A6.2$" M/=JK/B&"%.76<`W<R3.2@UO+4V*H*S_5DZ5$+".'<LK*H&="_M"/UP6Y87B1 MQ4B:G",P.:GNI8V-]]8-QNLU-:/.`VD+6&G@XB->&5<&*VL3F;&P//E]B4RZ M5'$)D0FMSE!M$*%&Q,BH!-/]GX)QUW?[U;!%TU>&+;%H7G("%V'2`,`WB"J& MR:7),E8'_D5DB:5GX&Q`J.2N.BXH8J^_>Y)+M8:1C7$7N@C-2%:GRX<]D>KF MUD+QUYF+1T"CP2C/%!/D5TF<9/7E#1F/.),XH<">_^'9(%%MA%\/_W;</7EW MWCT_>7O\]_?OCA4M5&8*+JEA:9*[^^6E;&9O[UI"RA6"K35)V5S]):,5I2RV M;8H0EMR#B2]<?-]]2G#E!L@S[W(`\4%O=B55!@S>F5U`S/=34ATJ3F1%*A$! M.7R/4F-HGOJ,Z<C3X'?X-#WRG6#:@0]WJVK.ZDO-RFK.+\?GJ#CO__+Z\+^Z M>O?P])>S&"9LG`R2JT#7HC"YHVK+*HQ=<7&L50KCM&="$2N,&'$L]`5MLQKB MS"=##]QM=SR7JKQM&+E2Y>D>2BI-S24WAM-^'.00%7`8;\^L9%9EN4)R]<@K M<P4O6UT%5\2Z8SL<?$+=28V:_UW-T6Z1(7U\=_+^7??L^.W'=Q'B$HV":NBQ M8U8/T41KCZ.R2+10\D0UT#X6:V\+C.1/<2+QE\<\U)G.O*ON51_KQ'U9+!3W MP!+"XZ]'1_O]_C=EXKH#7]D/9KW!,`#>]T:21B9:[+FO5^D%@XBF;JIU76L' M+$2<]H+`G4U>;A_.`P]I.GCZY,N3[1*+"Z"UY7'A*@CN."9$[U7.3]X?P>SR M(;0%'0"`D,6BXO>J05X+UJL$AFCYZ/^,$A#9A'-))1!C`U,*([T^D2L8*6(6 ML&CB+:B")%72==-3T:<[&P^]+%E(U&&HV111WDR'WZLE0KHBN1P18LE0#8BB M\C<FV/L7PT#IC]S>!*NP]L=3.2NCV1PL04?2AG4YG_2[O%&7]5"'57$A6Q;P MPY:_$Z$J/^QLWD+K^%&@+VC))DUJGQ:,@&=/EESO)M(U:A[%5?>YV&RT34=; MN"&@OF%)%S))AB7FGHG<LV+N2=;[A";+^[_EZGT6L2^[#TEPMXZJ,>.E*7+6 M78-5@B*QS#!3,G7C;!KN<[TQK,=QO3EY]?[5?X1W4^!/H4T?>-OW`$H8(6#D MI7B7BC^\POGCNC<9C-R9W$H,64B]?*##LDD[5S4Z,)*F5T<Z9OP%(R".Z"F> M8$E=C=MRR=*%8S`;+UFZ_&D8D62%-DQ5P%VJQ;B+:X/#2D$YZ,S*MOQ2HGCY MV1L.%H`6KV<U\'K6J-QZ=1)6>*2DB`2Q5'2[@Z.1W+7\/)T!T9=RMF)D%Q6C MUN5\JK#5FBW#D#VF^NRI<G;G!^XXNI\E\)1PV:;;]8/Y!7@C_9GGLV2Q:V_J M7L*D>*=<NK<*1"J!QVRI$T8EM]?#_C4,<<(&.!KV`^5V&,`GU[V8?3N[+Y0+ M=^3='BC*TV>A9N(&%36IY+9D*3'F]J$V28S2SFS38A1;)^XV4W.IT\W47.]- M8FEAYZX1,ZBM`T7V4N>>J;W>"[L**1++#+?^J*.E9!8M4&P_SG>XK?QI<;&M MT&B[`V\ZF\BEB-/<7F#4NIS1AJW6;+32H=[ZC#9DA`A[316,U-2LE$JO7^"F MELT;V2"!F]*KX$T+7&CQ)N;MF4G>7A5,,Y/LO/5A6DAC'J5-3-DSDY2]2A0E MB7G-4B26&;KR)DDRG/D18^P$,U6#WT'IE<_PZ0V&EF/OLXOA'7SXK_%4N1F. M1IC,RE9V+Z?]4<_']0MV^KC0FA^'W<N9LY&]F"-N7LZ>HV9K-F@BFP2P/H.. M."&$<#S[;%I)\G3+M"%W>'JSM$'Z`'7CVB#&"M,`[3"=I?!]#7EK.32,B!0` M/*:(F`Y="N#7D!`B1Y)8:@[XX:F;'C,V?8EKBF"I\0_=@;(*TW5$-?8VQW2E M;Z-LW'297EL:^.*I2R^;$;JE9YWQC1*Z_,6<C0M=:/F69J,2+.6/6WH#_G@Q M7EL$''*++N606Z0!AUP>K_%.22"QR",'?PM4IC_N^3<*WM4U'0[0$GSXY[+_ M.:C9@,E&N]\6W2SW&R_C-"R[R/U>K^BMC?:U\0+0#1&]&`4L\+4M:RE?V[): MY6M;#OC:MKJ4KVVKK?:U+<=&$F.I#;R)^^B!DW'^<"*W`66KV7U$WK:<.;(V MZ[5%6VW?'B)C@PB#;1T\#-N(M;1>$>K9/<1-$:%T$FNS(A1:I:V;*-*E=@]M MHX'=0T9A'DAMJ@,]=*F]0YLVL'>8IT<L+\P#MA=V>^\SORLWF,W]WI7<P6([ ME_R;M"]GAG&[-9NB]/'5]9EBS`HAHF(:L[VPU5VC.'.YRYLF3NG#I<V+4VRM M%KIU-ET*7>T&W+J8RCS".BK$X(ZF+8.PCKKZ(W.2-`GEYN`94D>3K=/AST"M MO+&443JY`Z-1ZW(F&;9:KT$Z6OM<G9`1(G1UL-R*0V0+<9028Z[2RB:)T6C? MBKU8C&+K-,#'<Y(ZI940R&C`QPMI%&`JA=C822J!5J+(;&`U6D216&;40@IM M>;_UVO.#26\LY^HXIL#5B7LH[>Q$+==LEF8KW9V(&4*$M0T0JT/D_==R8K6S M56PW4:R.[`&*-HA5;+UX;,]9R%<MCT]V,SY?1&<.=8FJ:1WXRUH"=:$Y;0]5 M(MG!"%6@4M<DD5?>!R+L`CM1XW*&V8`'!$-OGP=4Z,<2U3!!A,221-DR(B39 M+(3-$2%I7P:"M`]+\`9`(&&9_`/"+OE;-_84N+!$-0D09"V3?0!]-)!](.G! MPN`,))!(U^YT@VXO\*3*2$'G64<G:5]R`R1JMV9KM-KGY,2L$&*J[72(IJK2 M13I+B1/3'C=:G([LO5?-BU-LK0[Z=HZU%+XZ#?AV,95YB-4T"U16-Y:!6$W7 MVD*34&Z:9B*-ENS*:S!S9S-/ZBYKZ#;K[,3-2R[:A<W6:Y-:"U,N(TZ($%8C M.HB2&K*KKZ5$2;*W1V^6**EL-:_&12FV4D)0M.HRZ*HUD6H:$2D`5PO"9,TR MEP)7B[2$)+'4&(FV[$H`=#R82U7)XH2+&I<V1FBT9E.TVK<2P/D@Q%0'ID== ME5T)*"%"715,CILA0KR<<2-$*+9*QT:1+K42H*M-[/TP$O-(JNLP.>C&4BL! MNM[,Y)`E2"@Q73>00-F5`.@V\*1JG$+/N5O[>./21@B-UFR$TA=PK]4(@0\B M'-4)1/^Z*1O]EQ$AS8;^FR-"Z<NN&Q:AV"HI1/PZ72KBUVD#$3\G48"C%H3[ MNKU4N*_;#83[`H+$$K/0F;%+Q/J!-Y>T0EO@S;#6%<QPOFX[M%OISR`C1%AJ MJ!#G&UJ).%]:C(8J"/,W18R&ULH@7R!&H74:*D&Q+A7C&VHS;AS2F`=4O'V- MX+5F2P`JNV&M#12)9::#6X/7Z$DC:K_GNY*UL(%V@6L3=5#:(,.&:[9)HY4N M3L@+(;I2"B(U37ET+252FCW$O'DB-=MWD+E0I&*KI1:*V%@*:<UF'+V03`'8 MVA`D&[:S%-C:#1S2+2!*+#D;71_'D,3;_L5,JE(?])OU>UC3<@:)3=9LBD[[ M/![D@@A7B6IW"-$<25R5%AW1LB>1-T)T>"'4!HA.:(4$,QR)9BZ#GT1KP*]# M`O/(23#;CQ!]&>0DI($CN3ERQ-(R-"#/B*/^6%&Y*>'0P-(F7J+)]]DDUO[8 M'\DE.R[>()7M(;10QIF+[N?>["4WSO&3[A/VW!]@A0/ER=V/!\_V]G_L=J?= M'Y_\4\JFL</'2<=+6397$?08\!*64$76R,/<08L-Y&&!7CIH=HLWYOB]SV[W MS<FK\!J),U1M_BN0JRCQ9Y(@2TH<GWO_V9W-AO!5;W*G7/7[.EXEX,[P]H@8 M1Q%[>UB_'QY2V"XPATG6P6^N,O==#J47;K^'O[#+5H=7UWCE:@#("SS+WE#1 M8R\+]<R$X(-8B]?UU,P3L\3^:\,\$>L-Q=DGJ4G%9ZU*H$W7.P=E3$HP$^$" M+4EJ+BU!FKW>^>@^TL12Y*3*WZ^&=;KE$#.W%,V:EDRP'ZZYWC8,NWV+T,@% MD2]/<06::O*7P4D+C^86H#=">+2%2\\"X0DMD>*Z,UUNW9DVL>Z,!.8QE.*B M,UUNT9DVL>B<(T<L+9TB>=KRWOR,W90D[XE2/;MTF>[A/D^4/=<.3Y2K".Y< M4VHM[\V7YF&NX,\&\E"LEX:!>NFLT)LO=?U3&[QY2B'"25T`M0J>E+E+J8W> M/,7,9IID-O-9JQ)HKSF_^4%OGF+Z+TTRG)<@;<UYSJ6]>8J;#WA%4"C%'Y2/ MONNCNBO0'G[P83SCJ<^T:P3^"+Q\/$87AZDQ?.I%NLD0AWD_#"?]`];=_CXZ M-MX\V/\2/^K#F-W977"-6(ICZR@7\T`9>/#-Q`N@UWFHCZS/@_N`_),<?.?* M(WR*0)N-\@B_BJ]*YV/&`<\6QG\+W+@:?G8G!X_2MQ)]Q2>Z7Q@RA[`<RHQI MDZD"F."E/*$V?:<L-K7LGO=:6"S4:I.`KV72]#HW#N$OPYD?=)1@=@=HB*,, MK@&K+X<CEWO?$T_QIVY_"/8T&,[<?N#!D^R3RZ$[.)#&=I.4O^?\\9<N?V<7 M>^Z&G_\4@@R;@<+_D=6--I?@S)'<$`)O&WP-5M&%@1/IG)0@KT+H(G^#A& M)SX,4+"7_[R:N5-E_[/RY'^5IWM/E/3[_IF2W/[OW"N#-MOWX1@W%`N\.]-. M+^>O56J6;!S?N-22-:)&I2:T/4L#N+.2.JF%OE/B/66X")/7K`<R+.E167J) MJ]:9\\/N-5>^PJ^/ORX.`>.Z8.A-OE6;]JTUU'D-N9EF+J,9?3U<6,`7*)_0 M/[R:]<9^SE8B+D][P?4!-T"\-(!824G8]8E.&C!7+[HUE+2M5W1"*[0-O4-L M8B=6B+(`KW_[GSMS+(<#XYTMW"S_SVW@;/CD]ME\\OY,H=M/=\-/"MR#>#H_ M5<9S8,*%"S,_^C`0[5[<0?S@3WM]J0I6,.+T`J)DQZP?]`_U]RVOI"2?T& MW8'"<O8-N6L<L49&36WI:H!Y-:VBBS99O2Y"'Z?=B<?8B>'"0B!D4QNTR"() M(+1>BTR]]5IDROH9-6F1M?HC;T5:),8FKE5:&IOBM;RM!!P3,:``LRS?DN6V M[&FKFKAMKKYX&^-V@<7:!'CK6&F+71UO;=D<X9IXNX8R(V+>BO78L3K$48VT M'O^@Q(Q4;MV9"U'W<!1N[KP^/IJX@>+/IU-O%APHRB$$\C>]V>CGOG\P'U\< MN(.YXO?N_+@OC,\/1]/KGC)QW8&O#+`\"-MKVL$?DW#>_3+T@]V#1_>`+$;D MK/TD\'I\X1I_E4)51\WFLHAZ*EH%QR^?=)\D3=JQ&L[LQ<$3JH[NI.WE.Y5A M[L3L=R!#H5UBW76"==<?BD"C((;)H6S,XJB;DX[#51W3"1W#DM[4J,86HT0V M1!OW-1RLJ^3H\?I%K/+5XDE';T\^#U<#+#;DD#C(7Y:^-<0H2^UP.%@_TEFH M'XE_HK6NQTFWC!,)PKT$5$Z-K"PH,XR70V:2380O[.X^>&9/M!"CN=9AT4MG MH>AEVZ1@9J^;^*ZD(+8-@EA''UZK34\)W'DI/2_0$A<.M6*ZM!`GK8<70VO@ MC56BG'TKYTS,LG>2<WG+SBEK/J+W\)R)N^1.<D1O6?K6?%JO_)QI(RXD-4%Y M)',.2C'Q4\O/,_>S.PG\9*'Z<N:-%6_J3O@VG:M\4@9#?SKJW<6=>!/E9#;\ MHM`#O0,6U?=F`_8PH.>P?^/>_=P?]68W!\#@!R.AL+C[Q9WL+0E`4C;#>+&/ M2O<D\+;K35MUG/;E'"^P0Y!\3%5-[U`UJ<KZG6@5T)5-?=Y,K:)X]\$F:94( MNT`:!+5LF:QHZ*.!K.@%2G-S$%6)"G219=*CH7D#Z='%=(GE9U"D4[L_7LOW M7"I26&S)W'O`(#EK-[+9U`6=%44)\!W$!XN-VA$C<#TS->"_:=T?J37(?U-P M]>KWP7^Q/1`#[4$^/QLGTY(1",4K4S8E`@FUU`&N6/(9VI6X8FUVCC95*<Z% M9CP79B;32E,(;5>R-E5MG!?M>%ZL@T:[W5G;.$"@V:&+\=G^R/?`V0WB7`>6 M2`L_`$BZ'!21Z@L/?*L>?(+[43Q!DK<'!>SY_AS@D&58#MF0)RZX8WSGBO70 M47R/[UDM,/I!MSKL2@[B[>Q27-2Z9'$0WFK-3K33OIM?0T:(@C)-`_/1=&TQ M*/MN5$G+W;RV0:JDM?#N-;$J"5%*PWA?TY:Y?1::-W#[;$AC?J[1#!LH(LO< M/@O-&ZA`+J)(+#,#O$TM.0UXC_<?6709OS]JPYQT#C%R9FQDDQ=$/15Y_/QK MK*P2-FJ'N\]5BH(CJR5'#=O"<#-[FN<[8+A8XXF&-FU)QU?AS/CX4_?XT_GI M(4^B*QE9:&6N9&Q#O*69%G#),J3CK5JX9)58CVQC_*51G`%I/`/&DV>EB6,- M)Q-*15Z:A;.A'<^&RU%GKW=:+!US:9:)U%J9F?$'Y<H;N[__/!X>S"?#?7<V MZDVNW,D!*"*F`0)63CU_^$49^N#Z]EW?QST.;Z(</OOXZ4%/=^:.O<]RFQ!: MOG@.;URR`@MKM&8WMXT%=!@?1`&3KH)-ZPM%W-ND!WJ^#L^FZ('>QEH\(CT0 MXH.N$M2+I?:=]$:J\3`2\_"N&RH0M%0]'FC>1#V>/$%BB>D4"939:>)=EO*\ MPR;,76:F+V>^^5H]N7Z*O&[V+5:<X2W:X7-S5:+@8^M49D]I?9S.5_39;$Z+ M=1SC>;U$=1\^2Y7UU/4-J_`#TH>P6R]1X:<B7S:\R@_5"<YJJ2H_X7Q8:3)H M69T?JELXPZ7J_"Q#7,LK_8`JVDAL=F7O!^75V>L3_.O9^S-%/]#B%?KAM,_+ MN+R?NI/7/.'J04_5OP8UD\-?*YOUSMN6O$L#VZS93;7:5P">L4$8K3A@OX:: M75YL3NI.=FMO0Z1NJ.W;UA-)76S[CHE:H"\3FQAJ`X7R&85YX#9TB,$-W5XF M-#'T!G:6\O0(Y65H%M)G2$0FK,=2[C)OP;Q<,'8IJS7T[/G?3"=%CC)\!VXR M?[@=7C+7'\RI,H@C$8^LA[\D=YOMIO)7K,\8:1N&_(E<G(7*^MJ&OED'<JF! M4;%!Y0_D5N(*W9R=)K'NAWD7CN"B>]2I"_YKM>'@Q`#!/G,3.>QY:AS6S/ M[I!8CIBQ:5BIG+7%.@L<_QCX,7>&90>A_O24P?#RTIVYH$?PIF'O8A3F"/V@ M`..8ALYZDY_GH_EL?G`6]";0Q^#@^/7'CG)SD:K+<)!#L`7(/>F[1WP':^A- MWD$;<-T8`)\<'<NAN)7=,[^WRR),A^\`TT5-VX'P7',=0'2BIM+&OCMI.MF5 MV.]2FF);M=#_M`WI^1JH+#\SV9NSN\]TGJ@&ZKPC/5]7X0I1-V<E5:P[M@VZ MX\3U%@2J7W&&<]J3(<#U`4^:$3VN:5`;I63-Q\]*S^5$UY#R.!=B"___I&FA M(;`28H7(G%Y9XO@)+:4@F>C9+1MQ7T58#-\!%B^T:0<(<W4B`+J$QHD%ZV(J MS<;VWPE3"S07O%!BR-]=!^0IC[]^ZGXX/6:/?"L-Z,;F;`%Q/:3HVIGR5]DM MSR*Z.9&[6*OP;"XA<;WYM#54G`+6?%+WX<G.A#"<6'%Q]AI(M-H3C8NE:D-T M3IPX>W/K_.A-]^3=T>N3TY<3#S]@AG'IADBX'?1'H*:%\%<(WKR=%%CGKKL. MWRF[?<*W)!@?<.3KW4,ATK=>)Q7V&7TK+J@/`S-;45"?61I5P8&F>IQ6VP*U MH[FKNC=)[:CTC=UK5CNJZZU0.R'ZX7UU-'5?W58H=L1/]`H?AS_[+Y0!T\JM MA=>BTH(7D+QW:ZO8>\6ZP-S3C'J54\M<LIR@HR*_-7H`G%?6JAU.*T<`W!A( M77/71M;GLN<VGO5B*\#\.9IX=@\ZPQ%MI1=^Y"_)>Y0KILU_K.*$T;;YF7CU M'JB^+AU]5&>X=&Y>K0QON]=+L;:`J:J)U_O7^[V/FVK.QXVL[Y$K!L#?N!FN MAW0Q@)3K<;,&S\.Q6^%Y,),WL02!J9N)P]NLQIFYF@$;I'&F=,V`]6J<J;?C MICDAYIF8#V0F-9:XPW63^%LW][E;?ZWF;=U(.UMF+CTHWT^QKW73/E>+FSTF M!)A)":>V,3VWF[_A3!=K/H8:IDE*^+<WE;PM4SH/J4YORS1;MF=HXLZZZ:@E MW-N*_);>7:^5WW;+=RYM7*FW2;C_PT1BX\JVG40<_H\_OV8!],\_/N8__'C% M/_YX=MR%X!H^#W]*?_'A^#3Z!G^$K_;PJ[?8S=NXBU\/_W9\].D3?!;^%'UQ M\N[L_/`-]A#^E/[BS?L/YV?A5^QG^/)D,G"_/,>C:`%,D?[_&^V;!\:!_LR? M]9_%$CD83AYAOHVRWW_XR>?:`?M/_LD#\T!C?)5NL?46SSQ/9XJN*IKZW#"> M$TO1',=FLGBPFZW?`$A9<QV;$^B!\.8B:6NVV=$<+9$U?J"G$SB4PZ/NV[-? MNJ?'9Q_?G.\,AC[F(PU0]_%_$&'XP-&OQT=_/7GWRPZ@;H`3PMM7N_S;P]-? MNK^=G/^Z,[[HP"?XY[^5Z'[C\<7+/[N3OH?5B']2W`GVKHSGHV"X?W$7N-$] M0LH_.DK4%O[=XG?L/<8N0-G9E7KPZ?''H^Y_?/CC^->C[M&[/_"WOYZR?\Y_ M^^/CNY.C]Z^/_WC[\<TQ.,_GQZ?O#M_LAGU&?]Z^>IET^@*[S+-@FP]RP(\9 MQ$]GNWK!FC_=S71R?'KZ_G3GOY'Y_^7->?4PI'%TASMQO=G5?(R)7X''=MAB M)BG>%',F%&_"MMHXH1U.:(<3VN&$=D)".PN$_B,<!Q^5Z_?Z^.\"N>'X_Q') M*$-U)'E&*/[_"*N\CZ+-0APM(&8/)*=`;W,V3$H,G8<'\.WKX[]T/_SRX?WI M.7_@8.OD,NSCUF77<N^S7<MA>(`CI'UZA?)_R90`80\?OKB;]GP??AWZRG3H M]M']+U+#Y+6[0A/0':VC.V9B`H;J=(SD,G+H]^SCJ[/S'8YTN^F/0I#+?8;P M%BH___`M:Q=2^W3)/V$WOWJC`3#Y$FLD('^/]@!.@SE\,)\$0\94/!7#D4&! M8$"YO;Y#[F)!N<F30+D7("]Z_1MW,G@V<Z_<+\_FT*%_T+\?*85-[H?,>YO< MCYWW-LV"*'FNV0^`J+"_K7-09-:/IFCF<\UY3JUB-#5TTC'2-\H^!3-^":X! M_/*-RQ_WRL%,0%"S>3\`7^)/\!CNPV_M/!U?Z+>XY[Z[L_M"]'F77?$^<B?L M`>A2F5YU^3?!Q>@%?X$?]()A?^&;U"]HP?_]#Q@3?_%7^,:=]_\UY2_H*(N_ MQR_\UDD_WK]>?#SZO>#QF]GBX]'O1;U/,KU/BA^?!Y>IA^/?1(_"E.*FGDU^ M31[^%K*0I47@,R'?=V!^!92>3_SAU01PG^5%/,6:^YV8M2AJ-/&O3.X[3S,L M?_OJ'P>)>%E3>#ZE%]EWQJ.2?7F'N:BH''*C2"E3.)P._L*'Q&`0E)FD+[;- M*O->I&OX8BXK&'[AD'T$Q*]L;@E'BE,1__T2QNHK+U\J9V?Z;OB0@H_`"_47 M[-=OS&5=>-3(/FJ('OTW1?UBJ_?WNOB=%G['_N;N_0[GS1[[4$3YOZ:2M(?] M+?#+W[VW[YO9ZOKN7Z]"9D)!M$YF_<DJ:"?MIQV`LASET4MBZM,#!=IRP]5R ME$4MW+#%E_X#-`H;N;E&1EGB$?F7D/O)6??-D08#VWUX^.S9#Z=_$SZ>%SY[ M7"_Q+'0M?'Q1!;]N/7L:U1H^/#LZ.<$\OU+Z(^^V;.&[@*W@S`=*;R&."V;A M?3,])9RTGCWHY)3H#?K:@C_0(0L>>LIH.!X&(%7HZ@H^"-\&(F4OBUZ`;^`D M^\R)#I]FV8RI]]UZLP%/CUR?T]7)3"TEG;!.!N%+.F6=S.13TDGK9#"VA-/6 M68"H4BY<9]'`0X]N3RFEE$TX@&6&6*C?;?(B8_#-V!>CZ0$CVXNANABEQQ?` MF)SG4S!6-C[>XIZAA:."]T'\#"_J^1'+=W-##:6R.%CX4':\R;RJ<O"]O1Z. M7&4G?"[&<_:KLO<RX09_X$4"X'M[#\^`RU/*W[>#MW!'Q1F'HSM%>??QS1LE M<&?CX:07X'Z*B"4/J"%[+-0\5.I[V,0^$'`,5\E96^6G!6=$*>8<>WK_9=1= MBM<C.>[BAS(K*&PIX5EO$#SS9KT^8%/?&T][@>QJ2F%SN965!YO+K;(\V$U^ MQ45_:-GZP;XSJR^Z^EQ3BU=?*.V8Z4J%6Z&&C/?W$<VVOC(7X>DTF'5!CGM[ MH!N!-_)NW=D.?KBWQV2Z%0;D6^&^#OSS(LR[ZB0G/LIUO[.@\+L/O4U$G$,[ MFEJ:NOET*DE=V'])\GC_-9"G&?#^Y);=+>@"7O"WP]/7A^>'.QR#>(_A`%+? MPF_L*QS@@_3O[X]?%!$8;J'O/-V)7K*O:"SP>`+__?&'(OABZPEK'++GX?<S MCFQMA2DK1>WR6LG;,7:R;9J07U%B0*W\ND>>3;#OGN&4X>:#W3#FE@/TS[T9 M=E8>RN.&94$\UQ#@6R\#W[D.:@'NN-?,]J/A/->=8LC6M8Z>VGG!7],5JWZ` MEPPON7^<[,WS!?K(T<,=>A:B/F-+[D^5HU\/3W=V6>DPT/CP-U8QC-W#,^V! MAPU.#OI!A^_.3I2S_WR#\=MDT)L-#L+6O*>ASZLSC'J3F_UI;S``TD)WZ/;: M\V,_"I[SIVY_>#F$!X83Y>CT^/#\6#D_?/7F^*"`;M+1-2=-N=G1DYLKP<TQ M=/CW8HHD,L>)>4J]V15WS)$?F*"@O'T%/V]EES#8)E_H/'6444>Y93Y-R$_\ M#NST3Q\\=B[PQ/];;S0<[G;)<0[,F[VF$;E1UE^U5O`'[??#3:9;T#,]TO MX6G"F3L%U7`G&/UZD^T.\P:9A[4P.O3"+OKGL[F+E.!KV/A2CMV6G\*G^($0 M84:)3P?A_>V"3^?OAINT(W3E.)7PFX]N7/Q;[,9MH1>WE7&1?V#H$7^N["P. M=7>!<:$_S>6S%\K'ZP=ND!'2'HN>[N&S4@.?P3"$VU"4=`Q33^UHVEJ':"2K M7:'1UJU>E<D.QR-)>5;)'M*F$?_P[.3OQ^Q#F(3@UU]?GY[]O4EM*QC2O6H7 M,JI([RK;=RD!2%`0+FZ4GE.!IEZE.94WK#"G+C:L,*<N=E#7G,I[+3>G:G8G M*HO($WHZ>IS+D$RB_#73WFCD]3/)SN%W%_/A*!A.,`6.K9+>7KLP?6+%/Y:( M,G#QPG"F%;YRY?'U)[EYNLX_;*;>4CZ>'9\J)\_>*Z?O/YZ?O#L^VUKXH_#G MZOPCKB.J.<!NS4S%:9%;$H!)(4;MXW(FC'AA0:;7#^9@;.EU,7P^HDY1=GB5 M4_`T1BY+?.GQG(_0]B*'AC7BWLNS%-"'[][!?Y6G0;2V)T2)0`32[S"3?3B9 MSGEB$N]N>S<*!;)($.1Q`#4H&L9NJ"R+S,&DS?V(X*!W`_Y:<,M?]I1Y<Q'# M0MZ$]R9R!O:]";2/8`K8$7>$7+GU#KB7I:I@#'K*PY22#G!BV%^W>);T\*(_ MM8E9<KH-\I-MT.A4*Z&>:<?X7EW=BU0EFGE!7_;R^C*]OO,+%&:ODL+L*?&R M*IO_TT-(M.:>J3\03?QY:4=];N^&6YX2K$/O)&)8/*9P&9BM/*_-PD5XK%N` MQU&E+>8*:YBBE227A\-[YP7A1:P,CL,L3%_QIB[,<2ZFV#'B0I%V^,M]3\$% M\=XM!I8@LM2R.9HIH+H[PT,(_@$3(=>?0Q9'YC-<^3/`WO->X,\]Y<2_'@[9 M-+]/]G4M1@TN[_"'KC_'5>M0"7APVN%ZHHRC'^+-G"U\#-7O*5N(4QB"P/08 M[G$OABRY#9%D><Z8*''\%*N-2$:SGA&':YAXCK/3MCY<^8&\"1)E0EWB": M.3B,1-H5KEMEX$*`.\*]A<SJ5R?!@=2@05/'RNT0-'_BW6)Q&V^,%1=_=V?> M_D7/9Q%^;\821_$^"Z9KC.V,W#$@%ML<$^F:H1H=0[53ND8<B,.2TSM;6SCV M'88;RCBU0)JA<2I:RMOCIW]VAB_5%\,_CU\,]_9BZ)PN[!!-=Q-('".S.#_O MZVXBV=TD["[+:V6/T9,.`?F:8ZP4W-/<B>0*#?@6RE8D>UR5Y'3'#Q0'N)K5 M,?1T@&N!5=O)B6C$A9/Q=.1R*T:;/OO/-XZN?'A_=G)^\OX=(%3DR1Y$#4[= MR^?*H?++').0SSWEG+=2SL+%H8[R&J'@W^"?V2W.NF";%H>/?7B%-^[Y_[^\ M8VV-X[I^5G[%]>*BV=4HGGMG]F$9%>S8E'X(;=/F0V.$6%GC6+6EG>PCM8W( M?Q'U!!H"M1M4/V.GL8O24@5,6P2%-/WBTE`G).1#Z;><<Q\S=V;O/+5N8[H@ M[>SLG.<]Y]QS[FOYK46GN\BZ,_1X/4\`HU01G]HR%HQ9AD&RCNVZT1&5F`@' M2:^GMKP/UPS7G')GYQ$B4-_Q#^S$"SFY!.7N/G6;)3W?<IHGY'`$\'6\H_E% M,5^JC##SEG8@]7`K&(&6X#\S1J_#"&)4N`MVV=9VSGB0<.)1:MJT"DJ'CA'U MJ'0J6>92)YYATQE+0MX1H@PXWG@V/W(ZB]-<(+39&FU<]0?GHX?$Z-:<A>L& MFL9U`U8J\6Q&B1YMVM`.B#H:SJ,B-`L4<C8\D%]#&^"W+(='-G,>&?#(D$<6 M\<A,/+)DPL@UJ0DJ)E*8?I.EPAWXI5H<.Q=<EF&>0JM)XG+SIA7PIR"(0L\8 M7(8+B+MB^B35IJ)[;2'59;3X)DYQ6SKG6^<V`U"O#4JU!1FQ%*^IBV)&4PBM MQ)+3.E*\`!M(S)C,K0W]_D4Y>R+>`HK)./9ITP9Z?NC[%IBIM`7Y,:U$Y5]` M+5DU8M13F7C>:)(<>S@&F6(?4ET<?`B&.,"1/Y:4"98_DE0(EC^U7@@^/8K4 M=@I&D3)QIJ?2Z9+#\N9ENC;3.UAQ(QI!/GWFQR^]8C5$,BP*1.X6&ULC7,#T M@^^?QF6%K-TC%E&I/X_6/_S>J_`=I03J&_AC^-<F#?AC[08(Z1"0D#C@*P.R M!K[<%+@%.5$"B.+$0,[M=A4Y58B8:.([<Y&F1I`0G>*"HJCG_%EBDIZ'9-<& M@TM;_ER6E+1#&O!'.XJHP]^)45`L*OPW)KBI+#,'HNWCS(9_6KX)GSR;=AQ/ MZV^,S4(YPVIN*4])U/%8&8[3BLIHH%Y,N$P3%5"OU$P@MHO4XTF/?,)N&<)Q ME5<H^G&->"1[;0XR%9_9Z!U7.<?J>&/3'P7]+6(F3VFOH[N'@;S1(+N4VK3+ MHF-QC&IP.!?(P+B_&:"[2`X\G0/<C]<`/KP4#XV1?\D_-R;KD(@CDE6.Q3I* MFPWH:M/!`A=39IJ#V^5>(#27P0?!IB`&72@^U"B1QL"12D;I=EEI+@S>H/B( MYXD/P8E;A9.T<2I.M#E%4ZN4-5>WQPT%VWF5S]C'INII495T'<I[CS*V@GB` M*9L<91%C/&QVH7.C73<Z5OK_W'!-0>U_9[P5N'F&!EP0\;."/L\,N,VO'KZ] MHM%5$U\E.^!V188*FVT63'6J,U70>B:NOK4QJ$Q!DYY++5?/I*'*E3-94.6J MF2SH=#'37G+*%C-IE(9:)N>("_>X[>D3`/`Q.C94+'-0R]63E;58JAX/5=AD M^@X.5:R*U91)5!Q3?VO=B+,*/G%G:L0B#<J=*\E"SN8)X]-YNQ=R``K6]O,Y M""Z0/OHFK\M8?GHQ0CG+3T.5L_PLJ'*6GP4];?FTK.6G41HLOYUM^?@S!5[' MT88C^0V:LGZL7&4T?]V/UQ)!D(JN6<K$728!N%%7@DBN5TK:5?208663AFXB M'KW0'UT0CUMR6Z)<,4-:Y*)_145V"20PR?YA0V$>B6TGZY/-S2O\$FKT_G@\ MOA)L#M8S"AVOT[7QF/]8K9V>OE->5ZND5T&O$J**8HWK^*8TF[UHS*Q:M1@L M3[?'6B1:I93UT[I>S[&]GCXHWF-PHV=2%R]/7Q_+&0XA>72=D%Q[W"_QN!`K MN=#"J"7#U'I*1?%S\5Q,'FDY1U-^LO9$T2@G'O2%G2+<'ZGW%T<%D3$#*#\P M%@#EQ\4"X.FPJ%:U98;%#(P)3!W$Y.5%1=>.C[$49QHN)U]D.-G:PAE@20+G M@-^8^/B[?7@JHGHMIU^-"&?%<#?A$;9O0"WS]^EO2/OGR*'%DF?;)R@A_C M=H3,;:ZA:"-U-N++I[;'0W)R\3727[S*3VR5H_GJ.?Y31^<WA#MQ>90S?8OE M:9P%B58:\`Y2K33RY"IM_?[E`/)K?_T8'GCQLP"//*W@!@;H"OZ0`UW!,7*P M3'N(YU;Q$`/J1`+1!3]9\CHY.^KP9'?M'$#7[D6I<_A>^'7XY_#)SKWP07@] M_"S\2_B+\&'XJ_#V]A_>/46=A_\`D]J.C`M["XN1X>#G(WELW(]>/?/*3Y>( MK)!:=E19RR+0VG]\ZVF3X+9B<O/@[MW=';R!`1O?B?$%I#_^>_@>\/3[[8_^ M?7N?]J]]<.V?VP(A0"YFOA;R+@$R(>X>B'H[/`B?AM>`YN[.28?>?Y(4EU]2 MEH8LH2@!Z:8A#\+/.?3?=N[!,P_V7W/HK^]ET;1<J>D%DZ;U4GN&6M;1UM?U MX30N7LRKJW<)WZFK?8U^?ANHQ476?+@WCYN&9M<.D%@`]O^^M9-N;:T[M?7M M%&I:)%W0_7%3%QJ&`@QGX[T9*9Q3X$&MMM'74;KZNH[:U==U%*^^3JF^7J=] M<9CHM..#TVOAX5TGDYUOA&ON)Q<FHM>#_I,MM9TE5G0:8!&A=,[I++5S]F1H M-3C^;@V1+2Y-=7TX"`@_KX+LO_/I+Q^__>!?][]`2^0K=9=P9=HEL>HU_IJ< M'O@C7+9*SES>&(V/Q-C.#7U<II;&1RS^'VL/FWSRX<']1W_=?:**0IO<^>KZ MY_3D;[Z^<4OL/J,=,9*;1+J!3:PAY9\I27(V&6&NN38>^KX@6A81,R+"6I18 MBF,=EQRNA;IIH(/QPT5'UORC1WMW?[>_^^7[=_8>WKS]P1_G;3+_^&UPI$_O MSU=&<^/@YL[>1^_?022??`@>]=5GU9'L_?;FQXCHUI\0S=/'X%S_N9M`\V;_ MW&2RF3*#5$03,2OY"">F1RJEKVW>L'UL6$-X6IBZX':9UMRV5%LBGU./*<UP MHEPQQL=BV;>EX*G'<J-X6F:Y&RFRX^58G<]*'<4"4!2@'O]OM5"`J\^O`)<V M+OID?A70KC[?`GSGN6*?7[Y%9'PYN_OEC8.59R;`K`)"5`=6%K3U'$M:.CV" MKU3%#I<5AC.2@!5&,LR`^;M@2R`PC%]42KN26!.[8"D>Q:R2.%/&15V;:D,7 M^#$:)$N:6IS\2U.+D_Q$4"B$XY?@BWH^?182^>LKY:%;&>`+=<9)*A;\-6K3 MND5695^`I%OWA2I50A+%LRD0DC32M0$8:\ZAX8G:@$:U0691,-O\_O")_4PR K^L.F\H?+X0^;O!NS]KQTO69:6S>;K)O$U<N=ZJ8L-3.`;P`X2;Q*,+4"`$PR ` end
pgsql-hackers by date: