Mercurial > vim
changeset 300:86cd0a77d2ae
updated for version 7.0079
author | vimboss |
---|---|
date | Sat, 04 Jun 2005 21:55:20 +0000 |
parents | 2bfc2b703314 |
children | 006e9c8a6a8a |
files | runtime/doc/develop.txt runtime/doc/map.txt runtime/spell/en.utf-8.spl src/buffer.c src/getchar.c src/mark.c src/normal.c src/proto/charset.pro src/spell.c |
diffstat | 9 files changed, 1422 insertions(+), 3785 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/develop.txt +++ b/runtime/doc/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 +*develop.txt* For Vim version 7.0aa. Last change: 2005 Jun 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -381,10 +381,10 @@ checking engine in Vim, for various reas fly (while redrawing), just like syntax highlighting. But the mechanisms used by other code are much slower. Myspell uses a simplistic hashtable, for example. -- For a program like aspell a communication mechanism would have to be setup. - That's complicated to do in a portable way (Unix-only would be relatively - simple, but that's not good enough). And performance will become a problem - (lots of process switching involved). +- For using an external program like aspell a communication mechanism would + have to be setup. That's complicated to do in a portable way (Unix-only + would be relatively simple, but that's not good enough). And performance + will become a problem (lots of process switching involved). - Missing support for words with non-word characters, such as "Etten-Leur" and "et al.", would require marking the pieces of them OK, lowering the reliability.
--- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.0aa. Last change: 2005 Mar 29 +*map.txt* For Vim version 7.0aa. Last change: 2005 Jun 03 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1032,6 +1032,7 @@ The valid escape sequences are If the first two characters of an escape sequence are "q-" (for example, <q-args>) then the value is quoted in such a way as to make it a valid value for use in an expression. This uses the argument as one single value. +When there is no argument <q-args> is an empty string. To allow commands to pass their arguments on to a user-defined function, there is a special form <f-args> ("function args"). This splits the command
index 156c0979e9340220fbf160ec40a14145fd493a13..300f6ce8076de277c944a23c4de43ae4282ce2e0 GIT binary patch literal 562278 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	Jh7V;m@u6FShjzQbL=bQ2s^RMv2T!a=iljTL# zAnzKuDQhS(!kr!{K;{03r89*tz)$-87{NpP#U1k547t!mVna8!Mb#|i%R4Bcb^N6x z#Uoz@0qJ^*0^WO$LOA)-RD!sLpOpO18Y`N_R3xG`R=SSdww2~4V^*aP!Xa-*IJXE( zOBtc6@Z|0Jvf}TWqCbcTgjN5(yqD$wLmXTjl+i|^<{!mGinMtXw}5uB5w#_URtY<` zI-4fws7*nB^k<CQ{CovY49#u-;9AP02JMHLIr5%nLk!I$8)K-27!9A=LX=200iAtg z6)>NR`O;HOt!YEo7nxAi)rCGHj_tvNa~i4X<22ihW&%oyN+B8w>i-$XjsG?S6_Pj? z?Qr?E$ZN8DOhRe0AWUL6CeIL{RIinX_01Xl$P?$Lj8u!^mE@XbM3#qIYwj9F6H|o7 zWwxYN$UVw`{zQ|-kPakK#8eQJdjJIhsPnvy`0?Pe1<|Rg-uo>WrAIeeh-)iVR~ODx zWr8Z1&WR<Yc<_FbVj#~55r_crV=C|zyW>+{ls-{@T6`_H+$nsj=b<0<E|aiHRRfTI z)BM3X^5c&`o$axa!7w&xyt2NNN(FqiFBgdW`p{!?1li@$+?v&P)XZdw<pIb7tuWnU z*w`Hh{|%LbwD4iyP|nKG#<}Jcs{tKCDpNIQkhS)-9n2Tre6VV3wAUMA{w{g%5BxO6 z@LZW5d?8o#!k^1PZ&{w{USUIG?`90s0WQT5M}39kwLA+<_VGWL_p$hF`QR2W#>M~s zcj#Kdy9kgMh@*ES2=3E`<BXc`phYw~@CSWVD+bEoP#pb~O&zn@t?ekH6ljlJvA;y4 z0=1KDP7k;8#zHd@g)~MhtZFL-EIPt&iF&R0-ud5Qp`ybqTZwgH{dT^ZhJXib-;qzl z_uWq*$=;<H5UxFT=Xp~07cV0wsaXw{_1(Cs!Pn+hDd31tY&a9WI2EVzyivMr@DvyS z#~vn^_|cW**7>&15dV)wl}?|cXBp_a@e7tcn{^alaP_=`Dpmq0P>(B^brE4fBENAu zsnpg&9U{zqhTutIx)WiK(%eOIo0fcR(8LQfAj5ZxOvDdaJ2cU^7Af=(*|+L3c=}sf zEQ*D~<}{=0gu4TA*d%(~zulQ9_W)*iamac3pi(Z)3n|$n%9oedYZB=_(Fsj+ONwdo zkKE!gyW6)`7`6~ntY=YPJe~e`x6!59N4fM-#yWa+Sf01>Ri7TA21=kcs|kp>_Y-MQ z<@Ub;G0?$~YJt255y0xW1{>ZRlc5s{aKhw!ESkv-*BNd;&-$K1yQTq(Ma&$Nad!$c zbWJ>(MKR>SO;Fy5W67m=uOd>wIxsZNdr&%yK`%<<^&p~l8Hsk0jp#krG_oyJ_e;`K z@Z`l&A>P<QvX=Ka)WRihC1ahun!<58L(EydOs?eEe4!){-NH9>5Seffz=HTaWqB(T zKd}7{FAilcL^XOn(iiGug;2C<J5iPj%k-fPHx~=W5{cU-vMpe(6=RaXQ##aiX_YzL znV7*o>JGVF&F@jfIrtu$dYDw>hJeFduTx)}O6%UaU>y(2ELJ>BSUiu3Kuq#Kxi~TD zSXA8f<W*>vN9WoDX{4mVC@B<^T#Q-R*nKx<$sh-}o;VW_(p9IV*fJzuv|^D~MTm^# zs>l2krs%wIBt~N1(h=bi4E@3k%JZI5e@sy|PbTDNJ9)~OS$pV?Mx{OU=t?dB0~&=_ zNmu4Ei`b5m_erBufIN{eRWGI%0|a`MuyV>T$$0Y*{9f`g@>zAdzN&pHs{&;04M8n> z+Ko8)C#6{xaKqv(8mP#pqDxhsL*<2k-hznaxW9Vz(_b#(dIZ7HBTXtfagN|<xerkm zK891u6hYSo0xi?dl`&T=kYS0Do`V2dm8BhiG0P?CxkT0*K+jkt9|#Sew1j28X(j6y zl;Ep}bnmF(G6<&o?yj&E@0#9W^DniG5Ye?buUp<nj)nU19IQfcA$FDSHiOA_*d=Ld z?PVy9biG1g?Zm2LTu&2#3bK>(RWgIr9Dhtllq%G~YGg^CiCU6IWb=GBfSZ#nLFK-c zL~$Pv`qq*os7O5ea!xD~A;h5H1bT5_ivkczllYMb>)KKZPB6XZ&<3}lO)&8$h`CBD zt>tYL@lhoet#loi@6|%C3}VD#?N?B(a;{3W(p-vs?M*8@zqQkIpuEO~uc!3*ba48J zhx^rbqqz_ZfmozdN&G3tM_EK)N(V!H%XTF*u#<C-Za3U~`SdpPFr&SljZxtEN~ftL z8eh5+_L^X-M&$1s07bfsOwF4uGTV+i1yplK9>dlH-mvjer9UmYx;qR9FZGirM1^7a zn(mKza&=q0Qk()+!|;a?5ui3UDN<Imw@XuCK-u-W!Akh(K5^AVGoS+J@|Wnwz_@-_ z*;IIuj(;#!Zg%JJOzSQ(YpK%W5P6ufuGrZn10IqF+llu_J|+!XnR{{*^qi_3j`^i& z@XYcq7t4F%y)AE3pbJD|<s>-dE7}3E8uTw$F@Vd2>Faji>k%n~Px?Yll{BHSFv|NT zV%E-ZznLDoT<V-YR558)sTP+(@E2}LiMuVTH&F28)BNDI9R-!Y9Xyt}@W06$dFA&- zT#*GLe@Y<nN4Zv9p9tfghmNyUO=a=qq9DkVeH;+oljXhqs-RtAK)parGDhUQ<IIZC z1&*#jy4^G*E1%9^HPejf?O!X}|9CiiEgCj5QsCMYBc@rbhaFj2Pjz&vKY_T)f2KX+ zewmBKwy0`Cko}6wUBVwV`uYEWk8KnYWrCCS3aX)j&)f&*qCqc{uGknBj97JbpgKgN z?lJ}Y9<gZ!)L|a-9?y~jNySI`24#qnjEl)Q%+BB58BZGGtm`sz=S6`7H1mM4w}(a- zq9Z6m*Fs2(7pLj2D;nijEnL|mH?*rjv3ewg-uB=p1tXPJ7H{c2*uE<|JefMeC~Zv} zV%owIrq3yIq-Op$cs$a1Ks^<2bFR(Nvi#;rG|13A6`5}iU{#^fBCt^7qIw>eCgd=B z{bV>3yYul}D@#?7qFz*MY~cLGk|_#~@XD!(r0TC%!zuFqrOPHZkjRilo%~w)&kHP? zQj;6-${o1e*b>TYhAb*5!8#c?Kak_}3s*q!AsqPWU!w$D^`04q#~G0|>ov%$Jb0H2 z$^8#?1p5555J#`S@2Pfcksc}@XzMoWyuDg76ee+20cqQB)&cs1)V^+s%WdOy6oC?t z=`{Qav1iclZam52eq@9Q4LJBsY1w()-pKj5ng-Y!U86+vHTrVK?xZ1So)MSfAx=Y@ zg-G>NRZi7HcQaCb0*I-)3@;zUvV>M8Muh}wK5j_)i*S&wNV0}B(;}S7(~5c#+Nqi@ ze?g1TtQR52THq7@Xp#~pi;BvB-t1ArvAP1ADt=y$1nJR%vAJT!L=H<HAPoutAC(5h zL8qt<?uiUa+oW7yQCHGY80pKfKs4P>Tu)%yL?X^Qr75(}$z?ygg5(=LBS|>$jK$@A zlTC%8N|7Y`+Nor_X$Zv-SD%OPKni^PHCTuFEW7neRfh8P5;=3HP6W#KL>y}}EZT$J zI&XCg=c<=@nh4EU=arN#qvS@$F)Fmulwe{{zJLLnqi&Ihtw?N2hOZn7D@PkZv*6T* zT*ml~(iQ!_e@f;BmYz}s|3;43y%2=D!;!09JWW2P68)lSJIvnhudS#q74^AeltDZ) z6j+7Z%-YgofL`g}0(XO93p|WX4>=Ik0a%Ti50KMQqFTa`(U*h5X|E0R7x*8cD)C$A zxqSG2TSHMDO<Yt@D>1nunq}wZdE8sG!@{SG+{&jWx+fJ<<-x`yh`8L&GWl}|KNvf+ z(<d8eIyglz!ZYnCtkv9w^_N>*v%}RO`>47s&j+me>TE3nutA?$&46(%DslOb&XhK5 z^0@?a|Jp&0EkHtTy5~E{niXk9SXwc*C7?$+uFU7d%B-l$2XK=fNXA5|Qm;hEe25v& zX;*6^E}G&}<Ta-?PL7Yr{pue8GIPj?P8Bj}00}*}ovSkC*{CMI*5hVk+)vot-PqD; z(9wVR!wemh0sHlcS1Obe<LF<TWsH(bbzoIXIdTh%)e3P!yP}`+{p9orgC;Y5Up=>_ zwNQrG-G<bIun-y?TO_nD?Y-ILE~gzEM(J`|KoO8D3PD!hdn4N2U$4cU7~1a8#WlQ> zVKED;N&42h?h8Iapz4gCnI@J_2%wS&F;d)C#KrGH{g=b;$dXGu>fy+bz2+^P{_W#U zv<HpI%`1v!v+*3ad|ZrL9$tO@Z4TLgx}a`d0pF|i1)}f_%Iz(CLNwq}kcSJJl&yKm z<cZXS2f1WA+Jkbo+-g9E<|#)q)M(lGL3UiDI~_6)nJ6_hZ5>IW+w9Ah3ZN56Hg?)6 zwnBS}ZY6oHSQl#W+BAA&(WleRio1UsjczK!u0lW|Te%^{95yNVg+#M<jjXdrBOFNn zp7{+xanF|$%vHY@fTGXuVn`Zt$WA}TN;f0--u++>N00l@ugnBEO&V;(Tj{4$>3lHy zyzqA|(jk)VJLMkaAdAmNhBWH}{Bh7k&5ToF5ismvn`t##eid@Zu)fz&-wcRTQ$5j1 z$0;Wvt!%6WzGWHEYaS<nFF4pnq;Sdgd@UnCPAh_)@8QSt`S;|Vx1K>{2fwyMko^9? zAuD@3s={s<Li6u}QfV#H;IPv4B|nF>m|B<L7LfFrIAtJ{AOf3)08_-h@@=|ML<Y7O zJmIng8+~QFW_AF%kLNKi#m%nh)yY7lr+Pcvgs^U7bv=V`#XSW!5{@DIEeI-H1RsUd z3Yyw_3{1&_U=YkP6jWPa8VLO_6<Wy!sH2e|+7&WXg@KmgPM^!oWR_(eaLAmI48ue- zNvU}p^Bxwu8(^VZeg<p(3HrJ(KWJttb0_peeJb2pTOES>QwUx0GTeOoF!}H<TR_M0 z?FA(6HjrH#a*$s;pbaEYo}ePsz@N*kXzuZ?h8_V37fcxR(uXKa7M1wfSEO+znXH?q zYDhAwa4btMA*9O%o{<jd!lnQTts#^OEYfYYpOlJ;zd{)T{lk-<S8!Zi${{kE+gpm= z*$x3;tP+~$Yzx#dl~LKIYSe1v6F0ozCq#?;z#O2*I$o5Kpo7!i^MyQd5t}>~HKK%* zXo$)~o2W{W*=nm|`O=4TQ7;eIFP57$^Ms3}YQy3qd;lp;`TA8S&X{IZrLj3qnZxTF zjJM5s$glnzpbV~@BrjB)KHQ@WQ(SaMl9(JxLj^T8_RUs?nnlP7;M4ZXU=ko>?2OlL z1)k-uHp9gCzI+gS$-|;9AquF*4&%A>lbiwY!Q*Z6Q!co}`rm8-HJ2<Av|;$eMWxP) zMx21nUDIMi1%lUz(vz}Ew3@?es%h4Mq$Fw_0HP4T?SI$g6<QX4st4%N|FuKDb$9<x zO&x`g{<uKnq6W`+N3NMD&x9EBFUEjS&31Ly_YAz$mUL$2(YMHti0djgfa+ouF@5^G zGDzE%N-`v}@O6~Qh!`nZaP4v|;PJ@U8D&`ck(yV*U+5)OR|Co(C#n~j<TwTq@C=Yo zd*wl`y?jJ{?;C-j6WyrBDQ!YWCnUc2-Q{YF-{aY=F6Yu<GwJjWzRI7?xZ{*m+*D4$ zc*Ifp2qVV(5k<m}c{*^^hpm1T!o?Q90xlN+wJ4WAc;K^sijOXhh4cq<{L~(@c0(#1 zl8R~;Y_A(?oiI-xq(k+|Lp!KBY+z}(+Y@YR_Xfd2WyH#4$$x4HVWhlnqXv7Kq8whR z{(5doNB3kXGSioBF$I^jJoEhKOzmQMd<=qO;>Tf62LK_EN7`h0TB*s1XFYKo*j)x5 z1}_6``NUT(P6)abfLax7mLKe;lO2^R$!-0L$vr0g)8j)Vlg((lE<(&pwibUtt+~`D zTzUUWfkE9d&BI2RS@8gJ(dtIjXXdU&phuah==%@T2y@UJ_pTkYFyS{VN#q<daT2}i z3#d0$7#i5&MJ)vj*R^syR{HYj9&X8y&06#YCc36QY-1Ot|4`DQDtz~0r;{hPNzat5 zO5+oXMLrFTiDjh2ijLQL(Pq`qut~XEzVf+yxaB|-5y$=7r1nV9*Gy_;#;Gnzouk<J zl0SE|N^vpMEG4i?r+h{F#o@wRz)!97wwI>5Wx}efFCbT6ztGcMuQFYOwH<kV(a*hv z;?$REU?_v*1kT}tguJ3F{(&6qAeuk%-^xF_;h%eASV<;u0WqRH581#@a_~so>E@Lw zU(Qzs9C^KoO0QdjkL(wR52l3>fbPkxj+X`Klos0f(j;k<CRV+c)ZC2IY>GD1eoWJJ zm(seC5mU5Cpm_3tOP(Swfj9CMAw3xnBWihC>LD+4)A>MU4`N0SC0q-pxA`wv1R061 zyM-3!0K`u9L-~NALuVLG>gCI;+C)ZZK@mU~Xb<Sw1din+)yp|9nRyuO1F6`_Gz6ZL zM*8>l1S0B#cic+Y{sA9*M0Y{bd-rZ-c`<Vb9}TK*Xi3G+xY~XJ1s8QWz{5o?14I*@ z=am2z5PeSTG_oq8FT=yc2o2-=On_nJ7h31aL-6}YDA2Aw5pHHxGhz7UVd-@AgPhpu z!VIA&)f>@P_v^AP1Ws!ksfH{n%L1#Q_}zMHE(ln^uV{jDznZzGH_ZMog-FJBo<a`g z7BlPBjT^)+5)q^GQNIH=i1V$gGj!UX^0)Q6QYdpJLTnb>rNz#K5@2JE7Y`=;LgXwv zv8a2xJ2b6dSF(sk0M)CkP@XQf->DDk;%QL*p=&1%K}(J_`DD0V!Z_$r_kx{}h}&%9 zLdurS()m!u+PvDuxT`%QX_O@95+0>o21;K1W1Ho3eE%<K*94s|V+VO~*r-LjP0Ujr zJjnI}XQIikZ|H{ocjs;J`ZG_Wptnd6X==w+-YehO=gk&W0t($!Jr02b$z<X(N*&S- zoYLR4vINXFnaO>=P5y<9ieWiK07=XGIhR}6nWjkbRCE#<F<wG|rY2Cau?~zyNT0m^ z3tbI>dk%<>xllSL;-T>D$57&g%S=@qMOtYRuhe~Wvxe8{t8qs|89XOB6Musa)xZhz zf!tE)!t8v8>mTRHgq&x2xSm$=7s8rrrWo3o#w`B4sI;dO?s5<WAKp`Xj-=t!jVbx< z6nzTa%hXwXm(fV8{NgJ)ihJQpOM~0Ra1>Wgeh$b0xpE{<=g>mM{Ej6rf8}__pU#Kp znPVGvUeQH~xpJ@5Y+k{CdQ~U#C{E&*T!DIr0Gu)5=ZDWA_%PNe)UxYK!BO~hSR++0 z3jTEe%@dkTb|WE?pDn}>cH2Bv?#9ROUg1%Os-_X4iYBed2R2uigDDUK$MBngz8}-f zuZSxz<$8XU?2l9<ra?$Lc2#r6&e7CL$|5{82u+BS94WB8Q>?-8Mw1x>$%q?@;7=Nm zt58!Xz4t9#5Rl(I<#A7>0F`!lgGk#HwFu+oPz?bGvUUIhlkpE>Uv!<AQ~-;SH=5k2 zk@*i6Z{so#j~zww6cc>%>x6CMKM4E&Z$J(<N!lL*t^Iwu!|V<1U*rh_jkpLHA`}v4 zt&o{e_oraau_A|D@3oSSlkMMk;zd98uQp8fSJl~k)XL@wTerMJ@B<;WpNWUI2?j&q zd(3p20#YL~w1|hKL_6gpuHt#H>;FY%uAnlDY2z{;EA9)>;OacNF|)R6Ny+`pm}hy! zb|V(+?9$wUgjtf26I)D<Pm3J{n{w#gTv#2r61)1aAEorK4RQJH8R;gnSch@Xm9Nf} zrFo(#Nz0e@o5d!_*s3NwQR&;Ft}N1!&QX`6Y<Viqk~cQ|^OX8AvD-wW5I7!mo6t5* z7-otJ5iApYh$js&<*M%zi<h`H&C1zCdn}_=0!j=^MNx_SzloGIjwW4pz{FWG(RWk2 z*+Za3i(0R<=c0Mn{W`owO!fE9k%TGgHHoO*@|>m|{-k`!BYN?PG*kY;p~<W-`uLs& zeY(ljrr1bn2yWsiyD*3{%~4}jhRCd|1n6X$<;b><E;zb<#7VL*C$Id9LlM|S_Bk?Y zt>bjs9$O_dH-A(ErC^{~*4R0hQ=Nk>PbA}Io($S?cu18Orvg7V@|Yr20J><oZ~diL zC2wJQuO!asp-678zYSs3i~9<22E8|?QArnrI?zU%ZF9DP@NAI$_))*?!p9qRsDLoS zsG%D;H5ds~`Al=2hz~F#lNQ3To%M1`>7q*SH?=0`6_If>ff-KZ_*`wM0Axg(w{a23 zQPJK%UvX8YCHLR{6b7iUE&l?<xA?JTdHJ$3j=X01S8u4r@l@~tdYoqw3Qhie@)`2g zbN9<#L9~2(XD1b(Le<eZn$W%K4Fpq7+d~vwMx<}0Yq&w>tMYkmuTzBe6^9QneKQ;s za&6U3L;)(cJ`0q+@uw2`V(klWn^&j-{+r#A45Gb4=MH`0SqDt(I<y+n4$ImG7t+DT zheDm&ybEUdr6nil>PpGTVH&WcpkoPtlgQgquad8u_GfIvYN!G0(_%13&VX<6bebk- z3`MwAb+r5w!Hk5l1=K;P^(60wtQ#<^oDs@jeTIu6EjLhvXPhv$LMHcbWmP+140P@) zmvgB@cnN$=3K0>1H!Gl|%KWsNK|6AOig|(d7AfpWsjrZRNj{A|#b{ti56Fxu;-}0w z?tkt_J_U!0N#x?6w?{|K6ayjJiJ<!^Vz7<}hK|&A02}5;c~OI>T0q8G1sT-F`(d{; zi|1#Labh@cNFj#VwYrNmrGq#T0EG$5m^31elbNA<1g3A!_DX01RGlpYglI~hp08(g z(ZZ`dT?uDl8iuEQstjV}*lGK;hs7s+x|g~alQ|xBc>WFIG$36-7E>kF(!{wrBFDU# zIZ7B|N3%2v9T2DJl^%CujC7*6&!k3pWSdQ(abU4wX9sSASkTGUNh|9Gr*PCM6q$EY zRQM+Yk7LLPw^lwb6B3qy74#nKVMogk9r4#vXK3()^ut6$js!(wz;lC6JW}%#Svz?K z&;?rbbW!b*-XEk@)v|DJ3U_L3D$uJ5nGGv5V1GIg!oWF_k#23kOlBy>4anVT4mmUc zx&=(yIZrymbO9qe;-aY>n`eIF5tL^bPy3&CBFfROks?Tt{E?@#XSb%g-T9ltnz=$e zr4_;=;smdRi#_`t^8L|aMSS+m7d@J8C$?A7@m`VU0@s`fbc$xqjt&Evc;$m7xioTF zjwbcM*{v?EMslKM6j@z*HtCdPZo=-F?O5EnDl*!KTBT#|$WiDRJ)W3X>)uWlSw4gg z7<DBN`ieJABALp$%gAL?$|9fKj(Kch=q}@HX{t^oP!+4#KZbI}ITL7#Zaj;rsBbVL zkN+QFvMPDvLkjY1I(PaDWE}CZD}z$`o<}gi>f)5p^jHMK5}_@9*6FU+VC2ea{8U$k zZP8wBsP5VxhP@ky;Wtmh37_)<N+j|FC;iM0*iY+_@QdrH2rc5<T%%ArU@(ryCVH2$ zHSm2841?9YnuL2%FGN?DQo|e&1LF9z50H?KtZ{=ZpKpkcC*9D=1MFxrU!?j*%|7md z8h+!4F%8eTK}7m~TN_Y&n4sv?!Q8E{xHQ~^&!`(<`RSuU<5%O~OM(?JGG+{Qm0-a8 ze^jDu{g_KpN~+oDDPnK=T-8(IClXctaQf!jwe-z$Bd6S=3M5e+EKDTs$+Mp-;XKF} z6WK@%J-@`W0DQjO2?=!ejiIvR5$&)RP1jQER*XG?<MOzf&bg>!muUMxzKiG5D@|_y zj3qL-X(^sTJ?B#zLMJe#zEEj*5BjHkuwQ=W7ATg=I(D4&-?uyYHuaPu+vFR$<k=OY z6y~;jL#|SO=HHho0wmwu{@`=9f`mu-vbLar@X@E06P1C`zs#ag8o(R=sBe^}m!u7w zZwZX|68rtOehx-76P*BAe5=SWr6(w`(~VTW)dhP|{cFA;GJeGQ_e*Ks(+=5|;VWQ# zQ0-4q#UBQK@PDuZ^NV_J{J?xZLfO1hwynC_i%J_UAJ*g!Fe)zTYgLEh6~5h4MaqW2 zQ87eXHsf&lalOW)lX;S-%V49oz{6JmSYGybUD{KB8bSK(a9<}VuZ>%vs%I3<R88bG z$#=Z+Ir4&{u_TI0eAkwbPrjt?Wk;|bdUzkr)*k+bhs^G&hinZZU{VuMe9O%NYOlnT zEMNpQne>5pE(O}D6*9Y$cSisY%oO?pOY%P*Ia;shF2*MA<rpbg+9amKaB5(%R0PE_ z?=!!1c?g3<7Gs!2Rboq4nND_O8wWiwtMQK=?ZTt4r$PEeyZ(ezO&Y9HE?fR*b+HO8 zXQ^g82j~#a_2a*ncVyVDG)Wr&6W*Z=J5ZKwJob{ps>$!0(xG>wmf$AaUE9xwIa=7w zAyz?Uiw~X@+PYNU!D~M_&Y^_M4PRK|266-P0I&O4tqmK?D#NA((?mI{dVMjf&plv$ zMNSB98a`W#!X5W&<h9HHPXDKkKfyqWxgKI`Bq;K`{w32G8V9~@O9(!Uvdk8g4T%<U z{R0Kk&5`R+^#L!XnyRKKR;=%na!b7J4tm!-upf$Jwf<I{AboPpDgr;{cP)?jL`B*1 zF-OP308BxLEdGu|#;?_4W^<>@_f8=zils{YA41^Dr8xA7PH9-&_vA@C@tHye9kUX# z;o>o^rAQ+Bbcz56x?cH0-cf5BToaC|c8kV^E?t;lw(KEuZPo|Vq!ffdR?_4Y0{W43 znaq1!O^QIpk;($(UGcd#Td~jVFl47{GJlu`Vrg}~>vZB$_irMR#t_Dykz9kr<NA#J z&0HOot5LqV?!VKd(@7NyEdl?0(6M>;LR9>O=`*nsKX?Z_tNT{ogV9umCKsPIZSoV9 zIMh#_Y14j$uh^kvNXYB1P`6<gP}nGvU!-}~iVZMHl{L8-`xkjHmFYIU*QH7D3#%p( z^e9Ux+OA7Rp&fffmeF`$k0^#zssidA;3kr});2ytc%+87W1}N;O<Y9f#Xw3?4ES`O zqhHbNawS4;c+$na97YlK9vF6M@8nsC|1eD#TObFbrxR&M{c<Cs>(3E^{`?PUr9dAm z@?}rZcgp{Q<spGFglQ>h5UGl_X?WQ_>-mCO32MP#$SMMt>i{AC*S4rWRWI^e2Jr+m z$NC3o)%aDDD*3@PQ|V?I<{p+^>KNkMGg}LsC@#2wa?9ZiLAiQW3$|p%K$_{^4a!Y% z(Lgqt#Xq;Hyr6n_r_V*6B=tiYP7?fpWuR*z%3i;_5Drc29xLh?tBsy)L3s_IyddV; zQ7hL*nx8sm7S{J9Q&H7z25eYx_Jr$&44cJbq46IU1<4taKf^w9)R}Mkv5jT|f%6VY z8#YUw^7eQNSd{1rN81AI!~1Qu_JeM7DPf?HEHZh!8MQLD-=t3L)6IJ1$S7LebW+yH zafFCx_FYvG#HG?Gk%|R%B3-%&{`)g~3xWsICR7k+5D|w$Zc$|wbO*4xgujI`Fk97F z-|*K=75m}z6pain@Y6_1Q1u-nEEG!WFfR6P=&>4+Cq8EB7ip2Pf<0!W)Wq>ohq@p* zKmdB@=eE%3=*o*(CWv4IDGHiOAvM4&|H6`nF53<&I^J#*Y6u(aRGP(D@>HJYi|0>C zQz<jLCv9<G2{i0}<59livK@A<MsoA)=IXJasFtx)sZ!%LNDM225?o3N2EQ@Lga#C| z46YwQ>5%cUscas?J@i}F4NRsK!^itT5QUn3$Gx7SX$mp?wKU(ZA%3x;7{gANFQ0y^ z{OyE|1zs7-3E2M7=To{<d!nZ+FLE{3fHq@Pw?Yu4$lc6YY2k=c(3n(>YLDT=CKH;1 zE{q=VeAVeyHsQW&yoCJCyPsm7K(5k?Hr;s{Cm(#%yG1`}-M-dO8|bK=uuY{OD3Bzy z0aFoh{8BegV@T2kAP3%j5%edZVW{&evaN}mJi+8=^L~Y{3wheA&k6}ElSP7og6aB; zsO5y9yXLGS+Lq*$YBmt#=9`xOh0KZsS{IgJ#S@+87|M0YMTyI;+ZSY{GM~$}ssW^L z`Y}k?Rq2dMvDn(ARdise=m1O{E>4>EYU;IpA56ztww`o}79C**9$0RY&m0vg;xGx{ zn^NWlZ)ydx1eWvmn}Mg!63LfpbPUCub}aAFB~Pe;oB73(Vg&#T=owk8uD-rc8$Hcw zd)W{F;#f8~Sb}5Dfn6&_RcD1{#j&n)R;G#ych%-##iWV(_WdH6P&$LSvaeJqmoE6l zg1Q%z_|p-v!4;+*+#v4}qrR;5E!IBg;J6;#Xet{uZ2?_N{0ckIM+`!DhSNrO#`Y7B zvJTxB!_E8qaKc9Z4*9yfkCz59PxM75F49ujvGxW}C!{y9DG0%tVd-RLun79MuD?xw zoLIk(XYy)QWTUDF-Yqk^obYFIY43tJ81cXSXcEH0<Lvgn$B!%FhocAflmsRP#-31A z-Ine1m=CpLLNT6%{I7h;Ao%5$u@r@EPqos69{xH?gPlc^Omwv`1Vb8P&5}x$@qKkA z%8shewlVmc=j=fyvD7m7r(IK~{wS@WT<m<Qop2~Mz<(}zN=x2%u+k6SSpAU8Sa9V| zqneT%c7y<k@+iVD$#W}z_^4g_EGC)w#j!kQId5Hwa*`qeE-64p1Qj(?*b#R>%avtZ ztIXomZ{)X$^(K(mqHmTLNP4kU5DOgf%c9{jL-2bKa21>m3p=hnuLGGIP9ApZ4$X#C zNzsM|;Vr!J=hP<8)0L=eJlzSg>YQ*YH`}my(sRnFN^IDg^viNoU^wYf4rQY+=U8D) zKIew>H7P(-D0AiHSXACY*)M$RSx*(KX@Y&PjJ{|Pq58T~o5mNq{_LmB7D~1ep!W7M zmjXhtoyT~DIQhTfHl2axu5Ya$%c%01+~{8we5K+bv66{2`<iC*-0>ggqZZZdrNJxc zgq+Be@x18n-Xyzta#CLW?8juhDkkPk-L`G$W~#ha0m@Fgpe(nQE-01)M>_VPvh%KB z9W`nEg79p9nl!9n6u31gs{UbdjzcRE)OT#1|J?Xn&$sBNuI6CBE}5e000nI!-XDfl zSo<7IPYRu+^^<HWXq9M{QyEx}(1pvt-TP`AX$BPNjcEIizEQ2I4f|N)Y+CyJpf#w| zbX7Sj@A|yiBh>YgPrCXKIwhF00vEHbr=3V4_IHr3One$`tW9|%OYj@40}%b^kHa&X z0QD4c&wiW37Vr&Wrv`_<;?#BuZvOrsJ8p=Lvy&+q$s5}!AR#CI{EIfNS=~QOE1VkY zD(Mz<7J44%glmo{+h)RC&IEMVqdZugGnHEifTJ3FLRBNwPwN+Y;kqNg@zHY&RAobT zO8&TbB>kmWo0M+PL1xm{f$}c~aJsk2k1T0_e27=1fH)<Zqdb;)!n|aPens076=x5X z4RJ-CiLSXcGe1YH=|^vTQGHlGl<Vl+yQx`is@&EPBaXsTj{gq6<nC@6QYU{+@c7-Q zks`aD37w%j2w~_GpP9B%L>^X`4aJOt8LtleNT!W4j7W2cfz**~t)=jd^4d2%k6d@K z8;=}#sD$Z9hlv{$qFg@p6mZ3Mf%Ak<BbfJKC2TQjq{|%!^*v{_t22UwamSxfd&}A& z6-tGV!r+oiGbjLaq^TjY_PGL)1F!{te3$J@wp2H|elB#>`<y*v65*M>wv&&heb?@X z4uii6g${I9WBcWArtPzJu9f2CBdFfX<b!q|WP#`cyU$W;lqU6jr1g;RGN@E-^Rf`z zdGk9iw>K<K0gWVzloM)gs-($_|Mq!{^Lw%WLJZSn^x2n}&;9pLBdJPM{iqmQN{}NL zGoLJS7BS>#q~CNiGD6UstLfTQ$U3YVt4>Oa^GrfZ>7a$7q5t#&p)VP3+)O$0J7zt` zS!<GODym}6L$XDh3#XC5`*4nXjqr2{lg{mqdTzj|{L2uVx|3!Z`j?=6lhFgczR2q` z_HwFDf%hlKJwi0s&F7MU6R;W5VbEjg-r-cFF@<4eNCg4l080b|L=-gfEiFAJYdFQg z<dgizpg$9FRg83<F(@4gR<;0X6ZzxE3VTA3A-FS{Ls9BNWAHhVgC!dcpa~&?pZJ%5 zTI6=2Gi>AlWw^bSjaQBfPsaWtmyaBFMCf%<8OT&re}Da%O;mprvvi&47^x0kEMo1< zUFJu8<RX)7COH>~)Ng|9F|9t~O#g$6I(3{fv+_Y@4{j%aH@+Xu3*fn-ApY$m=szdM zbRkyfM7?<{jSj>Ij><8@xv0=U^|z!%F8)8&M{w0qOb}Fgsg2R}<1PdJZBL%!8(Bxo z)NL>y6FbE;6o@+71E-m%XvFzB*w;95-@Gy-Ps-Wi#7!1lAbhkDIrAIDY=>O$75!j} z#yStr>l7n6`SrJkPre}z{i|!_3sjfDk_?(9AMbclRz<~AuH2djl7T0xLhQ44I;O)a zKg!9&xWgB;Nz$)yXL)>3|69RVeXFOS&^->z`;-udxNm*Z5Gx<$PjLxRJ#B%!q~qQW zm<8}0c7N^ptFG#V%KL;|W3M(OISm7en!I+g{Nrgqhh^G9gPAxx1I`A9seU3(5KGJq zDUxo2AFHDtxGo1t+_2~oN@X`7KP9xET%AwX6?GxZ4}}JQfsrvRR7Vg79H7n1T`?Lu zi0sM<$TI`1h*2V7k3rEQAK4;ki}xPuij6F-xV)tLj7e6TC9cPrYr@-&o`(FKD(HlZ zdk;ZyyQLT|c*^hXwv|fo(!zN{@tdhx7?hJdh12==8IO=*exL7!>8_tvO?QhGk+OVC zhAley;4M-|Vhw}a>B;o|0Of)ob&wh}PvMicX5Go<!A_l*k2<*mO%e9PRs7)<msE^3 zIVZKltIpBmFYwHxvhv#|baPlx2A?hNJB*K;uWta!Qu%3fe*x0&$~_smFDDnhWt`>2 zze;gH%DPmew->31=g6pxF#f7aNL~>Q(~&m<gf()j{Ot{c3tc*XJamqNmRJft&#h`q zzKdg<@;WW}tXAE(RnpNqHxz_^C^`a+rD4U7euV3!m;DLObV?D$xgA7N_hm3%956S@ z_{j&`P9I8$H{ut&>Sk%eTPxc2WtA!aOuE*m_^w@PQH1+Pi)NK5xf%U8AM9iZ+wBA= zM=*pN)BpC5$pI?M(YvtSs=(LK<IkS2eJ#V1b8cwy3MK#4<qUDjlsr1>I?x{RS9!a= z&S;_PMmjIEs3z*i06!?UqlVZ0F~%cL|D39sO;@AW^{ZAxM0*&d3rK?jqdv^|XAxl8 zGmbQkR2z)_v;`&IwJRn<412MQtROBX$cQ@TSi7>$mE{Y$)F8A;l081|uO-9EQO@f_ zkcD}K6^!|CRR?|Alb%ljQCrkaTp8FdapJ(4%^Tvj;?pL4S>hy7+<m5NSgk?LOcj}7 zG*H9!R0(I};*ychsALW40*9fsdt@4o(D8l|Zd+egV+9&5MU_^_m!I@+8E8gHv&9B} z;9l3tqd?QiQz11sY26f_3aR;t#iAes`N?S_RjT334}bOpYFbvN+i*;S`2})x(K`rD z)Hfd&ajiC4b+vp~UxS89v*i}FvbS9qp@~JpGYNaF2~77v-6(P{MIC}-prkOVC*%di zRkeQEU);ZyB2^jCZCFKhus*g>sm%EIlB&zpq>wy1ib(8mDo`x=?Ugw|G(YYw@B4!P z;HCAq=8R(LK#<(*rc@ctH;fj382uYn4n&<)Jn)UoOQ?KCjYD~Dy+g^sgZE;KKlx8J z$t%|NH{<DyYlxHXYAx{YrMo)mYxxYkFPe;i$SfOft$$PBtS@WewU!z!XlBgP?@~sJ zwSOl+lrP)p40H+5L-BXo@R^pH^a+{m_zE|HYS!3Ko1Gl?*BxJSYXeVj`neP+b9EAm znWZ*;VInbFH{JDPmN|gIL9t){qBs=9OubZk1;E!YR=`>ZsaNI2Ji9}QVElKsL4?3T zbzcU3s<I!LJ(wi1;v@MhMf3W^l|`SLl1KM~jQY|i(C2-fjRcTJv83Y`^<~Ta9Lzmv z@?4ms{N{jGbZkK`<e~|srTgR)Hl~UJp<Iuic*}MjH*4p^ie!^4bvk{otXq$GR)Ug& z))+#0nF5d~l|u+OoR9+dW2iuPYqP#CIQ>+p3%hx=uG;lK9ZWPuR3d#<U;4_%8O%Gv zR#0U%I&M{Atm8+#Tu#vC7Y*Dom>{z1L?)<UmcTg#xGWi|oWF1(cc_i-BQL80$oJKL z{UJ&Yh7YW6Fw|#jF_CPB-h%;hM5ShAQp1MQ)cxtQHy!miJ^?~&=*iqnG@~Z)SBnel zb(J=OOEG>mufB+!qIx|Cs$0Srz?NIJH&+DhO&V-zc(9Wv_}AQ%SIIHDgm%JIBI7dU z&~X(yoRqoZJED6+!jY<Az35>M{ix4ph>hR5G!|t<9$JsOg2grX|82BZoysvq1?Sf? zqK~CAEi}Eqk0!k2YraaF7&rE`Wdr9~=6~T2{xQ?ZTq1)^oz@YPP?242C4;M%F+&{n zP7;k8rScUS^nOv-TAf1ZEc+I=L>;{4bJ2_fxLF+Bte-RiIPfT_LN??-R8}nd^@~6p zk$&_;#KdSk@I_w$)9%AFua|zrQZLb?u}A<fMTqdR6-^iDvP72|3V<+TTiKoLjNkX= z^$&c|olm-cHNR(XkZKGY-K^=5pBUYy`y%pWm~^8$@zi%2Z*z4uAfN(x{1kl<<X`$m zn*4E$Fs>k)Yo#7$<jCJMfTo~+a>>a|zcY#Su=(_k19Gi!)MF4{N3IwtwvXKeHD2}x z@Fa^zrYlsx*Kjl*kfPt(DYmYx#osB$sA~B&3A|96&v8f7R7O%z4Mv7rbnIv`X~@+) zz&QJ5E<{iAZKs3!PP7r1`FmhaG_q78irkds`;J|jr&*wkYQIN&X;-NV@=C$teLLzF z+jyRkl|VTOJSd(nM}Q7!;~KjB+o2C>0`sa#1s2|l{AUv?Ot;(%cUrX`k*|y(Jn-#> zD(b3@`}8^&zArDBI`R40x^ZGeww*z^>cCdhLKEDO9iL4-pbKUKYZkn!?i2Z{7k;YN z5c~AhM@S&%ynAg_bLKr_k-D+`hU-286QV^za-NTWg2lmp*7oqkB>c%-H!cIy7fs6n zWsU-0@LjlmVM&H|@?))5lR63vAJ}{n%V#A{FU8=ubJCknIMhSZ2Ly`T9352Yzi(=h zu(VhT?~JsM+bi3XM&J}wa*W0us(P>G0e3VIG>^O|kFXb;_UWwNW#Z(2wM3JY9h|&5 zAEPlcu%AR<Cq|J+j?vqUH-ssVV}+p$aWrZEvsU?KGd@J%GyXl)cPqxWFc&lSEOA^> zRYByr_Ra(XER}kv6;D%X$Pi~nKr1LeX=>V5&9*#T(E%(*VavvMjqf<E8jo~94K`fU z3tch!_xCmziXB{c#ZqUeKu)#3{DaC!fg7VhLvPfPn$OMfqu$|Wc%;{jZbgKf5go|1 zQeTy1HjJn8x7IKMQXv`Da0#iR_-z-}Ngzxk`+xHBV^^j0W8GpE<AV7`8b-AfOkRlY z7&##V&6#<=OKgSvXQC`3PB=RoO*OYFw8+>qO&WY0zsy$ln&Rl%et6W4Fa$E#AS`NM zRwW0=L>_%@OB8*&Zp_iq!~#tO$RLN@?)F<enk$GTzUrj2ck<?<v}9W60Zl;)lu5CW z3>z|c)vJDgm<=dU2#omOYvna1AJVlBvF^{(**&v_Ju%OjG~$LlrJrd;-d+eY33+f7 zvP6+dU<_7lc5HCq>5v60`=fs812)E#0WNb7gxZmECkD3TaUJI&*=SV-`X_?2+7#=+ zvRWdNvSe;W9G*CsSefH%k;M%DdkRnOx%+s=@t)rh9hulsP@SMS2;nN1<7iA9Nv#z? zT~^P*GPF^B6R<t;$T}O)opxIO0-;}}@qEjKnV3W;34j(o!b4ykWpK)pFYYzYRhnj& zX!mdWh||Jl3WP(4_XNVK*9eo8G}}~kjYrz>pfY&!|4zOb7>P-#7Wu&Cb>0-?vCtIV z6#R5^jvUEixv@>^K5V6J?r<`_llazy06I9!RVOMJmJTn~{=LL`MELvI{?2&Baq}I1 zO!CG-Nre_F`W1Q<42j7xRO#dGz0C?gARV0>#1|;@DZ!^$KKo&=kFP<+TCQs36ux*i ztPK$$U*w~^^^XCud0d46k<$h`9+QF1_z)G0%?(6&ez!@XCTFjk-!9U`KHzgqdspT( z<nNE0WUATQ&7YOv4Onusl{Oq~_EoEJQzt){*Q{(LLsQ7(zCU@u!Y1s0I>mN21L`(5 zT3jIs0Ev-p0ac}z29Tkgk!q$Y`PlIe%!=sumW`#qVF$+yiG3+5z-(TciKZ<1|AUkq zD0y*grKx?23f71X&yHa1Ei9PoqwRR$pv|HBCE&T~Xe#3d7z<QtjL79j;7X4DtxO`x zOV~^0Jx!d0E_f;$oB%wF$|lCHa+DGcG<S()y;TJ-`q!NBVT1lI)JmqhN7^6n#);fN z9tZjTtCKcI5@hJYk)ZqlUCZ$U{iZ74dK~rxo5whc)N0s{HQidmy$yd|ZKxQ1t0S{8 zyA+}V(X-*&ndt06M_jS*3L2l8EMrHc1BJ#SyeJ(JRZ`jX8ox+E!4%YC)+qIALp_L^ zy={q<%@ZB8I0uV1nhdKLn{~>2?JB4CbFLx@3!kvf_G{p(M>;DXGPy(BwaFdY+39b= zeyZLew_qjeOZop;jteYG>fLsV>2z8qk7%blNmJ(Iy3XlNtauBzr}T%hYr^+hDwhpl z?f$Z<+wFN=8|oN@KhS|~<#@bi-anGQk5;H2wH^ShgwpZ4<1=be>b@@e_9^i+<AyO7 zd)c4T8P}6floHLJ=<kYKFLWT}=qQW#$c3R60+OL!1gPkjQq%>BPm**juzK5i5>I5@ zrZ83psiNHe2gL_fEDFQ;X(UDG3}A`&X4@_N9fSt@wAJ_MezT<1X1GO0A_T){y8AC* z{lGhxZluVI9{rph+9zlgsYj+06-OlrL%x*(DPeFTzuHBboga9${@8n(y0=44k!Qa9 zBRoIejxlfJoFaPb+UIl4q+WB)qoDy!j&aDThTq9t2?+11f6U=s!`)04jn~$!MtmbP zBdW1&O5<Q2WoP}l4l(alP0$fyx|!oJ)rWj`2Td<@MY)E%<kLb3LPMiA_sFjp8}-1U zf!n=rZZV|4Ni~Cp^NIE1L%D%gcIKc`qrZhkYC4cLl7Qegd}+-_nNAi2k3oyMDT1|0 zf4-2DPMJ&fYi^H<SQ5pK(I4_`+~4jm)&)#Z;48a!X^u|lszR}?y+SbM9i#-86^i=w zfEZAo$*E_V!FlR2A9`dMhnCi)KIN-%7!Z!Z1u)%PAS?sOZ`TdY&?QnBc*JkaXDjc% zdZ{f_U&LNKybYFqs>Bsy0T?p=L$rEk`D5>5zSi!e@3^!U94FE9pqC>*;*N82h?^oE zOiLhtEE^Vy{Pwj1xg@d3C>ZWCMQxtKv2HmTgUE?}ZlT>!in=fV(9t&R!}Ib;7OCp~ z!aosaK<R}XHrjGQH5HQg7;5Co-<Tp1MJ)dUEA+ybria>AI@E2%c?h^0!6KzHEk+m) zAl&yl(z8eK`_V<|VtZM}A=W;4ppOtHeQDzp>1qTk4zs&BTEzF6y*a~e<B?G0(>;Os zU;B)-l``0H1;=pD+DSE3a_vTr5f>c+?jW)8JCw<B5U;<?Mn0LRFEe{P9EXU9=c8Xr z)6ttRGpY5EK_ZYQtPWp5TNK|20#B2If1X|X(Hw^ehsA~$3x<i;Z|t6;&OKMvD5sIu zGirOS3hwj9AWUqQ=rd7pzpcpQ2S#M`sG{O_@uw;QtYOR#z%y-lB`M+Vpor<o!HmdD z0Z%w1Q>38-LO*k-m;=EdEg%H#P@o>?{xoQ9V-#5(6xhOb8Er6lbZyZ^+)i$;a7mTb zYR;0N@GGv0A*(dWA8J){M=zNHL%XYmG(;di%b%@;Gq#WS2-D&p&8qeC<s*)8LWsM{ zJ=_u;`6LYNyz6n-H5*+YPPXU^{Pou#V~LJQngB-i|44qyPrgLT@Db0=>^-GDX38^K zCWi?Tb3{FR;MT*xHVriry~|Ttc(E(Zz;a&rWOIxQszxq=mD+6QjL4iAHo*Wh#S>mc z*sbFT79!h{*H%E9Z{Gw!Xhh|3TZ)2vZ}OU^W`oX8-_7h3s|2Y)-1^5fb8x|)jK+f* z^j01WRCnIyFrN>BV}U9Hy4qwN#b$tlBlnF><84RT>GB?t&N=-!&>#7d`^?DeLX_!8 z8Q!@ZAf-rFKtTH`&*}p)T{miYkQ_<PuoMS;7VqDjO5F{y_%w<H9<{Jds`|jNRm`xW zSud}uZ#7?|wpBGi8ivLNtx9^JW{3hC5)RMo4J}NF=`iKYl21knGrYTafkHY!5RRR8 zE;93mIPNErbwTY?Cj3@AhBpIJ5+def&;`#R+HTa$f^nvebkyW;HkO#`M+{)Tg6JM3 zLi2`nb;AHnJRTWk5~EB+tOEN&WNJ+b-`f^d<~d=g*bYdAgXlcZ8`2sN;m+y3ouD1^ z52{J`!t;;6n5i_yI?{Bz2rY&_uNE-tB|?o_qQQ%V6ig__TDTW=V|=Ahlp!KEiac5H zGkHHJ7b-uzS(ZvrKtc4N;XIfoavD$a$hyvbKBY58tYow14lu+u_sV=M=80wUf7}4~ z)CdOl$mFB&-#z2gRm?gg_ZQE-ioJ-$Cj@IpgsXXNa7cRXWv}d*=hYrKe;!Qm1wVvu zt64;{Px?hvSCO9zU%W$RI&!u9ZO*m9DRs#}rtu>ahcZdFjq|>`i!%5R=q#d-Sqetn z>-b_1Au2??kyJ$?gVBs~LB=L(1$il;=cu~6t+S6R@soV&GMP<@^Zt%1e@ADRibv#^ z^_)lS_RCcT%HNf=g;xFvC#w4!#FBLUr-+oqyu9NrD|OOQ8n%z^Kx9w4sLfDqKHDSU zy9E2gmS3giKIOM6y6Xvx=z?U-(`nc(a`l=N6(*5SMvk0CSR)WR_x^xNFLgh(nRS4& zGtxFgQxNtImp_0T6=x0iV(QY@{#*Y3ZzxSCzT)BnOhi5&gc$*~DxfOCI#C>E&vf+_ zB%W>4c*~$Hphvd|GzY7`q%U=~3C08}$6_?%6@_oor6Z}pwnp@Q`{FiwdOtj0zJZ3` zNIzmcnN8^@V71%8<+84m<s~BPN0C&L%qsG(A^QK4L(<zJGYY245+yxiH_u8&f1Zvx ztaxHX?)@17EY?CRM$EsIlMMMw(Ix+9h>>J02VU=T5XvpPKnEK0jTi!3rA}nXmR*4m zeDX`pu}DUFnx;0)5Q*5+Fe^6FA^Y-lJ{kyQ;4u?ye%ev334a5Yp&|`pz?GKcU8?b} z!VPY+W8srV?f4)5Qqg&C;si^^@BB>Yi(tW$hX2K;M}4~;u>EH}O!bsj9yb%?Y~5Z@ zT1pKBnbK(asDJf2t%gHKN~b?+$B6oSJe{|ZgyR?(KH3vQPs-EQEVB*{i#O6{U@}nX zao%nf>DN9mQhxf3(fGnWP!(DpPTRLrm1DH20{8jf+I8x7O=z}UwHfud$etFNQft4% zAqFZN`A&-NEz&0-!tq5Vr!H__J89Hqr(C?Lcd8I8a>%P(Yl!UeS;`}CD!wKBmXCdb zSZK@j@Z|RuE7U))y*;JgF>q5eaTDou3J+%V6xKt|8X|qPr}LnL_wvFbG3`bVj&SDs zZCL)=6l&#@r_uco6j)0!Lejh>+=SqOr_b$psFzi$k=O!;ZjDhKT@{3g){7F(_Q2~g z%L4Nxo_^S^^-~YqBm?Sb67aJ}wS}Ww1A|-g?ZsM7#mIIO0zY!XF-}?gHPAUk^)2+` z0!@-ZGBO`CS>K)7=OjTp2NNv^%jim6>=pgru5uGb<mjWV9G!k6^79|JVxe}@m`v<| z;8U!}r{_Kd$2cYP-fX*^<#^>?p?W`Al7XA-U`e-6Q&~5x-1XPlf$IoT$XoxYU<@+d zzHKmkhG8<ktamD36Cxa!;f8$Ux*FaUumzR>EVM^kNvj7d$E-JonD#tZw9={?Y(yrW zhd52_=FL$i7B5CSG_KL2Iu$Y^{fV+z7D$M4T~wf*_I$o<Fc(@ckl?0s4|`R0HQK}T zi^%?Q@uT~-^^lKn#joK<vrB#1&h{=QvXn-I;s#$eiU}g7c2=tGM_P|Wo~1zR!8KoS zu6+Ht24C97*yQR1aOYxqZO^=6hfGN7x1c&f`j@N>jSz`v-cH9`^M)8ORbKS5({WU{ zbtP0Us?Qz1a3(8{Q^pV<7{ppMab{@Nx8_7BTiawar#>m0G(KS|`B^V4v5VO^i+|s# z&effKuKGryVjbB9;M~A#(*#yF3T?!U(n>?_UyLTzrHe48LU)d#Nt)ZMc?kz-_t%{i zLRn5wW&HeAwz>qK#bkBG<!-PYM}FL_CYi?%aFh&<xPK<Ppsm054C-iO)5#C-cMFx( zp*&FB)LDICz6R7xlB5&r3b3dlHJHdAxpfa6fRO8iUpTaED7AmW7A{ftNfyU@QDp&* zb(lptx>){c@(*hc;!kq}%cv^Fcw1e2CbZQjU90k01EbT(dAWx|^^<bYZ&2yWl8c=C zAyKZ%9h9v>(JSZ45UfP$!Y;5(?)xU^o0v_(@yhY_>s*0;z^@>QH(-C3EwEpqgpo)j zvkI3moYgfRTdhKR#u&?YpLHoWI|2h4yAntBMh+&(bTlqyiY*ygVIy<`5L;_IfCv!f z;l(+9c9e+52c?(^an2m0G(_{anKCbI`RgU`4+fK$hWP#IPq{$H5Dc6$=G3daqd?QW zOog?0F=9Vkqr$5j9lF`*&pT<x(V_SR2|yjn`ZuqDSe8INgFk)Vv7>n0r93@^`=NYK zUKc^y=`Y7OjEaZ6tEB>43MTwpyLM?xg{?9Ikl%jLohZc|d3b9%gGzjkGW52g<s`n* z@WQ67(@Fw94_%#<|3U$Du<ul{d6fc8%$rn=vLsD81>I29*_9{Ot*k=TOA`Gc1b6 zd%Qy0tg-J*(uKS70jyHPJ82l@Ni{N%9dU@S<_pYiWWuO|Z-V3-UOQA}RZbx!FiCt^ z4s_1^j!G<<&c_2e1f_jfPy%=;B6Yh~DINIFn<CRV(b~(O;#v<uzWbLpt09O<mvn|( zCy~8Kz+|jq_(}*$^c4R=dWO_x<&WWNj$PSO1Cw-Y8k#7531%cyFJ-KnSPEH0{;lmZ zVU_4%cTV<1b4+`ch*DhDQpV)aVB^FYJ5?R_0L=m&Nh>P<Rwd_q7STN5R1LvQN&hN5 z!iup)-(tywy>c2SATY0Bk;I`3hZ8&b@arW?S~<?T&ZODR;#;m^cM2=~4mAy^!4Xs{ zK>r!p9Sv4RUVFr<z~z`}`J8@L--7-|Y)uF3%<Pr?M5o`>X*h@u2?v%sP8AwLB_;m} zP=%$=vklfyfL*Xf3-w;J8mB|)8?`!R677=eKx{wJF2*CtF!G@!GUW==hN#uKikbpw zIT={IeoafoQo+Wxf03!PS)UK(>7j3j!c+N*pWl`5D}5#5??@@8a*vEGTrCIQ1tcd< zC!T4KZ}PEJ+QlTRI}Kj5*BMI_L7L+i7eTLHmcg13v%>TJ`Q%bfpl?T>+=#TEl*RJ* z-JB<MJ?TARQ}K!k*UXn^T(B!R*qLvv@A-rLd0fJ@T0CYyAalK>Z%AX=-{eSb)p<{R z)d}Hs&>ZIj!YLkCAN8e-!%x~kG-aEp!o|Y(a`9)D>B+9MD*V%V+1)0xEMrrVeEI=T zNj@M4ujxFnHhVNAEsj1~o|Y(P!p5{JKyzlPp=wZMI=!#ZWqluECetoM7)XY=!BcmA z-5%2l*^FITV0h$@ZGS_}-B?48$EylXguIB6L)04bo()ZAXaDE??NoV^4P%;Wu;L+I zacNhw!&5}VpQBm|6Hao0V$`oY;~J#2(?V?`2sa={;xT1>dvNhGw}E-yl#-^p_#+B+ zpZZ70#1yrTlm1-*I3XA=&cL0|Ai^yi!=Ox*H6PEjO6dO112{i@p>;7IjyV{!iJ$5w zSW*QT?HFLNH=c}_(BcvIZPoffO<M)i!GoJRp6Z6HOh($tU!N9302j<^6YZzyU1eA6 zGAJ}C4bkTrcNu5m5Y3XY&f}{gMnkn1UJM1wnsja0Qp$XU7hSrHP#^!SMVbFOK2+sj zH>$*33wlKg#PnZ-ieSx07HawO+-9i615RX)%niN*T2I?e1hFIbHPceaEM2^?hC<1m zdRxk^$`D#?MPrRug(7kRct9ZOHgQ-Y6V6+9kb&-9aw<Y+3D2$9%fzW4)ELxv_8x1C zY}vuX=hn3&oZmOnML^?Gpx`D#MQ9o5Jn=0x^4Ku!&U3DAi05~hv5<Sh1H+-`kW<-z zQWyWX!&Jud+wOZCLClDsQKP)$hytNvxFKQG6UY)G_CO}2xyBkHE|OgYt<~aRwAn&U z7UN=Ufck6Y`4q!mK(TiCcpU~2SHz&Vu**{z;sQflu(RhQ&LwFo;&3OJErn_}L4RZ# z^iCUH#wd#FI$ZQKa9SfDgp|loI~aF-$T!u6Ds(rVjOtCdbL4AIK1=Hr^@P^WK%9*F zg<ie@udJ7)KWe#hRS^YFddL$1EH9jp=A_y04)xloPa~5nwa^oOQFUjH$aw`z^~gJ1 zp`clE_jLAvJ2aDN#q&?Hy&VEnsb?)J8E(FO%ZR7{!>z|i2TDs~v}r5g={RZ*13+@p zqN1OmnbJG;?In*U;P3;mX*ba5;X3SK`4mQ7z~^q#Qf{$Ptxd*e+NPl?&1lYGI@K;H zlJs2I9%*dG;5-vQ75xYi#4*q`HX^4yhF!YqeurP-OD&tM$qXo+pqWH}uXEX>$b6T> zUr!d%GpzeJ3yu+!9X6@S#GD3m6b=4Q9-YR}sS4)ZcCo3|2q|G+Xd>QBDM&Z#MK{iH z)E(-GQO*9XxUy6}Go*Md{}%`veYul-`^2Z=OXm;|UDbMc2kK)rKcEmWc1eXkVs0r$ z(H2QHi*Yj8-SMp^)#O(HsUIcjpa+J)2ArbYL&HRFX{CUuDgbP#@RTI>=B;6{1R0wD zA?Pub#40{$<dgodSx--zqN~8EU@5B4GNpRH^CW6cEL^q4qY+a8Vfhdu))_{EiFlY} zewo+3F9H*)jP{(@GRT44TT5ZWC;9j;y^-Y0)m<dUu#SkQ#;<8tB>bD$^bnr=4t5wU zX`uerjJ|>GC?dy(ZdmZ>*_dSxvvC8Emss735SK3j%lqifHidt_(W6`L<o02{=m!>m zIS+zlsna>wH|le`6J1ueCm;Tc7kLV8dVu^RYKr*80;8xeITn}M`K3)wQU;9eDRnAr z<cf#wXxbv)M6RDr{Eex*nZ^zU_Jdfiw6|0xd?=YB9)onilSfnX@vm%u7gL9atZ(c5 zb^{E5QG)SAKExjzWlrV;3P~7&GKX$W03q@=*rn09u}cfFR5Ob&8dO;&-jqP^VbKvV z#gG6r#1Y4sl?TM2ROYMCkTSMDyt|nBoHT-dyHmLxnH?fDo-<0%Y@NN`gbWAIonn&X zo`1lTPC3}?FGM}H0*`M{Y@srzXra%cVx=Kg3QjCUGXYER!Rs5mzA|mQ`#^S4q#(#Z zyb_X-gKaM~*?_Wjiwsg?A)pb!O92LKhaFY<1r^p1$eK_t>jf?*C3-cOK)&}~gVNlu zhArjHEJlgAPNji^#jZeGufdBpw;+JEWZ3N};)#i0q|_{DKT7KO0+5j-PrBkzbjw{1 zyY%p&@DzXdhTE|7NGa7V84jw>eK%vdp86?A_RNwK*+F1u8hG4OQcN?_zYcY4=vo_8 zOd^U|5~vru!PDl4oJduAKkNyF>Jx9w=Ajmh_fNc#A`WbZ)NgT@6EA?T>+K14OpR2l zn0Kta=y}u7h-#mQzc=85_a!_Xt)Q6~L`Kv{Kn!}p(4;UEd~tBp&ArjV?Q~qeoD$ua zS7Ron-EneWYYAaMn{Sh{@`Ri*noDmR7K6l39CCaKUBXDe9|ba_`17Mp`HHY)JbD?u z$LcAlG(be~j8*?m2`vgXob*!At79Va>u<Bd5i82R1vD+c=vU%Ll-5rwvdi`>km2M= z9_kW~VXrgfADS(0NPl?(liuI3v|aABB&}L=?>x7ol7wlKo2r#=a?)Oh_N4sVn?)d9 zD)+SH6%4(10^4B3UrX5YrhEuiEOf)r)P^EcveGFF=(D^GIGQ_`OLriuZ@~?G++0%3 zt^=#BZULB+8l2Jx{6D_FJV1)-`nq0qPtOL!I;=ASA|T*^3nCg6L`4x0P*gw^tGjEu zi(YEzWj4VjMo|%$sE7$Jh@yxZV{k(wQQ`tZFzT3?h!`~}QPj9^NxpaPeXpu|^!Mct zqdncVyyd>ToO=$e^9e^aNfUX@4ODS!Q;e&NRlAu1wguGT0W4{x#5(E3ZH(cfi;lB| zO4S+lLtH&>z0YW-mplG0<bV2IU<J}uGkdqd8;5bNfx0#$E9HrpWS;!?B_L|j$yxb@ z0ee{gF07Q-j@pCT;8A<9I%eK$M~L<LZK&y-_F)t2W+4LAyi>@vnO-17nuy~rz)@Fq zO$rDH%;WgoXnTIK&;{g8B;O-efd{tgnnKY}(Z>>Gs)!`83bG=}CORUfS*|HYpU4sj z{r4Ajl2?ZO<WJUMK8GLMPMt3_>%#8SB)7cnIkqZMrEFW(HFhWW1ml{{mSDaz;ZhSX zBcLA@6DaL0ze)~>DPq5I1D1jxP=B=}4}0eQY25W$KlGX~fw3vbRdD1ho>OIeda@Mz z2Jp-qslrb=dI}M35^2(RkrtYhel;sd5lJ3Ha-&1J?Sfq7#}6-;&gZ=I!j`h^6&<_; z>E?3ZJYSbGMSe5xI8Po_V#sS5tlERpi@n{!Hwup3b|(TmV{uL@*~EtDl-4BnpSV6p zZPOK>*g0A}`e(x@!HBdd)>7l+cD}<61xp=0!=G|$d`A(0LN_PZ4^H3qpo9(-q6AYv z_rD7U>Gh7R?{E2u_I;x{*baD~@|yCqJ)irg2;Td7CvoaN_@Q|2eg3dh7%KoKY@yQG zcHH|`$M#~V1wRz2?&Y-M5DV4%k#}Hnq}@o#Y1`JpmQ3!YP;kbKj+DGc{UhoIICQ$# zIDGxdhZYfZjOr)PKFk!Q9Vk2E|5z}X1gohQY==fivU6E^;Op@)&0ix?rPkil$U4|? zo#YaTO(y#d<@4TWAhr%gQ>1aQ7SB8RGK+TL4KJr?zn*-c=POw-STVhAD7O>&hAmqv zY$}WjAI#g^ew0n&q)1QUnyIV`nkbvXF8ULzvw_qaYp(VQry>legO<6dpyN{{n!@x6 zqkRZ`2lf?Xa<$z{-eC4XxoU^bCFGU3U`)c%-jj5*%De+u{PFTE2(FBd9$CF#h7i7D zI~g~U3QZ_b;__8?1jMOp67sx;TXNwl+iQHOe=;iH?xx;JF9ks5AMM0)=h&Q_J{P#| ze^RzG7}1anCsjv-V&o+-6|Zwz43<G)1N?KFT3<194?K&<Gmd$fs`_~g58ptDR?JTA zzUHz7LuIgL@~G@0rFPYykSv=D+}B*kt%_<iNbdzs8uDh74=prfH?~ls(dOinK-Md# zok_}h0VTuZ02?^6ABQPBkmND%X!CK!JeUiw>SW3EZ7Gc{jZBJq1kS%G;U_yUS#SAq zjmH(CKt1MO2(_3KX^o*8xt}c{1tC}ePZ96PU3E@Cqpk-1S4S*CQhH0Fi|0PXZHOS{ z3xHbWfHBqIhZs2J4pF(x1~xPsy8-c(Xi{z{yeRD7x_{!huZ1G$xND1ncc#;V;B{g6 z8HX)NV>Skzgi{=!atL((MU+b`=u>1qLXs|{3xQ*hj)&x5nB-5?J(Bf-A!Z#(O2E`m zwoy(5kv7x?WX`Vq7|Mdu98mx5=!7YnE!xM#sD7z@)mh(?s$s#m+H#RdSBKrblpLyD zz6C#SLFdS}0_Sf;Vgzpk4l4(&b4Y*@mh}j`F<1(zwNeZpxgZy^R4IXr)1o$Jnz}S! z(1|HK2!Iqf-UFHvF?Srs{oH~b!2dEjuf+a{k?KGNkQXg&;)Z`<yWIXMT-ZI|rHR<* znV5Qa`HLenST>(M+8m0xh0aVyy(f_TR9E@p%U;Tdc`u~(7TL2l$K59MgFn8f`$~`x z`ccsUe3)c1<uko-3~D)>Yd99k;sM6plJb<Q<@fIxE$?-Gw<eQBFdw}N2f}S4>t`LY zk12&V;Vz}7D<|>PN+3Efc&kNlRy^)K+^NTQ>dCKpG|!sQl%7gazz~Qe*WgfGd^pxj z&3>>_8UOoA{)(s~8eDj~SajtV*cwu0{9|FXLO%GSiC`L(A#6FGu<71ZI-6_L&av2B z#{iT9D`kmmW;lXTW)$Y9ecWSAHTRpwk_}8ci}o~kG=^;Wu_;z%A3B4wYx~+lPDWa~ z$N7@n*Az=TM8BFO#~+^z_!P~QvxflEIwq|;4&Xi$zE?hZG(wnYlVH(&4(<8ph~9y1 zfml6&K`Q44dF6x=QnB|L(#^aQJEi+?nnF=&E7Mp)?dy3}%QtTidD*?L{NEr?;Itek zJj4U1<TP5&Tae;_-TWnys^S6}A$w696KDJhHknxDkQH+=Y=1kTQL*$&=d7wg#XIRX za>o7P7-Q?TjbSFs+kV}s%i|~m>`7<ys$rt;Kv&0#SVukn<aVN|Q`{U_HEXM~NOu0? zzj6%X4-&Z|BZhTGPZfZ%ZsdZg`^*+i5#2IZSY<1<V5U_x&`U}6KWNU$Z#{TGimZ90 zk$}uNex$jC=|*SlvOhO!`w(S6&mtd+w0_NQl=n>KiCx4rezuRQ@sEJ+zn_1Qu9=N1 zohSWSV!Y@*2|~j1{_BceumUJ?!19pwLl6d$NXuMAT3CK{casE3mXgQaY3H1?EXU;^ z;y{!kC2o7^SKRM1enoQys0e2Dm#5NV-?=cUD*=;t#F8v<H(t-DJjYkzXx3l=(@6gT z_iV3nF`hqfaEZ$UuX1%NrUaRzu|!f{ef4r_?|;5au~Hf4=h9z7P*DR7qV!aG_z&CH z#`?2U;HozKz74&Qa>i#Mr;{n2ZFz$olx?h>l2P1tVsbm(xnT=;W(x>k%LQtHph<VW zH0Ynt-<tGKe2v0T3yT!hKOUhXKz2>#FgP#Cn_p7{LJ{~Y@^y~=8>KLF=$MorZBR!z z4tDJ<G?usd=S-k<WATP20#cV7&y|um@zdPR`j|sM!ztAzVX=0{!qw4AgI)m%h_)E` zRjVG#sxDFl#I0YF+Me{`Ou2rotr#0T)J{}*W@g1*YOv-VlMN}+HI>a)1dml<eG!vc zBRd?4tJVmp%7gNwdmHtVJGjO#{uT3|ID9@o@$dyPCDfj-@fD3>E=K(!PO$q%^01)4 zunk#{19L4(@n^z*fYM*4JWAVxe7SSv(PxUqV6$(imhbF-!4HgG`_>BB`Mxuf=>nQv z`ridJ-}MHN(N2Nh_HnB@Dj<n^^A0X>m*QodBLa0boi>-Ao@0uIV^pez-A4kFV6Ar# zWjQmB%Zu}FZj|PC6qLaBeWkL@77lL?pt%0fktD+>?{epTE$W<^SvDfwq!;7SVJG0e zReXX4Hs=QqjzjzJ<%PKllM`79C*|ftD#t-Vxm;Q@;z`1@kgwU&6ElE+O1H?&<D9A8 z5I|lV9fU5Wlnfka9Sa+K9M~JN{cfwWBp=CLIUE0{o|q<$<dFW#p?;JvAddYf=FYgS z8J(ds{zZwJ6Lu!C8753{v<vd&^Vu-^UxuES$qQy9ksD|&F4Z=js!_y!t$R6C9mvz} z)s0m0m)NL;zLbZE?_(qB3&C+4W|Dhh<q}PaHYGFDxSSJzgYQjnsx9(kLts4jWeXpP zIdnkKqR05j;fQ#agpQTtD%AD^=ghU2$b}FKxN^kn0Mau`KGt$)5l?9V9^RR?XvyGU zXm;ROuBx=qQ=3nuOzOKkdxWQ^)~FVe*mfyKF}pe^+D(6bz@{!wVbv1!uq_OW(X|DQ zLK9m3I2pcI#)~{&B`LMpw>f3p8?oJO^5SR4WdCYxYY-1?f1gtY3sguDSy0E7Df&&# zn3NM*`aj|XM_<RP%Mz6GkS>L4HVf2-b;ns8<(xZOJw=03$OzF5YRHIa5A^nw4eV6$ zFYC$rE;qea;894(VJM3=p-NtCZV{={Di|UT%)B>2BnZs6qShAbOncxX)=S#(F?XxT zt1Y3@(5xEjQh8xHdxPD7la>z_-elR-2(r1Q(px}F{-arsNVspt=W_MjFhpMH!DsW~ zI8Mzgmc#dKJHjSwIK3TxHv^8rFh;&%1qQ+Fbhc<Aj|+~#^S9gOF&nku;h!N>JAYm? z(D4m+N~EazE915@9Z4}dP*fht<#1+xj`D&+<8X@06Tu>lxHqpa!;YLjECmWGnk=U* zaN=r@T1*Vta?ceiz0KO7EOE`gq^c+`o1|!@Y<?Z%)vvke4Gvo4tRXGhEt|E@slW*^ z>%lY<pH0#&HpRSRtGaR2))r&_P@VX|N`X^3Wvz@N<WVXY`jVw_uIn<oyhR>27j%uM z<bTz^$qD$-P+GP?@z?bx@>nBzGWEGD2U9r}c>Vj|f~~*s=tclwi%OLDFMIiqgFf&$ ze>rx-D~0_1A2^0Xe}px9F+s;Y@jy?P3t5c&Ct>$$ulM-AQol<w_HfRd4R|EtDfPfp zB&tA4d*Jp0urLwOYj}d`13-Eqo_ji;gON;^?zL!~ACto%uFI0Do0gY&?{cj18-^%B z0h-HzJ0(^n@qeq9+XOf2O{kHZ52bj<G(LZ+5sUo115<tuji`#KSUSTMBo!}KyqWj& zc`}&VVu4L529%@p$S)X;N)A^*j&hJct{HEIz!onpSi(1N+-b8Wj2Y?sTU___`zcFx zcOm4Yd8()8IDN5b`UsR(Y%L-x>VPD5DgBZpqo$HH$g$7tDHqG6_cin!8+FqA?V&_2 zAH=)3^0}VID!8cDV#ZL0*O}t!G-0pWz1DyRM6LvpMRBt6yM}Vj{$QCtTMw-mRpmN% zP|jaF;W0Lsn&r1IzZ#E!@%6w(T_;z%81f1LLbD497fJG^Hz@S3ddVUCL79BeA}7CU z;$RInB2`UoW@49v!i++o6*yhj9!R$gl3|;l{h1bbOa*c4y`UKAdwArZxa|U!Em0T_ zI69*LYAy(v)UQATE~Z@%i^N$~_`rB01VtC#87+$?<@22RyF5~HMRK_MU6F#jbKq3U z`-nNmF_GAaX_TidqLPbzhOw2qs=KztP+Qy922c9C$D|*bHK|wn!aI?MomiEEJ9ISe zx9T!iVV*W8gY^J;o^F+X(w}QAyD^1!jtu2Z7EQ!T9D5zL)c^Timx|XrPNVENYzKVO ziv4j~;KqalNOA1NJV>Kq5xTa3OR@F7d=MG9dxT4IA_-M@uOT<0*#@T)(nDgz*Az6P zesH#YhbEN~tDFLZciw`8#^zCastNO$S8cml5#S^+b|lNZVpB<uohR%kJ}T>!ahfo} z4rU4!2FLqWqba)QoA`+LyJs*#gHFg%nm>k564|CQimU41hCkf17s!cD)qL7?aONoP z#yWv1+IeFtY$xP}&4=?e0|`*A=QMgMCzvy`XCC3@XOA;v2FrZ<rlvfrW+SRIYR3fY z%yLnS-;rBWaSNi5yNhfE!=H}nr7^#3&CI%_qYN2Nn0yOX;)uu6W*X0V&mtll5$Bj( z4UX)@GB4jNSJev_wu`K?9E;D*0)8>>f`VwHL!)hGQWQDg&ay=O7N<uS%aiK(e_KEp zJwx#rAoHdu4wu$(iF$3GldX8wX)}-vT5uzHxaB6wDuz+~aL+noOcb>>jpZl@0=O}L zMZ(QVEAidvVhJ(Dp1i`kZyOR*Ar4yE7Z(KA@FH_505Z4YWnwok4q&mKu~k}p**0cg zDfrG~m+zP;6_2yD9;H}Q=fPgP$*zL;U78=Wh!IPMUR6mal*+b~1wiy&2*nfa)Q*AG zU-JyfOwS&&nCJ;nb6_{RXWmkLk;WNp`)BsHs*zOlQf`<^8QQ;cP0@_v3m^R<M>)&q z4=4&&f2`e?RAnhg;md<j6Ir+Lr_@$&bfnpb^3t3${Dx{g*If@_=MD$hbJT0tmj^tV zKr>ar1Y{_mmy_R4_w4pbp&#Y`x>2&+=y4#~<~acJq?rVu6;K}OM1I*U|M6XG+tx7p z@%qinH<OMBjni%*r<i<IWkls?SU-!0xdV9^bhbB6uH<P;z15vpJObz~s8@|0fEW|a zS?JDuu}%2+)d|~d-L%6l!GzBU{|Zu)1K9nrh-=!V=07h(DLx~<z!T$UP97fee=r5q z;j{5o3n)CeZ3}Z@zw>8!R5~cfe1xsKpgqelO8HmJ_IqD8i(JG5apLC?%6>FYJAn93 z4#?t)m6za(@@u^S9v%9fCU=$>s-q9l-g5+4K@Xto{->F^g<KK9whk%UeDGmV!N-~N zcG{4RWQ}&E<=8SY!h`>HmnhXBIcxPh+bTPG&O2-!>7-Y*n5qKs*DH&jBUf>fg(Wk7 z1wlke%yaw-vO0ajSUIT7j(S}V^C5AZJD2vAUpV!?Y@n~5@S${%cnj@KABQK*W2s<k z+&C+%@pu)t<d_4M+(6UDtri@CfA-2_5gp%))o^D&MYG%gbemBK@&h^v(Gue+xjy|k zkv9dzL2L>|s<aD=-F3u<v}*rU`TTAZQY1piwCs^@aDw*ulZ}mf^$zmPyRD3K=Qlas zAB`}7)Q26qgB+$vqx{>Ozs3eMIug{b>i4fi8`B;!LHYio>T-Mb34HrdP+X25OL-R2 z6!zQB<v(uEn+0f}|Nb{lj)<jfMZ$P0C%qwGkrPZFkEL;DSD1miQwRY)d<ZfzSeNye zQ<Gl(AUly&EP|xH%&hhwIwhqRViosj&K-gaHc=leMKC+L@+_D(Te;b%t)w>I$XsUm z?*CY>9PwyP8Xh#$j@LBEb&1^O+|?Em%p5@|I0?C$-fkCb<7R0q8rtqfyF554L2~KG zXb03&t5PUO-YZ>#x^Lt;GH5N9p<G=mF=&bmS}mx?r{nJ02m;An3zH!5YNPZ~f`_)x zs|lLf0M^OenycmnKXE*`DuHDjoZsp_bMpWPuX^rb?f!XGzaK>|W8`Ez*uZW?M#uH5 zjoFq0S4Z`SSk4ziSGwZPyv|v5?E>k!-h+|fucr#59NdIpnYxKpM1(Cb03Y+nx7~7Z zYK2~8em^LVn?~lQ925A!wT%k)U1D?ri;3v^ug8tUzpzQ~=|>8;U7wG#j)Vbk82n8Z z%~V;*E@Otet#CP~9;Poa_e58vapLso)qcKWdz57C*j`BMx={L0#_{*%@>Juw?LwCb z_~73B{CR@6cZuaZBw6VL>O{NZhyzH+IPFGh9>YkD6EF_({`Br`rpWbc53)?i3r(tK zu1D0haJ4&5pyX#Dv7lx`t}ViEYYS>@B9JxYp8NN8yZK)i6=UQZ{^<vcnaEr$ZZ1Ak zt%*){Q}yyNZ{Hc8S;SXKfp5>UK;TQ3-*`Mj{IqfAlO;IC$pf&A%l9)ui(ImY48@Lm zk3}pE^9fR5tJ#m=_dEoV%BWkSn7Q(S;HVe~EkH4VyTh|Bj9#C$4&>}SlJW(4jfGxp zf_0Bhm8+%O>(CYj3Yw8Hiw|!S#PvOMMUyJTX}JbYGYzCR=~-(n3hfsrBPD~%5Og|* zDm=;nQD5GemXVJSiJLnG%7~!>SPWOCQTm&EqD5JA0qP?-qg6<~R4pZ?)ovCsUzFW0 zqtR2A2Gv+ttZ`2M$IXWYykZS(5+U!`m+LeSwRLf?Im2NTii8>1a`f_h)-kF1Nxy6{ zZ9L@4t8<FjtiLpgko+wp1eWUD0Ke1q*TYg*Ep<JTkZV^&O|cZ5?G@tzI0LMu_xJ*x z)MVZ*YUD(Db>wkz2x?M!Hctv={U3{Eu{_iu;t<H@JP3(Mw0k?Im1>zos?`S~c3GjT zMR(`D;^y+rfrhN=a~zcLGpt&elmVneLPKUyQMKk#pO}*JY1CXxZ9`rctZ96;Fb?cN z&l3UtyATMHt$9F;`Zbusxj#t*p7B&CAkil>pC?Um<~7_gu<$<V($Uolx@jw<Db;CO z1Hoe}1fMoOExoIk()mcRgH*n>*Jd!QiW<wm9maT=W1Fa@U94)OL`TLS1>NH&tj<O+ zjRy9Dsge%~3`;B6i_Uq97GVg19_K61d9#3SO<;(oeQ0xv5@u=eAb?4+Si1enLMcHW zuwtG;iTOYLwb{F2{xE4&%J1Q`+B<PpuAzv*xry<*K6yWy3jTeET-Oa=Tf%)iJ^j3i zUE>*5g&LPED$At$j0TRN&&!7-x{`ybf*7>-xm?jNG;?3_l%z;{&qqWW1PnX=zEp(~ zGd*TtoJA*nnFp`s3kI<4#6wMOE#_)D0s!7h$0?2SG+B5~Oa=6D=(O&b-7aTRM{Nvl z5pp$qANj=>`52vgki4!W-@iCEc#7~E72SUC>e}7>d9iH1ps}15kS;bT6kXm#0TY5& znoCEapOc*#G?JKP3Q2eavyo53sT_3=b(CY@j9Y-I>VRDV;+@*xU%;@N4@Zf8SCI(o zr~OA+1CNOGq>s8WqdKjFuczMQ7t`SiZ2Q`Yu)m*>&Q}Fn-9^*2gHGZ~@~9g|+H1?@ zQ9NXee4hTV7xW<&;N-iuM_eQ^Y?S2n2>c6P+M0OGn$t>SpkXR5a@AYd9@||r7MC{B z&me3$gx-l1({Y3uC*R%#r$0xkUtQPpwRLbnhi&Dm0_=wQghO}@99qV(eFa6Py8Ayq z6{YUZVFDy$dz)sk>G3|BGC*4<1?k7kjkcFg<a8672f%AaxyvVJ5?q58^59%P*sL&i zZZH_t$HQU35*>7^Q(oH9TKA%d9Bd8n0Mj8sQNCRMfwJw$a!Mef?AU8|Ahls`;bYf) zC`+;*{#qWJ;OFp4v&3Dw#U^<;M;q%S-n3}fXgzPAN*oV)^+9Oi1h^cQneN6a@k%*1 zfp$3uJ6<m$jR5tgYqRRna)`80KEmG`^F0Cu8ldc>w7-!DkZuCWH5J-aZoF<h!%w;l zM3C{b59L-n<JU}%vUeL~5XlRdh7!6T#y)}xR<Fi)mmHpgv!5-6c3@XsC0aDM5X7Qw zqC)oDAa7mNj2XTaS;`&->SMf>cH=3nh?;y-44>ss+a(g;AOad+f(v5cN-(iBl+prC z-90RAgRke*kydN>woyon|6-tyEzAMZJhsj$(y9)bVqKf`5q3Q(-R0|N$gL~pb&0}> z$e7~Pt6NOoD?hFU%eQ%WEhg!<U!$*gDd;^{H<!VidERzF!B`ept~6LKRdtaTyg(O# z=Ao~mW;Mp<mS3eq2sGqy&=`+=OAfq-{RpSUq)syN_YomVb60ObI%IifARQ+I%m56H zNf|mNgM3#yMzkm99my1T0E=WmKoec6>ex|LrjDB%qROs_riolLy=O=|q*i-5A1z7c zT?d%92sn1fXg_gK{Z5*8yeD+pKA9sU>5rW3VAG$~q7Dt00+x{<AUYnm%O<b5=($7E z8<kJgoDUo`dbdz7pm|4I7w?rC;<l0qqSjAw?0(l9)B;IO&iPZ3v+`IqIen$jiwx8$ z1=rgF*njwPI`|H|&Tb4IdblhCgj1tF-dG$~m&r0L6&roVL;B0%xdoGLa>x_lG|Jy0 zJzOJvTar$sg7@Z2h?#CPRsFPz0i?rS(mF$P<RQ@(rfgRLbrleoc#WdlyOws>q|wI- z+w)_BYsqmc4-`$2prQN7lMU&#e4!Mdvs**4#m;Sn78}_wYNyHXy7XZ7?jYpK0oSNy zOby@vF)r?m%V$GLlBv&m??)M+e}kC`*+D}y>`+Gg%@L^GP7yXbvh83EJ9x0+L}7)| zQ57SIZ3Wy6Z=S?@+x=HZ0|nOlAv}cLMX25@cb{JiZ?bC(T@d|)tg_p|`Iaq(Vhbz8 zHmU;7`qgPlj5pG*UB5aPfR|j{Ma95YX)78?t+KvUqMjMQMtBUevLc`GGCACZ_hEs` zj#-r~A3E2To)DJl%r+4Z`@5JnA9dzaSM)O6B!8@YjmwX92_GQc^xIoB0ovZX8<Q>E z;{wDsOn>8B^7YHl<jiP-aol~Lu~lp$YS-nvsjP#=JUO(t$=r%nE|J{+tRE0M7k?oa zY|HyGE_lh!ydlfJY8rCVe%+sQxbQ?~;zYW7p-yg9z1~g@^27wO$?ZJjHjiG`PqSHS zTfjGba*_Piss$8NQM9quFPSljg{ClbQ>LWMPg6kA5*GwE7xa`En-Vng`FBtW>-u&S zA{jnXXz&kKR-X>BL%14*(ymr=GP$d|>-R-s+b892<{N-uDyj<K5U>h)S8?70@<<xA zT@J*+UF{|bR<CM?;j5^16wuy5lKs;hrDH>+5z6b$lNlxEE|!i_R6BC^1{~*tIRbmK z@CkO}FJ*`*&%LXtPcY*J&je<p9FsgS#Oqgpgp8t?L2V9Va<6?*8@bEtsK_LaEXTE1 zEw|A=Y*I6ux__*rK)C9oBjf`b9Z6(a?Na0rAxy}a#eQg^k_Zca8=C;6+SE+kDjiPe zEoJu02HnoO7gHIxNOWq{fm^$zK)nq(q38HqTC}ms_h&`cGeU#vtY9uWusg*_+fRJR zN1#7;^`aT0>oRFN+8-u<8b$aTETTC%eZ%2Hfxb$5O+*e-{tv$75F>?Ycx-&~`)~h` z3Ik5a&VmmiM)4iMp%M1q$w2C;I)Od5dU{Tk{$RNFAScrEBS&=zx+XW}cw@&;C03D# z+Uh$k6`!CJVqp$mTWeTHf#QLykt|_`<qqCz<$+eFLtnIYCW1R2r+x%4eN(#HyYR?U z;wo+syFMpTW`iz-h;Mp#kE&XJqe>TWq1@E5F#%w<jF$_34q;?J?0i3~b^b-10udJJ zIb42QK%r#No;1B}NP`wby#w&Lng&Y*nYC7~QC3%_YpTy_16MKb=I!<t5O12|f}_#@ z9xp|cfO<DVX+>=Gjj0?b>TwPp9cRr4WVKQ+S+x7H#2)9IfkmZ&5aoLCHZut7v4dfx zJS02d@b{hsrOv!+N@hvS@K@NM8@_UNgVwtvRBFu>&%8q_(4yu~j_V~AUxxqLK(29) zdHGPR(Z{|i>OQlp{BqY0E3Vqy3aSG}wEjg7XWb~2e6D`iMd^b8gu(rprae=(AZYDT z-*|nRTD&o;8sL(X+9@!pxdJcKe2~L=10ws}ulmn&%6*Kgv{+vwsr<Xbdg-%Y{GfvE z!c3pAv$b<t^5nW~C}oQFUpE0;lcQGgk%Q3W&%E=4&PJ0t6|NRqNFT+#uv2t9M#aEx zTf`Lko#=x6ta(XJdd<%=NT$MQfGf-)>@hE>!yrj~r*S!2%f`cE@5T`qj&g<66jkf< z`~~^XIM=AkdQzu^40=uF-G=9K`O_2+M|HlXb6o+WD(-uN4VUgtwkR>cE#zc$<V-F5 zZ$Kr-yu-$k^9(m&6?9zN{izt8_9bq`2|n*_oRz9HsR|+8<?Wv@Pt&b*+nRJB@}+h6 z+fPc;Zbudj!%5{UHpXIXhDz^V*v=8Y>VGGN3m5r7V^fxDE=?jC(tC`bdf1SdsaYy; z`<I6#B0e?!tbKCTJiiBos$0esO8U7cj>VzB=esm2XzkeQ-0$s?ND@-&plb^Kf~XQi zQq}jU!aH<&<)2<HHn;j<F=8#;kx@HJ$&Od=PK$g<`2`&H?+i*7_`En>a$vRay;FI_ zM{Osk&c|1$a?bpfIt$C??Atlhstq)2A<B_W`yRGe@Au@uCVa*#jgbcnj%V2Hf?@eE zRz&zy*jv1F-HYV3bxPvrL)ue2;U6I1BDwGbrrACNm&ft-6QUzJmKG;g=YuGxo-#JD zcv1yR()*+}hwSu=R7jMIv2a}3J*3bh0tca6AD8y_OAQ`$SsgNJt#H-``QS6MrhNQ~ z!<tQE_$eD`a{-z!$<D7>nlA$!z*Ucd({e^36w4ED((*DV?30vM-xDVms<4-g=rYBH z>Ycn<^)KymRq!+eKCG{aERa%W!EWf>gCa~}SQ-m(OsOlt+&iK)ha&g83YTDC6QHNO zvc@HY_R;`b+6WfOApVHqzk^2*xt2}?ww$FUKgvC#q5un-=4PZde~eWG{KB|$f5`2} zAkigMGDp2w@i*zNeqtudX$QG;O>yfD(v0nXAdmBI(U~YR?WFfT-)^LBT_jr!e96iP zj!B}JSMFv2ZpYLW*r3#Cy)N%Rd@s8!V73Tk4rjaMQ}T^VD7Cs_|As$p4Qpu`qOM^+ zuCi%lk*hbjUcoimnBdwaekQ}6asd4|4oD!YLg@Jh)y#U<c~oXv;|f-Y2Lz*S7_&n4 zTmwn^Kd*I)3<fY9+a<iLt$+uMpR<vvJ@<SRbYEUwq~CC0p&nc;v%K6Ku{iDp5HtD> z^3c65pq+ODc3%0a6zvvhwm$M&6E6PsJisp-meY3VzJ$~<DpNiauBZPXcD?56y}Ij3 zxwVo+OaPg@n*CW%`eiWaDDH_BML|Uo4R&KPn0_(bADSpgZwbjih*|Ybs$w#|2|Z0H zyIr|N9)c5g=5(>%x;d*tbul<kuy*MxkD_!%|981-@nBc}<miiFU&Fs(_)@rJe-Or6 zsn69sibJFFY;w%HQeF4L0#&Pl*NB=<TG8Mfxv2oAXPn1Rew>wVhnRR%18-Y7?+-ni zRY@WwXDRRE{T60q&1?sSr#8C80Qp9L$(r72PNybe>Z{+$dL6-*w919H0Mo@LI{%W2 z<DZ+p&O0z0)+xF!qYK4=gF|U%eA8tjRAK!wtt&6g(KE82eDZr6+X8uUvyT7Dh)=oq z3f`&5c31O~;>$fg<(43nR9b#ADH?er8wn(*72<RwYBy^qfzwHpZBACu5f{a;qzB5V z4-Km#7fad|UT&D4iHmhHO&UGXql>nx6e`J?@$FZPs#-z0JwL;&(gXyo28l^i!ZT<T z@X6~V+cRTfj@#WTk4Y=EL?HY7s+X^xlV^(Da|^CVEq7A35Ws9v-KEdbs@@i5xCe>C z0jp!qu(@o-i7QVMSm#dhK`l~OY7h?mCLbU}D{Id3_~=cdsUb{4P{d75^A>q3a9+#T zE??W!UB|0Fj-%K@LPr62sC|l0hnj>dJ!V@IS>((6WvjgfDptu!G{u}-lk65RQM}H8 zEe7Zt#42R&IFGg|+u0)*wJ<8t3y9QhB7EA3N_z#v`%<n(kN%&I0(;4nH=^pD*Pej9 zE86;-PUB0nlVwcr3X44B!64~^7@IJevr!tYTu8Ywa9$!$7uw<BSR|!RB%#>84@6l` z_QVks)eL-vOIIdyL(-q_zsfBsdlk5f1KE#mE9I=wtj@VO&^<O&{=HE?r{(yq-Y2DT zI#-S3C2TWCwz93|`?EpF42=Lf_7!g_r6%Nino6ilzNCi+woTPrHfXQy0WC0CVr`); zpp`UIesR;=L_rbz16=6&6XZAho@uM4OlI;nS1ozYNkG?0JUkS;3AGxf1#|McR-zG; zYkYTHWc|XPyu;d)G(QR}Liw&<MF+OSKQ>W<i!)eI$J80Ds%tod<)fVLI>f@EBW-0< zPL*?VDuCj&Sg%v%HD*5NP+CkLDC?HkT&Ge=Gc3jv<7lcn8bC_yu7Cb37AA}pfWmjN z=15?ja>vd|S??}os?BEFC!EF$8L@&X&$E@wUGQv5D_vWl)BDK7D54cRZouv9iy=Vw z8vz)^>HK6=(H;wCCXD+fj@zx0Y6`jPV#tTe*%m`SX%{~&%SIaQRNL=46-%nH(E`(@ zU4^X*0Wi~8b+f$e&qvGGJQZzO=ud0+s&}IP43J?DT*+0tzyiPTmJ&vKvCH8W+<;8N ztZ(C>lkNV3D>5O<CDY^6a;u!EQ*7GpWaGHqi$rL`!;fZjWqyenU%LzMG2#_UU}d`) z(g<8J49E$fz`Eb0;1ea}<Bw*k*iW#e65`h|2_2`AWXz$Mfg?RoXXGWChh7D7-cHUy zj1cb4EsH4&@jax!j1wPoajwkWo}kL7Tl9owRa7MJ?R=jPN&iqhu`I7+RbSxdNiXfs znjjVTsIZk*nM>)BBmbfTAe`hI<}fDo{hjhXP9ROs@a0%&^XC=9cG}(Q6;b5h&;D52 zf&=ykGXrp)@%3pn(z7i0ykPyX)qV4voW*87`X)TgTbx3a-#DZ`CpIX_cX%Mthmf>Q zs6fh7nHA8)qU6PQ7JPi4>4c8-E0(w{R^`o;TxR0^(;RAPLpLb>xZ7{D6^0cjc&ixq zRpBR`s`|Hy6hHi_BAD5D3d!4Mf7<{Y)lt84f9z$+sSO)}@z60!<z&AaNnVUN{;&)u zkmQkg%(s+zQDQcFLnW(Rkea4d%I$&?h&lV7=rV7~roZbjM1f1=Nl!d0^mLp(Q*p^# zEPqQ*gd1dg2k6)2uJPDk@Pc8IrZrw0?gU^n*rQ;k543mjXEpn|Rmq_iBvGWW6I=4e zSylzpX2I84g)?+j+$QixWORm*iin??;CjR~hYC&nU*>JFPiDV1mW4oy2maCW!~nyu zIEzWw`dJVzIY;7+nJo9WdMlrLB`K-^brsXbbj?@<)p_#&MxurT)VSi_eB?)lPoGRQ z<<k0<|M-U18V8e_q&{3l7a-nv2hQxQwJz^YQV^%=EIF6bWN{*~BA(IiX;g*V`C^Eh zoLC!?(OVac1}OCE{gmL7o7@valH1xl@dwWRF~$gI#mQAkYRS&%okbgq>p#F?zM_*V zP{A^QEh#V|x3S4)h-vk$4nZR#=-(HUos?TN)8xK}&JLo#!Zb$z|HRGXnXn!`&`^kJ zmth@KN5K9;P}5!7T$;ooR+jzEH35I+;yAa*l1{{?ZHv*FD}R5)T0pZ?Zx>Bb_kK%& zYIM7w6v>$i3w*#Z!nvCLD5r;S9JNM{Wu`!lPJXR*{bcnVwrDbm8dqBXa^8x(pftBh z>@n3r4lkTA{wCoH!#Ni_?X$BWcuw_n;tei>SVQ{m-u%hu3fl>)aJ2itUgGh%8s}nz z8&W5nnDJgfwn)8Oujk0Zc;$QPPr9ZwjcZx~GQ0CxVpc$%zxRSPNw4*O%+s4PcF33Z zR{wF(`%(PfyaT#;XTYpqM`>Z85_Qaq#jXZe!_dkp81O})1MSRTN4ZxcK-;4d>uL+4 zY9@VA6f_)^$0?&yaiNSII>`j5sj9uH#CL(?hzzH^#xu(iy+6E;0X;Df=|)FJ#Lh=p z>{V?Ic><i5Ktg(Ok)Ybrja<ik?%1?DZ_I_!^Zg<bKIVPI+JBFX>6MW4MCUXLF02$- zD%aZbT*0=R{U!lWg~x-Xb-^CD)q3wez6tT0(du#46NOf=;KPa6%3x>%nF{(7*$}Ve z5-ckVsdd;`Ih>(TnAx-b=mDBG<;duW$L`1kkWEnl-+jA8bkLRH+&}%D#x#*mnF*{G z0i>0<Ep4H{nw!9X^E-410gq1SrTbL_G6=Jd!V8am7WVC|>o7&-^^It!Z>FKX_7Wsx z=6p>=MT?&UMp?}HzEGsGUpgr%8mVLC<ddYW6U+L;Z?8KCeo42pa>RfkDsEvLi-e9# zMaHFMtiTWowY+Yt5@l*n$e3EkuaPgB(T#$5<l|wK<+<Q#eJ=g^T_Q4?LhZTYYWeu{ z?m`~wZ|CyqT<}q%rm^Kl0%(ZG&z19=bP6qk^KTR`(px;RM}`98^z$wLc*4Q>`Wc3c zn~uE-ukhk9{0Z?D(OT9|1#$2YSjsw-W-j`fw29)KH`yCDRm?hJW4uz+H#DX)V4p_P z?lG&vXdqWe+CR0@dQT`))2Ksj&(msbko@9VdX`Z;su900rT3*DvvvOjsK2u*6%$f$ z9U`f+=n#76+5C@FGbYP=QD1}p<F_>d)8U<%gyFqmS<;hpQim%aq2)|)6i;i{5e+f? z%;yiY$c@;{UDIZ_#uA@PJNO@=rX0T9e+=56^SAT2G!U{WU#3GqogBx*!z-un-!s=i zaS6S`PYr-?i^L#o7y*Z5OkY7VF<GvF1Zpei_eE{4ODtQ$&|_?G3j$H8tR~+!omV+K z(}U)iZ`!D=knW%A<{100CcnPIXjdwc0uVqqNc&Pq0V3E|gkA$ywu9$Q*O`d-&J>p& zhb7Y|lCAK3KKhY(c6d6=nhJq%r{Cu#NtF&RaC<#5r{_mdRU@RqL@U?WVU-fZi#;~W z=`1HkoHnYPoW}&)@8sLv2*KaTEtvKpry-=3exTNqs<V{gBuNx54{UDZ1tLNpVqNq) zHc{bS7PyViy^^vRP{ftdC<(v@QQQpw$SE%|tK`Vc>>PR$BaCX{^FR@$i6-gtbn%Vw z?3Gv^aw=yL3X&?fXqAwmLSFUZ!UkP)c`~Gzy0lLr!>_pt-lFx3k-+#_H(n^}he=Kn zFvtC?s{GJI`GXYME>0v$*D*?FiHmRJK0=HqR@r%9sYk4$H=a1G*-xkeKEk~)1J1RG z;nO4GQ4(2d>u3@ld^*0ebMIfscOTk*0`;Dp))I8I0jx-RTbVKphvxI7dCp*SinNEE zH$vgKA+usLk<|esQ~?{>EP0bYs|#7g!&5UY+BGOit|)gz{kX;Hj0^&!(qj<ShC^_P zUTL)35sw?`YtMkaz369-ndCB+`6_EZcZoGdq(@QlIc2Zz;AC=}sX*iB?84BcUbZ>r zH^t~LVpwYBtGU**c3sK`8ZQihaxnWRpP}%b>8Y$_`N2tvDg%;~OO_(3bmjvN=K*-+ ztK_LEojH)!$Uk0rKtldwl)U8PC!s5sr%D%$_9{Zloc|4u(GcG1rSIh-Cno$Jn?PK7 zva0}ex1s4lTzQ3jqn^8Rfm#8k?d&aSUZ!$2$F%V$;2%vWB0><>)txFA&4ah_Pz~Ib zXMQ|{D3)5p*#OLC8f?L!G4Px?%{>-{Jb<!I<3H<}t83H%irr|rcm2xNUA$Wgx^y5X z<JAAkCmbu^N)FGg;q-lSBM({TrKlg}N}n_^S0^;gS>7vjs7fJKZwNSDHLJ%+ultI4 z@6v+2qos{n+ohu`9yo<$ZmY;9X2G09)TD4Y08AIhz7Kcl#O*oC$xFWlnp9gyVj!;G z2RGx0C*@GDIiNt21$4lQ(As1L0r5JLPD)+|u3x~|5Q&1ZCqOSlT1k)1BDH0HR={!> zO>9iF%m`zH^!K@l(@DQeek)w!T9-8kDBDGBMmAh>xS%>)_hQ=XG*E|vss4LF+-I;R zoABppY_By?xPE6FMZPQ7w3rltov_>Yu+a;z*jeSZx(}pAuUDcKgbs>MMti0>cUm*t z(G`a|oG1~o$(UJpY>dxL)&-OPOtT=#BJiR!ZT1e_chB8e?Gd6~UbU>TU@C|z<`Pvv z_@3s&jS)jeV)>$1`JMML0NhV~X!*5E!6F6*q}=cv*(al*a9NgM`g1XW6b@<{d}+WI zMUGmrIHL!(k~*IY8;d{g=9OPOun>(zQ8KcfOjBNtmkFZt1VW^ohs0Kltb0-paNLV^ z)dGWk(a{Jve%@ebx1!eY)F(DpUKNS{JxZvNFCcJ!62>{X?Or)Ct)UV=wLq?(F1WUP z(KG_Ecw;kZUwbM@)OWCCFrNLa{_%)KdKZ)JL@K}s@@Onq@L=T#8*RUD2kjSlyBJ>D z^?;08Y*0*o03<8(n&HLN%`b43%2n`uN*4SiyC+?{a#exL2y*Xce9l(!!Fou@H2+JZ zMT4mO($h=dMgDa7r<9I&PDSnNwKtLsOOl^u8L&}(Hvk(rjp=9#3W=C|?TDKF4{sxN zl7qiZF>ywzSIX_Sn_Kl>t60qSH<MIb2|tLwkg~-w8HEtdNLhF3fBXZfpsEx(yngQl zwza7lae=&74Edm+u}V7UvlSjF^U~@@I?25*>dl&jH`2)sp&In}uco<bftTvm#|;SV z;*=Isk4*D;V7m=zOhha@soD@HFUC;{X%R8-06)t{BXS59RYiw>i1YT8z=JIjARSsU zg-v9LoE5vM5&;Uv5C!=H<(R!+h`lG;q^2dGXni#2HDHC5zbWpXN;IMuWGN4$un57D zKpl0H^P|Xv0$ozlb56U2-q>5-$^>fQ**@W@rih(%Vc7Hk-KuM~RVQE}4L!mp*<QpQ zy{^O446xW(j5<2O3xG?Z@@KD}!q(U~n<IJLb=*cxOiXpbph=P;pn|-4huswD1MMEQ zxB>^{!i{vaJCwMsP@^l~C<~%fR21r3OIvzs9*?T#Ks33s51n*7$(fqQ)RAe$H1qj6 zc%*q-VpISiD5>SEN9kpL9w@@jon0s^jcukrAGgbb+8FY)#l>_mUJ<*LB!=y28p;zi z%IhWu8b2z3NAH(Ez3*I=x4~LHdkYcz^1_ThMnvOXvy|izJ1!(HU2*K+<Z5W2kro?> zKL;l6v*slOQBf)@lQ%!*rZHaDI@lxCwiV`fQcoN%2?aVbjg$6e>yeZ4d#e_AYOJCK z($(UXizun;JhxQtG_8dM$gFNm*9KH!IhU`M!Q}cM@G+&(84_6@CHOrQ1O_a@dPMR> zo?VaU0+h?9ar|0kL0xK^7CT+xi$w}YWy6w~-3Z-V_#M9@U)Jd(tn!P}rj-Uq6P=7U zLzihV#XtYvXu3HNR%GdQpG?QOQh;WO!9vq`)$RlHN6U|S(??Z|@Y!1$;!H`zbWq~v z6D=10t`F8k#32tm-T^P3u_%j!PNFZzxqkAva#av{9<t=ge(q;^S_4!+^3$DDKC%ez zGjJ|kn6kI!!V_D)09LNx<8&JO&;e;afoXIT;AF~jd;GLVvQ%ECh|Uz}%!#uP0i!>& zJW()R(1Rs;Z2QaCm-ij<vQ4_=n0yRK4xBR~MWj_;f|0GxQqZ^WojfKKLIfxyLzOEy zQ*s239bu9dFhE_#`mI@p&&OKAy33qRKXHE!|J0=kHJ`CK=Ga@FB%B=u0^+M~S&C@0 z^cP|;7tefP0ScQDTLn4}HfYWtxnLP_(Zpbx)B3oSldIi_lKlxFHR4dJ`#BjB8DrM* z@dq*IhAlsXH9h8htRQ=RGHk>g1s&*UBBDmqxbDof8AEvFnhiGnL|sN4xG`{1F{w+2 zJj{mRcZ^9_WI}qMMH)xQPtJHK-2=|soy(XGZet>8iu|XJZd{TP4R<bqB)TMNlt^dD z^N$hOtmhm|{VGz{0hJ@PZailOma3FxtTj)B<gtIs`8+(Tq)Fs07pB=O(x4R?wMBxO zFmN%;X87(+{;&plW(kl~=K>lM)$?hkbjf+8^zB4}`w)E?6v0-uSe`V3k)hKGQ{Dev z<jdxgtGJzB$BO|?<Ckv&tK#`Zw3x~Uvea)J8$9jV8PAR5984WBKo&=q#tz31RBJaR z()j{qrkNB}tj*xxDW+%0E#ZgYupQY?Zd*7@({E~Y<U-UGPIMudYP>+7yBt@8)cV}X zL*7Gp8-Sy&1aw_Yv8BH>+(nH4gMHgeyYf05DlG&vN_X%<jDXeNn`Lf4-;7L)J7L@L z1>d^qw3~N<2XmZt!a!CO{5F{wMe5Q)NM-#}CQ2a2QM=^`oLZkUxr0w0XSZ($%c*HH zzk?WCC}HA4aqy-B5keNp^p8bd1$<&MP{f8jZn2z@YxfsfTN8;hd6yYC6^KAZ-5c*v zIYDtFn4;{07##i!3++e}`c+4WDVxR@3282?wh<kp2VXahr+eY!H@(`F7!X2}YUIWY zY(bo+I<BljhPca2qhX4rI1^0c?gyGejp>4t>x2`~@fwy{2w<P`tyr?~{-64s1hNLz zQ5izKJ{=1vG7`baP2JEtz~no(QQ-yeKYWP1;=m0=3TY8B>ClTfr%OCeD?o}SuFqLj zB#n%)Fy08Ug)W!MAXY3UbCL-8WX$z%ClKik1bdG0_1_E4ZGsERgb{uX>cP^Ye|+cS zEFR>DT~t=bX8X;+B-z}idy&Vg@9L-oo?K*XjM1otx9K$-#&5=9Y|5nnJ&eF0V2A1A z6hjHLST4m^1}?S8MVWkPp<Aate%^wpT=GPa2=8{meeIqndE{Z1?T24Uk7+?%C4bi! zNyM5DF>rrAM1fTeo6}ugmynFc20UZoiX1y|2n*iM5m7iSN80Zdsx;A~l!B!_d4R(h zJ+7sH`w{kfIrP&{`-G1TW-8rOKy}_U&ODt-7`7|?yegLHval&`U74k!>A%2Hf+tZM zG*auN85i46LQf{1xXKK46by(nTXpv(mY3x+#p%OwokQQtY8?gS2uxAEwh0Gm-Dei# zurvR6v?_x%awd9DaJ4F9mtKMFgQ-#ko5o~4Rh@w={LT|Qki^+>MKa|3+2jIw^V+Av z2D-&Tdrj>=tlEPY5@)6D`p74k3<qfn7$m|Jg<!rYH!6BO9INylFT|cQ>KC8=An*3% z7wS1dm54KDT8*pzO>__yZbvS!&TMx<T7#w8d%~!G@Bj)!G6=m6+f%H~sro*az#og` zf?<W!9f$=Rzt_<`ST&C}_6SC0jY_Sp&<t9Owi-G|0TqhH<(BUMPY0>Jf+;TA*+Q@Q zi3PABEuoHBQj`RI7ZxHG6$2JS5)eSDCSaSXiiX3r>pYeLDun&dR$k%|@{-&jN0m?i zwUj9h*M5&jez(n{f*=VKNqcKDM>Byf@x3MjuX%BL_qQF^1$7XuytqoPuEs1*xHiv> zn_I`|Rr23gk~;5a1u}s3`_k-p(Ca<&E=Ioo$t2!;=!|q$HAwjRxs6e-IGAz~LD}g1 zLu{@RWcfg@c-8VtF!4st`8Ct(EU5GQa|Z{1On92t;%ZkA>E2UcdU#T%8`|2YoI2`G z6;$}r-KinDJXKlJOu$ZNv{5(dnMw0l3_I8f6uKIhM`MX>kWmH_sD7-dIFROeBu3rl zxvUcLe$G<x*da4Z;V$&JU2<_WGWUlS+R%WdIB-hdLu@NMgKos$XQZ3hIq6@-Kc7F4 z5a^rYAdNoq%B}L0yc0!Wg(0y`&0F_Z#aTt@6+)S4`47?&x!%ickhZd^R$Z^>$OFPY zy38R>xVjg!#N;i<2Ojc!zr)VEVz`UQ3)FK=<~!kG)JEnRme1FC2c>Ghyqmc^OY=b$ z7skP<1jK7_aHsss;bxPvKy6F@<J^os8(7$J!eLncTMo@3g|JClcX6T1mMTLscOjE; zB9U+8K*rw9g?ab6K9)&!f(H7&jG-a;HkGHT!zO_`{$mBfE>FdU8Fa+NkD+Rs2n|r= zopNOl;N?ptBR?<)D1OC1nwAh#>z-b~8}4aEt5Mt5GC3@7{59j|IjueE)}m;XA%h(J zQ_z%9@d&dyOu7}Wfb=-eIyojS&cs(xzLzJ&26;9uY$>*c^zcOH7Ky8dbAhcH-M>XN zJ-ZpMaN@H*&}-`go21W8@%P{3#mg=xF=X+l39NduY8q~T@?a~Jbc(Dm)%JD1v~`VB zfV@xG5hZF=?v3oaOpe{0Yr&ZEVMDf@=zcki;DL72@_1bKL+(c|B-W?gvTFcI?t7tr z!@)nuU9G%X%I@s3(4CfeEf=V!Z<`e*ub04I9q?4fY)f-zE$LAb@gB@o#rQNOEd^NM z0)!vfK^2E4yeBCr+T)0i+Z7M|#ipJ`t|?-O#nhobD6}^iz=mHBhWgP9(2w(7u^g>` z9XH_@Rp^_VMV*jxfu*u6PCxB>JW2j~TZg=2<vBjN1nbJEE)341bm!pCXDWCc-M{17 zR2qPoGa5t-ZEi3e{Bo`xqMThjx}<xIhSVZ>xDn=z1@q5cZWnz@Sg}Up8%6P@Y9ZQT z=55LQT_@Gw#{8aU`Q-GMiu>f)PHaumV-_iVqNzhtgCxEwp`k6U-qSFM)$e3ki&|x@ z;^n2zO$q2+yE({qTj@ajrK-5)1Q7fbQIF}Xx`#hSw-QX%_}w)5ho(X1jXm9^Hi~jU z*;^bx08@Rk2P~|3)@^3dXY$1&d$J_c9+@kR&2zho$bF5=Q}8Mpe*kC2vGOQ{K}Xtj zqMY(;cCaC-@WM?Q@W{_|AE7eUGL$z2S4EZ(|MRwDkkUqeY5sFc--Lm0aJMH@0b>Vb zeT}p3ColdVRQcbTC=X=%(8+*^$0W``5kH1GymM6OCd2T-k>08m*O$o;4yteKlzcb7 zdNrq$@0x?#fyqV&CiLQl3LV!@`vyk&h1y0spE>$h%T?JTmKblSrc8`T4=u9chTLS1 zDDu$02u!>lfCD<3h|nPPJ&vZE4^8`jB1}hQbl&606G}VG^Z^5?rXYS;UBVW<iPvt0 zJf;&MZ%t*SD;Y?Lg4@p`KcI-AG8uz=Kjqfn_&2M@GCZpGYO;S?!dLFeA{8Ou`<;C1 zMLi2YDMKV;o(xe<i@Xiv1jN!NaW5?N-h?)>av`02DHCT5_%s8bLpO7!rEz#vp~8zE zeUQqk!V}-J!PZ#W!){^Mm^p!1i=<%^B{#r{-|vdT051(-F*_(Hlo>Wna=Wc<?K-Vb zXo#&g&NGw`<i;*`ivCyl)?6Q|qI_+X;*4v$B)xN<G|u)QsPMVt6%K_Qe_SJ#55z3U zdi=bis3>fMgX#q8cmz)7r(FxabXO@?k=`uP_up0w0DN~?tdYt=A5MpkY?&FTTa%u- zSjCqK6fumc!vdOPRC?g7*}a%B(#Ear>9^2xo-44*<b6za3v*-IFIn8PNRbOr6%P=< z{YBsJHn-Yz@Op0#aWgUGH5B#ogr7z=;-}AA`EY%<BhPXk=B`W3;rF%y;Qa|S7&Yc} z$?^G+C0P=b{Pk|v<i0+m*gPskPt2L(gZB!hVz&e;DEuEJ5oTJ(3EIr#h{LDyO9!8g zJ<?nN)clo}Kz2tkAKk@u+2E!{$WbWieoHEW=laW?UV$YJ%_+Ie!DQD#E8R3sZ)6Y6 z=m43dmn@}b*G!feDjql`kTSe#oE-J94`QqYdqT(!F`>(79ISU6wuaa>kX-a)xoJPS zxS)y=Zzfn0ZDe^V5toe>I$;9-bVrffG}KK*@ha*^+^936wZ%00q2MS*Mo0CMwg_sG zCE}SNe(;D5iW$`upTB|!9Q=)?i8R!*)v1ZB&zmS?e6@ZUvVk-p(2N7C<kU>*T_8dR zx!~}Rps)`;pvb3Xz>f7za^t2rzZ_aCcjQaab85MH&07LTLHIxN^A)!;h`DP3uzqnI zNwL<ENaGAW75oR%0!9PVUiJ<kCL+(tnPB@Xbx|}P!e%q@i*0+O8kI2aY1>q^7{s~V ze?Led^yzPQBa*t-JOkfqR*itM?_X(AcU=finZY*cd#DT~H4a}6b>+*jb&*}T^NzgV zwxRP#$dHG0VgXZ}WdvRz5z}Wuu}mu&;z8vS0T&YG{S|3cpv##|XhOXwFG40<KjvYO z;FNoVpKS^D#M(IQ-t6hPAS62NMp(2C5^A`&7|KC@k(+r1=`-kvJ4UYXQz(ka?GoOa zWj6PbZK6m-p3)Tgrh1c2gd{ttOQ8lcDe7P@#|_IN#4MPMB=tcLcIn{);!BQ;k&{iq zb8n%YhtjZE8S&bvq@9dl&X2z<&7PbX5_L<&%*5==EK_+2wb#cxFACIjeXyYz9W_e{ zxXM+2|1Up}gDvvO^-hs1SHLFWKwoi0-aBOW<o%vm-1KoROnTtI(%jmq_g=a@u-31; zl5ePT25MJQ@Ny6$=VQLi5wU>q2{%o}ayf6HMH8O;rBm%)Q8VKyzR5N}7kSBg#i1o{ zHSx<}^Vdd{;9-ug`vkj!Iu(Z3m(b}N9X=^e2Pvyw`7tF54YKJ~0V@QaD5fHV+5B>Q zUO`Pwan({zXpn+qyW$w$VwHJeHtHzvZd*dlm;QM;;l!*@-b#Y8oplY!%Nf5SU2-5{ zY24}r2%%^*;6fhZuUmS$d7Qs4CoA9vE43GRnJR^W2ob6>#`mv!XA`Dt%14&(#?2{I z>eN!yUYyPamYryL9*u9J+h5_2kW)d&iO5}zibC}{d<X|eUmge!^om>@CWMm=^27H_ z<VupZMh9>r2VLVTdxIT(z+=s{VvpM0RE2K57#8%IBIPb2u|Wdrb*~}lbN&9dFiv@~ z)I|{a3NjLZJvGOoV=$USY%27~pDo?j$bGP-JJ{G!EDyHS-~murG5Y>C$vxyTBJ>-V z4DJLDgsAQvx)TYY*(bzQgeI+q@O@xaGt!+2mfjCnT^Og+klP(1@|-rsoKG@MstiPp zsE@?3)MCoX8d8zSoAQxfekDgqS(cjW+QKyv={=R1s#q$I&Z4%%(%#8{X(XW<=~x|0 z?#!k}V0$X!&0Of=)}cXt0FpMSaa$v&lIl!=?L6!$Mjq$7`AKrd&`Mvc4T)(TAXR@@ zXyK$*EZ;)czGj`J5_rFx&SmVw(p14TtiE)JA$mG$jV1t*pZ{Vn#(n;kv?+`v^9fW= zX`+iHhr3FonadBzsl`dNcR{16nH|Wgu3P6>Rr7PXa7KrT?Ah2dJE~|Ch+;mC;G%tN zmA^6{T8xCcvDHZ-b2U!-sAAi_Eet~!zrUF)1{W=3YHU%%|3B<~dE8X%#l#gJO*)<i z@X@H*C$B*zfVx)l;z&NW=f`-Pn)maBepj^v)+;5|@|SPHP|a9aD8-Wv|5=)1ffCks zCkvCW^{ccWtC^rfrdV^oe2%h(+}9|d;gSB>%T!&JTgAh}X?MUgR1~)7TBysJ0jWDu zNIP1pDqH?RP`E~VTYlBWBoiRRZ~5Jg56SnturHIKk*mM~hCmS;UWGh|k>{!XEqt^y z!B246aYW<UCYSDVf`M&H(CrZM$M4$!mGqa_VFZnjDT}c4BYCG7B_>)0QpA2^IZ<Cx z|3jd;oL1lTvGT)}U$FLi)!r;5LXpiL)zz)kCmKs$(R_i<jaz3*=fu2&<2TLxXsU7_ zu{itnE|-$4jf$<OM_1m)tCr`OMIMxIK+NG~KgPe}1F^**IhWlQqm(J2Y6%=9<iVJ% z2_<GGP#VpfsT>R58DsxYq`K6QnVc0wa!KcvjyuW)-D9&4-t=-@#NdM-CO2p~RTae8 zoTScoY=#$3v(Z4&)+d2;8JWdL(^+Dm5M!JDgNwCMH#%JK5_vrAIn}^QgeYB@<E=FA zf|N;}b>mhdWBZ?8IjWLinJoRE#UX&*nP0(XZ`Bm_?`P$4(w%fKIHr9VP~naF0_jTQ z5&B)>aGi69f8fF7Q1M7)_gT=p#RCi&6|9;8yH3)on6FK5rwJkoeojy!O22L&maQCk z?j-ZphEKDz;qnx1BpSvF@+b7QyMBd>jTlp4cuhqhx<@FMQEZ9n&RS!G|C{rxRhD*V z$ZWGC_V|c&Nk~f>M>OsBEQI7I2b`2=W8hF!z1<F?IGB_3v$HaK;G`?hkg>1`=p3xS z*HPyJITEJPUJ)m1D{yPO%wZaEl&<_(F)>jxlhYNOgH+<PVmZ}zVRpl69r%!iK+3C^ z$Y=WXHP{Xlckp&VBC=+63z!-QW102Qk=)NdbR&LRHk;E3Q>?Q7|8ycjSGek7o9hqA z#Z$WloWViW>5w;3n+p{dGOlrgl#ue1*mZn6c_ygy6m!^YwHwmPsfcs9X{hcP&B-Lc zzx@pPbVt9(5rIOMKKe?E|Gyz+KKNT)=yM&TS5C30SqMfnmWGj7)x@0lkIjtMNGGPG zzr&2D2?EJ*I1{}15SzrCnc|BVZAa0?nc~aV9PQvZ{kvUerQMvg!)636JA2FI*;u5% zq(vc=%;MkLL|ge!!4^p}p$B}EwjaY9<pZcLH+cbRh)7{U{(F{NSItPHbOhv0b9s{N zHjNKE+Cte}8_8<QKm07sxET6T>L>3nZ?YT8L^0s=+K>{JS7me~&TT?OwkGAhT^1{q z7ez*f36$}-LMSVZZDbiFK;{1tep7xN$4||Oj5X3(LbJfcj5&?7IeYtpVlAG-H&(|P zDriQwW@!X%{ETv6&GO&UE&M9d6UCY}BX<>W`4+zXFxPCPhkB(^&_IOLyk!NX$jow} zbL4NN2WLjklg3Z3Axu~{k9vyy0l{SC)j{$oXF0MEruFFe@G9piZZ|XXINrY~2Ubq1 zSw78TNS846FlKs;U<EWYBBL)gEs?D*h0%NEVUPcmXQ2FXeKJP}i(Dhf;G3DEY75z0 zt`Wj=7GHH~pcRJaj3kjk$X^f4m5IQ95A}xQxS=or-gpr4Krv$PNt6UOjqjcyWHDj} z$^)0j6V#C-jY}aY^Cc~ns^4f9wrHBUw?}`$>NwKI%g-OqQJ%yUP0z!0Fr=n-gM70b zhfjLH3R@9azMEFE<kE@+Y5BEFF|WA*&l}BiV##IF6U8=q;2(gBJn%<?j{Lh=WyC$U ziC(0r^$v-@Kf9z&_vBODNLn>qVpf5^Y64eMk-i$<F>YgkOU=MeTyP)mcJld2*se5* zYLbvVh4%zuK;25-S>!w^I%*vh>&nQ?2RfdSzM@`LBHhxR9XfSn8fSbeU-GOMoV3;u zVJAM+yVWFlIA$R<Hlr5vL^F9kC|KNoopdCT&HVZjEG#2h28@J*L}SCdv3$FH$TcYA z9dxMeW9)pMi7tNumh78@I+MEJKVBL67%etsHjL`wC|#FRYuO96GGNIUTTDOHrc26r z+gExW4hF;U0{p8Cx8W=;FK75T)^hdQf~Pj`-I}T?xo?%c4OhAQS32cj=!Qn6TPXU~ zMDZB{YQbv>9+ioqNwcph!$lbb{A?JONG%uJ!id+)&n#dn|N8|)PRdF=Htpu?)VB8F zWrX&7N8OO7aK#bwIV(;sl(y8#Hyj4N%Fx-iPco*2Ty+!sk#8gfKPKZ{9j=ivq52GY z>8f`~Dfav}c5Pd8+#dJb69@n``hCcYwg(z(@ai%@gegDS57(*#>+akgtUzb?Y2<<% zcelxjh?5VvDV~xJBek6QJj*PHV;avd!qR%~B1hyEnfRDIF<DF>5afC(A;Wy*UFP)A z$#V9G<c4}Fk#xHl@`Oz;#-!~AExY-7p&1$uVyV2`%ukCD3&Gw$rB(i-;rDGGMd{#g z@FXw)*;Z}LYi6fSVxd^`7gRd?O(ht|;GwQ*f!UN~vww*}d$2zTx((H7lQ@9HQX;}x z3p0EBr*L6TDoau_0RP_ichMm7`E2lObX`UrNjq}5YW*Wf{Z`J-6KhwgJOKgK#p|zN zdiJbyYl2;)#3ff~_G7`UQXC-P`oe5^%oH1D$$uZa3hA`3|L%gZT#*!_$d~phdkA4$ zdp)yaY2*=kmSSc$&*3G#^ji-xQa$@yg#&fTNy;MOAV=+)x)FpBB3+uPIVXtDQN=f# zV!{@a75U_U+%_RD_rj}VVn}}+j~1UnmwSZzf1e*GL-_ak!H6KPUlYk^s*!Q0D3`n~ z6@vIR1YDhd(MYTo&%B=2*I)WSct3NWDVjRZP0+O`sb8=0J)I}iU2bgo3I5)Z=TZya zi@8_2Cu53);EjSykl{{{l`%^KtehM5;e_eHkWN^TVf5B|X)0hm00~=rHj-MmxjI4x z+@Qs4*}9de5N-uE-1!$}%K)HTa3i22=QU_8HUBUq23rN-rFP=V`L2?X{=?NijN}hj zshN_ISeqH8^iS6p2?9XJg@sf+T(d#%#fgvsfx3=XSYMW!e5k)i?`Q9Li0n!C)Hxp2 z&V;ZpO@y9cbjrSmgyFyq*_;wL7F+uB$-(Ij<R;AvlN5=g^7%-rg3+{ApjNV@P4Q|B ze#oVeforh3{%Y)K*Tq!%?ETA02Xgo%8|{Cf#KJI}w<W_mP@Q!*30^g+!HYZ{1I!DF z&vOULe|`RJYDVCfCxrH>qb))grtsdR?uwHS_U8TTnSkwYS3zP;d}@)d+Oo4Lv9-CC z8I33*q7r0VZQj-969i}>J1ZA6FI~PPqXTL;WQFpfjXSy)!kMO=DUKUdP|Y!yj)LKX zp__gfF5L4m3-;>JpC>EW@wkJILwUdyiY;J*@H-KhheHF5@Fvab#0Wi)^P{L737lhF z6%0;n{!V%yzdxND(xwlv!d4Q(wsJtkZ)<sFP#o9Z1^)cuQ{5mlBrL|Vk4m~^8~6+$ zRK96!Jdm*4YaFF#v~o?Jbd2-FMb<<I%UfsKJ$!ZS`u+0#5|j`%Iv8RuUV5n66ti>4 zi;iq7XTmSBDpk}Qx}rnwbkPLTX>ss-1-b8u3R_yb2I~F75RCqy9UeBC9*$>o8iXq7 zCO29+am)p#n|ie@WRQ>gmE$>dguwO-NYvgF%=PJ(S?N&*`}S9B>7WqSe_<ncmx5Ke z-&r=dy7&kxd@)8$-KNMN=Sn-1R-y2bJD~c4;TpKorsR~Uf1mIdI}{y?DIPR@tP4C- zynkeM9vLPvl5-&=k3=9a_4#I`0py32&Dv?1;+$PB6)H4=4PSP98<EFP=vici1ebFH zVr&V($qWGM<$GQ7R!(^BB{(U%qur9(vQ5!FUkEVhD(aP)y^Dc@)mHQplr}u+8ndN! z1Z(y?q$5a&OFBbEC^!V&&q*R32u~V?L(^Dz6&*e4O4GRPG5Ml3<71$#j@wvj3tvTr zxGz*f&Io1&RdPj%wV|?2L*l4h<)AUdZ7$kv5eu>`rhF>+2CzZ7qCxc|{o)eVC!7C9 z3O=ih_Dfs{<CO7nR4Slci$?plE>y*d6Cdf4d_i9q1KxF6RIk}|DM*KNnD8!UfG+@* zd#Y$LV~=!>DQtJB5`y$W*9(ay7#4%m8Xvr)Pb77)YStEdQgY0*JJXDwqGDr=2zE=9 z8MJq=a-9LT-AG!u_qD6^>g(qu)x`Ofdy}s6(!J!Mnc?q|Qodzqlj<;=eFA*sGtV!2 z6bP3eMT=;_D;ZRG7?jC3cNAd?bbILyyKaJsz51Yp@^4w6rAsW%x(dx{B$-w%mwP$2 zDapn<bZ0E&F9vv1d8PuC0~!LYrKK?INb-@Ir!<-dE_eILMqi0n-lbS<ulC~fXbjbj zLNgsi03lIp#q66Y_bb2sZ?l~+esXl=T}Hi5Rs$%hGm7LDaBrKu%fOo*O4t(^Qsfk= z$*oR>7im&}mTyrMclLVeOtljZP!yF-c8JKhAFmvF)~@4Ug*k|GQDT7iDNcK&(G-7` zyAH^n_K*?|Q{HDb<g*{h@Qd@P1V032va}!LeFT6v3XGRXI;L{_v&wP|D&6QfU1 zMiLqTfnvq@Tsp)gL%0wmX)RY2Q~*mj#fb%8Uh<`eZkGpK-c%T*FQz*3Q&5$Pe#euR zeUbwYaqA7-;Qhr~Jb@L8vg0qm_~7#n;`1~Y-yD-!G`*GUb+u7IVwyFJ@^l=jZ&O<u zQt7|$&3SE#((e5_rwRxl9*%sY)@zeMiyIdDF{z|?^lBqZi-mk}C>K)$Mdg${Tg5an z{i<QbpZ2ODr41=vmxx74*t7aK%V8HEjE-lr^!6MOX|ZWz8mw&9HF776J`tor)!VYL zP3zWVVHFnjDRz3M7=lr;8fO2d^E2QtD~OV30a9H}F_c+gk?L$d6P8BPBJIuS4Il>S zx7ubT8N42<x76-qTJ7<-q-m88pw&uw#cSVg0|$1Qzy1!!YSNl1AwZ#*m+SsCc;@I3 zG?}{nyB9E$_oG!!&ZYoOvqsow0}$!+;@oCTH0pJE$}kh-J0ljaJG0%i({ymh>aqbn zND|G-eT(mOxinqc4iS18Varm2J!2j%DovWO@eIMB%$A02nyTctXre9JIkY|S8~F?> z)sQF8ikb$+{(r%aRW2u^ks!*LvOpj3_(>VqHDZ{kYOm#DK5FgM#Ju*|#)MD1+uBYP zzZ!8Qem$!Jpw^7rlou^w%9CFSB-3(0kE`#YQVV6A-(BQTv)7BOtN>|qQl5Wv$7OtH zvNw7d%sY}Lafm3N>Z3iR6{HRckR^&;a-{?k4Fv6k0}u>9Nz+1<uf=)wE71F!u;~N{ zA8FBrf|n4~<Nq!IB(V;xiUX%6*ivqP2iF;}4F45i8i}({+cS^xTRx}|h*dOUqlqT) zv?;Fs9|FLxuI2XOD5$}we4r7QQ-9@{LNn7yCKM%$bo)Oe&9u`qD7mCX8%$02bEpED zKxB9Z5oXBE51^gg({izYQeX`G)UQFE095<nAM8+)8g~B<2zBKvT*hyW#6s~5YQ%S+ ztqc(ia%2@YSKaG;fG>4P9LHhqV7zTNsNH{+iE*Pn0~5v{=*lP*3$b}&E+kJhd9V7k z+}|&gI%0WO`1wcQm!TpgMFfvy?^@`ca6>>p_jtUS`SlS5$e(5Cu#lFSYsZt@yhdN@ z{#A-SxcHM%E<2aKT?GD>Bxj}&g@ZAFL=x@~#xC)rWTWapf^2vWpn~eFbE+8o#AWbF zs@G~kXu@G`&U?9)bBbAVNAe|8b=dHH2q;_2#ZzY4C@aNfGnOEN3*te&SoOQ*RE>$x zwTvz<vZTxjP9<-}n6zh2(hYdM4zJmyrn}^@B+FjcJ5R^Nfgia<agbK&v$lH)*x0ub zNIy*Af41Wt?mfz-(*JH(w3gPn#NXjvo0a#wqB+C_%k<FRMkOdZSu;5(y$rpQVO$)= zjwU0uizl~LkbcLySR*LAjDcUaL7Sk@GY+TD=yd7+3Fj!MP~~~=Cg>`Tf1HPT@pFVy z8wOO0gYi5ZdI*IpaK2OxwYV!0NxUgJB0(^pKsuGnn_?y_NucMYp85*XPs<T)i1G<b zv6S3$fBu6U+1Zt(F8tulF;{0%C+trU#(-Uj23lv$3$cTG?ve-d71tLLU-dndn6$)X zD8C4IG}_L`U7w>{lG^s+^8MvCyZtSvy#JT$xL?u7Hp77Qugp<+oEC8}|I)LU?FmY0 zc(zHHIt%A=Tv_pcXTjP)IL9=)9ftAhb*!orxabo+=}Y`&SO2V%Cwh2y60>*O(RiBs zuR^uH@*RuyPoo3@0vM7|W0$XLDimp7!GWqA2WGV<Jf9ADeV7*Gvff^3lZ9CEPn5ey z9Adk$K4SB{Ecvf(L9IWeiR77|@=r&t-B{4^5G@f(R<8V;9gd-o6t5*G>Oq3}$lyEJ zQiXI+&W~aIj2iJEVQXbeA#4QiLb_j+)h7`iym^vz>Iv9Ri3k!*eJQIbrVVD_%xdw7 z0ARxC`DK9s7=pwemimHKy$>auc;X+Cj!1Xn+^bycF!dFA0DXU#a?Lna!_u$to9cWC ze3aW@cIXln5@(o|v$r@p@~_>{)=Ssf<*J|)T-290I?x?jaVw+9(Y)A#s23SL^U*ju zB4xlU&|{tRg-%&sdn*=9=*1++Oa1DAZg`n~Q;~gZaoZwd2izPWGHv-$RzUqqP$Kky zkW233I6?OEs%{o#d`z*hrio(3d`R^HjV^>$W_Zo<HWI_~Kl0#0z{5n^3Od#I*KZ5H z2$p<as)4O)wmS1n$iod&^z3~~4kqM>sLW;aTH5l28yH|pa`3w^&nSX-BglTYgGp9G zU^GXgzVvi{W7Pzax{llsJ?F}|Y8=DH5&SP|1s=U!?z@c_CqNvU(|-XNu?g^94CmSc z*pQS^Azb`Jb~=nUsX77F6GS5<&U=@=kt24+RVDedUln==yMd@sfL4jx4XRaQ^>t18 z<`$D=)?{>qYghf3F@aU@<W%Bp<(dL9BH@zp`w$F#w%f|7FJZsO*So4$a%f-q=N?~6 zGi27*0^}n;egv+-l8Bv9mJR3YD^oH7LFCvWI-M39)2NmSx^z+G?>RR{Y|7+t`yJ?C zOv>oY2M&48T|R#{m!ru!YLIW2>Yh_QQhh@3HH_KSInWiD#siTw{ZoyU8M?$FWHfvn zi<|aMpWmp@?J8!f-tYQQp^_}NsZ3D$nefB<FHlJ;YT3r>*xuszVO;rJhZ4M~;jXxq zia4u)hY3RA2&Mz{SC@_g4LvEmc;;^YNhO<#{6M{X8B0r=xF4rXk6#MmOntsrP;N~) zW0Xo4XY~=zw6@XT7fpv*M-IT~|2hWr^OxW<Eww{1Smuq6uAGX>ODUJ*-Q=^~juz)5 zF^e;9(L{<=U_bC}O$}$uLlY>@Io~&tB%^7Zd@}KL8Q*?nm4M13Q6%XT#6iw6Y4yPg zMc9E=)%#kVHAQ@DS11l~Q(Rorh%vnHmO=|@CBkz2@>V<IZ%s9Tk-5!Y*eRcM%6u=p zrtF4lSsIyTBN8@}1yjtwwuRxVgFzN5M)LuG$ql*kk`rPXO3jhBG-JW=@N;+A)dug! zZw_yiqc`JWRTppOHbpM`z_Euej5vO6o`mY<L3jdsj)}$^e#fk;C^(qq(3w5#j8cD8 zDmgk);?=U%n@Woj_F!#D7POXP+ZfkoQg^&*%={l|WT=`^*sxRZx9)und#LY;4ppvx zk_?^zu|)Z6dW6}?N|37I80tTpJ^*ul{L$G!fNbkkH2hVoRNrT0KlJYZnd^n#>d-j~ z`ByK~Zoxgg_xvW*h*bn=Ox%Je?)ONcgntPK^chVNLiFP}MpK=!P6oP>AX+^jenkWf z-G9T%CcaohkwSAmL)NMi5_89QTkV*sfJVD<8^Bw5mQz}Dbkvh$;5mIQ7v_DPrGShR z(wP2}lh_>fZyh)_XR54-_Gm#dDdrR)>e(gc5L-sgembBEA%n9n@>w^&fmo>`U~y;- zWIUNFB|K?SmR<fJ8pACHSv;-s(Pu7(B_DP?VM8`>LPkdL;0lrhVXB6P15bnvsQ<9h z;j`T^T3yhu;Eg~$(yryN(aBfdn#iC&ZHgCxNf`Pp^9#d68k@%TyN!q0cFzp9*+u43 zhft>$Qlj=%YcYy=>bwOYL_^-6u@1c#s9qxZe^W+a=iVh_#$*X3NL2h=H8DyLkwUKB zSepX!bM*g-zCdtyqHd&C+m>)V4H#iF<$(sj!ipS6+)SXdn;pEyrZMseM`jG{9k!_= zDkQR!%=FSJ(xa@fPK(O3TCP^|r9PSzGsOW3JEZ+q7+X?#wJ8V<y$nX(F?mV}ajNn1 zhbiVwBpJJB%$toQ7N}fEj7O!}#;?S%%)e5)Lgc2#$D*|x-G{|c+7z4S=1g(QwHV=# z=fyaMm0*<12bXF(GrMH_qb4n`{m_N$<{Nk!HHq)Lu_q=6q7e#YTGFW@SZG6ZkP%FA z-}6qDakf-Sp%I?n=+U@M<>A~}fh=cR9B@wKf7cbw49=M>!I>=bR*r&(S@{fyEN4=A zJJv(-a4g=4DM4QD5Xy+OHPia;@kWfoDCQ5$QT~B+n!ILKrhj;5K1NPHj3CWfgaoG9 z?al&Hldy<2`=z<2^JdPaB?q~&xj?X&Ecc;{cCz!~g}EXj>Uw(;(0MYf-Qqc_XL#9c zZ|;~oG8SZAK^JHAA;m(YoEuxA<a!;OMX=ayWnR|`^u+yXg$_9=t`@&M9c4gQ9=!5h z<jb)R1qiX{TnbO?SEm=Huig*iL5E(XO<s4^u^1_=G|^BDBkL^x^|*zgFJSxq*;xtZ z<zR{{FJ=&-3gzfYdkPAO!vkow!=DK7B%^90W<G)n;)F~<wyei!d4e8$HV^?hKlP&r zJf2la1nQ4Dq|t0FQ2vd;Rpk&rDCOd|sfK{%!m?NJTo3+l@Eg!>OJLc52p#e8SsCx9 zl^1xgVjBOFXRL)%{eq{WCe!UM8qTWWo8#OrUwFbMPm7<F7Q%l}xSjeM2J)0<Y}ff8 zAo(kn{xu^KriHx6wU0>G8dP4D^Ig5|%)K`3mJE8J<(H!x5g@IIrRAcbCE9BnZQ(YR z>NCZV-#e^Z)#HsU+mEbC^VTEHZp^>Cqtb+h-gSXo+463uJuD|TEw>pxfA?=~Uq=+) z_8yC>G0esKX`dXk4VAy>sa6}u{~Sne(;P6V&?S(ht{5-JW&N+vPlZI7`4%$(z$fmU z)GNy=2p{?1Y~o#RqLA0$k6fU4P>h^xY0DCzB9X3wNq&ExWQL5}%2_%)!0>wgBIf9d z%mw$E|M`#>Qm9#UI5gE49c0DQur`fUDEQaX7-#n6f|`!!a<Fk04W}d;{2_7dnHYlq zv=plJ7G!ga=1wz}_cC#EVR@$%8bAVU31ZjrTGFnQ3!^RQz4<`N-3R?e+T_~&)f-$H zZ6^iyF%P&@3C;b|;bzV>GOlT5I$3pYJKk*bC(`4}m(V_}w+Z@-KuT#}nZ|eB0)*;* zCa6i5;b4cd=+w)Tt4`ul7?vCEceP$bJxIE>qCCZI{pLAckhdIFF(PJDi8Wtn7fGK9 zyzlP_KKaXV+D}#yR727KbY}mdh6nP%f!iV<t~O>-lGjV>5P0;=t}YC}2L?<Mq$jQj zK$cIWm2l9hPJ~nuJ%y65UImiS{C{+PcYqXC_I172J()NJ34?%vAPgWuQ9xOe1W`$f zqDXa^?qa&Th7L2+qbP<oqhgpf;tCj0F(4*b*MI?Z5Pz!}R$X1QYmRH&{oc9vy{a1A z?;jjzI#j)S@5Xb_>H9qPqzIFOq7-{dO!%TJ&74zGvp)K#1Q#+1P4i#AG>6GoO8O?t zjMvW{T&pXyG&4sl-SH=i<iE6A2&is$&3awGW4<>g;D?$+iKQ-9y*J&h0slZJm8S&s zej(Y25|4cjhuM{xoRM0i&nDuavX2SkyQEk{ckiimP|nlisX*7m<GC&afXw4w>AnD# zuJp%zU~0REt;yFsTg$@)C{l?Yu6A6?n$~TND$kKxh(XSo%`kwI9@g$TP=Z_0LuFV2 zedfKu(hQAO$=XQ$R?Obz@yJVuB}x9=8nKg*!Y>@E7XGjuwx9gq{L#J#r6+k&q9KI? zWomY&BUdL6@1Ojgd8>ia5c(~h^?5<Y?^G9YO~S`kkN+mF6XBadA6jB79~LrB{&%=$ zqdbex3$G+u^lD#BHWvygHJ1EdsS)+EA@%CdJU>aqd@DT&Fwuu=MLUA#Jj_+mQk7&5 z0A@If#=!A+<)qt43Ps$OtiCHo4hX{xHNRyvF)M<avN2IsD^^j#p%I!Pv7d5eDu+=? zYN!zS!P@E)0>X3ksJh?Wo_j=HQ{{I3h}F+?&$0bTO<Dsm7E<$H|EjQ_-P>X?*y>A5 zPRNJt1X2sqV|4@}nr_;_%#xEwxwz&o_Y?{I*hhm05q7Dozdogj4Mb~J9iEH+;iNM} z*VikK%6JDy8Kqc=M&T)eMDnW6RHuv8M>HZH>$Ey2H03u9&8ZLV`7Y{30}GhLv3o?l z_!+4Jk9>CtMUnV#i9_A?f9lc7?b@<Q>+S|3h#2r=d^?)~_2pt?i19(NCn^!4=>5)Q zFlkmMKw8DQr03LfLZB+lWedtzNN!tNAD-Dl$E0RQW2GIV!GQA50paJuX)2p*k69vy zLq06bXIMWXUSW!G>Qc`<lu0(wIZ(D5!RW?$jmB-yJ`>2k%Jnq9x$P^2pSxihzTMWS zy`{>MI-Qh6gyyT7(yRyw7PlYA`vytWh@JI*bk~k(Rjrs<adVt)&SWAvFf7g$fw~|F z*7XQs(NI(eh?~U|Yt(1He|H^ksm|Bcdlea*wveQqA)El0l6u{eVw%R=;giCZ$YwhX zQ}^`hKK1ISCUul=>H)6N665Qkz#$EbEUf8n#C=HDtwvk9otVxK7hLQxU9*vViGX|^ zH4K~53KHSzz5w`&ykDH4=T2gHrmTc8_TisV{wzO3y`c6|rx*(G3w8CJ0FT+F;j0T$ zOns`wr&H^7K@@Q+71fg{-9@i00G(A5+$km@o-@@X#2@cwHR&Yw(9p?oa!9sjN9D-q zRyRdy+me+j?EBRZsB~d>FIF=q_S0gRiYnQBky1*~L0>$^BWqHzK-SmlLu<j5$e5aw zK~Q@of-V!s7|uG~QK*eX<0<WcqiF)bE;-4jqjJ~WdVn{ZY;R7k<K~1uyyC_yvs5N% zfF89-<a8oTLD8}6VY2r55`kyG{)olLrFH!l{PQ2U#sxb@zW~b>B{F@#F#Tp(hVm>O zI<7+$U5WyH=$W|MWP__#s2@+ud60k5dr8p4sfek4zh_EYpmG(UvQg%-Skms5YOQjH zuJ_f8uphfG$g&o;Me5o{@y;)zeRgH8qi&7I5;U!8JwKCR!gmgA4uf<0`xi+r8(PQu zq*ENE+=x|s3(z0LWjJItHRpyOmm!NFE}V|I_pB$f0fFSLK`5H75<~UNQQ(pP{$@Q% z3kda5)6#x*KCV0bTr$)}9d1lAL_!SQT$GtS)e&qi{;l|nmnQZ3HAzzJBhc$EYc7}| zoDt*RoPv;jqQ<t@ypoloN2feF%Q4r-Wda`z5PRiSapHKzbE>^X-D7cs3yebiq!d!S zA*)@@B4@q%y;=o2yMD!q09wN{Q~)Pq_|#ea#Bj-vzm+d)afgUmTrn~gO1dO>Dn>u6 zB9yR^h9*l9lyjG_(b=GIvFb*LsxmD0=5A3r_}+Ee^Vc?F8zE8>fBd7mYB=j&7v!lN zgS3SUBup=3eUX!Ks?vzdug_9_M8&ewN6A}nJ4Em=X%A<)f`J7gA*=zL3!VHK%6LMG zV~zv*mZtGl-Wf_@c+?Ymg9YL7*xnCid<Io;f<ydo-c2?u;hlPfV|e!*<)9l|s30=; zqa-)i)L%yJa5$in))4@`?dh78D{=(Q1St$wb?2wV@g~Jdw`Iu_^tvEUcJ0x}(;A<1 z!5W|RJ4$KwbMK~fM=-fF&km_?Ws#x3)~OR6Sc8j!)Ck|>5@73#Gc?<p*nCiyz{8n< zF7zY7xwhj^>Y&c@$>mW)*kiq&ply;;Tm9v92FsRu#~-MnzPhDV-~i8|K8kqteR`^* z^K!c?ki6D+K?S*3K>YChFZitP3-V2D6a%D3UGBjiuX<l?5E{_HzV^S8@`l;B>*Q1Y z_V&A?N$M3dzR4$&+BDM>_o5!+QS-6{ysD>w${cLJTAQs1^m%cO%4{O-pmpX_#}gk1 z#IRw?nU73NnaDG>bH1X^m6+@i$EYtk{?D$N1`U73Hgk)isHfj{UJXW%Fce^^|Fvi# zixjIZmuTT*+Er6Ps^5HNvMnh-u28Nz`)gCB-v_L9Fa|98<WQOKz5xB{Ek&b)=Ik{X zl$dHVhW3c>KEEPE{@`ChJE6>JmA_AleqO$6jY@#5Pnfvl(TlLv<~{{05Nj_(7#_}~ zOm#i%QokR>ZE_Ykcrdy*v$UB^L~Mj`r%Q);r=U273W?(I5`7L*58<kRdFw16(<65_ zoui)5MKp!NpEH`druRcWdgLx)OAQId$+EWB(^!6{9UY}wAL2T?Q}Z=sLWaG)*YSg; z$!FR!W#D|!66|Qj21ukT%19T8kwJ%@sBci6%>6Uq`Jkx#IX7o~^4!ln5k{*G7}mjy zT)#Ea7RXYWU3@#`q~1Xp6j70lHL*L&Y}Smw1y~Z7th6!r*WsodscWn`Reghdx!W#= z5Bb7e=vKtxg1Qe-&&Ojw2d6X_IS~Q<A0lXS5PGH&UV-Ar3`R5Qm|=>c$C^Yak!qlw zaMM|t0G3$2;*IgTtHmW4f*^?tZgWC<xR5ea%=t^}?elWpGzrUP)wl$a`-YWbnuI6P zsCLF}DLx`M6M`c}uU6sZ5lqFY9>IO{QhwZX*~O8)!7hLU;5OG1{?Oz0R{6Ov%kmFi z4YL)t=1TPZBS6AwG+XdF^D*)^v6o{6Oejr8`MC5l_1640uK>6_t&Ar*ElX}rrdFtj zS%=hK422ho2B$|z2ZlDV)H_tPHu(gjl)N(b0d--#W+MFdW;l%<-#FB#8`2+0y4Ip7 z=;ROn=l;B(3;}OPwZc^k95A;rL7uwMMVCO&ZgjOxnu}8GnqTNZB5HjA4K|Ez`GTNc zg-5ZVM|JPKyrIOem1tm`cQm{6puWc+1P8LxXi!Me3^1>C>|M$wR(V|}dVKqSj&)Z- zC#!R-cTLN|)vP?!ValNfO_)_P1&0#G<<v{-!@ykH<b0&{!ljPBMQg`fai$APxs8-9 z#L2P+kS{boc*LT(_LjQEfNSjX5+$1xN0@Yii;s@SWnJ}e7xb9mf3^%!J8ij^$~ehm zhlrW@xhAqs1Dae<TZ<d@X#|HRd#m}X2|H`n(KrTW&GpizE!NBq2N9&yW9@wx!l*;) z-Ge2dFnzeqU`STARw=Dtf)$%Tz+S4s<iP4B>Ld2KE?eeDPpDPoLv}1rHuvO<;$<FT zwW$0x0&^8!2q(A@mlR&el{KE!Y=789)uD0l?O7FPB{UAg$m)c@AP1kVY=1gSe~jfd z0&PVf;_x(osR&0LuT!9Q=WVy5iO~HJ0v5JUU})e(qj37yI2v>-$L2#3?__h$tL;j< zJmvfSaA4Wjl%#LBoeWLeQ&TX!EnerflPEtp>J;X>Xg6(t(iL3hDv3Kp#JP1ZGA$D; z;P^X5+6S|HqSu4Ezc_XqOs(N6V9+^s-a)t26Kp>TNsPV7!@(O4F|1zt34{)eQ)Ub9 zsmtO?*BmGH+wtq_2sGystsPwlqvmA3iKgMCIIT~bRtu-G<2gave=c3l(`Zgyc<uEG zYEupRMlJNMi2vJj7gKUYJm}Ku`k;gTx)t3`b>r=H6#P~3U&=4z?Q-W#Zl2<ovK8De z`$%irPlJ^`o%RcH04yitO=Y2_`GnRj1w2_-)YaNlKjEMXGxHE4T~&W+JRl253oCKr z>%Tz1(rE$kuJ=A!5up~*np4!->^*vgG*gFbS@AJ_Bo(aA+R3Q>b+I@RUzI3VYdte~ z48Ay_EY{!))Y43@Y7FwxsK19$)Q4Rjd_jPix@x0}3U{89VRE^Vo9uGSRQ3m>24gkC zg;=e5%#Jik63e#Q7}``~iV5@zBA#iKniD17lM5dILj$vgMiIuI#ADU{K84W7As0u% z`m5ISyh0eTEow=Jp3Lx&o|PIBrwlV;B7sD?KZZ+frRb!fEUnNCfJUkQ!@bV}ane3a zbmx<i#mqJ_cdRafiX`KGQe2HzP9m&JoZ|Rm#v_1dcv&*Amxz_esz1^u{}2m%5G--{ z*th|eE?kXm*&EHVIbCQ7R8;N66TNXgrfK`}L{a(aF|FT9?CHw9gr)2<S_SCh?Q?T2 z!l0Xj07d@%5j$H#up14x=Y!Q42MSb%tfM`kJYk|X6Krm~)fhcHk;CIU)B&BcK_V5| zcp&cX_A}!CGZ1H3eXmba4qE?Cnqp_Fy4*A_?z5MAC2kc=;gi-g7u_MhrVWDzqoWYg z^m`!Yq}1~V&fqm_2Zve<pk-ckJ*P7%Wnkt0H&YvOZ4%K5e(d#l9Nd{cJ%UQm)Wbfu zx7xz>8fI`2CP6r;AG?rXcIb@Ud^dGQsvq+EFveh@hc8+Q^1OvdgF`-T8w!R!HbS+b z^ans8G8#3i*0JN681+zhj8|j3_dT6cR;>8jIqHJrOjf1R6u;X}XWCV})g9JRNlV=S z3iZY+G3+lkuT87x->JL-3EVkfstC02zndujsCzd`$q8U8i(gAo>;AfJW`c1u&3=qc zQnUH6Z8Ryid>i)MtS7UjYAGJv0Igoqsp3H!h*@&!@s;L`Or=99w?M1MN~DK=l$BW^ z2nDxKnPL~6(=0oSZruiJdR_4Ds1-gYEgCRga|uLe#2r0BU<=LL!K4z@PYaHw82N}) z8=Lm<zX9N^VwC$Y%~ACs$K_O0FY8d_P})nB<y-#Y7D6DbeEc=s*_GRH7R&EKmE`<v zLaRV|)z~jq+0=+9(k=B&tGgC;|0lrm2NV{rKKw<VC0;`ok+~0ChMLRB6XVo(Ea=O% z+zJQs<!a?efF5G##~h_jdmzu^urv-t%L}YCO{SXPNxbl{*DyVsiV>c*OKp{$ild$Z z@0mK^&#TS1=`+L>!(%q_B`VY8qoWwUx;x*jNqX}C^iKd$@lw3A=Kz=S1Ke998qY1* z8l67ZTr^^rdPeteXbg-hv6z`jS$J9rb_!dTW|Wj|(zEs>uW_-Kb(bM6`f{h*SkKnF z#6T&_XK*VE`HiS+pqX<+O-Ov5u2i>se;*vjLqLLK-^*lvV>+=kxmt_w(t@k^<)hNt z{6_$sE&EXC?kZhi2!Yr5^nxEzq$`~DbzG8$&T<ADi_iZRq2j}tJ<zgv^i!<txp%|p zuj;_<8H%(kF%6@fg9GTY`pQ%O>t=~cSZ>zjhaz$}8X{O$ars6TeUsL>k@2uib&5Pm zXTGv0%T*?y;sJ0ro6KD1V25x3ug>9Xx}+D{hVp1KNOHT&Gh)i1Y1tt9UloDbQcvC- zkb+HKx?fEHNBw?J0>iH2=idkp-<rg19~M(3tz>%s-7N|`w%cWA#j=1%aOXUm4`2nX zwuEVGo;SUrlZ_%@@iDyiF*I@1e-CfS0y=)vFO5y16d@P#?TP{%6N%ID5xIA4tev%o z%Kgg-r<nD^Y~E{~dvaP53O>oH&vV&9-3b1vr-AbU{b>MuZ3-&A`F1kcn^T?()Xi!= z!V?O@Uceq_Gn#2Zmt3HULE#-C<0>>19AbY}8D_1t)>0E_ms9k=ao>j;Lxdtw1{4or zzZr=nC5)U8j9rMsX{~LNX%+4PS%lxt+Y=W=k0_q&2cz}#FhbETaB0hqU21FnWQNDD zS`+C&Pd?oZ89rjGT)ru6!$Rjv0;=Dnip6VhLKeO+aapw1%S!Y#^VG!!!A#a`i*!-% zY>jI%rKfMo5{9JQqb4<eak7cIDi9$;yB-z1i;lPbl*zrx$(j{MsYz_!KkI#~b>_Kx z2v-@Tb7q>17}mV!OZ7Cu%3B-xkk~X6?cBcvYkPKJi&8fZ{pjbDMj%w>w=VKo%}1mY z@|u}+tUAXMDZf}id*0IG>dEU1zG*E*4c;H05cA$d%JAaB6#qPPF~xNZFE4#QC7Sh! z$Te}Yr`7YA;sPR8YBl2j;MTQXjg$;bqD4%q2jcuJ>uF+3_I%gjoXnCF>(M;yxOgyA zp3_j87xPN7=-MP2E2MIPK^~ACoRm}P5DvFWwkLmKP+*-`d!@h7i`n2|K!nT8wCW2l zKRr@vBdvr=$sdkWS6KNq?0`4g##mBQjQH!rE-<77+9kF_pPP}8<m1|MApi6*RP0gA zyUF#Gk7_IdkTI^Kr2U!zgZKd8l44P<4R;755BU<nd)~7ROC|O3>CC!6>crV>kEnin zR{ry(;Yo>&4{jwKtrvc!c}}a%MalH)W%V96p=T1BAFJJK_Y34k4Ix9K+QGxLsneNa z;v%*5r>h%>zghMlTdifUt6;c>3{+O^xidJR@k@@@s2w&xe)h?wPs9j16x3<GiF&vF zKPCp{Ki;1WYUFIEf$AG?4{~L6U&9)1p=gRQuz<2iU3sc{mhqc^+Bd<JVbE8c@J6)C z#wEsxf~jvMpbTq&$mYq!<DVwKj8EYFK@&3gwC*Qy|B#yZ>Yas)V8q5xV+D-^AB>Ut zChCY)YhsKSa#992B=6+9XZxAg)BeH(VdSI4MR&wW3epFp#C2O<Ic}*Pcjv{}SZ~Y) z)5F+4D;OgWP*FRKe96&HfY+R|&Jo+qKvyDV2Ck&;uUAYd28zz%0D*;dU_Fz6lx)01 zefASu9{fvKnTqc*kolzwmlm=#U*v9Ba!{^|ksEdJZ+%vv;512%Pgs8Ix*Q|sIu9P< zWzg7V%j?wvJz;5@Gim%rW!zVHZz{HI#~c*2%9m5>MYHa|rw>L{kDWbo(}>=lT!lyL zChVttFrNBI^0WgcV>MbEut-DCjzsn12>y$DVx`N-G;NR4&QT^}&?J;X=lm0S*rFtn z9wUzHeIUx9qLnOHRgRV5ao9)>zAejtluR<tVcQ<fv8s|=7{ak@Y*EMcnTfZnH!Wz% z7?^rOUDeb>O$Uc$8!%l6bNxzR_%Q1H;c0Wvv%t(6Y4UV^VyQA1Onmu=bt!fKjb6!E zmlpyO%g0|D5v(2|#W(lCou9PXpHsuOo>&<nYtnbMBWUm{Nav-QyTYVr=ubt^mYBPd z;+Z2qLMeV#HqEoWeJk-{&e^em#8ThYT&7&QpW5YO`<ZTmxna65h;n$#LEg#((-oc{ zQ(-?GjytG<*H`Qsl9SOGeaG_KQ+n7$y}N-+Un;<Oh?{y^EQwyg?k#i+L9W^DT=uzo zu?+tb$*}arw4Vld2sF;sWp0?UTw1p-t%nWi_dqW1TMiY&=`e|!4`G^v-c9LtF=$_C zkHC2!djKPkH6eYwNiNt9`VheXmlyEzkzIoFVP`%W4+qRj*(xYC^pfK2-C9o3>i0Qx zy``+4AE&{IB*6xx_~7+aC{EIlN3Camh4ZG@Q>xZ|K$PT$84A<tbZDmvv;{ZR;T(sR zH+7GZ0-qG!#@LZ|GJxiIVZNSzM>rAf!gR5LX>($UzwkbXM*UgkV81b7v>x~bUBlLx zKkr_ZiTJ_a^h|J}I%9liaIQ)n{y0If^dz%haFh~=*m468Gaj1AaE%p3F%7+=CLIx3 zh=cn$uv+;$bKt?RI4;Mv+=^Zef>}w_V>w_w!AEK#0oM0#Tx_QDhgyQ=0d;b#d{2Fe zfx$Vv5vgoVOz#3-2K)8je^9muD5nQ%BZ-VAcNgccqi*k<*xp?d6<PrI-+`J{!?rN3 zWC(o*we5~uo^GO9(Yue15QV7Mbk=xT^4nhwX93quJy3+qUXgTokW`NN&Mj5xP!hYE zA?PWh5b&!AoWzjwUFlzy|2$(U;joDwb1TX-yI<sXQq{&4{+{n!sSNzY1JN?718q;$ z3Gt9qFrhS<u{HSa-VEi*k6x7TXh?aqVgsB8>$}ZUeq;QNZoWXBJyF8KQtFrE4$S1r z0y7r8i+8gg15KdwwvIzK5Jb+aAYzyyF@Z|VxgW{gEd2-qMltr=ErK}S5lXDSf#2;{ zocFn(W>ASHnaFqKMmpQ6P@106l9kFEmU;b2^@3BD!6w|UKDy7%O~LAn<twom+_EIO zB7E~c_bG??=+B5WmvoG4v<ZMF$OX1@mq29|=CgE=N`>LdS3Lal@A(3}<F)Eh&4nj< z9#jm_O*_k4kPjyi_Stah*t+NUk0CV^eWi7c7%b(;Q+dunpE`e{v$deMsNGH^1PrTr z3JXe~$<d-x&{29)s*KKmj}fl2<@arFEQXWI(FumP6+`;F(3+zHJ=T|aqDmviI%uVc zVEKrK8`Ld^u!!PT;GG2cUqs_25i|23wp8jW5EBd|M_Bll8}c5P5y+DkK5O%#MWncl zSDbp1TBO=LyeU|2IrOp9;vUr282d`Z@XD{_3vU1xH~ba3#sj|JSQ;2Pz)^v9ZN)xs z1#?FUk)c*?1RDH&0%E9GLX`BQ#!0sv{cD%-N0><l6DpxGlj)_)kzPEMN_%4oP+O<! zpt=DSIHPUV#C?e)QYDaQ$(ILQmF@W}BFu!y&FPw|gC|<@8sT=~7gU`v5GppTdBJs= z$qRTIt;hE<GESl~65ux$UkzXb1%o&KS&-GM3po1f7^x0eCFPVKtv#8N(`3+|A>Z^c z;{|W;*|c-3=hVw+iY_lkwO&XY*<XTN%vbl?8rN|Q2MJvt#*rCT2*>NQc};D!?Ict- zv^2XvgC<C)(o7qRN&iGg{@C@p<(=0K4Aw-7(=KE7GXlMrH3N?J_x>uARq=o2=oFZu zyqO!DZK?V(q`M_1sshFlgy2@m$vN7t4l6(Mh{_ol0L^+#^5TP-N9DleK^xB?V&M-9 zCBer_iH+kYERN(^bkRrsWy;klL|iIptRpQ;X)XRcLDt%(>L`c~byFS`M0PHEt8&#A z@(b#-*50V@virs?I;I2#Ac#i8qI5REms8y>&Q&cbGTXGKQHF*r#S#6TGRuyqTtkPW zuK9`izt6fGW!x{Aa^2gEgy<JlPGuX5Ahi`QHzTEdpMj}IDRN^|402gA+S#rPzLq=< z0sL`~ZzQt;j+~tzMo2Z9#x-b&R9Y|Pa#a71kvX76CyBsbi*tck@U1w&$!47BZHjN| z&d*ZFy=;aPN+`G1yD{(Ob&<Uw0w6>xl=-cT@jDTtEjz_<@Z(Cl?L%`NG+tmmc%1UE z9v%Ux6b2*cZusGSI7+%^8@+P{O|gU*7Aah)Ix_xy9p04W8LGX153>Yb^bT1kl?(2< zxCw{@o+6IODZvL=)~NrRaHShkS%JYgyF58^4M(BmK$bn9_t+-|vFh}ruPCq82x<`} zf)$N1rt<=`F#VIXOu62OHBEW3bUNv>|KgxpVcw)(PHi06$Iy;u@_$R;#=|-F(>TZ& z@>Il$h5`sIfx?5@V$)Z_`5ZPV&i>XdGFPX1?+-l@Yfl{#_2UAvo5U1_IQnJ2Pqa6# zLgVCx`B^=<K%QF}2Mi9C^ou9myqW*P;u6JC&v&U-_kZ!MCa?j9$>6>{B5z`YHXm4i z26ig(E#OfMe9Wl?p)0IIhXh%F^kD1CTvSX3O(-;C(MBE_z{5+p71l<jh}J3HD-1Id zx@2F%>S!N`K&10xGE&8WK~~?{t*8T{C=pTCsl__us_kK>VBnaJKPNEQ4X}}}vHRa# z@=iqR&&=PM#W@CE79SSW$!=c&3-oReI?S+1L{voF#G^mQeUf4(E_IE$N$DmE*ReaR z;h;pT0Z$GKgK|+_dh~IdtJrkulOCp4JeTg<f~SC12<1-Q>u=Z9j!`vu<VCLj^t(T; zCpbK{>u9ILA-(#98%k@rG+C1YG+(BGauwHhNsu|z<ZmhnIgdufLk6U%_eD8Cn|H0i z`N`#}l*e#Z(TKcZXbukSvRwu5dC{RE6c~*XC39q~hvq0$lw-5Z^U8(JgZ^WOO@*mq z0m;$wv`$$+_3O2#=LxS9*Nr>b?_;#jy3{#5$ClIG#PiC*6yDG13+xNNgO0a)vrN{d zogDgrU_e~@cKfM7IbgPC(P|eFt7G6Ptso*`?jwo~d_mK=lPj1lg2(>A2R26799)hH zZT9Vy#tO{)Esmzp*|p4HRrM}uqoo)?k6p6&gO{5<RfvAuFfp@v|6CWMA;b(Yv74XJ zzX6Fbuw}}F{-ciOb%tF^4e(jdFzZE!LtvuzUkE;SSjliHHIARefPA2{gO5_*^sMC) z_9EpMY-<^qOR-%o5qU__^TKr4l=wZ`aIaHgNJ(s$D*UI8O7KUZxRT=2;myn9yXl+& zI835`%NtG3Q9Xm6->siG>}{rvixK<l^D~+RX(-EnONmRa%RMn>plDUG0R{*s9vWw6 zd~{&L7v#EI+<`|j@Z3-8GtXK}Q@S00z?4>s$o?9#8oNb&*Chy}6FJ@3+H!SLCh^0j zHelVSUTBlM@S*oAE;A*0fgz>@Aqi5fo#HVSAxxn$3Gp`--H|-)L9gK7bN__cXVI!S z-8t>}@E1s^Tl36gnC1D+|DhFVXbM&6G_MJk0yrDYPubKUL)>u}P0fxxO?juds5j3Q zyQ>yB&N*imIq*_xWyYjXI#dJ(^Yf<mZMRX+cym9UY8~M2`p{Th*%7s2f>2d$q{Jmf z*-OZF3uS7*He{jKNmPrI{}|T{K3$mN{K${kgZH>Ese%`348_E9f%*rQkr}9(j!RNy z68>`R8fHD>Ek3sonYXdU68ie=e^7$msJ?!3RjxpdMaJ1wWeWTFbz!7IQgq$D+yign za|<ZpsiY_@#hZg6{c#1X_VKq-#k1TtLSb>U0)Ff@>U|6*wX8^$LN2x*521Hi9Ht6$ zln=az8(j07p;jXbCGfBN2Z&=(60WgIT7c4`0WN3_WJSu4vmR+RH4AwsDz6R1iaFP< z^ky{FpQ0ZqpI@~omGNT!)}mG&*-Mht$VW@-;AZVGF>@n(m&duU<`2QpxFp8;)LL9z zuVV6VyYU5j9#-w{cB<7}3?WvqKz+CT^9U@*!V}eB&OeKTss10P1G5h_P7sJ=`otWH zhWCmp2kjrMkWvXpeO(Fa+9RW>JoDL<f0^`UW&;tWtZ_vPMS!VaQ1a~mF``Qk0!B3` zm9dB7i6q&Ulotp%#>)4up!wo{{nbnVIUYskm=8+R%chN?2biuu2<$K7kY@s`n(v}( z6;UZx-3?Oe1z)Mmqj@N0>dGF?_*(7G;|Dfj;ftk_l&hi-%@YT#4#eghI4%@(<?*0u ztC<2;((reD!nz#GC{%*ai0SK5PVGM4h7CC37v&cs#(K-@!*pF$H&9Dfq2RK-1@@H% z<>)jXcr9jg7o1LW_9wgM=Bl57UacOImg1$$KqDuuF-sZ{clNKbnNiJ#7M89!&QyLO z3_pJMcc~KI*#JwzDR#l*%e@oSR_$Af4?5;H3in)ZuMv=+pT5e=Mf4sV&^>6b*1BcE zyn=t_@5&-=zR9B+%L36=^}Kkhfll{J#>|R&tcrBV+&mXq@R8KpK?y|m$%P|Qd~&Cg z&W4>7>X@xX#AkAQMt2gZd3$!?xC?LCNcQR#r*<ej!?8axI;MJFtc-d_sQlDCw4C@A zU8bi-%dz_*9+jf#^;8{~-t&~bN^8V%aJ+{M$$+J3t9lT<fbr{~f_2gBH9V)<J5(+q z{(66)nt<ypKO@O1Dv=l=hba&_<vS;2@#m|X-gqlL@`Y?F0$9l~q4;wNkqNa+KjI)e ze&=r)%{?&mIvbR@B$&}|;$Cg1o_$STVCoJPeo$c(@g`)1*r0V)CjeTQBR8dJu9Aud z)Ce<@h^Ww1oQ32Ydxnf@*mcMXD(5errsRHP-emFW2!(55@~wvp#KKr41|jA;xod>M z4HReq^|-&d;J^3r8B_&=f%M;%33RBr9YzS&k(+Fc*@;dsIAny({CfGd9u%C?*%@h` zxoVB{^-9>xLanZGWRpf6Lr+at@{|`C+gxlZjYI+bN@P%6y|0PlkQ6r-3Ca$f6QU5( zR!*b^M`@3AWksm<DHp&{EH@_a8H;4K)l0GMnKZ6v{K8Z@XUGvsT!!z@6G$*^e-C(q zps^e~BuCTtW=oZRm(s_=xI^p~3T3pa8Ac#`U*CiyQr1y(hB0^&dyNzb)kE{B{ZxX? z(?#0di671csKck&+I_J{n*Cu}OVDm~T&ccw?dy>9GXlU6&sDaO$AYZqiY0rcuH<|n z7KFZ6LXvFW<iE!OqprK#A!kfC=SzE=ELM|a!GqpA$>!m9ap`NiV<fE;N70-rw6D$j zW%lxUqBZ9K#;ecSbna_j@xaI#8i@uQpEs;a00uEKE(sVUuJ32EA!ZSwss2zo7tnfp zgy-!^Y>F-W{C|F589|w)0sqG<QnRmZGT(KPFq$^!qElEiAWzu@OVL#B#%XB~M#1>} z)@X?xOD@L>wT*?LYooSy&AxHg`X06}O3mpd^H@sE@fh;k#@aHG)dZpHlXp@zht4Z^ z7{<Mx4Mj;Xgr>pe;Tuz!tCn;wkj+kiB+e7TR^O`=W(-Omet(t<LkarU3=#n>Y~L&6 z1Vn)UZ5v^G$^mU-UBQqxn;;Ne@E&(SzQm4`PO|!NNGv<dBG~h>M*8eHT{s!i_dr>& zo73#~3sDV9UNTSZ6**yFqE<TeNvF(CLWQ{)N)c(&4;Q(D2cdV2#jJ&^n={*P(Dc7z z$*~DZ0y`{qdc{Is@o}#@C3uio7VngYw?#|MP*EhUyXCa>?>?NT#a6-3(M~At6o_L@ zUDGX&%;jm(BcmNOR`8lHR%yuqb>-2Jx^<2BDc>hUn*cXcORdjKFQc4Tj{QCvj^!w7 zi*lV0iFnT^l%>tfC_iG<mJk0sT4`;wvoP>A)o~|FA@+{3j!b0ehXVhLdRzq4TIRDB zb#yfYpR{)E$?5U$o8HQ6dK`6(|AxhKadF?qaGkjjt7~m~GA32jG+`q(F4R4<G=ojv zVBye|OjChaU0h06NOtXs(L(pVnuv1f(J$)gR7f$Riw3~wXk*HW6QcV0t9QMWF`Pld zc@~97`iwP1^guh_s9)k%yH?pCY{1%L124LO`}){%$6szUb)!axW6ipDjAIl%N)IJT zy4LCwB{Ab;+sTQ0xP~g6v{6Y?J7Mx{WV_LjlR_S9=!q9~#QDZqJbM?CHt*`x`zxR4 z)efN@S`#YLEg<N;cTxrr{zkfjY$dM)1~|Jt-Pp`GB?eyZ^0M3>6?IyEgZRc;8(Al| z@0B^N$-$M@J_vVhX-1m5Zf)Sgk$UNb)fx2}u08-!q8Vt^skv8a!eL_szIw3#moJIN z9Tl%CzgJVkTHO<_Q?Hd1J5uUX)4f5@r{Dv+91ADuu=tOZlaA6Kq;^%VjECj#dr_TJ zKo@I5u{@ohajzHr%N8GQL8pDfMOh!iANI%k@Q86|VH>DitYw-OFHLocCVG#$wx<hp zhDOcc+n9Jq6wHHqv&)IwNX%Z0xe+P_%6`0F5G|T6VaM1Q?Y$Un>`CSMa4h3y&2nta zE7w=kM?EO@Tn|Tkq(Fy-#0J;Jv_aUlCyQ_h)?i{EkUmN(dcFQ-nm@D@2O@Drlo%A- zMi)?0H_9qFOa<j1>KbX+;xi^)i7fw~d*U8(CChE8H5vIN<0eEiee%Soqk^09!l4z; zaloejK)n{3p#Pz1iCuf5XvIhpDCWnI3}y0oS0ku2Y%13Dk>X!JJCyp-E}V1>Tc=6o zS$by_i;^I8iah*VS0<1|DI=<WeW1~wsOgfS1yI&Kg7cXQJWpi~_y&M~cG*3sj4Tg8 z9#)Kzkw~}Jt^y?CJxFgCWHwJlU3e{+&PlWA>kBkAraT|Z(=VBamFW9zG_6C>C?#tL ze4h$Oq7B*5a#FZ$JDSjn>buzOkbI^j-^*J$s*j)H3?suWCxTYBtY4#GHkE`oszUd6 z11boIy`O^E1BN=XMQP_{3VZd}Z{RO~xPZ83A&sEEX5US4sSR|W)i=N+ggh(V?P*ww zS<l$nFuDwt&*wB>sU%O!jJOo7Dn~?^LLr~e3TE|G*SQ&%iv1w0(_u?s&X4F%e8k6J zUXW@JE@uu?_3Nv#NF3w0Ha1``y=^we<mf=qGHlMmZRP^gIZ`zL2BLnt@%LA#_%4~^ zL(20bbfxsGZnNV=j*0E}>2N3pOw2|ye3@_NN=V}qk1<5MGnNso3Db5o&CRWeRnX6{ zl5iGO!fg=j6tHrYyHmV!iAFk*mCw>?8-lO9^crH#uHjAmwpx77T$aqkzu&(>R-zZ} zZS}h*VF*ey<kbSRJLJkku!u1-ugZAgMS(3n?sa`8^TD0OAq))XgmM(l`yp^S{E4hq zXhw9DqRkl>MJ8jt9FKI^rHPJ=s~dJ{y)pvdV0!F`tKEitp{YoBF#lpZ1n|$L*SNH> zoBkRzb^^Qq>N*@9l~0Pzx7yJ}GiG*DBMLeSn!euAp7x%badya_@GT|G2E?nSh&}1D z{_Xn(JIYEF>a(>ZTJ;S%LX(hnJ>nz>p~x(-1NC^*1@>zB(-@Y0>(4N-Yd?)4sDHoU z6xiH#qB!fzXjq-eoQ~RR_En49K&O$;=C`J8^wLN4o{b633ZOn&u+rG#*V0rBuyxZ> zididYPq|sCw%U=`HLEvHF3Bj@BW6C6flP$@?S_o;)VzVP@>_mGJf}R--F)2feOb2u z-_}zI(@ccMpb~~}p-!QkJgJU=n92`uK-EZZq(P)-ND-pvW5D#N=TW(fWHJtPi5xnU z<p^oV*fbq57DV{rO)Q)`HaZl=&N&<hvTH|<--oSBg`h2+IgRb3zy$QfyYdvBiVJ7u zwNlcN*Q0=b(e+8@I28#5a-n*`otK(JD9%+Ga<-#RjF7n?jY|6I3vR3J8-4~DTDt1Y zIHfSrQU`x9DU3=*>0{MBi_<U8`>D%UScP4Ka2%&toVtiR&O_jJ>mPD^CoW&vVE~f8 z+u>%tl7TlmC9M<Y_*qTq-dT+p`egg8W=ao})ll_n$G&MD<{sI>%W2fLa!#WzN+qzI z(TE4`i0jzp^owJDKJ!&DpONCDV;qyosE-U}GB4a<G8uId<*Z@0a<fTaHY`J`d&kZ! zQ$yQ5GUYItbK}7*M$GD@vly}Ndq0aIk!7*?JzLP^0NWUO25@3;<S8%Puq<wJ8<l>y zMs?;f^vP&2w^3^!Ej5^H%58w@vzg9e#{gSvgGw>`qDV-JyLzb{hcg>C%R}4@51hIt zwb`&NnA%X+N^K5_6;#KmVJpgusH)6g7B7j_1#=rJ{f_>U+qY@fmnFo?>AEH9<vd@( zfKQo-=xEmgDi}cDNUZxdLCKC<rvm>QOm^_$Vo<Y}?1)E7O|o-eqo3>?^{P&G)Ro3) zzjLx960cCQGqpOe7t~L7IGqKRx=wheOw<XF`VvZb)UM!!M~d5@z{L$}cFLnMo$q8d zxk%_1e*4t>qB=R*P#!18mZhy||1RIb<IMQk4)4^VPv%X=Bf8bwGMd+$psKFHOMcW7 z3qu2J!^w8MebQ6XMcKy9rJVH0&R)_}BE>;}`5#G-x)+;0^zFI5Ql8T1dCe*13EhHj z_q2Uz?B>Z#M?H}tez?PAJb4^VmGWQ>rVaEH9cg{D6xaH|?RLCfl7qIzi8gOpb*@KL zm?Q^|ANNs*x*A7HYFSHum+J_53=whWHNYiT&~NU1Ri2W}(JSE~#{Qf%2@oegQ$rcD zVmzN$*)N#=R6jvfQzrYF_6Q4{-j~mmF|#-2J)v7T?@>>y;N6MF(A+{F{!#nfr^Jl> z>l^0W2aB4fLzmVF#n3HTokC2TjGb0_AR+?(OAGn0Y5PY*E|Wxh$<VaXT#SZKsa>BU zMk}2Rse=?uhNhj3tKRrY+Up_2sQRbkqO))EawK(3N;p6I!++ocr*};SvLt2pV-$xz z63!z>Qs41)RA)%6EH<c-YYNj=VP|c6TW3jMw9k^%DKuG<+UdxWrgvoIM%%wQpgHQ* zjLwRtP1Z53`iavZ+;xIfA4`!0sf+H8b3gRS1V0xfLV+Ym?f;MFJIrs6g?-?5PJ*VL z4ZE@OGY1975L)N>B=vDqF2${ipHhOk3e|02U~>-i!VM9cN%I~n3<U3Eq&#x^%YMo; zJe0wgW=ZJa%Aro7UFkKM#TGM((3Bo|&VIhq+0TY$IMTH@AxoE2E90e+XkEg~dUg$> ztVeyF$$He!{Xha!!0HTa;6)sH4hjZR&gkawoDpq{^IDyDxzMzsJPWvYF2p6|5fzTw z{^ZzH9)#HM&x4gYSAU&VnWmt(GYwEi13A$1&>y&kIO#*S@egp`oCJ*!!6XPoOeh#r z5+tV{Lh3xU>myzoG<6m%K#r$d;$}$Jpr1f|4C+F-SssyH_dNox>31VdQX8zGp0Mkc zUP8A-IcHJ}vnl3fOnc^2#<c5zb{W&uS%Hj6{jZAs@_g(Mc)>O;4wEL)uWE1MXEXJI zI&7%VBHFty#S};qoC9jxdfCygK{z!#_D6Q4e*XVvN1d-r(V9vXTiyN`XGllAN_!xJ z+(;fZ7neKzWXg?Hbnr-ucJ2o7AIPbfb8fU@Sui)kPRaYp5G<NbhRo(3`lRlZn`DS= zq%ylY8JdD*sM{nYLsJgqWJp~}&x}rjez-SDB?S4B(}B_;IkRuQ6qg-<G-yUQq(Mbt zm@bF74l*HiKQ67l3b+yluV#XSR#&1@pbQd$X@h~H-T0m|Q`0Xfa1JE<6cR!c&|zyt z?uhCD##-FlF?XllaGts(c|Zv#L@KJ&2@$@)Bt#(lht<XHO#hS;qV=Hqoc<FMA~}5u z5~3F;VK$TC8ZTwR{k3wlPKu@!DQ-MDiVaoM-2o426n(QK2b5O3^k`6{NsnG`&XWn& z=@GtXucYXlA6xvS=%}7pi=!@6Ns&&7j@l2;ykue_kQSA4TJ*>yq(vqrnpzD@(D1Nk z36aw$=V^(X2~`(kZ$p`p+HIT}DcjG{S0lZ@0XfkNH|U&bM2K>tKeo$>)G;LMHH&ki ziM@~$sWal|M7*C)pUctz9p`aQbn2ySKxJoTlBXT0bE1cyG&xbf<#Cy$zVi1D#pSHU zsv^?}NADF~vL$L`t~_Bm`e^mUBp6zl@*1!;U&VArF=CXmy5l}{X!0h<tA5Z@U4$D6 z2RSlLy0K@N<{MC0`##jz$pV&e?we>IIcXBm^)#lb(HIgXD*1W)gTYyCdMVhH17FO9 zxhJeUjd<?kzUJh~-I7t};cq>Y#NKe>7YIN<-jp}<myGndlg8Yv{THHE*C9*8sxzBg ze4_8_5?_U^t!SWWsSF{!O8*)ScFKHOP|{K`+@P$bz_;uvwUnP>q&U3$1g0A-oB`m< zj2$)sbjYTTeyGv3Nz2a8XuQ~uj}yS-clb~mGm-lrl-GE@btk5!b<TZF>f#FbkceT8 z+ePb(-Z~gO`=JjaKolIkzRuA9Egl0F?PXu*3QcO6MYq3az*?4TVu%}hK|EkPINrp3 zbDE?us~nn~JrnzW_RJ!WU5C9t<Ci=#gpZKkFJ}x^{~WE1@9YIlU|I>u22LMj|LZfr zVWV6I0xA4Ec1<1uKYa#>(0Zukz6;<@M^>xr%lhny(|*Yq)QSb8Gwm0iE`4Ehw#3KZ z4fs!rXG8$fDXqf?sQ`yiyHazEtmwhuQik9YNUa+<OuOt<dvD+z7>Nj6>EH*lwEbRv z4qNKjn{9KaJ@6PX$S7xD7AJ7O`suo+fV#W179ql?-AGS8!N_tk?92?P#{f$RuT47n zqR*v{3dUDVWJRN}A~6wl?Ah3W(T6Dbw(dl^Sjt|XX-2!MTX2I_w_#DLZd2LVZLK*S z#DHj-r8F9eQ>E$(i0X;n_=y;&&c)v*C#ZI<ZfN*{37qKiLmVc-2MnCJ{4Tgh*>DVg zg_jMk0tH>qtD;aaVvKAa`*3TINH*`2jT1f?h+jG4O`64eChq0F#IR8EZll-MKlXZM zFuwjY)_`FJ1N=y4n#k1A5Ps=34P>>6Fp!4c&0J$RS|@!LNj{ezIICllxM&SUi2A0R zTqDn+1!g>njx1TW19qs77;vvk2hGe_@mI5w!I_Ja6vifXs!R=%VX-pEYxJB3W~+TC zWQpmZQPgW7*7+MqS^IQ5NfDBIX!l!#Y5c;&m5h1Q=4&KAql&PK#{n!7PO}je1aGTb z+728}xN{~x#n9?|-=}>#&YtCl?3nBrPx{dKsy7ZO2Cc^L|MQ~lkFzSfBk<W<pgbw( z{5L1mFK9p_68DF4Z)0F2?Z>y~Q1xwOl%~-C=7gg4IjSTvK!_O6f%--A#YA}H_eI!( zBGW5#oC;A=f*myjn3a)NB*DMrXySYt#UyblG4N^7N9-Z$R!m3(#is(w$66$hyh)m- zbIGVwOsSI^p{jl$AW*Wap7szoEda0~L8uxj1`lfB@5#6LgElLB8kJ1$br38}GC#H0 zG!rL@AWWg|DW=xwz1l(Dlr&sIS%$KR^(rE@YSnA^Tw8~_;e``jZ)(fh8dVE_{s@}k z&4BA)9n%EOFOmNVJxO&zty`(*0?f{50k$a~wRh+=?-BRL0Lckp>DzxPqRTBKfcP*T zx*!MJ<ZTJq->FXjRPu5iF!Q$b<v}F|iW6L!%ffgMpxTI(-4<c&Y5$>hx(cSgwj=^% zJkD~-^RRj)M+Ziaa|LETVk}&HwnL&fsd^XlyDzGf-+x37<aX4(um;?Y^yIloDS=8D zW~3{^5onLAN8hne3P5=47r6XAdXzI7!VR!-|KgDplp+RfE(CZkusZY26aoYgGQ54m zqgeTyOM8b5iBfHj;N=Ux;dE=&n)*sFgg9&!+FIKPoz-!rI(&cnOb=Ky47I~su&j>_ zCs&Wj!(H`um`F|2BsQad^KE5>X47$Cx-V#efj;y)$0vEB2VC5h)-i>LG=0RxE{Ffb zF~qUuT-{hc+K~U+(Ii3V8p5bNHI8XA+K{+8A_%NFoY~J%37Y>NZu8|o+XO|geqI^* z(?($5jIMSt^NPhReB4CDzqlWwVsA$E3?z6RA8tgTTRF_13L&N3&{oG_jR=^v`0pAN z3(}5*W~C}I=!yx~C?>Cgf|cLWoWt@{S5SR!dlJK}IfG|nuK##D&1iADfq<pbT$iWm zNVwN~ClDy|;slw5IIyHDE(^z0UNvfc1O8c|0?;m)rHulmhbq9R^*QJTfeThyRhDMP zIt<BeuMwh5#jE~Etq&w;u`d9k;>mh&|58#^dW{pZQ?6D4d~<q{64m+=J)5ATsthHG zrDv*zFFnu=(T{Eu-hLWVL~11NK~iz!pe&6atGhX<(gqPpoYbRfu%<jib+9@zdk0m< zb;?q@6p^(9H2L1-DF;=i_)m1q246trBuN4lsE_t4zp^ydSW$<O#3XppN|U(X=Jpy# zOzoUBJpUT>R$y*O*oN&eny=D)=|tSn31i6(&P5c~iN_5WW86^e+HQNMfwl})MQUfj z^7e44wn3mlAO*>u>q#OnfLQz@f?aD%QeQ+!Ujkt*F`C7Gy0i|tbG{ocX5YBoO%uTS zxM61mDf&3eNkhDmB5_1PawLrfN)IQQ(_4h+Mrwa>neb7)Aa-~(FZmY8Vt4k0%Z78W zr!?jOo8J}4<gyX|;5<%fhhd0Fwli(^&1nX2TAOhydgYk3ok&|q^i|#DiC^PHLMKgr z@0R(+iO1iGNpac1W+gkX&iOMewYS8z85w#+f#A6%C}T#&-bAa)ta5}Ut<MhQAj@qG zKw%$gvyHQugNFt>aDr&bgX?Tkhk@<6b~znzC!AQJEYkL>MnsrU=EV(&n%U~FlZLBr z`*IaSokl;BP@#|d?ZCNv&GXU%T3fx~R)~0BW>#=aNCAGu#Ec2_<bzBHb=E(ciM=DP zMQD%}fCW+I;(6S*GC|!la5DUjFlc478NGAIDNN66E<h#WY3-T~15Rj#I`jp}!_Sg7 zCSjVaZr>??KoHM=vr7y`q$nLqloMk*sL<=r-yosbcAf)`CztDY;q`uuym^P)7~ohm zn+K<8PK-owR7xJjI<2HcpoF#>r#;HBj5`>9EJr)BY!wF<^UOkaot-fcw)RnUa7_CF zUq^xap>H`__)t7#XLz05T1?jF!&W<OK%&A6{eE+(#nX>MR6QOK**x!4YT2efImL+K zMu?D|f?2(YW_+Hi`2Z7#D`QL=QT`;@)nbi;Ijv_GyoiaYFDPOHxksGYrMq5)wdi$> zO#`Rp7}#;)6ta1C>~nuZ+?FD|^4c`bkx^@+w4FaAi)6H4WsK|n`F3PB+qc;q<TAWJ z<w>zkKf@t`LY7!9Vz&Nq6{|O7y~*<c4~UfBpgL-1pKN!GKtjnZ_3Lft=0lc_`r21{ zJAO`>-!V&4B4d)tI+ZQ(>;prULR?4NF~FrdFInPNI>6w(y6xfw2ZQ6bsJMo;LXRa; zh6|o07wSs!!Jk=v2vBlx2=)52Tk7Q|j$4B54DRk8Yf_m;s#C&g(SA}vht#J~OwRLx zq~S}T;>VB2Wwg0;v69u@)yK!P8QK|Qo{G93EMN|$`lLt#q#<0xms3!buqwv8^t!Qs z<=CTKgrU&q!q?@Bx{*1y7l}bH_$s1V0)15$B2phvP*HgDgj_{XX|{7LMdM<g?uJ_M z(d)f&%|R0~!RdyG?zZ-c5r345I_QNt8pyzW)zQpnV`f-r1X_S{Jp3E&z&$(-<$Yi} zTkuCLN?YS)?TCuii+_13#R}xa!Xm{n4=5|$<C7K$M0s5I7mioUH)9-6`}+e@TBg1K z$Aw}zfX!EXt6W7p(HNADa8)BW#R|F$>rjCqN@}RLrIjO&qXcWW<JHeG;v+o2AZXB3 zeLf+_)KNjaVXZHQG`|qeVNSXYGSy(B^w171@QhRfmgA@YqAH9xF5NFhKJl~ldFke9 zoE|D9fb@_zQx^5eO^|I=`?Ts01;{4h8l?5$3&hC(OJk`OSIOXua~zP906$bo>_Dkb z7NMJJRWA5%j0@5XV=mu8<#=Z!=BoqAbbX5DhCX_OBq&7lR&GDOnMYY{(oqcDSb?9F zt;9mL4F`v1KNKySVcP!QTYcRL?*f%Zg_(}$pgtaB;O(Iw!tSR=MdOV9>GEX`q&4Gc zX!QKn1dVRjhNBHR5O?D2E!&?)-u6M*7W#$zgA;DYdl%aUo;1m1!_dbFKN!OkTeK9x zN!872Gi<CN9Pr6;!XGoC58=Chr?1L-6WhF+>75wz7acMgJ^OCODFlq6`Fr$cE!h<J z%P$Snl4*}#^1x5*l6FBJtK~_Nx<4sx7X=JZa(aQ_L65617%}j7quhFeVZgU0L{UfS zBzE?p7i?h&M_X6&T2B8dO;`}oTt-w<v4stJ!Q~hiDLfh#Or_X4>tk{5T$P~1ynY8q zc+2N1UtAl{8+G+#(xHrgOJzTD-mofi!PWft+Dp?V5yW}gT&iREw_LkgHRj2{%-<1^ zh<@7|14%vy98p90OmH6&eVkx^r(Ns#q$$&A{j90GawK?Q6X}GLh6PqZb3JaS2dM*e zQtx~&gdKC|<p^;^%}Oej$)f?P`E^X%doZMYS9+D1HI~-f@7f`%rrwz|e6-T~&$uX4 zl!{fI>U4sq0(8v_gL69Rt|S&^AIQOs*a>OJvnHrqxven|J|h%=u#2nb*_GNH*vv>$ zIxI_eJ0F%ZJT?vf|As7b=G99urrL!sQ`Vv&difgor#GjofSu}WE=~W+&5UlsqP4zL zPbKGrI^_j<$Tz3M7xsFfN%&-kEE!lmCruv!8xG!yAO9Nfq})gy3`GJoO6umW+u4Y* z;ijS#$9=oK9nl4tJ=+rGEAT*PHYO`AWm0<nC4!H*X*zbEis6Wj|FCVgvP8YULVIO! zF5iR;8+Qj~+j7Ed+{{`zk+)5^R5lbCCd6}U{5T@_8rH>@JF{EdxL6F-Tgck3$?HX# zI20ecdU<2HSDywC314-F>4{-88_1(3${l}dzaMxOz`rJ*-t8(&UY4eOLU$&|T+ef& zy<d)!O1+&(XLQ<RyEHfQKjcoODZ{9PGDVpsIc8v#Fw(vb7X7))iLe{pk8JSWVD|+v z7#Q|g%1i4*(vD|<LJ0(89>bz&rMS8k!6$68|K!GfjTl94=BA7KaaK$%<9rfNf1?#8 z1aF2oEgDP|0JnzV{=zTVr3W|;5M*EY1&^p!um%)TN+*M%$}8SXO3`*fy^a9Ju5R#V zjcqE)r5UblH7v;Sr2K8!5*&&Ij>eCaQzHNd{W>+H&DbHaitIlIgq&ButgdP5@#?kj z->-goDzII!sq=G)B2J3L8gl5Zas)N_Pc%MYU_SDUXx>mu8b)E5_?zpAEmAxrvD4P{ zcl8KeTYWXEx3xe__MAdexGACvX0Cu^Z)%d(F<%x-B5FzRtK<0@<+@y~?%GdX_IW`` z2l9Eqhdi&0)a#>_GXaa7DDDsLu*q6?Gy$}^^~c3=(M~#z;)YHS;<Ht--qABw#LpKU zQJ0Y7ywP+H&(5g);!zc=6slri*}<GNE~{Y$@zFw!!qG90h6IWscLP}!`i(d@YGz~W zUpx?JD*YdaxLA}Gq$@w|CKZYl)sw(j$r41Nvz{by@aIGU)*GazX~DcEKs_hDIQ%)3 zT^4o%X9ho3Tjvm!L-D0!PXlUt<V8;K1H@$qBzX)Q+q~mSV14R-Ry%mnI}~v5iGg-= z?@@JW9e;l=<hVuZ|HnZ@Aw)Gw2PlccSQGyk(H+zZ)_q(%BjN3G@u$+dw4sQ>!381Z zwbc$Y*HhnL-AIBe6-l23Q0vxXGadu^*1IRfL7So$s?T~Sg&k1+6RoctiJ5lyQD0`7 zYzfH<L8(u)x*;oJu*35g@fK)b>m_<Y6G~P>-{!lE>Wzfa8FwRQ9@UV|qctTTAv$kq zJyS!1jXvoHjumR{z3}Y1FQC?p)y6>pN{(}`W?rWOlWh~0L?>~vvjc?dk`B01m(9>t z3Ztr}-$hd^aMYUuO2Wz|ed`s~qWZolg)hA<&(#q1*h<@%lg<vb2!u;h4&%Oya}kKB zIan>bEtTPOQw2_y?j56O7ngl%!YY+F8|sL2=QNcomnX&ick7aADH?877k}43@L;;l zb}#{1OPjXlpd{59*>1pGEog!DNDTqDX@62dWhNOFFz0wIkpx-dCf=<-3a>xyMs*RJ zo^eAu<RQ9b6-@zfa>yHj&p19t6;7UKJmYT6ws}!v*ZU(<RNocj;4m*^`2g*t?&1)= zg-XJumJ#<z+rz{V&czF9J@STMz~IUjq*8dH1U3rszIM44v3C4J(7o}5=z*gN6uezs z{h=EQl$oRm^EBjihl$7n`;x|&XkUucQGi+73VF!tQ7)x{W*2o{op87s;O>1%(we6- z=nVLMt)m9vxQxgVbMbQy{!#Wa?jlc53g#;Ba1LaiMKj9N9@$q;J>|puIHm`RavXmh z9`;Vyl7}{uo`u?wVXjO`anotK*Amf(kr?eOrxx%qo@uM4us&(1wap@wKkqF9{SQ@n z!ce%u-BIc8=Rn1YV6`N`?rY;<qvnViwS*Z><=EHbLH?#bzvjK7jVai8M0r$<dEm+b zv_r<z0lejqi^-dc|EZK+{X8C0k4uu!7$IHR8q(e@wR^(zv7JT(fau*5zCu`IQ#rBe zbRqi{O=12l(+j&O1U$ghL4^`%@PZ`I)PA_R*A_RVjLg5ewdh9|qKBPW4(vs3ydd3z z7ATziG>q2|Z{~yC7R13}^d6)pAD-ANujdPn4jVR9l#g8xV-bkbj1i@Eu(tR#6p#PI zHYMVPcWLT1K16xy-r;K2zMl1;2T^tT&%+ZlTU8VHABsq-FP!xwLbOhwo1qCmV-z{f zuNg8G?=C;N9{y(FfqbKC1thV`Y#D(Q{q(<CZhGhz?E3OUY+n>*67K4#K1L5%S=xX4 zvS4(}tWXG@gYq+!4b5|tThg2fzcLhLFjg-QX(h;MOO-2h?r<5zW{r9(>T8H5JPMPy zky0o>5J37|+R1i<yc%mxaRS{5c_(ie{6k7j6`k^QToC_caz^`&SnCZ3sOY-6g(zdL zEdtS?DXGmpcS%NbEyx>v;p4ggC8-bG?RN<kw@uoW_sZB@alGM)h(U0-x0Q63`wk8~ z(li|`?1zK9DQnO!{TDsLrj9Ht(DqP^UI`*#_2aNnU|t%(rH*nF`E8E)?s0e~KBj!N z(QqM|YQ3{c>s*qn4iWhuzJGh3nDiWN`lIu)@4viTOYy|Xd7`<E)t-I36S8bPtcKgu zd)*jo<9f&Csq@$h21;|wsGKk|1&%G`PYZ9wEgyedrUaK4|4qH&=rL|l_=!i%f48-k z3qsag^k<{%PTAiJzotmpD-EgQya+0n?``IA1>XQUFhW~0uBBJ@QL$Oi){HQ9gkkGa zka{cM1B2A#5|$~0I0V<<P(;}g)jV$Mo3<b4$Ru%9^#3p(RC}%L%vX>MoNNkHCs5$| zwmK;LJx(-f)?>pH0rpU>mf&y!8g<ZP@nH6wM%u5+@NwYE$Ap;lPx&uC|2db6cIw&( z6;*Z*uvsjTX~0}drdcx@hW6OpzQ?6^c{is+thos2nE$4c=|QBMHTrA(TlMBk9#?OB z;Ocw}?)J;~;#8J1Gbz>)<r#mWf;lXs!TWHOz%};T$!Yc2l004@qkvrPE5-g)IX%2j zo`0*H>Ph&E`rV*4IhwHNswOCc`Dr1|spu045~d=TnK;<dRnfz5PIbYaQ8sE@9)5@v zHcBI@G_>`s9_dCPv!<Suz{=G_d=nnI1Egk@z1&z1ShTe}gUb5JWHwiSN8=S&!DFLH z+G!^Oa&g53s%1m<_z!zrY1cEVW=|6>P3;{ylQQ%SLji-H@hRWI1}&Uc0I^yJfP#Ih zW7dU{*6B<0-hb6c-+@Nb%x3lG0XI=VLLTt_yXyc8UHlrlrf2ShJK8Yb$spCa^@*G} z#7e~vY^Pq7n(tqpY7opIyyW2|f}F#dwe^2GIyu|cUSEY~c>C<P)zwEcOz7HocS|S` zZ|qGK+2tOF!BMb93RqU()wrIcZzC#WF%*LdqUT@pl>%^St2JWC^BNH^sV5bEuc=gu zS!>Wf8G9P)1D#Y>chG$B=!reY;NP|jkljP{Tw3Sd=Wv-LmF32P*OO4Gk!NMgSgV6X zpNGdt6*tA~j8gpgTZ(?GTM)RYWR}M8RF*u}rm_VQo)M+-6;yK`+RG!Wp#;>Zb`raB z&kZER0BO07pJ$k5Z+TH|EYU)3auAMlC#vpzmo{(DQb$mckd$sP=8)v3n4hK+-!!u+ z9o=QQvd|<(cW{vk&$9eT9NTm^7^3ZQRJ!v$bTQw6H7L`;L>h39Q?FD}8M+5`q80(m zwzaVa+Q5#Arlh#|cmSuxyl<oGf7T~#6auKTIZ_>;xzA>peWbKlD6t((e5g<O_2$&x zB-XfEQnw#AOf&1-D8UX30~WS}4PuWqG2I3b|DIDX>M8%G25tsykyxD6#XL;(?>QhK z7Xw~Yhp5X67rlp)8E|3e-i70J?%hSvpf8}oiz5YxHh`q@34m@Zc|EM(uQzKffbkxo z?irxGEV7z#8|v1(PmPNv>OQk^_hGkMoWo#giLMS!RF@i@QG{9Qv55Hx#A)Pc=4F8j z01jNq7vQ=S+bPpuT#mr()SfEb?|MmdSY<9!_L2p{31(@`K{K7l34w{9wE_*+KwYG= zhHYw#HkJJDQmyKT5X77aMdRM@xkNd4I>kl9hCvcSz66`39!V2cxyTQVjM$2GP7n#9 zKe*)Nto~jx43Ne#8=;k2#F$pwl{^hN?>OSKoAGj95)6RZT?U+l`~v@n!+KRpz4w6G zsP**v5h+n;khA@^uu!Tw&ewOw))Jcp_3jC#Nm1L@7*(dRYA37&)Fet$_Ua4nnu(O* zzn44Y`U-}MltMAJ{i!y9V&b$9qnOuJYn}Xjdl+U7ENG%jIumR@cmT8k_nN{0z6e0E z886eJ)5{U?Fa$KCJdS&DSnFkbjd3w4kBwA%oie)3FG#JqbF{^!&|DNL_YEUqDm zA>Mv4a8?$tIcq{5C6|${E!33}HOqAa3B@-1BLJ-WoJ$iBB1ObRS}W5_1>|gQ<Ajg~ zs~3Nr@ef$ZO$0y{n|Fdv2Zi;o8}fP?t>#N(%&MoJpZa&x6{zr(uX9P(ll=N?KgE=3 znENvYigW%7bAa+{mLkeHDzt>fMcAjFg}v4FfpPsqDGwbjAtcKIFN9XTs?I!5g=6(4 zY9sm5>=#X~m7=v6p@rycky>W$-gvYXWOKJ2UTAD;skC_x7mUG?Xht*ps$hN{J4;L+ z2qz8-9S5U?fH7><$d#@gbA)ALmrA+_f`*Nleh*7e%vELmh_jZsD6PY`ky={`F*%0c z%g{@8z5&uo^}D<tu^V$Ot^ndTsj)FI6Ywtgs;zu|d~MkJ8DaEW`xxZ+7jbTg;t1UJ zkG$XuU;Ij@LOCFH-ykb5Ej9@rYMQY&hRJt)gSu}y>ucV51ku3he)4rMf)4EgWMgQ8 za~Y2wSAF>9i=r%aCJyNav$pQrW+q4-HjM0>@3Z(Zs{O!&ufs3MKzvX+_tR2D%nYA_ z;Y&-(V;}J{pi}zLKn+NELh~uI#>7UsE5)2$S+bBJC{Ug{s7QM{rAuSeZp@eo#8L$R z-7#(><*9Gso0{rUlD6uYPEkW)W&Po1rblSGtWM;y_dtwJH_3C6lY2!d9XaCUEUl|w z5jA0ciA|ICUY!jyLiC4l+(|ch`1}AsnLsU2A9k2dBu&U3mF+*kYjon^43R9VAH`z? z-hnoAvu3p!TA!D7+~X?wV@yVwJ{&hmT7=fL`x+!!D0Q8~Q~EZ_W=182E^T+?Fo#}f zqKB5HOhCYYhocSoMlz@GJ)Siqygix!8q>!EA2U(*x)0pnIZW7pEnU_29e0!K)KhFy zv6dL{GBrY*cpC##?|GBX#*d0iuA}1|FSTRoOs-jyvt0LO9F&p4q>lWVn9L*YJfOC; zM_jrM0d}y>yKTxGa@+;M;A-b_xt8F!!!mZh&PZqwe>_iZs?=New8dlTa5PR<yL=r1 zPKA|Ho@l^lG}1cYF+i4CSfFesCx5za6nYW7FSB!{QjYmdnSssE(C9(v6Low}T#oQ( z_Mj9BJOOgbsUYZ74qV;nsYTb|oVe!pTSCUO90RCZSvJ}x+RYG$B`yVFR7m?oee@}R zZ3=M_pa6T`p(aOTE2j=hc*nARB`|bX+(&bfh)4MufTxFE%zMrE4pV|}%Y;EAdjEW2 z-a9As*f_z|<-zy38nAxvl^6~#Y9yYAVddcUl4fveIDDI>;5c6PsJhtMFE>D7TAypy zo{I4!*B7FGL`_243{jwRKl8JOXv7xI0#-tXrsLVZq*5PcGIkzAYjJ9SDiSNljMMUd zluGrBd$Xi#w@FdJO7gVdsM(?Q&^q%to8S$GSxNkQz>h3Hfnc=a4P|eLbrU8jd_%6t zJ4jAHFY1Mi<y9I(&;UD3IIbu7Inwz&;#-!>R-69oi8LXteAk~DalUVtf{7)|c4TA> zRmG@Rt;B~fdX(89@}3dzaD;wX1v5@)-F{9TJK{d;-GVtur9~F>frjtOC+ZrY4k@;r zpQLT>&HqAoJ%eo&>W-f8;^SgETCt=r7mN>6_qFuoOcmQaf-qokH<Zq^0cfBbKlNH( zVyy{J+~16DjFkX8j3jYs1B%Pl!<+XCWVP^jz%xqm{^&T(o~s{^e$;j~yj4ZosDSOs zhZ5-)ezMx?bo`@Un+6Y0XT5)yqs;@|6Vh00)i_0h0~#n;YryoXB+8h7b)dTIvFcrN z>87l5ycAezc@@-|wkw<W<;yLlDn3~H82sHIYrzVkKB3!AFT|=IUMJGztlxV)#nw}u zTcYXk?E*2eaL_C1DXYMGCbdZiMA4h<e4S1g>x_;j?Es8sMjA-^tRkHEM%PP=5o*=# zmrscXa^UN}jh0(>GJq>m+oQf&`e6av+&wzpSHC!MI{%R(cw`;&l!6;dpq3AqMG+Im z#BB8#<@+Pm+ed72DKHG3U`#>iML<wQ3hqswQkp8^0XiuoC~x%q)wr7@zD?6GZ=9mx zEM-afq|*5WsSf$UGj=A?z;w@3h#=x-x<@Q%D1_BB-STFgGBKarllSY5V;;f!Uogl9 z{0LZloA(cHHtSV6zZ~OX%KI6Wm5daflf-b|<C1!c<yJ4TJ@3-<T^~1waR5_b@noVk zT#9SUB)bT(ce2E)4H{dZRqj4I8^|=di$5Tnqd5xHCh<HMzh+we#PN@MkSIGTugShq z80d7LttEtzXkYV16gOP`f39Fz$o|(-qgrfvgT~h;>q>*G$6F1yH)k}OKD#<8h~JB# ztCFy4WG~UM_>0=L7_Dn<v~@B4(#t5f8LrMl$4BF&R6^0rwFB@(M?IAZ+lgeFn!R~Z zWZojHWeS{Lp#01>**%G5#aeFV)`w<Fa+w4K!pedfuq0}-47DA1u*>W%+4kLk9xvV+ zP)oD{16Z^l4fI>p^XlPu{bk3J)CnFUhbx+VbWEcUR2KVotRD;f(zvb``IX{ovDcIg zs$J0BXl*WTSLyThw_p`7OOq#0j;P@g3~rAQ?X~xADdt%#%%BZMt6G2(?7a^mQ$;Jq z({H|kAaF!3RVKnnJYCvi<pCV8+DO#X0M~T*tD<B@K$XCv&W0iYOJE+qg6Msg#Sw@M zJ}AaRBk-AT)MTX|GG#<|h(|`H_3`dpIG`tg{HJ!g_v|A7QJ13(S<OdH+>}TVf=^}S z?elDd^g~JP-5Bl74a2i$)|FoO`g>aU8Z&N{r|0RaY9EUQfK2<nV@AM8T^8eMBH5cJ zO$Z=mI(ExPs})Rq?ULlGjHBlOg`%6eJfr7pJxI~yBvUX+@$tL7MHg6zDbxob>Jkgb zIxM!`hHB>8M6lG;M9$oOuwDxVQjOCRyX+W-=0<^7ejgQ)IxNFz=#Tad3?DQQvjcqA zgP&4TaLAdMU##a$5*=@WioMRayC13UZ2y1yeJL-7b{}L=z2AkiNg75!fO$XH1w5^^ zVgq<Mi{=KP-|p~m{uR@>m(_7)W0^8iPr{;YPLN^=hQETkP2<<G)VBuXqeQWYCFbf= zxqvZ7Rfhy9)$U_j=Ht4lWzW-Hs?>S2qZ=-fxCU*IP2KgECZOi}swF(@&wJTQubo`K zfV-6KYgvXgU%8zVo5<`Gv4ea0Wn7|ck#g`Z8{E$-$k=&~3XiT`X1Kuu{mBczfG<1w zw5&13%8e{}vyN0J)u}Dh9n%pzV{x>bgbM7e+1IM9s~ko<k;=3P?o4GpmQ)Rvz&TaE z>hJ2^i{|HORuU{L4t266^Rrqt-H}Ok`#heaNENW7x*zhM{F{`C4hhrW3V~r7+oaz+ z)Vm3P5$71AYn83%xrqYp;3%P*+Mzbg%X6D^+%6pRCicVdH{of2yK;r+6(ZQH81J#l zTH8y!N)ivI5J?i^0TE9Ha9{g2$E%DFts7BCZ%H#Q2L`L6l?M>i*N&)(ltgLKa3EK# zr_$-CasLKKe;L<WKWO**H`QzLUN@!wEVWSl@K8>$c8Ike?GLLoqP{&JvYf213%BMJ zyx_RsoN#@b{I<KuK?*9xvm@aN#{WV%sme<eg2(#$9nW#aR+I>@_$XH8nd4fP{J!WP zrnm^iaD?X;#lX!#V=Kog2j7dguXRaIfd8rtHaodkKIqdl#z!YZDh{O)cgWrj&FHWY zalrBzy@JwLif|rIIKGmOO7Hfyy{5VK)wB7cH@94KPd@CuFsDhsJG_N%KTVQQbt5() zM}hLvVGa*}c)(6{+|Iy*hCZ44jC0kGQ|D6Hy<d}h@qR@_#>YQJ>hkkrMuU}B$$6g0 z3%6tYjIS=xv7p$75Q9BN;NJJpTty=y#EJ#zI+7vq_1;74Sby8k2WDSOxRP9V&tTQs z#_huE=JG96u;xRleBq7pP&7>m&oGov&PcNQkHuC%#Gtb&ZqEr8PgHN1g>-H9KkX#0 zs{0Pztg<Sq@c=uu+HoGGtjQU@Q)>%?%)Tm<P2(k%%c*wr+a;ObmqXNZ{KH|{;H-2a zWi0nyj&JQSBIAKOu7R7cem>WNU8yz=MeCK%;(;7|THFa`a+poNsV$+>+Do3YgObT* ziwFQ=ei2~It-<r~XWDyCvt>{Qmxte`4$)F*%oKpB&;ajU=RjE|L?f(U`19V6x7F5r zn;S{vf*07L3&;ayz3`;l<ynxJ1LA`^`ePfjg2t%EuECyKuy}dM*2drcz!6PcG?KL{ zW^JG$xP2M2Gx8~xYLJgK(B`alC`PFClUtV%MY$sJxmkbgkkz4dw2PJjkCD<m2@!pX z`mYqDpM??JML`*A27^CSmr*k_nc{P!mYxhM&nBXUD#`|DWFoE2wp#M8uwghv`<&sc zS^5;32mz~~hshZ7K{ACl<yF6Oq`mPAicHqp1a!VP>m3}?d#*#_qnVk<Q9J)P*OQ#- zaY>=r(K9g*qDwON<a$!2M$Dq@<Je+G2UfVTCY%g(Vxmve&K4K`oWXv&WM+$?a)&(R zJkAv|*$z6ij?e%F_3J@_z<pW*6-A;L%80%W=kkZ?T+6s(0LpQn+)v<$Gbh-fu3`#+ zD+XnCIKE;u)4^68fqk|IJ(}aH)Q{)RrAZTz8mI>yh|qAd8u3s%)!N3C5^6*g@IF{e z1YKP>BNRD*M7A5_d(>-hXroY{(QXLP8@rMYs^nND8mm)FcG}<ZXJD!uL#!lJphrMd z0+g3ITwNwwj<#oQsmss+gTz8{wMW3tWgT>w4oTE&Tw-vu=5|lPkh3mX--TF*LHnZ# zb`fNN)PKLPPS7SHVL@@Tx-*I?QcU`Z-O+h9siyorDw_Qzd6=Tit%sl}^!S828p{Yv z@sF=k)RV~;^rm#KMo5d%?H<YryrbSaun8m&siKz6>VIvDgzE}aVZ}Z?=1a8?Q>7T5 z6`|!?fK7skCq`unYoA3ZHJ#s;LsdAjqh3`P|KZtjBN}t~g^7@|&Fau#<PNyxv$Cw= ztNs^}NB4)+U3TkHBvGx&7$>Rko8V`-A<Az9swa$2CME{e|I*u_vIUV~n1%Y$30<nh zFlK_wuz5pVBF<}Zn7T!IKsOYPF>6N84ManB`SoctMNI2Cd_F%@RC5CW!_v2POq4?` zbjbzkMVDL^rz$QAB`Q*S(ICtix=XgQ^J)#`?Yuh16DU+cK0}@7Yu}6J2(@$QyNudV zpK-$`b;2%rhHUqtpYQeSJw~7Wz-RM3`%V*aUy=ODq9w34ogUQXH+Q?*JL1muIDq#a zX;Zlv9=G{sP~fMsOmc`f9<^UO;AP1Zn44!hd28%cHnjuGxysmmJBr42+~LwdqwEzK zEuD%8cF`-?rY9a)plGuE5Vt7I_^eA|>~APg$t5I<F)!x<ZEGtup3CRR!x!GZG#^T4 zX<Fi2hY8l~ty~dl2vJdzI^bL^lrlAeQ#bddOxSR?sR$$WKb)+3)%7oD*q^F{dA{R& zZqc095O49#GX3e)D3{w^qMgAcS)c-h$8@h+^K~1UmToKh&7sr45HfbDOO?4C5Nvt! z_$oCp{B8h?-F3N-hXZf}xKSN8^qx-%c&ATY6bVN>k>`d3m2S)pjsFsru&;A|ZPaj0 z2uP9HWwihn*zt5m>o}$fgiHJx%1z>74eyuNzrzWD_3ySlVF>Wl6&`)CvzNuOs<*iv zf(45$dK#{G8D{EgzG|Y#FUXNfk*Nv{4F*SjG|qDwNR@hD$J3ApTnaq-qGLg0JN5^x zhzihAKLEns+VC-{3VL@gdXSd3`m7m$BUZ<*Pcldk!{yfOGmB(|dGtMSt-qXaQ;aFe zt`sD@#lTGPhZwGbk)k^tSjZV3H0#u@8P<7u$)(^~nUqvX6pE2*V>DCl5<uwTnT4wJ zoPYuK&9Sp&a5@D8QvCBOU8v<LMA;{;AI+;B@`2GeT?<(~C8N$$J-wjsg%B>EQyVp( zhX|v?uv~jq482VcnZTPqYz3fspdG`f{^1Tp2}fsKdgGR;-hGot#r-OSdM-l-)~SU# z^ac`=J<SbJClIu<|A<^?9V(D|gr;!oJ479TE6(RnDM&H?^Cq(l-Il8zu;}u<sNcJk zZN60(3iLrA$v6oTXxoFm;9>$$v}SZOw74N&Cgso#fK)C(qEq&H2JueA+bv-S&b$G( zwFD$iVk8{<jL8u$i<%;G`D_3uXos0h&*Ko2b6ObB0Fxz2G)Wl~vPjB;AX33rDnC8n zE{!&%jNxE}E}XQ<Bgkc%K9RbI2byf=Dk?v{k^FY1eM!`Nq60|EY`+M1k6-vTQ(@u0 zDMc<FMwBn^3TmhIJ~@WtGyFJZ2g|5*i5fX0_i>6+C?XJG0bt&KVBe9}=^quUEY5uY za7TUGmExS;4Ncn-7o87EgDxe`|HR<Xy5amw>n$XX$KD8<1^QFz?v#!}SyimWtJxA2 z3TGb|&hkLlV&#GKw+P9CoBttlH1y+JiN3?9KQOt>)vwj*{so1p$R__cy-nx)GG@N! z%5CuFvGI;aUqb90d`Vkgu^AX;eLsnd1*_i7ij5&tcMN|O_X?RXgbs-axMs&=7kOl* zxr5bRTz0W3<XKx%-pl;s)bDfK?0(r91DD>B{roDYRIS3msK)WvK884Xq*{)}Z)GUC z6M-oPe=H0imSVVuw>i}{ns4cRe6B^9uKL70$em7_VM|Yellnq9<esi>N53!`rNeIR zLG>rE38%4>e<`;`(#tiIDYY=1FNF2Yo4#Zd6?$M!&uMbK8U-$K!|@qvZy3a4+&J#; z8?zOG;-%<f(}OkpE2K$2)R_#V-S||;aP*b+Yv&Zg??v+-H&cc5K>BnU5PH)#P(QUe zCBb?uq%OnZzERW@eQe5K!PjwY4>vH9m19ScN5Mtq6Kavl7r6eAdWV-VdVNPKCB;vR zy&*Ssm}qgP#jy4Mc(W6tiHsVeefAFD%AIjN3(uRj$7DAgCrhea6{4KhKm9+tzB@pw z>iYlPJF}f-=}kaT0YR508Vewzs30mR8bPDJnRz?&*lA4J-C0qwMC>h!SRxt=B34+5 zq5&17s1ze&jfsL9yVx~RzrXuA=ic|;tp5JdWq0P4Th2Y@b3UJ_pM?T1pl70dw6>gy zV>BEwHRbV@$Zb>sEz^Hx8f?G<#g*X8R_tb1+R>C0yB(&E-sISPJNHnVaTnp!%|bHh z<+3(({P8v_t1fA#&}R&_0A>P_iq*j+xeb{#VdizK5j*_U>L0l@<IVHP^VM5rkJGh$ zQTu#rb=fg>+IGh@Sf~$_q@R5oJY8cpDa#t(nWPP+{(9^Mw(cj{aWK-y&BIe_N|Ds) zcd`>Qgev_`9uaml?jLCgUM=Zdn9V9c{aj|KG=L*YdDY*IOi%UK`QJFTP23T{)9*1x z{qePh=}MbBGt*g=bMu;M;Moxr=_B<FT=We$+BIJ4yUW{P==lbZs3IXI+L25u93<|= zn%Q3PhPe%UZWA1IBPtx|kXK&TD!&Iw%k6eY2e6nOFFUt98sm^A^_z7A!_-kzPjU`c zob)BTE^E09H07HJ${))yX?`p<D91yc!Fu^>F6G!6(Gm_gOZ}@{9(6S)v))y=pS3ez z^XuVN);F!?i4B#e`O~az9M?DZ@|ryd5Ts%Xv((mSS_$8z%;-DKA?<V1%-1d~bVJ|j z(>v6IT=)|RP1;_Mnd_#m)<s78ARxY>J)w%b_3;eUD;h<KFl>$V!n3#7x;d@kWO$ZQ zDzWsqg*?zZ6Dq(NU;sEB+Es(a!7gfd0A@7QIg)-F{8ywkZoRn)^}!?pMg;paen7_i z#IK0zvj(Vb^%`NWv0+KnEY71E+E$~&DcTsC2?yz*U2tO-X8~zv5)3>}q1Gy+sIxwI z&~J?L(h`jJk_FOw5VE^9iwk{3n014Ln9yQtsjJC30iFFB7;S35OrRNhzuSS-7ihyr z&S~u>8EUv8S(%Sk2bAVD*&9Yj?)6m@C;`dtpVCqw6c`YAJ^tcQ_$6$=h5YzCd?+=! z)o70v=@kX`24RP)4`}tQ+rbljdTyjSMSg>Cle^9hM2TKA;tPX7i>@|2mr1IF{J5L! z;N`+);S=u$CtdbiCUs-U;<)c9h&fO3`mKD*30Zc6V<38fg!Gy$nMS07Q=*lDK8(40 zYFH@k><A|!iIer)yS#+1U74w(>ZqEdkw+(*Nx!^MRBmvLZoy?j>*Cca_zoPj9yd># zz5BQnk!qx<tm)`f5+nLjW6av9?+?it4nIzk@F;6vB__TA>|??@yunec-CA^0#-Q(_ z?D54pDUxj<CEid{XC@AjIQVfxbBZ$15QTNmET9{G8+_(Gb?xCDrq$IU1Uw?QITVcy zBt$biT>h!r<ux}jxXH4hCMLy|U+JJG=d)Vb6!i^wt00I^T!j(~k`zUDDhaEpxO{87 z$@P0#BTLRqRp6bY@f4S&@ltBMLe!=;u^*%4AX;Kw-I_$qGU!O;!lrjk5&)y>ET3l; z`Bq?LHcH1t&HBZVvtn<Oor~#zv_n$7|3;FScl@IFy!|L-4oB=d&(lT$nW#W?vbv>} ziF?aBo|Q{IF`|3lXl0MPI#52Yf<2wRNd4ySKHR+rM*;-L;)0J7thZP=n0S>Q{xnhE z@b{3()QIXY&17~8S!#TI9L3PLKY$0SUg-E+)7DP=phrNW%d1z}&gpB3+>(72-jOYi zu6<b1_uca2Ref{bb;<&c8i0uw7qf3`czi22XAtl;t#Nd=489P`Hcp&i2`U=*c0MMe zjp$6}fp0psnBCedm606uQ3920uyhu1v6=z#kZ;M=;Vytxh^m9J9}?)@-yoXA9k-=O zs;v7e0@RGfsdlRx?IiaaJ^XL>=?Oq{C1WvrUlZkOSR{pPq1r0jaD+Dp4jpNI`lq~R zKnUmTKEZk_y3fVWf1+NF1mqfK)v3AJ`e2G;h+?a>(}LL>q&#dX=Ux^sNqO(D*4nuC zblB^Zg({g^67}=if1~gvWy5>ior4lupC?gw7E|DPEl`W;wGl28P>6Pe8lx>!G!U>J z6Vn`G=iiB<qy<KG09vr#YvwYY0Mh;#s(%m9YEISXKZs}(g#!K&a3U&>OY6c?=!q6+ ziG+IT_I#E^NxurhxMHW0hv)xzY&XH|0#_x`MZ13oP2L;nYM<bcZl_#aR#{k>W>1Ed zB-Dqq_a-VkIhHD7HiVqk?Ypqn`DFq3YT>Glc>h?}Cjx2AwMtSHf#H~NC%?&rzp%r; z{~IMP>EItT>LJTub!nv+*?=9j8uF)m?4X>TwF&voyYpcH9cj_@nuo8=xwj~3V~iS- zCh9gK(okWv&N0mfw779SDqhMIsWVlL@4=VlRAdx5SBJSAP}6%bG-i*Lkq|tGy|2Js zrru77U(pXtvue-?k&zdLpi_w*2d$_<B2?w_Kh=OQ$m?c~&>Z~RZ7qhSxc<;+GL_SC zWYU!DQlJvVs8zW##;A-DLZW4S@N;YufL$p74}J1cS)hdc+A;Sq2ZJfYW$aS_Y}ZDg zotIM;y*8x-zSuQCW8G|0mmV;R@Ue#JS|{3S&5dS1s}|_wlhk_eyAL`fk2@$8gg;;o z=lqww4xI5}bw$@3ES#%|+1Ljcq)D)I=?Dtms?ULBMCdLQQdUQ7GIelgn~Qxc+v^Wf z2IUFgA8e7a6lGvYN%kkWf1jKeslvSTD){6AsIbY~N?{ic{oX@c1YF(vgo)dbTl0@I z8pX!-8th)sVZ3p9Dt^G;e_{`1?kA05@>V~k!kJbW38LN}yCAKRj9nkLeZ@VH+R^CO zU7MErfmqb$=>JO-T3D0ks*!k*&D)!egeV5D@MooBWgJXeNy^z<o7$No5L+FH^y+gQ z!O|o->CGNl1aunCm)6pm7^p`YGvpF5Rwf*7R?%sOSd+1X8g5codj4&X%vG&Dn%^+l zE<Oq6taI2}p}Xbw7-fOz2|~T1$kK^sbh4J!LPB`t-^vR{mupKF)tZdEy+GI)oRl>O z;!IhLjMEKcGrD4V>l^t7T0h#HMdJx}Hwf<$<e-=~HBDOI;=|W+1Z>*mBxx7*eK<xv z3jJ%;Z@YEn(&`u|sinaWz1XnI@AoFR7`^;m((@k1%wZ2uihqH~qoI#i03G#^&7BYG za&^xYMa&cmHH0FH$!&;p3P>=3XTmEsxn`j8*U`UnH>FJ|Y^$4!J5hAQ`0fhk-IRN1 zg3B6!<B&6sCit)k&7sz%KW|oF*#3&cG6uA;0lljEds1-Y;wA5@zm0nyut()<Uwwn` zSNGY*&J2(<A-z+kZsJ?hrVznsB#@a4nv|Z}43I?(cuXGW@_?w?PvY`fP06&DZz!xR z!K)z%#_K=QIeDy8_SR^1PBR`WCL@G$eN_GN7NVdI3bPQsa?eREVLi*Jppz_WD54Kr zwS6_j4duBY+_NC{E9z@?f3yYZFUWd`2e7lcxCA^A4=18wZ8od+!!q7fXww~mcS1G6 z)01+NGF>1rwlIvhXd6?nIebl8GtJ~WqwJ`$?3TfJn!^_5ic+Tz^|>xKAYN^wo`<Zu z&Cp|A!4xqkoyq*1jvELR#ab|D%9TLLR<Sxj%ZMrmo@c^UJEsW8ql@ciDg6We2QQNP z<s0=}^+#cX`nRI^N^9aWTmM<DuCT3q%o&ZTe89;&DV?S;?}<-*e#$}_2Fm15<XKGr zMLr=C8KY|)kDjB^c6GiTi@T8|Dy2N(RsZO_WfvvQ9jcNhE6N5@Yl)oykXER*&hG%4 zWyM?I#T@ZHnpQCh4ddE$-_Mw?E%-(Kyd31nsF*I6-<<&$J}tH<T-x#EUhNu+7~v~Q zAdTB<>s>J5_g+7Se3O~Z!Bk~)`^TgIV|!h_5aHO;f}~<i^<F4;%5MO?HOWmerdd7o z&^*qo>H`Aj715{=12+?i10`>DS%#i$TDcX=co%HW=ywkFYUzwUt9*;I27)>G!M~iY z1QnQra2=^(n9WUtY@Z&8UXHvG5V%V@ajDH<rq70}hui%C*E5i(f`ZH1Z$*;WTlG|n zl|!RM>ufaPpt6I-d(_iBTn$0&Jk<`G!StH(2<Lns-|G6ApFo5;mgzxW>3)2VOjsWc zv?EI>1nEH)2ThD<09yOAUcji<JKtF*zmG^io$0cqsx|X^Ja6Or47@(&<excNeg7O2 zq2hpOrO)-86|D@oh1CZDz~fKo)Z25+u{{78ukCQUACK6s=@<NXA=hgwqA{c-u+OM> zvn#VUo*YerY6R~2jD{@ZWYw?T5w0%@_lIvB*zP2gpwa;{Zg??B*+y7n?*3dz`wz05 zv#!t#CAJimOOVmo`xlB%HkYcf<s%Y(gK9@Fav0OA<z{xKk^MbwyEgL_EQQvgy=m<Q zNjMsp4r1w%ZOxAVkYWtooktI=?1goxYv()zOxzRPS^A&DGg#5pU+|2CN$o(2UadeL zRUq%k(dS<tbi2WwB(K0z2*KUPJc^``iXKZMU-|2gR3Vc2Q;Q4GySmY!`WWt4yD-7~ z2WK%9Gk4EOJE>MJ;?jX_>W0@n=wMJU`Ufdn0mtVQG+uaV9U(Jo4_9#l*p7C)tW?gy zL`N$u<KnY3VcShn?oj+^T|#}{b~sV9>?qx=Lv%`aB<TZy4oA^oHP(ekfdjEfW=m@= zlZVi42VUg91v*Br9O>xip3+82m>!bJ2!KBpBaee1oA8D+G-XFl@nlTIfrm7brN%w| z29LQTiq-0Bcfc~OjL_JDN4}X#ZN0A{=@ihw*SBUvcBZ5?(*LQ>fJibW#p!YGqNh%D z>y|@&Yy$9foO~yE1+3=vb8Tu%V?IJ4QBA+@F?$0?C{KQ#I>6E*sX-w0IoWV8OJ9q9 zQZ?Qj?Dg*$W%tRamowY7#K8yT_plkM4Q%5sXGDO|iJ~F05Q?P>)Y}F}bk1D0*2VvZ z#XQ)*ztO6f2R0hM(TS1I&?eFtFh6p)m<kCz*+trqIE<I({mK>@_Dho#97WS*Ih8Iu z{KL1vL4jyS@;_7K8XZQ=2-hnxzMH@))z_5Le3rgVS@PJ>bElROPy#6}Bx_y&N{oQi zlqtE~;a5_Z9X8aw?YkXnP{+Q9Anr~$2cbF0KJ4{w@KL)qW~GynkvO%r%ewZ0Mxuvz zrbNoK16{V+Qfn`Te|C5Y3vR3J_62`I^iEYq9O&Dq`%S5KDbuWe9Cjn*c(IXcPr!HV zz}*ML(uj9Ve9TKbrTsolE?B#n3}T0)A%NB3=sx>9mwS2qU-B;`CA+D+0~Nzb*h%ec z(<V<ushYaJ`H-@fnfHmbD{WdiJVZn7;6Rm@dukae+4~Msi&FllOdjiKAsTWnxzn+# zK1O}>>SMVouNY2Oq9hb~LCvFCX$Kx4+%1vm#vhG3fVZkU%_p^?4&vE>$8q9UP9j4` z5Juvtr`1rtwK9+52y1!lQPQoD$+TvlM9@|@RCA(qGm<IXw9=xx#ki&1XGmqj@3hde z(5SJf8$9rfvbi6-?3`$FGlVrIR~AcJ^42lzvVuk8)tvXz5PS#nyt-;5p7>La`e!r3 zZ=dmCVpEXyVFFy-VC07`0S>SNX11gtUl`?1h@BjxU%M<zOqX}vpDhr?)Y|tV?BGHm z>ftwUqZQfvcJ<*qk9KuukOMM<F*>Ptb<e1}QI;C0Wu96mi8dIApM48I2oCVwuD5Y2 z5UnGj57aQ4Mk+m&(|=O-w05k)=>u3rr172TT4@rE-3cZ01yqW=Hd0AMMXQt}GMi6y zzdFhdp|qzc3k1{A<!y%OU~%vEr$A^XEjJX+EHL>H7v*+F{4+^r#XRE_8}S3PYrq{F zRo=rH-IE5|x#<D;mE+c>4RXFx9gY-uPy{%ZGzd4!BH1GDNkG_8b6}yrrMYC(b-Qx; zFGwka$fm7*L$yC$M0an$69;2ivwE;Sd#F{E9oY`kMEtr_)Yu+(1ke_*nmm#EM*0-( zZ^8=IEMZ~QA0Nw9+R^58#y`s*njg#MOSD=Ss8387MgBtdc1+WZ|D%xZ!1FRPhE?|O z*Ihab&-x|V)oMg0VYj7Co+G^?r4L25o8M7axuuOUGjK7QpJ8O+mftnXNE?mOo~K1U zfp15vVS0?2+AQe+Ea&IH;Ii_25!yjhICi~kg!e*JZ1DmK1iVs*2ATh2LySGJiF%ux ziQUU7!%$az&MQJ4J4li>N!k7R`RXErhH^7vUzy`3d2#N<jOXrWis(+4W70XDK^JZc z^FREGga%)}{v%3OWw|A`>UmOTIQdFtX)yX-mJy%E=;!0yKjCpOh}k8b-z3>u^*bGO zs8~@>P^OnZ=mj{~b?T@Kzz_nwbUuk1Gmpc|NNIMH-A5OyymAME|DjHfD!!y(ah)41 zboo}2ec@dvs?T(Zg6Nt2VYTyeo=bt#o7D|AWvEZXZ~{|MEqMcCERJe2Z1T)0x990_ z#$MZ<G-0ImY<(iHh1joMid1*nKPKfiub_V8LXC}$G$oj70`oAt(TLOa`5QGZYSu4a zc`VD~n&ucQv?rIB9~eP+A<;e#DaPyng06y#-%pl^92eP_#WiFrG(C9O@L-OJ=p5b7 ziOuu?L?dMN{3a%yQh;5QJJ)|zRy^aF5$eB*y@_}ivL1+)AzHZKr&v`OtkK__N^Myw zel1|VeVcV3Hr@2pVnI?fapDsj(p<1VVC&0-n@~T8pSiMtP@otnT{lThuyjnfL`Ihb zs<)Sd?O?Firjw`FfkgwHp)_?l(j4=gGM#Mr_A$4xo9{PqANN^=fspd_ub`(D5AGRX zjdgifzN3d^Shr`R4A8)^>E5G|^RN!qg6gP0z(le}a1kl0hDADqj{CoxpaYKA51E@! zv7fDh529yd(Rq$xT`)B_AML9?wSOwjhy&MXERpf4*wNgVNvtVlMCw?K5TUw(TG(gI zZ>Ib(na@^yQCZDaec)U>1g=!S?M;YBN1ayWMj|IsgpQ_q`vu){TJKl5?U+JpGpbsy zL#ANbD>ORc7X{QqC%nVXP2x2h*8^a3a$jZ1+~e46pZYw35mf}@(MK@XPS5#SlOyX` zpJY$cp-cpb5F0`G!+1SxlgjThrbXL8tgXte>=YPer7Ub`@fB1IVK{1c@YhKQ>)#2@ zPX<9}I0}?v5AVuzNkg3^UiaPaZbI+h0MvTHy|%{@Ii~JFkD>bay4}#86opHd?uUdx z7x=_Io=SqOmiYYy8t=KWV$kEw*g7vwDrlaQ*`H@UQ_Hl-4L2DM=;t>Anl!JN<Czne zT;xFG4UNHRPy8I|-!BSM<i{61EbfdO9pCh#C{`WVXKHLGeoLxY9j}00>&c@r2Uh>q z0{8SW|6p6eD7yLN0EUXcLK|Tkok@pKz?Gq>i_e}@b`}MZxtf$PxyhC5q96{T&Yu2v zlkS{c6Gfkx6HjAMjyaZ&tjc|e%=A{QQd;|(&m0pU2Z2Nd@Ep}+c|F~_q@XL;OYErn zeRN-xKc&bulf&m|LUL(+axN8=_jt$Fuy}w{II?gvWLpnfl<)}Tq*y&rZ^tCX3jRh# zHN+a%W-y7KmdnsHQQ$e+>25Y=REoQfaIig_67GCuCmvE}bW}G}|E5Hr6vIX#)!(S@ zKYeY05)_-lCe`r@joIq6t$<32T1$ty)fO5NL-UcNA|kl#ajCqtV;){0vkkj@z`?d= zDA~LSN7ZQ;;t=}#yn_EWO%Ie8H$uZ~V~rbdMiG9DZ*)ji64`soWBvh{@~2r(tRUtS zeq%o7@Orz70&TBfLvM2B)9EJs`p>9vqMm=@M@>{%Z>7*D4x%v+gPWM|(204<-*}&l zoQx>gx39j!qp`1mmy(K>oar&wSRF}I$XD}>RcQBxJJEo&Pupx2Z6J8x<DDE5<+t5K zz=_3YJ8rN*f<Ga164hl*F`Mp}5f8(oE!|7XGJh?I5rWfLRO+qZ<R{&V;D98&cuJ{; z*QyJ)^vVR(OpB%3XdG$(2?HQwQ^E#lXO5*kPjBY-j9kGhuSq%d;qtP=+%KuZ@@=N9 z8dR~PrHeOKApY+mID|sZdozis``j5!>^o>aRCfQ^NSrZDvVi?x2(tOZ0QSB{?~EAr z!I1dq6DHz;l&gzQIrLoSG-*MIIx_M=ZuyM$qyWLJLRGHbj|lPAR==qjOBd=aH1%xx z!O;tam0gTJd7%a5V@bhk+%?A~D0X`CRb)g4c1!Rd$i{Q7HvJ_fTS$($>XQs745xqH zTn;c(vGBYmUF@~yEb*(i#6D+MS{Luk8}wP!i6eJk@wrB-BR61?{zX-}%{7C~$sFln z@~MITRUOYFuP{2V!G(DbIPu;9Q%E2ob!)8}G}-=2oF=^7<(T=9+0XLp0uskjT>!Q3 zQQx#zwfM<ta;iwo-Rq0O6*t4x1|2=@hW!qZFxJs+PAHKIAm{I(bC)PR&i;;%RWGqf zjl%ncT~5KC_^6xnhJxT@bYC-;Dr`KnRYd)SC?%RqD@<65D?krHnYPMxB>VIEvAkGn zAPlJv9qw;$$QMd}+LH{}iQAjV=a)<{-hGQ+?M3fq<*gy=ecCh={Gg#|eXJeeP*c>9 zAL2y7$)pxV5o2>Atrvl?<`ky7!HVxPlt2poCCU<_Sl?}4*G)hWqQOKvkx&aF*93{9 zve8F4!)YJ2esLLe-pdWx>D>!}EsZ(|F$=maV-r;Pu<VdzHx)tixWX4Fr;~^h2fVDF z;GEw9o%N-<`f-Qo6-df;=j@*$CO)6r@nMoyb@A+7dPn$g73@V@r+meZntF;JpW_7m zikKe6?Ipb4i8mLycSW370W-AaUcmO3W+<x#SO{7XtIvUhS9`hxmh1#*v0bf41L8<4 zc5<N>`3yImDHPlEN{i*GF_%`%o2P0!4=rM`YnNLz=uE#=ruLyUVNX3qNLol9ejc^l z$2Qqz(KCIp$wW$WuFw4o;E&IqO5@b)st7Oqyq9or%~?%s%3co_GImV5c~U)l89Hrf zt+fd)CtxJwlBm(GmKbM+p{N&@vghZvTi`^Mnz!8t(9x&U($j9jl59A@@eovKb`z(R zn&{8n-l3)knco3mj4j3BKEczBs!g1q9{^f+*!^vJyGlJ%&3I+YQpC^Sa(Tq_*h1?H z#xEc7sUAmoA(K`WWC}3YOZlXh-ET{Vnwh?v67V!Y$6jkfDGU<4tQ$XbYDGAvX*8{U zFD31^%B3x>*mk9m6*H!oW?f$A$~d=r&TK1kgU8*-4kRlvG1K#%u?#D~w&os*VqBuq zZ)ZL5E9Dzdsz=f<5d*5xsXG-{-fIxfyTRNv-R=5ZrLWj~;PdSArAXeYc0E2m{2F{* z(_{6WnyZP%nY3AX)~^93bmD!@o{dRA+$hDk|HKn!iPeNnvy&ZB6X*QPO_^kuY$#Dk z5D%OU#-PK0crUJl!*XhN<?#52Km!h&URQZw-V+z9o75cShLk@&dY4z>HWH{rpjxFu z6S3`lbG}m7ANic&U5KVM31C|9Bo$JHVkms5UAy;>%_dOChzfamV9y8^<;0M6T?6+i z`I}9lYMJbPyjp;JjV*Hx_HM?)dm7b<Ib*bcKyQi6OrLE&fy+sYyj~{4ZxJS%gGJ<D zZH6}Hd|+N$C)X(a82BpJ2JgGnCi||LP}Ku;{is!=8ZS9pIi9G%;tIt%BUl63O7$!d z;ZBP0(X9kmq;h0>fMCoY<4&YF;T=QN6Cl@9%l*<H+N7+z1c#c73|VPXA#8&PFZ_9t zcmxP+{BFQoS34<XCRVM3f)Ndu*6}x!^bYvT)X}Q5(al=@`M%L4Fx?{cM!x*5oc>E~ z0!f>vS{S=(9lr^=<>8<DdNCu<kHyXTc+YvoFi}k4;HT{k4jgH{fc?1g=rmnou;WT? z;V>LmJ(3G{!C+!9T#@(Hf~irbmini>o`ERw<&liNRrwacPP>mLQuqt!W`I;lQ`L4t zt4rPb&4grq{({y@W0K>|6yyK&eww;3j3+3?(5rLds5(<XuMKEib)OA7iMQ}On?4bG zu8qnQm`87P$>yu*#}Aak5h>2UIF=zHIeFMp8`=~C^0|~H7e_tasC$<B9zux5b$sG$ zXo+0-p}N=sb!pByn=qOBrt$$9d$NGQ|Fc>+C6T1H=tRcYmAp2w+Jz~TIkPqxThQ3# zxiuwfS5(X6Gp6S5b|)<HX%{EE1lsmg$kCiMu9Qp@yXKM@5Z}tix(u@jr}Uo1AW4(; zZOH`?)V0r{6~?&v<m^_})5-s)n$%~`)Am8xj+QfBy%8(7rgW`JV**Ql3zJ&g(@BAy z3YW*%=JLvYfqVYLs5T<-fZMVEI)Vmx$vuh=M}OgRwIA2QlnzRQYOdx!8}KjrI!dWX zyiVQZc1lEk^qmn>&dzT2v+R(?CY;LDXKY$@S3Y6l2mZV$(IPr^ZPJr+Na!3c(M~F_ zEF94XH^sbCTre`@$+nXBVyz`~#*9ny?C5i`8T&=O6gD=sWLg~=mfh2ZCF1dY|ATg^ z!+_)Oa07X|${%dw8)N^9<eYqw8h^UDq=@>TW^=?38miSP)d`mcTcK6EjQr_1>Kq|W zt_r_4FX^0b!xOaI8nN}uH*NrudSuo{g6W4%86PSyMf*ODX`Kz06%W{?I0PrM$IhH! zt(JY?b{dqsMO=dkR~@Z{eg>wHJh;lIOuZMwsCM<rj8@dU`y;2qPC#5|Vzxwh3v9;K z1Jl5jrdS67PTmJF3Mjkn_9uEdR$Q!|mnQxRL%BbCNfNZBl}qvkufRZ&vN$qcBHw(~ zK@J{Z%Lz&JFz$9Uz{lSM#1*eD2}BTMU02I3GNLn31^1glF=treXg_jFh^pV(BSp>| zC5p6+2%c#CDJcOCmPnLdxI~Y6)4v>1(q`<v?a;mJ@rdnYN`b!9E}z-~6k=2_m)chW zsYbm$;LD!>wr)Iw1?@dGMI8Vxjc&zmT3V7Z1`PE|^G~8D!!l@;F~(n=Y}jU;gf{D0 z-CDnR3FJ5~e$c_4_P!y_oHZwoOK9G@>dmE)t*pzC6G}uJoDjB7mew2>qk?ty)?5fB zdu7GsC1+BxS&RcgW>tNf(uGI|Kb2KROi&grz~HUdIa=1>m)vj{;YaAItL{ivn+9Ur z;S%I@%+7u*VkEH*S|y_1Nz?YX(#z8!DRV#;pZB~=wigBbz{ZmslAbH4v$|-ep^CM7 zreJr5X)M$D6-nGw_z_tVIyZ+7!)tw$2ia(`I?4^NaTnHFiYJyi38sY3aF37mS}5l` z4qlKeUOA<el2|cX9((^{{I!NtG<uQN+n6mZf#vG9TASpabZl(MXV^g*UmXcY)e*Jx z;tX}yQuuM{^LEH?B0hXj%ntg5e(Y#6QY7N5q-J#VfXAFkvpx#sn@LOR=t5UBD^X(4 zB?Wmz<xL3+11S0b12xvE>9V3Xw0i2r>@t~bV6PLk+N4MSVv0SU$4Yr2aokR?lU_Du z%-?TamXqSmB**qPxW=CPP>sv9kCb&rI+nsvioVI3SF`}H@g?bwR&>jF**GG<nEfn@ z1kEo(csrXf275yXfM*xXJeFL^z>9&q=F?eA27!=1TW)FL^^6T8UV920IF(zKaW5G| zE^eoSDF#_h919ZwjJGMkcN>+WMDb@VkwIYrPQm0ADv)O}*O8P_90L@b*bwNr0!+z3 zj1Pa8I9)VxfFX974I<jXKj*tdk)qkZBkne{+p9i%`;{2af$-t4BvQCNe#m-c<n#73 zkUNn>ZbeA7hQzf;aPQfT{nYt@bky*O-=RRrmydp@ZhOOE19XFj#;yRnEg?%o{25d6 z>ftC$shv~|nJNmHM)Ojcl#(d#O=9IcX}xo@OPxEll)Kpuu8}QiGEPna_9}YkyZKZs z^!5kdN!^IKJktzRMj$-rz^LGvI+7}8`i{smDVuZKS1{@6{qWx*LyP6qQRI__UJ6Jh z8?C1xZT7f7*knx-{;nr4EPoBS-j*dZm6FRh7q5;6>S@wiw{t_lbTy5_S^FA3c=B^P zBWZgC_qQBo6Z<Pp!|B(6^+!3Gets~t*2E0;|D%Kofx3NiQ;YfeA<b>&e@MwVoP4>$ zF0zn=8WSnjKQn@6>#c#&D(Y|AZ6)y-fjfiO3q^{aQtstgOtlMPoW$3scsrkQiPO>r zzn4RPtt<LC)0iL}Bs%|ph0cn1BFrMmO|zVY-Z!A*ZAh*pVQ8%Cb0~L)d#N}`TTAs3 z<w$D<YxT(sPVs;#Gzano^$?DqYWKv#ElsXg`IVdG9`_Q9PvtatPBs*DV<~aM8i6Tf zjws&DEAL5keAwER{sNDRi^DySMu6MKWk2$p(PN%O?-4LNhpd3AbCP~Os|Tpo4|$uj z*PFM)p!^WAGpxld5B{3TNhdC)bm#V)+1--XJ}={wZ}z7E`P~O|GL;rtt=Ey)LO85c zLTpgOmJvs~oIJiLUFO4a2==U;3RI6svNQ1c@UDW4<tWdfD;E2_!p_RruizA%bSY5- zZr+v+HD!^Dkk+QLE`44->{cwV`=5?T8yoAO;c$k<<&*G^th~0Qg}pxN7t>CJlvg~C zCdsxpGW^d;dlIWXNb9Q4!8)FCFTL%-n^klVWn@;Fjin`I{A7>Qwfv7fLhT8BQmp7% z(BnAu%uIQPM=wF{ZqRv_nYJ!MdHt_a9Q`)MQp77e;N@b-E)tWPwQ>>afXnX$ogj{q zntm|qrxu+gHK2a2OwNbflafyPIHX`U6wxLx7X3(koMH+9&H#0|B$Fl}l8R;CcYK;$ zGO^-6vEU3;K&ggiKs<OIld6t<Iu8!N0$6KV9q{oH82IaciG^$kX((gma$EAoVMUq7 zh5%2JpQNSp><<)Td7^TR+vys~XwTQl(Z>HJ8g-~`l?M2HWa`EGWR3xa%7v=a$wBrV z5C7CQ92>SypCo8ha3~j4kT1`;Cy~v=>t$WlA4a*vL{2xKz91<{q2`204r>F>QLk%Q zY(&m*Nnlic?ASvS>PpHrjpt!=QJlW*a~B34y%qW_JpJE+yL_|3HB{j0sDC+$O{1Lg zVl(Hg$dc78u><EZ-mUW53`-tEItWUJlz6w1%rqrxt0NLDdJvg}`t2&p+20b=nFy3- zr1i>e)Dxs)KGEBwJq9*w&IC0R-|a^e_mrE_aqPt-h%j!@N3jI0dIuEc8In*_&N21d zY9bBVE3M?dV4IBWm(ok#mqB-Q2cBu~)n2;@Phl9(H1=oM_EsxT;<{*4oZ1>7CK}SY z$d>?jlrxd8ZYH)9X}$eg)(4I&-#vk`$Q;ATClr4xOHmX-U#(761vmnI4AR^e__1(S z9JG;|ldk-^GfQ7soAA2joN%@<*{db*$eH`G{h_|Q$J~;K(0y`KV-;F8Dq`yB7AIfX z3d(IH6mmW+ZIae9GYMlH%2{HMzPNXj`acYunB9ct8EF*<Bt2FwQTOkNZU(xbuF1Hm zIN|ynge7zj@hDhVE&=x9<=yQnu-A|$hdOmupLEE2%CUD8C~Z_xVVY9af0uA6dqV@! z*fhhdqbx;=j_l!ww7|!J7>KeE(0q=n?L}*2-0-4QPxjo0C`zE11$T5>vO<X6)cvkT z5-fsVi)(QEYca^(zO<>6P}7lAP&&Wvt`S5_f?Ph6>w*ULO)TVNZ@`(kDI*Dtj4mf+ zY^gYJeG0wqa$Bq3f7mm&Ocf0$g{bSNJno8vwO?X=aM}pC6>aK3THilMXvWExxaA3? z>T`@+l1Kw*CtraHI)8jL-dy2xR8bgX>KNsEFN8cy&Owk$WuZZ_3i2i^X1Xwx=X{>f zKC_{E!yY#k0X2lz?qvrOG3P@(Bob<2mzE-~Da0Ri&RM@9To*Hm12r!n-QVPUkjbMn z1Jog_Jq#%qUs5h(sV2Gcj#fw+w3X_pjosy{h;lU0yq;k&iadBDX<7+LLBWi=ph2&A zk<}~l^doLApz#mc?>i_1_R79ZWDNIzBSnyGI3M|NG?{9X39OhMPiF*kP2adJ%gGvc z2fBUXh9hnUE(i5GY|Rk1jbQu7N1>Wo@T9`!jC3eL)YVtT&`N_Z^!&S)jSdYXF~~e+ zzi~uW_eH5};&!AWAAXc!{RR50*k>Qx3x!<vRbt*9<xD0qMxv|Y#Y8Bs%-<E)a%<O; z7KZ0Lnz2>A_;586ELt2I=5nrE4N9C?=#-xnZ<6U2f(Z?vhI>*C^GFO|8J?HXI6GTm z|08%Z*|39oSERW0WQ1$i42lRoI$=BhR2zeQ#;uE-3{@hCL}5>AD7VfV1{1sg44XJl zYBxiCOzi!D>$m+Y+rKkaqZWW#8!GVOq*rJ@`Mzx_a|}?0Ci!GquL}x9KZwdyo9^pZ zr_4595fpQX<x6;!Ho6XF^$Cy@(lpUK=BkTF9zuWA^h_iRo6F1Vf*)KR_I(jzrBaOi zd53VDLPnRMtEdvzt6fG2P8^5}>pm%HzWzHcyNb2qiebQKo_t*$`{1+aUy-AJ6Tn}7 zpDULY)y-${Nc<Yzw{|D&0V3U4)^G;st?jiA$aB<G9Mw_?1X!y_>NtXn&Ak6_?xp;R zV{hb|2azS{l|Up6%b^#)-(&Fo;ezZ^^O9%GhN+&bkcI{W-Ky{?8u}1p3xc1nYe+R~ zZ7nBx3Bvt#AQ(EIgCXKF#!mpK9J1VHLBJT4|MKehQ}<IZa>fm@IKhujspbUI<bsQ! zLyEbFV45GROj8>0PmdSFQug~#G{!2TGW)**%^vsZ<Md_vCn~h5EhZrH8kIzk3nSSv zJ<nQ&Xp^C)ZZ%AOrFF#rV)ze6_UY3YjTeqKDLduB`Fi|d8)qS&=aP>o347DOu$SzI z*x|kBGXgmMvJ8e|=Q<+zW57m8qp!VcWmJW=Vk4x)u}m8mM`-y6X?D>AL#d{r2b!?6 zz9TrZv@PVBv+zFuU5Ak7uZKh#9zqq&vuIid!`&Law;KYuX>__xx|HD9sy;vcpfvOH zAW=Q@y;Oz4bZFE}NU{J+B{I#cDq+pkS<AbQVpzX?FDZ?dCch8uyOBbr1>Qm_Pam8C z)4)(bqx-+=uhJQVB2ug#sn5b_Kz!Cq4&dbpW4QePFltAoP;%5?P@Yrx);5}NTl)0C zY}>AREkmmzK~~pzxc<h&12e1FMjMH^z2D1=yw4Y+na^nPOF8&en*tAc<*6~3PXwco z_`82IMI+6#CNQyTrlPR1`UFzim2o#@&d~75DKBKHISZ+P8%<GD8aS(53`Q2^#L_gf za&26b2fem?AuPrBACN5h32KUlRu*N7bJS{W&a=J7pb4YMgUU$Or(Sd~g0rKZrZ5%T z^PsstjqimY=z@MMO)RWzR{Eb1EohtFtA_WrhnDSsLa|c)>bSeWy#j70=)7+TloUL+ z2T(AF{C~p~_0y99!RLF_@;!HXPEwEbgmqMY`8)`QTKb7yD0)sg(}OgUB|LtwU=7RK z6eF|X<O-o^Hpha3X3LQxPu0qj9vxELRG&R^8YExQ;E>kYAN|Y+9Lohe1H^EWMn$9; zCV0P_D~V=U7Ci87TjN@*7Kk1OTS{G=`E*+ghPh&yQG|gtx1`6Q&y$}fIt&zV7gy-O z3l<r1?RGwdhptb9O^sIrwsyrOw6!Ax)tBD?-VG@`XPure{OT~FQfJv=LMwFI*F;=_ z4v6_j(RQFFleUR26<Oq;uC+tanDz}q!7Hdk6eec{r#n()`cm-Gp$SH`F;VS7#qNy) z4a)nmW_*-#CZk@3Bt(Wz%&SjQo_<`)w&4r3Uoqp{7~2-L4WiG&fe`)vY}4}Rh<>AN zsn@+&@{cE=1c*e|$;*?Oe4!{xG6PH4{UJDcJ}XA?QQOs#qRkmU90*A&uft{Ux`dp2 zB8y7}3Rb9MTCBAd-jxk2FZBDKYMd9}nPG_>!a7e_=jfyZe3sfs*0W;XPEsp@q}lW8 z##h|$R#00w>gY5TRU4!FP(=~;-3qi*%$VeH4$&eB&`{SutH%02A5bz8e}bWCp=Jcl zi6Ma@g3<=kLSjryfP$V%-W(59Xb8_f`#|a5rc`_KXzao>_DbuYV}=EgoQ;4&E@v4? zUhd{5yywjc6w;C*{#~d?l4>e!#weV^{k{#4P~Tl}6|`g*so81NW$)xVmyox`5K<u1 zHx_lyX7-pk<?1fHfNWNIKby9i+V^Z;*KG2nR}E2K#{K_l54jl?RmABKaH(j^Ks9zv z41qmHrEv;*HOEp!@$K!z@hX<2O)5!R7yTR!rLvIJA+oG+J;!uevW-thU@&ehQf(;T zsb~d7V}u<~oa9!jRSyOG{ZoV(Z)j5^GCJfSX@B~nJcxVS7<>W&7>6eB-p#O52M_p_ zT-F0SG(r^W4D?xX<en{{bMwMt|D;o4G5JTcy2HVdZrUI>r+}PuDtrUoO`vWTy^-=Y z*2I^|iBm(Pj{s!=NHNkn=y)TSsm9}Y*sOp3waNGM5SYOj-9CVl43oc3>biP487Vv% zqB<&xAtYrYt?Z^8JXli**f7O=-IHHce!`CJ%1_JWMXPtljJq*dn$sL{cn&EmaHQ|N z*esb}g|MiW=DISgZVEt;7O)GnwNvdbm1Q?~wlZJ04a;ka*3<GCSjgxkx4GKOrt6Cl zhyI`=J&?`Xl2<&nZ}H{I=n%Z=Rj!u&CIQ%g8=B0AP0u5ABfV<YyKg!Go^kEQyRMw5 zetUNnUsrGTxVKlg(Q+hZ-h?j$svY_|%Qluq)Sj!%$@o?v)k803bEcO^ZFaJ7AmJBd z3Pf?Jnce1HOD^#l>@d|>Lu8;|bK05Q1R}jEOp8V?vxSEf@*dKni0oEeNqiQZ3#+>p zCF|?lw3f!UYQZ?T?`9Vjc84y&=%Nhyi0T{nOhH+o7+0QpoNy<QQ>qG-&qqC}p6Kpy zk}0K8Bm_5nHcUzwQnNj5SL+t!Cek|kfMm4+3!VIm?L)1APy0nX-!@BfpuvWF`DsIn zc$!Wg2CW$ibs8Y8J5vboUm#(pES5*FJ_@|x^><U3Wz;O&Z+oSHMUq^Xn{|bQ|F{)q zE@`xTU85aIpINy%AFS*fXs778j|u2df`)yoe>6>)-3g-{v^<H0K6n_GUJYfXWxhib zYU)~mvV9D@NF7Ur8mWJ@g^@-SEfI`#zY$o67yZr&uKO~|i6-AUYL!i`#&Hk(m8U^q zH%77+>j!)uAK#&q8NYV&2cfI#qBGf%GG9=B3y;QtKyM^Tnk9mo#;t9nb-wrgQ6#E+ ztV-r6*TVRc5r2+S?j=Js3eq~{3fQfE9w}0xoq~ON<BKE~ba51LLq06PDiEPbpE@;3 zVS^SKqIC#9WYQCNIo8S$NtHK^m=CSpq&_zOqa>O<u+Hl5NmI`Qo~VpeN8Nt#yaMg2 zA;Y58%BMUJ4r~rM>e_{+P|P7NJ1kX@<N$h3dToSfH*CVfXL+XfAl=bHl}Xe?10H7R zM!Qo+L)v(y|6PM)Vn29@mEWirV&2vOwGltAIxvWKOYFCA!9ONkuU%=<7;>J%U>fW) z5akmsEy!3b5J{XDqb*D--$4-=&*D>Y2aZzCIO^;qfs~-&*O1^&)n3W#5WgLHevB_s z6w1SwV#Vtkn@4Z4*T!It4bqt8fj#rATkZgw?eXp{d9^h@IG2=Sb6CzDZWkkaK#$yY z>1aIOsdY`RR+1}H+Ti_<@#~?-x*np_r&RN5UU^Q}h%C!H@g$Wmj9+QjlD<G?sXf3r zMZ!Ob*`g#WO%#y3o82nKJLflgvL8m^5Y=aK$Ge#Ae<sbzHFboOV>h#LJ*N_Ary_KT z9gNKCr3ID;TC^pF_y?~>2$|6}<{3?On`orf8j5)X_q9uoQ##)Xi=k#yCj&p+Cx_xG zHGlm+QAQBSEK!yolk#-SgmoD(jHLWroL<){vsSrxCPKImb=xjzHk~jkS>d-5_+$kr zGw5mY+M>*|)-l1BqaEf{af$tj7NgpT>O{G3il?W7xm0`quVfW`BnP1=pxi?V?aK0n zZ&E~9ePgsNrxjWaJ&^S+0_t=w!QD>FQ<qc=CkwLFx~#@;>t%TvM>d3=z6sOP8f9ne zzTZHi;PNL~rtgcLoN+TTC}$n1G>FD&b)Ua4L(RMTFvn&7PvQ~+A8R}vVuT?wg1x^5 z!R(H9>4}5V!<!tei2F{W=lx+Wb_1og-0pg8znUeaD5-yV`@d|F!07`(skFv!v{~Il z-RqBOjMI>nYF$2oMs|>dTK!+8nOnJyS0NV4y6zljdC#<JqjJ6PtZ3okckgq4wRWX- z)Ijy)m$wlX+&XMgT;tG}IdMp(KUgT1cj(Q2HsQY)>P(!cO#*?1A=wVjGTGpGn>)&% z<k7&jYRKB<jYSK@ZH>!Rs5#&dY0*^W9lzANsC*dH1I7FiC<g?J6za*_hMGTFQueJ1 z3_hT1B5tH)N1ks|B_(9&<T+_xGXvi*=*~Es4#3^ElGEeKeGPoI066X53(_hw^IThx zaNO9HfxXzFBo}Ld@k-EE%JJ;6gO$HR9V~02)agwWO)6UP4hACW8@)j<oFti~ZeU0l zHn}a7&J>89rt%xurVHOh#+y^!>d=XP3xt|zOQUF^7kPlpPcKN*fgyIT1&C2Rnq(6~ zc4^YfSm}ntQpbtEnX@Se9;W$>K5|^}mxQ-1sKqqoCtEW8&=B;89Q+)!p-?6!tI6%E zj?<n6mf_?UmgeiX)FCq|wGn*(dzW-3DQi|)Dk1?!8@S7M8*GE0e55v2L3@(c-!69C z96^m)1{ZjyD>Eh$g3P@kFJORv(sWp=JHPf90F(=5dt43L1*c$D_*lU~N2Wr?vm-%O z@xmY^COo@OB>T#=tI<LNx$3vAphQ2L*|b_jVErn`$9x&29O+lCq1V|!URS(=z!b<b zNhn;2^*OSeHM7*y?%A(Ez?8$zD^hr0+#pHi_mtksbV?xA)9BF2RiWoWY<5ZdUD+Hi zwvjkSZ#0XACNsmfxbJhLR<0kG*rnyHF)iK^ZF_;;OcpCc5Uu`s_KVE<rB)IW4BbM0 zJG_Zs$gJs?L<g@C_oBoqog~=k-%d)Q0fL%h-+DA#Xs2Swb;}W}XT2;n^W4Fw%8(E{ zNY)lVn9&&^e3|ee1uwBm%(>ot7|zxZG5qUf>FqzZ5NeR5kEJGtwbmBI3gtO$5G%Zc zwD(l)5rc*+N@kjT2PUg*NpcmV;clF1CV{1~y)^RmpV+`hZ~EA!mdp*57Q7YvbHOdi zGD#-iuSG1eTp5A(n`{pdAK@4|@L??3&4dZ0J^Xq)6eGlva-swAJ{RwNKBL|1nE#bk z7nMPy_oi+>^btq4GHqc;rp!!``(AbodVMxg$cZqeVu2Mp2PKO-CoO0F5uOJ%)vFbu z{?@)Q<0neOYkbn>2I@5lU(Aw4kcAohw^YF6N(FeB!T&w}uQ+I@$Lt#OAS6<y49D)% zT=<iO!Lc@R#SO9_d|U3yHMfNbo2Le+PCi5B(_-=#fb9C2|HU;}wcqzdRsnd7|5ei# zA+9ZnBfYRhul*JGQ`fEMkjYEqI&Gh(KR{bOTO-2yB%2FNrnRI{3W*BFWF%#v$(?6= z_tAN&Yh=uBNq{O5s?tx#Is|Px{hZ~-J)eyZE%I{WDj?VEklt4l(U{IEzc#P2v`Gz$ zn6y4h&&a9u#Y>``R^RRVCITY#ABM0LeVEqRi`0enM+G2$)YT%-_@I^YW3#D9fWY<O z=BN&Aht%0DSZ1t`?`G<DTg%b)t}qd+CZgE%bw6qo0Bqt}EjbOALs%`v`G1a+P`EmT zqiJL__r0`01k0SrKl0zy@hM6nAV31nz+R8LgpgIAx$prTzG7q^>C3|ph)_2dR@jt& zoTdE!Et?q-$)UKO54vs-+RPiTuCou-kmE!KPEMk@c)3>vft8<qfrCi+fZ;CdD#O`5 zSb3quId9mD)Zg~3GzW?LR7l^1&K~)JLv2A+no=Lr#^Jv<U6B|%@7F7i;}0ARqtA~5 zRB_vUJA_vECO4<e9!gfrfcv4=Ae`YyZ{Krz7Mi4<wN__Mh+t%!5(Y{8ySL-0TvB00 zCXaQ2Cbbzhs@x4Mksi0%>PtyD^eK|hzL)nP4Vu*!<xX>ae(`yBcM%%IKw)Z1MRKIw zJ6mTAiWq%paCR3Ae9|XC1bXt;mE2B)H8O?9hj@m-eI_rP+vwpFNnuoHW;^&~QWqT7 zY<dU~pHkwI{939Q%zQ{49AfKXQA*o4`(#FjP@mE<Sp7%UdSox5mvT5Q3MLsUt>=$Q zfZ6r=+rg-M=RJ4=FqMTg5EKlY8jC^@cQg(|=8KZVYF)mN&V;3yWdUv%ju2q#`<0G5 z_>Iz$XbO_0owzF^#WTkQ)dD2z0eU7SAQQ0GCuQmqB|W803D<{w;6z<M2m4}36pq}~ zaV(NGqN|EzWcURyNS`pR8S}>VthKRbYM0=EMxY+x2_jxYg)TYp)LadDE6>stU-eun zn{N?$B9$BvbBW!T8*5{xXu>)+p=WWxB>sU|OI(v}ui^Y@V?>9{*35BQ9R*l`Gfq+i z|Lhic7G2)8X{9#np5ZI<nxRWGEO)@)?7&#<8)7N|Z)AFbjVN@VH>6!ZYBjzo`2#n- zp@UVVO;>rDA3AwiGXR@^uPw+|iL1V%G%Q?S@zFf~F!fg18Us4-iB#5anIeV~BFhVa zJFT=yb)Z>h|5USX>w&jXUkw4jG~xEt9?G*DEfa;B0F+eu2^g^JR`LGg?LX_IR&Pj% z8p;s!VB^Q`O-r{(n6XSbe4=(ABGue)1zz%CBx~*&0OK3z5BWtWyT}0OK?8k`lrv!e zD$K4k^llVVs@aMJo7ip(hykAM%>{Og!!7nYVXRfD^&HUKxSq(nhglW9i-DR5S01GN z^OAy>I}E5gQLD_%>w$OEC}975u3YMrxfP4LICNT>x}V(tVz;XZNtRYjDic?1*?<bR z6jz*!=?i^?2R(9_!%PmlhN304271kMWwC~Ox?osDezOTfb=0qHVua483on3Ax#1?{ zENKP{!9p#A1sYN~5J<Q{jA^N8!ZssVtZUftKRq-`;w7d4Kt7>th=)AQbPApW1~`}} zV$WWE@T~)tiHAH`6$MmXFH>W5Y*oI}lo1dJdEWV!pLnp;OSpZ3zrxH-@7}3g<@LAV z6zE)}qzpu_6{y_$*#;#0J$ZsRUXD;K*z+6HxB_2fm8UTW2{2QIA&WQp5?#Mm+iwHk zjbw<vEeofmrj2^y>m<8g%KuC%J4Jm#%JmP%)*g~-g>Wi5adVpFhtH1p0zAXK6yKfA z0WYhBbwMQ?8#gM&m4A;JC?f#*)<u)l^=A#$A+uUB?U!Y##;v};`WTn{l51Zq=nm!4 z91$O(p7Fq&5}_b>P5auk*5yLc2B3Ii)$01b-t`XHy5)_wX%SM-G~;IVM1Q&kFvq>_ zimDZh#q)wo`f*a*;NJgKk0Lfdr6zLq2>iDHXVltB^h6`3V@6<h)eEVW`NWqb59GmV z5aNTQws|K!Px11ssAnI=r(=1pyp}_?Z2h=u@MnR=;#J~7_T0{*ag~T#MD|2jkGd6V z1H=z6)GN#U-O~<LZ0HHqn-tnSW^Mriv+%AcyEpaQToTa%c!p{+-85iDc|kf?n`f?< zOAchGdbb-~DIU3(h1RG)Lir;(P-$U0YffY-TNPu55KLBo0UdACS=|Nh7t)Kw-F_M% zJ3D`H(BF{B70E@5bxQ993nqRTL?-a8Y0y>p-M!fHciaMA1BCff{Qe2IBALpnS1yIv z;cX}OsAtg%IZ&hA>z3=xvlI4dYQm8m`6y6tJKFZh8E`NhdMRFRYKa09?zNu!ZGv*j z2|=a)@UD{b-7rby<&je>9_e4uu}F1y@C)s91tVo<o)D$Dq(vmuG|0heH$!^oRI@_M z^3;!=a^X3QyQOhaWQmlec0nP-Q58d^<Bm7Q4JQ}Ff4OIc6c<hJP`hRWqT6>?AZhm$ zjP7fpLU$n=s6nCM$s-!UrB?%RrCLTbk&88bw0fdHWD3PrO?xiIsG)eX9)B%VsxOa- zIqIx_;X%YUcm2&JpqP4tv(ZD5Iu!7wE^knIVQ~zYw)6t^miX<*J@C1kZ+FcmvQ8vr z%DNn-*t<c%ttk%r1n|8;sJ8`cbni2hM3*d%>7|DAr2BP1Z`MqoZ5qnoT7jz+L+NaR z)HBG^i7`p7o8)nPqQgi9Wf!RMVy~Anx{^8*eDKlE)xw5@u|3+S=D3y46b5S#FNUMZ zYztyP<j=r&Kcc6d)YVFMqceeeb98i*b}ZGwa#;eEbe8ucwV<oiO5HLKQE8kbjt)A? zAS+}Sb)(`;;<n$IB0(4UhI_0`BP0?7pL0;JekVhT1LazHEy3(ccTgLEm}a!)f*71% zUd5g~_Yk5Q8QrAgrO+Je`uai5fcn?l{Wv6kb$d*MJjh^|HBnR&8H#D;-RLSSSws-i z?-Uhkress##ID*eioHuGpmEkh)Y#^q(S9NH2=7oEIXM=`==Gk;-F3Kp-E&2CV9RI| zT)kwzz!;SbRm1fiL)uFtM?oDvp-zlR>fcX^z^&E4&w;9-heW2CXwJdL<d1@ceMuy} zrDrIvq<H;0;3t%6@0JmcG3%j?KB|$^Qin5~%P25#=88VkF4>{4(?=9qcP5|Yv6K$^ z1)}9WQ+ZHD&)uMw?!dj0QXKY4Rs&qG9RkDp(P~UpkI$Kw<Ca6x;G4E_J~dv6#BO!> zCU%X)_9*QQ-z`Q6-t}QhH=|v?`{fBYY&9l9n^6+nuPx=F4=^|$O|e+|)!WGXNnM|# zE=HRQkle;c1A0%%<G2bsDgFwgY|%>fCgH>L^<E4gi8{3XsVv`)A}55e{(de{+*6oT z2^WqU3c=<KWhVwN!h-F(gg}+c5;C2u3e*I-g!Ge|tePH4PUA#T#1;Qo%dUg+S3`ZJ zcxvDX3N0q~A?oU;_dJIPzQ$>~=0!UuiBfQSv-;wT4+Ucaio{JJI7}-mT_iOOJTDXy zau0GRhLn5lRSa||`100L*Qq^yo#h=SSq)U6c=t8^AnlYaijq-y?I~iRU))gcS4wLP zQ2?6YXg(Ub)En&cShj0~650@$KXX`9lF8WQ^7C8T+SQ;Z15hlV``b^?swI?AK{OFk zk8w4@sMfiPUrQRKRD~Bq^1sn71zU)<a`!ghrtI;l?G{Ka7BhOzAZiUg&_N4Y6x}5- zhGMn~un)J=RaV*5n8ISwM1-N20>o=rljp!OADBlmZLegu5L_L~f$daS3eJg_@yG+H zpQch%BOKWk$@Bt*Qs{w@GFvQl@>h^VqO!ZZ_HNSD<H%4vI~Vk4UWYd0Wtk;<X1>NF zuUFP(5G8Kpts3>fEt+iD)zB>eSu@jsKqrp^+75IB^j_iWTnv@ZDom}4&LQPC;H#gW zmXIv)1GiG%ttA^gB4rB3brF=~eVlF0I2j6ry$~bSke$8<G2F$2uz+8uagg<I<Is%4 zaab&Id%Vh0qxq%RDIt~^CRiMHo0fvPTm>awV5~V+fG{qwCyL*ahEo5}jH^tE3bp^_ zdF$9gt5$~-9=q2$3@+Y49)9HyX(QYkn0Ha>U}sO5gNET=hs78X-tQEo-QxYRLN=u7 z_*VfDm>&u6YOPI};4h-zJTw~jc(m4~8jkw%sJpQA+I8fp#iXrpWvM@7u9P=6+76Hm z7@|9CQ(I|+GQp$O4DI`q-6BQ{{E!`>J4hp*<SjJ@&0A$8Z(B?40cx=>Q9DAV#J0(f zoAf!Qbp2j(SF|!9x6O-sVnavY8r-owNtK>ip~RurqroaXpcA9IF)NgO?N?o5`h+17 zOf=6}dec68NxDW<^aF_%iTPy~(7LG$7Dtsc_dsuyug0W&<5K{;ODkFGYa<AiqepUE z9z|W}0`%N>we6&!x$L<n1ZGs{jSdx6T-GNID4HisO5`ipjk?By9kA*SO}7k};hcCN zztcQA?^lO@rB~UI3-AvH#88Y{@~?_%_g(E5As0W$5S<@~v7sn<!YmQm!Q_)QEKSyW z6(FkHP22}sFvmQqaYZ?wL4ytmtH)Db`=}a+Cgph@@T_vGyKdoxH&<h)AlWheEAXxy z^#;+DeU(i6XB4^__*I&yWjr!a*OP+)9sww}1H@23Ycr6~2EIy;{wM0ON4$~uxCE$$ z1UV;N9w`tZL4i33uhEhvGM@ERnm93m9tMyLNRgVE0KK(=$D*-7EPK$^6l7^;FO!G& zf=z7z=5u;~+mo=0vV4_I4-Yco6y?e_N?W%BhCf%1PEN~!KR2e0vTc-Vy0(<%W1E|P zN3AH7Nh@J<G3PAmVU*dTd_v#x=|Ir=@nxofF9y`R99VyQMG|EfZs#oO%GCB*@ORr6 zW|;39S61;$RElc{X1EEo@v^K2Xp(k{_0wkvisjiVhAkgOF3dDu>FUf47!;&jb`S^& zYOkcSW<Jmqecs(RLcfzIyVash;d~SGO1lMbk2qYTl%^9&eQNiM=xl=52XDQKaDD@% zr#TNHBT_LS%B;t6r<FhF=t)4iB=4<D{Cd+Fhhp^ixq2^#J9&PDYVvVi-~Zj)NdVeg z%b5qc_kZ;BP1@JtbOZrt4rwqew|P{Wy-oy@=7kVmH#utrIuz7iY1G=YG(GZyB6?R= z-ELEf`Fv!hUOZA=GjU9YYw+s$GzXv8B8U-5Rv`r*Yi9NCKi*Uj%`}@|tx4B;r_8vk z)pz?^2`<YRc528)-NI;^JN|?9jwQP2DU>7RQ^W&$!=b1sl*&dx{dEw4tbNBiAtwV< z`fz=koO|vX-u>`cH{YAY6!zE(ud&wz^r@4No66>Oc|one*pn%O(1@P>Gfed>^U5|Q zK}X3wDO*+*1Ivkh%1xN!6Th;#+iAsDj?Y&yXfwNTv@uWlqFHc{krcBhgQvn8F_S~o zUoI#x)YSFyom?;q83zbBY2v#XB4Ps4KL5;ZFp2}B{%ow8Cs&YeZWErY1Bu4gS+>)O zr9jP+^w47lp<_)ry~tdgv}6{}N}~}_-UbHQ(Jq=nlFHxumo%N!SKNY-YWcQAS5hf8 znzm|oFTR3B4CVtfmV!6nYmv!?y-}*#x-V@X<<W>sA1!(P|Gh^ibn97VlO5t6hJ-2x zMg8)Eqtg`2u`R<?S9GBR3wiVR9%#ZG^qfWKv@flNmERWJ|D0;y9`gZS#)0w%q_PxG zV_Og{|JgWH@|Yv;!vEt<Fp#l;j(ALa+*At~^tkOP%OmF%wFAupPBmdJ8Evw4@fFXI z1~Zy?@+`m-d=4#yU-fspq--OIa}P)i%!tet1GzuqmkdWRaJ&CLR}-Mx{APx2`g}be zXL26INciY0)8246>9VB^1%MGO)TMmgywF5bu=+`&YXP-N<Goq`P{dP_1wcE?iMrjv z2})wI8di?Zxe!03@@A05)DUTk6oA6v+W+|KB=8DSCVm&7yEThfoc))8s6v(BuTPG; zTErQYI<uq^-Afl;r3{^IyHx3%aF)Yf-J#vgQXnV^sf~@OTi}(#0r_MHkL_%_>>$8} zJK|FF^ZO!e2m`@jO4TLo@oUCKMJm98YJJ)mu=^gz{ds@mUuak!su3VR_2>wq-1OIY z8R`i*MDpeJnueQll)yQ17Lc3{yhhF~=qRc{)CSCaLUOApkE<h_!7Wv&bKuB;uc19j zoh7*7b9KDP`@f^gK?jc~TEk}C<7RTkSNy-9cuGXD(fh|?4qqh0*%xb53lea&h35Px zse6>uq~;@A-e8h`6{G1x1;9+0@4l<s>6Lp`I7r|PJr)nxErZfc_kt<Zi9x1OP0tsv zW8j4voG2LBA<}DYM~+>Ei*XjjI&D8Tyd&!3Vbca9AJ~~Th2;G=F`{wLh+io>>1H^v zle{3YH_`i<NKx&)erf7iM`s6PkbAF)FbVU78*^PeM^XLx$efCnxMWt)E}FFF-xdw~ zwfntZijXfPGH(@W3^%)u-(N$?8k&IP_Rqpvn2vMx1^0ipq+oFO(K*31`rB6|Ly%MX zES>38f>ahqFQ;grIr7Q>{{NWqbPln@Df5gG7a3^B;N!sV-iaPkd6~34s1RplU<oNm zSoNNhn&F+ND@~#(Itjzm#C;HW*h&V=r5R)f!w}H}Aflk4cm^sg9KMNN`;dUiDKDjU z5HI4MP6G(7qkIgCO%qd0%BoiR9vHhsCpCDpDu|dS{+k)4iR%Mua%*GB00yus0C9te zyLILte7U!AXA#IkD-*1i`Cv+i5WzSGzyYqdyL#2z-%<xl@7Zd6TlQ;(${1GX3nBK5 zidAJj^J!>oX6Oil)NR#S9R4w2nNT-$&X8v*+EP?Ql!qT4aT09Qv34TkBcuY2)i8Y` zk|q<b3FO3(M?D79H|TMlyr;5J*T#4d#b>>c(Oq;eWa<O&cVB;aVO{6)fKvRg0zb;_ z^j*!g?S1CK>dE_-A&iNIJd-wYn0h6#<DYcSd_heyBa`fesrR~KYJ&EP8~}FIr%vD- zWZFIHV5;wz5w+yCrbF+4!U#d=M2>yiWg>U^Sd0UV`tSHFDcY(wfpKqrqg{#+bd1NU z;|_(Xn#HKF49emst}ImeYS;9~%0zxJuL^Yr`K*lrJ|%RkmD;Op^@pTd*D(&(wr&6o z!h?TC@RQ7H5mE6Yr<>eEGqur}x`O(COB=oa%NsMmk1#h8nDtohMRfek)o&)n79Ic9 zEZ6+GgEn^lTo`H<Uv_n~tah;NYaG%)jEI4~qFnqECw*b3F6||fL?;Pvbhj7t2=;2X zI))p*R9XH|Y#{deONzc*X*b1_g`)pZzy1i(3PknoEBxE{{5x8`w&qNh;WwVpyM)i& zWc6w7d;{q)9TFDAz#cX@s2SGDjWhD$(K!MiW;uqR{z#TD3QIe?5j<2jI)9RMmjvJb z<xPRR&^1zmHQXN_U6giK)5+L@?g?dt4p7T=Nn3&WIn^UogV(6@top1|%1wCSICxSi zX2M$1!lcy)4R<|$h6itV34O|>QaI%bzaA%_$4Xvvu**_miDa>xUd_~EsS$+5RvF<A zlNP}=;Ja<*ApZ9s<|?9z<^=_2kkEb0Qhc}rolz;nwT7pF?|9T}+II~3&q00?SU_KP zSpH~oLVaV_O-UVMsk`hA8dr6{R(h)##U~pFr=US3&znL`i<PAuiLgwd+5$7zmvs_& zT?F6$kZB=f4<GVNwAzXnTrV!Nd*g<q&t|fC?%YvNO+IqH&o8YkNIxs)xbvm><pd3n zW6al-ndowTa7{!-n9bRMp`1JbYmFN3IhSWO@2f`YnmKVs*Wz^9Yl|JsY#N>sR3<lK z0WK_t;L9NoAgwoEPl+b!a!6XeS4z{bQgf<W6_|>FHe{}YIvs^tTtJ<CF7x=&*~b!9 z;O^+LO8t7^T(ry7?;AHlE}f5gX$|<PfL^-V=P`)4JVZGY5|L9oNJFKl*{=4V1?f`n zEDbj$aR&Z{C`;&PU00##*LWE?GQD5YfzEtJ-)wL*B^eDgo6^*&h~kS($Ot=(JfHgr z`+QCQ0ZzjV-=2=SLmo%!Royznc_foAAy2!_FWdXVwCCNeu~lk7?IT=j+Q?HosJh&R zA5-XUKCS!K7$#2lYrGOX+W*~70c?_3QGY%Gj~vsEj8#28@3T2}!G+RG;&e4n`{Vd! zt)RUTsh@B+ao^Ep4qK0R%>z2*Z1^4wR+Hs-$nr@@E?NLbH9H@QX7U;m5_%~H;@Et! zJ?h70>a%Yza)W)N!r;Cz#^YPzu@%)6h#?;ngbp=@0$hD!`y@37E3q7^>uIyfgOA{^ z^3YwWTu5WRXnxV>P>_^}OxzXy72gk8b374p3TlfG_nTV%wHXTMb*~-KV_vhKoq;OU z8Zrp9+0G>k8VNMAIr^K_4%7;7Y5JYPPSgt&qs>W1_QBWO4zcjPcgL>lcb(eAk?Q6$ z)MJP|J};X_ouTCH!p9q*2S?Q(2B^Vb^?Vva54j2#t)o@PQLF8FM4wr)TTC|7^p%|m zRF`}?=)QB$S*Hp~2J9>`atiW+lJ1k|1iwiElU)5svQl}YPd7<<W;eGPhwVTrA)-Vc z0C4E_=>;3q9T&dCp|n0XUUI{np05VYQAPnrLktBKYzeYG#Zo28yXvX0QeTX^q-A!+ zH$_qKx{3y!k631VfiRj37kT+yhkD<<+ID%L9lhrJAFJQL|Chk;D=Y(A6?<mT184KC zxKW~Z1G753S$0$z%u1-!@+B>jw0}@wr4l6qYyQPOCc@wSo17%mYg<K)R4$dY)vvq1 zk%b%o^bTE5^hQ~o8fNuHJPs@shi*hYV|ZGPNX-FxdQZQpQf){gxC`$x%^!RJp56)I z5xJ^OyJ<vT_cvRgk<?_|A|3B2#KGVj?YUb@bn7Os`vuHU<n#PyqqJJQkG<8>sgYeW zl{S=xLSUK9$#@~K=lp=ztK4DF%{UiWzH_%ka}>VmB1Ph}4LYlM%D#ol7!{1Nxk3x2 zw~zl{3+D}~KLZEyhldi90A5Qp(ERk3dYWIp1kU297o(lXm~PxZ$<7O5w?W9H2JdN< znoV?(%xEINN1o2}tD>t*T&I<_Kt1r|naVP{#HWB~{qiEP3R!<;axOd|l{XL8EuM^P zr^~DLQ%7qg?iyA_Bx$p`B77k?#C2Ti-}cUCQuph=Mm_WDNlA@J2zw;D=z_=Vd{slA zTm1kMpWr+Qf+j3fjgmyOz2>gCOm;H3-VuP%LLL`aBYXPe$xJA%Z2vs9dxxA+1Wg7O z+vU#$99{MAn|B(cj;`QHDr=l!FTIAS6Q}lZ)cS^J?D>2&_Uoo`sW~9zt^$x3d0qNi za(3FYJi#3*t!_J#5IBP=ef(h9`ucgv&Xi9wvv+~E1Z{8gOx4N@PA>q>kmFKEZZY5& zQb#vDjHCf_fi%QWR$yX}Sp$pzZAQC4p>+;FYW?lN>#5OOU7a&Lh;(4`FidtL+)e|B z9_xAL{dp4gw6ujAy|>A(5aZe(kiR?K!lfLk8)n49e1&>v3bWLPSeBD9DLW2hmfh;T za`YCAjohPEIcZ$;7f%(L6<?p5I*+N@LU~^^yVb;R(^N)DcPS9hzL?k55LlX~ehoFG z7G~l}kitF-kC@H{v#J<*Np=j6UO;cC+5tX9h=L#wdZZEh?}3vI$u4zT-jWX~GpgS5 z&+`lA%eBHRS82_=H*dJ*y7V+F%4Z|*wxa}H2QlR3OtFN<cRW&fC%1R9G}l_QVoW3f z5&?{cN8~6<pOI6iPSB`~xnvxSQ_-3Hl}<DC$QFLX=?wa7I)q&FWHM}%l-%J6Wym=e z`DB{fzQGhB*6dP$kjE@+N}9)6^A%j-!+RDz107wiL4WG{J@3p?%(O*B!d5QdqUP|S z3cWoop1_d7@>0!Qu3C#hr{RUUp<^88mCEuoV7oX3P%9|;o5$HRf8+c2HkneSN2FDJ z3n>yLNOJjNYY8Iai@s5o^n@Kvi6leO#OI^cktc?9#U%&!;_Bg*7omFC`VoFL96Me7 z7zHTu+(S^1m~aRes81z^{X3QtGQIkPXc(X^n=5|Oia%2%$UzfcjhYjB=L5xnTfx&t zP->~$&&2(`6Sc_dps=VcgSyb9morp*mDUjt+nTw!YLRPd^W~Pts@<FsDeu5*js;y7 zwtHj?-rv(DzRMs+(Fbb4t7eJ-Lp<b3+}94~)I3rOWNk)s5uR2W7aD12tGLNq)_AVE zrDScaasMc1zpXktU=f9e23ot>S=xzDuCOU#YgcA8%LL!!ygJ8hSXc8tAM{>M4ePvh ze9WsQr!!OL?L3A#TB1>4ER@kMAAvFf0XqNp&R|k%-eSaJzfY6oajE!wT?^@{mD%(U z$GL*@1sv%}o!OMun2T{TytXL=Mgl_5P?}jQzUnllu4g<tg>-Zy<P$mwbVFO{H>IS% zor!a>6Tgxp)iV1-D^%lmPQ<zxLTI_QtzlHlsVl92D~GE4hMGdrbXM1l@!3-+unqP^ z2!A#ACf|t}of62#m#%e<9sKEi5Gt=8nWQSUU*@DC-EFdwwbmNZ)PJc#01akSAT^}U zlJ&@FF2Lh&FSN8#^-#U=o^vQ+yTm~tmMLXw%5&cQ97Rg<N<R+|+2C{Wj?Z3(k)DDK z&j&9@f5SA=bJl%Q_zh@N)Oe5Gb7dmeAH2aYfJ~>HI?H4_U%7xXo#VYsXZdT7AE+yz zCetZ6>d%N$g@0|P7-DB1PE+&Zf=+LGX%|j&Rs`3=#=-hal;)&_#l7$h<@F2r09pGw z@^Wh|N7)o{@5Q$E!jZB_88Tb~WvDmGjB>qHWd-WhoX(+qx|)YyWhw)?Zcd}6^wp|w z<ln*@c~1Mm-diMTM!Ym8;8AHWXE_L#bzMuYjxmcc(S5do42uJyVknw#2^{%A%}k3x z*5toGC&+;(){XF)6z$gCl?z3aIp2XAIR(?zXIoN}<TwW4yM_*(@dr83>+8rzrP%$w zSUHK8u(|z^Op>9fGJ)v~?Nx@7=|bS~lAdj5=I*;a=v?=t?F6)I+EPB}80|AA4e-@X z$gCd8d_?pClcRzdk9_<OnIaz!F8PI8>gc(7wv4vHTK_7EsfM9erj7prWhuP>V@Q<D z^FbhJ!(qIx9DPj2oZ*#BTvaucKaB<7{qi<CZmI^cFM=Hu+LDAH$+hb{ctBuJOmZ9f z%gRzbRWNCU_ovyN4kvnWA1jX7TJz|Idg)xCpfn)C3`T0cEDS{LJL=~T_s4U3k-XFl zGc3U+q6pUJT<umc1Y&D{;`<)=57#?K%86JE-f!e9j!fl5Sql}JMPw{>CS2DcDZT`^ zHY%+0^wxF{Jn#4wH3Q=&{p<kdT#Z@WBYPGL&BF4cY<i|+9>t12>YVl}hxBa<g4P^W z5Qle|3Zg?oC{hccfGE=Ob5jiZ=y1$^*-u-NAsr1bU9#wJg+K!vH=6_z3MypOcELld ze_E3YfJBW~Ld%%<4Sz6*+6a&g(?`RfBg;B?XCR*L65v3HqaVKd3u7EAX!?*ASdz}E zNmO45|DP#68=4kCLqgT5z%#{yPEpdN3-Zh+OKD?}FN2j&nV8Cb3S|%v&5hbo&=a+P zM-&tFEci<6JD|Y<R~1t?#%Azo07oOhOJcR<E2LOCGzuD8;b^17?tPhd{r_Knj&dOY zW5XZX<oI<&i_qx()L-}iw)h)lfGS*hCon*!a*CBr^nJGUyOngT+~Y;FOhF(dtpkpS zqU=vYv5Ue;mpk0o-Wu5X<5#PIsJ;Vzs^XMVlb6(E$3}Sj6NyPmTozj?JV+A{Eg40A zS)&VFb74UyDK!P`gnE|x!wX)iy>`8MCA=jZfWwb<tFYQmJK9aFs4N@-LY}N?#D^u~ zOg;Nk10t<H9A}ID=Qy!_rh|bxcC`)USxVhmcAQ!;K?(9T^wONatk-_-0y<Qs6*&?| z@#B#+k_SbpnY%ep3Y!0%u18R1^}To0x8HlutwrY-py8Dff=Z(Q#!Rm~aI=$QxS)J0 ztvOvLTpaf?J=I^>3|W%aKYQ4Iqh6326ZB)9;))|iklfA0q>N-W*sA7ziUN%AOo7$w z$)Wd|;X(2TIk*yQLk#euP$P0f#-~BALIAnD&IOiMbX7qcb1<LVw>97?!~!L!0kI6b zTaWL^kt}h>^IihaE}o!fzmXrJiR$#fIb75_bt2{JW-jM{o@mANiwjT3L9Y2bXPdSK zGf7cMU?&ClR(2kyZeM0#WaN^?*#f!(hJ2g@@o5t2rUGRVl9cG71BtU3)qT^HrQ=+* z`p&dnDz4A5aIkj=DWAB^mDv_9$nD_}l~1eJ-r~j0y1)%B!e|-13@IOC0aeeG&WnJw zrB@?~^YW8&-50jbE_Z%I3}kh81T)`kfXrJs!<=zHL~K+{tsC|>u3ZI|fZPB$<LXCJ z!7G`=v-)X>SB8TYl{{(6rs>e_rlw#pslNHiRz7x-e`%qeeBCeT9gQk;EIU4OxWgvY zHI8qSK3$n*48aYKso;>}AbIrICR)3ln8?NOwhTDYu?3T|EPWQnqON!`Qw1hpJSi0@ zsv@LFsOG#44K`@eqeFM;>E(y6ci`SJE$5?m;H-lkFOLZ-OPPAdP4g)2nPr01{nRu* zgp&Nq^)eK~#+@1P6IlGI>5*97fdE!E?iKZY<7|)@Vc2!X7K3^eSn})RX}C+{{y}mb z?4#&>y7o9ZB9eYZ<X4BLnw4AgRApf-EXp5{^EHP^jU9F3XeCp|7pqr2{$G2yaJspZ zdMQXjwP_{?MC1dJn)Zw#yp;cSz(prJQ<u|2*IwD=R{~lBX|&3#f*I?COBNrjIO^8> zb<O+Pu4f)I0kK!#SCbSDY&ntc(!79hR*5@c>_<*k5l)m{Cfc-Q)yt|%YIp93492e6 zDEW;$GFnf(VHE@qqW(})C0c+2-}!GN)D=rgHOjeL5+hhJG6mNC*8*3e2Heq=X?gf# z?Oa?r@o&gRoVeEEV&{w-JMRyer5$<;HxsH=ijI>hvq@~8fozgrs8s_%*hgfyq;c<N zYSvx#E;$)>Jb7(>{v)-WGp3fzNxLzCR{y@SupL9um6~w1IE|m`)A>t?ra5>kbeGy( z9YhiXq;r+eGq$PW0Y@Sjv@&ZQW%+){(b1Z#h?B-3ViYM?9iIcSz=0>I?b!EX+(gLB z&6^(aKO*aO{e5VPHdTXK0>#KO3XvKx$f(2rgotv$3&j@hL*dfJE%%m}E<RomsGCV- zupE7~c+UNxBRuDR^t22j2d*8R{}6NRmZ=<pW7pC<9*Xtsg{rT1{k~u}PL+cQ%K$f< z*wdpfwmTnWX1OPC!X`ra@9A}oZ#DS6{Wp;YXw^oRs3`+kacRmgbw#k7h_4P$WndU# zpsgJOJ8sHrss*%SKKUM&_XVXu8iLQh<J~TH%yCJUp~$*~VxL{Db-r7(opI_gJe8#s z&S-#(NHW+a<i9#;*mJ<gSt}h`Hls`fzC{XDE3m0-^2G5zx2nS^!)&|8CqP=ToieiI z{1L@45*~N}^%Q%qOR{D&_EWAs%*U9NC-%`hr-eYH<Q7&eQV(;<++a8g5BiEr-AeD( z)Pty#d44h3S^?B#V01I!MJAFMG2uv>ssGHeI~V7r?)_Vj9rIGk=2J*+$iWI0%%5wo zOxI}T8@g%T@732|yD*h2f}gmhRiw-a7`zp|JMCo@eAA)~;Xs?TW@@0)`mb4OQRZ#> z$v><`+O1tKussm{_8S`QPPw@NQT%nkXy}6qk*I_*py*IM79qIutQ_$oBKkV%1PYUp z&9Wx9sSBM{p8<mRlzp?gHYh@=IlX>jR$6Dcn9)<~lqKaRN%iHy(*pJSV6DM0!fVgh z>KuVl>Fkj?zJsSshOXYkx-x>3nCTLn$AS?lZm5pBKq<&Ed1AP0DT(IaxU!V%H^e!L z22F+RSVMeSbRct~&>OS<OH+Yk_+jOWV!ro!i7S9OADr@-zq9<H=U<kCKu|O92lruJ zZN|%Il@*sN?I=tie6saP9-kS<2J&45#@nw8gYkf?5$ze<P&{KHeX`jj1gmQ@Lu{mM z`4VJ_(UIA-hWaIO(!RGkPwBq;|6ysZVOly$W&d15Ql=g1TWgLf0s&1uiqu~@cMig& z#}8&Kh=KhQQBScH0<c~Abe+kxeejb>8>sJ2TSNhBA!HNf-333yObSFDyVnQOAZqZb z42n^w#seL4zRnpO$<TUXd-FqBPJP&r!S4kwr9luuwEpyXfqY5I(8dEWz7OumhERy3 z6NTe2E&%kLgxFPd%@lkv7EKUal|UhU-n}$N^6=?y*wKPw<shc^tD4FJN1av8P#q%e z)s?+eCv+SV*#ImoPbC#PRn<otRwk+Vi{4dC%d|x~9C>C9bn=&=1H`A{x<@nQ$c?UX zb<+&@?0RB$;vRC<*ksLfD@nN-MIDFw4Pny}d55N@0~jU_Kp6Q1)`oa6Pvz5_Xs~HD zYL4;w%1MuQBFf_=$K*>~&AuDR+Irw0I^hYg(Q{IZR$#TXn`qLdI<Dig4VP@xCVS?7 zLP>_UvqNT(C1yN4QNJebK{M-B$V!=8d*bOV#YYb{=t#`_w0}CJ=+eaT6~pFSCcNx$ zU}K5gx%!;{N7r`;NKs|o*L&TQ2Zo$SL=YC(0YyO+P(DypL=;8EY=`RZqN5#V=n*iW zA_mNeVKJbhqNs>rb-&dWBciCts%rq_nn29@xvRf-?tQPSdhq8T2s7Q))vw;W@!WGV z%9+Mfc~YvCkwQgbNs~*1dW3Z?9FJQ1wq9w>4(gBBpY0B$@E&-ewJ5kQ@>Dz{3#}b8 zN!>!ervY~EA15$P6<&S*Sc*nSst~qK8$Mbv_17gSaSuV^yY)^8@R^yqGd-E<lPW4A zS&C&ds8RnniU1pApJ_%(h}Ew!`a)hX%;j>YTo`ExKnfvnhn;p(DG-XpxidzO)iq|s zmidYn(WKC82<zqo{;(jPBAB(;9-!Ka$<=fwS;N2{B&Hw~$f|6#EK>x3z%E4ArGmAR z)`I+geK80IbGc{^E3T#}ZXB+uL<kG5T+Kh=AODibkZElQQ4!w;bo<PFu`Q6w7c2W2 z?)TCA-zyCpW*80_sX*k`D>{0c$QYYtT8%eoUz;)&0YYrxv*h33@-h(|iMYQ?qx|{M zDAh;RYhxX}6OHUVbrTnHA}j#W<58@4@Ql1>CsFPj*1`I6K&~}N44~>o{b%DU7o%#a zcAKw?jXR^JwDF)Y(<G8ZX0Q8;smeCHoT00^A(Rl{(g89-Py*+*C?my?OZczqp$)yO z4HyEo;quR>YSpLiJPOkFg<`wb5G{EG;wGm>F!Z2$TL1Wx083QNZ+N~$x$3tJlf#1h zGdig&#u%&=&rQIZp0P%K+BuMuyl_Ka6HWg?8m~-_JLTpR%$xubh7(<~{aIyD@w@Gt zP*2>3X+CBAjOQLMJFu8-98NsCEJmV~SyRwf84$p|OgqqLlIdg_y9!~&Qd?Ej+Z&}; zg#HKp#pYPZoGUNMp@+JuN5N!z${MSW*r%qFtz9yr%%v7m!KPdf^_|DAQFkP}9~a3L zb)rVB6e?eIO-n~7cHlP|J(8jhcE!x9eD02zS4*+(8C&4NSFge<W^oA|14AS$CF<VE z<0(xanv!UTS}RAyJTL!M3yrRu7>r6RQbgX@o`WI7DV=Z1za86(upuzJSea-dR3X8{ z${v5056g6TU^<@t3wBGilK#lpcPcx9%2$d(78&wAtT0Du0!ARC#~nksS^1B5Oq8s$ zk(q1DRfHf$#lHKCD#ruT46bVJGf}n?1j(p`>$*KNb#Ms`K-9c0*uhI}2v-lopmw6D zdX)DBJDOrEg=K%%v+m@QooNo)5^Sb9wUK-!&Qsial#Wg&Ty2V-W)y^XClNo4cq&Vh zE>#swQHIB_z+-~MSzaU~k&uxL!{|DFZMzHWxkB%A^nQk)J$-20@ZlAA(MJY;?y=h) z;&0xg%_+OI0f>0RsWc&pF^+<MMI^;U^YYPG{1CH-Xh$y)?0|U0;^ipSS4;B36QJ67 z_HsK2=EKvT$hVTqe)4oPnicfG(b6$f#iH&#TShR=_Rx8T`2J7XD1d$isdB+E0co?y z2NIh2L>FFYqLd0R%CiJCcAM@DXsQIoTPD4gUP-1NTj`(VP}Ocd`sG5Y>`qInFLe6- zNsv&S-V082dVw*mZUzSAg~{3;8}3kFQ9iYM$HZ10X^eoJmc!`I<4xo}nY7U>?3joS zfME60Lrx<e>W%0ip8k0jyMu-TTJG@gdRMkbmuO7u1zH~JtE&u+JP4Q~v5=#ev2j<M z-{&)60K$D~^heIH0|e?G?G-`;TU;FE<uTaeecshThHt)%vZA<O)EG#=IE9bHGumWh z*Qf(tqEm?~=Bp`SZz-S>moGJQ7XDyNIg4MjW|_7e?@!p6{gC_i89y+@&D>~aW7r!$ z?1Ma$V}f<>p~Ta#l%l;3oq-|unb{Q}KsmGv+q#284Z;KGIi_E40y4M@RAO99P^XWR zcw)~`G!_RSlC1cgeWH>h_u1G)-AKC5+Hy=}UciJ4b>l%R7*gR_K#DsSs9PE^UGEBA zdnP;7X&s|~+kT875zKk$Hy<~dPrIEQTi1(Q)y7hvyk#~X-_)02{cHD%%1mDBvx3j* z5GSbD92yQAOHR8)Y$54Dyr8<As}5u8Yr?ZAV>Cb9>TB5b>TlD~_Qz{tWD+?cW%Ud7 z{RbAX9s93F+1;|<%WJFL7NZlH9m<{7Mt1@h#uL*p>O1u_;&=#QTV3`owKZ@1L`AEZ zW{q-15oH+_Jbv$RVMi^h?(S%=fjNEEN<xOtp)uW|D_P^L-ONYG>&jWonIG|igA#`@ zh#qy3*jlgV#_q+)PpUIVp$|2Lc#hk!kkd}u0=ZO@2p659^l(Pfk@1qR<lqGa|9BJO ztbs(>?m09mQ&re@NJUz^JOnAfeWP}N1@BBom(QeiZIim_%?-$6a))|Z*gA@u56O5V zIByJ%&}OSLUXwFnheVq_1w!}Mm^kzFGeQBAr~dWutSS3EyKhR*G`RkY$_?bi5O7&+ zHDqL3vC2*rimlx3G?|&tPj-yTU~9}+ebA)f4oY!rpDMW%B!O3poN*ld3(g1F!tXiN z!*$WdGa{`2!hD|QMGbHtpTv{T!O^9?4CG`4xl|GxdAE;3fnuq(l26VEE%~z@BDps; zHSULD@1V?uQaLMLD3{o7h5*Q*KsiAlypJDBQ5!NZ8NMKi{4wpGdkTWgC!?t%PuoNg zxzpNOd3#Q8CeC)8>b6)BiF$Q8&j1+8Un(3*0I}fbU`JaBNVk1NG+AW=?#e!rI+zdb zmKDXIIU9%eQ@@#WGzIvkWys)?TZhrH_LHQ%XD2gau6hoL1_#fkMbGSQXI&VB9DiSm zYW#u`0nKzBC}tCZ5y;J7&8jOl>%sa6aWYFQ-MLh&2?V*ir=k(+mrEDYa>Ue#egqT^ z_TSWAr+#%S9O4#~;8xfUcOlf@UrT3P>oxvQQQ9;!fV!=}v?Nmn9|@ZJ#n`uT+OEb* zA3mc<%q7^4%7<q`VOb<IV@L=?AnnrSak$Kst3RoJGx{KnQL&r@%B&dBZ7-@B)=#Cv zO9M=0@S`Lm@<Jd4U_zG0=;x=gt4{d|$A3eX`psrmQHrI9aj(Qjm(Xy6t%Hx2rNrxN z##keUeZ(e2g6Nl}YO1uJ8s%s*LY)33J8i8c5KU)H2UaX&e4VwiEJdITKedNHa(FSM zZb)2;iG#ELH<|(_0#xGsCmc`hGk7~{8DN3d?}IPe3inCfn_-VeRV;`?$I;DsOz<AM zvf!Tw^XV0+ECh_7>VA!8uBl;A6pS8w?e&H3YA0#J1!h|SHbq9O+vvouOJxG)#^>|m z>WnxPRxu1L=e}*W&UI6onduSkNyFz6)$t95Y`_?26-qGqpEc-+EVx&;ugoyPB#y)p zk2%ce$L#AW6R-E-&(`l9Vn#_1_0w$@QCd&v5e3z~ekpu5_01Z-tYCz_yvnd#8lTe1 z<62ZVJ7cA~pZy#sm8OPhk=Q!R0#iWH@$&HpfxERKha6mbtwZ#zsR$igtZ8lCWEL3t z5GSHpn4;MSm%QCrU^02pv<x?{b|%^emkr5Mjo9{!kGz$sH+ow~Prwg)@rE1ICC?vU zMc*$2deD54ZzxRO@<$LAPMnK#dE#J)jt|{VM}(gG2!Tk2N(t*;bOBh(2aF%2zNh_Z zky45dGefY9;<*V_bXV3D8Y4OlM2(PNr4H7jHhih(b24rK;G^sHgD3q?ecFMcyoU~K z_z<+*h-YT3aqyQAjsG1B@sv&%5Ym<i%?F>&^mQFrlj#xP*-MYIO0nqk98%ARP9*%( zv)^SXLzb+GM5*qYCCazUeJ2wG9;0x&&58%5=sn&>1*7`sVl7*O7C&0Ox@-g>^AHCF zA>rItsMuw7xgRC3O>cy>pt@-d$~BLe+oT4U*`)QZeH6p(c*4=t31&N{i&Q2c?VJ~R z%;fqTaB7W=J07j_&J<p@kW*9E<oPWz105_(;{DE3^VOk*6yttK6XvVfMqjvBdt7Kf zZ6MvGwc+I`QHoH9Yss;WFq}R8r~p-EOwcSuB%i@6);AZZ{a)fc2XRqwXM!{@VXBHj zK8ch}{PuqiO3CK_s=C3p@BUj1e|TT^q<d28DO`AH7z;h_3LY{Ud3n)ggELHU=!;cw z-Juu1AQ^OPmaCONX&#iSq}c}m#caB<Cxp#&rD4wD=W*KSiT6}+=Xy$0%8nKhQ}1J| zBatjr3<iWB#ZbwpF^NXEZ>l@P4l~2!R>4*@Y(^XS-rI@$6OZGDD=?lodUT%B&gZAa zx%HhpjFMY~-NYNUe{}{rx=~*&%_37iChUsZuIYr}WV*I)!sn3Fu(lElQSG*9<#-8+ zU7awMcVuVq`WS<X?{e1r5p((DSEaH!Db}AxnDvEYv-}VbJp`_7#2tjhp+z)IYh0@Q z!y+45i6m(eF5F+O%!*|Nv)#vh;-ow(EWbN+3&@PcVj`==YjDC>{ne?}E*cS)Ouu4- zwzz<KsK!jjv{gngb9Dj``MTAt3SKO1Rhq{E$sTw??&k*X9@EfR={C4T$^RicQ`OXS zK#JD5s90(@&Hy`OuNNF<Yg$V<qAJ&UyK3ebh)9AZ!;=&yPUFTcJ}*Uv9wv|>eLADO z@XC^8Y_^Gy@NkWO0gE44d(ZPFauVl=Q7F~k5z!i>#d>#dEenNVQ;zSS;%OsP3vOGk z7Ih?!+U&~+kSgxEC`&aNxt<)Ntq=aR=b{er@SNF`r4DAj;Pvq7(Hf}%kEfA~e#CHj zqq^8(^K9~UE%#9Rp5iL#<OYX$r-*b)$J6Skzl7RRnwnXM@L}|QvA#T2DW=!O;=A%r zRYz2qmoK3A<9RI7*ixI@6?jl~`-23OT%BZEiW#@(3vGdL0?&QHWNh;zpU0LT{WL6S z=j|lE_4z|+uHCZ~-?-<yp(+d7yVc8!OoQEY1Hj?6^HqBDLL+7r(6a2b77dgE#H)(X zcPa2}yYHe%MUQD!XC|b^)^5ya+<_RmHmU1*4r{s@{+Ky^)m3_2u0bdwAPsNo3Y!bF z^e8CjQ7_Pz3(QBbK>OuV%&rC~Q_pA0CV0S6iPdP1?7YV-?+*T`cW{<c5sg&RaK>q$ zR-WnpQ!-S){ccO4=s|om$|=k7cb`<2;A|VRIcoIac^`MbGM)8421>O+2!5L4ppj#4 zM0H!^SGNj}_*jachN#;lt#|WL;XtdXoSi}xzcBI#lHal^O_jz0S?UgNz8NWGbvTkp zX59=?1y1hAft_XT6b|)!ZAevl$F=;Ey8O_=*jGOdNp*F1BnXy9oF4|^JR(@R+DI1A z*kE~68+doiG7R2uyt&~@>S+@X%;~3xWw;FqSNBO}NN-6!JqMjoX_a0Lu}_bwQ~zdT zkpp8m+%98M?lJB8xp|;WcF}4heeRXj{Ix?j=VV82Riw(yg!ed&rIl^kh8S)Tmo8G# z%FTx)O!VB4p#vbh1yU?dwKUsU`3yPkJbqP1cU7u9Q{fV#2TX{pya)*}ORG4*=YEjo zG!N2qHq0PiyCq%`KY+M?SyK2z^KP^96)&m$o<ynI#MR;Ia7@LH19DU^Y~CJ;pGm15 z5iOkhJ5j?2{Kuf(2obnb@SDENf{+jRIGS4uxGUiM#vz+U)}9>Y1P~yJW%yTh*s1ZM z1yMa!m+iXKh3Ke=0|^*eV9`CY%kY%XC-7jmeCnoz@2du0RmNZalk#Ug$yw)AR#*pq zh7H}2vg<<N0mVdkHrHCN%+5PsWT<~zTnmAU2D1;odQ{oG)DCziU9OKJU{mG_p~sjm zVRxuax$#-=Mu?_5j|rYL_9V@W3})h$r8?-wR!Npl_Q`OFp}ymLUz;GQC0qdie3k}U z)mvs4ne<qmy{bre1h2JZ2keJDcyf{^YSr^sKRocer17$By$HdC`i6>xp4}T)``~`Z z_Z6Dwwjx|Zk$5Xq(X18B!FbeAaJ}_wfpC{Kc}BLAkEC5Wli>^1mO5#1nzuewt#gG+ zClAcOZ&y`sQhBux6ghWH#KuqxXN(1LruvvWPAHL7Qmb81!AYP$C)?_m>hD47?(KF? z(M9H}^&@~ya3}mT|9#l&QT)LOqhYVd)e>)hRoSS`@2Y#={DI@kry&__t!NFJo8qmX z@YRjfDZEFQ6cPPYmn);6;Wuy^;eDt5noxzO*mWNH!z~n>8K!GVs{xau_T;CjI{m&7 z=8tw$r=n2w1xTHjBTW2lRMb>qSe;yo7w;-^k%p2izyGpGj%k@qa?zc;hNy;g=RI~E zN^R?+F@y+sTohIh?-Q<b_q+12@ebr+(%Shv4m;=@YI^0lEo>eBT@<5;7#(D_q)Rs@ z&D?++2Dqn|lY3912{H6O!wTke)vw3jhVU&i$k4)}S^>M=Z4G2wnl3YSlWspy2*2Gn ze0=0MZIXE<;(-*rrg;v1YaCA)SdUSr3N%}Vl(I#ArK1kRolacO6ACPFO=39W_8L%V zGY`VG=%0d;%!SetWX6>&Bd-&*c6S2=oUc)Pg^A!r9r)vKOVcyE`tSK_y$@y+``#u8 zRiC6T;An`Im@+W}Kr7J_=l-I?GI8K66&B)<xUSSHoVLEk{ie^~5mt|D=Zh**L<%An zd`%(G2AdLaQv^g{qcVyyD>eVP{_&n;G93!#m`jz`N5isB-tr+xC1xW;-mPskdptNV zMeWnfiM(P;N*%tR_5d2-6?o~bC25x^PMq^3I-Tpesuv|S5cP(4{*!0_yW10Z$jZ+e znISApM!M0IEh*kqx46eXWqyV2J!E1alvqY}<#nryW>LZ(fSt75TE9?_@TC?cIcL0- z5N+xXPCeY_kpO(o!*6j&P1||XEr{m3HHESiFK4AlY|Nv>d%$ZZ*8+`#$P1<{somyn z4PQXlF(!WQGKzo)KwBh{D=CY?yp9_Y=$vz)zs!fS=frv(vBR2BLZ1z-(&mBcJG?%f zcnJqVlevCssgdMHsT@CJfqGMNGp79bF_q}(j|rA^?5gvoR?Vrbt}^+!5Iyst-qJiB z(dkfEex>0jb*)a1wNk4NyJEMMd2^d~fsDZkHzstSZ^kM_7IWT;X%|fZ8}Ve{d@wG> z#si&vQ6uF#{nA>AauJ<NG|`dbEzz8^H4ZCdVA(`e?`MGKsRt@bN`0xp)8P<j-%EHI zdLWQF<3_Dp&+%Zv)Ne*6aN;ZF25F6rhr*yxg=m@86Og9Gi=fKU<yw^GdM~sSy73Hp z_9n;*K&h9vLjjU11k$lCp4x(__5|Csut_<r%ZHk!nUxaO3@e~7EjC^q;d+9lti!!j z-o!e#Gs_`EL4(7{^#w%~&)Wa7R68?Zu;jK96>Nf1?AS9z-{IX7wNg;iU-9P@RZnqm zEB_uL9=wu|AKsv6fUMjaHJtwHhM7-K<$Tg~2K#<Q%rQpk!s@&X`EcjuIMiPdUCGyV zC^jm?rtal0Iew7jZDJQ7vlerJ0NF(!t*ZYp-BIsQK4BVD1I$Fl18)W6zr3ahW(14` zyCt-VKkzFXd;z)~pg!<lCxoMP-bQrM0j-0OJo&2aEhh4$QG<LnD33tgy{XEv|Dag| zA`mAE0E#8xj{6+XIiVoB^A-ae`q$8KKqnS*qPqKuFFV0dm~#Y?sc6|Wo}&IOn%+`& zXk>GVtmrOv^VJy>df<X<BPd4{M9R-~9(Y_`{ia`yOP7xnebG88iUg3i_4y74XTk`C z;Ij|TdNo67ZYQ5&UTu^%#0jTqf31GRP>BhjM_Bbb-8~e8RdS$fTDN!}#jkaX^JFcn z6Cp`gsb84mZbjfWJ4P=^cQ+xaZVaI-K~z(uB}jp#v^IcOFj}2N0bOjFX){dY=seDc zvitLfN3oH5Pf^xn+|l6RI!XI!vD?3)0MbGS^~2F6fcap18zZpy!JV|xSp0NGdrDUg zJc@svw74M((|x5WF~|kAeWGN>^f{RqTweDhD6OX7lPUNxyas<Rxl*Qw4gP|tuiGqb zr>weLdFrml4%Jqqb?Pynww1W3mL)S>Y@kN6pEbc9(^Sz`g#?9qZ!45iFUTd58b;2j z3i0A_^-Rx1OX-PkOI2zevt@G_5LlctDqHp;6x}G%rqk2$vyJjY(7zQ=@t~nv2uT|n zy~p~mj_c|7N+N~4_F94(`IOL({f6~Ve9=HJ8t>r3(c@8`q97d7!%s8)D=-)XKP!2q zAYq$X;t*H$GT!gpo(kb-xyFK77V%skvQ$Q)F&sC3zGbPSg0o?eY6&!3z`qkR-DUe^ zMGLvtIK5Md1*F|HHZ`t+N=~#hhQI2Lj!c^z)-y)bTG2Nd)>f~1P~HTdYv*PgOrz8$ zvNk7esE)~}aB&UmCH^!J_NMyhPzv1<_0>?#pV<Y4wgIT{pZ*^C%Jt+BFujd)vi7~q z9}J#Tn4k{9e?Nvv`K2?5l(gn4{gmsQ3o>7-_B3;h=53n$C0PPwf<DZ9iT4cfihQ*Z z6<2ZWrEG4~ti#Q3MnA^(O3HYnICg_Ee4<~86O)u+&`64sq|1jCnw05?F!n00<uC@H zrYyhM^oHTPfkYr+QDq>X>tA-VMN*h2<J0^;HA+^TQ<BO~)EpNRMeS~39ojE*G;~sm z&1*`^E6!;QgN&%X7IEm*XV`ka@&I3K@>~RXhmBL_>(Y<1UZ6xeH%#yNzDk32m)tvz zg}v2huX(y)S`3};Qcnh-fBtv2SIO_#ISBMf(}}89k4@~j4fAr=s!)-56Jr124<Yvb z5mu3l6^$V-2OoC~@jWzecYGp;aPweiq_-uKsM337%vZl`LCP7W*#-56ne)?9o_A%N z2}en^<;s6#s!UjSOo6<&!E|EpcRPZ~XAq)Z6~vRBSExYc>8}{L1Gh4!*7k(X81cB* z$6#t1jU#dNQzn5^ITc0zeS4D*@1ou|5>`>&q`u&g7dn*xb?&K-sa6k*;Td@Nab>x6 zavO?!qB2}itscpoo@e|yZ&DSUmyd=qC|d^s>IE}b`3rfcZO!Cmj2R@{a+O1|<l2>Z z#{14C8d$5})~u;ou6xD~vO)EvwoNKxtx(w)M(f`zFrN+8!9>V&6H9imR#%<(_?}3I zh*LWXm2hhV#w<kN<q)I@P`c)BMfuvhQDe87p8zkDh+I&VDEM#0O~w|N<=s+r{d%2@ zGY8SpPo+sm7y)<vrn?6a7!fL_D$EG|kt9dCeZ9zuQOdotifO2~2)gPWNuz{-77E>3 zn7(oic|Y~{i=GFrp9i8<Kpk#!g8r(MwUvi_lbN84r*gAV+jU~5IH}!?6w?Q4UMr|Z zY0)K$`9%KNIQV>Bl`Rsy60?9)*7i)CG^j;WS-_mR32?)zcs&H&h5><+%(DtuPgJ_* za)tijHhcw?PeYo#x@BoJ<FcrM@lX$_A?g|NK$as+t_`4#^C3%;YOASM{J03bB=zqZ zT%(@YxtzGvf0)u#UV8M!dOW4wwVMHte>LQ{+eV3(oNzP{OW}z})YduY6O{t>dWE#= z+0005_nVpNTD%;RE}?~V3YycPer`z5o)dWbi5(eQj4D~L4(s9@LQyx>3!X=r5sA>O zM$kBTMu_M^Q@db5N!pQ70|sa*<?MYTzT?;9B%YtaTL+FuduJGLdbLw%j@t-pImG5j zN)7j~RQ9q;B?r4t2A6Y;lI7+>POTMB%0D0gV76jROXjKHmJ`fPt?c)`JU&3UN*;^9 z_FpN`?Wy22#E2Iy{cdmpR0=loQEIJkU!8@Hqj^YSeFK{RgF{4hd*|MQiEV;7`YcB2 z<4jR7`~eT4^WNAAw`>amLpTmYXh%0Y^zC{+6RMG-@D+NtvR@pTQ{%{-ltVHEQk1KC zE7qHvknb#y=$L2dj+k=Q`;0J=N)|N5`69xn%I+dXmiPZR@59VCr_5f%K96c%?x5jo z@B}Jaj006ESh@g_hNGsT;`Tp>@UVikMs6(VTK}41{yk0EYUj@rOeD_t;&kw%NqV3` z6mBR@|KVlIN{KhZ-B}2r`hZVk=%jpCp98pgIH6*eDbocgq)MBvO|>bDvaZ}-2fIf4 z5;(A;X>L2JD&K&beA?iYr$q-|7!Ma>ZJ><OZM-&)L=E`@LR}J@`W|iS1?R6RdxK1U zx06v&=HRWdd2gWH`fO~f7V6rs+!e>%ihALVtnDJjRjaw8v-@vR_>taw>8_Bvpaz$z z)Fr1DPu<7jr?E$7U7n*Tr{Vc*HL<#FOlR;Y<ivcLXW?Q*xI?pWz=<Ip3ehC4@?&xx zOOl2$=ww|s1SfZ6!Z*|{TD3%hj!>nJP-`ODDmYcxF7f2urLre08}w)Uyj%cAi~943 zDXFb;lss}l!E42bB*XcsT$&*avRihrJ?lBRKZK+EDEGw^COUPuHab~fZv-CSeR`X< z@ijlv&2oyotZRPDk(D7m*s4=vO|1AyS*m<^x$+d)qXTYY*rd@@tqw)hqy6#SoZ3WF zZfqlmkH!wJczGSQ_In^R?`G3vyIfR)=i2x01u{kDUaXjm?=$A>kU_-E|B(axfUe71 zN3<81#3t^}f)zNo9kYOb!{p4t9SB2rlr_cU;NI#t4_!}^VGl(URBpt5{ZO5k;UfDr zGGf-yOi=^IHB3&vwIHvj=cG02tZa};@{lk^<0x9@y$5{d>FTXlp6YaT0Y3VH$zGcg z7o52;TiJ*7kw;F;M`?F?lt~>Gc(uqTJ>W1E;wEm&H+mvuU>{P+S)n8eOgio*U5{2* znLQ<GYSWXCEfRWHP^yOG<qn}?p5pMwNtAc3?gXhfgtlSmuC-N)uU2x$5~7@9<k`fg z^l}JoS=kSF8CuUYDlqHnqp~FrW8hE?4?*;Y3o{VlN_D7DH{@VfuD>DFS-C?m_M)R_ z%?pup^n9q?V^|T<o#=9_`ZN9%1~V>Pl_*L_B}CTU@5F#R{4q<_DPmXk_aunjMYBR> zG;gHVLLJ6jfnZ1=(}og~K7s0<Y*uybyBx~5QnWp%zVyfurM9w2xwhRD^fdTLJzK`W z>{YAwlKR0+aHX|=0R-!GH0i9h$aoj#J#7}ci%Mb@ZrQdhE>?;Y=e6zV`fv5`ldee_ z4OW0N)L}Y}gjD8yPt1TPrm8B7Hpof>e74+CB_d-~3!t{v&nppyXewpqutN!{c`j4Z z<k9)SjDh$|2#I_5Nx+aU&tZ7L+jfW}k@{VK29oLNuR8wXjmBXaw46VH2@E58WQtm& zJm=H%R=dsv<q^JEg_YIAHIb;`h-l=}tcF#-vewZQ=JE$EXI=Se#5qCZ&&=SAc(zX= zudDeyMyGa6zUaB;QLq(ic~ow}W!WyeXGAs$g07N@Y-(st(Ebvae@ine5asd)Pt}dI z?h#VKNK%T8qnY6_Cz)}}?K#pVR-yuXBFe0*+qqrcZI%x=-oHL$WR}&Py}@h@)#11q z_m+SC!Aa3@=++Z~!D{%J3qDn}!xB;){DXr6607k_{m7(s#V=UJ9N}WC-YKi74NLlT zqyZAg2qX7@P~H0Ly)bFf=-$n_cZMQy>UhtUR`!Yvkh~yrw+0^r*7M27adGwN6)+YJ zCx>jhSpeoQIw?!MF#YRsBsOB4eDJ@hVOBjdozoJIi$`HvL#+9Yk#~U;*dfEHsYhl? zevSDI!HNRZInywu>M%h{Xfso`)EHr#=hN>Mr(fsRW4B<Jlfp#LyOqtWVjL_a>2V{s zh4TnO<XTU0opU7`MmYZq(AxH_M%26vRSPpR!n@GLNtC(iA^qtMPXKb{uvyQ5xy5zm z+afTvS-~Q=wcFb2_!8=CnKZG}kJR_*mjyRkSs#lhz70ugb07R`Ui;63f5lh4w2Iq{ z@FE^dZ-jEP*yH(9*=NBe;9w!{s=;sfx*hg(+_B2k-f}T4``C2Co$@;3F*{{K7TEs4 zY!G+#N9-ln*_pg2yQ_;VaUXtH#l~(G2P7tHN%kBR;b|*CCPWO!Qv`Bl%H5=%b@w`v z?g5w9fsqiCTZlkEEXBR!9L!cnS)@f5DTzMB<7MOg``AO>0)~pSuRn-+W|hZufk&Y{ zv7W$oV^+FhNvHxt$6-K(k~rd(t~=IgP~PeW7QSf15&HdB;(%`51?)?PYQOh#9?|3v zLB6$0l&)O!39p~eH7wbIi){fxDTJ~2xj7$1vZ!un$?K6Q6@B~H=Y_X>8DePN#Q2NU zHdw(CtDLOh=(_7GhzaUZzRHbNVHZ5_eotUE1Fzn#{+zm>O?f<!vQ^u{aWfZD%S+X` z%|yedP;a^j#Q*qLGb{yjOYN~DN=Mr7B=}I!;q9kO;p%UCqxtm0DR|9F)>eaqgCuUg z#6=SIIIsBIFkSZLAMGZs@wl<z>_RYuosM+5)FWS6QRY&yGALJ;`2+>Sbb|1bFm})* z6IHm7924(YO?K$Y(i+mN-`KE<-nbk7rXGQjV8_4j0Q1XkXhQUO6mXeU$}|MH_Z2ys z8xd}jxT&v-aw`zzn|c(wc+d*)8d47Y{+Tf;E?vTXW+^(KgfUwx9+pw!x$kKehs)!e zvan=hx|JyHs5{msK}uwVMIM7VV^9kn;KSzO+vb0R^tpA)Jz1`-`(cZmqSW|)w#R6e zs_%!^+K^c>naKq!%3_36NeH&*RI&*?ZgvgaysZmIz0{7xtdF|P_AiLASS1NT-zObC zwcx{_S<6D5O;~&@jN+k<5kuuRVO^nAt`8$6jK-+4S8R3LAM(Qw)KcAkw;4{A7k?h& zbe$X}b&O&(PZ+H%5}WcCgngC6rB{0KR%6ew-lxB{wh=wby|zcV<$*o$NQrhO(4&%A zo>VdjR*KXW99OV-Ws&nT)k!{`LjY2&xetfjRKop@Hx<q&$D3IkeqP#b>!=63JZeHw zIdZz0O?SWYTN(13>Oxg0nym^KNNFPF8uihj))RrbskF-sJoFLM%7g`%V(Noj1RSuO z=%<j8-~<MLZB+{*#y#g2-`t#8M_~)MyT*@KgkW1lcpyIoLQ&2jsodBo;PmBaObds6 z2oam&Z9{2|s6I}tlt1ST-K^_+!UVOljytU+bX+NVokS%+x$cjcH^uISYScEsujpE( zZkzI6Gs+d}F;7IDvi|g=4qWkW1u8-X3fSdaMmpRVj_LN_2S2*w-x1=k6Rb23<%|%g z!ZU$oo>*TLMgPI92sqTot}vsQl0@Uw?F+;)c9oULx&@H6KqP=&ELAx-+xM6V`!|zA zTMUm68w}vTPS)EJ9wXU6z}e+A=VYB;m4Q)E{`K{bY)7Z&Tz^cd)IY+Jokgh0N;JnG z=+YtYKrKEmB5ox-B*lbDY>U-84n6}$_N4RGTNhV3jpSp5GfMd`(w{1|1+lifIhh<u zLN)MMi}|Z~=RE)m_Sgmm$Hqt~ngGB@5@$Ph^4u{gsurrHCxO`SNJw1#=@fipm7Y;D zz22Ps=cNajQJFn+-l$h}i8)LT!7T9;fr0rc3z+EO*^yMCoto8jXD~WxVhOEmZYy8+ zfy#REv_}RVbF9lOHe<CcW$G1Mb7<Bt#fK&$#QT>fdSdL_-{w1H_h;ULb9OE?G*A7V z0#NI<f=E`I*p;G^2~B1z$)++(mBFQ;f!FRUtx^!AUrRfuH)aHT`;$!d5}deiBxO73 zF7$pVoRi|3cT2P-;j~U^VHJ_FX<+fj^vJfG;*fI1n+|HPwrM~zl?9|j9%-Y|>>ItL zGrK#<pN%@RC@F8vbTuGpDdI1pce}^y1Q?-77`4!9VP;OykT(^Zp1nVslKVfQw%5wG zsKdg^pte>Y*lSWw>u+byBGr}cl*m|XVG7q#oS|-2eSdlWYc>_Z#nd?%76M1oof}f1 zH96-OCqUuC<RVW!lj4(Z|LprC{+$07s~sP{C`3kTOb>phoGbNT4V=QBdlUmscD?#} zjD7|-^(b#2t}`xpEiN7rQ9TgaxF}u~PNfTgMeMdG${={;z!XrWIr&Qj6d@VlS{oOc zHfh+C6cWrT**rIGHYvi-@@r5h_j+7nSy(%^V!Ln$#*&n8!WPA(dRvA@BtHG0xc>3j zy<^hJ(PM91q)wIGFPEdJff|z5Mq<ZBhP60Mz*6w1$k$)Wac7<;#c87(gr^uCQHedC zOXC)p)A<E0Z6+sb_2$;1ZtDBJ2UX)9$`z?a1M2ZSjpE=sbw?NI;MK)anXHN`N^K%m zK{jNqdr{*))P?~=-G<+7J$Xny3NKGM{|ju2>386=Guk5@8sz|p_t>03S!`W(jG@kB zAA8joZh@hxP^0$pfp4l@PQ`t)@B@LS`jp&Z(917TPwt2=5d>B$W<2roBs$>{H|C&H z!42>8M65+&aK+4|COUD&>)>)bx0HMV-ntA$d3Azu^z_3m*R@2{JKo%of-Z&@2%~G> zc>|2Y=L}Y1i7ZqstPSd^^{un@Jbm9f{ZEWyg=q8Kc4E3s|F-Fy5XKH&ITfeiN4RyH zWdjdgpi<Ao;UQ_DD*^DtM9Doh#R=U&;~s-*<ECy7$em6O8&=UekRPR}YirUmbFPmQ z%bTf}xlXoblvcALPK%mwJPkVYOs?2wSlYcIa<6qjAoaj)1r4WaiJO38%}hI}9U%H@ zqOKe5D^gRx{o$}T*IQ@q`KTMiRDDWl@neQ3?A?`tYBm9M%;>3U)oFBokGny^oiL2q zWiNu{ko=Fb(VkbbdaPQUV_)&1M5KQ2k$3rWb$T~A+(I_O)_*jmH6sP>`=~BWdq_88 zYt@%6yRkD-4=X#ZC*rN=i@4Z;ohdWdDX(}%t-*!+tB*hMICtpvkY7qt#K!qCBls5g z{m40WRVbX!p`Fz5TNtV8iD>t`GxgRH&!f0$A7n<y(j<NZA8-N4w}E1QA?kIL27bos zY{gy37<Id~jV4Pko#asIlZr`!8*SYvoqh*5F^>5tQ;jiTmAz!8X!^AX)z*}8<aH-z zeZ^?%M6|SqWe4_8BY9Wl0R?r%q1Vm4+li9LgQnGlV{w%$6$6Os*wz@4FD70-gfcjd z%VNVvtA79IzUMEn261=zc;1>86P$!x@p>J`OXlol_EGNSN0_D=NJnwS-EI)E&)q3R z8dNKU;o{l+A+Lm}`YQ&lwLS0{3bKQ~^dyQ=kd=?z<<y5wE{MRbc~Gd@Ej3eWq#Jph z4IFl2p1+{CrqyNL#ZBeB_Knz3nRBuJ>WVTqg1t8r$yxma20ZlUD${liYoS1C9sUhk zWbTQlwPao{9MQwZ<#glihEhHd%e%xzJUVSsCrKbLwS3qtq=5}i2#Z~iIo$I4kgY=` zFdPw0pZb0;*{+@P+`il3l(Oy~w4>zZDj*Z}*QAQ1)!locTJD!SIsGUX*K)7#eH|mK zx&^QrDgO4dZ$5c_cZ<l1DG-aq;t3|QRk5+KN4K`gNL+o?YXMvvd{I_v3<_Ik{I7b5 z({CdFKkJw-5F}OsL7cK^dSHWRb6j%w4uA~g)|1t@KCVxmXwsL%2j6=I606Z&)UzHr zG7IQ`UW(l744`ZLD({{r(XL*y_Z7Sl9PO&GNT4C?7?76ACDbk)HLGN7iagQrTCss{ zDbvcXUz#&pqxTpsqbB8NFHx%B^blJh3h{2gk1+k`tSMFkZ^f${L4j)nPtyBfq|-3y zHJy?$BQLe6M-`ExYomG!-}h2}qH&;RIw!8*)Zf(#9^F8;>#lnv2?~ae{TAuTuf$c< zd|p(5x(x+8k*Q!P)pK12$ST89&N-i^ZN=?1bmN9_HY{CTbTeBpad=Vd2^@JzF(9g% z0cyc?$o3NYE4`1i(QqB{&lJ)Zbt*0fJO_a@7<Uq$;~*F;a&HQ+$2}fl-3=r`8*muL zev=U>fhMF)3X`X(-yC$YLlk}wVbH#OmD7oP-BkpjLLz8nD>3@b_60hA$l`BN?~|Jz zkK#N&aBD%7K&NwHtKm08d_aVXmZrWRH#Zcmvy4cBn0kD|oOgA&#E=ZT=qhYzwMc8O zL(;KkhI-KxEAn)hw_G20YuW)ga&s`Nw`S-|$VVa|>@|fF0aYYRqnpcMs-qs}W3~&S zP<yv2;m$S~q>h2zYL@PYpSDdY!tt(WlKmd<@HJ7<`2VQeK?cIqZa9=Y`Z^|hP&e?& z-}5p>lYc-&uKT-rA;F;>mzTj$!pe6kH3U^YLQEtLU!o61Bwy<?RK0lq_zrLPxPs~J z;$bNCVZhnehH+tk_WMR>MRQ>C)Yin&oDalr%0lCtKxw`&Tp{hNfg(`XbI1`P^i`*} zgk!Y(&BT7KTYuC|gt6Bt$_ppAHhFE$Fe}m}iD!gvN8R$KY8qEiAM^IrTokxJj^M`r zuR)`>;M9a86t*g}zU{P>34`$Ml%stn9I;gr@a`7$+E#2w9c#+U5Y5krsHRHfLE(^B zY9vf*U<=x|udF55umD0DvJaLXv7v_^TU!ZWG65X~vGlgXE2q3uLhne$r!TaTZy?ss zPIo%NbT(hwWpz799+6}aYZuNwvDG(N9vAS7`)@!ww|N&FdEg<INLJ^zFVxG&-=`uc z(HhX&e3?SKpiadDbAf%$2YqyqvvAil%IJ^JxFhC|&xta_Bi~|pMwf3Kq#uoMI@v%x zl{VCl4qBIP(nJgR#U&;lf`qkKM+<0TJIeo%jY@H0EeME+<PUNJT4t@&uTX{bvWyx6 zGBp)C<7E@oLIg%c?HKT_X!4|st!?dIn}>R#`#DZ9k|~r#5iZLxuBz+jW~Lbh$stLX zK;FbJw49ShgWgu$e!orP4>VQ15j7g^lNhXRlLummiHu8e{qhtw$ka*%^cwgG8LllC zf!?$v;!Kr2*16C+8nly7{SQNr@`Y}ph=<(G;zYDnhohNXp-o+O*8C8t#;2DwY9KH; zjFx*&nP_>ydNi>Y9Fiy6NR{_S%R-$6QTw#!?iu@bD<sKEkcd@gc1Bn;>UH^sS;6Uw z_dgUOj$S%{8(zw*Q`P+fau<T?AxGqCqEQ|{nnsk*-Wyk*`)nwXCM?dH8R=jwjv}8} zaHvgWMxOd^*G@djSoDb&cKO;NDI6JbXfz$wuh{zqnl#|I20y}NHgN#G@#hdJYYv!_ zrCN@Z+ZRWuoOEEsW{DMA<pERFi$?v`L8-4M5=*JoV@BHnJsesu`p5BCs8<y~LTd9( z7g*S_(9j+bDDxE;*uu=J7G3IMhtWw|Ovhb0S4m!K1O!&FK-xc2P7LL^0nj5{6-yUd z!4%N{_n7+4gPn64vDI`u%0S!mj;lRwy)iVy9z=?_zowh)Y^yIsR~pA+f$DDpvO_T~ zgfSq1SmL%c<S?_8PQ~=4BCIe^H%Oy_c$F@l3rtl91``zZ-IPotL*D<1P?~$9ZwyUI zru7UA=Fu(pd8&s(FPXKlH5iQ*TS<8_FgTLJNQvArpMoEG;1Qa}MV@^l;UdIQQ&QA@ z!{dUS$Bv`*x+9FmY{wg&l}`%bd#a`UxD=s9R@ct$8Ok#Gt#$vcts+O|JRSqN|JDqZ z#kxMO;$zAdE<QX<TAWf&`os>TPzRMe2Bw4=r(JQ5Bea^X)U?#tjCPiOny0Vc8UT4d zL0iR&;}LU-+AHy-CO(U=c$vDe6m4ICd{*tdi5JJ>sX{B=&wz0_O)IvC+^sIw{g<~o z?xWq2IezjZAC1rr@#bN6Y+^>;k+ao0CTP}X`;~SuWUE*$QuIC6Pgg`prvqzv*(ca_ zgOyJZQ=U<~d;0@w@3hkSre~%0s{k=vIT(Ww4=#WiyX`kRgj0O}HBPa9`NGz|vXjc{ zRKTem?0})P=K?v(+Ls&x*DmVLh5zr>4zo3m_@S6y<l(0g^hePI@--^Q?oDV6TzAdK z=_=_P)}#!^+L%`Rn+7Qd&qhIa>`12ubGx1hQ1Bzt&m%670X@*}uF>VLX_Lbs=vy?! z@p1oz`h(N|s%XUI?ANU-LLnGm<zmq;36m3;9Y=7BhARSq2Oq-^8@9t>-!v~%1Ds(t zR}7-AIBGy%msnBJ-0hzsJs*nqB6D07$?{H=8-IlLT{kKP#qIi~AhKNsWOl0Px<Q9r z!qo)n=TYIsdA2Owbq!28ftWkEA+6u$wYHTz<A)CW1eGL;@|?2FP(NEvTubaRa?;=| zwczk1CiWu&hI#L^Fx&ViL()mHfE=4M0>M2sia(h0ubbb4R(ces>A(^6gBqd>q0+?U z83|JV;EgkJtpjwUGJ7}_C(p8VB|CTu>PkD~>KNfN2mK2_oV?1B$t-O~>=<>FFnlv| zDQs4kBWa>U%3+uDNglbeO#^l(&qzY<vfEyH{+3e@FVQ@GTKf(PPWM!ob$Ii>coezV z?@}4~!$^C9jknYqE^zjCUdD>t1rVXL7)EyAzauoynvu+l$P1)HB+-9&hvFonm1TX0 z!+M%kfyaG*bc!=G6}{!%ip286{qc{qrk<ptV>xYgtYRDBc4tJqy<q7b1tZJP2(+yE zl3C~5&){{&L79If<UOvoZ76w*hX%BY7+W)@c%iR0<}z5|sb7UDWzL{V#FDevEC<gD z@iFKXOw$&rny7+5JBbm!SEjWI@~kS}Bz`w&|ETwD{UT-f8{}c{7YSxgPO*im68kl& zFLT0Q3cMg&?sjnUx=)G}G@xwUk+|f>H93C5@|)2~ZXt;gf6r6YGV^mMsIFK10K$&V zc@6{EZyk7`I&?R!<DS^=B~Bi#mGc_R<ap=hqX0_)R?oErc=~}G)j5cc&k{lSM2yjk zOZ|Bq@f)J6@NOhdn$>drbNI4<{UM?}sRU&scfy4MqFSzURIvjK2zv7BK@B{_kT^zk zU03^*6YCt|pTcOmA!Pbp*7ffdtBss5ZQC^;lA2RTada~__(#M#*1B}j)%5CrotMS9 z$P11&E#g@+3fn$`+o07!eTImyb~~id+OF{cTGS(B0HqpJO9glp)(13E`D3^98VhqM zDhs5Cd`?BGO-HHY?|!2I&)K(Aaf29TKHG+^`t9>vq(AlPEEnh@sh6RmXoP}Txq6a% zOXp9r0Xv<c-;ls)?2+OhO-1kWc~!bjI%F^3I?^quZ*${E>Ng{1=x-xs{sX%<lmKGW z0sAuN=7`iJfKp=R2c%@P=2Koz0=y~HQ?+Z(u1<Q;t4XNEJD|XMocg@xP7ckU`Fxt% z-^x%isH>l@j<MxNP=gIL_O6)Ohv$Fc)Ual+@|j<wT36C}DmUQKMVNsn`_T_+jYU%- z^LZH=NwF+5Kif1JZK@&#XGiouslpTtM+hfap_es^h`N-o@AGSsCc`JEF{LJFT}6FZ zAI*@pvY<7u2+M#0D)a%wCo37V5Hy$tDY`v+W{H~Qh^N)XPX8ZpW_?6VPV2xT62Vs@ zzyT2*5(%e!Mx^}PpNdQ?fR~+26A)0b`GbM=z+jiO?c!$j@75vZPBa&<B7s<(Trbhb zv{t$FDYD_WnDUdUI3_`A7utzRWTg7pD%3{qN_!}&hd*NYu|(6bim}?h^HxQ)c-~44 zs-;v%te%yt_0cSQ0B_1<T{yY2aJ4qaV>G+wR%Ay!rKd}wV|%|rpYb>j&uD;X*WiWK zb(Wm3LZArYV}KCA1?77~vrKTxYMjsb>R*C!5U7v;X^rOyX?0(0GSi;c@|wI)bwKC8 zI{o%oAYj%~B)}wPeJ|8SA1hU&ajJecXdI55t&N3_G9wl<pJ?;l#K>DjdSd^RRdDP0 zTBg-uvV-3g@X9SX<%jNV2c^vYpsNyD5E=EV1=zP{d&a<s>U?I!&_KH?oR$QI6Q;hx znvzxpzo|+i>PZnxU5ywxpk(wAsb-VNYKklP{4U#YWV@UhBApnAHG?@*R=@poe@40l zdZfsrc#N6K@16f2nEPdbnGPW8I8fh6aqzSd4dkoCOBVKmQ|%hBJ_N}G$0czH?&Mj2 zNwi;x$Ue9eGpKddeDu^yhJ28g@=eh84E(G>$n=TBNJ@}GyF`6XW(+lmG7`_IU9q4k zp<L{=RT{HNVM6C+#P(dfFri-bvO`*4l}3hoJ%<H~W?)zJd9Q_jRYS&W(2>|D%M8rD za|^~$8pna}tJ8LMshF=CYgL^BN3-*}Y-L&1J642t3vqE@*DCdt_IWrLee$Ng@xu2h zkMV|J#1-|^MqTs?QFn?FUFwPNb8@a|nkeF~gHi>ZfgLpk!RD+h;z6(VtRC3U8S)ez z(P^fj1`2mEA6K7nb+%-V23vRpSasu4q<rOdA@#s>lwVU}JK-Ejku(rdOLpX(v_|CD zHKuetQ|wg~52Dym#e9N0a2SF+XlT1x{b(3ZlWI6~9}IQhP{b6HsH#HL-mZztHIdAa zA5?-bO*Gep$gZjjak|MSnn}8#5lGAWW&lshJ;D(tD}#Nq)+Ip3qsQ1WYQZD#>h!t2 z1&<5s+Z7p++y!Lk5wmoZyYWWc0Q0Re0UYCgb>p$}4FuOS#-I{Cz;I4$U0k%)dvvhe zLUN#vYN$65Duub85ST~*&z9%umXN4D4V4;$-7C5cSwJo|dm1z;k@2<<fp!*Ax}5TY z!Dhx?v+KwG^6(9RuoMsUOQE+D)!RO~IV;7N??Js_#u@}Z14d+-G7B$WJ&9Tg;&1<K zlNMvckc1Ba!`fcYIe&zp5R>CoG_{&CgvYW8q`eeV72B|)v5(CW@`F%OIBp!6_H(uX zPNS?y%QW+#27Xp@V`tYN%ce+yYt||#xVGq?gn&8xDk}3o$e0%}gMj+2tC_s6)7J=e zJt64+m!Qh+O+9|q;>$4VVMBnkACHw}9d)8HyrGojY11OtM6l0SQ`b1pq<t`;a~(a3 zq2f651gtAO%#^dS7#M8e<MrRWG9;P?8bf92I}+hq8#AW-B3G-R&`VsJ2oWvL{ZHKB zpT$S_7frKDuZ9mgWhOb)p1OaVp-*9^9*$|N!})rO<5f<U1e?57KOfd~xF4%TBH$|W zaB0c2KemwHVRUgqdhl@T);rn=oDBY}s+{qf>ECSw%7cCTX-*W}OLA)!x#b;NJ<4i+ zq8O~0i~>%nV+e@TEnmJN>DK_lQe8XM#vqqNtfCojKF^QcE`VOJ?2(`$rV?^7rl@Up zA~?7o+B(ch5QwnIh)(3A<XzOiDB-14m8??L42|^>IX&@r#-0YF{dHY7fK$8$+BE8s zC%mXpEDO;C+MFzTnTJz}w%_Z85E16rXci9|uY7B42>J(zbB;@AIuKw@J;|=F;M}4i zG=2_!u2C<zd1qOL^dYk5R4(lLTBy7FB7gf_ozW;MevVBO0B;$g7l%_wjXrd1TeV>g z5l@1mYSI-LQ2t4@x|k^2n?G=yyCf5UDvA2ceMj3_Zw2OjpP{l&?Y6l4oJWqtTfWv= zaSA{fjNrHryKy8HBNKjJN?$ZdBt23i^P%qIwk6L!IvNA#Xx)CP0(zGBe+%qguWxA3 zNW?(}B=1u@K<(#IFA^QGb@l!k{r^<8%hurWG&1D^yJa3Z;Z5Y;8u3lMcaCFpOQd!C zXIw#x*%1+QzZE4LWnVKf<)>~wYfoDyJxXv&61p@e_>v)CzP2LaO8clM8AH>}Nfmvf zdUEsPxJScB@t4b|stl1wn2W<E=6(`0tPm4h*oUe}z1v##_0OA}mZITu?4CpRbG#rn zgt27(9EkZfU?p9vF8Bad3=EOJ4~1!Y=1-*}f>^&G+>s6t7J_e6{eHqmYHg{db$40a z6b1pp1B@Eru^>>P@zy33<Ik9u^)tEk3MFzBB1OG^YGt#R+%u17lm5Cg!fNFvd}*6` zU`il53-zD3?rgQeC(%}>e3oFN>b@mKeQXxyrtwb-;8pD9S)|%+W;4w=DaQ1KL`j6l zq>LL9jbzYo3)E}<-)TU|xF_OXJxdu_hxlc^Z4&7Mw@BPm|Fb0vLPXb(iDd*arc7nY z4%W(zQk@b<MXuEVdjH4<+m<FuznRGhQ%sZ%pSiNAiynb3C61BA-_A+}jh6~+VSX5I zfQhHY=m88IRp2%}Nvq3P*%xp5qeOAmg&C^d7D@lTo$9@XIOC;ai<7|Ax7?G(jT_r^ z)R3$(h{TvCt^8RAR;^X;)lU6tFDzWy07b>*J@TF0^TAXXBb8qagDOE~pK<V8o4c#& z3*x-1y8<n~;!B8jzjUyAn1?MX$;tsLb*CKMQJtBv>yQWZYLB$aIcm~9)UHg2%RVlt zJX65X#aY7;jyKa!T;U8fra_N!M3-_P9Akjl0lko|PQr62?};4YsQnxXvMcNGpF;px z=LuvU^&B3JhY;DAw0g@dcK@;Gl5iSOQerfrk)A-?n|k*I+9fy^p2F38u#i;z8}-v} zzdAmi$5Vf&s6$=p_5Xvb>2zz};}c*%9zZNc!4^>omOXq4tF#+7Z_r0eXG0sB24s)^ znkAck)ok`|*PM-iCt-Z>t;iV>#fvp=H0s;E_X%-aNn<Yt(&)oZLxN5x5WP0Ha;ek@ z+vQT}IZtG$6sJD7i_?WB(^1EstJZ4{57A{cZ<nNLHy1pQ=`tzDo}ch?P?3ZKnRcLA zP|{>PewBJ(_CE$p6ZH}%GlNDz7Zan2zwa4lkXI^=;f<!dIK8j_5l^Jkc6IH8qlo^K z26%{)DotFeFO3EHa)8S08*XK(or_+~xIod`dkxmU#%ALV5UH3xxkalx3Ys`Y9%8wG zbtWjP3QKY9&WMy}o-tR7SwDabz<RC$eF;&wzlwC`J&p(SO0H;JQBuQ)ifvU=&h4e% zKXrx*_viMD!-tCneY5Cv&Uyu1y?dX^Fu#;<|Dqg>UaWd)zGz$q{Th=79BFYW?fi8- zyV9^6s4T7{sA$aGNm#oXh-X-P{Orpc5lb9(tHZ5ivZ;Cm_Vgo$F{82+k#1om$j9zv z)($9xwZUbTYa&vdcX1-ct5JkZSer~x(@S3Y8bE^)dH^FIbs$cS`X_KxuO5Xm_Kw~T z7h_Ht8Do4yKz9w*XW7StS>b@S&>ma*54FT%UJZ{mUVA1fu6<BqOYAG500&1V*u-#P zD9<p{rx%3tdQG@GAJA^u>NX9mCDKRE;pQEWt}9TjqQ^Ki3HII%P288ehGe2h*On$4 z*}_&lLuWOs+v4RfBY4;5#Sx=97dObwUYlWi28;l1!-KS*TkB??^Y?4TQJcPB5fX~( zPG8Do^t5iZ-<0?rzSw-Pdb$@auD}<QuQF0s9v2)KKF8k{(*!G5hS)zfSuFs+fvJ~h zr5uBtTeu&xD>JtxH9l?OSoKo}E@<OkHvJhwr?eeVS7^&CC;v7caPry^`=NYI#l15q z-dBf^qR%g(4wVe%bX*tj$YUkt7rPbs)5i?3>CX^%w$z(O-IvKxvN`f#I}qhjVfx}# zJ2bEq?>J##PA_JZV{nT4UFS?hxH_3SQ-#)+x<PB(lcgH<T+XCg7);4%L=CMX<yI2t zfoKk0*TOar0z{eAy_BI$BKs1bcT-=faf&jazxLL)ljatz`yLMYD?~WBCq0$YkHRhZ z<iJT+!g>0-6KKo9cr7~}RYceA#P+z^R$+d%lyBtJYrgzk?`^^(*UZE+9J$kRBku?T z@1Cnt8CKaXilncVc;r<ka;oaXgl-gAC<En<-l#`=_I}3Pm`q-sg5&-c#tjWW&#X($ zD4H02@9;L_=tI3id5#v;1fp6$v=~sw{!MkAbG}zUVOR#%a$AfCj=KG$jGr>*qW1cj zCZ|t{yvL_U`;10}k8MwxJm$~=CI1;AYRuY*NroP$BgWfcs$&R|tC!I%G}aDxn|U$W z$H%Y4B$#=oh@0?v+q`yDk(9tY>A1(HIF#lX+{|Cu4o@*+evhyUzTp?eaCIhS@Yf0z zAyjl4^C_)b4>|hkSc%!$#J7aBnrxeLEjY|!2}P=^BB9pAC>kEa<BGj*$E=n-;9n6S zW?><T@CfNmNN|d-MZfT_t%Z7JC#Y;+{{Sj#WEXH<l)wA`#HxhY991>S+lk|@w;^&y zv@U4ujSSkZ?OyX?2it9w#RDMAU<-}y^S}KPs5Z!l<{OZ)QEuhU{q~jWS$}wo@<-!- z!e@Rrhr-nJKf@(vY0fi>g8m#R8EqHiDll{+_8ySNcWJo0pa<GPS}xxouKay3*oPUX zB$=^_5R)|_stkAeCJP3AxxaEJ%DFEIVUMELNm)s+e}s63bmT@f?+(8!i_^W=x1}nz zG$<b3|E>Dq?maQSh6wk}7)EyG*{hNS>pOcD-u3VddLcv30$b8}^hb0dD;KHea*JB& z&S8d@Peo$Z?Z0u<Ki9SDx)m;VOJ5yA_C3a~hCq9_P0F=)xAECXkLLcQ5>0v9lbqpM zYlhK1sQ)u4>w=b$3^@UHyJsJ$p4hOj@cpVcA%a?mL@#$3%21H>w9c4s6I)a>qCabk z18U(+O*D=PZ_EC)&`R3_wlsN0smgY<^i!Yq)V#U(xJ(~d+`v~Wk(4EJ`17JyUG?Lc zU*a(@T#-Y!JpYHX$5s8^dQ{Id)!uk*X0gGXDZpUqz9y(VN1fYN`mANs9gVb=*47Ub zReq|=qRFT(U+PlO+ti#=Yt#5;zCZ)vAxcB~VGHQsREjk>gJAguwNYf?Ml<on2^BC7 z495w)pth(A1L5RoxLui0m4v3%v$^-?EdD^Fi3Zdlgl)aKvE;P~FTaHFWc+PYMUNqW z`DwPMTjK>qG!31dZ+d17pG5t7^}(Nf+OD>7=PPYu@HTfid@`e@P3c43QqdQL_#05z zNDt;=ln))S3!{Si4(tDwVf=YslPDZn1)1CaA*`n%$IuLNbb!T?C<!z%-Bs7ONvNfd z!%4pU`l)Py)biXKQY)?NR)S~C@0J1Qn)cxvPDRdSsfP<DP?U^et{J5V63=QM5`ubY zVVJ1dCt~Z&9TTAjh)Wso_Eia!ckc5g5do094)g|chT{>0Gb7JvQk<_l+MAxIKBxMn zyNetx?P{@z0kuoTQO&m0rQTTwX8Z}0d;`2-5y3E}n#doJiA$}c0TBT6u}jALo|hXC z9{gZPx?^$r&FXj0o`g8{sx$J;lI*VY21lz3biTy(V;gyF8BuEaCu&7<74bP`Sbhg< z=uni(-yG=Zai`jCY16`<{}z91?E2?-O9Ob(r=Zrc`*yOJCtPhC&P9#r%r^ME;xeKa zR_>7b^yd{|8%dm;%T~2dhcGxY>=(}3VGSS4;4@C{gg^sY$k=L~Thxud_8@VnG##Jy z4O{DyiP(88ZBa_;fw>b)4nb5m_Dx(EEsp-1+OY@Jb=CK~=Nq25?01!8IvI7WHWE#{ zC0L^rF27UDF!g01x6ir}6tXQ_F-ceby>dS*=f-pt+PE3eqEMuWohquD)!A_lRmbb7 z>FPQIJ}C;#&8GfSX=1GqU6}AtUiB19*U(;C=MZOSSJT-t43R3L#&~tr4lO4|%FN5q zdaA|uxU`RoO4aZ49a&q5|IZ|0G_TQc0<9B#;+AAsGQ;r1dQ)a+#9EtR9V$8pEp^Tx zz-8QhtRB;`Hxfouv~`8n5BhPK#Y?G&tyaAITv&$gbK#2Wg5ey`bD}Y*{_J~$4;wYr zF@nc#Ta+!Akt*O2e9k|efM@l~HCzHfx5z~H#VYkLF?)E5#IZS{IOzHan<nAh0=AJU zH`=-$Isb4f6B2R$gsaup+3RkTOA)c7wT~UA;$^;K<jcUv1i{DDgS@FOL|Jg*hZLtK z00^SW@-x2g?f2*DPEpPhPyAv-**sw^vsm;wuuw-02@#n;-SC|Q^D>Lnapgyak|=ne z-E}%+a$A=Ayy;_rNa3f+QHTv5z6T-Ql0dj5=J~WfRy#o}fo)_cqv5d+^Qo(X;~gn5 zHq2cG&@+@OJvQ?l@W2uhbhKH~*5Ev$o1lEUb{q;@r=8@0h6~X~%FW$LkW7xcS^fU5 zMKNHM_XJAN9Ts0O*7z+Sb@YOReUn!UezYt2OsUijI?o*8$@ap`mAb2X6*SKuu5y+F zgiS|072#1`>+rAL8O;;lE}|)3_>$CzL&#GKqLKyK2UcQ~VP=TyO?%#5Frki|VSCzq z1Z|NY-x|+Rmegmb`qym-<O(#(tg@<GsKNbs-Xy!4sRK_pBNCck<eJ}#L7NdU>W{Yw z1>>H=mOJcSpfD}o&Ls9OoRouZOa~2gMecS|JBS#lTv@~V6$bxdwD~+4d#DYCXdBL+ zoT|Y;kiD1PSlwf@u{-LjxKwq_uJ3V(O`l|Yd|;IVPqMggz7~az%Ps|zr;2-lf$2Ij z>eJhzFHMkW_1)i0K{c&NPm3r7#LGM!67hsk#PfaCaXR34M>FE7AK!E|P1w7xl_(=H zC@lZ4hgzaVPvx{pQIW_bU^32q$E2u%r%eIK>YfU9wT5v~QrTx(UyVDlNG#6k|3jNJ zkg3ND!MUlNiWaWSlU_rPqtEoC9DS<q`RUF0bIG_=!1CtsP5+M?Azrd>H4lo(7)EGP zd>wk|u@BwNA>!?b+cQ$HGaz~UU*M8A<jm=%d0lnmX2_9Nz_se8CQdbn-mn=BAEvZ% z#ni-rAvB32&iW6E9J_VF2umvkLprZf;s5@wxVw(at!<Czbpw@~D`Mhc$0H#yx0ZdT z=+gqWX8p%&C*mSsUz5kIszd#sL0uCSEgqL~tlI4wKYfzU4%B*eF^TEnj9?I>Q(Shh zEZ2c>8)e@h4dh;+ej0rdw2#vlV5g}aicoj;TtxeuLMdp{WdabPcqEAj6Bn#k(sGH1 z2a7!(iAq;$#eEU><e)vvo&8w758nfYfLw4jSJ~&L@`biwm@0^QRD{oXCPh`5BtS5q zGjT>y>U3uALk>L&w;qih;+RuO+}bWkz(EB8SpL^$CJ{rDF$?E?P2IacPEr{)&*bBj zy<*WaTow{1H6}#_1fdwx&v8~pHUAJ$aWvQ7eNwB5$mZ?m)aap}W%*KBJ&U>hP|}oZ zqnakVW+r9)>O&W&aiF+lW36i|1FmJBkY5PPJtia>=qm83#r*eky5j~$a{^W9Z6aOx zzmbZnjBcn=<41MT-Y_%4()x240rBC6m8C_68uIQ2wRsnGr4~N`QJkL!KgwxR>lJS& z_-8_1ju}z))-7-FRXydU+n-5z`?u(KyPB!7LL^U1Yq(r=(t7!;yq+2JeO+$!5W$x* zy`DN5qmaGAFGo>Rp4C;%a1=Oh>VXh();K+?KVT1((QR#ifGerrl;^=Zv0!49qKdek zqP)P2VBNPn*5SyRRQf!8wC}XlV{8LRD6xA^%1>;lAqQS<6W}kYUFZ?=RMdVoAT$~` z{njg%=u7TeW-xdL^|kvANC%VZQANfvAEs9nuE1Wn^ikAsVv(UMxWZUylj5>Y<y{Nm zxDy(Kkm9Lxm6<qxFw`n1j#4iQ-2~vVHzS>|uP`<MULqFGG-g<d!xiq_bCz$rtK~a* zWw8!+ME#P8YG9KH`mQcUct+>mibL|;63wox&koVf_!;@JTdFO)<M%h!1S7$TdeUX; zSNDBI88JAiQ(m6r=Chhth_HP?Tq~QjR679n{Jts$UpMY*Ak+OJ5;*!6QZ(4-<OD^$ zyIfw(ev*u+VgGK4By$B)8iPGth}f#{Cn1DTw?6~lw9m=N%%MK&J1qGM@MoZUq3@Fd zEG$YrU+e7iY&ZV<@6v>R)xV#sJYyZahioc0N_q0ikh0pF#xk>++8#Z|)5M6^@laRf z4nPn^zv1V_bz~HD*F<+i<O@&Grg-LD{+yh7N`A*(X4(@b)?Zn149tBGKd)F}>*RBH z#C#N)5$v!yT}D28x$P6Q3E3h^o`c61wiY-TrO=zy)bVrqRc%TiA8u6f`4Y$7S7Edd zc)(3QP=7t)zmdAA6!{nIxI;>^#LEO>Ubi9A5wc2{0%B&;#^v>|utoQ|n~javU^wf2 zwW;6DF=LfkP4BURvxOfUG2|O$4t-A2wIJ%PdEa_FJ}Ri%>vfUaycSc06>^pSQX&OC zei2_9A7lO%DqVG(R;cnx2bd*mU<d|;M;(<AicTLDOXc-d=yXL=Sg=&1Pcr}-EXpH| zy~v>hs+-&@-~M-7K+4g3q}2miN~O{PU@SfTge+72s*^SH7TuPRqWk>>$rybxBDvlZ zFw<1mElutC=&(PunaB<LwdBajjqVmASV@SDUUdx4h4^>~aRBsih?M|YP$f=h?ZeST z>?#^=wS%E}s)%Zpe6qMJD#CjJO_ymdt~7Li;g0%WORXzSB1pUv9p3EXWab~kh6Li0 z4~9tKTCN=HR7K;dJOtcH?t2|i`lA(oF*fGRuS0eRaJWh3i0*-~SNNhcVRokdGm`Ym zdnc^+nF-4BPF)lWN*TUW3ndrp{cy1vD`O7vaO$Q}Q<VDRbu%3f-q2Z~dqjDw>5>eU zD|{8z+HK6!BG*&74YA{*Hkt{aNrk#{Z6uydW%DWt_I5j&GD5%@pe16ax^C=ftF(}! zv`#K@!_7lM5<-I(<e}3NhOl-W(BkT&R33cHB~e25Ar7eNTMWQRoVgJXeAHe#EzsV> zr#%I;G*<%x<te|05N6+elsZZachC?*(7?vngz4E>xE{6iMUkkr_|EJK6J+Y_EPojo ztnms`?ChnZNb$i_IPcBV^j3rGqY>Z&wZa=1q>e$llN%B^KKf?*=_&pm*V02G6eYNy zwtk}4_T57euKsvZ1R-hMBu6gJ&@@3!Y!UoOr51;RVlb|6e*V!J-6X^**IJ#sZ%DaD zW#A~39N4MV{KYjsNB=j^;+j(ISXK~^2n34j#T`_Cyz{DXo!`RbOCX;u*QtZ^C<Z?$ zGJmbJlY|-k{YR39KmO1dGSO1N=Ok*i5%MYld-YTIeB$gp>8V-!q7#W)yLwUPK^3k5 z&}i+ja}=71>_t3-bkxXDP;Vxed@ooLZQVx!$#a*eAB+K$CMNKgO@LO_paz=}M9Eap z!xJ9<wPT{h_gWl^-6`9ew5wU5b1T|A(EMOlG(?1QVp&ujl@9MiJmFW6!DlvI)^X~C zuo8^QQ&-8iSCE>!tySM-4vp(lG{lMjJwK#sR5~74VV`owIz$lOtQ|puUF%}ICE&o* z8J-T*x;aSxV#KWLCvHvs(Z}=L3o|6J#%w=>9^6y+&albRpMHNyMQDPc>Q*;&_m!5` zc?BJHLfr_*TIQr`u^~R_WWyr0bwEg1!zWkzQu+0&0{IQZ5CcDhWojN2P3DR`KIl~j zrwrrA;S!$e{mKfaZWQB#d3T%^dgF>rP{-KhSg2kw-5m{zxP`ow>lY{+@nr9${Cknt ztHS*UypOH?#1X%8*}2%oHy}g>1OXI1D%)uUy+=LCz)%&riGRPtMYF_bIpRV&djd+i z>NRUHq0j>t-1kq+_7z^!2LBuQ9Ml2?!Ky6HarPQ|AV)obOK=)g>>2=Zo_bp^9H%+2 zrpz6qVT8dnKs65t5fCV=jHJWBlMcF{9!7@PEKAIl754>A-p(QiltAB&+8v{3tLxhC z5;v@hn#mwng3|hPfMmIrj|zli@hWBe<$ze&<yb?ZeZhel5yM4hZVz|d{Q=fUW9XBZ zRrU-o>)cluUP^DDGe=HEas4e)Xb<iHI>FF5dC-$KRC?yAP&%T69xCQ-L#|wVC4g0j z_EZ+ui(S=m*3CY8W*7fF&+PmUe#`_c6~IMLLg{_<0wyk-qzMpBL4$VaiG{GO7YAW) zpgIGi`N=NM(4pRw`dwl3nRRARMlGYXep?iAl36om0ggfW?B3x@@;kLEN8Vf@$3P7u zX8HmTfc3Xkyh21<zwa9;m1~94I^fx&w%W*nu$>cnf=3?rCzO`5#0Hf1C{iX*53xVx zR~<Oe(eJ?8JbZ23oj-;P**-KxklCy@5C};RYE0~M-6|<Y{4Jzg6C4ecsIJJo4(ih) z0go&t@It{OGK=W23nXSVG-)8ctq4nsba1+y>M#Qs>lM`4rUDT58)_+DKBi<!IMqJ` zv9i}Vmf2O$`tYY5;nz-G=@Zgehk3G7zt`;yuO+roJ0(uhJW*Ng3^-6q`|#fC3kCW6 zh=CipA>Q6`Fb-sKqN<NdQo6PR=CbD)$Ft-;j^&NeV4-H-jyC(aw+W9LJdZ!GO@E5~ z^{#Lt2V)shDaDdARm`=7$V2|s7a765h-cd`Q-3Zh17HJ#BS&0_hkWL{wkS)hg_?mN zdY?Rlh{jf{_jUdfeg6ADMckL)iJh_xxcoj~ldk?bMN|qT_%d=NOk}sg%wnZJ=FbnV zC*Cn^o9X*yI=fPHEi8;Xzeg%tD7B)=x7UR+g4;*(Sd<s<(1-{X4X_hN?Z;PK)X8S0 z9O{&f=0QAlLO~w`i4hP3a8tia`+$U=IBt<U-u<t0(2+9XYyb^!%0M`EC4&KCmY>JO zG;V~3c<cX(!x`#rgQv&?-4a!rdRJ{Enn)p46w3-k5QDq^<O>5kaJidlKwWZ#EFU?d z#LS<{D4B0%<})F(LlQgI6DzRytG}m3`*=+Zx~KR_={^inoGD5kH6R@*A^-qiL)<-6 z4a;p|R-%4s8dX8!m*9Kp^sD3J*`{kWe3+>upYA_fy<q&sC<tqXUsQ(5M>-6<8oy5M zB>8F|wRit_B1@`qrKm0##@JX<x2P)z=;R~np>^uVfptdH>TJ2IP#p@}c!nF^HaHWt zFm>v6E=U85zSXP5%l}(IVv%|7t_=lJ?~$W3f=FZr|DXETqx%C2E%J3%Sc>u6)jk>B zmdH|{EKB3l%BZTdp)O^$Owm2S3;~q_olhR7QG@E^=Kl^yvvolX1hsp%293PMH4DK8 zXRwHRfRUllaJ&~OCp_^hEXe39Lg=w}n~2)LHNZl-?S#qQz=Wi1YnW`Y?{N{mh<yHs zR9Bxk%Yv~OESBS6CN1Xvm}gLd1W<lx_R7tdz~}$mnQ9|TNvu@aJ82#HU);u!M1sV< zjJJ#>h#*nE1sn3Sy58Ek2z>&N+whR9qX^wQp?70#0lxxr&ej=JJ;HGXn~-Uu&<|KI zS}Y5Zq5`=dwH!gn?5N+KcPzu^bT1qHlX(My8S;YT*WIM^DO!~=5A*&I`~DaKxTTb2 zd1nfs)^v9~E3p|(Un+cc7%aCLo8t{XPJB{pPy=rD{gZJ}j}l79jMvn;61R!0E@8C= z3HwLVCCBG|<6XTzB&%r~YvXoH>UYzOJG`sZifD(Kf<<cPELC}cIvkn}j*O(K#VoBm z@1ZMloum2qye4?R>5-VJTfY6Iu3JiLY3C3jAvZ5B)`fY*1rH(6X?>QSy_m0D%KO)4 ziKb{vLQo;Z)jHS5a_UP3y2w2Z(HdRo7H_<rNcq7$sD`Apv5;GrtGhUE1Zkuc5<$&3 z$Ja}-bY25$WO9ABVjAYTB^lA?uOj*-B7i8kZx53S__A0nNeG*wR)2pkEa1qCpl{T& z=P1+3Wrcdq6exAyIt;+fZU;M!mfG@h46s5|kH#aEdv4Qu+{YinG=a*tQf9ULT}7b4 z)!!B`TF-%YMZLNRry3$$P0Tj~u-T63>_si(xl5VriHqWwv$DNfXc!fc_eb3cZW7#Z z?j=m4@&<<31L;SnekiqpkBgpqo{$c)pt+yWO)j$H%#C@s1@qeNk&0vCCf?%YvFi!J z!@Qv@d$rbC5nXe(4)5ygf#m$TZ6%zAgvhuWhi^0_gMv`~+7eadO?dA<9g+MZClZ}F zNI<uis0U`O<bFE_iu%k^mdGx&QKblkUi}#BrQFDNWuB+c0E_#vZS-;Q94bSx9(cnB zKQ=!<Wrbme={<7#G-UV;_#So<TGG>};cUIIHHCq&@y8%W3j8~pC)Pz3U|$)pQm;9m zj%XBV|Dh|(fV&3zfmdZ%3kAR}f>Z8c7lnLz^6tN-P&pSpYHfo8EKEx4+=(T5-npc} zgdG7R1iP&-d``F5sNeGS8t}8KkLMxQ+J#Z%5J~zhad8G*J-|bv7v|MOT>@<qF~&=W z-=M4y*7Zb|7Rb2iwff~DXQWKWx9MSg!RoNbct)|VIteu<av1h{C~Pe0slQ{FOzcCv zaho%p-MLy7Z{LIws)oB`T0QU3#zLvw-Q3}B4yYH=6xcxgIS!iIm?<D~#$-dQl$nFt z&?f-hSF+KxrRX+ejO-PQHs#1l6^sanIQWqQ>nU*w<H1fb@|tnVVyQ#i8$9V<i&QJ` z`xl5mAAUO)Ya{dkS`fMg7ocRiX;7AfJ4vh}(poe^rQV)T;oC5CMs4ak(*g9X9S3Mg z?(J+q_h^+Zokynoy!Z5gos|8T$0)ujQVLVQ6up7heu{cLWaK=G={mRg7bRwI15`v@ zqi%NeJaw(Ex7b8f+k2tu+~BNl=$4>}tK}Yi-uU?t%{F)5YjaAPIy9BZ%=DNxHxceA zsLxAXf=-BAYh@N4gdH`_9SGBvJz!tJB|8S?BG<#;!!A7$fk}>i1!k=0-Rc+s4TqWl zoYzlgEJ!%`w^w-U_F5LLR=M`?E&|gBCM5)>2h<(-X++8~vol2a)FoQknS=W?55a2O z5_RKQPOwKOT-$x!UTTA6;RTe{{_7DbYX7GN!z_{QTzwwIZ2PoS{6dOHGNB6mK%SHi zD>?3Epl(gJPP1_+lb*@9$s{E^#0|wy81N5k>^h2hz#A^!`Ckv+1@259^sH&FSlpNq z3YfWnn#mNgwXWP)(5hm~7DT~JF-#A=6oGK3`jP2Y0<WhQ18L4TX*vWf3Da_in~hX& z)tgZK=b>T%J+F%<g6*&V`H-JAard9q0Udf7G20G~ARGxE18_r?Ll}AW!7n|6H3-b5 zqU!Nqa-ip3{}0fy``oQdBOyDFzUl*{C_Zb4`e|e*Jk79|^Fe03!(hwvCAWn*{Ebvl z8Jj8LbgrN&)>S~36FzRax+y&8RC`Z|@Pa&mtKLBs4$|9LXS=ZxanJ!D3C%UD>3E>P z#m$1^&rx-3>jQ9{L$A#H>Tu^Y8t4NfoYf~B`kKLosb5D`sxR+85T8?hRaS}=bYPR) zN*W`N=B|ff>DJx$AZdS87>AgWGKZ)y9{Vj*AFE*h-^D7_-L2s4B4Qb?_r!_%jPw;( zrOeMHms$dv7S8JYNP%B+70Go{0cZagAZ&!bv}pLiXH4k5|7MI!``Re|KXY}mDiV!z zKJ80$<Qprfe@sK^6lfc1Gu9iVa;e}c@Uy<l`-nHBb-=C26Mo!mgC}mHDcpzjSyK;D z=7?m#>ii%!;p;zVHHY}iw@}JX#Y!GLnT3r-j#L7y7Gh;l_yu4y)Q)O-65IeUL$ngl z4v}}mFHw4VH845#$IPoojS~2Xcv2ngqLDr^fC5~B3eyB<m-HR}NEOFQzF6`VI&>*j z&kX3s_I{t~4jODt&mYv0?z9-UQa)JyGI0c2H`IP>4a9vDv2G6X9h7V<EmKVLz?q<N zvVgDM<ySE9NMi7qc_WdQh$&|b*a@7b7#-))0qhsu&`pwqQeW@jVOYF52ej5(R1@ON zUdNzO8no3|TYR~p-_pEaN~SPNgefn7nlmzITE{I?)PCa<PpAYLG=EaI{L?W_r}ICB zSeVA{T8GRDL%}gA3B^}-JtPt%zDQB{nn7~wi3v&-=$BRI8{>hrJQ=Z5V6wQ5G`mL6 zwt3K441I&|$33*wn?l}$Hjh&6rlJQ~tB@uw5z0M^lR*MqRc?*A;X@ZR{@ErD^~{Ni z5Mz)ye+jcbcexg$QIIi1r{>ST#EK;v{k?>kNw`pc6;+RNK|3gA&kNnEzWgpr6$G0w zos42uo}kQz4z>VDmt9&g*a}bVq@|5lA~s+*&Y|#S7NHIedenEP>X&QQ*bL)7dpV`A zFWUf!%1<!&`TK*!SuL%%)u*e+Iqr&5&{N|kBuX%hn!0^Zgm@|2@3cLBw+<vS>MPGT zPrZd&b$G`aKc)&KuL>DG<gP<rG3JVCH|m?BG%K(KoY@!dm&ZS{j}_}leibhF8`NUZ zw?I=Xqzxv^L8&t&!*pm6*)7E)BfN!wejvpD&#h6Y=$-b{xR!(-aXY`i3WRgB+5&ME zuBl_&aG&lTn^jg;S{FmXrzHK#=eK_rBC^4X+8*O~UPgYh_?S=?3cj%<in+-9n+J73 zdTA?B@PB3tbi=XVXz1QEF%%0Ecy{wAwq9=e{Xg@FJj}E>)ayxBQ5k@TJzU77$NnE* z-vK5?m9<^>R!;_I7y*$SRN?>%7*R(N0YwA_69%et(~%C7M8zz|Pgh4w7{FCTaYfdE z0n_KAf*I2qG3**p%(^Q3-}jt*tE$oO-{;v!rbBhr4d<Tlp7%Ay8(YIotUVuSF;#0( zP>U**)<L3HKGX|KKkDt>@@`YTn?<CqdTEX8moTm<K!#TC7<6KZ^Q&Q~dTelviAm{m zsg-utOGknZ_lbAaVn<bLHm1D$TaYVp%j|!4FgI+8N$v=@eUDA$j8r8z1*kFK<K=`_ zE>gBk4gT)R{vTdwR|c#d97x>u!mEz~Z7-@tMGjn^*u`}f|ASbhyjbWPk-9I!0kT1{ zjOSO3I6D?M$0y;>>{znc1s%`~pGm=N?6ayxS}o&s<P}Qs@hoEZ!$EkaK1(1O!jxHS zfp?~9UG!tV40C!(5JPfoe}~2&zLVTjUHj}NoU?Zw4WIOhESEf$U*Xp8lbiKf=1YAZ zet>Tq+uEg<GYTZ|%j0XD-TLcv<t>DyVT=N{v5d(^G3TWs#cs`<OVaLqxzf5H2g><E z+}m@<m{PL}Pb$JHmi3A`)POK>Oo5#V%DU*@dW^telxOSV^CZimgg;;A%UQa+Sy>77 za_WN&uIs|2UcziCkDWq!M_qPH&mwuj<nEkwxeG@U6P}H6pdg@tL?o@Cg|^Z=QA^Q6 zwR#ulOK^s2f?<xycZ3cQ4-QZ2xQ|UAgnGnFFLG1)r$bTp^e+=O$h&*|C(9)gx1AJO zT-O<)PIwPPz`ia5oYh;9DziRsq>~sJ%2_x1?KNkm{;$~)&3T3qu2Ulsv|AX3`G^Wq zMB#DXo-U$;U_j<HLVikLO<6ms8}@a_O(AKbkdzIhSV*PI<!wLw*8d<FeZo?T0k^3w zxovQV(WCVANR{EK42EMFS8JNb*^6r_xBJsfFVS{*|8UH8w5hYgntK#X($BBO(BBjB z(Dg1rxLNb5m;nrIQ_p?tyU?3grbsU@)ISeZhEwJz#nr@ho=_lGo4AcqnOyJ~N9e#C zMUKZQIQM81^5HIgcnvvxu3<VR?|<-oz;wo*pgul!p7!31ET<oZl408X7}XXlBL&dj zl0V<60-}mOob(fRAGEq$UGG#2bf7lZg^+B*p09`T>MY<-tpAm*oWMwT$ND&?0Np;# z$VLG~U>ivsWb>u=UM8#{Scn+GB;70HngEv@C-T3wsznoYQ7CMAruIRAqIvzv7wdp& zH`;B=oNZXE=Ct;mqSqR0{0lmk7km;W`o`I6GAbr0J3;hGU`_%v8OW2DrS;*30~CB- zI~`Eu?6h4u5X<X|CpaLe2uZQ=I<>TZ+7(_0lUk^em|JxB2}fE7MB?67q6UMJH<nlj zv37FF_JB!Dp%F?sQ4j}YT|>107rLyMb$30jv|(SOGU4My1YryG#SCYm`qq=XMq>#d z)ZL7Saa1fK_o=-s54MYmZ^qM{CUt<C^0nYVb;+ulo7Y+N=}*II+;BI_0c%ENrQQ98 zJluG^w|qlMx`ikJKe6~o44Z&rAR}~Pti+>H6^T)*plcV*%u_`>oXMBjFjyHwmY`D; zW}kIiT0jW^@{BQ0(SgF~iUyAzav`&@6r{b=iq=12NmfHJ{+6seLDrK0l7o;;v81Ur zcYcuzj(w!)dipTDkghIE%`Lks?LVui`5H?iV^{=YQv8fvZM9+HS~CKkFX&cTc4#cz z@^;)<3+*soens3%txan|-hn(9bP%eWx+g<zi$#~CUAIsJVW#|eX_fvNh2$MHT4cFq zx>d2ojlwA7;E}9R5;LMT3b?3(0v-n1C@pt05s?aPL@$91pS@Xy<^%z*9Hr4Uadr~q zDc`zI0tL7)_5kyXdd7}gfP(ujjY6LS_NI1ILen$@cMH9+DDRikuI0?9+K<y#q=>9i z+0$RJ&$nJ>Y5*9fpw7wlTJQFRi_Q3F)z%CpZVl5<)P+H^FF^IE1@EI|JaQG~`oNE< zyln(2GYCP^3yND1pO?&3-mQsRzBab1my=Yk!+<R#%r}rN30@M0aCBNxJz+JJ2vp$2 zxt4veP&?|F#VG0bJcb$X)phdQBg{$}Px-N$^@Vo9?R5A*YO|H(mqOj?+|NsYvdq1R zM1l;wJJJmrod+>#Fe$_&V^C3^Bl3`*$e|P<`X%KH+Z}QjQp3YCi%j4}p8+iY!@eOj zkL~hT4~mT@4!5}jLEB_}-nzFdH}dZdRlIYK@2Gac|HjSnyb3B?8!jH*bA$0?mLU?6 zB+3NqK~6*1F<R?I`kA;dcV(@ORg|6ZF6`H~;!<q;60ngRSA?x+hQWF-4mbS)Udp-y zR9KVGuEWpUqa9ye4#OKh)|UfPAMSoh9B`6EH6wZtr%HI=RiF{Rgy}X*9)0Fv2O92Z zyx)ezeW!9&S_w1MBs2=zN`#tp-Q~SmQS$%0ZOsC(!ZNa~P7g?x{IX7;|1c(>J7gNE zUN-V^f_L;;4kET)u5bPShilrqQU_tUg3B#PA?<WP3z=FpFau?4U@O?ikAA`9qG@3m z+}Yl%Of8pebQH;ziUyVqn0Fo%TikUAIQm93)8LN9%=h!P6pGnlKy*5l)3FfM#;y$N ziDZQjO5>{2MydJloG4r?T;iyJ@ybjD;bPBr|1uva+bhbvsPK>9)^R-QG9b8FGA6Do z56T?%)nBT+5+-B$ln58b)lD`ey1S)1=&<NU>z<Vas;merhbQlcPec=XTQj@H<2L|# z$hYhZYpbsXzDUjn+kgQ);{wzusgq!!f3pt1!%gpc94;ozDT@%*hBHNLQTM*`pjQ4> z-Hf``L3!7`1_b2rvx;R@F<<<gp)5AprHEJHkb2`*{+tKTmyeSirttkjC8mrx**j@O z<U=hU2Z0^fL$4g=lMQX<dO^!cDIZUa=3k;^bI#AiIj4ePW$NVXd9!J~7C&-y4HhLx zts4uZ&cCTJ?Y9Dv)BmB!&SX(8uZJeq6E58Nh^__cL_JDnKPs`4dMt>)W*JCk>gM4H z?-xn<v<1~*2%I2}CM=Ql2>?M#GM1ros`3->EPC`7K_1_f8Jhonq!rPM?0<oJqJ1m# z=17Gkp|#gBJUEN?hWm2z?-4qud;^#-5}5)g13h3e(xD^HHb2q$Xe%lSSsZy6{TxsD zP~yb&xcgcUCB7$^;NQFkPT%msak6sUg|sXM8Aapm#Po{XL2;H;cd6A{Ubr8lhWAV7 zyXiF%lp^-5a<_l~CM@OR&!Wm|pHP#MA`YV8qXU^7w>A@4_NpF)B$q@j<V}u8CQY;Q z(J%vqQirzivBeWjbX~5n<DykZjS9!FI?bW3RnXh1C&7L{?^vov9Yy^Fo3iK<$5!1m zDqCc!SJCARM|jS>+UAT9%DJN;twRz>Aq~Gc4&o)Z3`TmzJS^?%H8q;c7IR!!4g{f0 z3&GOKC`J77k+iP*q=VD}WBxpj-3VacBtB-l_!{@%LWo_K2L0!;-brny@}Qy?KfAX7 zgci*3uVG}sS6Qp38N@`K+c?!&&x7zYCVA}VFwk;BFaY?FCnK@3-JKG-tv;Ob!4K8s z_zw48&&B>PmGitLvbUnYs`9so%_o#)s|zWk%-q~+eSg*>lCBYa_!kPQR}V1M!aepW zQPIYxqK$M}wtZbE3pcvOrL}rD#*D9i=lv-eO;yox;`uo)hFyy4Wf|@5*tP%hRox}y z`Vl*!QLsFrkN-I2iEIvO$ZYNF9RY19ishD!wjIvb>q=@h1~s6bqUM^_X+O1S`-`Y7 zHQuM*nK(Y{Zu$9cgLdzf+j3gFs8C|wNYRYM+8FYY77-5?QPEiIrXYXeiN%fWYzaux z5=jzn0Q=vr`A-5BEgui8Iu~Wthe4@{lTSF-%tZf9IN<}(W{Ix#fpPq8Aa+E3`qJ-9 zWi-80?@M^wga&o*>k??R5HJ5^v<RYFo!SLRkQ10f;HFl9$tZDXebjQDz0wp1=66Uv zTg+~+$3Qr6t|zXIB{Y*KnknK*&YrV!Ce^~JoNWjqrC56eNFrZ;CrmdGPxwf3)lx03 zYL#}sx7%r3lRGj1sC|$;TDfTviap$di9@@QJjbcaGxY40OKD@I%UaXW4q#*3kNGJ^ z?%qPuz)W&i9xtOAAf*(w$Ku!-aAE>y9Dq}lI9I=u6x4nxTwYRx+0uf+%54baIFh{p z<+V4c%iLplV?$NGU8<Z)3L$T0NzgQbcwi;-Oq_px+6``m-Mh)#bp`hanZ54jY=$Lh zME`#b3y6yT&_ml{SLiJmHY|KVz<73#;a<vXHnnaPfnmb-zc5OTNH67(CV^iJgE8)W z<!re*Cvo)wj**O@jpMdSDkHmOTu$1JFBHkWX*eowdygSCSCAV)b@6(sbcnz#@6v4` z0)s&BZ6G#@tY+-wE|0;qUht#?hz;r*DHfCvbF2cb^4iOgwrVcAG$eCkl$g)Cb>1CF z7;_rq)$n!1Yn^R6ECh-eW$9+skyZ{Rc#d3w8`}DL49KsGqgZn-MCU{tA*+X>1Bnpo zRKM<$$eWzjb)|fz!$JeeG^Hx{;!oB1k32bh-zYh}Nn<hUZfV!zyGMVdV>uP&*cO{g z!C4~ExpwjM)!3h?ix1y!w5#M#znPwMYOqtm;hG=>jWO*n<gvdtrn0m<wyeugq6|yn z(w2yH@Zyz&kcGZ|@0jm+JZER)EPwc8hUIVM%L9#74eH??(+PQ9wXNO(!M(L6OPIlw z*~s9-QCq$b%EoJPTnW1&C=7H`oq-0!2B7C&uQqWL%MK}b+jp!`C}<{^|Kr2Y)`xRm z7)xH&h}ncr{;RT=Dt?b<{lx(-C)aOVt1hZ3!&ki-Sq1rYB@zmIT^vs^Ax^6bU#|x6 z;q{N=;FDhQ_b{&e%N2P-n&*XI+K@73;Ao2pEEmd9xRHAd?Ti`3#Kk)3ZAYbe_3Xp~ z?b#Ue5EZdpf_$GidJ6<b8}9)9)9!G})awDFJ@TKm6s0#l5hE|Al_|j7T$<^lBjO>L zx`|Kuh|@5F3)H9j-JpMY0e&<kR5Y{JF?kFk`l0?9^!=Obbbkwe@{yA$chjy+WWXvL zUU7F%?me`DCsL<cMcFNx%8BMFF}Vo&^D-=e5I4cP;EL5BrCb^<a+lOsh%~q5-|$_d zaW#Q%>wM3JF@EGf>m9=q>hqww>3+Ae+ZXoCeu<!Zu*Aqy47;brc4BE-&d<yX0t;KW zm30N=qaY}zV$g)kv%1g5biSz=Tb#REd%#$SoB-L?BAuCLvVMepe3!xVqehx27Oh-} zr~Q17D5r#4P2-)IF$KY2`+hjY=AziO42@V~%JfvVTE$qdtuk3&aVjsJmAwVKrZbLE z_4Fc1pGKi!%_~B|w6~rQ5J8Ks@b#7XWJ``?Wpo&Y4)-7j*IGeSK2BX8mddQ&^A4e~ z%lTHI9Fi%|5yGs5(tna7M3)odtxea3M8Ti9<HL#)ee+kRICBEeoG4aVzo33}&>UBN zM|+5;C*$72H5+ikkHs2tg8H8wO)6iz#pl9CDBmxW@MMYD;f?1~E`g92c`!%t@w38Z z0eZ$e{3IaYID)yXsC?y0>gGFldsccNjG(4a#;Eo`T#u@LiRl>oAF8t^Li8pV1M=&d z3$Mo&(Bt^vm9U97cIdgrVAw;C)qPg{40f+ueNtOUmUDkDr3np@CAUEf29M^+8<_t0 zIQ>=l(=O!xMkkPS@?;GX#+4~P%x?mAX7>nFNljX_>q;!pY!5jZ-9`ork)`Ti-;R)! z_JDeQJVU_@OYyS~v!PMuX+fQN!q_Yj7^l2XRM$FY6qByTV5<j?Q$vt8P6U}zUMur> z)T4{CUz-}josjtJ^^NC;^*=W5Ck4W=PRGgr?l`IuT~fh?%E}NV*ut^2G~(aZx+JyD znyxob0F)ZI$U+SIxmcb7uY5lxy&gsQvC7`2r3n7BtkuH!BmHOOwGfW_cT8j5#Jsb7 zAp9T^4SqSEBT1Bqhd!1sD=;hn^GOu)&-gr%(qK0A*Vu!++PL<w4K6G}K$FPz(5y%K z-lNPYKZ{W9t|5;w=_VM!3n_ouHLTYsM)JqwgRmS2_CeR_p(jPM{xDL?$FCy@FG(E0 zjt*(fh$!yLzU%)W7I1TswU@<kj?ZX|fIjc0y;5#EbB~jq9WACAQ?*7J*G}PaQi|+) z4GM6l>e%c38Dwl&u;KK7FJe^5WfV>O4+qt&Lt3d&4p_T-$ojp)Tn(ao1u1bktv332 zr>dK{zB)!h5Xv;f#VO=@Y6FbfGp1Y-DFbgrYQ1?GqdfbkV{ZPfA($hTwl;OK2z8KF z^abN{A3mC=KvJ>kGVWci@L{&)-=B<=+3^r74N*Nn31U-Jzr4#jxC3KPk7S7p6$fY^ zC*8y2Q`S}Tme!7d6gR67S-!FiEE!`8;7$}b-LnIL-#8q7-D79RCjW)H%U=wr=%`cg zMPhLxX^;nh)*%)Ogf%5#<*{F`xKJ%kd(bZq^|Y*NaVX1G^zp~2=Yx~myoj|0Uf4U! z%=JWaBnKUsz_U)f7C~W2hlX1o%#b@2r;s*6LG4jjAlA5Y2>45if&~wT-I%BQ**Ka- zdk*fJsYv1O)oXVwP{u%wT;IQ_(cUm2Vgs|N3|o#I@J<eb(R!5sH><Aw&xh%NFKNV& zx8_=^7m8<RW-6R`3VI0Q_>ZWIjod;{x0w7O`?e0y5I^JyM>5l~*;o%ops>VnZ{i!3 z8@j;bX}YW+(;1mY`_so)I+Rzp#;sIAwmkm~hpJ?v4Q-K=A1c}*Qh}J#Ga^Gp3WfDg zux2s|LBFlrcg3A*juLqqKHBV$7HLR}WgtRb`?y5sZ&F1j9<X&&j*F3FS7Xpk5t%62 zdD2#p)>i{UqNsZz_w2@+_UoSt)6!EeZf8r#{J@=?$N;Y1q9*;_iQ3kpkLHjWxqy?% zmuMp1TL?27LcXf;2_XF5e%|32Zqz7rt@pi#m;r9sKbzM+Rg5#`BH>UwIg$=&e9KWH z|ED8zYN?<fK21^9Aw5Z>&z%y3nO7fu<h8WAVwe|S^|fu9&NP2zi!NmB@nRO)9$yO0 zDAxLNSuJX9j5#<$3RFn7N*3oui?{mc`dEgDMz?G(vNZAK&th_~+D`QOSF0yDWqZ+1 zqx!6N+F^SX2^P<|sOOmO@Nmy}ER=Twku~dgE2CJzEPulQmrfYCUqVfXKs+`1Ex6J1 zHpNJ7p1E!?!x+a$Pm2|}q=`&c(*;5A*=XtIsXh@RPrYGYPA~`_Pfm@Z5hD?YbcV|w zV5D)^5iy%pe_aGBAj*T2hYod=Q7e`oKA-kzr5VF^{>Nb{nalHbv35B+ZA&r!1BfMX z7Laf$K;Bx_P?2cd$;ZEL3Vym)BR@WQ$9ypM`hC$9F*fXUKrGJ~&LR`I$@V84NoUx5 zk7DINxob&eD}xYI2anW#OJXXtTy{Mx_3p7dPUopvUaMkINO!AFeS>I5)V~_v$WX6G zmP@KsbR`B6KFn(Nj7iaZ=TfcZgrKZZEU8#4-A<cg!B06E=j_$YFVZyN<30{bG3fJL zB}&dA*r-@$A*bC06zGfe`xy$vRWxz`aYaE|lk(dw5gFEO!Ob37SO3L&oE#I)VbZB$ zFkohfYvT;9!M-0OE!0@lc()xu-15QZj2%Ke(T939<e~czNS5SVx^8s{$}P8in82FM zOV;VYCIV}?{h``}Y8$JaB)?y;erEeOv;oG{cs{SU-YKb1zp?6SW=z3_y6mJLqj(%G zVbrFj)op!?TgrCFoYHfmC683~^sf{AU27dJf(QdRr8WK<fXXY|(-5D+fit!<L=_z% zuSTvy@8jVYVR5ekq^5FHB;x`T7QwguH0gxhreH$^B%`n`we=;IN}%hW^#oSgu~Un> zIEkmN+TzbeXp2&NA|WsGA3C`4#wQ|Kv}8?uFV6eOg%0`663p{w5lYuFRg8)H2$E3D z<VCQ;9i5rRDrU%eW(?Z!<202Ds=e^BM(A1rmGtb<>aiJEZ4816?9XnYC+k1By&{CX zoXq`N43KVGglO}|goRI^9E2_B)TyoY?IFrr$m<p|Jhr%e*SH|lY436^Ch7P4LGy=e zZ}}8lKtc>ao7*t1IkKV*B~}A-aPQyV1rmzm{+*^h5h8nR>pluf%~xOBP9UpseOT31 z6B>z%h7#_N`VGLH?!$ga?x)5Hq88k{>Ys%xNIlgFN0j+3dc~^k>a4aJDoD>*yg!UK zvOW0ujCOS9G-t4hTzXJbv?U)+jlGx01Fz^MDL3aYIy*2%;1(s2wOg^h(u>{qeKG6R z_hmFuL3m5TbjcTHJ35KswvL6s%7l%hIVs74G+oSbw0ludsSuWzHhu_Q7Aa!*anFs4 znHh+oWGTV~a?mDi6tx|?;AYpsm~a2a$KE}3hO(0}$mQtRIAqRO)SqQ!nkn^QfI?vu zNbk7?o-mS~6L%$nIIx#1qjC6u;R1-qT7W7dz##B&0JJ;QkzTe(0>1N2xnuKSb)H5K zhus6fdUO^!r@{F<f4bvla2fG}BPnd_1J-y+9yky9LiyjAtB|SvD-nc{AczJ~Q{bJB zNJY8jIE}z&fdt^26FuT`29f6ONV3K{UVUdJa2;)hYW0<#w?(4KR8DP7^9AJDznvdZ zUR4&oI28-^5?DQ~NQ_VbXu$KD{04?-)naJ7&n(hWD&<SHY1&XickqmzL)}(^AR{<J zB;q8Ph@_yqg~}sB(g8B*ZK~@L8+#hiN1(v}{k-v1k%rdnzSSQ9BaS=9I+9O+r>!My zj@k?tbn^W{uV(-A6aFo4?Qt4zfV#ZZcBeB)-Q}(`GKf#gjeeP*LF|pvuK2gkVIk!? zbGeD}9P~AIIVXdBff2e=e;1Y8?OtW@Zn|9qjKPo&MwczJ?|mI|x3IdpZ6&_KG1whb zz}>&o0V#c&2FzKDvG{Op0j6~-6n;GLGS1VyN24m`zs@yn&A|3>?#RAXXN*km#!*jX zl?75aviixGA55h41!NhUF4jJHro0(5u&iv9)K%=A&nh*z4e`JRMybb=_yRsC$sm!T zqF{Y1WHBi~vW91ql#29e7<g?|rkn-b0BjJHGI!Y-e$<jG_)4j{8D;;u0Eu9{y*yy? zCvbIHPi)xDA)dhemCC>c=maN#0w621QC_&dBT}x7pmVd>Ta(6SM5|94rO%`0S16$( ze>&BLk?p=s{qyR#Qvn}9B6Simrct_*c;%GU`WWI*R?RDEwZi%yMp+F_WtwRBfG2=W z$(MG=oxWcnac)0j@?kF(FySrKUnlN;9_wt}KByDf)o&=TZuS01uZ^FV!`d3y&mnhS zob?-96)r3({|}{QvklzFMH+>w#fd5_k}ygiBHx2Bw{MN0TtGZQnE(dg=Vn8^FALWA z9z#+7sT!7(K^Ov@mQp_S6V6S<T+5d`l@3u)s6Rpj7?*fzMP8<)_{UgYPZ%5fX~$OA zCy|9nRIM3%_o<<<pcqSPi>Zxs<@a!4Mw|_^Ie#@}!mP1NGv=gh6tO&YQcL;3L5{Mo zs7cs8G91Sta-|e9HMx5YoG4;or6M0BUpy+Sd}91L`!HoSvi_hQMW8B-ePA279i^E6 zTAZU3Ys71S0Bu+YJx5%Tv>6Cs@CUD${0?AJ0nIRe2dWr(KM2Q5PH~;*mQfBxiC9x$ zqO_$w>{xZ7B4DnqKN6m${<<`c$dMPPY$wa)dnqi5y^eB9R5zi=AHB(3+JJn}t~qiI z0=HHBrv+bRw|`IrfqHGpw1mu(Q&+jP)or?TrG!*Gbt;~g08RGDd<aV5Dt5{0{DIFQ z&|eT+k48->LGCn%FE;9dOhi^BQZ!DBJaJSDQIL61h=wgHSX1|3yFDw#T|owJ=lNWq zGzh(*e&h13B@|xaN*}+UI!Wc3_Z8{i1rWAmZ0XYAu;R-juVa&Rd!9OF5V}{9cf9hi z+DO35Kj4)TId(W^hO{G_Tk4%LoJ_=V=R#$enwAzp(FGx~CY`TE&W4`qpzZ3zb00;m zJ*MInG2n-gW)+73TVA(Pj<0h3oJ*u!(89Q0PWw(Jrc&@%P+79z<0O^j`d}91cL@?# z<bDWT7eA@{e<nPJ&b1o9E2P$hxLdicj{2cYL8q&-bOLiiJ@66s;$KtT{&?t~F_Gq! zdoyNYTomqGeafv$>J`VpepmQ|<qwyRsduRDFYMxBp*du2Zl}K7PQ*G*^Bp@9$I>Xp zNR<p-zQhzZJsUGpcTrgep;BvP`CLuJgG%o?%5sY-FX8^io<<$ZcfX%CGy%|fdq1he zo{$Rw?z*s8CMRMN3Lb6V#u*MtT&jQeI@@9R=*0icYqcmTrhXpgN>D;_d#GKz8&P4N z_1F&0bJU+eag$3=mO+d*tu02%l6~mRVD1L76JP`*3m$gbrP!v&r)=xfl?5`-Qa%%6 zIJI=tET!_MCx#ra3Sy4yx;3#wsuFZHnx;_Xrg8~QMzR41#iRWnZr2L|W~4y50NR0R z=7D=dk0kl!a_xFf;PB>FrdGyEg!vzHdI(>mzRZUXpj|5>M}*Z;P`3)`30ZTA8moj% zw39FHc-msJzG%+!9sKK-0LT73gF+6$gpaQYO4+$Og%XvrQPS@Iew+}WxrO99ZS-~J zki)7@u6rUrn6miyb+CS&$nWHIHmdHNAd*9$(k+HE^q_d0!2MxLQa%o{rY?tgXGzE9 zEOACW7`UzegW+DTDN(Y9)7i6r2Z>rA_I_<$#zR*NY6}pqNTB-TNPE{u%p$F>OPkO_ z{ho3N#i|2RH18_H3&df+Q`Foct=mIHZb4(I+@5*rx8N&1!w*d_9=sw0w2d`uAdip~ zulFrUZd_7t?=y+S;l~m{KOr*Z9yJma4pUq0|5-2qA`V2kt{u?qTU>nbVUIV4W3)i$ zeh2P(DeU`kiGrP~6y!*k>Vu@8M%}a2T-j-A9_@xi0X3&RToX$x<9}At3N_`ln9p@A zFX^Q|KoSYR**F_7c3T<&B%oCjtNYG!>-lN4#I3c7oY}wJL`${sA)mV}7;f7zfCsB0 zNy;u{Si^PtgH#rZe!N5I<iY5bQ>Z+P7xwXy7~yC8)<&`(m<}r=W?OEll$r}okBSZC zR2ZsP=^_zN)8Hd%pnh}aqO|d7$#Qf*JcE9n8DFW72EE{(yfJl(+5@jsQ$hTTyMG%p z`YS7!dpUt8j*fU(%L)*C(xAA=TSB(j#{H&(CeJ@$?{7SZQCnW9a>5biB^Ga2Hb(aT zGB5M=1LBgh8942|R=2V_<a15illx-}1H=Z@S~|2w4N6?Ie&eja-xE5IB-Fv)U)WV@ zz3&g_c-CYuDIr>FAdYazBy?SOzM09<%^2>91hwY5P#}|y)HJVTZ{-QECcAoCCc#i7 zu3a!ub55EF1wqcNu6INVzSqa46y@M|#_FtGN(m!t%#^$zrDcLO@3g`<cRtiH`0$!} z#6z}vOB^Hwgqr^$Ckgp0x_3dq;1)f&to6XzVcp@)b7Q#s1v<Bp!al~SGr9?f@2+>9 zl;2ghbTDp352e2tZHRM?hu+|7uS1BJ<pg#5URqnf2BZkoa8<ytg^5Dd+L)vy!``tx zrMuNdn-{pIRK(J8GNn2@w}XTMQGzq(f~cCJYcrJ2TX9bugx`$@8-SSsF?rdSY5jch zqS_Ay)3a_ZI8Yz7ZvS$`4#hh}+=FtcyC9O6-*ERWE7MsSMAWwbxhaT?5gTqFqElC+ zaSvA1XZJZN(pOiXy7D14e<FUIuN{wu=Ay4-)XswNXIj12yFk}7HUPUv2-!h>;ufUJ z%G*|4Fzh;1HGb_xtIgouf`A<i-VL!|^%>+M&q}F<CU0DjqeVtEaHf%+HQui8!7-yv z7o%;Q@i#GO-DPTIPyynJMLK6(b{~+h>P(cBzkQV^<IB*EE(8tSJ4Z%+VZP8|!`T-j z5V%*o1rELPUX3m%5j(H6dT&k>2#j5WLEA%~MItA}G<^nq%k<dW@!5d@eH?d1rh*i> z)xYN~&E{HgRWu&V?TQ<)=cGyj(~KP=AQ~R#Q<QCpYmEDvM00Ql*Qug!fx^-8Cnj8> zG&K#?&nL8u2-h5I_6AH|{C0@)2R9!FDr{{nU=;h-@(-Xf>NzJ!xQFMmIrw$}?>5zC zNaPz+*F44Fhl7lrIzkudCl6`a^}nB3AjUXXRf`gr(1?{Hupy&)-gRcmfckb_Ug!W5 zFA=$^Xf3<Dqq*kL;o!t6+KZcVlJ@XEekf!LMaXJNPH4&dPNEpXS4vu^e?}Zyhr1ZK z1*c=$D?~&!6%$30G@nB&vo#cF64{qr70VXwNGykNDZ&V!7!`#R+#9KU*K1!_YjMb` zBGIbpvWFOpDA@+ZTTP#$7DeQad|d@slMa-U8n#pKFXF(|;)?B(D`Ei+;TSO8RCPqN zT8Zka+rM_WvY=jT$mT_;yy}#~d^LUuCxi5Rza9_3S*#pGAjh8s;K5;AOJvo<nVe`B z9`JBD_)5BcVtQ}zy#lZcMgBU)+s!oYU4PVO*@+|lAo{g&ivg_xOh3z`t2Kb3x?Tmz z)|iEA<gmz?RAK5{1)_6AIM9IwD*7qU_cl(u>Pk!9?G*P|Q$C5PeOsdH-u9kE^m+c? z8UNM|!NF37%@#|6$gZGT*AG*ClWxu)_2VJ000~1p;B`m)Fa#&ZDgz>-1BgYD_y+`t z&=-i(_M(?ckcXN$)*(kUMKs>bYi7NQ@AjLwTv}_#tn4Ey`U_F7(J$(B7B^+6E5m49 z)LhWk-tiQb%HC&_Y%Pz;1sqs~bRclcS6PCo;QF_0EA|D?1@qf8qXolil0NZ_wssG5 zu8s{(GpOe-VR`ke<OYCVTe4N|*zFCzZ)6X%?S3^`3fR>bd>Cod*+abLRE^#o5AZR) zu+K1E={KhbV{BY$6F19iavOJ0_G+{Gk-eU$u7I^JV!!X}S?~0l`GdN>?Gp`ygmQxm zMNGk6@2QoOBWh$XR3Kt1>raU$m5XMK<LRs5(^USP&6oTcGMC|vw-XE<#yxaigy!P3 zDIMI`NZr*>;dm(^+_(ko#l7Q+WVR@??Lf<3I5Mp%MSK66!|tfuWP<kYe+&B<6P{U; z0m&p9`cV-jI2FC+#_wM?MG`*0Uusd{Lx09W14T=WnEUvBYdKysUzcxQ5mkHk@q<(P zbgcLp=IO3GLj?9OaQ{h-I|jhKR&Q3fu+Iwi{JqK#bysdA#L!N&;C*#NK9_m7+X}Qu zli&q?Wgw9m2&X6Vk+TNJ(6zMy8=LqsMJMJu@+r*v^V9Okc=fs!nFkuxUN;V_a&6kJ z8TH+s3ym#8>m;j~^x6`mjGbJQE$JSIe)9lII&%|>SPh)SkhwcEbs+>gaCt|?pxcly zwqi?nEChw%O}99v9UdSw@?KNf9MOX##C@?h5G9RYIU22P&ABvdaL6?M)z=#Jkuv-> zFYjh9L;xc<<zALxu3ue%e!Ew3S@Yi}?e!aQywtfLkU&7^8s6)eXHk<J@?|1G$2A5$ zqL%)I(<soZjFy3|`0ICFq&_yOHbN&-w~}b3`B9^JZ_x{lL<3(-y|B;IFlRkiqJ)>E z<mJXy1$58=@{4wecPKpWmXu<b+j2FG7NYrIm+^s~34d*K!@79!VV6v!qZ(P>W!Fc+ z*j%Fa94ff+k0xu?@B?V5MtDC4HcIhC2*>z<-LOt}*%_n%KO?>NyI!v*wTHBQTgl}n zii;p6=1qc=JVS!Q5)7AC5kN2BzUx#nrLl7OMEF!V*OQ7_Oi}Mbfp9VXUUQHN@uf#C zCZ_zI50(=)W&+-PGhJ9MzHrtuJPd^?>QUw&T57k$@eCQuzO^ys14;tf%^6=HLp-84 zT5)GB!vj9kkH}obGgon^AICNAo;N<{5Gp@yq{h{L8CM2VTj#RwT-vRr)<3a>o>~Hb z_1$4jnm7zB0}c0}62QTP1Z+L9jR*xd01X)SHJzjWg`*2K`o{`gy$y^*C!Jde+s<2{ z709Lur=k68EI|y~3V<=nnJJSOb7*<fH+)C>8kqczaY~DUn94!VA<E{_-%>WIam-qP zk-xE|A_cL%*)hS$=A?81smzW;<}IdOe9?Bg=I?ZWtIx<J+=mpMdK@5hw)+phNtrzN zud56AUKgF1il>k^GaIn-N3AmCJ;<^)lMD*nk24@x%|>g;mVBe{tfsbwhhc~&oTyHd z475mxA5_A^Y451?ezbCF46h~A83AWp4x(HrY;OHO7}YPW$5)~@mDgHGYf<;#a{yLP z?PT2Oi*QDfcf-1y)yrrIICR#ibI}|&a_rbtMld0V`bE=O)F{xxIpk+V!4)T|X?o&| zB6V}3yr3@dU?QdQ2Z-$+HVo%n!3g*Qk!fu>NyuBheGVtoVDWmcj92&v*<lt7vKJ>l zn{f|EBX7Hds)RLZeX7dSX0N@`q3npY5d@4>FB8R~2Ka;oZIG^f!r+p4O01wOoc=QJ zpolLExi%(E8ioWlAZp@J?Q!v)X_-(C7OL!?@808T>|+x5s!DJZKQT#T^;I-tph)yZ zbQU~vuKqM(^?R@gci`8IPiltut_nrcOb_L*ujPgEPxZQq`joy3xlWY0=32GxznL56 ziYypZ!t@JYpXxHH=q0-5iWFElhRtZ@^0)kYaL8;Q`R|@(=`ty%?~YTRSfK_C)h7Y_ zBxMbzsKH^WRqU7T;hyi89zp^ppffxDIOD<Mh-(LCqodY+z{8#)q6uZC_BkHRg{@f3 z9n{tA=zR0I^8slN;B@S94ArG>g)ei>xDrk0Aw5tNpoKKy6nHZGGyp_4pyX9Ky!<GL z9?M)+`IOEpM%e7okz4sQp8O4Th7tz`5r5m`_rtymX_;!~6eJ)~{jts;T6^DY03RMT zRmD@zAGD~Y)jHHTKWYHI*p(_dcv%HHnb%Pks+bf3N4h%e675w!v-Mq!22L%wk$o^l z4<OsK_zH{wh+e=hr+YD^96FNx(tTbcJDQ-Dts3_?%k|&A_I>f~kxYq`$-90uu}tx8 zZ)~rk@j_mAb0V2$8i9=t4AOBEB7Z=OyB!!u^;FNZ_!q*4OR7-){UeXgBvPJ}Fx((@ zSHheidX(!w<LJ>a^OY6ENX?tY>W%C2XYD4{XT+*8kw;&n{y5@lqa*;3{)NK;rJkKP zg(Ivi^?(%-({iKnHINEm7sMxZ1_xu#zZ{)H6jvquEqrCfS%~Nt{DeSa<RpSDpo65x zF=Vd^=G%R9j9GrD_l`r1YpyK`PqCCp)z**mC={q*+yIe`^Czgg?zTs%%JOGevHr8t zPl!d0q%P+MvB)EDK?Ka4S*ZA#(=Aj1@^;T9IBh94M{P;Gag^H`Mjl!IIu)G&fTfwR z1~Irx8%0Mo*?`S)m+cAoWdIX4UmGRkH0k^>O1btJxc@hQn=)3X`V8HeW^QFxUmUN? z$GXQf81!VPA))BEtyQD)$3@dDeds2W<h+A?ji^XFa*COQRkb!z-03qj3nL6&ORLjK zkcybqajVu%ll8fPQ4U5k{mLAbxRT@sj2hWuz8KzFNXOTC<2K8*b$25bWe@YPZKNHo zW{n)@@$+CjJ18tCQ<sQB{~FtUYCk6cEwU}&rHCzKY!dwxv|BUx!iT@=o(PMX2bBRE zGZ|gP6Q|{*p8UGo4Vey4W2@jrNv$Go+FTn*nBu0(TD&90Q~U@GPP6oZ-TgVB2q#~V zHiSE1Cq42?wP~MtBN`*%84`>mA9s!4y7oXAkoft^9_C@slTYI`S++PtZHtsfo&I;K zSBNW@Vh`-I6~A%GI&9E_ty@%e;aQ5nw1}o}<jgs0+sAYebM2ykVQhQs73ZB}Pdp@N zcBQ!LcAvrU6dTaN(Xh~sy~e*20c%6bju%T6hKY?Fa9y~F5JKRT_lc6&dQLs%ggy&_ z!rA-XM3yTDe{3Wp5!k$P5#U!I@w+;UkN9r^$rd{x<?Eg5@7I?S`SGaAR8Fg5knY}a zfaTO5H8T<<HcN&HhsbPTo}2Cf;e`qSZ!H+;SeT6PX20ecCB{k3P5C@!uSZx^2cio2 zHqPHUhnDKfT?*KBl=cHb>YWm=9Us>vA#D<o{QBmL7)4x7w;{Y5nkclpsRtA)67W3Q zG1W~()6H#1fsd3s))bV%Rzg5$iaD|hr$)eag{a|$8|W2l^X?H)bM)pgc(e`6Gp}nT z?)HVspMzZQ=cshy<#`guq1o8yS@MfHBTotM+R0Sry`TcaN&31qXF+|6NNIbgvQ*qm zkPLc?T<07<KJJ;k=F)p-Wk$vbWnvE=A5_1D2Ba@GJJP}UOuquVuckAR7p%2$(l?13 zBQ&e7bJK_@>Hh_Sg;H07Os0XQLrdNM$G4%*0RGsDSBlj7W#DKT&L|G}G^Bg?11`+S z2s1~?24ZMKCW(xOef6=wDOb0IOjcl98+EQ_ZsrP`bzKsbxEab;pM6t=)}5GoC{$S7 z1Nv}JKAe%MMrTFm7-3YY5l_V%AHK$kbLm9X2lxIfcE}AV^+OyBzQcsa^iAQm0$+vb z#r^};i^H$UdkQB^?zL+F5DE!->R9{ei8#{k%4<XOu?Le~_lKLw+7`R|E@M{H#R$_E z#q+F3P^r$1P+F_VjlHlyxD7RQAYK&wKf8|*%1Z}E`JZYGM%Hp?Q%<_7PBaP#HxV~| z7e{iTaZ;PQRK!pjcmEeo_-(|tQom=O!Dlhz>R{2x>NB_jOyH<y@EMfA_WT;UCe0<C zm!A4^vevDoHkrAw_Zwa;nbL|nO-^ujfD8J`Sak7#s+}-hSR{leMd6+i8iIJTgy@Us z29|nyH*CD<1+j`C<O#`zQir#=bRH%2d!#(FIpa0K{Xbw}$rsuv7pmZb-O7dA-Szcd zL)z;yqJ}NH?XJI4e#`*rbmbU(;g14R^i@!dzPo#tj}w9+sy*mLs{Dh3i;>EerCCkg zV?Zq-oq2IEyV3hoKKe-yi;bJ0`iTh<xrCK46@S)@Z%nx*XnVAy>8PoCUi&xx75D6v zvd3P^V^D6NjKV04c^0r*7@Z%myzB1>hJXZWZleZDAf%ux%csMib!$#sYZw-2k08{z zd6?@XBYMv3qs1P5d$E=yLr{|JR~eO}Jw#&0F4b6En2f}#=As)C!j%jx)?GvtHD7X} z<5j%O-#)DRm}h;=`qsJ_Ysj{|g`DVxyDJZn7)(`^)W#}2{iQ9Y4D%&TR&7IuCOJku z(;M?KFqQD6#O%CI0Z^IB8r<qoQb!%6V#E;)#{=mL)gCKeE<#UO-AH_RuB<^)e!I*^ z#auxx9#Xf5O@z$DP6xCIFKuz)foj$+*wu`<QH2pMBd8ehBri$R^HE+wl-BGosYADg zm2dsc*BTO>cN+mG-VsHYe!RSqmyMeg!&fJiD^JVbn*9}C0ggIM5VGp8vwv^`ZlxRB zNU_M+h*n5;(a%I-g|&ChxI{Mxh9VeJD|1tadVlBpl3s|v*~@1o(F@Vahm&~p8YJeY zuOkebIQzyJC;Xc(j<Li@Gk{)&j8ySMNb2-k^=1&bas;-K6Fr-8LXA5)X$nl%=Az5B z_wCjuC*%q@av<JyA)3FZ{NlLb1K5b<3?ea#9MAn6)W66i0+<LD9jnmbi6hn8>mpJf z0iC$SPe9j#eI><N@1^wFr0i~(&mMR04f@U5!4j#P*)`QlsO1ppmgW8W!T;>-R550l z!?gAq{T3GVrUV%0l@XBEqZj2nbaoAqN|x;WgegU;YF_wI$j56a*PyWa%B&90^j;ZI z!;?ER!z{U>AM<WLMy~A|M9OVyZ49HY{Bj8mx2mqb&NQzifCwpvi0PmQLX_g*zV>!1 zd_IUk-q)5;aiZ~i4{9Xha%FXWGB%HIY|`gZ!DTw|%H)8Ey4gCyL$J-Fj~QE1;aYRb zE)$?oO!yvTSRW68<30wig+seY*_zwW%m-3gWMbjj0mz6jEmc{To#c$F)OzxlexJey z&eypXT0C`KP|9hL5c;?9B(+!;i%8kH%l*@3Ej9s4(?#vy{%e^F>R0QE0q#wgQ7N>o zN?Okz72>poys?oX$|N_?T=0P*u#xxTu~yHx`V%a(%`w3`FuhKRR5}3NbvrYwoGjqI zn-?KLl^la@Jgp5yZ$8DO4+t!+LlE(GYob}q?UvP2o*@;trgP|R1Y?AZ<4Zp*Ns${O z`=1g<Jy<Zu4c6*dFwd4KuF>3LOYMjri#s=ksjy46ZmLF5M{{6Xfl;6diZsLOThv;O zbBfRH0u#Z$a3Um6mlmOAX784zuwcb4>WIx2+o=cPvg;Gng_+R!Um#r3<Zo5=Pf;1> z-*0egajzp&JR9QuPvfK@m<f2ax=ZfmS_s`x;f5?ZsxUvlj|^5KD=Xjx;xKYBm2~PX zK|;LSc(+PRBq~-DD&Mk?sn%;0#TzU0T?o|9$pcJeXNWp2Tid&Y!T`1B;m6r8DevF@ zM;qyEuZpvl?9emadWte?BlpF?4E&U4u0(GTI#RsIO+r97cSE^Zee;4bX-?FI$pCLU z1Am_UJ-lDL$B-N$VuWPg;7iY>$XVQ?E_}s5Ipc`T=SH{}gw>QA4$~=ml%mzrkI~`9 z5yXh=V!lWZ;V2H<(MKTjE*|-8Scsjrc!gUyWr!l%Y8{LVyNWoKK0Rre>#?>DRrgrm zS)@WENo&gcAAs{x2MD)Zlj&|bL1KAY1X`3HC#v(J=}v}dpkiEvuv@EF1|lJ_mLXYE zpm&AHVibqbfjJc1A4_8i8A$|84`GZt2kGs-{ztw2{a;O+v>dU*F#;76W0=@?xyG*k zxoDTX8=aY=ovpdtYXNxt_lpH^<54WZ-IMB;_kV-@x;M#YW7^I*Eu__e<wGsDrAHF3 zBpG285CNqSE1q+zUCVvu&cRSPl`rtd`r^!l$t0+-jNoB&=c{*jtk2L<j80^Hd^gbN zfJ@Jd#t@)va=c8T6urK4xdJ2`?=tw%-tQ&|K4iS-`+;8pyKt7d+N>iEQa?5B)OPC4 ztD8qziyN{s*MbOOTtWwdB_uiS#LS)gj#I}g3b)%5jH0bBkwrdN%$(3_OL0C5m5ud; zASp^^P&N$JotJoph0W;A4Ci&+2e%J;z_=aa{QU^qRW$>l-mz2E1nzu~=Vyy;j<Nsh zKYxqEQVi{#sS~1#(tasYCk4fHoNd<rE0LaAyanuO+@;FBON?1UAqVET;W%~59C&s_ zM|>mBX8Z~9GKlH5X;GptX2>>$G=0O2tFa(v(DD8=;9#>aS8*8GyoMlrkgK-0R(OS` z2o{%$Mx{9Nfg+udyS@}O@sA1cd%arpwN|O=quHrBCXp*>-f=1|h(0Bk=c=KvmZxD5 zjEQ}>QE>;O1Z8e@nmwgU0g&N-3b$AI;BILRGkl_zWa)e4sV|&qg?J~6U0RBst0U%} zMHwD3=9!X6R$EOGBmaoZKeo~{UDd1*2*L_Z$OOt*62|;wdc27xQ(6Y=%ydJdb~lq) zG!x$ZRYVg#PKsd3G)L71KUhzgpAyout@omR%xz#b4LXvlYFJRK)v4nFJ>^aN2DP`y zSf=!hpbX~l@alqp%HU=&QR>HTS`n|ZBC({dbGYS9-8SKsm<+iIY^U<XtBzJb8q6=K zq$W=0NTw^w3!W*8Ag#gr)e$P-B9e8nFyv%&cff4I!pyzfUm3(>5)2R<E`&9XqU0ez zWN7)4rmI>+sX#anwyrXYSQEzBP~!>ZprypQweEyP9xyWN#rb>)l__{BBO!WkQqF1b zH$mm<)ht3|qS~BJv#A~9gayNZHjZf5QX}ACUXOUNwc0}VeQJ>!v3sD6dz7*#Jf9SP zX}$%r(Ub;$(<O&@C>G7((DyjTxpjq_u&4mi^bDtZsPeP4YteY&D9N1{Nl>L`4LTIg z+!@YeO&`W$BA<Bb7YUoTRfa`x)mB^KWB8Xc^;0lRL+aLZ`xG_fwS0MRM5bGDZk@9; znDONMOKE<Abe*_I20W>1Ed@0X!lE}x%SD$4$q0=KFt-xL9pafm)T-n1(W?VpT19VJ zzj=jQks}gVLP&_2x3pmQ5O0Qy=;{4*RNt?fAuUuIQa<;w4;9>)@B<IE9R5RaCGNQ@ zTj}8BKX-bDmP4xy7rmC6FPjW?q5)L%!gi=W;wy*v(qousx&53Bwff7kS@+3sySYMj zC=ABrs0wN?il=f5Tgf9h;VE_7%T9&Io7SMSNq158b8nPn`l`TITzqU?ZSw62_PoW^ zXR_RUebl}PwXxvey%}~j@R37=rE=Ki5pCeBx?(Z3Wa#8?SV#=`S7o{2Ox>VJDX4E; z^hGKVil!)5ZDLrKIQrtew||&8+vF)||EP~Vc`mj+b>~FaB&yY7y##U2Q<p{3nPRE6 zoD0mq^~y`Fi;m`XC79$>$JUY%=u#Zig)(}TKgY@}n|vi1G-iY~Eydz3DXd8{6EHhs zuUT0LZRJ`8OCLyiv&}p^gYF<@vdq0|dgddnAToV_FOb?YtL9{lfjNG7x<Gv;{gmTz z!wcN;_*@2ocPI=_|2&BrQeged!5#+~2}D{hHv}h@C1-!HjSx`+rI3$ljhmILd~9XT zt9>J<@9FtzV2MTB=QDZeHb{|*AYU{6R>!qn2f$G};W<6lNKVa0Adv53w$5Wiseq^! zxY|NHqjQUrirqdjh#zGTUwW6Fh;E%>vg<wep>~LFTT2utVdLtc46VXq%JeuKgJGj_ zQqRt_af4gfcU2G@F|Dq6OP=6R^20mTCi!IvyoXR;Brz;sHu-Dg#qzE=lcK3mRyNPj zp3j>z+>XRvgu3dYg+OePm66$zd10L2K|kj!)QESvAOTvkjIwOYZ)l?|Opsb>FMJ3j zaMS)v`za^m30)hbv|z^lXEP$di|&l{)DWA48ir{;LxNpPd+$cdYIV4A0$2q`!FiU| zcP*e0XTpLsa}z0Nvft@NFO@U!(?prd0__A0dY6P+z?(lJ(&9eEU)lWCu%;v@eAJ8W z=No&~#APcUs3P%9O@G=UKDlIt7d?mej4;700s8nob0+P(J8CNDB{=29VU@|GG?@*C zeN)vx=i}}6V@|QDe;ltSyzft87LY<-W$v|betI{-D2j8A$?9CU<h(C;{?HtQLEFJv z&Qen#T+&sGv&8>ERe20@B?ksF@uUjc(6*~ClYBdYnqXtAjwR3iJn3R6UcE~*9Fwn# zRDe}`8Sc|3aU{RJIYKxOJkAyC6LmVBtsbQRR*g89kBy=YPUQ(HkG@^K+3*d#n8vRh z6(rm+D6c2X>JlnR$8$EZa<&|dTF5mkykOts89}!YTgB(zB3<dV9U|)CgLPI=e7)5N zr(w9si)svqH7h434qxZ5&na77Luwy)|1)aR?;}?lw)&kVqMNTqsy%=A<4GwF&Zc(k z`=f1W@W-N^RSxlCHE3%h2<9liVH4%$#b^Q&tfOU39RjAf9>*Y(riEAx=pdHm?{s3! zuOVX;EWE}6hOD#X(aOJKZ^Ll74~-LJ6zA(`=}=qE;dBCT@Tpx&J@W&v&DR+>31C#> z*jcVF)%$U15RZN!g4@nx8OZg-SyfgC@z}Kym7I4xmR8tc2-MN@L0{~^Sx-iYPd$1; z(I{!~iIh|ebHzNhQwMC$v6HKo&9Bdbk+`!>%EN!}sB%JpWIgjjRxM6u1Op_fvxRyY z2+7%Ueu*5QWrq-TlGX3<TtJG$qahWp*!@3&e*}^2UQeiJIP!lH<(+;s9QCg%oUA6T zgp;4Zrg->fhs6r)!NWm|asTvkX;vf6lpI5oaQKDz5m2G3V74>IGMkydfVbiFyB!Ka z5!yCZ=nw?AckI-lmnI>#L!)ougEFA>r56OywFI2Ykf3_k(<AEZjml8Y8Z?Zm5$eU6 z$5DxMb0iK20GuZF#Ba48pI!=R34m{yU~!~__bnQj41;JANoH2p4|{R{Y>x4QLLTe0 z!b1+lBi`=d9BW?WM7%<bHFIl_Om4-FML-<`h*5_ow5%YiwM3_@HUlGbQYLT1l>xp9 zl9Ku2#f<TSVE^REUo$e2^46ipZ^>32<6*V6Yl;y=djxqP71{8=10IBt@Q<XQ-mnFQ zjb|<`AwHaYG@QN5raCt8UjG=77G9f)+xjAQf6W{v(z^7{tjjtErV%%FP2_~kyt$+` zMS0^RuIBm(tyg>4$3ZQM(qjWREH7GUP{x3p58h2#u-88VYylzuUGEjup#j^=4qD>* zOaRYC&AH0;4uo98v9>6fE>^Db=npR4-7yw`@FU7bsP~wEi!48hPuqHax-A7S<mOz3 z7Fy2&iwZ=D7z@G}(Ex<s@PW8wTf~I2^37+$oW8`Vwd;rEIe#%6c~SLt$_Guv)Bfjl zO^pBfc6FJ$LY$Oj=9G-7aDtpJv?tyfCz9u0TXdgRu|!17d9V^&)7N1td)^z*_++KT z@gGqK>8-T1I>B(F!aHqFk(3rAAHg85{60~k=Iy8&1V>ALgt1?bjKf~X;9wfJ#q{#- zKtqx{G%h`!7ZtY583j_Nwx^K*8@Es`k*a^;B>!ZI1K3MM7u-`i2olk8dD3=Y>}wJh zvpq-M+H#vCNsNzeNA!N>D<NJz>;>J)Oz3LS>>-UXgeybLqR>!5m>4Nvi`mo-N1q@- zG%$2K@1G-)=)RUmJ55z8hSL$&3XnRr`|@a(6VQzb%dm&%8q%65v_oE4TGzguwM~9Y z*YxWCp&r8BHfRrV&neTLMPhB>l<u<+$YGA^=_I(^Vx9DAUYG4=-rf$a-;j?EYV^A< zgI4A92&Ox;u1(GJ*-uQv*7$|_O5e!vp-4!^jf}31^Weq^f8=F0JRFXGmc|<jm1_0a zQ(sOlM9r{3lrEz2OFr3WJjhh9Et<dL<ULY!PED<Cb#KfGi*}N|(J77-cI>Pe(qy*r zknu(iT02&D^Yu|995OlKKD>%Iq<kU8#g~`65hd+Pbyx%{OKv%wgTbsnxRUbY7Cw<s zbkXvqa&2SY_PeU%SEh{J$0Hq(W5}u$&z_SFfXQ?CZR$pPT#ni55_6+?{yGlk*&AC; z{z`=M#d5EXe!|V*5ecA0_&TxTo(NH&;I2#U;9;K7p5aNwnl(*@^<ggJdkH*~oUysN z!kTprWbKk2z;*3>U7ld1Qr@yXPm>L(S*tR1ZmIS^y%RNL8p9C{7A=&pOnY8}&?uo3 z*~);0b-NmO@odQo)WYXYP-dzE>NeZIDY8s}b>eTC8bIzu1@K0p!7;xBMnX41wKp%o z%YUiQ>uO%(9buvq$H5Crc;fL{^Y={N8gde)Cr$^1^T7U2qc2VMiojN;0u%WR>bH89 zlIYb+0rv)ahoTf`T=kS|FChJQ;eEV{4}74NhNJg)j9f6GwfNUI$Bgf|KENMECl(+# zK|p@%;1wtc&Ui2d_ZpMbxxYibrYYOxHb*o=Ym=@3XWYl=bD*Kxim6pOHg8~La@84e z_>AJhm#|JiL}4OxtND9}uz<u+QTbvLd8z8n#de?0Ed?W=kMUtp)uq0+!j#a;6L|8h zI$u_*<W=JvXJ@d;H@{1~pw116%5t0U^wbV-qDVSANH1J?8j=$B&_pXu;k!2%yc!Ws zorq>1BvYaWHsG%W5G>Eyz|olm4NzGdF{hhRo3A&4f?SmdSlH4a5=yz!z??CWww!~T z*y9m2%|(yS`x;(6?1x&Hbj&1y9&SkIi>=i7sHW?ASP`&eTA`2H-Q)^6ca-cShpKxq zNqY1u=#fkR%i}~1gJQz>Dop3zkCQG6w`%FH#aB=uGJCN`=YXC*Rj4ype|-rKd5>w< zo|H*zDjBsPN~ZI}V|D=1u3sh>3&=r~Npz2$dT-VrnbkNkUExx$GunnKqzJAa<~gPt zkIA~uFl2VwA(nRK14&kM1OKAB-l=mT?>7HOlmpPM$&Ar~kKpfDbi<|;{W{2(!^U0q zn@haXx0VFmC_1<)#Yk82`&K~k2mJ=8MBRVDzr3}5w}C!x{1AJIn$g8;o8opTM#yDC za8K`oQ|Qz>aOpJoX@o1=DW|I<;{*fUP|1(Dzv0TPARJo%4e@A_KLOYy7l7@VN9P+k zHLnhtn!VAhX;Aj+m(EviLCbiG)Ci6_JB}PTU*7I>76Lreqm$AD^}-DpfX00i9*o7& z^#eBUe_If)U{*SHi}TS|qM{xGtpixdbbc;(C^c)idI?01ap8SoWaUP71z31^*RYW! zL5}vtFaxj-ebU5O1oc%ja6#B%AIz&fDi=(S`8Msfh*tT=hiPu;hI40TDtxIdVh^Pl zTz))*VsLfu;r)t%P+0pOcphn;l8=~}PyFj>U(ClxTVQ^K6dcKN*8SwUJ$1M7sa@q} z)o%^!lf6{oS^-(F>rpA4=~=TJz%|R-oXWUj<hWcepyr>0b*jIJ*_6@R9HX!j&HyR9 z(TP=aLe>r`&)o5NncjXZqnjOxw49XLH@{}Sko>@NLA23;_A;l2Qg9-?Oo9fD!$Bd? zxEi(2p2ZGSWDvC@v8@x8%ctbctHhvyR|#K0ZBN}ghY`ZS_7jk6K`?rcHe<in(>^Kq zh^ev3&A(*wZhnVW7abe+s7o@{YR`%KIE>}Em1rTFxrVy4#3m=+1xa+G{AwG4(&j5z z9?Ne~AHBRPS7=r4aeV7jwzHtf6s`84zcvxR;^=>(WxlF!ww?IkrPy`VpLSM7?~f5_ z$SBS(O#cq{^j`3wG!Y108H^bb+Ix_DGQ(fid8X^W_SBKSRF=Ax35R6M-E-HmB&8fl zNCVfuGB7bV%hGz~7Wh3IThx<xf0B513$HG$a4A>i6D|ak&dncl`7Q`F%n4u(`8kD7 zhmk8$+LW932?5Xe;ENFwth2a9O}+8vV#0K^Qwm4@*4rm&W&!nym5a?HiV&K_C4~<J z!wBCoM?{bUC<!|JMc4T-o7+Z(Jt7D7_Noqbe!p}>BE|bRfXr{iERr^3pTx-9petxk z{Zh@x8yl%EFe6TSS~<<lOH^TZlWmsoF39R=KsFJl-QQvD>{-{Rh)j=~+i=znJkCM- zDMZaBD?UyzLoLfwtkv7Q46ScNg2P4PQ%3-DZp!{U&}g-$7hK29u)nF$d(Ix2EJu-z z-I1&8TT2I15&UG*nzS)ntI1XEhTqjEO9%~H+w0LYkyt=<W2KhX_R2^+ktEi8BYlc~ zY-PL}+!_<?+@@qI=eqXlfC#EvmroqUl<RMO!<=dx26@%@bMNx?J<wDs2PRvd?r+%Q zBcP%RP}SCq3s(KAwn@2o&%%)~+<VHA*yC+t&V0q8ESx@>51Zlx${*O~J4fswh`7dq zkbLBoNE|G|NuB&U0b1hn?q7Mqm^7oFsZ|gZU1v<pQqE7E8^0<GAL6CKD}xd-;@a1X z1i3qR5O|sG-AC%pR`euEEJIS{iKa;cF@epyLxgthe;jpdTDom1(utC9QNMr|%j}x0 z2)U^Rk({c#Y(u))X8PaL;NuN@_(uXBJ@9^n(M8pFI=YO4+|B5r5o%Zs!2fx8KM?V$ z!Cn#K%us>Th4#SfI<U<9Zc0>Z%cy-4+4uvC&tXP>SQ0Fd6eTNsO)o?YoSow@2zB#) z6Sj3oU7QJQq<G?Y54n2&=bnvu&Veml^=imn{J&L)QfcO9VZXd)W=5kvbOOdY@o~6G z^5rpl!DNjSZKT7gneEm88X0%ekR+;9x&)%kxkvM^s_x!iLllNAO|WY!md-51dhQ8i zF)0&>v7GEwpZ@Y1EQ1R=smRn$dH^Zy6C`vio0Q3kMYKQc`iky(@Z=+@5(Ll5ZJQV{ zMV&}?^J(e}_D<b!**WcvhNCNHNW@Dm?Ey6?MbD2CYioV$ALgqwr~QVpOHIpoP4A2{ z4G`$L`GOKPY^ig)9krtK4@mr9MB8}YP|-%L1>rx6Q|>(3?|o&EGP|$2$ZX@F0D4Wu z=z!>yPk=RPy;0~akDLIp?79@ieS)~FGhb$hqw@6lr8qJd<*1Y>@>Q-ULfBw)o8Y5W z0c6U!>DAq_l(!;9OE_Sc!!xGlx%(w;R8{SIA}ih8Nm%4`h2{I8xo}M&h{rkayoA7+ zZaBLodX98_z!Z|Cxd1O^!eclrpjeG;MQb!i1x7mFA0L;oBZVSMrigC|K7XY8UgZ-Q z%h}wMboD`=9DKJEusYv7&8^8(gU*d7Ll#RuegiAfVKIRv3?(RHx84zwFJx~m96|yq zviA&<z?6?qjo5&ZNc)&ou>$dh+lIG#6Mw^}KIP{@rO#MvQ#8gz;ch*Urz-4#kDMK5 ze9C8f#>+{s3Aozha_o>xsfAN{C@gS<ks5xfQ{kxl!bUEkY)+fLPgG+(2$?zJHBO2b zY2wPdq@=#ZxsMjrJ{$85K>gD)0Jvt4X{8+__PpNleZge68qgJddpCH@<OtGKe=;<| zoo?Lg)th6^NL;jOEK1<Vl%Deb>KP92pCb=ky^(5*$RHQzS;#seG>bdjarqsb#p@o% z?wkL-x}7{Qbjr1PFr}U1l<VPR-?0)<?PR7CK>A?eBXCPt6ll%~8H4?a<QS@jrKnAo z`sSulv>>4CM&=IO8y>|iE<Lp$QJtPPtjJWS*pvea_(8tU`k0J+@RmuvLrmsrS8I_? z^)UI%;0yVS`|MpO94s4Z{@WEb$;x&x{$;8iuCh{5%T96En~EXSc)+}LX0;h7ra>~7 zZ$DIWb1DUR=iGhquQ`qe<$%&hoiat(j`ve);;(qub3R_*%zklK<-A6T8?(@Y`b(>n zKmA?V)3CbRc#5W)6Y|{W%buFi1)^t#9YXiEn_!iq+leMAe(52t2*#AX^77C$&O{zS zT}Y@O9DvGmaaDVHTFM@gFeZ}1gpG%|**m_-5Q<B<^-H^1ZnGUV;EZK>EX;uE97D}^ z>T<_R+}3l4vJ_YDZtzV#_9}7*)Ls-7n{r^%^~ACNXaAPqMobr&)@QFKABl$=SXdNm z{?3Ua$Yv2<4D5#lqO@x#dj-L{M@8U89r$>Ryr~r{iFHhHnvZ<T)l0G*ZEuDIxjT+s zYaQ1N(UyHJ<%uJ^NojlJPYGR}uwe2ojCx%<qW{UL_4LcKpnT&<oRC%H!&p=soe;8B zO~gBHZH{NbB?O6$>cis%1Cmx^gqNtMqU_=>ye@q0G1Xt=Cf}ThB-n8n(_611sA}Fw zj7saL+d&WA;Uh6@s}3Th4P!Y0UM0nbDI8&U`xZ&#&p(N{K(JNl*%)zl$~b|nL4;wO z{7;e(Mu$C?LaL<3RNdq*M18sIOTm2674Sv*sp)qV(EA<ECz|@_c}wC_{P?#l$vk>u zzo@pk_+B~l%YvOEL7Z<gjx@bCYmpfq(X2E6UWRIhR##N<qWs{&L^4ae$FRm_P=nWG z9)eqdI2*CgOAehG(t5g(4Uk7y)0n3fJ<w6VH>fU4B}3dQ0<J?Y3sD6`TGzej5c{gM zKL0JQ^9@txr`=?W{7(-~tT8u(<>}^%uRo)HYGpizZ30FjP$rASZ4D4fATOmOlAyZh zp~GSU?J7|ep?+@Z4Ae9%xu%Gc|Gv8eW3IN~Em*c7Fod5?O+eB<crV=uB;K9KN`BpM zb}Fry;jonc_0BnD&tjC}k<kBsLR_>H*d3|w$vd%x&6=!}C9q}DudaH;WDY$km5%dP zovT6ID7gvtv5Qy{;;J8G?t*v8o!Pa>(ka4Lj^>ka#JY}Ny9KHAx$}_^zCVVZ*{c?* z-<UKa$a#^pAzjg(KNO=^cEZ#o?lO^v)zlo$&{S66h5n=i2j*D;OD!XmDgxmmI(WLi z3ZtoPDK%Xk_IrZj5!w;<jIAYV+&0fZX4{909lqK{*|IhkS;HSLZSzrz5`#=Um38IB zL!-eIMIsE6gIbv#sbb44l0(pPaB|dZDkr~Hpk_u)&ah*()PZ_6C<;WhjK+?3Ex9=P ztuVcUQ9s~Btf{KLB=vRQqIQoZM>8WyYx1TxI8MY#3vD@aErj)}7tz%0r;dCf`yj(o ze-v^s!<rNA`gigB5Sod5mT~`C^xZia{)(Bfi@!Vs3*N9W0_&z8^5<@G^pb^q>D#Zz zCrBvNgdGPQ78Xuf3vF7LYAd!BP2ZXN$uHkb;S@xF)t`tdzt{sCEmtBg2WSuFTHJ;J zXNPr<!utQ>=+mh2*=fXL%=~cSv+69j4_*vsZc&6<F2<xv$~A*At6k6L%};Kpp<CTa zmP=aG077m)hDDr-J78=}D=jl?&LNsTFpP_jrF87^v%<Wmq8@e%=nPHbS#wp`#h-Y< zlEJ%a`{TC9%I6Y6`3E)va^@%es3z`@XlxJIqim`z<wrXOF>o(26UekS=s-|)*g9cw z!o7e$;2D%J1S0W7xp27}iVj$eb62-hq#fe(E<}E)+qr#LS6%1`6=>6OtU3L=7%jC3 zVY7&Wso`Wg7p_R6SXuE^k!<9oB()$tpq#u7XcAnoCjc@IDOXs(?3VpA#70_EUh?LW z;-S;vtPc67V_Weo%WBE`Kao=<$EW{cn7%z9NJBO=?@^fgwa{1{_6N_EC2St}p;*1x zQ!~RgQ~nINA?D&=Tz+7LI8zK4F!c$eXwT=Jx|`4PU73Gd&Tb^NaOLA2mZvyThdPx% zBe*k~h)HR8yP@Q!OFba0TchvPc^B!5GXW2oWe*2DVNb=R-M^2<q<MXv(F>@i*iQK# zIuDP!C#AU`&i&Lc$b>ra{HN6cI{O9cRbLMv)1dwYCMKlXx^~+M0y0-O52fp;VNBXz zE>-&a8U4}M>L<Ak$ZL)$55)mOcqgPBLgkKDK1(TyCmfvhmtGVRsU6ciiRa4binu7` z?xNYmZr3gg=yXAvpQ;+wu6OXvZCWtC)pf3s$r6`e<~3z|O^SmkYnXfq?IPB>|HhpZ zNXA?g{cXeq3q+Sl+(!yc4Irit1XQv(ycvi3RVcf>iqoe1TX^)z!wX<pQRAB4DHx%J zmn#98st%zF@=)%xhD8$Wp0prLRAwTCM&BY>100(v#n>AofZ??iJrrpHj_oYi>1>g_ z+X>gk)$S#VE(_hNQr@<yK&sX!9_B=Jo5YRNh}EJKqFc>~=3Z>?3B<E@ZdFwA+y5Fl znU>Zz)T7}E9GxIMw4KgFqeC9i2r$_NEy_5ECE&DNa5B?)O}I2iRVBm22Y-S3&I|`h z$u|uV29N7yM9^U){OT#;VpG&@NtG>%kehI1FIjD{fnXgW{?{WOq`DoNG1O<7L5%;& z?zHlC1-c)Ue^}8cNzF{^_HHj#x%9G9ykc>@<Qh_{uAZbq3b4y_V}P$+#4E{jRF{Cx zgQ$By2uDArZ9GZ?q%LHSA-|``KG^zwYsn0)$>b%8yK^;Sr-DO0=iFOtojBe*lqrPj zY}aJOvlircwE4;c@H)FcO`NHPQozCRscl1!<;G)5nop_HYSPf=R%%O6(5;IIr5Z?T z2}P;|^Jbpz363oI#O=>}{;&we5D{iKO8L4q$99HzovH)=rm)O|TTFODsyd=ZE3)5H zU$PH->hKHXQ$<;%=9)j}zfqCFcMu6D9E!B=2G76&1HsU#D{lO)pwww&z=r!%TDRK2 zyog-UZrIm{Q&HaOYLbhU;+?mh0_m^<#fa4v5d|L+g|#_J?HwVigZPeeus^DM{ifCR z+5dRfm`n+;ZK_PeAA2H|Lyoie$IJ{+D>He~O4EJLNao<`bxy1SHJ0u#sA;PGMtw81 z7tq5D4Jbk}Fh)7B2BfK;eHGHPbM_+?!l3mfNuVuj!q9}-4-^g-BGr~r_t^VgHN`_u zS)i8bgq(o~tSyqd2#{NB;?=QmgyB>vV}L7@W$KJo`I>S8KSWb55wELvZ=ssvmJo>x zQ3%Q0<JBL4x7wb06E*jUhi*x9Md6Z=A<DvrvBVF)lOl-?>JBe@T^TIo4NsjL)>Pip zH<&E>eJ3O(Qi}ap+&+aatE?b;unpfMKwj_@ig9WJp+lCl(fhwh(|)5`ss2W&K!gXq zm%_f@xCz#d2+1p>ET^ai5N32Rzoxp>z&_l>U$Gi@Id@mJ{<{7p;VKMxPSKtX!LX_N z+H(&LBasTA$z|s!8AG$FJ2zK9^rZ@3MSXRIa?Su5x7`&_671i4E^DJCG-4WeB7Qp^ z){1O}ca-jsGnI43$0)CFQ%J4GZ0CD<#JWyT)_Q79P9#e#IBQE(AlP*ktZL7DlNoi| zuvD9zkcQ_-#x_QJjy@I?K#B?`)j)YJX0;1c<_J~xe!@1mBe{m0dxmJOE9ms)LrY6~ z<&nVCb?ROs(qP(MIOTgw8JJNC60?!j*ql#|M*-EzFrOKY;EpQBvv%Kxc(Ah#Gz#tX zjrTtp7EW;AuLyfG5M^FN<%>GmA>~d>;1-4Uib3WV5X^nBOuO8ltg<kdfo*xJN`XSV z*io(gG)uV*j|>Y-yT|8#fdm@9>{?_lkw@Db+2s=km$Webhw87MpCwEl!32`SzQjsi z@M^S0MEn7~=FY<keg5DKS*_li=rqDdn&>l?>a~y2O#E$Bid|||Sh7oZwN!TLjdZWr zWkkFcZO^^`i;Hw$m#Ia=APXGV_E*ET;oA<}%}obE!OT8v0_jacB^3pnKv(tEV_x8r zh&wT#&560IZX+SVUqX_z@ppQ;=#~l>gX?Ad${0Os5@)9ig*ay<vHBxTtYIv(+qqWf zBfM9y8E@^27c)LeS&sl(4Y=lpro*W~y3AVGDs+JM`1Chutg(vA<=Y4cVO-s4u23cI zDch9IslG?u+tFLNV-`&uDo`DsAUOOx%2e9@^0soN4n8<RcoQv=B4U_y(+VpNm<gl0 z=ht9I3uN^{N+OSAPA8k)urS-rP^%#D`Y04Ow<gB2-^Lz|v?iijph9BmQ`qo+!WSsh z0a_U)*n8{-7^iqG>EY#NHb-HAS`{bEqRI!ng4)R?{CKLPz={rG4vQ#(_RIPd(Z&RZ z5wT>tKtwCx)MLi@68<e^*Vze*P>rHE(!)_?oCwLORuGW}cKL$LiI{dd6`ar5mpV4L zheGOzGW9H7V?^jgK8v_-K$g1*zc2!r$IqfBjpP_4PRCUz_=!*%3xuMY{hOI_Q4e)B zOt|8U`9ZgcocvITvg5`C*fTFwq1Qp5>EqhrLCA7fPe!tGubtqcLz!w6ZDxD?k&YS} zk{G>aIBP&j?U*{?nkaYVCO=>D>ADBznAlL(v$nerYPJS`hpo?7%o!cN#9d5XWH_`E zHnLIqBJ&dgX(pDAN^o;!2O*yt?@E%f9X`0Iq1iou$cQ_UQKX(o8GK4SrT&)Id5?v} z%>oF;rx13;@9Yh1U`2nYOy5Um#ydzZrn8j^sjSYTktFVVdQ2>&ntM@KY{cbXFlipT zK+bw7qz)uGZaH-+TNB2rNT@>Hdb&IO$NO-9WA8?3;*|Sv2rpIRbJ%V;9tJh%Ig-uV z0+e8|{2I1Xa|m%i1F_TXexeVuH^(Wv&$Oj~{|F!qr0fDxe0MysMJ@*;4y?_yfD%<F zN>s4&#ky`KQa?hngs>%YOusOlCZo2h+uY?7)EKTv<f+yuV^1;?scC(ro6t>%;{2(> z5YB^VPEAX3&}$hQH84En-HK236vyxRno5+^J)b=z<N&A$%jcKA*$`HdL@2o<AD-w0 zv-!p(d54`5w+pC5h?$#Zgv+G?!%q~N#S4;BCkYLYw@>^LeAARGV6pE4*z7Y;np=dy za1u3EQz#lwr3>()UcD<0IgE^8^025HH+E5*A-6U1F*O96=M<@%5DD-W<XnehmXF_s zS_V{93>CTVuVMd;ztPDmFIK(#KLaAVLM!F0o7G;8XNgR5$~1LjcGI0m$b4BM{4%2( z&h1+wFXH4q!c@}6guFKkuk4$L?1fmb?j+hX&uMu1_9JR=5y#v2<LCCODO3V)qXsIG z%Gqi}sGgh3|6dVGWw1y^H>kjsG1Zeq^v?Hr4u(jeON3cR{^)tQ<wq2XJ{y4ZbI%^Q zF{`<b`v$tdRjTyzmfR<Ri7^S~@hkI8LyRTdcv!KI2sk?ka%t}F_KqG@Etk?0?NZ_J ztc1I(TPqNK*gc@Upw{6}J<!YkQ;#@#XlU8`%R>n&j382&|EQt)X&fD_2*r~NixrVn zHebT-{L90coD}yKSv<Q>DbFIH${R$U%AUQa#(yPr{^I(+MVT(iG+;<!U6H3D#~J8g zGVeHtYEWX11)gTSKW|Tc#R#P(|MGCc^xUg^PE(r*dQ)r652GH}ss+PlpBQGOfDGP9 z9KPxvTPmIKf^4Y;EV>3*a{A}$9yWe&fF)9_m|q~wJZ`{MOj5_)>Ky8ps8rELqcRyM zB*GwC$Po9hb>Z&pYX91v5KI$()<46V1MiT_;t-~49Fr$zZZHZX{FZChg}DG>A2Ssg zFlQ-1Xg~ZD@mik9iu;se>g!g)PNayWqH!epl6oWw*P(`6Jh&o3(<-uvjT%R{8`>oN zLHFxUjxdTT`1|hrGZjJj)#`>pjucaYkJP%5-9E|EM#HXL{3urJ+8a?f7QckJ3?tFB zK@_u7-(W*m>4XxQ0ya*&_a+bGs}VB173jVZxA#g@y{}KHNS$EnCPPHFE$v`{=!au8 zBCy?%>?3|2J2)+8BR{t)Tr?b)R+m?42*2spq3qZ<FFO(S?V?QKZlU|BY)hwpZ~|LQ zRXe-wvJM!ukP8e!1S7N_{k~`*gC4zu=^ouew3y7<H|0b<#(7#yiAojvu1Lp_tohZ} zou2^Vu2}+jkkq;DuIC}EB{RE#PF@6`$Cn>^x&%q<#?eU>?QG{ahsk9K@QNi1vQHHf zjJ^<?@6>TYRG0tqaDkK4Lg%ri9SWl)I{QQ?Z5ZxeiwWj6!~hJ>Ce=E}kYH1V5-i28 zcc^}xB`Nqn>e}$@M=N`^eHBgsBMWHHSlB`=78s`rkgcH`Tix>aVPsnMxxhqW>MH8} zYc^mjnYBTy_t8GgOr&mwFuh1bKD!QAADIl&R^^%g#!`ksCaHoqCBpp{1l2QVIYL0# zpKA5!YiOM(A+<)>PCiRQUce>p?in^2yxu?v=@3zk?hpXs?0wIsG@lFnU`>nb`-asj zR@a4v_{IX|p_;_F0}i(cJ!=$L=0{3IASkWJPD*IIL-x5}4?-2vrlSH(v<2v*hkuC> zD&DtQ)yUKR5h#x_ZYJ-JS-<;}tnH}iWX-b~ZAkDubWR*UD@@2dTZL@f9W@!Bq_KZ_ zc?{2nvBZ(wI=&kD*1DywWL(3vCfY8G*GM^STo~&L9`gnj1FO-@=7Cvm9No%h8H?%e z_w|`0>m!tz$j*mgMVQbXV)dtCUbHfl(WcxEKZ|V4-Tw;lT5|XZR2%o2q!f4lL?-=o z6+p!BKIh14^rr;#NG^U9Y43-g2Htr<u__c+QQ4DI65PB$b4^mjXr;$EA*dDyW<&nv zN;)9qDUHY|A3qvlPUGlAhJgY*mAqZUc-e|c>W@8M&elS%Ni8VM@w9i^t1)^pg4NTq zXdJDMOj|j5lngqw8HH`<;UES4L|ZZaj%Xkh&LG~yxsK$h+TqMqIr6cvftN;fkYYbc zBUPVQ2C%b0YyxT<E@o)5G8t8bFUgrIm7^(4pRMOlU>&VECB$XT7#Yoy;Hrn-Zu~LQ zYT>&VhUE15!#V;^3axo+1r+EQz*$eEK;o`DvNBSno?qUG(1}%hG`JWCXU5f#tlNU+ za6dC)<ts6S3EF>xc}rv1d?3ix)2gCydd&{~RlR11p46}XKf1m<(1|Mhf96hJr}wIe z<%#$J6%`c`>AlM$*e1y&8Invw+IxATvi7#FSXfsS8x};dVRye+cCq1F*`_FKuUJ=I zUG;Z9=iHg(vHSB6d@nDV%-nnKsh{&Xa2O^|%%QZ><3NOcozF@aSmW^RDtQh((!O-T zPTL_j4ZV2k3~syYMiCuOsO%5UeSGialeiSc6E=b+#<+HFJn{`W<MvX_`3199e+SOQ z^sn<^+ZU7H;{du?%UV~K!aOYw2k?Nu*g2R2cDAkX39uc=cUh5tO9U!Mp@we?iPFg@ zFe0VLfobuetOJ<f%z7!C7Y#yo&aJAfclFbVXrggM<@vZ;|7n!p$zeG;$5)D0Yz<P5 zOmM?9X8;42AyGgYgpUmKZDgS~>gk(~Z`Yzx<oeK;c^|%Kg=a;1Vj$^7I52nIQfL&F zZiPQ*_E%E8B_%l^T6RyR0Bxi<a0%h^N0EK}d1Ko0z_II#?Ke-g<G2Wi>3-pqGLQV! z)5Qb*2a1%JUPgb2uJm}0QVnV4CoXbg>8w@lfK8n2N`cQ;$MkB5UjO4P7*6;luk9$X zu*&lIO<}x`k%~KX;Dv=+I;OWg%=2o^TaGQl03LX5fe!?rp!6(`Onqp(1PAu=hj{{n zGVce^jun2nNOn&p#PL1pAp|gyOY>au$@}gOsrm+B8N3zwLWv7ACy%1z`^d*`u7cdL z!fjPWZN$@p)m569l%CMit{GcrQq-{$BDu7G!fKYHF~`fZE5jo^=@^(;du(Lv4LDR0 zt5^#j-vZnV#8$EXUQqzl6_$1^6m8#z2=Bbmaj92jXCLOaz|*$mxU;buPi#~e+4-JW z$zJ|&8a{`vfL;DDbEp>rPx9c8<eVMxj6RVWl`2Vr&-Y9^_0zEf)B%ps)F<7*#pdQ0 zbJ10v@48_rTs=sHC52pz5c>w?S&T_#IrnT1#DHBZ{(h7tI7uFOhRX<-Kb)%gHsT+X z06mgnk<Qk5usZNCtb+}<9me9<^c$J6`H{F*_TaVw*T+jj4SDBVUM=UV)zsC+GS>ud zI1I5nJSRjGcO&pNri^1^kR@O_GDSJEHzg9_n(e-2t^bzPVyo;L3z!f7^esL~hv^#) zI5F73nGd+i8aIu?wVV)N(gV0q_eI{Ak{^N5iPnI<srRKh&7LcQPq7@58DQ+r6vflT z*JU|qr`Qn_?_++=*~DS8Lk^?vRKHJMv?tuUHVcR6I$NSie7OzJ7N&>w)4>@nCK1rE zs6Q=6?g&~1>aW*>+LJJP-O3HUd!w<>3jdy)Rl079vZu6vhGfs0JYAf4;9l?!EevYr z%{IkEo(|Z8aVRa9w3~TN*C+6>#}*=W5$lhfy_)=nIMk2ti1x1H_o&3tBw<H9YP&g@ z@se(g8h$;TzC>1p!#r(#PN7dp{iln>mfV3W_Gk_I{$Spmgc)H~2>r9ou_b$9oU*se zK-`V1;yFd3!i+OCD}wpZz>>L~2@QHC;mlt4c$ypxbz(ncG|UCy*?e;a_~xe0CTZ)j zqllc`DN_<Do?wh?J7kS{a!+0e1{@sSzNDV$AIFp#PMiVVvC6HnJ!QUrGr5uRp70O5 zm#RR0+yKLQTR5$Gv5qRUA2QLeoljzO($58i2qjZ|maKnZfumM3=F;lr)kM=?zKzyC z@$Vw&@r3)&<<4bL@XliI(^?)X^Ec?&+ZWzHFLm_>_L~L1D6%9&w&4BtH<=K*&s!Zl zIfRPga)bARH*5}J>g3uNb3We|lT6jEaznP8VFY*y!N7vBPVV}-dVu0+?V=r1z5`w< zDy+`^t!#*rXGDPs@Lgr&;5@Pyje~9Fm9(&6w-1}0R+S_K&zatONT#e@9~f&`+j&S` z05=1H9A<mndsEhj8Sx^5PEB~CCz9&3j>8y&9z$t!_5uBaw@(JUAh6!vs}o3BbA*_X z{m_J<#x+|D&{@iCc%4jR4gN;IOlsnsI{*c!PF#65zz8wk5f~%7!JyW|dkX|<7DlAi z6dFfgO#`c`7~wH|c*JLVnZFc9wENT0iS;*<GK^<U&0(W5`|$b6nL_p)oFD}mlaxX| z8Q^3Dqc~KbCn(0~w>6V3gly8ECuLJm9c@^@{WH2_%0Fl8>){Uco#X<kIqkO@P=s?B zSP*Kac)NJLqmSwcWIKMc*lT*4h{t{$^vR{iMf@aD-9|=V&@GS(wa70x6eP?&pDln? z*4C6!|5&C^4B0yM*ian{;+XMuXtTthnR-N=onmO~YyOC37+Q#0b|S;P5$Qk6V(ZAi zW?-D}9V0pJ<ngE!$yo<3%NKa1ai6bs=K(mMqHSZCC$1vfiz1vJAG8J*^S{EyPoQDV z*z<sbGA8}V#CQ{I<{!ZE@%TumLwrK{>_{nVKC_MY`4Vccd3<#DDv!Kt$-IIUaoFd4 z+0p!Roj=!qjmv&lr7Gwe4}PEGWGol+F9ERb;4+-Bi1>rgKj5o-^Ry>0F7v<~JEI=* zYlzxn_hhPd#wRbhO}0K`bhcx03L$5r+0lw$pUan2JjEeB+-Fb}B8@@UJ8}SyanHU^ z)$}qX>kxjZ@adi@c@$UNeuU*7tG%=~F%i*cR~~OSMB<4wcOcYB07@b6lZY|Hp`4^4 z5QxG+((|M^o0x%OyW^IU%&@@igieX-x_Z;iQBJdBMeV<PT$+JDpVwK%NJ+TXkrveK zJ>(&HinF+!-J5{4V`65JhmNTM#jKL#l5y(RREQqvhUs*Vmc3p|CdEK|@Gx0Ut|1Da z$;q5~ZoPpa_dMc`H6~BSRpGTzcRq7KWmQaJ5n~f-CB7@L3y32N4<jT_6uf`^0XS_G z&Ejk6V{m85l$t|c%Lj=Iq#Jnc)}NB)76B)fE=WAeJ-S2ajC{TgG0s`vXLUsbNvc#A zI}(M3muz~Q#e9nJtaLAokAL<VY$WB!0BVb|wthQl#|XrC){#HT$iz>XU9cBDigj~4 z20F(`^!{C77sqASONT5|#s?YP2nUS?E1b!~y66FaocH0x#Cs`DJm0^ED<)K_NlAEh zWlNl|bS3LozY@iWJJve&@M}`!+gY)5N_5|;OH<_fWgrXaEL(p9_hXaXg)PZnaYo%r zJy7Cr2ifXf52skDbjT-1<(jQg4%RpwSMz3&5isXNQsX@63hx6@fIOg_>|ItTD~1o3 z3_RDVjZUuuTw_0+CXu`jdT}kOEzVIgj9}!VU}R!G$Qc~|KCT0Gty@TV>q!k{QR5i3 zncH>RF40pD&2PyNL_mJ1P~D4P=AZ4w?UHklAuxA-04HzMy$N3L^ye9w4+G~_+A%tA zI}FVaU1K$N#K|J*H2c9wn)3@Tf<cs^I1y}SD<Ktb|Gco`(K1*ZX-1p8GEzt9Y7Uq{ z?zjzfy`&DvyhL!=r0ifVU*%}ltl4APLtzaNf?TryeEFlUR*P2pR&g;ee>kpj3J4(7 zmSx4N^lIYbD3b*`Ydv!9NirhqQ_R#`c}5<=m0-U^J-t1q^5TU}StYa@SY2sbBZXFJ z#W!#Ipdjg;1Tu9xo-@8AFM_PNlksJN`&2oo<Y1q6l~Z2(XJm>G+3h2DO6Fm|)lv9z zeJ2!HDaPsB@CRMz2rVj0j-l!1=1Pu%_I&RMf9%M91=gVP2Ah#-<`8;pEBuR>D{wYM zeS0&Iy?5L~>h6#C0Zn1qkIM6b1RQEsa%LmeNG4p^32Cd=0+@}2oidg+6>0!Aq75jt zS-cah&GFR(9>TU$oIw}<fNO`9l($Arux0zPuN#c-W<La3ZX{>AJ8mcr3G;fD_`am3 zt*rTJ#IoMc1(xOLBaxa22ZHnGKp_VXo3(ddDDQ*z4s+JKg88lG!VDB?)QP7H?0^MH zTjLRrWw_sxjDE@7@KeFWYyjS}ZeP+{NAAOu0VFZ-AlNPunvyscfT;<ua*I5y5@$Yb z3IT2R3%M&AVfaR!S7R-lmh_;k_VUl$;XI|B6>M3Gd|;8bs33tv^8!3?HXWIlbT|TY zT7jvjw{x}ynm-j#LpQzcg#eg>TgOK{d}K<hA|4mI16VmSU~JtX(?L<fV!N=t#KG~$ zT*7Pal2Tp{xm5(E2~6QZQ4Q%!Ltwy7`+Ir}(SRbZxA|Hw)b%*9sMwEb7ki)K4KvMw zoZys^1thdZD_SW1{~r2QpT}$Z*V0?&{fSOSrdT5}H3p<RoQhQ2?t~NYL%GUTVf(S< z>=c*#vQnm`LvF@+LFoGiSpauHl%l+Q@enc@C^dtCMwI(&QN_K@jc-Fmg+FJe2h$wS zVMeA{t`*pm`m#~#d98B4isRfnZpj8>>E=5aR^BZ}8cGSK{tkx%zrgrrTdK5hC`vk{ z9|A8<?OIwE$v|+jn|$<x?#fgpE6KPmb$|@a<*k%tKIEW~4?u4|XW!WW_?}01ajd7* z_goeL89$Uj8cv8hDu$zROs5PxN9@J2rf)<+s_haqnJk$T1q<Jl*9xp^fLAQXbxLO2 zrd%y4i%$<gi^`Jv3@2c6yY)EW1|TSq9Wsbeeik!fA#(z-P`E4=;0wn1e`GeSUYI7- zbSt*<OO;n?yocRISRGGEOvJe!Hx!L?cOBf~6iOk+aOI-jX~jQuG|9o#p}B6H-Z<b0 zof#5nLWwaNBq15NOE)|QwcfNLrpyO!VRd;gqNW#wAR*r?1+`*jYskKOoYaIWg%khl z0y5hTy)t5-AzJo_F1tpRtRyYf(iDTa>NbLkNL;T&B6<)-%S{kazb#dn-O)(==r`3k zGIs9lN}0dXkjpu!XVQ#lV?KM+#k}LROcj;@gZ&R?DY2YK$bTh2Uy4@Bk5ORbWu~Sw z-hRo^Z7ZxFOw98`U5#S`SbMG_?3Wj%5M?JYGc3XV1~}7+2_6^>1n>uETcG<&)9^!^ zJMiK;-Q#Qg&P&`z+Ma~FJcGQQ6etqY!Pp(X)*+Q#lHOSL#2!VRBy)pm6qlLE0k=56 z%mb+DZ2#nNT3SZ~0;uk?r35bxMksw1{?GB7B)#FFF*Aco6)M#N`|fsA4>4ktvzj=> zk$fc*OOuAVR+h8aQlGPPrgW+PyphG@jUp%ONjIn7WrXB`=N2v0yi%gSCXb0QWZ=)1 z!*y8WkWMaFlSIkWUEWm)IoVuESAsYsMa`De27amrJV-^(U1q=anM(K1w9;}U;tna< z^*pzk;wH12Nm;%828MB3H&zdnY<$J343wllu0@!P=5XWvGew9jk^_$a->(Cq5wjHX z#GW2K!4Vn}E)>=i*KFl?T1%#Ly3E*rud+oEva#ofINj_1-bV8D?f4k9u@?}!1OVLe zWtC#*o9uJMk8D8cTNx1T%BZY7NBxzl(MB70MvuHRB2XC1Ij@Q!F61ZApsjlzO^RUP zi;SwY9R?MHF#5g$kaepOZySlgf{QRh)w!9yeE)R%v!bj#*CEMiJsFf1m31`7GoMKT zcFu~V5!dZMI4N=WjKOK)kRun_m5{Q?lAk-@Q&AqydR83Gi~hHr{l3SQx_D>sS9xq| z%pqCu?j*TL$DOlMpW~rjzD^b^1yv$QJUWRkM;xd>C%9ZtFiB$6MBwUqE=v9Bp13;9 zsZ%E3l;dS1^hK5dQEVJ2Ov~<Ug_G=8o0T^>1+`B~;RsHsWX5@<=-Ds+_EqrZWqyT% zy8WR8DHt^XZcY4A4?Hiq^MT@iC{HKnPlXa!Owd#`<uCNgiepL~(U|AY=>VW^x)n+h z=A%O6ZY@tWgd_1}T5u#Nck!a~5d;JU@rooz5^{(bm`ne!LUwet-s-L6DLSa>fz@5s z6sDu~k{h_IFQN6z+<bteFXpEqOqUdAgbx3O@eDHgQxAX!d18nypGoGqZV&ThImfr` z&XHuj<oP*P;oJ&<<jN{6OQDinVT-CTr_%kynej5kMrhw?oIZ3?E2C0it+}7nkxDxJ z*#c`UTk~MCX@Wj+8H^<Lv6Zv)ICOSO!&hY<F?-awnGP~$^$&R+LGLgcy8zG`CR$Cm z03~ykiuvO^{FuVBujh11=Whjgm1v;#GjBQ8!JMHyx)@ck`7ltC8tLX>zscNxQ^b$> zmC_BK(!yXK)-$TdJ~r@-ax&(&@UK-WoKL>3?O_B<<DKOOiDL7v<r$SoD*-$+`VVR; zC;T|@h@v46Z4F58Ds{>j^og$R&$xX4Ce+#(Es&Izb9D3jeMhG_`=F6~z$LLERpy!3 zWhm&)T4CDl6|++qbc*4QR_rVi@WiiWo}j(S_9`ZjoJG!-Sq>d$P%b|)B*R5mZaxDq zDT(cU@{aRzKKH6$X4LvB^u_K1$D&O8WaW@*pv8sdn;b4OamcVF$PY7Qss3KH(kQuE z4n<im^nPJ<M!c1Z0+V21@~S*Od)mjGrK9bS*K+2-VOXKd*~C0MQ=hN0IX4p)Uy=_w z2N!T3xpL3zKt80rx(Kfxg`&9Oy^EVEJYTSKK=G32AnC}`vIys<a&_TI3}>Rp0j+JJ z<*9t3%5B3<Nmw_dA<of~S*mzTQ^R3=!@(ax1oKC;-KPsbi}(Lz6&aNQd{dT!6I#X* zIBIHw!Kn{Y5?1QcY(dha+Rd<vH?)&C%N-uC9caVBa73yl(+lSvhy<l-JjIp9<==(< zIuS4o#*eRh?9+j-!{cUn$UD~>^svCP1hD5t>ovrv*uaY(7062}C-Pe|lUx_*IGc)& z!-Tl*^s>TZByqqYefW2UI#S)vDUm3ezJTLUsWiiHkXwPaW&je-bMZwEAjn<xB$H;v zCqS5{jf(R5eRdcf?}^72Fngul6u6q|8ig$72VxqjQkTq?C@H8z8=gXKy-&NtW;25# zZpwGrNCAf;G3+d)W7`*5PV7$^r=3Dk2zS24o@`nHv{9ktli(Qo!}crM2VTg7JURLZ zD~w@c{)~(qwxK{;PVA8<{iU`}@l=wXa(2E^#3*Vw?+Rq>k1pcW6ho5Dured!%s^E3 z3<-+2VEhbOc;eIha<r$le{JlHof7K4aOpq(gKlH#w;+)FrqsoDDYSQn0C}+X^ZT z$ggu5OzBwCV1AX03S5B}Cew&cYm+gT$p#X{HAJG$@^n@VYE-bXGX%^MAgz`9(?Ma3 z$&qe8(vny+*!}P?E`Lml>jk6)xmciHe<#YvoihS^<gEzk82D}bXTt2c`WZN@bVyNW z2!{_R%enqme^@w~5WScvzI)0_(pE<}Jxy1FZydcg)rb%f6@Ad3B28gBRizMv333#t zBbD)483pY}_r*X<zB@sA+|lH5NgiQ?gErO6AI*xHv`U-kfU9Z8!Tz7TgLOYic0n&w zBqUo4#|KFjt|3eqE09quobouBp*t@AI$u%gNVl-}LgJOfU+oVBUy&$iDES%jlv$LT z1ce#7POP=86@Q9xqJyp$M50y&r6fTFg%FJL2VhH=bSooEr86;gs~$3myFVB$jr(T` zB_%*%Ayit0u+PtXcjUZ4o?C7C$nDN8S~E`5fCW;3k5Lp3Qh*R?jXd(MbXnj1ppAwP z)TyW45naa26Rvi&;bgO6;`3!ZlJ-$~91$TKnaP`#2@gtbZmNECsW*F^sfnX(=K|WC zMfiSqsV2@d&pvA{X$?%Lsra@3T|#Q=Bgh#CL+hN}l?LkxevJPcE^X;e4xlGRfi?{P zQq)NDbPZ$W!DPGqZ7wA{l`7GJ%OYZf{Ik048`x|w<+z+`{&|DL4Ct3XSmbfW6sQam zT0uyN{Yp;5Jbo<0y2o^<gnf6!N5#>_QsZoobFzG5Pu<EV_OWoth6#6c{83&*KC;z5 zPV%(QBM!6`uJu{jMG8b&?x2F-D`Tws16KvC*2frI5!A%3`2JccfYs_|ikV@-@7%#k z$gLr<$`)WcIm<$JFu|QVy;~TKK<41~^Yt40a6l#OIX_uUap?D^u;}Uu9=0w%Bc#_0 z$uTp!DT<tLLks{kFPk5Ghfv(ENaku7ejJN)IcA@iqFfMC7E)Ivjy@ex<KVn+l_;FL zA1ADE9$2$y><1#N0mXtY5P4P%QU3#o(CD(3MyY=|P`u@?HXs5?%_h`ZrWniYK0F#@ zghR?hdg`?{q)#<G-|L@~?%YaB$j4y%!ua?O$IlJ+*e3#Lpi5Fsn}@M)_uY>qvSkOA zJmy)ir0jyrYGjo7IrJ}AHXw8Rtwy3ub><$^QylGk;ZNq?kuv)tp(-auvU#X(pl<Kx zxavaz1ev1($6~k+8g}TSTkm1HiSkkv`QMDl5F3F`+hfS&T8Wu1QqbnYpOOFDV`*4v zXsq>8tIEoVgOQ7bBi~n`R^sAz3L%_0P+D6zWOIcYE;v{(6<TYIDllg?!_4j9MK~hx z*TLkm(?^d<1#~WgG4JY7u6SjCrZQ8@P9QC2f)#>-T);iAYSMn^D>4|y*-lDCQ> zMo1y{kU4mM{Kb$c#t<X=&$APd(4{TQSqJ;A2j~_w;!@rBplfO<9Y<3=j}~~c1f>Xz z3Q~%qdqi8pruU<MA1b4$EvJiQ<devS+wYfj(4w>+G#>FPr@-owsz$|9pq^!#*l?6# z4i8Jg+Al6yD~gWKPsIEjb#uhjPygAgg)bH(<(m!4aljDjAZ+(l{A!)YuAVd{+jmPO zkrW~*5>ZboU&xQA<O;}~ba@7*EOIaNSC|uvY)r|nCU5ji0TPlo=DF<i-FaCSRx5|# z<m6E<xmF~xfD+SR!#t?8pUc%|OA^9tKCP$=Jx>Q1DKUppUuf772od&d`8NPlcHbUn zo@EM6w^kPigq7LcYl{b`2Mt4pb#smZL{lcD1n83V!*2*J1r5v*9{3FCP70>EvP))6 z`PdH8t^WFsWR5FcX3Ec92n18fgeNWlS%vH2Dy*7d%L;LVH~MU{R#2Grm_~$(u@$=q z`IVDLA%?Q=E(A?nFy4WNVvPygl;jpWG7?APx!Bp5yb6TE>dJTMAVhVqwBMPa5ezaG zzH3g`jgai2?LWuGaN9fILfliAhN1EhGUa?{&QIPxKc(HwB1n>)gH?6bX;B_JGYr3} zXz2<#wp(qv9rpwX1F!}K4px(RzO;@Mtd;At%-cMfGrdR!TL3skxS@sT_?2ShXvVl$ zP4CL)NJW!}ABEaEuV6*og7$9jd@IXGI4W(-l6*$WG9>_u0>7uokOeM*z}&3JN;MF| z+QwEkbGPq$(;eW<o%&i@F>-+f@q`kv6W;S&X1@v$x~`i5WG}HpZtFo*w;b!S-)qZ_ z9iNvuGV4z%L9sH=+x&T6#V>&iMJ~=e>@ANX#eiwdbn*-AS(HLx)V0DWHc=Fn;q*J+ zaP(sCZ)2QJr&on*_~m?nC|+<eX)B~7rKD3H;Bhght<}+oy6I+*eVxiSlZ@lzD`$!q z&;VOQLfTqx!Ywb2bE_qEE$Vt?k5A6&dh5x3iftw`HCVyYL<c<vKrqg^H?DE*x$}d^ z?QtOf<Rgpto9b<zd`+=13CbPo3vK9l5FsTemQ_&-=u$NHWOS!<ave`VVe|w0yH@1n zFk3<7qs~r?4Uu8amtO|3-lVk-hr7Xn7vB{{{?mV*sEaa2j^xZte3)f?1I}Y%x1*#R zH#BQxj+^*Hi#Rx~pa-E5tk|_~aDtVYDz@@N2}6w!Ft@Vb%N)OAT_oz#s+N?bd=L`g zr1!z2rrzb`G&x6(TEWAsNf5|ywwCXVrLruGHq)L0cFsuj0{@%UeM{oj?JeF}>fInc z7%Kr-9laq+Yj-6y`J{8C`kEItMow0%U%fKF|0z)!GsS=q9hblh<RqCg_t^?>o)khB zIwPmFpEj|VYbEnOcKtWYQE2tsHaVH}cN^ovQk8zG$*UM=WW_t{<q1Vl=;2AW<QJv{ zgjeKWqDTUmZJ)5}Ind?GJ+`lGx#)*do0l<giu`;mS?>I>r2UXwL6Cv_UfUnee0YqD zzZW^u{Y8A*(>wqZBRYMg?~XKKt(=XzI0vnqO|`tAfswzfJA#18r<8!J+dm`oo;zU1 z7+AyknkG-^BhAR0Qu+%YnW(X&i1``^XZ-{#oyh43-pKR7AjX7mZ6Ng#p8EmF8J}OR zjv0cW>qb8{q-&W6=iYLTJ9hzIi262*{d;x)lX3JaS~n*HH}2ritK2v`dB;wTR$S)T z+f^>Jk}@~iUY~So=o}Y;04+(yQa!PcuB}4V=p38xAJ-%~xb>iFbA{?o=aFktRcH@W z`d1RW_1jgIXROms%yaZKe;SGcCv73$oB>)Vk4pMsEVxH_t_-yL={?~f*Oqa}PTJ!3 z7U~&p1fYX_0b*;Eun|<it70r?tI3`<^2wiloHbkM!jG<t%6v!+>D+N(8Z9i0o#ep9 z*nv=O^n2LH>9ZW}dsgb&gx}#<!vJ5)tQnj@HsqX^B0A^=Uc~!|CmL}o+x3?ZcX=3q zdgfkR=zRDcFma)!G1g*6!x^+hfVF>tK-4&Fu4Ig(7I)(~j3dVh_M7*lAi@AltJ&c5 zh`Rrnmr^Vq?f0T;X6|u0_V%`R2LX>-xJamUAD$Ui<YYJe(c`HT!o(Ad{YEaO=j|v| z>AFRY(L$n{KU#1{Xn;}o?m@1>uD_7KYkoP_P8GQ;fL_Vx14<c)WWmza#U4{o$SnDg zQRC4g-GUwuE2RX050!eru&sC=z~&O7PQ<o8_P<JO49x)zG`k*{$=HaI4`izNUb-G8 z&(mm_H8l)FHyeITQHaUg`z1xt!JVo%ra<1_oR`5#QeUTnadLX@y%3<;<TNl-s1cdw zVv58_68xxy*%Ud%rAeKAJw)JihezJa;9hh7xHNE>LPjh;AH3NU1WW$i%y=!{YqQ1H zQvnNABT=fTRk?fA>IIEquJKw;?m=MWI;W}3#=Rju2fdtQCX7=amBPzGb8%vpzn<#G z^b;6}u8f`QA|N=8@~p|G4Yat?7ro4ie1Q};DIGwhzVlP_Jjf}uC?d?r;63TJ5a<6b z6p__ah^F`aut-MedG3z@CrabRK)jg0TgJt$=UlHopgzOB3t?E7mSWJs8q9+v0a$hq zn6duC1>}y^cyoM(kVW$hsQ6uyAFI*GkH$;rXnoz9M&JK74(cxk)w*G}*f_^kL+II0 zPYG5;{HWLW0UG5Q-oB{=Dzk_>ck(Kg^E$nZWDsj@9bcHk(EWjtS~eHRtrYN-s6Ibc z=-81mq^WF0;wg6J;P0Cj{3LVY9}DmvaX=@HfdxYn?w+?2|G)8AT^@itA=+xp{$K&W z8G4}4B?8JbwlfEhC!-HwvHN}P`tUL1^#M66P6v9-5>L{n=AhG1F*@$+72WB);6mx1 zVdlX)pa#Q}&0foK{&~Rg8Vu|%)|fo>WDR)zM#gjgT&cx>gB~*06fEW@dh0zr_L?}j zSMh@l64TmPv({qlj9{L&=g%@VF8&PpjQ)M;s~b;pJ08RsJCHt}P^rV8)X4`YV8-iU z`eg4K)-WeI)_@tK0ek=eF9f-V&Q0{@VS(iIr*><o?g{}X@gdRJV~?!Tq?3S6nCmxY z>S?LCD<^tQIs+Q0VD{_y7sv)(yv_5e#JRis`ev@BH!Ni0FSILxsx*=k^AGo{@u|EF z2lR(uYj_VI^KLsu4d8wMu!Zl64GDnqwr0^?F#zKlkLkg)>KX6FD&#<f&k#;p*`9Rs z=dN>k)I888oj-xDIQ}`UWAQM4xji7*7vn#Emk{Q%gTj4As`trAS|YX_Oz&ux#xO8! zm?5sMROq5l52n?kh8%`aVk?sYsik$;YPT;5jcImO!jOo^t&HzB)+|qf(4%RCo{mr` zmRW(mbd%E)L%{XwN1|~~C`zwDTYJ3-Tm;NO2^U=FAUjspqB@TQ{;iIl>zy&ZfN|*3 z3$U*f7Y8YPru*sfJj2Og)}D}K&Ld$f1VLR>n(e#bH-Yth73+#goyLC0*d$FuZnKq) zzf)%)&y<8D0GrnpePE4xd<WOtRWI`B&4*{>=9<8Cec~_0knNI-7S`B!W91?w5C8av zmKE|$I}!n#d9B-&@#F~GbeL5+AZiZk(1y=q&6*;`J<y%5Wa1=!61cvHBYu__$R$=a z)1yK{3d(L|a-n+Cpn@6vXs%d#ivBpbl~Xusql0<tuI`M<Y)*6Tto}2m!*8z-rVB*1 zGLSjuw(A!HzILTfdDV2e37}<V_UQIxq1}@G@Xu%;U>NA2@(d@T;C^no_g~CiH(;68 zK$3^-Uktbu)kYqV{YSiGjniS0N}yee+V<Q28TCcoT0AqzpeFj;6cpeNWe^RC(263L z?KZ9=N9vm`GOVe>^ZMv6uZnPtY==J#!8o<qVeeV<@%ziZTp8ytWgb!Z+QwUG{O{62 zLUZS<v{rZit;jbBr*7w;T+0VD@DQ&DzfW1JG9624^;lYy=|C-CP2sDof!%DWrvOd6 z{6WOFhb?f(5ga>0T$>_WoE|;#STnHEg+Ut>(uw5tW&V3`hW=K=T9oTvnJ*Dx!r>L< z36y>EVCNQ08!)z)l{s!8P!lJ;6=i{S1f0|9tP(w5nO3hi{j#$;RZ|7=TU)CUe#+eW z3W*n(*wsHq0-a%uMf*AF1{~2oJCjwDgz5V8U#uo3p4qLaDdvpdjY>%Yj`<y!HC=7F z+V%g;#M_^LCVM4aUxwS9*PWimTinjI8^<s0y~-8qDvZvU9$TSwW~>Ko*wS{7n+0c| zMc=b)w(KbH?0H=So&rk%>9|VMWgwaxh#x@veQ}OoGILc-h&PSXWa*4J#&=vqTQaj9 z-=m)UShF&QxU$i7YZU!<Ice6w0$#t<=>+{NK!Xu<SNmK-tMSS&%)>wDh_sh4qbZYl zVn#BL?kRSy9RUHZ6=o$|`;c3mHI>1c?`y_s-#{>Fr#fdWLwT#_6plL_CFIVxIjH=C zy`8BPQqyxqt!nODi(y7)9%-U2@roZ;@cH8cbBnaZy^lx_aJPSFm?d%P6%gK^ZgC_$ z4Du*{`mH`p5`=8#I6ro;TSwCUDOerImkw0NL61dze%fhmWd@nir`Jz&D^F*%Ma4#= z3F87h<f%Lja9x?{UvNu3dO}mZvaZO`E%mQ9==U`_K5<NQ4aHzogWwwP7B{9AUY)88 z7?c(!FhWN{(Rd2c6W`Ib7iUaq0Oo4~=y~`K8S9}2+2T=Fy39cY8+4gtZUTLaQq35- z{MLI8BRtlPfryZwWr@F4z(2*V6dL3%hHXb7T$ph8KBLqo_4D1v(g@{FW;gO<r7^6v zO8a%j#gFs3xcF6i;q!MSZX^#RSm5)Q$|P%2Rx>VMjuF_|T*z;(;R1tZ!{<8r2a|0l zPH+9?9w7iOm?&?yYzZ^p(Q|8D?K}7}uK5C>jp`2r9KYa1uVI2HWRza};uBq-;-opt z9*+Rwo>^4)Q(njJeV_ZjT4z>XZL--rS5MKeAGa{+Jv&EFlg-tm#>wSh+?>lZ+v^Y7 zB(2~y_eXajLpS>CoHPmhGqRN#TL-!GUf?;n?N&sYm;OU@#$0u2R`eb1Bov3{SClgF z`AeNbUDYTH(|OaEGhJ7m&wT`rc>{o4d>6(^y;(%et&bPc;RP|Gpf*z|TI3xz{|Hv5 z5!@0!fuzDWQWeis8GG$Z=h%54w>&i*=6wh`xdJ*xLUXyNqW=PiUCpQbxwqDciPHC` z)a&~p_JMx5{~aj{k|(Ux6Mv2I=%;(>;diabfvN*fvAs|Y-vb@HGTo;OXa(x>!T;dW zM|>c`qTkN2<6uWmvO|0}=%3OkW9exzO}DbdJUcf6UyBx~Qj=EiJ3Px_78E4V=pc>P zW1k#7pN7YrL^!8yts0U+yuggSJPKY)r-6T=&-JgLP5IRN^xNta-L7^RyTEipIFRPZ z65oRFYDAzOq9F4%zyBi~F>q0_NJOhW&sQ-ATi8weVSa(XDxoj@>CN=Gvww1!?ZThw zmEs`zvnzDJs8zL+I*q70Gy4=$fyy{#lfx>P<>-_WI-KZ@qsEGFb;P^+hy_P~;Kp2) z8Ce;L3(Z26`18~#!1^oJzEciO>b1czXuZr8XUG^oN;a`hS*IU@c3u7upKW$b{hWqh zh@c1m^cZP(3A!9GJX-mVEQ1q;oo90lM7*(q)#k|#Rr{}T9wr0K^H~rBy6)yTVmLG@ z4?G2k!%utz{~mWrWpF0E2}CmY7tN~mX*=Jk_5FBUEBHfX7cXVicxq#vr*vLLZHy?H zO)K2|#<rXUM{C3fz`b2KID$n<(pfxs1rx?rPs4Or?*JFPxx^}cGY-u|Mays{-+g!% zi_@(JuzB;Y+fyNB9o|M)+<RDzH7o34_}|zkKIenl;OutH@N9ZJ#T&BA53oRX5dlxG zy8TU!*y{es?tKjOt#OcCn}ag7q^jPrQ5ZQi4RS7?b;mPObeR%!+RB{j?eznyBF5<7 z=Y{eAv`9lB@?x}jPUV^rS`o+&VAPP+C1r)tneRd?1uisZ9O?5~^S#S+ID4HA<N1sZ z{!84UIAVS=U^d?GtB512r@&J{d~ecx!Irf2Rg?TJ(7vM<>~CMq`Rdh=bObnMeB_3B z*m2gc8LLljE9gW@t4^c<+kK@O!;krXW{A@dB&)}CYi5cbdbDfTf)f{^nV#`jYHNq$ zto@v}?vMxR4hGhfD`Ir{%nKfddHZ-air>)S-(vmg4w~xRP=b#9JKeJaI7;s1P!mI< zVh`vb+|2~>ec-%pJlYl|<$qD<={i4=sl@Z<F`YbaYgNXGy^9UO0l}d7VwF46NbZa^ zZkkv;=(x2po<-O-8rPvLENR2xsjSB6N4S*1K{b*zrdf|kHfqL{W~e0nJI`}aGmg({ zysXPeQ;)HV)gK`hGGm(L?PpBGaewW6V09j@h5Emj^X!AZLU7Z6LEJ3+XC5W=6Q0Oh zw0QHnXJl+wTy!dQPu^Dt5Wg2)J?uWmC!K!jaurl^>BDe{bJpo#DL%ufrr6s-+NAz- zH&+|PbyYo0Aqmehlip)X;@_C$%(|@MH^0SAO^UT%m)}TLY*sg}hMJvLrI;&y(1Z7Y zy|j8b3dSj`l+ahLy4^p6s1H>dsgoc3!wZFQi9LaRKPoU_FyIgYA&x2JarLJo->?~@ zV|ProWvmq1r0`F&UW_p60y_@X(FNFyjvtj%l4c^EsDAE^FKK_rtqBt8N2o|z0QN1n z3n}K$-P4VMwuTeKQ(-dO!53Zk2@K@AYvtBCuty{7F~8zkq}BK3d<Y#c(xhz;donE< zO;JGjgg?BTUzK!;Zk}Y%0$os!o?M@u3XjBG{e&dGl%x|X3Pn5|&;{BiPux%=zG}6| z#X9#t$y{JYdAhqaTfKh*49WteqmJLpu1B!L2z+=~X|EiVD7RkV=cLRbc`5oCSC-SH zTU<RxfSX1UbJs|p+;bUDt2P9J#{N{?^|Q)O#Ucd5h%lT!&@<+)BYiu|PEF8xmw~$+ zJ(;1$<QJEO0A??T1k5B&?FAl$tu%w}$`#;lfEAc_d`U>Aj8E~YJ(>8T^J&FS!Puz? z^BTC%^We~xB#P$nN#$Va1nb(T7PUB*?oK<K;V*U_<8f)Dy*hT3F;$gAu+K|j=2{S> z=sy2qW)oJC%gD4wlwGLgD1ZJ&=P03Yo>^9^9*azR`yb2w&~;`vY;>+;Laf5euH99{ z<m4}NX!U-x(u0m3;tuHAt30mRytrHgE>e|-N9`|HZ6XgX-*0bCx1euVwLUJlTjdO? zQ@uh>)dzL<unT~*#yW27y<g9#2(&M~IO22hIXE`m^032$4eD$dtBnQFG9t9OFU}s2 z;5yksQBQI6<Th+xkNFuyg_1jTQo)QSQ4T<k^{k9%`(4&{efxF)d$#W-J`iwbTPJ_! zXCf@kG)bp413vi8>o_E6o0Z{4Ic~Cq_c<tE6;#spp1#~^k{Gtd7W%D^Vj!4&ipNVR z<F~O=^*P~0)idaT<VlLWk!JGqGFz%F=c|PKVf?6c2zBDmu}^1zjNA&23_FMPdhHeI zypW1%c%Pc`mx%AWAUOgp|60D9q7FuSNGrR&`I_n^dQ_?J|D<`rP@^RO+Pv!l@{Tam zN8G*wx2)>4NT(kXLF!)T-l_<jN!p(OyMz(7QYrWUToq3;|ELKH5{fw?sJ)gJD>;*n z(TG3eM2wy8D#{BvW1(uIqxL@=QDGeMY^83AlI(?(!sOkbGuvkKk>*AeAa{ewpd^}A zp-8V|7-38o%m@~?BSk1Vt(dRX;|VXr&}LGSFepD^1D?Ds!jzO%sTJPy5B?LBlNPz0 zhe-K!#lN}67U5OK;E^yj+w%35QF(G3ASlR{8;zjqQdy&vuVPy+!SDxbJM4(sv0o4@ zDx&~!lsacFa*8!cr3U>3=Gjw(HtG3&y@ufHcn)afV@x6My`iETy(-;@d@F@rSQ2Jj z;3Y{OP?box20vAqL1TQpGQ!h|q{TpIfU2|6nW{PU<Ip2zJyHQj7-J@(<-m6(^&cRp zD`zv+Z|zm|T47BF9?sX#J3^;m9JM(QN?rf4U<&%(hdTbiyVE6^hpayO0MdLwO<qc+ zk*a9C*h<l(o3X+YC@;NTj)$DMV1~6Wd7!zu1`fb8`{pY-3lVf{dxVy9k2$*2-Kp-* zHZ~WkYKA<nu<ke+SIBbF^c{wLU04zaNl6t98w<}gNb=0*%uDTXbQk}-UeEpI1RB!s zzd6G}E-%Aok%!c5a9GdEXq{cCysJaccWbL`P>=`oo$07Q;k4c_RG1SNhn22YbiFzV z&^OJZS3jA;gWjz3ui<uhro*XBp9*LtSXaTJH0NL6HIVBToKT9wP*cpK0#O?VKB~yN zboh;oF7KMt>_X;7F#k1f;d+pg=#fPKT?{>HdRpphwh)BR3gyIB>V$nqH;v=<rfYro zOePhootMG2sLb(P_(gd4Ia;*XkfFZ!_*E-gbhFw$lOC@iqwmcz@u_*}pD1V<+&Nbh zMpqd9IXYTk-Q<6C9GqgvMDtGDW&AuM2Nna?oHKs!1RWIt$3O`%w#JE4I>zW&SP5+V zu<;~9FV4-dgH3Ab!?&Rs9{k3wU`>qeQLno6MW3IsInI5ZnQEOD9AS7M=3Q6hLpIq; z>*;)f0eY8Q>q@hb(P=oavU5In(Cx;`sWZ;gq`%|CHRS3V_g{(UYo3l1gFD2GdR-+} z>Y<BEDpEovKvq7;M-JXAS5XtS<rq7Q?fdxoh^l?^J4kyprKB8TJ3`UU6GVMqwL`Xv ztW~jkqLn&iseWJ-5+*QomA`oTY*LOjgM9&Jyzqt;;z}pg%FcB9m_ltN4m!#;StQ;E zGU6}rTm*<fp67Fd!U^;!cS?@iz$TnDt*=-FB~c4(>_hkY^bbP^v}=wQP-$MeKqQGR z9PM(<tBe?AQ_r$n(~W0SDZNgEA5Hf5>q`9XM#Fg#Ck8CQ%GpV_o190$r@1z`rqo*Q zqi1FTGmxxe48&MxI7#E1fPMwe0fVoMh0wdp9=B^`#gaIo8TO}Z*dbL<X?~-MEk-F$ zmslR%Rn;dev^^Mw;cwuyHV~IFM(R~vC{bIU!ivo*>!6r(KmJBDB6;ArYU~%67TAGq zWu1BSEF^vh?};&5bd!Z()^lY}G+)ivf%K8fZ+3T|`ps{7?N2;W*o-&B-)&gpdVb*Z z{Io)c%lT0hEme;P{)aT{E2^zSn40z}_y|^$$8^#BRflfQ>BD2Ktd(}e5YxU%VUbIT zic5=7MKbjcw_aeT{v)q*_#-G`UfNt4Db96FiidtYGS2h2MEt*gKHSyDS&SvH|H^#f ziHuJSjd)Os8{JSBPntsL+52LIYa<_bL*$7pqYuATi>K=*iK8wgE6?7RC39{*@gWIC z4L(3S*)kQETX1Cozqcy+1T&G0E@l)-(&$rLWg-|}MI5>9{3Jd0#!KnNsY4UY9fr2A zy`L8d*0ymBcRJ|O>ZQd6x;R!6Go<P3Mz8jVq5OG_+kg>qy3SMWqE6i}lP@x37y7pf z0fC&4@l?k2`^oGCoHa<ITBoKtC(bk2jANQel~b%AklOUVIE#OB!DnFIx1GzVmGOX{ zn_V)NQky2Cu|`%GuVu|(5~VTp<8VZqE56I2->0;Qs(1dCsd$p`qqEx5CmA_1`nP&< z<5f4U%*!URRAF8$y`#3`5JDE|d6e<PfE+BRW1>sk>4R)-?|YI`8d2u-)#QI2ut3`D zUtG+6og;K2=)!NA+<s`XBN>Ti&ha0K!O3_8tl88dPL1ua^6DKK48TTQ<BzBweQK^i zw#%9(J(tGuqtXo>Le^-k3S+2@vD;uDpYBVd_Vizi!9-G20R!>q$+=af23`f!Gm3*r z9>j~zvD&3f?`5sNwN=b!gm2S(L8fGG#vm7?*FyT(dFwN^{_4}ky<-z}^WzgpHphC~ zX{5pWJ#JTW3;k>I)$TXl^@(TgHVPiCN|p}}A_pCs@nC%I>`!4?y@TuqqlIIMy^3jN zuI%aSo<Uz=%uTm1UHrp1v9`bAm7Yg~yWXhpS`?*{tLYGD!KZz<4~uNF<Wk7V6> zYuwJkdjTpt<8Vw+zw&P}7ceF3#(WvX7U=3c<92W%01!U^jn?`h=<urleF7>C?#s7_ z<Tw^$Zwz*H^r95W{DCv8N;D)^^ZvtVQx5IZ$H39wdUCvmZ<_N_n+p_t?FBEU|4I2E zPY%JSx1N;%ef{?hj#m9$F6YEfD{V!;6y}I--qPx0wk!PZbkwi4fqaom(YBEI3}aUL zIHML2!lNJ&o|2#|74KxVl#p^jaYejxc6yxP(B@m`{vSM~UtMc6_N?L?v@r4vtINPs zYtNlhtTH~raXImuY?Hy2+@!dCGFY?={r2sWfY;6Fv;%ahV}GQZKkTARUJ~g%Q+DbA z*VhRYb1_VENn2}B;FKiO_Cf$Tllr&Xax#)Rqsz2jTX`IHmzF56UvT>9+9^PQ4EE@Z z=~1>9%2-wuq%>D-v3B(<!xoFM-)T2=3XDKaKORxbmN~4UYzK5hOUwx)oSG^Oy&fpY z*@#~^`KqphUH7M6W^cnWh+kv()NXn>3eP5`D<iE+S3S4(MT|7+U9zQS*F9t)+i$-0 zs%z~~2DyASvJGqX!vIelQe|9nlfwgU7KP!0XTa5?%+2H6+Uhh=*J#4G<+SZWYT3cF z@O|9Z(^Zie2xiUGHqu6{`~>Qxui~%bwe9~Nxhm#!^X&>A1;N6>Wzttmi*Yyr@6yYo z2DvgH7gNK!d<GqHe~a5>kn6GecXY?@9V9H}NTLd{=<ABuSy&uk^Np29BzQQvl5PWd z4gZQWBeql36tH8J52<i8*SqsmMu$e$0IoWSa$(hF^%guU{nVGI6!cn{#6JN?TXpbt zQ_`<_n75ygyx@b}?cjwXO6_q#+-o(HI+1o^A*`a<{r>CAfpJ7n9bZk|G>AlTdftD= zvp2~!>v_vTJJap$C`2;uRVO>S--m+=bN@|n>ygThTfV^<pMWleU$Xl3FkYRH@h*L5 zCG?kvwR^g<CgHmWsw+dGjJHqcd=w{DMy7=k+*q;~S37c;C|5HO#s23#FPkrPGb$pu zbz2M5NC|{|V*#xVd6~mU8gtM&XsL}q4plz=d%DbJ`$=H({IPu4PGA=dIJC^y+T{N4 zQJ~@z_rEGFcS+kFSfTtuEjp@rqN(7kV+^3jNP4>dx*PD(p&tu}f9;E5o$aF)Z6Pl; zq%|uXhg}E2aq#My*;}|_-+6;icw<*64~7mMnif!UqtO!9F38_j$M6j)?aZ{2F*B#9 zv(ggsbzV2k9C<1zCdMwd^$hLZbB)TfYVE3$0sU?4aQL=)na^nMc+NHxNcpli^6DKJ zGXg$MY4jtVlqM^8<v(ckPkoaYOtltxN^IXz4%}38Jes|(`h_k${c{B0KV&jyu7?f) zw9h7lC0Xp@n2jY-Pqna*n|?>Z!<k*6E|<;6aXkAhy3n`tm};?ZpwQv=X~);zI}$G9 zjBB7If3qK;b`xL67zw1YFAEEKbWNpR%_MsDt6e>ks-^;0ykLwES0w9RM|Z#MM0S*u z2l7adE?}8h_!VUAxPB1eu_I{*=6!^E+{kV=ALaU$DU{=i63J=36tB#5hn|MF)aft) zYDrNc7BHV4iEw=--adb6JQJ#*pE(+XDKWFJaH3#5fQb)sj^}Io(BPdOck^b<81|W+ zICd0$yg_Z%>FIkMIxd!ULTPWv&)gAS{wkwg^RAn)%7ebbunDEE{0}l)(~d#6<kI&L zp)JkJNY#tz!hqu$YEY)WN?VA`&VCP;*1QeD>Abyc4U1*03Y)#gl}xDmE9o*c{#A>d zRpx<wT?B>7IEl@9kHg7~ox?N6`$#jSaoF>`5o!<))xbt>Hn9#LQqalka--Y`g#zO6 z#<}r>ZiBw8`9NCY`A6YNUTQ@7<FDInu@8C-xCz)wTt?X#SNt62E1@%}W)@w&xFg7M zp8lC53_j+h@BO-f<BHIR0$)Og%=ktRCd%r42DTQBWrlHgrZHHxF!*wn+UL*ou&~}o z4V8x6J+IC&x3ck^R3RBTK|hXN<}r?Sw@yssh3=eKmlo2<y*bkf%JJ}Y54|l$Cvnta zB)DhR3#-xV59N9p%9{8KdkAPci=n6v`FQp$j&H$x$-4E#yV}YmX!p0*%jC@h>UieZ zE5Tp3-!8iH`<>jBXMugOs=nHRtr$<=^*%h%=D1ML1y;m(s8U32o*va1-9#|Qef28W zuk<~FQm(c7DgW7{x{Ct7W8Hu2aT!+sfb2vA9RpAc&Y(-~`9_OU&z%Zi^<qD{XIfco z;oOjRDDv8)Fk%nHS+_m5kZG6#d(n}L$<i|i_L(7|OBUN)XJ6MT^>V!*qZVHWoiy`6 zk%7tPOLYFby-6y3{<c<`*(3Db(B?BgpjZje9Ue{3M5=UO&tK+L9r;SxDS#LmLV!@k z%%Jqbup&0P&9?tn_*o5XU%WS;q<rOsw}hP-{Ga!4j`=~FBc6|zd;o@Xp(==|#BfS| zd54o>{h49-6?sSx>$&9}%FJP_B;RI+H#J8=DC1`#(Glx^$*@#TG|AkL;8FKI9sM+e zK9D@gWY4b(&=VcfEVz!dABZT2sgTt_ZzuEl`CoZjf!XJ=aHAnLfTWkzA9}GDME?5b zQs6;-+TtMWU}>tVM&n$okB5808*iTVeaioYW!~3<coQDVke}&O^Ds_n@C%5RqP|?4 zKaHz0#uBO_)trYf#<cG0Z(hg<N|$nL^yGDnFu-NfzXV*qa!ah9C`@JAWm=8iZJmAH z4*(`F9u9V|g`C{{^^NVEJz9DJ+BNDwxA70^HapX1PIEvj;~AH{0GuxGo|f=#J-z%6 zbFAeCa0m7@zdgb2uvY5viOf0=cWLzhiO@jnx7sA!UpIzzAJR!B-y4hW=Bq&8G@j{H zdFoKH8DFw%UvxAY8cU2I<lOmz0^}z6Ysk@hWhnSsSN7s|?v;Ndb+>5`@~zFpw`s&h ziHzmD>WqxrmSeFr)78-mB#=*Tg?>dNv*06{UH=l+0Vl5z8A!bhJEpfbVx$}?+SmRL zZ&;xhj-Ep&T4KtaJCO6r%6#<>3Dq!6uGnfu&E@n!^}jD72V~Cwa|W~x^u2$7t*G<z zch>>Dv2JieN^aKGXQb$9SoBk)u_9>w95<7h&CJs#Bm45&fidVE^{>mBHaI*wuHi5j z{gN@kuV|h&E-SQt^xjkr{XWc&lHFf-#0uzuyRIv8nFROJYU&}aX4@wSm#uvfs+sE+ z(>Wc|g@Lo?x&<-KBdCu08+y==zS=>61vhi<1PoOn-CH*}O7A?GzNP*~`s|o3KEt^b z5}CX6lzn4xeP(8(GSX;W58y(FUqXw&;O!K+-m<vAnK{@vdOFku)=lClbzgeVy8R;L zDV|jZrFf1(qa?ChnakB&*C!iF;Jz^oF2f`sU?^*0x6X89nDY#pjhT6L`GZ812lu$V zDfIdDXZaw92-l{|`Di`=vP;0mMEbG1=V$S)m^g)S%KYM(Flv_+d?`QC;&QVkg7SL1 z;=+-fG~Ga|YV5wCmzjBFhK{DF%s>6hKQA{PpGHKMRp!vut^d11G(93(zcz>rsvFQq zVKubEe2-sVHVaIYrPPso!bd!1bGQKtzDBWP!b#d(jA!y>mDd-778bb^OK0r-#3Ox~ z`S_{uY9jCXUo_`dJ@+nEg}G^3#(;fj)h8lcat3onndyxH-MzHUsd2nqp%p#^g@|y! zS8$<^)yTk&2`(z1_Ny?LS?I5)y_{hF3n2Sr_$J|^RciRB?4X?F@L}z0T7wM=uO4d- zBO01@6DLlP%cHG8rp)>Pu<|1=FX}?`oLiHuZvHbtlXW4OsH*}jaIJQ20tuJ3F{c*S zhZbYb19DF3qo3@^0e$}YYyYDs-S|lOqPo4oefixGhgLwO*1VPk9jysWhiQymE;UT% zC#D+`+Fk^w*6?3al|&n~zYF58J@yq>W6|-bFZaT5y<@j$8jv0_o}yn?Y$I*oyGug! zEl907pxxMp>%M!LExO%62b!L5$%S^))qHs(P?j$DTieAeM2+cw7{=bk6s(L;n09Jp z78hgm$M_0kO^gX%%5~&Y?jM0O3MLRGNL+GHp_QJq;KCp=T^D2<^eJPf-Ur=c;a0-a z8|hcVgC=AFXB_|MvJ%J(BNCPQmwKCYONcb_v#*j{pf*he(#JZ@#vT6l#k8*N^t~EQ zx5ji7%+!DaGPNcDwCM<&N4MKtA%J3BRunT;Z@_*0GkCYJ_?TW=5JGBwnHQ9MtzIzC zEj%2_)g6)H!$7)t%?8Bn*W4*-(ljSu<xsd!Y8L7%KFrkH4(P1G577$L51+Bksi0zF zKK2)Q1HEyd8-Gc$>@&^AIgYOLTLZde;FCn93fs=0wm<$__Oz)I!5c~JW&eLBsxn@! ztS|ohqb9&LNAhfY^C@1xF;{a6dox5iWK`9d7?CxvDHk-3R<W+b;v$6Nn3F7da(fcT z9DO`5(Qej$pT*XWTq6t0fhG<?w~e69>SQp4vJ{Siw1v#$#3M4wx^`b$;l6hjWWH%@ z)yj)>gfTur573o1&^>?8)XJtg9=l&RE6YP&ki$2JPeLB&8)S@sh;e+@qdWZ}cBpj2 zHAN^Kl_9e2@&UR_GxlHIzp23ACDoxl!a#v?1T^*CLQN$#5a;0xB(Z(Sr&4!bg&t9V zq9fW`GJN8K;HuB7X)x<&QDw41S7VLgY0{!Sxy|vBXO*VWrnhOmm4kL|tKlE6C+A)A z-62VTBU)Ql#EMP#J5kKQ+W9Vc@R+B*8A)Yza>}^y`vljtfIEg<jJwJUXaOi9_wyxr zE-@%;>?|9*%0Di$E72`4iLkJmneSSIpz@ih9Wpdrtj^F~!Pd-Q3%prbhs9eVT?}*! z=i(AM=ntD~%3)Dx{>E6zY(W~u*l69iwp?|u<qpkt)$Vv`frKP}rkET<tr%GN{X)Ek zQ2kdTQV+NjC07f*tgC{wxMTmN^9x~R9eQ+LgK>{p+uBXSHExbj=5Nl?c1)Sue_%i~ z`S$QUm`cC65tg&lSxFM1_N_V8Ps-f`wg+Sz-`){n8H^>6VPC(D54f%(Y{nv_4v3II zZ-xIu-cbfAns4XemzE}sSz7rEZQD`=@S%57z|zA?Zb*RucKmXgrv1k2@REM+jX3wr zX`J)m#XBL-8I3X!20=Y4AX$TYPmbUs7f!zHs|;C4iG^fi#N6T*(!eP?Cp*rqxG2h4 zc%^JEsmyan+meh%q@B}we)H!UY}Ci{UGKdpg7gH}zL~@vp@Q)#MJi^muJ~dAIqI|n z1CWQ!^f}}l4tWk6`2;S4r8c)NODTu_!^?9F*czWGa8tFKHZa+aR_JhL(l=58pWA4H zhRv|H+fh~?DIO$RqgSIAc}`z*;ir-*^_(~7@gyLUusS0Sz5CBJSBpqR<G@^Sjjb8y zya#e5{p#JHZEo^oQo!YBf_8`%s>xP`Zn7V(bDt~n9Z(<so&aP;wg#%o+Vkoxa8=X0 z(_2P-m+DyPA#1@YBNZS#$Va(0&8>yrK`i0<?%;Sa_nd4qNr$APM!n0qr*@S{a(G+2 zs8AR9o1Z=|Rcbj)A*FuWlfLSN3$wY7Bso_1=X{^ICF$S6qwC^H898Bir)C+_H+C@y z?MWgtOny4;uviViEM3QV88V|S8UV;=_s)N&CGC|5Fw;GT#Arlg4wMEp_u;nBhP_CQ ziu})2gCwic-}5?C10hD9@~p>Y=w9xRJl3~hwgziRS|m}qj?B>uWvT?5D+0>cNoUU( zd6ip}Vk!*jqT?iL=m8*Q&*;s`X-*`LlqR=fA`R<SM|~qyReBHlCy}$RPJ+NvH2H5F zzns3H_Ia$;(k=;<6hW3YaHHgMS}n}&)Q{fe3COS8+oXTFd)iRnAv!o(F3;-Wil39* z3kME<bdqpPij8WW7wyK8Ge^y|N~iVVBEsxmMQy2o2m_dDo6J<po{{U2aoWZ!!ob24 zzQh}5|3e;Qn;n5qHv>~Qt;6WZ0P?G(7ep|49YsogcXPofZVLN2#%-SNG9j1eM<-N8 zQPp@i^Thv%g}8CO#1Vs+w^nHF>N>~jIvg0|IcUXgT3pdDMHe{glMIjRI20S$$rZh~ z2Pvu_Ql4NTjUl&5lS?`P;L(fw9*nO)tFPz<WuAI2_c$su%t!ZnK9L_e6m}t$9siqr zm*Cz3SZ!QMOO86rmH*JT)EKk47<BR~^U+(vsN<qMqDCM?+<SyeUN{2Ib!~9&KTV3> zLRstf-wTzNr6HNP>%R9Cs)%ofPRa1RMy}rQ9FCeEUR?#zgAsb0pKZl_DnH+C%-vGp z-%1~bbq>aVMelr+!5L<}R^WyS6(GBPNA##8$Z#pCRuo%xfkcfBSK(?@-Q9jVj3u_$ zLSF$(XEQe`1LrFu2z@+$hAVwVvp>x!^YR^ezxjsGrk`{gd~Sj3%gVSmiIfMrg@M$d zA4mNm0Yq;FFH`4oh+9`x<Ee!5*SZ-7{!KeLp~5_~0}nAETAeDVw;i&fDp}{d+>CS` z{cXNmu=}iubt2Tu=$dOt>!M^el%mXE^hS?DB^|&s>J33rlLMXCrF^w`7bmM7oi|o~ z+W0LkxvT@WjPiQ<x4bF}K1Q7S<s6w?*DAzH$(_Ykq*$So_IQ-Gedd*bGom1CPCqrp z^KNjd-~J<szRUkz^hIKoXLYGhK5|0zEFbkrYhUAptIAkOa9nZ)5b_U2*8ej*Bgo$! zNvk6qA$g#b{VF750HhuI7a>-A+CWGjx|(#`ANn8}JsQ!2v1)a$HHgw)Ti#N=olR(d zbe3lGmhASzukeWjHqxImKj-QUa^zQaNswU04g(t@tWM*XoXP|MV!#(UrtE9{0VLgp zSq_J>(V8mF#EDIk|N1KJL(c!Dy%Th=Z%^V~OP!Fyv!g{Pi2`!o9|Ti(99#%vubH&s z6ZZ$f=F@#$J%MT)Ys7LV|G|zvqlIFMJHi<08r8;I0wBwMElpqZXKAc{#0TiJl@wIR z`VZ-Mz&cF8g8Le|Dtro^<(P(2Gi=2C^ri{~s6&7Szc28VE0SBKSQv1#tz4Cs;+`>M zTcYxXYUlj0+?;vb*g|dPt(<ll6QY|*Jq`kX<E@(^Bs0G7&3K$sTiT#N=fNL4`*;ch z!f<<NO?S=1u%By_esuG}7ihGr(5>nrYEoL|V>q@Crd<S^XC6)WaO1?dUu!aN%LlZX zel3Xv@{R@Q=h*Q(kZ|?-Sd0*qlu*=4_Sv|<rP$a325esN+k~<%4@nJ+&$N<)02Jlj z7ue|W($b&x-K=2XkzX2Do8FU>AieSoW(0W$6@vyHuzvB|vjw#23T3}rg(f!{GETpI zg+_qJiJ7JjmWprliy^7BUz0p^8_)auF~Z<+0QVdBO>%~rop}JVNxAiPP`MLE6=huT zJ33hO%;s>~=<TnO>4Sy7eJbc;51CzL&Q>1(`u6p$_(4cO?|CKPA-Fd``KYQ;g9zRS zQB*N-vfofUELSNGN056vd%JE@Y?Ueu_JFZ3937bHm$2X$89AN|sjNj;6#PQ8U-?wV z@1Eh*Ppz`Sqy}IdH=<2+#I3ByM8ZxJ^yZkGG(A$s&N)dz__KLa9K(`T?yUl-zR7@M zXoD=<E))U!ZFMB?dg`XAkPS*RIKR8c*dnK!&^B}V9muWR`>ZF`B6?w%8+3|8hDo=J zN}!v2v42j5Gp39*zw|Mf%GSLzy07}A65Ri9{t~J3a;$j`JgQYbq6YpGwZQt`L7ti( zk})_zbxuFj0|C~3{xrBv<C}nAZOWoyptZMIGk|O7#>hKkNQ7{l!v1<zjwPVs5Ues- z#qPZ+3Y^Xh3*gRZ58Ahy=Dm9dcmWjg)IYyv(xfqqQF$JkNYwf{PW8-`Sf$WwVn8~W z+(%5TG?q<WRh4EC*}iUaqE?xEor3wiz!&CARW4Sa_4!VfA}>l&e~r@~9XAL`y(2FQ zyqaxg5^ou^K+iv`+M{|zvQ$A<#$3J2^{Gl2oPV&9SDCyOPkZd|o|S+;Ul1m_J85WG zp22*f&0{tukK5<y>^=kYkwbuhKp#o!p3n#_bX#lADOh%xHoU%rCGYYP@C$4DCo5zx ze}jj3=qccD+G9Fr7j&7dV~Wx0m1GC7A^<CG$KMh@nulFf4w|WAz6hVaIm4|ELz>A_ z3fQyml_YX);!5H$o-`C!8q<v|^ZE_DYiPCg=9tEr4E-2dx=p92eI%+i1Wv$H9+PpB zq?;eU4b-{tG>%>r_viFrs*fKRa@vDE$diV~JE6oqgTBg`k&lTP#H2^$;S0(dKDNDQ z6^7@IB{r8nPJK+{vhc>04W-sH=#qKqXYZn@;m8Ye$cdi6nrFu0{t!Em;lM<ZT^S0q zuVIq3l3(!!^aZ&)46xf(+%1AKj{kc>qC)n}B0y)(`BhY@51)4`=1#QM=;f%}^qc|t zYPt%1BvbYU;;ZpmOyRk6m&4c`bPtSL;W8tQTGvW{Z|?<Czphu4-@5)l3{PD$*XApr zgz~zBR%;lhm*3&W{9o@A)4+$8n@MHTo=khEpaV2@=QT)j_B=YO5sYY(r4xZhe<0t; zMakg%-@Qz;oa}X9l<u7YaTPubu-gQ%Q9nKezIxh4wx3|<un+7E>M0lAK+}i7M5#kx zi2Fjh^bij$6T&yn;8JBa?m?eh@|6r(9J2(q{RdkrA$#&AN0w6=H}&%TfjfQ#2GoEw zDvVx~W43r4#aACpa_MF6zY*IRCyy;OM%ZI=m<v7gHHg+Y>MY28=x|Q>HLjnS@Slj5 zW$xNAt@(dGaFx~V2=bvnJSvOoVSp7l{E=`Le8o9#21Qyi!cX#A2pG|&x5xeb0maxo z{mX_KZ^51(w{fK}#eE%e18R43j$#zktW8CPP-L4648_OJbULg^PMtaCGy3RFVAeg3 zQQpj+^z|U_fSP+PzI?`8@F^RA<{C!y;~dwO`oEXMKkNlmh%K{o(psvwj9{jYO}~pU zg*j(O8;*1!ll3dBSOwtLPllcWB2DJ8ssDgiEjA)mW1wZ?rQc;iO@TwQGfp?vYYgtA zc{==H9v#u}ii9Bt_j1gr-@8fyLFdhmAKVSN0Sy3jGqDnc=-5p*Q+eE!!g)Hn9-kh5 zCYnk=ZE`u-dH&xm4Z%}ER~cj0Cv>p8=Lm4Md?d&>aL}~9O$Tr89J;bKkA&X^8uykb z=`+vlk>(_odg$UbXV^*ASqGidYB>p30z8A)=Qc-n2O0p4Sl~<3-B_z_@gZyAigo$S zsrXIw02eKe1Z`~zez8H~qmyU)A+CDjbukF7z8}GdpgK@v)RGU>Rs-0NwT>F4!TZK@ zwn}O6PUj`0Y<s-a!lh?sx2<v;7=Gza(e@W{H0D#W*ED1IGCOPV!3a}oI3tp-<DtTM zL$O>3kf+~O*yDZ|_@w^tk?2DFr(jCnsCWIod)ogyb_T>Pkc@XPE1HQ8L9VrTpDK5= z){bxm;JS(2NB>f?3UF6dLXsY;Rfi@k)B|)&!}@uWKdGb~IbDs(DclmqvQi1RbXpIX zp9piBN=`sompmy^R}GV-#X)ZtPr$Rje*YAB>a99j{AL|HEBTc+e8gY`mF@S&lRT8V zFPeLc^*Vi4VS&(4Q2PGa>w}nD7p7~=2_KF5h)}<AeMRQ*27R%U|BVFO>4#>x0RS22 zL_QSp3O??}XlqsEVEy?zV6&BR%e7H)>wPm^&4Y|(m_IBgVAfNwvxBVp@BNu~NXT!p zB_9qsCYM$w^P;qDt$wT};NR>(vTU+1S|N__0yWrsLxMCi&jdZ@yG#g(xy~oi68`5a zzz2_bmr2ihwE~LQ`J5ut)$svxG<cB~w8^nZE|GTF&`Lj%pU=H!|2)BML?dj(0d%VN zO>%g_u?OqcshD9OTe`to_ZEJB)Lz#Vtb|gx-%i?oDDovLn-f7bJ6{QLJ)m2vnjLRA zV>65!Z((v!OiDMlr-P_F>XkJ){eWMkt5DKRc(PGI5Ln~?t8m(3bY-i@q{{KY&{;Pv z0-hNl<4<lV_b`}MzSB;&QJa2Xf)iR<PAxZ_C!M}Lh1mFQtc}0^hA+y>D}nEZ4$}Il zj3VjM0{5Zim@L!DD|7#@xge<!=AoAZH=_L2twwU~`RgN0zfgJnJ|QGePC3JFvzYgk zH1f|4%}nYEB>+eo#^d!K>~a$uBP@k+Nd^=c=)I?#KCGe5Qr7IF;@LLdkRF@LRkdSU ztmYN?NO#Cf_b;T7P`fA(cn=y-u3hV<{SIN{5e!@F+QtZM_InF`JTha}xnQ_K*-JPU z+VYBF-IDa-n4z7Y@~BrJr}OrL^12!eObg2?;WasqD6(A889h=`lp|6(o_sxT&jd#2 z8o@LUE{e;xl-h(ec++<f(OXOSr;Xl+A#D0}=GCz_yhZkA!@DKa$UfPbw%~h&x&Ict zRHmB4#8oacsL7CWCYBlTx!a3d#JjRU7~5ExpaU&Um%G#B2EXm(EHpeIVIDcLD1Bgi z=nbRnZfNL=fR-tq&~YKgpIH~LT>+oEp$qv2z_0e&7l&@)A0V?AUqOzg$`&JuWR)UY zJIrzO8YyN>`nQxd>1X81$laLVTFa?s#IR(Y52l+x{C$^MF?pPUvL@^YwbFxp7V|%c zR|-kDUW06I*Wcs;iC4319v4pke9C~HVB)|sm9Hn;Q^ek1Pk$deNuVQeNNX2y{+`sN z`6PUoxgTL+_d7}w)<K^6u;)>XR%fL%fkgnqXxV8+9!ZjCghi4)vZen)8}yqB8JzOb z(KxcIk-swWCm-wC%bnV)lx6>hj0TL81NcmPeO0foR>I)s=1wK0hPCP1ljBoBKwG>8 zdA@F{FixNSH7J3O7#ohJ7+B(Ea+Q?7t*UsbNN3SIPV3I30wd!{KyiG+5e2DrPnqY| z%c+{Z9JJBbj6h^z9C<HjH^hLL!+7L*kC!u~Bh(POJV>O+bb+(-RN8CR1ns@{E^&yA zNzI%8fLF#W&RB`Gpxe;1aB&hlJotXr>)B&CimLb;gZH8fKG9X|P<O*tR@V@Myd~dg z(d4=+1fPZD<go~4w<jQ`om&eP&z3xQjmf4>*))e@FSFa5%wlMbyS&AMQJR?X!wfPe zJp8wNJeUN;eQ^R$uTGD3#4y9cne``m461(OLsv#yo2O^oAb}(EsZ!sCL#Qq}m~yZs zTL`*ez%D6HLu-(<G`n|#3{CG2kq4YjyoInvy;^&v7*2&z>3<l_c_j0zxiE%C;sA(F z{T)n(<=1P3HH|^*<2LvY;{xpC1MtmZKv7NKm{+7PPWo+0w?$QmBBlCv(+8Y2KeJKK zPei@UN#-!7S0#?HIp})gUF@ei{O=s#_j#3jUwa)>)${rKpb}K1Q0H(Qv}(NMmf$@f zc2QcXgC4}E_S?%T@R5T-xZXhaC@LiWMtMuVhIyYK1{R)u;Wd+^3@!WP>ZoN%V}`k$ zzA(%m_+fZX+=i}KJ6Rv9!e>Lrrq*@`)UjiCC77)da{A8`Z1z`5U5u769d3-P?eTpk zmoFkFF+cmb4B$<eQG|3EXEEJ=<BQVxNhg{I&u~WHXKDys%rRd%{sgT703+v^)iTZ? z&&!skLu?xpvLfb_e<<?6ylxG-kO+)d;d{|#dEHs!Q<d3p6pY@r*(ytY>(vQM&}bgB z({{>5wI8zI5l~36-f_W#@yl_*Y$k)9&X^9Dx6Z*EKaB%82dTW`ieg}#(XRd+d%*lv zIlqD_{xGaH{9$g&rrUu9&6!S+k2C-BPMW3D;*8Lmf+qgG=vs*Ki1&e*MB`5jNA2hy z&Ct^!c@2kaP%pS_<dUG^{wZz14PBBAfyxbQAGF6Lzph~S_9S7jb4yMJog%X_Xj{g| zQ>hc4(_>!LQ*^eclK)%@Hh{ni1_!cBn8<o!@2!^rOg(CHF3&9%kepjj<kmB$9zE$T zE@;vJ!<}rHqHqMDMq?Z6v}}$?6-ZD=cY%aV?eGZN_D5|kR8YE-n)lm_*kBfU>rkHS za+O{2%tUFI0{_u`Z?*>MF+qNxSCdFJi8-pONzJ^H^N8EiwbcdAUJGd<`z_%a!%=LV z{H@Q8<d@EQKObTg?lv1^<t{$DT)_q)ISli=0UB!iJ2E21+|pkkKo`9bg-R|5paB70 zU7zQ|vSOAoK1NE;rpXk$UCGhmnM1;wxsB7<+vr@jmY?brjzncn&bA~Lmbpi+ECaj* z-C5Tkskouz$!V#ukZGbOb-hrBZF4&CODD9SWUTB};q!#5dweI4VN%?xW$bDe1!LVD z&-sq$@eL5Q!JTaktFalKj(y?@dGJp5D!L(%Ff>01!`C?jjoR;i?is!H<aQoJCH)Xr z9gwK6+|%IBQDyFZp2IL!y4Zay%M>Y@UoX+QGT7DU?&8M4h8yfmRj`d~ZoMwS*=}1W zTBX|E?+TPvT;6?-VIV(P@2{T)BRcBoSfY)(sjgTVKjz2vB1{lUKOM};wSYUN%T;+r zTl)Cb#lWf@s-xFRG17eeO%8d7bH?`A_0fPIDf_rqa>#XTYP2hD`^bCk<5wqXSCYWP z9(GZJDLc7w0>q|q9+Qir@&>SHQtX5L1cyD*bzJY?PMUA-ewv7t-Z5b<n6b<xHn^F$ z&R7_$uM$@q@ll+?rrU%qN$Hn+Jc!9MTQ;~Vk%dfMb$FR?%@Y%@UU^W6F_XcJnW~uv zfHFY#@46v}1BHun!#j^>tA<0w^nd|Y2)bF_I)5Gf#>Tg8VJrn&bPeu()<fwK^Q<l$ zi3LgYw%KvW^@+oNoBuh-Zqhejzdh{4#nVCtCk7~BO8XwCHuD6`czdV<M=1L4?mza2 zlm}o@_1GbC?SNS|5x{ZYNWm8<sc@QmaA2e!*aJtT;S|S;#8FYKxE!LRx>kylXmT~T z_N#v20A1qhL#kB2e1}Rdj+Bql@^i84pTV@QDjsa(#BW@!3PnZID$M&0<nXG5pSip4 zu1q6L<2r}A2$gZn2l?VteAdn#WBVJwvR8^J?RkKb-!r<|sa58^85<r8w_5c$5WGlB zJ^xe2_FPBQp$0cpAi;bDULHsv8(u3&@~nRvu=4fK6oBFE_qFTm!}{&H|I%XHJ>ey# zuRVF3<IhxM@X-JrT)+#i=>x>wp$Bcm8E1;ddF$HgsHEBAJ#v9p7mmOgGFFyJKrei# zookuo@Z|YCL8{sxD{^K9;q=Kbr&T1$kuwNCgnMrOb`YSErzLm+_yAZ@r&y`eEt-(> z1D+mvSCN~{KKhDnVUE7zTpa!FK4mK!m-6>nWu&faUPpWeTRY_ExcL~p5*Y-Xe&~zq zZ{DEdLOx;af<cg`L2w=R|LlR9NGhEzXfk{AV)$|x32Sa{wWXG2T(n5uym8eAdi}D8 zi-ys8@8*LKId;OtNt35coi=^O%vrPN%$+xX!NNtyE&kP#<CofzXcFfL0n71A&0|f| z?1pb|nP5&e=b7`A@RxU<Fo`}!pF$saUQL{h_ska74f-!6!;%hn)WW6abdz4M;n$Hn z&;;ns$MR+K=0yBI(QMAb+bsQY`qE?RFAMP+KBp$m!`o)gHIG&NO>@l2{K6vqo0<Ug zuxvJdoQFRzHWzTUL_jz)*Sed0O-t>x8MEipZ84TvnY?+2L$2DD)2?gY#^JW)mki^~ z9KSPa+WNh#nw4Et&HTrA_z#vmQZs*0d^O`WPbFIU+g<-VVr-tco0Tr>vdb&4$XB{- z@H1vh&4ek_=PWccy5yvnToao|IIc}#=xtQ<LYu>chul0gFJKnK90zp;IG{N`qihhP zGwrWAgqBnu%jS|+nqHY@vR<XvqAXn*a}mEgrZ<EBGB@9K1j)?g>9glx(`_e1*O5CJ zK@NPDe#2(+D^E`pj?k90Z0$3P@boL^@=jec2N0PXW?{R2g&Q$%h^i^rx21F+^#4zq zb@I{NkTaY48`wm((0SxJX&+3`{USyS{L`HFtzBj}n!-0O=hb``4n!++pCsvTMY>Jl zKw3nv0*xFE1&fQfH=AXC(-3olW_-Y!Bs-5dmd?ubc?;}VB9o)LbhU7gpr0q2b4`~0 zne!~Z1|Do8-?cRdk2QAzecb{rtV{UcIec@xHmPIH<M4DR;&UhSgQh0p_eCTLSjRN? znCo4j^EI89V3EZq(kc1{L3*eZ4@6$bJ19_Vgvc!XXt5*-Xra6CSjJ?(&0$e1O=f|K zO+21akPB9FA`7Nm2EwzD|5`Gg+T9N_?w$kv9If0uEGw^@fE3LWQ;NsD708i`u|<w@ z&*uyiEPffjKFn&KK0HU`YK=1s-I{69r_I1a&s(_oSAfJ8%cK%=EOo}*GOg)6`n{QR z>t=8_yr_%R#6_}Rp0ptviemagnf+NQ+p4^$*A73YO&Qv%@_f%*7MK$hYYWy;N^dOf zDPJCPYMncY-#JgsoK2d6>`1t#`aWd0G#<vVe(&(XL`$u=+xx7!%_1F#FSI7k&hni| zT1w?Jj4}WbSmu8$drp6_CCZ}0Vt9ClmIYE?2vvy<pI~18C@uXwJ~DWyaxH!T%&B(N z&6RjLCTlssLCmqB%fP^6dCz9CK8u@zWXHEngd=8HndzWG^>`Df$-d|D)&;D9qx>x8 znq$diIOcp`-mUq(oHG~b19Ys3qk^BN(MKlphuUgz8fH$OHn;fy>bjcHHm)GN@2$MD zU6&pjN}*5+Js3ls7E;imC7?gsime}OEz3y=Vr{J}#cRo3Nj5Sx1Rq)oC5K+xQs||Z zKq)1L9MVgVxs+T=AW%#XG0GvgQbK7dbmp74iV{1Qwb-?^^XAQb^UeDkK#cuq7H{9D z|19c}w((}-9=-jdslrn?!P~kQQX8$$QYdJTMQ0&~2YJ8iTl7ZHECsd>utf_q{cKpQ z*R-0|b2&b_5GwE3L)9NN@D({H*7}+U0CrRtKbbMO(H>8+?D<Tgyi$>vBrz%_7|FNt zaQN~HTB{DrxS7;xnUL2Xhr_?Dvkbu-Yh#hU|I7IvA56uk8DE6p#;3=wk~tPGp%>Ss zCszU`HHEB1Z(=%?EmcSveVr_V9sx>=oO0|!IbB0VtRlX=c!935%NdBq$fav8DW9L& zx7HYQbT*I58-f=4c7Qq*n<Dz{kffLewA*ib=+iY`5URd9n<n~^FP7Yjx8XN?<osqf zPK17dh_nd2TZDnsc!`l+oF{dy%KEM%45(O_=vDkkEQ_@myPmZpG7yxb#;Ci1g~s%` z2E2I`{+SvehRy`IZs?_`tvQKfi>}@XCz6@@9C4;nU6yq~efBLr3`w;((DJwSpl)&x z>p;d;^k5IL%$DX%!9R7o53ti6*wTtb_k9Rq-x36O&NU5Ruzw6dL+I0b3l1)MS@5h8 zU-!`s?657-%1!@eL-ttgLP^DjuF)H>LJI(ElzK83|W7y;37eas8mVULHHj@Q}Y zn*p+2J>Y8W4IU~T^i@B8T5N#OdmWsAeeyY>q**sV=-Zwz^)~gOg|?9fj+oo(<FKQ) zjM4S&R@gT&-Z>0Zbh?=yY@PakF%*x7V+e(Cu%vSoRq^RTZ+g(+&2vg<lyfM@g-MA5 zJ?PpkK0W*|o`Z5;^Z28v+j)Xj3k~CYv1NnypAc^AI(D(XQa2-O&g<A+%PXv%CtP|* z@6xA-d(w;}K1W*fv0Gg+7X18oZN13?#j~5}g;4B<ZgjDa<qe$Pe4ke}@C?(yZ*?%Q zr;lX~p>xC&Zj_QZzu~a&e_8hXzR3;Z?{cGiq)qP0_|Lpot@Vsc5Eqk;8P4x)9o!ex z4(whd6Yy|Y{2!b%#&0x2D2oh(YnSNlp4r5$JCRq@!=Eq(dMLtKiH13PD*i=?xb6eA zI%K^mv(!|d+1DF&kg-)V>9yyqHt&;XqOg(~W4C4l6`Bc*1|pqQZB-kMiRomzc!@f> zM+kitlM(U`tLABU1t6EiwW!nV`B~wkflL0y5A1w~Uwkz~Zqm;4f0X#b;mkQqcU3ha zFNv<M?xE=}HjlGE2|4SHu&gDp+1PvACSY)JMJYhdh}kw|Dsp=3pfxd#7(n0oJG-!0 zbXknb&LsIZeX7!}r9#<NVsz9ALED^%YcKa@kr}xG4@I*jI9xK1%*)2dHcRXL*@8sQ zl&>j)#%3AP3|p0<ApH6ksO2WM>{&J6Z2EBShgi}boZ{cLKprW9)xK`@jJtcd35R<K z7P08Y;IP2<8cq^j7Hqedfo_l55qD6p&ZGN^kVX98dgM<eK^HFM(KW8$2z42>A)h8o zK~TT8WJjogz)%~~JK~K9Zz~kaW!lG<Fx}12yLJuS_R%lE^cgt&o%T5O$$!ZdU$b)s zyczKxJRr{zO#K3uA0#g+?zS?v*o8<mn4)-7$sCJpe@=OLrOnmRwKZNXv!vIj=kt_# zvkjKek_A<PvX+PtaV|{!QMeTIr?lMYU_ym0KYjy2?QT-?=EvO5gwWVku<{1<SXa^c zu&&|!p3N9VN!ONHGdw#?o+P>QVbak(Dc7sNkyYSQXS)7O(#6_WrCqw)M-C;?X=_Li z)VE!=jIy2(??E@7Wt!uza$~EWlxsa)Dl|cs?ED%6@IFF<7mNDz=D9*-Je*Rt;OI@z zGCy*NcS5}u46`cc-#+O!lx$0{m=%^0($qR8Nsy4hDNQ(@o@1qw%ej@7AqqqF?!eBj z6hUSuA2A)#7jvK^DVQSDz<J>m*Gj6XORfsQBXmdRv+ecG7+FL`twj{q7BY4PgCLh( zSW$H>S>>RG*F8?F+%RPcaum&jF4Fy~k`s>=s*{d(qomoBGuztZf0%qbgv9E5Hcd{` z(k4CIR#{!xmeljwntbb@4V{M*)Y3p)4?F}Q@oVHNl6ae8=)@e0_e0P^3O1{gt|8-1 zfTTp;m#Q6%NuU_E1`Pv6I<u|LQnv?SP#zKu0vJ7=vXj}I4tdmOUrb@St$A$s9)=1M za>$k!SzC?Ajit7nvlmXhfGi}cd|?bq@U*6tNG-4=t5vms65q&rP6NG$F5{O}0al)j zRsl0xu1ZW88ws;Mu|rJ0CLm{`FMG$H<{Jqqzrh6rN5iwWrrswcpZZ{r)SL#P0TL#* zzy}t*5Ph8mrN@!=mOAfqLM{n@Xf_+D54+qY<zbib|8YRxp>Oio<<yOU3##>A)CK_P zP!``j8x<8sg~BQ`=$pqrJm19#7{+_fbH0eNk(nf{f^&;>>15%>*vQXDIhka8Q^^x0 P7f03H6itFDB!d3|Y<$`5
--- a/src/buffer.c +++ b/src/buffer.c @@ -854,11 +854,11 @@ do_bufdel(command, arg, addr_count, star if (deleted == 0) { if (command == DOBUF_UNLOAD) - sprintf((char *)IObuff, _("E515: No buffers were unloaded")); + STRCPY(IObuff, _("E515: No buffers were unloaded")); else if (command == DOBUF_DEL) - sprintf((char *)IObuff, _("E516: No buffers were deleted")); + STRCPY(IObuff, _("E516: No buffers were deleted")); else - sprintf((char *)IObuff, _("E517: No buffers were wiped out")); + STRCPY(IObuff, _("E517: No buffers were wiped out")); errormsg = IObuff; } else if (deleted >= p_report) @@ -2450,7 +2450,7 @@ buflist_list(eap) else home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE); - sprintf((char *)IObuff, "%3d%c%c%c%c%c \"", + vim_snprintf((char *)IObuff, IOSIZE - 20, "%3d%c%c%c%c%c \"%s\"", buf->b_fnum, buf->b_p_bl ? ' ' : 'u', buf == curbuf ? '%' : @@ -2459,18 +2459,11 @@ buflist_list(eap) (buf->b_nwindows == 0 ? 'h' : 'a'), !buf->b_p_ma ? '-' : (buf->b_p_ro ? '=' : ' '), (buf->b_flags & BF_READERR) ? 'x' - : (bufIsChanged(buf) ? '+' : ' ') - ); - - len = (int)STRLEN(IObuff); - STRNCPY(IObuff + len, NameBuff, IOSIZE - 20 - len); - IObuff[IOSIZE - 20 - len] = NUL; /* make sure it's terminated */ - - len = (int)STRLEN(IObuff); - IObuff[len++] = '"'; + : (bufIsChanged(buf) ? '+' : ' '), + NameBuff); /* put "line 999" in column 40 or after the file name */ - IObuff[len] = NUL; + len = STRLEN(IObuff); i = 40 - vim_strsize(IObuff); do {
--- a/src/getchar.c +++ b/src/getchar.c @@ -4342,7 +4342,7 @@ put_escstr(fd, strstart, what) if (p != NULL) { while (*p != NUL) - if (putc(*p++, fd) < 0) + if (fputc(*p++, fd) < 0) return FAIL; --str; continue;
--- a/src/mark.c +++ b/src/mark.c @@ -1445,6 +1445,7 @@ removable(name) char_u *p; char_u part[51]; int retval = FALSE; + int n; name = home_replace_save(NULL, name); if (name != NULL) @@ -1452,11 +1453,14 @@ removable(name) for (p = p_viminfo; *p; ) { copy_option_part(&p, part, 51, ", "); - if (part[0] == 'r' - && MB_STRNICMP(part + 1, name, STRLEN(part + 1)) == 0) + if (part[0] == 'r') { - retval = TRUE; - break; + n = STRLEN(part + 1); + if (MB_STRNICMP(part + 1, name, n) == 0) + { + retval = TRUE; + break; + } } } vim_free(name);
--- a/src/normal.c +++ b/src/normal.c @@ -2823,6 +2823,7 @@ do_mouse(oap, c, dir, count, fixindent) if ((mod_mask & MOD_MASK_MULTI_CLICK) == MOD_MASK_2CLICK) { pos_T *pos = NULL; + int gc; if (is_click) { @@ -2830,7 +2831,7 @@ do_mouse(oap, c, dir, count, fixindent) * not a word character, try finding a match and select a (), * {}, [], #if/#endif, etc. block. */ end_visual = curwin->w_cursor; - while (vim_iswhite(gchar_pos(&end_visual))) + while (gc = gchar_pos(&end_visual), vim_iswhite(gc)) inc(&end_visual); if (oap != NULL) oap->motion_type = MCHAR;
--- a/src/proto/charset.pro +++ b/src/proto/charset.pro @@ -40,6 +40,7 @@ void getvvcol __ARGS((win_T *wp, pos_T * void getvcols __ARGS((win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right)); char_u *skipwhite __ARGS((char_u *p)); char_u *skipdigits __ARGS((char_u *p)); +char_u *skiphex __ARGS((char_u *p)); char_u *skiptodigit __ARGS((char_u *p)); char_u *skiptohex __ARGS((char_u *p)); int vim_isdigit __ARGS((int c));
--- a/src/spell.c +++ b/src/spell.c @@ -10,25 +10,91 @@ /* * spell.c: code for spell checking * - * The basic spell checking mechanism is: - * 1. Isolate a word, up to the next non-word character. - * 2. Find the word in the hashtable of basic words. - * 3. If not found, look in the hashtable with "prewords". These are prefixes - * with a non-word character following a word character, e.g., "de-". - * 4. If still not found, for each matching a prefix try if the word matches - * without the prefix (and with the "chop" string added back). - * 5. If still still not found, for each matching suffix try if the word - * matches without the suffix (and with the "chop" string added back). + * The spell checking mechanism uses a tree (aka trie). Each node in the tree + * has a list of bytes that can appear (siblings). For each byte there is a + * pointer to the node with the byte that follows in the word (child). + * A NUL byte is used where the word may end. + * + * There are two trees: one with case-folded words and one with words in + * original case. The second one is only used for keep-case words and is + * usually small. + * + * Thanks to Olaf Seibert for providing an example implementation of this tree + * and the compression mechanism. * * Matching involves checking the caps type: Onecap ALLCAP KeepCap. - * After finding a matching word check for a leadstring (non-word characters - * before the word) and addstring (more text following, starting with a - * non-word character). * * Why doesn't Vim use aspell/ispell/myspell/etc.? * See ":help develop-spell". */ +/* + * Vim spell file format: <HEADER> <SUGGEST> <LWORDTREE> <KWORDTREE> + * + * <HEADER>: <fileID> <regioncnt> <regionname> ... + * <charflagslen> <charflags> <fcharslen> <fchars> + * + * <fileID> 10 bytes "VIMspell05" + * <regioncnt> 1 byte number of regions following (8 supported) + * <regionname> 2 bytes Region name: ca, au, etc. + * First <regionname> is region 1. + * + * <charflagslen> 1 byte Number of bytes in <charflags> (should be 128). + * <charflags> N bytes List of flags (first one is for character 128): + * 0x01 word character + * 0x01 upper-case character + * <fcharslen> 2 bytes Number of bytes in <fchars>. + * <fchars> N bytes Folded characters, first one is for character 128. + * + * + * <SUGGEST> : <suggestlen> <more> ... + * + * <suggestlen> 4 bytes Length of <SUGGEST> in bytes, excluding + * <suggestlen>. MSB first. + * <more> To be defined. + * + * + * <LWORDTREE>: <wordtree> + * + * <wordtree>: <nodecount> <nodedata> ... + * + * <nodecount> 4 bytes Number of nodes following. MSB first. + * + * <nodedata>: <siblingcount> <sibling> ... + * + * <siblingcount> 1 byte Number of siblings in this node. The siblings + * follow in sorted order. + * + * <sibling>: <byte> [<nodeidx> <xbyte> | <flags> [<region>]] + * + * <byte> 1 byte Byte value of the sibling. Special cases: + * BY_NOFLAGS: End of word without flags and for all + * regions. + * BY_FLAGS: End of word, <flags> follow. + * BY_INDEX: Child of sibling is shared, <nodeidx> + * and <xbyte> follow. + * + * <nodeidx> 3 bytes Index of child for this sibling, MSB first. + * + * <xbyte> 1 byte byte value of the sibling. + * + * <flags> 1 byte bitmask of: + * WF_ALLCAP word must have only capitals + * WF_ONECAP first char of word must be capital + * WF_RARE rare word + * WF_REGION <region> follows + * + * <region> 1 byte Bitmask for regions in which word is valid. When + * omitted it's valid in all regions. + * Lowest bit is for region 1. + * + * <KWORDTREE>: <wordtree> + * + * + * All text characters are in 'encoding', but stored as single bytes. + * The region name is ASCII. + */ + #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) # include <io.h> /* for lseek(), must be before vim.h */ #endif @@ -41,21 +107,20 @@ # include <fcntl.h> #endif -#define MAXWLEN 100 /* assume max. word len is this many bytes */ +#define MAXWLEN 250 /* assume max. word len is this many bytes */ -/* - * Structure that is used to store the structures and strings from the - * language file. This avoids the need to allocate space for each individual - * word. It's allocated in big chunks for speed. It's freed all at once when - * 'encoding' changes. - */ -#define SBLOCKSIZE 4096 /* default size of sb_data */ -typedef struct sblock_S sblock_T; -struct sblock_S -{ - sblock_T *sb_next; /* next block in list */ - char_u sb_data[1]; /* data, actually longer */ -}; +/* Flags used for a word. */ +#define WF_REGION 0x01 /* region byte follows */ +#define WF_ONECAP 0x02 /* word with one capital (or all capitals) */ +#define WF_ALLCAP 0x04 /* word must be all capitals */ +#define WF_RARE 0x08 /* rare word */ + +#define WF_KEEPCAP 0x100 /* keep-case word */ + +#define BY_NOFLAGS 0 /* end of word without flags or region */ +#define BY_FLAGS 1 /* end of word, flag byte follows */ +#define BY_INDEX 2 /* child is shared, index follows */ +#define BY_SPECIAL BY_INDEX /* hightest special byte value */ /* Info from "REP" entries in ".aff" file used in af_rep. * TODO: This is not used yet. Either use it or remove it. */ @@ -66,58 +131,33 @@ typedef struct repentry_S } repentry_T; /* - * Structure to store affix info. - */ -typedef struct affitem_S affitem_T; -struct affitem_S -{ - affitem_T *ai_next; /* next affix with same ai_add[] or NULL */ - short_u ai_nr; /* affix number */ - char_u ai_flags; /* AFF_ flags */ - char_u ai_choplen; /* length of chop string in bytes */ - char_u ai_addlen; /* length of ai_add in bytes */ - char_u ai_leadlen; /* for AFF_PREWORD: length of lead string */ - char_u ai_taillen; /* for AFF_PREWORD: length of tail string */ - char_u ai_add[1]; /* Text added to basic word. This stores: - * 0: word for AFF_PREWORD or whole addition - * ai_addlen + 1: chop string - * + ai_choplen + 1: lead string for AFF_PREWORD - * + ai_leadlen + 1: trail string f. AFF_PREWORD - */ -}; - -/* Get affitem_T pointer from hashitem that uses ai_add */ -static affitem_T dumai; -#define HI2AI(hi) ((affitem_T *)((hi)->hi_key - (dumai.ai_add - (char_u *)&dumai))) - -/* ai_flags: Affix item flags */ -#define AFF_COMBINE 0x01 /* prefix combines with suffix */ -#define AFF_PREWORD 0x02 /* prefix includes word */ - -/* * Structure used to store words and other info for one language, loaded from * a .spl file. - * The main access is through hashtable "sl_word", using the case-folded - * word as the key. This finds a linked list of fword_T. + * The main access is through the tree in "sl_fbyts/sl_fidxs", storing the + * case-folded words. "sl_kbyts/sl_kidxs" is for keep-case words. + * + * The "byts" array stores the possible bytes in each tree node, preceded by + * the number of possible bytes, sorted on byte value: + * <len> <byte1> <byte2> ... + * The "idxs" array stores the index of the child node corresponding to the + * byte in "byts". + * Exception: when the byte is zero, the word may end here and "idxs" holds + * the flags and region for the word. There may be several zeros in sequence + * for alternative flag/region combinations. */ typedef struct slang_S slang_T; struct slang_S { slang_T *sl_next; /* next language */ char_u *sl_name; /* language name "en", "en.rare", "nl", etc. */ - hashtab_T sl_words; /* main word table, fword_T */ - int sl_prefcnt; /* number of prefix NRs */ - garray_T sl_preftab; /* list of hashtables to lookup prefixes */ - affitem_T *sl_prefzero; /* list of prefixes with zero add length */ - hashtab_T sl_prewords; /* prefixes that include a word */ - int sl_suffcnt; /* number of suffix NRs */ - garray_T sl_sufftab; /* list of hashtables to lookup suffixes */ - affitem_T *sl_suffzero; /* list of suffixes with zero add length */ + char_u *sl_fbyts; /* case-folded word bytes */ + int *sl_fidxs; /* case-folded word indexes */ + char_u *sl_kbyts; /* keep-case word bytes */ + int *sl_kidxs; /* keep-case word indexes */ char_u *sl_try; /* "TRY" from .aff file TODO: not used */ garray_T sl_rep; /* list of repentry_T entries from REP lines * TODO not used */ char_u sl_regions[17]; /* table with up to 8 region names plus NUL */ - sblock_T *sl_block; /* list with allocated memory blocks */ int sl_error; /* error while loading */ }; @@ -125,57 +165,6 @@ struct slang_S * languages. */ static slang_T *first_lang = NULL; -/* - * Structure to store an addition to a basic word. - * There are many of these, keep it small! - */ -typedef struct addword_S addword_T; -struct addword_S -{ - addword_T *aw_next; /* next addition */ - char_u aw_flags; /* ADD_ flags */ - char_u aw_region; /* region for word with this addition */ - char_u aw_leadlen; /* byte length of lead in aw_word */ - char_u aw_wordlen; /* byte length of first word in aw_word */ - char_u aw_saveb; /* saved byte where aw_word[] is truncated at - end of hashtable key; NUL when not using - hashtable */ - char_u aw_word[1]; /* text, actually longer: case-folded addition - plus, with ADD_KEEPCAP: keep-case addition */ -}; - -/* Get addword_T pointer from hashitem that uses aw_word */ -static addword_T dumaw; -#define HI2ADDWORD(hi) ((addword_T *)((hi)->hi_key - (dumaw.aw_word - (char_u *)&dumaw))) - -/* - * Structure to store a basic word. - * There are many of these, keep it small! - * The list of prefix and suffix NRs is stored after "fw_word" to avoid the - * need for two extra pointers. - */ -typedef struct fword_S fword_T; -struct fword_S -{ - fword_T *fw_next; /* same basic word with different caps and/or - * affixes */ - addword_T *fw_adds; /* first addword_T entry */ - short_u fw_flags; /* BWF_ flags */ - char_u fw_region; /* region bits */ - char_u fw_prefixcnt; /* number of prefix NRs */ - char_u fw_suffixcnt; /* number of suffix NRs */ - char_u fw_word[1]; /* actually longer: - * 0: case folded word or keep-case word when - * (flags & BWF_KEEPCAP) - * + word length + 1: list of prefix NRs - * + fw_prefixcnt [* 2]: list of suffix NRs - */ -}; - -/* Get fword_T pointer from hashitem that uses fw_word */ -static fword_T dumfw; -#define HI2FWORD(hi) ((fword_T *)((hi)->hi_key - (dumfw.fw_word - (char_u *)&dumfw))) - #define REGION_ALL 0xff @@ -195,39 +184,7 @@ typedef struct langp_S #define SP_RARE 2 #define SP_LOCAL 3 -/* flags used for basic words in the spell file */ -#define BWF_VALID 0x01 /* word is valid without additions */ -#define BWF_REGION 0x02 /* region byte follows */ -#define BWF_ONECAP 0x04 /* first letter must be capital */ -#define BWF_SUFFIX 0x08 /* has suffix NR list */ -#define BWF_SECOND 0x10 /* second flags byte follows */ - -#define BWF_ADDS 0x0100 /* there are additions */ -#define BWF_PREFIX 0x0200 /* has prefix NR list */ -#define BWF_ALLCAP 0x0400 /* all letters must be capital (not used - for single-letter words) */ -#define BWF_KEEPCAP 0x0800 /* Keep case as-is */ -#define BWF_ADDS_M 0x1000 /* there are more than 255 additions */ - -#define BWF_ADDHASH 0x8000 /* Internal: use hashtab for additions */ - -#define NOWC_KEY (char_u *)"x" /* hashtab key used for additions without - any word character */ - -/* flags used for addition in the spell file */ -#define ADD_REGION 0x02 /* region byte follows */ -#define ADD_ONECAP 0x04 /* first letter must be capital */ -#define ADD_LEADLEN 0x10 /* there is a leadlen byte */ -#define ADD_COPYLEN 0x20 /* there is a copylen byte */ -#define ADD_ALLCAP 0x40 /* all letters must be capital (not used - for single-letter words) */ -#define ADD_KEEPCAP 0x80 /* fixed case */ - -/* Translate ADD_ flags to BWF_ flags. - * (Needed to keep ADD_ flags in one byte.) */ -#define ADD2BWF(x) (((x) & 0x0f) | (((x) & 0xf0) << 4)) - -#define VIMSPELLMAGIC "VIMspell04" /* string at start of Vim spell file */ +#define VIMSPELLMAGIC "VIMspell05" /* string at start of Vim spell file */ #define VIMSPELLMAGICL 10 /* @@ -239,49 +196,33 @@ typedef struct matchinf_S slang_T *mi_slang; /* info for the language */ /* pointers to original text to be checked */ - char_u *mi_line; /* start of line containing word */ char_u *mi_word; /* start of word being checked */ - char_u *mi_end; /* first non-word char after mi_word */ - char_u *mi_wend; /* end of matching word (is mi_end - * or further) */ + char_u *mi_end; /* end of matching word */ char_u *mi_fend; /* next char to be added to mi_fword */ + char_u *mi_cend; /* char after what was used for + mi_capflags */ /* case-folded text */ char_u mi_fword[MAXWLEN + 1]; /* mi_word case-folded */ - int mi_fendlen; /* byte length of first word in - mi_fword */ - int mi_faddlen; /* byte length of text in mi_fword - after first word */ - char_u *mi_cword; /* word to check, points in mi_fword */ - char_u *mi_awend; /* after next word, to check for - addition (NULL when not done yet) */ - int mi_did_awend; /* did compute mi_awend */ + int mi_fwordlen; /* nr of valid bytes in mi_fword */ /* others */ int mi_result; /* result so far: SP_BAD, SP_OK, etc. */ - int mi_capflags; /* BWF_ONECAP BWF_ALLCAP BWF_KEEPCAP */ + int mi_capflags; /* WF_ONECAP WF_ALLCAP WF_KEEPCAP */ } matchinf_T; -static int word_match __ARGS((matchinf_T *mip)); -static int check_adds __ARGS((matchinf_T *mip, fword_T *fw, int req_pref, int req_suf)); -static void fill_awend __ARGS((matchinf_T *mip)); -static void fold_addchars __ARGS((matchinf_T *mip, int addlen)); -static int supports_affix __ARGS((int cnt, char_u *afflist, int afflistlen, int nr)); -static int prefix_match __ARGS((matchinf_T *mip)); -static int noprefix_match __ARGS((matchinf_T *mip, char_u *pword, char_u *cstart, affitem_T *ai)); -static int suffix_match __ARGS((matchinf_T *mip)); -static int match_caps __ARGS((int flags, char_u *caseword, matchinf_T *mip, char_u *cword, char_u *end)); static slang_T *slang_alloc __ARGS((char_u *lang)); static void slang_free __ARGS((slang_T *lp)); +static void find_word __ARGS((matchinf_T *mip, int keepcap)); static slang_T *spell_load_lang __ARGS((char_u *lang)); static void spell_load_file __ARGS((char_u *fname, void *cookie)); -static void *getroom __ARGS((slang_T *lp, int *bl_used, int len)); +static int read_tree __ARGS((FILE *fd, char_u *byts, int *idxs, int maxidx, int startidx)); static int find_region __ARGS((char_u *rp, char_u *region)); static int captype __ARGS((char_u *word, char_u *end)); /* * Main spell-checking function. - * "ptr" points to the start of a word. + * "ptr" points to a character that could be the start of a word. * "*attrp" is set to the attributes for a badly spelled word. For a non-word * or when it's OK it remains unchanged. * This must only be called when 'spelllang' is not empty. @@ -289,885 +230,328 @@ static int captype __ARGS((char_u *word, * caller can skip over the word. */ int -spell_check(wp, line, ptr, attrp) +spell_check(wp, ptr, attrp) win_T *wp; /* current window */ - char_u *line; /* start of line where "ptr" points into */ char_u *ptr; int *attrp; { matchinf_T mi; /* Most things are put in "mi" so that it can be passed to functions quickly. */ - /* Find the end of the word. We already know that *ptr is a word char. */ + /* Find the end of the word. */ mi.mi_word = ptr; mi.mi_end = ptr; - do - { - mb_ptr_adv(mi.mi_end); - } while (*mi.mi_end != NUL && spell_iswordc(mi.mi_end)); - - /* A word starting with a number is always OK. */ - if (*ptr >= '0' && *ptr <= '9') - return (int)(mi.mi_end - ptr); - - /* Make case-folded copy of the word. */ - (void)spell_casefold(ptr, mi.mi_end - ptr, mi.mi_fword, MAXWLEN + 1); - mi.mi_cword = mi.mi_fword; - mi.mi_fendlen = STRLEN(mi.mi_fword); - mi.mi_faddlen = 0; - mi.mi_fend = mi.mi_end; - - /* Check the caps type of the word. */ - mi.mi_capflags = captype(ptr, mi.mi_end); - - /* The word is bad unless we recognize it. */ - mi.mi_result = SP_BAD; - mi.mi_wend = mi.mi_end; - - mi.mi_awend = NULL; - mi.mi_did_awend = FALSE; - mi.mi_line = line; - /* - * Loop over the languages specified in 'spelllang'. - * We check them all, because a matching word may have additions that are - * longer than an already found matching word. - */ - for (mi.mi_lp = LANGP_ENTRY(wp->w_buffer->b_langp, 0); - mi.mi_lp->lp_slang != NULL; ++mi.mi_lp) + /* A word starting with a number is always OK. Also skip hexadecimal + * numbers 0xFF99 and 0X99FF. */ + if (*ptr >= '0' && *ptr <= '9') + { + if (*ptr == '0' && (ptr[1] == 'x' || ptr[2] == 'X')) + mi.mi_end = skiphex(ptr); + else + mi.mi_end = skipdigits(ptr); + } + else { - /* - * Check for a matching word. - * If not found or wrong region try removing prefixes (and then - * suffixes). - * If still not found or wrong region try removing suffixes. - */ - mi.mi_slang = mi.mi_lp->lp_slang; - if (!word_match(&mi) || mi.mi_result != SP_OK) - if (!prefix_match(&mi) || mi.mi_result != SP_OK) - suffix_match(&mi); - } + mi.mi_fend = ptr; + if (spell_iswordc(mi.mi_fend)) + { + /* Make case-folded copy of the characters until the next non-word + * character. */ + do + { + mb_ptr_adv(mi.mi_fend); + } while (*mi.mi_fend != NUL && spell_iswordc(mi.mi_fend)); - if (mi.mi_result != SP_OK) - { - if (mi.mi_result == SP_BAD) - *attrp = highlight_attr[HLF_SPB]; - else if (mi.mi_result == SP_RARE) - *attrp = highlight_attr[HLF_SPR]; - else - *attrp = highlight_attr[HLF_SPL]; - } + (void)spell_casefold(ptr, (int)(mi.mi_fend - ptr), mi.mi_fword, + MAXWLEN + 1); + mi.mi_fwordlen = STRLEN(mi.mi_fword); - return (int)(mi.mi_wend - ptr); -} + /* Check the caps type of the word. */ + mi.mi_capflags = captype(ptr, mi.mi_fend); -/* - * Check if the word "mip->mi_word" matches. - * "mip->mi_fword" is the same word case-folded; - * - * This checks the word as a whole and for prefixes that include a word. - * - * Note that when called mi_fword only contains the word up to mip->mi_end, - * but when checking additions it gets longer. - */ - static int -word_match(mip) - matchinf_T *mip; -{ - hash_T fhash = hash_hash(mip->mi_fword); - hashitem_T *hi; - fword_T *fw; - int valid = FALSE; - char_u *p; - char_u pword[MAXWLEN + 1]; - int charlen; - int capflags_save; - affitem_T *ai; - char_u *cstart; - int addlen; - int n; - char_u *save_end; - int cc; + /* We always use the characters up to the next non-word character, + * also for bad words. */ + mi.mi_end = mi.mi_fend; + } + else + { + /* No word characters. Don't case-fold anything, we may quickly + * find out this is not a word (but it could be!). */ + mi.mi_fwordlen = 0; + mi.mi_capflags = 0; + } - hi = hash_lookup(&mip->mi_slang->sl_words, mip->mi_fword, fhash); - if (!HASHITEM_EMPTY(hi)) - { - /* - * Find a basic word for which the case of "mi_word" is correct. - * If it is, check additions and use the longest one. - */ - for (fw = HI2FWORD(hi); fw != NULL; fw = fw->fw_next) - if (match_caps(fw->fw_flags, fw->fw_word, mip, - mip->mi_word, mip->mi_end)) - valid |= check_adds(mip, fw, -1, -1); - } + mi.mi_cend = mi.mi_fend; + + /* The word is bad unless we recognize it. */ + mi.mi_result = SP_BAD; - /* - * Try finding a matching preword for "mip->mi_word". These are - * prefixes that have a non-word character after a word character: - * "d'", "de-", "'s-", "l'de-". But not "'s". - * Also need to do this when a matching word was already found, because we - * might find a longer match this way (French: "qu" and "qu'a-t-elle"). - * The check above may have added characters to mi_fword, thus we need to - * truncate it after the basic word for the hash lookup. - */ - cc = mip->mi_fword[mip->mi_fendlen]; - mip->mi_fword[mip->mi_fendlen] = NUL; - hi = hash_lookup(&mip->mi_slang->sl_prewords, mip->mi_fword, fhash); - mip->mi_fword[mip->mi_fendlen] = cc; - if (!HASHITEM_EMPTY(hi)) - { - capflags_save = mip->mi_capflags; - - /* Go through the list of matching prewords. */ - for (ai = HI2AI(hi); ai != NULL; ai = ai->ai_next) + /* + * Loop over the languages specified in 'spelllang'. + * We check them all, because a matching word may be longer than an + * already found matching word. + */ + for (mi.mi_lp = LANGP_ENTRY(wp->w_buffer->b_langp, 0); + mi.mi_lp->lp_slang != NULL; ++mi.mi_lp) { - /* Check that the lead string matches before the word. */ - p = ai->ai_add + ai->ai_addlen + ai->ai_choplen + 2; - if (ai->ai_leadlen > 0) - { - if (mip->mi_word - mip->mi_line < ai->ai_leadlen - || STRNCMP(mip->mi_word - ai->ai_leadlen, p, - ai->ai_leadlen) != 0) - continue; - p += ai->ai_leadlen + 1; /* advance "p" to tail */ - } - else - ++p; /* advance "p" to tail */ + /* Check for a matching word in case-folded words. */ + find_word(&mi, FALSE); + + /* Try keep-case words. */ + find_word(&mi, TRUE); + } - /* Check that the tail string matches after the word. Need - * to fold case first. */ - if (ai->ai_taillen > 0) + if (mi.mi_result != SP_OK) + { + /* When we are at a non-word character there is no error, just + * skip over the character (try looking for a word after it). */ + if (!spell_iswordc(ptr)) { - if (ai->ai_taillen >= mip->mi_faddlen) - { - fold_addchars(mip, ai->ai_taillen); - if (ai->ai_taillen > mip->mi_faddlen) - continue; /* not enough chars, can't match */ - } - if (STRNCMP(mip->mi_fword + mip->mi_fendlen, - p, ai->ai_taillen) != 0) - continue; +#ifdef FEAT_MBYTE + if (has_mbyte) + return mb_ptr2len_check(ptr); +#endif + return 1; } - /* - * This preword matches. Remove the preword and check that - * the resulting word exits. - */ - - /* Find the place in the original word where the tail ends, - * needed for case checks. */ -#ifdef FEAT_MBYTE - charlen = mb_charlen(p); -#else - charlen = ai->ai_taillen; -#endif - cstart = mip->mi_end; - for (n = 0; n < charlen; ++n) - mb_ptr_adv(cstart); - - /* The new word starts with the chop. Then add up to the next - * non-word char. */ - mch_memmove(pword, ai->ai_add + ai->ai_addlen + 1, - ai->ai_choplen); - p = mip->mi_fword + mip->mi_fendlen + ai->ai_taillen; - addlen = ai->ai_taillen; - while (spell_iswordc(p)) - { - ++charlen; -#ifdef FEAT_MBYTE - addlen += (*mb_ptr2len_check)(p); -#else - ++addlen; -#endif - mb_ptr_adv(p); - if (addlen >= mip->mi_faddlen) - { - /* Get more folded characters in mip->mi_fword. */ - fold_addchars(mip, addlen); - if (addlen >= mip->mi_faddlen) - break; /* not enough chars, can't match */ - } - } - mch_memmove(pword + ai->ai_choplen, - mip->mi_fword + mip->mi_fendlen + ai->ai_taillen, - addlen - ai->ai_taillen); - pword[ai->ai_choplen + addlen - ai->ai_taillen] = NUL; - - /* Need to set mi_end to find additions. Also set mi_fendlen - * and mi_faddlen. */ - save_end = mip->mi_end; - while (--charlen >= 0) - mb_ptr_adv(mip->mi_end); - mip->mi_fendlen += addlen; - mip->mi_faddlen -= addlen; - - /* Find the word "pword", caseword "cstart". */ - n = noprefix_match(mip, pword, cstart, ai); - mip->mi_end = save_end; - mip->mi_fendlen -= addlen; - mip->mi_faddlen += addlen; - if (n) - valid = TRUE; - - /* If we found a valid word, we still need to try other - * suffixes, because it may have an addition that's longer. */ - } - - mip->mi_capflags = capflags_save; - } - - return valid; -} - -/* - * Check a matching basic word for additions. - * Return TRUE if we have a valid match. - */ - static int -check_adds(mip, fw, req_pref, req_suf) - matchinf_T *mip; - fword_T *fw; - int req_pref; /* required prefix nr, -1 if none */ - int req_suf; /* required suffix nr, -1 if none */ -{ - int valid = FALSE; - addword_T *aw; - addword_T *naw = NULL; - char_u *p; - int addlen; - int cc; - hashitem_T *hi; - char_u *cp = NULL; - int n; - - /* Check if required prefixes and suffixes are supported. These are on - * the basic word, not on each addition. */ - if (req_pref >= 0 || req_suf >= 0) - { - /* Prefix NRs are stored just after the word in fw_word. */ - cp = fw->fw_word + STRLEN(fw->fw_word) + 1; - if (req_pref >= 0 && !supports_affix(mip->mi_slang->sl_prefcnt, - cp, fw->fw_prefixcnt, req_pref)) - return FALSE; - if (req_suf >= 0) - { - /* Suffix NRs are stored just after the Prefix NRs. */ - if (fw->fw_prefixcnt > 0) - { - if (mip->mi_slang->sl_prefcnt > 256) - cp += fw->fw_prefixcnt * 2; - else - cp += fw->fw_prefixcnt; - } - if (!supports_affix(mip->mi_slang->sl_suffcnt, - cp, fw->fw_suffixcnt, req_suf)) - return FALSE; + if (mi.mi_result == SP_BAD) + *attrp = highlight_attr[HLF_SPB]; + else if (mi.mi_result == SP_RARE) + *attrp = highlight_attr[HLF_SPR]; + else + *attrp = highlight_attr[HLF_SPL]; } } - /* A word may be valid without an addition. */ - if (fw->fw_flags & BWF_VALID) - { - valid = TRUE; - if (mip->mi_result != SP_OK) - { - if ((fw->fw_region & mip->mi_lp->lp_region) == 0) - mip->mi_result = SP_LOCAL; - else - mip->mi_result = SP_OK; - } - /* Set word end, required when matching a word after a preword. */ - if (mip->mi_wend < mip->mi_end) - mip->mi_wend = mip->mi_end; - } - - /* - * Check additions, both before and after the word. - * This may make the word longer, thus we also need to check - * when we already found a matching word. - * When the BWF_ADDHASH flag is present then fw_adds points to a hashtable - * for quick lookup. Otherwise it points to the list of all possible - * additions. - */ - if (fw->fw_flags & BWF_ADDHASH) - { - /* Locate the text up to the next end-of-word. */ - if (!mip->mi_did_awend) - fill_awend(mip); - if (mip->mi_awend == NULL) - return valid; /* there is no next word */ - - cc = *mip->mi_awend; - *mip->mi_awend = NUL; - hi = hash_find((hashtab_T *)fw->fw_adds, - mip->mi_fword + mip->mi_fendlen); - *mip->mi_awend = cc; - if (HASHITEM_EMPTY(hi)) - return valid; /* no matching addition */ - aw = HI2ADDWORD(hi); - - /* Also check additions without word characters. If they are there, - * skip the first dummy entry. */ - hi = hash_find((hashtab_T *)fw->fw_adds, NOWC_KEY); - if (!HASHITEM_EMPTY(hi)) - naw = HI2ADDWORD(hi)->aw_next; - } - else - aw = fw->fw_adds; - - for ( ; ; aw = aw->aw_next) - { - if (aw == NULL) - { - /* At end of list: may also try additions without word chars. */ - if (naw == NULL) - break; - aw = naw; - naw = NULL; - } - - if (aw->aw_leadlen > 0) - { - /* There is a leader, verify that it matches. */ - if (aw->aw_leadlen > mip->mi_word - mip->mi_line - || STRNCMP(mip->mi_word - aw->aw_leadlen, - aw->aw_word, aw->aw_leadlen) != 0) - continue; - if (mip->mi_word - aw->aw_leadlen > mip->mi_line) - { - /* There must not be a word character just before the - * leader. */ - p = mip->mi_word - aw->aw_leadlen; - mb_ptr_back(mip->mi_line, p); - if (spell_iswordc(p)) - continue; - } - /* Leader matches. Addition is rest of "aw_word". */ - p = aw->aw_word + aw->aw_leadlen; - } - else - /* No leader, use whole of "aw_word" for addition. */ - p = aw->aw_word; - - addlen = aw->aw_wordlen - aw->aw_leadlen; - if (addlen > 0) - { - /* Check for matching addition and no word character after it. - * First make sure we have enough case-folded chars to compare - * with. */ - if (addlen >= mip->mi_faddlen) - fold_addchars(mip, addlen); - - /* Put back the saved char, if needed. */ - if (aw->aw_saveb != NUL) - { - cp = p + STRLEN(p); - *cp = aw->aw_saveb; - } - n = STRNCMP(mip->mi_fword + mip->mi_fendlen, p, addlen); - if (aw->aw_saveb != NUL) - *cp = NUL; - - if (n != 0 || (mip->mi_fword[mip->mi_fendlen + addlen] != NUL - && spell_iswordc(mip->mi_fword + mip->mi_fendlen + addlen))) - continue; - - /* Compute the length in the original word, before case folding. */ -#ifdef FEAT_MBYTE - if (has_mbyte) - { - int l; - - p = mip->mi_end; - for (l = 0; l < addlen; l += (*mb_ptr2len_check)(mip->mi_fword - + mip->mi_fendlen + l)) - mb_ptr_adv(p); - addlen = p - mip->mi_end; - } -#endif - - /* Check case of the addition. */ - if (!match_caps(ADD2BWF(aw->aw_flags), - aw->aw_word + aw->aw_wordlen + 1, mip, - mip->mi_end, mip->mi_end + addlen)) - continue; - } - - /* Match! Use the new length if it's longer. */ - if (mip->mi_wend < mip->mi_end + addlen) - mip->mi_wend = mip->mi_end + addlen; - - valid = TRUE; - if (mip->mi_result != SP_OK) - { - if ((aw->aw_region & mip->mi_lp->lp_region) == 0) - mip->mi_result = SP_LOCAL; - else - mip->mi_result = SP_OK; - } - } - - return valid; + return (int)(mi.mi_end - ptr); } /* - * Locate the text up to the next end-of-word after mip->mi_end. - */ - static void -fill_awend(mip) - matchinf_T *mip; -{ - char_u *p = mip->mi_end; - int addlen = 0; - int find_word = TRUE; - - mip->mi_did_awend = TRUE; - if (mip->mi_faddlen == 0) - fold_addchars(mip, 0); /* need to fold first char */ - - /* 1: find_word == TRUE: skip over non-word characters after mi_end. - * 2: find_word == FALSE: skip over following word characters. */ - for (p = mip->mi_fword + mip->mi_fendlen; *p != NUL; mb_ptr_adv(p)) - { - if (spell_iswordc(p) == find_word) - { - if (!find_word) - break; /* done */ - find_word = !find_word; - } -#ifdef FEAT_MBYTE - addlen += (*mb_ptr2len_check)(p); -#else - ++addlen; -#endif - if (addlen >= mip->mi_faddlen) - fold_addchars(mip, addlen); /* need to fold more chars */ - } - - /* If there are extra chars store the result. */ - if (addlen != 0) - mip->mi_awend = p; -} - -/* - * Fold enough characters of the checked text to be able to compare with an - * addition of length "addlen" plus one character (to be able to check the - * next character to be a non-word char). - * When there are not enough characters (end of line) mip->mi_faddlen will be - * smaller than "addlen". + * Check if the word at "mip->mi_word" is in the tree. + * When "keepcap" is TRUE check in keep-case word tree. + * + * For a match mip->mi_result is updated. */ static void -fold_addchars(mip, addlen) +find_word(mip, keepcap) matchinf_T *mip; - int addlen; + int keepcap; { - int l; - char_u *p = mip->mi_fword + mip->mi_fendlen; - - while (mip->mi_faddlen <= addlen) - { - if (*mip->mi_fend == NUL) /* end of the line */ - { - p[mip->mi_faddlen] = NUL; - break; - } + int arridx = 0; + int endlen[MAXWLEN]; /* length at possible word endings */ + int endidx[MAXWLEN]; /* possible word endings */ + int endidxcnt = 0; + int len; + int wlen = 0; + int flen; + int c; + char_u *ptr; + unsigned lo, hi, m; #ifdef FEAT_MBYTE - if (has_mbyte) - l = (*mb_ptr2len_check)(mip->mi_fend); - else + char_u *s; + char_u *p; #endif - l = 1; - (void)spell_casefold(mip->mi_fend, l, p + mip->mi_faddlen, - MAXWLEN - mip->mi_fendlen - mip->mi_faddlen); - mip->mi_fend += l; - mip->mi_faddlen += STRLEN(p + mip->mi_faddlen); - } -} + int res; + int valid; + slang_T *slang = mip->mi_lp->lp_slang; + unsigned flags; + char_u *byts; + int *idxs; -/* - * Return TRUE if affix "nr" appears in affix list "afflist[afflistlen]". - */ - static int -supports_affix(cnt, afflist, afflistlen, nr) - int cnt; /* total affix NR count */ - char_u *afflist; - int afflistlen; /* affix count in "afflist" */ - int nr; -{ - char_u *pc = afflist; - int i; - int nr_msb, nr_lsb; - - if (cnt <= 256) + if (keepcap) { - /* one byte affix numbers */ - for (i = afflistlen; --i >= 0; ) - if (*pc++ == nr) - return TRUE; + /* Check for word with matching case in keep-case tree. */ + ptr = mip->mi_word; + flen = 9999; /* no case folding, always enough bytes */ + byts = slang->sl_kbyts; + idxs = slang->sl_kidxs; } else { - /* two byte affix numbers, MSB first */ - nr_msb = (unsigned)nr >> 8; - nr_lsb = nr & 0xff; - for (i = afflistlen; --i >= 0; ) - { - if (*pc++ == nr_msb && *pc == nr_lsb) - return TRUE; - ++pc; - } - } - return FALSE; -} - -/* - * Try finding a match for "mip->mi_cword" by removing prefixes. - */ - static int -prefix_match(mip) - matchinf_T *mip; -{ - int len = 0; - int charlen = 0; - int cc; - affitem_T *ai; - char_u pword[MAXWLEN + 1]; - hashtab_T *ht; - hashitem_T *hi; - int found_valid = FALSE; - int cstart_charlen = 0; - char_u *cstart = mip->mi_word; - int capflags_save = mip->mi_capflags; - - /* - * Check for prefixes with different character lengths. - * Start with zero length (only chop off). - */ - for (charlen = 0; charlen <= mip->mi_slang->sl_preftab.ga_len; ++charlen) - { - if (charlen > 0) - { -#ifdef FEAT_MBYTE - if (has_mbyte) - len += (*mb_ptr2len_check)(mip->mi_cword + len); - else -#endif - len += 1; - } - if (mip->mi_cword[len] == NUL) /* end of word, no prefix possible */ - break; - - if (charlen == 0) - ai = mip->mi_slang->sl_prefzero; - else - { - /* Get pointer to hashtab for prefix of this many chars. */ - ht = ((hashtab_T *)mip->mi_slang->sl_preftab.ga_data) + charlen - 1; - if (ht->ht_used == 0) - continue; - - cc = mip->mi_cword[len]; - mip->mi_cword[len] = NUL; - hi = hash_find(ht, mip->mi_cword); - mip->mi_cword[len] = cc; - - if (HASHITEM_EMPTY(hi)) - ai = NULL; - else - ai = HI2AI(hi); - } - - /* Loop over all matching prefixes. */ - for ( ; ai != NULL; ai = ai->ai_next) - { - /* Create the basic word from the chop string and the word after - * the matching add string. */ - mch_memmove(pword, ai->ai_add + ai->ai_addlen + 1, ai->ai_choplen); - mch_memmove(pword + ai->ai_choplen, mip->mi_cword + ai->ai_addlen, - mip->mi_fendlen - ai->ai_addlen); - pword[mip->mi_fendlen - ai->ai_addlen] = NUL; - - /* Adjust the word start for case checks, we only check the - * part after the prefix. */ - while (cstart_charlen < charlen) - { - mb_ptr_adv(cstart); - ++cstart_charlen; - } - - /* Find the word "pword", caseword "cstart". */ - found_valid |= noprefix_match(mip, pword, cstart, ai); - - if (found_valid && mip->mi_result == SP_OK) - { - /* Found a valid word, no need to try other suffixes. */ - mip->mi_capflags = capflags_save; - return TRUE; - } - } - } - - mip->mi_capflags = capflags_save; - return FALSE; -} - -/* - * Check for matching word after removing a prefix. - * Return TRUE if found. - */ - static int -noprefix_match(mip, pword, cstart, ai) - matchinf_T *mip; - char_u *pword; /* case-folded word */ - char_u *cstart; /* original word after removed prefix */ - affitem_T *ai; /* the prefix item */ -{ - hashitem_T *hi; - fword_T *fw; - int found_valid = FALSE; - char_u *word; - int i; - int fendlen; - - /* Removing the prefix may change the caps, e.g. for - * "deAlf" removing "de" makes it ONECAP. */ - mip->mi_capflags = captype(cstart, mip->mi_end); - - /* Find the basic word. */ - hi = hash_find(&mip->mi_slang->sl_words, pword); - if (!HASHITEM_EMPTY(hi)) - { - /* Check if the word supports this prefix. */ - for (fw = HI2FWORD(hi); fw != NULL; fw = fw->fw_next) - if (match_caps(fw->fw_flags, fw->fw_word, mip, - cstart, mip->mi_end)) - found_valid |= check_adds(mip, fw, ai->ai_nr, -1); - - if (found_valid && mip->mi_result == SP_OK) - /* Found a valid word, no need to try other suffixes. */ - return TRUE; + /* Check for case-folded in case-folded tree. */ + ptr = mip->mi_fword; + flen = mip->mi_fwordlen; /* available case-folded bytes */ + byts = slang->sl_fbyts; + idxs = slang->sl_fidxs; } - /* No matching basic word without prefix. When combining is - * allowed try with suffixes. */ - if (ai->ai_flags & AFF_COMBINE) - { - /* Pass the word with prefix removed to suffix_match(). */ - mip->mi_cword = pword; - word = mip->mi_word; - mip->mi_word = cstart; - fendlen = mip->mi_fendlen; - mip->mi_fendlen = STRLEN(pword); - i = suffix_match(mip); - mip->mi_cword = mip->mi_fword; - mip->mi_word = word; - mip->mi_fendlen = fendlen; - if (i) - return TRUE; - } - - return FALSE; -} - -/* - * Try finding a match for "mip->mi_cword" by removing suffixes. - */ - static int -suffix_match(mip) - matchinf_T *mip; -{ - char_u *sufp; - char_u *endw = mip->mi_cword + mip->mi_fendlen; - int endw_c = *endw; - int charlen; - affitem_T *ai; - char_u pword[MAXWLEN + 1]; - fword_T *fw; - hashtab_T *ht; - hashitem_T *hi; - int tlen; - int cend_charlen = 0; - char_u *cend = mip->mi_end; - int found_valid = FALSE; - int capflags_save = mip->mi_capflags; + if (byts == NULL) + return; /* array is empty */ /* - * Try suffixes of different length, starting with an empty suffix (chop - * only, thus adds something). - * Stop checking if there are no suffixes with so many characters. + * Repeat advancing in the tree until there is a byte that doesn't match, + * we reach the end of the tree or we reach the end of the line. */ - sufp = endw; - *endw = NUL; /* truncate after possible suffix */ - - for (charlen = 0; charlen <= mip->mi_slang->sl_sufftab.ga_len; ++charlen) + for (;;) { - /* Move the pointer to the possible suffix back one character, unless - * doing the first round (empty suffix). */ - if (charlen > 0) - { - mb_ptr_back(mip->mi_cword, sufp); - if (sufp <= mip->mi_cword) /* start of word, no suffix possible */ - break; - } - - if (charlen == 0) - ai = mip->mi_slang->sl_suffzero; - else - { - /* Get pointer to hashtab for suffix of this many chars. */ - ht = ((hashtab_T *)mip->mi_slang->sl_sufftab.ga_data) + charlen - 1; - if (ht->ht_used == 0) - continue; - - hi = hash_find(ht, sufp); - if (HASHITEM_EMPTY(hi)) - ai = NULL; - else - ai = HI2AI(hi); - } - - if (ai != NULL) + if (flen == 0 && *mip->mi_fend != NUL) { - /* Found a list of matching suffixes. Now check that there is one - * we can use. */ - tlen = sufp - mip->mi_cword; /* length of word without suffix */ - mch_memmove(pword, mip->mi_cword, tlen); - *endw = endw_c; - - for ( ; ai != NULL; ai = ai->ai_next) - { - /* Found a matching suffix. Create the basic word by removing - * the suffix and adding the chop string. */ - if (ai->ai_choplen == 0) - pword[tlen] = NUL; - else - mch_memmove(pword + tlen, ai->ai_add + ai->ai_addlen + 1, - ai->ai_choplen + 1); - - /* Find the basic word. */ - hi = hash_find(&mip->mi_slang->sl_words, pword); - if (!HASHITEM_EMPTY(hi)) - { - /* Adjust the end for case checks, we only check the part - * before the suffix. */ - while (cend_charlen < charlen) - { - mb_ptr_back(mip->mi_word, cend); - ++cend_charlen; - } - - /* Removing the suffix may change the caps, e.g. for - * "UFOs" removing 's' makes it ALLCAP. */ - mip->mi_capflags = captype(mip->mi_word, cend); - - /* Check if the word supports this suffix. */ - for (fw = HI2FWORD(hi); fw != NULL; fw = fw->fw_next) - if (match_caps(fw->fw_flags, fw->fw_word, mip, - mip->mi_word, cend)) - found_valid |= check_adds(mip, fw, -1, ai->ai_nr); - - if (found_valid && mip->mi_result == SP_OK) - { - /* Found a valid word, no need to try other suffixes. */ - mip->mi_capflags = capflags_save; - return TRUE; - } - } - } - - *endw = NUL; /* truncate after possible suffix */ - } - } - - *endw = endw_c; - mip->mi_capflags = capflags_save; - return FALSE; -} - -/* - * Return TRUE if case of "cword" meets the requirements of case flags - * "flags". - */ - static int -match_caps(flags, caseword, mip, cword, end) - int flags; /* flags required by basic word or addition */ - char_u *caseword; /* word with case as required */ - matchinf_T *mip; - char_u *cword; /* word to compare against "caseword" */ - char_u *end; /* end of "cword" */ -{ - char_u *p; - int c; - int len; - int capflags = mip->mi_capflags; /* flags of checked word */ - int past_second; - - if ((capflags & BWF_KEEPCAP) == 0 && end > mip->mi_end) - { - /* If "end" is past "mip->mi_end" we need to adjust the caps type for - * characters after the basic word. */ -#ifdef FEAT_MBYTE - past_second = (mip->mi_word + (*mb_ptr2len_check)(mip->mi_word) - < mip->mi_end); -#else - past_second = mip->mi_word + 1 < mip->mi_end; -#endif - for (p = mip->mi_end; p < end; ) - { - if (!spell_iswordc(p)) - mb_ptr_adv(p); - else + /* Need to fold at least one more character. Do until next + * non-word character for efficiency. */ + do { #ifdef FEAT_MBYTE if (has_mbyte) - c = mb_ptr2char_adv(&p); + flen += mb_ptr2len_check(mip->mi_fend + flen); else #endif - c = *p++; - if (spell_isupper(c)) - { - if (capflags == 0 || (capflags & BWF_ONECAP)) - { - capflags = BWF_KEEPCAP; /* lU or UlU */ - break; - } - } - else - { - if (capflags & BWF_ALLCAP) - { - if (past_second) - { - capflags = BWF_KEEPCAP; /* UUl */ - break; - } - capflags = BWF_ONECAP; /* Uu */ - } - } - past_second = TRUE; + ++flen; + } while (spell_iswordc(mip->mi_fend + flen)); + + (void)spell_casefold(mip->mi_fend, flen, + mip->mi_fword + mip->mi_fwordlen, + MAXWLEN - mip->mi_fwordlen); + mip->mi_fend += flen; + flen = STRLEN(mip->mi_fword + mip->mi_fwordlen); + mip->mi_fwordlen += flen; + } + + len = byts[arridx++]; + + /* If the first possible byte is a zero the word could end here. + * Remember this index, we first check for the longest word. */ + if (byts[arridx] == 0) + { + endlen[endidxcnt] = wlen; + endidx[endidxcnt++] = arridx++; + --len; + + /* Skip over the zeros, there can be several flag/region + * combinations. */ + while (len > 0 && byts[arridx] == 0) + { + ++arridx; + --len; + } + if (len == 0) + break; /* no children, word must end here */ + } + + /* Stop looking at end of the line. */ + if (ptr[wlen] == NUL) + break; + + /* Perform a binary search in the list of accepted bytes. */ + c = ptr[wlen]; + lo = arridx; + hi = arridx + len - 1; + while (lo < hi) + { + m = (lo + hi) / 2; + if (byts[m] > c) + hi = m - 1; + else if (byts[m] < c) + lo = m + 1; + else + { + lo = hi = m; + break; } } + + /* Stop if there is no matching byte. */ + if (hi < lo || byts[lo] != c) + break; + + /* Continue at the child (if there is one). */ + arridx = idxs[lo]; + ++wlen; + --flen; } - if (capflags == BWF_ALLCAP) - return TRUE; /* All caps is always OK. */ + /* + * Verify that one of the possible endings is valid. Try the longest + * first. + */ + while (endidxcnt > 0) + { + --endidxcnt; + arridx = endidx[endidxcnt]; + wlen = endlen[endidxcnt]; - if (flags & BWF_KEEPCAP) - { - len = STRLEN(caseword); - return (len == end - cword && STRNCMP(caseword, cword, len) == 0); - } +#ifdef FEAT_MBYTE + if ((*mb_head_off)(ptr, ptr + wlen) > 0) + continue; /* not at first byte of character */ +#endif + if (spell_iswordc(ptr + wlen)) + continue; /* next char is a word character */ + +#ifdef FEAT_MBYTE + if (!keepcap && has_mbyte) + { + /* Compute byte length in original word, length may change + * when folding case. */ + p = mip->mi_word; + for (s = ptr; s < ptr + wlen; mb_ptr_adv(s)) + mb_ptr_adv(p); + wlen = p - mip->mi_word; + } +#endif - if (flags & BWF_ALLCAP) - return FALSE; /* need ALLCAP, already checked above */ + /* Check flags and region. Repeat this if there are more + * flags/region alternatives until there is a match. */ + res = SP_BAD; + for (len = byts[arridx - 1]; len > 0 && byts[arridx] == 0; --len) + { + flags = idxs[arridx]; + if (keepcap) + { + /* For "keepcap" tree the case is always right. */ + valid = TRUE; + } + else + { + /* Check that the word is in the required case. */ + if (mip->mi_cend != mip->mi_word + wlen) + { + /* mi_capflags was set for a different word + * length, need to do it again. */ + mip->mi_cend = mip->mi_word + wlen; + mip->mi_capflags = captype(mip->mi_word, + mip->mi_cend); + } + + valid = (mip->mi_capflags == WF_ALLCAP + || ((flags & WF_ALLCAP) == 0 + && ((flags & WF_ONECAP) == 0 + || mip->mi_capflags == WF_ONECAP))); + } - if (flags & BWF_ONECAP) - return capflags == BWF_ONECAP; + if (valid && res != SP_OK) + { + if (flags & WF_REGION) + { + /* Check region. */ + if ((mip->mi_lp->lp_region & (flags >> 8)) != 0) + res = SP_OK; + else + res = SP_LOCAL; + } + else if (flags & WF_RARE) + res = SP_RARE; + else + res = SP_OK; + } - return capflags != BWF_KEEPCAP; /* no case check, only KEEPCAP is bad */ + if (res == SP_OK) + break; + ++arridx; + } + + if (valid) + { + /* Valid word! Always use the longest match. */ + if (mip->mi_end < mip->mi_word + wlen) + mip->mi_end = mip->mi_word + wlen; + if (mip->mi_result != SP_OK) + mip->mi_result = res; + break; + } + } } + /* * Move to next spell error. * Return OK if found, FAIL otherwise. @@ -1181,8 +565,6 @@ spell_move_to(dir, allwords) pos_T found_pos; char_u *line; char_u *p; - int wc; - int nwc; int attr = 0; int len; int has_syntax = syntax_present(curbuf); @@ -1209,77 +591,69 @@ spell_move_to(dir, allwords) { line = ml_get(lnum); p = line; - wc = FALSE; while (*p != NUL) { - nwc = spell_iswordc(p); - if (!wc && nwc) - { - /* When searching backward don't search after the cursor. */ - if (dir == BACKWARD - && lnum == curwin->w_cursor.lnum - && (colnr_T)(p - line) >= curwin->w_cursor.col) - break; + /* When searching backward don't search after the cursor. */ + if (dir == BACKWARD + && lnum == curwin->w_cursor.lnum + && (colnr_T)(p - line) >= curwin->w_cursor.col) + break; - /* start of word */ - len = spell_check(curwin, line, p, &attr); + /* start of word */ + len = spell_check(curwin, p, &attr); - if (attr != 0) + if (attr != 0) + { + /* We found a bad word. Check the attribute. */ + /* TODO: check for syntax @Spell cluster. */ + if (allwords || attr == highlight_attr[HLF_SPB]) { - /* We found a bad word. Check the attribute. */ - /* TODO: check for syntax @Spell cluster. */ - if (allwords || attr == highlight_attr[HLF_SPB]) + /* When searching forward only accept a bad word after + * the cursor. */ + if (dir == BACKWARD + || lnum > curwin->w_cursor.lnum + || (lnum == curwin->w_cursor.lnum + && (colnr_T)(p - line) + > curwin->w_cursor.col)) { - /* When searching forward only accept a bad word after - * the cursor. */ - if (dir == BACKWARD - || lnum > curwin->w_cursor.lnum - || (lnum == curwin->w_cursor.lnum - && (colnr_T)(p - line) - > curwin->w_cursor.col)) + if (has_syntax) { - if (has_syntax) - { - col = p - line; - (void)syn_get_id(lnum, (colnr_T)col, - FALSE, &can_spell); + col = p - line; + (void)syn_get_id(lnum, (colnr_T)col, + FALSE, &can_spell); - /* have to get the line again, a multi-line - * regexp may make it invalid */ - line = ml_get(lnum); - p = line + col; - } - else - can_spell = TRUE; + /* have to get the line again, a multi-line + * regexp may make it invalid */ + line = ml_get(lnum); + p = line + col; + } + else + can_spell = TRUE; - if (can_spell) - { - found_pos.lnum = lnum; - found_pos.col = p - line; + if (can_spell) + { + found_pos.lnum = lnum; + found_pos.col = p - line; #ifdef FEAT_VIRTUALEDIT - found_pos.coladd = 0; + found_pos.coladd = 0; #endif - if (dir == FORWARD) - { - /* No need to search further. */ - curwin->w_cursor = found_pos; - return OK; - } + if (dir == FORWARD) + { + /* No need to search further. */ + curwin->w_cursor = found_pos; + return OK; } } } - attr = 0; } - p += len; - if (*p == NUL) - break; - nwc = FALSE; + attr = 0; } - /* advance to next character */ - mb_ptr_adv(p); - wc = nwc; + /* advance to character after the word */ + p += len; + if (*p == NUL) + break; } /* Advance to next line. */ @@ -1372,21 +746,11 @@ slang_alloc(lang) { slang_T *lp; - lp = (slang_T *)alloc(sizeof(slang_T)); + lp = (slang_T *)alloc_clear(sizeof(slang_T)); if (lp != NULL) { lp->sl_name = vim_strsave(lang); - hash_init(&lp->sl_words); - ga_init2(&lp->sl_preftab, sizeof(hashtab_T), 4); - hash_init(&lp->sl_prewords); - ga_init2(&lp->sl_sufftab, sizeof(hashtab_T), 4); - lp->sl_prefzero = NULL; - lp->sl_suffzero = NULL; - lp->sl_try = NULL; ga_init2(&lp->sl_rep, sizeof(repentry_T), 4); - lp->sl_regions[0] = NUL; - lp->sl_block = NULL; - lp->sl_error = FALSE; } return lp; } @@ -1398,44 +762,13 @@ slang_alloc(lang) slang_free(lp) slang_T *lp; { - sblock_T *sp; - int i; - fword_T *fw; - int todo; - hashitem_T *hi; - vim_free(lp->sl_name); - - /* The words themselves are in memory blocks referenced by "sl_block". - * Only the hashtables for additions need to be cleared. */ - todo = lp->sl_words.ht_used; - for (hi = lp->sl_words.ht_array; todo > 0; ++hi) - { - if (!HASHITEM_EMPTY(hi)) - { - --todo; - fw = HI2FWORD(hi); - if (fw->fw_flags & BWF_ADDHASH) - hash_clear((hashtab_T *)fw->fw_adds); - } - } - hash_clear(&lp->sl_words); - - for (i = 0; i < lp->sl_preftab.ga_len; ++i) - hash_clear(((hashtab_T *)lp->sl_preftab.ga_data) + i); - ga_clear(&lp->sl_preftab); - hash_clear(&lp->sl_prewords); - for (i = 0; i < lp->sl_sufftab.ga_len; ++i) - hash_clear(((hashtab_T *)lp->sl_sufftab.ga_data) + i); - ga_clear(&lp->sl_sufftab); + vim_free(lp->sl_fbyts); + vim_free(lp->sl_kbyts); + vim_free(lp->sl_fidxs); + vim_free(lp->sl_kidxs); ga_clear(&lp->sl_rep); vim_free(lp->sl_try); - while (lp->sl_block != NULL) - { - sp = lp->sl_block; - lp->sl_block = sp->sb_next; - vim_free(sp); - } vim_free(lp); } @@ -1451,41 +784,13 @@ spell_load_file(fname, cookie) slang_T *lp = cookie; FILE *fd; char_u buf[MAXWLEN + 1]; - char_u cbuf[MAXWLEN + 1]; - char_u fbuf[MAXWLEN + 1]; - char_u affixbuf[256 * 2 * 2]; /* max 2 * 256 affix nrs of 2 bytes */ char_u *p; - int itm; int i; - int affcount; - int affnr; - int affflags; - int affitemcnt; - int prefixcnt, suffixcnt; - int bl_used = SBLOCKSIZE; - int widx; - int prefm = 0; /* 1 if <= 256 prefixes, sizeof(short_u) otherw. */ - int suffm = 0; /* 1 if <= 256 suffixes, sizeof(short_u) otherw. */ - int wlen; - int flags; - affitem_T *ai, *ai2, **aip; + int len; int round; char_u *save_sourcing_name = sourcing_name; linenr_T save_sourcing_lnum = sourcing_lnum; int cnt, ccnt; - int choplen; - int addlen; - int leadlen; - int wordcount; - fword_T *fw, *fw2; - garray_T *gap; - hashtab_T *ht; - hashitem_T *hi; - hash_T hash; - int adds; - addword_T *aw, *naw; - int flen; - int xlen; char_u *fol; fd = fopen((char *)fname, "r"); @@ -1532,7 +837,7 @@ formerr: cnt = getc(fd); /* <charflagslen> */ if (cnt > 0) { - p = (char_u *)getroom(lp, &bl_used, cnt); + p = alloc((unsigned)cnt); if (p == NULL) goto endFAIL; for (i = 0; i < cnt; ++i) @@ -1540,16 +845,25 @@ formerr: ccnt = (getc(fd) << 8) + getc(fd); /* <fcharslen> */ if (ccnt <= 0) + { + vim_free(p); goto formerr; - fol = (char_u *)getroom(lp, &bl_used, ccnt + 1); + } + fol = alloc((unsigned)ccnt + 1); if (fol == NULL) + { + vim_free(p); goto endFAIL; + } for (i = 0; i < ccnt; ++i) fol[i] = getc(fd); /* <fchars> */ fol[i] = NUL; /* Set the word-char flags and fill spell_isupper() table. */ - if (set_spell_charflags(p, cnt, fol) == FAIL) + i = set_spell_charflags(p, cnt, fol); + vim_free(p); + vim_free(fol); + if (i == FAIL) goto formerr; } else @@ -1560,196 +874,6 @@ formerr: goto formerr; } - /* round 1: <PREFIXLIST>: <affcount> <affix> ... - * round 2: <SUFFIXLIST>: <affcount> <affix> ... */ - for (round = 1; round <= 2; ++round) - { - affcount = (getc(fd) << 8) + getc(fd); /* <affcount> */ - if (affcount < 0) - goto truncerr; - if (round == 1) - { - gap = &lp->sl_preftab; - aip = &lp->sl_prefzero; - lp->sl_prefcnt = affcount; - prefm = affcount > 256 ? 2 : 1; - } - else - { - gap = &lp->sl_sufftab; - aip = &lp->sl_suffzero; - lp->sl_suffcnt = affcount; - suffm = affcount > 256 ? 2 : 1; - } - - /* - * For each affix NR there can be several affixes. - */ - for (affnr = 0; affnr < affcount; ++affnr) - { - /* <affix>: <affitemcnt> <affitem> ... */ - affitemcnt = (getc(fd) << 8) + getc(fd); /* <affitemcnt> */ - if (affitemcnt < 0) - goto truncerr; - for (itm = 0; itm < affitemcnt; ++itm) - { - /* <affitem>: <affflags> <affchoplen> <affchop> - * <affaddlen> <affadd> */ - affflags = getc(fd); /* <affflags> */ - choplen = getc(fd); /* <affchoplen> */ - if (choplen < 0) - goto truncerr; - if (choplen >= MAXWLEN) - goto formerr; - for (i = 0; i < choplen; ++i) /* <affchop> */ - buf[i] = getc(fd); - buf[i] = NUL; - addlen = getc(fd); /* <affaddlen> */ - if (addlen < 0) - goto truncerr; - if (affflags & AFF_PREWORD) - xlen = addlen + 2; /* space for lead and trail string */ - else - xlen = 0; - - /* Get room to store the affitem_T, chop and add strings. */ - ai = (affitem_T *)getroom(lp, &bl_used, - sizeof(affitem_T) + addlen + choplen + 1 + xlen); - if (ai == NULL) - goto endFAIL; - - ai->ai_nr = affnr; - ai->ai_flags = affflags; - ai->ai_choplen = choplen; - ai->ai_addlen = addlen; - - /* Chop string is at ai_add[ai_addlen + 1]. */ - p = ai->ai_add + addlen + 1; - STRCPY(p, buf); - - p = ai->ai_add; - for (i = 0; i < addlen; ++i) /* <affadd> */ - p[i] = getc(fd); - p[i] = NUL; - - if (affflags & AFF_PREWORD) - { - int l, leadoff, trailoff; - - /* - * A preword is a prefix that's recognized as a word: it - * contains a word characters folled by a non-word - * character. - * <affadd> is the whole prefix. Separate lead and trail - * string, put the word itself at ai_add, so that it can - * be used as hashtable key. - */ - /* lead string: up to first word char */ - while (*p != NUL && !spell_iswordc(p)) - mb_ptr_adv(p); - ai->ai_leadlen = p - ai->ai_add; - leadoff = addlen + choplen + 2; - mch_memmove(ai->ai_add + leadoff, ai->ai_add, - ai->ai_leadlen); - ai->ai_add[leadoff + ai->ai_leadlen] = NUL; - - /* trail string: after last word char */ - while (*p != NUL && spell_iswordc(p)) - mb_ptr_adv(p); - trailoff = leadoff + ai->ai_leadlen + 1; - STRCPY(ai->ai_add + trailoff, p); - ai->ai_taillen = STRLEN(p); - - /* word itself */ - l = (p - ai->ai_add) - ai->ai_leadlen; - mch_memmove(ai->ai_add, ai->ai_add + ai->ai_leadlen, l); - ai->ai_add[l] = NUL; - hash = hash_hash(ai->ai_add); - hi = hash_lookup(&lp->sl_prewords, ai->ai_add, hash); - if (HASHITEM_EMPTY(hi)) - { - /* First preword with this word, add to hashtable. */ - hash_add_item(&lp->sl_prewords, hi, ai->ai_add, hash); - ai->ai_next = NULL; - } - else - { - /* There already is a preword with this word, link in - * the list. */ - ai2 = HI2AI(hi); - ai->ai_next = ai2->ai_next; - ai2->ai_next = ai; - } - } - else - { - /* - * Add the affix to a hashtable. Which one depends on the - * length of the added string in characters. - */ -#ifdef FEAT_MBYTE - /* Change "addlen" from length in bytes to length in - * chars. */ - if (has_mbyte) - addlen = mb_charlen(p); -#endif - if (addlen == 0) - { - /* Link in list of zero length affixes. */ - ai->ai_next = *aip; - *aip = ai; - } - else - { - if (gap->ga_len < addlen) - { - /* Longer affix, need more hashtables. */ - if (ga_grow(gap, addlen - gap->ga_len) == FAIL) - goto endFAIL; - - /* Re-allocating ga_data means that an ht_array - * pointing to ht_smallarray becomes invalid. We - * can recognize this: ht_mask is at its init - * value. */ - for (i = 0; i < gap->ga_len; ++i) - { - ht = ((hashtab_T *)gap->ga_data) + i; - if (ht->ht_mask == HT_INIT_SIZE - 1) - ht->ht_array = ht->ht_smallarray; - } - - /* Init the newly used hashtable(s). */ - while (gap->ga_len < addlen) - { - hash_init(((hashtab_T *)gap->ga_data) - + gap->ga_len); - ++gap->ga_len; - } - } - ht = ((hashtab_T *)gap->ga_data) + addlen - 1; - hash = hash_hash(p); - hi = hash_lookup(ht, p, hash); - if (HASHITEM_EMPTY(hi)) - { - /* First affix with this "ai_add", add to - * hashtable. */ - hash_add_item(ht, hi, p, hash); - ai->ai_next = NULL; - } - else - { - /* There already is an affix with this "ai_add", - * link in the list. */ - ai2 = HI2AI(hi); - ai->ai_next = ai2->ai_next; - ai2->ai_next = ai; - } - } - } - } - } - } - /* <SUGGEST> : <suggestlen> <more> ... */ /* TODO, just skip this for now */ i = (getc(fd) << 24) + (getc(fd) << 16) + (getc(fd) << 8) + getc(fd); @@ -1757,305 +881,48 @@ formerr: if (getc(fd) == EOF) /* <suggestlen> */ goto truncerr; - /* <WORDLIST>: <wordcount> <worditem> ... */ /* <wordcount> */ - wordcount = (getc(fd) << 24) + (getc(fd) << 16) + (getc(fd) << 8) - + getc(fd); - if (wordcount < 0) - goto truncerr; - - /* Init hashtable for this number of words, so that it doesn't need to - * reallocate the table halfway. */ - hash_lock_size(&lp->sl_words, wordcount); - - for (widx = 0; ; ++widx) + /* round 1: <LWORDTREE> + * round 2: <KWORDTREE> */ + for (round = 1; round <= 2; ++round) { - /* <worditem>: <nr> <string> <flags> [<flags2>] - * [<caselen> <caseword>] - * [<affixcnt> <affixNR> ...] (prefixes) - * [<affixcnt> <affixNR> ...] (suffixes) - * [<region>] - * [<addcnt> <add> ...] - */ - /* Use <nr> bytes from the previous word. */ - wlen = getc(fd); /* <nr> */ - if (wlen < 0) + /* The tree size was computed when writing the file, so that we can + * allocate it as one long block. <nodecount> */ + len = (getc(fd) << 24) + (getc(fd) << 16) + (getc(fd) << 8) + getc(fd); + if (len < 0) + goto truncerr; + if (len > 0) { - if (widx >= wordcount) /* normal way to end the file */ - break; - goto truncerr; - } + /* Allocate the byte array. */ + p = lalloc((long_u)len, TRUE); + if (p == NULL) + goto endFAIL; + if (round == 1) + lp->sl_fbyts = p; + else + lp->sl_kbyts = p; - /* Read further word bytes until one below 0x20, that one must be the - * flags. Keep this fast! */ - for (;;) - { - if ((buf[wlen] = getc(fd)) < 0x20) /* <string> */ - break; - if (++wlen == MAXWLEN) + /* Allocate the index array. */ + p = lalloc_clear((long_u)(len * sizeof(int)), TRUE); + if (p == NULL) + goto endFAIL; + if (round == 1) + lp->sl_fidxs = (int *)p; + else + lp->sl_kidxs = (int *)p; + + + /* Read the tree and store it in the array. */ + i = read_tree(fd, + round == 1 ? lp->sl_fbyts : lp->sl_kbyts, + round == 1 ? lp->sl_fidxs : lp->sl_kidxs, + len, 0); + if (i == -1) + goto truncerr; + if (i < 0) goto formerr; } - flags = buf[wlen]; /* <flags> */ - buf[wlen] = NUL; - - /* Get more flags if they're there. */ - if (flags & BWF_SECOND) - flags += getc(fd) << 8; /* <flags2> */ - - if (flags & BWF_KEEPCAP) - { - /* Read <caselen> and <caseword> first, its length may differ from - * the case-folded word. Note: this should only happen after the - * basic word without KEEPCAP! */ - wlen = getc(fd); - if (wlen < 0) - goto truncerr; - if (wlen >= MAXWLEN) - goto formerr; - for (i = 0; i < wlen; ++i) - cbuf[i] = getc(fd); - cbuf[i] = NUL; - } - - /* Optional prefixes */ - p = affixbuf; - if (flags & BWF_PREFIX) - { - cnt = getc(fd); /* <affixcnt> */ - if (cnt < 0) - goto truncerr; - prefixcnt = cnt; - for (i = cnt * prefm; --i >= 0; ) /* <affixNR> */ - *p++ = getc(fd); - } - else - prefixcnt = 0; - - /* Optional suffixes */ - if (flags & BWF_SUFFIX) - { - cnt = getc(fd); /* <affixcnt> */ - if (cnt < 0) - goto truncerr; - suffixcnt = cnt; - for (i = cnt * suffm; --i >= 0; ) /* <affixNR> */ - *p++ = getc(fd); - } - else - suffixcnt = 0; - - /* Find room to store the word in an fword_T. */ - fw = (fword_T *)getroom(lp, &bl_used, (int)sizeof(fword_T) + wlen - + (p - affixbuf)); - if (fw == NULL) - goto endFAIL; - mch_memmove(fw->fw_word, (flags & BWF_KEEPCAP) ? cbuf : buf, wlen + 1); - - /* Put the affix NRs just after the word, if any. */ - if (p > affixbuf) - mch_memmove(fw->fw_word + wlen + 1, affixbuf, p - affixbuf); - - fw->fw_flags = flags; - fw->fw_prefixcnt = prefixcnt; - fw->fw_suffixcnt = suffixcnt; - - /* We store the word in the hashtable case-folded. For a KEEPCAP word - * the entry must already exist, because fw_word can't be used as the - * key, it differs from "buf"! */ - hash = hash_hash(buf); - hi = hash_lookup(&lp->sl_words, buf, hash); - if (HASHITEM_EMPTY(hi)) - { - if (hash_add_item(&lp->sl_words, hi, fw->fw_word, hash) == FAIL) - goto endFAIL; - fw->fw_next = NULL; - } - else - { - /* Already have this basic word in the hashtable, this one will - * have different case flags and/or affixes. */ - fw2 = HI2FWORD(hi); - fw->fw_next = fw2->fw_next; - fw2->fw_next = fw; - --widx; /* don't count this one as a basic word */ - } - - if (flags & BWF_REGION) - fw->fw_region = getc(fd); /* <region> */ - else - fw->fw_region = REGION_ALL; - - fw->fw_adds = NULL; - if (flags & BWF_ADDS) - { - if (flags & BWF_ADDS_M) - adds = (getc(fd) << 8) + getc(fd); /* <addcnt> */ - else - adds = getc(fd); /* <addcnt> */ - if (adds < 0) - goto formerr; - - if (adds > 30) - { - /* Use a hashtable to lookup the part until the next word end. - * Thus for "de-bur-die" "de" is the basic word, "-bur" is key - * in the addition hashtable, "-bur<NUL>die" the whole - * addition and "aw_saveb" is '-'. - * This uses more memory and involves some overhead, thus only - * do it when there are many additions (e.g., for French). */ - ht = (hashtab_T *)getroom(lp, &bl_used, sizeof(hashtab_T)); - if (ht == NULL) - goto endFAIL; - hash_init(ht); - fw->fw_adds = (addword_T *)ht; - fw->fw_flags |= BWF_ADDHASH; - - /* Preset the size of the hashtable. It's never unlocked. */ - hash_lock_size(ht, adds + 1); - } - else - ht = NULL; + } - /* - * Note: uses cbuf[] to copy bytes from previous addition. - */ - while (--adds >= 0) - { - /* <add>: <addflags> <addlen> [<leadlen>] [<copylen>] - * [<addstring>] [<region>] */ - flags = getc(fd); /* <addflags> */ - addlen = getc(fd); /* <addlen> */ - if (addlen < 0) - goto truncerr; - if (addlen >= MAXWLEN) - goto formerr; - - if (flags & ADD_LEADLEN) - { - leadlen = getc(fd); /* <leadlen> */ - if (leadlen > addlen) - goto formerr; - } - else - leadlen = 0; - - if (addlen > 0) - { - if (flags & ADD_COPYLEN) - i = getc(fd); /* <copylen> */ - else - i = 0; - for ( ; i < addlen; ++i) /* <addstring> */ - cbuf[i] = getc(fd); - cbuf[i] = NUL; - } - - if (flags & ADD_KEEPCAP) - { - /* <addstring> is in original case, need to get - * case-folded word too. */ - (void)spell_casefold(cbuf, addlen, fbuf, MAXWLEN); - flen = addlen - leadlen + 1; - addlen = STRLEN(fbuf); - } - else - flen = 0; - - aw = (addword_T *)getroom(lp, &bl_used, - sizeof(addword_T) + addlen + flen); - if (aw == NULL) - goto endFAIL; - - if (flags & ADD_KEEPCAP) - { - /* Put the addition in original case after the case-folded - * string. */ - STRCPY(aw->aw_word, fbuf); - STRCPY(aw->aw_word + addlen + 1, cbuf + leadlen); - } - else - STRCPY(aw->aw_word, cbuf); - - aw->aw_flags = flags; - aw->aw_wordlen = addlen; - aw->aw_leadlen = leadlen; - - if (flags & ADD_REGION) - aw->aw_region = getc(fd); /* <region> */ - else - aw->aw_region = REGION_ALL; - - if (ht == NULL) - { - /* Using simple linked list, put it in front. */ - aw->aw_next = fw->fw_adds; - fw->fw_adds = aw; - aw->aw_saveb = NUL; - } - else - { - /* Put addition in hashtable. For key we use the part up - * to the next end-of-word. */ - if (leadlen == 0) - { - p = aw->aw_word; - while (*p != NUL && !spell_iswordc(p)) - mb_ptr_adv(p); - } - - if (leadlen != 0 || *p == NUL) - { - /* Only non-word characters in addition, add it to the - * list with the special key NOWC_KEY. Also do this - * when there is a leadstring, it would get too - * complicated. */ - hash = hash_hash(NOWC_KEY); - hi = hash_lookup(ht, NOWC_KEY, hash); - if (HASHITEM_EMPTY(hi)) - { - /* we use a dummy item as the list header */ - naw = (addword_T *)getroom(lp, &bl_used, - sizeof(addword_T) + STRLEN(NOWC_KEY)); - if (naw == NULL) - goto endFAIL; - STRCPY(naw->aw_word, NOWC_KEY); - hash_add_item(ht, hi, naw->aw_word, hash); - naw->aw_next = aw; - aw->aw_next = NULL; - } - else - { - naw = HI2ADDWORD(hi); - aw->aw_next = naw->aw_next; - naw->aw_next = aw; - } - aw->aw_saveb = NUL; - } - else - { - /* Truncate at next non-word character, store that - * byte in "aw_saveb". */ - while (*p != NUL && spell_iswordc(p)) - mb_ptr_adv(p); - aw->aw_saveb = *p; - *p = NUL; - hash = hash_hash(aw->aw_word); - hi = hash_lookup(ht, aw->aw_word, hash); - if (HASHITEM_EMPTY(hi)) - { - hash_add_item(ht, hi, aw->aw_word, hash); - aw->aw_next = NULL; - } - else - { - naw = HI2ADDWORD(hi); - aw->aw_next = naw->aw_next; - naw->aw_next = aw; - } - } - } - } - } - } goto endOK; endFAIL: @@ -2064,40 +931,97 @@ endFAIL: endOK: if (fd != NULL) fclose(fd); - hash_unlock(&lp->sl_words); sourcing_name = save_sourcing_name; sourcing_lnum = save_sourcing_lnum; } /* - * Get part of an sblock_T, at least "len" bytes long. - * Returns NULL when out of memory. + * Read one row of siblings from the spell file and store it in the byte array + * "byts" and index array "idxs". Recursively read the children. + * + * NOTE: The code here must match put_tree(). + * + * Returns the index follosing the siblings. + * Returns -1 if the file is shorter than expected. + * Returns -2 if there is a format error. */ - static void * -getroom(lp, bl_used, len) - slang_T *lp; /* lp->sl_block is current block or NULL */ - int *bl_used; /* used up from current block */ - int len; /* length needed */ + static int +read_tree(fd, byts, idxs, maxidx, startidx) + FILE *fd; + char_u *byts; + int *idxs; + int maxidx; /* size of arrays */ + int startidx; /* current index in "byts" and "idxs" */ { - char_u *p; - sblock_T *bl = lp->sl_block; + int len; + int i; + int n; + int idx = startidx; + int c; +#define SHARED_MASK 0x8000000 - if (bl == NULL || *bl_used + len > SBLOCKSIZE) + len = getc(fd); /* <siblingcount> */ + if (len <= 0) + return -1; + + if (startidx + len >= maxidx) + return -2; + byts[idx++] = len; + + /* Read the byte values, flag/region bytes and shared indexes. */ + for (i = 1; i <= len; ++i) { - /* Allocate a block of memory. This is not freed until spell_reload() - * is called. */ - bl = (sblock_T *)alloc((unsigned)(sizeof(sblock_T) + SBLOCKSIZE)); - if (bl == NULL) - return NULL; - bl->sb_next = lp->sl_block; - lp->sl_block = bl; - *bl_used = 0; + c = getc(fd); /* <byte> */ + if (c < 0) + return -1; + if (c <= BY_SPECIAL) + { + if (c == BY_NOFLAGS) + { + /* No flags, all regions. */ + idxs[idx] = 0; + c = 0; + } + else if (c == BY_FLAGS) + { + /* Read flags and option region. */ + c = getc(fd); /* <flags> */ + if (c & WF_REGION) + c = (getc(fd) << 8) + c; /* <region> */ + idxs[idx] = c; + c = 0; + } + else /* c == BY_INDEX */ + { + /* <nodeidx> */ + n = (getc(fd) << 16) + (getc(fd) << 8) + getc(fd); + if (n < 0 || n >= maxidx) + return -2; + idxs[idx] = n + SHARED_MASK; + c = getc(fd); /* <xbyte> */ + } + } + byts[idx++] = c; } - p = bl->sb_data + *bl_used; - *bl_used += len; + /* Recursively read the children for non-shared siblings. + * Skip the end-of-word ones (zero byte value) and the shared ones (and + * remove SHARED_MASK) */ + for (i = 1; i <= len; ++i) + if (byts[startidx + i] != 0) + { + if (idxs[startidx + i] & SHARED_MASK) + idxs[startidx + i] &= ~SHARED_MASK; + else + { + idxs[startidx + i] = idx; + idx = read_tree(fd, byts, idxs, maxidx, idx); + if (idx < 0) + break; + } + } - return p; + return idx; } /* @@ -2226,9 +1150,9 @@ find_region(rp, region) /* * Return type of word: * w word 0 - * Word BWF_ONECAP - * W WORD BWF_ALLCAP - * WoRd wOrd BWF_KEEPCAP + * Word WF_ONECAP + * W WORD WF_ALLCAP + * WoRd wOrd WF_KEEPCAP */ static int captype(word, end) @@ -2268,19 +1192,19 @@ captype(word, end) { /* UUl -> KEEPCAP */ if (past_second && allcap) - return BWF_KEEPCAP; + return WF_KEEPCAP; allcap = FALSE; } else if (!allcap) /* UlU -> KEEPCAP */ - return BWF_KEEPCAP; + return WF_KEEPCAP; past_second = TRUE; } if (allcap) - return BWF_ALLCAP; + return WF_ALLCAP; if (firstcap) - return BWF_ONECAP; + return WF_ONECAP; return 0; } @@ -2316,20 +1240,6 @@ spell_reload() } # endif -/* - * Recognizing words uses a two-step mechanism: - * 1. Locate a basic word, made out of word characters only and separated by - * non-word characters. - * 2. When a basic word is found, check if (possibly required) additions - * before and after the word are present. - * - * Both mechanisms use affixes (prefixes and suffixes) to reduce the number of - * words. When no matching word was found in the hashtable the start of the - * word is checked for matching prefixes and the end of the word for matching - * suffixes. All matching affixes are removed and then the resulting word is - * searched for. If found it is checked if it supports the used affix. - */ - #if defined(FEAT_MBYTE) || defined(PROTO) /* @@ -2337,7 +1247,7 @@ spell_reload() * Only possible with the multi-byte feature. */ -#define MAXLINELEN 300 /* Maximum length in bytes of a line in a .aff +#define MAXLINELEN 500 /* Maximum length in bytes of a line in a .aff and .dic file. */ /* * Main structure to store the contents of a ".aff" file. @@ -2352,132 +1262,100 @@ typedef struct afffile_S } afffile_T; typedef struct affentry_S affentry_T; - -/* Affix header from ".aff" file. Used for af_pref and af_suff. */ -typedef struct affheader_S -{ - char_u ah_key[2]; /* key for hashtable == name of affix entry */ - int ah_combine; - affentry_T *ah_first; /* first affix entry */ - short_u ah_affnr; /* used in get_new_aff() */ -} affheader_T; - -#define HI2AH(hi) ((affheader_T *)(hi)->hi_key) - /* Affix entry from ".aff" file. Used for prefixes and suffixes. */ struct affentry_S { affentry_T *ae_next; /* next affix with same name/number */ char_u *ae_chop; /* text to chop off basic word (can be NULL) */ char_u *ae_add; /* text to add to basic word (can be NULL) */ - char_u *ae_add_nw; /* For a suffix: first non-word char in - * "ae_add"; for a prefix with only non-word - * chars: equal to "ae_add", for a prefix with - * word and non-word chars: first non-word - * char after word char. NULL otherwise. */ - char_u *ae_add_pw; /* For a prefix with both word and non-word - * chars: first word char. NULL otherwise. */ - char_u ae_preword; /* TRUE for a prefix with one word */ char_u *ae_cond; /* condition (NULL for ".") */ regprog_T *ae_prog; /* regexp program for ae_cond or NULL */ - short_u ae_affnr; /* for old affix: new affix number */ +}; + +/* Affix header from ".aff" file. Used for af_pref and af_suff. */ +typedef struct affheader_S +{ + char_u ah_key[2]; /* key for hashtable == name of affix entry */ + int ah_combine; /* suffix may combine with prefix */ + affentry_T *ah_first; /* first affix entry */ +} affheader_T; + +#define HI2AH(hi) ((affheader_T *)(hi)->hi_key) + +/* + * Structure that is used to store the items in the word tree. This avoids + * the need to keep track of each allocated thing, it's freed all at once + * after ":mkspell" is done. + */ +#define SBLOCKSIZE 16000 /* size of sb_data */ +typedef struct sblock_S sblock_T; +struct sblock_S +{ + sblock_T *sb_next; /* next block in list */ + int sb_used; /* nr of bytes already in use */ + char_u sb_data[1]; /* data, actually longer */ }; /* - * Structure to store a word from a ".dic" file. + * A node in the tree. */ -typedef struct dicword_S +typedef struct wordnode_S wordnode_T; +struct wordnode_S { - char_u *dw_affnm; /* original affix names */ - char_u dw_word[1]; /* actually longer: the word in 'encoding' */ -} dicword_T; - -static dicword_T dumdw; -#define HI2DW(hi) ((dicword_T *)((hi)->hi_key - (dumdw.dw_word - (char_u *)&dumdw))) - -/* - * Structure to store a basic word for the spell file. - * This is used for ":mkspell", not for spell checking. - */ -typedef struct basicword_S basicword_T; -struct basicword_S -{ - basicword_T *bw_next; /* next word with same basic word */ - basicword_T *bw_cnext; /* next word with same caps */ - int bw_flags; /* BWF_ flags */ - garray_T bw_prefix; /* table with prefix numbers */ - garray_T bw_suffix; /* table with suffix numbers */ - int bw_region; /* region bits */ - char_u *bw_caseword; /* keep-case word or NULL */ - char_u *bw_leadstring; /* must come before bw_word or NULL */ - char_u *bw_addstring; /* must come after bw_word or NULL */ - char_u bw_word[1]; /* actually longer: word case folded */ + char_u wn_hashkey[6]; /* room for the hash key */ + wordnode_T *wn_next; /* next node with same hash key */ + wordnode_T *wn_child; /* child (next byte in word) */ + wordnode_T *wn_sibling; /* next sibling (alternate byte in word, + always sorted) */ + wordnode_T *wn_wnode; /* parent node that will write this node */ + int wn_index; /* index in written nodes (valid after first + round) */ + char_u wn_byte; /* Byte for this node. NUL for word end */ + char_u wn_flags; /* when wn_byte is NUL: WF_ flags */ + char_u wn_region; /* when wn_byte is NUL: region mask */ }; -static basicword_T dumbw; -#define KEY2BW(p) ((basicword_T *)((p) - (dumbw.bw_word - (char_u *)&dumbw))) -#define HI2BW(hi) KEY2BW((hi)->hi_key) +#define HI2WN(hi) (wordnode_T *)((hi)->hi_key) -/* Store the affix number related with a certain string. */ -typedef struct affhash_S -{ - short_u as_nr; /* the affix nr */ - char_u as_word[1]; /* actually longer */ -} affhash_T; - -static affhash_T dumas; -#define HI2AS(hi) ((affhash_T *)((hi)->hi_key - (dumas.as_word - (char_u *)&dumas))) - -/* info for writing the spell file */ -typedef struct winfo_S +/* + * Info used while reading the spell files. + */ +typedef struct spellinfo_S { - FILE *wif_fd; - basicword_T *wif_prevbw; /* last written basic word */ - int wif_regionmask; /* regions supported */ - int wif_prefm; /* 1 or 2 bytes used for prefix NR */ - int wif_suffm; /* 1 or 2 bytes used for suffix NR */ - long wif_wcount; /* written word count */ - long wif_acount; /* written addition count */ - long wif_addmax; /* max number of additions on one word */ - char_u *wif_addmaxw; /* word with max additions */ -} winfo_T; + wordnode_T *si_foldroot; /* tree with case-folded words */ + wordnode_T *si_keeproot; /* tree with keep-case words */ + sblock_T *si_blocks; /* memory blocks used */ + int si_ascii; /* handling only ASCII words */ + int si_region; /* region mask */ + vimconv_T si_conv; /* for conversion to 'encoding' */ +} spellinfo_T; - -static afffile_T *spell_read_aff __ARGS((char_u *fname, vimconv_T *conv, int ascii)); -static void spell_free_aff __ARGS((afffile_T *aff)); +static afffile_T *spell_read_aff __ARGS((char_u *fname, spellinfo_T *spin)); static int has_non_ascii __ARGS((char_u *s)); -static int spell_read_dic __ARGS((hashtab_T *ht, char_u *fname, vimconv_T *conv, int ascii)); -static int get_new_aff __ARGS((hashtab_T *oldaff, garray_T *gap, int prefix)); -static void spell_free_dic __ARGS((hashtab_T *dic)); -static int same_affentries __ARGS((affheader_T *ah1, affheader_T *ah2)); -static void add_affhash __ARGS((hashtab_T *ht, char_u *key, int newnr)); -static void clear_affhash __ARGS((hashtab_T *ht)); -static void trans_affixes __ARGS((dicword_T *dw, basicword_T *bw, afffile_T *oldaff, hashtab_T *newwords)); -static int build_wordlist __ARGS((hashtab_T *newwords, hashtab_T *oldwords, afffile_T *oldaff, int regionmask)); -static basicword_T *get_basicword __ARGS((char_u *word, int asize)); -static void combine_regions __ARGS((hashtab_T *newwords)); -static int same_affixes __ARGS((basicword_T *bw, basicword_T *nbw)); -static int expand_affixes __ARGS((hashtab_T *newwords, garray_T *prefgap, garray_T *suffgap)); -static int expand_one_aff __ARGS((basicword_T *bw, garray_T *add_words, affentry_T *pae, affentry_T *sae)); -static int add_to_wordlist __ARGS((hashtab_T *newwords, basicword_T *bw)); -static void write_affix __ARGS((FILE *fd, affheader_T *ah)); -static void write_affixlist __ARGS((FILE *fd, garray_T *aff, int bytes)); -static void write_vim_spell __ARGS((char_u *fname, garray_T *prefga, garray_T *suffga, hashtab_T *newwords, int regcount, char_u *regchars, int ascii)); -static void write_bword __ARGS((winfo_T *wif, basicword_T *bw, int lowcap)); -static void free_wordtable __ARGS((hashtab_T *ht)); -static void free_basicword __ARGS((basicword_T *bw)); -static void free_affixentries __ARGS((affentry_T *first)); -static void free_affix_entry __ARGS((affentry_T *ap)); +static void spell_free_aff __ARGS((afffile_T *aff)); +static int spell_read_dic __ARGS((char_u *fname, spellinfo_T *spin, afffile_T *affile)); +static int store_aff_word __ARGS((char_u *word, spellinfo_T *spin, char_u *afflist, hashtab_T *ht, hashtab_T *xht, int comb)); +static int spell_read_wordfile __ARGS((char_u *fname, spellinfo_T *spin)); +static void *getroom __ARGS((sblock_T **blp, size_t len)); +static char_u *getroom_save __ARGS((sblock_T **blp, char_u *s)); +static void free_blocks __ARGS((sblock_T *bl)); +static wordnode_T *wordtree_alloc __ARGS((sblock_T **blp)); +static int store_word __ARGS((char_u *word, spellinfo_T *spin)); +static int tree_add_word __ARGS((char_u *word, wordnode_T *tree, int flags, int region, sblock_T **blp)); +static void wordtree_compress __ARGS((wordnode_T *root)); +static int node_compress __ARGS((wordnode_T *node, hashtab_T *ht, int *tot)); +static int node_equal __ARGS((wordnode_T *n1, wordnode_T *n2)); +static void write_vim_spell __ARGS((char_u *fname, spellinfo_T *spin, int regcount, char_u *regchars)); +static int put_tree __ARGS((FILE *fd, wordnode_T *node, int index, int regionmask)); /* * Read an affix ".aff" file. * Returns an afffile_T, NULL for failure. */ static afffile_T * -spell_read_aff(fname, conv, ascii) +spell_read_aff(fname, spin) char_u *fname; - vimconv_T *conv; /* info for encoding conversion */ - int ascii; /* Only accept ASCII characters */ + spellinfo_T *spin; { FILE *fd; afffile_T *aff; @@ -2495,6 +1373,9 @@ spell_read_aff(fname, conv, ascii) char_u *fol = NULL; char_u *upp = NULL; + /* + * Open the file. + */ fd = fopen((char *)fname, "r"); if (fd == NULL) { @@ -2505,7 +1386,10 @@ spell_read_aff(fname, conv, ascii) smsg((char_u *)_("Reading affix file %s..."), fname); out_flush(); - aff = (afffile_T *)alloc_clear((unsigned)sizeof(afffile_T)); + /* + * Allocate and init the afffile_T structure. + */ + aff = (afffile_T *)getroom(&spin->si_blocks, sizeof(afffile_T)); if (aff == NULL) return NULL; hash_init(&aff->af_pref); @@ -2526,9 +1410,9 @@ spell_read_aff(fname, conv, ascii) /* Convert from "SET" to 'encoding' when needed. */ vim_free(pc); - if (conv->vc_type != CONV_NONE) + if (spin->si_conv.vc_type != CONV_NONE) { - pc = string_convert(conv, rline, NULL); + pc = string_convert(&spin->si_conv, rline, NULL); if (pc == NULL) { smsg((char_u *)_("Conversion failure for word in %s line %d: %s"), @@ -2552,8 +1436,10 @@ spell_read_aff(fname, conv, ascii) ++p; if (*p == NUL) break; + if (itemcnt == 6) /* too many items */ + break; items[itemcnt++] = p; - while (*p > ' ') /* skip until white space or CR/NL */ + while (*p > ' ') /* skip until white space or CR/NL */ ++p; if (*p == NUL) break; @@ -2566,29 +1452,27 @@ spell_read_aff(fname, conv, ascii) if (STRCMP(items[0], "SET") == 0 && itemcnt == 2 && aff->af_enc == NULL) { - if (aff->af_enc != NULL) - smsg((char_u *)_("Duplicate SET line ignored in %s line %d: %s"), - fname, lnum, line); - else - { - /* Setup for conversion from "ENC" to 'encoding'. */ - aff->af_enc = enc_canonize(items[1]); - if (aff->af_enc != NULL && !ascii - && convert_setup(conv, aff->af_enc, p_enc) == FAIL) - smsg((char_u *)_("Conversion in %s not supported: from %s to %s"), - fname, aff->af_enc, p_enc); - } + /* Setup for conversion from "ENC" to 'encoding'. */ + aff->af_enc = enc_canonize(items[1]); + if (aff->af_enc != NULL && !spin->si_ascii + && convert_setup(&spin->si_conv, aff->af_enc, + p_enc) == FAIL) + smsg((char_u *)_("Conversion in %s not supported: from %s to %s"), + fname, aff->af_enc, p_enc); } else if (STRCMP(items[0], "TRY") == 0 && itemcnt == 2 && aff->af_try == NULL) - aff->af_try = vim_strsave(items[1]); + { + aff->af_try = getroom_save(&spin->si_blocks, items[1]); + } else if ((STRCMP(items[0], "PFX") == 0 || STRCMP(items[0], "SFX") == 0) && aff_todo == 0 && itemcnt == 4) { /* New affix letter. */ - cur_aff = (affheader_T *)alloc((unsigned)sizeof(affheader_T)); + cur_aff = (affheader_T *)getroom(&spin->si_blocks, + sizeof(affheader_T)); if (cur_aff == NULL) break; cur_aff->ah_key[0] = *items[1]; @@ -2598,27 +1482,22 @@ spell_read_aff(fname, conv, ascii) fname, lnum, items[1]); if (*items[2] == 'Y') cur_aff->ah_combine = TRUE; - else if (*items[2] == 'N') - cur_aff->ah_combine = FALSE; - else if (p_verbose > 0) - { - verbose_enter(); + else if (*items[2] != 'N') smsg((char_u *)_("Expected Y or N in %s line %d: %s"), fname, lnum, items[2]); - verbose_leave(); - } - cur_aff->ah_first = NULL; if (*items[0] == 'P') tp = &aff->af_pref; else tp = &aff->af_suff; + aff_todo = atoi((char *)items[3]); if (!HASHITEM_EMPTY(hash_find(tp, cur_aff->ah_key))) + { smsg((char_u *)_("Duplicate affix in %s line %d: %s"), fname, lnum, items[1]); + aff_todo = 0; + } else hash_add(tp, cur_aff->ah_key); - - aff_todo = atoi((char *)items[3]); } else if ((STRCMP(items[0], "PFX") == 0 || STRCMP(items[0], "SFX") == 0) @@ -2630,38 +1509,39 @@ spell_read_aff(fname, conv, ascii) /* New item for an affix letter. */ --aff_todo; - aff_entry = (affentry_T *)alloc_clear( - (unsigned)sizeof(affentry_T)); + aff_entry = (affentry_T *)getroom(&spin->si_blocks, + sizeof(affentry_T)); if (aff_entry == NULL) break; if (STRCMP(items[2], "0") != 0) - aff_entry->ae_chop = vim_strsave(items[2]); + aff_entry->ae_chop = getroom_save(&spin->si_blocks, + items[2]); if (STRCMP(items[3], "0") != 0) - aff_entry->ae_add = vim_strsave(items[3]); - if (STRCMP(items[4], ".") != 0) - { - char_u buf[MAXLINELEN]; + aff_entry->ae_add = getroom_save(&spin->si_blocks, + items[3]); - aff_entry->ae_cond = vim_strsave(items[4]); - if (*items[0] == 'P') - sprintf((char *)buf, "^%s", items[4]); - else - sprintf((char *)buf, "%s$", items[4]); - aff_entry->ae_prog = vim_regcomp(buf, RE_MAGIC + RE_STRING); - } - - if (ascii && (has_non_ascii(aff_entry->ae_chop) + /* Don't use an affix entry with non-ASCII characters when + * "spin->si_ascii" is TRUE. */ + if (!spin->si_ascii || !(has_non_ascii(aff_entry->ae_chop) || has_non_ascii(aff_entry->ae_add))) { - /* Don't use an affix entry with non-ASCII characters when - * "ascii" is TRUE. */ - free_affix_entry(aff_entry); - } - else - { aff_entry->ae_next = cur_aff->ah_first; cur_aff->ah_first = aff_entry; + + if (STRCMP(items[4], ".") != 0) + { + char_u buf[MAXLINELEN]; + + aff_entry->ae_cond = getroom_save(&spin->si_blocks, + items[4]); + if (*items[0] == 'P') + sprintf((char *)buf, "^%s", items[4]); + else + sprintf((char *)buf, "%s$", items[4]); + aff_entry->ae_prog = vim_regcomp(buf, + RE_MAGIC + RE_STRING); + } } } else if (STRCMP(items[0], "FOL") == 0 && itemcnt == 2) @@ -2698,26 +1578,21 @@ spell_read_aff(fname, conv, ascii) if (ga_grow(&aff->af_rep, 1) == FAIL) break; rp = ((repentry_T *)aff->af_rep.ga_data) + aff->af_rep.ga_len; - rp->re_from = vim_strsave(items[1]); - rp->re_to = vim_strsave(items[2]); + rp->re_from = getroom_save(&spin->si_blocks, items[1]); + rp->re_to = getroom_save(&spin->si_blocks, items[2]); ++aff->af_rep.ga_len; } - else if (p_verbose > 0) - { - verbose_enter(); + else smsg((char_u *)_("Unrecognized item in %s line %d: %s"), fname, lnum, items[0]); - verbose_leave(); - } } - } if (fol != NULL || low != NULL || upp != NULL) { /* Don't write a word table for an ASCII file, so that we don't check * for conflicts with a word table that matches 'encoding'. */ - if (!ascii) + if (!spin->si_ascii) { if (fol == NULL || low == NULL || upp == NULL) smsg((char_u *)_("Missing FOL/LOW/UPP line in %s"), fname); @@ -2762,13 +1637,12 @@ spell_free_aff(aff) hashtab_T *ht; hashitem_T *hi; int todo; - int i; - repentry_T *rp; affheader_T *ah; + affentry_T *ae; vim_free(aff->af_enc); - vim_free(aff->af_try); + /* All this trouble to foree the "ae_prog" items... */ for (ht = &aff->af_pref; ; ht = &aff->af_suff) { todo = ht->ht_used; @@ -2778,42 +1652,33 @@ spell_free_aff(aff) { --todo; ah = HI2AH(hi); - free_affixentries(ah->ah_first); - vim_free(ah); + for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) + vim_free(ae->ae_prog); } } if (ht == &aff->af_suff) break; } + hash_clear(&aff->af_pref); hash_clear(&aff->af_suff); - - for (i = 0; i < aff->af_rep.ga_len; ++i) - { - rp = ((repentry_T *)aff->af_rep.ga_data) + i; - vim_free(rp->re_from); - vim_free(rp->re_to); - } ga_clear(&aff->af_rep); - - vim_free(aff); } /* - * Read a dictionary ".dic" file. + * Read dictionary file "fname". * Returns OK or FAIL; - * Each entry in the hashtab_T is a dicword_T. */ static int -spell_read_dic(ht, fname, conv, ascii) - hashtab_T *ht; +spell_read_dic(fname, spin, affile) char_u *fname; - vimconv_T *conv; /* info for encoding conversion */ - int ascii; /* only accept ASCII words */ + spellinfo_T *spin; + afffile_T *affile; { + hashtab_T ht; char_u line[MAXLINELEN]; - char_u *p; - dicword_T *dw; + char_u *afflist; + char_u *dw; char_u *pc; char_u *w; int l; @@ -2821,7 +1686,13 @@ spell_read_dic(ht, fname, conv, ascii) hashitem_T *hi; FILE *fd; int lnum = 1; + int non_ascii = 0; + int retval = OK; + char_u message[MAXLINELEN + MAXWLEN]; + /* + * Open the file. + */ fd = fopen((char *)fname, "r"); if (fd == NULL) { @@ -2829,6 +1700,9 @@ spell_read_dic(ht, fname, conv, ascii) return FAIL; } + /* The hashtable is only used to detect duplicated words. */ + hash_init(&ht); + smsg((char_u *)_("Reading dictionary file %s..."), fname); out_flush(); @@ -2847,7 +1721,8 @@ spell_read_dic(ht, fname, conv, ascii) line_breakcheck(); ++lnum; - /* Remove CR, LF and white space from end. */ + /* Remove CR, LF and white space from the end. White space halfway + * the word is kept to allow e.g., "et al.". */ l = STRLEN(line); while (l > 0 && line[l - 1] <= ' ') --l; @@ -2855,19 +1730,35 @@ spell_read_dic(ht, fname, conv, ascii) continue; /* empty line */ line[l] = NUL; + /* This takes time, print a message now and then. */ + if ((lnum & 0x3ff) == 0) + { + vim_snprintf((char *)message, sizeof(message), + _("line %6d - %s"), lnum, line); + msg_start(); + msg_outtrans_attr(message, 0); + msg_clr_eos(); + msg_didout = FALSE; + msg_col = 0; + out_flush(); + } + /* Find the optional affix names. */ - p = vim_strchr(line, '/'); - if (p != NULL) - *p++ = NUL; + afflist = vim_strchr(line, '/'); + if (afflist != NULL) + *afflist++ = NUL; - /* Skip non-ASCII words when "ascii" is TRUE. */ - if (ascii && has_non_ascii(line)) + /* Skip non-ASCII words when "spin->si_ascii" is TRUE. */ + if (spin->si_ascii && has_non_ascii(line)) + { + ++non_ascii; continue; + } /* Convert from "SET" to 'encoding' when needed. */ - if (conv->vc_type != CONV_NONE) + if (spin->si_conv.vc_type != CONV_NONE) { - pc = string_convert(conv, line, NULL); + pc = string_convert(&spin->si_conv, line, NULL); if (pc == NULL) { smsg((char_u *)_("Conversion failure for word in %s line %d: %s"), @@ -2882,285 +1773,146 @@ spell_read_dic(ht, fname, conv, ascii) w = line; } - dw = (dicword_T *)alloc_clear((unsigned)sizeof(dicword_T) - + STRLEN(w)); + /* Store the word in the hashtable to be able to find duplicates. */ + dw = (char_u *)getroom_save(&spin->si_blocks, w); if (dw == NULL) - { - vim_free(pc); + retval = FAIL; + vim_free(pc); + if (retval == FAIL) break; - } - STRCPY(dw->dw_word, w); - vim_free(pc); - hash = hash_hash(dw->dw_word); - hi = hash_lookup(ht, dw->dw_word, hash); + hash = hash_hash(dw); + hi = hash_lookup(&ht, dw, hash); if (!HASHITEM_EMPTY(hi)) smsg((char_u *)_("Duplicate word in %s line %d: %s"), - fname, lnum, line); + fname, lnum, line); else - hash_add_item(ht, hi, dw->dw_word, hash); + hash_add_item(&ht, hi, dw, hash); + + /* Add the word to the word tree(s). */ + if (store_word(dw, spin) == FAIL) + retval = FAIL; - if (p != NULL) - dw->dw_affnm = vim_strsave(p); + if (afflist != NULL) + { + /* Find all matching suffixes and add the resulting words. + * Additionally do matching prefixes that combine. */ + if (store_aff_word(dw, spin, afflist, + &affile->af_suff, &affile->af_pref, FALSE) == FAIL) + retval = FAIL; + + /* Find all matching prefixes and add the resulting words. */ + if (store_aff_word(dw, spin, afflist, + &affile->af_pref, NULL, FALSE) == FAIL) + retval = FAIL; + } } + if (spin->si_ascii && non_ascii > 0) + smsg((char_u *)_("Ignored %d words with non-ASCII characters"), + non_ascii); + hash_clear(&ht); + fclose(fd); - return OK; + return retval; } /* - * Free the structure filled by spell_read_dic(). + * Apply affixes to a word and store the resulting words. + * "ht" is the hashtable with affentry_T that need to be applied, either + * prefixes or suffixes. + * "xht", when not NULL, is the prefix hashtable, to be used additionally on + * the resulting words for combining affixes. + * + * Returns FAIL when out of memory. */ - static void -spell_free_dic(dic) - hashtab_T *dic; + static int +store_aff_word(word, spin, afflist, ht, xht, comb) + char_u *word; /* basic word start */ + spellinfo_T *spin; /* spell info */ + char_u *afflist; /* list of names of supported affixes */ + hashtab_T *ht; + hashtab_T *xht; + int comb; /* only use affixes that combine */ { int todo; - dicword_T *dw; hashitem_T *hi; + affheader_T *ah; + affentry_T *ae; + regmatch_T regmatch; + char_u newword[MAXWLEN]; + int retval = OK; + int i; + char_u *p; - todo = dic->ht_used; - for (hi = dic->ht_array; todo > 0; ++hi) + todo = ht->ht_used; + for (hi = ht->ht_array; todo > 0 && retval == OK; ++hi) { if (!HASHITEM_EMPTY(hi)) { --todo; - dw = HI2DW(hi); - vim_free(dw->dw_affnm); - vim_free(dw); - } - } - hash_clear(dic); -} - -/* - * Take the affixes read by spell_read_aff() and add them to the new list. - * Attempts to re-use the same number for identical affixes (ignoring the - * condition, since we remove that). That is especially important when using - * multiple regions. - * Returns OK or FAIL; - */ - static int -get_new_aff(oldaff, gap, prefix) - hashtab_T *oldaff; /* hashtable with affheader_T */ - garray_T *gap; /* table with new affixes */ - int prefix; /* TRUE when doing prefixes, FALSE for - suffixes */ -{ - int oldtodo; - affheader_T *oldah, *newah, *gapah; - affentry_T *oldae, *newae; - hashitem_T *oldhi; - hashitem_T *hi; - hashtab_T condht; /* conditions already found */ - char_u condkey[MAXLINELEN]; - int newnr; - int gapnr; - int retval = OK; - char_u *p; - garray_T tga; - int preword; + ah = HI2AH(hi); - /* - * Loop over all the old affix names. - */ - oldtodo = oldaff->ht_used; - for (oldhi = oldaff->ht_array; oldtodo > 0 && retval == OK; ++oldhi) - { - if (!HASHITEM_EMPTY(oldhi)) - { - --oldtodo; - oldah = (affheader_T *)oldhi->hi_key; - - /* Put entries with the same condition under the same new affix - * nr in "tga". Use hashtable "condht" to find them. */ - ga_init2(&tga, sizeof(affheader_T), 10); - hash_init(&condht); - - /* - * Loop over all affixes with the same name. - * The affixes with the same condition will get the same number, - * since they can be used with the same words. - * 1. build the lists of new affentry_T, with the headers in "tga". - * 2. Check if some of the lists already exist in "gap", re-use - * their number. - * 3. Assign the new numbers to the old affixes. - */ - - /* 1. build the lists of new affentry_T. */ - for (oldae = oldah->ah_first; oldae != NULL && retval == OK; - oldae = oldae->ae_next) + /* Check that the affix combines, if required, and that the word + * supports this affix. */ + if ((!comb || ah->ah_combine) + && vim_strchr(afflist, *ah->ah_key) != NULL) { - preword = FALSE; - oldae->ae_add_nw = NULL; - oldae->ae_add_pw = NULL; - if (oldae->ae_add != NULL) + /* Loop over all affix entries with this name. */ + for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) { - /* Check for non-word characters in the affix. If there - * is one a suffix will be turned into an addition, a - * prefix may be turned into a leadstring. - * This is stored with the old affix, that is where - * trans_affixes() will check. */ - for (p = oldae->ae_add; *p != NUL; mb_ptr_adv(p)) - if (!spell_iswordc(p)) + /* Check the condition. It's not logical to match case + * here, but it is required for compatibility with + * Myspell. */ + regmatch.regprog = ae->ae_prog; + regmatch.rm_ic = FALSE; + if (ae->ae_prog == NULL + || vim_regexec(®match, word, (colnr_T)0)) + { + /* Match. Remove the chop and add the affix. */ + if (xht == NULL) { - oldae->ae_add_nw = p; - break; + /* prefix: chop/add at the start of the word */ + if (ae->ae_add == NULL) + *newword = NUL; + else + STRCPY(newword, ae->ae_add); + p = word; + if (ae->ae_chop != NULL) + /* Skip chop string. */ + for (i = mb_charlen(ae->ae_chop); i > 0; --i) + mb_ptr_adv(p); + STRCAT(newword, p); + } + else + { + /* suffix: chop/add at the end of the word */ + STRCPY(newword, word); + if (ae->ae_chop != NULL) + { + /* Remove chop string. */ + p = newword + STRLEN(newword); + for (i = mb_charlen(ae->ae_chop); i > 0; --i) + mb_ptr_back(newword, p); + *p = NUL; + } + if (ae->ae_add != NULL) + STRCAT(newword, ae->ae_add); } - if (prefix && oldae->ae_add_nw != NULL) - { - /* If a prefix has non-word characters special - * treatment is necessary: - * - If it has only non-word characters it becomes a - * leadstring. - * - If it has a sequence of word characters followed - * by a non-word char it becomes a "preword": "d'", - * "de-", "d'ai", etc. - * - if it has another mix of word and non-word - * characters the part before the last word char - * becomes a leadstring: "'d", etc. - */ - for (p = oldae->ae_add; *p != NUL; mb_ptr_adv(p)) - if (spell_iswordc(p)) - { - oldae->ae_add_pw = p; - break; - } - if (oldae->ae_add_pw != NULL) - { - /* Mixed prefix, set ae_add_nw to first non-word - * char after ae_add_pw (if there is one). */ - oldae->ae_add_nw = NULL; - for ( ; *p != NUL; mb_ptr_adv(p)) - if (!spell_iswordc(p)) - { - oldae->ae_add_nw = p; - break; - } - if (oldae->ae_add_nw != NULL) - { - preword = TRUE; - oldae->ae_add_pw = NULL; - oldae->ae_add_nw = NULL; - } - } - } - } + /* Store the modified word. */ + if (store_word(newword, spin) == FAIL) + retval = FAIL; - if (oldae->ae_cond == NULL) - /* hashtable requires a non-empty key */ - STRCPY(condkey, "---"); - else - STRCPY(condkey, oldae->ae_cond); - - /* Look for an existing list with this name and condition. */ - hi = hash_find(&condht, condkey); - if (!HASHITEM_EMPTY(hi)) - /* Match with existing affix, use that one. */ - newnr = HI2AS(hi)->as_nr; - else - { - /* Add a new affix number. */ - newnr = tga.ga_len; - if (ga_grow(&tga, 1) == FAIL) - retval = FAIL; - else - { - newah = ((affheader_T *)tga.ga_data) + newnr; - newah->ah_combine = oldah->ah_combine; - newah->ah_first = NULL; - ++tga.ga_len; - - /* Add the new list to the condht hashtable. */ - add_affhash(&condht, condkey, newnr); + /* When added a suffix and combining is allowed also + * try adding prefixes additionally. */ + if (xht != NULL && ah->ah_combine) + if (store_aff_word(newword, spin, afflist, + xht, NULL, TRUE) == FAIL) + retval = FAIL; } } - - /* Add the new affentry_T to the list. */ - newah = ((affheader_T *)tga.ga_data) + newnr; - newae = (affentry_T *)alloc_clear((unsigned)sizeof(affentry_T)); - if (newae == NULL) - retval = FAIL; - else - { - newae->ae_next = newah->ah_first; - newah->ah_first = newae; - if (oldae->ae_chop == NULL) - newae->ae_chop = NULL; - else - newae->ae_chop = vim_strsave(oldae->ae_chop); - if (oldae->ae_add == NULL) - newae->ae_add = NULL; - else - newae->ae_add = vim_strsave(oldae->ae_add); - newae->ae_preword = preword; - - /* The condition is not copied, since the new affix is - * only used for words where the condition matches. */ - } } - - /* 2. Check if some of the lists already exist, re-use their - * number. Otherwise add the list to "gap". */ - for (newnr = 0; newnr < tga.ga_len; ++newnr) - { - newah = ((affheader_T *)tga.ga_data) + newnr; - for (gapnr = 0; gapnr < gap->ga_len; ++gapnr) - { - gapah = ((affheader_T *)gap->ga_data) + gapnr; - if (newah->ah_combine == gapah->ah_combine - && same_affentries(newah, gapah)) - /* Found an existing affheader_T entry with same - * affentry_T list, use its number. */ - break; - } - - newah->ah_affnr = gapnr; - if (gapnr == gap->ga_len) - { - /* This is a new affentry_T list, add it. */ - if (ga_grow(gap, 1) == FAIL) - retval = FAIL; - else - { - *(((affheader_T *)gap->ga_data) + gap->ga_len) = *newah; - ++gap->ga_len; - } - } - else - { - /* free unused affentry_T list */ - free_affixentries(newah->ah_first); - } - } - - /* 3. Assign the new affix numbers to the old affixes. */ - for (oldae = oldah->ah_first; oldae != NULL && retval == OK; - oldae = oldae->ae_next) - { - if (oldae->ae_cond == NULL) - /* hashtable requires a non-empty key */ - STRCPY(condkey, "---"); - else - STRCPY(condkey, oldae->ae_cond); - - /* Look for an existing affix with this name and condition. */ - hi = hash_find(&condht, condkey); - if (!HASHITEM_EMPTY(hi)) - /* Match with existing affix, use that one. */ - newnr = HI2AS(hi)->as_nr; - else - { - EMSG(_(e_internal)); - retval = FAIL; - } - newah = ((affheader_T *)tga.ga_data) + newnr; - oldae->ae_affnr = newah->ah_affnr; - } - - ga_clear(&tga); - clear_affhash(&condht); } } @@ -3168,962 +1920,428 @@ get_new_aff(oldaff, gap, prefix) } /* - * Return TRUE if the affentry_T lists for "ah1" and "ah2" contain the same - * items, ignoring the order. - * Only compares the chop and add strings, not the condition. + * Read a file with a list of words. */ static int -same_affentries(ah1, ah2) - affheader_T *ah1; - affheader_T *ah2; +spell_read_wordfile(fname, spin) + char_u *fname; + spellinfo_T *spin; { - affentry_T *ae1, *ae2; + FILE *fd; + long lnum = 0; + char_u rline[MAXLINELEN]; + char_u *line; + char_u *pc = NULL; + int l; + int retval = OK; + int did_word = FALSE; + int non_ascii = 0; + char_u *enc; - /* Check the length of the lists first. */ - ae2 = ah2->ah_first; - for (ae1 = ah1->ah_first; ae1 != NULL; ae1 = ae1->ae_next) + /* + * Open the file. + */ + fd = fopen((char *)fname, "r"); + if (fd == NULL) { - if (ae2 == NULL) - return FALSE; /* "ah1" list is longer */ - ae2 = ae2->ae_next; - } - if (ae2 != NULL) - return FALSE; /* "ah2" list is longer */ - - /* Check that each entry in "ah1" appears in "ah2". */ - for (ae1 = ah1->ah_first; ae1 != NULL; ae1 = ae1->ae_next) - { - for (ae2 = ah2->ah_first; ae2 != NULL; ae2 = ae2->ae_next) - { - if ((ae1->ae_chop == NULL) == (ae2->ae_chop == NULL) - && (ae1->ae_add == NULL) == (ae2->ae_add == NULL) - && (ae1->ae_chop == NULL - || STRCMP(ae1->ae_chop, ae2->ae_chop) == 0) - && (ae1->ae_add == NULL - || STRCMP(ae1->ae_add, ae2->ae_add) == 0)) - break; - } - if (ae2 == NULL) - return FALSE; + EMSG2(_(e_notopen), fname); + return FAIL; } - return TRUE; + smsg((char_u *)_("Reading word file %s..."), fname); + out_flush(); + + /* + * Read all the lines in the file one by one. + */ + while (!vim_fgets(rline, MAXLINELEN, fd) && !got_int) + { + line_breakcheck(); + ++lnum; + + /* Skip comment lines. */ + if (*rline == '#') + continue; + + /* Remove CR, LF and white space from the end. */ + l = STRLEN(rline); + while (l > 0 && rline[l - 1] <= ' ') + --l; + if (l == 0) + continue; /* empty or blank line */ + rline[l] = NUL; + + /* Convert from "=encoding={encoding}" to 'encoding' when needed. */ + vim_free(pc); + if (spin->si_conv.vc_type != CONV_NONE) + { + pc = string_convert(&spin->si_conv, rline, NULL); + if (pc == NULL) + { + smsg((char_u *)_("Conversion failure for word in %s line %d: %s"), + fname, lnum, rline); + continue; + } + line = pc; + } + else + { + pc = NULL; + line = rline; + } + + if (*line == '=') + { + if (STRNCMP(line + 1, "encoding=", 9) == 0) + { + if (spin->si_conv.vc_type != CONV_NONE) + smsg((char_u *)_("Duplicate =encoding= line ignored in %s line %d: %s"), + fname, lnum, line); + else if (did_word) + smsg((char_u *)_("=encoding= line after word ignored in %s line %d: %s"), + fname, lnum, line); + else + { + /* Setup for conversion to 'encoding'. */ + enc = enc_canonize(line + 10); + if (enc != NULL && !spin->si_ascii + && convert_setup(&spin->si_conv, enc, + p_enc) == FAIL) + smsg((char_u *)_("Conversion in %s not supported: from %s to %s"), + fname, line + 10, p_enc); + vim_free(enc); + } + } + else + smsg((char_u *)_("= line ignored in %s line %d: %s"), + fname, lnum, line); + continue; + } + + /* Skip non-ASCII words when "spin->si_ascii" is TRUE. */ + if (spin->si_ascii && has_non_ascii(line)) + { + ++non_ascii; + continue; + } + + /* Normal word: store it. */ + if (store_word(line, spin) == FAIL) + { + retval = FAIL; + break; + } + did_word = TRUE; + } + + vim_free(pc); + fclose(fd); + + if (spin->si_ascii && non_ascii > 0) + smsg((char_u *)_("Ignored %d words with non-ASCII characters"), + non_ascii); + return retval; } /* - * Add a chop/add or cond hashtable entry. + * Get part of an sblock_T, "len" bytes long. + * This avoids calling free() for every little struct we use. + * The memory is cleared to all zeros. + * Returns NULL when out of memory. + */ + static void * +getroom(blp, len) + sblock_T **blp; + size_t len; /* length needed */ +{ + char_u *p; + sblock_T *bl = *blp; + + if (bl == NULL || bl->sb_used + len > SBLOCKSIZE) + { + /* Allocate a block of memory. This is not freed until much later. */ + bl = (sblock_T *)alloc_clear((unsigned)(sizeof(sblock_T) + SBLOCKSIZE)); + if (bl == NULL) + return NULL; + bl->sb_next = *blp; + *blp = bl; + bl->sb_used = 0; + } + + p = bl->sb_data + bl->sb_used; + bl->sb_used += len; + + return p; +} + +/* + * Make a copy of a string into memory allocated with getroom(). + */ + static char_u * +getroom_save(blp, s) + sblock_T **blp; + char_u *s; +{ + char_u *sc; + + sc = (char_u *)getroom(blp, STRLEN(s) + 1); + if (sc != NULL) + STRCPY(sc, s); + return sc; +} + + +/* + * Free the list of allocated sblock_T. */ static void -add_affhash(ht, key, newnr) - hashtab_T *ht; - char_u *key; - int newnr; +free_blocks(bl) + sblock_T *bl; { - affhash_T *as; + sblock_T *next; - as = (affhash_T *)alloc((unsigned)sizeof(affhash_T) + STRLEN(key)); - if (as != NULL) + while (bl != NULL) { - as->as_nr = newnr; - STRCPY(as->as_word, key); - hash_add(ht, as->as_word); + next = bl->sb_next; + vim_free(bl); + bl = next; } } /* - * Clear the chop/add hashtable used to detect identical affixes. + * Allocate the root of a word tree. */ - static void -clear_affhash(ht) - hashtab_T *ht; + static wordnode_T * +wordtree_alloc(blp) + sblock_T **blp; { - int todo; - hashitem_T *hi; - - todo = ht->ht_used; - for (hi = ht->ht_array; todo > 0; ++hi) - { - if (!HASHITEM_EMPTY(hi)) - { - --todo; - vim_free(HI2AS(hi)); - } - } - hash_clear(ht); + return (wordnode_T *)getroom(blp, sizeof(wordnode_T)); } /* - * Translate list of affix names for an old word to affix numbers in a new - * basic word. - * This checks if the conditions match with the old word. The result is that - * the new affix does not need to store the condition. - */ - static void -trans_affixes(dw, bw, oldaff, newwords) - dicword_T *dw; /* old word */ - basicword_T *bw; /* basic word */ - afffile_T *oldaff; /* affixes for "oldwords" */ - hashtab_T *newwords; /* table with words */ -{ - char_u key[2]; - char_u *p; - char_u *affnm; - garray_T *gap, *agap; - hashitem_T *aff_hi; - affheader_T *ah; - affentry_T *ae; - regmatch_T regmatch; - int i; - basicword_T *nbw; - int alen; - garray_T suffixga; /* list of words with non-word suffixes */ - garray_T prefixga; /* list of words with non-word prefixes */ - char_u nword[MAXWLEN]; - int flags; - int n; - - ga_init2(&suffixga, (int)sizeof(basicword_T *), 5); - ga_init2(&prefixga, (int)sizeof(basicword_T *), 5); - - /* Loop over all the affix names of the old word. */ - key[1] = NUL; - for (affnm = dw->dw_affnm; *affnm != NUL; ++affnm) - { - key[0] = *affnm; - aff_hi = hash_find(&oldaff->af_pref, key); - if (!HASHITEM_EMPTY(aff_hi)) - gap = &bw->bw_prefix; /* found a prefix */ - else - { - gap = &bw->bw_suffix; /* must be a suffix */ - aff_hi = hash_find(&oldaff->af_suff, key); - if (HASHITEM_EMPTY(aff_hi)) - { - smsg((char_u *)_("No affix entry '%s' for word %s"), - key, dw->dw_word); - continue; - } - } - - /* Loop over all the affix entries for this affix name. */ - ah = HI2AH(aff_hi); - for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) - { - /* Setup for regexp matching. Note that we don't ignore case. - * This is weird, because the rules in an .aff file don't care - * about case, but it's necessary for compatibility with Myspell. - */ - regmatch.regprog = ae->ae_prog; - regmatch.rm_ic = FALSE; - if (ae->ae_prog == NULL - || vim_regexec(®match, dw->dw_word, (colnr_T)0)) - { - if ((ae->ae_add_nw != NULL || ae->ae_add_pw != NULL) - && (gap != &bw->bw_suffix || bw->bw_addstring == NULL)) - { - /* - * Affix has a non-word character and isn't prepended to - * leader or appended to addition. Need to use another - * word with a leadstring and/or addstring. - */ - if (gap == &bw->bw_suffix || ae->ae_add_nw == NULL) - { - /* Suffix or prefix with only non-word chars. - * Build the new basic word in "nword": Remove chop - * string and append/prepend addition. */ - if (gap == &bw->bw_suffix) - { - /* suffix goes at the end of the word */ - STRCPY(nword, dw->dw_word); - if (ae->ae_chop != NULL) - { - /* Remove chop string. */ - p = nword + STRLEN(nword); - for (i = mb_charlen(ae->ae_chop); i > 0; --i) - mb_ptr_back(nword, p); - *p = NUL; - } - STRCAT(nword, ae->ae_add); - agap = &suffixga; - } - else - { - /* prefix goes before the word */ - STRCPY(nword, ae->ae_add); - p = dw->dw_word; - if (ae->ae_chop != NULL) - /* Skip chop string. */ - for (i = mb_charlen(ae->ae_chop); i > 0; --i) - mb_ptr_adv( p); - STRCAT(nword, p); - agap = &prefixga; - } - - /* Create a basicword_T from the word. */ - nbw = get_basicword(nword, 1); - if (nbw != NULL) - { - nbw->bw_region = bw->bw_region; - nbw->bw_flags |= bw->bw_flags - & ~(BWF_ONECAP | BWF_ALLCAP | BWF_KEEPCAP); - - if (STRCMP(bw->bw_word, nbw->bw_word) != 0) - /* Basic word differs, add new word entry. */ - (void)add_to_wordlist(newwords, nbw); - else - { - /* Basic word is the same, link "nbw" after - * "bw". */ - nbw->bw_next = bw->bw_next; - bw->bw_next = nbw; - } - - /* Remember this word, we need to set bw_prefix - * or bw_suffix later. */ - if (ga_grow(agap, 1) == OK) - ((basicword_T **)agap->ga_data) - [agap->ga_len++] = nbw; - } - } - else - { - /* Prefix with both non-word and word characters: Turn - * prefix into basic word, original word becomes an - * addstring. */ - - /* Fold-case the word characters in the prefix into - * nword[]. */ - alen = 0; - for (p = ae->ae_add_pw; p < ae->ae_add_nw; p += n) - { -#ifdef FEAT_MBYTE - n = (*mb_ptr2len_check)(p); -#else - n = 1; -#endif - (void)spell_casefold(p, n, nword + alen, - MAXWLEN - alen); - alen += STRLEN(nword + alen); - } - - /* Allocate a new word entry. */ - nbw = (basicword_T *)alloc((unsigned)( - sizeof(basicword_T) + alen + 1)); - if (nbw != NULL) - { - *nbw = *bw; - ga_init2(&nbw->bw_prefix, sizeof(short_u), 1); - ga_init2(&nbw->bw_suffix, sizeof(short_u), 1); - - mch_memmove(nbw->bw_word, nword, alen); - nbw->bw_word[alen] = NUL; - - /* Use the cap type of the prefix. */ - alen = ae->ae_add_nw - ae->ae_add_pw; - mch_memmove(nword, ae->ae_add_pw, alen); - nword[alen] = NUL; - flags = captype(nword, nword + STRLEN(nword)); - if (flags & BWF_KEEPCAP) - nbw->bw_caseword = vim_strsave(nword); - else - nbw->bw_caseword = NULL; - nbw->bw_flags &= ~(BWF_ONECAP | BWF_ALLCAP - | BWF_KEEPCAP); - nbw->bw_flags |= flags; - - /* The addstring is the prefix after the word - * characters, the original word excluding "chop", - * plus any addition. */ - STRCPY(nword, ae->ae_add_nw); - p = bw->bw_word; - if (ae->ae_chop != NULL) - p += STRLEN(ae->ae_chop); - STRCAT(nword, p); - if (bw->bw_addstring != NULL) - STRCAT(nword, bw->bw_addstring); - nbw->bw_addstring = vim_strsave(nword); - - if (ae->ae_add_pw > ae->ae_add) - nbw->bw_leadstring = vim_strnsave(ae->ae_add, - ae->ae_add_pw - ae->ae_add); - else - nbw->bw_leadstring = NULL; - - (void)add_to_wordlist(newwords, nbw); - - /* Remember this word, we need to set bw_suffix - * and bw_suffix later. */ - if (ga_grow(&prefixga, 1) == OK) - ((basicword_T **)prefixga.ga_data) - [prefixga.ga_len++] = nbw; - } - } - } - else - { - /* Affix applies to this word, add the related affix - * number. But only if it's not there yet. And keep the - * list sorted, so that we can compare it later. */ - for (i = 0; i < gap->ga_len; ++i) - { - n = ((short_u *)gap->ga_data)[i]; - if (n >= ae->ae_affnr) - { - if (n == ae->ae_affnr) - i = -1; - break; - } - } - if (i >= 0 && ga_grow(gap, 1) == OK) - { - if (i < gap->ga_len) - mch_memmove(((short_u *)gap->ga_data) + i + 1, - ((short_u *)gap->ga_data) + i, - sizeof(short_u) * (gap->ga_len - i)); - ((short_u *)gap->ga_data)[i] = ae->ae_affnr; - ++gap->ga_len; - } - } - } - } - } - - /* - * For the words that we added for suffixes with non-word characters: Use - * the prefix list of the main word. - */ - for (i = 0; i < suffixga.ga_len; ++i) - { - nbw = ((basicword_T **)suffixga.ga_data)[i]; - if (ga_grow(&nbw->bw_prefix, bw->bw_prefix.ga_len) == OK) - { - mch_memmove(nbw->bw_prefix.ga_data, bw->bw_prefix.ga_data, - bw->bw_prefix.ga_len * sizeof(short_u)); - nbw->bw_prefix.ga_len = bw->bw_prefix.ga_len; - } - } - - /* - * For the words that we added for prefixes with non-word characters: Use - * the suffix list of the main word. - */ - for (i = 0; i < prefixga.ga_len; ++i) - { - nbw = ((basicword_T **)prefixga.ga_data)[i]; - if (ga_grow(&nbw->bw_suffix, bw->bw_suffix.ga_len) == OK) - { - mch_memmove(nbw->bw_suffix.ga_data, bw->bw_suffix.ga_data, - bw->bw_suffix.ga_len * sizeof(short_u)); - nbw->bw_suffix.ga_len = bw->bw_suffix.ga_len; - } - } - - ga_clear(&suffixga); - ga_clear(&prefixga); -} - -/* - * Go over all words in "oldwords" and change the old affix names to the new - * affix numbers, check the conditions, fold case, extract the basic word and - * additions. + * Store a word in the tree(s). + * Always store it in the case-folded tree. + * For a keep-case word also store it in the keep-case tree. */ static int -build_wordlist(newwords, oldwords, oldaff, regionmask) - hashtab_T *newwords; /* basicword_T entries */ - hashtab_T *oldwords; /* dicword_T entries */ - afffile_T *oldaff; /* affixes for "oldwords" */ - int regionmask; /* value for bw_region */ +store_word(word, spin) + char_u *word; + spellinfo_T *spin; { - int todo; - hashitem_T *old_hi; - dicword_T *dw; - basicword_T *bw; - char_u message[MAXLINELEN + MAXWLEN]; - - todo = oldwords->ht_used; - for (old_hi = oldwords->ht_array; todo > 0; ++old_hi) - { - if (!HASHITEM_EMPTY(old_hi)) - { - --todo; - dw = HI2DW(old_hi); + int len = STRLEN(word); + int ct = captype(word, word + len); + char_u foldword[MAXWLEN]; + int res; - /* This takes time, print a message now and then. */ - if ((todo & 0x3ff) == 0 || todo == (int)oldwords->ht_used - 1) - { - sprintf((char *)message, _("%6d todo - %s"), - todo, dw->dw_word); - msg_start(); - msg_outtrans_attr(message, 0); - msg_clr_eos(); - msg_didout = FALSE; - msg_col = 0; - out_flush(); - ui_breakcheck(); - if (got_int) - break; - } - - bw = get_basicword(dw->dw_word, 10); - if (bw == NULL) - break; - bw->bw_region = regionmask; - - (void)add_to_wordlist(newwords, bw); - - /* Deal with any affix names on the old word, translate them - * into affix numbers. */ - if (dw->dw_affnm != NULL) - trans_affixes(dw, bw, oldaff, newwords); - } - } - if (todo > 0) - return FAIL; - return OK; + (void)spell_casefold(word, len, foldword, MAXWLEN); + res = tree_add_word(foldword, spin->si_foldroot, ct, spin->si_region, + &spin->si_blocks); + if (res == OK && ct == WF_KEEPCAP) + res = tree_add_word(word, spin->si_keeproot, ct, spin->si_region, + &spin->si_blocks); + return res; } /* - * Get a basicword_T from a word in original case. - * Caller must set bw_region. - * Returns NULL when something fails. - */ - static basicword_T * -get_basicword(word, asize) - char_u *word; - int asize; /* growsize for affix garray */ -{ - int dwlen; - char_u foldword[MAXLINELEN]; - int flags; - int clen; - int leadlen; - char_u *p; - char_u leadstring[MAXLINELEN]; - int addlen; - char_u addstring[MAXLINELEN]; - char_u *cp = NULL; - int l; - basicword_T *bw; - - /* The basic words are always stored with folded case. */ - dwlen = STRLEN(word); - (void)spell_casefold(word, dwlen, foldword, MAXLINELEN); - flags = captype(word, word + dwlen); - - /* Check for non-word characters before the word. */ - clen = 0; - leadlen = 0; - if (!spell_iswordc(foldword)) - { - p = foldword; - for (;;) - { - mb_ptr_adv(p); - ++clen; - if (*p == NUL) /* Only non-word chars (bad word!) */ - { - if (p_verbose > 0) - { - verbose_enter(); - smsg((char_u *)_("Warning: word without word characters: \"%s\""), - foldword); - verbose_leave(); - } - break; - } - if (spell_iswordc(p)) - { - /* Move the leader to "leadstring" and remove it from - * "foldword". */ - leadlen = p - foldword; - mch_memmove(leadstring, foldword, leadlen); - leadstring[leadlen] = NUL; - mch_memmove(foldword, p, STRLEN(p) + 1); - break; - } - } - } - - /* Check for non-word characters after word characters. */ - addlen = 0; - for (p = foldword; spell_iswordc(p); mb_ptr_adv(p)) - { - if (*p == NUL) - break; - ++clen; - } - if (*p != NUL) - { - /* Move the addition to "addstring" and truncate "foldword". */ - if (flags & BWF_KEEPCAP) - { - /* Preserve caps, need to skip the right number of - * characters in the original word (case folding may - * change the byte count). */ - l = 0; - for (cp = word; l < clen; mb_ptr_adv(cp)) - ++l; - addlen = STRLEN(cp); - mch_memmove(addstring, cp, addlen + 1); - } - else - { - addlen = STRLEN(p); - mch_memmove(addstring, p, addlen + 1); - } - *p = NUL; - } - - bw = (basicword_T *)alloc_clear((unsigned)sizeof(basicword_T) - + STRLEN(foldword)); - if (bw == NULL) - return NULL; - - STRCPY(bw->bw_word, foldword); - - if (leadlen > 0) - bw->bw_leadstring = vim_strsave(leadstring); - else - bw->bw_leadstring = NULL; - if (addlen > 0) - bw->bw_addstring = vim_strsave(addstring); - else - bw->bw_addstring = NULL; - - if (flags & BWF_KEEPCAP) - { - if (addlen == 0) - /* use the whole word */ - bw->bw_caseword = vim_strsave(word + leadlen); - else - /* use only up to the addition */ - bw->bw_caseword = vim_strnsave(word + leadlen, - cp - word - leadlen); - } - - bw->bw_flags = flags; - ga_init2(&bw->bw_prefix, sizeof(short_u), asize); - ga_init2(&bw->bw_suffix, sizeof(short_u), asize); - - return bw; -} - -/* - * Go through the list of words and combine the ones that are identical except - * for the region. - */ - static void -combine_regions(newwords) - hashtab_T *newwords; -{ - int todo; - hashitem_T *hi; - basicword_T *bw, *nbw, *pbw; - - /* Loop over all basic words in the words table. */ - todo = newwords->ht_used; - for (hi = newwords->ht_array; todo > 0; ++hi) - { - if (!HASHITEM_EMPTY(hi)) - { - --todo; - - /* Loop over the list of words for this basic word. Compare with - * each following word in the same list. */ - for (bw = HI2BW(hi); bw != NULL; bw = bw->bw_next) - { - pbw = bw; - for (nbw = pbw->bw_next; nbw != NULL; nbw = pbw->bw_next) - { - if (bw->bw_flags == nbw->bw_flags - && (bw->bw_leadstring == NULL) - == (nbw->bw_leadstring == NULL) - && (bw->bw_addstring == NULL) - == (nbw->bw_addstring == NULL) - && ((bw->bw_flags & BWF_KEEPCAP) == 0 - || bw->bw_caseword == NULL - || nbw->bw_caseword == NULL - || STRCMP(bw->bw_caseword, - nbw->bw_caseword) == 0) - && (bw->bw_leadstring == NULL - || STRCMP(bw->bw_leadstring, - nbw->bw_leadstring) == 0) - && (bw->bw_addstring == NULL - || STRCMP(bw->bw_addstring, - nbw->bw_addstring) == 0) - && same_affixes(bw, nbw) - ) - { - /* Match, combine regions and delete "nbw". */ - pbw->bw_next = nbw->bw_next; - bw->bw_region |= nbw->bw_region; - free_basicword(nbw); - } - else - /* No match, continue with next one. */ - pbw = nbw; - } - } - } - } -} - -/* - * Return TRUE when the prefixes and suffixes for "bw" and "nbw" are equal. - */ - static int -same_affixes(bw, nbw) - basicword_T *bw; - basicword_T *nbw; -{ - return (bw->bw_prefix.ga_len == nbw->bw_prefix.ga_len - && bw->bw_suffix.ga_len == nbw->bw_suffix.ga_len - && (bw->bw_prefix.ga_len == 0 - || vim_memcmp(bw->bw_prefix.ga_data, - nbw->bw_prefix.ga_data, - bw->bw_prefix.ga_len * sizeof(short_u)) == 0) - && (bw->bw_suffix.ga_len == 0 - || vim_memcmp(bw->bw_suffix.ga_data, - nbw->bw_suffix.ga_data, - bw->bw_suffix.ga_len * sizeof(short_u)) == 0)); -} - -/* - * For each basic word with additions turn the suffixes into other additions - * and/or new basic words. For each basic word with a leadstring turn the - * prefixes into other leadstrings and/or new basic words. - * The result is that no affixes apply to the additions or leadstring of a - * word. - * This is also needed when a word with an addition has a prefix and the word - * with prefix also exists. E.g., "blurp's/D" (D is prefix "de") and - * "deblurp". "deblurp" would match and no prefix would be tried. - * + * Add word "word" to a word tree at "root". * Returns FAIL when out of memory. */ static int -expand_affixes(newwords, prefgap, suffgap) - hashtab_T *newwords; - garray_T *prefgap; - garray_T *suffgap; -{ - int todo; - hashitem_T *hi; - basicword_T *bw; - int pi, si; - affentry_T *pae, *sae; - garray_T add_words; - int n; - char_u message[MAXLINELEN + MAXWLEN]; - int retval = OK; - - ga_init2(&add_words, sizeof(basicword_T *), 10); - - todo = newwords->ht_used; - for (hi = newwords->ht_array; todo > 0; ++hi) - { - if (!HASHITEM_EMPTY(hi)) - { - --todo; - - /* This takes time, print a message now and then. */ - if ((todo & 0x3ff) == 0 || todo == (int)newwords->ht_used - 1) - { - sprintf((char *)message, _("%6d todo - %s"), - todo, HI2BW(hi)->bw_word); - msg_start(); - msg_outtrans_attr(message, 0); - msg_clr_eos(); - msg_didout = FALSE; - msg_col = 0; - out_flush(); - ui_breakcheck(); - if (got_int) - break; - } - - for (bw = HI2BW(hi); bw != NULL; bw = bw->bw_next) - { - /* - * Need to fix affixes if there is a leader or addition and - * there are prefixes or suffixes. - */ - if ((bw->bw_leadstring != NULL || bw->bw_addstring != NULL) - && (bw->bw_prefix.ga_len != 0 - || bw->bw_suffix.ga_len != 0)) - { - /* Loop over all prefix numbers, but first without a - * prefix. */ - for (pi = -1; pi < bw->bw_prefix.ga_len; ++pi) - { - pae = NULL; - if (pi >= 0) - { - n = ((short_u *)bw->bw_prefix.ga_data)[pi]; - pae = ((affheader_T *)prefgap->ga_data + n) - ->ah_first; - } - - /* Loop over all entries for prefix "pi". Do it once - * when there is no prefix (pi == -1). */ - do - { - /* Skip prewords, they don't need to be expanded. */ - if (pae == NULL || !pae->ae_preword) - { - /* Loop over all suffix numbers. Do without a - * suffix first when there is a prefix. */ - for (si = (pi == -1 ? 0 : -1); - si < bw->bw_suffix.ga_len; ++si) - { - sae = NULL; - if (si >= 0) - { - n = ((short_u *)bw->bw_suffix.ga_data)[si]; - sae = ((affheader_T *)suffgap->ga_data + n) - ->ah_first; - } - - /* Loop over all entries for suffix "si". Do - * it once when there is no suffix (si == -1). - */ - do - { - /* Expand the word for this combination of - * prefixes and affixes. */ - if (expand_one_aff(bw, &add_words, - pae, sae) == FAIL) - { - retval = FAIL; - goto theend; - } - - /* Advance to next suffix entry, if there - * is one. */ - if (sae != NULL) - sae = sae->ae_next; - } while (sae != NULL); - } - } - - /* Advance to next prefix entry, if there is one. */ - if (pae != NULL) - pae = pae->ae_next; - } while (pae != NULL); - } - } - } - } - } - - /* - * Add the new words afterwards, can't change "newwords" while going over - * all its items. - */ - for (pi = 0; pi < add_words.ga_len; ++pi) - { - retval = add_to_wordlist(newwords, - ((basicword_T **)add_words.ga_data)[pi]); - if (retval == FAIL) - break; - } - -theend: - ga_clear(&add_words); - return retval; -} - -/* - * Add one word to "add_words" for basic word "bw" with additions, adding - * prefix "pae" and suffix "sae". Either "pae" or "sae" can be NULL. - * Don't do this when not necessary: - * - no leadstring and adding prefix doesn't result in existing word. - * Returns FAIL when out of memory. - */ - static int -expand_one_aff(bw, add_words, pae, sae) - basicword_T *bw; - garray_T *add_words; - affentry_T *pae; - affentry_T *sae; +tree_add_word(word, root, flags, region, blp) + char_u *word; + wordnode_T *root; + int flags; + int region; + sblock_T **blp; { - char_u word[MAXWLEN + 1]; - char_u caseword[MAXWLEN + 1]; - int l = 0; - int choplen = 0; - int ll; - basicword_T *nbw; - - /* Prepend prefix to the basic word if there is a prefix and there is no - * leadstring. */ - if (pae != NULL && bw->bw_leadstring == NULL) - { - if (pae->ae_add != NULL) - { - l = STRLEN(pae->ae_add); - mch_memmove(word, pae->ae_add, l); - } - if (pae->ae_chop != NULL) - choplen = STRLEN(pae->ae_chop); - } - - /* Copy the body of the word. */ - STRCPY(word + l, bw->bw_word + choplen); - - /* Do the same for bw_caseword, if it's there. */ - if ((bw->bw_flags & BWF_KEEPCAP) && bw->bw_caseword != NULL) - { - if (l > 0) - mch_memmove(caseword, pae->ae_add, l); - STRCPY(caseword + l, bw->bw_caseword + choplen); - } - - /* Append suffix to the basic word if there is a suffix and there is no - * addstring. */ - if (sae != 0 && bw->bw_addstring == NULL) - { - l = STRLEN(word); - if (sae->ae_chop != NULL) - l -= STRLEN(sae->ae_chop); - if (sae->ae_add == NULL) - word[l] = NUL; - else - STRCPY(word + l, sae->ae_add); - - if (bw->bw_flags & BWF_KEEPCAP) - { - /* Do the same for the caseword. */ - l = STRLEN(caseword); - if (sae->ae_chop != NULL) - l -= STRLEN(sae->ae_chop); - if (sae->ae_add == NULL) - caseword[l] = NUL; - else - STRCPY(caseword + l, sae->ae_add); - } - } - - nbw = (basicword_T *)alloc_clear((unsigned) - sizeof(basicword_T) + STRLEN(word)); - if (nbw == NULL) - return FAIL; - - /* Add the new word to the list of words to be added later. */ - if (ga_grow(add_words, 1) == FAIL) - { - vim_free(nbw); - return FAIL; - } - ((basicword_T **)add_words->ga_data)[add_words->ga_len++] = nbw; + wordnode_T *node = root; + wordnode_T *np; + wordnode_T **prev = NULL; + int i; - /* Copy the (modified) basic word, flags and region. */ - STRCPY(nbw->bw_word, word); - nbw->bw_flags = bw->bw_flags; - nbw->bw_region = bw->bw_region; - - /* Set the (modified) caseword. */ - if (bw->bw_flags & BWF_KEEPCAP) - nbw->bw_caseword = vim_strsave(caseword); - else - nbw->bw_caseword = NULL; - - if (bw->bw_leadstring != NULL) - { - if (pae != NULL) - { - /* Prepend prefix to leadstring. */ - ll = STRLEN(bw->bw_leadstring); - l = choplen = 0; - if (pae->ae_add != NULL) - l = STRLEN(pae->ae_add); - if (pae->ae_chop != NULL) - { - choplen = STRLEN(pae->ae_chop); - if (choplen > ll) /* TODO: error? */ - choplen = ll; - } - nbw->bw_leadstring = alloc((unsigned)(ll + l - choplen + 1)); - if (nbw->bw_leadstring != NULL) - { - if (l > 0) - mch_memmove(nbw->bw_leadstring, pae->ae_add, l); - STRCPY(nbw->bw_leadstring + l, bw->bw_leadstring + choplen); - } - } - else - nbw->bw_leadstring = vim_strsave(bw->bw_leadstring); - } - else if (bw->bw_prefix.ga_len > 0) + /* Add each byte of the word to the tree, including the NUL at the end. */ + for (i = 0; ; ++i) { - /* There is no leadstring, copy the list of possible prefixes. */ - ga_init2(&nbw->bw_prefix, sizeof(short_u), 1); - if (ga_grow(&nbw->bw_prefix, bw->bw_prefix.ga_len) == OK) + /* Look for the sibling that has the same character. They are sorted + * on byte value, thus stop searching when a sibling is found with a + * higher byte value. For zero bytes (end of word) check that the + * flags are equal, there is a separate zero byte for each flag value. + */ + while (node != NULL && (node->wn_byte < word[i] + || (node->wn_byte == 0 && node->wn_flags != flags))) { - mch_memmove(nbw->bw_prefix.ga_data, bw->bw_prefix.ga_data, - bw->bw_prefix.ga_len * sizeof(short_u)); - nbw->bw_prefix.ga_len = bw->bw_prefix.ga_len; + prev = &node->wn_sibling; + node = *prev; } - } - - if (bw->bw_addstring != NULL) - { - if (sae != NULL) + if (node == NULL || node->wn_byte != word[i]) { - /* Append suffix to addstring. */ - l = STRLEN(bw->bw_addstring); - if (sae->ae_chop != NULL) - { - l -= STRLEN(sae->ae_chop); - if (l < 0) /* TODO: error? */ - l = 0; - } - if (sae->ae_add == NULL) - ll = 0; - else - ll = STRLEN(sae->ae_add); - nbw->bw_addstring = alloc((unsigned)(ll + l - choplen + 1)); - if (nbw->bw_addstring != NULL) - { - STRCPY(nbw->bw_addstring, bw->bw_addstring); - if (sae->ae_add == NULL) - nbw->bw_addstring[l] = NUL; - else - STRCPY(nbw->bw_addstring + l, sae->ae_add); - } + /* Allocate a new node. */ + np = (wordnode_T *)getroom(blp, sizeof(wordnode_T)); + if (np == NULL) + return FAIL; + np->wn_byte = word[i]; + *prev = np; + np->wn_sibling = node; + node = np; } - else - nbw->bw_addstring = vim_strsave(bw->bw_addstring); + + if (word[i] == NUL) + { + node->wn_flags = flags; + node->wn_region |= region; + break; + } + prev = &node->wn_child; + node = *prev; } return OK; } /* - * Add basicword_T "*bw" to wordlist "newwords". + * Compress a tree: find tails that are identical and can be shared. + */ + static void +wordtree_compress(root) + wordnode_T *root; +{ + hashtab_T ht; + int n; + int tot = 0; + + if (root != NULL) + { + hash_init(&ht); + n = node_compress(root, &ht, &tot); + smsg((char_u *)_("Compressed %d of %d nodes; %d%% remaining"), + n, tot, (tot - n) * 100 / tot); + hash_clear(&ht); + } +} + +/* + * Compress a node, its siblings and its children, depth first. + * Returns the number of compressed nodes. */ static int -add_to_wordlist(newwords, bw) - hashtab_T *newwords; - basicword_T *bw; +node_compress(node, ht, tot) + wordnode_T *node; + hashtab_T *ht; + int *tot; /* total count of nodes before compressing, + incremented while going through the tree */ { + wordnode_T *np; + wordnode_T *tp; + wordnode_T *child; + hash_T hash; hashitem_T *hi; - basicword_T *bw2; - int retval = OK; + int len = 0; + unsigned nr, n; + int compressed = 0; - hi = hash_find(newwords, bw->bw_word); - if (HASHITEM_EMPTY(hi)) + /* + * Go through the list of siblings. Compress each child and then try + * finding an identical child to replace it. + * Note that with "child" we mean not just the node that is pointed to, + * but the whole list of siblings, of which the node is the first. + */ + for (np = node; np != NULL; np = np->wn_sibling) { - /* New entry, add to hashlist. */ - retval = hash_add(newwords, bw->bw_word); - bw->bw_next = NULL; + ++len; + if ((child = np->wn_child) != NULL) + { + /* Compress the child. This fills wn_hashkey. */ + compressed += node_compress(child, ht, tot); + + /* Try to find an identical child. */ + hash = hash_hash(child->wn_hashkey); + hi = hash_lookup(ht, child->wn_hashkey, hash); + tp = NULL; + if (!HASHITEM_EMPTY(hi)) + { + /* There are children with an identical hash value. Now check + * if there is one that is really identical. */ + for (tp = HI2WN(hi); tp != NULL; tp = tp->wn_next) + if (node_equal(child, tp)) + { + /* Found one! Now use that child in place of the + * current one. This means the current child is + * dropped from the tree. */ + np->wn_child = tp; + ++compressed; + break; + } + if (tp == NULL) + { + /* No other child with this hash value equals the child of + * the node, add it to the linked list after the first + * item. */ + tp = HI2WN(hi); + child->wn_next = tp->wn_next; + tp->wn_next = child; + } + } + else + /* No other child has this hash value, add it to the + * hashtable. */ + hash_add_item(ht, hi, child->wn_hashkey, hash); + } } - else + *tot += len; + + /* + * Make a hash key for the node and its siblings, so that we can quickly + * find a lookalike node. This must be done after compressing the sibling + * list, otherwise the hash key would become invalid by the compression. + */ + node->wn_hashkey[0] = len; + nr = 0; + for (np = node; np != NULL; np = np->wn_sibling) { - /* Existing entry, append to list of basic words. */ - bw2 = HI2BW(hi); - bw->bw_next = bw2->bw_next; - bw2->bw_next = bw; + if (np->wn_byte == NUL) + /* end node: only use wn_flags and wn_region */ + n = np->wn_flags + (np->wn_region << 8); + else + /* byte node: use the byte value and the child pointer */ + n = np->wn_byte + ((long_u)np->wn_child << 8); + nr = nr * 101 + n; } - return retval; + + /* Avoid NUL bytes, it terminates the hash key. */ + n = nr & 0xff; + node->wn_hashkey[1] = n == 0 ? 1 : n; + n = (nr >> 8) & 0xff; + node->wn_hashkey[2] = n == 0 ? 1 : n; + n = (nr >> 16) & 0xff; + node->wn_hashkey[3] = n == 0 ? 1 : n; + n = (nr >> 24) & 0xff; + node->wn_hashkey[4] = n == 0 ? 1 : n; + node->wn_hashkey[5] = NUL; + + return compressed; +} + +/* + * Return TRUE when two nodes have identical siblings and children. + */ + static int +node_equal(n1, n2) + wordnode_T *n1; + wordnode_T *n2; +{ + wordnode_T *p1; + wordnode_T *p2; + + for (p1 = n1, p2 = n2; p1 != NULL && p2 != NULL; + p1 = p1->wn_sibling, p2 = p2->wn_sibling) + if (p1->wn_byte != p2->wn_byte + || (p1->wn_byte == NUL + ? (p1->wn_flags != p2->wn_flags + || p1->wn_region != p2->wn_region) + : (p1->wn_child != p2->wn_child))) + break; + + return p1 == NULL && p2 == NULL; } /* @@ -4142,209 +2360,23 @@ put_bytes(fd, nr, len) } /* - * Write affix info. <affitemcnt> <affitem> ... - */ - static void -write_affix(fd, ah) - FILE *fd; - affheader_T *ah; -{ - int i = 0; - affentry_T *ae; - char_u *p; - int round; - int flags; - - /* Count the number of entries. */ - for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) - ++i; - put_bytes(fd, (long_u)i, 2); /* <affitemcnt> */ - - /* <affitem>: <affflags> <affchoplen> <affchop> <affaddlen> <affadd> */ - for (ae = ah->ah_first; ae != NULL; ae = ae->ae_next) - { - flags = ah->ah_combine ? AFF_COMBINE : 0; - if (ae->ae_preword) - flags |= AFF_PREWORD; - fputc(flags, fd); /* <affflags> */ - - for (round = 1; round <= 2; ++round) - { - p = round == 1 ? ae->ae_chop : ae->ae_add; - if (p == NULL) - putc(0, fd); /* <affchoplen> / <affaddlen> */ - else - { - putc(STRLEN(p), fd); /* <affchoplen> / <affaddlen> */ - /* <affchop> / <affadd> */ - fwrite(p, STRLEN(p), (size_t)1, fd); - } - } - } -} - -/* - * Write list of affix NRs: <affixcnt> <affixNR> ... - */ - static void -write_affixlist(fd, aff, bytes) - FILE *fd; - garray_T *aff; - int bytes; -{ - int i; - - if (aff->ga_len > 0) - { - putc(aff->ga_len, fd); /* <affixcnt> */ - for (i = 0; i < aff->ga_len; ++i) - put_bytes(fd, (long_u )((short_u *)aff->ga_data)[i], bytes); - } -} - -/* - * Vim spell file format: <HEADER> <PREFIXLIST> <SUFFIXLIST> - * <SUGGEST> <WORDLIST> - * - * <HEADER>: <fileID> <regioncnt> <regionname> ... - * <charflagslen> <charflags> <fcharslen> <fchars> - * - * <fileID> 10 bytes "VIMspell04" - * <regioncnt> 1 byte number of regions following (8 supported) - * <regionname> 2 bytes Region name: ca, au, etc. - * First <regionname> is region 1. - * - * <charflagslen> 1 byte Number of bytes in <charflags> (should be 128). - * <charflags> N bytes List of flags (first one is for character 128): - * 0x01 word character - * 0x01 upper-case character - * <fcharslen> 2 bytes Number of bytes in <fchars>. - * <fchars> N bytes Folded characters, first one is for character 128. - * - * - * <PREFIXLIST>: <affcount> <affix> ... - * <SUFFIXLIST>: <affcount> <affix> ... - * list of possible affixes: prefixes and suffixes. - * - * <affcount> 2 bytes Number of affixes (MSB comes first). - * When more than 256 an affixNR is 2 bytes. - * This is separate for prefixes and suffixes! - * First affixNR is 0. - * - * <affix>: <affitemcnt> <affitem> ... - * - * <affitemcnt> 2 bytes Number of affixes with this affixNR (MSB first). - * - * <affitem>: <affflags> <affchoplen> <affchop> <affaddlen> <affadd> - * - * <affflags> 1 byte 0x01: prefix combines with suffix, AFF_COMBINE - * 0x02: prefix includes word, AFF_PREWORD - * 0x04-0x80: unset - * <affchoplen> 1 byte Length of <affchop> in bytes. - * <affchop> N bytes To be removed from basic word. - * <affaddlen> 1 byte Length of <affadd> in bytes. - * <affadd> N bytes To be added to basic word. - * - * - * <SUGGEST> : <suggestlen> <more> ... - * - * <suggestlen> 4 bytes Length of <SUGGEST> in bytes, excluding - * <suggestlen>. MSB first. - * <more> To be defined. - * - * - * <WORDLIST>: <wordcount> <worditem> ... - * - * <wordcount> 4 bytes Number of <worditem> following. MSB first. - * - * <worditem>: <nr> <string> <flags> [<flags2>] - * [<caselen> <caseword>] - * [<affixcnt> <affixNR> ...] (prefixes) - * [<affixcnt> <affixNR> ...] (suffixes) - * [<region>] - * [<addcnt> <add> ...] - * - * <nr> i 1 byte Number of bytes copied from previous word. - * <string> N bytes Additional bytes for word, up to byte smaller than - * 0x20 (space). - * Must only contain case-folded word characters. - * <flags> 1 byte 0x01: word is valid without addition, BWF_VALID - * 0x02: has region byte, BWF_REGION - * 0x04: first letter must be upper-case, BWF_ONECAP - * 0x08: has suffixes, <affixcnt> and <affixNR> follow - * BWF_SUFFIX - * 0x10: more flags, <flags2> follows next, BWF_SECOND - * 0x20-0x80: can't be used, unset - * <flags2> 1 byte 0x01: has additions, <addcnt> and <add> follow, - * BWF_ADDS - * 0x02: has prefixes, <affixcnt> and <affixNR> follow - * BWF_PREFIX - * 0x04: all letters must be upper-case, BWF_ALLCAP - * 0x08: case must match, BWF_KEEPCAP - * 0x10: has more than 255 additions, <addcnt> is two - * bytes, BWF_ADDS_M - * 0x10-0x80: unset - * <caselen> 1 byte Length of <caseword>. - * <caseword> N bytes Word with matching case. - * <affixcnt> 1 byte Number of affix NRs following. - * <affixNR> 1 or 2 byte Number of possible affix for this word. - * When using 2 bytes MSB comes first. - * <region> 1 byte Bitmask for regions in which word is valid. When - * omitted it's valid in all regions. - * Lowest bit is for region 1. - * <addcnt> 1 or 2 byte Number of <add> items following. - * - * <add>: <addflags> <addlen> [<leadlen>] [<copylen>] [<addstring>] [<region>] - * - * <addflags> 1 byte 0x01: unset - * 0x02: has region byte, ADD_REGION - * 0x04: first letter must be upper-case, ADD_ONECAP - * 0x08: unset - * 0x10: has a <leadlen>, ADD_LEADLEN - * 0x20: has a <copylen>, ADD_COPYLEN - * 0x40: all letters must be upper-case, ADD_ALLCAP - * 0x80: fixed case, <addstring> is the whole word - * with matching case, ADD_KEEPCAP. - * <addlen> 1 byte Length of <addstring> in bytes. - * <leadlen> 1 byte Number of bytes at start of <addstring> that must - * come before the start of the basic word. - * <copylen> 1 byte Number of bytes copied from previous <addstring>. - * <addstring> N bytes Word characters, before/in/after the word. - * - * All text characters are in 'encoding': <affchop>, <affadd>, <string>, - * <caseword>> and <addstring>. - * All other fields are ASCII: <regionname> - * <string> is always case-folded. - */ - -/* * Write the Vim spell file "fname". */ static void -write_vim_spell(fname, prefga, suffga, newwords, regcount, regchars, ascii) +write_vim_spell(fname, spin, regcount, regchars) char_u *fname; - garray_T *prefga; /* prefixes, affheader_T entries */ - garray_T *suffga; /* suffixes, affheader_T entries */ - hashtab_T *newwords; /* basic words, basicword_T entries */ + spellinfo_T *spin; int regcount; /* number of regions */ char_u *regchars; /* region names */ - int ascii; /* TRUE for ascii spell file */ { - winfo_T wif; - garray_T *gap; - hashitem_T *hi; - char_u **wtab; - int todo; - int flags, aflags; - basicword_T *bw, *bwf, *bw2 = NULL; - int i; + FILE *fd; + int regionmask; int round; - garray_T bwga; + wordnode_T *tree; + int nodecount; - vim_memset(&wif, 0, sizeof(winfo_T)); - - wif.wif_fd = fopen((char *)fname, "w"); - if (wif.wif_fd == NULL) + fd = fopen((char *)fname, "w"); + if (fd == NULL) { EMSG2(_(e_notopen), fname); return; @@ -4352,462 +2384,164 @@ write_vim_spell(fname, prefga, suffga, n /* <HEADER>: <fileID> <regioncnt> <regionname> ... * <charflagslen> <charflags> <fcharslen> <fchars> */ - fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, wif.wif_fd); /* <fileID> */ + + /* <fileID> */ + if (fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd) != 1) + EMSG(_(e_write)); /* write the region names if there is more than one */ if (regcount > 1) { - putc(regcount, wif.wif_fd); /* <regioncnt> <regionname> ... */ - fwrite(regchars, (size_t)(regcount * 2), (size_t)1, wif.wif_fd); - wif.wif_regionmask = (1 << regcount) - 1; + putc(regcount, fd); /* <regioncnt> <regionname> ... */ + fwrite(regchars, (size_t)(regcount * 2), (size_t)1, fd); + regionmask = (1 << regcount) - 1; } else { - putc(0, wif.wif_fd); - wif.wif_regionmask = 0; + putc(0, fd); + regionmask = 0; } /* Write the table with character flags and table for case folding. * <charflagslen> <charflags> <fcharlen> <fchars> * Skip this for ASCII, the table may conflict with the one used for * 'encoding'. */ - if (ascii) + if (spin->si_ascii) { - putc(0, wif.wif_fd); - putc(0, wif.wif_fd); - putc(0, wif.wif_fd); + putc(0, fd); + putc(0, fd); + putc(0, fd); } else - write_spell_chartab(wif.wif_fd); + write_spell_chartab(fd); - /* <PREFIXLIST>: <affcount> <affix> ... - * <SUFFIXLIST>: <affcount> <affix> ... */ - for (round = 1; round <= 2; ++round) - { - gap = round == 1 ? prefga : suffga; - put_bytes(wif.wif_fd, (long_u)gap->ga_len, 2); /* <affcount> */ - - for (i = 0; i < gap->ga_len; ++i) - write_affix(wif.wif_fd, (affheader_T *)gap->ga_data + i); - } - - /* Number of bytes used for affix NR depends on affix count. */ - wif.wif_prefm = (prefga->ga_len > 256) ? 2 : 1; - wif.wif_suffm = (suffga->ga_len > 256) ? 2 : 1; /* <SUGGEST> : <suggestlen> <more> ... * TODO. Only write a zero length for now. */ - put_bytes(wif.wif_fd, 0L, 4); /* <suggestlen> */ - - /* - * <WORDLIST>: <wordcount> <worditem> ... - */ - - /* number of basic words in 4 bytes */ - put_bytes(wif.wif_fd, newwords->ht_used, 4); /* <wordcount> */ + put_bytes(fd, 0L, 4); /* <suggestlen> */ /* - * Sort the word list, so that we can copy as many bytes as possible from - * the previous word. + * <LWORDTREE> <KWORDTREE> */ - wtab = (char_u **)alloc((unsigned)(sizeof(char_u *) * newwords->ht_used)); - if (wtab != NULL) + for (round = 1; round <= 2; ++round) { - /* Make a table with pointers to each word. */ - todo = newwords->ht_used; - for (hi = newwords->ht_array; todo > 0; ++hi) - if (!HASHITEM_EMPTY(hi)) - wtab[--todo] = hi->hi_key; - - /* Sort. */ - sort_strings(wtab, (int)newwords->ht_used); - - /* Now write each basic word to the spell file. */ - ga_init2(&bwga, sizeof(basicword_T *), 10); - for (todo = 0; (long_u)todo < newwords->ht_used; ++todo) - { - bwf = KEY2BW(wtab[todo]); - - /* - * Reorder the list of basicword_T words: make a list for words - * with the same case-folded word. Put them together for same - * caps (ONECAP, ALLCAP and various KEEPCAP words) and same - * affixes. Each list will then be put as a basic word with - * additions. - * This won't take much space, since the basic word is the same - * every time, only its length is written. - */ - bwga.ga_len = 0; - for (bw = bwf; bw != NULL; bw = bw->bw_next) - { - flags = bw->bw_flags & (BWF_ONECAP | BWF_KEEPCAP | BWF_ALLCAP); + tree = (round == 1) ? spin->si_foldroot : spin->si_keeproot; - /* Go through the lists we found so far. Break when the case - * matches. */ - for (i = 0; i < bwga.ga_len; ++i) - { - bw2 = ((basicword_T **)bwga.ga_data)[i]; - aflags = bw2->bw_flags & (BWF_ONECAP | BWF_KEEPCAP - | BWF_ALLCAP); - if (flags == aflags - && ((flags & BWF_KEEPCAP) == 0 - || bw->bw_caseword == NULL - || bw2->bw_caseword == NULL - || STRCMP(bw->bw_caseword, - bw2->bw_caseword) == 0) - && same_affixes(bw, bw2)) - break; - } - if (i == bwga.ga_len) - { - /* No word with similar caps, make a new list. */ - if (ga_grow(&bwga, 1) == FAIL) - break; - ((basicword_T **)bwga.ga_data)[i] = bw; - bw->bw_cnext = NULL; - ++bwga.ga_len; - } - else - { - /* Add to list of words with similar caps. */ - bw->bw_cnext = bw2->bw_cnext; - bw2->bw_cnext = bw; - } - } + /* Count the number of nodes. Needed to be able to allocate the + * memory when reading the nodes. Also fills in the index for shared + * nodes. */ + nodecount = put_tree(NULL, tree, 0, regionmask); - /* Prefer the word with no caps to use as the first basic word. - * At least one without KEEPCAP. */ - bw = NULL; - for (i = 0; i < bwga.ga_len; ++i) - { - bw2 = ((basicword_T **)bwga.ga_data)[i]; - if (bw == NULL - || (bw2->bw_flags & (BWF_ONECAP | BWF_KEEPCAP - | BWF_ALLCAP)) == 0 - || (bw->bw_flags & BWF_KEEPCAP)) - bw = bw2; - } + /* number of nodes in 4 bytes */ + put_bytes(fd, (long_u)nodecount, 4); /* <nodecount> */ - /* Write first basic word. If it's KEEPCAP then we need a word - * without VALID flag first (makes it easier to read the list back - * in). */ - if (bw->bw_flags & BWF_KEEPCAP) - write_bword(&wif, bw, TRUE); - write_bword(&wif, bw, FALSE); - - /* Write other basic words, with different caps. */ - for (i = 0; i < bwga.ga_len; ++i) - { - bw2 = ((basicword_T **)bwga.ga_data)[i]; - if (bw2 != bw) - write_bword(&wif, bw2, FALSE); - } - } - - ga_clear(&bwga); - vim_free(wtab); + /* Write the nodes. */ + (void)put_tree(fd, tree, 0, regionmask); } - fclose(wif.wif_fd); - - /* Print a few statistics. */ - if (wif.wif_addmaxw == NULL) - wif.wif_addmaxw = (char_u *)""; - smsg((char_u *)_("Maximum number of adds on a word: %ld (%s)"), - wif.wif_addmax, wif.wif_addmaxw); - smsg((char_u *)_("Average number of adds on a word: %f"), - (float)wif.wif_acount / (float)wif.wif_wcount); -} - -/* - * Compare two basic words for their <addstring>. - */ -static int -#ifdef __BORLANDC__ -_RTLENTRYF -#endif -bw_compare __ARGS((const void *s1, const void *s2)); - - static int -#ifdef __BORLANDC__ -_RTLENTRYF -#endif -bw_compare(s1, s2) - const void *s1; - const void *s2; -{ - basicword_T *bw1 = *(basicword_T **)s1; - basicword_T *bw2 = *(basicword_T **)s2; - int i = 0; - - /* compare the leadstrings */ - if (bw1->bw_leadstring == NULL) - { - if (bw2->bw_leadstring != NULL) - return 1; - } - else if (bw2->bw_leadstring == NULL) - return -1; - else - i = STRCMP(bw1->bw_leadstring, bw2->bw_leadstring); - - if (i == 0) - { - /* leadstrings are identical, compare the addstrings */ - if (bw1->bw_addstring == NULL) - { - if (bw2->bw_addstring != NULL) - return 1; - } - else if (bw2->bw_addstring == NULL) - return -1; - else - i = STRCMP(bw1->bw_addstring, bw2->bw_addstring); - } - return i; + fclose(fd); } /* - * Write basic word, followed by any additions. + * Dump a word tree at node "node". + * + * This first writes the list of possible bytes (siblings). Then for each + * byte recursively write the children. + * + * NOTE: The code here must match the code in read_tree(), since assumptions + * are made about the indexes (so that we don't have to write them in the + * file). * - * <worditem>: <nr> <string> <flags> [<flags2>] - * [<caselen> <caseword>] - * [<affixcnt> <affixNR> ...] (prefixes) - * [<affixcnt> <affixNR> ...] (suffixes) - * [<region>] - * [<addcnt> <add> ...] + * Returns the number of nodes used. */ - static void -write_bword(wif, bwf, lowcap) - winfo_T *wif; /* info for writing */ - basicword_T *bwf; - int lowcap; /* write KEEPKAP word as not-valid */ + static int +put_tree(fd, node, index, regionmask) + FILE *fd; /* NULL when only counting */ + wordnode_T *node; + int index; + int regionmask; { - FILE *fd = wif->wif_fd; + int newindex = index; + int siblingcount = 0; + wordnode_T *np; int flags; - int aflags; - int len; - int leadlen, addlen; - int copylen; - int clen; - int adds = 0; - int i; - int idx; - basicword_T *bw, *bw2; - basicword_T **wtab; - int count; - int l; + + /* If "node" is zero the tree is empty. */ + if (node == NULL) + return 0; + + /* Store the index where this node is written. */ + node->wn_index = index; - /* Check how many bytes can be copied from the previous word. */ - len = STRLEN(bwf->bw_word); - if (wif->wif_prevbw == NULL) - clen = 0; - else - for (clen = 0; clen < len - && wif->wif_prevbw->bw_word[clen] == bwf->bw_word[clen]; ++clen) - ; - putc(clen, fd); /* <nr> */ - wif->wif_prevbw = bwf; - /* <string> */ - if (len > clen) - fwrite(bwf->bw_word + clen, (size_t)(len - clen), (size_t)1, fd); + /* Count the number of siblings. */ + for (np = node; np != NULL; np = np->wn_sibling) + ++siblingcount; - /* Try to find a word without additions to use first. */ - bw = bwf; - for (bw2 = bwf; bw2 != NULL; bw2 = bw2->bw_cnext) - { - if (bw2->bw_addstring != NULL || bw2->bw_leadstring != NULL) - ++adds; - else - bw = bw2; - } + /* Write the sibling count. */ + if (fd != NULL) + putc(siblingcount, fd); /* <siblingcount> */ - /* Flags: If there is no leadstring and no addstring the basic word is - * valid, may have prefixes, suffixes and region. */ - flags = bw->bw_flags; - if (bw->bw_addstring == NULL && bw->bw_leadstring == NULL) + /* Write each sibling byte and optionally extra info. */ + for (np = node; np != NULL; np = np->wn_sibling) { - flags |= BWF_VALID; - - /* Flags: add the region byte if the word isn't valid in all - * regions. */ - if (wif->wif_regionmask != 0 && (bw->bw_region & wif->wif_regionmask) - != wif->wif_regionmask) - flags |= BWF_REGION; - } - /* Add the prefix/suffix list if there are prefixes/suffixes. */ - if (bw->bw_leadstring == NULL && bw->bw_prefix.ga_len > 0) - flags |= BWF_PREFIX; - if (bw->bw_addstring == NULL && bw->bw_suffix.ga_len > 0) - flags |= BWF_SUFFIX; - - /* Flags: may have additions. */ - if (adds > 0) - { - flags |= BWF_ADDS; - if (adds >= 256) - flags |= BWF_ADDS_M; - } + if (np->wn_byte == 0) + { + if (fd != NULL) + { + /* For a NUL byte (end of word) instead of the byte itself + * we write the flag/region items. */ + flags = np->wn_flags; + if (regionmask != 0 && np->wn_region != regionmask) + flags |= WF_REGION; + if (flags == 0) + { + /* word without flags or region */ + putc(BY_NOFLAGS, fd); /* <byte> */ + } + else + { + putc(BY_FLAGS, fd); /* <byte> */ + putc(flags, fd); /* <flags> */ + if (flags & WF_REGION) + putc(np->wn_region, fd); /* <regionmask> */ + } + } + } + else + { + if (np->wn_child->wn_index != 0 && np->wn_child->wn_wnode != node) + { + /* The child is written elsewhere, write the reference. */ + if (fd != NULL) + { + putc(BY_INDEX, fd); /* <byte> */ + /* <nodeidx> */ + put_bytes(fd, (long_u)np->wn_child->wn_index, 3); + } + } + else if (np->wn_child->wn_wnode == NULL) + /* We will write the child below and give it an index. */ + np->wn_child->wn_wnode = node; - /* The dummy word before a KEEPCAP word doesn't have any flags, they are - * in the actual word that follows. */ - if (lowcap) - flags = 0; - - /* Flags: when the upper byte is not used we only write one flags - * byte, if it's used then set an extra flag in the first byte and - * also write the second byte. */ - if ((flags & 0xff00) == 0) - putc(flags, fd); /* <flags> */ - else - { - putc(flags | BWF_SECOND, fd); /* <flags> */ - putc((int)((unsigned)flags >> 8), fd); /* <flags2> */ - } - - /* First dummy word doesn't need anything but flags. */ - if (lowcap) - return; - - if ((flags & BWF_KEEPCAP) && bw->bw_caseword != NULL) - { - len = STRLEN(bw->bw_caseword); - putc(len, fd); /* <caselen> */ - for (i = 0; i < len; ++i) - putc(bw->bw_caseword[i], fd); /* <caseword> */ + if (fd != NULL) + if (putc(np->wn_byte, fd) == EOF) /* <byte> or <xbyte> */ + { + EMSG(_(e_write)); + return 0; + } + } } - /* write prefix and suffix lists: <affixcnt> <affixNR> ... */ - if (flags & BWF_PREFIX) - write_affixlist(fd, &bw->bw_prefix, wif->wif_prefm); - if (flags & BWF_SUFFIX) - write_affixlist(fd, &bw->bw_suffix, wif->wif_suffm); - - if (flags & BWF_REGION) - putc(bw->bw_region, fd); /* <region> */ - - ++wif->wif_wcount; - - /* - * Additions. - */ - if (adds > 0) - { - if (adds >= 256) - put_bytes(fd, (long_u)adds, 2); /* 2 byte <addcnt> */ - else - putc(adds, fd); /* 1 byte <addcnt> */ - - /* statistics */ - wif->wif_acount += adds; - if (wif->wif_addmax < adds) - { - wif->wif_addmax = adds; - wif->wif_addmaxw = bw->bw_word; - } - - /* - * Sort the list of additions, so that we can copy as many bytes as - * possible from the previous addstring. - */ - - /* Make a table with pointers to each basic word that has additions. */ - wtab = (basicword_T **)alloc((unsigned)(sizeof(basicword_T *) * adds)); - if (wtab == NULL) - return; - count = 0; - for (bw = bwf; bw != NULL; bw = bw->bw_cnext) - if (bw->bw_leadstring != NULL || bw->bw_addstring != NULL) - wtab[count++] = bw; - - /* Sort. */ - qsort((void *)wtab, (size_t)count, sizeof(basicword_T *), bw_compare); - - /* Now write each basic word to the spell file. Copy bytes from the - * previous leadstring/addstring if possible. */ - bw2 = NULL; - for (idx = 0; idx < count; ++idx) - { - bw = wtab[idx]; + /* Space used in the array when reading: one for each sibling and one for + * the count. */ + newindex += siblingcount + 1; - /* <add>: <addflags> <addlen> [<leadlen>] [<copylen>] - * [<addstring>] [<region>] */ - copylen = 0; - if (bw->bw_leadstring == NULL) - leadlen = 0; - else - { - leadlen = STRLEN(bw->bw_leadstring); - if (bw2 != NULL && bw2->bw_leadstring != NULL) - for ( ; copylen < leadlen; ++copylen) - if (bw->bw_leadstring[copylen] - != bw2->bw_leadstring[copylen]) - break; - } - if (bw->bw_addstring == NULL) - addlen = 0; - else - { - addlen = STRLEN(bw->bw_addstring); - if (bw2 != NULL && copylen == leadlen - && bw2->bw_addstring != NULL) - { - for (i = 0; i < addlen; ++i) - if (bw->bw_addstring[i] != bw2->bw_addstring[i]) - break; - copylen += i; - } - } - - aflags = 0; - /* Only copy bytes when it's more than one, the length itself - * takes an extra byte. */ - if (copylen > 1) - aflags |= ADD_COPYLEN; - else - copylen = 0; + /* Recursively dump the children of each sibling. */ + for (np = node; np != NULL; np = np->wn_sibling) + if (np->wn_byte != 0 && np->wn_child->wn_wnode == node) + newindex = put_tree(fd, np->wn_child, newindex, regionmask); - if (bw->bw_flags & BWF_ONECAP) - aflags |= ADD_ONECAP; - if (bw->bw_flags & BWF_ALLCAP) - aflags |= ADD_ALLCAP; - if (bw->bw_flags & BWF_KEEPCAP) - aflags |= ADD_KEEPCAP; - if (wif->wif_regionmask != 0 && (bw->bw_region - & wif->wif_regionmask) != wif->wif_regionmask) - aflags |= ADD_REGION; - if (leadlen > 0) - aflags |= ADD_LEADLEN; - putc(aflags, fd); /* <addflags> */ - - putc(leadlen + addlen, fd); /* <addlen> */ - if (aflags & ADD_LEADLEN) - putc(leadlen, fd); /* <leadlen> */ - if (aflags & ADD_COPYLEN) - putc(copylen, fd); /* <copylen> */ - - /* <addstring> */ - if (leadlen > copylen && bw->bw_leadstring != NULL) - fwrite(bw->bw_leadstring + copylen, - (size_t)(leadlen - copylen), (size_t)1, fd); - if (leadlen + addlen > copylen && bw->bw_addstring != NULL) - { - if (copylen >= leadlen) - l = copylen - leadlen; - else - l = 0; - fwrite(bw->bw_addstring + l, - (size_t)(addlen - l), (size_t)1, fd); - } - - if (aflags & ADD_REGION) - putc(bw->bw_region, fd); /* <region> */ - - bw2 = bw; - } - - vim_free(wtab); - } + return newindex; } @@ -4823,20 +2557,19 @@ ex_mkspell(eap) char_u fname[MAXPATHL]; char_u wfname[MAXPATHL]; afffile_T *(afile[8]); - hashtab_T dfile[8]; int i; int len; char_u region_name[16]; struct stat st; - int round; - vimconv_T conv; - int ascii = FALSE; char_u *arg = eap->arg; int error = FALSE; + spellinfo_T spin; + + vim_memset(&spin, 0, sizeof(spin)); if (STRNCMP(arg, "-ascii", 6) == 0) { - ascii = TRUE; + spin.si_ascii = TRUE; arg = skipwhite(arg + 6); } @@ -4852,7 +2585,7 @@ ex_mkspell(eap) /* Check for overwriting before doing things that may take a lot of * time. */ vim_snprintf((char *)wfname, sizeof(wfname), "%s.%s.spl", fnames[0], - ascii ? (char_u *)"ascii" : p_enc); + spin.si_ascii ? (char_u *)"ascii" : p_enc); if (!eap->forceit && mch_stat((char *)wfname, &st) >= 0) { EMSG(_(e_exists)); @@ -4871,7 +2604,7 @@ ex_mkspell(eap) for (i = 1; i < fcount; ++i) { afile[i - 1] = NULL; - hash_init(&dfile[i - 1]); + if (fcount > 2) { len = STRLEN(fnames[i]); @@ -4893,192 +2626,96 @@ ex_mkspell(eap) * used spell properties. */ init_spell_chartab(); + spin.si_foldroot = wordtree_alloc(&spin.si_blocks); + spin.si_keeproot = wordtree_alloc(&spin.si_blocks); + if (spin.si_foldroot == NULL || spin.si_keeproot == NULL) + { + error = TRUE; + goto theend; + } + /* * Read all the .aff and .dic files. * Text is converted to 'encoding'. + * Words are stored in the case-folded and keep-case trees. */ - for (i = 1; i < fcount; ++i) + for (i = 1; i < fcount && !error; ++i) { - /* Read the .aff file. Will init "conv" based on the "SET" line. */ - conv.vc_type = CONV_NONE; + spin.si_conv.vc_type = CONV_NONE; + spin.si_region = 1 << (i - 1); + vim_snprintf((char *)fname, sizeof(fname), "%s.aff", fnames[i]); - if ((afile[i - 1] = spell_read_aff(fname, &conv, ascii)) == NULL) - break; - - /* Read the .dic file. */ - vim_snprintf((char *)fname, sizeof(fname), "%s.dic", fnames[i]); - if (spell_read_dic(&dfile[i - 1], fname, &conv, ascii) == FAIL) - break; + if (mch_stat((char *)fname, &st) >= 0) + { + /* Read the .aff file. Will init "spin->si_conv" based on the + * "SET" line. */ + afile[i - 1] = spell_read_aff(fname, &spin); + if (afile[i - 1] == NULL) + error = TRUE; + else + { + /* Read the .dic file and store the words in the trees. */ + vim_snprintf((char *)fname, sizeof(fname), "%s.dic", + fnames[i]); + if (spell_read_dic(fname, &spin, afile[i - 1]) == FAIL) + error = TRUE; + } + } + else + { + /* No .aff file, try reading the file as a word list. Store + * the words in the trees. */ + if (spell_read_wordfile(fnames[i], &spin) == FAIL) + error = TRUE; + } /* Free any conversion stuff. */ - convert_setup(&conv, NULL, NULL); + convert_setup(&spin.si_conv, NULL, NULL); } - /* Process the data when all the files could be read. */ - if (i == fcount) + if (!error) { - garray_T prefga; - garray_T suffga; - garray_T *gap; - hashtab_T newwords; - /* - * Combine all the affixes into one new affix list. This is done - * for prefixes and suffixes separately. - * We need to do this for each region, try to re-use the same - * affixes. - * Since we number the new affix entries, a growarray will do. In - * the affheader_T the ah_key is unused. + * Remove the dummy NUL from the start of the tree root. */ - MSG(_("Combining affixes...")); - out_flush(); - for (round = 1; round <= 2; ++round) - { - gap = round == 1 ? &prefga : &suffga; - ga_init2(gap, sizeof(affheader_T), 50); - for (i = 1; i < fcount; ++i) - get_new_aff(round == 1 ? &afile[i - 1]->af_pref - : &afile[i - 1]->af_suff, - gap, round == 1); - } + spin.si_foldroot = spin.si_foldroot->wn_sibling; + spin.si_keeproot = spin.si_keeproot->wn_sibling; /* - * Go over all words and: - * - change the old affix names to the new affix numbers - * - check the conditions - * - fold case - * - extract the basic word and additions. - * Do this for each region. + * Combine tails in the tree. */ - MSG(_("Building word list...")); + MSG(_("Compressing word tree...")); out_flush(); - hash_init(&newwords); - - for (i = 1; i < fcount; ++i) - build_wordlist(&newwords, &dfile[i - 1], afile[i - 1], - 1 << (i - 1)); - - if (fcount > 2) - { - /* Combine words for the different regions into one. */ - MSG(_("Combining regions...")); - out_flush(); - combine_regions(&newwords); - } - - /* - * Affixes on a word with additions are clumsy, would require - * inefficient searching. Turn the affixes into additions and/or - * the expanded word. - */ - MSG(_("Processing words...")); - out_flush(); - error = expand_affixes(&newwords, &prefga, &suffga) == FAIL; - - if (!error) - { - /* Write the info in the spell file. */ - smsg((char_u *)_("Writing spell file %s..."), wfname); - out_flush(); - write_vim_spell(wfname, &prefga, &suffga, &newwords, - fcount - 1, region_name, ascii); - MSG(_("Done!")); - out_flush(); - } - - /* Free the allocated stuff. */ - free_wordtable(&newwords); - for (round = 1; round <= 2; ++round) - { - gap = round == 1 ? &prefga: &suffga; - for (i = 0; i < gap->ga_len; ++i) - free_affixentries(((affheader_T *)gap->ga_data + i) - ->ah_first); - ga_clear(gap); - } + wordtree_compress(spin.si_foldroot); + wordtree_compress(spin.si_keeproot); } - /* Free the .aff and .dic file structures. */ + if (!error) + { + /* + * Write the info in the spell file. + */ + smsg((char_u *)_("Writing spell file %s..."), wfname); + out_flush(); + write_vim_spell(wfname, &spin, fcount - 1, region_name); + MSG(_("Done!")); + out_flush(); + } + + /* Free the allocated memory. */ + free_blocks(spin.si_blocks); + + /* Free the .aff file structures. */ for (i = 1; i < fcount; ++i) - { if (afile[i - 1] != NULL) spell_free_aff(afile[i - 1]); - spell_free_dic(&dfile[i - 1]); - } } theend: FreeWild(fcount, fnames); } - static void -free_wordtable(ht) - hashtab_T *ht; -{ - int todo; - basicword_T *bw, *nbw; - hashitem_T *hi; - - todo = ht->ht_used; - for (hi = ht->ht_array; todo > 0; ++hi) - { - if (!HASHITEM_EMPTY(hi)) - { - --todo; - for (bw = HI2BW(hi); bw != NULL; bw = nbw) - { - nbw = bw->bw_next; - free_basicword(bw); - } - } - } -} - -/* - * Free a basicword_T and what it contains. - */ - static void -free_basicword(bw) - basicword_T *bw; -{ - ga_clear(&bw->bw_prefix); - ga_clear(&bw->bw_suffix); - vim_free(bw->bw_caseword); - vim_free(bw->bw_leadstring); - vim_free(bw->bw_addstring); - vim_free(bw); -} - -/* - * Free a list of affentry_T and what they contain. - */ - static void -free_affixentries(first) - affentry_T *first; -{ - affentry_T *ap, *an; - - for (ap = first; ap != NULL; ap = an) - { - an = ap->ae_next; - free_affix_entry(ap); - } -} - -/* - * Free one affentry_T and what it contains. - */ - static void -free_affix_entry(ap) - affentry_T *ap; -{ - vim_free(ap->ae_chop); - vim_free(ap->ae_add); - vim_free(ap->ae_cond); - vim_free(ap->ae_prog); - vim_free(ap); -} - #endif /* FEAT_MBYTE */ + #endif /* FEAT_SYN_HL */