From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5637 invoked from network); 15 Mar 1997 12:28:25 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 15 Mar 1997 12:28:25 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id HAA06427; Sat, 15 Mar 1997 07:06:30 -0500 (EST) Resent-Date: Sat, 15 Mar 1997 07:06:30 -0500 (EST) Date: Sat, 15 Mar 1997 13:09:00 +0100 (MET) Message-Id: <199703151209.NAA20482@data.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@math.gatech.edu In-reply-to: Zoltan Hidvegi's message of Wed, 5 Mar 1997 22:22:41 +0100 (MET) Subject: Re: zsh-equivalent for tcsh option "set complete=enhance"? Resent-Message-ID: <"HgA253.0.Ma1.53fAp"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/2993 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu Zoltan Hidvegi wrote: > > Armin Fessler wrote: > >Is there any equivalent in the zsh for the above option that makes completion > >ignore case (and also `.', `-' and `_')? Or has anybody written a tool for it? > >For some people that is the only reason why not to use zsh instead of tcsh. > >I also think it is a nice feature. > > Unfortunately zsh does not have this feature, although something similar is > programmable with compctl -K (see Functions/multicomp for example). > > Sven sent me a patch some time ago which was not up-to-date. Here I > forward the complete letter from Sven. Note that it contains a patch which > should be modified before it can be used in the current zsh. I was > planning to look at this patch after zsh-3.0 is finalized. > > Zoltan > > ----- Forwarded message from Sven Wischnowsky ----- > > >From wischnow@informatik.hu-berlin.de Thu Oct 31 13:06:39 1996 > Message-Id: > Date: Thu, 31 Oct 96 13:08 MET > From: Sven Wischnowsky > To: hzoli@cs.elte.hu > Subject: Zsh patch > X-Status: > > > Hello > > I was planning to become more active on the list again, but will be > away for the next ten or twelve months (having to go to the army). > > Because of that I won't be able to port the patch below to a newer > version, so I'm sending it for 2.6beta19 (sorry). > > It contains some thing I was playing with for some years now, in > short: > > - Completion character equivalence classes: some characters can stand > for others when completing (e.g. `-' can stand for `-' and `_'), > this is under complete user control. > - An option to make completion case-insensitive. > - The possibility to complete parts of words: words are considered to > contain multiply parts separated by certain characters (which ones > is under user control) and completion works on all parts > simultaneously, if `.' is a separator, `c.s.u' may turn into > `comp.sources.unix'. The separation charcaters are given in a new > special parameter. The funny thing: if this contains `/', some > multi-comp like path completion is done (but without the need for > menucomplete being set and somewhat faster). > - An option for automatic glob completion. This works by temporarily > turning on glob_complete (if the normal completion didn't give any > result), inserting `*' at the beginning and end of the word and the > current cursor position and then trying again. This is handy if you > know a unique substring in one of the completions. Typing this and > hitting tab will give you the word with the substring. > > - Internally, the patch makes whole words be stored in the list of > matches, which allows some simplifications (I guess you know ;-). > > Ok, the names of the parameters and for the options are probably not > the best ones, the code for the option handling has to be changed and > since this is very old code, there may be some other things to change > to port it to the current version, but I hope the description above > sounds promising enough to try it... > I still only have the weekends here, but I tried to port the whole thing to 3.1.1. If you find errors, I can probably try to fix them next weekend. One comment to Peter, who wrote: > > I thought about this and (although I don't myself writing it without > several years more experience in the relevant code) I don't see why it > shouldn't be a little more general and in some sense zsh-like. > > What I had in mind was that instead of using global arrays there is an > extra option to compctl (say -M for modify match) that says what can > be done to the command argument to make it match the candidate. For > example, > > -M 'c,E[[-_],],e[no,],E[\?,[A-Za-z]]' > > says: > > - this completion is to be performed with case-fold search (you'll see > this is the same as E[[A-Za-z],[A-Za-z]], but this is probably common > enough for a shorthand) > > - any _ or - in the argument matches the empty string in the candidate > (and hence should be discarded) --- E specifies pattern matching > > - likewise, the string 'no' is to be replaced with an empty one; (e > for a string; the e/E distinction is like extended completion) [this > replaces all no's, not just at the beginning, haven't thought what to > do about that] > > - a real ? (because quoted) in the argument is equivalent to a single > alphabetic character in the candidate. > > So, with the above > > setopt no_SH_WO?D_SP -> no_SH_WO?D_SPlit > ^ not actually any use, > just an example > > Maybe a general pattern behaviour like this is too difficult and it > needs instead to involve character classes and strings instead. I've > really no idea whether this double pattern matching is feasible in an > efficient fashion. In fact, this is obviously going to be a lot > slower than Sven's proposal, although one only gets the overhead when > one needs it. > Sure, the thing below is a bit un-zshish (while still more zshish than the simple tcsh-thing). And I agree that some more flexibility would be a good thing. The one reason I didn't use compctl-flags was that I wanted the whole things to be usable for all completions, even for those for which compctl are defined (I had the same wish for a more general approach when thinking about the same example: options. The `-_' thing was nagging at me for quite some time.). This was, as I just realised, stupid, since we can use the combination with the -T flag for those kind of completion-word-modifications. Hm. I'll think some more about this, but don't hold your breath. Bye Sven P.S.: I hope the yodl-stuff is correct, we don't have it here so I couldn't try it out. begin 600 patch.gz M'XL("%B+*C,"`W!A=&-H`,P[:U?C1K*?G5_1L'N";&2/'Q@PA.PR#)/E+@-S M@#G99#(ALMS&6F1)HY8Q3,+][;>J^J%N63"9S=F[R\D0J=5575WOJFXFT73* MVB&[S,,7-W$Z[H2LTWGQ2E"-?M5HM:T+CH+LWV(;G MTGX:W/>LTF^_IKML;S?!H'-TWV*T(P^'G18EG.I]$]"Y() M$XLI/>:GXT9=X:(!:$+TSC-)FG$WCY:HTU&IZ'.[D& MC/19%'DVO3=C/ILFS29-9+_]QN0X+*GG"CT7QN1S79Z'/;J;728K0D[003;7#!FP/YA:S2+`DF'-&(`(&.,N"HN!YTNET M<'LH$,U1>&[_EW(T_!*6AO]AGDXJ%A/$HC.KJCT-.G9#(\9TV)#U^WO=G;U! M[TG341"6]0S1>@:#IZUGN[?C;_?[TGH0I1S8UL)G\._X'U?'%V"AX)A1\ MBUX*F@,K_2F:3OB4?7=Z_O+P]/(K4JXBO>6)D`HD\7Y20P=L_4]__KGE-?]\ M\-NOC^\__/+-MW_YWU_\C9_6?_II?=\1QRP0LR(8Q]P5B#5L1&*--=ZD4BC] M'=;M[O6W]H:C6J'8,*Y3VQKL;>T^+99>K^_W>CNE6.3`KA;+R=M7QZ_[WOKW MYQ>OCOYV>'&Y[K-EFD^0$>*&%ZBXYEW(]V[3MR!/7B-,--6SX4G->_OF^M7Y MV=7)F[?G%U<.S#5`+)()ST68YEP!)HLX+B$OC@\!^/0'@-LT<$?G;]Y>'K_% M!<-TGJ%H%;!^=4@L!7YZ='UX>HKO\!8E'`8(IW?HOP0S/'MW>NH?^K#LY='A MZ>'%;_CT]OCHY/`4']^=71Y?^2\O/)S7Q(\NC2:LU7SI M$\KR5_>Q7CR[7;^W.[3$L]N#@9$6CR:7B!TAM?Y14[V]EJ]^MZDY._+66\": MK[,LR(.Y\)FDU_K\U[K/FVB`D@=L'1E)!KA.8CB\N#C\P6*'SPP;V.7K,\], M5_SXSAY3;&%=N53=[^ZC+RWSUW+T4-T&24WC.CFX!`%^?\D M+5AP%T1@%N`X&)C*K9B1)@1%-([BJ("PX%AIE$2%FV;($6.;\M7X2G!?7;"O MWEZOWBSU=-+C@0?)\ M7WU?8H3`AR>^9^(.R:GY3K+&'^DZGY\B72?&ZB*?+#)O?9T^Z^]S/@>I>])? MDY3!Y[(6$]$GGDZ]12*BFX1/T*DW):`#A'[]2Z&0HE48=$YR;FGQKWXX.WQS MGQ]>O3BZ:AH,2`$-`PI=QE-S&D2B\INOTTZR( MTD2X&F4&C5*9D=+==UF_MX>JM56K5R5$)8/=VNOUGXG!(W]GRXK`\#K4:J7M M.XB7P8,H4IY,UOV&W&S7;T"Z$/EU?GQV>OR`(-1);!9,A.BC1_,##G M;Z_0I4K(MV\!Z&\G`'SQ@PN[*-)P9:%W5^='K\CP[7F8>*#QQF#AX'RJ:P`0 MAFT,`:?'5\K4!@>H:994D>ZR446P]/3V"M2T3- M/?)-CS)=AM#X>I&$Z"4@?V40:-E=$"\X2Z=,9#R,@KB,ENP7$Y$W,,W=E!CH M2272^.1$;>\M0K-LWD1%4%XXY\4B3UB9=3]J7`XUXE^F!K,GFQ3AD.)K:N]M MHN18YK-;*K&X#AEV(&%S<.0]2#'A?X.^%>*F.>L'[YKG"'[)L#QN4V&FH/%:+"SS*=I#@T.M4MU[ M%>W+%E!"DE#@1AL0!>A.F$(Z.PA0AD35(S.PBAAO&!T`10+/G&'<#$V`1[ M8"(,$B0'K0RGPZYA;D?V))SX!1''[3#0@(E<]$91B,+6+NL/]KJ0-]:7+^5L M*\4<[O5VGHY9HVU(9':LB"4'!G;U8B62OAZR,T0S2'F@KP153?#L69B^V>^8 MG-GO.OFJS[U&NT-_I!N[1//N-@ST;9K+%$OC51F4>743)$UU-?^I3I?I33E* M:4GE%7,V(^17:?CB1Y"/+@$>4BVQU2^TN]7AQM5L(M[\B_QHP MK0B](0.807]O^$P9N]/S=[9+EL+KKE$"[-.B&H.MS_$YDLU,:FZ"VP@8Y-"0 MMD$YX;.,YZ#U4[@=%%.J.JFRR@I$A0%3PN0>+UZ!K>MA^0II+=`Q1S#,@*X4* M$;L0#Q$'/Q&`F8M%7/BLR!]8D'0 M@S@&3(015@5%!FB(Z?%=C?C)03J*2Q4?L0'2CS@F$ZXZ3U6/K?I.\\%QG6;4 M>$X&`7.;/.?VDYZSA*HXSIWGCQF'?7\PM"R%!G;-*1FV/)/%'`I[U,(PC1?S M1*C,`,4!I6"40*(!QB*`#J M?>E=J6"4N=D*50Z2'ETA!50O,3SN`@8`LD M;;*0VFKT"A7_.`#Q`YES#H4&99+3B*,:<@LEH>E(IDRC7!36-Q55``"P49B8 M1S>S@F&_"H0!BAU(`[8T>T6Q%6YPW`6PFQ!I[RMP4@#^/9]C7N?2I"D.`ZF+ M";^A)Y4/%MY:4WOLPOL9'+XDMKH'X"[&'4];;[>OU)MC2+<"!"P(?*J@?#KX,6$]KSAZR&4^0'Y2]`G[T4(#I M(5VP90# MB(=VD;:+AXS+16=I#&A)"V$KP-.D'<39+`!%YWD4JEJ%N&"\XEWI%?',I^KG M:*S42A4Q5]522-T0,\KEQWADS(,"]X->'XT8;$$H'54%BM)2R-!*C5F"VT)P M\N,*D$_`>V%"$%,1!+9F!0[`A363E0>1\1$U>'QA<+#Q`ZF]@K4HCQ(R>L"D M*X+7P$$N-<`WI\9E_>5&,IU%%-Y&!PI\($%)?1;<<:6/V.16AMX1Z2('!>DL MDNB^J>7M?)E'(M2*C8A(PC`I!H9W1$<"471D=L`B34/^00&*-E9X+QVTS8Y* M693,,9>_.CSZ^^7)C\=V3'?&*9ZC\!0 MO:YA]3KF88!N!#!-Y9<.^](?6<.N:8I/H^3V%*E32_N&LF=WP+`](0OV%)1, M!B%RWA'Y:8HSV)](\T(:A2K`"0]JY1*=(/*J[88!@O2DOJ`UYZ"$`=/G`\V. MV@-U9U$&_9Z.U/\Y&62UB'38DK&0TJN%0`>@4:&+BJA'8;FX?Y%(A6Z4;.8]A MZIVI'2#B1KHYAF*RR75(K"R%6I.%_^5*7U_I06'7[54K/5/\NX:1\WEZQZ]! M(0]8N[=O3B]H"_,@S%-[(P6F81#5P!14O-;EK^$I'N$*31]U^?0="9Q*)[S" M:S+FK:W5-OLV7FQ\:)K6YB'#RV9,!`^HA<`MK-YP>0S0FF58GCOK$VL#=@=E M.-[)(9W<1+YCFD/JC++DR0U,5?'(!N^HW@#>]X)$Z!-')CA%ID)7YBPA9!B8 MLDBX.9Y"!B"X#EX%$&'FHDH@1]%\0U9H=!&V,:*D35NP5EL&NLJ#S+;HL"7H MI5;WJI:S$MU"F(YE4#0:U`F7O[5D+#V`O"'S68@]4U]NPY>D^[3WCVRK17V%9U`G9(U"PVK'X\N91?O'\TF8>_OCVPT38M M#5;S]4(X^2?59R3(;PZL]0PY>$T1/AX%"$11'>GTAYG@-`*J6L M`<#J:,X-GNVD62'>V\W?#U#=C^&?#JGJ'NC)5-OF))5F6?%MZJ(DP-1M]:Q`ID='H=)S<4?V"&, M2)]N+J)&@H)ZG.`I%7`&Y;QV(*]>R?N?SKXLGT,%['P1%U&;H,:+Z12!YZK>1ZR"[+,8LU/I;:J7/E0G"7ME MT239,&W5Y*&8T=%)&/-`.4?R0VR1K>0+G2^-_YM&5J"2>,LW4=%7'2>64E4G MKF*,)MRU#EUIAAB;@SYPBGS"8Z_7-$.`I=TV!WX2#Z_'PY_"\RA/L-!>%#FX MX?=QC(=7&S]U-_:MLT3%;YTJ4-4J7>H_%V"J(.UP054P$XL0:C`Q7<1UP8'9 M_-;0DQ2;#3(:69Z7I10^#0I8,RE$YVE^`[S:OG0'M*F;%%"2O=7LYTWP,.96 M?H"==M0AF^0D7?ZE7,E:T(B6Y"S%'>%)I%<]?*+3\*H[!N?6M,F5![BKOJO\ M9*L.$/].=62J035](C!3?0^I$]JZ#KP-$(/N7/V!K%?I(+FQIJ-_.APW0,]E MSH;/O'R&C9RER_)45(7F7UH;XK/G&F3(UD9*W>G\L8V$PK$C96OV.;]@W[+E M&.5*5A.*#^B'(1ULNO,EMM7)!W*RO-<@K!L6"."@;-&-!,"Q1I:JKR40/Q5O M&R(+0AXE%&.4>3?*I1"''$O-4HTEMQ9]=%S)RHY6ZD&J>RR4B9`5K6V"3CG^\JEF[%=#WMIJN5V,N&.-$NKWJH6L"M M:'1;6"S&JH@'A.T>[B.C7$,BOC61_B7PS_AYOO?EV5-0*RD$W#% M[([+(W,C[UM<%C@UP2=MSEAMA5II+GF0A[-2;1R=IKXB\<8P06M)9G`_H:E9 MJ:F92@KHEB7!61ZCW!KJA5H4VR?DHJ%R3=6>N9L0T0E12V,ALY,'.(5+N;%S M1Q%A/TKK$?@C<&2R;U&DN!*45K3"EPHZ"YOBT$?BN6U+)%UI2XV/5J)$>2#% MID4RH1W7&H&U!'+R(^0=8XG,=04*97FC8HF\73IL5.9(&NSR`F\)EM=,,9/X M6$UY.+MH=:GF(L*I2/J.; M*4ONL-361;R34KF!I%G=J%&5)PS586F(+N-IEH9*GQH32[%LEI[H+B`J525` M^LZIA]:XBKZ%(.S`T3?CN8"GW@1^T5/);Y?$QZ?BQA?1U'`KWY*HS].T0I(5 M$)0<`RTMNCD0V'\N'1CARZ,@^V@"'++`HXFGPX3\XV49#`J_O&JONH!VQ`!R MOC.M),P313517/DC[HX='[$EB!Y>9X&P2@&Q9:S',&()''/CRU6IJI$P2P&/ MZ:*2I&"N#L.T2]6SRF:V5']-M_;J<9K)?@!FT$5[ MD!TB?,+P.<;&K9*PNM]?RI`L=[R(XHDHY8@-`[YZ`.#0I[:1XE%CJI!U"F>Q#S'XPET M.BCBL#R7E$S6V"06Q[^(\OZ-HAF_T24`/;%Z9<8N>)8!!1N7/H]2-+JHO=0> M#P\7R\Y+$P+?,UJ/QW^_-SOR936"_Y^;=K#1SE#O2(6"DJ`PS>C>&Z,RU[FM MDG96\BPY\(3/0O*XD0[^G,FJ%FYOXQQ?/ M54@7?,[IOEK)>$=V>#(E"2J3>DT*Q8IYL_S+""O)JZ^*8%-66:NVYI9>#:?R MHKK$L$YNRC0;+?.=FXI,;ZS,1<3G\LW_:^]JF]LVDO1G_@O(56>3$J7P7905 MV^4X<>):.]Z+[;J]KI[NI_FD8IL.#JJ(_3UMI$2&0\FK:P*["&WG%-89$8QO+$U1"1>)$!? M<4LZ?87]Q.*$)_HK]8M@XHQ56^43NCRYR@#SDV!%Z'GTB"3:C"5Y'01/P#.X['^=?TC9IH]$XA:LD%"< MEC[O[Q168L@/?YX-K7VD42ZFLD>*J9*:4+,R:L(DXS[)9UGLPA(YAUV*$+0" M;IBF_(>%4[3MQ*K;[PS;W;X/<8)>6/VC4%%[HZX[@6TT<$0V(JR!_M(˖TU)I4$=GT%&Z M3B=)PK`/'D2'0Y3W]H>QP1(24G8=2`^-#*,@>6CU_1YUH=\P<8H,Q4\F04.7 MD1AE>!U)7:"3)`,1-L,5OB=V45-Z@/!,"Q3.&#'%N$-YUE+D(=]3O`]OPQM` M$)%CFEN:%Y+*TMK:):%Q]P1H/.AZ&M]"]Y-=^Y]L#$#;VJ-;4`/11#_40[S9 MX5O&YW`2M6V874R31ZG2U""S-EUM-'(MC)5;&=QYE1H!E\$;OP;Q MEL'+LR)KZ=VL>)QNW)X)0E@FX%_P^,,'YGDO4X(A93(DEVM=,RJ6L9D?U>:( MLF!$-/E9GIT&(S,R[LF3L_]\\_+U=T^?/_X^D';2-7R49<%)O]T]'@R]+/@2 M,YCL.H7)QASN,1[:LYG+NW".BM"WR$EVHGHU]KGI0/=R'O@;"!SI;57@H$(^ MG58"5E4O._)ON5WA)&8`.0?H;2(C`@_$K4@RA-A+"C;V,89QFQ7N+;E]D7?[ MQC`1KX4[&'16IP2__L4B\6RV$_O0[54.RCP',0W/*!7[(DYG[9T M4'Q9*8?N6C`H4N#5TL4%7OIX2@HAP?',3&0=H]T,P>0['@UMU,2-^DD$RW$9 M=H25F+*5B8ESS_=Q==9D2B_=N'<=0CWI1P,@_?'8DK[2T)X;'BV]V7G+#T87 M-]`4^T:6&2*%?HV6G9,P\!GNP5M/JP\6FP^FYL'4/VCZ=K@]P+8:7(>A=^A6 MWO"(HS-A7UH29P'MCL:+ILF^?#A%CI39O"RB25I^3--%&-?@6E*WO?AAG%_[ MZ`8)*]6-.6L;5F4_(4\#T(F)RY3J=N#?J4(S(;..1Y99/V%FDT^>VN23YO:S M!U^?!#($"7,RZBF;J[_BVV<_1?M3;1PX8YU08GR)X-_(53K;]Y!D6H++K\HDXLVZ)P@6C'._%>-(<<[,`P,FD-"M*/X(WKG6:12 M*#<%^_=@D?9ZQYUJ=/MM]1Y]*GGL?_#NE%L?3_WL'(.:?Z)"B(<\[L*0/>B) M.IE_31 M6&@JDRB7#0U!J@0..Q^_B^4POF>;[6-<^T1UU&7R;%XV<]2T#A#YZ\Y7=Q!C MVL-B82:*5P9@MEIXH[C__?+1J(0<[O8H)%ZHT/JA3Q3_>C.T=W6JVM.\<)1A6>G)QXZ]I871O1$9K=O0F-K:>&FMVED^@TRX4/ MWUFTK(=GJ]&ZJ''R-*[T4%TJLO73>48*H1XGT/[Y2+ODE-"69.%@+EF_:^S3 MOYP&R4Y$J'=S[:IG+T)75]!T[U,)6IOWU.DB3DMOZ)FL@3W/+YHY4&2)YQ$R MAWSQ*T3)L(E82'/4"29`WT>!7>?W/LQ(6A0^NCZ(K'>PYSJ?_XW60[&,&&<4 M5(Y?]N\AU19I.I63&W<[Z?V%:X$LW-(XQ5'/8T;J#X&1!E['D MJ5>[#_U+C[U^SONPVW6&?3/GQKU0I*E+-,A7R^DZH:R0F;!9V(>RI(RN!<(? M730S6>PV*&@-`IZUC)9>984]>+%?PY1/DF!D8]NF_,64DQ*9[G*Z@((6'%VK M\MD>[W%S&%3R].SE/\R\YV^7/GO&37%9ML+NOJ>]*\&-2_Q`2A_M5-C3S?.Z M^M3CAO,9L2#PIBCB9@L@LW-*&#IR_"&A=^!^3#@.Q$E$3^TD=5![YNAW1:?" MKEW=K:C&0\)K;PBJQL`>ZOQI_';@^4T,R237L+1*W.9V+:601&07'N>F57:7 M)J2LNI,#+%2P,O8_NW.;\ MJG5_W>9/$8;U'+/5XQ_Y*=F!8^1=6YEFFX=_=Q=_G>N]QO=>-T'N93=BFJL9 MYDIF,7V0_W@^N<%V6;M#U6M(PV/0D$86#V"`"`$#7[Q(WLNN63##PU0N!C9! MJ5KPYI9Z@1_E&`F#>5*'=H]PD5TV8-B'2N:Q"XT,,[$L9,2\Q*:/0M2%,*#1 M[Q&5Z%TT>4U,H[H^#JSK`_L+#+8_32L7R"=2E#:A/["G&/ M(8JXI;<%+I'SEMXID@-O3YQ1X!9H)9= M&(0;4V(?P:/Z0=9E#4'O0`5`_.\][2B%-%;VV-8V4-CYJ+J M%#$1'`DHA;M"`M;T<`;C$G^]\Q57+%&R5#6F@VZK)B_LQW66'0K.8ADDGDQ2 M3,F74/HYG?SZ;N9O@6.LKF:Z'[B(\E;+Q_'^%V>YF`!3#LTSXH.\&_Y=KHS: M%!T96D5MVFJ%Z4G/&$7JEZ-[-%&_'!W=.VK4).1,T\.'TS-\$U(5LYR/,,.7 M=,WFGKG:1;;C1(YF^+-[*++W]WX6GC2ET4JV)-!MF,H;,3>)]XS*2PNO]_DX6PJVGY5LVN5Q36M M+.]EQ9G9=\]K.IB#?ZI='RZ:E!\*Y96AG8>Z)[2)DI?$W:+$@X,.>2J*\J@H MS\XQBN]N].KLV=,7KUN8UXT?L1P.&QPKY^:U*L&!^E0J2XWOW[+2&C[!1W#T M@6:KZK;V49+*;"8;"9[E"FB76B^L3M+*@O\GV;)(>5&<5C./N@;$OY)_'CYE MA8(\VPD!XFG3QW`)GBDP"K-XP2B@FH_C_4D$S>J1B20D\_=M1[B]S@DZ;4Y, MG:@>0O+TAGU?3S%?%^\4?(4-+$+(>(\2FM,,'-"C.<%SXU)F/C:ZP8@> M'M4&2-M$>$]Z&O/P"\1:3LY!N;P[3;,Y+)Z[%*`SG6)!-RJ;-_\#]-.P?.-W MJQ6A/8/TPQ['W-P,[P_W,^_XPY$T$RH\4(GB[/ MXO/)_-?UHI$@6Y@)-0X M8X:#/C#-\,0[8[XXP?R@/HUD!RY.4;!)Q#JN080((BP^E<;^72Z&2]9!][0R M"10&=8[MJOGSR'VZ']U\BNIY'(_JNF.#KM_#8IJ]46]00:KZ]I]O7K]J@LF[ MYS1OAS:!DPA:^)UOWGQ_/_J=8+/O1\&M=,<=1;@B&F^"6F%>W_)Z:/3T;+XX MX]\8@J!(R\HQ&>&N-\/"""V/)0+BDBBG8W01' MTB]^Z>T+\[KB*KYD@,\EM0":;`[&I?.=R\KS6%U&LN^,QN46'H[Q@>O5%F'= M'^#Q_K!G@^/.TW-41SC.M.`85I5E^.-;^,%;U0(Z&+A4^=$-WZG&Z[#U0Z?S M.<>SMFPQ=?B-@0I%42!?5A=N[*E2/8F3]PC#EW5Y0@]AL'K./.[!B,;]H);0 MGS*BI&Y(R>>.J7[6T#O:'_7MK,D6*154<0TA>_MAVDPUE\S@(BGAJM:S,X.F MBNJ;+G`Y:K=SB`W:(O=^O%L'K%B*-&!=[]IM-YM]&.EX$%2S^@M&FM0--;F] ML=;.\O@8.7EL@)W[_>&HW>_[C,4&*5&4BL>?@D##BL.1ZKRP^%DL/3PXQE74 M01@$WCX^[G6AMNCV\PZSC.57,4]V=B]2LJP,SMO!\HR4I MAZ*MG4K\L*3M5L+$R/9VT6T.ZFCC;-+H;3:;J`;]GRHWA8\&C5(*\:D>X; M6R^<8:9NR$^!BZ=U$A)LA`+9CL8730S)N!&G6/LA]"0IP2:JS MEOB]_QS#(.*62FG'JVV);)VC2A9S/%Q]<6+`_XB-X\LS+ M\]2RA:*BQ(7,&4I_\>4NEA_;T>0BCXO"(?9#1PZG\R+/N!R`:P=K>L+\O108 MH/BB;;Q17L)C%Q;+4DK\.,/8MT,1"L!`Z8)K/U'MRC,L9AG-&=(_)4S_JT,1 M8%(XMA#I[,A,NR3TRGA>MSJ?[!+OG%;3UDAH86(^J'S>;?@7L3X.V*D4&N\K M:$$@,C8UB38'?4A'V=;9H^YO9$^ZL`NE:[3IWS-91:@E/T"_C4LE4CTKIA0^ M4`Q,=IU?;4[O0`"'4+?P]R><;<7@\>':J@=](\-]$CW$#K6D8//F`B>($Q(. MN+C)#@F?AUM2:(25GY:SWW&]XV#EAD.]@1*MG!DE#^8Y.!O$O89?=F%4J5=_&RK)W'8=D_'\Y]6?*J>C+"JKZ/7O0ASU[X+,H M]#C)9AO5YJ##'9YP0 MUZK(.QT#68Y>&ZS(T]$R@93);"!'*VI]ZCTDXAJON?&>!-8&629.Z M79@$9>//+%?PS86O6B<%QA6;E@LZGI[10?Y_%/R_.VUWCJ%IX-""32/W88DD M@?.W>7;(X2#/%I-5G*029^A"%/`ZM'J09T&:D)_)Q":$UPY7J1..=+;+P&-1#_C] M>&1.]SZ13W9G%2;1E4P0,`!W]S;GK'Z2=IV5^AFAN;CY+-2OWN,36+WCDV#U MM5'C:AN96YNIJ-^T*PNJ6,Y.)V MKTY/Q"1)S]3\1)6S@R-WR>F8:KW1N+21''08]X<&'DVPG0YM;DWX7!-Y],!' M'@E"0/]XW(6E<=(-EL87F(1KJ7X]F7K]I\H-++0W0D&-WS`%7Q M=)I.)>[T@=U^N[YA[:+#^\';)*S`%T-)C(WE,WV)V<9H](Y[(V_TWI`*)CN0 MB\C@D3D.RU90D2$:.*1=J%<#9Z+#B0XXG3G3R:MGZ1XH7_#/G&>,^_#3>.#U2I\I MY)PT.Z?]+OA M>2+,Y!JC*F,#C%A)/F"C*(RC#*I):S`E]!C+1;S0P$HM,>.J.N*/&^!;[2B) MB_00S=,%^G@_I,%%*O-DRK\K$JJM+_.C,SFI;/MJ*I!14LD&`>S/\^6JC#%. MLE+E8R.M@8!M::TH1'.`T$PU>>L+:\0H#R<26"R6E[J#G[Y\_NV3QZ^X_!?= M6"ZQ\/JJB:#(\DB30(K3W]ZG%QMHOO'/+(@3(D;UZN1GD,KG503PY_/W+HW] MPQS=:13>@N<#Y]5)4D1GCB!&S_C1U33J74$D#8HG6L(=DQ:'S>#7"7Y)[SG-7Y0L3W^N:B2?+#VED2GQN M,.,58Y:3TTU(53]LC3ZA+.W]TJ!?E[[^0W%PT(Y*CUHLM-IK[O%S>_ME2)Y* M)Q9UO6ASBE]-9Q@O9J<>M:,%1YK8;NTMM#.UO?%EE78@B?`-%?DLKZ8&5WO9 M1H/BFK?2P741(MIF962P\BM9%'#SU["C:EP.[67P`$*DG5KP:X9:L!7A?$F* M<&`-&]G-M@:,4H?*?E<_6)GXW:+#?^)?-PMGX7]SH)N0YAMT3 MS`5+GA'L^2=C?Y#A9VL+;8H=:#/S\D.X+"!70Q[N5>/+L*@'D@LOE/Y"Z:I] M&#:&IQ_BX_"6DCZ6`=5[U(Y'=2]ZAX=`?/HKU#?<.W=,RRK/0=2X(JG!E.0F M,V=+?L.1(H,_*YW^$<:BH=Y;L&M[@=[^<`AVR+`*M1SGF"F4K$N,FBKB M#Z?>F)\0Z'PNUKXJZX=RF?)+\W59-,6J?;=YN/DQ%>0YRB?W*KNA7MJU?F>L7_>5@Y@X=C&?%'Z"&=+A>8(X?4:[' G&-_L[7!L1];4R:@]Z'4J:^K+SNUG+\#;6\J?0[__!0W#G,"'J@`` ` end -- Sven Wischnowsky wischnow@informatik.hu-berlin.de