From 13a58ac3869333614b3238e19564ac7193336ff2 Mon Sep 17 00:00:00 2001 From: Huangshuqi <1105374939@qq.com> Date: Sun, 14 Jul 2024 19:05:30 +1000 Subject: [PATCH] Upload code --- README.md | 113 ++++- confusion_matrix.png | Bin 0 -> 72196 bytes datasets/__init__.py | 4 + datasets/mydataset.py | 80 +++ datasets/split_data.py | 97 ++++ datasets/threeaugment.py | 117 +++++ datasets/transforms.py | 72 +++ environment.yml | 23 + estimate_model.py | 338 +++++++++++++ models/__init__.py | 2 + models/build_models.py | 864 +++++++++++++++++++++++++++++++++ models/helpers.py | 62 +++ optim_AUC.py | 67 +++ sample_png/1720946952217.jpg | Bin 0 -> 84433 bytes sample_png/1720947030019.jpg | Bin 0 -> 117881 bytes scheduler/__init__.py | 1 + scheduler/cosine_lr.py | 119 +++++ scheduler/multistep_lr.py | 66 +++ scheduler/plateau_lr.py | 103 ++++ scheduler/poly_lr.py | 116 +++++ scheduler/scheduler_factory.py | 111 +++++ scheduler/scheduler_main.py | 117 +++++ scheduler/step_lr.py | 63 +++ scheduler/tanh_lr.py | 117 +++++ train_gpu.py | 537 ++++++++++++++++++++ util/__init__.py | 7 + util/engine.py | 168 +++++++ util/losses.py | 64 +++ util/lr_decay.py | 77 +++ util/lr_sched.py | 24 + util/optimizer.py | 441 +++++++++++++++++ util/samplers.py | 66 +++ util/utils.py | 279 +++++++++++ 33 files changed, 4314 insertions(+), 1 deletion(-) create mode 100644 confusion_matrix.png create mode 100644 datasets/__init__.py create mode 100644 datasets/mydataset.py create mode 100644 datasets/split_data.py create mode 100644 datasets/threeaugment.py create mode 100644 datasets/transforms.py create mode 100644 environment.yml create mode 100644 estimate_model.py create mode 100644 models/__init__.py create mode 100644 models/build_models.py create mode 100644 models/helpers.py create mode 100644 optim_AUC.py create mode 100644 sample_png/1720946952217.jpg create mode 100644 sample_png/1720947030019.jpg create mode 100644 scheduler/__init__.py create mode 100644 scheduler/cosine_lr.py create mode 100644 scheduler/multistep_lr.py create mode 100644 scheduler/plateau_lr.py create mode 100644 scheduler/poly_lr.py create mode 100644 scheduler/scheduler_factory.py create mode 100644 scheduler/scheduler_main.py create mode 100644 scheduler/step_lr.py create mode 100644 scheduler/tanh_lr.py create mode 100644 train_gpu.py create mode 100644 util/__init__.py create mode 100644 util/engine.py create mode 100644 util/losses.py create mode 100644 util/lr_decay.py create mode 100644 util/lr_sched.py create mode 100644 util/optimizer.py create mode 100644 util/samplers.py create mode 100644 util/utils.py diff --git a/README.md b/README.md index bcaac99..a848b6e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,113 @@ -# MambaVision +
M)4|0D%(Nr#|n;7mM&SWiOjHt9SeNpl*|fRI&Q#1ab1+)+cs)3i}!ST!8V3H|gA z!xd~;l$v#92lg%ONQ*IB^~YC)r@Id|lg|5xF=rQ7M9h3DZzbbNh+kO5c?ELG>zm{Z zRXsB6N^xKI@;mci`NOKQm|XdB$;E*KU+YtGJqI2pj*oFX9F}S=i2*hZr0A`7d2Q@; zI*+rdUVg4^f+wb8y4}@9=Gfhn^g`JS_{I@vkPM|$q=DuX(a)bhlYyaxmI9KLMc`?j zpk0uJPT`TR&q49CXV37a5$M;4kQnHDec^VZwVRf<78zTsiV@HsU&S1wT4RzTfKJi@C%zvooT~VKQmW zM7HY{x+!z|l4<`t2MzRLFwNn#@AE4HEwM<3hSKnnZ%%6zXtnm*FJZhE8ZXx`w}{=qDwJ*J#f0bgm{{Mw_G$GLn5oM{?3E?T@$>=K>Mx(Kz-ZrdSvder*D5)jFYTQoB zAVMbop|Xh!3RfwuF|u?eh2b!xnaCoS_UQw3TD)m>(hF3f}SyZ`#mzw&h>}#g))ogWCGcxn4-nh11#~puXAg$@h0EoH)V}d>ngr` zk@pOEh^}=>LNP91EskNDcCH&M*1Lnz1oDX?yuI($=HP_SEg>ijMcwuOs8M`KSASY9 zNqi<$?g;H+Uze^=|BiaC?qIcdx5nCHr$&|Mso9-(A Z|e$d^ >Q48 zS{~L0H!Yyc8*EK;XwzCo78sE%`^jc}O$nTCsuV{Y6bj9U(8c(kB=YFj&*I^)8So{1 zBNjNjmj?irC~;r;`4kUMyduIK=oLc~G8vz%ZKx~0p%Xl6yqB$kb~H2G2de^IIelQk ziX3MZpk{$!Rbx_QX;(#%w`{$+E6G@mSYN}ck}W-EJ6 z`m|H3)@IY~XAsEkHXX&eFX~}wyAk-krNx@6)cBm1r@}lBF*~=UC@~kNa)pahK73Au z RX 8CuqKq^ssF%0^z8mgeW@cP^-p_u!^4(92hTL?P__v?7=^jVT1ZB{WMO zA^ZRsOR*eaZNWWy!n0e_vqj+n!A$45k^G= {wj;Y@Zc6b1h &UJ& EG29kgc-Pjq^r?VG(^`}AA#P1p3(UhG)@A5{BQ&jIVa Rs^D1F;yrL5 z9wGI;3tt8)zDf2|y6-|W1og{klij(oR}VC}a;n};22`(|>bnBaXU(Bj5}4dOE^(E8 z#HVa-^6_ca?rq8~o|K*(oi$ptT_L3uaKD4JcXBGWNA!K>m~E-+x9F0JpH}^uzrLqG zcFx?{_1WA3w-9$V-FmZ?0!d>c!=S7hV@1JcnZjhyj!vb|=&OZGJdKOpZ|%j$z!~Fr zqWxKLT`P8DAgH)FXL{jWZ|r>|+^7M)a!Pe(pH1#zZ3ErR;d9lJ_UQFXi~P2auCU;4 zBMI+2==cW4$~E0OL5);r^_Uq8%R+nKmg~3v(UZcUIyo6BAAu`RCGp8ttyqroToF)@ zuBxhn)^dpWO2nAiqFW)DuXuCW&)sL^VLK%SJk)`rHLCb-GY{_4k!Dn#;x9f@k|y@P zn?_vRwaG iFpel8e{P^BH%{KH5)Wl>qQSdtl>^+Wb&hWfhrt-|^st z|3vo)ZF^%|n~K+~gJc0gQ9-4oPLY`I^5Rv&>5Y16UZrI5r&kw~v<5CVhjTaprSk`w zIqTDACL4SI!g)8D?WvfP=Y8dm=!=L2i5j*;i|#ceZO0bqV7vn@^Eqny4?%Hvk2i!< z&p>SHUmy)02_Ee5Hv*}HQk1HkoLs1yMCj|i7Z#A*4TTuwjsg2JC`f2M0-#;A=s@!Q z-Grk@k0xqw^FZ}KJR~H9@Cx&FBkh5L3$ij)-1dlO^wATEhX(QRGy!D6jE$$g`L^*; zrK_m)o(RscJ9RfCltz-+h)#|%{C2HxFkNgkB16o-d5+V(JTUf9j3|q=k1E7R?kUf6 z$ECHb_~Azj+}Q1rHM9KyNN9w1G$Cunf wWn!+F!ZV61ErxFiBpLkcB 1?z z7EqP56`+;s;N!XPm$;qd`tE3^9J;J4)viA*tDnPojj?#4M{=Du$aA&~+e+TwJ5DRB zl=FGJpg3P%&9w~UwVaa~){I24dKk)KNu@WneV0(lTTD^(g<>Z;Y(}K3bE3_rtDo-~ z?RkRE$h7bcr+?3-n!U+YQdUkKf~PTuiz jg_^zUC85ep~l5=gLd~$qi#yzX*L0NyH;gilv9ubN4=}YH}@gb)Bf0uW*(w zc4>G3StIk$b7m4zjDAznnwPoR!#k_)ryaBTgBFz>C^Yh(b^eber)S!!<1xzZI>NN-q7`7R_eDtrj)OLZF6ao+)f6&)#scP-+h*f=qe$2BG9&9jmKT4rbvxq zAuUyhg?tR8Lqvg$QGhA}Kmi8SvT<4<)c9heaeG`&aB%P)teu^mUxCz{veEsKeDdXy zpfYuQBB*E)M;?TLK62IectKToa*Gb80XKZUp$GC;p#oleru`| Bhs(STk*Pk z-^oDv6||b~o{fL`s!`yn@LT=EtNdk`(gW7L<%i;5H81(ZX?Tu)OMw22wU1H6?=QFZ zz4o`Xyk%@3S?%aMbx66&-rm`bOP3n8T+7u_s%ki}Ze3XsWHnyvcvjZ}PcFG_rG<;w z+geDaW19*-?q|?;Jf`Q($dtvGZ!bG#;@$?01V24+T3Wc)`o8KDCP9q|?;Q;GCwJ-u zMb#SGycycPCdJ7~$mgu%@k;b;jy?7(HFZn43^#e0huKjCO +v=x852W)EWs_1kv<^B&6KK;xxe8o5O!kb3LH zx=2MUMtZQweaM(-aZp4D9`5t=n;Q`Yn>yVPD#LxUof^4Wotx;ctLpc|c#>* q`wE%XP$;+*=Xt_borLN4JGsQmb zdIw%>*~RGfP9WFc5nj$rhqysG*Yfl((Q?w6E6ifVK^#VNTGEj`Tm@d^^-dcrowxCA z8?* oMT0F)cx&cj=g3Rf1-wegbh45#0k4)l_IXktv3fXKBi$P5GsI_ zc0pGhJRX3tAx8%uu4CwSSn>51Jm96X{nE;aYw~MyUdT*As3}%hR{=unX2ytrCWqy^ z0F)c=HwQQrPf;ixRHR?htS8}OiRlbE^&n~}OL>CT!L=+mMj%&sUX@;V*PM{BGWQ;n zxte9EzNJq}OSt05#%mrwIsxl`8 !VfE7N12~rF(dcQb3>~h*F`Ws={1p-M`UjR8KF8$NGf|V^kh@%VCkeqigKH zc}`A?xF3os1)zLu@uq%@!_2WiNtdQAr8&2JWbmH;nBC*xrMUd;iE@{%C{|VP-F=cE zn<3SQTrGMNF$!h$6Q3`=JR#`cHB9p~R^ps#CJ_ZqQ*W&{jV8JF;3fHtOOB(jeykhy z)e-rQ2-}S1ZkQ=Dm|eW0eK@@*dFjS&8Y$IvQK#D>wD`Dgll*BE=XPo1@kSi_ilgo& z6XuTW)3uKKU(Jl9;yKqg`4-BVb;>idBa?_7u0#w~Q$Tl)OX gA?!|K`Z7qPF-N!+hzr31n}QiC7qmt|qi%bVssXaon=}+5!x` zdZBAG?(3j(;x%<3=>ck0_wv4;3_RC-U+ZAz;DiN8w783nSiI-lbicGP_ATTWlVlxC z`Y|J1cXrHPZ!HTXe-T-4@IT(@@4%B%G5P!qR3 3(a^(v_9eGa_8qA8qmmZ~lLSOI zM~uJ?2tmMORt}1-MySInc%2`qL)U1MsU%hqyTFF0EdUsGn;yrhf;xq#FkOPY2um~i zN-gChF1qQ88F)~`(nyWXYUaYwUKQo-5~CgVc+Zp4^4&*5Zt22rENWxD2mT3yz3Cx@o1Ig-zrc$ z$a`sR)??5|YUut-Dau&JDxcBMgr0wYdJ>sReyaVB*Xb6u?uc(0 wOIugd|HMd3*HlfS}&-h5-_aGKAqq5zL zS({`415Gbdt&*pc#-! *HOEHDCB{h6d!u(#q1v2De<83SMHtq$hL; zwAVVWyMF+6qMRZsVx?XxJZ0K8szFrUb@1U7X1~9rv3*0tDK@q$)>4O6DW>yLOm~CQ zlHjx>V4_7P?VqnMH$cM!F>$A=XTZvQ+C76b(U@*LxLO*db;VAmA*h|~$-R}lk0cz{ zKh#h?5PtX88G*%%L-p)CwYbSBae(uIG>r>xKT@5$ fo;BoGa0u}}Fg`t+b?f@5MkxQ!4ix&tU#+m8d?OlooeqH5JC_Wq z8Gf;&Yru|91a~0mx=adO2YBz(>)pDNA|8+QLm~VNbWmETG$mAMhVK7E*;{}`wYKfw zShx+qLIn|2x(zy2q`P4#m2T-A1_Q8Y2BcNGk(5@!0HhhZLtuvP=DU{rd35jhefINz zzc~&M8CbLCo;B;P>pIWhmG9#DN8^#xOfDS-b+O!8bhWhB_DIk;&z&~yMX0^0e1_t6 zNujhD7&J=qld&F)HNjiwxji1EIyn<^SjVuY?z}5Ddg9$eecYDf?Tj9GFOGhF+5YCh zmeUMgJ$7fy)}Q8v%3-qUwsY#~C_%0}qf?=b0&6bbjXM_?!g~D)nohHGM2806bDZm> zTl^ODdBoV%G$*mPKTIUS&*{KdSrUpa15BoN(k-#=v9ak)7{sSQa0<@pB4@Kd7o;#I z7IY@O6WYeoAuH0^jq4dVdvnI{!`YeK&+%=<#!jBAzTbGnG3gmc6Hs?5*W!z%IVe<8 zwbnLeLO_znlXfX5J$`DkAQk&SIzLf4+#=pQXHZ4DwZfs(h?JKQ>Yjvsr>jrj5QBOs z*@RgS_>u>RAC{pxhokF)SAtzvdgKpnqZK-B58`V>Qx-3X%1iDjPT^OgdmM&xdz@x+ zj!(6wuAA;DwC`A#WutP(1~1FkpV^aBHRWvY(A#oc*_5~LDphqj%dWbiBA!5n>8unh zbsSHxOjDN+30n%yEPXIVV?9`5@IrI VVfQ3-f)Z($kEJI^~ZZQBSs1OA6R67JPPjNC!i#iguo>#mJvZ z%|I3%9!^NHY7BbyD%}I`%uew_ l N5c-N{( >P)uG}Htp+m zs%Qhx1s`CsC4qKN8 {hR@s;&7m4;=cQV2)$U#XiFsvvhhL)${?XO5QS+# z^lfE*!4PSb%iI7Cg6@z2-)KY=i|}kX7`2z017VPC>s>gV`Rts>GCJNZT}2=wdDWJx z#A~+MBqVWP=x+0eT8vc47tXFLl7~G=2x_v@da;h%a~bJ97Udk}BWdzA*&ygjRcy*G zMH9jynxDz0oo~^Xn8u<~@V-z?jBA&a?+u4_v}9$xP={j3vfFshvSCwv7CHDmN5oHt zc6fDWKKr~_DN5F=$!&q6rOOzJS{@%EaGMXcENw28wXpOQ#vLupd4q(|JO -->%$FqLtl{;%ff z*w!O?HWf6|_Q@MZe^BUkZ)h34z!~pxIeU?eFTq4~`^<({*L!9#Rv2g~ f?2&l2 zoJ f<_$;S3ees!E zT-jP6 sD;zgag?lAua0c;0i@w58D vTt09A`O7Fc b-w(*}nH25VBss zGyG}+J8nQ&s(|_%cB>5P*}B>ghzmX~Y15rY-@{iQ#*84RB$(~c5VHgQM*`?L34meL zcy#bcm?*{zbP|wLs?0MJ1TxsS3u{R3I@6=u&hY+bWxZ`XHBEdGyRWw3!Scr+gbe{k zGtd$%d7MDrnIvWPou+!^^u)pB&Z6O{< XgUnp_{?xw;TbWkWZPyrTR#l$#=DofDpzEPim+WYc1ikk^DAgzVr|@;{ zGaW#1&VjrYl(5c!QM;Zb90@AIB19?Hg>}(PXR8mX0LFn-_|M1RMM03K|JU#Tn=0UE z?);Z- BUT=D-RornY#mDt}@RKJujm!#nYzJF7|{i9S1h;^> XUpcs{^Ssv0oK*t-o6zw%5SX=KovzoBci)P z=!|&$xEdr(^Y3VXtG&JtcX&WZYZ64gXLBHQWHx%7gailAK= ieEj{Q5rc8iUH|nu6>5k`g3*4{_N7EiYiuMkqY6@kj6P`0|^S zMQGf&$Z(2I>h=CZN6lcy4z5S&r65!%XGbk(ZSG!PJ)(8t*G+Wd>-zs&`MdNKQCj~8 z miO%00tu{UMb(KG42Ge0&ZOQfsZg>3%-Wrqqjo8&AHQb;J`uC;# z3remzT2X>@XjI~t#0=EEzZwTvvfmoo8tAz#|GDR$Aiwlae+r_@ukASr%1TiF<_t~Y ztq|be_8z4T{7)LyDEjkxa!0)-^7}a7pF=V2#6jJ~uf|`k#Ss0c@>Nq>ME@DH!BvJh z4D4e?fZ8{5=-go-2N4mulKd7U!%#DN_g^3K5&}Q_2gxs;!~fQE{= 8GWCJU|-yH)PzeGkVkIcOw_?@59iqo(@CCZ|NB_cvAl7 zAs!i=|MsWf_sri1XR9LTgG2+2|M@KULD_5ePvapHGx__6_|Jo$6bLO5mGkLez3Ff0 zJL#Xgv%ldA|3NWsWb$8hzt{c#7u@c5!vVE|pcO^_i?}`H3?*ecqy(8RUAhTbRfs!O z&`E=q2FbW1a!W(8>_6Z(qfr2GX_3u9YCh&LqGH1@tCC5d>`Wx15m8zk(+!3G=4plq z>14~R9&hff4Pq~g5rfD~UUYXoVRLonLdh%ub!B1&3K6Ae1u_iZb+zowR2fhd!ll}f ztV}J0`jX&jN@f%Hu8l9t -VGeG<$3Z-N+&|);aUzoK0 mXeaPI)_ pd`k4;#INq`O?LwZFW*x+r!RpH z?1eHCzK4n4Ysk!-%#c7+Uog`&UV7S9FC %oD8QiEJS%JkzE=VmYy4dzB zU5QAn(@9LMv{ -meK z_7MMQ!hWn)6()YEB(v78@tksxH8Qk fe@8O=`uxo{@hJ;2yF^%u8+5;Z @ zOLok()y(-xa_nuFS)_NpEv1{vk!CHp*MtA&MD145J~T1Ml_ @P3oKil);-Uvp0VUpp64MGqChQ}W%rn|c5goI8;?8+ zO&ibSPbYojYg1c{bd^MQJ(kn2lx#!Up9OP{e^ANuuDwhuT~>5mn$?kRI{CNFZKh7P z>zqf0-2{48i)?Dc3JhiGzXhv1Pqj@Be;O~H;B9&9KWe&x&9oHkW>8FL)Nz?os5%KM zv6EkA$1>X;7$;2#97oHj*FSEpUE7%5`eM;JELc*O612CVitkIyA*B{tZCwS3-DK|% z5-bOr5@IQuteTnXg9Fvjl~| %;eYT6KAe5b#R^kpB9m~R1UVT%gOp{)la z?&c7BOY01~zLaQzZMKk`s5-uV)?!(nb?2RXHES`m{@YvtOlD8V8@1pt*_Ji)2FrwP z<6wei=Z*||bBD>)l#%^am6~uFNq}yIh!~1pk6(3M7WYy!{sz(L)6OG705~qUuc$Q& z>9z{5z4K$u2Y!(XIDf?0fS42@Mg%}QG?HfpE)*zEGVfLUnuDehNvDFLTMbati1Z7T zRK;DI0H$G(d-WQTKLg+y(VM6wO1=5yb1XwLkQxyai*JER5`x?B5R^%r2%3eHlM^ZQ z0C|V7tSoDzGO(;Qyt*a^P`nn{@~$jTsUqoHz}mqsJXS4PF0yMqRfJNyUnSkwg*8bo zRR4N(p+_4{6yH4K%6VZ~5QVMH4QQ~(7s yHTzgIe6-X ;MNo~q4?Pyt$f9AtvLYwbme8;@9V=gRPG7+_NO z5gI3N%{wGH+chUNPXt?6?yRJK=Gka1Nq2hovd3Xc-^%aBdDr=&O4K@++QUaa-1dD& zz*(2m =i*BeZm3ueq3D zE#^zIV@l5_tk$+ADb38vJDSW%zZf^qH*MCeT;ZzhJ`pLW5>3(XXuow$PY|umQ^aGz zH}BCv;Nc&j6QxVL+v17ha!6C4;-?2w;ZAc!5(7JBR#Xz@eX@M4FPfQ?aaQ8rSW;lvh}&-gHl|y=tl1 z6}ugjI94H8E0XVLvqt$gSI1>cx8zYDBWYV Kg3i;;z9bh$+DRt1g32Bod9lV#S=?SE8bP@I;Rtz-mOOju zPV}Tyut01&uf>~4+AU_b=@KjJ(G|@a$pod~Q!HwUHL{&eao6<^y$EYA&JvX1kd5U* zTRrhTzb@dy((gr;engN%oa3118H*N%$ti~yYd$yVg7;SZN;jJGE{c#YnaD?!d9bWZ zug$HQMioqDo k)dGod;&C2~gnWq$o9#8INi+au@WWSCNmB5^|7LbqR z=M1OadT%GZIn2+;kMC`n;VLH3sqbEnqItMiZDg2WlF)08OC20jUq8)X!Y7_Bi{;PS zJ@P)Wt!#&0TJr!0v-%INQs>P)mZEhT)79A4B*O_2EdvpWtP5HqU9Dw1MArNZej>H8 zdVZ@^&zz%Ytv9vH=Lmv7r={VLLxt`ODC4>iWeBw6Dq|1ROT!Q9$!ru(JVWK>I=syv zg(V$FzNJk%TWc}+9kgfBR4MlKU>$3=lWyIqbqLE voAOo%F??6}2SJx^%lx0ZQ)sDq*Yf=x_tjNwkj)dPUGd0Rwf}vpFgsAGy&>M+&tP zK0fwC0d|1SythNRE=o8b`blDsQ#vH&Oi?Ra2JhNR0>6QBx!~ST(fQ)FjnxZ!mCJ$d zPBd4fH@BAg$(d0%vwGIe+P+*|T;FSQ+sG58lNKzRQ7*EIEVP+1!DZ^HH^qr|;s?`i z9y;N&KrrFb1 LQavbb#cQ^=8J_NE1ApE^x z0X~voMdl*QP6Z^%u{Maw;jCQ04KX65?n9yL!hOWsg{<3M?{k1_0w&4=z7D9P0+~p9 zWWfp|wGh~4W`aY-5~4kz7*4amJ%7&( <^*Yip+lqdBBY;Vg%@ >InW3@&}iKfN<^3HVqoZmVo+gk7yHcmHzH(xWeGI5=4J^9sCl7W`z$Yg3e~ z4->v-3uj&IkbF!4)?##g6>g!y?@aEJ>&sJ@)O$NSss+gkmWt&US+<{jF3s2%F&@Y4 zAChbrT1%JoJq*>UU=XZB>_VQQr*R--XZcO(NmDu*Dm#7QKip4@T2q}CsB3KGu#X1z zDRY7;agq#y1J ~{j7@`|KzOnzd 3nMr~ 2YF{BswGk>$#8wck%OI;>A%8 5G@ z^speMujar%!YLhf-B@O<;l~SfIbR1R!w~{{ckNDZ-G*XDZ`oduW$O#2tUA?aSZ7^F zUA23Ua-_-RqPQ+@zBYL)Xjh9%m7WD{?8CIc^Jumo2N0S9*WKgf>zS{JU&f@~PpUJ& z+oT}iweDS5{g`g8hBQ4)*e6@`kB%lxY)h%Pj)ewYMV+ho9$Jk-)?OHWHn}3=(S2T} zny$i(J+qAvADMWO1PS?9Z=(tc2p$uaZ{brYR;|-j oRecqO3q89YoiA+Cy;}CXlRc$GFF|CSU7EL15BGfdSo=L2 z&cgUMSyo^6W`74woLTc4O28;igdM9{u}Ara+R~S~9uva2@UYfMB_dvMa(*B|;KBou zFTGBaIIw37bi`So>_ney)NOtLF_g=##Y`T>Cu4Y6zSZYOM7yQyIseU#bL6aBk>NIx zDdGfEW=wE7O)4+VxuwvQqayCNvl}kdcCeQi8PZPFjgJRyo$fBJ*ctrVD@qbXaPbc_ zS>O^DL~8_UWMeJcHjj!txbq`Osif(A7FWFqi(LhN?j0{p4#Y{JPbn1dXQx>_a=e_~ zW$g^y>FdRV+-4t`b_$1i`;Q1@88Q}GKm?p}VGqaq7gQ!72D5#Rg Qe`0|o&^)q*dwugq zwC(at@gRPFxEd){W6_>^8H3sT#sdauRGD)Y;?{uWc^Ys;kZ6F{-p*R_uG~J$k&| )Fg$<_G#+gojCnWyhPU9}-;erujE#%mI;PAk<_t<*r(qBC{F6t^WW zT6C{qo%c9xvZ;3DB33QO?wGX7YK)uX^!&c8odpkaHq@u^;aefKbg?BHN`te{A|Gt@ z&0IBB2);A-LptL_+dGeanhlW>I*olAMqCG)D$`(7wm8Q6TCwcQalr^dMUhxx2bqjY zgJhKLeBk8MUPaMtrAYg6ERVH-j^Cmj!{Nh+4l6UFRqm$+N?d5M=lX0T1*)?09N%*HV5V4W_mfA<8wY!3md!%@Z za_bfblsPDxrpY(AY+W?e?zF3}8QT&E5R#_d^3qlga}JahSx1~rS5ArQ!Odkpov+Hj z5YDNeH2y+Ud!TACHJRF1sQqET-|}cj(q^iJpqsH&%7TM0p+be^48_9s9N(KVZlf3# zGD4PI6-Vev@~o$$DQ7liy>*v EOd|j0us$$bI#31lZPsNsZp7B!4`ZF zD{WC#eg^Itp3LM-L6T_q4a>bZM1|J B?7TNSuOz6_OR>pT)H8)xAR*FV= zWP~k_H)VNMNSduZ^tTxNqS%=;*!;zteA9uT&|e<;Adh0EAAE}loJTe#2-z7!7_tKb zQ@AS3p4K=5F9LpEDioRwNd)`21u(;+_#Kj=y5dyLJRAx&y)?ov3yMNrDfGhUb3G*v zDI)9Mr1?^=W<+kj;POD2??_EJCnj4e*iC1wL6xXLhYdq;Ar!MPeopKIh?4{qP0J!C zc`jYC3{^v55rhO*>mTexO#NzVVF2Qx_V|i9LPAowy#~=tEVrcwyH@T^sAt#;B?^%; zX~2^)hh()(D1&^=)_Fl^tIQ^|?vg;1i~Rc3x Z46*0ns-5xYG+9H|lzpinmw-EZM$5}zqx{~+G~?WfRLUvd1R z9^si>PTw(AiorAQ>VB-qB)??t ta54cDyN9J|&ATcx9@Ol?vWVi{BD3Vtyr0ZLVt8 ztazHOo+_3Ko3Ey?ZlNs}>%bklP%|%LjxNVCI0!iHF3!=Q ugg0QbPN?l&08_E7%l)Rf`NBC&9G4@3u=_S3@}B$}(R}aMag! z*IvI9Uh$&TQ~u+ONA1`T20tTda`aMB>&pw7-|BDWOy5u;!>0+VRt7=!x+vb1N4&cn zqss58XZV?l@B7SD?i=gK5`6yrxk`^?$6B%DR4Wr7-z>p>{)8y|j!n{8&dqqxiw2*z zcTs#hb>oZK$P?}ByVp(^LSQsm?&2H8o;8)C=}O3rws(j+%Y*<*4oJC2Eq6)>^{ZRx ztvVmuvgq}64c6~?kU`lQ*UUwzyBNiVGq~8hrqN*~f+SVrbqpJqrrIXd%8gF$+@F}} zUMGt@Uv%Q+Nl-qnntkxz7mg$_(>1c9Af XBTAcm5h+&D7v>h p|FEbss;z&t1RJrRra1<}sbJ{6}@ZA02t+n@uRoRKf+wqaj=S}jj z&>FhC`v@P$nO3`htL+w#B~}c|zi3nr()z~6IxKHIhk=l7;dWipF`0?j0iIhQ>lTKT zjOPn>%Vg$;lP_F;$0(c~#agH^cpT@`dvAf9diU`o@#j+`ZUmZZ9Qu5mbITM~XHM>B z#B1iL)rF<06?q {OGt9nM3!wux$04t!Q>5t zq){C*^YyY0yMm}L>074R_z3=tOiIzjSHoGm+La1(4E7F+Z;h+ZO*R&G3FloPG0&1W z*hwtARXnc4=SLO0*Jy9|z&_});mG+cw-4t<)zh? WT=X@tkEz{uUXqm#j%;Z2@M4dYfMbyod?2_5)zO#s0JQcjMpx6vg%V<;eD1F z=URJ_Gup=>t-=ee9)GHq7L)p-Ju9NA-W=f7Z|fairBQzKX=7};rW~u#sPJso-AlR5 zdA3b(PNM*&k+!JQQ+Q*R)S+U_xi#6piZJvrfklfcJ|>PY2fizNxr3eg?4PkDcs!m( zv$LxT*H`YQ+S1bUP5|TT=B90&ECL)lrpCoUf^-NM>{t;U960YnAp|-$H1rxwtZBCo z^>#!)++$JZ^=8w3KOac|M|T#~e4H8$q#&Ji6A}^%W7pw9lzD)SR0dH`R>xstVwsTV zXP8e-tO7<|9Xwb#sA!C6lR&&zB=jJhLk|VUzc#r0!){De$tpJnU49(JW1SBB6jspI z_Pn=CfUL;~mDi -`%Ne|W4bY36MAAGp5WLmtcTq+2U2gl%N45V7h( zjry*rfBf`WEmcc;rh6g9d3&Sm3uZNmB;kvpWxzp8xf!8!gKs*RxUvK)^H6+jpE;Ll zhEq-lT_Y(AAzI~yvwo3sqN}pJh((%Wk7uHf0s2k)Tzhj1Elm4l^*Bs!RhC$F)m@(G zl_fkjUArs*NA{>FcRBiVlWsh%sSUcP&<|B$b58Ljz1%8_#(!=&hmKijIXFA6+^B+$ zP4|rpjaGPZT%WkhV_Qqy6I*g}YKn~Q>Mb&Q<_>%5I-Sa(^1P(ZPx{xy`eH;Mpa!~c zuwas|$Y4eMUz+7VYSKkt^jnpn;L9$y= +y9V+9^jpbxSWNR0>ou^FB_3OCERHw$o96ue&{k~U9x^;Nx z>sWNPq^&wL?c8zw=K(x~?Z{&bPVaffHHw}XU1!E`)AJiQz77)>Q6AfnJ*r)y9}@Of zR**kgHbF=1t4@(!BYEhIxeT7+>lrA&Dk;IT7~^!Y@v`wzH?QsBM?K3ybdfYqm`0`# zxp8IW nqF3%aOwl>sF!fC0cVILhtQ13*Is#5M2`~&=)OHTahE%@dmDbE5 zwp`DB7LvGPiBX-%wsxBTaB^m#(4aeS%VIt#4pr !TNrH@r^D$rnBb$4mE@X O zPh{Evw$lhZ>5#f~JISSq#?P^j@X$-4)+-a>{1>Q{KXrg#98%$O2Z)b11G|;2ViB@6 zsXoWfA+@c+(TSz&e{UxS$#E8?*WNf0h({$rY9iy_K5&&M!{5_DjDjk(z^bGuSQkPr zHwZZb*?oZP)nj#98D_D}I?&1hEb|VGFYg#i3S7u$`&%BF(>m>~veVnSXi5xH;qjvC z8_&aApNV-m&5oUvZVe*!&n&vYZR^wO8hmS>fzN5=>88t8nZ1DR4 -QqI-eHcMeM zl*IMi$vXDJ;cISVWKum#Lqf?fy>X1ZQ2m?hr^skB?t5(%Xf>e(%Cpirgv-OI+|j(E zm_lmaV$UKq;0bJwvW-qvPA!gerrL#yv`t5<7Tz7ON@@y{7It6LTv;0^b~0N(=RDJu zJoMT!T|K2TOROcXI%Pz6c4+95V$&HJiP&WyWg36cwCl;waDrRnd}XDnwe!wVolfb- zTQG$bI(BJVaKFoc`-!&jbtm}Qzcz*y@cQd~?Zf=Y+3vI02%1eOaPLM*hqy>^X3#vk zP?XMiPV=1nhQ&)9Pd+0$i9fV5uiVASp~d@}7rysi>bQ^r^uJMJ`Ie{VkI$SunRdBf zQkxPr9V>R-C26u%K|$aA40`S%^=^^4iz$21+qd-60p=>TwY}~fsmEoja<_{uEBov* zIq7e+iKk>{erSxVtV|_t$yRDEH&oq-wIPXq%|*M(;uh*&TD6XO&gVYDP2C?o>PIfh z3dM3M`QE3Lm$yzfe>B|8wXv+PnS`)UZfP9j%XsGMt6WB@@vWxw9SzaNg @xM*il_Yxk)X2v@_-6rbTP}Fqof}ZL98;I Af23I2Np_K()X4Rllp<1DZx?Yu+9tgKoAx?_G%aGl52%; {m$k!*viY)D6>J4{qDhFuVFOa&K68uZOn*kk}Jv;~x}0A4dk01Ze*b!eB< z+N>T_VMf-5Dj;G<@GOWZ4+xg6aQ=2Ezb+rcx8M`VJ9O}LD!rq&3PYjOAFfBx7y%2y ziTRKp+#L6j|Gz&gPCswUVNl9sdhVQ?TSc6Jd6dyAZi4w8PEv54$CG}7q^WqPg VyMn@Ul!@}I^kj(+-WRH-0Kv?j9&4>XjVF!Lm)v0s?Y|V z2_27thC!8D`bOzy0Dd6_k}W`19BvF!09CjMT&9gw{ZP~^E-ns bLO@;Vuz8s zIEZf_BXs?P^EAPH(f|R-!0?g;0f}CLGi5`t1A{Fb0s!rVNF$dMUJWVY4264 M~dvV!Ri2pD0bK|Nql}zt_px>b*Ofpfet)>?KU}!S~H@$1bW#NB&iUY zPM%2v3-E8y%Po>2h&aNZMpPg6h^@fB0*tWJ&kOG`(E*|!a1VsK3NwNPqDi& jz^Pyg< zo#GNeVwItlyXs_YbR0(Bbe{0f>R cA3mW|7A2|JS?vXrwO>{>T*8}IG?I1QX1XidI_@D)i((J%R84}q2I#)0CQ3hi z_@Gq}0&+8oQ(PP%4oBtQ{g`o-EVtx|=+=NNY{4^;8S5mi1QQEOUB@t-;nGRUX;B%; zK&sY6yM$Ckr$zLEH7xbUO(e*T5W|r2&|vFO1EVP*>ORX%Aaeoe$gR%M!?DxdK*S2; zHP|OlC8+Y^N0aLABcCuH>ry^KVw-5ZX#x`>FuF7>?MQM7YI=dDs1p({nO~|P{2i68 zR|b1IE^jzuNPTh9QGM{C7%pS*68nzHJ7c#8&D@6$3s)$}8~}aU2ZAwOE>y@B(s^r1 zbnUoU-~?LKWj4k?0ZxDO{<2Z5W7F_@Y}aWx715~|cRGm{>EI5~0Zk;4_Z<$0vv@>6 zWP3C}>j2Tb3_Tv?#>kQI@J7poQC!-KQ91=rp4zq}qN@QR-_(SCt8~gH-s@Xi^(`$6 zJ_ZU3&+=jsp<7PNlWVkN<5QcTIOl-sNJ@d6 cB~{%sG6C6PcF?b15KWVkT!NSWe0-RtE4`cxk-aQ2cz*MW%Z}HRKYye;4yw@U zqZF6^JP9D4l3zn(okX84t8)#ul9qPs5N{w;zgx(321+uu)#oc)OZ{W>`AFM3#z zhE`nut;_Gac>U(T&VSR$n`qVductTrb$U48U#cEo4u$s49}WKN=lj*@OSN+Q|G2C9 zx3>H`X^@c#5L^HG%KR3ZOI^3RNaU^g{MSqW_Hm_6bPf{@VXyr4gHZnagAjT5|D`Ck z5l^Jm#r@uzPygXezCZ7@zkQa!epi2OQLg~pRcC&EQuum)f5jo+8FZkcwEEwg^!wU| zXeYweee%~f{L|IFM}V ;Y~-}N<4k+|HtL{r*EjpiHJy_`PapQ z@9*~=dWZP`c4N~~{Lkxu>NRY-5laE^ BQntk!=KXiD@tL} zLv6Yty0@(gQ=&SInTYTM(K*6Qje`s%yD@OH6F?Wj3ifQ^$hL#W0P!<`Qgz4gkA1y2 zD17gA3H&i6@3i`bR>#jfqK2L0p6tZb&jn5^dc7n|?1OCShL|bxx3Sqze56OT_vKtK zBE8)5fU8CHst8q?7}?1BgT3Mf_?@zpMoCVVnADlKSF&pe6X>`Sw{ow6Pys#EVh+F% z^-y3MZ2um4gC42ih)72u4fJQg8d=u>V`FEzO)=aUh?vU3SHzKZjkF4chR1;VodYWw z`hbJ34ocMs{StZ5#~crO`t%P3uLVxQd;}_sY|sEoTEtfj(64B9H)-S=C6#wubu@|Y zW$KpLr-8gyCW0dt{$)W3e5ZcWoA>aqes|Xp(l3Z84aW*`mBu` A1r@adj12BZOytf-wgGCTBJEsGL9N(Ff12Mj;N3;h=X#R3q5C&jDbBnVC zjoQNMhKYk5H7t>w+Vf2n5yBv-4>aM9U>7smcf>yw28KT$-n PRoAg91SxRR%tP z7Dv7|P)TIg#R$2n0JELb!OXki_ep<_LGvTf$adKO0`KQG*kzF7;fOMv$GS%<1XW~} z2EG`SZ_7U~&`_)0V1z>q;;@)hg0*d-*N%IZcD@Ag>Wld93?;P?A!`rhaYPP$Cy4(8 zL7PG;Bo>v#r$BPEjhx(u4rKpe-Gk^gK;Wi&ZL4tLmf?OdbaVWBq$;ckRUqlcW(@Y$ z6v&yF!MA}2(ttfg)L_w@>bbGF;N|%t q2)!|~j`)mvHd8xaR@y*8Wh>k$hdsTGs zgT$?Q2c$DNF8MVUk?!NH?Wf=8WO#?|P _=GEj53%EDU$WzCilJ`@LRQWZ6%b z(bw5=neM3aNzIX!rDRic>YVts#MyHZUDNsdJjDMp&i*;p>*@aaL1DD}uVd1$aXrYW z>wirW&A+Y}tOI^~AHZYM0X7NjKh2c?dsKY0@8G|i({=H;fkgU0Okux9Wtfgh|I2jz ze}0o^%+31*e@{ezn+U+gk;`l3{qMFBm5CuM!9O3lg1-si|Iazn_h0LZkUwGsoMZr9 zqzZ)Y@jpX5QXyb|26FG2^XJXl*5TxL2UDRA1rbs1q3buNbzyjbTPOp<{~6#ULt?k! zd9b>877jRd1fPI3#>$8I1Z->j_%8~(s{!Yt6AJTKUqqaUrznskE?vGy#P*@`>cQ~X zGN^k1#6RETJOKxb?9KM5NeI2_G`O_nsPSWjra??TO4M!n1dh$13(ws(r+PvB#e1rr zD#_iQ(lobzm*s(8@%w1M5XXgWZIZb`JravB%?g*gRF5r_Qfkiz;+7F{Gxb?v304 z7GOp^H E(O4jsTp>mg^-m+I@=DWJ%8>wN995xBPtOEE6 zWv4LV$EGn`_ICEot4)-w( I3AnI>_0g6bE;%iz>%X zd=+rEN(yBxn%b>s+cd1Fgwbovr^vE>{($%sgO0WOsshwNzUg7T$^wH3&Kb=>>Ugaz zR_(mhB3m8HwF$STXUFgYJAesQ1PfM#2dK+(eKZ=Xdo9`v3>EfQ8uXO}YK_muKa z8l+FBjH;z=(XG6CCpVGPU%+z1Zi>^rjBv1`*D}g$!1 B3t)+`CR zpGnT-w-;U!EO#Cc*>to?kkj_$-p%J++4wYW(Stt?ZkjI+kY1Q7FUKYM#aHTYR-DBY z>(a|$m2+nG9Dgh`>-Z5%&)O&mIIbqUfA6N6*wm*vtD3TQETcE`rut-|?wi0Xg(fwJ z?VSR4Zt^8VO*m)4WhcLv81trCJ&X3l$g}8tx%`PnO~{lBIIU~lBctgNDA2UQ$>0;( zCHE>$8Na}n9b#>tt_WO_uC}pvwr}k-Zo|?|wfS+ds=R&8@SWlfb}(DH+9GSYw{&o& z`_qxSV8&=VX3a_}eBavXm8q+D(1N7uoxAZ&rUTO {Lmk4(W~E=bl>VKXXz9w(_p&P*)3d@=5d6m3dg8cx364z z6W^otVmAvkt4PIgIipHWvun@B1s{OvcIXJ2JAJU`j#C_c+P%kX+;*Ro{3(UilVm&F zKZ;4NEGf#uwjXb5Gcg(p#i2-A!r41Sd(N>1X;%BLYAl_NZGUTQO0qVWv43Mp>N$TC z)c;kV;5ab7E9B=R$>d_fNn*A;aHHP3$3fSxQCFkqOl^EwQ$Hg|svY*!ruzdObW29b z+qVfgyE )_G{N)1xp zx>)E8q>s%ZF@f;=MYiXwC+5bOuh7!2fQuLp#<9)$YO Yq0NDV@ jn3a;nc zj~{O#AwB4wPDtDh(tsfaZc8Q<5^|sJ-n{7zQV^4F7x)1Q*g;IBJ`Zx{8OjL~&`*_M zks8MDV1mqCPza!%vugV-m@1fHg|2Z8j20kQ4pWANHm=mk5<03ZB<_JNS_N;#2)7$9 zO;r+Bi=c(g1~NoC1mP^2U*Fo>C}&gyUYura-gvzBm+sHvX)0|uHssaw cQ}&U;W(~N^c8Ia=7OVM@QY)=e@mrrEr`~dE65lDE z7*XwX$yU`GjhN|B6l|0Z5sAxFJ{MkqJ8Yb9zA=a4y 56n~_xb0T3#ysJ6cVbv$ zZfEC9xdXZ%kOR?PSXX*^Qlo&T)OHFXpMp7scyG$Fb9aX zXf9Q?jeOn 0k@@^IzdC8%dRz(uh{OvgXXtBH@NPP8DTLQVJeC9xtaB`f@NSU zNdE9alwKOC`Z?Rz?X>>QZe@{>%8r?CjuSqtzxS|PYvVS*dS!DyA^W4ttYu#@fvb0p z)+u&%`}@moFB Ki98)>QN?rfXGS+%M0Vz)F|&}lYj%|b&xx
s? z8(8Risl@{ e(QjKaZAE~2eF2fkS@ zf=Cuc?M*HERCu*X-)OG`ZfIm`I7Cbgi3jnJ_Dt;?h_e*zK=0g#j>E1Pa&@5bPCAD- zcY$JXpe$6JYE5c`KsJ`&;d>wyzYWwtc9y_*M(V~Rb-3ve*&eHAwi+l&KxswC{Nqh) zf4?45-wL{t@gT%!ao}FU6 xcm4BtG)RoZgr6~uDY{c zY)Z9+P`netRzEBHvN`+oN0!*Hy{$wc9O9?Y1BK5i{ZScy!^(=i7Y9y|-KLfb5fYvu z91ayfR{2&$2EB}x3Kxo`10U;_BD?B)*M01ppEkcXh#n})kZE`|@Hr(QHrTf4`(ooH zJ&45Pts EC z{n!aP5eoHUX?AY6;u(ikGfYfuEaZl6$-m-j%lm%yIE1^;0^ejht(SzlT@}cMt)F~k z)pxU0Gzg?L{Mj-5`OFSKjzbh0Ap98tRKjnpx;6xj1xhYkEUJ?! zg^Hq081tC#$rB&h5TU+MsStZ8dH%e?!%37&F2c4?+4W9hUZQML1tTYZ-RBaC#l5|5 znroeom;IyfqUCKjXUL!(+diwxN%n5zjaa<{hrbvx01X$)nwp?Tq8gKFB?EM_r&N+G z%fk)bR3jq~9n57t{&0noUr?~VyPLmbu{|w5)@18SvO=tdTUS^j490a(3I+l>?rA$- zP@Ef4U4f&TjVwB33`%V*j2iliquxJwW9&9wcdg )=#p|Lv?r>$zrsQ1-aWFy?dS~_{n8i-`N%AL@^rK1A$@@Y z+v2S1>Kid4ZYs7B9NG3D?3zv;j^eZS%` 2Sr{G!`f(JO*URT;*psRF9l8Z#Gy^u7R$3xp-_?#$Bb({ByO|Ow ziq4MVno=Qj`1fkm+YG!<;F`K0urZys6eVI3@MCB0MuQ%YUYlf7N4M$(x1$P1o`PT1 zR-GdY8(r11=>I~kTrRlNP0E%I){m969%h3MjZ2~{=Ub(DAK6-L&0SlmbV%Va`_jd~ zdB2;hL0dpQ-XF>*z^}g5R7MFbI$$$&QLOtT%({JjSi+?m9iq6>#>U1HhlVa_)aMvf zF>~g;$AoceW+#G7{B1z|>NAI(h0zplqe;Fjovql8-R&%5GK!SZuZqCdv7@~DpkM%< z60$nepBgLJk>R<~nzQ}t)bm4xBB-2lt05ih?lsK!s==4RbM3|Rv2U3%k@qVzijR&d zWnDjnvl@$_T*O)UTWM-a>*{fB5(+8%7KL{>?-q-kzbc#c<$LE8>#8=Hho`&&Sy9}D z@y(SBi>oqQ?K46`A%xkP(4)tMb8w;@Dr?k_3+>v@N?+?-9=beQ=+&=+G?kbnpd{I} zi85#RfW%b43#<8FrF>7}(z%M*r#a?CM@~~*$^jR&JW{;|@ykFeQWc^#NV*X8&_bBe z38)j}lV{>DeAyD5l|RFAMXq+hCl5WdmU|Ggb=c_W=+(JFTkUXQ4gvnUWAUmRtOzgi z+ap7(5)8y#_iO$@614#PD+qJj4q}n+E&lp4snqZ*X)M13Lx-sd)P{uUTss8YunY}@ zVqD}Lx?T8(TkjA>DeMH0y#gh~6kP_~B$03ujI;3`(|?Mq_r6{i%g$aE4!oUYfmu_i zixN)BGigdH^0%BCs_bV$J$l{{-FWrB#1VGY$`Cwvz|@gwVN>dhf}S@mG238F3(qxn zbtR6^tlV_oAVY$H$s|?ZF!MwWu~n}mP6#$n?cA1$tI<9kG55}i$#vhTL|}7dTM8GZ zrMQT69BbK}`;M4wS`y9muv4 2FfWu(k9|(m zY&nkF_X+;PY&9z1DKbjUmNn 6 zJfm4i36_e?v}*!q#m%C`Z7JMrpqxH@jXjE2>Dyx^P{v65ky&e$6kD(wepyB>uCR^Q z=_#B%c~Y@ILRi3kH@&huS4`FqeI>MZIezt;Ni8b2#9r^%;evOlUGsjK%>o ZyG7+~zOc`7B$RVN~0v4x_7l6rbEg zqh7)BKyH_T&M3h-OWBRH?3DOhQcsI)2NMz?X&z}`7{+Yqj?N!*82_fu)1uc#bc%!W zrhX{c!dPJm9wqEi#Gn|L2{$iNTL>ofR)9^8dfxR^R=g1R5q@Q|R4*UtxaTE@FNlcH z%yfdCslL8`DG()bd9cPdha4^7Gt)t^%~E|;ElGx)95@dU=0Ez!A4<>-$U)6O#c$69 z>x%Fh+rfY-dLB!SzR_%vvy_w;D<3E{Jww!>$OJ4y5bovXYOihK-H-dF5x)Sp*S2eh zUq6Nt(Li55Ub;e^IEy|kdV|L!RK$?MEm11XGJ+H4XChbE V=utmE$az z@wuMnNNwA%vyp}?(n;ZNZT%2xA&PUqZPL~FzJ<2H*x_}h?)y9X0|P~*6IjA*r%swm zO2@XF14MI%HqCkxDZojdoMN@$PD0ftOFrl(n}v5)n=ic3#OATI$)2PTU1y;kRlw}D z Q#*6Ek~o-F+F)qUIrM zO>k;mnTVPAit_4Fvo7V)^poh1cZ*X=TvYq2Z;eZ~VI*e@H-Mtc$SIr_`i#L~t?m0Q z&lH9PM0sAm+j2uhuaxU3X+Z4dAmQl1yiJpqI-0Xu;rx6xT(?Dz3+L=V#EPHpKBmzN zm rRIcq!ZckJCV70&;;GWmX9-vfwAW7ruh1czVpEYAkN}H{PIfv~< zF_t;;`Ip!(NwVS^47_8I-LmtLa+s)4L#lbug( KbM3~$8WRoX zUaN+Uw0I4_b+|Q_q7rTIFm$~0(Eki*{wl#8vO}uQW5~-+e7-QHW2buWQP(xfV9|%^ za(%OP-aV&CQMy*Hn(;T~)fZDWFRk&Dq7L-9`mS{c4O97O7ITq#9TYpgzUW2+g&w eOkXBNqDcGbHQ %YXdx*!*o{PgcY++*~%sw z8L EhtPFD7g2T1;-+u?OcVG^chvj*OhKx3#p!VWlV52vD~sH~&5^RqOi&hRI@7PjLncX_P!uPx>2{$; zEzrwb;eB!1&w<}wMz-Ukp#YiGD!;##nze#~Q-;2)gi-0m`Yr0cbj{WQKR%U*$zhQb zCq6dv+cHMdp9|x=ST7MmVRcSKxP0*8S3ZLj)1@N2bua0Ff^maEO+-4App%_)vok-Q zKo^0FqEYV8z4ln5#ckwOX*^`sF)=YvmR>#}jW*T_!>Lf+@I}eMBy+jUA}IStTMU9! z?N#n1%vVP3J=4-iAz?|vorf9CRG0a$ThQM-hhpOG=u#qhCDhso(iQN|eAWZ!(X%=Q z())w-{KUj-NncZL-j{HQ=59Itx!66|p*Nz}c|4O%*lOrCiD^#Fl3d9-{jzsw!i95$ zb!%h`;$NGJFMrIP{wRQT&a>dCIO>Db<7&dG(~B=nuX!D8(%iJ2LiNQJhD?*v@Yad` zG3vFJAOTP6Y96b_eF2WcH|%4ppS!M*EV!53Y@Nj1Kp{ zIIUGbp!o6FrQF>SS`xJ9i%J-*7t1e&lDj |H>ZC_h~^ig7# |nL7Ro0dmRWeY0GZ zW@|>Q{{Bj{mDKGwqUZ-v7Mc9?H8MNF-`8$4r<6>H&8nvjqg%mKap#o6MY9AzgP&i@ zn@hab?9)3McE;lXryu>NHM6HFx;yF+zwX04&SNr47jC%DrONiL %zK^#e?6A{xx60Q3(%VH&O_Ku#w$&^=SsznWt?mEx^OMv8UZ6Rk87zpsp> z9bji`eV)47aPr)mUEk@YhaT$D7ijsDsjZ6W(hWnKZb(F#c2HMzd{P%2`_Pa`Vz3AZ z@tAq0A+cPj#NwBisN&mBiaIL9bFIoJ#AdwGXvJb6BhBb6n@`m2!q{TN;8ez!#Q4_q zx#yTU7kl$kTSbT1!vh?Ta$+bd!&3l1Hm&*c#PL>9;U#EnuMZV+L OWiYSS8fK@Xk36c?n4r1V(5`oP_Fdlu% zZF4*t@0d7V)VK)fA~8@MWXj6zABr$<6 (uC!Be zcS&VFrHhjvJ0)z_7bTFQlU(z7i(CL>=%aw+iGd>`r9v_M*LxZs9vkW!8GCiD|I@SM zvI!bJ&I>!JC?KA|h)WRW))E_8kY?^#sk^&*Sm{ z4bJiD39ph-d7;s8&Efb9Ro06(*TpK9wvKcK(mNMSJP{9uc!K74brnITPv5n*SlTbm z^w(ZnygWdCPe!_p)o@w9BFLFZ)~qWly3umY*I@co$70scgPHTrR?jt<0q>v_+o=)7-mnz(2BWV?QAdGM(%Sy&&Lsx|G##<;^2^}(rYZ;dqAgC zNqaGoe$Xv@+cm>HVa^PnisrF_QMV%Z{VRHJZpy0UO?V`idtF`nWyqiNioNTw?t{W* zQ;!2Xu3yvA;L?%KjMJ6A6yqGLMmx%RNb+=s(}G#_IX}78z-x;S%o=ar%!x@ith#J- zE-#O%(X+aQRh7{kWv{x2drcbBYy{c$3R}&J5U#_XWISEzc{5 zZ(7mY&ylUh0b#2B>dHL=WeW^3x|YMkY_h_xt4>MPNow&V0SsMbDyn<)<|I)+{Ec!@ zq;3zKETI; e5V$U(ja=7xSw6l6jKK8 ze%Y`^4Pv9R+~h69cxj025paf{QiIs5Ys*vBW}jcaIC}Ib0aEEL^OHdaj1QAfd<+02 zOmUq9d#cbnNSd0wfCB#hUAvw`%ZwS98X|P{NSrWPjS*qsIi&APntNTt3f@W#ZKcV6 z{VRKDtg}~h2xaur_*6f|yMrTr znE#=!r1lMmOBMUH+O)d((+-nS>QorftyhV8C>tgEW$K3psxuGZtqtS^dqTH+ R2=JWTBmS@d?1EyIn!E(*04H|;9Zr0B z1HH@R^?M|`MK-*z&Xy%mRWZ->%+jkjf8YNn=E8Sv{b#D&*97R`$Dh9;`2G_`_)h>4 zx8FbAzh36A;Jg1Ga{(>K&-?#pa2@@m#JYb3b!^!9UxGTab^?g}CwAs<&=7hzAb5!t z{_`35?)>ZT>+=30vJ64d?>qij!oOiF2@%iEKVeRPMbkciB6RZl%pxZSC^G;ekEVJ& zXtAJC_w!b8!aRTv j-mE%;dwFS)-)6?D)rrIr&pM6z`EXnSOq$ z- 9fa&acLNo?(Y6&L{@E-woVg|DPDe7&{{z?un4-rfyXcDkm1Vmk FHKZhqjHk{&`GDmG|}2HPM|QX0yydr@)7|>c2tYsoO)81;cR(J~{${HMSFx zcW(R%=MoS=f!f}|LAwAL{(~khn9j~BEUb;vi$+C3e*QlE=@$UZtD0Q`WfFo?i$)5k zJ>Q# |Aw`cmI5 z+6mGagkC5VB)cZDe{O&qMe4aM^v=+bjZ<@PB+x^|pR+t|*1M8i{|oYi5v?z}Rf*Wg zr=s?0gv~;c-wYIury_PK^n@!RC>f0=C(w65(1vsB-Q~7HcQ^IPA8!N@(l4g%uV3A4 zfBgb&DOP6YA7dbJ2HE$9>Orh#=T2Ahbx^+$az;;r;3*J1AA+X< _4o+;W945?lJw- zn|P4zdK30P8wxzv{}swDT0HXj=N|yuzSAP+r!`zV6^Vak*ci(bU-wzh`4TYP@-U8v z#Mh65Pn!THq_(Tn|A8^oX2~Nkx6}eFRRqRxL3QCXFpHZvLxJA*p5EqvU64B+|AgZ+ z{tx*7pU*-fbNl~$xZk&hM8*yMXQh7v9Wuh|v;A#({{hNJ<_1E5 mPU-kJlmKlZP4*LQz%p<1@j0HwlEkRSv?pV}gQ$MD-nN z@0m#+o}Ox$tEl$!@~ND>JT^ptW-V#a5L{TyCEsxS#$W7`aq-KR;V!_DgMn7&yZ)JL zq$5ugfw~4jpFqdVoTyk^=npq*g}6rMwODx2_}{BpJL$xa%R0=DzaUU&M3xJeviQ}V z&bs^kR_F1zTR3eL*XzIoPjDdBM&Dp{bycH+4LBXYGQ*JP*!RbA=a~@uZT**Q3o&sX z{e*fLQGY&Dl~3Uk5>=CgiUbny1^}T6X?t{!F{APWpH-iNED88=V$26}Y8HS=kwSYK zS3Qe|`~@M3I$?kH4IALEx*zLlcj3n0nLiy$aOZB`-?2u4y2#Spm`(w7`g=Tik;M~K zVzfV?R&wZ&TCz4jDr)RiH=vwhtgcH!>uj}Ql4L#BDFz|r=(E1vUEvB}cAVVsb0;Oy zP{y2*>olA3M0>ai($pIbf_SH-q?FhUj9w4Q|9$7AWMnGv$1Eo(C CW!qC(aou90GyX|vc=d#+Z zo;Is34B;`J$n;;BiKUw^jhPX49D4l@$}tl|Cv%wOZ{|JM?;Q@5>K*w?eQjaL?UeTG z9+GxoRZ@4bSO7;(;^;jov*DIDd^e3&`b^tl?e|8Fb(>l<`A=$cerT7m>Sc?H8A%$8 zJho_E^UBRJIV*8d*V(z<`J|}KZ ehP&oIbJRO-HHoYK&0>OD@9r;&C|D5RSv3AHYp zk@xLrO0rT_kJHlCvNY6~kGw_G;;g3U85}Eb!YN^MP=-myxgk0}LGZSwX+ix!cZ>W} zkv{nmvUVdD)nwiM&OBcX7-XNG8D5?95U1lVO{)^|3u1H;(WU7ejzS+%Z+N0W7AKS0 zG||?QWiIQGN|ahdu Rt!IRV4{3K^^>Xy<9?!v8R0;%y&**pE3_2#@i zm^jS_r^hn-S?0W%3RYY;&4e~;wz;;%)Q-sL1U4^4g$>zx<^&}@DL9?jmz Q&@LAukWBP;zI^!{P)1OHP*E! -kee-kxygDVDMMO8FV44~ zVyJ_hy4 `U_MP4lGM^I>8NnA}ZX&jAX=%yh_VigPxj^+5;~Up0 zS;Ar})^^6%E{g?fcB#uS$c9w6Yna(lMBCamwI@?FthQ}<`g+1sZZYb7Dr?L2L;PXZ z-@oV 9%1 lu)BkC0afHkr`h`yWqI8OH2t`;eF+#HW|{l zF9XlL4TMdr?o{t>B!5Cui@JU!S$jHC*ttf%AY|4rGTo0j>NjP>I@iZv>Jo4$vcKUh zU>&2aZW`ODw-)8Ax5y^5dWb|{?N2+z`zpxT=UHMW-AuE{Ok%?I#=5`}N6*2S9D^bS zH7_vclT7r4DA- tSnmxotT1R z&J?qjk2v=x1xAK3!87_2sZ9l8q2K)3vfDcyyV9KNY-#q*P7R%DoIfHf=yubz_O;ZI za-zFK)94E~SK6BAoLkr`ct>eS{v4{pnKbPh?skW=v`0fqHR)y+&+g4rsCl2Vw=rMI zYC+UuY=AE&U7U`Kt+qo%&YwNOXuC$7RI*aT3uQYrRZXkXOyx+^gLB?{dLNl}BzP^( z7pIsh=egZY)ouPBUGHBd(r11c@ZzC{*n&kH$^;i0_XMjVrQ== W@A|v_(CZ-)q-d}! zh%}Y>r_m)RueEGQWv)zCZ~{{L3)+n_AXX64O08)|9$?(Xqi`)p0>~s4Wv;T?T4iKF zz7X>m?JP*dZ6TCksrjy+&wszfI4J0Fzj0}2!TrH{#<8LHc!P4Cmrv*ihjUcb3lt5U zYhGtYw@dJzxqMKvq&mZ)E4u4eX0qNn6Gd9p)py)odLx@Z(aXBejd{<_k2}rLN@*3C zs~mSrX?Kot)4bw9?tQ_oJZ-df 8C9`f`yrl=}aq)k)tmdZduBhIfRyyKvq zR>7KacXL8#M2zMBPs#F3;dRBIxvb|(I! I`-IlNkRX>MaU2p!RS@DC?0&dC zq3u 3*e*30Uzy2b9$BdZX*Va<9HRhL<*xd?-7 zVv%lSw>gDs&(0luxosz+=VViBmR@YTu$Ni3b*_KCQQ2VRjS$;7xzO@Qk35?KZCvxK ziXEn2zy28Qw5el`E-J2=yZK8o!}ea4m}l)~&9%i+dLLTf3+cH8ySYsdl N4{J{PKc2OGFNu`3VKQ_Qhsvu?_`EtD@ =IPQ*2v6wHkHoBJ23x#T#$)@d>-$0~S-Hoq+zrRiVGwYzx2 z;?#_YOWZLLp8>U_`F7T3#-TJ^8B5HYXtfga?@eAEn_aQE$@_BZR^r^Mi-CHk219^D z-mfm&g}Pc+ivta>>RWU88Fl*cm-46eGO<44>WPY Dc%m0yCD#9@cTs9*Pf*T1Dy>`!#-V2 zEK=nStQvhc8qH^4UF@Kg9zSRDPe4?GCN8a)>_bsmUqPs{% =6w8yfppwZhO1m zfQLj8$<0mHggm^Kv{g@sTAqVeB9*L#hxOe344&X9{A~yacXD<@qw#)YL!w4??5H5O z>})f65&5Y2Z8ItpO$w=BWiGIL+}@XRmtp%^5=VF*)Ob_MeI?xQrfy_Y`r59YeZ7EW zOwp4=FzKh|uw&YamVGE%`?QRUYed){}&z0Zm+KWjTfD;5!z+*XleXeu?@dPMb+ zzom0t#8JDE2Q9Omm!!IKS%SJ5_PsLqdA5C@%KZHqQe-5_W~Sb)tcSs>yIgLbY0H)^ z1?q|U?WEU(^RT|>9QbMrLgq5`TQ>J{26UNqEcEmTaO+4%e|oIJBTJQT)Nl_6vyoau zwOU(DcS@O_413isGTK$J_O9(UgM}ad7=@^oR()jBIbd%xO#(|tDXUW0c{zz^!BDM( zF|*-YM^-AstYE;4U#GbGFzO1RVPZZY=mGwSv134}%{1N1d-@Ex!vPq&Ss{9~BhO9~ zL?C|qNkdd_ <&iiGbBjp)O2~#yx<5g} zWfv^1@yv4;S!ll3A#=%qX7;&o@k>N`sM()hmULn1`3K=XnXuG;1?3c{djTzijOSJt zGuaTK2Ue=4&vtzCW6#dIzNlre*}86CNWM4J*WzW@KG1=;8=q4N`{`Z)!?m3{?rv+( zFJ}46^$kVo`E)(7DsT_+6KD06z2 FMJy!UX084!|A2@SR+JnMkuIdJwKn;`TeTluLp^bg@qpj&ZN?x?>@;x!ts&6A0 zuG1XtJp3?T@hL;LPf7AqW=IB!ZQD`*T1k3%GG5*yu)tw9&3HCAWvaBQLM$h5$T}|e zm4w3iIkQk3wt+y7@WLc>#^Zr&g2(7( UMoVmqMj7xro2eyZry z<^I8es$&!OapoHVK;>8swZ7V~A1Y$88sBSsqci#b$iaa(-jcb%&pis@Ovt_#n0?Xi z$lPhZtp1HVo^>jv+~ioa`LKDUHDAY>ai*?(lLV{t0dp@cE)_*ZZ|xH{uLRce8N$44 zY&~CcNzsZWMSap9di!BJPglXQW;yj %OtwiL^iVZ zEFW_G=GP{(SMwanBhlmC>0-V`zuMese@B@@(!#W2k6mMdboPm6J#l9(52oWy56q>} z_*}6Wqg)taW