From 6739e349a054603a6f78e92ecbd1456fd185162c Mon Sep 17 00:00:00 2001 From: LetterN <24603524+LetterN@users.noreply.github.com> Date: Wed, 8 Sep 2021 09:50:07 +0800 Subject: [PATCH] heretics LOVES this - Also ian's birthday! --- code/__DEFINES/rust_g.dm | 15 +- code/__DEFINES/rust_g_overrides.dm | 3 + code/__DEFINES/traits.dm | 4 + .../configuration/entries/admin.dm | 4 +- code/datums/http.dm | 14 +- code/modules/admin/topic.dm | 15 +- code/modules/holiday/holidays.dm | 12 + .../mapping_helpers/_mapping_helpers.dm | 362 ++++++++++++++++-- .../mapping/mapping_helpers/baseturf.dm | 7 +- config/entries/admin.txt | 6 +- rust_g.dll | Bin 8959582 -> 6284800 bytes tgstation.dme | 1 + 12 files changed, 395 insertions(+), 48 deletions(-) create mode 100644 code/__DEFINES/rust_g_overrides.dm diff --git a/code/__DEFINES/rust_g.dm b/code/__DEFINES/rust_g.dm index 988acd3dae..0da05e7c1d 100644 --- a/code/__DEFINES/rust_g.dm +++ b/code/__DEFINES/rust_g.dm @@ -38,6 +38,9 @@ #define RUST_G (__rust_g || __detect_rust_g()) #endif +/// Gets the version of rust_g +/proc/rustg_get_version() return call(RUST_G, "get_version")() + /** * This proc generates a cellular automata noise grid which can be used in procedural generation methods. * @@ -77,8 +80,8 @@ #define RUSTG_HTTP_METHOD_PATCH "patch" #define RUSTG_HTTP_METHOD_HEAD "head" #define RUSTG_HTTP_METHOD_POST "post" -#define rustg_http_request_blocking(method, url, body, headers) call(RUST_G, "http_request_blocking")(method, url, body, headers) -#define rustg_http_request_async(method, url, body, headers) call(RUST_G, "http_request_async")(method, url, body, headers) +#define rustg_http_request_blocking(method, url, body, headers, options) call(RUST_G, "http_request_blocking")(method, url, body, headers, options) +#define rustg_http_request_async(method, url, body, headers, options) call(RUST_G, "http_request_async")(method, url, body, headers, options) #define rustg_http_check_request(req_id) call(RUST_G, "http_check_request")(req_id) #define RUSTG_JOB_NO_RESULTS_YET "NO RESULTS YET" @@ -99,3 +102,11 @@ #define rustg_sql_disconnect_pool(handle) call(RUST_G, "sql_disconnect_pool")(handle) #define rustg_sql_check_query(job_id) call(RUST_G, "sql_check_query")("[job_id]") +#define rustg_url_encode(text) call(RUST_G, "url_encode")(text) +#define rustg_url_decode(text) call(RUST_G, "url_decode")(text) + +#ifdef RUSTG_OVERRIDE_BUILTINS + #define url_encode(text) rustg_url_encode(text) + #define url_decode(text) rustg_url_decode(text) +#endif + diff --git a/code/__DEFINES/rust_g_overrides.dm b/code/__DEFINES/rust_g_overrides.dm new file mode 100644 index 0000000000..57de7d96ac --- /dev/null +++ b/code/__DEFINES/rust_g_overrides.dm @@ -0,0 +1,3 @@ +// RUSTG_OVERRIDE_BUILTINS is not used since the file APIs don't work well over Linux. +#define url_encode(text) rustg_url_encode("[text]") +#define url_decode(text) rustg_url_decode("[text]") diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index eb9bdccc22..cd94e5790b 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -343,3 +343,7 @@ #define STICKY_NODROP "sticky-nodrop" //sticky nodrop sounds like a bad soundcloud rapper's name #define TRAIT_SACRIFICED "sacrificed" //Makes sure that people cant be cult sacrificed twice. #define TRAIT_SPACEWALK "spacewalk" + + +/// obtained from mapping helper +#define MAPPING_HELPER_TRAIT "mapping-helper" diff --git a/code/controllers/configuration/entries/admin.dm b/code/controllers/configuration/entries/admin.dm index 3b5b437742..1f9b5d460f 100644 --- a/code/controllers/configuration/entries/admin.dm +++ b/code/controllers/configuration/entries/admin.dm @@ -39,7 +39,9 @@ /datum/config_entry/flag/announce_admin_login -/datum/config_entry/string/centcom_ban_db // URL for the CentCom Galactic Ban DB API +/datum/config_entry/string/centcom_ban_db // URL for the CentCom Galactic Ban DB API + +/datum/config_entry/string/centcom_source_whitelist /datum/config_entry/flag/autoadmin // if autoadmin is enabled protection = CONFIG_ENTRY_LOCKED diff --git a/code/datums/http.dm b/code/datums/http.dm index 2a9b53f131..49b183fde6 100644 --- a/code/datums/http.dm +++ b/code/datums/http.dm @@ -6,10 +6,12 @@ var/body var/headers var/url + /// If present response body will be saved to this file. + var/output_file var/_raw_response -/datum/http_request/proc/prepare(method, url, body = "", list/headers) +/datum/http_request/proc/prepare(method, url, body = "", list/headers, output_file) if (!length(headers)) headers = "" else @@ -19,15 +21,16 @@ src.url = url src.body = body src.headers = headers + src.output_file = output_file /datum/http_request/proc/execute_blocking() - _raw_response = rustg_http_request_blocking(method, url, body, headers) + _raw_response = rustg_http_request_blocking(method, url, body, headers, build_options()) /datum/http_request/proc/begin_async() if (in_progress) CRASH("Attempted to re-use a request object.") - id = rustg_http_request_async(method, url, body, headers) + id = rustg_http_request_async(method, url, body, headers, build_options()) if (isnull(text2num(id))) stack_trace("Proc error: [id]") @@ -35,6 +38,11 @@ else in_progress = TRUE +/datum/http_request/proc/build_options() + if(output_file) + return json_encode(list("output_filename"=output_file,"body_filename"=null)) + return null + /datum/http_request/proc/is_complete() if (isnull(id)) return TRUE diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 953835bff0..4224b406b3 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2862,7 +2862,7 @@ return if(!CONFIG_GET(string/centcom_ban_db)) - to_chat(usr, "Centcom Galactic Ban DB is disabled!") + to_chat(usr, span_warning("Centcom Galactic Ban DB is disabled!")) return var/ckey = href_list["centcomlookup"] @@ -2889,8 +2889,19 @@ dat += "
#w$LT*_Aq9?#?Yz` z7|;Pa$Qp;#2PyQf?;1PQ`^=mRDJ6Hw6^@!x+<)M7){rJZnkLCJN5LJA-%OJ?L_Da< zhrFy-# ht|v)|A81tzEpDfBs=V{hbm z!Sy{jlTy=2Q&`P&G_lF$i|b+6c^KD5bW?h#6gpLJ2+*#FwqH|Wj!cd3n}{KEBq`Gu zD^JuRzcPP`^77O0;0_Kk@2F>c1N?#TdKYp!e#fAIvgL~IO{Mw)abEbPwV=a+jw5le4DADxsON{^x1sQ};X@o}ur*Dzm zi>%VHavrvb&NFnJ71OYgScvV@v|a1IMn>4DPuw9+?ZB-KfGnoi(lzL>7Zbw)^p?w@ z>q4(oMG L_6>%B(BkR6F0v&u;@cQWN27Q|6yHeMkp6_Nr-3XL=`tn@)0R|t4 z6SqqcF^Ua!)DdEXM;9!XQ9szA&g2I8;+u90PW YqZg_DJ71zT$ATXRKaiP_F1nL ~W# zK5OnqeOS$>c*^#4R-?k>Ur&+~{jnEFz`?O#_QJRH+T26W^%wDMUr#fep?y7{w6%fc z=X*h@AkxsF$zgna1$^+=#{|Xt*a7&0AcG527;YJ`;JTQ@=TC}n_BPR)-_V!U+B6to zM(-Ebw;(ee$giVCzFe@R@&L1^yAnJXB=_)o)A=0+50s)KaD=`>s_qMBo!cR~uBtbA zE|^vhhTr}3;9%B8o?EK>kmOQFwkU2$;8 #}kUJ?sLC^HPJIWT294ycE<$&*o0nzC>QQSv2rO^ zErBQS0PMGn1E5og^u3Un?}eBKgw)3dW9nnjpHOyT<@hck>- 6|N>a8#0px(M3L4P&U zT5m7a-jBy$aZ8j~xt(4c@n|;;4z9!y DY5adG1NUe3(nL3xl**Yw#BS3VDf!1f5d {H{ zK{H?22ICruu*C+MMlfA$W4Cx)2jey%@y(7I-d-$HkD>oTK%0=e-az?5^H-tEhSWpm zsvm@|GgW)@K*h?m#fr>1>f9xscR7; z-!N8wK~99XZkerfKf=f5yp_T<#`izwt%aPo>c&pQyk~|BsJ}u16z1oNfr0-8k2PzV zkOwyzkR3z?ww^8gU^6y@b^_UA_(GUjvROo BkPl&&p}a9@kY%@EwL%(Uce4#9bG*Kyp3JZv`?vrS2>Any`)}C?S#3{ zdJgv>&FY~Txq33f731g?DGWxUvqOCAqx1$YL<2L*!YLs`S5VYOTVM|)P22-!oQ8E9 z74lp*a?6d>D2(Uo>+sh9lCW+A-`omc5@vF!hY&(LThU9xzDS{6Ew25>bs?}O(!_Ku z07iMY)0%R?pnU=Psly;NX%>?k__C8PGr&XwH==@<%e^T#a#56P*%g`EJ72XPpGHeK z`S;X-z!|WhC^j$8uig-rjHBo7H$4dncApjzOz$WB@`wgKVpP9~oh0-AAq+|#euC8G zip>T2u6fDrU>r8rLhd+rK3$BrVrsg+KSH+d>#?qg$g{9P@!OVA3UvrthqL+m{))C= zYXuLNxgf0At!m2hsJ?w9@;n7vo&?D={F{TYus`gQWgICj%Z4C5SQz;Q5E;Fbq;NlG zJMu4uOa5Q$@2lXxgWs$8{U7}P3%_3@-J81m7F@GQ%R3w{`N!z* XV)}Q|O;0 zIbh;*r`H?cWk+0-gLhEaq{>h=4(+)!f;ZCZD2%D$>`3q@^)Yy@KIs}=k6Yn_!zs^E zx2fJxeKI(x`c!=^+b=epk&RXy!QylDXUs3Yx!3C-tV|w~uwUHNJJ#Ftwf7%`*>3Tv z7ASc@;(RsPj}G_H>TCoC9pc2Hcc3|S_|3uZKKvfWFN_PmzT)T23O&uo5g{ -bDgw++)C6$kYAlSb%S_m|InTqjm zpd#r{158W(2azhZP4u-RG P={sls|O%yV8a{-i{KfAAI#98&*O>+ zh#WYeMhQlNgX0bAGd!Ub;W5*&OALsJ&$D6&5;_sYO2s@j&w33{gN+A-0|xS<1i&-L z@_Nd=&ir(QZx`c1?yEi9Ici1UeiDXW#sg=M-HX~cP_Q9TivSJd{ggp2F5L822DvDi z#mei2nxgzkFcho4la@e{-B2J#2;8Xw t(9g0ey*asZl*{ z<%?L_M7j#qLwpkJMflEWIL_>l9xEC7j?Pp6D;n`JBL27_l`f=oWqG?}GIqsxxE$e- zTdx&BVLU9Gz-H_M*hMfN1>J+L0Lp=v;2JeP5jPoVx!pU0lG-~eUx?&&@8l}ICNNYe zH*XH1$Vui(Pl`>d$+M14?`RE>E;Sl7?)yRGFAF-qf1dimYrGyn!znb&Xhqcy{8Yz; z8z%&b+Xl^=W|uCCbiz>G#0T2t_>G=-%Y<%_^dHIOzGlVKUqvT|P<2dhY4CZ%_As~& z*b-KRq##16qNgSXv(B11cfqRK(--Sb^_E)&H)Lz AS& z(p5TK+F~ax>GHP3ae)`+ZDPZW1 h!ork zW$sc4Ot11#o SOFH{7$f7Pms;1XeOmhl+2uW%V#yfqRnJkb4hIgWob_gkmj~$>@NLme8rv#$=&% zy9f3TM!ih2@-yoHCOlxytvCyDs?uLofK~Q$M?fA`h44}D`>PzZ^2Q&lDAb6Oztk>3 zFtaU(=+n6rH}^Qp6??j}kpRH_h=Tl83w0Q3%tz3n;)J8!f<+4~Z*!qX`6$< s)M5G zTwP@`P|wmH#?^ZI=aC-kC|J=)d*IAD4VEtqtBeppxsK~GODPv*+_fgw7KuDRj*Hu+ z;v;c&TtD>4uvg%+E?_nkf+S{uGR?;k_>K6OZzu(nir=+*TP63GfMUQ+2kK2jIFM*% z?$?XF1d)q3tW5A|XA)-f7@SWOeJ2sARLw-K%32^|QB@z*Y7+%CMhEm>6wnzB7lZVe zKOu(M`d#e$`M)(pyb#H92E<3u59%= nQ!JJeb*XaE&iwlv<(= zrRsfPql~t^AUI^k^Oh@BkAvZt5yer)KaJ&~{;ED?qd$MuQxRWn#78yMVmC&7)Eq7B zrHJqKi0`$C@2?Tx8xdb~#McnzV?XkK*YB<;yW7geH8JXiunE!@qH2T zeHQVZjrhKd_|8Rq0uZUS@?tnlv;OnjmQy$@DJLBnoo14tt}Ephf&MBF#o^D-HOk~G z)vn7eWgBaFILVXr=jXP7 a$NJAYA<=;vo* zXwdoj`4KI03mm%ok{>N0a`tok4T_8!U$yfa$Ns3| U)GUyAMn zcGBR*+yewngs-|bo!;$M)FFc>YOk6^E-a7X@Oic>n@13;a>!Scvk+E<_Vj8SEcSj0 zvd0NEc@bR((qH?TN3( (pI ztA*W89OgD^jJMquV*nek=4^baL47DOES5N-7{j&6(DplHDU}2H@srdtq`{V*>`c}( zhgMnDNm@R-)372*Ny>tD0Zpb0rc2DJ7vzdGh g|n~ zU&>McvM%(NVq5M|wh;rEuTIk{&U&@XG|i}? 64k3?aFsjax%3u+H$bC9OPR!EkdEx2de^&2QD!u%NahqQV7 z*t_(=e4*t>2k9`yspy8JxzKFPFPo8 LeYkOsU7YoA&GghL8^U+V4(S;=S(iDn+#dFpN{h(9+(1s%c9_e zS}W 2s?8^EZ34GvqLDLTuKW@D+TePwzaeG=Km@BU*TVc_w7$ZSok>JzWt$$tCT3wW z4-I@mH9iuYroQ_((yKHP;|Si2`7;J`bd%tLIDLJSfN6^>@>KUoQkpc;q@-PExI_!M z4q&*frOxF6QF(;-6k=h=AA^$y5h}T+W10{w17&L1)m1smxhjX};o2N73TY!dEDDjS zHFP?xii99d&Y=YAZD=Q|wiyys^9%%(eG8wuWSrjm%f>tOJ(BXyp07#YLxO*ll2rp# z71Yfbnsj);N0lf0n1Si-g{rB9PABLI|2z2hC2H3qI+?IQ?S#vLNAr-q=K%PgiWtE) zjE3?GC{TE6{&)a&X@VfLQg@f>ZaG}olnXE8cOE|ra8iVH@4-**5x5x$qr4wu S%tk75ycOs`&V+F(2z>tnq#Aypp{DA2DyziE zc3;{JJFyj4LyZhmX#{$Du>w8|Pxc^j!xwO|s%$DI_tjPr_hnJfK8L5@mgpea+Lpw5 z3 VmJA1=H*`|V!R`RrSo6#*;7E$*g^(c1oh3`x=2kL01~O8 zxqvN#E=*&S8wk}uh!S`me*ZKsW&5XL*wCA~jH)tC8cA=llsMqMQnCsy*{Eo;g-Dhi ztJw=SJKmzjLb&FNJ!h#&-D!#F1uh^Pz6T-OaS2H#{DR`l5j#W})u)SFx!}O;lNEbn zDYIqPRK0)%)wXQKmcDeDqijY&-W;|3E6#Gk%c+?#&yjGRx&l`Q;KWt}Kf+~)@g)~6 zY)ioEZUHcq5n8p(QRXNt&R1{!9{_Mag3Dj}XD)V>x#rmCs(oMn_ocgUQl=Z1E=JQK z&OUf4mnccULToyCvTk*N3wKzNS-!gan)}; zb%Lfy|3Hgl_8LhU{;Cc mk%JRCbax0oe}URM7ZQ4k2|Y_-H?jN)(x`JY zF8!JrEkEjk7AG}Zwqv!$NePS`P2`7M;MRJOfWYMuxI%>R%_gjzxRD0l=@@>3b2;=S ziVX(>%t((hDv^Uj9|~@JvRPmGy?`N@q|hOdOa-^**l5!MOO*c@# afGF#N zugukwFCnQzosdXVl)1k}X88Ws$#i~$69$-)`rLe)KbEU?8+1AwIDg ! z&?=+)hsS6dw|MypHv^2=H)7TWvdy6en(ov^gJOwV0=I(1K(JJo4z23^`Ua{-3*IqE zv>`K@NKt3I8bV?bpxBGGA!Bod$AK+{Y6~nS;F<@US+P0vQ4qdJp~^!UZCH_zAkz6X z4T)lfhhlLLcI~(2QDF{s^pMD?C_@OACW-vSk{7Z4Z<$I0!LQ(_u9ijZ4Sw@a$c_s! zrlZ}bs+ik@1tiHL*p>`1w9jxW%t3K}EOH*n4g;%nio=1d0WBsHz{h?tZ>rlc|9C4F z@`FPKkpmWkP-ggx38qNsnNKMc!*NV#RbeFbC_=TWQDbG!XgF57@k&7utoXS8=~qP2 z7}pE5ag9RziQm5in1SP(^3$I>2B&kQ;~Gq)AK9y8Pf{nO%No)D55{%6L!DvK$F*)> zZBgDy;`0R!EV@;zV=j&7L{(6z%9j3jM3X#tS^5QP^-X#@ZT=Y;uiaN2_m-aId-=8a zXI=`&>*M`@WdGMf^A9YN4)ZI#l9ZC1$SlO$QcF+W4*whRk-@Tr3;uDFmwqZz*Nf;E zkClqcJM!@8{1Qj`V4(-i9ImxF0$pmU_|>p_uE+aoL zbx4ycq)E0!0~Wch2^AJ>B90KZ^bBPuCfO{L>}EqrVuBOt4kw6P4vO+dDs56lVg^d$ zW(*lH{BlYe2iKjY%@G4WGlT_ZUqT509UUfaIWe4lIH|&d3K;BC0#uHh+9YvHt2C)Z znq*Hjlvr3-0 lFQ9$mJD6LI0;HuPv2{38e)CR~qh7w$-#Q?j3m#78o z!-NXt=uJQ+#4Q&@*sh^Q23$tak#IuX)CKrQhEKAYGkWPZE~vpcmJL8#TLNm;iM$7) z@sKilG7eG^^pya!p)+BhxMjbXaRmCZjNXh^T(xG;lz%J9b1kjvXu6~l9Z)JRZaFJ1 zZ-E|Iny?QP)FLP|K_rh@ZYvcZ<8m+rS{SgEimn~d2_G#L4 fqZ|9G-ei8?5Ovp8+8`>Ix=iLYQ zr8+`_Gh2P67o5bIjdFMpTs_IEU6^oDRB^DX-~5a^9YKBCPzjhM0tP9fN>J5Dc*T{4 zu{d!gQB7 Tvm%bsOaGqo@W|ZN3coG8*>r1f!>NV0g8NFlZTlnZ_H^Z2nxr1 zizoj?2`NRO=l*C0u95zzc+9tWB8{Abd(6jNguOdTN24OF^|2GVf_8^C1g#G-sqnix z^5_meX90o2ufRmvZMY2RFi`uEtq>1;F<~?gof*6ik0uFlBj;5O`=Df>a2QQ7PSM-o z3KG_FNuHr+LT8OR*0)P!>j@JTN#|M(t|8vX=yQ#P8_!9@xg+AXU543-O2L^4=)c5j zOKf%VXel&32^}TRrmbS^=Il=0alQ+4XPyC8czFd=Vr%GYn*n^`P z=}MMs=!IBbNv(dUn^q^WvJ6<)?pkzCuC`+mCOL=xlv?6I^VM&Inmr73P0maiU2>OY z!Vc!Ab`RIv?H FXa8#YiXXo6zIQjuqAnMbS0*Qd1B1UM{Ow@Y5(kY4Tiu zdzBouku!H~{h_ZfaG7`i!<(JN$Y*u4c{m(t!Wqsm8xNn}#8AO;eVmQ+vv!u>#q#%r z^&eT6nESXpOD;0vm`IPeXZ-5%;Zsy=J6PY+WOYcRh6x<)SlfYgS$)t&t{loQxGt^3 z7x&Jyk5Vs*>miZipx@5eEcT&{lUOu$VBbNR)mh}k>ZRv6ZGgDaaV8N?Vb&RO!yhPv z`#3vdXvg6)`M0LPBj}YVD!9G0`T;Uxd%9gcHS{JSTXYXY7NliI0=Yp+*@Y+yF*fU z4dJS#;4ON1)4~fy`n4CEeg+j=AWn-P8O`@CK767+spb2gyl=tzD`nOpHDkmmO&l1Y zf8q8d5)NOaVNX8=SN>YrKchIPt32m&%Y$*rw1&=kPV8)LImU5m!DX ^s~ z;Iewxb{QHy^wFgltWw3i{BALC)^WN!hpr?h(G#SE>pSzi!Ei8UxL#opqY#~b*ctE6 z$zckj3^4v!PL#00q@w}rJqPdoE;aUR3zgkp807M!7QaUwKAfln@f mlt91?_sl4es)(Qe)Okz*HvuR z+X_B_Ijb>p-eOS~ZJGQ5&GBsS1Q5ZUCQr|i=jWw%!k|*D`XyrI>Di@zqg4K)cY0n- z`vyuz=eRK*VTHYccK7r*oSJ249Z*%c? |Ohwz!r76QsqT0;1vuwZ)jr}zsAZ} zWLW9vZy_7;{EtDGw!m1Fg!8gETnd(fOCnGgm mg?j+uXGkq)W(~4znhP{E+97Lmz$E7i<_pcfoo}U+3i@3LpL0G5f ze h@)6z2bNod4%n z{tMUY#zr_I*|HVQ!wmB$B*fIRSL2FTGZh%U#juZk06_b|%|^n$%>-^_gvIy}cDD61 z95e<;i(m`ic|naecJ_saq3uQ;4Uyp(*6*E8889A&5{$>a114T5cC>+p^U(Ti=)D6v zIa<^=o=GT_GD2uC!y#&?l-0L7CHROo-~IjXyuEGhxMy4a(x_4L(?qe9Zq*Eg<14cg z&DP@j6BG{1JtrubOE89BOu37?<~oYzs80eC5b|d^zl(sudz-<}) N=eM zydbXM4=B2J!ZjSM)!?5Ce4d4>37D>Wid+%Ri(6mgnIJdAIBa$wudtCG2L@2SulZNtRw& zZ&?~0(o2iwT@oCpQ*1v&&Tb%8Exg2s39j|h_!08)!+q9}9v&rLj&E8|bNb$+X8fnV zhK~03o;{5@*>kijzcj||B*RF~bMJ1-j=vKJT+?GM?=;rJLjF{f1p&b^O{Yz8hBxgb z$K3QHIdM%cI600`kr^DOq^<61v}rVc$@pE5-$eW-;g``eZ~|z2;r<;DG#^X*=w2 ft`7@b@n%lAv78p@fg#s|x{wtWCyHe0ZYt z?o8r+sq5E)@9=qa+^3LBSl5JGApXkjN&fNnWa1N>?&GLT;(#Wp`<(sTv*AFvJtLs+ z0DWL23QB>bnvyY!+{Z)isIqDrrM*J))&e3mZwkeKzj-;ApSMT*()9Le=NU=9Cw@80 zq)x~k#cv(x*ZLo7fBKKN|A+c>-@F0s-yd#2@6W&ftbc#bp~x#V_;G-s2H#2X-*52u z+k4~B{|Eh<^W*K2et ~g$asfDit zD7CPR;xBJuc>ash>y&VRYFy&V^y>KW_9gy6`^FDw-{F0z&|vJ!xza$|!$PZ#>Q%qH z6@$eXyhff*stAksF=>Dr^l@Z~wzz@-T%k`J=V~opMe&!n`1|~^|NRkN>hHm+`cW*7 zC$SD3Pjwh!3y&=^*fTeGY|EEI%h3<&8{HX5Z0ffjAoeL2BrT0Cn}-i(g_b9Bj%bcB zy>R@9vXQ$9$`8fIl`Z(u{0U{>?fWtKv1N;XG{33r-#?mvMA_B5e!PAvz6y86`Wvwj zGKJFBR SM(=!+u!u3OE>)@8ydiACi{i0ujC zcx_~9PtXG{$kS2AX=Nb7=F^01<`Z%W)~`}COU7v^Y?5R)UWa #Xbw6B+qU${=*(}^fBSuRMF z9Z9SkVrb5%`E 3>&IB889+2YT~_Xz_jki z&`}^5v~oDz7cwNeB?K_c+zJ@2g5N^^NU^wd!9v}JJ1b}d3T`r$1KBwR*E1yIJ&nR) zXZsbEJGl*aR{v!Q4aUsx(VO?vGv3n L<~ zYSmHVLuOC56`H+|FpuJkJ+R639nicn@b1^VvG8_kUL(BwG;bWddo}MMc>kt(2gAEZ z^P1rOQ1iyayIb=Pfp?eY9SU!U<~76X*Sy2vZP&b4!Ao~*pk^YxJ2kHaZ=2>#fOm)H zy&B$D%{v_47R_sc7Y5P Ft!cpEe?X*mC?c}K(hhUOgu@9UcP8hBsR zyh-rVWsZP57T%XM?>Km0(7fZ}-Kcq!;eAT;PJp*o^Zo?h8qNDtc&juo^~HM4do8>b zn)f<*f1`P?hj*3cO%WPXKp-A-wmKq0Ln!4}GJ{%J_u!OvG~?S|FEv#3cA;DK{z) z{EWg#uN3$x`CyqX1V)n&DgYtC@7IDc7tYdC7>$eo8Lu?PlaKBYXv9eeTqjCC*e?lz zkI82y-$C-hNKpvvA|EWdgur(4iR62Se598SkXE2EfqZ`?ABok0XUR95eAs{!8fgRu zyyPQp8GN*HBsuOzGQSBv+?YttFB?f14=!$mA%_sWtMM9g<}@aeGgIRid5z=f?e@m; z N6ZNQd zvcWZqK8R9m&BVNrtsXnY`4BtJKR60Df$^NvwEso@1IMHkx8{^xtSpeq%JFch&F87N zU}nHs)LeW$GzHv+J_MFYd=Oj2OIF+ ?&BQkGX*-iKy*kfg2wojd(M+x3$+q#9ATsqM8VQ0E>W?yFcj_HDjtCZ0 za!-WG(AP{eQJ*}lybCy+zDv#&8wNw;Q}{=mi|N4W7MR33lfX$&cjQX}8bw~enYb9L zlmu-hakJ$5UyY?hu3ExIBt#(B`v-`nL}DH%5RY&WM(2FB#6eSR4w!l*#bQb^3n|2g z#|(V7&?XA=` (Yr8vY4+jx&80FzT}apM3y|&lnUI=)glOc-?n2{}M91j~NZ_hrNE& i#2=s_5(keZ2Z> z=z4IvO1{5^!p>O3p;x7H1Z7Ighj4xKS019cDTOG6AIL#bDGZCjj}T-40EMf5etsH4 zqgPPX>r@3O 7sw4AsyTA53~@?8XU z2P-q5%DIG`(j4`r5GxZM66d9|uIMH!MYC{Fu;--@6!w_0RbGxM8`j8a1nW9jDVWfO z +QKWF%_%eW zn=7iT-x><%Qb`Vrg)VsN4u$zU@8l)9f%SCX6Sw$dZmT=w0p#<}i2d_~@H>}>w>5>g zhL_|8aPj9|PfrmL$l>vN<_(MeGdH}ggEVs+IVJzraQIz{gqKVUc*Q56a#54GIQGv| z!rMAkMk$lZ(p|Y;;!JTpU?MW^l&LlLnw!*d$yF`bo2vZ=xKyy=DEn&0pW*1* FBlJ`ib6Mt0$gt>4>ZK&~BkY@^g;tc)4uyN0#Z{Ue$DI2r4}B;xkwe#9!ho#@6l z#oRj*>%&iB^e;kK?PEM8MoF87r{A{FH`jmkBuRym wv^%EuU5cx1yJ{ao@<%0-v zwWE2mFR&e{HVZ$HxqS9LPYAe)b=H#7KTgcrf6tZuH^+!5OPnx=?#a4!f>k9J9ys_b zj|B^fby(vQt?HI>@ACg0SG#Jj-YcproN43zJk;-r%|oyA*Ea<(-_l2(IEC7Wk6mY{ zZr8pcyKkfZn;<9^q9hN&H%w0Wp9`Mcnd~R$na|l%n@R2Ow8hT-os lRwnX;ByP9Y{0-8!SNe|| zvHNm7!D+bGN4+q~y28(So_YUk^j+3TjX8avK1AbSgY5UeCWmNMemuX(A=;S~>*f^g zZ_lHMn!c}fOpYu`^XlBlmLl^$w18ra+uz(z<$^W#cmDI_Oof&9v=F&}A9_E$(Mo0o znfy148A56fT)0HXJ-2>c9@_j0!HFm0Q~b3n_)}xg|Im@3QOw3k!x6OVc51jr!^t!s zzm`9aJ_GFN0xVg)_`S6gy9qkWaq;xm)=hdEcf;8SX0ASw^7epNF2HC!tqgI`BShb} z^!|62UiTh;dGXpRy5ffWF7!yW*^}6&N2`2x1A7>WMylUQXH!DHNUX^I_xFoHW)$j~ z^$EfZc|98}DwC_9LF -wW3C*tF>Zc*wKSlRJrS>x=NozSbeRWR)MwnwksRjS~gUk1?y$^7OgIvl5A&5 zf|e4u)d}k(sH$xItHruj%ykExE}wENB=sE28|mzIQkjqaR9U_t1CF6FL9daDZC^}= z1&Q=y@mK1z1hFL;tY6uYE0QXXFRF!zs>qcXayeaH _6eSB -JLJ&^XMizD`?=)H(Q1!L#neSwLUxwM*sq>2m&ZZ=Amhwv7{cS|Q+_ zo)c}X;>CsVa`p10j5@k_C<)j$TI!)2N>$ 4vIy_ z3SV8TG=~2V{(8)sTyvJ+>MPhcK(1m+8!}&Z@F$QiJx_XSoZACB?1E#T%q50=`|3R` z)AYP#fCvNi?g`jh{GYNYai8?(=Md>Fg)*9wsqw`B!PoTpQ)VuWSjR(Dk+bSNyWmyG z8P+y4a@Y0$@8igsd!HfQs; FP-gGx8NkQg#BDd6Sn?B*c86m z&mxBkZBvBrc^Ei^tu7`|wr9WX(6%i7a^`phf+JtchM=NXPJ9lbcbWMmMCRmNYo_1+ zMByi$%5AOGlgSokvOg0vnS{@we~49)5^nTGV!kQ1F IOJwinW(rRiovx+dFij{xwg+I zzKb 0i{?cTg8kqu2G_c9iXR?}$scm9IK+LT|AC%R;_6z6)&ped)ZE9I(92Os30 z-Fg>-_wAG*zNS;*UB9;$?;}m;>cf* Gi=H ztFeDmE#UJ-7UlGUl!Ye6XRw5II_+?8j!Fh$>u{RL&_=L-`pE4hs^Ve=>z~-=NF&vS z_CNDZ^N3@)89t-FKl!m(9;JqA)DPx0epptl3pt@jX~-pw)6 y))e z@Vrz(p@7jP@>M|o^yID}pLQn&xjCm`NwZ0N@g02W=H5e^m%0AqGw(Ohpl-|4bX zIU}=xIuFjuPj80OX=e>~lkT$*-u@-&(q5Ac{jMorx4l}oXDRwqz<@1v@d-q ?PcER9e7;X-E^Qm zF(?g!*av;06EFGD4o)DyFTiFfm>aE14vCq$fy4#)|9W%YHB>OpQ`hQY;v+ApI_5+U zCWG&<=R >_EHOJY<`h7ZCU>gZ4ubfqaXyWIynhRn|eJKaJe`epWd7AN~O(u2Z|a zJGp=6RePfYY(gT(KE_Ac_`G4U GsT+s)SIET|1l|NF+AY-gYxH%SKT5aC2Vw=bh4gu7xe=f39`WHd7v_ zN~voRb!9UZ7e0kq@M+TUF(>VDFXp)*vIg8*mNU}ZZcfJn>opn7KIjkky@)hw-7TW7 z1D1@zjGFXXusB@eiI$C&jpw+I;8s w@2~ge9GJ z>(-IHWMGK#doUyom_h{@cYnc-YEnnZp -*UBlg>$lmI}Zr) zub1jQb1=BZ3uSUhXQEuzpXi^`tDE)vf)RN@^651kPOah2Igw+@V257A`w#3gJBPGE zf6V=?;2q``V{Pofo@ha-RsOau(2Fd5`@^i2vh%k LzHDM$5#j5jWijNj?SJIdx&D)Eq0cqi*MQMvE9YDj^pr6Z>^M(y=y_0 zZ$JGfSrf8K1cuS7LOTzYB44bqpDAF#X9&ix7w-jGqu%>m7S1?}>HO4excg
+#D%<=%|ZHQ}%=cal(+YC$qdFi}#5?^#_kfG-8&Q&iFbbLw#NJV_zqJVu#2_ zFGkhPp44`06+?1_qp^@j;!d${@M)0vPPBS-+6j+&nLYPbpmdovI|HFsSh|d;Ppb%m zV~zD$R}v0T1*0w5W}P(eGP8v^i$ru ;P)D4f2Zj^76HNRfO z%gCYQ?4SRe`6D18CgVRMgRwU9Bg&YEN}A0*^L}jZ5vSIb;A`|g;)Lf!bEih@m*h&T zxi4BZ>?&jjE?aTgh5N_%TPk;i)rNn(Xe+BPk*~PlnZ=7rV&Csq0j1^cv0uUz`>U_D zs&96x7{GP5>cT|-^q8&7R>{6z)z1k;bs^v GnbawH)&6`9MQU=%u*qf}Wd zS?I)o>bX3r`_2{j@WcrZ?GI3QFZpc@Q>s-&Fb_eE%mv7Oqp_PMqm#q0a_~Nb8ub9H zsb@gN&?PE9^^`Ao884T il;Q?xQmkUhxlYwluEvOd8C(@(M(<%T$%TO(c{QT z0D}0e){1N8DFd6UZ{X6iy-`;AY@c;mT-`t)1^OnwnXV1|OZTAjnKDl$&ieKQhdM~8 zL-J-|Sw{-X+OV=uv~(AIFSGV?%@3k~&WxAmxAO<2xvIPVS3afJzd1m!dspURV^shM z@+GXe?-gi6|1`8OqsQ5~w{Pcsy`)#DHz(ZIqwfoFcCb|qeX}z;!5_NR>P-d1A`6h5 z&Q1^fz;BQ;PK_n{9N1g(cn4*IdA%PON&U*yyuL;j>+#R{_La3gn^~KXTd7U9cInz0 zrMAYSe4{%9BO8^9CX-Wtj|`EGYLjc!KSn<5@d6g*SGIj#X50CckhX>DrrSPI+J0R0 zMqgRm+fQe}WvEkIVODL=lf~RW`r0judS;;%M{Z{pp9@<`YUo6GRG{(B)&*s;j>($1+o8yTSEw56EVqAuZ z=rCyebmCzPcg{&8`;=eH&{E@YIB^F5wQ}q`@*E33cl9{@^hC{Ln>ZZox?bG=X3v+O z{&pkpE9U%tkx9jB5tgXz4$YAx1n5?{oe$Cy=G!t7Foi9ze6&v=N~B%c2N3*}D-7dB z;pdE1>yaf`ohLarWB>D1)^PQ-Ir~NQ?^I_0@B&BlOp}}p`Lx5?mRdCJiX;v_lJYX2 z_NKvEvWP%U?XMyu#cH{V(Bx<-mDRFX%Q`f^?a4Av^5WF%dR{YjQ2+1uryRFla?}n} z?N{wjMGF02?N5DdUfG{^G70QYKg-&m?*CPn{i&ac>v@0LO!n?XR?E933&}7qLRIFo zyw;sLj$0r|`XFn3zUd2a^6n!>m0Twht(gCFkskdS(9Fi)xm+OYioaBL2K?dlx_5!b z;7smNNDtHJh1u(|um}7uW_K|S*EH;3U3sfHvaMIA@rN06L!U)D`bf-zL6&l}V^u7) z#>+JY-~@fz$@W)JT;$gQvI+#j=~L1!;cWf5mFvof>i(f%a|?!ZRMFG@!tDDaMLqO? zfK}#;`WCZgbn72Ay(4&Tbc~Ov^?F5e0Lbx|9k>(?)FiBoRrl?`p&8|xS)x6oqxw!r zdT}}XV;0Z-9oD2hdb8-WPedo6H;bs6phvPe_u2JSC}WA=TAMb`b=Q}bgLw^B^INf+ zpX;;td{?Yh#cIAPSHzvje9>Q|N#BeovQ}IruPGdn^;TounJ?O)CMF_sub5db<;l9Y zz}-z|DuYDhb4Gel(YeVXTM{Ly{U!RJD~{VcHg(niY#Fk{!4KzZJ$pxAX>?-ihxT4h zFU?NTd_0x-quK`M_qYu#$kzGX{tH=C+5x^x!JY9bZPzX}KGAkPt;UzyEoY4{#oE+- z$#757gB&6IWyUwh)o+QHuThBa> zOwgHVOmBguV9%6fKKaw5cKK2E{rOVipD$+|@893fZCPhm*Vmftv+l{UX6BZ}=AFsT zhJcA;{=!p;+qK(6gB$jS?u)PDlZp$x_zRxQZEkY#ooMc^*t@+^&k(#gn)?E&o^7 z%fYeo3U#{QVYYGN71@&GZ4dsNEU6 z$c>8n-ip0P^?MShP#=u)x_yzRoJh+-b4&0nxf#{L4O^iY??DHsN%kqWMBPrjVohq- zhY|&l8bGcT+F4ZY-+!LPC$lchum5Zyr|D-?U2T5;RKMN6MIDDG@|;y)`#$ORf3-S? zq*?ket^{J&06n{ZbJW)yIe0L5HrE296Jt5)wIlcxy)(xiiHp!~)kSH3jS&FHMbx$@ z_>D+r9a8=v(#}_uk4|c{_n+u&8`3?<;P>tDYpW*LP8<>@l9I~UUqlLzrn!cTU)lVi zM$=Qs{&D&g^b`0Z%Tv-Aa1)`10oXUAuaIv_;4$>Xk>s&&eS`$jSmJzD^sN|UWa!|m z|75x<{5mNwD`~DuD$q%VSxM6+={VUhYraHZ>9gO8JA+TrGgrQa!`yg_13#Cx$gc~J zZ29ko9^n!Fq3i%GQ~s(oFkS%%Y0AM|0Zt`rO-Xcu)c{A>jI0m48sh05h-~4OPj{vS8Dbe9!p*@SzKw6p2jZ4=k(f`(K7%O274% z?N;IP*ED<`{noAhvSdmGAElHX6nm$4G ^H&U?wr z^Kf2sN8h?;rHXA$AE*3XsbabB?9`(UR$x3hj!=gx)Aw =(0uu}bDND!51Sr V)fq$6l4YqkIx zFhADO8({L*KOL9;<)3C@nkKcW`G1XWXpv~B{T~N G#W>FM_?E#BX<$c6Qu?^F_h@na!-TE_5=L H|=`3lrSjWmTPleJ4p6%!ZKUZ33qx@xv z$lp_{z?Vc7*yfsGx%*#sQbv70Dwi8{M*Zsos(a-Qst|+damPDpiu^UscOIlNSB7OE zT890K^BwaDCp>aO+hUFFP&{@4=d&4{dH;{gJmCeMc!0PU2wG#+LC@_xMi$69&&@og zVY8Xc@hOszbDrXEPIK95XP)M+B!73i V{FJ;UBCJ=z=Hz-@Y zE8M&CD3I*OgiKEFu*OuGyDSkI2S( 0wT0{W>S@qp zVb+eb6$n+;G;@nmx}8CWZp=g1PyuHEl%tr(e)c20xeUk8^i;e0W4TM?OBCV6j~qAv zwC >MDEodBdn|qW$zZS5%r|?!W+2>F7>GM`st{9ofp*n{N1F z#%2_GO6~t0eOu{6$LlMOtM8NS`flk`pDPb!%V#UJJaC+_S|$u^l+`cld*L9^Oq{}g zL!|gf(?R4ik>bxn##NV*#ZLKM4R|$cr$!+JJ2T*}B`LL^zhCOWp5_!P5rMr@#GqDg z8in@vq_6O2>3^S~znB|$htSG~xGyeg#%vr2UdjNlp;opz+^2`cid%38vo2?&fw7rY zR-^<=tZ7LRw6XtudzR&~_Ijn~U-S{m@HV!tNU0<;#b1}-cC~ltxxbB~376(iiY}K& zd+A^4ccZezYzq3F6nV94;HlPfk(8s2N?sn<(V5ipGTfi83+EPjdEl=F 1{THs5eefe9!2dn5tKVJYOXA8%j==OVv<= E z-4=Otz{o7z_Jb@yc0KS->zlC#lveBo$6PIJ_I@PCF5@ylmlc_oe^Mrc=dMkg3})zO zMP9$oU971Uoh~nC)`fQUn@$s{Id#`dAPfJRdRQ+g>-233Rt5XK5uv+f8b+>TV4hAR zR#|A>Q$V!ncRF!Hb?$P{$#~mZ&{?-UhX=7umCRt{&@}s8fg!!p7fu-(f`f# _9U(JdzuWPsd=;IYW+#rVBNcPqrB|RO%=#ypQfJpoE z*8!LOq>HbOx11Ekw%HPF@#C3rm6UD`OQrI!HLSrPPr1&w;wJML%F+#zCpgWFSz#$- z?uaz`%?IVNxQXQTD)}PBs2wZppVO2Tk+kegf00aPOXw}O6B+Qe7E7z>MMNd{`A*~E zrkogFERBXwMWneOM_n{ zi#vk4jR}i|4sC< zqW)3zY~1*)>DS9JP0u>)02ze#I_ Iu`Oc@J@ympi p z`R|^{cQ23Ho7Texe4miFf$==xJ#?x37-O5k*D1+)*atHOVy5@oh9;?vYxh)xL#;*A zbla=NNaGp4naZhF^ wjTREA$B>cii%QU6O`!<#lsPNQL^q&>J!N;S$~ zJioT;AW*zSnnI>_PFq=J5*ebB(0PGqWs&&jfAA?)MoxpHmHB34t~@-rLVXl+oXGD2 z-|!bW)QidpHmZh}KQGPA%qiJsG!BrV6Iv%Mz4B_0jBTb0f@LhehZEi2hPiyT 1xpB?RUylepm82O)3bpOn51Ufno!kcvi}q&uia~@ns1~2S-;G4 z>)3Ls!iz2Zf>P_snv%nzKZ*7Y-xGaR`%7o%J6#B!q74^_h3-ChPMl5Xg5f7V@+;~9 zb>Ok#MdD!MUnm{vyj4ZGX)avIVLVsK>MsP=j{mewfR~atCz{8tOCMJm56fSpqMh=9 zyJDv`f8?;kci(E2j==5pu!AM-^UlWL#cbEhlwNww!!`E5-=y@h(kLc^^G9MX7&+X_ z%8&X+-8Ce7g${Tf!j=!-N(iLr!oErG5%CP5))U;tSGh&?*`zGd6Aun+GZvpK7%;=P zN!E;Yb&>Z)XZ5tQdag|VF-+U`+9e90p;PQ%@^tAH|0a`l1IJQ0kl`xDBHv%g%MR zRt}d3bLLQUC)YKsp9)aSox@_rm=_5+^^m* (Pg{_5_$2`eeE(?I@E=-fh9GgRA7asUP z6Y`TMKc=$RXl*>mv*c@478mj)GP*G?X4HR&TG;iMa^(aocA=HbHUei&jlFt>h$Z6A z9#sK^%n3U%ps`6RXxz+SVV#HMZF!sg{Yevl#W$&{=p=a|K>6~| _7e=_Vl4GiT@u&Hs0u$8mfTa!*69V?jKnU{FjBwGL zEs#;a0!dNh>IxQS_z*X|C$Q_c 6`Wkyq z1MI2UYLp=%QJ+|2?zU&ix5HLrXU4a3^{wu3e(!!^qy9B21Z^8$0kMqw-Q=q~d`fRT z zS&=vFWuxI@GR5ccCryFSKXD)AZM9IXF}H;`tdjaoF7wLDJYtl$Sz~5l*e8IP0e7Cp z=oNSwY$+N6UMq^!Z|!4s{XA1ZI0c2 VE&jJp^UJhO)#II%~jGCjo zXZhAzI#LFrOu %*J>J!>0ILqzQ9l7PfIpuxYyvlhRO1& zjRNZs!%&EoYA1dR7-}wWl2TXs#qhG1e5lU9(*9;0qAvMbBlq5n_~euCi*gW`2v+Ip zBW5!6 - Qg11lJ&DKn6&>M1)V|Vaf31cfDUCFy^?7#8hO8aI0CjMlp zn?VlJV0w8-VNN!9k1&*;!21v?z!Z4txj-23b_K26xlwQhq6g=3=LI`X2b|&;$ZXus z-
*Sqz8`y|1h?)wI=E8wJ6r^97}V10Q8Jy<@5K z$1)iUhFW8X7jISNwc{B20|^89N)8)~eZWRxTdNyrbUwwQO$+76Ttv*6X=F6E zKOG{JiG^6riei{qs%TRx4mGP^z@4jq^7W5mS4^$h_yix+DpVB`tTJF9kcn@;^mL&f z51m76E{)mFbHgh}!>LqeRTFLpdEr`f`AVudcXE-5_nFE BL`0kHb|x3%EH!4HK^7~HQ>mi`F&U=GlDYPRYQmEG#1|qyF*sFOyE7E zKo HVh`<%*N7;d<#NRDVl&i99&{Tjcidkg@ntI1(DKEJ}1KeRg{$MyZ*U=w^DB zxm17?o8c4 Bj#1egLLKAdyx^pg)UsU`SgkZ{OlAZ5X #Xu$-c0onY<71+!lD)FwSs)?iJmM;vSLc%qdG8K?e>-_1nUyQP-8c)EC)N} z&LQD4Q2kXD)l%S>L8-7>qD5gPl3k%Bb*b>Pj0!JGSBTX-b+XScnlE+M^G7Nyqe3A9 zimT~PN>Z0P3pb}b`Oc41om9Snq*^#xJ0q}`H}Ti}$!q*=t(YZ}S(@gV>XKqq$$Nw< zamI`!#RLip)o}gNREGA5S9aNb4#Se5)v^kHA|Tr2p^LIQ=(5r914>5jlXIi*3KER* zTO+61{V6DG|GwN_ca1k&){~ BOn@_!at=aj(fppwy?0Nav z6j~J@&6ZEb^H)AxX|Lt)CO@!Fu91P-n|KE(6w>jl83Hr=g#7SN|l)&DUVBNYb}4 zh*Mb8;q`xzOraA@6%R_!JL0==4|5R_0IOtGN*1W*QT^krLl&>QwaMd2NuN`1@!1!v zUK{m~lEJE&MnlNHL^msv{0V{p7ZFg-XI(X)bII8`!Rglcg@kRfrZ9(srlwNHuxHa) zFCEv&$?;R9xo_m%gWfkxwe!%}S~FF9EHz`rdkJV7JUxD{G+bR|%^2|~uL^N`1|LL? z5Xwp3U0|=c2TQ~?OQ_fW0gr$!rPX)|YdYRFNAbot%Il(>_; ?DcE>3+bly7Z(Q!?EjX-JK?)VjCE+*5q;q_T3OAudu*-3m$ji6WIs^HS0d zM2s=*ruyc6!+KQG*!6iu-PQOI6(gh(-3Z0Qo_S}bBs8sdxYBN!l9JBm*Kk<{AssW# zBQT2+WARm#hEPQ(Xzjy+#~o&uZ)yF|41aXt;H39p{8BP*fc1vsTV-I++%0JCztX;( zhnaQ>f3bZ58!zGsv7 @?+LL!C!YjRPuJP0u>g6xqxmW LD zsmPdd(X9N*Yq#@JlrZMY^?O-jK}8(q@lj{1u_w#(3_twB)vtP%Y(KU=d=!Ta-=`&< z+tmy8R4CDqV69~6YlKLCeSOVHno2u3_%?5GKP`y*VQa8Z3x?+I<3&RcIYo 8PMjk{E?)F@E-?Y0m6QYq@|pTRyaK9tT2L5mN7(WI>keo4V}w|>l< z^|+vjwOoV VgGTIh;EsB}15en)dAOa}BtY1!f LpL_8-fjV{K)2E($jUGRzmm{2rIpkmCffdn$0)~6Zuxsp}s)QrWS zh<2p(X#Ai2vXKz^Up!K)vxiO=Piv_XKe-A)LTR3k>2VfXBzG5qpT!(5*n{$**FApw zEJ3NtJf;e_^0-9IuwA+6PKrG+)I$_EpqIQS5GRVc(o-wXrD|vOQ)yEN!Zzy961eyF z#)O3Y7rGtV X9$( 9`<4pWgwF zA55d}2fPDzocH$%7K*U-DIYQe7rda}bM3v7v9eH4Ng!)VennE`fe}oJC>N9W6vY#Q z*M|`)d;Os|ywp-BF%S<{>G{s#3^B2k%Buvj Z6fWIIlyM$&E8pU3|8Nali#zdEjB zr~@OLp67ekXjfA_vT3{ed}?xS8xN_fACaonk)u9bbS=dc%4`sn`9m+k776v!oD+YC z^`cuB6}po0Ye%1oGq0N-Q36W*LVDFT!%=v>UFKvsrJD>BrG`Q$!+ut;u0aVuhiY>q zGR<9&>H1&IPCZ<^P|8koQvXcq`h0q}K>_E@m18+L)|H{UV1rPr!r+|aWN#$9{&K4G zCCHc5aRdC>Q~RNGKH&6idRFVY=$`-7Ju4v%p=nEnfip0fpIm`ZF5TOp#FUDmwZo;a z_D^*Fepz*~3p%Vvy2PnZ36ewsS9PT|bvhu=kAJEw*$gG2(R72NMRXKHwbx2>-* V%=)C!i~%S`p&moP8N)cTua|LZc>e&8ZUn^2>`zAdRKFA$-g#J$ zpjT##$AL_%xOAhxcS^JaTl}_WjJbNKRh_q_+Aw3ax5=18PWQA@I5X#rp)jl^GYqp? z=d^yNd$CaJ% iYfro*-nkqz9Qcdr;o$Qr#q;S`1RVAf<|vTsr}Um9F8g(YU?F= zqm%qGUmzYC `$RAzaB>lf=s{@AP;I(|aq`#1GKyX|-KIYc#PQmav_(T>B^@dIgFETu# z6BSg{A4@~+4!73y4!djph>Z3@I9QMH$KTW=!_;c9SMBb{s_;c(0lNX~2UX;_`jkG* z{ N*anxEY-xgsz$+ zGKCg~7G(=V50m8F*zDdus pJ{? S#+tQ|wcb0c!`sm)zmD^P}^ce %3|yvgjP(i4@Mkm?KJBDgVgXMZZrSO zsyK>N_m9YBp5VJ_f$-g%Q8~V{bgU0wCJnzKv+t;QHTk(Tk<~sQ-1h%09Um(eym^rY z+4tUlOm)^+zih&;rbJ``wlxi7cv1mOj5QN{(J99whfg*ZkCNm=1Mc}wZ(npZV^4O3 z7ZjdqG<-zmaoM*>=J65C93J%ZMy{t+E^92l1&n&pGe#DmI&OGh3P>ppx%YU=?m3`z z ;dl1i7%&=j1C7b^3>utU$^_7M^lS=4KK*?h8A)h3=BdX5PL#5 zCVs$tsLtV%@bi>Q!t}MG`BV&O1V6{<>Sk@uBY=r610=JT*?5&*Zvz)(Zv)Slq_oYb zHW~~s$n719TNBtRq;Lkg@P9G#-8ad|{fVDu+S4n`SNwlndkbL2LYaFs`*#W%=jLS^ z+cNBRo%>G1)A?gxC;!p!r|SRV*U7)#&F{Bwbn^!o?xXyFk^izAJCFaf`M-+)Tlrtk z|I@$*`7h5C_!Uf(=l{!pDKG!UVANRSMU@-GaX|0T>Fhlv1m2y#)aGcxja@DPCX4N> zLh3razOx!GIq|M;%8hl)x%4#qet;kP5(N`1Y$u@St}{AZ -bE`FkM}Gmdsena@o0% z>FV>ee*oIbw_|6D32Pcz9QjQ94_JxNn)WBqVUM8J%=dtLPuahIm_7bN#!tN09?7e* zrhnwnNydXhY@o5LPjG1LBB8O$iU7kou9)=XgodOqB^FOzuZhKcV2AF*Cq8D&1P?|- zqZ;nuYj}~w6Om{OIJC`fiaxm%^$VVblR3mjnKKqk8FBQ;2`-PyxUQi;Pw|2LG1ef! z9P$|t{*s~)$M+eU(uHws*-OyS8~R2MZX!RPEesqtkviZP$NWsPA{F#c*^b3!TM*ge zn_-9ka+W92Pd#ox?*QYAKT3moRO+mu>!|3PJF0&pCs6t79$lC2k(w#hBcD{{_9$^V zhcmr;98y8Lg2NQkLz1mQssfQAstV+GleW|1s)cBXjK!kkKz~;gU(LhU>h15ZE0c^I z=k^K))%i`ME-LX?H0bAR0qM>N0#fL@#P lJrnO=`N-l_P*5r2-$Zf4j5lU#eq_AjUBD#V_B4FxpSclTG?UlLVF z2tIq%SEPTVhjgbuN57lu&ktYxvi>;vx2N;p_;vC>=H}0_i{1RaL3;N;a<_V3#P3Gu zS<*gqo~yy-Ui@Fl|2O$BX=A{3by ^xeQTecSUdXvPsN_Jv( ~8#_*CKp>hnkM z^2YwfUH1Q>XP#mEBZoP4+(wkit>;$dnpHVnt~qwkpNcepg3okiQP!aFf?5v?dhBgl zj+~p- X3R)4_b&<=t zZ|)qvWZXBup4?HZiCp#vY#*)2XFL+gn=)sJwCK3m;-e?JMAGcZZz@h4iB;Jv{|gPr zxP2ME2K>_Vu6#LlpG(+3_aAjBTw?{=oW Q9I_u*?@}<>ns_O7 zKPJ=>C3D^7r+T j;>*E=*r`K;@HcP2#jtM(W_m?=}VPsQeSyp3JWrwngn6I70_!c}+o;~aVWd4V>> z9r=997QB@ss&jvnCq=XIul*q*(ixHC3_pnNkT3LYM8OEI?ynb g_@@2-E99LH@NHXczUWX;>#|^>MuuoqGF6J z64R=KK#Fr6d?e{B`6b@y^?q|4&Nr0L^nuzxL3;G<(*!v?l>aQef0)<3CZ0b!5|h*5 z6#oK~wr9PUyl6y(4AVw$T&goI>~W h1>R{>^v+iFI(F zK3djkj%$yW9mJE8RdzIa=fNb=dwkZoc5$_I|7PpD*Tki__!1XkZW>MDoJoW^!fY-c zA+H?A4wv8l;xEME#^NaiZdcvq#{Rok>ZMqe+N!myFR7)c-G8L$=X5-$iA(IMx%T*L z^peZ5-)>H=GZ$lBdXw!xd@l3Henoa{Cj%@tU`{&+DhlZEtg8bDE`mB3c` z4bSCLzR5LjrBVV#JT)_>ic34-xhL_W5(tYps2psS4wt2&o8Uvn>RdHdAeMrUb}#P2 zM}j~})TT*$#KU;Ne&OS@yZ11T{xc;%4!3HG>?6+#X%MYKmV7DvYPkKczvsAw%mFa& z;Mle85E5NYPw$g}F^hay*3?9F=!pznnBvzu{=|2_EdIo |I0zHpdCEc91DVeA21%YdD=_&J6U*cNpUXG*zktxi&uso4cInG;{M|u9 z`?KfV`>TRI_TMnim!&u#A6Egb9N@DDpYWnF_zkBW85)CG90O)xj(gcPEG1I *@#}=1!XZF@e8r68{WG}y #(cVwm7l$-m~^3#~gL(h^41nj&;|R_q8x;$ByTt@p5)b?;H) zV~GrN3MQZYn(d)y5``MyqmzB&CDYEk5*YE2%Fzfua}>MV{`NFzz`^)DA#5W8$-76S z=)_r*Wn(xp_1>R%wE-n8woC@jt5Fm4WZf-pSx$&9Eb>NYyW<3@@K+bDO%8b>(?8;o zc~=T8k8BBN67r1ky)fjZG>lfLq3(Bwn&}fIT#eNQ_p6#h|CxAJwjLFQrOK(yfp@GK z0qrpVz@B8VSK2A;B#Kzo<-*70q5-Bq44_^Oph^#*IAZ{cUg-HzgV6pDkIbw2zxUrN zJ1FyGhn|VV4%(}x0(m>}m~_6nTzCpfvb3{*m$Ou5`+`|ANhBvXvPb0J5xsD}&y7Ts z<}j{IiaMK|UFn0nKC}HBtkCQ8xXo0V&l=FGuguXv6|z~^`@yMrMXXDF47QGIX9&3U zC1Btld2;#iq #A5IytVDCZrK;Z! 4CqU STY5>dL6MB!xr2&~Sb8RUi6VKam}*wMJ{oM5PP~O1eIM5?5LJ zYP+&?a>1>ypaN_4Re}3VolgX{E)bth&+4``(TGzwK%e+)VJu$_-$}%qkpA2M4I}7A zevmGx?*Bx(Z$CVRJ40KVc%%*csq{p25C5hwa z)JFN!p^~8ik$;7$M34fYo;|r6CZ9eZk^xp(GbY+6)zBXf?Z1mitLH7XyVd)9S3Z Ieh zk29BUVs`x!?_|Dx{-8pgo?5W@cS`=DjgHtGE16JrEx{8!HMvI2AX1ZEPa1|tiij@C zKE(SzNtsOhDwUOU1L*Cd(k%XPnM#_dlWMY(&L%0c@fq6e6&!6<)apF9W#vg$WXu?@ zg46&r`OjM_LmpT_aWdo!K4fP2tIANA$`I(9;W3qAL@L9`t{E1PA?3?ifatEb;aUEB z+J)X_`a_%Ek=i1GVsy)chghy0l|D4xUpsyrQ-0wU3N@^8ZD6%1;BSY1jSt_yy?5wl zajTm?+L1mv%Zwcmi1?+~ d4760Yl*0& zfS#72S%qsQDNW&q>wpDa_4T2S8FqNR4AG}HCiZvVa+gB4>xHmW{ka=%KQ~d4xN)nU zov91&Z2sBNBYji$7#aR>1@z*=YTDJZyt7?c$;!9UEoTm=D?@bTdwVn1lNtVOy7=Sj z?72T#@s6Z7;u>qs6*QXirW1)3+JPT;!#B`Zr1lquwwEkjw1ZAO0H%pk9dGbk;8AEQ zMin#cfC9H~c8k_yhDPh{Vf?YD*xKN+qfH$3fgly#&T;)%!HgoEE7VJB89^flB8x_P zg8S1<;ac)#Esxat$eu6Hjq1D?Vdgjyu#5eSJ6})D>S4bA`|__fUwK&a^*mpG-Jh %(Ezgy_S>v(;c zL Xr<}^Siebi?TH*XEVvQ&GQhNElc{z%ozjjq|KgTvI9p5Yb z2#q@W?Qz2R!I|yOHi}7+9-)O3|K-Kdm-uaTPK0ZT)Bs8p$d)W7&W1~Q>pwLmA>2gM z8FQw&fTCAg{+YCA)TDhuBYJ1PU4l18b3d=4{l`sEYJMTj>U?)J9a6a*iKWMQlJ8um zwmYc2;#GUnDiqPLU6o^%upQVNyv)(5os!<*M6^Ebn~?`NYwRJOYa>-Bb`fb!d3)?$ zgLV^nM1v+IqaRx nE7-k;4^m!{$tbUvp+9`axBV0vpGw9S3h6Q I-;3jXc2iF5^7zi%ZpcoZQNm4Q&DCnGE+NE`59HZ{*YJyzR`F6OW2H zn<{gbj(qStvSn;d6@)n)p~zW^OsODNxl^;%ruSwSa_8e5VIPGcXK Yfhs&+8bu4@$ ;6jG_djF_0%vb!%Jf>Sn zwv%CYi`c)aF!s5@3(+N_X-;waZjCQ~Mk%XeXeOs0uHj#l1^>HL?P>Wpo4=R#Ko3Q2 zG)*w&CZ_BEq}4e5?`oMtsYF_X&L }7aeU9wkls;p^7zm6yZT%%RWs(}T9$a}d zn;+LOzHZMyBA0nXSjpshLf=(73N^pzC{Dv4Gom_y^(N?xlg?%pFPD11`ZXl^WJ%@? z#r?dA4J zNdNOQUF7j>_}tL_{72S5C#FKd`+vCt*A8$)(BV`^60lF1QZ6!ZeN%9@`$-JF`P4Ji z=oRK;q68acozTrDfBVQXPug;IBX3$T65O$G+%n*J$hhN0J}4u-3xi6_2QEBvOBFnR z{Tl}!`sCv{RpVHiR%A%_BN9I}@Mxa;;Nn;I`RH5?zi#65!kbw)v{KS;)c;AS$GDEf z& 6>*49Oo}xC5r!o zMHpJ&pVG&2p3^#RGi}hLw$^c?J`f>K%M YT_yy5Puh~O>{w3=>n|_6RTHolp94206dq)G%iitJ0 zpUI6Zn&t_fh&XijEIa37S&i2+z<~!UZUEId;7WsZq)M$tb1505HYcu#KrC8SYma{n zqmk=6lJn-;ZwM&FP+Tn3v)A?hizKN~Ck3)t!!DIHQYVehO8Sc={b?mFVcUI^6?sga znt~TNCP6tXAcZ~K1Km$)u?Ld!R^$;~wnuxQ$ Gj2(h%K`il^d~Zc943{#I&Xyef{ujyFz?oLKNrR7 bl(odVP586(7k@;sTbr~EQqB!_>*M+O8|~+hz_r6i!QsZ*2I&$} zZd*)y-p@^2qTH&u2ot>VGr^y96Dx{8iW_`U!l?3)`WLC28_UlAA&qD47fO88k4&2b zf}ssb)hVNV2a-rUa-`o~yRa@u>{QAcN3_o3ciHr4Mc4H}5El2y-#S4!DKhB{iDxxT z;#tl6jzht_MszxMt-g=<4t>_Kt;GHXO KwuXC9&k(R54o z)bQF4sbLQv1%7se)Nubk;>kf@%am}<>5_XueR-zTJpY0$wASRw8Ly5|m2;gMrQG04 z?Pu<%W}#PSrsq 2mu b9lT*_B->|G3wLi`2Sw8+;>Bq(X z>VFfju}PQ8Qc$`4_~!GpE+%|$Uaye11%?`r?PeS4^5<;%<_TF3S@GR4OK}c)tiC8@ zQ}NyMSPukeT>K)VDrpX$5nmz?xQBg%UvpdQxDI|v3C%+rnL&x!ErccIOX=}P-%<2f z%;m(G0&5px724WGLN{e_oo2FT5MwO{O8jiucP gJ@W3>m3 zr^(8_(&p<9zIR>UXKBBCT_Uy})L*mKgEH}x_-6~QaQx|Otbw|>Vbw$DzeTX48Op!H zU1vG|mN7UuK|6u?^%&WA<>K9J_Vq2b>O%65+*UHtZ@Wz7!M~;T0alsbEXlo)4DdX8 zz9XNBzMzDC_4UX+>fYdm&d&T~O;5gbe|{acz#kn&L66(>i^=9}&%efcNa<_7WIZ(2 z$ %Gdzrhj#~wcVyx_3W=W^b4#2Y*@{D60pv3xF9 zB`YVe3mq!C6GP^-dcB_b_aM0$nP!k_mA7&N8`h!GWdXUGWFEfKezw%dT==Yd_2pAz z(aEK`$}XXxKLyTc8j4o-6ElWgt&}o)6^6&+34mpW?mir9CRlCtE&Wa6wxh$mOMg z7aa<$cx#$wt_Y9rUt~0VMxnBjZK3_<&bXYWMDWegu#^XJw$x7R>+pMn3*b_O8=_Cb zB#bo^`}Q{0tl0Id3H~K7g )IDF_Dg%+7v$jC#50h=qND*@-b~9wqX<`!`<9$H;CRZI &D`qP=X;-px}cuMw@cjBOCW7$no7u}?us^ZVRZIlkkK%;s2JQkU4m>Cr& zz7?(Vg3{Oo=a`)vPNW8J^1!>%(VN1tc4N(c?-l{TfZY(X6H2Hc)J}C61{(DTq%nei z8TB9WWVS`8c)@-@&l2LQDDgW1Nb% RVRwV(5R&*D)4dd>g&@ z67y`>i^Bj| Orj4qU CxZ?Ners;ikpTV%3KeZG25lpFp&R&aMEYx*nIJRF4CDh zyyf(0x6`BH^eFy)aPdGZkrlYAai2g~YD9z% ?sERHNlp>Q~nIxV61$J|Z zkcnK<3hJ7Rsliy=eCbWHv>v>SxApR=xT)mOpiX1)c{~HMCMuCLT4ux_Ee~J_^??3c zALyW?yw(TW-G?UkVU_#vg!{0 7 zkc>e&4R5Uv6w(#?t87dv+aiaC8IcF_G{$3Kx-LnQpqBhvD|4k}@!nA@bETN^aEmc! zPb7A c?&|Cb}o880`*_}|9^ip(*t?c-O!L$P!|t?d(IR-3V85~Nt> zA#!M-5&0d5kDnM<<-SyPa)m$sD74PHmQ}Y}^%j^NMW!|P%sH@Ujxn*t*mN*jA1J3c z?&xaK-7yn$a7ws3aFD#l5^=o})i1=0+i(AEgpa+KdDvcdvCl*Cxs1D3HjCnW?wQG| zJP@hnGo$nHc$@PW_fge>*9Yx&5Wv3rGR&Jd9b?hv)+Kj J~ww8 zk2Hmkc#TchLdq5f@}haA(ehHSQQ1t1LTkjE*M2(AZ%Sh4fq$r#-)ZjV^DI6exS2TI z;4WlpS|Gq%9&eB^^HoVHZt4wo8$Xht{7Ac}_qBl{Rs%l)e(IX(cX)shPrs~@H|F$S z=9zm!g+E$W$^k4}u=3qT`4MAWn|aXOWjxjHkA2{mrNaQmeG;A0X^d+%#_fcx9Wb8S z&$acOXQ`01V-$&wIcV;{fBCp( ?Vu(R@5iEXa=*Z*MSy2 zm`|fuF_>mrpzcp%$7C?O7>x1j=2ttS6ED1c4q+9i3Hoi?T6f4J578)8sP0g2#$zm7 z%`+$;@O~Oya8fbD;eW2VGxpDuaMN|#v#LP-ZP5I4l2{5~q~EXQ9p13(Kzkh)O@lrC zws3EsZ;_T<7>r-M;JqEcgb&m_Q7xt$A^M*fvz^5>@i51UUGRM!CVZ?H)`#G`dANJT zXVv_o*jY6*aQcM6BWo*i7&7rg+F+Y=V>I_+xfvH7p@3D~6pQyNi#$I<^5L LI-V)%%`=f&RbBXIzU)8vhgIcCOU@jjP&*vT4^hZwfCY?-X~D~u;&^E$ZI z_6jshdKo!LvoA}tO~IR@xecn>(G4<3#h>eDM@v4Mt%$TrvpdY#u>Hp3-%1%=e9>m? zgFeGLBW>R3++*f`nyovg+a0Lel@(uQJh^|~+qBy>thxB}V!WFta!co6=fRwM_nSM6 zwQtoO*>MD&?~uA9FG3lDgBaZ*Z){HF(1nZs#@|a8_N|<=-s|By)TVZ5hQPu;{Q{vG zyLpv9+I@LtQa%(K<`SW^#k_HIE_3ldpB*A(^C kEJ`cgyv;F==u}P?*Bimj$T}&dqJ}TN1*c< zt*eeauK?vtNpz)}3fvj~^GV_3IeJ<{)!>`JlNhTqf|54F;f&uq+2esLZg9EcB|zL- zohy0aimP)ax8jO#xLi@hQFr(77b#|J+H$GjjPcMKu} 2cmW;%LFvg%0ILhI~ z-qCnO-$tf6o4g(eK@%s<*~F^W$h$#M%bxZf!C)aJ0@iFGdJoj_T~M#ae(YBYn(nxb zwXNo{OJ%_r4PS`B_H+ISHw_=@WkhNOhF$x96a(b6_yG_cAin~Tb>{&>dlnFmZJV=k z$C0oE!uW#D(mNTh-67 Iz(4ZTsn7pW%Ks2@cI7F;^^K^_9riwdL6=T%E}TRfhkvF9X{A1C{5iTeIZuN}ea zrZ(AWO_JVB^wofI%Y4!`2jiMV4tpzp0bdx cbcd@|Z)fm|Tt4B8#- zP$%(u#l5m%HPb#xCo1W+UP-V2pDbk=X%<0=P7F+= ce zXxA!h?_E$W^i8vqiAp{o`^%rP_<2Pndf+1Y6Z}s6K|X!n;x+2GVI!N7^^PuCjfU&^ zBKSaUhNoYPQ9m0+$NGFW(i^@(7i&lGWUs7nbg+8y(Bo=GrkJshk#BmDt`LZ!{uh+! zfh!9rj^oPWZy8c^Yl GD=*CC%Lk-`%a(~v)nvt&qt{ i*%p 8`Jo&m2xs^P{TiLnR|B=OQ zz8w3wkM;cXs_`dZj*j=vdtb?wGEqB?dOxM*T_&k+zx*}o-=SRm0Do8=0wepG^L(BI z%_JtF9l1sW-iAEp7PT&BYU1%Z8ZS*e1U2-ESr+iKv_RR{b)ri=CPF+k7lC*TrhUL& zVjgfwM-bAntM_V$bhLVR89!<<^=oO)5yDJr(qR%uz88f7PI&;vfBO#eK-3pyMm?H< zXaXj16GD*>G_9Z_6sx--6ki~eL}K2^E27>gjQu08?p>Jzb}+{6Te&6*5$d;_=hji| zcBRg5(5SJDEX>XWY@yln!yRZG@_kf(5Dxh CLHEI)IkGS51XQxSG{(KbekWJS6OgDXJ_%!K2gEgY Y?3zXmTG`xergc4=db Y55PRWZ@%dqV#}O8mU8^(B<>y2pq^(%pQppvHb}xauw&QblkzW+8OQ+f4Kah4$ie z6sJUiDBsxZ3hoIVfVBk7$23Pj#^xuNE{O nr+Ks}KpL** z^!Mkc=Cq`fQ7SrH*(nfz@IzW`_*?|o;OOEe1Zve|S=Xw^0UnGWfebiFU+FBK=F$^c zuO(ZIHQPe3O0Rd)8Z#i((s}vOo!@Uad@H-xf3C>r^-TM8-7#m$*9WepGc~ry>2AH^ zlVH9;IxTdK $>Tvq1FZm?LSE NlNdd+;ly5WaYrd@!Z@-q?9s|n+si=Tu3v+_TmInex z!-XFbYDVh&HV-bX>N+G*lQ1OF0`-<`TKUuMh?E@pRs!Rt|F9+o J