diff --git a/sort/range.py b/sort/range.py
index fc252ab..cf8ba97 100644
--- a/sort/range.py
+++ b/sort/range.py
@@ -1,2 +1,21 @@
+import time
+import random
+
def generate_array_of_number(array_size: int) -> list[int]:
+ start: float = time.time()
+ array = [random.randint(0, 100) for i in range(array_size)]
+ end: float = time.time()
+ print("Taille du tableau = " , array_size)
+ print("Temps écoulé : ", end - start )
return []
+
+generate_array_of_number(1000000)
+generate_array_of_number(2000000)
+generate_array_of_number(3000000)
+generate_array_of_number(4000000)
+generate_array_of_number(5000000)
+generate_array_of_number(6000000)
+generate_array_of_number(7000000)
+generate_array_of_number(8000000)
+generate_array_of_number(9000000)
+generate_array_of_number(10000000)
\ No newline at end of file
diff --git a/temps_exec_prog1.ods b/temps_exec_prog1.ods
new file mode 100644
index 0000000000000000000000000000000000000000..9dfb5cbf2e0dd02076d81ed9fa2e946e6bb6ea6f
GIT binary patch
literal 16187
zcmbVz1yo$wvUZ2y?oM!bcL)|VNN@@6?k>UIf;%+s?(Qx@f(3WC;P%7Zmz%lw&CFW=
ztL|QX_UTjK-luv?o!Vc?O1=d}1ppuc09sXNWq)(d5IO(=@cMZ<1+Xx&FtB&AHqf!Q
zHaF4Ju{W`@q<6H`r?b+rGqIzyvNo{Px6*U4FtD_zv$M7}(9yRuHZZW4{R0yc67mns
z7npww&dZUEuBm~Z{U-x!a~(Z{S5-Uuf1M&=JW3t6!Vy93U*W3MW4A#0idaNe6AWSs
zEfAvD|Iy!X9Xvl6GPtmm1q~P->RLe&oJ>UGck}IQz$c>jAqy~G0CrF&3{Z{9t4S0H
z5<1-XAPVpuU}%=xt!Zh8hN-MeaS%u5My2!h%SmY`i{qZNaz;kn{EQdoHj`gSDtf=X
zv!=_a2e^lBvAU><+hNDADhcC!te&1;~)Zpl186^>C_R{RKk$fSSWaO1)UfsxO`^WF@Kj?HgbC%k1P z=aPXuv~tj`P_uAI3LJxPR_-G&>Yx#rz_vW3Cv2q?Q10z^TuVO9o|P|_nbyw9KTJe4 z<*iE?i!KxumuXqnX1L-q^in5#A}i8Wj>BmZuKR5shIR>I(VSYv?^w}K+`8u}Ar>^p zD)F9lDI$|5&+`_XtLQ+>jPYEW2L|DV%rE<5BCEJ+3tQKL&R#k2HA#C(OczAG&(#OM zr_vV-OF|N 28MZE;uyb|2 w<^@q=2Rm?aU)t2`mi%y%O;n+o-V4TC;6E?gi66% zUodHvM(EZ!u3#H^QzkA?hmbrUyB9g$`UGaXF>mn8NmpgC{;6jdWq0+8rwei`4x7Th z#&c(EvR_pn6lRKM{3W_tTz$qj_yRm3tzh`|a*_br0%2DRXA^Hmb d+gyUy&&R!1Myq9lv1o&gQH_?Oq}*pr$|;#jc5=VRaG1Py2M(wJim| zVMf1U6e5j}BF=mPrw{g!7`|_2z-<@ M=cY=_4!} zP$uePL jIZwfLA4>K1RW`&OB7tC{JLd<@I$F(mUSb^SotOH+98;%fOhh^XS{ zA}*!0<@bT$E=XLL%!(X56qxv6 m67I^0}~+l89m zyD8QltJa~)NYj-BLUE#T2M$@vs}5|Xq3x6+BJ~kBzb1^?QAztD-bP*yI|%a0D~C`E z$< {m2i z#1!j?2n4blx(ELA&yU8q>1pNgq8kef@|kn)C^Q@}=n0kz<34x=86j!Opo3ourBm%` z9-rRsac>>$6 #T^Yq6(}g6jj&OD)N^XM p5Q=21)(gT*zCS^h7hP6tU%jqVX~fiG|$ V5y@OE0#TpklLh(Mu*DBI>eNFi@)90F zav$VlP)E`rY9%SM3(xpRt*gl%xb`!(`o$X~NOJE92H3r*+%fhb-P9~_6D<96b8TlY z8~bA)e)W-L>cA|QcA%D;p4ZA0d8!>tTA6GqU4#6|B2+G#5BeC2eNYZ)?>DBdkE<+Y z-|ffu6t-fc&k4GN#QLBzfr*Atgir?Df}pgZYn02@JRYP?-HD3W6{`l;ZFl;n2wG$~ zvH3K39{fB>jH_9T&lKk#V?dmNr_CjL**A vRwX*=q1A zcqfrb?Q&nDj=IfWj}bW}@*!!H7H}L0(!!oC_s1Jc(M-12h6&Z3%t&9)*F7;K`numx z>ZVT+HRC@$p0U?pwz=G_MdVY44^pk!#Kj0^C1OB(B4|4hDs#%+c&Y^J_EzTDDz2su z#Dyrgkcd ^yij$Q5aTd28z6g*6QL81tlq zUo{Hk|CpVTW{S0)pro$^ntfku(W|+cZd$Ue&pzsDfK3=S&^BB=T}M||^1)I-hVVl= zk^*0&fW z1o8-ofCQZaHLB+Quz5#WIdEuJ*g4c6&9hQIs(Mj5#*w;!sLQ**yi0FnU5N88fyg>! z0WQiG7?Jz4|JplUh|9ny!mm7GnTa9uJD)WVNx{H^QtWvVATHBm#(c1h#Aly!WTZ;5 zU$EV&WrzqD0()u|>lqr_Vc3?Y0hKA5 zYz-plG__OPtrAD5O%)628lcE2Xw3G;-q{3*$Z-l0_9Eq_%EV-|6m3(r77st6A|?PN z+Gq)7k*;`Y7zGB{AziPXl*;lrKD80(EM)5rn4%`Ue zn2m}*nfnU!TQyt_s<7$C5blNNU9(xqVse$;=b!+D(WMT{1lR>{)MH4BUPb|^;3W5k z>hKc0cXLJ`*F0~;vZ%3@eGwYISa@r$ytf;=y6(=f9^4w|O~u27=gMP!XOIIB$vPXP zjjQsdC=4Oo$*9cC>jl-yRO)5v)XH?|xRG6u6gjtA`zfr~Nh&k5s`bE~MecHGy%Mf& zZ5nxCqd^Iu=HE9kXTrYX?no5uGRIY1n9_#;!CQQ;J6B>4AqOQQ;0F|j|J0@i U{_BU2xE=46rf*rf9H)7>07NKj3lYHwMf90A0BX>I@nllHTit%bEvwU3O+k6Ip$5 z=!zo=N(k9bBy_4pMmyUnJ+)aL)rNP1CXx+i_BjmE5(}Zua~0rxGw&uPXfSx%wk@wd zRS(yon4L Pe;Xxgf|RiH{=X*rywj0LX-w2%$Zi)@3FJtFn%)6THxt?s1_8}NE}whxGv%C zfl!cM)0|M*K#YHStE2iAbCU2U#!WefjZgAi4|w##{Xn5uT7??r;!G>ibo5U__fAHR zdA$8#R++27w_xxDsRM9?`)gy{8ExH)BQ;(m!ILJlIoq9v5}}}sEo89p$Olo0e zbOKBj1c<2()@^%shnS|4s>piL144WA;uorKOFP=5q4g(C%te=Irv2wiVsSL~WlO6- zwo3;x)?#HKHDLR?$=cz;rIPECCI_vnD<>`ww$aBvSnnTzXG5g4Ra!%I_M5Y$jVJH4 z9!p#pLyxo4wml)74|CBp0QcT`Pbxxffq77hfM8%n2PTSIWzVdgFksgpoTLUjWqE#_ zu&ON%Cph(Cgnp`t=rYtel7tkWY++IMWF}+3V-4&$_%sQ-rlR ZRy#^kyzjh*^X_qT4F4sgBZ X9VVysO~uZ+`hbb7O@%Ly1@9 # zW{fUvghEfWf#ciCMw`uC6Gm4^+Op^$IzMS8Zv}g`P?MUPwY6ELHr5x)@N;@nyZqzu z9+sLk{mWJ5qupmC+q|Z^oJ=5T>1y-&A!(Q7ny5XT65x=3(gh?OIPxi zF%N4^IQfN!Z%J!YBhW7vbG5={{-{IarH=I~HR-;3nD%NTSG|haysdLs+JuDCGlmc{ z`EhLaIkTy%Hm?i^)pm`34XJ#)m59PhqoTbC7U9~E;CqqCi(ZGF;atNB&&O$=%jfyE zHLur|O7SBEw#~~187<*2Kjc?H4m+37KpY+bc>TNv$P|nnEOae(Ow8@*?SCE8Sz8(f z%SwyFL1Vv0Ea1e&gg?D}w*dfe0FW x+wvr>CcvRy;pHCu87ty|nX-xUhhN^TJUYjNJwse1Cny9J1CCF9qM?*XcN(^?R?* zx1?502OMKu(zMM&qt>h&11Va@h#mMuoAjp>{Rt5(XWX9sCpUQQ8!Nc{v#|%=YvhgD zRXTx!`dlqs;Z~ouNSE3*u9gV>qAtLz>4{0ks*?s|V<(OjyO^cA?1~!!Z+bm1;Q0mC zc*q9hPzlJH%qY(s6ahdg6oz+ShOMdHkqGa_KL(2lc@z0ZcXrCY4a5}tD%XE<7T(D& zj=2hT#TwbogKyY=?!kzZcsc*W{K}>(>=W`?ue3yuk<_vGsz%rHw^&a9lQXnvDvFkM ztPcew!<8k~2#ydEkfo0w!vndb^TqNwT)pXSzc3=d@9IPV-?jI{FJQM(JH7q@`A)3w zxex55FvV~?U)9)=`k_$}4iSA^o_9=V(1N4@Yg+|nRq$rpn18e_4Otj-2Xdw!#t`3~ z=7#7A@ss <&g{&4>xewiY-#5Y^^b@*D9$X*VGJ8{r#4`~z^Q#x_drAby(_Kwgf&JI zm$MHlpP=&@VICeNnQKBEzhn_Wxm_t2^Z3K+L4pS=S7APoV!Cc0g!MCpF0W8-F>P?1 z(jbd!^{m-5D4FDiiVCiKR6|!K(!cR^MA{w%(7EPnW5Iu}>kej;Z?wF!0n1`V#wDH% zI|_@yeI!mz_iO=lm*Fp(Z{Y9J_@=$zIhb!IxTPQ9D78R^%Q!^v3V !JX3T z(Lrfa@9Z%!iLJ%kFv0YO`iyI=5@9V;rJsHZo_|}eKJp|Q!Rb&tb9NSV!Nq{%hSgiX zQFBKBWOd7^sm6#Yf`6(}*I^W|rsMC_CFc8fya-W-DPn3YrM8C_d7Mc|rdcSEQ r@z`dBWmt77SA3)m?2=CSx53Nl=?IK$0>d)s#X&PJwkLCEEM~7KNnd zxk}cg#PG2yJqOIUp3tMjw`4agQkcwS?bZbsxMo;L4rP67u_Z+&O9kcAP1=L*km~fh zXC(`2kDmHIdb^WQ-QU%i6n1h6Vl3EB>tO>W-rlB4yydVdaX@;uD23TVL}-A_>;f#5 z-khj =JuT>{Y>fqO=-RGB|_rS7U74~)Yk$ecjK zDJbO{GV+L4Dd}#Bg+^j)1Zy|0XmCwk(ci0bjaJ#z0IJwiFog ADd zgyKD0eThucZ4#p~>_Z=}$L<9N@Ssn)gV6S%-{@mu1c|_u7C x+GiLLLSBEBl{FWG#>>OLgZl}oO3 zo0N}cSW*tIlPNoIO0_z 4q)#`528WJqYJubjg=Q1jOwEumFLYIF03YbrxW2WegKJcHz0Tn_w}9OK;G+Bp z(M;Y^i?3o|d{pIQ$x?H#cGV(4$roD}8DNNuM4ZMKB;tYgq!QOs;0CgtVJ+tdmA#|b zQPv IaA(lsgk&P5sSKpIJ*lQN(?Ubppn4=mvWZ+<#j#JBJX%!52WVi U2d{84%;3fb@ziHpw~ki(7UBms zuDr%gx7|a(oBp0Th) D zCvPoSNfDSopMhF&4$dmZ$9~oYIvq2285-B>I>-8EILpRn6@f$V{Ew%h6Yhl!v$ 16oTK0tW%-iQlZ1x )Xe zS>JjuQPhPmGV0rAmy6q^%9}yGXbX1G$VeTY3GP6y|M3r<9)3BC*TL +j)clNE=)yEt))(Wd~Vygxj=bW3V$(j&OMWe0@OA&riqK_54tA)6Rb5 z^?a6i)BcRI_I%N=x6K3d(EfCvNV$j)_mt7jZ`gO+-`?)+_5MN2^J%LdV(i-MzIHh7 zS98_HJ};-QT ^)f@NpWiV zTF%DKh|{W_`Ocr2Ny7%S9n;- @xkq3OK)Lst?YD(VfTE<8hsdRsJPrS=1A_|$$%4dKrHec zgjeO0mMZ+1hZ&%iesQ+zo#Yo)ko@diQF_VpM68pMi|N^;HRdL-eNEon&^op(chQ^B zAX3pp8`;VCJWB08HBX0bOz--GIMLU`Cy>N< =D;bYzBi0@|)3gq!fQVM*$cs395;ta8E? z!Q?=qHDR9qyPS|_iUMh28&$48!o!wiTKf r@J@Z_hx9fcmZXlj>4^*p^1h?RC)&n?#yf B*87m*e&6V&$kd*<{j znZVA#-rmI0=nwAhk=o*?4Gu()mGaDoceZOxt3*jYu&Q%|@P#B5%@=udX~O;`j^ehd zBeUiD{qox83~eLdmCj;ANYgCq?`)^fdv{9v;n@gCM3(ED0`U$24Zd_+#cdA!__bpt z z`9?pYEe^IQtsH_<`TOckj@vg+s0+GXMjAzQ$9$%9t!c#rnqAG4&8hsMQ}*}D2U0WR zk>e2|UG+Tc^%PDzFqUele)Ef{rQhg?9Ys(BPQQONp^Tg0(}oKZMP2R`D|+*BkCS|X zz>4zDeGn342-6;hV~qh3xfhgFkqi83jLE4!2Zb;2i5%rF2lpo&^xfM=BJ*wLq9 63hwvT1U63eVuD^mrodh*>gFT3d bFPYI;1ZqB}9It z;%XvYLdOY~e^@;UTGq&(-v0*v)4PHo92>$VzXWaoTFTP{?XiaB#youO#3xVw8YKG7 z+V}Ut010piry9o2v~Hy(6WdCC%m^Kk)X(W9q&iHZDt+DgTa;EDMZ_W-97PPAq%@SI zam;DNQI%jwjU`!bj*fS0lZu}gAR8tR_iTtdCL)pPl!Zr}5Ha`Y4 pWzhcCq_YA z1@MT3qW9=pr-(m>NH$$pTUc~ZunU`xzKxV&Y T~#49Ic87k&FT`-O__nRgMCUM<(3fduXN@(t8C_=uSl-}_u)oU@~^I&qd^ zo;z_od95H(;i2q6^12(}IIkEryFsnP$mMw61Wzb|pM88Dv`nsn(c6{6%4rUOAzJ%+ z6Jkr`c=9C~5x++)Ga*>DzcRyIyA8etj68NmXXc?e2`L23;qz)YD^iaf8KH7(0TxOd z^uVyvW!rcyDk(iD1H<`6lhM@IM>it-8ENHj>&FgY)I$!vG$)y}KRg^f6ziVyKF6f7 z|5W(GGFW!?F2iOo@aF0|0s(7?Y)Dl~O-g@EfceOf>D?50IR(;#cPQZ+{4{b_A*A5C zG%K&**ih=pG9ACxmGUKX>vcGbA`$!*)mag=XMgt4R7q6Oq_S>wqtVt?XgU6Z%Zfkj z6WD8f%nt7+#t0MuP$l{mANwn|6WYrJ^-)AYfL2`k1O2~gPcJO;TE$LF975EV9cm?9 z*FyCDRHF4-gwju!vLZ!a?S$w0lS9CuBYU3iySQ+;Lug!RkKmlUM;K1TX=WFf73dLx zj&+1Eci{@!xn{LT*ylIa$}3Tq`=;|S#c0Bt8^ED!bN3ZC60qU4ATC>K*C1R{r+4ND z`um+k&p|uBllR919jq?dZ18o&R=YQ1IT}@^9buj*KBa+~lH!=hv6IL*NZpw=O-1lB zvJ3Ci)^wa0GQTp`Vl Ir9UwM` zN_{= VRCUx;Y1Fhl{CdB zNuAa3*`1JneMta|2~{LkUT~xlOU*v)TG$;I=l7&Oop`Ktvzm8og =j5N)#LVBK@N)PMX`25H^yhSz*Ic3B0{zn1U&)>S&K&x0^*^UOyym?8 z7VnpR=6|dIW|jRnz@IstuUQelB@^mT0Ds!C{Dtr gN*#Yt@E2%`u8aRX&te@K>1Im>E9#0a!r4W&tD+@FXrjrgZ-zG+W!LV z&rH;R;rtqvf2LW!x{tr*`UU6TQ}hcn^;akUrTJ%O#_OiWZ((~G6@Nc`{=Db^%G>xY zyf60smGAf8wf%Yj<&_WcTX0@BPX1x6{rC3FZ^d4czu&C+@9O`&y#1${gqi=-=l*Za kKTo8u%inL=V*i`PP*xJ`Wg-Ir&|Y5FFX@uCoUf(-2d2D+i2wiq literal 0 HcmV?d00001 From 6e5c831709a9c3d1cb5e738fadb6a4862d09023d Mon Sep 17 00:00:00 2001 From: mmaury2727 <120041871+mmaury2727@users.noreply.github.com> Date: Sat, 25 Nov 2023 14:17:41 +0100 Subject: [PATCH 2/5] Algo Selection + 2e graphique --- .~lock.temps_exec_prog1.ods# | 1 - README.md | 4 +- sort/range.py | 32 +++++++++------- sort/selection.py | 70 +++++++++++++++++++++++++++++++++++ temps_exec_prog1.ods | Bin 16187 -> 24617 bytes 5 files changed, 91 insertions(+), 16 deletions(-) delete mode 100644 .~lock.temps_exec_prog1.ods# diff --git a/.~lock.temps_exec_prog1.ods# b/.~lock.temps_exec_prog1.ods# deleted file mode 100644 index eb6a726..0000000 --- a/.~lock.temps_exec_prog1.ods# +++ /dev/null @@ -1 +0,0 @@ -,DESKTOP-PMFVC5P/HP,DESKTOP-PMFVC5P,24.11.2023 12:09,file:///C:/Users/HP/AppData/Roaming/LibreOffice/4; \ No newline at end of file diff --git a/README.md b/README.md index 2a72613..7ebdb05 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Mesurez combien de temps prend python à générer un tableau composés de : Sur un tableur, générez un tableau permettant de visualiser le temps d'éxécution en fonction de la taille de l'entrée. -Comment vous semble évoluer la courbe ? Observez bien les différentes courbes du graphique ci-dessous. Quelle est la plus ressemblante à notre situation ? Malgré une précision assez mauvaise distingue une courbe semblante à O(n log n) +Comment vous semble évoluer la courbe ? Observez bien les différentes courbes du graphique ci-dessous. Quelle est la plus ressemblante à notre situation ? Malgré une précision assez mauvaise distingue une courbe semblante à O(n) @@ -75,7 +75,7 @@ Observez attentivement l'animation de tri par sélection ci-dessous pour en comp
-Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? *Écrivez votre réponse ici* +Écrivez en français classique ce que vous voyez. Quel est le fonctionnement ? Comment l'expliqueriez-vous à quelqu'un ? Nous avons une variable à laquelle nous affectons la première valeur non triée de la liste, puis nous commençons à parcourir la liste, lorsque nous croisons une valeur plus petite que celle stockée dans notre variable nous l'affectons à notre variable jusqu'à arriver au bout de la liste, dès que nous y sommes arrivés nous plaçons l'élément à la suite des éléments triés, et ainsi de suite Puis implémentez l'algorithme en python dans la fonction `sort` du fichier `sort/selection.py`. Vérifiez son bon fonctionnement en éxécutant le fichier `python3 -m unittest`. Le test correspondant au tri par sélection doit passer. diff --git a/sort/range.py b/sort/range.py index cf8ba97..812ba70 100644 --- a/sort/range.py +++ b/sort/range.py @@ -2,20 +2,26 @@ import random def generate_array_of_number(array_size: int) -> list[int]: - start: float = time.time() + """Génère une array de taille donnée en paramètre""" array = [random.randint(0, 100) for i in range(array_size)] + return array + +def time_to_generate_array(length: int): + """temps pour générer une array de taille passée en paramètre""" + start: float = time.time() + generate_array_of_number(length) end: float = time.time() - print("Taille du tableau = " , array_size) + print("Taille du tableau = " , length) print("Temps écoulé : ", end - start ) - return [] + -generate_array_of_number(1000000) -generate_array_of_number(2000000) -generate_array_of_number(3000000) -generate_array_of_number(4000000) -generate_array_of_number(5000000) -generate_array_of_number(6000000) -generate_array_of_number(7000000) -generate_array_of_number(8000000) -generate_array_of_number(9000000) -generate_array_of_number(10000000) \ No newline at end of file +# time_to_generate_array(1000000) +# time_to_generate_array(2000000) +# time_to_generate_array(3000000) +# time_to_generate_array(4000000) +# time_to_generate_array(5000000) +# time_to_generate_array(6000000) +# time_to_generate_array(7000000) +# time_to_generate_array(8000000) +# time_to_generate_array(9000000) +# time_to_generate_array(10000000) \ No newline at end of file diff --git a/sort/selection.py b/sort/selection.py index 73a21d3..4cbf29b 100644 --- a/sort/selection.py +++ b/sort/selection.py @@ -1,2 +1,72 @@ +import sys +import os + +# Chemin vers le répertoire racine du projet +project_path = 'C:\\Users\\HP\\Documents\\GitHub\\tp-python-algo-tri' + + +# Ajouter le chemin au PYTHONPATH +sys.path.append(project_path) + +import time +from sort.range import generate_array_of_number + def sort(array: list[int]) -> list[int]: + """Tri par sélection""" + + # On parcourt la liste une fois de moins que sa taille + for iteration in range(len(array) - 1): + + # On affecte la première valeur non triée à la variable smallest_number + smallest_number = array[iteration] + index_pop = iteration + + # On parcourt la liste pour trouver la plus petite valeur non triée + for iteration2 in range(iteration + 1, len(array)): + + if smallest_number > array[iteration2]: + + # Quand on trouve une valeur plus petite, on la stocke dans la variable + smallest_number = array[iteration2] + index_pop = iteration2 + + # On échange la plus petite valeur trouvée avec l'élément non trié actuel + array[index_pop], array[iteration] = array[iteration], array[index_pop] + + #print(array) return array + +def time_to_sort_selection(length: int): + array = generate_array_of_number(length) + start: float = time.time() + sort(array) + end: float = time.time() + print("Taille du tableau = " , length) + print("Temps écoulé : ", end - start ) + + + +time_to_sort_selection(1000) +time_to_sort_selection(2000) +time_to_sort_selection(3000) +time_to_sort_selection(4000) +time_to_sort_selection(5000) +time_to_sort_selection(6000) +time_to_sort_selection(7000) +time_to_sort_selection(8000) +time_to_sort_selection(9000) +time_to_sort_selection(10000) + +# array1 = [1, 3, 1, 4, 3, 4] +# array2 = [73, 16, 829, 2, 6] +# array3 = [-4, -282, 0, 7, 0] +# array4 = [1, 1, 1, 1, 1] +# array5 = [] +# array6 = [8] + +# sort(array1) +# sort(array2) +# sort(array3) +# sort(array4) +# sort(array5) +# sort(array6) diff --git a/temps_exec_prog1.ods b/temps_exec_prog1.ods index 9dfb5cbf2e0dd02076d81ed9fa2e946e6bb6ea6f..aa5d7e7e8311c3c046a874e4dca1b799df2da242 100644 GIT binary patch delta 21283 zcmaI-19%`$^frjb#>93qu_m@Xu_m@{r{hd)+nU(6?TKyM$eSQK)qUQo>i4w!mi2%lD9C_Apo4(GfPl34#vv%-xA?lNgZys?%D=q4p{0qDGx3jl zCMYdXuomBhC}
S%|&bvA+ z7 Vn?L!Fcv^3SJUUJB|Mns6}7m%)a0vup^stW{(eFQIXzGNcH-4iZo(E%t_2t~#+=^Qfn+*`$PkX8yTAjWB*Faf6d0WX zav-J`?s~2ODy`6^X>(IHlqrdtfBM(czQ4tFeX-ApV08XQ`4I|ZHQr=hzg*#(w?w%G z6v7|86$w dI{K6b`YfJ1W=+_^JL#0k8gkHHdnIn4{g|H_Nw6VK?xH}{jddDs(Q1yt5&{Oa zo_q&!{)QkNVw_APGkGY5)zDORvJuRnG1qW(z E1n^!Jm*SfhiY}B>k1_oYONP%1R| `~41352InGoV P z&s-p}T8`yT`}_r |?z+$ZSKu^q7hZ)IEQtEO-07f9>x*FZvu+c{mML`FfkP z9XXDdQcM9ZTh@m!?!}BT 7n>Q--B))zdN5Pu!5$DPUXS#c z8R7*vVpt>N--lh^S~W`qn9?cH#};y|f-^Jf?PUJey{|JS%4JXzWS%z9 Pmj;Y%`4cJ%L| ns3f=xnm^el&3ey%V%tZm#JH*oGC} z1`Lt$(6p7P14_n}iq)ik=WAVO6^&p;eDI8zDkso=gnv>ouVk3m@`@3@qf+f9L~bL0 z6p6~QVup@Fk_t?7C5wLsA#Z;_U&-k(-(ci_Q>0We>z4MkioxCR-QG?P^RY{|@~TKO zz%&Lt(_PP&c;X0JcN*Q)ED$m(DXzmc%_1En?Z}De9YBelg?V}860Tri&&eZ)guQug z4tfb0R}x;U;E+WSAIexXz}5RRP=xS!W&4Sm)|5;Z_ngT`IoT^miwI;xs4k1lYE+pR zl#d&IUm$$rsGXVjx}=UQ5~k+Ai}?s*W$ptBbT?EI()W0K94eMf9GVl`>8fs%@cGc| zzuZusy)n`}#TDaV4gxB4XOgW*Kc7Eb3Ej%ea;tE71>U&ILPm*>zL{hjM6>7dxQHgo zr6*_$TS<_3Q>H2HZSos%$a6z1T(RTdgN_lK(|u&w_Ly8SkL~CnBt0moO~w{;6y*ZT zS*b3Q H2?i2vRb6eG^Wr=oN2oXyHUSm@V|xU9$kvW@Cx=V3Q_&i_ zXoBekvvqX2UR>nPAm!BTOMb;^66C!`=`SwZy2;6f(500dUapN=jy@QN@W?C0c(8iX z*Mod|x 5NZ z5&{4c@+HW`EAV@dRWcu)7+DxC66Iv02L?(X0vV$JX^$8&VL=O0D*p95HrZUeKMGP0 z3=xd@ah1|^M8JYhrJAB;05fSP9`-Cq R&{Q&@+X%{*G zRO6eM?ryL_dSR8>|J1Jl#jXhT-&v_69_YHFkV2<~!ZaFd7m7p3l_Z1_+ZVG)6^4J< z6N-+czJe0t_9OKnMz?6tEVAf;TOU9aK?^52*vO3qUozkH{DyrUAF4Pe6F_y7CypCs z{PTsy4wUaUL+hiz@&kl!(WeoY{-L?tmhBT+C*uoLK?WKoz@xj<85#rx SZc9#Y^ni+PO>b_`ys z83nj*ZbOF!ytm)@WKP)kPReqN9F=rwo&nI+qIFCaATIPkDp5<0JYg*!UBy GV;(7gD5DB6*mZY5PS{mbMFOYuuPp%%KWi0- 5X-v7cpf8;+e}q ;GT38K5?^9K(?-{-?ZsXP1 z$K=)#2KJJjY;oZ9$wSOaUC}H|)F))D;Tyq`OMJckM+AgZJ~I33?*Xy+-D8c5yB+S~ zI(1<`u`;}_jn}FV2&CdLPZ`xCe}Cc2^ZQ9Wn3w?`spjKpX-R#4Cs}xuL)iz!MnfwU4m+CFI+}E&l9(QBrlQ^ zpV#L1Ek)Dd=qSx$3kp4;gwmKz)qEEQr0wDNU)37)U&i}y o2?OR(kHOG0N zHNgsEpZC+GJSY^IlY}P(P 00^d#)&+w$HJ`qHw-i+80ZHeSVE9|DUE&hD zf39#!kW$Rqp6oS;`R^I^<}#S8@72(M1d14oDZ@Y;%U=uVU7-CXH?;$5=GzEco98#1 zxM_GUdPx>|aI9}I#II~!&A+?ydbMg(*@MRYB&1f2Av%4YXIrP{IN6F*IjOM{xvM+O zPD)EiAeh{_-Ad2~i)xJI*9johhurCjf`7{B8n%_n(#S3nHNJJcKb5*$fmwq15|tNB zK-%+cAPRmZZc4wEr0E0}(=|Zv*hahi=yMdQ5Z+Dj^im*yrn<&CV(bjn#y({1W47Oz z7TiS;TFr|ef0vp;3J4o{aG-?9t8on^4?2Rv*!sZgt7uYp9DHO%`sP!km6LbKqmU*Q*t;*+hD4k|2#a-Si{^N`)@Y9vjmGKv&-JQfz2B*ZTj@jAM0ex zX$$m<$V)H?`^bmdM)qZw_;A1lJh|gO;YZm|&vu5zz--;Hq$lKT!J8hNUA_7}p^7P2 zua6)UpIb02zS00J9GjCoQ*Y5$r*Ez`gbO$vnDdR(Jq&-?g1|&LoV|KF{foBj+RpeT zee>n^xGA>bele_Weh%T&8G{|&z|RV`JuAZ8g4LY%T6wQdlp=QFq0!T{KA*A3Zi%we zhrMMc^r{hyy&P^`*eu{~FyO8@6t05#4+Qs7)qw3*N1g-gEdyjN1ImuDvb^C115;(R zWIP-UfhgKg^Nu(#%)-gqxGSv=IMLfbGUH{;Cpbo8&XGpOMy8_1%^^}|6Sbjif5#E6 z5yU3NW#Ofqp=ei??EeU0=|Wm^mD9obr`d|rdtfTfkVmre2d$ljuqyI=y(Ln@9!GxM zWV_m^y&a&`{;yhE z4hqT4#quJibJw2%qqpvjznVmeWty5qp;CT(YyrqY7Yt&6NyFg~CE@&v+#qFNuV)s- zOm)CAT|#U3oaTICjvIT+(#C~~w_yiTJd+$S^ZoZ8gx0OaKNU01;{L4g>6tBZ7%`z; zJ9fNrET+#f^U0`b^Ped^7&%t>=_x$^M0v8t%jd7O1#BGr%SPNAWzRtgUE);Y2B`yK zcFVt>|4#vjQQJnDF5+oN>k#&!gYjBPUXo%uUe--&h+7>;C6#m^L^)AM6W@h7P?Ti) z1V@51e Ewy}SCI z&hJh|To91|V!{@=Adsf;Q$_6Cw{Q6P_{7A-w6wH8e*EC& s &wd|UJC>S$4N?5NX32iLI*ixwIycrEs5ktVD<9Ra#(8p zV#&2?+5OMe*NNPZdAU?r2vhyzP4MZ2Ie!p4e2qC;ja#DYYTtK djh+WgIqs`3?&fK}I0|2mI!*$W2)?< uml^{s-?d#fE1*;#@{D(BQBX;uAm@O)5mfYO=< f!?ZPGRPNRx%LvG|5XR5wYGE_i=!kjwNQ)!;pvoJha(9v-g|B%3k& zDYuOTQ5%nWV%-woS5ae?#Ct7_OJHb}z6gAi!%T a)$A{Y1OJ_RDx^vwwB3VD+Z53eQ*{Db>hB;>pY zYchc#+5q?DcdP`qaI_zq!ELUagoHc_*n*MYzQq{QRI6W3E(ghwS-0^T&A{wk)!Fs+ z`fjHSDrA(7+SQtflMKO^GD$B}AMo3$4WBcoZv6SnTjSZxyRhDO?c<|+< 3akD8!JUaa#{6cEi|(g*f{6;NX{*R(`Ma&1>YXuT(iF; H3{H!O z)U%dPKmS^PrUh@oZc0!%0m(mhnaS^u1S`7m>vgHJk2k1P1&-5A9Rf@8t^BuYowE5$ z7C#zZ?jk*b-!f+Q>Vqtr8 3&{vCp(?g9D`R2X&CjkA?*49q3we0t z4WCNaTXtQS51bN0RKGgev>pOiet1n{qCd+DJ{!AOO*-(G=bf%pHDF+s&U<*}l3`qf z%Y|aeu6H6i74C$P0}!}*E?^ >8_Jlg*1E7K1X=#MHXwl>zEd1u!_ zWLiI}IhPQs!@nBZ9x2qGjt2M&Ry0xXCbF=BUNgupv1h6zMxdsJXfxf$ ;o rNFTK|2(_ z$!Gi6;guw#Y}=Lm8t05-^a5NJ0a$SloQh!0yEo8hS!S&`u&U#$f~nrU+-@R13-VB0 z2zh36mPoQ$z&vBT=d0tzok?M?cBj|+gFM2;>9>u|gYULwfUM$BaPL z)Qb!eLVzL$p*4kA8B$hH+!xC?!3uz?c=Nb>u}`!C7Hs5V9I~~MN`^WevU3}w7@Cpu zh$U3C$!aK1!h5bAe+zaGo%(Kgw{#1}+G{7@_4HR%UdB9S5G{u}!0jJZH?;wnAzp~j zD6)N4m6urI7j%6wl<|YuO~%ZWM?No{#EcSssnb?2Umo|ENIl3vkCbt(%^xb`xR|Lh zI(0GtRSYW0$?SUzk?-p$^o~=UJZS{1{1AW!32g%%R+0yOv~(2B^wn6v^3%8D!ohs2Aj @ZPgg?5I<25tgYj(itPv *1pR@Wc21t}f@Vg)s_LrmvbCuh>{{ zI646*tIuJh+7q 4=SL6zSpCSt3Axe$dBeJpb^b>yLl7<1T1z+w7xuF zY(GrKiDmjy#tr^?z~&tUb?9T2vI
LlzeP=00Gh(P;ifRHng^{{NG*Ww1XF9&DU zp5Aic9q*RZnnmAY8rr_zwo2*0%wBl5P`d -q a{XyTPN3PvEZg#4)j;+mf8GuEBhIjJ7+#i`ihP0r2PH0nX8| z+?VPbL94ZBT+J&vjZsgrX9Tv}JwqnmKN1yIx}6Yjlj1~C=*PprY%}L8ro`7o-~6%W z>_U{bD^)Q8|J%>` NAZWEjLVIAdm zZ+p4nuc`;7mbWEan>FSJTlTN%C+~>Uz2la>G|cR!&d3g yOi0(n$NC09s-kltR& zaa@bK{0X!`*-HqiCwbVj1dM78zK4p8%gAt+&L7|NU2igg*~?7}zP~z< 1gF+jgJ;c0;;(S#5li9GX)Iqcg7%$1G-@);tc&b%O1k z#Uk3wJRU(2*G*!f*LC9ZX*4<&ql}8Pp{u8f6$)iOI _?#l~E{D_k4^idNi5}F?O(vN{jL}?G(0C zK=N1IO2E3646QVFeDdmz5!S#xK?7{%K>yz%X}tHvhrP}+XG%BGFsbtK?Kk0uPTMo( za>}1HmJB@pLo01;snH${J`(g2a2253{BaS9H>(wZgxJD?irWAZVUj}EoppQ1zsU?_ zTnflb+#*`*tg%ZR&Rn{8*7D5G#L2s20nubj1&Kp$h^3h+r{)UxVjiZFj~|^hpJ-Wh zb#{*wVJ1;gQ<~gK(WoZv{-Y%d5T72d *J-n|mr^i+y#fFBDAb3;9OZ37B;ksX6-4cY6B;dVhm^fTi~4Cb zz-b1dH 3x_fr z90O`vLx=T)GEPi6fY-=d0 HkGKb4ZqiZ9ufuw z3-Y(oPxx|*Ou)%2sbvXcMiktD 4^}@>+^Y13-HF1Xbzs4UL;ZL%hz@6wWN;`Bcx1cxFVkrEjkiEA} zmGn=S*d6#<-#xEI3J9|z8pM_9Rx*J@2TD`*9x-ff$IYmzxAPgWBUJJgqp^67%8a%| zqtWS$L=TI0!rlGDFv60){owa1lSV{!l8BCa8+WB>E?$z*tj!yR*VC|R-a3R`Tu;4f zVVj)8wOQQ@xczyaWwo=7>4u*}9HCnx$CKQ=5mv4x%03Io)7t`xEB~yT2s5Bnw9th; zxxTB%Zt>A!gy7S7*1@e#nMHXmllEbrkub8$4klRiC>J+Op-2|L7;I);o0RE|=UdCP zSSa^lURTOSFX7l|2` e1{nz;q|BkSX$(E$}O~btkT( z8LZ2N7!$Lls2iJ+Mc8d7pK|2Vay qaWEj{ za8Nk19u9xstlLE1x_)tW0NUL6b%fj-LbK}yZ3@ZMDb9qj`b6~_mFl$nnRLny*hIhc zOj9gdmAY(5$ pHZR5d7I|A#>HSI7C^>pPH?X#l zjcI}t;b#Sgd(ZvXmr{Kj;j?3}cN>Sclz4F>{ttB-2CG#~<=)cK3&0JpNg@p|y5Do- zTA6!>;~e-?stdadu1DPLr~VMrk^Q&UIX4&vRs|CbmMt3vQ}Ycsck|t-Yn(*L4AxhD zwb4fg&1TAKwi(0lV$k`SfLq+|NFlnS@6{-TWG-TTXhDZ-t~?F7;ZVQe5&QW4V}6(t zrMs)Q*|rvE5=VEjqXH6jYTuc;@U|zY_(8II
3~&jU`wqmvCSqplICHkFW?QqajJ>FZ+k}5ad$nAB;k>ZubC*emm!e9kV8`LiN!so0e4v#1s zcj4kvwAFQ-jW!>|2O9H7xdW>__Q`>Fq-GAavwC!m%_QN89S}nBvGGn1`hL(*uO2kh zGj+@twCW-i(}1B1@+wYI`k<1RxiwPuW_0;EzA)`b|Gd&$C1l}Bthj=C3v0CRmXg8u zX#Vc1UHlj=TOA7-pKEl+x-H41=DO)Umz|vJ8oN@D&jZtlB~FGXleNuPN6k-FQ~8L# zDuk_4IlAQ4_My33iQ3{#YmC 3L5ITP8@nk~>wzNmK zrmchibpdou4vWpxO@$Yl`oKDuYz_Z}Q1ZrMtdXUVG|Fd8;L+%mp-qXXxf3&qh^} zoOW0oFm^7%<;D_frp=)}bxJ5-@M<(Qrb^>YFwi3?ONv;~!SGJjTBX8{f@e;`JKzzZ z603`L b{HVT#P%)Xg%)+caF+Gtrnw1#az_8MBYrssH?{e`lr;Gl%@ zVOYkOC0IT@OO10Rh=87V%Fw-bO}ebpdJqMtc!z$a*?K`esZbzqVcf>;z4<6%s{%tK zDbvm`#N^Ip 98U@D(wDmP*22??+|H+_jyb9L?mIjXVBnqs?ZXCDh zUU@s?-AaYVTot!V3twK2%}!Ch4hN3G`e7*e4EFoPgO4c-ZOZsmWoHN%Ln=6}nx-^qxTY~9S?2kGRt7irUf(H%Mf-M2tP3%vR{Y(6qxu!e7SIWV0 zgE4s(S$nQCMH(Set+0g+MwOEO qkBLYGmH9D zV+l-4Znm}m!}MxcQ)|txI=T3jg~<8v;a`~oqG;;IVYHCwAG8Iu<7rS-MUT_!hiOXF z&$k1|A1O~6SxA#dN}0n+tIb7H^D<}!0x<7y-Hf#ci*cqE$rt|$fGx?xEddKOZ^-(G z{DI?T0ja~B2Tt99tutpjjlv&qa&}k;Mar*r1SD)k-`@4~ ={sOze@>`0xsy|wM3bEJvWgp2lQS0?hC6&knsW?T)y0Vy8-L`pl z{Jt+YqyTWC $=?#NWi+%WC1CK|n>A#B$*u;_D1DAS(P3WE(!*PRjjZ&x-6HFLcDo)0; z$!`sr*c9}4Cs%gecpB@P8wUf&&2|#5{(x5J7PMpKS7R8U82e)#wLqfZE=iLN%Q=|p zk}N_4-L1K`fIYr~JW*1Z<$fOs{Crztj30EMx+YuM|4j-itFJ#((%~C~qbjWN4Gk%F zFo(Y9l>Sb5GK|BLZ}a4JwW7>#-4DUVtA m4W1QpnG&(;jsnrlT5Tt#!vs9*DHlg>cMe{_YLhW0HCNlS;6b_? zAt6UIYUS7;pUlSo@W*lH?yBmu+nLgAf 7VYd;Ffg^-W2 z-z+{ KSNlga8H7kEFuM(E<` z2&d?pdU!T12pHgqevV_ZL?9d2vZw%tQnHc;=yz#@C&$gITAkdcbs*gwQAMVk&@2&J zb*b)@UOO~x*yNFh4E3C~XsoZ*SLL;=uOx&rn9UTrwiU@w#+Z~{DoGVA0~J+5n2ONY zM^{s`sQYl9-PXy9lups#*4O&&6piL^pX-CRk$Sh1S5mSrkk#Z93q{MaK~{m)c2%gB zrIjf=q0~~nJ3P@9-{ciWHTeec7y2rHn$>j2Z?a)#IEmLjo5F4$&jRD;DQ=A=x<5wj zEU1-kx{b@(JXtKdcPH#XbH1#PWlhg|svaq}mN 9A3cd#F8Cv>TR6J>PNl%-ns8@WS zTBLu((Z;%hjRAW&R(R{aomiHwcjb}(HIZI%c~Qx+@nPoM{+r*4u<{mZe9^$yd#_gH zRu$m6y+$uPLUS-$MO<`?`j3#}1yLf?O7pufW-p6M9UqXPQKw+|tzBk3NUOwdrbfA$ z6lb*jc$imW#g} T7jFAEZ3 2(<-#k~%ju)s%~Q`gHaV1h-LzW)nhX_KkFM69R^LI@v5$stcu zWM|Tz1 2w9i1ks*W<1qQn_LJ3Lo;fm?7a>=gcF zx*N)KdY%L=Gws^*lpef)VH24<8%)L6hI;i@2NqBZxK*{1LBc>$u`@7@uAH(xUW%^J z%w?M4MHJYpR>)(}m_n?AOOsSyGUH(CCHK<~1-Z_qTIsg1`bP0bs!452w>Q%(_?}9| zvbQ41X;n41ho)O09J815FKaiy4{ws7A_5}Hq*wB3SnlFBYva1v=k6e+avlgL?`@%# zp%!4$= ag%g9Z+i!PH&5>3Vy<}rJE zeGZ`(D%EhBxIs9XG8W<(obXYB4v#)o|Ihhr}29f|xKP4{vs6A@xXoTn{-|aWcVZ@`~%`wv&nWcR&b?I6f zkc03Q?jvFvm@mW!Ie(HX40+-75 mFg3SPqw+rolm2ja+{qpvQ-X&+LZ#TeXV}`LvXj5 z#`*!`P`5`VJd7i$uLk%oCZeB? 3>w& z38sePq7AWR%N<4_SmvbV{SqDW(2j$3JwhYL1JT0Ien)@&ckZ&Mvk1-WCTma%!M#&r zVX4H6a(*0~r+YX}0%)c@q@5K|?pug5JUOXMK}sY)iArVIRKMPRxI*zJe~PN(XJ=nT zs`M_%EB$8Pi??SN59t#h5-wUDJdR(41m%vcC5H?B6i>z34y(^7U{AMVfWbW;u9p z^-_0)<&|HCD`j74 sB% zR}N0It2aE_78X8k(9_OmEQ*YgBt0ReuQ+Gegq>($MDlIv{Aofl!JbK|X@3|g_?;(1 z4oJ-9I_JW_75{xfFLKlWInbS%7(DomfTxv9W%y{*Jt^4BAa~}SOQ;N1y?<|UPFO&E z-rX@?4NVt264*laT?i)HK;^#`Y51KIT}!`XdrhhHoUqmx(+?@k;4RXE_ilmpd7pf3 z;G9*! pGU}^vF`^a@@TwEkb~yQ5VsI&+~977I<%BjYn#W< zgi-JvNRyR^g&dE0*ij~U3rszE;O%`A(2%uj0$L3fMVVKE5U!NtVN1Tr!%}}|;-qD# zMmhFuJ6Z|J3&6}kC@TC5(_z3hI!2OFa4s%eP~B*_HVY+g<2^Fl>)MbA*^WEU;>x!H z8)v7j9zBCLfgQ8abB9^g#ZW|M%Cl$`$BE*^B;!PW>@(N%o;q_b!*;P_pGt5DSV{w( zy6xr7KakZOU$QBsX$BaierNu%|46$^t{bCl0!gwbNF !8pcGf zWjhRQ303S6S;y@}t%^Bp#fAxhPf5shP(%s7ys%K~duXlm@sw|2(~!(f{s-#FfkIx} zD&KU`h68u8DV|fKAIo4;1I9oBF=i|sl8=`H+BbZhAGU#gI}2Lv(xr3A*fF4Ed*!HN z);XXu3Y`d=x2b4yCRox7HL@c878lr}J6=_Z)CXv;P!P&>mbj R>*5?DP}>knvjqto$~%(&OLZknlBaA@RqZi3pNle>T((qf21(Z^63Rkb zQR`>mNs~4g8B~R75R-#&K!TxH(R`a__OTV$-ow2*9GkF3wzn|OFNmaSbXkjAXTA^G zF^!uiG_DQKELIg656bTV4g^%9|E^#}K1rOiKM5G&w-TD2b+g WJ7hncIF>AHyeQaL_*>O?2cG9E+-y&Zl)&j1rRxzS?Xmk|TVC|LwI^m9?O*&MGge zE;BZd$rB*e+=S=n?2b_!w)N7AYLjrjk=~FaU_QIu4c>y$7o)WX2yV#6mmmH3CBdmQ zK`5Bi@2KPc<8Z_ZU@82Y7fXQuJ1+nRI`Z1o$=*i&NO|RCRWu3#wgKzUNE`wVE^4uu zV*HiDs6p3s&EJX E%O;EVg;(&qJ=uDWMc+9XfN$RN=wH+5s-<9YVrkoS zVk`PdrH3@fIX`3rwSSdp3PaHCOkwr0h$TR6g&3hq?R|(Eihu9^xTSk_{H0e$`xaBY zKwijJ hXqi;kQb1pJdMXDV@I+AYC{gvW$t{dBDN*CGI~<@w}9g4I?|D zD$UXeL>OpG0!B1&ex=_}XDpcGu5=z{A!#vX6?gYx(IMF;MeWomLZYW;zg1bIOoe`% zk`Qfa5^KR0Zox**+rm>QA!Z2qrW^Ttra8J_2=#+m1K|%dQb@jlAzgs2R%9>nkiKXn zyj5hsnAt%2p58B`dnjg4GDGcELv3Us?U>&)o-P`QB!G6*f4NqCVRtT4;j={(t{{64 z2H~jUsPipPdF6|&RcN(l;CdQj6dKOW-^~r{&!xWd)K$QPP8mXUwcp#Q1&q9Jtf2tX z&tHTp->S1EIb~~n%)lF`m&};uedL~wdi&0&T{60Avzd|5i87FbhIkzKI?beht$px` z7)QYaKq|-=-P&6Ve+E480LJk1jmsLM-x^{I7O(fWwKo)NHQcj5euqgwW|5YEIl t#kpq kx*Uu^a9rXK8beP}B-X@f{{6}t!Z3b?Bc*34;#$U`vFk4;% 6pu$oKoi!vT{pGOozUu`ovc (&d{HIhE^JG^)x^{F;yp zu{-)e-iHzb;fv7dN$6Zyw}Fq@G#*YME_>6K*#;#Oe_MTC!Q;!+OdE2T_{CX|jf_x4 zUYK-c(|TXLZN+msD3)=?eUTQ-R)7@z;6f2D*-g;8&q0g7=33_(*l&NG mgv$M6WTAvr6kI#v<-}N{dI-FDNdf#E+D^CCD zp2Kt^F*wUu((2BvURnxJD7TE|hv~JsdB$%fnxyRmpMat_eZZis^&S=n^Q2yB>)rUw z{X$hCcTx2DFp7vBij4Z6BuxoW36o1}Ev}V5EWTnsiYLY1`Nem3cw9m{4L@b+GjDii zS9I}B=f(!Cb<0ZkoZOWcDU_}1* B zwQNQOGf-u!t2-;taxFe-;6V ##{4pZxhEhcsU!-0c<*O z{}I6y?HY?AM ?%AE{)?9bQEc4TNWg9Nz3U(b$H<(2qf}bg{b X~srvkb2d#I6 zty0KJ;3V+Au;&L2JgZ`c28gRC_OGl+#DXe{!9X@y{aV@XK$nmf6;hR|*AcSF`;nX! zbYNV$Ls6|1-%Z`Q-JYqOeAw_;ddpm ^d%M3nGokddJ3M%!`>L^u zx?3U`b&o|aIq$o5&C9QkCI`E_Kc=^4?KxdLv^X3wl^K72Ms||>Gu&ViBk!#N=a0(~ zgS;J4f86o6LY5XH?9h(b(>-=V&RyG|=+Tn(!t$%J3dqwobahFEmiDU6FZGhSsvOg@ z>^vC*9XLHMbBa&&PB6~2$`>tD&M%8A(1QDG0lJz$Zcud4twrg#gUwNd?EPPlZgTMi zpZJuU=q`5@-I0A=x;@9XIYYX@>z~F5A7?RKAN-h$9x|tCrGk~gL({tS-bsg4ZSM*d z89>i>`cU@IRi{B+49Anf)JJVb cyBlseG}`0I00&aBs%9%cMb ;TBr8V p$1K zT0ivMuMnbVKutWWPU#aE7BKsXrLXw59MwXN5i5!LiLIvxFGf#hY}h04@rJE^xtRQI zzQ-e*ahnlB`rAw*VIESsf#mdX@>zzxpt8(bRP+#sd!h)13PlVl+RpYP8?pIKB~ z7-#bke2$e8LabY73 MJS{*vJd(!kI98S$);t9moxpm zXfGL1f1!DHE-pj|v>aVbUFVPnd3d9phJskZjKp~VF1yR+@gW}3bYN^SwJiMQuzSJ1 zXa+Na-Je =uD{jDLih=BSgFV)3)XW*$ZPuWk-K_{r z2#s%cfKx)V%cdji;p*~Qh$Ja~Vh#I%QW-IR-sVUL($1cJ`AX7}FArXd7uXDLx&%jy zSar2M7nk+}0t~Hj>$^!k)Rb 1PQ))CjeRnRd7H4DxAj``#9e(7 zTLufy(azP =q-Uy>Ey>_6R@q(JeJaygQ^QL8X_}J|=~+ zaIx>iq8QGNLjIdetaKR2FnTnvJondc%$JnrA6*UCMNwCbwGOsgTK`8O*B#Zw_N^(> zOF*O=2t}p03krb{s-OabBGQ|HNRc8{1Og(8(hZ2xLa%Z|QSb^91f@$5kWi#|LJI^4 zNq`r8>-yu~^;_@lnYHGeGiQH$&di$g$G7+Ty496aH{8uX&6^cO$WK;cYlp_O6*R8d zI=Apmb+=Y?%rA<4!!aXw$HoYtpPKdlV;BM`7~DtX=+j#Y2!M8hzr${S;^)%6z}*9Q zX;gA*1|_X)U*=y3Z@H1Gu+G&ZR%~)jPr2ihQMuleLrJSUnvz9g{hK)Q3uV?-09pA? zA)Yfy7w-?XR5i|qmwcvib?34(Clu+O3U^`~jcS#Ad9BnXU0uv(F!ppE?W57>^hNA$ z_zEuPz8tEcUh2^8@&Q;?CUKN|Cr$634X2te+hJ;FO(oOCtMlc?m(4O>7@60P EB-#Akn3yr%J4IzBb)^=J4gw>2&>9i>H?;n+yQzUpZ5%oXjt3uP z{3XAG(%eE1Zd}M<+ O|$7MH6rO3!E!1uS`KeawAnjl Mu!VN3oIC=kUmpl9lVwCg z_$@;3>{evS(X&`kk@D?}**BSn^ihIh^qYSrFY6Zr%1r`cC2x`M%9`k*=Pg)syg&hA zKd!U(S>e QDObkLu(MsTwZz7~OF2@$yj-*PEBplf&GZ`cd7@JS kq12@#kHO 8q9QW!ai52jR)KHOo9;GN;zgx{iIMqB@QOcjWVcSM zY}JJg8DuiE)V__j?GsrNf3&fp5zd9Z$%8!K!5eA}dle{kPuqBHSt*L~{RKzXW)o*u zNBZl0S~*ne_?_oJcxygzdo-%&PI(@#2acTf%(8nR=9zoSae#Z+pYGxp{qLI%$I8C5wG`*Qoi2wE=XZ*GP{uxpx>Oc@CxNkzI;}T zos+hAU>Vj0 z=Ro6v i0B>!>=FuN19jNuRIL-UoUQ*cT!z`J|U}ng`=g})g#Yv6NG%7Vx zo3CfscRPE4Q^mVDs^pD6T`1-12%KMG-0H4ks1b(A*EIw5ligfM%n!n?EZ *XH;8)E412B}CKj<&Yj;7TO2EZk*@WrBkY}GK)WMSjJ{OW{Dku|TBr;-LArN7{l&0Nc~PIxt5 zYPQbg`MH$@ki4a6m9oCUoQ!bzD8IMA$jj+qy$TJFD4P}1{$yTQ^7d$!{nK;#`$3$F z$s)}6ruB8~r28==cb_+R*e_KKBZ%*`OvE6;eEc;YGX!@*w66YBk^mmC>N5>C#=_{x zmCV2u_Oq*TWX(;E>h}jM2W an0S@*& bw|inG0eZf2QH+_$+m$OX~PFBn72SuS75EY 36O9;a0s55%%0_L5leo<|I0JN|EwB^4=NR7MDa<>R!A0{P z70t}^@TWyWGt%_%acr*=>?;E#c7Ore_(ZiEY{!r!?DG^aFaz_@*GeKPY#wrTF+kZ0 zgAahb>ti$#hQ(r{S3(-~p$)U44Ys2#*k<`JxQ}zPsxC8~juM>yg4{T0hfS`=+?gE@ zm!N6!Sn>15Z2M6{IN-cO19YY-uv+t3JJW77NlHi~)#UXj{SO;1MH>TXo8?D6pbJX? z&cwKHKDnA=MX+rQp2ZU{MYOn!(Vc}9reD2_iuZ{($VJZ;BKOgcmX;zDk|3l<>h ?9F0}WMqf3(?K75vN-F)q`|UJ zHWoneOm^#ovLfOSzTpEkR*7Tners{)y&1ASIui|xp-R%yW8VfEWN?+*D_qZ7^)JF4 z;3a?x>&$K0ZzdTaGN`3h|BA-RG5mQEc7|=dkXkdU%eUoVZxpmNrP_UfGh00hvNae! zx|f9dLLQ%HewEuOBIeVLEH=^=Pm*!R0F6$`%UaBK_j<^8$)Eqg&xg^ z!oF=*scBzzXY%vj0&ZGtlmBwuPn nu0RJ5OV}a`|_!sbKTum+3&t* zCL-FsR?f!;M+-U+`e&g%sqIz#HBHUPKifMF^bUJb^< q~?cp25(|nW6XF;tSZXt `+=`C6jl1uyNbI={W) za3O3A|H7O4eoq-6aMkq|h?p4r^RM-Y`E;?i@4Y)M_#%Y}_g8=kZRGS~!3ZpbFM ixAsJIp+zB12>@O>SA$b;2HaL( Et`vVrV~fuY?n|od!AQzHL~ Tv#Nc*d#6-5d3mq+evfPZ5CSZuYP=Tsnj7e zzX9k|B2sRWe)isnb?>6AX4!u7^5Q<2PgVu(F2dd_ehOx^I`k4=4DvpCB1UUAIE`Tu zm*Ocnlliz+k~0fA>`OEHvORWX;AvNyi {VX1i^F?A@ge;8mXm@F(uZm%50; } zTqQeu$thTyqezDHomhi+OyZs-=SME>lzFL~d3~qN90SrJp))#xY>;6c>PUh^Ofoeh zwtu*JN2ESfaRCTIDmiwQF$2)@VD1Y;HSPI!xTmD(b%%D%mNy!Y_qQ4*2R}map3akp zfMa^6ib1w6iy|I}^!gXQgHsWQeKPO%ZWZQeT$GmiGcB*TOvmp*>7b|lG6P5B@U0MS zNdDZ0r;XoC`HM3K4}6;ClxkbAcm m>qbTCCZ?)lJ@OeBU#5e6luRXVBGlB+fKSsOPFfHho%Lw z {#Qg!*+HmT)F+C zNp1}1IeYnK8MIepxdkD)1K-_!h4i=uBCiYsB@xejk`--gdGd3|O@o!ccwZk%N9Y1@ zUcxfZ k&N2Ml^v%(2nV`y0PBVM*aBh}=CoMGc12*){eXNe3<+)bsJF5{W zgCE|*2$Ua*_E#oYA)U^KLayDWWP?o&scFto{jKpAViDs7ZwD(#ALni9P56veDbw6( zC@Mk6g d?&;O=#!1vqpxPjn;PoEQjmqJ;E|L^5rkb^s_fsRw% zlr__2%fk_BBEMWtrr7_vu0}=pl$z+TNhf1cv=&a76d2CODFoM2XFkTRf&gjmfZtsgvXXtf%{D7)CX?7DVE2P%SmM-06RT9)}K6 zgZDyyg(gyZRci2@(_(OS4d(x64QpzYXW@ZA()d**kfZ^mIj;_{)DW;dex)Y~`r}G~ z|CkHpWL?0&zxGKsn8NR$FpM4?1m&?l20yu{u%4JgMOCLy0e1}uaQAlmRd(=i_=yw$ g1NT2X<1OLTs=Pd=hII7D UcumiKnNfZi&hNEM}S4kT?6#5M*Ivb8d;ed zJAX8FurV|?wKcVKc4GUxi=5*yb=;m<8fRcdu*#Uv7W*4UF>P%qv=x$gnDM}ez<@Ql zf>4CeqB3sW?3i%RO8U_6l+*#&KfeWiq &$Zi~P%(3rDb#FEKc@%Z)exhvhd|I8P}(rd*kU<` z+WzR1>STsDwbdM}3IUmU_6YhDM-Id +P8(e~b(2VZgE>Nh4)e37d4_m-dTX zFA@0%?t>YL%jPCgh%s2Vh^&@pknMrsAo4~bRmw9dphWgRBdln{C#umKVzt>J{aFZ6 zTxBoJfI|o+Q7|Px?}BDNP96k9nj1~p;rE`&i#|!5pZqvoj#m^34APeTQkapFm?XiT zTK~|c?iv4!?gH~)bo%Ij*+3CyK@zrl?Gs`ut4xHZEVZr#10T8fG5@|P3y0*z4gdj7 z^g9!7Fg=zo3E9A7Fx~Y_F9zB!Hqnbh3X;ifw-*Z~_;VHAFrTdpba dZVDf}B>HSedO!cC5?RJ)HM~)EB {ji~5H`)+$#2c_hsYP8>%!1p7 zWq5x!5@SEOnb}W|vQ()w%7TM`KEFF}WXPB@KEG<&6n0p%W$J}BYs;=8>g1aDN7lom zs6t7*xsxa!#Zx6nxL4qyKY|yPYsD(IX*d_KO>fo| J`cufYNKJ6t{( zPzd3R%S72eal$+Q(TxO_Jt2CZbg^RC6eS^MK-jrHtod4|&stM&AnMpiAlk~Zbry*F zsa!7dc5W%5GGt?mw*LB;I^mHT=2bE6Rk7JsaiN#mXx(0}*NjxSm)h?(Mu=YBNL%qt zomD@n{j!z|0Fu-w`#_qHR-F9)nk>MFD3)sLJ%OvY1=- ZW(;p1Wxd2_PlUcD+--$_v2k>XJWH!Sp2wUkGj0VH@|0P2x*cO@O z!q7Ko0h&?A;Ptw(BItM5hQ+Au9Xon5x!qBPx!)y0U9kYCu6iMtW>K8nXx})xG+qnw zv7s1F5BtWMBu7BmW9J#+WwRfVrS(CJv@osiQ6s?YP>>Q$;nncwqYgO=-gTjWGzH+* z&>2$yhJcy9KJl+1*}sN3x(2?s>5!MPV89{khMsYl9ODtp;34?K2BC@u9V|f;+WLA` zy-6dqPNzF*`wBhh4qA;w2}ezLOjuBsY9cho!?btnwTuvh5H`3>)WIcvG35_7MHJ)i z*(aC)7vB(%BnE{d@m7^)OO8>y;zm~s7;&32R!yBknkDxl3RC~^aFseXr1EP`_dM redT+VZPB`-#}rNeJOIC1g04*&Z)Yv|DS{e?05_W&LeUx_{EvS8g}I zH16aIK_Ssd*&y_F8Vegf3L+&Q4I@ygIq2NQsLN}PC$k)wVEk)qE33d-r1YFnrX{NY zmklI@IX;(D6H~2y-7aVd;~udM#(^ 7iv9{ zz&PiEIUl?Dfn>QPsBs+Tc)5-z#9)D1r^LR(p#Qf-BMc*t`AoN _)tX 0Jz`)L| ze_`M;G|=wF6>ZrD`nes)PXRwe0=1Kf`!tg4t(fIvnD;mn|DQ zEPr4bqcSCDaV)0e#524a!e*k48)pM1gBoaROWljXQJiYym9XUi;RZ-P!|(nTR!` ybnCWO05+Q`UVr%YH&2BvJHf;eAFWjyZK2U5i)tQp;z_mo7zk>7fgmY zzOk}0dRW-y5{MY{$*A@8yl;
}1VQ3`@j_!|;5y%sE|DTP(*Swn-0NGQbx3G`nN)wWO z;oSUUZ~{LL)7wuTg$rg}qXVyeny8YA0$#Dbo6K&A=~A)$2FTyt{&Iv*uje1B8kvcG z14t&{-*WX!pBbNr7{r;_&mIO_i2ywoN6Pdwz!>fs+gSTWf0${oYnF?)XwvF*M;)Gv zci 634;&Fh$+U+q^)1BI@+-=}44rl2SSmZi zsgTuI18t-D>_S`JU%P#Zb)Vvxup&S4*3OM^9JHpU0Qwx!cr9$VY1U7KIHB$FqFXrg zm!0$DtbgQvS6) o$sUBy`LCF1%kRn{ady zaCo@Y%{5Zm(DEJ-vW+swUhhy%{7l=*-n5_K1%|PrMY{uoCf#a)e60*$PjM7q9;u&n zxzNske4U*6_locI(b}-Xl!K(3TjORXP>B=ZI|MFdi6y>L?qkO;_@1Ksh%h3DQwX|Z z*%wA_FT2MFdKm`zJ~{<_#4ZmSD9M9erY2Eb%c=c-(rw@^bghgJc9y%&!VefSu_Ii> z0FL0qj=H1mkpV1fLyMl-fR-*YH%PQSqS#rs7J+=JCf9RMhBHLb4pHo~Uzvbfy_B$f zX;rc1q@W={%vUp`Uu9%2$bs*=hV_1)1rpt6!kebkrH}nAcDGy64p|H>|NY-$Gu$B0 ztCD*|oIYcrYaWQ*$v(rj_mM=?r%Sr^(*x=|T!>7*1DDNW?q!!MFlN~f<&v;9qFA%{ zcvZOB@#0x4 jktE;Qzaa`{nXN z)A0!f>7RAgU$l0D|Cg3B_JbbUzeigIh5qK_eZJIi2#LIS?pOz5Qb60 Rcx6Aq0pYtNmj{DxTogaCND^-S>*27ce>G0g^_%pcXW&~Fb3k%{hn$6kM^e4bO zS98?Bf%O+*!j7lj8Q}fnE4fix4oY}k#IMrMCgN(*!SW04t$F%%!G-R^$Y_BDMba{p zuJZmr5ue80KH^!gXi$y9m`4 i8x3b{%HB|w>x+4I-LZ&(WBo~5>E)2>7eKoaO?C}lz@_q=t)L;H zqFXm-c{J|TuF2@tE-2?G+Ud|vor4cI+r~Q#-D?v3h> zVSrev@(;x<1*p}_@5;WINQ&KMNF8#Rmc+q^{d$N3PqV5#vi#NH*Wajd*>X>>oc93H zdrx{_;S?fD+4`70OuD`eZk|b0pvvY;aUeR@>vj#EDxkPpDEZ=}b#dvQOE&C)L=5c( zB|oa3PXv_ZCuJS^o}2!%R78I@E^*9DBNFARCQi#wJmaG^-%mXsnS6<|c*aGuNSOVG zx23ow$SSr0X;^H)eki&BrZh`?$ctf&f;|%@L D19A1_1EiW3-inWYlA8BrS95K7#WUfnBscdx zTbM-|sSR-!6;qXe2x{dn`n( KOVzJz+ZcgQXBC0um zP1ZtYp}3@6->xphlZ3sG={p!pjkRhVRgYpVVB;XXTau9Z#6Dr$o^9gBJ6|26uq94i z UG9i;0EmR}`r#ty9I%2etxlD`R0t-cx^yUI2IUE{