From c1e702aafd1a7d640093e8751a92de48e1f7a953 Mon Sep 17 00:00:00 2001 From: urinx <1336006643@qq.com> Date: Sun, 16 Apr 2017 21:55:51 +0800 Subject: [PATCH] i just come out and take a bubble, haha \O^O/ --- .gitignore | 6 +- README.md | 123 ++- genReq.sh | 2 - {screenshot => imgs}/1.png | Bin {screenshot => imgs}/2.png | Bin {screenshot => imgs}/3.png | Bin {screenshot => imgs}/4.png | Bin {screenshot => imgs}/5.png | Bin imgs/8.jpg | Bin 0 -> 25091 bytes {saved/qrcodes => imgs}/groupQrcode.jpg | Bin saved/qrcodes/qrcode.jpg | Bin 41486 -> 0 bytes screenshot/6.png | Bin 219904 -> 0 bytes screenshot/7.png | Bin 11954 -> 0 bytes screenshot/8.jpg | Bin 25101 -> 0 bytes .../requirements.txt | 0 weixin.py => wxbot_demo_py3/weixin.py | 0 wxbot_project_py2.7/README.md | 37 + wxbot_project_py2.7/config/__init__.py | 6 + wxbot_project_py2.7/config/config_manager.py | 105 ++ wxbot_project_py2.7/config/constant.py | 215 ++++ wxbot_project_py2.7/config/log.py | 23 + wxbot_project_py2.7/config/requirements.txt | 5 + wxbot_project_py2.7/config/wechat.conf.bak | 72 ++ wxbot_project_py2.7/db/__init__.py | 5 + wxbot_project_py2.7/db/mysql_db.py | 200 ++++ wxbot_project_py2.7/db/sqlite_db.py | 173 ++++ wxbot_project_py2.7/docker/Dockerfile | 18 + wxbot_project_py2.7/docker/README.md | 49 + wxbot_project_py2.7/server/index.html | 210 ++++ wxbot_project_py2.7/server/upload.html | 7 + .../wechat/__init__.py | 2 + wxbot_project_py2.7/wechat/utils.py | 359 +++++++ wxbot_project_py2.7/wechat/wechat.py | 697 +++++++++++++ wxbot_project_py2.7/wechat/wechat_apis.py | 969 ++++++++++++++++++ wxbot_project_py2.7/weixin_bot.py | 278 +++++ wxbot_project_py2.7/wx_handler/__init__.py | 5 + wxbot_project_py2.7/wx_handler/bot.py | 47 + .../wx_handler/wechat_msg_processor.py | 246 +++++ 38 files changed, 3809 insertions(+), 50 deletions(-) delete mode 100644 genReq.sh rename {screenshot => imgs}/1.png (100%) rename {screenshot => imgs}/2.png (100%) rename {screenshot => imgs}/3.png (100%) rename {screenshot => imgs}/4.png (100%) rename {screenshot => imgs}/5.png (100%) create mode 100644 imgs/8.jpg rename {saved/qrcodes => imgs}/groupQrcode.jpg (100%) delete mode 100644 saved/qrcodes/qrcode.jpg delete mode 100644 screenshot/6.png delete mode 100644 screenshot/7.png delete mode 100644 screenshot/8.jpg rename requirements.txt => wxbot_demo_py3/requirements.txt (100%) rename weixin.py => wxbot_demo_py3/weixin.py (100%) create mode 100644 wxbot_project_py2.7/README.md create mode 100644 wxbot_project_py2.7/config/__init__.py create mode 100644 wxbot_project_py2.7/config/config_manager.py create mode 100644 wxbot_project_py2.7/config/constant.py create mode 100644 wxbot_project_py2.7/config/log.py create mode 100644 wxbot_project_py2.7/config/requirements.txt create mode 100644 wxbot_project_py2.7/config/wechat.conf.bak create mode 100644 wxbot_project_py2.7/db/__init__.py create mode 100644 wxbot_project_py2.7/db/mysql_db.py create mode 100644 wxbot_project_py2.7/db/sqlite_db.py create mode 100644 wxbot_project_py2.7/docker/Dockerfile create mode 100644 wxbot_project_py2.7/docker/README.md create mode 100644 wxbot_project_py2.7/server/index.html create mode 100644 wxbot_project_py2.7/server/upload.html rename __init__.py => wxbot_project_py2.7/wechat/__init__.py (59%) create mode 100644 wxbot_project_py2.7/wechat/utils.py create mode 100644 wxbot_project_py2.7/wechat/wechat.py create mode 100644 wxbot_project_py2.7/wechat/wechat_apis.py create mode 100755 wxbot_project_py2.7/weixin_bot.py create mode 100644 wxbot_project_py2.7/wx_handler/__init__.py create mode 100644 wxbot_project_py2.7/wx_handler/bot.py create mode 100644 wxbot_project_py2.7/wx_handler/wechat_msg_processor.py diff --git a/.gitignore b/.gitignore index 7dea058..0a652e3 100644 --- a/.gitignore +++ b/.gitignore @@ -94,4 +94,8 @@ ENV/ .idea *.pyc -saved/qrcodes/qrcode.jpg \ No newline at end of file +wxbot_demo_py3/saved/ +wxbot_project_py2.7/tmp_data/ +wxbot_project_py2.7/wechat/wechat_js_backup/ +wxbot_project_py2.7/config/wechat.conf +wxbot_project_py2.7/wiki/ diff --git a/README.md b/README.md index c5b7c82..d62c138 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,42 @@ -# WeixinBot [](http://github.com/Urinx/WeixinBot) [](http://github.com/Urinx/WeixinBot/fork)  +# WeixinBot [](http://github.com/Urinx/WeixinBot) [](http://github.com/Urinx/WeixinBot/fork)  网页版微信API,包含终端版微信及微信机器人 -## Demo -为了运行 `weixin.py` 示例脚本,你需要有安装 `qrcode` 包,你可以通过 `pip install qrcode` 来安装。 +## Contents +* [Demo](#Demo) +* [Web Weixin Pipeline](#Web-Weixin-Pipeline) +* [Web Weixin API](#Web-Weixin-API) +* [Discussion Group](#Discussion-Group) +* [Recent Update](#Recent-Update) - +## Demo +为了确保能正常运行示例脚本,请安装所需的第三方包。 + +``` +pip install -r requirements.txt +``` + +注:下面演示的图片与功能可能不是最新的,具体请看源码。 + +
+
-
+
+{r=}!JKU~M0M$Z~kUr#LZ%itPO|Z0^`Jc)ZCl%53C!prv@c zh6Z(%Fy&DHSi}D`neQK&$v@Hu^bdsW{*iJ1zw870GxPty^^EcaH_Gv*{hHQD8LWP{ z!)`E*7?JMxclg|}Fvysh+?)i<#uy>!B8g}(&i>Llanf+P=WeDJsg0rra~VPGy>Bu; zn9SAl&?KaV)Ib&;Ok`@z8tG{-xY)oU>cy!k)OxaF#FbUPT42re6aD>%7_^#pIuUx+ z&yk(47Xrl#eY5AqY20T` VW> C@pa{=8zYmS^RkfQ%g=4FGGv-3e( EWC8WT}lGw*Kh9h>*|qG zZt*=yEy<`MK3P`98kaK~0~LKx!o$kAZ-4?sqU%wY!35XuBmt{|ymMf#^ALQ~K_B8N zN5k}se2EzU>eL7yFNtPRo8)dOXKh{_dBD%K8Oj0aAAG@?Z9)+Epu*^fq5GJJ FdGMuCLuPr}Wd)>chEXVx0R)sYOnbu9!$(HnGv@hhIgxp0-qZ+=$ynm%w zkx-j;?Ow*gX|jU@?pYoC7 RslChl|wpwYCx|%J)OL 2br!*~j^ZZmEa5_hxPFL_u~Gj4&T z$fevJ^sZL|D2}mV+cC^atKkhVUZSnnf>=RaBrgK>HZ-W7c;#@$Dm`>&>Siz*e|9)Z z)jUOhrWJ~p5^K*8%I=Qu@AWUy#6$kYp(s##(~L6&no&~GW;wt2=@Z)XMC)*)Cbz^w zRPCKkWIFf$63H9rFx9X-TCDcL#}>JvL3C?0I=66f-2-BjZr`Y93*26qCQ_dUe4`de zM!iT+BY3aXSLj?B?@4rJQcbW@3@Vnf^kuf$M`EN1yv j%~hp6G1{h*vruQH5&amCWdZ 9EJcur`w_8^%1=-A0Yi-&zqdn{BZu?p z(^^NmC4LnTMwPcsiU(^?-JGKwY=mFD9nQ;&JZDyPAp5>N-D~&TuN*_h2IhV$~#)R!`f4 z!>2}!Vi`Ly<+aMxm#x#(n!n0&kN`P~v>(@45E+uzi1_ZviQgy28gpRXImu0Uu|!ea z?7%2$CPcclhc6e-n>?8R4tMXDyOo1Of8MhOf4BYz<+l}GA)#)8`p-Q~kCcFVT1;k~ zDi4Sx&ivKr)7%Tew%MnnsCMFGZ7yl3B2>tvdp3}NY;RH@<-@k2W4NCERZJsU!9DkZ zFL~y#XmeED<{PT3tM;qjcYJ&$kKQJbB2LX-aJQCq5+xgGl(*jXAIPe55V|@{cWo9T zbHgsk64gtHl*5C^I!9GINHI?zG>+lya#wOKcxoxQC!#RX-^dW7)XG~s`ftY-6ew4I zU0!4^dLc|$Bon=d;?8d%eVhxULqtjn-vX#ec?kIqsw!w@hAxC#dnHQW+dUkA1eknM zW_<_pa&R (n zSxu4Q`~0|Pw?KDG2&^2~E3Itx0<*6k5JE1<6Ry#ka2d ;!UVy$|Y)2TAoTfmIs`sjDwpuk3cXRA6Qf$DW$6<+9mIR+9ba< z0<~?<%j<5@Jp~yWtaq4GNUq2tw$>9Zg*AU#QeB@pH?bWV*$ri+IAltcr3#g;2TeFX zP>c)YyeYYf7R+HPJvu>*T|~ogHerDs%k>Abfi)kh6XO^&YF!!+=$_4<9WY+(GIY#k zKW>ak8snFZ)VqV&LmgZyHG|FcTrc~uS e#h4jHegRB{X7x>LDmyk%wlGCzw+6Zr&%s z9FUG{*#*S2kc;fIu39&<;h)r9OT;0suj(0JZI*6#Y9Y7J9O*Mo 3Btp}C!JqU2}WA8OJUifR1@M&~HC`e$;!#m$}@BL9ED zv(*18LA@rgQ@}T`Pq_?cwvqQj5Pv^Nu|L(A;v7J6Qn@1nAB~b#y2F5m?z||{(?j=Y zVK9%bUEC@J>a+3oD8|M Um;ZARhZ%x$E862?! zw_B%RivS+IaKl?5CF-~W(Mu+MrOYA+ogUdy4!Hx@oPOt5Bf(Pkm{mWmJ!SW@&uC?U z#Lw#V0qBkS8+A;g%>%NH?XK%b!*)=1Bd-r}y`
81tTS;$(?XR7asx O;g}LAqTMRG1F)c!|z$jj0v#|!GcBf$msPUC|cS(r}ghuFp#BU zb1tS}W=e!GpoP6HdV>QPG$7AmAR`N42C$tRVo8cJD?`Ih`b&S!GSl5+iGwv;_`T)Y z_;|bQ{Z8H?&m^+lSMQrQ@3%wmdI)yrZEQE%CqJL(WqSSwgJO+*J=bF<_WR>hmFp)C zDJ%V3PY`&o+XEt=TLqEoxvsB6bI 4G3E>Gl=RCU%1wy4b9Ho^HR-u^mo7vwR zYCzxDh+AMG8+ll;&Ax*|-!j_(5bj*Ny5e2k?S0<(rAWp{{;uxse${rpGfT$43xf%E zrB2zg_~=jWX2VrU7NwqlWv}QbI2ly;&U@V~83jfj=B&BN>Ds3eMr8E^L19Q)fjJ>f zk)qR9Hy>z0uZH>^W9`Do9y80UY)=8)bg^d8eKOS~#eZ5092X^#F0@N;s;Cj04O?H` zk)bWFUZroHo5!xL=-)a>k>+d?kW1ln_uZ`WS3AJn=+M2^I?jt>oih=r;y0Kkq(U?1 zSXK2U*-r0@e(0-h?5aY28haWN{TT{N8qB4iX=mM_s^ae@o4@z@a!G8$&x`Y `=js7gx#>YUGKRz5;C1{S&n4x&ML@6@&*6|QO%#h!m%qEeXNJpOEWWjG*6 zm7wytDIh)=njibqgh(pvZPMn1%p>w((c}4=4XWh;FupGIO$MQ2(;X9>JIV)@kZ3fe zF5j>;luH@b#Pgjsg5!&_62ZJkPw~9yHo>?3JwQi#y!T{dUrw$f!?W3y{?}pM R(A)g v>M@}z z@ny3D^BQVG8L|BV+meB6KsbIG+~8y5OeZs(XO_EIpR>wEP}wGVoP 5?%Tu|%d6UAio0p*5NiY*gQV#pk zM@u%-uIQ1!O!ktyYBTfOij?|cytegDENq&J)2G`Ey9SO9QDxRo2>zi0MUQ)2Jru)v zUg^FxGWJFpIO!hVqHQI)h#Gt=b_?jjBq3G8Pnt3=4k4c_T|Xr-CoX5clt)Y5M+X8s zHu0lq={rO2tgQq}ADe~&vj OQNKst;TQCcD&c#=!I jB {V_~0DAL35r1`<7c`U!k50mVE zqki3I0t#p5ExBpDYb&}g#rxYOIIuTcFQ>6NudgYtVM@KHk-wOV59DMsdd7?=UJt(9 z|A8yDauFa)`$S~3cB;0lpU({aF@WAMX7rF^BDa@#mW|g75KAjPYX}KnpPAqy$z}b( zm_M+LBV6=KW?KCSbksdN`#t~=sRYsD8eJGPDN+z#{#a>Tq5C1GQ=u(+&BvU{oIZ`O z52ot~Cp1tV?`pJA?=$0fRMt{u$>98jcC*meQJNy qV zn^qi-z&;Z5Y=tWO=+{AshpI2qJnE`b9WXC;q88>iP7TPHXK-VuXEvi2IKf*%_u{Mz zI{D;!l(jV{;->)4*l{AaDYWRzwV&SzfIp{Tdq2KTITz18FBT{tmk_x^-E31@M7K{y zDR#(JV@{7%Y7~Z$^p8%*TCfxP?tFjmto{z>+Bc+Rn5zi%h#vSu_81ecPkVxGhcZ)4 zbfrPP6*G&A;ed}s9CK#jmaHaM(ajAF&`VMi(z-ibq+rnIVXLfx0L$o>Qd%a z-)nF0(F +c^P);m34Cia6c5?pNt>mReqPFj>kXm2o2 8i@XAWTgTfA8r-nlKu`2|R?yCbw=rb+%#wq8(V<{&eB)Y1>#KpUt%?rt*I5u;(W zINFS&1e0gYw#9ccPU1uHYPe-)FyVpg;k5q9T_V(v*__FD@dJ`T@%1%=`xzApf>4h; z`U{X&r!ONs!^L<{S}SGUVZ-5TKWah7L(j-POndF1(*UWqs@5SpK-d9+cE_-Q)O;r# zz5omJI*M}^4*lGv;bf3_1I)7AKwe>RvZ4@FHsgBofXc%!x?7o33M?~U$Gz!J7V{4R zLieDU6ts?5SMw3hT$efaak1dR9Cm*faY^Hn`R!eZfD_EevN;z!GYrr5dD)jp+{<5y zUyeYe_{wo#Un{;Vhy$IIODxkn(sFgw36~JsA3kpKwayKg5d~pPQ~c-Pel!)sv72L+ zE8mA*;&q62%}6hrMlY#*eY)>@_Jf~Fd#7v|MXAe{5w8RlUB2pMN)6{7#XRCE{yu5< z$y){)r-a=-4*h`Lzr~tE8i)Rx7pcT>WvDy>-Ep{X6Pi;WtaqthSQ}5x{pg=lN{bW& zjGF{<{LU4$D~u-!-6O!&miDEs_|k!fx4fPJ$NdJ0Y&(aKRxj6phX+&!>;O^XZ2*i3 z3Ya42))?6^Dr !Gab_cUn00q?G$iuPy^z $%dA}$5>UWw z+|xDU!5u7LupmZc m3sIL^dt=x!k@PS{HzI+vOhGsG<}$}O)0T` z4f~9NfMr+DYTh+ungj<(%O1RO)9JDKeyaFwh@I%?1DzSkB9vM}G#p H`Y#929mKuoC9eeXX@T>9qD y0g2A);M|w@iA%zChdEbHU1Dd{89yrIE7~Xq)QiD1J IRJB`jJ#gIGQSL4A7TtFg<3bRmd&6XAmOdxp;`(av#T&1oU93X^ z9nHwjB_rw#&cHTS+YW#cku_?`N$k33T0 LE3Byv3xO~mF8Dv z2dYYqNGOAaIm7%5UwJ-!6)$_BoRC|cI7zLMx(jk92xUh@LWR2Ut;U1-_Q@m*BFrCL z>@zhp+0uKvmj%DPb51-&lf7g_8;nozQN32!h}iP(_U$%pWTtVxb(<49U9`J>k8>qR zQ_0ExE!nQM^)&`&o7doyJp7#^qyt^`c%`f5J>m)|3bf{`ETDC*8+F~qY2vzr{3du* zzVj9GY3;IGhLY?qbi`4Zin=HHX)C0S 2F!5^?T)S7GH3D>7+P?B*ZRXhb+gK*&a|!&eHth?m x zk=ePg!AlQl2MeQ2h7&qB6;jI~e?CHA;~;I0msX8pb{pt^Z5zw`1+e}FP!#~5Z)I++ zycL#KRkQ`99CZ+$z1!1%3{+mRe>L~Iv8YsdJ8(&N2_rV>!TsF8{kc+KycqU*8_NN4 zCa|@6HYPN8yF;@onSWzr` nsp`H!X|Ncgyb~5?Tu|YBNz04ptAfgE8$-g{{;1) BRs#S4 literal 0 HcmV?d00001 diff --git a/saved/qrcodes/groupQrcode.jpg b/imgs/groupQrcode.jpg similarity index 100% rename from saved/qrcodes/groupQrcode.jpg rename to imgs/groupQrcode.jpg diff --git a/saved/qrcodes/qrcode.jpg b/saved/qrcodes/qrcode.jpg deleted file mode 100644 index 80262a3c0c73c1e38590117f47ab16f723ec9121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41486 zcmbTdc{r49{5O2bmOV>$rm|I%vSgp3#gbc!M1)FZ%a-h8#uBoJ8-+|IBq6(OgTYWS zw(N{Cmh3ZxVYc_`{yoq09>@FF`@Wa$IA-Q@oag!7KA+F`dojnEbHK6d#%9I<3kv|S zfL{P}3b+EW9y#*&8@$-SZ}y|?>}+i8+?<>oM|rt z78VtMD*0ShT~k|E-|(%m1Jl{njqU0EJ~TY?YjkXUVv;aVTv%LM{=KqF-ro7MySGm{ zIQ+XW7J&7CwgvwFpN;)L_9Y1J>j)bgD;wwEeX$$~0)JQq+1O8B @}Y zQIX4O?!Y{hy8f-}{;bcv)FM #kj{;O!k5gMqy^xo~@#3n1AvjyPtUDuXR`%@?; z XnNvRqdt>Cidc-rm`#Wofd}2acIucl?8kE~JV{t^dd$-y%|8DnxLJUl` zSLml%ik6)65}a#b^1?m8-2)%TFLR_S7c0q;mm(z3KVs|&+~6=`0+KfQ|IEqiy5?Br zJ&KM9^<(&1Y&Vkg4c`Ix%<^vle+sGQQ5 ~}u zDy~C^XuEAR3+;Doa|_Sq^T@_+rb_a}47><{a`Wr uVRtuA&R)1 z@bA}NF$CV?^r~Q)C%^fjUWdAj{`+oOXKgqNh7*ZWD=ukYmO)AalB?HNpB>#R!2P=| zAk$DRzLT#7Y4fAI>%UKbW} f-R2_{WQ^(P>G0U4X`nSqlHfes}l*hmQD(o&2Ia>sFR6qZ?)?mX+{1z=LlY z(P?8!DgUC}{a*=a7au%g?GNealQQMhdui~@jfHJnOG2rl*0J`@q<%J*U}F<{UpO+Q zpyJ@T$B_D0Vrm(n>(+{B76?tc7MT=bN;|tgxY&Cfl64_moif0g!5Bb6Y6K>l+OwP# z$o#pbt68=|E5-7<=PsIGNSjYL>@<^i@jm74pO=O$#^Fi3kXTNDqJ_mKEmNU5CXl{X z$ONLYittgg(l|Qrz%%69&}ORxJqz~u7rjWTi>3LtzS^YHghQ@C?VIK;Z6xmYRDJJ$ z|K|8o`kkhe^nm XZ8k<<;=;8cCQW0}HRx#tgPtDtJQ%Q3~13pQP;xBL+IvUPNuAYac&Xq}FoX&q8 z*>%?IZTNL=qaaeh!RgLyukX5A x8^Ci@EJediM?{UPs>-RBkzrkiCc`?o{Ckd7r z8E6_jH)dJ>!vyrlaOfI=jl#LD2~2mElLT2bdOrNl;byz0Nba@TD7!ma>82f(>Cg45 zg{57@ - zA8+QpR#R5h2GcKKqjaBFpqjmy0Q(t=|D2^5B^r}GD?+aAnvF;L72mUTcX1nNe)WB@ z`lRQp!1Rw%hT5x~*LPa1_r8w69x5NS^4JGUF@!1b3&@50lJ$GYNsAup6DV%MqS|%x z67tK_b(}=o0V@`91}R0!?QB&DgRPH^`fToAs@j3$<@=O-7q>b#Cmkf(`qd+cUPM;! zA-iW4Ye-7bnxJpsulX6IBo|M6Sa-R-FA63ke|(&D5vb%gWQ)vuro8YTT=gx=eNz}I zE|_Wn^@8FchqlfZh=G?d!e#h%tP$a@W!e;7^g6AWa-38PRj1t@fQtt_c%OW;pM9mC zYLewrpYF38Hm0*(xgV>ZAA0lErEoZ&WCMwzBMJQEJ(F8>lq-sU_C0#;GlZ8_2rfg! z)5In~yS6nZqvx_Jzi~1|Km2K90`US&AixTV`SO7kLaIFmp#p#XUy^4Q8be1xVQ#P* zWVBDSIblP~cIeB7Cg-pd-xKlqe|svgDbC5Ibx&U}(BV8mo<0ovHv~vG=nE-cCsGY6 z)|cnXOfaSMEc2Fit3D-C?;r1Z<-Si)$%SM4_4AhHwp^qiQJk?%fO7hLG09|p|0P`5 zi_{#PA|pQ)S%UPT=k}{jb!i= nnvqfcc1bFzIMX;|(>gPmxv8Q|Z3EW-@ z3B94k1h|foMw2VtIj>T68YCB+FNWj?<<`4qpL>H%pXk?3a?N|d7(mulL?c}VBqu1I zosyjKyAEq*2AU$-|0_`KIx^%3-%iA*Tuc(g-3vy&RQv{RTKlL^YA_Qh=7BM;7g|!zrgm&&8K<`((oA4P_iw>k1*1OdZYPI8mj-MffY35c zVRKnGlaO7*_d;d<7J*L#PUJIxod >78wN&gEDsY u|+HLDG)Vcs;wZL#c9>w4;B(;kzk&vmzENjL8 z6Wmm7Y`?EIaS| tIi2tQdO6HvbxS@ic}Cr00xQ#Hy5POr zQ$$SS1`ebc-1kvr7n;^M6X>wufRThY8&oL@-A=^$IHeauji|8iU>TSzx<@-k8sLPG zt=sdEV{aFIktFk!^R1_a{I}hm`?pKi)Ao|Lrp)(RDVZeB`MNiR3J!OKSnF`PhFvY! zqtT6W`PbKnr;RVaUQY7rH0xGR4_QfNccz>P!rqI5>&;0A!5%a-frUmqc)D4wQ0VW{ zq-a8}H514PLeV`Av=>R1tS5ZcQ++}|X1 !;8F3UqQOM0W$lkv5 zdvuK&agMWd7 {eC8{Oiif>0=$U zk; S7CW~hZVWv$5otRtz@X{{x>A#!6o;TPlnhf+ zOmUpPbC_6Mt#b1Dp~drr+QwH7-$~Wex?dvY70l%T!|!QbVM<-96S)}Y%B{#PhAJF3 z65wdt#gKAqZFikN^DwL9&bKr#NS|pze7{`7vrCP%cC(%y=-LNFH&|nvHOt%&Ti?u$ z){WGxeX8(sWsEc<&%2H5`_vYlAp9$R%m{m8>;r|^mc!YJ =K1chRUoYP1|#Q zOhojGUOgyy{2=a{zThxtQbJ<3_wthOUoV3PJ&|JwZUKV5Jzrb?`ko~v#0TqqC`LP? zz53J#2^Ii6 9CbeQ zsjD!fmp0qZqbKC%E#jgPM?I70RJrl)w>-rHA&=s2?)b=Ox!F6btvn9+8AvK0Xh-}* zl+W14Cg{7&t3oKTTb)klf5GaSuY^}`XrZ5^Kr}v_bKf@pTyQi&o3*%1qcOqK9P*V3 zRCl<}ablpT?Q`yLVQWLWWIN>C8zlFM_*?L6MBdY^u&1@)8F+v-Yhig#0HYQHBPF@# zF@dQs0YStkEuSb3bJ)~?w~}k?x~*^DInUm84DnRT&=1@O%@BD91Na(oN=I8cW ywcxJ|3h%WB(n zONfw+{i3nQ+g#tVF3}o@IZZ*Q=&20|uEH&v$n|9hh?ssd7fl@8{}W_~bkX#6Rjq^8 zph?~Xx%D)!sd}kgy{e15%k8j8Ss4loA$Nuo6O@y=o4L5-A!PR1OsYrTjhGZ+r6J`f zl>eqze-Dz@%0?L^L*}Tfsw5`R#fnj~5)A(u9yPh#FSxbM1jdZ1eoL@_T=kcapiRIu zVwvD{iBe07cKFpCGA}?etqluDIGC2V_OjQFv)5LC_KFd_A!(u`2h(z5H@{+%gcxQ5 z^;%s%AT^QEx18JJ{XHwtIQSgnaU$2I=36?U`G?&Tuf_9%h(AdjBEFnXwTsXG=j2Ry z&@?$FAn^U2JQH{~>kooN^9r=SJM|1)fs#6(xFr;v-QiW@ncc %gBOkg;?50Q-+D24zCg}FJfvZ$Br zfOWFUcBx_=dWrE1$|?>)P+TE@2>y&vZu9$L1)Hf;*2L@tCg6&Tl{9&&4{ a7rLqzZu!YHBjZzpJhLNlx2Pa#l zwB=KU+l*mr{hR1Z$5Q}#*CO?i<=r(46?Ua3;Zoo+sZv&NaK_O9gTB9aD%#> j?aw4D@$}-`a_>XQVk?b0hS2A-a|&_ zVHfr20^<8DcP|e2={Xbl8q>wce|~u>2s@7_eM2ZlsBy+?-rEJqt9dr$I=ysa!#M#B z$%RR_Dn^42(`8o5%g+Q>Kr_Z5M*aE}H8hm$)8!9Btu3AHGdXPEm7IR`W*Yfct7O5d z2jPOPz3_FJH32wKVsJn4Bk5rfXi`S|6l{Ar q^c0AuE^b|ytQh$Zi)?%T)j Z3tl71mg4NkR2CG zc2*dP3fGtbpCbvLhwK<9DKSK{z`GhCDUcfHj<-Q`6`g!q78KOn6#e=ZW-_^@wy@%* zihP#4{iNZimsO%q
UM&EqKw z{Bf@D@4;=%wP}^7RuroI^L_lBJt!EWRs>YmBh7vGEEyY1Q~zXsv>|2K?$^eKLU5v5 z9G6_w?aT-HZ>;nr-zMBxT|kmPFhnC$DR-QXVd)VYNXiT!NtNJvL;wRhdO`o#b3JE< zmLq2@+@>HHcdc#|4lA`=o4nS)C3kb!+iHH+@yo5co);w; _y2av*F5S{Bob_IBNKt0z%u6Drlx#srxk3)ZVuCpr$qGvx$c-{>nkD6 rC{gqNzN?#mIMKoU^IrINxt*$DWms2#os#mX6rYuAl~#4 z-^=S;bs9lWS!3=fMOfJMRvuI#l;BpZLA3J%5PrYNc~49#a<@hxo(YH~3Q(G%Fe^(s zZ#{|@SWZC^f|8mATx38ds!&crbS)fHm@O%?^pff^x*z%0P$kA&mta{Kp79r%H@TG~ zPM>{?@y^_Dt^fC8KqaZQpxkrzRD%OrFgV+mY_Q$=wQ#9EOlA6qxcmzNxr^L97rXtk zptX*@_YGN3EXze*Lreu@iKqyMtcRa_>sc~77Owv3$N!l0T}|fvx$n~QDO^_HG1}d? zQ@YVwFb^afrGO}gtvF7pZ T!9@pKzW06=Jf#ihk|@XXPFD3uQ0YcjH9^d zhwCRJbrXM|XE6#1*W}gIUU7dt5hZXUVNW0$UyY1sKxp?!stEx;043FENW&t`azr)2 z!o;khzP7qPVNv#OQQE*+ USu zRJqm~Tl%+@KuM^{Gci7}BydX7)Q({Ddd`={pwyvT7D~cl`qT_ex|~i9!PSe+F4U*& z*tI4MDg7IJKXTzd^Clc?7c!tC{Z1qzo`1+?hbmV}bxpaFPj-8!0?{v~Rx >p z8pt^N%@Weom29J^?Qqo&t#tRm;c3mT?;1D}_TwMVNPE~Ncb-a`<6c3}y%Uvm-GC`Y zpa~8&Na5kDl5tbG7t$UdI)8e>EA-YEX)TP~xj`;LS(N_al&L*_vMR_Uo*-Z7;$opE zJq}$lUU$} zVuY>K9mWK41|Ljte zu2-$DE@W3JpYAyZ*Cd83cZVvpRubsemSY-;Z)dMDa(%Opnb#& rUtnlgAQd9wqg1b|PRYHKHV!!q%SLtN6Dp~E)XShcdW4b{x{T5Nk6!1XzB0u2 zK9i0Cs2pkoNaK0(e;wLTFW1xTAn|XO|4-5X37O#OJcLCf-L^P9B^jkI?|<*%f?Y>6 zmH(}eIyS0xv}xhl@n=8ZJ=!*vSy74HOs)J&B~jZ~^e_1e&~B5ED>5^Pr +@8#iHC*tXwYULMf_5fn9H15Nk> ~qjnComsVgG?=3MIe(gUcF4UH@GP4C0E!UH=q3J!3 zmE?np(nJ6BU3!9%c3r!*Dba7X0akG89-d+{k4s_#JkKq}+9xgdx(mF@yTUXe?y-Dd z%UU`_XOus|G+tid4_Rrih}%TZq41KsY`6U9*j}CKnfW{}RLlSY=bGeo>&%DW)}n6+ z_gJc->3`gdA87h-o1y34BE@09^Eyr5|9WZwTWir`$V`yqVA~c1Fmsp1f#juP6b#JX zq=OXy-`$aZC$L-6!i>S dYSsfP#~BNy{CX `s;ViBdugNF78<1Hoil0z7KWQmH?SpTX?}jgSs}EME zsP`d8VU>Sv?`9c4Dyu-+D}Fa&=ddE^ULjlJr}69{USnJ6$Yr9p!aX7XSHZigpBklY z*Ndr7;9?YYk^n|lfUK3spIo-m7qUEYJ|pZxl39p;{7x6o$?uK%Tx-$&*Wi!IuAQMl ziJ*W)bRH_V7|kqM(~a49+m@X1GuAv_R%>$Z!uPM*Cj|2iD+;F=TuAbz%M!adj*PXv zCKSWCFq^>@Pd1x-ZV}c#n0{2exe $Fc4F0#Wv z6eV&Prd4BfJ%DFJ^}1)YW?i;W3+AA1sI%$#gb1yl>jyu}+EDtq{I1Dw>;{%p-3`L# z<8FtL7aF*Yx5oH;3EOtiL0+i`4xTSm8jWuv+>hOt-WiT|;-l(#+(dM!2d6P~gy&+& zR+GunpJhxojHmjwAmk;5iTaHTbow`Zx3AwOx_WG*Wo~N{)?JT~BrV0wC!ac;x{+}! zWH;9{_=DS!UBOvi|8FyIZWG1Z^#5?gZKP5!1Q+aOXSeqe=vPc?9R+ <$nKF9hPP?L7%0rgK6bbG3#o71ULng!T%Dc@?=^kUl+3NJElGLq`kxM7+?V13LX zenCQ9q2 ~Xlz*zm^hr!1J}~WMXZEr3fv#3K5lGu`u76&HoUrY#Y!bUXiMS#i%|Q7$gQ{K? z8au -Torl~a}l%u6~|b-$2qe0-bl zQd}*0rr2GjBlk-CmDejKe(cqdup7|Xld>{H`qw_b<#mt%t5q2x5s6yb*rt8^*sq_} z?>7>#43Pn|tyzRmYNOUa$PP` !gFDg_pz4&0dFK?(WaW00$MCL!H)DIq|MP@uE^ociU%ia&v7Pj>qqq}yn7}%y zU$L{1AZ=UGhXPTxXkH5X=15KVH??W^z`!Ag`rLqXrM3A4aatAdtRQc9%_#*r_r;kv z14cHb8BH3TJJ-$0U?2Sa0CZB6I1TnGxSk-8{6|F*zhPfg{NDMly-|yGUygauRmY!~ zld4(L4J8&5Xg?b0k*(TJmmlV~dHhDk)H)o2{XuS5jKHKQ9m8!-JY%$5;m3dO*(;*_ zO730z-(5GuE~AGc5nQa=3%0#+3~nq5SO22*#4@A#+}}1$3?e#k6^>;B{A-jp3@Yws z$y(}$xis?kA&fAC7B>{9_=_?4o`MX#XLsLn{ebF6xw4l=E?bV(*ZUA$dcCD)7;hC) zTN->Sroik}(&yL9uQq>v_e;7j8_N1eY4TAwTPkWlS?s|hgeeoiG(j)qqxm1Mq#khF zA<2hEAeC6BbYW=@;K%~wa-BXXqJ`3ZwA2DK4-8(9{e(%t=H9n*P~^y}cS*+81STNi zA(@}O7&4~oSXh&_wRAb-e0SIjmzXr8? ^EPWO}59R z=ph*ByU#p1+ZdX0*ja8+drCOR{;MUWws>mw=9QqB9POp#M>f7++Ai?20BL!1`L)#z zVJYJuL5v))7XHk@Be-`tr|91Ow3UQvEipc1EqsuR@StP`q4LfX=k>!1`<+# z5(kiHf!v?s642e9u?=^sofG4y7eS+nWJ^<2DNn4zP_5UUUAOg7hc1d6vq5#2_Hjat z38ZxMU6KGHC8Hu3iZg8)*{prNE}v?jaQCF3hH#ImV6VhXqr$RwyM8Dl1nx{PX!fIC zHUChbd`?43t{^eelOD%5=)Ke2LZwZhw6` r?f6OaZuDd^LjBMdIMBbhVGt5qDti`V!w z7F?`#w CF zCtWrntqI;k YNsdbgV*@Bk9cstrF1aHnJhN};{V<<4=vr?NeO+tTz}@`#m%;v z`arGwt`co4*1 %7?EC0m(86 zd8e0)(a1tXA_cvtNC_hObmZVVRRz|d@=aqj1y|LV8q{#(dCt15r9ocOm+!BXH69ah zw%;{lBSbEhG;t~C?bCE8`HC6mKf6@WB4E_d)nFeh_OCFg^C5Nqapob-GS|k3V#1N| z70g>9m!1EhVEr@DKzfFEUo`Yd5MP5P`ib)tavs}-OK}n>rN%!`Jv!x ulE-36O~;AI{>KTA7DTfcnU(w)a (N_0M!}(>T?34@s$4#X??$ z3M3Z~q6v^(E2^QFhGTef?{>L-9Q{e>3`#X B}337?7jMt+zygQY9_8}g(jrjSupB>n@)+9cyp0gT96PlGZqkJh&LCzat8JV^p zgKZgHR8mvB)2YFLKA0o<(SD=mOv`T7y%`4$A9=NNFCktH3T8&HjuN#`HQ^`y=Mhb$ zxH)9Jz9XS2jHkuL(({%Nf3Z}r_w3`5TbCA1jA7@JjK%#^T6oY86sG4vUDkR0J8WVM zYwM(FDJ3A7n|#SpV 3AZdhW4bRX3oF{*{GmZMmlqlv;F2H @gA*euTujovZ-?yD6Irhd%#X6HAbQNxc$B$}CVYMQw;A3F~ zk@UYgf_e;1eM0(*QF?>^kt(rMSr5VF?L?BqHmdxoR+NS98*ArZJg2hPhN8M*@v`#t zDE(WUn5`Ei_Z)oOuHIELdmlEDm>yR6Ep2utO_DR_YM6@4iQ`HNtxu0}B1zSIzNGq% zpt)St#C+&TK)7-jL*5;VcPC6dOz2kkk+a7x%2$3TUYvTb_qO%ncv~Bv`zM3vFz6<$ z8SncG(k0^kdPu0}W(7#YNY(}pSlBVRI^i2si0_h&=bhSNNeU(P=LN1JQ(7PDvEx+G zvbV8cQc5j(xf8`d5qxDHmZ-tQRg_^lq?y|Xoi+c!TPAI-?_n1M4yUL`aD;IWQcf!3 zlhORfP#=n!M&$?-z)d@&YPCvuuKY>d`|XQ-jFzBYLScQtj9Fh1fqdc #r!HaOhU(`LA=tssC>xb`BpK1F{1a)7{gYSW&GGn&Y8uVRX zEt>ON*L;)Ma*&4GKS>|2|F(-=$5GE=sTvmZCaGPX^FAB3wQPK_^;VONW#q8!OjG|} z_v`^tU@w85NTh#g4so4#C4VI?Pt=V6!GoadF})bk`}ma^y8j>7{_cx3gAk(F-Xy&c z9zcbnqlMe=Nb+s%b>KB8##ENGeKPjK^PMx#1>^D#`a^kL@@VZ~a#5hHvp~jWSvd2M z@12m_jw(Siqu6X(0OdZKy;a$h!E15bGur$DvY3wQ+0p+IyhPBdySU`CB~8?KJ^lwB zft<@F1yc!Iam`l|iaadk?tznW6Ua(9POd-Z(L~dRT%eYVwglG5SqXlbl3Y%+Czlrz z1q7$Y?bmeE;>%AB3l7b|8w%nB 98#l}`mq5{Y*OsFOqdyjT5h2+-x+#^cG z`a7D?bZ4g{Qxi&4|7YL_9z>FYk-kACUrj> k3!+QBA!p&)LLspWe@TU`qsW4)85G naf(dwKF@dCF z^57gw4O{YexWnVHg27cqp~%fcO>yx>Pz+sYxG)eL=R!ZUjDv~k`-AOB$6qva&r**k za{8CVj-BIni9hA|{@oMEIgcB5+m=Jguf0=^=qP8#IaQ344rmEiaJ*;8j_i2g{YL-r zj@S#Dmit^Pw_B_9@Z+3tm`PQfWnKDWWafv2i;`j|0J|88Hdcce&ycv3g?-sf1z`?p z|LCnXQ0cCa9`$>bmTsy|J3G@vdyB0FtQs MW9}tq2C?ClZGv0=cf1u6Dczb?rr&LF(O6`X3T $hkAdB=yM !Rb>fW+GWH$HX&hU%-V-f1W~QvQ z*J?s-$^-@Ozz63lQk{=OkFQj(K#!7Nk{FqO&&K>6_%4kSpLYrJY-TCREhclYU}bbP z_np^wNzQGk8i97Yz`Q^wov-;WvCOfYqwov8+!I#w+FL$KZqbn3o%=9W;ozpL_YE_7 z8kvf4(^ZW{Xsq1HmmPSH=f7JYx3LuFcy>^wAO!47p0@$mU)o5l#mHvvqSh~)(O>J! znoDP+K~OzL?-KBgn*BNHGu||(9#!0S&iG<~WjKyuQgM6qj{&SpQt^F(#~w(Bhiaul zR8&=H-IkXmL<-6mPsZL(du1dsmq1IQ5Xb`aD%stTmu4>HE8RKaA0-(dUfrEs+xNp9 zQTZ7uC}Mj2HaKH`A5aGSr^LeDU#aboms+~vGu^0gvA6(<`%Sf(A95tvYhoN_OwWEd zJQ4lM@KlCm n@uLH4EHuDx7* zq*behoShP2Zc;OfI7O*<94?$%8u!Tg)z{UWYp0f#JY9lemy?TP`8=xI-$Xb_9*d)0 z`%LlJEx6D!ni{6?=)N6lW0$)cUJBM(^>bs+ybLRZh4s7r>WWPL z<7DD|MMvNHaOJjHb m7m(QiN*GZ;Kc0?K*?el zSiT%GBWsK&8`SKPGv3;+JGoB6@k%(=#jS1POubZdO@Clg_)Dk|T&*385#WUQtSkF4 zw65
?>$)xD8S79V%l4X+8z3XC?XL@J68oK;+ksO uliULM`vnQFm3 z#spp#FpjHYj)AXnquZy!aWDQc*x~ua_uJJwD1y?4BN=~>Qa$%p-IkKPM^~geeXVJ( zk<@&Fc&c{qlxglLfH`aW{guf> Gq)X zpMJUUyEsbMrO Kh+R6=tTN|KXe%gX`(E|xsN5?<&B22g zBmg^Baa<)?**ipnp2%PY{O1(0^jK9ig&qjwZ{-Q*A+WBh%!LELy*?dWCgt{S>JQ2? z0ag0biU@c``~e* zkDv2gC2ods&!gvZXU~u?wWxMpB|{Qxw?xFn{<(nkTD5ixkxHJO%Xhgny>X8yF{wUa zJ=$J~1EVi0xfP-3F8&~uVq8|mwZ_N{a#A7qOkN=>VP=jD8 p9(q_~MtCoYoE)22Xz$keoX_oK@xh*0zCa6tv!o7Pvu8;etFx!c9NA!QKa3bDe^0ep>@+{O6XN&%Q|`wguTP%~ zv;ki3b&b>s$XrESKq8-mImz69HBd}&*4~m{8r*TF;QnCi=<5>9Y3&oyDMl6F-QXc) z{_Y{=Fi8BY#_*R1$q(vlYR1ab#pP}u`EaV|$R{vev>gFKdrTbpf~g5jr9xInfR!Pn z*N@uYPQ2(C2z%7*GKUkOnUEI8;+k(gpqIRxUDp!Lho^<)$~>}sBVqSo(30&r_WFU| zUKt6RNL8kA{zLX@cd(wb6m?!L`FL;DOL>)LeO96 E`nv=L6a>Lo3BYa1V>|K<;j{ku)M6s(F(sH-e-WJZ`DPX zsA}HBi@Wbn)`e$K<>b+|KU tmY* z`Ak)i$S~)<{pO0wS|n?*Ugy4Y&^&~lg6y>Y6eZvE>-q2V@^O#)|`L)jrlwj+TU>9ey)(Z#gvGaYC(~im4S0U<;rw1!~(myAi{VzA{ro tX zejR>icOupAT-Pmt_1xVQPWg=4vV+`bEZPhwl)c5jX_RFWM3tOKsKhFD+B 1JjKtZsKRnfa$TB8nvBRDwmeIZ#lBu_5;m95P$kFKlACO+$pR^Gv-z--gsJ#zMb)LaAa2w1UWNf?;t_4? zeB=G%DNE?f7(u)Yi0lnKE~$7RLcxKEi)5|!3bHJw1Hx8YFsI7v b}Tq zheQ6Kdw`( M^FE38OZ<5PVo}4c=<)eniI>l~XVe|Aq zar^3B;Py=b;02U-$6@zx7_BkF`xL)uY~FYTEaatzHhDaY3)=b8v9P@Kl>ZH=l N0*QUHFVfa>$|1gOTm1%f*ja~O7;^us32b@j-AwyIy;}Z^o}b}yeIqi& zh~oY*r{ZPvl|qVl|6TUaj-FzEQ&+c-*`06~Khh~D9ng_6`OTaOOcoGqD3)6D#ZecE zqv>cjT~PhMk!SlBF@fTMTabqdMXB#8)>kb856A3N7!E<-VvkjR5q=*&)EFI`#=(L! z(AFdmf;lya=6nZBQ*JQaWsH6$u22vE&Zhh9&6BZla3ndyVnkoF!X0tyYobwo t iU}0e8%^ zcOpox;X&q!q!c607WnXEDhth{GU=o25mTF#>qTV`m;m sNHiAo@1ZYyK=PmhXDJE9Gp37Vw zxw|TPZ`f|S{hRamoJ(g;ZCYJ<5GlbHJwEmul7f5+d4Uvz%glpgA}(DjrNPCWqhh*> zZ;I=(!?>qsri}+MVsFkVOL_;{Os{`dPd8kOJ^C9Bs`ANB5|ke#t &N1ac@Q3<>Id)?jLE>jiBl@agyf2n<@N zdk^R-tx9kRWrg4)y5_`h0Wlw*{5|c2{bX-Cc#xHG6@BhmwRBB_HfMS0qcQvyhZgRm zjTt`WAuxN}uN(g4DI0or>&Z1^SRMQV`Nan)ihQaOl6u&PbDm(uasy!AzDwi (=v6}+}Eq9eoF0wjz!f6EuK@-MCskR;ilth2N#eoI4Qt{b`~#o ze?fqfHUqZ2(S?4JsTdVK X &9+kv` Hl2>G>@YwdZGVKLBSG%pe^QS-p|`d|$)V0osnCcP>oE5jHq@A30l ze?dg(p_K>m26hrjx&=l{q9$Qm07gn{Z({-#=8fAv<5Kg^FIr{qQ7Dv(E_H- V?AYj!mN_mNXr9Hcq zr74`}=Fpag1Jz3Zhtyh7Y;ZmB Z7r**AZdNjbDdw#SbP `u74xj^A)4|FwqFfaEIN-FHdPOooSp`-UmV+Vsa((Os#NSK4MZDGo$u zemCc1aOHB($-2a_;+4ZYZ%U^ugF^gNnm+n=3F)||%|w0vB%cmQXp*lmK&3|-u|+#E zm64aa5hg7QN+$+u-3W<$zY#p(&>*;a5AK}s{EV{kRWUJh2^SH+X}PADo1nMk0cPuG zTCUdUW>8@?D;F%rM;tkq@*CmYG~b#+j|QjPw+OiIaNApBaHVoLQ8fx8%rD@xyT3#C zwp8wuqY@*0oyy15^UnNHY)NFu>XEKSr@pin(pfeh2?ncBHnJ=L#f$W`jB}Q)UHJn! z8vNPO$Ev>0b44Y;V{`i4_1`fV3!yU@(*j^Q|20Qpot5b>b>>dk;+2bh)q2;Hq)}^K zh%g2obp&ogHX+_f`@8}L`(tMAoN;rto@MG5`SbFA{?EF2jFYrL%Z~91gi`UoY|^hT zT+juzbo(9WcvNi#rXn)`L>)+365%$A@t++XRA_-eiXHDg5p^}}dLKXb#rwjI;FX?_ zvACX%Faj_1_^ 9gGH%G=xpQT{*vSU;MG1U|P?K{c@BA{a?7_XS>PO zOAtPNn-Et&Nt} x#u6B1cnl|IO5XEO+9SU;F2$|EBigqn+8H3c*41_=sAm)VSF*l{HmkH3v)Iz73wY z(snU_{X?%>QG}f>Js5a2w(1-YRk%yJV$$%dw$IgaP@~kVHGHo?&4|t6_1Vp|9-AL( zpL!Qw>5T@()BMF^XgZ~y_N^cGa*T7`RTdYf>@Ck99cWIjG OCIQff;e_7 z4qfYm*{~)AVZ7WZrQJD%i18K62mVj0Un-?6InPd;NSoK4euR9}9XR*s758+Q1e$ac zl{m{m=_9#b8TjKPP6_G~?wUX9{jqv**Yy13s}7!pI}$EWP8!`;PkJ0z7QzH*!k8`u zI|ZiI3ES8b`rRs;LVrHY^$W}_&;jcWhq{oYrn;?r#3I7ly?_du@D|Y^@<}} iyW`>tT1Cx&R( zim>k-+V<@&)`M;-C+4Q#Y!rGQ@mO1*0D_Gms*nt-S}A&4eFuNc1o>wzMR})SUa1`= zNaGtjIRL*^a6S&{_q4upD)DvE4413nMEp2!&42DSguaS?n5|6J2-Z$9rf$+i3ZvS;yp>Q!>%6kkQ2pMjknsMd3l zLv`M{;FsjpV}RA3ulaM3`49sy9+1At;k6d2E*K$}mr`pZ&ogp_OJCO5k0F1%zEJeZ ziG}E-=Q@nqyN_AoPv$1=igVH!&smgEu{~*#tm*s)FdW4;jWGbJ)rv#A$`7FH|Fj@& zBnKL(I)nEUtRWeToA@PjP^2usm>;K2gnl-KMl8Qu Zf3>^IVrooxp zRnS2+c8GYlg7*|Yn7xBs{1O&;06mzQlCDt
{At~xBrM&)vys6v!%a5 zSq6E0y;Y5-GX#I|(dg5-dt=<&MTgbXCAtUx`WD}8z{IR(EKV}Hk-6g!HUTwi=D|Na z4iX#S6L1Gg-~;ic>A%qKKeon+)+ho8YHpA?WhroBYM!M8=}P}JEl?}C5Tdp|wY*MU z)>H5HmB}`8+|`5!fSqnCC6Wk{ret(pVw@r+-D&JE4)}ECc;7}xPudUVp3id*uf#cl zxqScLinL~~iiu!l5DSns`)V@m-6hM4-k-Jq@W%1fn@5igP1#>sC%saiwjJgJ$%D@5 zt;_Z8q~i!sQht$L%(!mrB}NlA`M-#I4}YrP_;373LRQG0nPnz>o+K+FE!(LN60+C9 z;TR#Zh0Ie~$x8M-<}q`G9Gl}*Hs^%X;T)&myYKgR-}gUo9_O6vbzQIV94`wKaeac@ zPe8|Qxa;>96#ekPYtVbh9iK}i;(btX5qCZ2sZQ{EhmgU8!`s&UH8t(_6}e2KA(xBh z{P<{p>SP?(mGGsN8(j~3g87QPh ibQkoB+*IOi-N59W8kUCJfiyK8<*Zbq7 znft@Ka%~lVpBERNmOzs&z*HH-%BtB&X}3mDzk-{2ULxJVv>r}^vlQ^U{H^W7M_E?3 zf%Z0%ufz?QpPFX6TxsA8)?r6iun`uCZ@bS*B=D5nNH$?kDvIZdF)?j{`fVc=ax|*j z0Ykv{_flaknJ;P5y9;r(dQI-n4Z@1jQ0P|+#;CN{{J c|blQN*mk<9W2 zh=eI~%fN}I#w2*ZtD8J6!F7$n`!Yxgc{ZHbuQz??fQ0A{7KgkQxfm$`p*$f)myrza zwti{so`J0@L>S#lSIp%cU(9>-3d_JtUl_Op`9xL4k4LKE HTT(S zBM&*H=q*l@BhOq2vD;6+0<9y4lHx+wy__H8kAId; wV=Z zMpJgkA>yWw#IWS*`Pis|3~HEl4;+8! ?eB nmVFTQ{D8MSC!#uN8g={(br 7xr>e&Tk6T(;Bodijm+uMqGF_?w0cURb!jZakis(71)f2LZ0pIs! z5~g>5Ma0o%2kuJtx6ASYV%QC?2+!_#MqDg(!Kof2hIEj<;8z9$^c3;-Xo+IP<`mp6 z?EQ1}h);vT$n|%+cj9ou$hxpoA7IFQ*$?LTJ?|1g8o0bSJQ{UFZ`yMeLy;ZPy9m=v z05b6)3sWDb2kv&-1LbQ-GI&9!PJvNUq+_WKonyR$)7(oswHyGmWD#kaUaw0PeS-Im zw$2~`>ECWNJ<#Cj~@n(lw^8a97)4O-}BR;t>Z&b=?g<-}ajp*Izb;JVg zIv3(qqr828j#|!wLs)=*mBV;u9=B~_ItPz{pG<1ouuj-Mb!@eX1(1lZT(v)-hxc6# zwDK7H3*rPfGg1z;!N33SMfL@|!xvfq5aER5wD{^yI)D^$$HBdRTWWXb+@z76t@CeU z=nc2C#{n5db3=UBYxBHkHRYLzr9dgS>s+dj2c|McT{WIm0A~35C;n-YC!^lfUU0Gf zn4E=gE`z|;)+aqKPYUXQ*A-0i-4DQu2xV%~K6OU}H0fdZ aVL~zpySX&YJHy=qF(fodsWV6Bo662=Ml6^aM3aPlUd7>q;B^1%$ zl4nwmW;!d?)81Tdv>cFC uzf`Sbh1UKBJ($k_G2&NlXFo#AsNnj>%dJQt?tkBdI@z<*NCtb@Il^}Y zzzm_MNW?^_X&(l@pnh!#Y%p%{d3!RHUARGN_d|bzv7fz?(^I0zf75|T4=C 0nsr5kNn9R%gaugU$nn6gf`HgtXT>hCW^r-0i56(2s^(Gagd6 zbKEj$qfD5&;(blf0gx}Oy94PLOhz^|wodp@&Ou00!TFQJ73)2{be5C{%dd6-KKY~L zX%nsjIgoU@5>@A6^ZnbqYt5{n3D(e_-h;(5_pK>d3c5nblgouJ)##?vJ3KHrE0%>= z_|~hBprAd2rbZEDu2vlmO%2+*Zn$uhg;CEF%ddrN0ZGLtEsob${J)~uEDw{aTTzn( zI9(_R?$otOI|%oLCl_BON#hUAW;-QaOIJPA?K*=M@;mRFG9 8dp9%LzYEbiC08x!QkoN${gnI-E}em4j4Ju3t_XGUnee^10p~zqog!hufFW zU_WIBk-hY!Fkm{`A%t=xq^GOexPKBDc@94#m+R`Bmi^~A4xSgmfs^z!C|ci}kleOg zkL|LX>*U|Kmkdex@#ZkNoKMJ@Sf5fC1*k|n0YmWmp?-Lhlj02QL7hjWWb^l?bMeqd z^6Q`|K= H0zoF0Gc;88EXisjht$X7XGe`Lh| z(3k%1@koi6K?K`ZfZlXUhj>W|SU=;j2>tPS>R5Y>DWuKS-A c{mT6*H5>KG@!swmM5)DzDP7 zc4TMA`!ncFd#qcaI^ezfda4KXWTu{t_vpFWlRqL`kA^7s&OTDFQ2ZwM0>Ru{-2x5M zHQrOl65rN}HSb0XUuVlxPHD~Va0A!}fBsNzSoWZRd0Sr>-w}1bdo2uy1~PWMC5d|+ zyuOli9-FkoGbC~%{Q6x3Sb^)ck~fWx^E)AMPXOdGbp(Jtd7^=1)%~uzdf7u*v}wlc zI8=^Zr4nnB{2zk@XE%>_gKP*bFAlR+4=|dUPZB7y>(>D~Za_rr)?bkP&QHX`>p{IM zX9ZL-Taxt}svJg(EvUJnYq8&>FZ35w5F+tqVCtaVR`8jInB%*+lYrz*)9_vH=8ZPR zT^f88b8Qn&`MACDpD_E6A}cg(tan9VN<~O>BiCZ8Mr?Yo_#f*a<=hp25M6V0=4ECg z*9i>naga7{OmX-U^%oRw_<8G?tQ(n05uH62;ebivpVd@3oYg(-`c_?AyTM)^`2u}T zx%Cm~oK037h#7xP` 6H^YYJ%6|5B7Q`D|o(J!pT>1tsz>}iNl8d@59UH$bgd!j48JQkOh zTFg5MGc8Yn7 Bf%h!g~10g?MavP<$l z_S6=Lkh0(WG3Am15ZNZ*op0AbNqWx@3!WZ Kpb7-1LT3>7c;kE`nTte_Z?g=s@k zi0m-qKeFHiKo-29G!YR%EW zYzJf5d>8jVWVgI20<;eOae_3*b+w&B_#NPq1 {s^p zAvfpW$boLrPJ&Zejb~V9FZcUO2M36Qu}8I-t!r>bpZ7mDBA*1Vt?qkT>V0JxE9s^E zdpz+yDm)_J0&X{uMKmK_-d>~V-scrsC8&3AZBe_s`AFep1DHL~5F(gKK7+-o{6jB~ z_wG+yd{?P2x9ufXX(!&l_Tf-G&N0LYxYM!BKQ4t Nsy)`$mNjeYwpD3!PBpliGI>EERn05AwMUZ{0TDWTr^f;1 zS%dVMdkz8fCooVOBT@sKqukrki_)FkD0f_p!B0zxjONX<>_}IQ<%}2_;Se$x%$rmI zxL`Dw0goC=1fRZ@vDvU};B!{w>C^1m+5%85Qfw%-IKH8;)6u3oA7}G9C@=E J|UCo~hAU7Ah!cDqgf$=1uAm45Pj$;jrq_de_Wcfr76hA-;R|;`%gC!{Uk4 zv(@X7+lI>sd94irD9RkhMSeyB<8%ALN$tVeYiE3cx(enTvU&1@;|=?H6|MIdOP~D@ z8;3S6z+6cMdV^BR9yQ<7qp1tOLq=j-b~W)OC @*Es1K!g}dBTMvq0aW4>{7?o#j;6x0W(2`O%Zp1aH1Sf zFEj|tChJ7bLoVxGg}LAl;yTSrNfxU{GkTK>64Uav_pz`JcNfR9eIeto{IS_OZsqzS z_h9~gluM-e$Ul?^3sE|V6JjP(wo`jO?GjYhp%J5_SSciJ-=N@COL_b2cT0)UszlPL ze{Fwy*y&7}e?k2pH_GM9Y@`Q~!lTiDL0rtDg2f2e_F8Q!Bl?Ox;#C_RYFS-~ynF~z zAhqDE2hfROLEU*c2u}+9Zp&Lo A+lab#k*~2W z<~@6}`$g4p;SFhL$i)!UvN$ah5R7}xtYLpaWsZO(e5-D5n3JpyHT8`=`wO!A3$mQ1 z3hn%YECOjlVehJv9DPC!P&FMD)OrqeYLfL~PI!eh&ks=RAzH&pFSDkuT;ikB6{kP$ z0sxo7`A}QfbZ09`K9HvYY@2UH8^d s1R4@(Jj!P3rSLM zpHleIls)~Am*OIG=f|~PoDADj2m`z?h``I1yIzr!pxdb*2qxA<4!EBtFSyjnH+W@7 z3q) {WUP|)ug5TtK zDKkgQc!ef&H@mkEp53C~J59r0iQCsW{Whz7M9XnWyI%C%08V2>uj$l~%ufKAiVx(h zIUwgE;L~nG)ND(l;4~m@z+f#J%02TRmti{+Rp-5(o4(8aXvrv1n;qqqOJcll6(8nm z`MwU?(UpIS{gv0Ex%T5QU5OfgZ}p~G<%u#OmVO 9wN`+_pTUq+K ztAwbv1k5=OtlN0klq!vJ#%2e)_C7xEa{ULpQ!fFs<}=V`y>6M}v#Tcp{qTEg!wy-z z5FWwt6PL#y$|uBog}ItlU+|J)WYM @0>ouqf6ak1b(W>$jPnFgY>{4KK5{_h@=iW1C0Gh@C(PSu$>I*kUP}FG!Dqm# zAu9a+^foUi`s*$mEk(9y3P@$h3($>wX}6{*5!fOht4`_B&(p`Ap&Pl+ t!wj z@Y{J}-KDb*JwXq| !9Zp*ll<;(}vgE{B|_mv0APQgT(HL^}Di(4f(7 zSH@8+M@M?4XevO=LZBKBDAHK-;2?wp{#o?8K%*6J$M>UQZb&CdtZ`SM=rl3SHA` zB6Ud>L^u+EvjHd;vikUu32_q#4JnUN_CDI)>Mss2d!wv1wpzn5bMVi(18g9Q9LcK2 zogec$P?2THtj^50IlsJ;t}!)!VLl`-BYH7gT=z!BR8h6WJ`}U({ItRy*{J@yMx{t$ z%xL (Lp_J2?=q>7n;?=R$`yZ?-dQ3**FJW{w6EF z7Z|7^&7908iizF{R=3kxh)X#xZMJUSlTcoCFdC7#f9*>4%vu#~w&-t$Pq&qinQ-7} z9lA0KKVcc*nAI`NJ1uUi|27D4|6p${p&-9hRVCwUYr!CX{*o*fInRI~JqKF%*vycX zb72IcKr{qSar)dotH(iFw3yy2@9OTDJb2gA+>$&ZF{Rq^>4Vts@$s7=f75lO62%&C zfND2R*jLmsSc9;;Yw3hP4*zO!r ~A{b7cGGf$56}U>j9k0VB-blsp`W z5`*UgVfs~e#(w-7!>k|IqI%7kkNeqI^2(t;{Z1mv@FyfUBmDH;TXz?9U#fLO9rjkN ztb^6nl&AfM9zY5JE0ymDFC)2NPre74dp@3qsk^Ji>3&+?#?&v~p754`E9%a0KD~5J zIO^1T(=x7Gob+I5eGTe1aH^ijKdHE2lm_Se7S+91MrqbqZmQpD#J#Wd7?chuyFpt> z+n7uzuH$#=uXSIIJvLinjXgR!|EG=>A)q(%!i;l0K`}Xyjdf)N@N&RBoO#!rH(7sg zyS67=(gsLPLRE(b#Og12K%=ujJJ?P{ggV#GFRNB$!z-5L@MF!RbWemB>FMqi3cpL@ zXjT6YP}T60eq(?)AZ5LQlz|fvFbN`)ut2aVILBYM&*QS NBDZG?>GBB38Q zdpf!eQDrbHTX!0p`E%<1{La69V(qV;?tAlTMlWbat-ZG4!;(M^+W>z{f}*XRRQtCB z;n`=&*^*2~J!{zyQuAo1kU(5v6=sMzWD9G}6Ki^|!`!`*3P6Qu*;m7Jck-ynY#@Z) zv)-YrIrrHg4lyRrj9*+gO&rJnUH{|D4*Xz1{eWa|m0qt%^_u}kdHNyf4atZOGRsze zNSfZ|9iDEj=@;E%o|ioR?FT=RzMP-g$3@vMe(C!%A@tG%El$T0<>H*2m3 NNy2%_F7(Hgxy7834ZI{zb-OUe?v_t1!{GwzhtgFU@rG43yg+ zyfK(4kyV)KxrSWu83;2@>eeQ;JpQI?rt5aM)zg5Eh|sb;U+@C^plK%Ew }j1-)Ux?+NsM`H}BE-`nW>c?Q)i8cW=lZ@*ylIGyW>{&``eYh5o}z}i0u zfK3;ZdOUgEIN7IqU+nq5+`j5qo>(^TrQu;0(MtOB>@h51Zo5TKE4C4hiZA7Yyky2~ zr^`H%S}5wgbo^c0iLo|8E)Cc7e!U=K-3*#!*5vR}xhP5yV9;525QNTl+0IWV#1Yb$ zuWM3BW#ig{qc9DU@56tVA5UlzCp30IpP2gSE8tBefTw&BVI$ca;c@2CzJW!0vJbA` z4?g%k BO!*Ax0uI8DD%z?GyNXwzJ6@uF#S<}X8iAK$WhD^n1U zRiU#Seb`U%6U&$Rt9^N$5oZlpM@YXctUdJQc8;<=W0FA8qWZ@rqvHwXl>XUV{bLQb zMO-N9dudjV2tIA`SP(w+6%%$!PrQwX#~jzqAN2hRLq}1Rsy$dSuO-i@Sw1>b(V;g| zrnESG-_c}E(kyg^*#9H{#OM0C+a099z}Tw!Hx4!BHI= m)>mIJ%{Q+|dWv?k(QS9^vgT!O(I|Om zk+hl+$yiNMLH6&_yc-pm(}!<#GVNoQ2(5+1g>XdJ-1J HNB*zx>_ZF=yD;( !YFA}dkmM2(=*iaJ zfzR*HnW?A#%;>{O8zIq Ws%P*FGvEFu!{uOx`gA78tMC;tzXRbrKTKzBwCebfc_)AXL&n!gksp3 z-iOR>J)rWT`<}2QNp@cZi5!wOaVrHk^PKI^I=VTb2KFi9$Cc}Hu?`*?AQ zdKra{AjgSbBYzV?3<|<4nn2}VO)L6fBt5{NDDe&`j4Czj-pd0L7H*h8XA5D!riNs9 zco$z-S-WDt)xy~|{(0eZ@$E!Ax(8QmhVPBP%e-;(S5bQHP~^m4P(5bACl0~aslHz1 z(~I8 Seje5 XyPkkBx;+_Ntp!{M>oT1-1909x`7z`2v!)ZauQ+gn50JJZqhZS*8D# zg-XO`_^MiIQqg3kw%?ry(&_Kl`(&NffMB)5 5CWG?P;sPdU;Khb>UDFXfb+{T{O-eQL~M5AY79tf?sFt8jW zzAkkFJ2P*`x_W$Q=@c_vxesozeA#ITXd)2_I?^@vdaplip?1c @q9 rfw^dJ-V(kqCT1PgvUPCL6`t#xv~^4*hbYG;KafllaNqcZZ@HavJo2x$OD<$UxY` zv$vh$_?CX+LS0IysxYD)9oU><;!{&gduMop=Y_u#xxRivX~-#iAAz@s&|0)CSQl-M zek#}g^oqt3c&h8uY!|_zpZKRKp~vY$(@dvo<<|X_Fna`#Sg!{jRlf8|g+-Z9-2rt| z=ECHv+RY0>tbxFp!AwJ>(>SRdPuJIC2B0@1%HF9JbfUHQge{iND$ngL{{aqnY?