From 7d28c5894df08a0ec932ac9286b7372046ed71de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lao=C2=B7Zhu?= <2208213223@qq.com> Date: Thu, 5 Sep 2024 18:14:04 +0800 Subject: [PATCH 1/5] Update CMakeLists.txt to adapte new CUDA version --- CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 01cf612..ab4e077 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.12) -project(xplace C CXX) +project(xplace C CXX CUDA) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) @@ -65,7 +65,6 @@ message(STATUS TORCH_VERSION=${TORCH_VERSION_MAJOR}.${TORCH_VERSION_MINOR}) # find CUDA if (TORCH_ENABLE_CUDA) find_package(CUDA 11.4) - find_package(CUDAToolkit) if (NOT CUDA_FOUND) set(TORCH_ENABLE_CUDA 0 CACHE BOOL "Whether enable CUDA" FORCE) message(FATAL_ERROR "Xplace only supports CUDA mode, CMake will exit." ) @@ -164,4 +163,4 @@ function(add_pytorch_extension target_name) endfunction() # add targets -add_subdirectory(cpp_to_py) \ No newline at end of file +add_subdirectory(cpp_to_py) From b2d19521ec1f8433e312ca06a4a57a450808b42a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lao=C2=B7Zhu?= <2208213223@qq.com> Date: Thu, 5 Sep 2024 18:14:49 +0800 Subject: [PATCH 2/5] Update CMakeLists.txt to adapte new CUDA version --- cpp_to_py/gpudp/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp_to_py/gpudp/CMakeLists.txt b/cpp_to_py/gpudp/CMakeLists.txt index bcd5eab..3e5d222 100644 --- a/cpp_to_py/gpudp/CMakeLists.txt +++ b/cpp_to_py/gpudp/CMakeLists.txt @@ -24,7 +24,7 @@ add_library(dp SHARED ${CMAKE_CURRENT_SOURCE_DIR}/../io_parser/gp/GPDatabase.cpp ${SRC_FILES_DP_CUDA}) target_include_directories(dp PRIVATE ${PROJECT_SOURCE_DIR}/cpp_to_py ${TORCH_INCLUDE_DIRS} ${FLUTE_INCLUDE_DIR}) -target_link_libraries(dp PRIVATE torch ${TORCH_PYTHON_LIBRARY} xplace_common flute dp_cuda_tmp pthread CUDA::curand) +target_link_libraries(dp PRIVATE torch ${TORCH_PYTHON_LIBRARY} xplace_common flute dp_cuda_tmp pthread curand) target_compile_options(dp PRIVATE -fPIC) install(TARGETS dp DESTINATION ${XPLACE_LIB_DIR}) From 109b2d5d1b6ea1e154037897473c0398c416cd6b Mon Sep 17 00:00:00 2001 From: LaoZhu-x79 <2208213223@qq.com> Date: Fri, 20 Sep 2024 14:43:28 +0800 Subject: [PATCH 3/5] Delete some useless files --- README.md | 222 +- data/README.md | 10 - data/convert_design_to_torch_data.py | 64 - data/download_data.sh | 61 - data/fix_ispd2015_route.py | 570 - data/remove_fence_in_ispd19_test5.py | 75 - examples/examples.json | 11 - img/xplace_overview.png | Bin 327066 -> 0 bytes img/xplace_route_flow.png | Bin 81188 -> 0 bytes main.py | 105 - tool/cugr_ispd2015_fix/CUGR/POST9.dat | 413484 ------------ tool/cugr_ispd2015_fix/CUGR/POWV9.dat | 515760 --------------- tool/cugr_ispd2015_fix/CUGR/drcu | Bin 9053840 -> 0 bytes tool/cugr_ispd2015_fix/CUGR/iccad19gr | Bin 9201560 -> 0 bytes tool/cugr_ispd2015_fix/README.md | 12 - tool/cugr_ispd2015_fix/run_cugr.py | 158 - tool/innovus_ispd2015_fix/README.md | 34 - .../run_all_route_xplace_route.tcl | 25 - tool/innovus_ispd2015_fix/parse_log.py | 83 - .../update_placement_def.py | 31 - 20 files changed, 5 insertions(+), 930700 deletions(-) delete mode 100644 data/README.md delete mode 100644 data/convert_design_to_torch_data.py delete mode 100755 data/download_data.sh delete mode 100644 data/fix_ispd2015_route.py delete mode 100644 data/remove_fence_in_ispd19_test5.py delete mode 100644 examples/examples.json delete mode 100644 img/xplace_overview.png delete mode 100644 img/xplace_route_flow.png delete mode 100644 main.py delete mode 100644 tool/cugr_ispd2015_fix/CUGR/POST9.dat delete mode 100644 tool/cugr_ispd2015_fix/CUGR/POWV9.dat delete mode 100755 tool/cugr_ispd2015_fix/CUGR/drcu delete mode 100755 tool/cugr_ispd2015_fix/CUGR/iccad19gr delete mode 100644 tool/cugr_ispd2015_fix/README.md delete mode 100644 tool/cugr_ispd2015_fix/run_cugr.py delete mode 100644 tool/innovus_ispd2015_fix/README.md delete mode 100644 tool/innovus_ispd2015_fix/innovus_work/run_all_route_xplace_route.tcl delete mode 100644 tool/innovus_ispd2015_fix/parse_log.py delete mode 100644 tool/innovus_ispd2015_fix/update_placement_def.py diff --git a/README.md b/README.md index ee654d6..9cfb05d 100644 --- a/README.md +++ b/README.md @@ -1,236 +1,24 @@ -# Xplace: An Extremely Fast and Extensible Global Placement Framework +# This is a modified Xplace -## News 🚀 -We are happy to announce that [Xplace 2.0](https://ieeexplore.ieee.org/abstract/document/10373583) is now released. Compared to [Xplace 1.0](https://dl.acm.org/doi/abs/10.1145/3489517.3530485), this version supports the following new features: - -- Support deterministic mode with only 5~25% extra GP runtime overhead. -- Implement an extremely fast GPU-accelerated detailed-routability-driven placement algorithm Xplace-Route. -- Integrate with a GPU-accelerated detailed placer and a GPU-accelerated global router [GGR](cpp_to_py/gpugr/README.md). -- Support a superfast **GPU-accelerated place and global route flow**! Input your LEF/DEF, the flow will output the **placement DEF** and the **global routing guide**! [xplace_route_flow.png](img/xplace_route_flow.png) -- Provide benchmark download and preprocess scripts, and three routability evaluation scripts. -- Code refactoring. - -Please check our [TCAD paper](https://ieeexplore.ieee.org/document/10373583) for more details about **Xplace-Route**! +This repository holds a modified XPlace that removes features other than placement, while leaving the interface open for other tools to call. The original repository can be found [here](https://github.com/cuhk-eda/Xplace). ## About Xplace Xplace is a fast and extensible GPU-accelerated global placement framework developed by the research team supervised by Prof. Evangeline F. Y. Young at The Chinese University of Hong Kong (CUHK). It achieves around 3x speedup per GP iteration compared to DREAMPlace and shows high extensibility. - -As shown in the following figure, Xplace framework is built on top of PyTorch and consists of several independent modules. One can easily extend Xplace by applying scheduling techniques, gradient functions, new placement metrics, and so on. - -
&;f z*yXz_EK^dD^)>eHuEhFIgLXinjzjR>=KJTe)a$ zo?3GsEXQ*$tPPsL9m&c+h?#!6Gw(y~>nrbq!8SNE@~)i>4QRAAafw)rM}24S;i$Nh z(mu{|8fB4+ZD>QCUwEU#KJ=%%YmB@j$ML(z$*xgsy0V_8bEW#{rCigclH!uj9|j)e zSmi2w$1HrN)i>LQh8BHY{VPj~sKW&%kc i)qjQ%I+3koTV5 zW(eLq9qT#vsHgzUpurB%Ml*X Anmxq%Zjh?IryICC1J6z_d2df?8WkqjL`1}kSZc&ZU>ELg z&OF}pf;8sDp05v8zlWG!qpqa+&5XhoX=#nR#IFD{KPC!jDtI|XRb48tadyU2lG~S# z<1T+YTp%$vpIFN7kt(3M>-PAz{usw8J|5m{_LX)~vuo`tL?06~RM$SKTZ=j$mdo># zj`1g~v}0UJO?_rzW3X_RctM#c&|j`WQ0tbpZVqz{95f-8JQ^zrO}67%nMz`>74q0z zwEmC1_cwp8sqCossL99b5fS$^2jLVPG=Hhc`jjTBpeWy-gHH)uYA{h*v&PD885R~Q zYT9ve{%k^g3eMIzgBNT+&yf5A{v0 %hLt`E8cBP*+LpfrFwk}vv&m=S>(0A%qkyHni>LIhMg zwl~qy;9|si{P;0qEGhXZotvGFkWk=ggM1 tHEnxONSzx3?F0On-kY z&?${ 16={CuldfHVsV4fRV&q0^7HC&|4IN#6F?x;j)Ou#mQcZ)m|3e2%2RL;zU6 zWi?4wqEoG6X;rxRK0x*-nD{u7mmMAL#Q|5P#x#n*2g4*WGxNgwYVK%5bo866b5oOF z+cNEz5-E#KKySLLCmVAQH%lI6I!Nz5e^hNrZvD>1*5^EszHp1-1)%c`sPEt>av0eW z_BbN*UlH7(qN2$x$;wjMaJ4;u;h&bGt4p(QDgS59JV67`QIst!FE7v;p_g(L$gLxT zBTCK91tEeAD$~@Co)m?QJiiwjQpmUE*X$<|Tkvt&&dH%8yyd*q_VNBZvk$ULn)Mi$ z9_ayf@mjZ3L972uNfZ>@&R3YdR{Xf!!tl}EX`0Oy|JQnrfMkcO3i{|?J8FYCv}}CO zs_6jD2RpVsYsIv%9z$Nmn29JLps#68{bSnF7(&^5KcB(Fz`$_b-_)L3L7^t^-Zkp< z*jboZ==jk8QOd*2ER5z}Lrp&uA(&N3jg5`VK`1UbFaT*Dp^tzw%lnzZ{qUJ>O9hAm zJ@npT;Nna$xj=L|h>-U7t#8C;zqFy-9H9KUhl!51srEcB_aSV32e6-ZD}Ce$X=pb# z&^rOA4517`Z0MSA^W(Lh7b`LN9-WjFnk5ry46ejGUPrfp-Ojo25&{E^!M j951p{z`zn0yBf;t~X` z#m?YMW89irT0zi_f(Ao(2O5;vn4H*H@}q;DNa~wU)4?IiKIRM-K;VKfz=Y84!1nz) zu&7{2GCJD-US1aSemn*^7NGvokz24^#MEzcW&Bk!29E@+xzb*XWx?W@;F#RQhh2~q z5ObCA3pYa#FpnLAucSziTTqauSf^NXNIYiEt;4-F}M z?zUm$RojA3F^1L?6hM{3bzY~bjMnL?d+z%~-^cfPO}ZIaSY()w>k(TEC?0nlRtZWC zTJ#sz KI2lD`&f2q#?B5qLA0=~X8Q=mHs zSArq%P2fzA6LtnJ9$65B7k{v9ntn)!ud}hUw*#cJn{P$CEaXf8B&$l VjO9fq{ z3v?j%O?tQ }&Zk^Gilz 8}nc$=R&1^%r zJ`sbGoL95_{MW>-SkDDimfccg6W9`J?#~|cYO}i>p^>G%$P=c0JjGrM8tK)}9w1bI z>B!sL`?GZ;1>>ju{Rto%5ijcLSLLf07g}eV-wY~QO;!5=TOI4b-te2IkQ?{M4^}s~ z2O3dc#&& D4XQYdAWV%%D3$WG)R$OLcQf&z`1^McDxf585!p`&CAJ205-hN^|2zS zqmx(HZ`GN#A#Oj=?)sX}K@OIYl@0o&dtY`v?&?Y(wt3=ht3p*PEskSo6nDQow#fjF z_i(TO21K5(MF&f3%R(erXAzGh;=G@%u?mGPEf}@X(uSBs48Tw_5mN^!4*di;sB@u( zJ-}a?K>bqPb9by(eLAM*?0g$BalvQ^qQPoaTac%Uc(FThe}vvOS `yR5$VfVtVeozSkqclK^4#xxvX2oWV=LL90CW%*o4R1}hoV-@v%I zxappUZV;6+ATtd$y4VzJzmv8A^#n0pf#8^_*XXQOVeH?&p(&-JaxwQo0y OuH;P )(Pz}NP<3CP6cyQ&vOqH@3)ihLZ%@?eQT zB1nHBUB<|=gP-XRlbOD;HXy1W;HGH@N3cWyK^wTvNXW^r{j9FotOv&g4kY8SEBAC3 z)&%cc9Z&T^_Vu-CIi*14T~NG2A+59RPbNf1`yts2=nr;8ZGtt^_$mrlLZ&!CkCgz% zzT9l^O85!UN=|O>A{a=;0fg~B9iVzXU02cmqQ!nK64J|bogD_`$}WKRL!h8>>eeYQ zm56|`J_J$O%9{4@z%#~-o0cyDHVx;kNq=w(w2zIE1HY|#SiJ!*j&C!K0`9*zgCWr| z2?{p!Ey1V?A(+jiAuxE{_LlK9lPtvneu^A#-t2vUot0H~`~51^sl(-HrK`t@klW3x zq%)7!-RdK}-QC@xgU8&;Nq*hpeNZ|u=sn!o-KjQF%R2HXgPY9~+s4=!{V^8z@T1?7 z&Iudir3<4!mej4iZ3d{qlO=1)%Y6WWE6^RcsBh~J&wkY|STRWzmC?5@U0$o)rX$o2 zi&>)Jirsv5y<{UXb0&7 *Al^Z19LbKAgOZ&Q=x5#tSxnx1o-;0` z7AG0!;SFMq;dqsKY-q3~Q`A+?+%N@7ZicfieAM~-h^CvKcdp3chO;%^DB nD_|2J|)@6I*jF|PvPdBL*FW kR9Ra&vu&y?wukx>lzi~gn-uxkT42+}A$%9(WdvuEnx zT`);4KGH{|Z!=Mz(dPw|JD@rfPuAKHgIt%Ln+x45dK|aj8+ThFsL#H>z7v(E_%JrH ztmu&rs)X*z{)m!RlWWD3PapV9w+54LTOHZ-F9j0kq^jKjk`V9>DcJNt86*X2OZl-5 zBwZt*I}eXG%A&MNt&FH8BqRX8)?-tMi;LSr83hCRA{0tB!6ulEv)fyi1J;9)lk>rM zWo0!rGKi|I-KE9>kk)>zCfO{4a{1DMAG-$NDhb${($g9I6~Dy-d~SopVtan(Rjl8v zQ!u%V)M+>k0bndvTqolM7yu0j`6^*qF;=A072mSR1M+% z`}aYwjTr6+-SL9M>cFG*&T+7Hes1<~NxtWyv9K)!=cgMq?a)nkM-u7J92+w;GyJ;2 z+u$Fd$yH22rWw@g%bxckT5)Gr7b7g8xw*M|H#r5xA^;0y2I{(EauA%zoNhXLgtLK1 zH$--?QN?3<9fYs8{(gM#(_fm^OTakuLf 5V*o$+u}j}(l-dJULk7mOF|r<2qm50f%WvpT7W^7E5} zTU}OOz8#EfF C(1O}znX096`Z^et#BRtKP zuAUwfkVUoLJtaiUarJ370C8W5GlIQ iUt DZ!ym2 ms2{~Z$j%#sF~SBc|#wWaj7%- z?(-5H3#*?}LV>SVS;q~45(;I21m*)?yT6%-J^uFf9Sit#bHA7eLU{~?V?sN~u4i`} z3_^$v7+Q@o``r`xE96GRbDGflK7K@O_8^ZE78|s@@20Z=XBXnj1Ze%hJ_)AUK&I!h z7-dDe-QT7hgZcTamqlM(w)|4u1|CIbCokkkG`aF3mjfdLyJPvoNj0uM#0Wa;b)c7B zbf?VB(^D8&)j+T~Dx99PfPwXJccISpN2dG+whzQ8&=52bVCrskv6eJ~j;zo)aMypF zn4tQ%>qiQ5Aq;I|M9IE_8OC|=r^1-Vo3B!NfGH4s1g67K0NAXfSm1Vlj2wv?n>qc3 zs~MSlKY#K%t*e0%o1>W%1rrd9DK4{Zzc$8=a$7x%pk?~S?ujn8{vwkPW~8`*OUp={ zR0o~~8L(LZ1xB%*mWql2%p$-eAk$79oXn6Px2NwShHKCgi|qGQfsOzSDFayrEcS%p z;mg@*aM?+HGD)CKr}YFFXmDpHx0g+ssvfakyoxYv2r_^#RIt9u!_x|I4ZK~f$av-I z%6&f;rPO&S)bJ4D1J+!SFSVfcMII2$P8pA~r18e4N!X6gixojfzil%c2G5;;GFcCe z@q+|DsT?9kU_-#{5da27Xqw7~f9J4)gA_LSUwNZ;3UDTvPQGcITQ4DMV@C%DK%IC& zCwBOgdJgRr Fi#|az zd6^p5_@OOhnwNeY6u2Ml{&*(m^=_&QDEU8zq2PZUW~ti1>kT%?dfdn1!Soos**m3r ztlX5@m}kwcPrnK6us$lV2d>G ZJvlTGx7#>8>k%V@+Zfw;WSz3mE%g<+Da;z?r1w?(j#NfvF3nQ~%6DUnz zE1Cm_j<|gHW$HbTzUdtx3P@q(9Jtx^w?##CgiJp6u*!!=M}1A~Dy(EoV49^9bR4ob z&9*{DXR5ymKrjI^tWu6zgdO_~Fu#Ch2q14HGFG7r-6ciK>2F%FLGfBo-zmWU1>_ko z_+KsyyDD@2f@{|F-J*ve>jL!fx!O`Qq2KA-5E^u_K4&gM|M3E}A|@v?va3!5fMZ{S z<6iXaP-5jM8;c5Y(K&5=k(;5c0(TE$*aTnk?(t5G2{@%baE*VdX@WjEODPTU l|!~t_lM_vhk{rWXtZDU=XA*2hw z$0$5ZbXYTNucQ4o8Blp3?JvP`Q16D5Z3JVJhhP~+cER5QkC3qIU#8LTci^6L_SINI z9LJ$;h4xL;pT`JLKEmD<9J9da>K#Er twv`q5x7nE<7qzFC^4X_>_8NcEyXO} z0a!yqL6N(+2WRNb_@_z? WMm~0}ye$vmQHRhkfOUkr?_GDjq|z@Gls$bL0ElGqlje#7;UP_IYIV2XY3x z3&M2tA^E_*@*OaY?0@RD>$$Jc>3cWJqpt1E-UC#|R%LU;dvPuHE!W2L#;xLk2MII9 zA)%pBdzBv1z?zA3%`f#iN#_gC4oo-otrZu6tEV7F%zO?F V$B%vJq+ zno2L2<{NPc)!ud8oyXG)=?Bf(5N1#Ac%KOi0-1$RZlT#s3>MgILzsmg)Bn{B#!uLd z$D!(vthB2wV#Tp@0gAAG_sqbDcRIl6X?6e#l6w(hT8sc-;A9~eA}IP%?&sk9vxNYG z>5$s%E5_rcdO&rQl}B5_xTIp5NcbvVjr3!fP657v^_}S$l21T `T|F9YXAj&XtDwV)Rk3flflFf7v!a$fdq8cZudq_hDXfVr=i zVEh4;@g()x>s9dPfG0Q>Qwy{NWa=B*-AwqGFa|68;6W#lbqM_cEN{u=udTTjdhheo z+N%s?badeWp&1KxX(qw%4+9#=D7{Y81E(H%9S59M7^6=b_2V;z?q>JTS{jG2Rmd&y z0YU_$K##my>-A?P4vKQrH1R!X9S;{nZwx`Y1Uu^oVK*RZd4Z!if9Ep0@JQ{L*4ss( z5f`^0n^HC}dZ;J^M|OwAosxVA- D? (!_`6Y0_Qyq|lt^^s& z6RC#INUy9#J&EdRL^p#W)+|*Z@x(=_04e7 z%41*aurO~i6v$aPUh?(25ulSYy<(2wWD%lW5iA?YOaJ&vK1W=oguF4WMYK44n)3X6 zAiZ*12kG;i1X?p=R|OV&=0|^z_1`dm 05)MI;(YfA3{rFh$X=p}Xlg&H5|$cbi}55D^Ko$KnlMy7Wk09jnC$ zm8Fz;Xf(#IFTSYfea`i) HNjshC++Ln8pV9x%l5DvFt8g8vhQ)?H#8!|B}ODl$li z qu^KZm;!M Dl6|3+`NhSO4h9CFTpwK@wcxMhyZJ~<*{86O{Z@6gztYdun2P!7 zN90LpHUK|B~`5H2?aC&SPA9!3D&`-%d&nGv1@_Vss*QEXvf7BB=S-$u0 zqr`%PF)bzuGD@G(aCdhv_GZZ-v3Xc!4&7#zxR^w!Ao38vGVWFKvBt^+uirW|lX7st z5!Y|GFnu>!#3^Jxh6VK1>^01BP${37nP#|!QiKhz?iI2Nd;BKgO9-nDzn*0-(Phl5 zJ2Sm6DB9rl)bwd4EU3D=I?Ud`3QbCyee~U;nkIponw69DRZ}5eP4!lK%qY?76SJ)R zeA(lqTODbT01)m9hAVRQ3{+GyovH !{9f4e zj_+qB2)V7uK+mVG;*t``*dgwBn9mSd2+&BjUXP|{<^s^~-7r*0mBM=l6qX>aGQ7hE zc$23jdv+zo#R!2lyLjoN< zXdYYqB|IQ#VS`h9c_qZ|+Yn TL$%c?l *h;zv0o^`UoOKLh1fdPgRAL(BL%RHk* zfZ?CL6|Fj3M#v@Ib?0z_c>sj&_31IOu}1B$a4~=M!qktpH?t$b IeI3*#e;lqkOv~xrNU!UA_Ht{R-Aoxn2S5W~k1_(LqoSdWqz`evJ@_8P{ z=77RR;9r#@CLCy><9wl>zytR+lqre)!31hq#^;mYBoteOuKx5P8sx~64TE!Z6f(5~ z#P-W~?`|T)d06-q Fa$(g#rqU6L@SuN z;k`niCa^Jl5bPgH!BsedIsnzjd}#u@P#$n@-#>;wQvT0-0ESCzD=Rab&w(x0($UF; zD2SmhLIMT|4nNS8w@@FUFGj|+UdpN)K<7#X!zfnXia9DqFiUy}oah|`4|shRxR5TA zlauQ#bR#l{VPe}N^i{_2^axUi7ZP;V4FcJ|*zS)X^MUz2D;XZVqUcg53j%cjI%91G zDm{J&?|y({f&rsKZ}rzKx(A9-_0NirH(4n{KbJ~i>o$8Plz(g%a=C-WdPDZu$~s-d zOkJJ)_UWIznjsTYQ-5lQwcC?zb6`PDsHF6fQOp?GvkGd!(Wp_E^Areiq&`rt~m} z?vkyYQx|PVK*qhnui=oUaTgT})a1V@{PbN+XHtF=9hDjZMrI__#2hRyu7`ZmYs~bL z#d&UJMe4DAS@DWcz=6nN>k};2v9Yla48b~5Or)Ne`eg?@)4nhFi*3M&R %;KFIz%aW^HU0{uSo$$2*xa!n)qQ!VG!+b)-L3GmJlBghf&LMG+!^K8&>cxVLAo z8xr32i$jw&n(}e2Rj8b5UONOO_yq6R?X%ifRw`>~T)@Z2FE;#E%N{Ea+#I72N71T* z^X =qCo-Qse?JijAL6TsJ?X%(0f^XB+96JYDDh0c{XI`DD_d+Rq zdtaSpgJ0$P!=wx6J}B6f=TntfP#su53 f&`d2_=ZQKqEbuA zON-N~T{yYf+cO}2pKt4J9l%SEcz44Ec8})U!g>(3GMHJ$cB7kcYYj2x^^WBIw0`WH zc=iXW%e=QKarC% z;Z*~)zMKgytL#{CI>h5%sv4|cUP24lI9BUlnP{@h(s;!d-OFS3`+1eS)a9mI+bl28 z&|Z%zUUW<+z4)C&taso;Ym^SlByKc|C6=y|+>d4y!Crz{cHYt|=+7tLqP|EeQAWvP zp0|pHQQb>?bT#Q{5o>$4-j8;?loWH0hLe+%gpOKH>$d#>)z%tRGAM?-Ej5~Xr(8EU z{9yG&PWKf0UW{4rbL-XlM9V~4u+;5)oH`NE@xCnAQ#Z|V_HH;ws<=u4iHMa>3MLXa zbuMc})-!d!%WH$x Y~Nqy(R4!d 7D@C zt8U`*1L&2!ae#S~kocn*k1CpGT%^bmPU`iiS%0AM=Pmtt>Ck5#CUN1sCo_JO9Jck% z9wrx8R3rkiK$fk&Ot=2c7mMW3)XO(hm+kKYWM!81K?bMAufBqJ0U+aHnhW_hbMIX@ zN@}UHUZM;kHN@ZZxLqQc#<>b?L>nSmkY+0qQimT(0%?de%)kWpn;&pS$?kp>m_uG` z2wBi{dK(x{WTX_Pc3;QG<0L!?h~>~+%!(9Q6b|@*G@WHYR%^GlACc~oMmj{L1q4MJ zBqT+86Vf0eUD7Eb3epWCQW64^(nxoSAl;=%$2Zsc&iV2F*za~DJgjx!bB;O2HDRI* z@$?8d=oKXm0`-dJ;Qnen-MBsOGgJn?=YT*dNF*Rw6uem?6!;ei07HaWQx=7gkt`g) zkJr)Ny}Vje1pht hXPr3tqv$iK|Um=T#}#RY7^ZKi7`fPl2%Be1>#<;$YMVu}jF zs6cA!+jxMqVrFo{v#&F1WkBr86!=UqEq|KEyec^OOANx=UiJGOv_+-*(8-QZ*>uO< zLWJPeND|OX;Hx89`pAGoNM|EcR6`7W%*}TY5C_F2+4UFn3jd~8A!i;8v+W^@R!EQx z!3D2P!cGmUe1uv#upg$ypBS!#g=O9WbRU@H;(}qs+_~ktAA)#*2^lAZ0U#F(< E;y$Oh=f)HHT7yc?{Bz!uwX5Vx zcSe(6>we!E^Hl&piSdmK!PB7oZl{7K9~{li*<8V6Kf==_nA~?!kAau@JW G9||xo2j%NX{(u&TSJu}&CvPv z_A_`9e{b%_?9b0z&1PdjmjNI$e`!ctvpl2+d1SK69IxX^q8}uqopw_0+}tO^CueO@ zFVG6(_@;>M7*_+42-k}XVe+xDFBR3DznP?oiRti@v=ELVgnDo~2^l*0(ky-8LY-vG z5`V0ulBeAG%E^tA{J(sSf|nmw+@=eZC>sowATCjGBLgKN>v7*zR(>(Zyysw=fq~+V zUK^*?!+PIGMywnxyqws9A%x2_6L0{|H2Ba$+mR?@j%)sKLI%6Gi_T|8m2_d@Wg7bj zx24IlfHPU)62n$Fl##+8I+;i~8jN4^=2B3&e@F~t!6G#NxzeZe#fqflzi$DoX 5UD42FvGojQ1TJ3LztX0+auFl7a7H;?Q-olLsq2;mv;}XwpJQ*%F)%^A z1ZY;!c^t2{;n*29-Ml*8lZFHn@xoJR7>nJvp{lQOo=1c0;#Rv70aWpEUaKRWG5beV z_Hp5yP)l({-;|Y5BQ8GP&^2YQa`>f45($^j*3>t$;-6K^H?RzmOw8s4%h$ti+4?az z*TyS2AOosqWE7nr!?1WzpjjjPN@7bBt260T;u-O9+jR2p+U4JCVRUIfyu4?AD=8{s zM?Zgfb}$ri{qyI~m9c^}2PA*_9QlMk{6?`S^pxG^!tH51?Y0V@(sf#uYJO>d>9l~p zkp95GI)+HDT;_vqjn5(`WIfQqccGjgUc3@ AvmbgM z$)&h%qejCty3{3Aii$Uvw&KAgm=j9Kbh)kxW~)jfoaV5hocWaSe$LAFVq %)1_!*`V8H?2am^C#VVOwGCyEe`B9 z6%=_K%8B252wIg}<+Id`FV9cVhpv$!{Fwy7jn0I}Ft~wiN_$OuOfY-WgppU2y5FCL zcD(*(A<;NRHZZ>^mnl2^thzhvd*#!-itYEcrog{P&M*P82ocx2AS-QUDgM`ds@xoL zxlkLb!H62+;_avZduaR}1)p}u#Y1r5KzKS72#N^4(Df_5eB=4?VhqCjYnGKs0Lci! zS_0|=GLPTkSRMqZ>+Bg!vf&Rs0^~{O@y`c9buzxD2-i!VI~aS;Lnm6<$zW#AR)|^# zlU`UvL<@ehzosZsu # dTpCW zC5<(Ciqd(__OaE*b8~ZK$QHNU-`|gTfHo_4;qFE5ED+)I4gXVD_Xp7njL9D~6Xh&m zVpv4K31hQGfaO4Vy%oM~&hZ9~0&<8w%K;x2u^;^gJ27$uf)7E5o&Yg5f(at_%huf0 zrCVB2NdnJ*{d(m6F!6-{yZMu=u#3=(8Ej#H0U>DdxwyEXt_%U9$pfELa>&ga*XL75 zK%5(Zj_=fezuKO@hu}w`WP=)h#d&Y29S#7vRQ<=}L!&`|TE8oC0zHa45Q3CeMLVzn zgMxH$915;$G|2A~#;=lU`@zv*{TyHaXQ#kQiccdLcCVZ3|06OH!=;e@H0!59 ?g-xn2A<3(V}A-)pq9-vLsiGIEJpZ7k7t^WIjgisJr=Rt)ZJ)^Sd71RddA*)O2 z=5I_JQ}^WQX;NH+hz*+uo_i>IF*l2u>KF6*Nfi~%MGGU=%w6!%s2gcp2#R@Dp}k|r z?0v-Ommn4>r#3t@k>GSz!=Y-0wWnY8!rpn)$EU`18J7@@{ASNyScVQQcBotY#=^uf z=?5psnM30cMH&&kh~FUOa(3&U-}cVJI9bYNm5O^u>~(61gELv?BL?4CvW~vlyw|QZ z-hBxb)^{Lmp#=tf@#-Ype&wb*Ao}n XQsP5PVFMwAfoE2=@hO*I7-j zsga#9m442?!B2%&byR%Ih9BozmsP~*-ShK q++M#H7b?<~rakIAnmRj;zdc#!B@FLpeSHHTl-W{2Z&gM 64 ?>+W4y zN5`_Ej)Qt#_Co7yk8}4!AMUa7)cO=*${BX;XU|x&w7qkF-W+99e4GF`BclMzb*R3n z_-x`_?;DEI&6MZ;<`d6cdH6pEFpq(sUU3LWUsMb?35kZ$cb^#6N-)PVejdMg%AK(I zd$z$nbct?veL2`%bR8Wbt}4GGOS|vJJ@3ZzL7~z#Z>PaC%WEM0%h#{6kQ{ftx)9EL zB=N%QHW$|yNWf0N4%CrHUk1gYK)|x4Kvw{ySc5um>QExO%+yDQw2%y5dcHN;Xt>Ef z)?lfMPt6y=&us&Zl`Fj{ Xt3gGX2{THN9!qwKu<(FW{j% zLKrey73d*aHnoIPV-W;6wLQ=e5Ca@&y_G)^@*m_AS~=4;EBH)mRdHMxfeZt>_HzRU z5N^QHw=tHPY^?+SQ-q8o;(5TiS_K0MDJboJTyQ(*n63>@`s4WDy_Ct*U=kCf6-N`B z)~~W_wocY%g05s-zjzBkfl118Wh 4kR?6!h;6WJV3Gjp4i?&37R=fK;qS@P$&=` z1Q583;zv$;Fdg~l=W}RSW3u`sCoLg*5{wY%vqQJj0f3DdL42>y<|2PWDkKNNEqNY% z%5-NTfP5q}4R8dn^YlNW$BL%h@aQ7dc1t-jBoU6$eQt-`03cv>F%}%VoB;Z?Pv5U) zSp-Sqg3AawbO1$t!?^^-3zW?9xhc5X{=0QektC)_8zna|{94!haLSVNW7+MD`%WJv zEt+94Km)Q&?n6wJL9H_m{16q!ju;6neg4x})nG9Co@Op&4zr^DYCrEkaJnV(8V`R| zp^aSTdml^yoKeI__hQ?ajUIsmy<=0N$xUNU5eq7S8yg`!+t*VkL5l+N3^O}>$e2n* zIH+c3;Jl5jkUJ6Oj|G>*^T=W-0jx^%i^WjAiF|?TelYh41jh^BE6J=@uyjEwFzv4> z-MZQ+YCC=hrV5W=Uj2d@5Mu0n9r9oo3`Sa7TG)-D2yirL?lHJYkXgCp8RH^ciG{_w zwa(UocDC@f+2N!JvV2@?8fX!+V*ZY74HOwF=-HFLhrD`p&1QzWOMoY3dO91&dheU~ zr%#^-38hBD-PQ)lPmb+;Lrt<(IDb%Ynrq%oFq7ActCHB>UJTUzyE;;vigr(y1+sYC z4!L^V@=)2J>Fn5^cz6VvGBM6zW*8{{`S*8`P3URi*d!%c&Rt@+&Dk_Y@u581n45@~ zENXgH!>0ppgRHg-n+YwB1L{QdKKF$+$3?3*f!>ZTZW9!A_e4ZQX;i#h z5y^u!nbdAWCpikBK_s^XpY*D zux2I%?pwH0@*jr4RbbI{!oH0z4Q-XUiOI3onQK?BMvEx>ehM7b^)_!}#rsmEi?z*Y ztw}$;sLOMF`pRY;AHug%kVSF)d+Gue^ZS23ZE%|QbVOO%m<49B$TRbbP;o@lW!1#* zdtiQh{qM8(CngXN{=-Z_iFtV`r`;!Of|m^LC8*W&YnIL5y-!nl8OQYBqvw>_5S$vf zOj#XBC!sSAiMgpVIi9#LhO)|0ggb2WM$gk{pO;@1uc=wh$t#F`oY$2?gMSuuat(RY zufwN_9z%Tdk!KLtO_2nXrbRDf&1Y&UZ0ylWeG=b`yzRfvJL3e4>`$JP=VQKOr{&;a zlg!f~NnbVRr_KtIa^ bSqAx1f&3@)5HVIO&_a5Y4AJ;|7Dd3#h`IRyrKZ{Ab-IM( z$tME5HE-RsS!9g?%Le2%dCgCqi%xcZv$PADDBjG!Fug@W0G6cyX#3$v5s0P-_Xe5p zi1;QE?9y|2tVd3FfoSnUi;&vZ`pToxqQbNG*-^NA@?-7_Z zSTlqlZ`yGChl>YLbFT)Y`A6u19uIcV=<=EV{*ou{1WC#r>y6FTZ+#(AWx)QhNO|x_ zc@dsLMf%@Ae>giWT9YKpa7V+$U=aK<;aH}XnEr+sJ-F4|!Q{Oum`F}R(NR+Z9`5^s z)NhpmI;VE01d`;rN8i?mgUu{@LBe%^lUieEA?C6X1V{NAoA|ZwRN>i7>4JV^lP0wT z@2w+`&Y;>9sNDuBmUf8>7-h#$1M61n0tZl0!L`PKmtb_0AH3v9!gTQUl!({iofmVB zDmp>{TnyYwDZCiy?QH{>1Hr310$X4DB9Y%9Ouj!Q9HW1-o||f8JgsU1yNPM)*y{Sa zE=MRScdP}X2Aqw{y1ncieEI7cC3s2U3vAxKX<1kLS&Qoli3l=NR5!reEG+&3elddK z@2N2D__TwiEH(LdP_4Th3N)&WcFlM1aZD>#Fv $e`?8? zu1X@Oz*MKl-N}+1j>8<=m0P}o+_n1ykG?Lvr)X?+x7|1G7r* 1EWtVwVGAX7O8KS w`%7I48b=c>D2bNEq&7}9 VVByw@3+(pL zV`>J$c`GtPO2U|N*5}Hn(thqHgpevrlxvw&VUTAxSDx1~^)HZ!c)EZLVjqh7VatDu zoRv79fb&0ktn5e6Puk|MFN8pQ2uN$*Br9hOx`XMM>mg_MY5?B2$x;D lQ7)}5K9B6!tolWGS5Oou@uN%mZD*W_G; >m%&63-8FW6wN4F6TY(T^MVTc2YL z$Up nNBU-r_c>`EE5K0#~@v*$GVBID7D){$9#?0&SaMzMsVPv~FGL zLha%M3SO(<$?6XQiahT0`})saich!V_HGOz*zh>>kkg$2cl;L+wn3by%QMlo#IK+k zb>SNQ3T9M|g19oBALNCjIv(-#YOjyyv8Jzy!iUgcCb5Qis2b1zD0LiG0}TNg(80LL zWB0w%8c6V*>i1pR6Ya6*4x2z9#Jq3hLn`xrt}hsbS{Tzn3ixeWTHpP*b_$czzoCKM zptsCnVr30-tO{t{-i4$o^~64jZQ1lKS+N&IiQnd9ZTHCErD8u_ L7LaIq%@)tr3F!ZBc2y?;C}Z4eoi=ba9}?+Yx#Hkd_? zoy@>|X}^@{QCkick(#b<_=jRWzS@2&+Ni-^$oY&vU|+VbN>E_k8#Egx{q`0crJC`e z8Bnahm$wOkc_0Fd1AxCSk)@Ui&-D~={*)CYsI7~JySs54jJybZu<(glXW+W{-r=%Y z8QdzgJxyY&o0v(f|NHg @bg|j^s7JhRe5-FM;kvr-5f7! z-;+K&vZa?QvbW=P+A-*_>W)~sfPD5Bx%X>Q;mn`ytHBWV#lD9^@aSLr*2!O-61*i_ z(&PVPn?8TW1&OhFyr0ma@h_ptgQPpyH^OD=ccRw6qOoLtRC(L8T$G^%>E3-%rW)Fw z{=@mkAVrZmh;ssCu3NF35-Q%2a$#(6zFV}Q_b(37S8(g->Y5C_V{->22C^xHoKBf| zeT;)9KMX#CJ<@=WdAU}d4>y>*S>}$`PYu24)u7~Zm6OkbkLIp^wVcB+>rhaQNVkkb z#!4T?*h{23GuhU&Z>~2CC8Xl>6kOdTRVevtP{IczJo4uFL2(VPA5*z5KdYv%7{p(q z9uH)gHMay$SMe}%VhfiVURN7g#aW+>b)0+76a$BKrmdN!7Ws=!WxbRKKBDLM(=T{Z zAE}Zwe)%UL;4 NskzuP)rir@RpbN)B61I)(2p9BDwI1HYx(s*kRYjxh|+k(?5-qQK7|aR~MU zyf{{i_F!yozb_U?Sc1l=>7RlldPIgw-C^^l0-yQi<(UH@xf9i}!Jvy6tv}q+ZTS`h zhZIZ%Ld)y9#}8}wsGUKD!fyohozYogPo$+dTuflC@>joakNuVHS+AT?v1sZWI0q0E zO^`WMMV`71!_7x^i!2g+hg;ZXI`|9>4B)beboJqm+NkAgJ#w?z+AL^9Lb>29vYr4L zr!O;23tB)Vm3nplmuOK43FU%?^5JY55xgO!;Xy-VTQDOE%D8!dL7A0}Z5~d Kp*+iQYT7qWwUf2G{dxTXDC6Z^85p?B{R7N^ga87m7xLIIF{=%#_rj{A3zA)b$ z8Grg6Zxs7ZfBHkEx)PW@0c+ExaW- Kqqq*J@uO0TK zP>HznZhHOuvoHC?wd%2c#mEh1Hd36!%}9cRI7P59fWeWGN0<`h w=7n&?ZmHE=`Ujb2Hc$j!%O$z?}zuE34$n(2hy3sP3olsgSBuU z`TD|7RQ#>#fVg)zGGe&)5?*U#DR+_5RV&eFcN&8STLRF4WM_MYOtC4xUhILBYW}3c zQs=nTmn5Qpv9;B4 lAzFXW$@OF9L?s$IRC!QLhhHnf${4p*m7B9O`8j?@T72+%{R8;jDJo~c{4bZEdS1A9 z$y9o!<(pHO*B^A4iM6-g(&XG-Tz}6IH-Q~KR{&?|2Ljs4#d6?tB=UOjTmH<_;=-}N zfpT8_MBfhbRw6kEX}CL{oqw{YDSyGm;6d4ox%zPE2F(u7PlCLDznyQ*(%@nu{hx`s zPNnhB(_f{b)Jc?*0%M55TX}(ApxBR)Vr=>Kp4LXvV)F3zoVTER}Vk4^K5<{@4CZ z+eV&EL_SQc?J<;o4n9}JiMi){b>v&Q2~jDaGkY3?-|wHdMMusMwi>rleHb`#G8``u zwlkz>%5M&IMP^a+nWDqA&++Wgezx7#kd+h%Qg|_N5hH+(RE$@erXT`<^IODZ1?;Vc z5TfvGIPAQa$s^+jA`sbw?6N_0d=`moHd{TNk<@`;s6j{)pxQ`6qS9Ty4HV<#mlYT` zrY|&XooqL8Gq7>lhfwtY<|n_iOE9@TKk&C5=btl!0DnMvZ)a!dzAy*5cv6{nlUT_V zTgdm;*1&!5nuS^#TJH*Df_*O`HlSFkS`P?PeI6|6fm8=r6X3N)cHCH2CUAp|YyYUb zGhP83ypY) s* zf+&k56MFBg`ubGT^~7vViNA-3D-Q=}1{KISB}mF2zDET+#08gq^E~0-S!?_3vOD%B zL4=)&n^4%svJdUv6Lh;^vrP8SQf~NiT<;zGU$aR&G83z%GU@j{i%T%GbQZMeOX<{6 zF0ZZ*O{qIm3YY(l=g}dkrfJtePTRBj56;HM%S!|hCMD+fqH^M!g+Zi4)~% TimMgagOQCDm}A1=P6q@=Ea9_h!9d@vCMqy<3Call7iQ&ZdWt2O6IENXQiwV8!} z^&r-)^N*_`b0 kr)S~Q&XC@^!nYNNTq ztH$?;8-|_eV##4><+cIr%mD=8!hml{YUr{pmIWIhm$|KBEjwJEce$mo9$JGGxz&~q z;egdW|LfD1y6^| Q-BW-x*{a*t?w*12Gj1 z%o&9+43y36=m71t#i=1bff6(WwYM2DK7gzMVKwgPg{5UE9OzCv`eX$8cypH%$c!`Q zNndO85Q((AoZQjI2o}-qFKJMGlkba}!N(OjkpmVosPu5Y7Q%?I`4R71b%|0EspN8a zkuAV9f#f)&86G{UdkqgNLXCjkc~1u{E$Ebw9!sL&cbEw4UCbmqCMGDMb$6&F!Yf6L zY0aQYphiXXU~q*F#2OgSm3T<}7?9W1r3UeHYikQYwdhEALQISW!ZWZ6>vKigNly#p z9^hSV0Yw1-smQK?gN-qz-F~C!ehE5yWk)>c!TS|fywCZxxZ)S?QMj 4G{p&H>Xv8(GRG5N7q2LJEi-SX)6uBW#w`L>s|yX1Kky@ zv}l>1ZYGvC+Y(AFz5oI6Q%MQM1FHVRpTB7ZIxwF#JyQq~B #d8&3)i^2s!kQ;=s?R&loHPksjTY{|F&f9{7% zT%OZ{_7U(GMv(bs0Vk#%hrSw%hk?O)YbNPvQ|a;hf%EHVR&P3--^!X6PghDJ?g_iO z=r5NSLvpICKOWY(TAvj`;RF)m!i8RWrW`9NUw<}-^d R6Bri~rbM=;SI#$^q{ zRjbK JIdzJp(4$>4 z^jf3Y*?NOB ZPk=b7xONPGv4S-0-PpMa{)}^DF;0r<=gu zU1c}v7p(MQFq(P_ei1M_+qh9-8A1!HAp}Blpqp0sxL(Lbj;jm_Hh8lFQg9wnj>Tj0 zNEDQmAcNXPd?|3%fLd2y*=r!s(F~h)(qTy^ukrUD@pw;ZaI5%UU3xY(Lem63)K;Lv zSQ)Y%1Y29w%b8f?4&tb7q<|0#c3H;`hHL*cQ}4N|hZbUYYWI#qtL*qqsP)j?R1t%| z3XStUc12msGe6TXg X5h5;!hH*sGYTW!nQf@q^9U$rHeuhi1aH{Y}@k)OBl z&D*oj$j#Vsz(}dQW`X^FotP%V$+DmL!> jq5|m}>9OdqeGuhEap7 zr>~#mG*MEc=y}-ae)$028|y_b<%j9Osbh@l*ms?8x-@^A*xC`WA_`c;`o ?IWF?Wl4wh0!DSMFw4&*o*rKAY zJ9iY? uDb`6T>_gu-x8f8a;VKMYypp1~$Zcvz{|*Qc9Y zI2gdYzBQ6GLk@MI**QU4Vrdz!+OUS^*QOid_6EATN!n_+D^-d<7mdnAe|>I+wJxI} z8yp;o78iJS#3FVZ56~}&incA}y!{e}10D~(Zj<98Q;9D{s&kF0rDDD-_|Z2-b1&?E z&HUoqEv^>9sI@LAAfL||6dwkB0*-I>i=Pyr{L8}d_rqwd!#dtch4azgZ*NtJD6+_% ze`{L{%p$K9AweKYp*BJ|Tk9A&NJv3WZv6N3pS#z-X+%!646`IC@{+4&a#WDymWIrt z=h2Re*vM*4=9pc zUDRezHt5_$kJAV;J3d?jucTnYX zTl%*&%XQFUXq#G+#zSe&sKHg2F3~DkP098scRb1Q^`=nM@HsoSnBOW1s#{s1!z; ze_g2yONF>$YzbFq+_I68(Z8ELoNc;Ad}Kg)c>9)kron6C_nFY)ZbZ+zbcWF6*jPOO zUp3@f2hC$+G-E-OqXe5qoNDA+`y?9qciy8hu!6w|LGy!`rzf&;$1@{EoHM=~^O1x} zM`YIEU2=GiTa#Em;G;yHw-iV+Svxw(*h$}FaC!&b{rKdmIa}9VqgUIjmbR8y1zO$I z!U 3K`JrP)qD2Gk!s@v{@aAiJH(gAW7TYRVAWE1{ I_x64ppA^mkT&*9S3<8bOGaV;b zn13iP>%81E-E^qfOnG2#ADbd%GW*j(Sfum(dD>+ZxM{IkWmw^R&PK_up4O4mzUiI* zF#|mymB8x<+v4D0HDREk2|TU>!TC>pg2B&@djQLUA7#cq`w6;@041fQy{WeW9TW`6 zSfEpQy#p=LK$!vf#f1sn%~D+Lanu4-r6i))6m8R`zC+lO?6tg*N=kWc#?tbN>F&<2 zu!(TS&DjbLxkxB0P4Ao-z(5o?LX?Y>bMUg?KN-gr{N5ri=OPvZDe|;r?C3rVMBrI_ znI!1JR^;oO6K(0?;gthEthmLG`FTvQdMJ85{`O%`5DH-eS^&wtBi5?Q&4DzrPz0m} zEYMG@0s?mkJe@Z{y+QWyEuKPt!1x7yydBtMWRNQkc3MI1A$oz4>HUvAh>{?%Bo}cQ z5D@;ME^<;~+u?*;qH2#LRsmT50SPbVX6kX#$i>@Y?Sk%2{`{G8;MUpst6llm{A~%3 z{e|Gzf!s@2E+e$*DV|h#I#{5|VK>*9<_M-F8Q>_1I smrVg)kqM7u=;~BKkUOK@L+jmUXoO8F*j?sCm?^*QLD}%-*$q9ly z29J6Ql;TiAlc8S&^I#0a1Bry4U)P8+IHRMZqnNW7>#oio$w?|eZ=>yfNWJS*pvC3g z%6#DCwyxnW>_B)Uu&Y$uRAox!Y~WE)K%8cUMP=0iL|kiJPxv7XGgg}}B6=SYFV-f% z2{@3jeRH2**udrRC+uHBi&DFWr=}T~1g6WX7c&a(S0G1-<>U Goz6|!)I*fguJ@v|0O=CX)^`_ZA5a-W{ zu#@Wwn;p8JeC}gMe^>wuC00ljT|rbZX?K+Egj&&JA{7-KKFq^sOL u720=T4dAmXdHQWqNjkRWsb`0 zKzKNA&YF!+F`+Qfetc@G|=L&hZyO5;P6GZrU!m>9jE@6LLO}coTt`nNZ(>eoaNM z0nO!}fxO`L(NXz;fI#X2$v_Z%bl>5<-mJ2>4#opzI_#kr1;Do_qGQia&&-ayVgqKJ z)=q_`*b5#oeQlswE#UrD%k;L>%Oa=dQ`qoF^uJcpJnbFXdYw4kEiKtbGL5ZZC#-0b zQB2i62e?9|?<2VwTFV0`UTJf{=GA!q;}Wu)l&E_R3sw;E;`Gl;8vds=MW{TOSO6Wu z!eA~>i4xg&Tiis(Z`Og{1v5;9)B~;!GVrtpxd5C-PyK^NfuO>W|J~%E9~#w-CZt_d zEz`4+jwYu&iKDX?a|{9{|K|lTx*Om=t;q3?KZKUwK-SCb+i&Nk*i{=v^`|tw_F>j7 zt49Z)2lG`K+SYU!-WL?2g8NQNpvdF#`QTyJJToB(g;Q5|FKe&V4GnifP?6uN6QPK9 z<|g3!cQJiPQ;6Z?V{C3N>-ZC8!#+}fM_pA`7USk@ld8^mm7y5wp6no`!C4>rBF #51$d;6A6slXz4XC(g>jMv`p<+(#1T?{^LJG!W8xkhxTLV3$+{{H2fv zl#Q8f@Yt26{Hhn_l&?zm!DV+!b5OkGzXrwQIzW%sr(tx-&cj1?e0owQrvNRD8g2%p z|JAtS*JcYT7dMSq+0+f#f-Ya=YTWubkRCPXdzr+q?elM#4MMcU*@w!=Aho68eX$`+ zr*@$h7bM~5ftfx%FbXq~3*B_#_37b`-{*(r>V;$OpGh*moTt;fi)4NpvjMjh{j#~a z)vv0%g*DuK;_3X>?@Dd;W=8VKo1;I*u$F$70*gsH8~eh3j=Vy_#V=UW%2=t%aj-Rl z1y^Tk=U`raQRJU9GP)*d8?VB`!dSS6tnb`2Z+yFJ&99`?fAk3o?z0t@mh#LGccX-o z)F_jbKiXsch~-HzHJcx)zc1>tZhG*SS9%#)atPf4LYe6ng-;4r%FKf{%`PzYA18sf zUpXYtSVv~i{jbb9b#W?F1 Kr7QA~(>M}-{?5wc&$@ >E7qj@XF87Qe_Uxiv;IxhJ0~1BX1AG*;GX5F)e)AqLkGR{JnE9Bl zJ-XVv{>sTI>r)A)8ky4QM?*1mbj)m(I@d~pxD!a}?nknIaJZHEi9ijH5zc?|RU9UK z8h&)>&D{@vUo-JAk-UaXdtnZIFze>?PI=W&LsgyUV|S6qU+jKqD4HiLoH$U%ONo5b zw(oJiDh7wCq(CHK(D%2*@#&es3nkYI$iI%t>03cR6p(i3V3|G2J;)&l4}}yk5D*A5 z_a1l%We0|+sX5HK!H@98>IZ4VS=az6S!}7mIy~LDq~==M+6$(3cT9A7RV_ih^_O{f zmH~!w=)6sR=ymNNk&4U#gH+SHxn@|J`oZ)!+b>WHTMvvkdXpyWO|CCb* _p;hy=6jlcb)|0%jWD6c2gm)6E%tjJ(}G%?Gkj3{JfC^eQI!2)kb2CIn_n{)nHY}zYqxyoQ*4@*iZfJOSEvui3 zw@(qn1{V`B9{=2hEP}qT7#VY~CGNv+HDp_TCimCF=Kk^Vs`UO|_m_Pig+HL$XJ^x$ zXod2F6EHMsv$eQjGg9xSPZHk);2a0U#1N(S5moIS9JE2qAKd7mF9$)$W;R;27G5s_ zQ3==*$N1oZ!Jc^EpxFz=JNM8Tj~!&&S+tJO2M- #rb zH =T9& zQF(18`!_}(_#WcFN;}3zSuv2J5fLVAi@bXauF>Y!k@ppS*_Dni#CI{OZGy8{ iTDrZ~N+JrETaq-Fs;(49=+BT`~#Jj`1kZ zjp1V2{F=(#8l6p6GE$muE>@ $>lJM_<)*ir5iPW2{G=J0`mneNf6pf3hSPlGSK4vkChOC9GS)Jlko8H1O< za#PrTItUaKW7xC-LmHQS6Lj0nw_w-=r0#pi3)prZ44jeiMd~Cz%_|u8A?QzJJ3D}f zu!&wFR8L4altEfHCjw9oSYARJE?eRMQP{~2LF!;^F)5J*cf{@4)2G2A8uA0Zg^zhC z3bhH~RDujZNoWNhH_ZgQP|fsnpLw&tmJuaRD~EG}$fiexe+6lZhAmA#93bWV5Z!cu zKHhWN4W>Vl{aoNH;eW%7ANK#np20Mxt&J7-$!XCbcJ3Vr5CwfAgMq!f&~SjOjUuie zjqPi3jD=B39@MBeyMe3%!6kk$&7a=WQ`TU?3Il*Lj@Nro-E+MI!X6Wx9)TU#W8d61 z2 #vqoKN!HQRHCdVYR(Wxz$?;^= {=XmsdIcNrP}%l^o!3+!- Cd;-J>0+~-VUSlZ4zt%y2*rR0>4}c^gb+70WkJJjJZx>9 zEa4wT>}=K!9a2+MbvX25S=>=p8AN#+x8$PfdpwJvjqPUTC{XU`xlzoNZM_ImzsLO) z>nezs?2&RZ56ZN@#Q6;4s62*`B$;5eK#ps8jl_M xNbxPz7n57`Loug-5)YG~w8jv$!4Db}B2 z1YkXa&e7#zMm)8^zaB7sBTbz*SgC{Pl(Dd|{+Gi&Zu_xF{N*iMhxN(RhC7o6{IEt` zBgWEHj?-@L*HaCn;-qI};%MY3K=0JY4zwM^ZS!P;L9|d@8YWIZtkta}+U=ZZO+PXX zf&&^^#~isi0eMoLHV`oPffYGi0#8wEy~khl?E!qTmBx?M0w2MBg~7xn$xwJqn3WZ0 z?x>o<{P3>IS#?6STh3i8Tig-vG&8}UbzYw35nL`fFUBGc|0;#O$(anGeFs+;#6bKG zsh(F$0_$aVSDs-*v?9X*1zY8?m-r~OU_B_*P~-N{>GQfS$aMdyj3bBZv0x~Xg#|zS zqkA`pMZlMa>T03c6e63i$*$u*AeuT`o7$`BC+4%j2tM?1H~-G6KK9+)w{z&4py&>e zjfM07hPr9N2}Kjcg28#BS#q^ R-I;_rpn6yL1LO7>rd;ct)P*#E4~za#9D;P+gknPIS$-l`Y6lWk=? z@mSsOS0zqNu@ G^2m^_k#QzYoW8JeVBW6>gi$}{8rg1jKc{oUNW zkJ*W=Tsu>B)sp=LnGyQOq6$M%>k9aHESlVoxG$IHvwy-sA=1GQ9-U4A^8sEe@@q8g z+ywckA${QU3&F&p&bT=8dI)?)ZUSS^3<|n@#ITTbx(u1>P7t_mecp#(DzdiYu8|bS z+rpgZxPd!%%t=7x$VraFvg&X)KHH%Q%>1tW3kR;vO*+?7)XV(^+1&R<`n1e;vQJRt zj@eA}o|*PNvGnKs# %i-n9uZcXydIR0lg^A9sTz%D`Ye!hw{oOD#7xnrY9!-e!wzcl}TS3 zwu)C?F9Pt7$=>T^je<7B0RvuXunx=U^291|R@8z!Sq;{JAMrWq+Lixk#{)>L$h#d5 zgN$q6M3mC$m5)53r~*jBwp(vIFHQ5Kxrs)6a@^o5&QEU|w *_bCF=Lt%@K55Z9%JP zjK&FiL%P8v&3qJ!r89DVc>_ZFk|*MM{M6^VbirLe-~H(6TmGlVK53-7GlzX+?OnSN zNYmK7YI+hdnE=QIcF(cs 6p~RitB$K?WuhAy(ah9+V7oHg` z2A>0x#Z%a6Xv={oh)xrPf}g+yfF$H%$^@_?w-x$w!vRb44&{q7pbL7RuII-sBf2c~ z7!GF&(ycBt0Lx-| Sn*Sd37$`^;_k$2pR(GTuFanKAeW(Efbq%9{;kk)Pa}UkcQz@skH|?hG?`G21 zK-(I9T_RQLBnnP|$cU^0#=aR2)s39R;b1&O3WQEESB4rL6N~KfiRWdi(2hibmPQcJ zqg JuT{isxs?&pS-&S zg^(*Yfh;l6H60kev_HiDM4}`lH|!kr#v7dt^nz)T8%zU}xWQ6h^cb SYN$;6 zv%@tI_)C2r)cR)d-)fng%W#WhO -fL)akF*T=^l$GdUQ? JjT0}1c463_zVoFq-iG7pwc2KDC>rD)4-#<-CE?F1{$-{T-RAmVdc`MB+5 zj1oX!bFa_t0{A$3R*<3$lG(^c3D};D3=I)lAH0U0wxtc2kSazd7<>A7goMZjdc?vy z>$+$WWQJ?s2W6}+(qms!gT9CI@#E ^GmoYL1!EEb))9+IC z13faDi7((^+iEvhctISekV?)1HsVxfEKm7fHgBg0W9-H#gLfTKNudbf1LLzclN4j$ z)+F%TjJL7g!&%kN0NU~9v(klP**8{Le+rjhvBm~z)CxHD^mHSb7U(1+G2S2NtK#_n zM1skIM>{jkeYO*vBm~LF(Q%YK?sEcN7|NQ_#*Dt)5`F)=IjY8VavR @ dUSZei?WHo+e68- z0HbN7y_$LW@Rk%0xJtIK-r(Yqlv$JQ{Q4$6r3$nG^dl*lF0P+8W7Se0*u~<2f_A(K z5%~G_@S(*{7Josr*@3x?mp;hng~0Qsv4W)}lkDfjS%dz1XN-45tqq5F1P3d_?yY$T zkdN%q IF^9|S0CK#obfHK;h}vbIhmWo+{Zg)3rm)k4yw1sMJpW`csiK~_Ej?$ zRvBJPKp$bzm!VqM_t$a&`;7cedyu#Wyz>Y{;f^`~w752mkYvAuRb>>T{7W11(=$AT ziE26rdrO){YVyvko1w9%1oBfl{E7g<-E1cSBhD*8Zm+YN-cG@%{uvH*qtNB^MzlRi ze-IAl=CQxJ>!CmJ)D{*N_Fx~6K*<%1-blJlqHLfTUfHgm3rS^n(t@da@`-~oNbN)6 zEW0C#vU7kbC^D?m{+aYK2Uez3;%X8g yYxPlZXkC7wNps4p7`xNxZl;Nu*4irHY&z(5s+G^|9DpRlYCa)bEsDd?+yljDNdf zTrpi;U1Sdcg5G%_B^gptS=k20(k#b@LU;|}&lLHG9XJ7*4Ou|~+~t&Rms4v#)jtsa zkEEvX%g5RoV;h82Z10*GjWn1wN7F^_dmr<@xOHE_{tiO@hD9*QUYLrT2d}m50fvWQ z&A 9Dq(H!+r1RaKREc)AHF!h&)GZ2ycZd+E0M zR?#Ef`O5~cV~b_QwqK1=1*Huk7Bo*hj}HH8>U@CJ-hFevrF=MfK#=T&jY`kJWR#nW z?nHUVFF%6y1gN0Fcvf6SnlPE1JZ~ieLZe*QU=~+r;cMoaKjFEscWi6A>^h5FOo_%6 z>iCL-9oz?TMrno0%edE#qG+t2Qg<4}vAs(A8_*7aw#cx7hO$3Rx;IY=AXzNjqXCK~ zM=stO&$cKllm6tCJH^K0_Q2-g>!8P`o$>`aePz84w53O_E#%|30pK+Yh$i@- {hXz;<~S0aF?8y+F}0**fnN)? zoBL;PYUZnk$}kta%f&(Uaj}ik-FL=z1G^#MX>S~^;<)W<-xq@1-k|y$^tg?)q!1$` zJ+|B0zFW&NUe>p&&iAfExP#BN1>M8zwNZLKb8yv !WYJyEpyvAA3)0lU%#J5+9ms#~2@LJo=>Z@bNR|SmT!5$9m7UpwiMx?8j9z`lmu~ zJ{S7};#+g2O*YC_eFHtMCG=u@7pMP_xUWV13H!!)aiR0Ch|Vf0X=F&4&7Vx}QQ0 za_Z_N9SwgXh8OLG9cDhgy3F&ht9#(lrv^5T{jqn8T+bfecRCe}mX|SZS^A+kAnUR= zsh)K@0yE&sCv6Z!Y@dEw2z%nggaJRO|20AzM4~_4>eGk14I2O1&k~6{)Vgkeb{$Uu zh$E3(oN}wy&(RI^I4D1q(?p*xd#^S&HrlL8GkcDwJ@6o< n$x(QKbz0O^B3aq-Wp)TZk9*lCVF3G`|lw2@8w#_Ui_~gVB&t zBT*K!&`_;==J((r2Y`y{0bf)zl2RHwcPEuH2DTWxmkI)GQBYE9#p9{}j!sSwwVuiT z0_@wxi6^`xPV{1?<{Io8kbzC8LqjA$Q-uAsk_HBJ$l9N)^VLU4N)1>tk-*$UHmM!M ztTzg&i-0`{D;Qhg971+F =_)_uPA7>|!1uU?`(S1Ic@;G(GNrnCW{8E|O z(+@WQbb26GS`ia7Jn+)YfXxTe4#5RdHm#2nmzq|{Ck|yQ&U2%pM_y^Iz|~1zVbR>E z_m!Ioo$#iJp9}0hYn&dvz5y2K`PDSBGS@M#rR8Ol)7~W9<)88Uc9UxB@h6YN!*v== zF|zy9G(YJi!j#5LKHB&sKVu>0;%ul<8ml*1Sathx;|7PHfBy2)$jI;>^e@2Z>x{D= z8GWLz-Vg(2Ig$uj8D_IHXu9chelaB7ejs-PzJ<*Fi&!{%;6y;F#uNkLPH+2k#d&f1 zUf%yB>pI}EY}@yfN)m-AX^0BZvMM8q5J|QoWR#T|8Cex&R#s({kiBP-(LyxID4U4L zjBNhLRqy+L-~avme&6@`#Pi(GeP7pko#$~L=W(d5>gnwXA3V_E8z;xIAyX1|)GdNk*8{Sy(wYEQZj zfp2A@mHr~^9_x0l?Hw)Qf>SO%3KyD-H-O4^PvRmM#xH@tX6)0wHmJ}2{FdC&t#chm z6r)5nzSlX_C$ JY})Xg}CiQtjK_bd=@_$|B9vn(FFa+zNX%g|DN+4%7HDW_OXk ze|Fq=E$#X*Tl{_YC7m?-=)kU(4Mv|)|Mr#=e;t;Ur$v7(P4$STq3Ps_aQmAJK%1h< zcr-+M#cG}t3_EKKMRTfMCWg{)k5I%<6rFnPA`F`9>7JiTSXp|8obJuJE20;B5Bn54 zF>*-XFvR{h|8PrvaZ_f}M S1H&!on$|MfbEbrJKOyy*JUI zqrg|I-nOQ#*jAe3v}}0w>~kocHTEkge~1HOrr%>bh>8NiBfsIp6Xnzo*I_gK_+Vlz zT~K;@dXs?AQI8d1rmB5uC|12wl>J?`^eNP%iPBr@rTcJ8q}wc7m$ags9qwu$BxdO- zbzBcAo@Hf+7nB8W*rOmJ2m3DVyw|3qOHL+!A~ru1Q>8kNp1JvXTj}z-+-IM7e 6%mW&1B*&o BsMMEaGc*k|=GkWdmxci{ypt1TnID3_2d`&~i zAu$u$g1;49pSk%+Xr`UI0#%QPATs1%^5a%}V*j0qnx4%oAb^exAcEsQHfUWF>wP*= zcl!jn{=B9uoz)oEKOgLN0_4C+;iFF48-6~sF4GVhp%pKYa)UfItB_Mx_0sx&F!AH$ zKPAwfOAAz4BJ;&tvz&KNY06GyzGHmc`64T~g;d?1Yc$Gu<7;+~?SR?U!d2@!5I
~>I|rMtTo^ItA#;){e@1N8h;c0I-UxiI0exPmhBbF%U*3kxk@nVf2HNVeOX zb&B_d FzsW&~qRP@ra#hdWK;r--L zx9r@o*~PLCYV3#aL{l2Rx#>WXO3q`4q3NuI$M^^bB2Vo2BgFcZtLH~oP_N#Sw!f WF%O09|R}gSUtBO_C87?@CFtb z=DnIyjx{_zJ$O&@#{2ui6)uZyhnzL!rsqX3)j5^rsCK~2W*ChbUk`d+22M9 zu2_BZrbZLraI+T!#s~No_>Hbtn#)k*VT~2S4p*ji{oDY6!SvBXXziy_md>1^r`s zLW^$0e#O+CMtNa#9ZN1*wr7laeS3hU>`k2P^Z2H`%}uJmS`(paC=mYkg6}w(ORuLb z79ToH9M~M $Hym)B$}6x z>i$6&G8^0AGV@AQQ}f r|&|W(r>qPM+j* $#4~1hU+P ztkEhc0y*(itvhf7reo`YkB^Lvy-199PqCfHuuRGcN%W{c7dh~?xzAe0l_y#C(_B2c zJW>Aa*{u@O-D~p)ysls8+_zlA0(83Cue^=BK_c=pS$#Y6&V^kBOVf7WG?&2xSn1 zzWuZDc>|HMhJ2FnMfFGNxLVh_(Mt11{`%5{uI{~)!sErFj^F5h&CTUj^Ywp_k?lHT zy!|TmYIU)AU*7v}t|?Jd*;!eV+qNklsf|(NZb`di+K&IdHY F`{lefN`=Lstf5+?{&rwNy?@=Y(RA24^4ULs;(I zpxf-Xu#}poL?30tT>pg2>eVDyg7Rn9T-zZ~(VjnbzWBK@^#-^wEyopKC9mba4Qn*K zd_c5Nl_|@nfI RG23d-pZ_3eJ;nvw36HC6IvJrp @ u#949q^ zlI-k-FdXVKJKfn6w9TSt`TM)Eu~` ~b SF=-fSlXN_!RwmHcFxdtc8$>cnJr#fgZm8LCY3z>T5wO>JUg@;2&_j%9fX za^C4l)sF8*y_T>1oua~AJyM-Kl%VsRUdmmco%3QK*Tkst*WeS|LG7>tjGaVj37pVJ zC5VTlXe3 )j(uDbx{lN9rp!HzD7su5xbX3O6{hu(cU5f0vUBYby zV!`=#hmT33U7GDWZ3l!`%j~kLDGz#0OCPgEwJER9|D}-+4-oGk-Lw$WPn+NtKX#xg zRKIS=&aUCEnm9S$<}G|Xcbo6(50+1XNjniP%1T$|$`k;ciY|4@$10k`1%!wa4MzeB zv0e_ms6R6^^P;kH1%FtzpN1B4P)t7%k$UsQ3m+S*Lb!XlIWdsvy+`|Ppn{)l0P7Oi z)8-F*W88sE?;}*1nt8qbhF+N=3{)tda8POVOU_V~|8&c<|6GDaE+mK9@LT2{#_)PI zM399s^}{bGFYMJX-GupJFVMG&90r8$WG#Qd)g*-C=t0ZFx5&--t=q)o=AE8s4$7%u zC$V+L-_;YSW=*Iq^YF;CY}T}7I)MiU*HPj(2raq#4u14ZdRRgsEq?>8Le`eV?D~r2 zB+o?KcW}QgZFkm7X!pH!s}iPR-BsKO=dc8P5FW>=3-c19AYjfXtMS8v*hpGw-(lC{ z28&CN{$qPPyQRf<-y@uAK)SY2UArcnk@!xdvD*H71O0N3`=*o!51y%M?v~OjadiuV z$s)87 X1$4!JzEm>eRfXoha#Rh q@dEaJo{OII^Lp4ZQ z?x!A{TCr>^hlHMljF-;*417T(_ij#5-8fmzH)Z>Yi@Cd3nm3FvDIqS9)$}R`T^^Fi z&O} 3%OxXJMH787<8D8o43F`O zH+-DV`!D#oU%8@?*q@U2;M&rwyc*{FFWCi# J_l)FU&^N1sOh;3FDtU63F0^XL z$KJRWx6NgIC{SWyftPP*9rdM4m$co=Y9{6r6a=lU<3G9Zd`<6N?y39KQ4WLw06wsz zT87EcXRLyY-!hMN+W`{4ziu|x&n@=ceNkTa%&u6@y6l{*Az>_0d1)^a_Dl=$9ApLC z&%De6cCIgKYnkrcxigZLUqAg*i8JU~Lxbj5m$rA2U*|t6M~T`}HD;W7{xXz#dNdwq z%`+T5CnEOCAk`K6`Kw_kb;tJt370A52d}k&rH=QtZalJdg?YdSFzl-(D&N0XO0}%j zB++Y=I4dK(>i}k I8OK6;lA!}FTK*zzE7F@fgT4q zTR}Ek1p=FllhYF^ `!+F~4$tb| z;;vulX+?-B2I3G1ETRWBQ}xT;l9Cdqv2I^I+k{7tk^(U^s4F_**!g04;0JaJ(Nx5+ zRJ_((7I+SF;uV)u3{bEkYs)KYhh9j&U$$O}OBamqsLP$8ecL%Sv}gDyrffcbUw~nS z>IQuqo2(<*8huUqsnz^2(lD`EgdvhSdoKh?Oj{cvij?m%1ZS>t5D4h~X3^4p(blHd zW`a+qH2F9yOL;>(YHe%f3sN-v&}a&qUjuG;rUYVEy+j5aM}!X!MdTS(u7&`laH$@# z63wkBgk>2tqn1&K^T{W-ySsG~Y-f??8ipP`ClC%6s=6p~22RzA1}mEP>q38OW&o4p zxpue7` Zr)r60_>Osgd(gSrSHo?ifiF2PFP%DZQY=2IW`LQru0v4 ziHhN|b~?xs>24DF2Xl5(9GA@O-o2Zp6;7(PjW|%~Zaz+c!RW^Mi^(s*)2WmA1_ge> zg9`}aDL)pGan~eg4wo(J4Y<7v7c`;sdpc8k9=ssx3Av-+H1zbWh8VmUq_*$a?(?Rm zh7*A+b%OnnE6*M|IsfLzR^bN)I54O!GuQgGt0|1HtIK=U@Be^>LVgzlcoFtLP%8!9 zjpV~L+EENi*33YTfT^&s(51aBElm+q;QmPR(i`^f+Qt0E{AMLUDPME|5t}XR1|KDs zC7ZvQ6<-+AwG|Q7-frf6;m{6|(`RslY#&=k?$2UVJ#`9vM5lIe*ucc+K!v8bDct>m zxO419*J)>GPC>!khGH&_ojdoeLsh9=9)2ex#jZ?4Q S*fcit z^ls>O^1+_k+G?jq&rD@w4-gpJpzHMm`jZdD83F8aa*OHUz2YV!@80FcM>2mm@F)ji zAjqJ5*o!6l#Od(xSoJp_68lxz4}WtXvEIeOaRdnt&!LL#LC0R9IC#4`R`pw|b-a|b zvk1Hc(sSm)S&_`uKG@5%K{k@_N3?h92;a8?HJSQNekn ;J6Fwoe@0pBifm)!ZQg!f+6{3{w-Y3U zO0;+*g)Qz>*CvD=g3B~E&nq}XBsYG|gUte3(OVZY)4ncQN`2PTZ>+pJ^zPl%&5f)d z?iW>R+^x(LIPs+ey<)ampPM%;pcOXG*8Z7G@t!9!lKkodSKw!03+XRq+&P238^2|f z5Df A zQ{N-3)WH76b-YH7_F|Jc(cp%+oaBuD4mmeh*L|gT-tW+L)6+dS-kR7qfEE;SC!h1s zWfya3R&SPQ 0VSD~o$m~nc7 sLN$biZnJPtJBW9OhAM=_G1282UsTxDLsz6iFWH5U0n^$Wl7+;Yo1%as>5u@ zMl^qjCaQzj_wV&@^LyNeS~0jXJN3}_PG!TPjr)(9Y|eO=F^CA+8T)b;W(v>B%Vkol zX}*EWnS9X|LTfgcE@cR3%4?*hrDJF=MI(wu?FWyMfx!}P6BD8>BKsz}_Vu{=n}JN* z5H9iozG*AftCk&EYX57r=HTY)pX407i9E)}UdTMm3`H15AnGC-< U)ToN{kml2N+evUgxEkMt3b4g`Ax}b|xi89sb0GL+x`DOzE!ba~w#q>cIZvXB zKvtN@j6t RM+uI)}`)mP%~q(yj6=Mp1bU<5v>j zTz>xL%jtomS5V3o|9me-NRseXPp$X85Bm|AT+xwttUPCC=8J}~+2(DOz+o99@r-_@ z(C@QNNtrQce!=Xkt^kt6)I`e}As9P?nRvkBrkJ0xhIF3O&vyqbgr3_HcNW+l!}acC z&bi|t_Dc7%tK)nJgYsIF1KKMb(bR7l+C3IaUI;+i0FECD!|Xc!zYaIKvVRPN_%cB} z(i?CTlmi?ghKI!QRoksX@98D_wOoq7-CH6f`SeT8>r=F+jW&3?rmT0!oBknq2m0}b zpulVBZ7fnMi?ixakC;01$%Orko?gcIQ(~S X~J8 z$ZV%Yx2Y1xa@dfCQ|xV@KVN;r-&-BqWmd6N*+HH}-G#2b#a@ih+z@{1H1zZuUrK=+ zr+ *2@|cQL9ASYf}bA#>W3qzKf+t;g (yHnICf9X=e`}v)5LyzE&@jxD= zkR9@J8_5(Gu~S~ltz??N016yGOw9o~8^LzB?{oGx08U<@gOjm(Gcz;dXMoc?luP3s z94(2n@=n=v8l1eTt~tl_`?oX#@GhAd9~-+0|G*DlPPZaMB6ex dGqS#3 zW7?#@q{zdhrV;rMzwztaykCLGtsHcSdZXRC-z>x?&NtyhK0bNiO1Jv^hds8y6hXPE z0MQx#3e %2%*MU@Jpx+r`AhFgraEHJ7s2 zA^K2}dxMrq{|60B3hr0Yi2hKIq^JvGcIIVeTAJCJWCp{BaT~Ezz5h!Xa-ujFJm1?g zp<*UqHM!(1P-*-lB2 z5=$gZJ}kM106>1E6;RZo{n% CZpeze!rs0_O|=b6Rr{{_Y6 zpgVUodn7=lTn8oL^^{k9nZ<^E3E^+CoAX`TEH7Mm1xGq=tcAcWFTvdHzQsbR$ dj9!cL=&3X86`}XFuyY?23T&);9Rb-!B_4RYHb8eDW=7Z-(=%#jdcR#Yz z!MRI+a{`tnTC+~x-rnC^5)+1vuD77WDFXt5Oyqt`*l0zwid{-`TAZIO&(M8()XpyF z`K=oaCwmzSfTe%=DgocV{N^d7G#l$Y%*|7p77ztewaUQ7X=!Bmvp^VwRFcK+5}U|K zv0`5H6I9hOE76cJ#j51w;CSA`5$yXYK7J+GS%E7~$Ezm8iaw+8rG~}xtIN$F$KX?m zPKwy~DW{(lBBQ1dhdf0{*j?}!WJb}Po}&ckNEt)JSd0p+RZUhmiUu)vtZbu@=~kw- zYlSN|u3yiMh^2TbtF^LH4i)#n&+*sguU_2~3VM#}=S-QqZsuq3Z{xB(+-5TfA3J{@ z@w~lb?K3FSsENtK=X<>W0HBsm2g|pSH*VZ$^Id{-Jfo@f@~
j|GVg%{TCfDr9o#Q$)p80Vz2>bZ?(U@o;_piY(GiLM zr-x36(aEDCpHcf9F-p3KTCx+nCdbVOX7Va}VhPOb?3uRuRO0h3p#BQZOo7H@h@3JO zya(ROhKbn+2_J+hU2ue^F4vteIWu1X@b3PsxNVnLm7agU6>cbc2$DbA%i14S9*vx` zZg~>pxX7~dV~Q0qS~)Um-CCq!xu~b7C&d-=z1|Tz+VYdacmiDr$JCaG|5^f!hr}QZ zs;*ZITKQiU!I|`9k~{hM)Gm)fAyk6j(Z`q*12wVwW$xPS7wBndh==UA)jG*YZ1OdB z@LC<78@Z-5U-9Y{4chqE)~Lg`@g&FvuV*dmQ^Fc1^9u^rp&HVz+{Dhlx45Jv&^@aJ z83} L(oA6aD%$9D4944V=HlepoNF z6uxw^8mih8k&v>-5~;ZyX^tfl%qs4brPSOA I15p-)@}(Q@2^nslEb4iF}Oj)e3gktqY^KJbW;FZLY{!$9?)_ 4q_Q-j!& zoQDr3Q|D`tbNs$}h%CQahAjR{oP1tSNnpMrtTF(8qXxl0*UTibtmMH?SDQWyXjux? za=6%0fgCh5vT@D^a=#62Z7Q(jgNycE?TMl%Hl0_IOvGu9>HsN*?W}rY>TB@*bV}B! zJ}oNpLsMzzc=BK#fhl1PC)Hco4ZdD1&{bKn&k|thT|4Q{>#x$>dm<8O<%A4ThR-$) zIjd|N38f&VPv$82{L#HLcgRWV+7Bm=`x)Jks`{Nzh-Oz-RLGL?F&B-zLihP1)0QXM zH4mNwiy3f>U&Ogurxd6*ecr-?52}%SVfm9kba=-Ond0ehk=oX8QZq|a8dr*(V2Mg; z2ib|ZnA&ftY{6)8nj;nTLEd>~W@gf?T*(L+doB47&ZTwGg?RDurF73cWHR?cq|d5$ zu=@3D2BhV+Pw0{BFk|2#h~#>&P>mi%ob(9@V8-2Cix0P!$@fw94EkXp^=Bzi#bw}% z%0ZRfh5MO0VFdZ2T|`&gJ2^UF$IhMdiB3YTbn<6YSHkm^2~#cW>Dh$#HSLe=|Am+D z&(jq&d0$sFi~`jMtiklzy?geoLt>qw%Ba+uj{Dn%f?QPN9c(d}c5CPD8!*ZkP}c=N zqALtsfTBgz3Fh;K>e|}8#JTa3LVSNVLgIjW;UIu3Vg{}~VGZRtazQ1DMb2%%gh6Tj z{bekQ$YFkK2e{g8EgZBQ=0~U$z|m+Ld$nTqrhSMk%gD`w+?e4r&n2;l&rpzm-?21n z|Ni}GE69-mhq9h%DqT~${hgDK?>NvSe~2LrxCzMdhWX*~`ICbmnVtEjpO{5u0mLa9 zi2RHp?33@ACpJfn%C8|SWD{yVjsWe{d*3mScOrA>*&=teYpml+`x9`ke^trukybCH z+;8>#`EyZj;;MCGe6U$d$f7}U*cQCJqv(DdMec#-!`ZL}$HAr@Gn2!6QF+HsR0*DY z4338n2G{(6Wq7O3U?_GS2&fE5DtV84m=&St=Yx)dkEbUE$;9e(_A;CT{5YNOx390a zh8to{a*ooOGf`yqkQLL~s+-A=N{O8EM{yp=*x1;Fr7-t?h+dETM51sk`oXj-mo&9S z2$^xt&CR_+4xHbV0SjnTH>n!P>pe8z^X=Evs1d*8(3z6x! jpG)IEeJUIPu3Yo)pB zu6s`0+ZUtI4qS){jVorLK6SGPt^%;_YbnenXTzzivq!=f5Wl&pS8w9cbLw1vP2w>U zQa*&r#ETB^Q6Z!L2rg?az5aJ3GuJzH>R$C%xjlRKa6L^@ThGMd<+ BP&>~C6H*imdyQWdz0{-vq;NV!>l2vdchb8@U0AckR zjoC(WWDEgITkUBZLiGrk*Kspe&ybBnd-Djoa%aw*5wiBA#(9NnUxL_>G2sSoJHfpO zY-HM$m;9XH)NZ)#5YRD0B;)`FYiHc?9A5#1x{jlBK>R#bCBypli9hGnp%6lkGgQ52 z5t9}lP3M=AnIYm+H@%39kOqoeGoznlyprHppWMjc1eQ=I!pSQX4SA)}P$nRocNsNx zzfc?M8%73(ho9VpoJTsAfTg;Mau9Uuid*c~d8L~-ZGz2e(!>l_=L-PbKBy9Q=6z{u z>dJ4_dkHI|j-er|Jl1#dXaK;{q!RBDfO2`8uyB2c1n#Z>dVN<$45L@R*;_^j?)$c* zDUm3eKzUd~a6+6}4n>*hB9*z%?=yM72{{@Yf?y`=rJ)vIB&P!o`WnQ!d~fO0izGKH zNmo~KDQW3!>vjpq5?HvEVWV}xYxNmk{lfS?x}f{_0}&!3#pp_=W@fqo#IZFNBBiUT zz%eWg%IB`dGTgh@&?nViB*ay$pQQSt<9GLzgEO{-0uv;j-MfXgH#MCqxUgYicyZyR znGR}8c;B55wPiz#3CUj7BH_Xkgd=X8o`Pww3aodI#lt9V2O2XEXfL9?dWPrn@aOz^ zYhxZ96A+*?9cI~Z#{K>hxP=n_E1-BRJQy{A#$RxKTS|4>N*=(Krk@f5Yp;bPAcC7N zgOkQwVqdKG5MU@WcLwO?3Q`do4&3&eD7iQe9%RKvt}n_&)7A*KuSnVVkm4Q8j y8Ljcz+5Eiyo~Lbkits;$@;x#6_MTeQ9KM2WTH_0^mG z02#z0137>5$uHi$dn 7@=_qQFd@k;l&(9C z9v75#Iy*X)Q-jZ$$04ul{`Tz!ZV@O5-&WsPNWeRG4iDe*@>(WjUPl8o?I_j+-Oyt^ zzU9l8zsB$)?)u0`r!=zsE<7Csk}UD>F*(4Qp0&5PcVx>S_^)bo&+qIqcWd!Xe=2eF zen+kD`-MpvfM^XuDjFT$1vtyQ@GOM|!f1aNFhL@Z5)#OvNCwsrL2cmThC05o`|F*s zuuhM~S$4!cA1vhQG3(OlioQ=Kf7d;XLAK<{K+6bekE&^iLi`i=c~PWS7S~@>a&=cP zAlK$SA(3oqG`8~h-^}awba!vvzJ1wat5zz?+vvk(vcV@k6XOr+d(1n43!Yv*26tz+ z4bgv}F+SraMn=~><_Gi@njy1a-OnTZd>4zdp`jr`Y~n4Um{5W3A@XkdpV!}w@g#$f z504NN0?IS&38 Va^q@0}@|9)OxVhIJ48Pn|qpEyqU_u@PH zXd?pi+-&=z=9f~kyaK*0rjF9`n7og=0@R_l043=*z>BKMU(Qqi4q%)D;Y17#dt0U_ z+JL~0z@biejY8-Kj~~k|C^XayNKyEX)qj2;|6LoX$aM|p4ynxZ<^czeOiZNL+%p&d zB&|DvvUA$2iu?B!jXw^B& K-f+GdOEm;HG)SWJB`0p z`I52cz)N*=p=PpE@h=L^goScf&n21bH4hbh-@`ZR z-j2UM61l{793ue;54@IQhy`KE&n%<@cRZxws5}387npKL(Gy<${c>3D7}_qWEg%5I z^|&RNKe~=#^raM-7J9B+%T?#}pBrop%KKG->?s%Y(fW~+Ij@$Iy(|>DO$Y9SLNgT= z74&^QBWS&UKjb7? W}Rb4))A(9M*#{F^}a&OkZL>sjW5mgDZs- zGz>xG;idcNn$suE-#P0|hMDSjH%!PrXWRz$7&w_p}PB3;< zeteex=+q(JT5MnKn{;KR2Xb9?rLwgwEZ!*YBSn|}SxmXwupc9t&BP4eigo`5Rzzx2 zoadR>)1s x zv|xIAx)b4q>(=w`l{{E>*HGrw79d!6Vi;VwXXMYG$*;hq2pM`U8R7$>p|f)dXkY~4 zegA$nur%auQoyo7 !L%%9)xbRg0YU{rf@n4R7P&p}}dUamosU=j05qYWZwzbo@kvpeH0plf>_(ylLtE zbBjE 0fzTFaRl5}I1#b<=WoUpiJ| ^YY-?@*<%64J#h)#C)^mv1x zili2REe*ILg6 v2JG&Q%C1}oB2WRg-QOoCvkht@N#1c=4 zqVAja`u&mn_F}KGf_aNbww!Y8 u001Xu>s@_=s*r4tM&MM*{G<_ePM zgtmau8Zs#Q-(TZr1RDc{xpqqDcr3cdS8-EDDmGgGeYJl-B_E&H%YF W6CZ2C <>iISoupy 2I1WYC zcCV#ivSfA0$^SfrKi`?(2Gbmj?bN(MoYq9~sHQ?do2nX*KWq TUS!yGN^Vy{xXB_II^j_s@1_dg$SDUNnvCp?yjB;5G@0D+tM zLt=4`T@-JL&Wvyc!~gu%3XQ^zXc5q?S|wP`Dl0FEj<$bo4^U$#V0eN2%l>_7-wn{5 zMUtZ2l)&37twqiK5FLX~6j}<+C>V)Ip!AKc|GtHXP%j#`Jh4@1#$vqv;DOZ$EB=t^ zMWKpNXg)Z<`d@DoG@V@Ci7vuR1TVTFeNHci>-MC)JyYzYV&MGq+dIbf>sR<5H9R)? z?+;|W6|(?1i_y 1y5^Ct!PuXXfRPD4o!`8_;) zQXI=%aNAl6)xO&Sc@NkuraA2SU%&eM+t)(Ca#!G=<1I;F^{IXdlQI&2-1yLfK=eL= zwYseM_vbm9fIgHLs!~2naONmTUiIet!#tUA@}j8cvy9wla8>WhKk@9ZPZsn&xq8rP zypIv$I7wR3E;}BgIidgE4$O0)b^|Ol|Gop^ZCEG<=g!6FozPJ7;ldxx0Vz?qyJGor z(g4bo{GSgqj!?$P%9`}&4@9{iiaU)^fTAcglW~ZWtN&hVu@P~+l_Xh3+dy iGRQ zH7W&^NdS7o3bJSZR0@CpDrvz=Yh=h_j2tkdegE;qWuY*O1ynJ>%>18U`tx1AM2g)Z z{2Hz-MonLI$HOGv?5=O$t`o3RXy3noJN#B==3X2!VFlks>2Ecx U2m7L<(F9@kz2rH=pqmG7U@atoXmW@cv7`Wu=^ z#6CpJIXf5D?pG@Nr)2)?PsV@Hu3V{7gtp=)%r1XSS(DDBtQ0MgZeQr{zlvbz^^*Vp z#g86sY64_H=66QVqXCcW$}_E@0ut;rTrz1h-lsyt@wQ~;hX6p|FF?34i%f|M>ZenX z9R2z8ntF=H`hUNi_5k=2h&bfzhgfZLaTw-oQHBG{AzTnLBnZsY{(J3m @D6BXrJQNR zXM;`qA~dXb=&ysWF*1M%-r}-A6k;!GRh>7l)hOH+W~L~qB7FBG-tnx3MXD|3U+b6C zO-4>mYg%8Iik9N! >a6^EBG|L+1yxb*F9IPao`g5(lU z0Q>6Ghxz#4B=OJdCRZ=#Ke(g^#gfmhTa9KUM*qJrqbH8TTd bfnUP4U-r@?bXClHZwIlRQY zQ}3oi?4ODPd!sxqsqLJ#^58n-iF-o?4XD#g48voBLKb+~N6-{ND6DMZV5)aPv7xch zSa3=fU~||a;D5`!dkgRDdalA}jV(?#Q1wg3{w47 ;)>6cK|v@D&UIu;QNtmXy `o!7W$|g2@xtX#qkkcGL$njDJ5w zPy@6rFpt8@uNoT>2GHbjo69OZ_w<}%bj(c~Gd4pX!xl6O;`#+z#61Z&QKhJZS0Hr| zi&o5ezlaAb$`%*IR