From aec847d9f74be1457a76f5200a45bfd22c3cd56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=95=80=E9=93=AC=E9=85=B8=E9=92=BE?= <148796996+K2cr2O1@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:11:13 +0800 Subject: [PATCH] Dev (#32) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 滚木 * feat: 重构核心架构,增强类型安全与插件管理 本次提交对核心模块进行了深度重构,引入 Pydantic 增强配置管理的类型安全性,并全面优化了插件管理系统。 主要变更详情: 1. 核心架构与配置 - 重构配置加载模块:引入 Pydantic 模型 (`core/config_models.py`),提供严格的配置项类型检查、验证及默认值管理。 - 统一模块结构:规范化模块导入路径,移除冗余的 `__init__.py` 文件,提升项目结构的清晰度。 - 性能优化:集成 Redis 缓存支持 (`RedisManager`),有效降低高频 API 调用开销,提升响应速度。 2. 插件系统升级 - 实现热重载机制:新增插件文件变更监听功能,支持开发过程中自动重载插件,提升开发效率。 - 优化生命周期管理:改进插件加载与卸载逻辑,支持精确卸载指定插件及其关联的命令、事件处理器和定时任务。 3. 功能特性增强 - 新增媒体 API:引入 `MediaAPI` 模块,封装图片、语音等富媒体资源的获取与处理接口。 - 完善权限体系:重构权限管理系统,实现管理员与操作员的分级控制,支持更细粒度的命令权限校验。 4. 代码质量与稳定性 - 全面类型修复:解决 `mypy` 静态类型检查发现的大量类型错误(包括 `CommandManager`、`EventFactory` 及 `Bot` API 签名不匹配问题)。 - 增强错误处理:优化消息处理管道的异常捕获机制,完善关键路径的日志记录,提升系统运行稳定性。 * feat: 添加测试用例并优化代码结构 refactor(permission_manager): 调整初始化顺序和逻辑 fix(admin_manager): 修复初始化逻辑和目录创建问题 feat(ws): 优化Bot实例初始化条件 feat(message): 增强MessageSegment功能并添加测试 feat(events): 支持字符串格式的消息解析 test: 添加核心功能测试用例 refactor(plugin_manager): 改进插件路径处理 style: 清理无用导入和代码 chore: 更新依赖项 * refactor(handler): 移除TYPE_CHECKING并直接导入Bot类 简化类型注解,直接导入Bot类而非使用TYPE_CHECKING条件导入,提高代码可读性和维护性 * fix(command_manager): 修复插件卸载时元信息移除不精确的问题 修复 CommandManager 中 unload_plugin 方法移除插件元信息时使用 startswith 导致可能误删其他插件的问题,改为精确匹配 同时调整相关测试用例验证精确匹配行为 * refactor: 清理未使用的导入和更新文档结构 docs: 添加config_models.py到项目结构文档 docs: 调整数据目录位置到core/data下 docs: 更新权限管理器文档描述 * 文档更新 * 更新thpic插件 支持一次返回多张图 * feat: 添加测试覆盖率并修复相关问题 refactor(redis_manager): 移除冗余的ConnectionError处理 refactor(event_handler): 优化Bot类型注解 refactor(factory): 移除未使用的GroupCardNoticeEvent test: 添加全面的单元测试覆盖 - 添加test_import.py测试模块导入 - 添加test_debug.py测试插件加载调试 - 添加test_plugin_error.py测试错误处理 - 添加test_config_loader.py测试配置加载 - 添加test_redis_manager.py测试Redis管理 - 添加test_bot.py测试Bot功能 - 扩展test_models.py测试消息模型 - 添加test_plugin_manager_coverage.py测试插件管理 - 添加test_executor.py测试代码执行器 - 添加test_ws.py测试WebSocket - 添加test_api.py测试API接口 - 添加test_core_managers.py测试核心管理模块 fix(plugin_manager): 修复插件加载日志变量问题 覆盖率已到达86%(忽略插件) * 更新/help指令,现在会发送图片 * feat(help): 重构帮助系统为图片渲染模式 添加浏览器管理器和图片管理器,用于通过 Playwright 渲染帮助菜单为图片 重构命令管理器以支持图片缓存和同步功能 添加 HTML 模板用于帮助菜单渲染 --------- Co-authored-by: baby20162016 <2185823427@qq.com> --- core/data/temp/help_menu.png | Bin 0 -> 118331 bytes core/managers/__init__.py | 10 +++ core/managers/browser_manager.py | 72 +++++++++++++++++ core/managers/command_manager.py | 57 ++++++++++++- core/managers/image_manager.py | 115 ++++++++++++++++++++++++++ main.py | 18 ++++- templates/help.html | 134 +++++++++++++++++++++++++++++++ 7 files changed, 403 insertions(+), 3 deletions(-) create mode 100644 core/data/temp/help_menu.png create mode 100644 core/managers/browser_manager.py create mode 100644 core/managers/image_manager.py create mode 100644 templates/help.html diff --git a/core/data/temp/help_menu.png b/core/data/temp/help_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..77500443bb818b13e1d5cc456fac08629dcc33c3 GIT binary patch literal 118331 zcmdSAbySpL+pi500)i5Qbb~O2#Lz7rLk`{Df^?&#FmwnENW;(#(jeU+El3DRcei|_ zPrT25_q*2K`_FGJ*OJ9w%-r{NUdMTyzcWHrSr!M26blIn2}fQ|N*xL52^0zGsWHYA z#BUguRDL2M;UdXPz0vUcy#Mg5)l$=)Au3i=r6d~*%3LHNj)g0&N-Gf|w?>!7o0bw6 zv$=W|yO~n=syyF3S8Zy-2ERVB2y-*XwneG^J(%$objQsseO8$R4_6}!T9n;d;02H) z)OaIucsnNITQ1OV5bJ;0 z<;#;l|Ie1`)(X^WWv2h*$EN>({P?j&*!O4x@uwp`i^$}Nz{ighl&7bk=hn4y{(g{o zx?!1m0ie+f_xgaMp<3a-%%?9a+8rOaI%{j(>)!$TG zQ?^+h3?a=)LJF4<58e#^3f6Yk9vW+W`Ew)dM~jn~CpnFJr^uSNOdnbfu4j{bW6@m4 z@{In|^Vmfvo%CKIBZ)l{;}>GlD-rf%gvh$&J(Y^HCZA19bWWlZ_;sQbQuY>n4kLi( znqxRI5mgL>(Yqon0neN?xKO(ey1IK+)VblZ9WFT1c`c}`UrZ;WWOvG7HhHpoc=ZG`a%le zQ&G$r$_^_l2)<8iu+A?aR3h8uGpaG$sHyF^n^?K=XDk<5i#yKHCEBq}Ep~S%X*2R) zYHxTrsd#@g5}danY~(r@+mmToJz#Qw!LObZxnni-ZAsi!WRalSN$=kC3QH<~gQt(P zN5sc7hrr<8W{~|9h}!A2P1T~pW(4x!3izO-7_}nzZJW=nGkm!};70SdKjtQIi?Cy% z+hh3??A7zh6L-Goyfoa)6VESZuP(2Zr3A97w1kD4?6 zQ-i4YI`UD3W@Wzu-+ZP1Wpu7T7T5T$lEi+3Z#m+Zkb+C>MCRXS8NKdnSRK z9b2@(*R;zaRZhJKtZYJgq74u@FhA9VBtBc(-Tj>N@eM@?5H_g-YhN->mD5Bjl1y zs`MT?prVWsX^UW3+oN{Zwb){oqF+608FVsCtQ2nTM@!H%w5IBxE6rlAmXW?wJJ=6J zykXiYio4^wL(8?}&j;I%M}L<+&tmh*;^w>B%9MU@R_3#16;QsV>9Ms++^cgjGV0Oq zWwq@YptL;*70yTiCQcl+DZvWcxtgq&@4WSN$nl*jJTe~wad$&JxCwe>n!p-TGE2yRkc8Xa&MQ%)S zL}KKPRXz2=Bm3QndCuJ4kly4TO*;CTZOACcny>;0c5uPfVKmw~Iy&ZA7q(i^taJDkAZ;notITEB>sP{>)f!4B0V^8=wA9jK&uqOLdG!m7Sv~ZfnK6bC{w+uWd?ElL zremy5XldLg3c!a50t_O6KpEXWEE&Pp&XLh%ph0@~^Te^yS5H50JVUq9i%o_LODj!< z+3ldhQ|*}~6~Ke_8uDM|@X&eSRmL)=osa8JJ5HP4w@X8*tt@I`nU+d(%Tx7^X zp~L;v+g7stU2%>0TpOuq^L!r|*Y~3Y*r{p;-<@dt^~crLCce_P+YKH!b_f^4ojCBR zU3JY3tfK#dvmn0+a$45~Xt(fT%ZPyEOiXe?(68Nz^VukewOQ{@v@_gK31Ye$Kc)_1 ziv;iJuGLgk9kXZ6@8zXYi%@X7g6{Fh(s_g~G|4uzU-74&ZEnwf8c#nniaq0RuaqY2 zg|ViitL}47*?zF9iLjx}M>Wr(*(f+@yxGKeRW&J~iymF@R5^0;0mqEQX}l<~XD|C4`+a2LQ12coU21 z_fH_SGHMLst{|+$QV!|&uk-VZj)7Qm+~q2YK&|#hqHr$AB=!jdn{*Z&6H7Nt3SO1W z4Ds3AG-8WxA>tq$wcEMwLb-ckaC4IWa?L?7k;Dgmsup}MbfkZMA=WxxG32^V)0501_Y>2edyc+dOO zk~hCfH=jM2ro9J5noq)ocH6X)cB*rvXg-AhO50T_trV85mC6NHtPMS9?d9NBtSGQ4 z_V$G~H4P+5aNi@bX&yaPGYikzkaQf6S(pEK7akcFTpOH`DKbAZcW@<|k-l0A(%tS~ z%0IJ;U6>c=FLrsOluwuGw;VMDT=)sXcf6xb_Jhg<)K(byj^xiNj>&mBQW`@dQ6f-J zYe}G=M4V*836-QD3T@EoaMe#amQecnZJr}R4o}RkK zX=y^z8AI+*bem$+?Kc^GzAXkaH0kLqdb=!or1hb4*+3&xENqBF*!SjSyM^t?4wo4U z0|MuFyu(yDcZ)oCc$D9EmL-ZpF^ui+nC`sb{WOkV`i9e=nd85JGmOKH#3#%;RJ95N z3g#ehp~O*hNQ`5+zL$rZwZ;T&qQ3VHo6f42a)D4|`LS(n*PwOr7jS0kY@`wlZ}P@T zn|j^=5;~oz+`ftK9vw8+Amsw$h%azr`G}MU@R2+d)ALy;yu6=8)vAKQ@eLpnjV1N- z`4+xq%nV|!r?p8>u+WR6fYqL;tPoXm1wZKwAgc8?O-=JmKcKiDo)vt^`@#%rA%{fw zs+cP@z6PA*v#1$9;uHuxhRgnX&h^Ud6L5{Mhk2MlN~x4fdLD4E_eF5;JC`(vnHht( zx;d6ROhBJa#PW$khWWgMx2{tewQJ zOISTrH*`IIoEDvt;KOHwi`WMji02q{i0-<~DiV{+aB{G``I|w6Ztx!6pL3U$ zSyh-0lS0NI_!h0e;c}ejAq@ zbo*iGx0bWx;gotlcp_5v(ub2Qq#&D8mRs93Qi=|&%yi*1X==lp z{vw@{z~t!LbGkiFkqaO4f^CXlBA3A&owP?Bl{GOOoIly+kmH05+AU9B5T(=o+bOE^wXpU*MB>#U(mNa^7~4 zHIO6xQW`z1?cd&gfY~}=9pV6$j8E5Wb8AY7Y$46nGgB{ z%cx>22f4GWgKR>w*@`gWEdPSk<4tSJ*@@E(DOHFd&-)!D#*%PLqsrA2nZY?|pZ;Jg zhm4Pri9(q6#gRGmGv5|io^yyxiv#}zWn|F-ww46cWAFBF8w_NYDYE-Nz{#?8f@rr* z+Qj68FHy4)mEYSw?8ijn^^KmkP}Sggw~e~kE#2|crlyv>ygQ*E7@hW&Pmkh9E%u43 zGG5(m7>%b0jyjOWO>+ex&nOLaOxcR_Yl%3aU-?wIf_fDw!J0_3>@(WNY0&Da9~%F1 z0sLADQ0%-QN?xADx?wI&Q3 zaq#M>`Te$+iPp2A($JKiJZ_%yl0})uK51Znq~F0-#^pPf?jDkNSAd-1$^0UDq*qyg z81UAWhC!N*)3PyHz041qWEMiHBxwMKkTU`>oH7~*SL|>j z{V->ifdVuxkQAd>+%vQXjRtUWO<5EP+F{3X8_)X7jKA+@CmJ-T0a@?pt_r6y-I7;o?p(vbQ z4wIEr3kdl(oOFmj?_JxAu{<^!lgL>tnO3&e&;vM$3@LPn|B{op=KTyzX21EBW@}qg zL>Pqyj@MC|R=2=*Cye5VPNua~sIZL(@=D^vsb{#ea|_VmNH6Is<&->^S(p7=tCyqO zb%I8JGB&iZw^oi>s6W#kta;78Ya8(BWo@&FvOfdDR}(pKUc(W-Frc9eY=>~);KL*?3EaSgLrKGx&n0ZRY6;uKU2&$l*D3iS<;|GQ%DM~APgY>ezh?^(nme9 z=hIu8$7#LHJv3!+?8>20?6({IAv{u}Pvjd)(migQJPX}LWF+kGF9Y^Gk1I~;cxFz9n$)-&aJ+7uhKgHNO+!vV|1)OJUKRi4&m~eX zAb$!IzPWVFTSOD3$NCM#XZ@GL^thskyzAzvBQm-L1L2kW-cAqSjq-PK%6q--mnPCWbSmbR>n zg3ww+k1-8u=?;a6YfTNxbH_80-;MJ~=_QkUfs*Mfa*b(CPfhr3z@ADk97UUS_k6yR zZ|XxQlO4GTLO6Y;-PXvV@|2E>8yg)cr2P?_7o&C@$s{ypA~h3g%KhMVxTK5%C-^u8 zlTTI`@1&MyLUn7MCAPw{`&*Sle`1SBX*JxYniV3e;)KWYga8w0kg?-|rdV{AFo}!C zQe4=|6NrUljQ#96G(yJ`dhK3-y;@u}1h9l0+t2TonGXXx!y`WZl8**XZWTaF0u+hW z1}U-&NaackG~w6-xZ5s@;FI%-&i{lh0(F#B{0EtQ4!ZP>_eU^6(Qw>=DKhxdD})b4`aI6l{CW6(Y+A$(ZWaT!g+B6`G2M==B&+^5i*b7wZWG@eU%u&*J$5` z>beo1U!^T`|8<;a+|~CNU8s?*-K|4{2EueFaH=_@ShxNZpAiSr57WF6_=8{gU*yC` z#BoS0#|phZ*|0@wZb&wfs``rb7pg`QEtp+A9LEZgzr$GVinh}{b9wMFq=&4RHv~oc zCw)dpB({BvD5Z}=;xo`SHg`PgzJ6S9)n%bI|9=E2Uh`1k8U;{=f*Fi=jIF}*A0!2^ zgnvEdJ{Q@a)2!2gt<}$|<)d@-Qg7gATBRj}q~p1SGcra!d|qyzEwop#>>0V5`q=Q;kuje)AvElQZ|6D%^)6lk|cz@j>wLqAr8bG1Vwm@Pv3) zhv!+qszxupv0@vgc?beM|8FqLtJ5g}3TLXaa~%!V#md8NW1JFiqPm)HCm7Gzq38aM z7y1F9Ah&Z+CqWGGiw7prBm)Kc6h&A-q4Bg~yRQ6J1TOFp9ZQFLUoruR%^L>z^=DvI zd?rz9!m8%OT`KL?r~pJgswRpsO6nd7#HSDEPp{_G;s7K2aH@A811%w%ijekfxUFQp z+Y`tLPZA9S{Fhz{y-7YsFe&6a`w>V!%aptPs#V~0dSvhETTn)3Jx{#9@VHO%_~=qU z`BKlkj2r>$ChXjYLXY&_j`MyduY|IF<(6WG6)%pQ9ZAQB-B-U>5Ogr0IiB9xM!CNT zu1dq_SqPPb7RNfZ|Z{cjor|hRSE|~d+r!u z92`MPqn0)R0KlFsTx5I&$S8cx=Ao7yBHG-v!0D?**s+&A#Fh@D96=|gB=|xfkP$`g zGg*%of}@}&Ql@#jxaUltC|*T;LgDJr0%Asq-|w}j`DtSKxrf_e==a*B7G zo6YbW0NTay9oUhS4J|)?0 zw%Rdfg@Ytzk>cl(`NPlbf7&ATQi3wjLqMs1G7@c>7c3;0LWISKdAxr$5*I>bN801Q zO7aEw$@z{ve>Q}?MSn|Ls$(x*B_K)ra=C}O;*B{2)dh(RC7eYzEGfI&FZo|C$y@#M zL;El+=vS+*DsKLV&aKg)fC!)*EO+X|V#2N#I|KtrBkN|~I{bqNPR&*DZ?6QTejPw} zVV{~yjCO>QO6v;3kBYigF~Q2OxOQ-i>D3UFvx5FMkds$a1j}mWcTTE zDFrOU3Fzrznu_uSXl8?9xRJ-ZNrM&KI6a?ZnzmJsE82|wB1Ku{iP}q-^UO9ux;gYd8#@Y`fWf;ju`o(Nx&q& z7mJw{ipQiiA%xORm8hpofET;m3<3?kdi~1+FGptLNgB5f3dKNRsbjMpLOrDv@WljLUA4Kuq*P^l2*Lc@dzpVWO&3k2e`&`NeeWQI7VH95Mt z|H$|zxHSAbwtQ-k#?%LB^2^jGI#I2(Jf&w=7KCqkd4KE(xH#O8A2Z{{BW#rgDX#na z6rL<9qQwi}wT&fk`dPdMMVu_KRUz_!L#MMzB5POIpB5WY^kp=&iV+-AXs!F<61UDF zIujZindqu%>2KuXO*{v7>y<6hV{)Zj$xfRDTCJ+F{x~a>sMgMb>;EDsGG|f5*`aO7 zNA!CL852{8ED?ArAQjvyn>pvfPKzZ%5@bOduBQH{P$6!9pPk_UouD{tTx)3wA7Y3! z%%GKA(tAupBob%#p+GCgFW`u3+J0VhG&;7I+pu&)3oL%EDsKq{Bowct?WEZsO7O3fmqo%D9!oPC#T7}c)hX9MXdTr8#73nWjvK0SRR(P63VVtnDyKfwHYT&IvO2K zHAP{zW3(`KrqR(2?7-Iuh*zPaC__xuBE9+L6%A=5g=u&`04JQn0AJI1L4UrYH}Y}W z1b|&<09%C9mB(ZUb^74X;!~RPQLbp`N?Aki5xoynS}$=<$TZn~Qlh}VBGbNL*{xAH zORR6KGfjfzD>Uvev+NdJ>-^LrbUFIy9hU&M?g4V*60r>{)_bm(cg)H5;lbzh0-h1teN{r{ZBg()UT zm~AmvL78p!kXEV$Up*K|t!b*TIY-SfK8`6!mcDTwH3{x>tOh%ji8$X zi~7}Lzybeq0r5kHP13m&@0a(p+cHm{B^_@m54uuc{VAJSJzRxhT+~)mdH*BnOYPgfAVgoVEg7g z&Sybt5`{D_K#FR1Oq=i$PVwtE>XZjeMVxT0UM}!sKAs{4G`+Lhcm1{qlB8|+!26IW?1{jhh`{Z zy3l$l2%ScPBSxKFQ{X8VIFmXS7Me>Szx5%sI|ul8M7G$#kAPh zYxU}o9O2Q8*TgBKkg|l!VB7}9SKftkjRMuP16qHkC{Kht89E}lDVBJ1D4GItuPjKJ zuGZBlqCJZ>o$LR@S>;32#t@g>FhFGj!+{Oddsv1cc_Bbvizxt+DC7FVEMxg!BQ+6r z4uY(`NP8_bame5)fGIO+UKsFKG1zDW>mp)-m@SDKGBHIO3 zHUy@);#kT>0GpDTF^Pd)*?oXZ1XrjVMC@>clyu#(AFcfS=?BI*1kY_^ZNKG4 zX1opI?ljAkubj&%Ku)3TKeVO$Rd?yrK5c6?^&vm`q_o=O){WRpCIO71{E*fJGh;v~ zc%;3Q-BNZXX>t|@=>dmKbgmA>-&PwFEND%v`5>`{edO)R z2hV;W2O6iQC-M+?v=0FEaLtpddAc$BDy`)9k{Nt0nfNcakWoH|GTGJwsx7a0a7nnRFP3wss<-_bp@-J+l8%nBxv>%5RHCWhBC4)`zv?H1n{i@Jr&o_9Xq1HZiMbi! zTz0ifk}sx=D3-K_g-CzU;oH=Lehhvx^pi2ULHEogk?bsu?4A}&C^Z_ksME`HMev&; zL?8GoS);)RCLxC@kW031xLm=B77w)Scx?)`J~!tEBRijv6&rU0dYQbazW&!tkJ`N# zaeuSIC*N>E&bK5Kpn7HsLGh+oTM?!T|8MM-Z-tyeZ*FY?67h|BPz;d4Pt*m4aI3Wl z`zVhld|$`V+u_D_6`Xbd802|yv8I1+D&Kr;ctJ@B${OrC^+i1MbNgFooR@VULa_6U z*l$C*AZ|*&BA_Pt6p};i4l12AR*4VNh89LNI3xs5H7gzErEXbvS1xg&8DSfUs^CzZ3Y+tO$HMLh_ z0l+4%{}(nJA4Ra)>++QF0JU%G-X@_^X3`dNUeFMrsHFlF58+Nfc)Ch8 z$J0BtD{&$dm5TRi#d3wnDu&)MY6CyX=@4Vnt+^jYEgXC)9H-N1Y5YA*O~fog6PxJ$ z$d*66`tkzSxF-Rr1x#2BAf_H=Kk~p-nlUT6TfYVTyDgHblP#8h zlgG?vKZSc|Y1Vm|vGD3Nh74HUa>z?S8jhN8;S##7C)M%iNLr32808&NHth~j!o!WV zhj25YC15q)-ig7g8QuP5L`5TD8B8RF1X)@Ap;o(BsOkAd3~&x(YClfljIsi`Evqcs zh3P+T>oDS#eKCtgI3vPEFx-yDVa4hf0rLxLYhlS--}!pO-QYIzek~0=C_x_AUrj}F za)we=XmANJC?38yJyWK)?jc8YRBo2|NV!fF;By7DRCZZLvP#2f9 zd7!m<3MP-sjQ_?KY`k?1P|}dR?v~d4EUOfP$l=^Pk-_ypnHK8*AxlxHL(``~NsJ0^ z;Dt1p$wqyPMz9%F?VQXtTQ6RV(q$H{Ura{up)mWcgw{5gakZFDRY(6pBTw z8GV##5uS@{#_%_^B)&^~V+dvYaouPha68JFRU*d;Q8iO2>xnOXuF;T`lP$;$c4j4} zP>B_JXr%J)B{04kbA5l+kagV_g=i{I_R#WDQQk28d(QbAlUTuBSJ9)IG3FeC z(Jm{M(dtKn(mI^HiQA2;cb*VG3*zq^V~?qZ}Axt-a1oC zKm^l~Ya*hbrVnvb3uc=BTZENpotALul@G>AENM9ktjWG#J6yT0y?cY`PEUJZ#H`G? zvX=LMrU_~PxT~f;jPrNKcqN=@Th_Qm_9s}PQ&KLxxt(?2duMzl^aJ!Cyap|1FhX0m z)i=Hz$@?OD8^^<9N#l!yrM{{Tk24;gLI&>`nYZx?YsOK}baC{aGFU@pd7Je93>~3d zAnAIICmE-Jkz1Y7;}sx91B00Jn+SLq}U z+*OuWv^EE2X0~V>(VM~#K8kAc{uA9C&i*^PnZ98219(?%of)azIcKE5@h`HmA^lht zwoSzFKf+ta5SWV(WxnU7aiXobIobrqE~f~JE~3d#gXA|-v0q1Lkb{rb?sjS%&UE{Y z-sRIr=i;`tto38dyvtnhTx$Ylg!GB!;>Jl}0^1N%M|udN+5Th9+8IgjJQu%gU0%Nz z@?g(4v#0Vrf5wO2@qyM7h95Wdy@dD^Ok#S5|8w)n38U-V3KM|Q+c17r_8;R(MeAtr zd}2!y7UG>_^#AZ@Z^}G)cp?K(3gzY{G6AVU(@wgGn3OGMC}!Fw^Z$~PTDCrI_C*$x zS7cKW5vhW0xG166FE}{#O}SnTm25iDFAxp?uM$MdH5Z(b&hY%)q~u9eKymx+q()D*iwEhk73skJg3-8cKZf8ZGmVR9 z8KC_|a(kKCSh{Yei^%Z!OI%V0$N{TNu0LAG!xxuP&)*--A9vn1EWcF?ztyoyb6Z;o zwINX18XdDJ+vVQ{pNu3G;o%oVfZxOe;|y1V-1e9K2gy3zFnbC6DK5H*oJ5ZD4M=9m z@36056v*9lEq*TR|ZTv}U ziSq{!TGLPO>2@Tv#w5^EVV<=1R-6jTX@asdX>CHmLDZpcuM`oPO>sd^ zGB~v*R2juZu|&W96-DmOdhe3U*3)I5gRP?>cKt6_Z8knHAh<9I_ekPhe7Kj4n2h8z zxpp0dal@xn_JSgVC)V2M1`TEV6Dd<6nFjvop0~?oga8Wgv1CBSo zsGccw|E-*ViG4A?ymSYgDt1#Nxo-uK-`$YsX$jvg?&FXi zC}b>OorU{3AF35P`JF;|GkgpLt2=)*!BB&JlY-?1`RFFny@GqW!s*vC%(Ga}raq9lP2q@Lw)q*@Viz zBgLOMfNIw18{Nt9mC7k_xptGU?Nx<91d4TSp5fG3WrX}iCZu11S?LQAy?<_B;7Y?4 z`OgMQ7ClL*+TmPZP9};ZN6;xp{n87Eej5F2?Hp}NpXErthhb^YrE(Iox*7v&4&;Z4 zLf%Z5^Q(Xr_*9I3TL7Eq*Jmw9OTK$4ht~s-&FjrAcc75>9o`$jm4_nhEdT4-b?pkn zVo%?}?Z>NVN3TcstoAcHqLmw*=&uqqVZw>?g(rQ!_Ya$0u17037qnQXg1;X&qxZ6I zTGz+?x|+>j7*|hHk{$hMc)z8z(z=`F`1^1J|(cOOI_g$D2g7z;4XWtDJ zcX(g!ooBUF-hX2EFH>Q#19Q&(0#A%!GLMk_7@oxhlXT4nr4{U|X-<vfp(d&89ur7*V7B{Mq-XakNAMgbt zS@p;2nfQvFlFcUf2OeMk7h5L#wuPf1q6+^fv<&22D=rdGe#p9?&ZP27zKPGPj}_VM z9dEtLeZR1Uqt2waxPzZC>3z25Irn({-sjvq*08PSc*4^Dh1jnoS1SLZ`SgzSjtbu^ zv3=*4%GckI`o9V93aR)E-jMNCvQ?t8q?9k!9Y!4)diK@Ewp|kNJ={D!Y!}*J8eEo- z0AAWUgt?iJpB7!fxE5RXpeg{w)#bv!zxa6koyu=$fv3K=!l3%(m(sX^_Y^2#ds*@E zmW9apCOcnxF^jydLhv-TerBt;=AysMP~}lnaQrX7R+HeHNjF!nzUlijnk^v6scHNQ z$Qbb(n{7_R?0f~Ziv||2WHt$09hNl`voR>8>nXCNy*zuDklY-U>?6Tk4)k#34FKhL zt-rJz`txi?uRC<4-R0IWMv>-ID8*1SzNv0V<_x2V^O)ZkJ8JjKZ^SLCc4SZDeTxo2 zmTTWFJ&(w&;>;#y!!VwcCbmXb>QMEFI{cyZy&W9ouPH2Gnb5u+0Quohc z#pP~$VqSaJUl_%5Tkn&$vW`b^)G?=Q<4#cB=Gy>UuagdR^iP9ODE z@M)PsbOg$L`dG%jW>lu_Yui?V&y{XUTdW*nR(+yRx-Rm22d3Q4BBdnXGZg~G6RNFvVp)o<$N z=q9$soIIx2i94tiJ*KR6j$fg?{<^iXg`n>4y#wcK~>?!s@bs^Q=dZox2QGi#*Tg;b^kH556E>51Z zxSpB4{T*8=wsVpW$4?~Ge_SfA^cu6X_HIUXXZhnVo3#rs&H#P9`G{QzOcg>pAwGLai)nD2%Y-jpao6IA zT(p=4NQ!D9;;JSYUwvVof8?80Thk~-(WR8~9Z)!AYg8lvkNM--Gnycu_jz}dH_t_# zVg!g#evXPp>2@P^Ol8IY3Ye-KbPkvFI25X1@hP*x!Lk^w9E{E+XYv~7V6JRRD41J5 z?;J0CfE7}jH8eJ~Uh8@qp2yzveUG68DseXVx?)12R$!D;;x->LyydPs<+TauQ zm=dt2a+F;qEWB?a$UJ>t*+wgzlF8?Eos;Lribys%rrAv`_OAN;E=ZqI25;>A~7gvuT%L~bk?vK0LzoD?{>)LQ@ z32&~5t@bOf>A_AtQV{d>5`)dczQdOdT{4 zb7`c5m2o(gY-e9U%75IZ^VK6UxxdlwVi`najsers|Zun4E}UOm|o zcKp=lGQat@U+hk$; z(R*F&HaF&3m#Jru51ak;`p;PAGH;GzAJ0}=L%;jXJ^ps`opX;pPa=4KIyk8EQRFyO z?Dp1rU2Jhc@#h^bTrRAq?lP>LR}d4@dd|l!C6H&ey<$4FseP%h2}&E(QR{^2Swl~r zh3DE8L@XN)`s!$`ERM`!PfoTsHC5P(O22t9JM{)Z^|0P$^$6}1VZ4~(R!QR(NT^FQh}A@&xVjw+OvxhB)RS34Mw`GV(m>1KGgyne5JOU#kllHKpS<+3cF z@1?>^pq+ULvGs_;EkDXZYHB-L-S+k+_kZIF!xjE*~qe)*d8d_t4mZ(()b z`^*M(KkW3d?quMb!nKjCVsv%a;oa@t0%ByOx}ZxJckn-ME9dcz9z7G z=37Dh{t7B2Q<>GacIbqJ$T(ezNrrii;%Ysb@W91)p(zTLc5sq(&VS?od_Fy&!vVAG zy-g@^!__g(3@GU*uQ*X?%lV`!8S#%9f+f76%McWIgVUxF{^`Oo?v#K>NstXgy~GNc z0#H8fX34=-_l)U_H@3md>U(%9POaVQVzoh`n8!DmnkzissQaKV+Y~ zY3^)s@5Ze1>Gvj*g-?o4Tq=nkBw)Y{_`m1vpjIsF)}4!&9fieaK5g3+8b8e1ORn5V zs|=ekBF#{tn&)F*kNfkJAz>jr`2s%+5`(v?<#I|M_=gZrjiN1JC#>WCJa~|AF3V$o zcpT54-H%_xas2`DbVPF|yKqvL-ert){h~T-Su$#H8P3^~e;$=}N5Z%%hW%x$_Ne1G zX?N10`w`=Bw|=(ynf{Erf}W(VZt$1-(is1t!OEs>c`=tuW<!&5} z*oyax;TvEzrQnasBWOG*a}?<`G4arC*^ZhsF`@JmW1K`$+H-yn$61GPk(fD3Myqu8 zk;*~DY!TGp50{VR`3;x?ONP#oO7MtLsKR_I9}MJ+2MQ>fY&MnIkFvRvjW-u zjX@Ss73K=UX<%!e`m(&SHG5>`l)5qRVQ$}N#+%k9uy`GdlZZ#xrPFMAhU!S8DxA`Vu zx*QCZqlf0jE~VbIde6zWr&$m1Kle0zzjwKR8~srfMF281K}=ya{Fq~9|3c)bQ2DNU z>Wu?Mhv?lmzv_m74Y)mzg%y2M%m$i^JA@r@;@jHI3N_r)uE}Vkz;ON%hEJ;zHp}>tSp9|vmaB=Bj^V@ zAEWZ4erGH_BLH(K0P4Q&yw*`D=5)EZ*Qvr!hg^(=CPPRQ8+=LoM@AbXY(w-X1C8Aa z+Lvz%>!{|gi8v(?n$YSM!AA?n*QURU1-P6M`3E#L;zZjIYhQ^^H0brcIR?;*(&ZPSZXs4+JrjpP10y`?H%VTmh=;h3H4pCb583m73L+vjx{ta6%uHw z`=o9Kd?CXK+ZCoGh{qiH3_LM7vgJ@-3d3c!F8$Mw4Fw!1TZC&KF6laR>M5l0)+cLm zmk&$@{kso9gUbcS)1nb8p}^-RS)YUIbd|^DAA=lT1s4u|tm7T#M!eJ+@jYdR+)6*L zO?O|LyArpdET_+9f)W-H@}F+Z!jxul1I8=V({n5R?Rn~dW@WyXjNeY@sTn9cI<>%0j#cu=U;P)Gc2RxXd-fHN!|#={??KgjfBVYWG-k+qnW8OpMWcX6VKnMSsS-E`E@cy`o@4l0w zVas!=Zq<7n`M~JsFP=~;tRL*`~y4U|DQ|q2pBerjODRGXy{|yWRchGHz*BK1q_F`;Hwnt9{OiP(xM@O9U7QZ-dr1x)=h)D0vo z;0eLBzZnBM8D zt=v*eO-C%mER13Cfh%P*_!B5=e-bJ0wf(X$o=Z%h@fk@1>77NbALqfkV&U@?~HzEAl%+;hjp{2miWGKx@jr(aRVW!kjvtnGaRXlZ!a zs|Ss-dCl6EQqS*Ue+-46>1-%TMYyrlOB$acBJ9dKIUOa|jkHKAm?16ow3z*HKGCqn zWkX@+&6cS5-0~zvp7Dd;r2SO$8r7RA?07*vd&YZu1m7Vxe5c<2KA!&3xnG6~w+Jwu zDdX=2)Y}+nXgpw}53I_x`y$*_G zsxp>9uKTO0BMN1x*78Hr;HE)v*bV(`M#&oMpw;gcUuA19oJPcLr9!q^+?uJGBsh8= zA_FPq=JRFXyYOl5CWtT1GYoENiio-olfJy_!*d zEh4c)@*S_ntoo%E(d$U#CaIs?v1z}%xi-Yxi(4JnUw%BmC4AmYlIym(5Y^jqwVXy1 zs@GO42ZYSB>#GHLm?^A!W@%B}kROSn&+yoN4D6n@*zg{2yMi2GH?3lE;_yZwQti7b z^ShHDt>Ip3Z*l&$Ok;V*a#vmgn`Z0Q`aoDe23T+CF7jJ01DhV1sv+WPH~)R3233;=`J2VUR+mw6`|g;*2E6YfCuomR;tC6A&Kig+vN_F zs7$%N_%hf1?|8y2&(fo_nz5N)f-$2V;iAG;JXo5wRgK^iVxfir5h9)LZR}^twKFHQ zFJ~4arc*MFp6O{KK}_@2;;>45Pfz-u3-bk|&;+OrYWn07Gh7v~bX+J3arP8ZQHgC| z+)Wv88~P5ckDuNXmp~Q{7{EKPSL#`WG7MWbjzQfh-V!Cl-`N-~-j`qtc|0c4G6WV+ z3&qkxGEcYHvH*r0;G2bZR+BuO<2<>gsE~Ev*|%ekK37T&5;G8DEN$brp}@g0sF}sI zu_JfDXzG(<7SZ(dJkK3!*q;TQ*Vgv&Kuj4EIFbi*5y%pHX4MUtP(QcTixSVI5w9qS zFKlyltxWE#AbNc(4KJXyRRY?jx#@BE1}+I9XPkQ1TIXZwLCfG@IiqT8<}*b;>V#-B zVm(R8#F3hK_y1A$7JgAKY`Zpyq=2M^bPqM8bV$b_!cd}ggMx&lq_iU?HFORsh=58X z(kU&CbR!Kz?R#{&p0(cn?C;zAKkzp)_nh~6UB__&i8jDJWse8>oO_-V%W$B3wNHTf zI76gvZTxU?5QW{`Jn|j{$HTixBVNIu4BMf7?7%N?p~{3PrjaoUD1n zf2}bXH-!DpvZRH~Nc51xR9q!hLdquc#+$TZYd#&vb=PaTb?z2%ZFUfT{sCVi#@sd(A7YE2IhYPpCcQ9^JCvZSn0mjoB6Bx^qu)Y4I&<%fgxo`_>lDsn7@N$SpEWF9_+y1PZYI{C12|rjGS8NK* zkH?TCAUoe{u4OXO>8nd~X42TnEW7N~KgpeYqHteuX>4FF&GDejcPrQUh&k-FQZNSy z&!PXk3(70XW!1e#ukUB=aW9T{3b_R}0p16;UD`Ql&R`vl3shl<#kI!s^0TQ19Y`{$ zP)YvVoZIQJ2>?ShnIEjQY`vU&L+=`olRG|DUJG(y(<}3D2TShszQKj+rJqFZdQRp- zzf5=x&s?877Ul9$xeU*4{q$+8Sf%l>4E&R3XEb8@S&>J-(4e|bvZVvAEXbb0q?fBH zu=P4I-5bd{tILN6iGXDp+&`xrt&-+BBIkKCsl8X$p2GI2r#jwqBLoE0ZYD!QKZw9udg^#=P5sTFOEKRVJWc;Q$=bM9s`da*0uH_6BUYHCureFrv_-q$v=wC$Z1qo& zot-kJL#&Y9+QwqiPP*86W^>WMS8#Y?L-Y2^;$pVr%4=LuQ+)c$Xn_22=H>TK>5T`s zl4i~(N_HEq_o97j2nuK#k6Ho99$DKV>F$P8cRiUZh=3V`8?GXEkx{E@@fThj!kSlb zLCwp+^zoT`k7;S{#~#y2XcXwDM+b#d?I~|p44RUz&=}nnhQHg+?X{-Yz`~fRMAPY; zrdlq=jmYckZO!w(#ZQx(zbEGJn43;|=IW1TD;5*DqNR?)hy1Ay0>Rfuh-E zJz?3E6N;1{bXsWW0Q-NW<9dV3^`Ju*&VBA`3M~2yLod=vxbCy>+{sHk$5dX7I=P-9 zEHP#()e8WB3CC4Zxtd4g<>hWYhM1CsuFBH>Dt*M|icx<(pz z<2?Mfp;Mdw6qUAw%XX$6#~uwQ{Zl6z9+kc)vj?A=JZ6$eVTG?AeQ?>TbLeQ>tv}|% zg)S_)4RkdAEXbUeS~jO}_xpi7x%gDa1685FW8!pnnna)MMsKEeLTwLQE_y;U1duDJ zo!sauUN%X^ZfF=D)cmxNGfxuppm-^XOcyBv-CAG{MWavlHX z-E^?|sp0yaN#oK^p*OKF9P54SLjCnISDDW$*u-^xh83Z(;dj>Lf1K{`dom+W@4HKI z{WD?Cw}a$kQotSzGCa7(;y8+sv6oiC~Gj|Zz(byj)JqZjz*UuaL?J& zkT1P1HGhX{IU^q(>PYV%v%Rx{2CLc%E#ERi32qOxMWs~7;hdC;+MA89vr6a5rw zPI2@IQ^7R7)b3MRe3)j^RlaHrK5_7ovY~zDEkzzk_d8F=_TSTMFE2k;Y*q2Wd7~{L zLV-Zn-|rcAwWH>Hp?_h|6toi1TlFfQZMJJx|MSGm5zmge_HzlD!^fHDBg2~Y^L5dp zR_eEF?zlTO?cPe7M#f&N*SUhA^NtPMGff{Bdk-`{`)ibGJWfAsymPEODZcg{#^#-& z9g+(AQJo*eB;0xD`hc>|vF;I z`2J+O>9WV;(H#V+3VW07r4L!W&R61A&{JBi6zwMs<}F(DHp`@k#gO4s$Xg7o%PRv`v1ZCPDKx`ZWiFJ@Zi)Zt0yq!3VyiSq zQW^Jpm~TrgZoRRg`}A_Vz4|qF;ra1Qqwn0+y z=pFa9Scmscs~HmRJ5A?Y64I_+B27OyU#h|dXpyAm`Qc=q-dpRb4}A9#7USG9`-5Sn zUkZnIXKT&_%Z;2@*_)o5WX{nY(l_kY0baT9U-g}&t(PNbZqIs;H%f`jc#ST5_&vi; z?2h+4kLBiLeWa^@H*!r=r^k%a3bGCz0qsZ*AFOmvlxZIq9+C*XOBql($LNWt zYkC!9SU=%#HRYNV{cPfc6)$z7WhM7O6Y}_+XV|p*Nio=$xvu1Fh*ckXg=tj_TkuAF zt`vATP|@Y*-9!`i-QvTmNm8p#ZtgOd)SuDZ)b~oVq)d?$a`E2dX~l7dMcScZi_v4d zV!cjJE7h&d6VzC3R^GF#fs2_E8mtl@Swt%2ChLc=b1u7@7z3++=B=N~r3Zf+klWkv zZTi|l-~xIR!WZ{gbr5uC>0zfDvwQ=(k@8?Ax4N7XKNujr%I?>#s@iJU?f11TW*Y5@ zXVetJy~NWFEyJij9IfOU5WE8Gc}d;P8YNxjU$39oObW{Pz`M~>WOllCTKE2ph0E+6 zC_|*Bm6aiad@;CtYRrZ$=dV#g67#+MaB*Y2Z93e65Kf9T z2Sio)Apx=RI3inQJiO@-f2LF{H30e`i;yU=FGMR3uzq>ZZUIY^l@K#Li>2OeVfmc7 z0G)m^6RSv5vg5mz_<@-MZA2>_iU!ZV(&{5|9bBz)WRd`V<_C3?bF> zkOMYf^C;ooXnjNvz6Jx|wq|5?$_h@A4yu05{ist<0l)E;ER`{_pawx8=@hj_NoEQc zP*q3IwVv%cQ#4H2G!*Ab-JWnYV|&}_p0d2$g+4^+Yd=YQ!%C)&IzyWU zi=jAoPZg$^47SLzBtFh`5iTViBg%G5{TQH!)hgBL(OJY-+E<}7WNdW`Pxv7IQsj<6 zrFtm0g>FZ7w{|~~ZOihDo~&jnCf#qAD&H0;M;IZo__(I6EV_WLBoU+&T~{UoAX#|z zgTgxu7EF4;N|6yrzUuLY8PJ~+Ccf(z{|L#(*D`0N(zZ}5eQcKzGe@E%_rAre(#_Nt z0y;OE^b$O`%0r9|MIy+(48LjXcM@r;5SXeRrZNJhDHlH`X_Zhk242coNxonu)pg&q zG62Ean}z@g)}-PvEP@`fBT#IdhND1z_1|c$RHQrolz>K107RmfVkc1E&jT~XSnoa5TN~iu2J(ODs zrr1K3Dfp)+RT6`?)?u0tg^x_8q*$13(N27RhRevlx`y#0BA*TG2xGE*GS!x)Jyrx90Sq*~-#mLwVt<#f~U@~@3Q&?(1#JAE;|X(z!o&DTKpVj-LFrmDSQD$ot=>Y z2TT+2utR{kDr$}oh}WF>wWo`cZ>&NhsF+@m;cAcc91AK6u>3);?!EX6xw<9TltQxx zty~jf$bb6AOWPDr&Ce(!lQcQ!){TeSIu?&Y9}Z9D=8x6U_mdq1o)eUX0|2g|W_*=T z%Itu8bR^Y#J?y3NIGe+I@6(U|u8%(hKZ=zvC-#VPpg+puLiYZ}w9|}p@1w=wH6!y= zeyBr<116`pYQ}pmf34--PZ!g>M0tR=kC@V*mBLI+_I_{W<^wY$2u9gbQh|+0G8QZ+ ze2$0;oCdqVr4(avtyF&IqD!{mpwNU3QvGc3Nyq{d^Rr9n=Xg+-(Ht(MVptaK7i-lM zZ^f@wj zkzm_t0>C7b0>7EOou_?#=6P6lc5~BD#)UF-vi!U1$W2fk?~cx%(8Mq)SEJCYobL{{1J9xrjqNtPFc0svXwrT5gP**+ESk@r}+B@19k z#KH6p90uUf{`FR@NOEi6*-|MsV4%rad{3`pOpW>mEEe&;9mTXSb6}IeUdC@0c6vvJ zAcfEfgOBd+YZTiV+VIE#} z?PPCs0c7O235fZ@Z>F8({bBHk0)j7E=8W%!*m}`=fYQdjC7zbx6n3+ZG*Rp=; zt@Vt@SPEYlz7IJSeV{Nay->o?!v|eSpGQN`@Kp1Jb zK~)r#xB|KFb&_*Wqz)MFeR!lf@JIUNj7#)LoBx~lO5|$aP#al)#r*3Ax`2HMq6Ty4 zD940DFoAt&6W%49j%Di8`;)V}j~z;kvj|Y1nAuWn07M12%|3Eb&~Yhc87S`J3f1n<~s= z3$W?~)4`{qERg%fcCw1W9nf3d8W9%f6VX%0be5p@E z0N@^jDi9qaH@<^$1E6r#m6g+(R`7x3|32uxqf)C2G>C`}d_N3z5Vj{Z$MIrRi~U8U zdCqjS11ke;tv!dB@NZ(h-nta5i7{9=xR5pTJ2c_?QGt5M;9V*nWT-u`(9R68yjlaq zDJQflDkqIms7Wt5&JstEwLOw%3PujAGRU&|YgSDJMe=DkJ!jg83a;;tf9mKSR5JE) zgYa$GBO=pF282ixLPTG)CNwJur5;?IGz*fv5&auj&(gf9d(#pcd(1Qshh2K_ z_PAF5_WpQWXZ3%J5VN%GL>`YXMbEsOg{Kc56oeoc)mEVorJ8(NV3VFLh z&NfAwA8o`)Y4kN|wyoaeCVGf57`63F_4Z(;aPg=CKyLU$G-l$8a3(Eo@FC3+=pYU)DlaGb?l;nC zC8QQN`v@{3<>JNj6z0f>Sgx#K_4;K&C_x!xYd5YEE?yd=HSk=D!=pq+qK<%YyjE`V z|BH0QWTLQ~@D7h;L5c^u(Aq1^R@`JBFQ{0bYM}TL;19pNhA@7_qE!Y1jbrsKK#+&j zASah3H$WWP+5tm5b(G8WJ>sm@=h0vDW7R`lg>GONN?t`q1%3FfD%-HzC$O>-7|f$B z=kqZZ)(@w-Ke-XdtC^8ThT=RO0KbN}2!6y5k0sg_-LW4FR1qSVpO3xsBpOF70Jyjp z@*qdy15dxaEzss2C(GWe5PQ(G51>vv+Ay3ul%_2ml5J|EYR2SBU(aa%)MO7c98xtn z+{W`)4VdP&OvsAXjL4?Vmnw^Bb#9Y|5OM9Cg+c&N+`JezlTrYn0eVKoTuw<0Eazjs z=U~`ZbQ7}y7^iG%v7TYh|1jyY5LHim_#clVO8;Xxpq&vnf&qN`+Pur4WPR2qe$CEZ zGRWThbqZ3D2-x{$017VwMPacPP3=}M>dN5Nj7X-^oAT_OE?B-uXBOs z(2n6{*Pz>>!7q^MQ8crvN<+r+BEYJzJBNQ8iIDeh07f8CazPb{^K2UOSMNpRF)p4! zRTvj^?z~CiRbEgL>5O)g%(*Yz^bjGY$mve$+!gUxE;7cCoMivg1po*~L7=$|-PpV> z+a~asLikoJML-_7V0{s>K9o0kBB!RtTP4Q;kEA(djM2b|-PU{k%6x(t44{f-I86}lWM-?N4(=g zkZ(d88V!f?R8TAj&_G}0)zhadKv?>a?Q?5Fh(VQnU*gS+n;sYQUH=dONq%er@+8&y zf3i}aP|R6%Lk5aRcP&Mtc=V}FMe(WM)8RPJxD)EXv(lu@_ZU)LwHY2MI$~7^u#M`8<{z~FhFj|~( z`R0?M{|PBEkR4(^aH6^p*D9I6rze~QQN*_zQAj4FcodDB_01y4N2=iWxHpfnnbHo= zp>%;-NN<0zTc|m*bk(3x6JuW1peasY2PQ`-TapFGdbrW?g_8fytASKZUrP>!-8MT} zN7WZSC;TBXam@-M?RE7=7Lo16Yk&OG#OxGJu}EPEu7S3b5F9nX9mh9A=@akM1H;?D zGZPJf3zI-e0HvU)CKA37p51D`CZuf>S=pK(Zg!E=8~@V3OIT2CTDY zp5m&*!3BH=4kr&}u@!laU^@5Jfkl~mAFb5XH;F5*mEM_e`VO}ydULP9jMso3<;no~1xT=1=fI00aT_@Qf`s)=9<6$n-m ze_|VrJF;pGSj@J&Lplh7iXSkNq1-<^qdo?&nr-_9Cd#ANu*q^9*(h1XVvuiCBIZuT z*U5NNQ|s<3V`lqFW={U7v_nh52+~Tbh*I;iv$uf-d3&SqzyBdk6zsw|%914D)5K-A zibV48D_$`DuuBKwYDW$V{c{8>u7ruO&2cCt$zU>5LuUq4#-0R1y2xLMLe&hZbus@9 z7(u!$5>V4uCgdR4rnG&oPC73+J6Tc$I|F#h^**MNxBVmfAz~l&d{xy!{3h3Uz{gc- zp>X_GT4`ErurN-0)lW~2P8HPTRoz;k=FzMLvK3h50~K2|v7kM$VuPnHdXP5t9&qb1 z5}FY_AZJ;5`wv;-#_Qn?Tkqa^k@xW~0jS5)4o7KwIR{(!FNdy*K zNXe@B#i1R!FGSREmxpljnFpBDwUUdU_0$Rw*;ukM&uGE6rc0?>2A>0JvZ8_1H^)bU ztX)LbYA|xKj{sF^S0Otvy#-i32g(@`hh}+xKNON^alI0N(P(K)S@pZxuS;fkZW=T- z257ysLWq(x8vH9dWf5`%5B5YhNpd%QJivPMf(H|p;sq9#zHf%d^Ul_A`b8!j(7O?q z18ms~3&{Lz^i(o=a}r-i(&Pp!3j_|w-_un?;?>yGt@?&-85H2%K~)&DQS z=@*zI4%A9%?{JQ)GXZ}DT?U(6ODCTqh0Z|_WgBlWT&|+{=ZJoT4P+0bNs0Qv@+FHSQMY$Ed-c42u#9R#0gUJSqSU$X+VyG>8&MTC)x}pC%G^O~bb8 zC;kzh5}#hQ6bMo=O?mm{|5E(?wUQ@5aMQ|d$ZpbD(;@_YwJ*v%KLP*$DluWgC|`#+ zDud)v34ooFmE(CR&_X$?ayC;vwvM!rRlqb)!~?kTNQ}6m!mVF+pV(SryhxpN(4-fK z(kuhH(^yA*Cxw=m6&F7AWq-UVzw4WbjdIFm$o;cv3cy`!(K_E?=J3t=5HOtS*Zq`6 z6wc{reSrc@Ykxrn=fQ|=QL5W)uN`)#C)mLbAea~J6x4FcnY72W<%+ZNJClE<%%KIp z=Vf++AApakq67U`p(HLMU&}*g{o&`N&n&lJgP96`6EjLWO-M1IQor6&{m(Y3#q1Xq z&P>bu&o;>!n>7FXW*au!Kk`zGO0{O}jRE;1J2V=c<(iKZ!Ezo(-chVK=#CU)BWD%A zSnxzVS-z?Dw|V;SM#=i$=IJ|_3XLk!se=EFusjeVN?n$}FoVvX$#mxO= zC?aRQunEV<)?!%FbSC;z9frudD**YLgS7IN+Gu5Lm<=YS?$Xlnk*az0uH!Ji+Ds4n z|JNwB5i;|N?WwOC#P1nl-vj1_Umjqz`AL?38H9|Tk+(t4&AUhi36i~N2g`NhDg6iR z*}9g}Y!$-ea)>VFZgO_Ts2G&A832v!R(7n3QnvsrLmNX0VXgQdZ6d#XUKG>)Nbx+s z-)nW1w;sg-8lQi5N`8d7^vv+FN_M(cx66F@DejePpMXnbYIji863!Ik#ckcU0*MdjYbG9Gq5=K0URp@6&?Ql}FW7U4rS2rVuXdRj zD~B>9{i9sMqtb3sxwHmEK0p%KS7F1K4hums3e zWNW+P3(9)qrT-O~Ryd)*Kaz?&c>nB{EFE{mlia9@`c3~^yYyg$^Ya_sK31p}1beOe zQt#alOmwD*xThPF#ws<3|*Y zDu7Xo<`U{8ecnQ$m%N|DUVrBCv0>fg;~Qg>vz)@V{`7-=_NH}_2U6H<76aGIuEyt; z%A`o*Td1~5-U~UBDRJKCB(`1D8y~Q|;9>G}vY>HC#*wNy-qNPcA@n^UWsJ%<@J-O>I*v}0ClxahRROLziTXxAM&<&UqgVmL|@0_k1MikvGLEhp(gIV5e{^pHwZ*5-?#eL|2!0V_EopM5osQ-5G~cXhU+x> z5$mbP^jWA0GDmB+&7a11vV!Y)+Iyhj&aT%&h?5MSzTbwCKk=p%D}k|Fduqmqc3!6M z7~?aiV=~i(=`!M!n%>J2(Ub9(2Wu}5#zd}n^z>xsn~x|=_SloiR;`Jk)A9evd3f!e z6vy}Qp+bWR__&%-1lb6;H4cpzeP{d=tuVomswyGk#Oe_nL%e45C34it@?*qOg_>Y1 zzc%sZn!dNdc5rxs6%h6)MMcJi2r4Tl5^cOf8La!)AEeuc9fH}EiUW)t4q6?|U%qm+ zs_PkhZ<}u7*W{;ZjA8V4UTq*KnRLQ9<}iX9+iz~xHQ*OtXy%-q%6nGrTqr%x0E0XW z_w$lUVZ1|O{7U7UoQviLKH`n;$fHZ@HvC68YY^AfLE+V_Fu@G}eV5#9kDb%exyC^$ z`(!ggA7aEy0YhYiN>aQLd`$&32|IUnb|LYB>1&JS5 zta?d~&-~BYMEn@aeuNY>dFizHZz69%GaAhfQlw10PPSib?&XF(n{?e(zLI;yH`W&t z&~M^*^~RsyuYOnj=mpr|Xj%Vqv#mS65A53`7Uuh7e=e!E(euan+|ex)bpcBusm$8V z&`(!a&n_!+@KxbCR0~zg5r329HKQ<-fCf&$d0sgF@XkNj8F9t$|sR}v@7N6pY4zjQn=FKzfrBMn#BGxQM8+^<-oxPOZ~fX z^hId(GBkF_F2F|M`0fXG{m32X(Mt zXqG~p+)?VGkHWBMg~k%nO^aSY&PD? zJRfyvblbb7d45!>|KwWa8ri7H>)mwv$;o>?wP`Vb?yP+GJgJTA-ZP2KzSkjV!?`{g z*Bh0ZGa(lJzK3w-Xqkp*Q>h=fo35P7yys-F^A-+7!^;#8O`h){g*~Rd_J9m8V@5Dm z>NPu+xnJ){uI%JHJoU-lWLB8E=vq06=<1^2UB?R%<21gu)|;?+Yn3!QZ+M(#_$w=} z7fzkYe>%YUs9VMTm`zkrG**Kj^%Fi(sv$s{z5ck`*Gpz{L};mX10OHKqnW@=t^Zei zB}g__j~yi=6M9yd*iOS?Z&;1!t-5E?zWj*gi3OQY8fB4PZM}Vgs=nG5Bq@yL6H;7* zthPS;()35h`-a)?^)oV^7lga~XO%|=b`S$+aV+cf)AtYjakQ=b$ovahyO+MayvJuR z3T#ebnzQxl1XH3vnjiX>WZTI+d)8=D=dhPfk#W3I={ySdUzayZpuToJ+%9mW|HX)TNj<>erF$cC6D%UBmFu~59W?OL!)P1N5OtqUyTU-w#A~SyuMCdtsUdP zej6=89Y*8Zk~-@w7dE!ge@q`N{-f5OTK`4A|Mc-i2e+oH!@-z|&#Io^YT%~Q!J!CV zMM`HpRkl+Mb$`5&fb3C*6y!&@5M!nwkcD5mp=I%`S4zMFJtQu%>)5HH1s}c{dOlZ zc{LWF4mmfU@4;G+7biDCZ(p6{p){5^mm>|MO99qoiEdb3nR_<&RPkCUfKN~>x(guo z*{bmYk7WrZx_6&9q}%irnI~N_s=R3Z2>+0#wN`f5Wp)cIL&Pwe2FX|4^lI)V9z22k;Lsbilh!d;I}&9_dY& zntn&_ZMJ(f)S2h`V870_&Xr8>9i;q1I@ojaN7%IUY8W#zTvt!m`odH5a)Kar=kviE zr*q^f^szBAm7T`@>0T12*OrYf6OdD9l07 z$a1uo6pA-H*g>YK=2blVh4M=gA|EJi+b-MIK79=r>igA7Dyo_G#}?bI<3Bqdu7sy5 zn}7>>4`0Lr7ia|MZuTI#v8UP~KP8@(>+h%fX++hG=iaCop{pe0GJLfJ9d(-B%r~l` zpSI8&OKV40aqcQW*Ozc|p8>7M7%cCdRJ>g*;wZac+~T&DlzVetJhcp)z+_d0N+~|ZFu6INlC|5Qf5>np*Xa&-U%42R&059uP2q$k z;?M-zV_+-~fA>Q8ZVpL9MT(kw!IT+wRz80&6BIF46*TvQ1AlM`4^NnON`=F3Xnw9kJDi(K^&F)iOjkMP7=$4=F&$m*~*G zqjixkDH&|XFH#>6pM$2~PsI3CR(T`wZ44J)N9p50qjTQq0gs*7MSEJh>Zw-3*#ZBf zM+H%r##cK7M*a6+b4VW9M9+wGuCkZcZzMH-zO)&5Ioy@|c>8P`JX7Jjr=R!!$7+V8 zpN-|Y(`o8}pDV57>6*TyPs`g5iP@>^B^jrrDKVQuj;B)B)ylN)GjDd03ZCx|28?8= zKZCLOIhce$xcWIx9ne+M#F>$hBDf$|6k4Ez zA7-DTuOTRm85wflEIbjbdTDYxENH~VfG0g0sAt>}9kD7$N8Wzlrk{#`u>IK61BU% zDxv(No6AYeZ0haUc8$XT-b-g^M``TEBBYG}88p{nM;htHzL+6%v2}h&D#P=~lnCsl z(Z%CT+J=nt;606|&AoD;z^87^3?Dq3>xDh%fI!pueqVLd-EZlcgUMNxYZTrt-RG-? zaxqaY>J8_Mh5nCU){>JNUu-6(*H!pk%QWu1&g5jS7D8~7`wl<4vtJAZeOBT8=xt^peNk~rLbY1}V%bn! z9(Y>A979~>NUafRV%e`5eceqy)f$8%og}BBB ze?EmgiuisV9p%Y$l58w)zDL-60z7?7vn-yES*U3PFH$=lAiWIn`%VRcFqw_<%^ggJ zVb{>us!M8|g+7YRgYYfl~e=o#`vK>->znboIn%?FRS7FxxebqYkxu8;g(moqO8)-Jig z?StU6BhoS8>gG~n+Fhe|_v3-_`lC#%XRqg^uah!eHv0FR1eGPOt8M0f4z|%tH(ltO zbewvm+^*YMIk^;kCng`6yq~OpwWFmxG9}z@dmKapf7hpk2qJmOXb)PTMeoc<^&I|>#jrkGZ z_%K0GCY)HE;8^{iF6>(gncFK*B6iVV}lmeo5x@>fuTbudnf86Ed2l+ldi@Dt(PWQ9M>03(SqZx8~zo`Od@l+FJ zV(z`|iL+RldfM!LP{|@!+eSym;Yva2p3lzZ`6nY0!_}}k_pj=+AC9V>q^@Fwdz7JP zx-$Oj&juv1uI}POh2(?qT-%R7yeO`z=^cv)kqWR37(jk}>SZIvHkO|NmpmHXt*VG) zbEf9e_$(6v0*>+J%mbDv_0cMqQ2b($)gdaW%uSCGid>{-ppVe88X3c)+WC(~{aUDS zpO!28$xj~?sr-zZx$~h$%u@4klcZ@GAYd|44|sCHh>H}v0PlwW^6jISW{y#Q%hX4= z?4*RRYdOTGHd!gfzKilHNj7cF6Tg^CI=NRL+zxaqT>6qu4;D?DJNqpkpa(44FTm!Q zlp=4~s3>%Me*z9Sj%HlHw#o21v>m$KQoJUiJHIdyzf#yjo}WyAQQ@Ie#BjbtbM1F< zk01du;9=yoTqjKw}>&fC2C&5G5@6T8+SXr1hd9d=|D@vXz#LviMMPpazk@v81)!J zn<0vw=X(*FI&w1Cj`P=TPS;yuK_!C;Gn!VwyG}`yx7cc^guNSC!|L5SR;{IzROO^6 zKT|5{v5OvKS$^zUbmeZPw2NM}h#sD4 zIHwxD_elN)8JK<<^{m9FCuOd|e0>g4(CO0DEpj2c~I0 zEcbJj-JRK5_+)%+cHf_0y5wWS^7Lx?g#Tq*($ysEYx;|yQ@odaQC?k-2YiMxo3}mc z_jtx{{B}Aa2Gw-i_R0P_{!{e_e;E-&;V&CW!Wxv3(g;s;Jiv*83(bQ30I)Z})f>;{ z4XA(tq3!QBy9m%Z;c8+i<=KT6BrB=&Xy0&+8hOYQvX#=?Ykev5sps<65fl}+XRv^< zy={ecmi}>^>rA7Gtz&vqE6~6``cWkLyZdoD8yn?k?Iz&8IpqKdfsPa`iY7Dq2O^z5_a&=Q784*B%a?7pG50M zv&{UhBz90&@{+Id08vxOr(5({`DY5T>}_T^N_*(y<8HXVs{DJHun(urtk-Kj=rVkI zybX`q>VUUm;$jb8&vM?vIsl=xYJ!ch9G;g)h-d^Zu)`BU6WD<9*TPDW#VC5y0uN8u zCTDJITQ0QKhb=Pg{9WY{17ER#Rb0*ry^2$>>j4959%jUyrE)aw3RDZiny91b?>?tA z$NTZH9-Zc&_|END@I3z5tN1nUY2tOmY8&h6=hsY?*80rbT|~7~@b}QbQ|c3b93R;3 z9pil38*70Ld#^v|-dL|elU5w2W!!!z-ZY~VM!Cm(`{h<;ySl>kGD>r#&=klxSe`p9 zajbrl^azR)9rc$}G(EVq_wyz#`Hb}@;pK=8rPsOzO}&fL7Jof849&3=&re?3O%Q&n zn`f@<#4u`bM#;se1PfUl9-|}xztn>4@7xMb&3{1(QZ=XMqxWEDx8 zQJeNo5dqv!M6_0~OMATmMNz78CmQWZBSh7wpKFLfH{yCA&eE@S5ry%0LqYw_T|`to z7@B6u=GDLr)2w*LfZpoE&%}T9Lw#^2NkuL7>Hq@-wD*u@FmP z7k~gJ6?FUT8jC%=vgAq&GsK!tb>TA-Myt1IXFM1n1qhm&XFUl;+2$<1L#IqX-xT@gKsdh zzHc>9d_%N`y7|*=dJ|dJ^*x+8EYOgL0Ns?*&^+=~v1M2sN|HyGYnN<(Mgo^>z;Tlq zMma`r{nx$8BWVJtin^+n;4UD!*V1Jr18yevZPZT)utw{q0Gc3@jCLaJcKeHlP5DSF zV9UL}KtpnSwCY15p5~9DS8%x0&Ed*5zbzAUq3R|aqtM(3g3pJ%YO^Vjp)t4G+bukR z>AzXHy|Vb*u0BWsu6g(;-+({Uf2>K@fOF?1S69zIbMghEv3Z^Q=HjP0CQm`T9jSd+gI#8SoeDNi^?NJCq$_>mvW*8I5&_(T=LrLUsr!n#-CqjtiP{`{2cip zoQXR7vwue38ZQkS0jGtRFf*15u%@Q!e%CE8k$})y-)F>D!Eu2ta0#|OB34^jA%Qm6 zFwz-lkzbBTe6D3r(Hk5Z@loj59|6ANi8qw`>XWE5v-m;)Sxw*i8gx(_a9+ScfM@-| z0KbxH_Ism@2N(}5S=>e9NC(sI5RpIiyK-)37PR=ZoHxFRkNAE0M@7*&&-suq%Y{g= zRbFCYe!SpU&r62~7*%@v(AMjYZmCLY6%w)P#(dUWl0vkiOra`O5aE8)JSny+xnw&A zzj4OQR1Ki!RphSX3M&wmEfzk1XU5`-7BowaKwVS3&(mv}P$LFKAH;bbZ-uu<^KHi3 zY1JCA%>Row@#HKP0JbNvd-QB*A0r-ya#Y0O0~dhU1v4wFqhbM950{+pwheFzHLL)* z$|nFB#2md4P!f1U3`LTUo@&5v2o6vwzToi2Rx>oTj{H$1GW!ORkQ{{j@67-SQ z+H@~|IvimB6B|Uy>Ldphh>l|gzhwqcHbsu5l07s*tAD`QX)U1e@!&%36IsKG9oi(Z zg#Ol%tUAQ{zNHjfVMj0o<33foTgu1rVFR;fugY8lI4}4(Im`IAG#o20OTlWXfdC|e zL@Rv&)2b(P=fu<6h#~RSS9yC%!Dr6Rgv`()%CNco+{3SZJPF5FmvkEQE)CoZCNn4O zoC4uxh1@-=_Pp`96gtk-_z+kwHr+XK;{S^I3xf;fgkUMQQ{Np$b(0vaWxZ#9Bpbb#hmuN-+!-D zQc-C#Ym@kr$D+iKm^_N@zpLoU8YHo4qt|0?U73-gL1M2=Q*H1WecQPn*bR8q zt?l99yZw^!5ZnS;j!<~x)seh%W(?Lj6k|5%AaiB;1@b5u-QaNqFV90l(A zSc~`N%6=vNC+~s-07S<%sL@^SV(j zo$GJy&If}c6I+8fCLPpYe4V#$yHUpo;xty=SiwZwhV+pvHaZ?USdd=?xlISItaOV1 z*#}UiWp!3^rha|~N-@{5#^Wh$ML|l|;q9FN*$3EjHXkOdpt^hM{cOW@#kz;gM(~cc zUx-!&r_u(+gVs^ikN~g%CTkOnSV&%!fE3tfmLvSOsPRzHN=;YG3{GOB+)bbqWS*ZC ze&Uu18V9zP?$mdLt)wJ5P_x-mA0dp9*)Y(n>M8*d30hyoxc0g}6VzZBm`ZIQaz{JW z*1J)!87sEs_1sMrqeU+Y@T4+nJxbsmH@+?V4CQn9O9FpCoso8r1qB2jd&l;x0&S&l z8<=H}?Zi98t~mi^UP?i&PbLM3_eClOLpbbLh`ilyIWh6tsU(fHVkmae6$lI1N z1XDx;m!%3W^HFMraOpE9D9ogbw0zh#0pJA}KLy1?ED}Ldk@gqBLj0Jd9FwjN>pVbIA%|Hb)Vb_D;6qld(4%Wri_iO3CJ-}$8inkGX zi1)Cd=qb8KN~wd;o3_F)>pY6(={w>AB)srQb8)ozlR-fGsZh~z^TgXlX=p|taOCg^ zKTYXRYoRWQXrLRi3m|_qkgA1(`QQ67??gpvb)wr65LQIS+(CUNu#j}PtfJ_bPB%(e z?1xVR2@z zCQaq7=_OmO1a9c6)tDs@`Ol^aw%HebGBg|(`T^>_i0mBx-2ddijO@$o%8K);v`I!t zpuppZd!Q%D;X0=-sU#&q}B$Uam+uznd*8jh>tEwz4_PtQ(!6BPfRzm0>F7BdJq z&D-kqQe&V(fu`O)C2uf?nyw04eFmUfVOVp#wfG!-O2n9=MK3el^MUPVfIwOAo8}%> zUr_sXeOin8W^GIb71Hh1Rz2KGL0}Amf%pE)zm6yd#hVKe03aN2t34=oMHVyn1~6V1 z2K>CSeE9*f6tK>7Sw!A!fmtLwBI|um8{~dVd|_cRi7Q`Aac~Iml+qxQuiwUiXwjatqCe*p{FZ?+9nGAX`n6<4 zWoolcSX4JAnXqv!X_07*Nca}ZOfmRDN$xuTtGQ-v)p1I$hov`Jj&JP<5nC*)AC#;` zJ-}F>rdhmgu7ZvBq2`gjJbA9Dh(t;x6W-5ipoX1sKgkggDcMlm<@Ls9CU0ODq*{+M zw_LUEBZ>^&>ZJNVkSTBcFf`xR0Gq9@FgHI;{`}j_N4MA)HdH!GAfTPnR);LA7Q19% ze~`>2AefsWHX{IttoiK}Ug9b! z7r4iaE5e`=KoHvFKZiEQed@Brn$YYZt&NJsB zqgpY8^Se$TNCd{2@Ii?!-2RD|(^q+}U^v!-2km~%L~B!kR;yf{i)SQ8o?+$O|Dx`_ zqnhl3y;0QHN>fo#s)~Yir38_tAfQyGLnzW)Xwqve6zK@kA&B(eI|QV+5b1@ z5JE_DgZiFx?p@zq-~G;7_pbZ>mzC$)&)ze8X3uZW-ZR4}-W zABOCfMUOI}t7?m(~XHtbEhC8n`xdI9({TsWn?1Ibrp z22)gYXoj$R-C3;28$V%Om(~9D1t8DvJ`E&SXuOITMDxt3A55iETPtiCluw-Fdz^Is z3npdyUM#!pe}ua}_w<}Ad-_;@Pkl1~;fs7(#R~1aDhtM~ zpUXe5`N%)_gkTo=yI&%d((VliuUrSb>pJ^b=ef-0t*dW7BxcjBY~MKlvn}FSw?$Jy zOID16clJH`e)zV;jm&TL(5IqS{|opliELwjJREh?6Ab;mj}#PTx|yweS^cKmwu#~^ zav;n96nP0~e4Hy*d&12X_T&=K+iQ@)c{npcj*s5qv!$G-X-?OpJYGIxtZ_F7A?%Tc z*S$CFGrc~{H@ulIv9`_Y`n-5|h8$~v`X+G+m*GDoP5n7iJn1uD$>@z?BcT9|56V1{TI!2ln?y!bx645 z#n+t`E)){dFH%DXKv`5%J zEt61kiQ<#C-kr8bIqwr=c5jrCvn-I4cqJ{6E6ZzCL9!(t{bDU4+=R_G!8yX3k)#0M@lW^yO`gxz@breDLJ2Ef3mmymy$hSsJP5d@0S~-XSO*W90&}rf{O?Wkw zxKk^oS_37H?ZhiBWmC1ys`2I8^6Z;t4=P312Q1bI$EG~b5L}R7e8t>nep9Ir-sPSO z`v2h_8xnqh*ZJ1RH@@!&MGR$()s=nEWb#Tm^-3SVYo!g>5}`TV@VpE!ZT{^X``nB! z*i!UOet+)Gtu_vmD~8WYax4@NKb%z`(?w9dnph+sQW>kwi~8Wd31;<;e`?L^Bd3nT z^xw*6dpK35+bM6C81G(Av7I)GlF(FIwB>wE4*k_OP#a|@bYooHp@-#<-cNH@LNd;67#@%m@Hw=zu4(Nv^-qCe+MkMhd5RaoMFQ&LX! zlba#Na-nKN{|w7W({z0T9#pnirM*78~2)ACF#*)?Zw*DePU;Q zl88=I`|>KR?FM{Jfp=|>96R-&UN3TuOe3Keh|pJmBZA+|npC{>ii|TS*W|n`AH?Ns z-=G!=slUx7@9tkL*r~UW9HNq7V5vy*szl>vg9I&lS7E}X$TZAg>a2X79(}kv9!7W}~Gx1mz(rE-zH)LxXi6f&3L0S`7}#H|v9vYH1SJoSoM7 z_1#25$i9Uv3BCc?O+FT+mw@LqVy@QBOPDo{#FuNe{=7rJ-+Kzt?|*PoUC0oXVVBFk zza}B-A$F~VD^)bAWj;sD@i4?Vz~7g7%avoZM8xVo%~VL^X>4z_@;UxZ%mO31rq%32 z+-WW9Cz`55StAL(aoz)y^O4d&BstX1k?R{>DcnOA2ahYeREnkauCCkyCrVN!KIu@( zoO>!?<#CVT`Qi-uM62texh0i_g#-Pyw4ElelQ(#}uu$?9S`k^+k7!G;4X(iyk&8{^ zE5!7H&t%{!R(ZV6SHoq3RT<_JkZn#cd?nEpDTL7}&Nv4&q@8>p<)l^(+W`}m6A#4L* ziFS(0u^N>%=C0K>&aSp(%03Y&AeMa$G6MRR{(1pQydNJFg53}zAp2#X%`Q7 z(BDd?JHmW`JCLtBk?yQpO^LpWnW?j}O}U?keHS;eTbTZIk%<&kfi8z4t2B?0UCo8q z9}imcd_?VXj+7Yn4F(vMG23Wyl_K7A%>&Ap<zfqFJYdj1)DAlgVy}N#EfH z3-hL8N$<|*v_CHbA&+UETTwnhn}1$z(yO$DC5!l&CvEA6@$n@2GF-H(#L+7DeQ%8a zFqd#8LN^5%=rCSHel3bORxnsM!{Rl>%VY<1VHwd`88EaU->DmPTmtZzvmbH!^Qjj= zd+!x>m=0?e?437joKgNy!`mxU(|vy*FXDc zX*V!dJq|gYD~~2DOQsXQz=|Z;nN}MEYd(?p70DuYhkS2wdoJp6R=O#Vk^A9wDKI71 z1E51OK-BJZkP0PxREECfD?D`)?fhQ~-PCJRME*QTeQ=YJ_Bnarhs*VqP51l7t$z~* zW3`D-m=AVc@y+XVvFaU0Qv4l6{h?EQS#XU6=QugM;dj@74%TsUp5;FbV=^t4_|v7O zi`D-YKWRO@4rep}PIp$43k_|i*t)1Uv2NHBUdLH^h2vQbjs_xV z4Sc$ZE~@%IQ{}-$(&o3xbMTwd-}pRR%6?%{(q*L9k4?C%W9x_nE3N_TH27CL$(z(& zf^ZqXY-faSiYU~PC_)?rqb=sm zqB4Lw&NcKoJVrh7$CUb#ax994{|wLZF0kGdw?;aYD8sgXMAbm8fEiYLkj5#AWCH0} z2ur|Nc|<{_T&sOB*qW(7^8^*Khutk?oo)mRzk)Z(z>6gCFO{Wi57 z(&W$d;^V8w3blE8dBZK&cG4>gepcqEsi#PT`#+(G9sFJ-oE3A>Z!s9(0#3;bxz?)j zj_v-kzp$(qFKEjq<&A+%KKnJKP~zKGUO4neNc;+s1#w|Qu2_sR_W=k{+vqoxM7`_6zo*}Ft_vVw1usiM{#7GrggrkQrhD)V{F&&aN#%`2D*ty(_TGQ` zhjjr85!D1Ix4+87lro<+^>_Ss0FUwi-p|9A58=iLA|1(tt!!UQx^bD8Ico-sMYXIF z#6K+3_>pLtL;lPfh~M77A3clrn42Sr0^Iq1UG}8!H#@-xXRy3PB#SqxM92Tv4`2*! z5srwCmmvH0-sG`X0ffeJz7~Z) zif~r*LA7-|8hlP@ScE_SJBQMM3^q-be|-Vn(v0r?kh$Xy|6^?1oUbW-4IJsSuz{73 zg4X&-)3{A8qgtG?D6j>LhqYE-K>8PoEnO>$CPf@r?TxrrNYkTwbZxPC*Rh5V^=G{W z1G<-SRqRC2ru8Hyfv`OTc48;YT#I$M~OrlpdA_v-9%*xr!XzOAEv=La>C|9UPySYF7oPLq_35u|M(%TjW4& zsckx;dNp9;+3VrhxM;RW zlC)_Lh0oPIF=umM3tdg~=s7dUd0Yxx*ZpVn#FUnLGAZyzoT+mp1niLcnmjr&FKFXA+)W_ ziB3Cf0LT$cj1dPf#B>TAx;f5Zeu?w5ft_)L`OuRnSJvHxxjO0Q^)!6EOtC(w9Lk9{-hm9#IOcuRRr?%f^TR2X&)@SK|Ou{my5)$FAar0@B|0&oDKs8DG<0V3aubi8#BWD8d-gD zsF@-ZYKCOoGUZo&vJPaeTPl!jZR>{KsOiwj_+w~O*nP6%SE=y~QmWE8%)tl^wQ;fg z8cRr&|JIb%v>Pc*y7`-SmFk0%7?Ijv-D_(9WZ_P>stCO zlJGnxu2B1AAM0rQ7ow%`xL{Fw3*Z}Vf76U6oFMq2zfk@}&w(i@u@@=j%jqNAkX?)3|rMv3nNL-A!}+rfX36#}$1$TDXjRb$Z~UvI4&BiR-@@@ka@ z&CNR&iEwo|+K6t?5!m@-6AkMIy$@uV%Pp9yY-;xnLvf}50KL}M7 zn9}VYt1&!+*e4DuZWw59sjvH@`oqCwV%7BfP2C!nPqyX<(2=P|zRabTd$Q?WFGf1~ z-EXP2TU$@Zh>;$4(KdK)Z%VuR9{1==ENZwr>lF=7nvi1zsV7a9*cx6#Y@3cN)8!+T zi=lzD(mS4Ci#Dkt?(3Vz@m2OUyXsf*8z@uH-}V}9gEoScmW;O!s&==VY2tn4hl62x zz*`sB4pyZYCa;Bk1zq?i95#iCVx?ke-ijzyFzVVG?5K;0aHp0}_w5HjC+dtR-~9m2 zx_oHr^y@yP?F5E59}X7m>+0CmXP-rG>w%CJ_P|{cg!>Ym5VC9Ww=Hq8nUfhoUmy64 z{a)D1whjnP7taDDaO~XP&T*ePtJB6KaJ<%4iS}`9@e&6>{F+LjOeu4fPj;ZJ43VX5 zGh0VPc!5R>^?v7NIn)esT2u?r20LO-F6fNDFo%o+&-?fvpUZ6D>F)`P0DJPz3jI3c z;cVt}qh+x%P7{6x6o5Q91i<>*?45=;47V0q!!E?EM#Jou#pW_TAa(%M{zPdG8 zOaN-a@ZU% zDBme_>2r2dz+C(+U&|B)in{{XeOosd?|*0z@?m4x%x7`uadq#s!CcH<#J}L2ek9CkH97O0i z3N)D6{a!Dj54L~~E+_`CZv?^6vX_a8H(_UWV8RMy zK1}n`vuN~S{?S*J)WR}{@OPPF41Df_40LS3VI0GymEF;NhF_?fpReosS8-A^8}G0T z!?p*}?jSK8XGYpp9itjTJ%iEbu-Uq_8S1j%=zQy%Eg8ir1UEG(6u8{if|aNz&QUT_ z>t)_8cMXuZj>B5EfHk;j<(TYkqf#Sl0vW?f>WV)fMhD8vUSu1PA{-Qsh-iYB^J`)l z|LO96O8w4+?FmxH>&Y|wQ)BU9>Lh-(>6<=fr(T$cn)8l>=Z`=*;ee?h9LW9<6PK`k z>rso5Wao;zw>{ipV?n;0&sc*vi_TiFx14#kvrgx~-m6;#5=DB*Q$qFGGMpqHIX|9p z1ke^F2dcyQ7aYId{pVVDI(|BA4qp-WmKLkTdG~bbKXi0-@jINpIoe7saNi$H@#e+}jAI|(E3(2>=AS0}#Sv5&|76p+G# zVYsLuJ|fl61=0$*9kHX#U*K$%x=72vN67kR?2hSL9Ds8cerN0O#^uKNh^oa_M}YHd zQSg9x!&@m;^(uw>MXH(Q{)=4^;_lDbP7xm%!t(Z)nUZFv^EYmYv;p} zbZNmBw^*&F*Sn=n4{=CX$aewz{9MvOz$Yyu#@e%sk~8W4{WZO8n+84NTh5^{`~0CW zI{XMX+~8!WY{?^eBaFY;NE^6j(2x#gl75fN%+h+nZABHfeTig_Jz{7>D?K3p`?@EINs>u=iAuuqGCxNZPd#u8O<}bog zwm12~ru$^Kb+#FQh%)w=)E|i8Yj2v$1NgL*9Y&Aw=oDF3{{i%pHvk0!ncS5t(PI}+ z+VXbZI)GIB(U6O*2IO@0<`~<*FqXEtSg-lG^~1SLI<0|Vn2i^CYwdUHi>m?90(SA?Zrr49acejBH#=Dtb-?$|H7xJ1OW`qOt7Y6I`**~Spt<_PxwTbEHXJ3(N_j5%NuQKbW`fi9Srka?F0}s+ zz-f}*-y4b&5SYWK=CZnkd%2(r`HhJ`hT<_{6RGdee%>4eT0EH8nd!F`%TMs&@khZg zq^iv|p@UIUTf=*PyQLo0vFpF3E`@7HM-)ur!{O32s z>E{}@DQOqP0f8a7R|+R5$IW0;{VP%9mX%L4ODb5Kzn)WXp8!V(WB*=O-|itb7N=Cs z0r$kQWi zKE!o8yKdPAe2AH&BpG2MCzxyNcuJ%PBck~H6a4dhRv~P};?k6`zrNt$cGmi3uRU!3 zxbLHMYc{umbf`Shc{0pMReU(}N}92;Z)GLMPU>iX$*S$&CO^nc>T`<#f4pB&AUo2l z@V}b2Ll)oU>h(XKbVAC1bLW6aCB9Kxoo@U1pE}ak)|PktR_av4LYMn#d6}R6hx(A! z_$E)h+3#n`vfA6oS`x_&W%PbAkH&XC-OF0uk+(mpe5mMC-LsFTi|@7UQus7pHCgY$ zI41w`sob@A)yMSQUc1D??(RfNMF0I|r96H0hbd<{3!0>?G@iU|pM9$x8OvJ`x(pQT z_@y4+8(gMyw!gys@~h0D@Rhx^ky0^2DkKTw3|}J^c7%I-H~4rr;OAC{X8xg|_@+sJ zy*K&o`?^m`i}g=$eLKIl<{M5yL2-jkg}DU|jPM*R$bgP-Vg_N|^w%#>u|6X|OO;0l z<|yBPio$p?ZPz*P_&w`Mg?n+k859?(Qu%zC$w=l zK&NZ^$jw8kCnV2NP}I>Z+$O)~c9krL6eXWLFHlf8v2+MgP`ux~135!MVQ_Jeih|gI-icUd}yBDKcz(3?K+@m-C*>R8S8F8=3_;Yok77MH^=Z*J; z(frK~}-gumW^Q3Qfd4So`Duttr z*-CJ185^6nzNZ2*{WDSNer(7KGIJ86I@eo_B5w_t0!F~Eew<&ESxm~K{ON5&<9r;S zMeZTnWHPaERTEt)q*kO(uPzkd!< zVu%bXSI=Xp)bnM?wxXbTXlI#iB~^fXOu1yfo+Muy^V5_HjR+^p#{2#3D60pFxI;^Z zIEb9DOqfa0D2T4!PoJ6YGBpLovfO1u;xLyA`RECu%p7j@oo6tNGBk+%$vleV6)P2P z@kCe$!jt2jeT@R4iRNp{8H#UbcP*^j!7NKo5_B__RbQ*dI{*|E&k#fRg}G!Ng{4MW zeUXZZyZf63Yi4zM7K5gpl`kvT9zG+}g5$ObxG4$|iH4D>cK<4TDzL3If28;8Q^=4A zSp@sugdnZLSmDPKf5}J9XHebk)GYGUhIWB?F~^-a>BtAfs_Mh>%|fQa=F^_2vL`cR zM?zi*eo^K+*T2$0CYh7HH(@qB^$A0>nF`DdD}0f#Rzs%PVqkO6(~q?!Do%*udatL% z^Ck6aB#JR-S~n#=u?24|G~{_)yV*w8A@VF% zkSI&x(A_R(KSPFtlM&-Pr;HIC)4XW9_YdDIamdfe&dPoB0;tD#Q-DU5eq%m;1exO3 z^akNVL68>?*wP`_GZ! z*&lhnXP*GQ=adRlm zb|J1ukhsFsku7=d{4kx^lSZD?b*9Yv$WMwfP;scfHP8LqyOf^G&C%+7R}@bldH$rg z%B@IxGUfs_hzuy$Ro*zecALB?g@v(G!#fbjn5*P5%MI|^!(SNItB|Li{;`gx0}opM z5qU9t$lR-N(c6LU>!~38qZ(&8RL@A3h}$&rn%Dj(>)U6tkWx%IyGa-mXD&uT6^?{9rv|sx@JU=8y#1w;DP5$B%Y;0XK{I z=W*?F?0omcHFE#5dDAN|N{Gl71+@_PjAD+O;lPre(zXHNrLVGQ^P_|lj2tfF!W`i~ zOUSi(VVN(XSJ}w?=}Ayp^xAJb0>+x}7kJ|1MiFyS-JfQQfwq8Q*HqO`re?P!=Mlf$ z6}8Ljw|;S6D-d&~#Szsq{ay_>@IK=o7&74#osjmjdVPC&A4T2`iSM%*nd+nyZI&iL zPa$w{2^8wM(jB`5Y0*7yV5pla#OjFI@wbYJc_=n$)lwvnkTKrEH^5U0o0N?eNcTBb7!tii7J{1zU1(%( zrkVwJo`wKcPHzU&3?&*5Ha}e_Gzu7kbu#yNJkwt<8`d`2K9Ihgp1W@QvD$!ct_#>R zxz6iy|3|iQy^#AxZEtb94RKhZASl=pERiI&2hIdKgo8I-1+N$2=IqSo8ubaZ9!9lS zKV#FBX^cZ-#hFq9qGp{vwpnCm#3NRtN{lfNi>v)N$!3wFM@LV~L5=g6^D>XJ@keAv*vLT?IfY7>P>}lXtCd62SM5 zx94In`8{SN9BLh>*AH5)X4RIwXgS_`WRs6a81p~KiJ8L<1)Mx3>(zhkg_0r6Ma${u@NUGoOLcRnL; zyLnTa5vhKsX1ZbNS1#k%H$h;b{armn==cSqn@+o8jK#eF-pN+K%fe>;L=^aF%0Q8~ zqs4D!ctlnUTNCPtBh7!&O5u-iV~rfDS-rSpUk}!*A+C}McZgg)Vq18}P|%?<*XX+u z3yUf(G{lCqhGrbydPT&eEO)*?_wnD+y36iZU#{wNw_>iP~{)G<}>fJdxV; z2z{WG)VJNEr3IjrJ4BdCr<|<7IbLcb(Vr6I!$R&j5vPKqQ(vOsx?U8@JT;NkEALELhT6$EhNCTR~%4u zd;aI>Xg)ipohytg%j~A{xyDcF8g*{Hp7;e+ipjOqZP|(7lcHY_Irv!x|Hh3!p3;$; z1J!{Vxc83jX-6GnQOOlHVNNYyzU--$ewmAUpcav{Zqq@17hKqs%2vImcDfcr#23ZJ z!Ti^HPu6Glab4BjW**bc;md0cUBQC}gxUMoDwB>1h>>=x+J!(ppE%{1e4fkYiuLR4 z)T9c~A(#kw9s{WcYR@2_5QfogL~jnvarTQ%ZcKqEcn2&cq_96;u{A`GtNwY&d>7JK zQ`7*yd8%D~X?x5D6AKSA^O3R;QTfhyw(T{Iaa1M98k1vui{j^*W(QrMqp!XuJTwMqI|ZS+&yr>y*_{?=X+K zh7Q%Un#0mk5+`Q3sQBsvRdO;n3JC${?40oeruZ?5vgu#NM?I4|%b=WDaUtAxZFp!s zbg3MQlPV9GSp$CYGFvCqRxo{#Bh$Nu7vg@v&l%^RPokJ~;hG4Z}{ z2K!jS+6o^pr|qU|JDz-Ub=(F@X=CHmMlT*vUR5I;n}+Jz+9><4YwHU~8L=j9N{b2@ z>AD>n9PsW*xEiA~sNdnMHgX`tWd(2Flj%xyvWIUs$D1%CM!a?%{^bp2A{=2!k{sLxJ8eJ4ZRVpo?pX%rji3h~9Z4@xUX z+<&Fi18%ookdzrrPnp5&OiMB`vf4UoYH3#j-6xWHQ;wmCSfM#zu|tS=crU1yNAGi| zl^@Yt;tLsZg@1h|Wsr8VB4D<<+yZcLI8Jb<&q>)aJS^=l_1`uK9dql}xZmUP>oCC4 zKAt~FN*XNFgXu|~zSP`A?4@?8dX0zd{(ufG>4>;6NBCo`-c)vm?1FhqkMjf$jbb#% zylba#P1iu7I|E1U7qF<&*-@8%PP;wjR}>VFG&%N~TyZTRPtuQ(`~rQ_B9?EiN>gtu zIcm0fUx9DY7(dpwlsr{BZMyF!rS2B&n4y*jgPQ1#8H!#6loaOE0#1+#9N;}L*?#O0 zHpNp8*ecvGm1R`vjomI_B|_gfVQl|%RLnEM&F+nlWMW&R3m3hXyKUL*zEignqplCT zS}oG4KqBt(-2c}XP+hx$3?Zo02GPtiCxwrNI2Ic$ld95h+6ra;wi?FUR80j_&{TaWK6YWXb+1QOJK>C$7xnSTs zUSWNj)xbW%o{K5lWoecr~mCw|KE>Bz`1;g z-A7y;%X(XjmSqiaE0ILiaPeh`xv^7?#MI;PAZN#$ZiFRS-8@zCu;_`Y+&NW9MQ8FE ziiaNj{E|_u>pN-RNZT_Lh(aomogEYNC=F=m$Ttrg_klM>Yz z@hX_LO7|Q`xK%bV&c$l!|6`+>iLV z6HmC<9xU!7Kh{0Y0_MN4)#L6w{b7d{x28lptN;`gC|*gvZ0>G8(VQj*LDQ*Ab*zA= zT&FVItG-#$Ur2KK1W|SFT4>U}@a3}Ct=g*(fYKW-U#T#8+lCjB7`tcSF0;qa4fPp$ zsS*ay1tY#{*>yR|9LBRzv|1Q2!i6O+WG~v{e>jO2pR-5ZD|*;*VfdWm1aZC@-w*{F ztle#24RQ*|RX8ZwVoUi&nGNF`4tp-ep3KMjbNV^}97}m!Ox*gy(3a%SK>@6d`Uz(7 zj+Vp~&PxFT;}ve*@^_P~dDO?t57sk3*&`8HGXVuXt~4hrW(ta%9oc)+(8|R%DJjea zaq&*l{<+TfdK;T?>1kSSfk1YD>+Un&)(l}iNfiRUInl$Fx-?RL?_7hod$R5-3-zou z-t-|jU7)7SOMatO-Lr45hnPM3WNPB0d9&Db4;fl^A-loVd#ZwP$1kmU88NLQRr*+e!O?%bFFZM z{#@Slh4&Rp; zlnE{(o*8x!&;xjc^tP0W7o`|+jYqA7-^csN>;aT8(BL_ZS@re8%1xh+80?_Lyv?g-%KU*WLc{NBC}BN5Q2~L~cj$k3 z$pNKvtnPE4=rDxU2BhxHDm84?cw;MNK;w*5<4ThE4?Z!O6fQk$L-`i#bfhpt;A7hxlS_CDwuYgJ*P0H);TaPo6yfk({ouroean zBg7EBUW;_yeU^CMCa1e$7ofvX9+DOx9htVhWL`2hRL?6-@jm6N&AOQQVuO-b-fKpr z|09V3%+mJ<8Y7Wo>Kc{IL!Z>CA5-5EpOCCHwQvbeq|1OYC1aE5zrj|ZjV^PN)+5bTD!VMVw#d%?ok!)p4K_|D0uhbhNhvn}`AZ_vTbFCF-gg z#~MA0+RjtHtK3e2L~L@zecb->Y5$IWHU~SvIPx8xxNYiSo1m^?F(`sRi#s)`>8yS# zV`F7V!wdZ^jM*bG+yyRq!kX@~3q#s7qh%npr{skjO+?$Fe6@i;1x0Osw1R1m0tP^2 zWj(x%?FJ!X7d7j$lggYl;_64`wCbHFPHOHC7dN|N>u#L$o-_J>MXtTXq@eQ#{|WW# z8;SudLO_<$Tw7{3PfiE^{iQH2BL$A;((U5TAw!R8%j#(J+Ski4+g|a;SI@ zuj8OZ(yC2jJV3B$&VACq8Kw>^dU{3oO2v*Mh@%nd#x`J7&&TmyuQ$@N+rPqN4mvoJ zWbt^5F$c$Q-zXxcyM;DVZ@xOX_ySMiw*uoT67emYi(^Sbj8VUt33Dy?44jq-I&c)9ubx$F=R;w}j znp$zCPjBsdOP*qwH~E@RlN1NL7b!zt$ola)QwuorB*WHS3u>O~E@RnG9ay)lp+CRo z=hJYEa3za(h>%Ul5Kfmnu7KvkscUL)?4M7)<}o#S*FBtUB;eijC;q2iiHC6o+~6B~ zAigik$4#e%KV(UtNO^fbM7*xbPWNe=ybswo{WWG{(+#dAQ@8U!^#ZX-xv3151j+8j_qQ8)a)piKyHV$l z{qE9E_@5i9tZjiluY}KBRNcskiQ9(a%Z=SK# zi;YqyG~!tH2c#^t3w}jK;fjrNRpYv%s4ueOWF8NqH#{T_TEcj*KOk1niy)I(U}evW zn)<;@Q#%@Oi_b3L21bSMAKf!{wRF=MlD;C~*bu?vz>OIQKbp4JmlRQT*p)_GrUo#j zbBsjM(A9GT^Smq7FCygw#;~@REHG#wt-^T3So#sr_6@I*F}$G>D7xw`@5#Stt(nR3Y>Ug`w`)^<9^(6jj2B= zO%vHcyWma@!gN zeoXVXs)Zs;*GndH!W{t9;k^m4?W4ED*2|-NKR(OB-0xN!OgN>VwXh_u!YB1gejRqw`(;&#YWV|9p>=q)kROsU~IV{p!5w zaXY@E;9QfNN$)4CvB=B*)xUq>Omii-slG6JV0x5*$sz=1F6m$5elM4W1 zgv%Hwo1KY(-bOeGD3EqT>evJp7FE9W#y)Rk$V~K-Pv0IwlD5PeA60H<)zgKc-+q#B zMKkmmn63+ZhegaHBI1#|*|S{xi1Aq7vB@Lj&9s{}xIIVa(31K_4Cin@8e};i5uD=h z*DjEP-uuxs)c0la)8)!$0aSo{yVQBhK1qmlq8Nb1^Tn8Bp?`w9U2TI2(9AVD9-yNX zVIO2w0TdlR_w#`_^yHG{m4nDwkadWG#NzBxIfYpDGwF4w?vi=0hW>;a!?InM-LqE3 zO*QCiDS@DNF7bEPW%b`XhIseK8oZmH3=X7QQ%QZFx)v|FcOJKVyiwe3CE))IP(rUU zT{iN)DK`KSf^bHW4VQLtgFwq}d1)zx8JMNsHh#D#3K_-x6lQW5-0hDa z+WS#-E@9pa;&-aB&4N)@?X3Js1#f?7tE*Z+$E_F2MoEdh5Eem;sTT+Eip(dwIK`l} zw2qy(wra<-WmD|U09Ic%_nDw^7|pJt4+unM`bkbsslBOY+@$+PaG0W&9-mHucz37q zxId>;yKzhO_O|}E#@mdhMX!^|G7qHT28FoLJ2vr62JZZTzVhelmH__@%zeB-aXu5C zNoHSZ&ERRZ&Dr4}F7x-cV;v^PfR&g>qFdf(+IEKA7phfc9vqfkr#kH_R7-orWhb`H zvec2l72OZzEuI8oVwnNwDyO!tS3Q$mk8_boF;-hPuGD8XIZ3j~KWMVd$3~%G2KO+9 z0R&Q%`UI_Lp@Us2w1)um3tSl5ntw2BV-LBlD;j6hCA=AGF@9TQBKh2=#kkJ>$)cO0 zsV~O^d)p4Y3*_e*odeR<(xb0@1);^=-Q6cPyyw4)E_-r~wN3E3_`DWY6Tja$he9@~0)jT>L(eMSll!x0dd}QghTy`H%9Mv2G>U2~m8w9pt!|onViM&_~_}3Q@0*iD8*mY9p zCT+gce^g*^iqs;E=jNbdr!;J9Xu1P_U>c>wUACf~vMFY)Q8d#Y{QaXU0E_{j&r%Hn zA4!|`MAi7>;q;21Jg;P_qt|ij=vpOa=cbQpuYId!yGo)jA~lMZ#t)IY7S<0?7^f0t zCY@3ZqYLSJWi(u&$sKn?!qqy6Z9YyCm+layqHH+v+Dh!orqH^}4?+!hS9C<9+sde0 zf0<7Wv3mXz{kdR}LAOQMaiYbO%qFFhVw%TjE;3Pl(@+zV>hT2#zIEn2!&=It#54}N^ukI`U|Sr#G1%LSJfv53KD z+bp%^ufkv7t#H2r%a2MS=G^nmwW|!7tf%75m3s1vRj=`>c#N;Rx5lb43oD>Y~}Cy>ysSlL&|R*GK$*^3C&n*N&XVu-Ytw-Vf!*?OLfQ`H!mrO+f{>-c7IAM;RyE z&u(!Gct~J7Ul-!eWqx+qa(pCv$cop!g$!2wvK@vESUnTJV7gbKeQgiqkAIZsX&F-3 zRCBZy-OG2Knr>#LQBRC+a&o2gJf4Bx)~I%4=XNXYP%ael6}QcYI^JeZoVBD;%(%Wl zmSV|@)k?W~gbcq&$%Qu|>2FFOf88b;SQdMn9LXL++D#0>x=qJwAMK$_yn{Glk%vJT z{=UW&g#m7T{V}zRob@iYLQK*CX3r(c&b;2MY!j5@+;<>wWl7nO0{fkpcJ4kZ2$ott zsBzXr(=!?v&f4oBEzS5%p$!pdYh6ab$ydD(U8-V1i3zH_+_jbT)*v>mZAWy$ z#d{&xgh8(q20;G?L&9Jv{8=UXj>rxqp}>-6Y~;HjR_^so|6xw{eWp)-AN)p0chnq| zXE_}{(9B`Rzgr@I9NVirVsensvs#_BV12FEHKgw}BoXBOB;BrQ???Cf)^e zFDH4WfzqBYPb`$ipRQPvjqmZrC72Y6YLu>(@5LBpnQ&wg`FVs0>B{ z*&wq6taft^q1h9o`H{yFpiitmD-B(-v`Sb6F=f_vJzA8RrKvG)M*hfif4!SAN>T)g zJ%i|km`VG+@eZeDB0Rq! zW^o8OAE@w!ul^0>HQnU>sP7Ah=QFmG%<;$a__ID%Prc{3Ocdz$@l00nVpF~j;}LT| z0s!JkOv5vGw521Vum_vGMIp2&D~BV@VC`cU=Emof4UzC2FDE%9IGjaX7EqE|V#@Q{&;D$<%n~YfQpd(fKo8NKJ7QLWw}na?Kbul2PN6*;e+?&lLkF z&YLg1ryHmXx{JX*thEr8Up9OHfc-GqF?C00uGvLE;_nssPjtQCtzv#|7IDKG1t-NqkZF<|&}q2=nrZ+g1_g6FOcp zW68quZt1pSf7~z&sAsm5)BUqs+zE+F;m*eOn=SV{ylQH_G7d(pZ@sA}`W8iVJKUXK zF|qXv6V%vQrKiEBkGY*c{xw{gNtMV4^|O)=~RCjFp+9IsLv158b>d zr@xO7GMukw;Ny_lOEV|R7S!rNrQkmNMoFz6umS;+t~i~is8$6)I~~$R|eii@p6x}-Ahf}lGmeyIdoubUh$_?RQD>b1ToA%RKKnMNjwk(R-n;&1c= zWL{-Vx4l3wR#-FG#>A4q|Fbs04tFwI{)3ST135vU+N>@2{pu0sGD#RW|7g!E7X?e8yYQ3~(I11pp4SAD}1gJ4l>aoe1 z9E~^XY>A0LEcORMXwWC$mAblO@Bf3lw~UIb>9&Q5LV_ef0t5{~g9dlE-~@MqHcoJd zgdicf(@3L@djlOj!M)MOA-KCXdNUUwf1KD{0YEfI*BZrK^} z3$WOw0x}kY?aoiw<@HxXng`NYvI^rMey-BB`)lN4 z2&c=|W5)J|{S?6f$Xw?fE0n6iu`7t1yZInfdeiFV*!ACP_Zi*9fooWomC{1eZY4pA z%z(({EDhgq0w}5&Vz>9WExSTW#5zoso$bZPHbGixp7&!>IS$u@{Fngi2HMXEcc`}u zQki@`qVChU4fZ@6<2dBjF4hvlBlk)aQVhDG5e&GEJ&8UrJUm3(qMOHvdik=moDhP? z1_UB3J{`{sy^yPGIK+$qTUkJaSOjOTUwPNo zjh?I4{z`ZFHd@`S1>4La1-5fWo?S5YY?@hL6IKJI=tZklS(QLDZ(%Y@8%<(i2J5NX zgKDDj{J{>mUx^ga$FSk|i^jq~OAy-ekdve*cNlsS`VmbLy$6)1&aYA52oyUc)({e; zPKW=@k+PHD?~XaFTf2)%ZZ9WWQhylH^iRucn9gg@cF1Ga`g?sx&AcfwwCCUG+KFFl7MU@ zm25hi{C%9a;x8t^g`m8kB8Oq%s93GyZE?F~C%=--z^s}NK}E?Y*(&+Dw$*lyag@s< zri4y)PofsR460$E)CCub@6KE^mztpF#F-rflQE>tGON1zuoyWj(n8Afa|Pi-R z^b0awkI>X}*(2A@l?5$g!=9f0=A`Yoj$2rQSoKbq3WVpIT@Wa4=tDw!Et>i^B1VLJ z9J@QQg?ATXQa8MeK^GyKqt7<)lF#fbUtvQvsX9BVPS2XiK_^SW8#lKHhM#?*EZ61247IOXrFajr< zb61r}XDh)g-)1ugAP0;lM+25a-3Tw?utcnB^^ zQ8gM_dK5so`nr@8x_s_gjEm6W8k_KHny*7mioX+^d34{I(R~UZizxK!i!c!0Fp~VKW}`(lj4_LEWfxk8KK<|c8$ubeI`WJicdbdyg&X#Xw zxUY(eKQhJKo)zQ2pM?P6Gy@JZn-MrU4IDA_cht;z@!4*u?BKgn*|xZakr3)`c0 z2kODdSZ^fK|5Qy8_@7Kw$(-XjiV=RhrPmie!mCCyy+Z(#6xTlC9W5sXBHO(zcfM)s z6m_%R#&t)f?rRVcb-zSNh@An{Jmw={oa0K~n~6T$?>hY!m#pu9p&3{T;=4Z3WgVbY zT8ITEB9jw~#Q8MM+Rtq*RHIisEFbIo3r$vN+Q3Ik0Oe-&39E`7NC|XfNR|SA*WeYK z<7Vsd2hHcF20axr|A_^daEI+@1IJo4^MR6+ei<$ii*IR6LZcfRc)H=n!m0NpN0sK2 z!;;4w3&2h5Bd{OJmTch(DR%GR%3-GOvH(!Nkv^->h#y)wk?UWbQqYI1R+^Aa8{5p@y!W9+ttyUvFt9&zmrCSvb_@%W05J7KtQDzNC~8s z!mx-rK4cn^sbUB43cwt`ScEnGIwc+iRs>{E?#E>W4X;@0ggvdgN9rSEJAwAlCcphd zGf!9T;;0XPfF{bv;CN*_ysVSa^)FLg3kk+k<|hAqjp&_7j({4r@ZNP*wrA8L=e>Mg zO>2_we<|ygw~G^h%tzYT_vW9c^v_EkADdC5Mp9$&*R$PA3O#oqYnc>twZMqOJ%z~2 z5zFV5PHW=t-bB&;&@XbkGH8n@u^GiXcE7WsC01S_z_~pJC3@lx0QM6rx)#1{+3*nr z%WXSY8t~FB12d|7=D&D4ML3_FQ@$Ml@xR10yEjZ;%9bb-B$LLf3xB%OLldGfey*h6 zZ}C&phG#sx5*RUq=7+z^P}OQI=G#qmae=sWIqnuNJnu3G={L=G210;4DzF5;MB+1A zY4f5l>FB)jx*QT9N>F~=oxxOkd2uRs|88tP)F{DXZg!*2N-vxxKoHWd$L8M&lwsL6 z2>*}!Ee5zx$K>f&c>S7KBWW%6oo7qH!E`dwjku zLe(NEv3uuB@M3ytN1Yo#-^)I%FGl4xMAiUJs10C_I6CGof_c65@PIy7{HTNOf(sbo z|G0;>pS^bG^B5Mu#062IHbfD20V9C@zWy$(V&vBXTr_XnpIC(`~1 z*;*+u%U&}yPt2?0|HlKVrZ&hM^FDcGPKoaA3e~;S36GZ-M7+qz@b#sytSGVGjliZb zU^st76?)+!_^z?YrUaYFj}tdN4c|Us>zHT!Ny&PvJ7btpI{%e@qd!nnP~$ZU+*~k_ zOyyi|B#UF9z*Tza?}FX(aZAaL`shqxxR3hRrl#lfN-+HPB?+-Xa!IMR!QS0Q#3>_6 z*yb7c?F`{2&*{R5YKy%_&0NnzG|?yTLp&l4Zr~J>hUxf*Eih4~!MO^zo)+ICu?vCA zBTO|BNEWN$i`|kY|AgVLyAP*-9q@NLPHW12ny0L#_2E_J3+zCx%X_v9BVQ2YMC$h3 zC0E@6AYR!Z9G@MYU9;EVUsr8N6umiC%O|IVI2}GGQANy6zoZ?8M;YBr z*TrA!7#H3~$0sp3dVby+j+3o~runMj8B~>A_Mj(*z!V68mrL5rP=Yg}=j zSK%+Se;!l#N%UGEc6VU6de$5cgUzn1`yIA874IEvO&;ZUuHPNrDOiA+fcHJkiCze} z{poJ$NHN0Y6UgsSqOwH6@aASENjK%=@a#e5Hl(>BCeQhLZg|j$C45*crxJhEOpl7P zulVl#P7SV9IN;}g^3A9U6Mh-|4j_uI(Xn&O*f03Z<-jkNW7Ok@LiCv;0Z6igM}*Q> z5b`q4?WoJQwLy4cqUDztz5sqGFYIULr z4pMN{ZO)lVNM6oX7;pLZr=rg~4O^;EhN01M`+5qFZ=pp_58a~_SVsL?7lpl7$#{b} z`G=$1YY}0QyrQQsi5t1@iZOMS?$?Xb8`2F{<&glW`d3IJ{oKQF&dZ;Zrk*TP@_k1q z>+`Wc2O-GSY65;1r1(O!=Tr{hO^=~|?_;hln~i!t-`VPq8nYYt{O+fH%2;Zx}Aq z!uNquE4GV{HN55IDt3Yph@~}}1mn4zNq5IveRnC;Z<8U6gofpD6F2(OJS~>ZEDrFE8Qfz z&igH|tenMxYxfds{&)k_K=);7vV_%fI!%#`2)1yR$8=qJ`c+$wqs%%f7R5@(S6` z;Z+4?h_gSU2F&++4kjo1G$8u^8Z-%8SD32`J|Ln8yttOO* zBoWvUJ7ot*kP=}`5Uo<)UtLSPtIERS_c4L5`u|S_-T!_fS@v{tiUk^p*H=@+cYKi4 z36n?S0Mp9#t=A6tc;bJy|Nl3Ko&Ua`&qLOeNT>=9gL!{lG0kjn-jDed=kAnJfQrwh z$yJc~K)mpI&Gy$RC%b%%ul@~ar;@9Aac7rRjU3+{C)J01MlEuC*yKdtAJ>%6)|G%G zK0g~AIn3Yd+yoxb;CWvwpW^>!*S(?+FRYRI!7CYXJVZtr0WP*;TFYx-fk}Z2Dw*Xk~0!3BE9O-r#ZGoCvkZKca@WJ48b`v z_1<(BP0FP7JF&DzKbmG5jp@!Ut_CA>t`xX!c3+G&l*6=yr1x50iN3GngTVHUu30Fi z9smBtiS1i?0W|;`aLea>8T| zJQiDh)OslE`?!WziMUj3bpM0#hqD^NOsgE#i>yGc9e2!8qarC?UKAbHu?P*W{{R7v z?qt!nFkijIt?=}IBDneb)1}|q?imY8i|DUKI;!C45tdx>u+Q8Z+j`p>y0!JEON~>u zO8Coly;w>g0(X@R0j?Uz8EaR#fV{?c-LJmcvQkago-Lgx)!~7~I!950Z0;A$Ghtb0 z;ED$O&la(^Yj!g{8M8BmsKhPo1ii<_16+M&*k5+*8c%HBpidhZhV-3_*}t&3Vij`2 zI!89TAmRTuHamwe16j*H5*M-r*xTgSru zkLsn}88Y6COV&e9mb*ogn?H8lplz+>`R}T|{uN}`^L9AU%54YkkIYk1RG1fIUq~8= zz9}<6Z!56?r?=8OlS12OR#!QTh%9HCT2@a2_o@}S+KEPmcBWQKoZnmn0z&8z>@e9iXM zj^mi-X-}!5WZP>-1w*bXL1Ij06D}jq;I?X4xSCInjMwmJUDSI10P3jSlS&Yq{%)`6Ba?#?okX68L(-Z*jy6(j=2&U<6W-Y+p{B|aXM+a z4n^m#J?wmMg|M}w>ao*leGCSpVj(s7fWs@!KR>X0WdkY}gQmOx(py2^O6$GV^M77j zyWt-{O15en0?I#8fFo~8SamHL#Wr6wN6M4Zcm47Zo-08;oyt7HG9OqyOf$dh-8q`Y zmG{0j4KW;d?CkGeY-*C^E1n=j3v|gtAC6QhAA)xK9I}I+Tw{R0(26UU=BV0Nw54e{ zL$nErdfnuHBhjud)4fAD&~^Jx^UYFa`Mig&`^*!O$P{KYgW9&mMi=bf3E%~ z7J$euDGE~Y3VyDtV~05TA?0$@P!rJuR`a82%w4vd_{Jixyd7mf#QF36sJ#Vx+kk+8 z5^O$uMk6d=pg!C>F@sCc4U%|gFFnwf3%8zeByA?*GK0~#dc=+km8bjO-PR= zqvuSRX=RJr8{63xgK9)^MUd@b+kt}6H)9Lh=rrPbm24^Z5^x6YNxI%TLX-;6 z9Zfw-55xUc+AfLDVC0sB^%N`5p&)vj1l78MAu7!ox5a?Zi?Jqb7^N&@W5fgk{Z&G` zYCE`IFx&liH%p(w$)oBw7V~+cQszDt+N;apih;Aq1#!U0tVS4Pcfma<;!_12Z$!2W>3&1j_ zMe2G#?lb>1spy1J!`7qr+`mvX{#U7KVAfvBOlx-|<*ox0xR{vf5c zUVZ6=TF_16XD8zXUu43}PPTC?!TQRlTgGHJY&CzQ?|cVPkSBRtPG>6Eqh7)$HKJMF zIYeU<%-en7RNa3lx@RP_vOV6G${%UHCy*&`i{@S!-)py6ANCBzuUfD7yz6`0T>kh( zR8?UAD^Dn9Wx zm~91!u<+b{Z$`fA3G^a?UmVPBUfW*jI&eo3a~VDC1qSL`w#Njx<8W(VE+z8x5}SpZ zmN3FYWPU_P2F*gN2I^0k;P}tNey0b^(s>RHG!=~(suN=A#zTU5PPKyHs0o7+tN!58 z_oy`LSJn%TZxznmFmH|mccV2=oI{!YAIX$)KmH;KZHF~C{P0OcxDUK8Vu3<*fnv7p zH5PN?sh>hS%iMb;Y{tG1KJ==DN7LJ%zo!``ns4p;)r6A>&63 zSglUQRne0r1K;bhnSE1su^L-Re!n_lh2zZBlUn3Nd(XP?qMt@m`5MW-z=3j6aa;l_ zY@HcjJj$YSA*0zMVCM0~D)~U=_CsYRY?2YzCl$?(Vb5+mE5U0XkIl%-l^dvyJ&Jpz35$JG_q(?1>X2gk+YhxiU^&|1HoJYIC6x|9wFqO87 zyRVyIaEGiO^46<<*MNgQnxi}mkNBkxN`Qhg16fsWa{5i@O=_Rk}h7T*;Jjaz$>PCB&K!C6S8~aYDo-z;E_w27*co!}X zIuQMogco?yRX1Z~zZpcYIBnHtt@R6#?(?xQJ3j2cIs8}EfQeK47}JNI!=c2kLe-e( zdv$|-g|=!0zjyknT8MFA@S{nak9$`E9gQa~zdGI|EP|ZLMgyio*&ooO)d%aa^?kmr zP7yhK4+c4o2&sQrtymoEPYg+>E12>OPJi-&adqPf#IMAh3OC2gY{u)7KPtx4ZcVD%7OCYRB}DTZpa8iQj`VZiHytU>^rrhCTmbTy=|Rjm_4(=N;m=tpLsY3TjN$RN zGwTgs#7!K@Hf8&ngE2R5er@&AE|V3CnQmY1e^0~f`aOg9J(LkK%Tz7ZcE_?05 zev`9rv8JEnq>WAtlde4%bR*&JtFdtKzWqD0KuSy;?-gP%T{w6@Ar8g3QA3Vj8<6TQHuc) z#PLU^o4)`XrH3X3zX!%)3nXeJRz3IN2gDJyX;sDi&x3i(VSGR4)wd6 zLB5f;Y^-h8sxXZH`oIaZB=X+XBg$K~-eikqdOO5U{klQ%DTVt=UrIvOF@5oB%0RpH zi!TDt7hHBjT#9!SbyH!Q+6vrJzJGSU^F`QdQ5x|vC~cn2E7V(FsG5|wBQO2fypuLD6K)oJLl0|SUGWNgZ;6xA?kne06yF7Yz_#yh z@nUu2ND9(@yM48SD0%tg5>vz|s=#IUE}(Sy4>Wex~!<&mwyC zoE>m)IjBs4zqQb^!vygg9d~#dJe8I(_0$x^7tnu>V zxsx`p%%*?}2y`?jiwb5^$9S>j|0Nm@-Rmj+pQXYKm*mK!=n~}cfefFjEL7Fg2z`|o z05})c90SQ{z<&eFZwn8?lC|2>$3YzkSR-HjX#(#TBvJc{vS8 zgz-~E(JpUtdi?~n%Gw0UUzC=Vmg3as&oVh(1!=hW*4ZThO}`>3^9B;x|5ono-vs!y zMw{d{>7^K6dukxT85RVCBb?YF<;9vpAvWv*GD-mcY_hm>lb;^GE~1m2GQC3jPa-u; zvbAT7ksgBT(j1-ODOXqAJ>rC50LXfn6jO6%sFdp0>t&smmo{3({3#KNIrqu^Fe$-i z(ePF_5g_x*2s4`7u){Q`^|%y|2gc0w@VL@L)!v(>qE`7(>_4%9StbTfNJr2?_wCl% z*Af4#YfB$XpKrk9>h&-3K?(HKO4QY+25s%;y1wb>-)1;8X1nH7Xn^lu+c{bDrzC`60l-lD=3caT=~13zAODb+&E_>4?t?`3{LNtH z^*`J3HXT~{V_J7*fq7jT!aGg~?Ez0=U<)g96GDdWt0kXD-{bmb?1k6z5eQoUTj`}8 z`Z|!^jh4u`B+vl{DNcS76lList>HJsy4tO4F4nH7ApWA}dlPYhS>UxUw>4L6n6c0z ztbZ&bK0YyialcsVve=S7(&C3o3N{1OlTrUBQnus{+q}Ej0L-DFPL5B6nWrP9ODD{- zK=0++D%i9Tg=-)XL>tOf?a}-Dg%(~)_f&Y`y`EVsoSt#2MAkAtKxai%a8wExKZ%7D z+Z3w8Y5}`oxo5tpAp7MIKI+G&1l>I&91(^zSsg@cus8P`!Bu$*gxrVY-2oN`p|FcU zf;R2KDOx~fgO?T$(4FcH!>hlBs---)yXRC8AtbfZ2nk13t1Bg?YtIVja@Y=_SN0}PEFWG9`cW`~Sg2zUJp#I+*6;-` zg}O>^W;Xxx7K`k|6T8K~BK{U&!ePLEuXB6%bMC?hyW$F~Z-bFR&g>9i7R~Pn4KsWf zBls@sSvFAlEu!3jVa$sPaoU%j>BhPVW|4(~R(sTa_a%XcEoaY8 z>Kj_hP@<{km?|_o)}yLizqE*7oI#G?JENb{eM2Tfm9fD=&TkR(QPp=F^k7^M1HkWq^- ze=0&O4BOsI^hJ?c4G?YM}!;w3T}m-%orB4q-#Tq9~8IAJUL-Q^D#agDp% z6*!dUV6vZI9=z9?QV~{6g;1YRfqDf^d^)yeGpOT&QlI*@e1SIIocQY zI4PyJD)GDgw#o?e@mqruT4?!Mqi6;DNzgKr^?jn7_)n)h0|$-|L=d`Wj$*s>?}rMi(gk4x}{ z;JJ_Wrk1ntNf)S`_Mv>aotTcpZ4C#eIOY6R9d<-(bWz^ht3-7{pfarVIDatroipab z#pY^DgTrdAhM$w`;sl{xtlCd?Qudg1_I{>Kn(DTV@_)?BNwA1P8U&sunYXp=STCDFYg*HwO6<5O~0 znfFR$_ZXDJI_ekzVK{WCoFtR~xjF|&=zDn;Y|Ue@Ku0lSid*gM*Oo;5HdWJ4to98u zbUkHqs?wGhe1yH^!tcJ`Z5!#=ghukLTRo4~iE}`{YG0OofOe#XbLiu{%b4L{(XkK% z1dLa{5(R&JPfy0Q>~$>4=^MX5EI1sq+Vy;o*Mqb&3|l0x3|4+_UAh+IAQhF$3awHi zJFPnW`l@8~x(^(r{e)yW#_xWYX{6@j(iz>DpVT~lR&L{UH0Y(vVss%9k6m^w2cq6G zIiIA)yihEq=J)^>PI&VNKk_9XB)_@b%-L@I?sj{KpRFy4)&B?=2<9Cs($IBL-@Ymb zd(>b5TTP6zp7xo_x{9%{TXxnZgW*J}sjq^y#-BcPKE#lfr)f0fXBXnJnj~bx^}I^2 zyLBI3BzfdMTQ8|aBIu72U)g2sf#s~^FgGW10eqfbWzo65a76~MGm|1K#lMlMNt`+* zf917W+&}rOF653qZeL5;vaI7!Tr*k7F`wF8nTc_sRwB@58$Ul4;u0r9q}9KTcbCur zOPj~0q?tzaQrNxJ>InFSXQ}t~#BYcS^6-c2Ukzc^_2b6@fjIg<@EuW87_#h8yH>-a zA%kK37P)Bi@w-dWn{Ldu^gs18>>DV8@0N zvbZ-BQ+(nf&ls;|%a>-s6;JXp+ecaql-^m9($)aVMDHrvW8E|#befw;R- z?tz!!rKv^+OZF+S%bceRCO0in@EU4yQ&qObX`b>%c0dJ{`_ z){OKy5z}nIKAJs>EAVB-;)ctKe737TIkJ{UTD`uq1NA{6p7YcmKHZu zA4prKv^(L6Zo&9~%UR8Fk-ff|#_77QtZ4Y6*@{g|IPBqGI(~zpKHEnWdE_4MdxtFsh2W9Z^YUxUu?DVJcY`Y9x|PI&8#VPC zsFBGWRyiBfWxCW_B#oaKu%5MhDIs*r%BO`-ODs#h8=HcgF?_NwM_a#bAc7OMQfDvhTh6Hj#qWnT}L&#X(95^DC(pAFCO zP^aT>(A7AZ9-MJ}a?AeErm9AWI4$j?>%p3GYJ%_kvgMP&Z=kcv{M;=8nx991o;m9B z+70;}?Jh_zL>rYGET@vmHs`a@fY|k}<7#QH0&R*}BJO7HB3gW96&#&z(^1F5M_YW; zTWK#F@?-d;tPD?~#Ol|r1ju1r*Og7r59l##w>XMtbRRp(N+8UncKHg&8L-{ID^xR)lCL+q`O zMv6?&7>tDrGxH(Z&sa~99YuG0YrjYlX_+FVZynlux)YLxAzIwM&UCkkIX#i1w!-sv zVvEB7#+pj`XVCF91(rsyPYEj;5#L(ubuSK8bQ}A6@c5tKxJiP%u5G}!nir2E{4~9e<|A1n%u?6$$|KI2)i~9O3dQmW9~4&c zNJc&HIh3NEqJ^(CUC#7x;`GK8pQ=pie7Y?H*afMr`me7fdR2bcHlsefNmhZBV$a%m zbj50WeOoap)G9Hfun?sQs%oE?&<@vuB9+Lg%# zzioeTY+RShSNEIzcNnbdZBFCd3AXzlqJ1@_5p@5!`Ic6_iGinFQ+;8C+U-cL z<=`lRaPo-=^BK!UVe>XeO}-zejC@hd@W#TqBt*2*`qRd9pQ_CTVU4j7v*nxZAchCA*MrBV4(W+y1bPk9r*B^#zO(&C=d)eaAS`yL z)y5L}{8Gfr)NVAPZbE&0u0%m96RMO+(6_vLxMl;Ac~c3CX76+>gi0-YFDxsA30)iy2t! zC<(~qPM+!U#M3=hDd@Sg-oqs2fecj*WS8kiWt2&!z77lp2zoI(2Fx z}Z##iYCCRtzi4D9c~&T604BR-Szs+;VnXt#h!X$3E^p*=v!~ zZgEvK;4TS`nu3gKo$;5~_1Z%(koKyB`qqz(rfN>MCtyh=B6TjQMa@~4Wz2s_awi~H zJlb=*0zOSf&RruUNW&0;pa*EcjpdbdYI0P}@=#UTKN2D8u7%}0@6Xyu%5RrIm>SG0 zV*-aT@l8~4jr>pj^_}Wswem_5o2v<5lTcZ#L4Z9C#YUX=+3Z_Zp8l}WT}-RHmNh_T zG=8{6=7P-S6}O!Z?I(xf3yMA`(m7n*LZ_Dv&#D^tA`?^k<5>-MDHMm*>XCX$y*HDf zh1;8J^Roa&H}le#z(!$x%P3sC-48_CJkS& z+N(2gm5*C5{g`sml#1jL9Gm}P3!D^tRgj0X9{YqO`}aUgLLS~fXj8$5e*-Q3BmeaO zA-)e(CH3^k0vlBoCq+fY_9uXp5{r%i(CWlv2KfKvB=_Iz`v05WGy)hM13>CnpQp+> z3l6|ckQIy~pPHExiXN45T6n&R&R;6hN+2N+F#Mr-N{^W!HF3|os-yR`AyvtMhtfFl z45@~EGCcU(cHC0Lh4}?RYt&x%R*g`@(!ju%ttpH5CEu1PDq#Dqo!-H#>k8cDVZPzb z8b6KnCQEnv-%qUK`ZIfz3~wA*9tRIl-l*U`55dZ3QcmzsM^sMOehZIu_*^E)07u6; zR{|)6h)s^1MMbh)(1Kyr-S5cgh~cQ6-8Z)O_K=NT;i{<>{2V%Ev77(XG+Rflx zmhTn6_lz6GPF3B?4seI6WheOt1$F(tQj(j|{$rj@yL0=IQ4UMa@im+q;>?B&>lMTL zOoALjgy?y*;Yg)Ot`T+6;q$R5dj}~PA|mmGv1qOAl5MK$W$oBW$1s6C*hQp#YCrWZ zs-skdKjynY_eOyqbgg37kObhMbT|9X8IPObxSV6v?(VT`Gq)-!EwJmh;n8vXJ1%i+ zLgrQ}XB%9q(Cuz%+oGBwqBdds*ggVsO!4J7ZC z>dxvC35^Uiw?9tTjOw6EDW96(6t<55ea~39)-q2;W1BJjwbB!A7w;xH$uudyd#iLY zCu4}^$Y?^+VDTM);d4Ds)guSxb5VhG;?&kn?5h`n919ix_#z~3>cdP9|M0WWL(dvu z4qv{Ke+s>OwatneGxkQI zDrYPyxPP+Q>6#1YzY(a;DPBGiwjzuZ?!iM?>Y3yRP;M>**W^K}HoiYKs?{NLtWBbW z2_2|$>LO-ICu<=(KWZZ*hYdZ`ox*6#RNP4W;;XI7K+h+$RIVZ)?Hco!w>=X0<(eTR ztr6DO3a-Exqb~Oa%(eH~uDr3$TA?bVoS4ixFrpDGz`jT4eg1}Qv#tlWoOiI$W{WP6 z8BT9jv3UNH5p9EMr6~O@olNF@R|qe$IqBt~3ywg@xrLi9H(#x6$cuHA6%GdbVgyS& zD{v1*Q>ofd&f5LJS_&*HtuVi>dQ+uT_3Jnp3o1@`mq0J?jt5(#5&iC8YKa)h^SqW*WB)t#lU_8d9He=)K4kFP1BW?^pDLj(w%UIB!W6&8G{lW6 zHc6S@yg;7)DTuK3ZKYra35pPzkWkW$9WS<8o6IfHkE5DL0dqa!DG4?KRT(4OM>EXN zvtszI)rm$Z)YLU(dTq6{f6%yA3M&z{-2DDCP$Ctv#?9xM;^I>2@HVmSoV>E~lvpzu zlWx6NyplGPyv{b3uSIhL^X1%pHfsW=ni*^RqpB^vQHgK*#%~oQeAmQVKEyQI2W){WjG(`<;R-^l~%#!z-47T1vEH%yDBKvaYA3`%?l^h$U(5E|=rS53G zdM65ZzP09RJD(`c5o_9cb6YQH3xzGVhH^H1`*PHB_4mxLZ?kuuAbRo4gS(eYVvECV z)3jbFoutna{wa$7q?Om&@3+vD$RxqLIT`73DvXe!0g~x6^J$y-Y#6Z?2OV=#BZ!pu zEz{@y_Q#6|9-XPyORQ1kC4=Dr3~gXP|?(7ocR(^oU8 zNA;I?jlNwOB!N7}G03^9ySK%HFXz{{LssYKxCn4qrqyPr1PEJ99btxZtaB+l^4>#*YL`l_&G={%yLo9fmE5obxf z+RxlJZ2_}Zs3%5b^ikc-yo{u7agoEL1X8M_5PF<(*3i|p$RWwZ!(81*$a5%c!o`fF zuN^1K30^<2uP1g#7gK-PpzX8P9~i&hTd9e;fU4%LJ!{ z3BP``MEP?MUy?7-riHS2;{WJsCU%|8&< zX;4L3Uh>*PwZPX5=rRe!R-*{(=Jx_`W`(Qv3+lJTuM<;G=WaW`5G;pWed6rs5Hle2 zy^U|J^7`@(-Hfuph3p|#xynlnqoD(mRsG{qnu)~98nThKmh?+~l9lCGeddM2LFul< zW$pS&G9`XlcS3SeZ_ukwD`Q4j}8WTO0T@Ptx$uJ7F$A z@DA4Vg0HMT&c!Lf^ZBZ--nd}nuQBI-Gkzu4$1rY&JJ-+(h=&iQlatsE473NTkImqc z6Fi?Zarhipq#0+0e@f17JQODZp+c{#AeE)f<5Z_n<=OU&6i3hAg}iJh2Z*O{40_TsdBA908jqxAP(2j)t4)b$(zoR5GyRwMjACX5Z%eT!i^KSF>%d zGd&GkxOC>%RBN}4dErvcZx`Av@@VjY;hY|o8euL|`LG}BUK+TgR6FE15egXllS=$3 zaw4HbAzc@+gZ^_(r8WhDFAcZiS9n1Ae;6TCC6%|*p&&o${E)QQ_{5NWdK8wbrW*PC z%v%LW>=uUYWQeY|LZN@`)?1n#;#Sm;p}%v!)Qx{MH+433bA>i=T}9<z&?cV!xkyrSu4H z34h~6MUAfAWF`!)K_k?QI&R*?&73=_f@o05;Dpw&_}9552QzAl_aTX$SA9Ci_8EAJ z7pj%h_P^MB>!7&0Zrzt8Z$bzJ5;Q@ByIXK~cXyX=+%>_12X}W5?vS8Cn#Q5g;O^S! zS-ksvcYo*BwtMcWx>dLKzcjUa&AHZ`bMzR`_&xc*^Y3yD9Q=lsz?E*f=(B@n2VC^g zj(J!m4`N(d)n`T}Q8`+cdP>}($ZBr8BEd9)K_DU9+6fIeOS2u^zTacRhj(o6SxOh< zrEz`&bb}!=+1NBiuUpg`0g{Fr=fM!xfIl>-IZhSncG!)#<8GVrHS!kUBro*7IOU_%0qg zR`hYN0@2jcxEz%Ys`ixJ9!2iq@5Q{1;VMPrAxVlXh_+EzaK-^_!)n2x*#M{aLIs0^ zojIF_NAB{Y7vFP~O_Bx`Ioa*h(+cciXZcM6yvUKyXV&RZxV6AW3(Zcx&~^u;6y@7w zch_Zm2TCCy?_5Kg%bP|IUezk1joaubLaV*^VGQM7VH|H=h-IUH1?sg5m!oC3s5swy z#MOXNP3K<0j>sH zIY3ly?wzx<>ig@EX9#DB6UpP7K%7>K6e;aRi%r%B3&ikS(^{TWZ1;n*UnyMg--Oi_ zx+i0*!)$dVw|`dby&-+|eGxf0U*-?1fOqZM6(73%vvpR4i-GX*25V(4s>Jo~l+M(H zDe64NX7F$>VL2-(r`rG*0;sV z#V7ekF5ofhr}$8Q`VMCN@M#@{p?#davsRA0macS~>BJGeVgBme8eId7Imu>Lof*T$ z$%M<$X}$Q{$Ckp=E8lE}Ag6aE9#JdHU=Ou2p#o(!1#qCV97$lO@0n}CD!3xkXe3K` zJ=qvP3bh^0Rui>6Ag0jkX0te5)nf2tk7g6Dy%a1SUvl|rkH%59z_6Z+bC@W6`mwBZ z9_&O&A2q0*O-XiMZ^W12p2Xrhlam2+y5Ji(s-Hcr|to!%t#264FGlUIR$mr znGF?5m6lQ}kC&ZYsBsgwNCZb79i@S^2cag4WW!z_!ylH}hr^sDLI@ABn+9L%2R=S; zaiW31_eB$R{6pvB$%pX4kwb&RTza1KaO8<0m5)76v(w*?AH7l}48zea^Zn9j3eoTx%KAT^Ld`nzF@eoP-i&sLalNQraNpN(b7k zbJ_VL;&5Lr5Tu+bHujFebG$g-GUzt@MY4dOl5;0>{X52}P7R-+(fJN{F?qo9G0(HMKN z1Sd!~3mxDc#54A=swNB5?mk0UK=^MR?Efn=^^*?PsTt70nh_ZDEqKb_W_@j2k)V6U zWAmx=LhFxZ@S3I{)6Br;&0hGLp#`D{72j3~K(Tf%%6$y;JFW6abvVZ$h9%2!9U*;v zE|5z~*OBoNlImvv%uzdQ6_Gx%2e!eclG-c?EBWqD_}HgX3qtcXov~I%A0!s^s~J8r zN!4TMT#R0JVGkjM{6)Zn*g5I7(ouFn+4&;^bMs#*&^?jIq?-!&L)eUZD9A}S?B-jD ztCR(I?^cnE5)C@*ZXg2@p6LL=8mfk~(-?57^!~)V#O+eF=^+%|toHYh-vuyMc8O;; zuHq94KR$%?o>(lCc@gTOguJ@@2G9QWxE%tx+za_lo1H~S#Is}8X41sy`hMC=MGp_E zb`O8-aQ-V?OEcZ&#BN}%%AjUza(4M#z4c-eTRQJwX_gUjZEr|W)fZyCqy7---lPGP zNB%ZztbwrP!S8ln+5jt`1{bkBxwUGsEgHwjHImm z5#8W)!(j zq-khx-jH=2t2TEetpiN4^rFZ$*0k{}u98e{nW-=yx)=Ct;Tn}DG3o=&;? zk+*v;2Qx$;uw^e|1oF!`H(BQ&(0ZUUwd>Oxr|NhFZJ}m6up6@O-@B#kWUhd)`u)Xx zxN1s&t>%=uk1M>t?CktE1HpzC%{v{?6q{1{65*gaqqd<@*Rj3fnWX8To)Vepa_Dp* zb>JRpDTBaSz=SD8Iu9RoUP0`t*OLCJdm=3>RXy00rv2bowB+gIdlvu&sm1HG!I}n| zG8quiZa+|+uXWM!=Qlo!+p5aeVd^++Kejq8oyRRg?6;K1(2O7C$-Gbly#ff3^c~q7 z!4e7(-5Y;=(qELd;FCQa`AUn6+_Wqm_Yv!f~aMK z_Y>rF_L5H3zxKVRi>|8eh-uO?icEoNPCP{eQCvE(&!0=EMjl75?f1uO=-pRFs-!9C zHAz}$)}2knSGG+3m}>rR%TdPU76xHJo>ozewi=B`2$%lYe`dSvRZ@ZXHd^#VA`2H? z-+hX}I`D_b#G@nwG4TZ?riK6G;W!Lg5MBdLsXhNyP}PpZwu@%=Ro#x`710<0vSs(y z698`fM%5F{=(Wmx8d=oG(aF^pJRVy;iQ2v&+PcL_M8xfo{?_}602xZ8)4ofIrhk(r zB9ayz?&k$^cJ7Mao{g5wc;|@CF0b=b`Th0 z?ivue5c8}@!;fxVJ&3VdK8yl|D}fN@(qqGhyyJ~Y?;mPz;pnv<@8b?%hi@GU8Wwu5 zX<@y%lyp;V3fA%Vy|B7lvKgZ;{Qlx&*)s~WX9Bq;-o8C50v3GpPEB71cGVP?08-v# zQ=ORg(9B=4uzqcjE_ZoEoCJgk`haFSJ+-juxJzlKz74&hXIs{8v9CToME$GzSTxrm zHmQy-L7My}8bRucgu9tS^16+!@oq~ncPyH#7U=Z7+%K69%06|kq(VVzdpDky>SfE9 zzM_cLBMt$0^|W$LYT=uSEUwMB;N1j&Q``{}Toe3lDnoTUWFR(OnG$ z;*%E!cJy*pTl@Bh-JZrJ3&sZTn#&WHr+q#mTNe=V|F0H{QMYRzzSnpA@GFdN{>K(} zb{hd@oYBbl(XyTQ^4^xtMl}tk?3jSZr?{R06Gx275m}jbDMy7~%eWn1(4Rsb+~>fR z|D*zL+0YIzIH2kSU=a1kT`87o2g4YC1lk&u(J{%sJ8(2Vrb=%TAxY;UN<1~6U&a{A zzOI#w3~hvAkJ*ejjXWAlt*R(3S}*iQ}whM$@MY<|@jY&~gEdu$)>Mn;n~jW`{S%90))2!tuN z3~-4Jtcg#Sp?B`$A7-}h=e?4a=Sfs0Da{!b%8Dl6T_56TG~5jA>kxUv8wXw!u(a4G ze&^W^2M}^wJ`Qgls{9<_h2q>v*P|!ZodW%tuczItZ>sDnQ2*|Qa`U#V%KN&{St-|h8c*#YJI(dy_)_7&q|A-|9`lknA=Mw%@%X6U zUX~-P>Bw4{1z2G?ie?@U7IK5_)slUMsgfA~ZoAq^_!XoksBi942J9YvJrmVMDRV{qn!H!_T3N01 z@HC0rKJakf-=D=a**`lEP0F=<{bFzWFU}{@uFcQ-gn5^%2aok0qiK)Zb~ke(ZwrpI zk&Ai*^aq{grQ=46BHy3VEjt|@XgiNRSB>7Ww)I?biJO$uQT*PC({V)x574r6zm!Jr z2fypHf~WUZ+y2A_TBgqHV*nAC>tx8S?aaqez60Q;_*AE94RsR7T>M|6;?t{__Om^WRG&htD8CzZ}Zn3j(cnT%7%^;c4v>;!ZaxSHvz%Ttq6i z^39A{0F zJ1!Yc{_>A>nzM8eKHx#E3)$%hSY!1bRsam|fvTJIRgwIuMGFkQMrtf*XF31ztrz92 zN0+&4u%i5y8sJc~KJGqZs=`Q%HJ;~&5AW z&s*~*?mm+)87;WSZbq3w00lvC4DgQ+a(*}HhLizH1z*jUHjkj_3AG;Sayi;>{tr zUz%4LaaO(xLEsA0Dj(Ix1kUc)Q~k$QlrCTah6Zlee<+L_p3bacn#KxgsPHWX1S6J_ z*lgpcp`WuW1~p$`Bg;YE3yG+R2ALeOybz9Y!u{C3T|m;MHNxug6_I5N5nwX8IP@bf z7~*Bw_jG)D__djs5r|ToP#3+qj>_>&9c(t10S_+srx}hcR`AV#wwO=*cxvM$qj^G!$aTHC8M4Y$_SnMPeRN!U^u(|1-0<6prYs=#i!zP;s&b$h2*6sXGo`SYg- zD6GGf-#5B=m9zNdUCdLV9&?(YW+Tx~BCeCVGd_lNXu`MeXoYR=u+YF)6!#{t&zeo_ z1;TILd8agvfWxD0Y{vUBXVQ`JftmaX2X%@Zh&K2wD?4qs!bh_PchF>EjF0fVQ*vhV zD1~jBUUxoj;1}QUOm*)pJF|mr#_~6yrO~!3i{(##>~-WTm|>ZCw!0P{;Er+jEj|c+ zYS7+CvW6`rgdd-q&MS=$S{S6^3&UZA@PcU5Teb=}3XD3~>^eQmY}Q(NB!4eWTNP}*;I+-2RTMxVGrM_YOOh)IcmLPHCf&`#51ho1sp!`U8M#z=>7X!y~iJV1cW!j>x zSVLMXdQ>lm%}SxY7#4!Rbn}9fPVobTZKFn9CB*@?+CE3FCap`jBM@+PjkwfY5U=sE zkYKgh+O&I4bN_28S1MMDX4)yul+-6I>(d@>gC34ZopJJ!kgMElP7JgAzAHC2G{S_A zj6yyxR+5UAcX^loqevhk`Wv^B&csa$a$yviYn_VM)fvslZ#m(AAt=TV1gY%@lh*BM zHs=LhTr?TC*0)q9B}j21UyU+#=#cyP3Bb~JWQKiGec~6zWDdo}mTO`PPmAI`_2O=H zxb>3;$eeLdI2)5AN-D>arW4%*&@cIhOK+`iX!fLW$rl_viCP(&X>BJn%QIt7wLo%+ z_f*TecC+lV&>t0q04$m&+#S2r&kgx%W_HG-C9k`MP<5Bi6b((I>| z^SnLr!N!le##fa_EN~JESCY{JU7~^m)TAB!zPWIbgIzn~3^iw0=_4Izgbs8!?fa(Z zvQy&rlQF2^3P61)WBiB3Ia_!1@nGg1vdC$*ep8wSr{66~o`ebAVXH#QGE|mze7n9W zt;F$B!Hl^8xzY>23ILZ_o#R`drymunrKNXDJ+<|sEIVgU zy`$nbgQggf0Ju*OLvaWDdiHe$x>o{+Q+X9B^%ws;nWjj2GG6KZ8c{ zu>ukm=lQTK=Shr^4Ts4!v@7hB#Dx0kYW4?D8to=aDi zY34<9%!(z4pOF6>#ec1m@z%f`R{G)$Gz$q$ix{E^)vp7}wcZPT)bHF|xzP(uzk!d| z_Baean>p62Jx%F7jaw}b+;4g-0&nU?P78~F=1NgkLOZgiTKN5SqozwR5(KTfRw_9% z#pRGnL`1AK&^`0OD|#Qk&$6oD^1a^nAGv_k3BP-#;bXl$6N8v_H_0iKtw*+WZ7cP! z=G~(f^WQ7YRGsvVx4aUR<*o9GijJ9BZ&SX((Mz>%5j|jHoqy9AWo~Y;f4RGOy?u;Ik#RL=ufP6 z-Ck2E;@;J=&HC7UB-e?#VtXCbfaOsSD$^vAE)S0=5V+Ay%4C-?%H>ft|Z`6WGS z_u>R;|pb*x$( zflqiEwE;ZzQZl`J7xW5QaYbW38W*3v+#bX$7T0GHEW&x%vh#zPX+~l7U9xIF>x5B+jyGr zRIOxs0p?xT_-Me6hEEFL!VmBFk!XJlxVxN2hgGFJXrN_XYo_7e;9WLLyb~{;zCyh< z=(td1V)=8e?0j6fny!Lhh1;|~SE29F+cjugNu3BX)*2kge>h4GTS6gHnb7Cjd$l`Z z_Lf8oFW~@%(UN?&b(A4`1E1z0fmdEmOIOfaDClhh!-!_D^l*|T{)ABt1gjPb%lY zWn)G?cCkR6Z?E!G`o}C&-9^h~8okWK%N^Xrmj`To+l|k7%DQ|jLRnhX&&qaAA6`Bi zl!y1#(x?x`-;c19582kPWfaPmS0xVfL}chA72*Y7bnQK^3s@FuYJKX~MwC-ZPG(G4 z`MQ%dVGB6q@vrQvo)6hFpOo8e0P)e|%V#wHl<1LhZTV&;sx;K@+oLD~U9?_ZWCkV} zDl_bpF{jGMe2oXRmwZ683U<-IVfXo!Qk|L37Wc&b>;s3KxxqyK$sVWSVE8u~W{$gDMU zf5?8hz3m+V9CDaMa`>H4ok;hQ(wq)J;xq#3$3{n*BNPNaOBX*2DwHMTKDzM0+qDk0 zX=>SWHSsz4`y`f#J8{P4>jfeKBf{tq_33GK#6=Y_cJqA~O-si@17HS*5cYQF{|O>o zeu-VyiS$GgpA#Ku&Fbxf&0BDNgwCjyWp=ZF{6$&>m~2$rUp`F8_nl?YDanBxQJ-Rx za50h<(_Jh~=$%Q~&R&{EX`!nJu0r5nz!gZa4MuxNs0ANR$_>8Nm#Gmz`U;gipD-3A zga)6)SCWYkX&Mt?Rp9f6AQlW>A7W|Xrm?>O1Rd%|J{(OjHWn^)RoLCs&&5k{r_;xm zji0UKX>tL##hxKwlwj)`$eJ+k z{qY8>eV^5=MkDmNscUM!G!V53T%?kP4pVvCy5LE-LqF;4YOLQer1JlqGGY&m( zG{}%#xdeg`MF-1J_+Zcaux;S0EQ&N_1O(=FMVx>ise@}gV2JTh zmSqj7-w+Z=a5J**zE4|WRQ=pKqkiO84tD*N8ERjK$(#ds$8L8bzc^H@f*u(VRlZzwRD zO)lF~J*#C^C|AbT<~92hLW?A~ZYwSf&`La3bm9|ir^)J6e$hF8%G}BQ7Ak`i6hT828pn)^1Y?0%L*Gm<3{SX0m?=VmbuZc($jt`4jbDg5G%U%&{jZ)Sy!6yhS)6 z^oI9;4*zH+2Zgv-wcK63qtBM^;-(ia5Jmn_SARLZSB6*C{`5^K1+#f^6QQCkF|yPz zhBjM(AybkLBrQdxf5vGyk%O3Au_4}XHvl6x8{Ru{_aW?zPGH4BA8_XtT34>0Kf*0s z&`e8A?z}Z%9do~Fus_Zcs2vWs1m^FJ^2XKJquAEkfU35i$X*w)hJdG7^N3sp?Ktkk z_tC>Sznd_4!sKMLOsOIopZrBH#gjQ2)mwXNTH4{3Ys{fir`=kD9r+Z+R)2lwN0X3i zW_hAe1VCZ-RcqiCF|$rStb@m(z1^n`NG#9HvN}^!s=JHp9ds~vbRuNwSF!hVp$Ai| zss1Xor}ZF>Q)~=ep`H}!Kz5_Sy@QD>iT8fl!OU>}LWqs~1wfAab9MU-e>iH=4oBNl z-su%X-*sb`j6=U7;O;|r=gXKCn$HwMds;PPZFAG0m`AD^!m6|Ctp)7r3 zU!0~STqEwTmG-Hh@Q3BK4?k{@^jP!HV%KcPwBJbW-<9d#{O#rCK8kHoRFm>~%1K8z zDzNlecK7-AN1#_aJe>3`v``~e9> zPcX(4pa$VD`2@YOW&n2d^CN1a>XZM}f1X8rvX~KD^5yj85|=c&(BqtbN{&l!ow`SL z_}uNzj1*w^bmA&ka88Fj&2EsB3vd5&>P>JuM2-JBFfPd^uFS355eky7vUNrLvtYYO{)W1o{Pm?be;R@zT)1R^INS8ABepPZT@|9WciDKYDR z{&2Tnr-^t7AU@0=<(@im@v?62Y)wbDV{~FAbZ)|Oq z)f|Gr_eu8vKZovG%h0mazyMzjo`k`OF<#?3@Jpe$^D3{IpJVh9fOn+zTrtW$uC2_z z_8EKUeK<5#el!c94emf++g*GhGxuY5dihnnXhDg=RUgnE7q%w@e1uVFUUl3y(&`kz z<$WI|YO5%EJ*L1UA3i~9HP4Mp$4Bn8?xbn36}rA`-))hVw8ZV^tU=>~?();wB3(MZ z2HUFUYXi?~SKo8FtnM!y^B|k-*SihPaRX0RQ5#T)lnhwGH=M0wKMU@Ba((C;F2f1* zUCa5yQO5&pM*|6Zyoh#I?+o&Ny}i9zgjO}Gd>`GA->-gqY7M`0WAXj!B1PJ`tQ$R) z0W9$IL59q|qZTFY&EL0Uh@G5m_m7cn>0~nBSTzxuZ?edYJdVm*9xhVwpioD3d6r9vB6&Yl2x;hSFl8!}pz9t#2K#(CA{fC;3SBwx=9 zL}8W7ts`W=k|1Erv(Epd)@ath!Y`&Bk^8|o+(GBcYE#;Q0|PeD8Oeg>#GXRhHHAlp zskvm{laN4rJ}g*GPEIIr1zo&v7D6O0561g5rv{wmdZ*VF+nB(5ok3aEQrv1S_%hu0 z8tLX}an}B^BFcpwSfsyStZI$U-fbtP0c*&g=YO9>3%urBTvAU@uCinROF`7pinrDD z;OU+)iWh)e_^;CQ{<9Y6e@=fyCHWVOk$UmGTzrw=Gh1HJT$AJ#9kF?1C6SbB@M`K5 z#d$9&GAcWj{a%L$^*-5kXZw>-ltH~JieC_~Z>loWjgo3p#ZU?i%L<3ua_}xBh@i_m z!_-5EUF-^+D|_OLY{D^1{PJ;d_f|4d|uIk8)^h|)qIo9RXlXjLO2)^FF7WaiOD(nqjvW^EFz zkbP7@((g3GHl!jr@E^GVlDuv<{yC0jx-`}hxtq6WU<%!y&_GD)>*dVIp#sxqtOYg& zpvF3iSx>8_ci4}wl>ko-=gcR2mLZ3QB^Q6^voCb}>Ej>v%O%{jf01-Hn>Y=)*2%Uc zXKc>GwA14*m`H7x1`P&RYqOGPe;yGuq=^0S)Otg{Z_)dS5C>mnSFUb+G%J7*(-ZZo zF~#m+Arb3uTa}vRX6{TaG89x-8i}k}Op{*cj)vAx8sHrxgU*V)fbU3fl(-;A4JuX& zr3!49>2Ewe9qsu)S!Em4^Mhha6x^GIPNAYNQt*+Y#~s}YF*%aq-`T2dd`@Yzautd@ z(vQg{;U5Y&xb=iYbYbeWnrF=Ss2s)mv^1c3bf4;w z0;zY<&Y+`a)}QBO7|0NM^{kJ4j`0cTLFk#7G^-A23*blVJX*Ryz>Y-7jv`w3>goK?1bkJyz}Ksunzj+*$0^;O4v7dVz%x` zWBN?1lvRppk8Y)uA&WD%>r7luZ~1}!+0Miz8_e%Gds5s;lW?T|eAws3fz_AYA+x1n zl##nj;(3)#ny{vmy4(B#v@W?C(3S7d+Se5dT;)z;d5M%HFkXRIr?plPjI-=fJuyA2 z+#LUcxImAOg}{wxKwRHOm%P@MJmpUNavJ~9$fN7-)j$+QIRuuynF`tcR7y$45M_}% z0-@(A5YR*o;usK^@1f#zIl@Y1rV}QK9y}O}E25N~cdg#1v=!Esa&}HOWuJ9oQ)wU= zeM<~@{JcWEMYOax>nPAo02lmSfD!*C*h%J=Z1U3PL?Nd_Bg#}=rY^~{8bo zm#oIs=8&RvM&>b9`oGv{Q|0&+q8R!c2eRG4KqLD5hRG8V-Se3u2M)EgiW*X=IK6-S)xOsO5zqHxnA{kow zZCw0_hxOt1IKJ_u$Q(P|wv}eFhCqCY6tz_5PhEMY6>4HMV@AgPOVHpd8mpyq>Cdcp zp||P|SE&t)bD?Fyfo$;M46o35wgm@60T}JfUqp2gbj>0Q>_s3i^W{Xl`z`wf=FJI{ zgHmj#F{bnnw8YY+6BVEj8%jlp0wWSw^e$zb_ zOqO(mW?RQ$6peei8-}n%`032Lu4iO{A|Vh6Mrr3p?b2oCiJMW*ojnsP1(_X>80Pyd%oCL0fP8;SY7aGuO>i0|WA)qG6!#hh$- zCnEiwo$ChDP-vy>W=mjr1uQH4D|OL9Nrg6=BMI{yGBxVw5_XVx7b6s|O*Nl~Ul-tb zMl6`R9>0sqqL{DowO`RQ3(S+mqyG%z&R&uTB%s6}92V#QikFU97G~;^B+-1vzDArw zFhB3XvT}HwWSM3bWZm4SeqyBSOBj2DJ_PT8CO*sd4!_f|6DaVDq z4C_ZzGm$R&aJH@N)si@6$KgKHLBQL3G(mWAOC_0VAn2E9&xD;iDi|k8u3Z}L7Q{`Z ze&(YMpWj|kfZ?-DtV`elW@;;XcqhY*smCcwwbZAb>WS<{UOMSDZO5f@gT-_6*`9HF zc~U62EIY;bX*9gWdbrSXn1|O4DhmmrU2x>MmZ4hlaJ8cjHyXWb5tD-o&Y9K}L26!A zB>pz%H)faj6kaahU*wSL>$~`KItLf*&p+)=> z#fG2>e@Kfs3u_yCn4bDOaHmAX+zS)U>L6`kOdoD{IQVTCP4EhKPhVaM`zpfDyBr9$7C*UXNo}8PGMrzcb+5MSWMoo^A$x z?JIh~e)(0l+cd`PG$lE|)&Z37P?XOB2|fnDh48LqQ>c_REL#g z9q|pKR4`i+zqVqo#~ml9r@UqBXOoA4 zTpasYUgeVAXmu7@{>~bR(P!`hk~&h(pAGDic-5=DeA7SOlM_urjP)Fjk(H*TNWkZz--4cxY+$;V7 zj6usp9xPB$VQ$fKFh;7{=x8zoo@e*B-p>z+AT%Q%`-)trJuZj1;dNuxqJlS?{bb%m}43Gg_JU5iYW9xY0V<|8w|`Z#Hci5=}tyx^*X|EuRlg;9?nR zch<9$R}^VypSMt}rftDiAq%~ORg*Wq8N*j+j4sITDo@o~7%kzQLB4%kCy@FbBwelg zd8GDQ>9{rKS4TXIvuFNbAg%F7yOZ7EhKSi3PMVBFymIc3_h)Iru=uk@$^!DaB$(VO z3<%D8LAj2dR6~cywzb%t5+z>}eZGuM+zpW8<(9jx#3!2Sy*fl~<$GD+)L=k6pNiqy zI6N=va-@I3PE^iVHhm}y%Kk8-H~mZIMN6c?^qaNA`B%in(=+C}!vuI(%_uoAdU6?SwB{Rs zB?G>!iHsk?HhC5k>O@!)lWw8rGThlM)yb)oVjA4NK&0GhGTDMO5~zuv%*0T7;)A0} zC24W?YKxUF<6yB%-pKEw6lVRqp~L3Ga(wwmTcx*ygI1@W#{C}Ejp?dTp&IM?cAvl~ zxpM>ImP`KHXL}6iKx}A~#-5%4|9g(`G|dhpYdiCJwjkjkJ|hPM6>NGP@&vHcBoQ); zO~5z22c>Xw1q%96Ds3UdKg4VCnB-3HS`3>ln;9&tt+$jAML zKHXU^oU{%gErMN;+k~>g$j=Pq6Sv;<(Zx8SYot_}7X8Q%y2G}&rP3Zd72sauOMQm+ zKl^O^=AFf&^(%V{%(l+(SpNKy^#)xXEYAVz&$8`llJl5+@Y#>3L6*GHQK&>qlrB?~ zhlqEt+z+BDVY(^Fr$}x3RTAQ-tK;LWWwWEp1YL(_LR?E_YAvx<@tq!t$ff57Kab1s z^cQm zMR35-=s!E(*JVj4Ej?93e4&5z2whr4kWyQQKRn90K}oxRB6K0JhRaue9m)Nx0RK0( zI*Eh&Lmy&93oJRZa8?YgTWr7Ag2WjUs|gmKTE;BbGE354OSq%Q5R*e;_;#33ia;Ho zjY*;zWp5F0l#G~;*iux~y7kDjb@b>3>K+I=bR1k^vGC zm0_adT`~5bKH#GUQD|r&nYjm+nsP)(h?dd}%J}dDSso@_(~jTqCFN9T(W0h@ug$1% zp$|V5$pS2Q~S?!UaCR3n2}pQM}I)Kuz)`&j4Nklxyv(RqI&TGQ)IaB z&X=i3MK_tfJ^CXi=KT$j5H%TCJ1KTbc=uGc$o?B(zwz|Tohk&#OAB&6%_~6JOqg!5 zm09~Dahgm&gk#>!=JFdf^f|f)4-ElEnwbzsLx52@@0WnK--(@B6-8YvxnHmxVS9>) zFv%&u+PpVL|3dD{z;`))HeZCX4s1C=G^N@BcpboUXUR?NPpdAu#5y9}hgz@&<~nSv z9Ks2pH`i+dH>#DV&$0#ANHU>^A7^J2+hLh+CFVKn68PYfKDAT~JK=v+t=846Z7P_D zwA=Q^+J9j+vVrx<7~bDTVN4=m_^?;~@bxf|e zEIM0R+b(0m7Ikhek#uC5)|^4BqtazqoGThQ`MY|AGDrvWQIN%!k>mc*xL5k#g=g+g zb(#FFTjz^>Q-~ex-MoKTdycppF9$5jgWqoLX!i#ej~Nt8T~G0{MAh>nM4*WgL0>Qu zzNxeXr-SZqB2I)DFX-oU`37?@*qe-GEbs3l)3$!sZF}7mGi@nk@_U#?`dw9jx!qJ9 zDuNQ?-82E4JuTpwREzg_b;Kc`pFrG}a+9Hb$xhZ4WorLr1FB`^^y3C~E;~ssR66Utp zFsI>}eUZlRfvzV@6hW!&Kkf!IYJ7A$dd+A%&HO0f=q&x>?g&)Ygi37@dnJw^5~pzZ z^X^G+KUX+%5J5QA!me6UZ1~fRr_l?I-f;{X*`lxr($2_0a721{gaT7V2 zSAkyh-w*#x*(>DWu`|Us8G4qjiRHk%r`M@rG2cpuJtY8pw~*~q=tgK)sYU#T$>MY{ z^>@Dt%|eI$Q1#a58CzE$JW&P@1E1xC(}e<+p%IZK$|~AzXc>IBCi*sT>O7-Ps!v^s z;l+m}=~wqcF-h-L$k37Y2xnn-Su1FJc%mKLt&FlMywnGD4mi@0)lEYo;*nF;shjfp zhYbQn&3462e}NWJ?Hu|NA7x;l(6X<6#soe)-KfS?oh{IC2^Xykn?Y zx6$0&G6&*H16kq;oAp%mus*!Gc_HNY`7=wGBr}5lkhHY4sR>9;teM-TR_Fq`Z2d&} z;QKQKrnx5_+rKk{r_!&#<5Su+er;2)8y!r>|6yI61i?SFYjNJ9`6Ej)84;lg+kfMR+jzi!Zoqy6Zl%x`>hv-GA@FBY&90d8cISB z#!IJW2c1)Q-p0oQy8{+Gv62sOBJb`Z4_`M@K0}D$sWIkXUYr+Tq6%On21>@;u|j@| zn1(%=p`u+YKQ2^uabI`ZlR1}*EVTT%S*e~jPr4tyS`xaO(*{Si)eEj&;<%WRPj68*3(Mb0yX z-rl7=TQetN;a05SS2(L$;INn`$2HRrI%4fHkiJ?~D1v`(VyS0?M7__*^JXo+q3wF~ zxo<{Z92meSs|ol}b*A~-G_2Chx0it&U9;9OZ1cxDW=f!3OvRwSJ;#_KZ8_@7oE8** zLKi#eVIr~v9On@)1{R@6CHux4$Zl&|$rUj2ljRwqMHGY&i2LkyYYI5c_)wCa*1GaK z`EMXV${;T+9Io`*JmB`kRx--eCJZQ;%#!sV7f+|>VL^if<%;}YAz)TjNBkIz-1^HD zh!kKSCY}V6u&3gK;)rHHt4KGXD71{YwUFS;j5|vP{8un>Zuxl2sg2np)p>PVnVB#> zj%5F=jf_S{s?7{n6qg(WWu-7h(c9hi7)2`lHxlKcVor;-Si|iBD;mp03vOM0_icj` z;0*mklUWXg>~9{@(!5LPSsG=mAtEb=Ok~5Q+83?CTAb5~SZAGgS-yVu>n*{jk1q2l zXk)-YC8T}y;R1f2K14;3EswU?gZpY@AT^hMJMCYRqIBZ{6QiU%XeR{_7p~AE`TIAhEX7l@+H+D7ZXA2vn7nO)(TeUj3mcX7o$kyv-?P7j?|SRTJJWR-o|edqHYMo$*{BrSsM=V7jNUdBYi~6H`3Tg3=Bfx)%7fj_!K&Y#yf&->STwXfmNfFw8xM z^Ipng204Hh5*OkFvi>?yF`oj0H~-Mw$t|a{H7(2!&}p?1(z!@g5)03+OA8Bh;6tSD zt&2gbI_a(Fd2>O1AR~%%dor*}G4RMRLiQb8Y14vqNE;&$UiV@_jg>!=0#6VloR$Cz z>@l&xv!P&8y8$E$YYo8go~z^ny8`DgU|Z@<@OCy@Z^#CseZejDgTX)62nY)+#s$*A zzVq)!l~23!+zIbGTB1fG(oE1-pI<`vWBIA2N}Bu#2rrd5GDSdkS-1TrF-FAThZ{4z z%93~B)6UEBAcKn`L~^tR9T%uApqf$Ez3wX=TM=;99x~slPzeB7)}f*>_e}4-w;d&? z231=}cIiMlHCb}&fy%e?8)G9#cckY!r4`}@OyA>5} zJEu~cw9mKX(R`ixy~{=Dim#@jX?2F$<^9~VPAjvNzXJ5gk@0AgMu6D6Sa#9f_bBqP zUtofe?$LTmz{xj;#8AK50YZhig)oY_3knnn_(X;X-5>N5F( zyjpK1D#ohbQD40IxQTNkatj<@yEKFIvCjH*&1+RfORVz~JY-IdM~!}A=4ZowQVPB% z+7*{flV1GUjh( zaT(LdD2t38gCgu-0t4 zq84Y|c_Eg2Fk9czx9$-lo*TKuz7#yGx?D~JJgS7b~t!~yQ7W(-Xn zC+H?36R^qfJrCBd2<7`?f&+|bkmkWX)1bP`vIG@P;9+kB&GY#j);J%|W&5Iwy!@T= zjQmcHGa@z(r?1UkeYEpn3N`j-(O8UhvJbpXY5sB`6gb{KOyV zvTo3jU!W08^jZ0NS|9tKT`tD88GpY7A^4Yub$Vjw?x(__OL{PTfw{6tja)yK{Hhh3 ziO1&Z{Qtq;dqy?Yu6w`u_$Ut|*bt;EU3w241pyTSmEHxUhR}Pp0ZJ9=1QO{|0sn}R6XrU$xzEZ zqIS&@Fmf0QT$PS$k2E;PFfU1&RgVnqi(&hQ4lQg{RH7n>^CvG?^vtwaf+MZh$HNhV z=AQMy2vd6|28;Tkr5h2S-XhXcS@;ZyJu1I24UB~Bm#VF(@m4#eP4A}^Yl{g1ii#)V z>p#88_IhW{z@A*J)W27B;xqs2Vh$K~{}M{5|Gy&?SW`APHv_{*!r0tgh~cx7l8~1V zPypv~0_wj1TnqlUyZ`Tu0jKxr36CVD5xkVed)LoL7WvntRx;grdd_P)gH^c?V+y@?WqJHx$GKE|h) zbw^wWwkPX~$>m!csecu1g%+Gu@(-8k3Y*pve`T`c{6w@B(`w{arqhA}$OTF{c-=_R z?JCuagDZ$GqS$FqJrCq$Z-~DWT=v8Vz`c*c+u-# zs$TOa1AWD?L%4CiT~>k9g=YP8xMW`&oI{K=@C33Z<8Z#E+b(9+c73vmx7321WMo8A zl!vs-0^t+r?z5(coR;Epmuo)PYUhe+wdwi-dea_wBya-r-JUyGzi~&DtYyG{RPSjtc{#u=uQ?R?h&4*0c zY(JbQKy}XP9I&6iS9$kMj?JU&HhTTd0uR5Gof5Vc{6vjN>WVf-xss<*r^XzmTZpj0 z6+-BkF^tC8qOljf@@8XFRKJFwO2hQ&gS`Yjx29Y7B8Y!|VMy^97B3TC8UJC5EOQI= z?`ZUdexY-5d#^jlRn>|f>Ovz# zFUoD1_XyQg`_Y;PDz-MY(z2XWV)yLauU z=X7s%6axuqqS0}hag-$Bq~jg8d=t~1lF&Wa+>eAFLRN%e_fW%%j2fbQGbO>z~EY2 zwc!K5&0)bo-VIC*#G+c{Y=%9mHp72Fu1N&yA~$}L1RD}n*X4N2E)=I1GyRWTz-N7p za(O%H!%4}$!VAdOPT%4@g!-rmqSTyg!;MTVW8Dn4xeT#pKdLGdEqiRm0OXVIatsV5 zf6(JMT~J1W7cyn2?M4=&o3>p`=BAbt@~+J33TOA}j9glM8>JB$Ae+X+ZIr*tCF||g zI5n;VmPPUUWp02TI*S{V+5i^voi#TX=d}s$(zRrN6{#bo>Aq)nc3pk47l&D>+EW{L zU6GT8b(~QtT8eB9x!#CK?`+krx^<^hUu3~87Kfr)HQ}{}lGPq0Eet*gmn0Y}M!es0 zwOweyu-%5%75O7srx!Yw?*911+l8|qpB4p4dbY&zd7q=I%Lj61s{*TAYtgdGyoVJP za<@2#>Wy0K`{Cc%LbKaEolMlMJx5$fykD#HnFb&c;r72b!T$G4 z;D0~s|Lv$+hXM4LFOXlq5MbkAX1)eY`X%}KZ7YXHscD7=$uubf>;s|anOYMcIv3aG zHuWyt{k@6cb!Hl^AFp3{$T4JESn?*%T`T#7Rg%13Tp}QLc+%-W_08$y3739hRj!iK z^~8GaJF@AcoRDE`VG}Aj{dnM{+I9A->+!8G16wUMilqS z^Km(FBlqqB>)BUc?T?iFl^g6oubuVap>|Nh2^PP75VPT+G7d;3^F;)K>>hD>(?Rv0 zDLZu)l>@bnk&#ceHoty4DkOkFK#p$UP1x&Dx-sa=Uot+*WVA^*<+A5mAcjAyYIO*G zf0QkNCun_VTKVQcjY+*wlH8rQNkxk<{CbwC&ECmPqBlPRGqbHy+y1vRy`Mx}(!59i z=E`1Q${RMiFFxg0@%zY?)^$06DoQy4Iwv* zL#oP#$JA_SvVIZrW7R=>_94vl_c1C9p4cQKZj>;IU&?XKmi;fZ5*?vMLkN6l}zGp_{KWYnw<=UKi~S2X?- zB9GQOSvVra&khH?NSt9JHCFfZjl2mBrap)pV$HH%l_ZuNy2_4&y;mb9G+jamxUN_> z;<}B(gcvE3q;cJAj`Pc1cN5|Y@o!kZoukr?R)(qKXQz!(vK!}&gxn;e$C-s#i7*w= z?FTiCUqbEmRFWrTMQL?Br+Z0Wu6ZgxTmefrrEav}>tc|OeAQ=V61GHAH>z=Qi*-Ub zJlUk{Ji|JWT^G6+54$zjWKC_DFmUq8P6i8J$+T)?R~4U)nXWF;&`X2FOJ@%PFRsDj zuIoFe)bl0wtb328I-xCNPEG5Z^&h|7h4W8+j#`~`FW`8pT;v10<&~~75?ml&vj1&Y zMZ(?ayLz8~#&ZS5Ng0)$c_vt4hFaFuyMoJ$AO4i3ip`jhcf^`)mKj_1}C+77P(e650bY&}NoGhSFmP>`Zy;K@Mcgcb9Jgy<{_15y2YRnV z>cQ?6y4LFE1H))Ks&b*_#z^LI{b}Q0x7IXn3K36Lr=&iL2hK9+Lws<+tR*4CYgN{L)$>dqg7ln>Xa)$Psw-y-&seYx- z$2k^B40qX*>()fyrqU?edC#}4lQ>Gy0NP7^hllPqs7rVIJpF!$n3C0j8wU;J80Y(~ z&DfO(+b?NmKwqsb+}NqT&&OVuH>@+0@gcsp@5cKqZouOwTw)s`U0YyOcReR)LJ15EgL{wG8FKN-^h$&mg}hV*|jr2oenG zq2$d=InnoUQRflrYs={}?(J`!Z7*ZYgG~(=?Cr;vP%Wib#HJ|LcecJym8gbzH+bl; zzMX}WpOuC@-Ro0a=V;3E)}dO6>V`X=CCqG-*D7}|kdRV2Y4P-wfY7Dq5}2SXhsr_H z*U1HbFIQ#_M=xny=2Tdu7=|~6EUEI@IP9Sel$9QLO{dAk6FJi; zi-8N@J9CUEZ`1S`sl=`7b|OCIWoNSZM6qh!S^M52%1ybu`^2Oe zgf(<3y)O9$e(mf^e^i3+`wNG#j5O!z#UE3#?<${RmUT*s1!GuMmuO&HiUBTlh5;2V zB}B6*-R*DnBX2o1#^(`mkn{br@A4L4l!QUrVEhHxKXL)aV;COvQ;v5@@QBGKG13lfcoDkAWHmf+ zMTNMTTc>o=bUR;caLRN4MY_91S3V2r+aC*-v~&XkU^J@myJD7jxA2*Wu33Q7PM-dm zog-Jxes_6`i;GC;2vu}c72E{&NYVkRHDhoe_j8I((}x;v?- z{!vxdl(+DMOgg+=EJ#Xgf!p&1;aijycOqr6M+=9B+I9;?f|PotojiU5R)a){Sgk|*i-MFM-IBijx8HNVj_ikdza~T+Q1-Af zqzF&x-q#l#2PivZ-y{|SU@T{2uVb!QY@LkJgk~%YR8N?nj+KNr$hytVp05AuBEPn4 z=gVTb?oJ9n{k2(;^d}X=1$z>VzvA@y!O#oiU!37s)ZCFJME%Y_HX6#9!U9KTZ@rfF zb^&jEeI`HMqpO55My(=Fc9oom` zx~!$;QbT4XNMCBc8(SwhR11%|!B!drH9u5F*jty^VIP*owBoa6997wsoRa(ZyB8ws zeUCZa*%MQ8Qn=w98@OqvP^F#kCo(A4{v6da*P@I*-k3v35=kz^^H@s^s@%rk5+I$~ zN4&frvcC_$!pTNlwLO^oQGY@D?20et)Lsf2v0E7Xpjuvt+r85jV}0u;J$Zg>2v0{% zl_p@WOk#0IkndaL#T0T|;I45!LSPt5R?le>56;$RO?kbZ4x~BzTge<_Xii?d zoc(YX>;TRg3*vHmNs89kP`GFtAoJha5xSk?1 zNmSGNFv&?4ygz1Tlx!|arpZ|)r zToK41`J{^do&V~W@SZSAYF;aUT+sN&$r)sXRbxh!L%O3&ti>h>X>B)r5Ps}MA70+W z)Hiq~(cQ@V#MbV4c%3EHJ-rKj$s2*=r-7W;Sll))CV{LYA&v6JEE zGeop<;IeH+`Y0=V^HTjnWZSuC)qLjl8wim!Lz~TF?`4n03%)Y(=2uVm2hUcuTS->R zje6k|;F*|(!4E1DvjX8or(0^2GdnZ*ZbbR71u_2*k^>0qjJ=(jvB{*7m$@5DzV16O z;3n9W*$RBmX=%v~sj_anxVJ(gVu}2ml|@9Zq4onaYqu_t6Me%rC$YovhP(AJRt$<1 za+o%$KUL3@We?oA*K%r2o{Hw23c|i&Qv_@GJT8Y@pIia-X@aX_LQ1!kx9&PO38Oww zc1gmxu_8GyQxC&Z(+p^-1SB;i(#MR=Rqa}5kH*hBBGL{d_c}A~?=D@Efb6mRo`bwf zPYoo$)wDM-_e+A-c3j$|47%#lY0fAlrPIB2jHG9YTl_J;Q`3;W9|RBL_xPf!Kw+hf zDX#95M`Wt5!jWEcOqB8h>zA{YF|<*UaZ(?aXgh+w43Fjq)fp+$47!Yj2YqQei4zMO zW0An!u!(omrKX!DMuf$|4si;DsN206xf@N15p%Bb!c2F;30}bXQ3Qm^3!| zd{sxLMyow4FtTiSD}q&iod4am zb>+n4#_VL1x5p~0e@)$JMhYL?2LsZdw$HA!-a9qpjU1=5>=m%h5z=FlO2Epdo}LCA zs)~!#(yafi_WvnUKYfWb8DTGVNd4CFV)(IN!psVboPWc{m@1fwNZ_D_ zNiRd6)q6u)D)<{iO#Er3 zBOGP(8r7Pe0KY~heqUg^ZW^n2il?0XY~g>BZE^Ot!X&gy#@}j;GCcI~;EZEm&`pr3 zzCNV8b-!P=Bz&7wQTDjmZpdnq7_sCZeHIFTU|yY+huqDq%HThk*)Gostx~La2%x-< zN#I-sMQ_qNgiHtdZeACIyqfs%s_b!%Z-6%b#H-x8MB?yu#qn&Ql+XRf3D;Gv0WCZT z5m(s1^W%|!Sg6OWJMudY4r8gKjNaSKs5iW_PN5HB3^-LKPx{(hmD=0`AEWP@DH!)w zG}l?j>?NjIDN>%>Ah6@smI`aJDz~f%5vq9!gQeH^c#214^%jgvQsKj-AFXrNr^}~e zvD5FZE?uEofLD!qV-J0K3m)lLq#K`bhBJ+`nt|hbZrYxV1^Or&TZFHag_|yyCcqUQ z5js)UQ|!&`QI2b;`2vUv3l8N+?>9;NpD`SzS0XqrYgX4Idr99QBb+Gf`2ycmXb;>N zroMqJ{zpMQT*Irlg2(%&O7L>hBQb`VPd}^k#6*O~6a0V<;@r@UrJOTdPcQ5b=AE0g z(+wHxr+1+h1QT~RXT!B+k{}aLFE{B21?5!_iIZ9}I_ue6{hkHLgKtt({d)81dkF5X z)|14CJY~Tz9H(lT$Tp#KY3c25GtN^*BQ~k9eOA~wRC8gw%W$wE3vZIq$Mt-wWkmXT zow9x6-z`Li0v^pX4nUw)`A?QeIyh%r)+4?pASt$YJF3BP#)s#?W6s?3Gr+Q z>ci5AC2HbS*V);Oh08+M!IwKOe$M(AmE$w=kCOGw1Bt6HWPK!Vc#exVZ9L^C7hgf& z;m8nv>}t(Tf5wk}8OF()frgN70wo&QSj=zks(mf5+6F)8UUCYl+od zp7N2wUVf1!gmI^l^RHVNC(lHpf4S!!UEU3CG#w+|h2w+v5)#`pchEqilB4xKRz9J9 z%c1Ud%1`{JTioeG-rdPY=CJXWtoIxAuzHxe8=l!ky zLd)O&Xn!K$wbwgnzU=-xY}FfIR1k1|B1w-j_zqMlN@Bb!m{I9i~|D;9#XYLXx+Re-Wn!Io6 zr3k}$?HEAIsS!_4MV0nv9Kg2y&jR*;?)3lR_P3gWMzNNXrSx@yTC0*@C9}?|nxnc|D z9=&?@4yk^b=A}x0qp>x3IF#Vys7(44Y;J``I@satHrh~a<1&buFn3(L&XzyKnh84b zbi5L%?^lLSe`3%sH$QB%v;BJo`{v8qLt?jW%&4E5`PTJB+R*U`v|UERn?Net#Z>fj zxST}66OuiSGpe}~GlrQ_Zbsi3yVSORZ1>B@;<~?YP|rH+%=BE-J}OQjWT#H)&t2*X zXR}X>>O$7lp}~94lC+bAENs!s)2vl0D5@9FnmrXon?89xpd7@gq^{M48cu;n!ezTp zjB6{fyU_C@o{0rfZ$~zP;{BaPZwF#DLl4qj-RnBvpuSeVZwMgxq;oOLW|(28p4mzr zLC6%CBK-c;(3}pIMPThn%5JZE9K= zRapf)W^Qvq&n?=h9Vu@-;#PG&Ojug&2vMIr;RLUKDfKSrgh;IKU}3erJ(9yGqP0c> zRdR@j6R(_1*O0|S;;OC`jlZJqAzAJ(&iMFuz`8umB`ZbxW48cFh)<`a9O~05vssxL z1|;1BG8FAo*d3hBaKmwGZsznfUU+eu@p(7PJlO4tWp;>$r7bzV@R5R!{@2rYR{WRz zk3qo=3q5^p^B|j=LoSN1b5x&`n(RpTUlQC9q>6E6P|bvmv@ZW|e(fFK+A>)lMc z$a<9It1O&nja=Fu(o*w9`_R z1G$$(pb-4B7oK=uVoa?>RmGfZKhq3wNgSC-H#oQGs!etCt z&vWOiNiNee;a4hta@cnRv!*?&dBA+=dZ06|$B!(rSbPivmkm>5hvVwQ#C@amO`uOv<`} z&1=atIn6TE3PxSADP!T%Z)?2c3R6?#l{HmZ7fP}es+Xcc5by+AH+9Bp!UX+5lWHu?raO(; z_^M2(d_gza*>EvWM6EE#=&shvux@y6&&-g`Hl>6gHVC)yYduglQxQuty)}Kl85cNR zVoyCYoxkM$)=t53>gVM+9KCvLtcFW7yW;$0-C=VX*yTF=A@S;#Y+`^>jcfMI%d3_j zr>x0O+7xoTw&V%%mp~m?{XaTdy@e*^q$)V?wiUdpQQX+W&E-5Ga4n01}%afBkVRa$I>uc=Ek-$R$>CB^~DLW;|+COsNTM+*)$H zj>-uO@}Jz3hi-jX#`{J6z{Ym@5{4epO!q&k?R&^!kQ!p2Q2&cR^<|^-;gL$E=$PAj z#!J5;Fg5DCl|1XUn$gP(jhTea!Hy9A8f$RMCP%&DhL>X28vQ-SniA%Pwe569h=Tht z^k9Ld_5xMi`GGY|T$xVd`zo zf@@|)`3d{2I9cAq85ifG>C0XTVX#k6<9K})agmM%4P8cF_nY&$?}Q(+k4M^bGL2;G z-L#E~amX<};~SY#H?+Au|L!qNGdbG&TE7wL6TB=Iz9vRt{#^#k~d$di1cm`|@ z6-A!>^pnTJ+S<389^k&!UuL<-Ww>BkLAOAyT<~=KY1(-8*-srQvl*&kNhJNg8Es(9Y&AbbhG=JJNc4lu zM$|wM$)W(nTNANnBX1Y#@9VOl5<njF5*Is?hXNvkEi=t~=f6Iah8;d@EQLQz6ek$<=HH42&p$DrSTin|+%`tgSqy8* z{k%S@5^Wq_X1!Kwxd0ZPP8Fi7(lAQ>pq+&0%?{$x_sU^x0ps+W2R)yrL(b`xdNXr6 zu(l^lYz)utw~Z#(t*#1G$$-~mNg3uxGN!rHrZPbV25PM6z?&uqP8}n*irasFw-Gk7 z*g#7-^#wYaoPtMU!3m9*XTyH$Hh)$9n@Vxe1uaWx>~1G<+=fT?F3v5kfb3Eb5z^(( z0(&@a;WFbl8Jo#qtbyg8h@};}UFEzSt61#E+Kmj@MUDrB~ zLNDUrIxvww@D^MV({rOR78c7{Md&bfdm;;8F7Ghm=;=Buvo{zhm%OOw^`PJi!eSiO z*HzFtuP4z%iLXlgYSR@i{zsl`R-5;Dp83Vh?Uqxt{2xEtcNgv^3^0&Z-rK1ah1(Fb z`t@Wv(Sc&vGjK_+R{oc`>nOo-ktZsWYgf>Xm&&Y@W>?=WNI87BLr9F>_qI=ZPCnvw zjXQ_g(;_vi>$Yns!KbCZR^$YE3qvg*Zww5C`8x(|aUb^mk#{FY;mP6cxzp*&hR3jx z==R0K_&(~V?N_Y9vK?z{AW5C<#fgs}cfOtFxRRe(^YJw)Ev)Hk25RZ1>d-s0m^~1c zPhQ3&t}?Smu?>`7Kilw7`u;fFEz_Zy*;+sx)vm5|Ws_o1))E?dZ?~(kOO&krJhXq3 zmRn-k{yuOLlKu|}bIiiK8`%aD!d{6wvGTGkMP_CktRLCzy7c7HgS&?DtQkkUU3JP` zab58?S?i-CyDvd~d)|_%l&x=)^z$dH5s2K=C8r#voq4Hja}rXENO)PBZq@*HjV4E zE$0dA3yN_y$;!?ZL+mJi8A!%i!VQA-WSF@6X}=r`W=~%yP2_43K1`MCdg={`>X!)! zTikz$)?%Auc@snXwa=c----(ims5z;YQNoe>m5Nsj&#tCcG4aDoSAe=m6IuETgdqZ*HDDEf7!uT%(NxvmLYnv% z>WzG_9PGNfkh!-sbW;Ph&GvC)x=h1&WhD4wX51}Im3(0E^R*zKqVO4!xB(H#+=GJ{ zDMWK>4?g*R@QY`sd+bG=kQP#?wRA}ho!m5oxh|kj`-sk-yxTLP6%lyxX`Mk$JQ>@5 zJoEkCiB#%s=X_^fy}$B>y?IZnWqOz|6-(+rvQ}1PJmT`b0p4@q59uy4ZOju+D2c&- z%<^Ui4SUii=`nasJ`CP2gx^s$Z^-I8Sa=_{3+ zSnaeaMKD#e4*Uk{&BOrI&6gWn~TImIs>MVrU|Rb~~Y zF^++~3VD$Q>5P`gS?%WmvO*c^*yePpV2Jw02#P(iXDDwJ9n!J(!^HVO_~kQl690Uv zo!d%m3SFokob_w!0?dMZnR4lCSdzCJ3EK1WQcgGJ zNcu5b_-+YV$PUly%P_Soq@R8#e?#_OEQD4^%@<16-mG$Fd8E3}i}n8xH*T55qm3te ziwmfJd%VAyzR?3pcIC<09DZ9G7VZABzbluRHjs_RIXz2DJQ1lD3wic4y7|1BYs}en z?w%uaKhGZ>q_!qg?D8zu`_2%i)>RuWv()X3QU7h!UHUEcdi7AslFuzOB^4oETMrn1 zGw5~8^lwAAUkxQ&95ea`TM|vWh4 zPmSZ^GZ4S9I9-Q+>APBCLwo$hS>kD(3|b23xomOM>&dS#bqn=ie<> z!$&Cj$g^>gtw4Tcs-MV@Rf-kijra{SF@*#=VJ7wYXyyzBH=#@yVtkCngx-Zq9(+cO zSF%pj-aB)N1r^<+-(NX+mf{lW`WTt3vN50n)$luX^HO~6k#S-Tj} zGtuMh3}6_y6QyIDTUDH^o(?+EM5r9HBnTS1;SzL`O8 zgtFsS2|z`-gPZ(TZJ_M_xQKkT3>AdWU=LeaW+$U0VUJen`h#)CqTTBZHiRF0LjDBh zARkQ|@^|9n*%ps41!nkQ^w*k-%`V1q^RMhn*WlO?E2e432Vl(k@J+F<;vvZ%W|nF& zm+lCCR?|1>3P_(%hJ`K(w$zSe`cxSDGXOQ_ESwS=-DxZvUTG@pR?A0s;?^5_Ra20L z^$}G<23Ndep3r!uM;RJVIGY|KxOlVe z>2bCFUTR#{kK&#|#6X9Ee)~NRaBm&ZW&V3~lk9C0VO_eS4}a|FDx%k-k9ee>HzFoG zhwt-@4qc9QUa4y^s2ooZTJ+0&BLlq(@ntbf>@#E0pCT0PP&g7l2P~L2!b>sfI-ODs;=?* z7`3wsqO7CqhQ@b@f456tE?llC)Y+E>Vfiq^AOPe|)VY~Kn1+F9$Yq!wEg4lWL6hoJ zs9u2KkL#a+LK7;wDbs3`ZGh@IFY;AsGzeBr-><#B2`l$;yne%yD99h!FOA4tOZzzW zIOFTLXX`P2>fm+8acM8QNa?M9t}Nu1urV*g?hPYP#Z=`ylv^ z)%&tWn(HhV*%EAs(egH^1N-K0U+yv=P-|Fe0*O^nMI_LQ>F+%S|CVG0zJsb|?pIIN zH__tudptSm6Uut?`DoLqz>0)FF1`bAw&p-ASO8w7_`mak|CS%Vf6fm(Q3EKG$qU!M z)h!sUc!DRjUzM#fQ_?)=+`8&|mD=N%6!eJ3H>;lbCzzz-wdWeoFGj61Yls!mYD?0; zd(^_!ks)REo$I-~OM4Bn5IyY)jyBhl@6Yn|jX(cNN>pV0j#|X!yDq)+r7<^_YnPeh z?mwa7p3z6JcMiyXa7;u0s;7#wataN~9Fgh9_>Nr&olcS!gdE+xTmBkjoOsfR5M|%W z^^gcUk7cPoj&6Q8SGHEra;fv@01?A*RQFJ7*(jgmMb^3}@sLqvYI2&*MJJe2+&*f2 zCua2gC)Sa$QqM4Vr@b1@KRm|j-mm22qUw_|@}YKyg6$VxNZ!BlA$PI+{w?3N5zshe zXZvW{A1h|bMU+v|9Vz9$3uq%WACJ*q&C9MB-zQZD_TW9j`zO0_>vPlVKA_6YS*(E& z#CN^L$+w}e<`+lmE%SvtFls`$AZAwOwU~q;O#7RbsoiAZFEvIX$%yC;_)xvogALnI zxQDXOk2dKIkq{}fB+(w->T|_bu*Y7I?5nLb!O1(|c0THFmJ7FGHMpph7B-P&yEHz$ z6n>Vuxwz=-Y>U*{avF*hl&RBJsT~KJaP!S5X1kIO9&m8LjrG!O&CuhLPSqC7)+f%| z{q$FP@%XlZ%vOKao=WRG?EW`K4s^Diue^cC6AW=~ZtDS8W9j^Md&-{INI2+k$v^%g zmSmjlZ|?Nte4=lZeQI73Tj`20( z{jqFGxOfJwJJBkz8nK5~LsL!{WBsaoNo=gO_O@Geh?bUTP=P#qM^cm1TgZ4G=HM0? zn&#y?PCh217iy)u)r=ZhyYT&@dgCL)`X%^YU#Tld1J)0|N3@nhe~#IT1qKV7z04Ft z5{%8&=8r56Pw*-RCwts+)iuqx0(QL@8q1gZFUCoaxo6A=OHOMR%Kv4V0Q(}h^RT)8 z`?7xk8)SAT!os=4ejTe+u>4J3RMwXV^uSzCUN&mdo^mdGWP}z^UU{YVAM}k1R|um{qhkWy zhYg1ZQtm^ehfxX;YmJ+aj)O{1J0Fh=aMg%?3JQNnieE9fU^`W-#%%rT+Q-n5J|Z^K zLN}U;pxW>=oDX;Bh5gX#Sj)$SfTEDwd|Q=!lJrY?Ie{D%ZENUcEzjIiF=qSmVe0z$yPb#CHqOfo#jO0B!^R)G za9JvMlgxYAi}(lN%LfAE=Vx4IdKAde^d-^rCwKP(R1V^;EkIJxb;94mhE;zP=6?na znk_RW-x}RBk?y%{-Qs$2{;<~3zv<&sy@_F`Xo?-yw(0Auk@p!hLVXpT$tyyf6N>rh>ONf-La+y8X}MAdB@q?$!noiD zX9vdSe)(|yRI<8!=;2f*as9JVZAJ5=>O}05+JTQtw)^0pIv@F3Xv>(Az`L#``vzhI zdxmR(I!sfUMW!-Fhc8_&S{{~EUR33DCvDJbI>Z+n*=#8$TBe&sSMB(dlU}*k74i%F zNrv1(C$o0l0DN^jIB4Kr_0Uln$Z2EWSga)%TsoElZHf>{Q^k%n%w<%cSgIj7E7_oF z`s{yJ6IBn?W>rdq;)`LR0x3^3Buezx0hf?-$;ts|JdJPqf<9NHVUZbnLHqew1r0wN z%|P_=p2P{Z{Y}do5I%F}@akigz{hS@ZaSgt21MSXKnz;+Tr7ese&sb8uK8R#m8H3U zsBm+&ZXV!=JRnJW%lVgeNxSh>%jQm`vPsF#a?z@kVtStvLQm1y0JoTX!Q4C3=4O3~ z!&0)UTpZK3&{^RPd#V;;-C1__yIW6pLE+%#zj+M2%y1kw;6E|7Qf{YypRgihLZ|}~ z+_2;9?30?Z*8AeAcCL#ldj(NJGM{`u+~J~DL{`;bEVYR-fahQnfsAL@!20s^7tK0{9URXfIQS zK|LVSTn~@Qo)0}^M-;L)F0H-q59GVKk)8fz_J z(DNo)6EULuM#<4RgPjAjtMMMe*QvhMaSJW)PXlcg-%1`|ud3g9C;B_iJoh`!Tw6QRCw!y5J)$&(r}a&>#C#;xC#Yaic1`W4R9;MAE9H_u~tGkako&8zu$EMtFB$w z3)Rgnra9}_7kW~o41W9Cl43Dy9fb#gw)*{;401n$tK4;Qhk&A zI7QC-*e&W%?E!*CU^6YRQ$pEC`+z6$%}QPI%qOu2z`CFTY1PKNiHlU9S9y4lw<2E1 z)^QF*E614D*ew%2mz=2X?XvXz#X23Jdr$T})yFuAIDjMck?wD= zYpk!56o55&8rxnM?l-z1FQ4!T*xs{pwzV~rOLN5OXLSuLVB0+E|5IiA^7Mp>Z{JjO z=A{Gx2lJN(vO<@GCgMkqM_ZOaa#3|qkIzIG5(2}%!T?TA{d94tVwuI<~o`ujrjM^{oP`_ymd zIv?)QA!t_|lvuICU`pByYrtBk#!0~Qz%I%u_%|6(#n333?t*&NCqLyJ%NWNEXfXl4 z2W;Hsur(>D@Ehe~6qq4){X-|quz?;%oNW>A_F*HO-cR0K+NCu;bgJB<{Ola6bq zxo#0KXt{Pyntoh%FrKWXMZmON>EX;(s$=4DijjX%@m+!s*bO{*c5A#H(xoGR{Af_c z-iQu(KhgyrhpN;nz%*X(x>_zNNacJ2@O{t4!-;yl@loPc3$Z`BEe#F9U3dy5U{nsb-N6zel}(0p7F?e5}bNzlI%P%MQmc~vdoDDolq-)9)>gb^^s0M{2h=bf-WM#d@qqpNa`(3}a{@#agK7MHeeV?Fl_VfVpJW0st5_ z$vHN6w^Tpd?~h78W68dHazti&Ln9TsoQAbnzp39mMDy12wbl`#z-;*&^~(4}m8s}d z&>djb(i~b3Tm!M5-6n>UIGMu6#KQN<0p!hsE-4*RK${L7TTRL!o*bPCDG3z$T;{wn zPdu(q4fiFgTACN6{ESk>tA3VA^M^GYe;1L_9e;U9Cg|k=1fKsyj1hkXII{hs>w;ja z;a+)Re%FG20Pe!S=K`LELh5gJeHinG{8V+q3ZJ;78O*pO|Ck%>s@Bz3+M4x$7XH+b z0LW=K#G1+)p8V}Vaxh1o@@^&llp27oYJ?H5Q@mqUW-aY6K zId06zE)zFvX>CoQH0-~Hy$aJFq9x62EARvKB}GAy zn{hwf@4gdv?a!R^%Kq$Eds-$xcKE*t0r)Uy`fpJ*FnoBZW^|5~KId^XB^y-3>UqVF zj=XxZKh%}f1Lz2;V%bwl9cOE-;XYu-)|TN6^OJ!%-sOm)TtE>=4t7LjrFs#nzz(Xx z{`TIdfVG`B7NDub7W})ioUt47<|V>~!})Q2^Q6OU8C5wFWx}0W*5?@~Lu%`F+gU+N ztM=Oa=c%eZ|D~+9PMuIu)^6;yYi4C=4jZ9;fXx>a1kCpZYLAQHj% z!hrj_+>TqVQv>)zr|EQwuL#~vA;3h~GpO=%j!tmHmVRNa5}~a`!SjPtM-g`zEz;7x zK`1OKt1v@MRkZ5YuvMW2JOngu+F`ER=}Wjv^_kCiLH_5;R=f<@uT4i>btbJ0hvxA- zS20?2wmRT^*0#B+J9(Lv`L81suLFcJ_$uWoj-tb=5rzc>wI8-hAKX!xobMi+I42I8 zoiHH3k#w%+yvgS4YhRV^RTK2V-}@Ha8powuSt??#HK7ZbUKIPyz+!OS%j^qOA8(A2 zVD@w(FE4Jdo7mDaa5JKC!5Z0*=aT6LN6b0UbJIm$8LE>mM5wZ4cG}W0O$F%2O423B zmL$f_>1!B%raI5kF9z!Al$C2zQ%cy#jDzU%(>j=JXgwkQ#5lRJ$%7@>8~xZBOLOU% zP_O)1(tUsZ+AUN7L{VC&f?L-D0&s=??jJX9dO5c%NY$#o9A{SMs_~SiFFNyV}u`;;R>>M?CkS#&H9IqHqB-#7)Q8mO6(;js^mDw4i}S^tKK6E zte%H{Sca6Z`i*X=eel|*xSg86uh;y#hKCouqTk3Qt6!3rYfxy}Ck&|2+1Wxs)N~TL zPzN;s{(w`5>=;?}Re&;UYn^$UDNdFTlM0Yg!*->tDKp+>@JP?xN^*bN)r@RH z7J|lFx_X5lBgwyh&ZO|2qtbXd6rjry=z75~bKr2*X~satc~~64yXci;?Lr5lY9X$T zVUjeZg?e%iYx$Q^89-VisXla)CIFa23Jh?}lP7_mo2I>&m2;L7d0%)`nc?%)9b1)?D_xH6^GsXs9|oOZ)vT=yP2bzVmBfV+@Fgjpe#M|=hCY4m zv&jH>@w|EDm37W0tKK`p?YnvSRFy+cPG7to zUUQxjA9SJeOBVmJ#RH@?s5^0z6ZFjL*?GQ~Vr*BFpEU_)Yb4*3O?gOJsZG0}0km;|Bm=8O#9Uw5=19 zABcI;SNDWIk)AW+)ILH+lla%B%`h;i1nIKpiak7c7Ln@MM#X9SN!#ZQd9scV5QqHr zKV_viq-K&Ybz9amL_bBF$nLAM)UJ+#%K@gIG!u&-y;i?Egk1PI5n~aKw8`*5i!=6j z5o0lp&0x0Keo%wMj*{mfdeH4*F>-Mp3Jtv|C?@D95~h`z+KbP!pDSGtuJKU~x)Sxn z#FGb>$E#4AzV_hsPb3_%E@fY@7x8Y=wa1JIj$(4CfWD{gS6=B*4dhA5(P>HH%Lh;D z1Dmgw7QFm>DgLxhRki<`-n`C{SgbwhSJ|h;dz6zAFMZ?^Sh}!F9DI~js3m;aCw1n{ z-#hg4k0`sR-wc9&+3Pl&T;`E@3k6DgB=KStpFX|!BJBAAZu|+=lcm>AiBk;UVHx0d z1L>Zx&7|SSA|gC zaW%(jLFw(eLTQ)Q_rAs{84sn=J*z+O0(lTk*P`L%4}`}o(!I)k>KKu~sw*avK%!2# zbS0$(0FF}oI6Ic0`we@a8F+qMGM(vTytT@W*x+USB^BGapWi<6a#_Oj~?O}yc62j2-a=)wf-r*7Mmh5eUY1h1*kRql}R;B9|5&(G}**L z9<6K-d_`Wp;9M}VDBa|tq?pWtf)RSK{h;4UfVz&kYLMiNs=27QiX?8`KW%*>XzZmpZI|TL(Ykhey5EW9uWGFqQE`ldlyZtJ{1CRfW2dOiogc(5BDUg3%wvup9_`;d$#+q}8C2Xy4- zKU*KfTPIn7D!e3Mba5r*d%5n?6BIm3RW6|X*=chKW6T6yWqNx!S+rtJ8i*abQ%KyR zNvWc)iDrnGPEy-dpy+W6iJY3%bvb3!;`_R>L~razumA{gzz>ST+v!VLX&pAH%oJYRP<(ir7-ucqg_Zf@&1B$g}32#E&UaSS)kIvI=xFO)0 z5W{;U@+sc>iH>xmdof==zSLGpHrxvW@|^jFx}?yXuQixoQhbl;tRysqxg^*m1gX4n z9-x#Z`oXUh>$fW;EBCxeO0Q%e8a<))eP7JF>zP4H?RI13a4Bul9r(ytA5HNNL zH6sB%z|@O920D$JgpI=e%2Y<1o&BY50o?%VBv<_6(TTM$aHfAoXfyW)JNramwMO<9 z3vxC`%UofozT_tRq;<^Q+2{QdwIyStpq3j@nN~IR@y_Q@M*#JVo0=1uxaMHx?=avX zF%qN9OpYW2I`91Q^5z|#ID>t3$ReV6hBpBB1ls6zqog>gBHUyCeXk|+>i92a?~G0a zPOj#d_EdS-goM;7y0Z7axt1%uVSTj(Cjv-8#hiAm{i&6HaJe_GfUunZ9s$1)1+BQR z0qv$Shb^wS%U;Gv7gNVir-J`BD%aZbM({^^c)>2pnF!U*n_WE5m$fpq_~-6zI2hNuMf8@nTSBk`ohIgC8$;<4=ij68aI)C6>W4>!j<`B@sX(DXE{Ir-vft@v-wA6viw0!Q(D2kQVlJ0AkguTP-$X zn!k^;)LNN1%pA>XUC~IlQ`lb9%*1K^?WKO?ZsQkE@u5HtpHn{AK>Ba^x$SD(+sw?& zYhG7(TxusWuF>~kZUag~UNimfsXkR0Fu8T_#I+9Q%Kl3LKgpK#Zf`%ngVli{Bk!*ks?rbVjG68E%DJafRM20 z?uK9xMqGj3NQJntO@RaKMcYRvuu`|noFE}JU~BWObEt*>aF@0TK;@nmj^8y=e!6>F zf!rfobJuFr7~2m9z}SbYVh4T^ExY?EO*EB8VKKi(vtf{Q?Z?m>P@ z#GvhljW-ic7JAB0QWAy^Au*1?7jWC;KcuUA72uY>1G8n;2D6V+6C$Lz7`v25xGwC( z*R5_P!(-KC{F}n%)}fm>%2xqZ`qR{uMjIWu{Rwd&CqCHN2v)!S`Z350yM1>5h1a5~ zzG6^gCD|G=7$frtkl9Rp%PaVVS@cB^YI>=DQ_nww0X??6kH(*F^7Uih=L;mnsThD( zA0~&{r*ve?Dz$$*$4U*-LX`me=p*$GLs-MN3-_eDNi1ix>g>;E2WZ$lU~_b&dO89Z zH$rDr+N=e=Q>qgqI`-i%^2$iRT;!UY1_Tls8wI|7)PG-V@1JV@=Jc_bx}=7JR@>)0$;Si>N%eZiC7>( z(b+y}9$5eCA+2$YbIr=3;PAG>tyLl$X>PE+4N+BS94qv`34K!I>C~m#8`R}C{#7$_ zdIld^C3se^lemS!#H@?VqlePc?pn9GAE7q+5OMY)11(F-=8O+&^Y)m+s*ML(-|& zzIJKgPD5N+H91*r}8^0dq_EBTd_+oT9ZQFwWIl7ocUvb@CP;rtTj4~eUgfX?f6mbJICqb`mmO;`V}3Y#BjAC$7z46RuLxOF z-h|!9`i@1k5L(SD;u|m6B4}3tRpR&bEj=vzL4~rO0=@E5ZW)@92S2ka(o$QB$e$=? zrf8q9I*rqj3t0G=)K08@Cdc)ou37lZMR^4!8FXu~8-jh(1O$KEVEH%H0=AW2;hfGk z^P9U^GMk`VCBulut|C5ivDe$FIb;Io`N(2s9~#=*dbkU(+LVDW(V0_YR%a<`7Ge3W ztCbfPtwp;fhcv>}5sRAqsawL)yl~zubQE?(WMP2mEmJ43q-}>eVovAXWN$V~RUExE zIL*u#gz94HZ*x3Ig_PyY!1C$rSPESqLkHSBcNiBNL(DFnHR^yOO)8Eud#$(kA}X)j zw*V^>Ay{2nA@i5JiIF@n6$2DD77)NTc7)IM_sntBPOk_)ABq*0-NQ3-!vwpzp@Z6w z_2pUf?B=a{bdN@M=e?P^wz!aJi^V0FN*8z~s zZ}mhGjMi0)(>7hq+Hs!QV?mpr#D)elAXp+R?%h;)q4d4v1zoj3tLT;5#*(#J&$2E1 zf)edMC*t;Qp|v2~5h${vm@aSS{<%OC$*ckp*l zCAiriNv;~YJ(V;ekA#dhptPnBqM@wT!-*@oqwPb2^&TUYUDHp9!P90u<0B!0Pjhxs zEs8d9IWwf;@_lL`diC+(Fe!svd*FBE<&2@Qf}!81q^c0srNI10GGCo*r-H7Wb;e{b z7c+$OVq$?l)|MfYi*ssDh4@q<-2hzcfBF62euvy)Lxcgx4hLsFy7DAIrJ^262zA7* zCvRv5T!EV;z=6^e#N^TO!oFjykXRDO6@v25q8 zQqjS9mwlO4)GX%{xN79KNQi09l3&>7ua;erdvm;uopM9rHX3I1m9M_uFMCsVQHgQ;cwP1#tL*FoC?ZNK-~2@l7y$%2F!mAyv3U$ zD@2XzD2E{k*m2JAVC!#!+o)`J9JGIg%O4eN+W|L;))?JPKA5qk9BI%QCxVPvX+#e+ zq{{6adv+VgHM4hXE&B1_BMI~c{p6XLK3vf$-r7{vi9NN(Q(EKW-BsFA(xaEP%+1x2 z?Fm7+4e0k&nv<$b*GTkqP5}l&=~ycOjTA-xJSn5yaVAbSDNWB)86Sn;g&#{GzLNDm zPtpc9WzJEd(QFnLfYBt$0w24&FCJ7<+WpyG{=f{f^KU^@%~ OT{pG5T4i!4?%x2XlaTNL literal 0 HcmV?d00001 diff --git a/core/managers/__init__.py b/core/managers/__init__.py index 843b996..a563ad1 100644 --- a/core/managers/__init__.py +++ b/core/managers/__init__.py @@ -9,6 +9,8 @@ from .command_manager import matcher as command_manager from .permission_manager import PermissionManager from .plugin_manager import PluginManager from .redis_manager import RedisManager +from .browser_manager import BrowserManager +from .image_manager import ImageManager # --- 实例化所有单例管理器 --- @@ -28,6 +30,12 @@ plugin_manager.load_all_plugins() # Redis 管理器 redis_manager = RedisManager() +# 浏览器管理器 +browser_manager = BrowserManager() + +# 图片管理器 +image_manager = ImageManager() + __all__ = [ "admin_manager", "permission_manager", @@ -35,4 +43,6 @@ __all__ = [ "matcher", "plugin_manager", "redis_manager", + "browser_manager", + "image_manager", ] diff --git a/core/managers/browser_manager.py b/core/managers/browser_manager.py new file mode 100644 index 0000000..0670251 --- /dev/null +++ b/core/managers/browser_manager.py @@ -0,0 +1,72 @@ +""" +浏览器管理器模块 + +负责管理全局唯一的 Playwright 浏览器实例,避免频繁启动/关闭浏览器的开销。 +""" +import asyncio +from typing import Optional +from playwright.async_api import async_playwright, Browser, Playwright, Page +from ..utils.logger import logger + +class BrowserManager: + """ + 浏览器管理器(异步单例) + """ + _instance = None + _playwright: Optional[Playwright] = None + _browser: Optional[Browser] = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + async def initialize(self): + """ + 初始化 Playwright 和 Browser + """ + if self._browser is None: + try: + logger.info("正在启动无头浏览器...") + self._playwright = await async_playwright().start() + # 启动 Chromium,headless=True 表示无头模式 + self._browser = await self._playwright.chromium.launch(headless=True) + logger.success("无头浏览器启动成功!") + except Exception as e: + logger.exception(f"无头浏览器启动失败: {e}") + self._browser = None + + async def get_new_page(self) -> Optional[Page]: + """ + 获取一个新的页面 (Page) + + 使用完毕后,调用者应该负责关闭该页面 (await page.close()) + """ + if self._browser is None: + logger.warning("浏览器尚未初始化,尝试重新初始化...") + await self.initialize() + + if self._browser: + try: + return await self._browser.new_page() + except Exception as e: + logger.error(f"创建新页面失败: {e}") + return None + return None + + async def shutdown(self): + """ + 关闭浏览器和 Playwright + """ + if self._browser: + await self._browser.close() + self._browser = None + logger.info("浏览器已关闭") + + if self._playwright: + await self._playwright.stop() + self._playwright = None + logger.info("Playwright 已停止") + +# 全局浏览器管理器实例 +browser_manager = BrowserManager() diff --git a/core/managers/command_manager.py b/core/managers/command_manager.py index cb90b79..43d9091 100644 --- a/core/managers/command_manager.py +++ b/core/managers/command_manager.py @@ -7,12 +7,18 @@ """ from typing import Any, Callable, Dict, Optional, Tuple +import os +import base64 + +from models.events.message import MessageSegment from models.events.message import MessageSegment from ..config_loader import global_config from ..handlers.event_handler import MessageHandler, NoticeHandler, RequestHandler -from .help_pic import help_pic +from .redis_manager import redis_manager +from .image_manager import image_manager +from ..utils.logger import logger # 从配置中获取命令前缀 _config_prefixes = global_config.bot.command @@ -59,6 +65,40 @@ class CommandManager: # 注册内置的 /help 命令 self._register_internal_commands() + async def sync_help_pic(self): + """ + 启动时或插件重载时同步 help 图片到 Redis + """ + try: + logger.info("正在生成帮助图片...") + + # 1. 收集插件数据 + plugins_data = [] + for plugin_name, meta in self.plugins.items(): + plugins_data.append({ + "name": meta.get("name", plugin_name), + "description": meta.get("description", "暂无描述"), + "usage": meta.get("usage", "暂无用法") + }) + + # 2. 渲染图片 + # 使用 png 格式以获得更好的文字清晰度 + base64_str = await image_manager.render_template_to_base64( + template_name="help.html", + data={"plugins": plugins_data}, + output_name="help_menu.png", + image_type="png" + ) + + if base64_str: + await redis_manager.set("neobot:core:help_pic", base64_str) + logger.success("帮助图片已更新并缓存到 Redis") + else: + logger.error("帮助图片生成失败") + + except Exception as e: + logger.error(f"同步帮助图片失败: {e}") + def _register_internal_commands(self): """ 注册框架内置的命令 @@ -160,9 +200,22 @@ class CommandManager: async def _help_command(self, bot, event): """ 内置的 `/help` 命令的实现。 + 直接从 Redis 获取缓存的图片。 """ - help_text = "--- 可用指令列表 ---\n" + # 1. 尝试从 Redis 获取 + help_pic = await redis_manager.get("neobot:core:help_pic") + + if not help_pic: + await bot.send(event, "帮助图片缓存缺失,正在重新生成...") + await self.sync_help_pic() + help_pic = await redis_manager.get("neobot:core:help_pic") + + if help_pic: + await bot.send(event, MessageSegment.image(help_pic)) + return + # 2. 最后的兜底:发送纯文本 + help_text = "--- 可用指令列表 ---\n" for plugin_name, meta in self.plugins.items(): name = meta.get("name", "未命名插件") description = meta.get("description", "暂无描述") diff --git a/core/managers/image_manager.py b/core/managers/image_manager.py new file mode 100644 index 0000000..e73732b --- /dev/null +++ b/core/managers/image_manager.py @@ -0,0 +1,115 @@ +""" +图片生成管理器模块 + +负责管理图片生成相关的逻辑,支持多种渲染引擎(目前支持 Playwright)。 +""" +import os +import base64 +from typing import Dict, Any, Optional +from jinja2 import Template + +from .browser_manager import browser_manager +from ..utils.logger import logger + +class ImageManager: + """ + 图片生成管理器(单例) + """ + _instance = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + + def __init__(self): + # 模板目录 + self.template_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "templates") + # 临时文件目录 + # core/managers/image_manager.py -> core/managers -> core -> core/data/temp + self.temp_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data", "temp") + os.makedirs(self.temp_dir, exist_ok=True) + + async def render_template(self, template_name: str, data: Dict[str, Any], output_name: str = "output.png", quality: int = 80, image_type: str = "png") -> Optional[str]: + """ + 使用 Playwright 渲染 Jinja2 模板并保存为图片文件 + + Args: + template_name (str): 模板文件名 (例如 "help.html") + data (Dict[str, Any]): 传递给模板的数据字典 + output_name (str, optional): 输出文件名. Defaults to "output.png". + quality (int, optional): JPEG 质量 (0-100). 仅在 image_type 为 jpeg 时有效. Defaults to 80. + image_type (str, optional): 图片类型 ('png' or 'jpeg'). Defaults to "png". + + Returns: + Optional[str]: 生成图片的绝对路径,如果失败则返回 None + """ + template_path = os.path.join(self.template_dir, template_name) + if not os.path.exists(template_path): + logger.error(f"模板文件未找到: {template_path}") + return None + + try: + # 1. 渲染 HTML + with open(template_path, "r", encoding="utf-8") as f: + template_str = f.read() + + template = Template(template_str) + html_content = template.render(**data) + + # 2. 使用浏览器截图 + page = await browser_manager.get_new_page() + if not page: + logger.error("无法获取浏览器页面") + return None + + try: + # 设置视口 + await page.set_viewport_size({"width": 650, "height": 100}) + + # 加载内容 + await page.set_content(html_content) + await page.wait_for_selector("body") + + # 截图 + screenshot_args = {'full_page': True, 'type': image_type} + if image_type == 'jpeg': + screenshot_args['quality'] = quality + + screenshot_bytes = await page.screenshot(**screenshot_args) + + finally: + await page.close() + + # 3. 保存文件 + output_path = os.path.join(self.temp_dir, output_name) + with open(output_path, "wb") as f: + f.write(screenshot_bytes) + + logger.info(f"图片已生成: {output_path} ({len(screenshot_bytes)/1024:.2f} KB)") + return os.path.abspath(output_path) + + except Exception as e: + logger.exception(f"渲染模板 {template_name} 失败: {e}") + return None + + async def render_template_to_base64(self, template_name: str, data: Dict[str, Any], output_name: str = "output.png", quality: int = 80, image_type: str = "png") -> Optional[str]: + """ + 渲染模板并返回 Base64 编码的图片字符串 + """ + file_path = await self.render_template(template_name, data, output_name, quality, image_type) + if not file_path: + return None + + try: + with open(file_path, "rb") as f: + content = f.read() + + mime_type = "image/jpeg" if image_type == "jpeg" else "image/png" + return f"data:{mime_type};base64," + base64.b64encode(content).decode("utf-8") + except Exception as e: + logger.error(f"读取图片文件失败: {e}") + return None + +# 全局图片管理器实例 +image_manager = ImageManager() diff --git a/main.py b/main.py index 936d63f..c94ae9c 100644 --- a/main.py +++ b/main.py @@ -15,8 +15,9 @@ from core.utils.logger import logger from core.managers.admin_manager import admin_manager from core.ws import WS -from core.managers import plugin_manager +from core.managers import plugin_manager, matcher from core.managers.redis_manager import redis_manager +from core.managers.browser_manager import browser_manager from core.utils.executor import run_in_thread_pool, initialize_executor from core.config_loader import global_config as config @@ -29,6 +30,15 @@ sys.path.insert(0, ROOT_DIR) PLUGIN_DIR = os.path.join(ROOT_DIR, "plugins") +async def reload_plugin_and_sync_help(module_name: str): + """ + 重载插件并同步帮助图片 + """ + await run_in_thread_pool(plugin_manager.reload_plugin, module_name) + # 插件重载后,重新生成帮助图片 + await matcher.sync_help_pic() + + class PluginReloadHandler(FileSystemEventHandler): """ 文件变更处理器,用于热重载插件 @@ -102,9 +112,15 @@ async def main(): # 初始化 Redis 连接 await redis_manager.initialize() + # 同步帮助图片 + await matcher.sync_help_pic() + # 初始化管理员管理器 await admin_manager.initialize() + # 初始化浏览器管理器 + await browser_manager.initialize() + # 启动文件监控 # 监控 plugins 目录 plugin_path = os.path.join(os.path.dirname(__file__), "plugins") diff --git a/templates/help.html b/templates/help.html new file mode 100644 index 0000000..4fdc65e --- /dev/null +++ b/templates/help.html @@ -0,0 +1,134 @@ + + + + + + NeoBot 帮助菜单 + + + +
+
+

NeoBot

+

功能插件列表

+
+ +
+ {% for plugin in plugins %} +
+
+ {{ plugin.name }} +
+
{{ plugin.description }}
+
+ {{ plugin.usage }} +
+
+ {% endfor %} +
+ + +
+ + \ No newline at end of file