From 270435e7c7dd417edf915ab3e88d244bc9161b23 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 17:40:20 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 17:40:20. --- .../20260515/20260515174001-Binary.backup | Bin 0 -> 242153 bytes .../20260515/20260515174001-Config.rsc | 3406 +++++++++++++++++ .../20260515/20260515174001-Diff-Config.rsc | 32 + 3 files changed, 3438 insertions(+) create mode 100644 MikroMaster/20260515/20260515174001-Binary.backup create mode 100644 MikroMaster/20260515/20260515174001-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515174001-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515174001-Binary.backup b/MikroMaster/20260515/20260515174001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..fc69f563e309b174a806c4bf378a9fc197901f3e GIT binary patch literal 242153 zcmV+aKLEh*sF8E&u>$~8t7D30EXK()9qW=6qDm_O000O80004Z`SAPzLlIa~yxxNv z9tLeH0Cr$t``>baJlubVqQ&;M?6KswT&H#43<|dI=3Qz}F7!|9LU)-7_01=izTv}} zqJIl&D98cCs7sqT0kYn1hXNDG`N@+kLPF^SD#rMCWt&Z*UU89yTb+0=sHpxg-et8G zdmi^pQ=Gbv)<=LVecuqOIj3eDI*cL^lrH}AvvQz+f zBS&Tp{ecC;68=DzTSI;k9ZREeqonigKfsdNC<&vIM+;L+127-1IdTAWYJ|JS7d8hE5To3!=v8|33ed2lEX#c!)Q3T z%CBaIv78f3yas1jhytuDaXdN|At4~n1xKXoNAK}>YWmaRIwvv?xYTyBqaY+Flg5pn zqt#!+Mj9EKiy(DaHVIXGs{5XqQMg@$@!|hSP4S~SFwcRkul;qx{U&m_+5{Qcd)3U{ zR|grbOs>_Mi&zuN!dY6k86ytNBc~YY^QiP-2|e`o`*x}uGp5H$X`XN`BOKd81JFbU ze(9(am%I$U@KZnAk_n@)k9JcjYC*(uH4Yxp$zXH66jmTN4wOkEWFw-Fz}H`0qyTL* z7BDFjCcCV5ycA0li?t=Vr1r73H`thxOV4(gQG>gc8a}NfP|iM)SsTl@m$qQN2+1Ox zP|isxmfHw^%t32&@?x*2prpx`Nkp$z-nlgB&y9$$WgVU+Ag>S1izsSj<>pY&3uZBued}B(+1Rj!h`=A5=a84Kh-sGIqo=vwDliKV3V{ME2B-bhUb$ zh+-|J@XA8USJc_-?+m-G$5HLaN=I30=g1jO{cI8|4bHSv-nn>|!yUo$iR5~eT5$Qk z&9lU2&E+}cY`uJLRBc!}z91mjmO@|LaZjuIHMawKa8mS6%;blXUrYIDGBXU%oUenD zyH`1$WcPyl`WY^c3dQb-rA#`A>Mt(+fE~!L*dr|O;+}y1OXETLkP9hz>n;=mnb+ld zSJV3Fc;SZLtMfgsh*2-9KGeHHgLf{`>!+^yde&=YmPdJ^D$MrGjOg_p_BBoPnK7?> z*>ZPAa$uU%g-ABi5_6+NAYD>}ag#f@Ds!#NF`nmJfi&2#0old(?}5cbgaNHPJ>~H) z4bRCheoA+#)wnjqdadLMRIq5(AihzH`rX-90B5?LdwWB* z1fPnLXA+Ms0;;%5RUQP2?nHO;+BfMZMBN+SIW+?N%H;)NE|2~l8K8bytkJZ#=-o_( zP@Nn3RM~H`!T%<+qX2FPZ$m{M$A|Ei#{r5FLLRQoxG5UlTH{pQ&(5Cb9#%7vCt~g% zQzPThu!*^TCw_SRqS?DA$gqOtS+=3uC$NyhzAqA0Q9X>4JY}3Zv>>jIX;feN_px23 zONWi___|`{Xq41_a5?Z9_V)` zFQr%VRT><1N$oUzluB&jk7w2Mp>wc4-fSD(o+VZaLpD4*A!rVvdJ74&Pu$(8*DHb%=f0@ti0^QahE+Z z>55RYYlpikb-aFmFV;l-Tx1eHkQp}ZcK)S00CM0DaYKy_YpS9o|IV~8E~)kBaOJ^rWY^ejm!H#l zplE)PcgY*59@?;ZpTsk=&k0B%zCQ7Jcq2k;rg%5;Qa35wB|jHsXPlV zYc;qwF<|v&Nzg6$BU<3XE0mn=1hcQTzp;q4ZZ`L2SO4Ls)&meF1oeyP;u_h1a)=rnb!ma1mM5LYctz z;S&VfI#Enr=(^!lF?`a1IMJ&ca16)CF*?W|aLj#q$Oe7i$wM!B0q=SHiVs@41{B1@ zoIBO2UweKztVh8GN@L0jG2rE0tBOghTV|JYg7%QzEmOeT5I^`{U$wkbmfvzbeF}RJ zASNZnLv4U`3@iJ}uXS2eoFMeQkTHcT+`+DZs-#RrLG53vhP{{>lVsR5L-)ViYQ;8s ziresk^ut%9ExS(d2MhB;#2X^MdDHgpO2wUqq&H<}@Cw?YM3jn6m{7Vtnj`vxQUqv> z{r1vvLEFF|yr*>YF^9@d_O%?mM0U37%p7%?4c}UtH?e6P4NGF+E&CkB+wuKE;qRWg zb!eAZq|u!QWD1^a*`ZdaEb^x5vnkED=Rj)=iDJ~C@&tqC%ZXSC> zWE|LodBz4{R=3ya{c{&$Z~I;Z!p`T@S~3k*_4}3_vYKZBkn`N=_QVPj`Onbs4eJJU zWhjuAWH;l_a*>#Bv_w#IU;uA$D%}I77@Hc6K3b8pDCe@>we6Bw_Gz6Jcil*LHpmVX zUoy~AMO=O!Tx$kxb9)f@F6A9^WDx}4#8_FBTg5iDB`zk6AfScD| znXN0|gyRSKB2{Z@^JftxFtUsSwwd?32ib2d`47_WCDiCMTzNJc=vCAIJ%VEVWHShjPDGY6Lbl)pr_RTz`s9_4<(u+Qfbg1 zC*P;NPBTMpHg>kV2-Cc|CngB`jBEPjpqiBKr1guLk)}E#$pwA1OqT&pa1nJ3|Ld(! zW25JixKBf1G>8kloS~Opv7So&<%~y}-DATl0T>60B7n`|rd4?ax#-DwKN}L0yX7Ox zng3#p@3O$Zfch#L_yDVtu0H9~P{lu}ZffrM2!yf_;V80(o{7+3hM72eIT+o0Kx9&f zxuH{xx4DM@|8Zcd_aVc~tnY!&YUYgx9k%Un~Jtle1fo2C(u+M4UG zwHdPO#YD%Kj=H)z4n z5igWjNeC0~4NYFxe3b3!_4e>J9jAqhgw{%EpCpNnV%EgH>u46n(Ul72`u*X{i6r+s zb)A@ep^1bfoJI5Ep(ap9X0~H-#ShB{1=DDj!{&pDuOXoTi?saT0{KqsA5=|*?&=qd zF;th3rbB{DbZG;1B7qv9HSBMK-UD?NKj_Lg7*Z`yv=b<0wqw-DB%2_S&-owp1w%}7 z{rt$g7d>kTH2Mkc4B;$MG-}|4Mn+MLDkNlWs9-0VZRnGJQ6(|}4?hZ*`rwy0yTv&Q z&xj%RVgk}u+@6!+V^@~prsP}1X7y}V@+n(5UZ5EEZ*oLPjQsuoG>XlI3BPuq0b*f1 z*(7u*B!^g2Gm%RAhc13bv^fyI>kgWh9$J_3d zKe44IAgdJ%vABjxSePC{f{Kt+<+I1&Q9HlV_;S}d?mrd944~W zP|mACVIhi2urg&K(+P&Z{l}ZJRdqz$KM<%b114T$-7f?w5wj*}djyYP%igXp)ZukG zcyzbgsGD`8)5_!daybrXXxZc}@6~~;{m?A|pom^7=>XGwPmG zE%(3v`1uAF@^{=7i{b?vh&C{1y@jps3o$n5vj3SMxy|9Quc65OirHdCv|>Euy<-MJ zl2`Z7Bj%lP87<%YTtLiT41$KNWELqSEX=1OcI77@mcQ!l^$2@d`Z}rLzM6l2pXSH7 zC0VFj?(JX6sJYMxuJNKf2mxqK)EUYwf1_U6cG0h;=9t;wdL-K08fzU@tos-9f|NmfnYLwyNtSBdjxHWPP+zSDEHAyymfrk}pJAg%rKn z*iq9ES|DiwK1h(uJ%;|ar7;2NEBE)w)3n#eOG`myzDniqP>(H6VJ3m$&_sSp;*D(y z)RxLZ#1sa?vKgFl9CNk@r)TsUaX7rYKm)~aBN2rL9%gijtWu#D2=?+s2P$Dr?x+RE z6Q@`I5{heilp`iE^p*ICPvg*|aBh0FS?SICAFv56L;GyDWR6r|8r!27I+%A%0;U28 z+9AOuaVC0HEE(okGq9iu$$}JZEmS8L_9}9ek3b9_hD!FqU-hW$wq97DGM7G<88UJd0=I5aLP}*fY2k@PB71{(2+U8{vUT)1M9m2UGXP z<{*iDqbOa`tb0sL?@J0U1X~mElxqUdUe)wa=59pOv%Ns0Aayr zn*2LIPJ;#2`8)J~-og7S77E7|>GmR`lzYGeEUt!8-8&d(!viM|keuT#XQYKxNF;C! z-+eM~Ipcth^jzoh=Bu&N#>MNX=Zp~n>16K5uYDD<`Co2uQxP_$IT$!&d08v&!Z0ta z{vEIIkA`9DY7FKnSOYx6fE<2QW93|04io@yu>Q-BwTe86?8>eF5v?D7lx^ zDwjd;uAsLMex|FJD`IAKknd=ZWSuqXm!P-|Tx-@I20^_JDz^WxOI?+AJ@{TBF~DhM zS;cH~8{5X{0>X*1$y`(%;z4q!;mzm}tDP^+J45|i4NQ(iG>)hn@e-|gmOR(yDj%pL z?2hDL2-yj8UvuR7SL}RG+8@Y;L`4&joD6fr8`aYi-O1b816&Q&)XP&oJB5NSqwT>h;CO)|bMT4&eVTI4pdw`{qS{lcN`n{5I=qCcsX z^}^br&Bffv#iR>@^N{Ay?m3H-JOu_@GZC(*9}-`zV0rl=+8FEY8YmlqO5CbN}b?&edZ#6_`lr`P5pm=(8!k;J7M{liE!F>qLUE z3`5jDG(HoiI`g?wD-Uyk4?@3=zQ%ZT1hO{?wQ>yd%gyXE*WxRoUCRWmAo`yA$=K~K z5aomm6z@)zg<|n}vY^N-D88uqgl7T7+jpP&mV%xxjMjy53W&P@fkS)+A=aVNrYW&;pPuXX)%CC6){9UR1%` zWQC+|HB^X5*R_(MvBP?wTa*iD0Eo%4sC)>&&*LtyMU@jaxUGoJ0`L9CuL#13N+`cH z8l`2E#(qLl)Bn9DHvP5ZC($*ke$_yE%R59mnQh$H)q5oXT7kGRmYqr-8MX+!MJC!E zbLWx5-E4Q;NCdiUK$QVdy&b>Gz<&hy(l**=9*4_prnhCry1^pmPc}yFkEikxi?aj{ zgxEE;o5^C*^<$-^doQ=)^Yu*bX7fMPUMEAuZ6l@_L}OvR`*|@IphlT6*M~J-Q_coC z1T?<#&QW3|BFmYK(K&U%LnRd8m$h7Z7j!5{Qi=L~8YwTNi6UA8`~6W4zv>xwziC4g zX~_-ixA_m*s$De8Zyv7Iz3vpMY?U%kR}EolwBv_ZnO`&uZ|(Lx#RA&@XQS!o5f6$+ zbT@lPoq5e5(RTPKb1{AmxJhgSuh@t^V($V}gkFub<%$+}43lJ3Kqu2~Eg&cRYAnk6 zQhD0qt64$bi-`0lD_Gl8@kc6Z(tSyhWJtgZ)Z9dOP)9X2O(05Ew$BkCHgs_&ag2Or zbTlY|f8qXkX|ap-V5kn(LqW9)*4Ax2KMM8mrX?n$-#7LSgpmJG+6>kIx&m6szF44w~U?|(c>izCvvt3z9do<`r$3bt@8KznRV2bquyD7IR6zwmw1*|=?L4cPvTiYSxAIS<8AFRdk45a$&z)>+ zb5Mf|(~+Ovky039GGw=ZT~JUw zbU4bBK3>EW4+%xBC@JMSN1m$h>5&)!sTVfGBpKKDK}JKp3XemWkbzONs_&5D-`Jqi z<$cQ|c}F{?H0taPhlx} zw}(AxT#MoULMY0H&B<$bnMppgnvwlI9FW!&kXKo*U_eW^OkhM%FEsOvl^Gfktmknv zccpJ7B8H!<%xHpx*IjmU#^Snw{>OlGGsk1q4!bi4^|#Epmr{a5_YNt+ z?ALM5-f5ABlT5mV?tjhd(mLI6woen*z$(7UP0T|VJz8hT(Pp*zPEBoUy1T14*-t9I zUA{kAUV`LF;z`TyDnG%H7VFk>sNCZ6@LMwoF?_t!fZ$`~bCCJ;c%3j35$CrCB(8Le z{!qg;U@6=Z>Zdb8L&*nb3gCQf+5FbN4()uCG5TF#!a(A`cXR=_IC?u%la)klT}J+M zg7@HZEdBey(;v);Jej2TAVZYI#%`5zdg;iDjV$3p+Zk>hh7kGdtf>Eyx!h-Z%2}?7 z)M6au)A<2Do(KgV4kV{cNp+f?v4O^*cg+ru}gK zTyA*dx&0g55Z!H%ELQm;{X&MJWk+pC^IS^b{>HG{vOka3E>zfutF5`VSq995iI$_s zMN_*i`0f%P*UZm8Z~PRZhleNjeEl4{Q@>DEPAj$$I3)hLIjJNK5aP|CNV2OxpI|_F zY)dbLp;TeeH4ZN7kjY?t-$|?V0Xs0I09S#pg^-+~b}7zg9wCwTc6X}>D5DrqA_L~6 zmfJMK>?}?Orlq+ws=xd<(|2`hj#Qn6CQPR}kC!8P)@lxZ3@x6GTL#MdEJ+>c-z8 zMNGXN&)7O`!@L;0rJGDI(dz#pB_$8lsfinDpSkN3JN?yqa(D1PGiSfx9CzBa=wKtw z`QmBb;Qr%pt_dCttxW&-(~i}D%#=mB)Mgyx5|i*U#!pXcL|h=9wkw5xHsaCW;%a+? z)f}KJr1-+5mDhCU{(8Sp#2qkKq+kttJ#Bkb^IphpkX9(ahv|gzc{%qO#5+L4R@m(a zMEnLQP#d)Wh}FIeJ2!h8e7g$W5tjfMPHztjU*^1~C841>S_#oop%)lokKA-C`*dbK|s>k zsCQ)&ermthdR$=m7{B{Qi9N_XV3Mfg56)952C&I>zDNVPnE+19%3Q&oi0GtVSA@VBRHWZm)bx zrlXX>9)1CEZcS4tZPUBk=sb6ppuc58tUX~jcjY6i6umiwL>Jr80r?;DJZlvSkPw^4aetqcC6gB zMM_LNT)%TjE;uN#GF z=F6i7mVeurFzd$u;T|T_IjC-G5w*KRI%j}-wpGgqhPVpIKHkafOM9Ub9LoedmrL-F zY>uww8ONt&Q{Ws1bWtZ_!#VpxSC>3Lw7TNmbCf6bsllqwps!*bTm6Td4MV)IADxpu)rKQcYu_7JM}(j5Lotbf$SPp^b9u);xjWQ>NC)>^7i zKzNu&y?}zXI+N_zImwe}KVERsrw!fFt3&_3ny|24*%S-=**JNd#TFDs+B3WOA&U?| z*h9AA9IJ|;XbE#?t*$k@mF~g&H+$~G@VEH)cm;qCd+@*`@ss^u={9`%^?*m)-|9U` zU-KFT{SNSydY|qYSNuw1>2Lk+korSnjW+w4c|tq`VQg26PobtA`GDNk)oO;g=nPW+gu1x++9)J`c$??^`)4u<=tTSUJF z*t>h*GyLP~FNOAEQ^r_i$d;OM6k`r6_C_!{*1iIo5C=)qg>-r37xA>xKr#iWT)i>x zOZK2vSygW3nt!%YuH!^#}+l~QF8$8w`qfhjI88MK}iYPWJ5GooU5y)Jk}Ytb)miMgy9_s%X{X_pzgYMcbysIq9WAk#A96!qUt+A z(a6+yFIXT|q;}e2OZ_9S(FNFig3SAAA<}-Fc?dYd`%$|sH0%;H=|6o~2n@x3+>L&M z<_=2=39w9@8?}m8J7WYYfgfWNX(`P3iqQBW`LG9gCYgAshCkHZ^@ZMCd)#@1Y!mZM zVn6}nQAbN*pP#WxuL9n;yFKsAk^}!yg97(#h17Fuyz1^s0>hpo7)eys(3?hr2H}-< zlYH4E4wGQB2t!5+%)*rJ%x?gcBy;?TT@)Vt=SF83`&JDgDa$j~5R3tmo8f?Z^_|_H zBS*9bVZCLygVBz7@OSF!SsT=sD$l>;P1iQ~Wj$tU4c$RZD(mE{u!F1}zC(TaHx`x?OKtQqNiyRExbwhcK||35RAqly z6NI?EiUumn{=C8Y86f4AbtY+z-qcdfDl%=dH|&W-LgiWFjtB^6fi(+r!xSCkq%YP$WKU&U9lTfX6M{PcKAsbLhHx zork^|rma`p8-$=0Idi(H*MA#F({Gh)f*~8_;)Ofm<_i&J)EltSnMbov_GP*O{V!iw zL6GwTkC|Az@6S_t4duxw=yf7Z)X zKhbnZYU1c1Ig2ZO#n%vZmD5}!%?48%KA>DYe8&t? zfxG_OIw;b=z{rXraIdnjX+BIvPMc;(@OL4R-`?#!tC9ND?oIJM^X&|WDlnip(J;?% zwy0(+Wfq0E50A7JdTZcpM{U0@_$#MWvn(Q@ayNrsu`BNiecNC@uCwPCSBWBjd9i3j zfXz_VKD?BDFRl>vVF^`_XEyJmc9zVKfwF9260a3&{phUnc+3=h_6oce8h_&_8#AWc8`EfKGix4 z-1Su5CE4(DJS$kC2)!{RnG3-%E(@ER47+KrDUOK@FJ6V>CuTfqehrv{BG$N~Dnr>8 zuD675cS-_i1K1cW^yC;V6{5OmfU|Zyf~fW;KxSB`IyrGt$Es<9@%NmO%igb~f}1S= zmpNXZ^hUH+sh>Cu?l!is+oyxg{SAxxOT3nop`_{@3b?TTkC*K=LTXl;*VYaPFX^OW zZy&7pVjgXGEZN+jLADY3a~)$aZQJC2+xFBCBst5|9&n$;vY(kHEudVD_L`k$gX4BQ z8iGvgdGEjg!9QxSBivM zEW%p~@xz(2J<&G;ua8i$6AaLrrMRea&+5(`F~iudlsFfI;k+Ug5lP5uCRZ42{y`PH z9v3T9DOa*Y_ZHcs^7YkgqFneF_Y4P@Ga3c>*V5(!Xqf-f!*ke6Cym39j8b1ZMRq-J z;|}epiC;<`s{)#<#$4Yw41Jo~sAnl$k^VegTN#Aweo`&iX~uthB-_yX_CcK=W`?Kh zQ>-w%hy`Y%UJ&=k&Mfm)4*+Q;ky5yH!#?Ap0k5c~sMA5qj*x>iNX=r$;V zgPMZan`xIKzdE-F1-$47!@kKFgvU0VON()x@2mh12DZ!27ma72MeO$Jp=NN^`kthp zk;Rpy0fU&+$xcPpi^a8UB1@^J7~L2-kWS^R3JO1a**?gLTd0wqO)5GBVpP7)3thItIshJWaSCLJkQ)WY*5|E9 zY=u@G&{?X8GZy0E@_l83{JXMF8&}&?SD+p% zTJPzg!H22XNU*)AeE~;c{?R7qt1lL)g!6eIn z<0&!hAx44f(SseHa!}n1xg0RE>w5p0gTe8cUcpThE&y&CFmVIkCpk1F zDfGBXfyylx^#aFOQg$+2kB9aZKHL{{=T4yTLz123;-a)fd^e|vcQ6>*9$Wp{%`-$G zjt+~|myM$^DX#EsGd&QzM!Q+^qct$yCWgUA=38K8KE_V z^XY5g=%+?-P#Q!P2hueOSW*p5QOnxo#&)n%m{5Df=1;DpW6{%3G;3%2Vx6gF|Ct@< zL3gqL2Jjv%V?f|bowDxzrmK-?AoHFr0{HNM2ACZ-zi;9P9cjV1WuA^78p~=;mE)+G zx9ADv94z5l+E7e>Mg>2|wp->$UxF1%^qqGaD>k)>7PH&Bskl0xtH4U?e8Sp7yDx@4 z0*?Lo3@87j{gszBAmaJ=h5a+z?9ZH90xkCNgcfRLyjWRdZ>*XH5&8iLoBGtjNmlk^ zDJ5Hk&fnhXaX`;{CL7|lT{cVL*v!KXz%r@EwvXb~prwO!c`( zRc!xX^4;t@trDOK{>+_D?0X?VpHbVGwBk??J`ACR$xs&{=&p_OTDVQCcCeJIdRR+= z_sAVj7dL#OVXtWuJv{aG_Uf_pNgRfD1e(!kUrPtSDtolwAg|lA)GR$y9WiZ~14HVc zOzn{*C!*I8*nIY4jeua2WFF%BJ1z~aAeeuCx(5C)tmWj|}` zOYqSQH$_baBGCSc7?Mt;=mi~)}};vL#vHu!j69(wRmuteZWZi=dluS+K` ze1bOJnq+HKPzRuK4?`wNFiQnw?f)+Cdbh6Vlh4u_E(2m#Lk3y*Hqdx|3Pc0aB^?Uc|!xui=a%`IO3^+&Y%|ZRtx=JZu=fqt}kt^N9A?n39f4-wpoyYEUMFL zw;N+MJGt|HRdcFe4wTFSZ#`W6$ck~fB|2Q0VngQ*6?LJxz-tU?rj;ufI}_45uA*o2 z3U9b4+}$?7opQyx&T7biK0@;+*FJxyz-Ko#FLvFM8$h_Ix;>Uof89~o3}vy2Ft1@L z#u~eI0wglxZ=11P>*3AwpMiLnqXN*p9sn7FZ=r&4WsC?*q71uGGu}Co^PbST%wfUh zYd%yL)SzzdPT=6>QM{}&3CIbo31F=AVGW2KA%+^9?>YXl%}j>|>EJFCmwOLINDa3G zJXQbXsII1!`$5{JO4{9JVI5Q4hV+cbR9?^C%5zjVoH$nYyHL^|xMTNW=0&!-f?XL{ zJTbv##0x~VHZw(Pg&#;q2mNzo zb)T7SiR@8u;cI0xqR-FE()M-i+F?y-0+yREcz(D6dfTeA-4vD^8RN=ciS|}5E0fgE z=!doW7>IP)_@e=Mc+QfQ6*u@ObF%5O#ruFLVdF z+e9dhy)9=1Zd;2P#ZyxRBO@hO8Mw|R!M-K{B36Xcc-6|wsqK`!W*NDzvI@V|Z3-hQ zzw(Uh#)DLy{-=8zx0s@X`7>kWZE1ezgHA*-Pnf5&s}PHyN}r*C3Z)wQ@bEk1m<93x zsVafd&FGTW6GCJ#AiI|smrQ)H6fsDEYs~%^4Xs2|TH2_or%8buA*}*zBuD-+p4NI` zFhSClZT{7GD#ufp#|U64<%nNX=!Yc3jwv;4aBdd~WoD#tns`82?$jme{gD=*30gP) z7KDl+4--K+jMp8%M;^6PdmN*v9B6%Qz|#|*=?a+oH*GReBnw`WB0QUDXdn9q`gY z;CuH|IvV^f#eBWW)->R}l;%Buy3%e-%hrGr*WP;scztIv_q#Q<@}!>1RXJmOBfUlM zlm8MVaT0v5jEtsS=d&P^Z{JsjW_xUMKfnBZ-Wb(8l2*Wb-4NCgf#gORQtzW$Q?xg%eAm(FQ#W$ z(i+?&gPWLc;Lr2}`6OKAr{z%2M)n!_UMueH-w|pG0xX1j&PDGt=iDB)CP+Tgc!p%T zcsBZ2y6^c*&$@>oBlvndv1w}xv+Nvm%RKwAdSU3 zPX0Q@y{0ZM&CR??$R%l~MYk6g`gU|6R^gu82@5_4HESHtvQ z{{0|bB!m4VLQ?oHQlj4_J3=VXS#!_SasLbiE>l+@P_8oV$AVU!U0tOs??B-3C$eTt zfYv0(H*Y!!Zq@2u9{UDaRnk*f#ITwy@YPsq#>lt&dQS^S&X8hCqVKZcgph>S;V9tt z^R`A+*S;kS`-SPXQ+cbwW&pKU>S{S@9+ckl>NG0-L_FcAA?gvEGvEu27hhnt$~_oZ zxC*@dtQYTf)LFqYW?y)zI`g7w3tuD6~*14OCWE4(&ulpabs?jIhU`hpjo}W4VGWmh1NbzDbs*YQs&y9w{JnW-{)&qx{|b z?(RR>O%Cd|0D9g`%uV><>~>MHs~=Yph?A)ji~DzfjxyjH0N=>|xtMf)*5vh4L^=Mr z9Xw&0we5H3hX>GGeEhMh)`<}66^B&jY{(Ke0K+?-#P9I(81-bbY)duJI7Z{>hnSTN zMm8lh7H5~V-cE5= z7GB2Df((ctxy>_bl<~OGbi`?=h|nvlHf??~$0}*6C^9YpIj100#;qN2In;Wg6s&PE zG(U%lmIW^Zqsf)jTzZ$1m$GgvE|-d^nf5MEm4Pv9@>Nn)rCr65fMD#`SzV4T_N(Q! zgL8&4Ezl+B)3;#jh6DlRs-jqFn&CSmA|}akCL8_^#Ei0o+y=0uk0t#* zB=>?T8y5$=u<0bJ+bOH z*@BCE%vFqbh5s0vM@*Ablz5p5YQxpM=2Zf{R|Yzk=*)}W#|dszC>Qyo%M5#1J+1&x zCo<;SWcINf7JBOSfA@Q(zIs+V7QPaLtU1BXA1j3C;j^|WCo@+y_jHchS`6w?f^Yu~#PNnoK48<{Lbs!F=O_W|$&S@{G} zdw1bGSt;)KUBwP*NH~{hqD~Kf>qTz~6z=C!>EgZcq+5 zCu|PcpkV8ibXqp}-i4g78u3}fU+r8pTY?qn2Y~<_fIGQwo4B*Wx#kw3asL;H1J|kZ_ltEIkcl*Z>QPSz2*faarlb7fOHbsb^VB0jR~lpw*Ln@EIWB zjhnM7IeUuq(Rxs<15!tg!zGkMD7WokT2mFX*=b?Q7+C`j9YcJ}J%k|5fh z=gI*u!V=eN!}?}H2WXs@KJ}s6kYM$~kuNi}m?sC8l#8;;P$gSZ38x+3_B$dL61S8z z7$!bmG>ARu6@q&1;DeG|vY>7~R$rvP5(f4VFqGO#j9r_=k;U~6#T2X+0_>{BG7yn+ z?m3kIb_=u-c0F$caTDrDkt9DNP?Qb49g_0WuSPb=r{oy1k|LvT+DQhF{szMfc3mdy zYfHv`Xj(lWa1W{V8(Kgq;CE8qMe$*Ll;HX#6Z2#K0(&HnF&Toc1_e8a1uK@f z9qD;1@5|=h+bDkZnl5nIjCwz0|3496_fnauw5E(($&99exGTFu3k&0dGCdxMXSmZ) zWFJ&5V?s7V#9A;7tAEl@9(o6dC$OQLSX6q6(^blQlQ$uQe{B%R(s#C>Y`FAh%Ec-i z*Fc!E!q941dDst%aa#0zVxLEs7WZ=m+U+-;roywIQ@TICL-B_g&R^JhTLxvL;6uVO z%PkSFzAcHCZPl*kIq*j1_k;b_YUxpvBFWj-ow~c80GRX%UA7jN1Wa z9NBDKGacRXo)0OKsjwG=qu_%lh~&Cd{@$FXL5l~Iy1{-lZId?%$>QtEBg}Zl28p8W zax_&u^Z&)GzawQ1xb9Y;g0Omj?dja$=b5MpD<37lr_XKlaC z3As?5Dh(_pk3^GGW~KVkfQGh_x@ZpN@nO7zPidFE@!C!khIji-BNs=4P|d&VWnlX* zw+_*g8Ys96>mw<^GQ7Ym#)){gLtdF3+JiSvflF^iU{7^o6 zA@rOYm5W?1a8+O8ZoN_O+htipwZi$SGZ5%eBdS#J=YrZ75R+@<)01p*+=?3f(GDqwrS z&Bcr#Gxs&vl`sMtGePdQwAIcs(Hn-Hz}mS8%8F=*BcACw91wQcX=gDCPEyvGtx*oG zYhke`f*z{Yi8c$;QE`)hczUy8MCl%;^vwn3?CzoS(}E@|99x(Xl^S~|)>?z5L%7}u zOyw-j+>6lWsX9CBPoZZ6-gam<+Wsm@Vt}zpFFO=|yJQSgfR7wNcOm?0W;BByl z09d@~$fOc&X>Zpmq#KW!vM0f6f63v1KalJ4?McUeat@Jcq0PD{^fgMLv zV0||XfB=HkxwqA5E@}n1wlvSo44kxGpf{Kuu#vhy0a~C`!{v}*HS5yo3PZ!P0 z0s?$TKFX8BUO&_m8+7hh&@;cQHSKo0-!0rUlrnvu6_7pp1;_=7zV(xyq7&+&?k?-e zl+#SGA_;3`T99r716JJJicrF?oEITed<>(0RUJkB)G@Pz&06_zGj<9+u=Nh(1pUwD zdX+y4GU7w2r(rMi*!B?=$kJOm78x+Z{oJ19T}fstA^AkSt&q-sOspp0Oa2NBcI8HD z!c~-JJ^mN+P^r!sD79mva>SvFrE+F{UXu{`oEdz{W~(s8o9b<^0C+R_hn|~4Xf}Zb zw1JM8IyB5)s8YyzOQV;2SD&JpayQ7!v`G~p8H|uuTu@daV9?bd02!A>%FPf|p+R27 zZAOr&uZ~?`gV+H7KLEhZzScDS9zZab?lTttUi>nh8`HZe^0t8kK1&8_9l&3F$uGEE zJSy}v{}6#0G(S`0&i0dwp+~+Z|GJXalT7dauAShxb<&uX514_Z`CWXs)O1h&Y?pX7 zB86!;YL?HVi7Oa*PBsN0uecs!Ub*c$r$&2 z8L`A}wgsPh@cHMFhB*{-0c~h1*AL0L`IRF+4|>N}iyuf?3Wm)3%QaYP^khK1fyAV{ zX14i;)HgbIPy;!=`gl?nX9X)~BX~SlK4&M4QS#QcYo1`OPg+B_3 zVp8xB5^~4%r5ehoGeLgGgUR~D>l$rdf2~sMIiw%KnY*0h8=58ZWfCjggS((dr6L#u z1vwAHs>HD!NuksF#X%peLaPICS3OIC;F+5(&N(`ICjGKfv&RV{VGTd z+qlgQq${=%872HvJx8iJGZ8@x_Oei8WHmC1f1*}f1@|Ls6ymY}LzW(kZ>Z26Z z{_3Lz&}Br&n35qSE~e)Yo-yXDSZu9(>kbJI=#znZvp6nv?(>DXG0Vt2vs?huZuf<;i_yFRcVoJ^lCr7 zajFxn9j^)l-;gVQ(jpxa|K;>giEtY&1S^8+_KGV|3E9?#mFEd)Cl$8HVXmLxGjjLX)OoQv5VfFjd{&JZuYP?UJC{D`^KO|%zsQUpHN?vtKOPr;Yl2$9&XGwB$%6)!g#%XGu$a^Vg$yR2VzZHC%q11mj{UatdvuAVGJe=#BC^e)z z#~zpC`AGwfjR+$E6yXMwQIx>$gwdNDCRxPe?krEH zs|P)-bx`!PA~7}bC=sb?OzVs=1DQ6wN1t#zW%V ztioKs;FqkU`5ibK%+hpeBllNO07;mqh1q>S;A(ua^wHS>V2a-Lpcf4{En)6+)yeFX zrvNI*4Csa3bl*_Rk+OB*Y$Pvtg^eY}s{O(oEfFRC{u`Z_ zTaDdxFDOTUMrGzAO+Xx>M}A6d_)if0M_N+9F;3h_rQG_8R8KUDILlJ%G3R=}<6UWI zft?~&H0{VRP`3$%YWc?QKjTRTC*m9{d1@Ya%yLgW!}1Ej0>KRWCg(=Th&ISA;U^~5 z&UhM6}W78{+&b1~3GI~X~sO076%P2YUts#_i4EQ$BT;-G6@^pr4Je|&0k-quiRL^gXKEV>$5wl0m25% zk_ohZhc-!QHp?)vzq{Qvb3wdBX&6;{hAVuXLnY1cN?*vp>QhzXpCFVv%e ztM}6zvbo2~-6G!KC_9~HBLMnrs1k3L3DR{jRg@V$Megc8GZ_#@bo%!cG0c!Lu@@|o z!rVxGpyn@?JZJYRKYQ%S;!BIWYsJjfJ4#nw6m%V{J*mTVonIwLh$ z#`0HHd5%;9n?iy2Hv})@bDv9#mT{@`Nh3XLh3PA+u0fojSd%h1} z+O*B5h9zq=Srp)mB^CoSxZIgWa&Y zqar-M$yXG5ZNW&K5%wOg$xTMMFfuvqxvekjeBzvjRMd@Hiz}RG#r3F&f$aD)@oo)x z0^H+BX$<;>FC$!gZ{=|Pz~=7P4@EU~s|1sY1|{MF5}zk99i;Kj*D67$A=QadScx?g zq>A@dX)F3$sV?J4+{Rz5&Xgx}kW#WHOPHDk$(vQ6$h*2K(gnuvPci+sZ1oluPOahh zv2)7bT;DOt(9%5;B>L?9G@M70AZ_M@L+&yv(m7&6Am6K&rt(m5tw!r`wl{UB0Z7!L zzY*(ewYq&?Q0eFFPpsEY1u1FaYvs_&+5$QAZJux4fq(n~t;U%f+dN;-Z966SPtuOD zjge62^g#X!R?|hG#`#;MByu!6*?lSs>-}LcND3a*dwSO2s1AdX5NGy~@8RIA+ffy6 zQ;l)Bpz)E{4%!W~WEv_He0>GK00CiEAt)pZ@F2Di@2|)Ii~KjN*KB7P?&uvvz!b^T z=r@xJt)EP)3^uy|{_>$hmO%X8Qx#M^zd)F_nWuOErC~k3<{2*J=|kOeP6*Nsn5qQ- z!bJtO#s%t>1tXo6pMHj+w%C0H_9)QN#U0dcdEu3RA;z3m@Q2={>D>eg^2PtdsyPV( z4Upp}5DgEu_g%u!Vull<#J=+dZ;_5T^W)I%;Iqo8j*jSttu}0EPMpU%nZ(|w{B5?- zYkWw!9k107^5S)y&eDIZK{J_W&CsTgvGmGMKu`WPTNUYgL419&ft#|YyaE_kV1-F8 zK-R8f)6O$foXyEZmhX_5Q)j^4@p~AugFI(Y*4rDepMDCQ0JB-%3}_xNG!3NPt1>i? z@1%2~+g*}l6_o0lyv-X*>fkLc63~L$9K!JG3YO721bW6CKe`Ej<4>5G6OJgeoykHu z;I=l6k;AL{(j?>FP?%W$_o661jjYRLrrVuR!=7G^JP+GXamcTl`~z8;Q4yGtjG|MK z2uGb%-n2EQ>4S%kerLV}>H5oT^eI~9$_xG6W>mB;!-m4Np{cjR&57w=I`yVR<1IpV!3%?PdzqO+#1vL)J2iz{f{L2S4w=?*Y ztf4tLjlWZVDk$NMK;tBFv+ur>DwHi2ZF5*E<&%D~hy=_hZij{g#FZFK0nNe_yH$in zeXXpnU$#?VkeZq;Kg@#xR6r(Lr-}04|KJ&pp6l;saW9AoQb@bxMtE;OZ&h=rWudsn zT;+(vAjTm}TW4+&(4IKP?A(<>U=N9u-C%8m(w;53PpJ(v)X6LGNSTIP;!_#=vV3QT zk#}4)tDSkAcNeP`3k3m=YsWL$r}6^pi@J0a5`}K~4A`*}8K}xvcW8Hn#eQ;Fy3`&G zFq;l%5(d6F)F7V%Ze^*H<>e8K!#;~%==F)n4ps81jSww%&Zh?~1vK>26A)g?6)Gr~ zYZ5**MFSt$6LS1m1DOF)Y|7joT{>>!nVZf3JI--l?wWnkoLrVCwh^rC&we4961wI0 ztTQ@wH#WN+=A;$OdOEgVVXR7#PP5LtqQAN=fD%EZ&E$)QTN?hi0(%<+Ggf=)E!*V0Q++$-G(XlD8kiw^tQ}qw)ijxI~p+n zHYc7)Q)-_-IQNX(wdb3xm{RAzRaTn#($OpfwU_}1ihE?sE6@5)Pj4c5Phx#PR*tqW zp*I(K3RBQaiAO+j+~aVeaHgjYhY75@q}J6{d`lOME>m2=Xx0TrJ|ZAESNF!U1n>p1 zl6B+&fB;(%Hgm@Iz<+cWCireZa_FD9IT&n~s=ngV5!9#{ujm$Jr1s7!(bMQ~yt88S z-H&t5mSmNE$K(rlAH=xSilB0@pY^AvU42W01EASf>^03-B`;-XAdyL{hWO6_cj+JW z14cE|VN?O5foW%G$+YdT;l$hA7U&j9#c+hNm^*aD5X$$EiN_@afR27T(Wajl#>%z^ zlX%E$Rz6yP%;RV};0;f)wTCsU-veqOEOd;RaYx5jHBOGuA6PpY(UwhG=3#6n0G)LI z>#23Q*1HN9(LY)+s_IxQNwuUelI|0BZZaV4zIipCo^e~_je*#9i)x)oQp?XxWOa zXeZ2)<*?iK@v;`J)%n!IBA%3@YnN9%7ur4 z6Z@^keVx}SCQ3jJ2$8*`WrgS#?AbB9f!!o?ha5Vu3HLpQAjc)Ac75zder-x1g|$(Sh!qUSKH*gHP+S|?nN z$x?sZV;s>t1H$XshG$v2d*wBz8iBBPf3U5+H=L)UFROf`O7Q-N2uPO^)E??aAGJE= zn?|$A>EN$zg}SBY^$Y(=8Q>mjyPSqlav2I{!Gl>dj1MulDYLdR zaQeE?=k2O1&l9-L%^qq9i^9egdj3$r6}reSO5=z7zfK^TL6bvg71!{e4JSzHe}oV8 zi}c5}abQQP{6wmJZ~1c7DlBJZ)#m;GT78_45zTZp4VeAOyL8zvb9vy6yNUW-c$tYo zG1~95YUUR6rzD=yq^`^ehKJs%jl^@+hE;4z)>gs9f+7f*#gud4gAJo`e0^iRydMft zJP8+#95yl$V>j!h^3It|azteu;``UWtG&t^X70N$HotLoItDLYCeNkJ=@~FFlUGs- zP8IO+m(#lFBD@)5Vk9PL{+H7nZGSX3_dJ8=F9>k3@ zO#SeGWu4KaueeP2Ov&*o0!2a%x83pPbitzL4yo))uhJ~|LRW4N`BV{vqYAwvQB%c^ z_b15-YdNG>$^rk@x_2#O-C;j4#Vx2%&Xg^i6N-A@Lc~DW3625j#7GTqKi=Z2@k!p! z>cYsEMil5)$?i+1&S|>7ixtK4o^p>c?7SQDAeF|$VmT&$Z7;l~;_^ju2yZD>?DPjh z=snxHGU;ibqzoepbI)RcizE9e_{IS2V>>qE&lLJn6ooy_`!^Vd zb1>~lSgEK}q{;z-Oe&+J(0whaMI8p=s<*LqC;bs-uimtfCpf^PU3(cFYxtPuiKXpd z4hPeg+qevGys<^x-zphG72{Rp)roXEsV>d{%r>z~CL}eil1?Gm(eq-}$&)Dew#%Xj zO_&kXUv*oM6PTb)QDtAfFUYZ?BLnPxi;%Q=5_S^77~y28YwAbawbv)s{OCG+0J%<5 zGwic6p>Q%;z;e2sfZ(BJY@s6{{zg=4l{OkD~zs0$fngW=|m108WyV&zO{p zmr6sjsQOj_BB=te4_Y)CcGPJ-`JWcdrqw1xYCxsz@>|zP?)|JtLQsdp$J2C<-ln_F z@2!*Pk8axeOakjM)|@h)KY7~YZGIxN9##CWj<7J;+Ec5o=DEq(so)C=+MhVv&420k zrUc>i<{a1(D@V5|dy9Csy-YbLZ*_jHXrTZBg&B|G6i9gCvznaTWeJs-Xkr=+sff+54vCvd%@!aS{iAF7h>GQGtIn42R8_#j z$gq4x+Z;)^raK#nS$T>s{X#2fv!c?Tv2*<$!(RZvkm+Dbpy+8sTd_|aO9CCJ6EC1E zy~<(~`WB9>+KWp_o8!?TF^Wpedo;`VOyfmN882PklaJvI1X4&1OS3dJf3D3##rIu` z-sT4to16BOco;ds3*JAe^wVpz>R^{(91xt;TyOZFbgraln&X_V5TPGwt*jNWQjS`H z&mvhb<+_{WmQBIl>xWtpr2-CFhZ8gwI7Lfj%wFMadUg2=@Ta?@?#&c5Ic8lKA*AOP zW!ViqJO;MzHt4{>D)JyjXnI_KZPzW>)~eWys+4r%Y63M9$M_B-_(;;9kA42`x2-;C zrxLftjo)c7j2*&COi$XkR2J;7&pLj*pUP%DNJ}!fmC(S=w!92#BTQ?jmQ>aalF9De zUJc_1IerG#Yo(mN_KjHw#HfO+jxtvxFA9Xq$Fhk0WMe#)utB<@Ady+lzD5Q>iCiPE zj=1zeFC}q?w9~RBkVXDvg#3JW35PN>K}UBc^=3@ej~wW9ZC&NhGvsJpR!5~^7O=ID zoiG-x$Zco5hFk@mNKgkZZw{) zI)z`~Z#=m%i{Rz}D+1o2rrtDEaDq{2ibIN-_Mad}^CQWfQ7qD>ko!rvAi-8>b@k8s zV%AqwcUAuAQ|n;B!DPi6@9yHD>Osmjgz-abhkgc!tW{}%lnO}?c7W-dOl-n&K+fx7 zmtVa;+@>@R>E&9<8Rsstkr`$^Hy@rjA4Hz`7t~4_iYCN|_40;s-{n7Wv$ zPqQ+-1U?#7=>o|5@Z96_hJOofNHe1nxnemJefSI0ZM5-ER*Y7VkNC1*lx$}YSy^`pikJKk1sw*B+-lAC_0^x!X2xm17$ z5`7w}@h|ZZb(Vab-tIHKWZvuOj5^*h^xeuejY8th!d-coRQ$9$slyoyQ)2r+eaZSo z@8*G(v0&dd`DefEuw}YSb)Lgn&N$t+nEVUW1{%0}3QQgvR0rUsqRhBgU)W%LLcQCv z(oio=K&8~b(uNsx9@%{=S|n(*O%YsJC=6Kz8lyycm062D0DS--4A0jX+Ls&Lgnh}7 zJ;NnU6D%V!7&=lH>##f%Dbq zGFA*icvC@h5=@Fo4gY;xPy;Q*&5Z%@Y+i6d9i&PdyRdQkz+iX`NajNx!wQH`s5oIZ={|U}Q z)QXPN%88wvw3PTV+-G)4=+3w}QUW6PrJ2Dpt)UzO?=9*CB2U#M z+)J+FXGO<2fi3ZiMfNv4uZl1dx6u`o{@AUCJ6zq{>p%~{h_Pkv3VnIrIgk@{F|T-fmkt+bn{Gq3 zCB^~GcPM<{Vc?X5eu$HzaCT=`y#k;y<;J`7@MruseF#bx#uiIvW%@z=9YXZfDwjsj zDzE%waUAzs$ynR3aqg@nNgh5QS(O!8ypf#@cHa9e~mzmBt8N*S#n6_zyEW?8+P-LR$e6J6GhKx(%w09oHDNi|VS6pujs!Jk%l_C`>& zbL(n1;DBO>E!ZHkOg|N*5OQ13>CkEM5gb@gUpO!P9$v#xM_~z8Jz{#1thYQ9@aknq zS7)PNaq@~X>TG-+x`lS;ijwVp8c`-TpycNRvCY5##cJYj-s#R2@M+iCWRWBoU8pD! zbk0f;2TOM~f1A+q6u1381C1Qf&N*1pBHkYfY{Z3A0|@n7LVy-3I!izHf2d&Quek^q+?ZZgQML zNbwrVotsw6I*Y7(%d+MxS=!1Aoh}|d@W$udg5PD?`mz#$&%1lTeGetZs2rO*>cpcn zPtuAk-)Dt1E_L9=Z$T6@*(NV?t!&kBnokR8%cckm$q)N2_z`i$V%{zl3Np`Ule>F^|mPozzA>-SwZMEQZ%| zK=guW9>dBZOVNANLp4%^h56~PZB?)qoErB z&1@Kyy|Qj;FU9MIMR;D~F^$ysCLlU*{9eRlS^u1+XPV@tm$J8eLJ1k|dpxlPOHCH; zA;ii|A1#xStwL+W5QcBO)7lgCe(M2BfHX{{3TXh8FlY-g8kleCQDi-{?%4HExM8h6 z_9~=RmMH3CyGkrvNlMo`RmcZ`&sGx5Mx8?|bK{E|z;xPMd0;%CLa658F@wnmU`(z> ziorwVMa|&}Ek5Tj9od3?ba^GjOqH*}IL-QLk8#saZ?*OZ3R8J{nxpm{Jcm2x8yAb6 zRcX;2uu(KW;1tY?^}fA0Y0sOS&Y;XI^M8OI2G75sZ2xz`X^RLe|NlW$_w-Z_m0woN z1!;pu2Y0(c7-`D(DWe=)q@7De23RxXYe1OJ+O3DzJ`tAUzYJXz2&C(1YcZQKX#6*= zb69pXgId5d%xts0)<5vx3A4wN#g*mPG%HS)DfI$J!Inj0+@B?F{~^|6N1P%g;8bEn zH}QTKM4CE>tY1l8U_uE~_zrQe2CYrC;;e#iaYTUD_X2~Pb89j30~j99q~|rlDRSNY z@4yh;yh!6iFCGiSqmvi~lvib6z^%jg@cXOOK^)1y%uYP-iwv{Kp3+^Xb-2z??vaU| z^7H`iM$#o~fKXXNeG4y$g+2s6piT=3Kd^4e z;{Nxty)djk;PuoLAt2H&r~67ksWP{850J`P&nTqPs)=w^H6UZh#3tXHX6 zUhRGB5SlakmbZrSXyv;vY9<}t-&#R_xtw00050p~9&D|o29S*+L5$osAxH#f0Cyr@ z3e&-i%vt;Ffuj2{OD<`$0gxX+$i?vxz7y3w@SWaCFimYVdMVJxQF!JAcgX?m1D+dq zLXz|$=T-;`dqC4HR7~hNz8D~|r&VN|5>TjEo|^DIT(#uDvOm#7y(`i?(4%Dnp=hUp z=6dQTfoh`zIf*7G)lE0JVIjxS*|1VyXXrVDb&bfS&bp~Jw7?(o_(*-5-Hly5yH`E- zH)E+}&_drZcMNtO?O9eIfWX)PJxLcUyUlTRbLF7NYi>JAm6m-v;Z}bj-1>d3^|c(m zNz3c-s-A{2HKfc*Ba70IMzBfd7-gv;nYh`rUB`!5TyYJ1(=9RkM2t=8AY@z2%W?*P z-xr;1)a%*8ZEYq2#FPtAlDp;!y_IzQ`S?XtZ4cy2E7Rxwk9U{Al|*wSqYi4=v$}%w zdtJZC?eqooVR728R3>%)bxzY}w@Itl;04^FACS`7#v?J)GzKUOyx@&k(H>%4NQ0l3j)u)C}Otj`lNRi#r%% z^VZ1ZqB(5N%c^zQZ(Sz%`T)5^bt3<`$q%Sgm;61%&i52d-1x&7MwRSW!8dD?a1@)- zsm@}TuN5jwYDp|TW@3os64-YO;lPUB7tCmMkOtJh?7ht^w#~X|LJ`1SL@19SggTWZ zng{D!>WA9sms{|>tX5&Kq75hbZr+G!3lcajIBp$&Lx++X#Fzc(vR*(bnORj?PO4@Yiml(ePkp(r8^8W zzsmd77tCiLSmNY+a#wNZl3cdTF^_QMcIKXgP+`%J;TTa~)%!OrM>AgTPyq|`zz(Xt z)};k3SPVt{LPG1&`?uuFuOP6QtR6MN5ol#UB9h0=>kx;Nt1IV7#pqYig~aB}4ZQ|d zqjTA-@b`kjKZ(F0S2!9|o z*Ufzi7+`RVY4?pB7*Ea=MVXJ_t=PSLR9rp1EbI3?9rf~;zE>_43{Sgh0g zHymugVom(ZtyI5J6rk>j-+xYwin8x-RoO&sUuKz9k+g>J6pG75HswSi%f>tV-OH)T zxBd}@_zNL~LQao2mY;+KwX_v^D5L2A5N5MKhC1Oan^AA*Uw-P~~8 zlep!Esd5FTerH)UlZrcqQcs7@6<>_C5)G2@zI-M;)ikSY1U@@Eq^*FpFgNDYg>Oam zy$(ReSagCK>JDQl0-@OMqo`nnISnB-Ed0?QC)1J~kO_1Jft$NY%kRRpiOQY%qTDNf zp#$AgWWHWVnvSuLU<$U=6N=N5Ni070a+x&SMrJ{9S4Hc-1BT5DBZy5z+JPy&W3ETF zSH4D)&Sb~8v?mvH%$xSmI}%vzu*aA*JB#OTS^L!&q9 z&`XOE78=_gMq2#J_iZF!kt}PPf{~!;>xL*q+E-=B%z`4aifJ^Rb+>XPdg%(6)2vEs zVj?RJlCb~%Tb^bVf#BgDk2sW}Y0}+{wGF35H^GyO*rW1JhF7NnWtSl?2o8m;i(hcx z9{C5^q$&fMjZwQ4xx3bZo~x_Y_@5JUPtY(tMMkw@(@C36mp-g=IWzJ`xLcx-L#89U z;8ZwkuzoTD>hi>)MzZ;mW$a-ViF71+FuOT+K8oVuX{H3V%wyX`={avkb}#d{CdYoh?oD|Uuao7 z({ca~k9aBww6O)AD#2?6YvXVM46X7J2wkl=Vw*xXdSg~xu`)Q*u}a~^B9ms)+bkdA zg1Gtzl&4ktp;7ukI;a9u{Snl}9hx7mkt3)9PCuynVEQKCjrS){gDzB4rqqfCCVwXp zAG@Iuje7*Lq~2SrQR=v$Y2o38n+!9Kl!B$It(^tPc_rNVYpzzBn{55xk4}qWpiHwO zyf4s+K&aynIF9j2nZ3bS=NCp%8Di=-=H>q0=kDkEQMI)R#~ovkCjbtZ5p7y<$g-7J z&;&O&g4V6wZn-D9P1<~h#Y>dcJV2z4r0YKc$;5tbL3inoA#U0Ta=I`!Dm+)iHZF8! z6$$%3aEOE+jaN_*F`(41RO4B|1qGw(hYmTlo+HUs!DqifK2&G&6`)%%l3q;BLg-?4X9MzjmL3#M-LXdzo@3?*FVA_C$!RMMd zB*-a;;X7~6i?>;^{~-%+FU`3kdrQ{P>t`j!>)($S$P!67Eka!#sd6v`;(=h!(ofSP z3K1$(0HQ<(jsszW26cK_aWR~`!iP@11_O_kt$}+jOM8^^j4jVulerA~`Q%o{vFl*u zh9;3*C8#sfGRktsQ$F{Au!8&;bc{uM`$qM>02`{;twn%v0LLzCjL=D6INb4Llw2>) zLxX81;eK}5&jo+5Y!GTrD(4Pp{8D5PAJj54ca|4JlfN@+ir$a-w)se0Fk}xtshBdb zUi;?_JvTb^CuCpb7v2o-&r3PiB%%b4E#p>hJe3ws`8L%DKksGN)807*DK@YmjKO@z zZc9MuYg*~Nu$`Cef#&dyHs&&r%=?f6c#c!OR0rlN%}v(fibFX(aB|nwtsqsQfqceqh zQ*`?0rsgcDKnYLBzcJRmBTy;QRxmxN_v(l4AIH<%!m*!*(dRwc2P>9wd%e%Xx(k8N z>1k(moZ*G>HTbV%Z_zzYCQoP)!Ybduo+LfiE)wcUahUGwUFxb*Bj*yoOQ5TB+k`;w6mIrxL^GS>xAEHOCJ=Kt(U z_h4qA>oViil%2Pe}2O9uGqd}QC;K@n%P4(Q?izFqZRW#V|~zrX;Wmkkl>{EaTnicld< z_7V{(kwHBIf^$?AH7v<1cwG~(G3}mucJuDj~`)7FlzE0IBa%&eE1giRYtVRdgSmTR(mToj%dCj^F;0 zp8}2s%{*%OS9Z5`7RI3srpWpN0cn|Xnwoe>cNdEnHM}V=Z!;cL4)+~;?nr%U(Yf>O zc%xV`mEP^7>BqT<@mxXa0xMD5`BvEL8#go>Yl7JWvI8wu>l4tP6#x2l1So5W1Ja zW8qY;YnDHp!N&;+%a_3v-E4cwzoE7-jLn$>u)ScAGfn;n9!gB&!BW%MlRY4e4j z@O#`75Y3eA<{3}}AP}x$ohE+jCjBNXOyGjB$bs;#h58~6+NBTcqcEtG#z&sZ#{=`F z(E;sg@zP*<7+kq2-&Bq>r?2qNW40gX2ZtD*c}py(Ft{E5H%VLk`vAMI$Z%m*4eI*s zTm=yVoVi3dA*sF&caWtMNB-U!1GpB2g1^^#0?KDRrVs`aZO;fL12G#(!X&er!)?Ii z!k(vAX`=YG>4aT(ufR(f9iTdKM#FxI^AkaA%B=ey-N1WmsF_y1TCIc*%t7b5t9gXSt;53Ra?SMvVhR2~K(0j_PZ<^L$C* z^c^sVpYXOg82$>Zfp5V9;pDYiif{fvN$B}%g>1fwI+KML{#&%#7=?o4cS`BFC}-Yg z=u1@@z@qhe5Z+L3m7Kd)DW6|TlVNdmZ6_^w(8y?uJ=jkkF1*Lzjqi0s{oW3$E&Ry_ zBuh|F3k=o^D+>0k3k{VTYV*ei(nHe`L9F-meiF(@EB5;O^ZKQ6Th|VS>9<0rhwi`Z zz*#`&HlOcW!#w{czn2eNK)?qlqd{H<>1(x<7MW(O9-Z*{r z#W_?d+VoSM{5b+wN!z~#w84g>s)kFb;$O2W#gu8#>F$(;xA#r{D&UI~P5NguV62l( z{C3QI`GXJORE1V{vh=}8oiNoP;>b0pwDFF`cFQQj#E0PzbCPa$9=Mquq7Gz5OB`T& z1lPTu$=vNb@+ABCiswx@R^!EVn9R5FW0hLY*60nO zu8d@}VVX;>J?6sfcMF|#`;Y8I{5PBDiW&+j+wy6f9Pw6yLVx`ke5IoUEg=s95yD7oU+-SwGuFIfJZFphzv?j2$PA`GSMBu3Ql8tJu zzn#fE4+Q_OhUk50ElO|za=@7*){&}6RZNP{8D}(kWkdwc`vJyBWx`z+`jov3Hnvq` z)YN)s|DF0`WKlB~klc_XqwTpmM9jSv1#Z|=uw|E+V-en0*Ou4zq9)Kuea%1jboQN< zA-zwA0l5i_c4pjUcmnPSF8P%wpp;Jj&VVZDeD?CDacr^x$&RK()chItu9$wVFu`%p zzbD8~nTl$o1s6VFLOo0jnaW}Pv4&eQWPu^zH5R_FI_(T zp7InDw%E{fg9_4H9!^qc@$)9O1N=Nd-ZfigYutMJGx+CSNPU80oc5s34b;j#XO6iF zhLf|fC(fob;u-TQK1CnHyQE0!|4zcOKfjOMN&kCg^4S+HhD^6!+%KYQCvM(Gky1LW z*b_rF4^M(@RxqhDpv|qX5ssSO;oVmnjiUYh0GnCcHT>a&$iZUIrz5a-L`gWC-zKjU zY|n!zHs|y;vHuI2fcDWVIjBX_e~3y3o-ntP$&G$!@{!{BEe27ClxxCWr?ST%&8Il( z+6@K}Jw3t7!P0?K{B+vuH~B@WE~>^-osv5D z8lHeitv3|zbrU;~pogn6_-v{+cA9msAzp5)=^wol)6Bp@EhoK=uTlJOQz5^;GC}b~ zwV0l`BH7=w3n{}44)H<*gKqf1K=E=*k%;tdx_Eu?@pToMlUh3P@n@}?^MPL3{N zs5FGNl5oXh*2Ja9jQ)~zbt$csP(!c{-#5fsLP$nU-V&b4YaZ#7O<&b8{Lv<$L;#xq z-%P^rjp(LqFV5o&))M07gOc&@JqFbxct0F+q13{z;AHrKPUr19sT_9MbJukXsRw8(rMo(PiF$42WW|h_DT@K=2Fj zw@OvyB1TCwb5(L3zvrd8iRF}G)UhcMo+<_Fte8|%ap#cDIyTdp=fE-|=?TccJn&n$ z>@n-cT`v8{KVHQljo7ClteDHbZL!(`(?#*3Zo|I021SbjXd{4kG{$-z)H!$ydvFBu zXICCOL8lZg_5p7{O9uCCt^DNxRv%sM7P?dc;xk989OQB5>w-fECaAI z1|J)VhcQ!~^9DMAV)?hEI3=L1vuRq-m4))YH#1nyDr-_!gUU|BFigyd3!8US(pALd zsZU7-zfxGfm?($G@d_9Wl}V8tNy#_;x*T$$|HE2{*bJW64Jh(X1m^TxFEg`Q9D}Fo zMiS{Nd^1DWFH3fPnzC*->+cD$>kji|q`(FyY(}vT?R7k0i(fj4(?&f$42SyCivT6u zhsMvte5_UEbdHOrBH^DJ?0P3KXd64ik37kWYmxu zFAO$PkV_#=pv?`iWj5gYTAT^REHu4vZb3*2mSUc)I86SOY76cU>)Du!^3FIAVmZ9;PlT@eU;SqHX8Wj|Qr z?HojADXr*1ldYRbIL5fF4Ldid3-kKylL;Ig4P)!hNatHPaC00awNu3`TJ$cz=p76y z$@%!lbCezzI^oDvN#DpgP*DM2a*-O4E?S_LVZWV6rq%@~4&vO+~;me}M zDpWLJYgVm8z%c{+47RqK*C+vO-L0@j-Kuv7dSzVO%Nd-Xow6O^(Ftns_=;@n z?AUpAuH1!bLk1&m`BN|^woN-tRNxfRuC?OiV7_l45uvZBHiG!?Ex?z>JkUS#vq-rx z;4=L~EFpVs9;2}WnD*@8&H=Sq+8QljG!H}*A^HtREO7qZOzwJ&P}G17?Jv?c;5(d| zA;1tp_~Po0qa#YneTdtrnd-&-_1^e0A=fNbxUQSx$lB@o>@n<8QOhww+><4c=8R_` z$`)1Tm%VBz7Z2o8k?KEsu!#Xxe8AQLWNOx%UI zNnSl8uzO=U!wA57ZP;7_Uj!HSs|pYlLzPBUDndZ;82u4XVpU9ptA{`G5H`@6p3`2H z&?2oAG$*Mb!o&DuNJ6Gp>}QGc(@~pLJ^ZAF8i+0MKDI+ACxDre+rI?w@(`ycTfX+y z!4iXQiNAWLx_q$)y*t^krcq9i;tVwA-%1P_(}gHO@y2)O$9ZVNG`iCZQ(4P2$bA8L z!&VafJa?+KQoeZ&VwZHyR0o*iiS-hB0QB5tq{Y_>3{`-*+rzSHd={%Fh*V@V;9M;z z^kULIgemW+P{+}LxV;Bi`H*P@cL8+YJTZ=X+|ETtYxAPibgPYzIb~S-Z!OLUAIvin z>UE`kz%IjU0Py^?NpbC9M#QO&ye+9T2;~LX?mb2oHckCW#^pjqKJ??@&2SIWpZXd0 z(EE2)_6tv&vr_s$l$J0 z)A;lsiInhMa8QXg?SD2H$p#%Z_8>L$%gXlHZM`V$BoMd$MEH>EmtlL1N!h{)y$StF zA&lknGiue=g+wKi3q*DF#Xx;nb+%UxzqLk2U#cHtc!Fn@5V80o)%&>%8p-7JiV>W}N>sc5RFZPQI8aAzL_B&YuRlkGa&| z3NRHB9t3jZ)K}9E2B$*Mao}`5(z_B7)v<^P$wn9r{w|sH#@HT6Nwf*xryfs?3V7jJkQi3Xbi} zCaASLT~iMPqkU1a&r*{EdVu1{UTF=}5Z4|M9Tm3FXRmw0AY>(Lps<0Nfcxdzur^gv zch^sJx4dchVD7TFZv7v|*|0f5~oU_Hq<%R>FtQNL|2`PuOqx;Jv0(RQ{Mrm|{ zNhb@X3w(xukP{pK&gTlS1J-2Pj zf`TSjK3!bKhn_ie#6vJ1FJgvObo*pXo29ji7Ym6AIdmFftxj!v$48D~Ajq_aJ`oc( z%Z@x4)SqZjg-__RFA!A`LZ|S)i$o~P_xT=jcB}Vm%(k zN{te0cj7-UqOzaWZt`&La;skDJ{SC<;D*gcqMqm4F&3Zx& z;JS_1clc!S+m|NH9DDwOYQ-n&+aTSBz!x-PSST7{pCYdAO1`2cM5iLLs!7EH$_#EmX4H8r4n+6hx<{RFTVaeq@;}lZD&S^F2Y|we5nkW9@X=@xA7-C$@K#M?; z;cLm@6I4rM}Xz6DD5io&9lKgqb=Mk*H}$`<ysSME!uizZj zSJ9RWg3J6)Lr3Y5hYB=kWX68PIcq(!iM~YLi4yDS$8J_aRp0%mIFn&Msn@;=#gCpj zW-0R)(DApmb3pM??=te7#Y>Yiz60a6T1nP{lBgXi*8hX9EF`wh zrIN;?sUUZ2s19W#P#$*$8%xbfwf@E!NJpH$;YilOF@80&B5f^{ZJP>?ciRw)$q?D| z6Lo@L%dX&`$MhsD%tZn9my6>vrQ_fV7bjW%U8P|574Nqtn(uLZxs#7`@gb|dDNS03 z^ldrixUM&J`pXu*v=O$HC*P`amCHbHQ{=x*Wqicv0+?z6sK`EQevJGY^5A~W4-BaO z&&yQI10b}VgJk69xgxr8*p9~$^O3b9-GISdsU|7VgRiY?bS0EZ!siSVZNbTN%&9x@ z-_^9QOE$&YZ_b6uRTBh03bfkqGoTp8p}RNpchBRmv8*TYsR#ZwEjeT4!14{siK8#I zSVgn8_&=3sHr*!n`WOFbm+NT|+GvfhvvU`@D3&itoWDC-c1Q0YK)5{V zb2^gwqIKGF@*O2q$f_p=6WZqE2Dyj3;?Rul?}M(T0hyZR3b{1@k|sJO@h2GsdtjpgiO|MUL| zb9IHv2}rV_R82slo${MHB7BX0&-OA|Ifd=W1u{P5#6^>eu?7=AWq9acN7J00Mu@gE zg7|yQa>_t9i+Zb6czTF3IMmx|D%;yBL<_mFz#h*7fvp$XS?r3{okAGmt8GsdLnMTw$%EBGrxKsL$UM>OyK@_U`gDkm-gtWYa^^v9aLkJu zo$KI%Iu^(+3L(y-0FRRA+Lq02G3kGd5RmUe9G1*|`!v#K*On8_GQu2cm#sMyDNz@K znlat$k{Gu2u1Cq5-5(r>r@!0EeXxYow`8uzxp+IxyG^HWd*Nbel=vXsLqT> zKlO%?5_D&~HzbK^lH6G7fz(%V2SfD&Od7oAq?-ijDC$^ggpWyfaX)qvOE$&+z!zlm><4APXAPFsDfnP#1IZwv%P0sEdh!f z4OWx5C4=3+Tr-SM?1np|1uP#q;HSz>}}jvL2unP)GoF}qmb+wd6K!-fHSx2 z*^&3^L4$^|dgOgDl~WV01ao1*H2+E@_xEBmJPE=OzLDlJNO?H$Ez{Vr)dKMSKz&vC zW-dJi9Y_qTvBu5Y+_{L>I#W- z*MgB_YfRDQs{E&r)Ax{5BWw$=Uvrw5?%{y5w}y3?xggIZwCxeD&tIz<9fLWZ!} z>;tp#$}9NbcQD1rcWUMRsY9X7rjnQDjfchn;8`grRYg-~wNQ^q{k7(K#HL2V zOQ8Ek)8tj;r;y?9!bNTa`zDA@j6F4>PMl&Vhb;GH>r%FsG0zdmvm|&OGlY9x1Xsg^ z?Q)QO!93}+8+}Glx2}d@^Mj*@fl>;Vnt<9o6Te~L_tT7KSKY7IT%N}~??`4wIYm|{ z70EW!l?zGEDaE4&KbTWBz^=>0x)uzzv_fM#XZq(!c@eE?<~E$Wf!ozot_qf#jqSP4 zE45n#E&GOv%$Y{QR=hIP2U8D_UVnXbS6C9N{1g7y_O(Lo$udv9}=LNAiRy@L68su&Bb@tZ!>8xLmuLXT8ZC9YPE)A+F1W7W3^q};`JQR_ydlF-Gh_< za#vX-fLjh^6t|LoakRwDN@3Q~Uq~JX>CeUt`kj2*G?3H?ojhX{m%1g;D8omyt8{+P z{oNY7XQy?MY@@FgI=?0Y$e8U>QHuj?8F(iugD_B?<;Q})M+Go#P6ka zAzljDM~^>OCc9U(Bl5+x#7W4aqO2xB)EzB38Kc=?0+YH?&(Gkd+KiAz z-2)g#L7~P^@tHQz_|G|{_(WeGSu15?FlWiH0LIM_6jv*Z>anLC>=d!6f|2b2g!0T# z<)}EMWy*jJ4FvXLT-pEPwaNQiwu6)eJ6T_!j%aeRm2%jZHT&;W-cnLwqhR=&u7JhF zLt;@r^-1(M_6K_XI)@3&!Pej?78!T%^e9ch+Y99PKiC;mLzc|SWZl|`G1rK1XbCr1 z^8c;zBpIamY?*oA4Zh+uR5KG3RVHm(r>uzM<2R~Y28;o=B#r#puvRoB@W{FYHu5U> zmF4?f`mN6eSccaPb@BmDh|Dj^%^m!)IfL%k8x)a)g%7-Ntmffp*a~RPi;; zkbNsF&yO7;vpF-06FCr?m1RcSM>vqhqwoAEc=}wa;Lspf**p-5SjM0=DmEZeI1OSh z$-dy+MzTQy9z)KUqXxGr4D;E=7V@(BRU(ZWiQh(>jsBlA!B?pho)cZc=$Bp&+{1@e8^SwQmRLd?&6porN_96#BPW5Y-uUD zocaJp|6!^-%a^DtfEIu&-83lK%Icay0b$gahqBU>c2PE7>ZtP=)C!V~Rbs{wY9O{oGa(gBy44Rlai>Op=PM z3-3PV)R_`eRe%tXSNcJ(p(3bKnK5YVwsXAxEpI8uoU9q3n%H= zX-^)l?Sbe{Ga}?>HUt-dygynL?I=hmC74(MfLdidk8{q&19Y8?iQT)u`nxW#1jb)t zP0jYuVa?y!QRMtEde9X0z9l>jhiF9}_Rcb?SbGud>au=oPY2@=OzmWlo&peHSf2IqiBfw?x_VKU{{x z`f+nKZTYX9X436V*{_+J{dg&C`RKTHGS-W!XYaYD8i~iK42H^0P$5NKrQ}Xg4vRb`EP;@PD~nIH{(zs%aj()5=$SrpoaK8 zN5NF}`#c{TNcV}t2y?q&={{JK8z3A%6nX40eIq}nK6q2Z+DpjI{5^|t!tR{nNW*1sFrT|wsLFy(P&8HMwS)bFKZ0!xe&6#9blnTM;!HJ`ZdnEpd@|6$H zA(QCVlRId{2@^;J-E6>5ige~KjG1GM{>DgF=m}Z0;q0fqb~>FDmY|lK$CU9DG>e3}KOo9JMibApuIlYH35)YX>LhBMqbhv(~= zk$dxjCFi`T*qgd7Zm8k5G&prt$`%+8Crci#DXkbl24%}xQ0QJM(29;34vgNV5k&}- z@>q`i`{e)(D@sijP{P47W8vlbr%nF5Hh%*f$}|vz&5JOVv~%>QMTPbD-R?+5<+1SD_Suvnr0P`*-=j?1il&gkNCxxS( z4oGWdr^bPO?)Qg0+SQD4hl?W5rbFra$V2^1U1r43b7Pg#95J8vnm`2vXJ#9UAxVx9 za9p`Lt<;mKHWL!aUaN=&E!;MmkOcs+bCddg@jtN}o{!X6-O9?SX0VNPPxTBc| zc!Xdj&m>vlwOlVaS+l^3TsiiNa=^f^b5 zB;tV7%Nt*yj`g{Ga^cJ5rcv~9>aCr$(0R8c^au6b6nP-qJE3YC8(S{7pS69GBjo@& zPj7%#a-(V=5>}4_9_GU&v)Z6F=&U%U``zXNs;>urnL-O^iCHq@q&pzfFQQW0*x zgqez-PiLlt`Pg_OLeGyk;Hfkqxy2TAwbI3D)Z_@xRsP&9Wb+Iy3+^p^+8yaN9#{sh zlQ}=8v4G`q6!MI8bSa)^wP0=ulJG_AFSD3CsE~da&(`FybO!(jmC|3QcC3Op2^n%K zns`1CWbdYQtL;0jSNk((70Wr&rZi~vBS59SQ%PP_!JZs$ZU`(Ny4S?LsBNwu80`1e7MPo8<+-)2 zdRAi$`T(pi)GpQ{x6pXYNRixmhk@62xuWR?(}GI*tfMH(0|nq=3n`LyH2+C>Xwm#T zua$Mf8QdJ?-tMNtBev3#^o_891}JueAAl8?b)Uet($AaV$XB`J7Mu)?f!_O>)Q^f8f*yBC`fP(oGzvDG>ppH;@(CvkHlUuX( z*_)zWy_ry6@aes|A<2H3#HSariA>wk$%|Tk<3f$j%X|OvRPz2NzS14k%?Lgvh*X{o znblc%PdWFP8fm3tih=KLNocV+Y8`L<5sD39%BWkV`^&fM)DeixSk~t^s%PzD3%SA) zVYVRP;;v+8!Ez=iVP``tmmx-Yn-OI8)a>@OPg9x7;WK)R2vIB%{mu%oX*7%P+GuY{ zzzc4weXnbgH_JNsllCB@-jXxj+l{ln^9u;TCOy*_$%?-501IWo?khk^>N9J-C|jGfxw?h0TwcAp*@iwA%AOhsK5h{6RC zoiUHwMIxLJ;>ho~9~6Kh7*Z@d&um%gCd01)o9s{^S$i))M{4L8ia<9cpnaxIZ3Ff+ zFi$JM7S>iUouUmyB9Zpd7PSsBRtol>6)aXyCI_VEbPEd8xx>h9HN+vu>bnF&PT=^` zE;J*`U92~84NP0AWezekVna%1< z6n>Pfb#=3D7t}3sDkc;bK15}&u*NqN=q3#}BFH`uAkjZ%xh5F0)Sq8wZPAU~eCDxZ zId2ETz_k3!j~;THdfQ)Ygt{%|Y)7K%dq-lq{hdJ`B$As}?r%vErT zs=kac2lrH$?cx<;@bU#~N#a2Tecn3F$u3_ZJX3-{wA&_DTJ*Brl^`z~^h3 z>ExK)8n^9Wo@5N}yhVE%WrJTtX#9-Rgm+ie`pSAhiYS-DR$sTzoH|nv5Bno^$s-(@wm`eS>qEwJv3{i$}LjB{a=nIik5ceJ)SAQ z!-3n*)rtsA;+&ayqyzvRA?lp2KOtoJq2?GVIV@O;WJCltImFjIAc!Eu$|ZRqTUfr~ zg&)lRv8osr<}cqD{+ZIjacd}*vdX1Oi${n1&iF((9Z(WK!X5vYa>HM~n9yong2Nda(IU1i)68r$g}D_G@mn#(&~Fy zPP~gRR0WFpxIa7?6kLMmT=qP}B(Mo$k~wXOWDaT<|2#U|n*3L{AyB(wBq)DmwTkB* z{6=0@4k*6|bPlbpbL{L!T?qLSX=5f@iDE-D%HSBIBw z;Gztz{(*zt2f_`Ip;rEd<5dh*2C6~n+hMp{Z&Osk+z7TB7EEBFRn5%fxB>Sy=t1`a z6 z@5Lc@_1Wn8CPoxNSM@1_*0^c>qlRXu*Tpf{YOkmtZhZ~rYLpSyAL%;hS$3eVy+*e{ zaD6J5XtVA0ByGf3y{I*@2R@d@L0)?(Sv?K3Dn1PU&_~x@)cHTm=0xpZr2;ipPUys^ zAM@QkYZ`~+rKTdmL8w0;%QpEX>Ad-5$CGf@VFxEI9%HIzgNLYk*jl8FV0GMRp5)Bn z>JEo33Z!R7?Csn{?vUb1hv^pZ__dsDUr_k|CQ7;+@RyoYulJFLZ4d9JGa zp9oto2CPco6SIOpXC=jVL-1-gP-X7QIn^dFVoYNjmpe0D1M+sywOcaxjic%e+!Y&i z?b3=FgLsrfa9BXqK?nx?Z~%yTm}+;86`J^tVz&1y$<&~zHKf@f9`cNz6OXjGD9sI)S;-Ib8uqT=+G z7Vh0|EsB6dsIu9ZDYQy(efbgLVgz&>IR(q(9-}0tEe;98ul-yVuetnxd7{#6l#|Y` zFJsuby*oScL?5wl1ULN2CzApu5eCm7mE%@T@y!M$m>Pb$mV*A&%z!6{iVmL=@1!!! zTa+Z3Vrm?C7-1&zU^O#c?Tit{Fv^RnTr+Y5mL9#)-{5{g}khp|lCpNUmI;7rjE>1+$80;FuYr=7J;6`CkQ zRJ65QN9w6Z&-;`FsUA1_UOg&qOY1r_VZR8xZ}2xKRLP8Q+d`wF<@J_hB4R_2E(`@o z&i%bJJpsT5Ne3?>!J$9JdMi+liRr_Zz|cc3!WO(mhl@RmuB^c~xj!KvBJ^`1xvQ2Z z&bKy5VcCX#8me3zLr|)SZVE9xyf_8l9Kca_&2v`!BNi(;uAd)W<%ETYrXr(+*FGx*(cfeL1 zsi9Bq5mHl_!P%a~rX?5NK945*= zON*AW6!_9^+)%Q&2;0R3j}RbohWsoRLhqXA4-x%V%@&BXIU9k zu|R^qnXJ8oa7*i-+7k55Y_;O~|By3JC7^Zdfsi$|1|i%pcqHSp0Z9xdEP7|UH0$B6 z5}kju(9NNlT6ydo5LC7-1^zd$o+o_kSI?1q;?>!s@BD=?e%5&9P^pmN_;*5_^?q;SVVmI5SzznaZ7or(fhYmOdui}_JaL7Gdr7H<~Kj!a4 zG%s3VD8dLBV%Db)QtdVSG4Qx^(9~~ zRMYo6nbfNT-16VUVy4W+NA{Ao6oQmfmjNixaOKlkW(XvJX(bE1!ivFMy1;#(p8mq% z7NS!xW-DSE`=-^b1dKDa+p}Uyhq>yC%FE4TCbr`Cp2JkjPQM2lPpb-zq2oA7jDdYc zE~-5K??wkX zf$%PYLJ-C;=`M3Lswi~cf6@FIMIlAjaGHH*SwSv3OfS%-KlHU%`PJ6XxXGod0hlW6 z=FM2GYH$$92wBLeL!^w`OBH<0UBnWMSX9t~dUo^AU}Jr8#jZS^$7bQy_qR0i>=hCN z`mJ$FNf&_59Y?)q1j zP&_B28bSKsI--Lro@CF|Eh7;?cGc~j|FxJN9w2gQ?54}?48V~FVp|KY4c$WPMCCL90G+i8dVXs-I%`E^I|GU@E|6|7l}JBuOuLgEN%uS4HSa68#F5PafJoSc zgIj>f54RYTd~B{~rri$r?hci+zkXi=y9DYo*kOCfbLYRHac^Pvw@5c`Ca{h4ZQG1H z|3?q}C+pqjCf+&{B+9S*^El9G70Od?3k~uVBPtgfHIpC)!;K2-*8huL4=eE)Y^~~A z$FM=!41%LJ`vH{IZBurNT!!raRt1Yy@k^aC{&Q-)xNmvoS(0oJUH2^y$4i3+E9)$r zZXTfq&IZDa6C=0UIVA|Ihy6`AdZLz=dytrO&uw<`TJi;&v!{D-MaYBVkD4=n{-Sx= zRVyKle2DLEbn*@<=Pet3(W%fQ3dWSbhe2Q#k{qE zgtL#L6Pz4bZA%3LxVVR2z^IBe=gCtZa_S8zuC?*V`W`YQh;7y&?79;auB|nJ*&ohL zDqvG7)>VGDHliaJCf_-Hy%eS6rrkV2;$fJ0ft1SUnKeZ^yBiDYqh2*+z>EU=UNwVu z@Ke71!=9=pT(Q3>;;*eE+)wj=ydU?nz^CC#51_FQRH_du7P&sagfJkC3)F~E`_I?@ z7JM0Y1^B5TN7=PQ9eCy9bd55)-t3>^{b$L$P2r6sk%*CG_llNFgR}$le?*R#gP+@0 zj$z+}gp-e#{lSc9)U8^>l*dd??X{}I$$-guTk(7@b3A6r{DD7J?oOt=?kE{nAuo0N zFN!KcoyGb=#2{Bn;8fq<$q?kCQVb@EEH>Meqd1#CFga2Jd`yq5I7-{5M6NXX)$6g9 zwN)T?#g0baW;Q~hyF|$%Jo!nmZn4Bar!;1<+EyadOH@(oX~&%Bs~>4JhRCU0|56mC zGM#d2OcxHr?1g%O;xCH}=+;xxR)r1os~b&RnOo$RGmboIF!%YA)O{zv4Ew4}a)guJ zAErN>;%^d}-HStRzGyK{gQd`P*`)=|Ztd&V>TK)PXhD%)aMfP|;6G@MFh#g~dbNTV zwpode@F)UxA2NQZOZB638#b#3C})&Q-p-Sod_>`*XqPPjq8;GQT<4l%(7>n|-O%|k zqu+2tD?@l==B_<7e?r5l=^CBHXF^R}5Z^~U=^)R)5vY&Fv8uSr>b?!_QUAvxFW7!M zpGmSpsqVy`u1lna{MU5|bpl|vF1DEzx3ai9gA!&4&{3h7-Q&!qFdTvX}Hz^%C`j=J9YVNuH4={Gg2Ez>Wjj1T0=;D(F%W7d*Q}{6WqCV)e zJW7!j%<62N1T2$~C{I7?a%qOeTu`v&eCCh(D#7-L;CrZe&YCZL+A5ddN)w}YV`BOZ-UXMgobpMwOJF+wE7YV@Te&>@*K zaA2-@)#XTPZ4rNYigTfLi3`-st2rZw67g zj0M)PJK3;prtnNnDV-d*u*HSIpJ`26K^Uintt0nIOaNg!9=2V%ty*{bN;wdn)f{DS{7vYbE^XL7 z_sK9bqNz?*k43a2=3c(yeLq+WISNF85xR*smO}(8Bfk!;=m11UUB^*4^kKr~(R~ts z-$@7baUYbavV(RP7`HLw+De>Z;+c%n`9dBA@EAFH{ zM0}HX?UW!HNLt^9%0C3V2d|<_)zh%ym#=MCalxN-MWP|+=gwJ~Ce|7Cml6uv8h{oX z@PhLSb>jcUO{bHjXP5Dq(LthP>SAJ&aD|XOGw#C(vHi=lQ5c^rKnWyxBQ5tUTx^o+ zbhB53O$b)xvk0yQ9zUw5+af9jCskm>bg*1^_i%v7fBYP^(tBip{^8d(q(|_Ki_u<~ z?CKx%E%07IhT&^JANz313gohTtPI`IUezqPSa2n&Jze6m2kANKrU;> z+ML!9EJZgQmEJ)AqUK$?)h;xy?e(&|4Lh7gIXOG zPI=~yozrla1d*^cD9IA77-zcCMTGW-&DCdFHkxyCQJgFCohLbbXW;ZYEx@pqpcv*( zlIz&c^>wE_68fz`Sg9M1QRIf*S4+aqzH|tt5YL=F%;RB=oIsNw$B`;6#HCL~oYh17 zMp)>SF9}B&YrFCv2TYaVn28SCRh&|3+xi=!i#VA8D9R`wNerfvM-B#-76&3( zF)tu&-XcGf!3%J4OEK_l`*KbzfeF3@EE(7uvrB8x-Pz@bE|oF$9ipI-3rRJVkV7QK zVtV?601xSFH~IL*?=%F9mBb;7eGgLO-dMg;Oftw0R&pQbNba9)!$NQ!<#$s@IzELq z)+wh-B1+2GYO#fi*+BUxJmL{AHy#=|y>$X}SQMX1_AVHB?3~#3ApxABI&6T>F@~4n zWksL5vM3HDPJURpQR^xM`(m-U5}ycZL~?ks>b=eEzeQKoGKrOY!)t2oa(RsjN}24; zpSs2^@s=RXM4`ZcjuScTMjPT_BlXyCCFo?pjz9%B?i3kaiIZt8vpJ#lzK|h_T>DB# z!;S)Rg8zpj`dE4mU9X1cjf^QFFY;QA6b|~R7r8q+Efu&Lw5xRnDJc28x-6OM>gEQP zS2mW}gtN?5m)K1~h>L8LqBc+@u?W(QNsE&!Csy`k$Oba%kTy5+D-eN*8AZb5U_Rae zkG2RbZ=09BcGCvMN>NG8baDMxJji(5Wlf*TXh@eMm@a|+po~qG+v&SekQ#sk2@X`a}3zmdkVi!H3lvL)s?3CpT0-iiDf7Oyo>kloog zeD(L{T=(l1W22zx6k5k+l3Lc^YFO1!&b;T$1m*dXsvK@jJu8t@&u$Sv>-}PARei8E z6%ZTl(o(B{GA}7(sE`WN7mt{^@mZjm@lp>~GJZ&5 zbOW>tL-Lr7s4F$NmQYWbR>SJAPguJqA67SQW?<+&aoNmLq0g2zbQHo<{YK=7#H7$4xM> z^1KyLdl@CX=<$IP@;hx%;U`pT`` z&&eKM)1uVtWs=%nu4#t36iTBdq*y*$Oh$I9CgpObBdVMPTFRwz$}C4MJU0|ov0F{? zkXmP${kTx6U&CzyTb$a)3|6o>M%O|;-Qyl92Z`?fR%%MmUp6`HuD)7e(N8O&5|1n* z8MRK1-l_MI+Oxv41@)vN%AV?23s?s+(5iIjHL$26yd3SPDb@rfrE~#?HbE<@$X@G> zvNWSp2H?Gymz*}NZ32prgWNqK{P1LptEQL`Xk9{npp0E`;uhYrS{+`D@LBeePs98A znEcnkTlLYOscE}hd~*oQg^`M0iJVca{tSQCZzK-3av~sWa=VD058vM8m^>FvMVGI$ z7qq~J2SY>BFe{i}|qF7QKFfyb=7-y|?>5KNd zXJ>{P?cz#&hyJ^KXklF1s-wpDSiMG2s@?H3Jqd04szrq}=H&qvCudj&ZMV&Yn)moB zfV&n4`oO8n=wP(aU^zrhMxq?F_iyoo-WdMZK&LcVb8&~k;#0H01J;3-U5c4IuVSBP z{P;7u%VzO~4Lt9dYo_z&+rmMVXsV>m$9Eq`D_!#`r5_UAW|pv~k9X`lhEjMBLWuLg z*J50ir3KXFjjMC@0fGs$?5Kg9YLQH|hww``Rqs{fFb8u+-bY5FN4?4~3a`t3WsXgs z@iRw4Ebu@SluYe8n;OHLImF}78#|f&Kr^$i={xbcp;q|A9M1)=EAYqdL3l7hIpuo_ zS7DdN%Hu5cojtLE00^JrPVg3emHDo`SVn~ z&e}W>)5n~%__prAKS$;qhxu4*rzg0}N(}@k zbh8$K6w1CNm%+3in(Uj8L*y6=#TYc?^J69n+1(>RTT+3-x-`s{pWba3W_6d+!ep0xW|Ivj zjm479?O7{3MWDc|oZe;JF?2_mX4gEs3C=wN zIhKkQUyZzT6|;?A@ZF;~M7Wg=L(DhJhv2w!$-!IR3@-noH3(8^C-Hhn2JJ9M?$bDQ ztm!Ut)4=|GVo2V|wVYXM4d|7aRm8%xXkpNuhwnM7*0~}##}K1O__fIyDQznOpuX^t zP9kYhH0yvNbwYN%0ipB2@+)o-h1RAu)x}~c2-RI?%>+BXg@ow9Mg{$&CaAXMW)#{5 zmO$o^1er@-+TjJYn?G71^!8oS8h@dl4Pq114S`=e5z%U-!w`}(EfSY$$V<=b*%i-5 zs@Z-aLa#a3I8)l>42|0xm0sw~fM^}Eelcq18rFQZEqDwxLh{|qbbeA7ejp$RDf0In zGP|c<)lY>S>wl6l!6Dqa`xi^AtUixcmr&I7;{JnTfGB0exNCD9KTRfjhka?Vvf3o| zgwBmEZx}58c&Zy*Myeti&KB3VE3re9G-7i%OnmnzW~^Qb=auj{-@nqS-ovb5Mvb20 z{?+Q>?b<$RtJq^x&9w%vJ72`B`6mLru{{~!^}t%do@Zmfo2cwLLfTNlbMY`7Q-~BgZqsx zRn9&c&6<$1%*T8Oj{XGg#UUdg4_*ASRS*&O#2t`m@dgYJs~_-CJKrybnS> z@)wD}5x$YnFXd&_M|yT`UBXB`T}ZJJyNdIWKAb5+qAw!^mA26TJ=-N{UAbZvmE&FZ z+I^K?esok2&q*O1bFwMruG%DZN3Cu^e-`T=2`u0Mgp+#1yWuDF=*!S#RZxc#EO^`g zDcqhOT&ee@fatmw_aDJg{lYd!F{9V}RO+nzlUs(dtaeLEjSiPo9xqTw)&x6&Ec`0T z!4{U>Gu!9Jaqr4K%2v@yuf21U^f~gwkK9-Os4(2xO3zXxyi-buE_u)&b;cA38*hS` zP+w1!hFerZwdtC9U?e8`RaYc(;1)Q{jnW3SylbI|N6M60P7nV49Erg`?TKY*cj2CK z5_j7Z1+YRur?m)K)6V9IMoH+u^X)U`JL4D^FmSAK;sy& zGw1$+IK(pO5u0x;ajfKI``FSoSyba@bB&a2IHmBH_9vsjB?cd$h%WQSOnb~{J!OBD z-J)=lt1wzlV|D+XdGq(3o5N2L*0k3f`vAUit~>1JtV#xJI!H^o(!fJ!l z$G0VUa4+s9<(_WMHjTAjo(YExV!gBF=cO8pZw@De#b$}2mBJfYyp{t*ho;_(sI-+% zjin3Jgi8{@6c}`3q^kJ;Ny>=E1FHdh?_SeGBV7!MV|=!~JS57A7Sz$}Wosm&-a7WH z6)QVOhb97KA;*e~;%nuD6;*8tbRYYVVG+#`I#52+eF2}E{xLx%;qFRcyuB#F?oaVF zXiK{fW%q7V>qIDcvl5L5J7#_St&`eTtoISHVcosa+8>+Z<7LtGBNhhwxZd~+8^}6; zh95RlRS~$rMH5dG$yIBjdjvKy{)LQ&3!%W!A@lHF-F`O560<0JZVRe(hA?@@5Kh;7 z=!z@&)^{?)h>oI{r9(|G5l_RDSvqi-CD8pN*Kei}{)mfk$Fs%P%|{S_@dKZ)d~Cv= zpwHxB^DIB+%u^--w-)v;pN_2UyILtZjp)_C0=N_&{JJgZ{qU82yY5Q1A87@z*zBNLK~NZs*@z2a*r26Za4xrtbeP2iM_1{vz8FKng5`q#4pEHuQ?65#?#q6dNy`$=*_IzwUa2AacE zQN+v@F9w8>bWTNZ{2}3vJC!d!b3qBo3RHGf^<@8Sf0$5&DrfbAJ)#VOw)YAqE@a@H zICL73m9k~k)>o2YXgJe@bq%mutkM%z z5|*h&z4G5E11p(D(p8kSU{n`3pDH(MFea#lP^u|^iBN%4M5&wAUxaZB$gSIw|3R@td90`hMjffL-=_sS zhUmVxE&qblpw33aO!Yo1o(-Iu;+~rg$mcB0FB&CmVjur?v%eth@e>6k5&LEg@hVL( zJeruHtv3#oK^nZTv%_38470bl0YD@)_hS^x+Bh{`u1pM+0(Peu6?5I<_(0p?SNOs z@DS<2jt?4P`~ls_JQnNA{ZVb583Si7o~UU+{~Y31Qah#12(I>lKDQTILg?r`Wcjsz z_UQ!na9KLKNHImH4NQ}Kgtr+A>zvvp2Ob8Up^9bq{Ba)wh*u(B3Be;|QY!S#Ts9~N zAbj&2<`GeJMV8$D&|tY9Voxx-m`7giI-8YPVS?YYL`RhfQU222Ey33@bALWwF5}ARN88ZLgye?M13tWX+eVqf}6i^7`qt4>IaUX zD!WSYt=ge%Mu7U@FUv!eU%aW0G)dZk0Q~8nU zF8ULb(;MveDLA!W*bO+=LX-hArjCAZ0zeai*oCFB`glxGo$r(dRsQ+nHZRGdT?d|# zRw6^$nDTmS6;83l2_C%BrVaN$uC04!AfKduT-~ExFd_;kjN729juj)IT_cuXS45-4 z)vrl-(O#7RlXO5J1n2Y}AlV@t6VapKL{U|8wp!9&PAo9S2P})KBifnB_HF=;ox73Z z@ni7VxhJ62Z>sE`nJOMO@BXFG>S^ctSGQw{zix)nT!w(ugeh+1LZGazN@HO#EtT8O z8C~C6RuOqH z^|elO)4O8dVOq81D0c^mszcor42jC(g9m!g{=N)^2_s=e{7mjRqYRYgv@MyGs4|Ag zLjLvx!4JPUdszVXDIZ>13Dt;Jq850Z0KJ%J%~Lj)V_!QD1di$)oYa)>s0OAngr7k) zBGb91Y0ot@dfs;c3>VVOoFKKLEh&OgW6 zJCT>otl>s%bu)J{pI#O-eLammQ!GT>4yL6#@<}Y#z62;JRx8E=<6>=pRz&}UiiFd7 zP@BB;k|D*+yF7o1dg1IM??<@x9Qf6HC{Av!af*Trs_U=6Z8TaV!4+2gKHh zqM?ng5X9tp8|unyJ3x6VKo-1W2z^Vy@y#_h+VL~26$3)V@$^Yg>&R!ZwsLJ=CUWt5 z03rxar~|>1LhLV_cd5und##3SNM%7^k8AX5sX&~QUp+&XC6yaSo)n<=;Vbqv<70*! z5Ixf<;B2Bpjca&W9s5V{oh`-sUN`E`Q(}QjvAaJwXzd4+hWvRmlo-*NsuIM${mD!B z7=Q1uH5w_~QeJ_{#S)G8!1$Du^&0B=8}xOL=Q;gQ;d*NCc3HKhA-MW#OufrB!KKbh zYatvxUx(v;$`omAj22YEP|ZK|k8_d>~C7IV=PPmK2j1Fxgjv$^4d?iZwP0KSQPp0`9gyo*rDn-wR?uBl_Gr zbK?my<&M3Rc15iUczbDmwdMS~0usGrA6TD12NO*gRi?f|0CI++_cf6N!TDrgzlxgc z`x7MNGfHS^S@fs4ELbN`0L{-UJZ?6V`rJ+P@8z+vR%pKuzK@(-;$pN0yR#sy4jx(Svon~2dGV%ezHrsW9-)>h7;^^ z&tF?jwW_0cON--KkGK6;G8ngu=q=LDrTX#rrLiu(Qe?F`+|QB4pjLO2szdrX$5Puw zqh*r=id>ggkbKh50CAwc&%(+NC0`ZUFKWd1e{9>*qH@sGxdgHMz2d_uU!>c17wCBbFeu1<3OCRCU%pIspKl@T-d#NSLuU9hj7!n{osr5~ zHsRbQLQxKT7PYTFQ}Erh1mWo3p)Ri4v^YH2aFF{mx$tjEp4nubw)N@92tIt}c|JC#1r~yNuJTABI@ie9C;4D|qb&r|O{uNnM<)v# zYT%&H;@Crw;&+Mu5s@cE=9PG9xMF#*d~)_-zva`C0^@J! zNu&#o^snk;NR#1JzZ=CpM~v{;y#ldoDnigyI0vjVXY$w}tvr3~mhrxYo}vRzK9Y_^ zE$-SHAV_1-@p^xJ0Wv8O^@!J?Ex8x+v2rO;#7Q_MweySS41*_g*dE3sy%fDYhK?-i zLE+{$GKu}S+@kJ=^XUSq*^$t@fo^&lu|9CsOxd!n-qBstMTqOQdo3y;e)nU@t9%pq z^D`X-#)7v0n>C|67MZ52i~zEd6Ly=S3YNehCQ(JWkqrOQ0Z|$jVnR?Hc1X+`l499O z;ssepJ~_n=d#j7;elkDgWo-1r`Q@T<>i=HW5Vg0bPCdj@m$4e+pLAUP-C%wfMSDwg zaNE5OXjKU;~UUSAo?;w@hDu$SXeWE_L~^k_X0-sGPsd z4rECJM~F9SzXc*o<>&BEX4bUj{gx~euuTqLAs!}5yIIHpf5m}j>o35|>wotRQ5dKh zchf@j-M~}bRcu+YG+IqTW9uc4k)DelA|K+Q zbf)KRwi*!{=5ZH2=&ZB8GcEIOu~wZ%cJF@?aaB36oi(c!V~D9?u+^hnnLioJ(HfSU zT)J6r;@Ax|bx;q+xbhJVm3j-VY=6NTdL;pWd@;^YPEI{HBezNtZKB0%La1Oz01;A( zJ6nTY8PieP9rFTW7a_F$jS_&u+eK+VavyIp#qP5w?rfhr)Wsg|W%6xy5s8oJG?y1^AFFNQw49>monPK0^p>uY}_Rr{r z0quG%h46E7HrGhCRn@mLdtxmQu6y%T)hFrxR#&mg%pK<9_wn@Dowh2os+sVO^l8CI z3|$?362#)>k*S&>z%`*58RNxOs4^3T;xav``UM7(0l&7VZxEB`z z%V9bR!XXFU9aUkp2OfSqZ)wqWW$|GX)Pw`yeiVx=W;%D7@t*PEx0*L20~yrkWc@i3 zfXcL1^5oD}b_vfwJO-J!oYq(%5vLOC*KZ5KQq$Itr*C`G>1P=c_O`$kFi+6U$5Y<%c_34Qn^dF7I;B=JS zLCI44lHB~|Iafrg4?O*(TwLFGuTK?1$on8D>I!k57)vlb3W!}UwJrxIuG@!jmh>=^c1V zYk!_?rQn0@SJ*S}C};!$G`8Z1e+MS=V2xiK>yLZPmLPlLWF-{iXMW^)E6Vr_Kfz$X z$dm$&(hgQ&?rNtyL^uHmq2K>rtlH;JCAvg2DY&c+`0UH&*S{uoTX>W#jq+p5$w75U z4|GodhPB+@Vtkkf*fC%`qUOVY&*B{0V5ixr5`^shGnwN*%cy!&ag_jFLJJK^>lz#o z_sm43sfK;vW+m^YxeDnIs<=)leB;%~9!lr~#E9^nQ6SsWO6#z_+sqdj1sz28!$Hk> zZq+D8zE9IOfS1JWd}FZ#V4(AT;+X(1`GHhl%)+@qek1(8x{<9n+}I>m(8sf-)y{~* zwFRcin8*x*sfs$e=8Wxmj0tnaA)bt4ZqG+D#{d1GPqJ#gAm*Obb<~tMnLCK#pHmwl z{@tZ*@K35eG#T?SIJOsKdhoiHV?8t>Vwrdjsiwiu3lbkcRit(sDaO0HGn(M)g%fM0TSy#OsaFY^5_IT#p2uGTqC2st=gHMArIB3Qh zW!|&ZJ7YUqBR=yMEm0r5ZrO8bJ#&wzQA#Q64qeobB1harje9z^hB|}+PWsc$xf!GN zH=c@@Iv*|}4u=0`mc+$`hJ9xKKaf~){@QhYUX}zTm#N42KPD-J%sE{bI~rTuxtnHH zz|Fa;)~{Qd8e(6L0OCQdj-(@Kd9qi$HEuKPNm07~kXOc?>+?0lqW!&{?l+ymQL=>k zHxI7|GNc$axe)Rb?v%L8OMQ+e{y8h&ckr9dWXK&;>p+8|fhaXFdVc9+kQ6q9!y}69 zKo(tf*GC-_F?EPer!S^uPV-Opsl?CSTTBEMwD-S@B@;F6QLBm{Bx{VrvrFQUNHYm! zjan-s5DBDAmT@wnGO-7DYPM|9zl_nY1m{Xa38Nz?@=QQ;QCAH2eN~=V#sInp<>yT< zT;nz#c-U_pE-+pLymGktCf0jz9>+9lyThefl+?Wx{^xt%l^|>DHki`2{)P+X0xjRo z7PKFFW`0|l70vH&q}WB4Mwo?C{nMEV1c{`30(UY{)CC?8;$O&C>v)UZQm@;vEXikE zl}5KpaSy?i@98&8XTB72(Y<8{KQ9*~v;<(M3V4UQ5^-7$k$?jcb9KPJJ3x0ZU^T!z z?QTg~;9=f% zotKY1XpA1D+AwN$)EQ~iqhJ&g57ePEXD{x_o)g`~nxClwl-VVl3yK_iq2%i<#>1h& z`>@ML1}n1^8ffc4y>3Z>q!epmL#gRPn%^KY%ybZser59B=!ug3SILKe(Dxu!D21U8 z8;8kk`R%r?gB2Z28|Nl&PH{{3f@Rc%#jBl#oC=;CeNl+iKglt^JW2HCZdR_OA^swf_SOl1(u@0a)L<*WHm@Kv;0`7$){xB*dj8F5#`Mle~E00@k#1w2laqp-4Yx?S0>g{mR?6r`3 zHwY5>yYwk&zye9tnm#Gic)ePaozYa+SW{^T&CoJVU}`g00=kJI z`(uXY$^9+=Ww&fM#7GK+AlLoClhsI*WNxD*c@@av;N#WYJI1B+^x{PdzYI&8VL8$ z>u^>ZSRf9Yk1#QFCGZ-%wD)HOrUXm3VG~sY0-|9XHxOjkx}AZhUOq-ri#!iW+4qXr zgGvjIrxtp={bAC!g(xRmHK7iyo{@-zZHNE|udw7Qe&ebgF)>Ow}J@7ug% zpG4%qG{HYw0Gzycu6jfm@+xxOUT=>X3#w&H#fycyj6(3SDob-1GmBdbsJRZabfrqs zy@l6QYPFPz1Ua6x*(Z>Xyl->RL14H=j<1)|DdrC6eYt{2HQ0vpS!g6wEt%odHFrboE zn6(frY9YdCg*Ys(yuL#1QoEsmKRbvh-{$d_^n9bkRo8IL$?^?80zSH|5gz!%89C)<%!NTUUjtKHbxj*6`a8D(s99L$Ov{-Y>7|fN_pO1&oyo=~#X> zY0p2EajqLINw>Ng znKlvFkltF>6s}c$#+_a8ZYAsaVBtX456zPzMfZSb%1)@|haF4M(qG95rtw%rLF~lI z>I0jyq`iDsg(_bni4RY}VCvJovBqSbI??*PKf^Rywk(1TN#QXXp@LQGX6cgSA9Bi37i>FioDYDiuL0;Iw~x zg4a*v1;_Vy#+Idc*>4O!iA)Z+gmr*f&d2redA_-aGR&=*t-_+!oEd@BmG!=a+g&2$_%z%tfJZ`kE*KDg z(Jyo~@hRGgNT|KO6vm}IeR(;T(p_%i;6~(Y)3+}$jIVw-SjmZ$93)A_+8*;Vi)QOm zcS^{Lfn6>ikpQM}v^#8S0EsE5c&v=gb<6gPjOvc%POLPa!eg3#GtWV~lAzRV<~!nf z6v5s^3%)d&foi9d1Dt&#V&5dEiE9(sdR&2c`O$Uz@g z)%-DMxu8lPs_KH99?ED;|EF`(M#OFXg5b1t!GHm+UbK+l7r=@K9GfeN@Tq{$G$vob z#PHe<`4&N$(|JWKlgvNkfs`wMmw-7PHg4-n-TQt|cz0M*SATkhi4+kwOzRlIdU~cK z|FNZQl&05h^8u^E7U43Q;BWl%qO30V8WGV+c4#$lv}>zO+f z(j z(N!Xy@(L0vw^CDTpU^mGkEAVi4T7kvU62B?>$+zBl%)IX*y-@}2`m$8Y?aSbX&~T8 zDWrX;087yHN#a8f=Z!SgT%ojG^^InZf}J2=Qd(J>HR?Pgo0^A2?4UIO!`YUVwWgS5 zb{RTU?lAmmu}BB~4V9->NR@mF#lf>+&wlO0_ ziQQT^1ggj1Bsb6!80jp>#8Az)amo~F z)8yBm?z=aYRl6vmUmOAv%k09~(l}a$vGU3&7WR3@2YcQ$inN0XOmgK=T<+_n(_v~8 zzt5xj^x)(x;QSWbmF+^_SVSd!n6dx$+Q0%I<#gPMvH_1$oASY}XZd1s3-ZUC(S;9S zK)}|2|Bwp@F26ueJeT>!4J#x$f|qrn1zKtn&ZvuJywxWY0C$*8E3KhU_MKRAKx3HR zL|tRJ(2a&p!yiclQxrwQNGF}_7H_(_Gl8W@rj^Zl-Nyp{zdLIE1A>46WI=xgebgV+ zzuqh<2i>g$`l}s+G47w6$care>6ort*n}@iPYu%K14fz>1{M-H1+^OXI;7ltus})u zD;I=5GQw@G4z|F+lwjkY&Ne%uINTS_mT8cAmbk1a$|TV7xv+hP_v@H&2ID?DB|-@f zEWO<9omCyxS{rexDsi2xf|yLlNkU2yJkV|1mqQ-vhqCJG~E?AtIX z9l>6<*A_Ien|ep--<1BSk=ou)Z3ls%Q%2xMKW#ryW0vZO0a26dZDXZ>N1#QJwBb$Ej^*Z3Gy&(!xa$hm z2dnS)cwS-hY@ahDZW&wzA|Nr$XbJQP;1oQby$mi!Oy8w#zJU6T)~JpoDGK+;7$C%d zr%CLC^o>s*ZAz1AZzTZ}tpl?fN%;!dkZ*QeBrMQozJN~gn>1rE@@_OHVt#I8 zna_40Sj+o+GN7EW8_HS5d^OYZhtt`YOPyhkCeLXNX)U{Y>9!99>d0@f-HHk_be$k{ zYR+oAw{9Xs6dhKJ7!G`kJ4yP8nYtksj#NcILf&Syz?rdZRNL687g2t`13s%S)?mre z?0H*EDFaEqU^9UL1O~-IeUn@Q7iZu)CVu|>mHr&U$*3>0UGjo|Q zev&pUe~E3p=ci-^f_mI%ofwra*L9cck2Wd(yZA^F$l-VF^qM8B%1#0-{1n-wrqyPe}RE_A*vT{He;c$|JcB z=M&E*yOx<`n3u-baD2Z%zMZtkStcfMR@EjwKvvZ3`FeSzu!|-LLW~=9fvp(opWex> zN}PnOrm!%*P+ODNz^nEOIIX!c%FZMxylrRnv!jF=b=$#ztm8xzz0f@qD$5#=>zyXP zfp0ada*M(axx0iPjh%*^@-aJXV}q=tRoukcVkSSWNYT|lr>;$$SjJ8HODj5y z?>YW$+s&C}=dVIFb(p+4vzaErvzV+Zfg7%tT1(&vKHAWIJ0GCLkCF)9(Is)RDGZtl zS$G<=1np(*`US~`!bX`UlnQU8M5@8r!ndmNu-@^4f0gLS5-f73M%@e*x12Tj;} z(viwRaJl487LS9J7VzW{ zi>v(}x|>CLmFr<2%&)q}GLqHUhm#$@H|J__?2d!t>o^Y0Xf#l)RyEB3nSY;U>Z&Hk ziRdnJ_ltGeZn5Z1?d0t9RD_F8=CF6=eB~?*6Agz`ldjxflOa6%lL>Z)B@h&7DuMmP z5lOvY!&vG&;jQRD;$+NrO64g++m=Z>61hB)I=Mq$_-nPQs~mcRcQS{$ZGXP`1*n5< z&uNo2UiDoDP+^zb+e0xNEV|1>5V00xQ;8N!!xI0{$97rq+mBIX5C)zbnBytBcGm5S z6fa5uD{A#5%#;8J#R#pj{?gEA+f=*CZCHgdllM6RiPme)1qu07ITr?_?XH0p8oZ*Y zQyMXVn}LZB_EOo0i752goiK>P4SNz|k0N#|tiZ>tzD00k`CW%Rt=Qhkk@Ejs+v~$e&x> zS+){|;DrY!?oI?W&1RV6lW_SPFj3c_+Sv&a_RgF?dkGjl)_JVX4|52+BSpSqZOU7; zrFmXKHItj@JXQ4t76^t0TNh16n3&Rb#xtg0P+<%*#tpE%&@2E~r5Hbt^YyOTupgRv z92P+~vXeOK3c)P|Ygf(PDSr_WlmB|Z4qAL1=5yQqMy(8<=MFE-Z1ly1=AQS=Ln28~ z9S>yxUj0h9u1;W|PWK+RAJh)ocJ8xT{zjvJ_}|$rGnZ<9+uiRIHm^PK4H@E7M}B{+ zCqp(qRhwZ^KQzbam{OCXx}fwM*|CS=7ZX`D5t!qr7jHrH&j_NCkvwlDC9?EBWwc8~ z<&dlVw;zcNcWqe~Zz5%VzGm)RJRnBa+R#scmYZd%B&IPmIXsVJnj6GMdLu+E_t%6h zpfceb%_&4=ZOd-|rkEKsek~cHyxUAYdD1wWu7VU*nlMg9(SDi&206Nt#!mV z{n0rq8=DJ(&D`C&w_`{M+@W^uq?Fs%;Z179d7qYso`T16udZcS5v7zMh_3GV$a z8>zpNdSr(jNvm@;IJ=gdBuzKz$gAX0L{j(5zsU0V4O^!#9rHW@`^bz&B|10RyNF^j zG{JKnMmq83Z*Gv`Dv_V*E(wUBuUaW4e7_)(9twiE0g0dJp;AP3b;Hr7bW&B!K{zEsDFEDAk#+k^ zRHR;F;DuDI7hXh#dsW;s4^6gi{l1zQB0ucY5yLz;F(0RA!?V6w-ao8o2_a!7tBZ!P zn3wKGa{RZ>{t5|P)Z6tM=fU$65smW1)<{i(oEhT)$HM7Ia2Q`33vtYQn1}uIzEUN zSLkC*z!xejQ0Q|vi`(Y*qaJDBo3)cUpg1BdbO1w|*phSD^d>%Rsut!4N9Qn9HmUj|fhh0Q4w8_z(8YLXl9<8(FRTy5E%kD7(|fQTR`INqoY zk+?M0%xvzs&LjW;Uxm8kI12Gt^}zB)mW&^4A~Uc2C+Tik*D4UvXED$>;k?3FJ!}UN z>qnxIF3WdV`BM4ho>OmNO&jk2bapG$Ifm}=!%pTEE-1$Ngk9@T%r^$l)=@#>XJeUN zu~!Hx23JIiPyhlW)IXyoP@n_~fYXiOX0pOd!tzZf3{*atAi0j&JHb3mf4RBW0Upy553L$_ILU&`@hDpD|DF39K>@rd zd*mjXsZdpj$J)@k7ijv+DbH6b;NKh|2NjSfLWxR#%u=-B`XI~E#c$?klP_phFy1Mg zyxtaK9}PjY^1{L%Sdx?;DsHGQBN<3j99tSnEDm5Yr<>4$I2}E_CUef5E0pmonU$HU zK!9uZ?ES)JeY_?moY^;F!QM&?9jCCSGDv^_mp|_=ctUw)8 zq%eMN-tDQ?G^EJoe6}amhaaWjnbBCI7njm#tWw*tx*`p*yZCe2`AHt(U=Tzc2lj9* zuqd9-sTBG06-r-$C*6s%-@|>|^J{_>HMTj_Z%QRFHc!fy2gwFQ`Kd%9Y+4I;PBFqh z`^;Vc{2i_Sh$cwDnbC7#@-)Ftr*%Pb!WZ>WbKVW9O$cE+C1Lo_sAYgTdrm{@7+rWx zZ+>|X(@xuq^7BeHyFo3k$6x*%9hDtqVM5ljD0v09I~_TJ_YMYG=!qLIZ@2e@aO3MI z;FHYIP{61m#sS`|%yP`f5eV^GB8Al#BoZQAP|28=G;qSt7D+yfq!c|}J-V}o<)~x{ z{15iMU^y`S$Vk1a5{**5QpM-^y3M%k?s)8+Xtcc&CRg-IU%N&he<^=zA#HQME$&Jr z=L*c}oFKO_Mys-rFZJlVQL+eFgelhCJBUS|BWrHI8$WzM6DZKKggt5^7>g^9ou)*@ z{nmkn(LnCXAj_eGRd$u>TL*i^mpTDE0AqlOcyfzwfm{1H0Fk7AOw@noc1M)A_7F#j z_hAV2m=_n&|F$ZK)ZDt@X(LU7n@KPlU|tQ7h~S2F*y@6^imzvNh-oRQDh3LcP4Yrp z44x!aTORxpTCAFyO~O+E|L6)}y7m$jDVavPMHsz30+!i3-x>tP+0cc!<=y?znE6?T z$OcGZT~G#=`+gk&wOyxC&}4y2wX~yU;yx(#!yGBD8XNTB>St#|)%w%~*GSXlhb}Er z6=oE_H;#|Jfe^bs2YTC(FkJcGTQgh8mKI3p=L$heU^ep`3{1^<{2uf$=M!{nLq%fW zaleuwnhlfW?ILMp$WBm5`c$4JrmMz=?XZ0mX0-{v^<gk#f}y z?OKl|FiojyljEsGn(2ALcIC^^m4mPG(lP`DR1V)ee{=b({g*=}9@0P0aO+*7fhLD) zeWJj&HU$>GDQFv0>p$@62Lxy<1$hpy!~q znDP~GFb(Ajxq)8k>@ZHXlpgjH3SBl{`8^ofGkiardDZHQI`>T}%>f?Y#&q}aHYL^L zRMI});xaSaAy1CU{&4)E1>&YDsGC58o2Hd*PB>|cO)YMnkZ&amezXmlGAR*Hgt;R4 zJnxYVT=ZiV(N-*$iDSB!!?C=@eeZ_k#12}W2mJg_UA0bJBv&oRQ6hxD$*8Uq78cSf zU>UC<{z0Z|3czKF$Ti;WVBkbvP3xBms3dYNV;6CS)DppTLV_GsC(Ad}$3t=VkK4{l zI5bs;krGDpJQYtCB*}l$_*IEPg-uM7HYKigWLhS93;e0Az8<9*Ip~gu*ESYFAAELi zYs>$~j(lJN+~%Q+_wdwYADWcNwabFEGh=C2$xk6>57Uh;)3CJAxtU?jutCA-NW(#nv)o~tt3ucv{W z&1)g3bO$_Dle(xvB`@L#qrDZq%Z$J4hc~6QeZZ}p zW4sOo;`wg)cDJTd6W>L(0QMC3v8nVvUCY_FwDCahyjQ4> zKEux9J(bp$owneJ0C}ob5TaFUQ@^|4k>^XZPlcP4&Yic@cJYYV;(DwkxJ!2*iatuK z#d5xlKhJw*%SCL0#CJxYAvP=hpu7;2`^`M^#Us;7F z0!5R%5O^6&)vmfms|M)kZtHpr&ooF?V$Psv_}{^RQ^ z&6kMzUa2$V^gNIgmOwN4)9(wUdr2!}ZGo1Y?b%Vaz>8suL9iyRM zh=7(SKY-S`OT~^;8c>q_%@FBAu!5?aN_Hf^G?IN9dw~bpPcaX8?8WDta-%8H8=;V@k)yTG9~xZ@g7V z!CCs{UIy}Kt`7di+}_}Hrv-^rc*W(z0g*y~XJ5_N1IcL-HKx>X$AB{Q@Uku>V`%3b zgn~D(u%iPFwYWijQ)GLMn%idFUaN91ulDoBJz*eTt7cKCb@JL8)ig*}HdhyzWdQ`< z7rr6XCF0!zynWzcqUihAc*>xsv;X`SOJfrA0ao0}GhwD=nu=5s@1MefxV%{wJ>L51@eMnMHi{niQ# zSzlubnNQTERBiAhxBAql-NV9@GG?bHR!36n%oIdxWFdfhw5LufpSRfcg+_31Z!RFp zYPw+Ze0J;xnfRAA75@|1s`dqXxb%(~cnKDYrV>MyKKir4;JU^&BR8ZZ>X%AiVHqi7 zapgjZ$`R_=7U^0?ZPQ*8B5uLrqpdrT+L*x1Q3Z407)IZylA!j#!j=|D3v2@2R9myS z?(?{Ii-%;>d`+yAss1%VTpXj?V)Gq{`&TZ6Cn;m6d?zMrStvpX&st}q3QM}ROpX->^L-IHsoxAwXgsx7ezpdH9`i=Gm0=~MGWHw|yMda2CFm)13t!a22Ok{o>DQOH zXZMT#V-+D@c%hXVkLgvS5sZ~~uy&TnE}Rv!xhu>qb}Y<*`w3&E9k({rVCjL|HACPV zRKWoQ4T2hdSLpv?pxm@yAEjT=dG4_;^z7lI=OLu#3%YDp!@TcbsJ#bCqlF<$FEWAl z;z&`&K5>e{@|^@~zkF{Xi%AS{5=L3snajtkDNak-A7np?JgY)x$laircc|rLas-O} zYxl5wH@P@g;^CiszgN~~BM3U4TVm`N!_&<~NsL8k^tE0wc#M^UVOTnSkI65<@jr{i z%pv>iTtxvKqrqmCSat5>b)fl^N$M-s*FDt@yam{JNMvN;motwXK#c)PXR;JAzxND8 zfo(={>Ln5dTgrTaE_cN8EFHU%+=!;Ks;a7eQzOF8g zL7_whR#8liY~>v_g7H`7j8v zEVHTza2cIztP03DGl~F^9wcYV9>GIcp<0YIZrMf^ITVd~fXVOUc3{vY7eMtQ=G6qE z`s#}Lk9AzdUe%qWvy+;g09oO-{&|MaVq;-^r96bqlwUx?7Av-O`2Kegpqvj8q)a zLHw=x1Y+Bzj3-%ahI@9XN*eU~X6--e6|MvfFT5dzPLbiKM@zO_G<&9bc9>^J$|nTG z;>|%*L%%kP9z(L^dKK?~q?JoiB}QT5SZ+a1N?0H7!O2b6v2< z$O#2b7&+g3Tu+);>_i$mliU_B{>|1pA<3ptF;o6dKoas9FPI+{1> z%5$67*zZUTHf9yar>@Z3=vPs#_7|s&(kQb!&qs{>*mjMRBlBJ3OAQwTl21DJ3s(Wm zwq>L_D#GFxSGH-fZ@ZV*(;U!VK)r7>1MvbqE+ce|vWfN)S&)S_W%JDC5(Eekv>jf7 zUOkYj)xid>Dapo1Lh(xcL0_YZBXadRL-1hTqdrA5og9->zP!pq?FS$q;evdRU?U3= zH#ob}rFW%3fGTuss?Z@ryQbgXX~{NK;DhVTFG!ywar&BqQ4-izqnUP$p4?^CG2?M- zo`_#{ls&cu9Q@W`-~o|8ap!|0;u@Sd(cxuMg*R&%k9pPE)=4ZGE879;x0>4aMY!TbbcP~u%=cTfo-QNhi~ySc z{dfo)dn~@u_X~PlXftXEX%rTecan!lqJ>}wcnQC?H-~J=u<(uBVspEhh&^J&To(bm zPokY?##yv6@o7_|*L9l@8C5Xw2*NiQ#V2n8BMC)6>4Sl+b#N=&x1TWoVU`Q=4tI{v;n}SP`p?^u;qaBps7%w&o};nLDi~PuW?wamtMmjzzku z9u=@IGXJ_9xt*jF%Y&U3gKKZ^boGzIAfcts~4rCF&@~QCm#tVKrb+dp9BRFr#s+wVxcF$ zVgMdwI7JHa$0O9dsQLxVx)cYHpY>l6mlOo>IMah1^e<&W+jNzYC`U4V6=i6$4erp# zQ~Y#23T|($Z=emsu-wr5DS4u-#yOFqH*y{;5a%{$J$Uo4;s%~Z6|r8SK2p($gQW<$ zW4UK%VVZ1B<5VZ&V28xpYcSv+qa%JIr4=wxlyjsM=hWxut_sh`qm_ks*~@H4e5OW?^66}K|24G~I1>xD~LS&NJ^kE%YW)(O&WO+UY- zpA%dOJxjk)iUCYe9HUvK>Fq{Sdr{2n+US)Q_xJ$c1tsOXjDEowJbeo_ zMD&-_@Jd(%iK+0A+sFl6QReIs)`HL}6) zIC~Euuk3R#sk9}pK!fiwLD01_%QY}L`eP)NHAJgca+>r**L~ok$>WuS{I+7#MCwPR zPMVUJ2sOd+${2r#0Zl~_0{-$rtJ^b0RYl~`XvLli>m@}KQO%96FuOz2U-9Xo!y!54yC)R zmP(MfqQHFWIhl0_Ew-_%$Vx!W32ymHgn*{zWa5-#M>=tW8c2)lb7v%sQ(9JcqT{aemwabOj_~6$0k+hZya1Yr ze?zK;I&mfqI}Y0zF1U%Ea{y@A)FHEStQwxfwl>wkyEvfm`v~0sw^#HWtkfHeQv2d! zA?6S|lTtFvqJ<+fYpvra^Q}%1f#h+B6n#GP6x9jTM78GO2hH$f$d@U?x2nL`l&<0t zEOVsLbjm5w5Fdw9orRph_2fnAFBnOA?O2Ti9h{x}U6_^r@nMN9`}{=KQR3u=6(IJ_ z(wAxt-N5A~-$Rcgl-p%oi;eB)7G0>@8Sc1j9Q}cQb)Idk+?2^mi046`c#oa!n z;Q^_?d!*`Ik&?Y-v??W;cm*Ik0gYt7dyTWz&Y?qL@+&PN50>`gf45f%Qe}Vn(bDCA zHKtsqSuSPG=KM|H$-KM5MB4g=mNgHcR_%ByP7s&Wq>nU!4YkA+EDrI`uo#U1%5T%A zF*CHll-#qfPL;?o)u8NKN#rrlQnEIk(#Ak+VS)?Ryobah-V28M%J+#C1nOPSL8k&GoaDZFs@^Uxd! z=-xd^SmAdz%-Sv!-ilryR_m?SLl9~J3We7sXR+@=y#@~Nx7f$*VI6KG3?y;vrd_Y$hK!F2Y!PK{Gwa@p!lGh^7A zh|+rz{;zEI2PkS9YjbIJ=TMSJUEk0(jkH@iYH1z;xXZHr#1_MxQY~@aq(S$fz3vTP z*GQHuq?sn2Wx#-z$sBTv6ArYIHoC5OHu$573s1=28vUT8mS@Wt50Kd__bTV`rh^>j zkMurfM5isrZC*t5rdQD?Qjl6Tufw@xUTaDsCYWYoD0^5^T`1&2u|LR>fhmjdsFk2L(}u82afUKeYkr(XCajqS;y9}o4?@LWy5 z2$L73Lvb)(CEsb@+fnALaFZ$d_}IW{Fu?=?!smkT1{8uwc7YA}1Kn3BNUvYpJfiMRc?)`md9TT<238I$2RnbWQewu7 zsHc(kg0UF1Rzk?z8fztDfN;=1OMScrxw;UfKstlx_d1La+&DG7B;qOsIjQYm9FUxE z@O@1VxI6{O}&U$&0iDd}t-e7xWPmwD%nJ~CjiH7p= z%3dUVP99x$d;Yv*yd?U+J0@#U5?sB0Qp|;vb!Y+C@@z6U%CdiszDIVVkn)p87785f z0&a=uops8T;mp$Z;2Pc@72Dr7;o-y8mhr*2!Hn@&eLwScJ}AY;jHCyYZGgq@`btVM z)U$OpbHRez%Fi*V_c@31ZImYN;7xey;{7=3odL@xPKAqJV7jpLPSlNgkQ@<20~HFI zSZTsL2C6IJWpmuYa+{Fv$g%^&FwrA>MHzug>D2WwCAznuw~=1Sy3WW3i@bWtLz2$m z-R|u9<`pzEM9=-sS0NPw0%WN%6H~M|RT+(LMad*>rrQ#@^s2MTtcSo%=Qh>05u{?~ z)2jOwHu8My%HoRJxbPrLQ*@S|5jEx^+402bsYoKJ6<8T%1{W)U#?^6D8XTVD=TN0# zzW53qa;56{&w5v|(Fz1}Fs!&09gj%QEsh!jZ8rPT*K@ zJCcD3ZaW@e-dDuhNzP3Ags+>Mvb+YgYCwlv%vdJdn8ujOUgV+WWHS@rfECa_7XhxG z?pKRvVS>j`0k&*qV;+Tr=|Cm%5qo}Z`8f7$`1MWC#j7GcK6q428;$TzTI2wfswjCx1nWd-Gdqp`S}WFeug5#s zp2?qCH_S6Anx_9!b3Q|BX39kT*mewl9{H?7*wyqyV40HTX93 zEYmSz-5iUU?LTl6zEADpK*F6=>X&&1 z%~(}mBMVE~5zK_xV7u35?&^OaX@QRb#*iX+Tu8HOq@QGa@ulqrM8C zwx5&+Eh($#;gC%m9xMUlj~(>JQIGNkYLn;6DxzQlu{ zzQ_*t6dLp!KcB6i16js}Kd!Wcd=yR(!eOd(!w1}sCZw0uOtoe8SX!+Y%O*+Xp*f~< z=#Ie6^tK7&OKw1d^>Ta+7@Cz=ymdGwpA6`gbc+)G#6*SAA{U6ry!4)PbEXk%g{4T-1tV!uvzm3iNFYu8$>rt!fmMLDbquR=LE`E5{560 z$08Bm!t= z-``b+xq%<~Q^#X@`$Pa9%ARlUy%SnuGvlR8*tIaxgk9TpR1q%s1bU!yS!-D#@3Hpo}YJw_Qvw zsM5df{JDois7>S}$;)w=xsBASgqpa?9{*24>%Yb5fwvT0HQuw!So>20npg)Db|UX@ z-8X(c=*}~f@RQNwO*yEWmvJQ>8`HSn#?qQ&h`gZ)d_Rp%kPrIFHChGu_rnE6nhqCr zjmjyGZAj3xwSdhj-TvC;9gFon`@0i z2KDE~wy{q`+#(#hBu1=<{fRoB?oiNj+zWrZtF$E?xDorqXAh|%#dR6hY72GJTR@Kb z{2XGpcZp(Wy&_NS^LyYaV_j?3GZnoD!W1Lf@)m;aaT)q~vh;c~+z)^VmxB|RBJqQq zbHeHQEueyeDZ+hbln1DDE0V#pSG71J%bW*>6@}s+J-g^_H^_P4pUz?SRzc}HlGD3~ zCq}(z(w%2dk@MMxqDAAlDIQ3^EA95O7;W!`8OP5RKqs7x2u^L%nQ@>d;z4gbJ4%}|57 z6$89ptCo6)d}?^XTBEe2!U>4r3v|-!-!msDWi;f%rqcZK3}&?vgd^Z(ijK@`=FuC7HyUH!7EoDx zKERdKbuTR7WwBl?BN*#$rkM3WAx%I3Kq9ZLr46+{ zY1Ce@Qqlzq9yX=Z2&mt}1)`0ay@EvtqkjV+gv~9POoSGOK;*{93aEN|Wan)aDvf8H zmdhXH(z1Cfs{Y^k5*%Ab6>=smj(-)Nb5NEyI{yM439tUp5h*>>Lm6GzxjzLvuFvJE_yJH(lG$j|F= zn@B0xOi{K2-=!XyRnE0@z8vr+i)aVatyL>a?moUy1F;_fe4T#~B z&IN&NJjzwE*MRb)c8upYWp7Jsvt;{>`(YZRJxZudj_wJO7W9Z8`)_`6f}!A%*;gY3 z6yPqaq8h#@pfc~9F>l(E-*YQgad!5AD|DoNiQ5Wvp|a)N&(wqg2FFz_oI@0&U-=W& zW9Xrld;T#X@Z8Oq%ebiEWHolo?8{ZfEw&r7E+3LDS`a8~zNjku!!g~^i-a{SCjS8f zi5FePt6P#;I|Pd}uCu{iQJVqu|J-4ZZ#X5;b$S zYE**IE{8T*`n%U7Y*dqJDiq?937S|YIj5lo6m{6JL^pK$=Fwkz9MDha(3F!z3&wE0 zC1j{Wzvfyg=0%e*7PJlZ_ZU}6isL-_>^}aG!~O2Xg#_+TW4Py}vrm~b+9d2Jm?_t` z6n&a!#vpo0hd6se_DVTNYaH(Yc{ZeEIKUy>ZwK~Jf8qHU${&~ylwF6kupI)C|f+2*E7ssZHJQW9r;lpS{$=f9B+g0W!+=U z`3iw49++}?pBsk_auYyadnfbo|qz2pJN*`mW9E- zEy@xk3aYziv%$@{H~-tB+Nou8BoN40NAf|}+A$ug&&#dRyb?DJx=riG3)hJXL{HCJMdxNItVzr^R+T=WSW2 zA=jcMutPBxW5z@f+fnrm;qVj~oy#M6hG%+%Jz(wMR31RZg8@laL8`MZ4{Xn_{D)&8 zG^0+$9@N9~0r2Z(7hyE$>``)q;Ncj|H7ixwBm1~7wgMRj$?)&&P`vf5G}}Hftgu#D z9XSwo&@YA^q#!f7LT;uep=`JD@RpJjzD;kSa)d@;))4^kL$)RBT9d8LYIa&jxKMRl z9Oum;$}{w=nerSK3%R~fz~X{x^us!%Y@6PjYibt&hR6wG`5_`36e5*10_O{@=Cr8{ z?X)B+*z4jip#yFyxGyX5WCJZr4Wh4?M+jPhPuOde_yIG(gpd;@O7;@R%Z#{6w ziDFCas=Qi(LSGTx&NeUEd(Jnxw%lZU9i0)wzt9f6B(ez+eo>5QsncxRejNiu&x0)_ z*>#FMTjH?p!fb3nj`D%RVufta+>!v5BKQs-hedB(sZuUd3RqJRG4V z%Jz&@ZlpV|8^-T6QPu_LBx9%Vi6Y-R`sRpTD<2c6Hx9weeH=j51_3?bXiiW2ST1-+ zNf6SaY`UbtBigPC6zqX=*0Rv7poJu>B%Qtop??7L4OV?XjL#h86hYSq{cU>2eB%Dl zu|Z=81QNhbXnhZ2LEjxS4T8jvgzueK)CeR-n_}XEfC#Fa>nd-KHD2l;c~aW3nlFIs zVsE~oZv7%!e=a7d`dM)ye9o>s?^wz=9ohT~bqu54r29x3t4W9<%`KC?ou_tC8j^squ;)%wUaR&i##1N8URk6xCq{lJ=f`N3BGLj`3A~L?wlBN2R=I1+_iPq_()WdVM_?0y&mZ zJXIz-EpX>|c=T-DX)<8ZX)S&*L!kk=k|zzgOJ9pR%DZbuF6_^1d8WV`9nI0pxUl%J za2|V>5ia(&SXXxe(F)**!57Y!r4P9=;%A2XS`IWfsbWY}houX*#=sNI*R4 zqf_|vI035a7R$}h3m!?Kj$$OCH95zO?1%bR25syAU!VLydw@NinvanIuV$PhQlYU_ zL>KNKNf^iU&Q_Ab=TR7)D#&^@LCctM^M3F9j?0zuZb~n-U3feod{VT?0;Al=!qNP5bK_pfd2n{ps6Svp*@P{c*2||65hIjV4F;Ijxd+l46y10Yg(vQ@8Zl zFOs#RZIn;Cce|$I2i+yc6?WplPZyK_WXPJ;upz)7N^!24S9XxYsMiwq*aR!M{&;LRjfb>qG#vkR!s(5IS6j{q8gPW!tYXO)h z`UBK(Irm`<29i!&YH|VB*4{6&0XgCPe*gH6W&O`et?!;2YTsal3L5|Q>V#Z3zzSX} zz5H-O*o zWJ%cwEfLe7Ed@r6iQDRjsrJa9FI@oX%RM8CzWrk57}9VX+MEXeVH80xSFCnBTe5{?8gPCW{rBdWPexicSxgQqR%}!|TwG z(>i^PKna}j3Ov1!hK=3bn@RC9adp0~2+m_^bV&66z0~23iSY-+;H@2`CxvdQstL;5 zwvnpXE3w^r%TWV9p%l~t<df9YX6Y~a_ur(8Y9H)oIw-|LEdBO0WF zthn!nvQhB01>d1#P(4LDwOzuh!`vLjo2b?Sdhb5-@#T>TBYg3h(i=fKZH3Tnhyis* z1e{agdiVQVc+iVUNpXGUm)%viCeZ`DJC-&;ko8nkmwq@YdD+*x{9kP~t$#RD?;zEo zuL>UcbgxJAkBT$6?Py)U+6qO4K1~c1I7CXD%Io!e@A4_^Z&qqr(orCLgQ+2!1wZ!) z>C!JcGVR&$N;rP~GB3%3Khc@-`6*0llv1$~X8-miEx<9|STalqmFua`2)hYwG>ctt zH^$AT{I%DZpeK027Y3j7zOD^3)rI1s+J~9Ihd*#K{ObXny^=wJnE4NslQ^P0+UNnP z-zYRT5nP&Vo8_Qhx2!(yheSvjh`}hV2}bz2ZwV%RY&m$g>Y!|?pB)YHssS9=d9F&b zmNDkfnIPz_kgmBIPsIOfwEKc<6|lqqJfT3&zGI;m&%b0$P=B@w&|$DAwQ$42M2`o@ zgiYniNpM30AkRm_xokOO6eZq9K*xlzF@Ak;P7p_5cphDySW{Xq7pT-v86sM~2M z63@sK@9iG&@djUUv;|Q8KF_;sczx>G;rEiu?!CiQEN$7n`N&XY03HlGPnv{u|60Vr zqH%R`inRZ5&e$SVn~~*28q8I{OZu>0VGsa@fFZ%R0VPYE`v&QK*UtHwOO`PbI^hZU zREh07#`^C3)Qim-<>iLs^QH9zqmcaq_L0r4SrsX;y-qnyfput?TVyg}s?ZLM{1eG! zAq(7HTheuOI{$FA-5qJ4pUros-|#byd3X{)rYqeBg#wECq3x}Cs*k0G5bk|lMdFUE&50s>1%`JS!YR#7& zal8s=ZN_gJz-dN^LzlCz{g#Fe-)k9Jl~J{49E99zwmjC>gv$0(Vw>H7xTM)r_x_2N zUQtTn%_VYe4H2-}dG&GZA@rGd0!15_aZUl_>ms)HVcu(V?N-rAlccB)TcV=`(};RKP;4@n*E96?zJ|2m+I#Y6!#%96xV;c9?!l+60M zNykrze||Fp{mu#fvP|rj-Tdq{EHFC{zHQq^zZyl%F8JYrciEHEO?5|2K^og=$Dvh@( zRY&l+;j~r}zEKt|W<}-(e7OsHyB)sGU)`ZU^=NtWnquJUc{0@am>(b8-`44AhFuip z_E(a9uSYu-0Hc3<#JcU3D9t-3EIpH7)Ha4ago8DP4QRuBhy~5u&Sg3LuLC##bi#@- z+uoOds+?zu(RtFj@)?ekgd!SoR+tiifw(zXB*6$wD|%HB`GdXd1lIh!&mX%Bbq3VI z!26!*9uG<)g6H(ZJ=&V3kg6may&XR$XuLqp>*#LJv+{fbh325XxjQqj$R)QkEW?xJ_Z z4T78j>c%!o`OBv!-aKFe*6pBWaFnoNOHjkesz%$wsB9Ql>4|rgi;5+x-?fqH!-u%N zj9X+?PjyK=>FFbX>FmN)CJF`3#4VjAxD#Obi#8o0=|^uZwG+kfjbb}MQ~ot*{`F_r zqq42O|`a99{kMJ zSDkTJEl5P=NlO=W*t)K<2FD`GAIhxEL-aYt`k~c^c-cFUY z8ieP&C532hN_*_(vqbUJEN02B9u{lXY5aOpp0{-*eGhFbCOE%C@m^gSYSPat^&R7N zXJP0G5IaaHhBo-1N77Ly_jfa-49%qs>`*4?PCp ztbj8ESP2b4hJ$5YFASC$*tGC7Y;9tkx{S-2(R?vw#k^s{UAMiw^^1a_-Em>AICn0{ zKkg(f2U~j*(2DvU$DiM?DMG1b zo%uz8#9@`rF5Ex*k9o`AwfQ{)jJ9hIJU79#v{&7Y5cqd1F%Q0?oxjiI8&KPR{10&e z9DBaBEQ|R5IzV}(Od6=>12Ay>#F{D^^<6qC zVSFmf`GfW-Hl$tXf4R0AMQkDM+#B@(3aYeQOy-=4C#Q)c_WuCotfJ=|RP|J?SGT~E z_QyR~lD|j$zGA0%Y~46orixfc{0vghJe~ul>!AwM>LM%Eb3w!D;3@1vhp!^X6h8)& zKlt;8^-NZXP2Y?>+`@aheDzyxon9ki7k-kygz=l zKZte1_9v%`@7`=byO5NQ;Me1BO%9?k2)==sUKx3Lig@TP-1><}G(qzEYk8m`F{S_Q zgN^S@8mV;Se?H2|zc_=LWk;58isDWUwLj!2B$d0L)(Jxy7g?>$oo5Sw(;ey#Fg$AV z4+HTLP@UK>wghG;w|JPCsfd!y<}IEewIP8Z8-90>ST3`cEu^WSz)+2EAlu%rM2}KN z?q8UY^IQ22wq^C+P)g+BMDqaU9A%~i`P(K z2mc13qB~~vgTsqsUGoU3%!n8> zdD<6wjD+bLv(di^KeiBj_D695;yZo*nJZYeKA-5$S6drV-yrK(h06K{XW4UR6Jzsz zlaH$v*gwE7;SC{Q`B;gbV_ zeTiz77F4&_pI!VcGk?MC6rnva^pk(D$N>cDZ;`XC?r+x_2Og3oWNGFE>0Iwa0Lhs5 z?%Aq~S@wcKEz_Yom-b#i{6)SOomIgvpUd>L zyh41;*P4Q=#JN`ooR(3-PNdX`lTsFa0P1X*`B1ilgJ2IV@<^NQTmLlg}NuQ-692u~F#UVhR zLwVGdm@@HPlXl?X#SRsMuD;cS9&hvi2^vfoD=eQ29fY7n)+y-3-nEH6bcJUQ`;&WL zOxMd1cCl6|p?Un8ZlUFOiP3Glfzke2oqu@+77;XC8mi;nvUtwmbUY@^*QS;3=O=-> z&6bpuv`>^{p4{b;%c%B>7f2nll|oMR#6tJ*6J>$m-!1x&67v)HMQMUQNf@C2b zSPBWs&MAMuz{Ctdehd-;OB3YUYu8nyLwqQ3BS`Nw5PErT(mA_g+AwILz9;^4J7OtW z_0pGJ!m)H>-HxFJlwRtev#fSr00V6~8nz^TYR+#F63QX$f7>9KhQq~GfR{1PA$Y-^ zUmX>0IH$!U7wlqDMduh&KL*XlG-C$pG8N`?DJV03k0+9%qW9(qp5IJI|~V z=tdC=zD+kdjWmL4Gi3iITw8l<`2&78w9EbO-e!)3i2RlRq-YEo1YA7-Z^GLrPqKF1 z*XZD2x%B@Y5w)(u1j2`9_Kdd+e`xr;k72`^&raZ1M4aC);fAya9-+vjvr9uXEe@Ne z;m4!LP#tT#$LgeIiiu&=$XHCeh$sH>!(*Wok!V+d+4^Iv>a;-5gtnO zl&^EmuBk5nFxXR)@a{RmboRzBzvMniYXh{< zhC^&`$ZTn_A4~5ogvI4`EN%w0CJ9iseWquYjVe$D8VEYCS+<2V*3dirrqBkxOAg{8ltY)<)DdsUCI8-J3$k2ecxW#7_;WmQCl&X)=Y`CfbeHDNCy0Qu zL=abz4I(M{L&S&oTRloL3wiwlhc_Pd+IV~vbbF$Tm~vvb6c18E+Qx4^*-}-TsQg>< zEZz{YOYphe$O&9O#`fUHh|*OL{NO{PgYn55h%Z`fQo`$l40B%~82`xBL=}hN+Jh_( zS~M%=jjxf+T+7TVBYF^}AK+qd*_Wktmb5lrjb7LgLU#5o)bZ6n2eu>bki-m3rW)@C+{=~>3AL9 zH>^9Eab8)yNiDVZeW=z>?SlU>9rC<5_4A;^KC2-T6HX>G_n;0bm&>+qfR!QZd`aJV z_x-}58m-Q`%O!>}?#eb_+0um&F6ZC1iTlC0#*K|mgXw~Glh8*6+XB?IvM zUYQaPyznNpPgv898F>tgmm%Ilfom5p`u|+g^ep+qdq4;sEcQ1uO z(9ndDyrd;yRo2|fLbsPg#bo{de)w#<%{;9vO{bBjgAJT?ztt0-31~B>AN&;=1nCzn_;Ot1|C>-Q&jdj z%5Ck)C$@OV;$Y)``^QQt)i+is$G~iL|5yJ0zoBVgmNT`b?|*REc-Yxx6f!1Ft{%4L z0GHG-;!Exx-x0;PIxP>GE-fO`-)%HE9*wuh>5h&TrbUX~zZ9l5uqw!HL}P-bmO4?~ zF{;a$lu@;Ys+I;I0O^TD@bX#rZkN6?vv={#j#kKssQ_bVr$_~ zX$6Q9Z&rq7mz(g^P;HzzqB^qX zJt&W-t_IZW9(Vq(?%P`do;p7!?4%&^LWWFY!4k@1{9U>l6761W+MD9Htx_EqlKOla83R3-mDz-3R4m~KN6KDTD z{t@3uNV`;j?$PpEr-~Gz5PE}Q<4ORfCy<@dQYli=LXQDs4u(Q8+=%ficfTzFfhE8~eK zxK5aJgNbV_jP?Pnqk@U&8^;16oU{F1CHLwoK{BgwNvzIi*zR`=9$D@g(fgSzzG1F( zs)|Cy%5Fi?DP=1ug+Fn?C6vZdv)BR6Q#IcNMPlIsj0vi(Jo;0zP&8EhA#SA+hR>b2 zW1#e)^@Z^+VAE~X6H&_u1_4fS>p?!LC z{Dv#Ve!;D?eh!UU+va2?>tPuNCb~+<^SXZpU7X;I8M9yMkGJDY8-szxND3(IOc4%e zkv|T1?%!tLe6`>OXaO_W-;g|J5^bZi7^5U1LcPc_>;tj(#UF%&TQkcw>1bqd3bRBW z4qTfN~#s%>Ser&~ngyy85XcnYdWb{_Y=|;9& z4JOUs9beYHlLI(0fhOVA^lev#wE88SRv}HmDsgEn!mM8ebF6}NUuv98XPd8szyIb= zc&#Ww1QP)eM~hVxV(fOW43catH9cA-sUd+h@@-fm6*2QKmHBU58sft2Ut|eezu_1R zK~o>nBGMp_bbOJ(T;z!+HJ9bdO)kxltw>8d511O*33>dkl|>PZ{iMtIf(F2yedg7I zEas`K8}4r@Mk-iIK{tSoIr!Mx4(Q;iLi~=YD+q$F9Q^C7v7r;iXnO{*EJ%#1?oJ-c z)aJ)Edr>SFv!juU99|Sp?vvbYRL+(!^tB|(YVGE9TUJKxO8*F(0M_7Y`NY^0=Me|- z9L|5rfV8L7I~hB-ya7o?P9N)1lN zjZdxoK3KB%iQQ%?O8lSWQ50IWZEpP#)s*oQq32fADbWi@E@EHa*SS{gzmc|)&Ar<# z$ig{i7`=273yx-NK@VND4526W+A#8T4H+OhFH<@kzz?4FkqYT}Gr!87(CI%%@KVdt z`A`x|*5?4^q8t=(LD4$cWK_cRln=Abvl`OuwqAz#bTfG8DA<$A$iW||< z%)D#TjXbRM@8Bk-Or(P%ABa`P<4$F>!n$g{eb&fH7byZcm}Tkc{iX4GaJ`i?*5cJN zWV_k0O8Po>5h;gn?5s47|bGuzqL&neJ=vXEJB05JMZ(7n!cC=*mjm4 z7cEMt?sz`Gd^-}qP{NYH-i#!xQe@=Ash#Yq4w1`VI#z1Su9++%!+sva8l(*e8~KU9 zl5PK1NTSq5Fi8g>j(`j>4QyZ9mjGS>4M#FIQW|qW8E3nY^2Ro`YtkUoAn`{LmhS}= z$N3aYK;)#dz5M3e83*=TscDYsoVT?HOsMhgiYHx`A|Dtgtc%Y`!$P~e0EHz&NXR|Z?9%sgz{FQUS+aqy&WJ&BGg7B{*}&>3t{=1eK#)>-Pv8j(3aml7mypr9S9NP3! zQsy}Q)*-cV9KelvT_@_0 zc~Lugfl{W&`{j+>b}#hHckp5Mj~!M3k}lGwk`>OI@|Ct<%&oHzavoaX<7YUnF`31L zNw_ta;YbeM<%3KFm-Y0GvUad~>+RM)cj@b`}bVQJNCi*lo}+M29V6rh^ZAI z{?L-&$<}+>IQ=R|Sl|=KH0M5Ej0lg#{`#x{f=52PdL%)Y@2hQRUxMs>%&pWE(fEB7 zpNQ`I-a0D0&VBztGPEaOaX_G{Rk$8+ej2*>vNMt)obxC%!}odQhts$%4E{DvAE2=8 zL0%?UBlC!qSe+8{Syj<^{boI{qT|P4Li@W_kHLC)d~X277{a-&>T_|07`@?HHR?-wcSC9oOxWR!pqIyf@Q1`5TM`N7>t^!03x$Ozr6CRuVNWL>@( z&N((PcwBdVS7UcSyld<48`f7VJd51`0GhEKMa6^w8EGbdH;h77@yrG4 zF(OxHdEX}Z>DdLpp<~X;6$ZG!%g9%`@jw9dNII24a3cIlcElizkiX_ItRDxF7}pW!#`1R zHR64wljpDkLNd5(wFSZQ*+U099GmKyXB>sKK0^h6$X1K`EaQ5VHfams(+-B647rU| zf}rGwO!XTTU3GjZtr%u$CsY%Nj& z`At#`7JGyCW($5#@ddZcGA;nrlZahjH>H4E;_b89JXC=Z(LY(C+m`L8Cg?LkG0mHM zH<3S1;TU&PaQ@=y8oeE!XD`H=i(gr5a%ButYO^^9|KC`LOFHLjRD1?}ttny#Id z-(>HjbpG$B>{kJvyHl-N7T5+t0^yUPw3(Q@+P@W}&*4_$n=; zQ0#6_-l-G7WKo97EWRZerb?N098OM&B}j?6Fo}ow(<&~SdI+h-U+@SJ4-dw!ngm0@ z)O~Vxf8Skw<`D5z=tX74U=Dd-VPK8$c;X#q&6rs!=ug$R5J{Bj zjfS8JYA9YX+`|dn>z}81p+qQxxj;-_`}9?|x@8TCom|2gV5o?Tz-(5wgyw)Pa<*d@ zYQm+6gi4!9abOCI08ob5A4MRXq2N#xjtz~5d^wE3tq^eYc&Y4z%xtGl_#F**ri_~~ zdREilabxYnD$Z`mH3UVVxgtex-BAXBQRi2omIb^&>xf+#;R*BbK=jRc4zzRmY|2K0 zF}-~Rh$tV_yKI=sbY&{puu!)qO)X06#5)9Ca}gGJ)D{%4(g+n%KS+Hz48J27CQCwo zb&sn=8+`y;P*C)FMiY*RB0rbY=U^moY&`3+o(z^o+!<0+0&ouCj5Co<0VC=s({pJ|9VL@vHq9GwZkG)B>@jW_0&{5Y@q#C=)Se#ipmt8 zG`EGx_1+5^Lvb9h*x_suH?mkw9MPKg{K*u;O=ehl^`8zS%nMIx7PeGWSGillEk^GS zsvwnkRGwnQtzIXzO#GH7`9-oP=uuY~vZ7@b{kBkMQ#tt;&=Fq13y=lE;&aOtl941U z*;d>5OgUc>1tMvdR!88z-cuaA9kUO{gM((2T^1aV>II+8=xWm@l9rT88n9L zJWya)GRa1)pI*ew58ODbG_6h@|EEt99-Xx*nyxu$w9pKPRH?+4u~Dt!#AjGrd(=VJ zo$QW6R1v(M)+Q5^th`pbIIxIR$YBtmm8|XUXaw>^dC;V%vQ~xlOW}{x2gKTi@i+kgKLEhm)HsRq zD}`+D;jzkPvd$>6ogOKBxJO6b35Sa!X+!%*lG57!1HsJkf_3B`4fe4iJSxZfR{%9X zPoyhxaF$-?_Z|gB%e8~Lt)&=_aa4>OBH5!g8@bDK%>jBuSpPT8qBqRUNF@E; zvzE%>PUzy(OH}{a*i}S$X~A7Y_&Yz170k6xK4tJw)O9gFUMcDQ+9)RA03-!dThc@u zu~k*lU1-+2dI>Up#1X+5$@ujSSssCOXA~v7 zw&V%VH8L2JHV`bC^BTLbrqcrrhUp}}@Sj-mMwu%7`7^Qd;S1(1a`MBaGf+q7gzSqW;B8ZB%TkiZC6LWe7hAruR#OmNqT|4hJ<7hsJ| z?K4;60F&owM zozNXNTamyznj~2L#*v^<$k9JU2ZlX82)%&ewlmqHwIs8#Srgzn@(qddauh5^O7E;w zExT#s(#WudQfu~jHWT1pu1K51X*YSQE|SKKoQ}$YzZfI_%N8Pt&CCb_EJo#2pG~NITLXR$A%=atfC`qZcn+m;q5nR3nU?4L&l`)Mf*xXjOS2_#V91n=y0;-1lw4OV2T9BeP`e#`t&*!BAm>)Gl&XK1IX4}-FpT=My!J$I=if!o8bN6|##D*eo5{+Wpj6j)BcNT&+q!BgkCK$sg#@R#d`+pE(AyOwzEu z1bV`WO0Xt@3mTq%fbFQr?PsxSiH$cV#XG)dF7q8gw)!0*7|xD`n?JF7J6kXV6=?=s z=}(HSY=lIcZ|ESK4ZLUoYAbJDZ^h~Ue;_7{H$MsKg}DB)Z8T(ob}@hw7dr32U*MiQ zo2tvM@8*R`^iyH78@y{7dS(*?qb5HSZiB!7%BO|L!_g$k6CxpofL8}K?L;MMm!b%< ztv$}=ta*H{LC3eMA;8<-agu`#fLsZHO&QXxyR5qwh8wR&`P&e{uTm}-MGd+R>!RMq zCFiY|f*$w>Lr&(+;}U(v(SzM2UTCvy^3ER}s0F?Lu&O@coa2TXv~G3};3P`eEqhhiER(WkG(N5VI-wX;sU42-j<@+A z{=WacCHPZ7ar_wwJ7MviMw{wa+PRC@VcMHU`Okcy3HAR@%Xio2htV7Oa`AxoWfU$$ zw*t8^r&WyS1sH?Ppg4^3AJr2|jR+8GPZ&|R3fD&iUUWht79ICD50o6{lc84s80z1B zLq6j|j#=q6^e3wAAG$v!#V06X`DhO#%*-~WUwh^L04KZ{Ac2@0Yr(MbxAb2cp!hN2 z>W)g6tHm)Y) zbR!10UrGQ}952|iBb>elIV=;a*)UMvpVri@MEeCVw+tu4i})6q03* zgzHgCJ3ay31+8;Xhc|T}6wqOBp*!w>^m3UPp%chKt{<22nWIJRy5oz1CS@BzY*qyC z{J!GtOIBSX4xwBtdl4qQFx^`k$MhM}_Kj9;^r*EqhXK@>-j^EpYw4GN=#pN^HUU-GFVZW99Zg=ZusZp7^x`?D$ULK?LXC~x(tJu;u9cjmWs_G9NR&<{ z7=RBMvp-~7*k%uj`lFWl(khj}m1L}9d=4(fo7N_95T-_CaapZ&+IiVWf*de?I4hk9 zfWjNQx`r}PQNfE7R3t7j-wE)#lyJ-nQT_BW=Biki;N6w}2DpK_V&LO?(bz&y=XSmd zH$aWu{OOS+tfG6Zv6HyM3NqjDfjJqSr!_ko#@EQmvV_70b{wsyB``X_$<6q4hC%~I z=Yv1pi7hPsQ%bf~IJ_OpKqN&1O6$eK5eHWfDV`SCzY{Rk^L#RAopJdx95(gptqpkdM?BQdM* zaC?6JwxsB-2tkcD*PTw%QQR7`z7qZylRAP#Z+5%*vJ4;Di9a*dcSPQ$VacAW?m9QS zRbV%#lx?(b0&_>4;7RD*&gwR`djku0az0K;aI4XmuAFb$a%{W-NN)Qv`Q@#UV>9=i zC@}oeWQ9;qynIfuBptGg*6s6joUge#fY;Byvo*^t-f>A|JdrEkK4LJjPYva&MWT^& zJZ)#^FzjX_t9TKK!zKK%VVh$SKiER`SlhlxKms_Izs2Sz?&ZKImS0_|l}cGP}n z3EcSOgK1OD?(onqV<;z=M2SRv8wBvM?u{xx>%_aNaUVOLL4yUvC^fcO-!78c1I$=1 z(s4t&%_=trFXQlB6{eP;UgRRIspyceY%^z_1?T0?CJrIC&$IT-V5b6I$iX6A@bR+08%&OA6wB3Zqhk_M(m9J!Bz3ddeUN9#mpX0s z^=&;ace*;%7y6(v(6Z;_NHhfAZ(E8>va-r-WGwXF+4M!%!5_^xRn+@gn|UC_-zN4j z+4Pue_sY8f`%Lx@NGPy0?5{_qq@$(T$;LkjS~k2Ift>)-wsq2t%lMF7>x$%beBt(L z*y-geDB!^YQ8X&m$IESL-aii(e}66M zkzuMnsUOWN4@4GC9Nd;f)HdSZNOlR)U09ew5=(viyrMfv2rd1eIQ@;hWAjHm2 zpW|ZdVXw|>K_y+~YoVLS%jM9@NoW1CxS){s1$r{wnwzEiqnlDO=h^!XB+ekRi+x1t z@V5Jh$3qZ39o_3lhk0U>;IOM*Mn*V5opX>FljAZNl zxd^|?w2bLBZTD;W;`Sz~iQH68CBC}2c`+JC!L$Y<9uvS?G!=}i9fpVE?e_)r*KIsg z76XMiu(0_R6<)Ot8MmuWO8+1Gg&!;t#a-xg>*x0|u4RbT6*?&=g}Wvew@fm{n}f&+ zNLb1tYbS1a{`>|sRn}m0j7p{zp6#!KG?U9Qqh6^s7H)Jq9R}=a0FA1yN6D1C3gV^ zP6_FI$JU^Z%4KQguc{5~E;jv@z?PXMrhj8d)7b+5&T+7b3`&I7C0?Kh53&=4$6q{BxUzXA>LZBi(-X zzR$p~|2YSR0lZ##9ldo@Q?9x6+y{Y6Ah1$vdK3c)Qw)Exq;QejkqR0VXNDMJM)(%a z9SXYBu?WGl+9p}pyO2X%GI)$edh_jNl<^?2$HN|ED7Me}wI3S<{&EYpfM?D)+GOX< zF)Yn1B60Zw>lhLv2n@Hs zrnNdU(;?cd7G`Hrj{QuwxOW+#bSlr7@$wq>yKs9mH-3|QJ0c%C1DLEHR_WxSGBE`N z3raa#lXxWQaAYxrXw+H8R_)L`m^SDoAZ?hP1`adA#dNo zkt=z~gU%+_DQ@B`!tQT#*k0q4J}o!`IHmWi3-yRcR4A~hg)dj9wJH0zY5~0!&X`|S zI~P?*+FEdMnryXH#T)JA)R__9w>9jJ{{K<;p#F*ZS+2Nqs1OriDP`pn1dq8bprEwI zPK9E`FbGTNd(O>mx@=uljh7j73aum~n)@h6?8G6X-4n&dJ@IclIc5=5^0j07N{rvM zXJ}==ln8B1kipv~SKZZG!ofw9ED5W!jio+U7G9USpXojS;DSeg-Qi9VEg)MnbMjjs zGY;TH8e%46+@ZJwXP|a&AT0Ip2XZ_}d-(4jhf!FsOsg_!lZXF>*)#ZOmW!OOop4cP z=quLnl8}n9b&bqGF9h)3VJ7VX$EbZVi{Iz=0LM^}52X!p9{bhAiHirJ@*2760{YcV z2gC^aJO@i+|L57AvaT^9+qZTyteqJjuzQUo%aKH)0}sPD>j#p) zRR3+p;BxM@tOi0)`aKu0P}WmYykEflN2#;`gA4wmDVa)G#IcYWU^b#JVpFubh*Rx! zNn)3~y%aitfL^_5;O^jx zlkb~^Q=pn4j)ihcRhfJU~Pt6Ie10g>w(K0{$g<3P?sz!$PVg z&z`5#uG7g!k@w@*Y9={6B7!V;*wVR$kG9&m(r^j}Z7xhvM()%t5@=6Nw&-anX@p9Z zCmGPc+`d-TFd-eyOkw-@1=h>$RZ_0=MU)!?yoip*%-@%#%U<_hJ^->k7$sP(`EjIh zvi(?ph=HEEPrDNC;HpFy%Dj(onyi#dD)+wsw{nu>^H;7=F=;P>T3oX&a#^su{L22G z0tdq=TB85-y=Z!79t_Z+d^D6N|{n>Cp$V2`EU zMUx0w1bu;2JaKOh{_8?PtZ~nh7%u6diIn!QJjXpIF1LpYN7mq8ICTywA08ZDitnLd zIbv1f!+oh8XGJ{MQ*IX5Ca|cCp=>9_3h(F)Se3rLZlgCbVot0mw_lxiL$>2+4FPxH z_u4Q-Dy$=0e~oPLDO<9Ot6sW%bU3ck`W*W&1xplK%KWnkAjB2lvEV%fQOG& z9pTAJV@CYd-(|+&=#1UJ8TK;fdbld;vOuCR3-kEmdw{uP!@u2OP}Ko{rKiSKpI*zj ziXtU`SuQ9~+C_coPPU{%UAZz5Q668By=CMs>F9PgffJ*{nBX^bgKMb^GvSF;6MVFr zrHB}UU`kYe>@_^lBBNZMlI8h#Zk) zC4*jXPpUe=Iup6#=%nB5T>mlZx6xUUiDs%|5UD_3UVmHSy@P;trdw*DjFTad#oPno zoa~hq+wA11xcSCGX~^N3;Q zU+Ot*vGm|ceGb%Q!&!F*5n=0G(!gVCr z4H?~y5Md`6hHPK1jpb|0`DrlAC2c_!&I&D*&y7GFb-o9iG#&)fL^cf6x!bt+tJEW2 z4Ney@bqedKy;qkL8XPZ6@xPF$Z%+>vGtI)rb+0$H51bB*ay{bob@;06ZCD+~n1|?S z=t2KWnNZ{W+Xos)V73s)Wn9^B0y>eyh<@@`csm2uUSw(gIDiLVc>xU{?w>hPF{Re= zzZaG!9n?GVdprtJVwg$izSQh;K%!wuP1BINjz&@Kg7XJBW#}zOWqO$r6dT(VR4&WL z*wPP0bh!>d-Y*@XgTC^^uSpB)$HrwOC9Yo4$!dn%dF5Wy0OxQ;B1YYdNRB(6LO)^o zs2H+VT1Hzw!atSBOHTaT@wAmS^#}+mfU}1LS?*dRv6>Cg4{aN6|M)t4d;!J0P4`zv z+xtb5Z$iqm?jwq8+t}{lAsR`Peuh3u7G-0Nby^u>l^~$kmaoe&fvZ&Sid((Cz{xJD zObV-xNjomf=h6A;CLf~LF~_9(S94`(fkSKf!19@%j5f~?4y(7~&GWWaYt5J+okR9t zyrni{@c&8R&mPp+!Ieda6kxz?uiPSO<+7eJTUsag)(F%IVn^()m|QZC19dHx##SnF zh#;AE3!ZsmXxScs29aW|8%S00ezlI*u{N|5ptXxne5tCUV_M4G&j0(aCJDM%$?-%{ zJ&Wa2IO_dE&jcObcOEzl4TK9-nJRmy`For60%900-2dqrou$9Q`f0pg&X-)kUU4Y_ z>s#>Ep@PHJ4#~V+Wrc@meGY0V8Vl)q-%tmw$Nq~>%M73xA}K79r^ixJxXhWJBUf9! zw^9$)a$0&x>3?PTC@qBGV>H_2aN#!YMMQ*#qN6}cVI8Pv-fIx+*RD7glhQaXokl_J zc&C(K7XNjWAFkqv&fRqaQ`sz3VLcRvi$iPCP^K)lm5C4^C;b2^g) zoZ_;P33tZ9>uKi_=~OUG#whj?{mXli9>dC*C@teCem_d^`u@u%D(iKjbM1>DrCR4; zP1=K1L`th6SI|2N*3aI&3$T#5Xsr6MTQ~#g4R=(%QR+BkRCG#{evP6Z7C9tfZ30E8 z*I_t$haw*4L9&zvJ z?3-RA0JGdgY}u}ZFNI-y61=@wq0|&yE4?8tJFO+e--O+_=~X^mKZlG0+pr)!#|~5K zD|U)P&}!RYp>w{CEjed<<}rRmKQ7Cy@iDSDV3?3}$!&f_7wky*HY+M58|p~7B&Y1K zs!R>+`*>s%ky&Rq=T>j@s4J&gBfBI!%k2I@*|8Z|PFHxHsh+jKO!1{z&?;*n{jUne z;K8~(@o}TUF{cM(-9jT}YFq0)$WTD%apkX@+88KbNmg#XXgs-`o;n4>MWtB@s^y6Stt6lNHfeur&?L#733b_UCnmEw?H=R2^OPX8AmA5c*kK!&1;`w6gk zg=0hL68%5G~u$^WR=Pr7a!~HZB7!su^v?N5+-vwMv5%1 zk|4QCE0L|6(wC5XGFUsDW=`wy{aEWPH}^hal7fn*gQ%%F@6=LVl0<6!nsysoRzSVh zvQE(=y}AkTc|Hv~1Q}lDTB!>7U-)oxv=&LSZ1s{%5#{M{iiUZ(+%pYm5O|{o{9ynl zEwWMkUt@iYADpoK&1JOnbARrrh{hsw{S48iTkGJ$Nyqp#I5d{=gvzbkVo^bi)OGxE zDo|SOHy|<2Kg-qCdW0-icK-(1J)ucK;@(XalXj1vd6quaR2~j4IC^TQ`GryHfs@Mi z%^)I+yfHkoh@xtG1XWrsK>qXbjBZAy1G(8@vezoe3Oan;f4h=0_hT$r#&hsKw)fU_ zL*+`VoA^s+M8%8xRk}iH@hWw8I|u-?BA`6NCG=X`$zKx2z4>}8nDq!Y&FJk4@b-&; zuI+Z97e#?fI#=5-7w;$Ye-YFFY?Mn3Z1y@Q_r5v5lCfI1FSo?tSylZj`-qVeIF@`E zv8iHtIZLY;;*Ci!24MiQH#1OvSRM7w#g9(&Iy44|C9MNa8w)d_E;B%HeB zO=F24%jA26Y;T1K&p{G@TPR0}>;1L|Wtk%hSGt_4FCf)}A6cM4m8phiL}}vTdoH{) zYa6CAJpL6g&)h38%zxmPvsZ8owTtbDwTO*f%Iu4lN)VTF$Kz>l|M;k}Y`XI(3BUnk zxJ+gqW4ma*tk`!m$d+nXK?7u`e$AV{`M89w@+4SL^d#MD#)Vei^Z4HKGYZPKgHuKa3KSmzzP(Gsg5*IgZ@c>|g43WicYY;$KfUX}lmFrbfK)GT zL`t$G1q5~Qb>%Jo%C<*G{YhL# zreXz1nOm3O|NorSM9o|V)6v@iQv)*-Hc?n)Y4-+;Ex*gEJ>V_|N*nZIBjAhf>^TXc z{)*+I=d+TLQl1Cs9@l%!j+}vJrTtU!uJVCT`7oJ@y#$I}qL7HFiQYMmez^bLFEvv{x;Epz4#RtygS{)Ndwn+LB#>Us#ZZ&FvgHiyC|E zu^Q1lOr@0cA}cSpqPK#y7yG71JFG{cRuv@XNL_GUrKu@!59D2?+vzd5N97pk61a>6 z6gr?INyHa|Utx9A5eWyX;HRibj)-PJVL|K%hKNa^Hd$yk%7_B5vffki+zCZzH3Pu2+|$d@>~V1IK9m?G8E4WlIi+JZjUVWJHWhvhlZo+HwyZr~{;N znj7eQ4Q+!tSNujoKZLUA+Y)Tj=wkCMk(@oojvU5b3^Q)`xWEL_E@jrbgbd`;5dE9D znBPUbCTe4vr@~VFvk=E$?yq;HLl4|v(Nuf##91YRF#QIEJdzral}VK@-QQ~`+S?DvB-0MHt+jSpn92p#kJ_$__v>UA zo5XM@!Z>^4mV8pmOAQ?2Qq(kYf74)0;8n#xXNRrNYpZCKMTgxg)+8inDov;6&ONn-yhr8n0u)o8 zkf55Kgsn~^v1Tw_AdPE;E8^i0q}k9l&s=B3PPY*)!Gl;TvX{)F@@&JyTI(n`c+Fyt z=7&N5dJ6mjwK4R^7*1{>Y4CHsKMM;k+lQjIPC&I@JTW=5VyHn%!<1zofd^VnyyN2= zCy{*N?_H;iBpQ4$K=^@sS`woViFHxt>&;uIeY7o$+J6hm};pJ<@`*-V~=x zrX$nX^pEE@1+%7t0Arz70xv$a{2n+^>v3O+mPxf|xbLad*;KcLZpgRfN8$J3HIou= z(YFTGi&H?dcEB%{eS?Ll1z9+R<)@s_|VJX&L8EA|$?;JgtRH2w>@92M=Wm6ig)S zZ()Ebo8P254%W(2gJ~he-)XGGXOKqqR7tAhi#iF8v$ZIP|2Gu>KiRXXU^s>OES_a6S2C<+SglYi&Ngnjk_+Gp7Hzu7TBz2CHazW>*)x>J3pTA}A|X z?m&KFy^OSdIFNV?Mik8h%G{z9wgh>U<=7JnUB}}af(mi9q|%jWDaDhL&b-^hIq1qb zT~+(?k&8cyc2L*mvvN3GFQqd`Of*+g8H{4{ zm@U@!ryr7(AN{UQ72Xl*R`J}D4n`I%ZEL8JX?xKv^_~m*`;6!YF_iK}!l+hkrgC}h zuEe=?1oK#@z~D3mNY*!?;V@RG0xn+CTRPnvV$*Y-(+4j^-FNdI8|5u~$#q-a z%nnAuZ*0LKa3p>J=EkPr86E?%E24dbAH3h#S`u&;Guy(}+Q=3ynuO$VM6*-Zu%d(_ ztz>~oJejAVDPl(GxEfqqZD}v90BVZik3+UJMM8CeT;M;>4KPW#r$U)coAd7O*_-l0 zZRYQ6|Lw+!^|K&a{HpVPcVH3t&+yG9Jo>U;PmB*`H_>j-V~77ch+BmQ}wm%qePnC=b;iOix| z$?B!L*W0)$yp`4+&M`1@SU$?ngO-ebKgrF++<>l#DJiMAW*+sATJFXgxb& zzGsg(lPP#zGrE%Frl%l`cdT!u?Qn+qa`0UP4JPZNnnh%XPjgVvp5Qf$lTL)AR z4xI2xmbuplUpcZHN`7IAI>S=R?MktNc)^@Dn!@#3MAUd$ekh9fz3Uk)?zs zeO2YXAy`r(@*SXO_u0NjPaefm$)$`EN4 zI5?K$y!8rCE)Q<*IF4#nX9F#xCS(GdJXYJbkJ0fO>@l=aj!@v+WaD-bzFS|~J zqXR%U$d~%N0O@&c@wmW{9Ro}{-Cv2h<7VltV81r`i4Ice8?GVE^D{h{vjk3iL4$NE zEBC2dCxN_r`e?*9f9ZOa-%iOw{yjOF7w^-Kr6yQko7h;Cn+m?t?u1}%B|bLmVqPk_o|2ZekNV*d9a%_|v{SY6yH*XnRYtbkLrFjnMX~dDS=od) zV@^jGRx#J7XCW;EDFZHSCKHpc(-&0WoV{`6Qq!TBA(j}IeETJFp#IjE|DPZzgOhD_ zYm?l?GEnlRWK_oFm0J)8y<@&VGl4HP%K)^#(_m_Wr#zWE*|jU*0$#W8QRiY*c=6_) z?9^o0s2HT~(L`3jkp6)ExC;VPHaF@sY0=D1v&v26(BK}|Fi~vm#7a;3#l4m80>f4n z+`g}yAr{+BfZQZ!mh69JC1+Lewv#DLM7h=}7GAMEbN8{#sl7E@PvQtKX<_w^`C)MN z`;&Gj(-umAe>IXAX+%%W>%E8132Jui-2-lOXFhOL^=~!?N#_RD%#VW`6LHwG%1L$; ze8Vv)ZxAD`9qw-C)E}HkH?@pCeBpXHo(WJ_V&Fi{7y3vtsC<;v?|l7c=-|Ntw9~Qr zl84jx1sQuL10qdEFAu9yDG2$k16*XhcKW&~hDHvEe>e!N?_QnHR1s!b8CZ=u}GpU#U|>OkPpKf*E8KwJJDel(RNqA>4z z1rnJQx{JyQ5e5+X5L9}&$X+7T*VQ6}4I&;+-|VZkNJc)y>rB=@3>`>Op_tld=_pj_ zOUtHt8S5jE3D_+T`a7zh{ucOn9=A#GigYu)7eSDS2d=F&d@R(L?H~0)h$c9^{(FlE zX+a03D4?7CjINySg$J-J#(#vyiF%=csr50v;~&9V$>43|l7uwV{2JLQ&=FL3j5?CN zFnaExB<$|>%n5w`ZK;ZJ!V9KZ4HNf6Zsf{jvv)D^5MpRX*?QcF;XetVQ!cGw7_)MZ zs$g7$g*P$7C;&XYXU? z3Q(D1X3Yn%4$q6#1p5OJtG@##Dn;X%hOQNErOq`H7dYcJ@cAV{+&Z`Cp$JMBJ*ucS zG`dPw<|YcI@?pv@^hoEa@PR0!qEwON#B}<02EJ1XEfh?N>m;$g`Q9+N>hoOusm_XP z8*1`7;~TelJB0kqe@OQ@)I2h+wC%b~-E#6}vbo$=-9p4Bk0#=i+;A($C7U|h>5=S^ z0vyl6hrNB%$GB%b{6EaZ`G`Z4yuSdPgcLn?sWoj@N2vLXU?CEP7Bny=74^ZN zD)Fl&`DeKLvw78g2s(|WQz4hWp2#Wa_eP5jWwFArLQ)Gd?kxMN!XDel>E$G^9hp_R zRX;Z?2c>MrWBpG!e>$Fq&jTfr_br^q01B&WJ;Y0Q#w-1jjuuURl`}|&V2kZMODcZw zxkKgq+Tsy_!_*z@dlov{YCeXLSH=HhQK4qSvHmkL`UCZIG|Ds9- zhkr4NdZ78w%WBA#{c+_+GpqiZg8#GT+oTM&LAV6_}q+No$QCHj{1p2@9 z5}cb)5D=4no}1t=oL40AX>Z$2L%hBUL5u@i)MyU|(f~2iI z0rb1ii1fA-*D<`m)h{cAnOG307wybf>rfqvG)GyoWw4M=kf92x^OZhAR}O<&VQVBa z!ziKGmh$7ijfA0)=^EVt`Ty7XKLr|u%b1PpYfM!Pr$5?)Hv;c4GKWv>#kj=@6~1y} z>8gevv|4_lyZFx~mXf9?mZRd|uDh^bXRl-S?hI|RH?I#_){!PqA$4F{lS&8U3+dmk zAs7_WDD2j3VI!osA-MZf$NPV7Lg<2G0=d_wUxL`M<}^xKu0mR)Zik!qq5*H50PooO z9o@q=4#C^2WvRtK)epr9-j?znmBfV#B%H&!kSbD)Jswg@_sQBq7MdDuRmiAOHx(keabL-y7!=-*OU~_ftYMAfX-XqsDD;}H;iUY zJQ)l5wGeyXTET)jEszbY#v1AEDSpTbPB*p@Ov3ADs!F#|u|clnua~TLE*7gjJP{}| zZX;f}^#9g(O;zh;7%tLo@YjVX7J$9BK{*r0W!`)uyXk>N+H^^Zo5_Hl`K{s}spgyD z5kY~j)ZIPo1p4`BAb(wFfv$Shd8lO(`H`w_Jg)tX7ZX|*_E=$r-2ZM}JcBfy2&ipr z5PDdNr$^N5HoN?kx3%cQ6YgoN8?YV0;du}#d>eJ*HYCAZ*k&hwLsx>Otf~(jnZaX$ z_;$vM(|UD(cNF2*_mtSN!fhtBAHITB6hG}7QGmIF;^4*0nQ&0(Sk&5r9!%h02wo>e zZ_-1{bz7gGVj8&D;SP6Wt&Uq1(%S%dZ|Kym_0gQBFqZ-Wcz!vZ$glLje|fJf;f@3( zAlMpxd6)VU_C1%>euMIg-PFtL6cu|1 zbu|6RCO=uw=Jb7~UW+cxGa{|UG#vpN0GKROwlgS37H(_sfy~@&6fCB=&0aI|F&4}z z#63J_|G)Hl1X0PDX|+g2dO^lP!-0g4R5UV-s+Av>@aifr`zi+$670%hOX+OA2|C5| z5N)34XQ)Y|Q>Av7OZl|Z3EtuRUadSWa#n0yig%0<=X`b~my z_ku~r<^!{xt`F1^8@V1|uOy(#l!47SiFRE;kO(DK1o9c-N5dUjo5^ax2F0VfkNlby5=e!z=l33FheH;@Lb1>=?;B)kW@+*Lptaee5bldsTno%74r<fZlueYVsRjn&tvKMdJ$`HS%MD16EYf5 z5-0yWxuy|z-#p-v(*J`Zx}G{-mTIl^YtQ}qAXn?P&A(QaHsy*6Wb#*v`X&1G;a;xax-8^(&v zpU||@d=i1M-=I8DB&1%dO^ES^Q(C-$Hhu9ZEY1fqXF3d!Hq~x6WH5?pgnIg_kfQdg9(*Xue^noasJU6u{D#Ffd9+Ni}i|=TIn)24y z!UjMg^@7qFoU8+h-IU@g-xHW81oZfJE!$4%acdM3=CT%!cL)u%xd;p2x@+~pMX+Z2 zDX&?>R9lts<~$7ca@%_8{hA#`VbO^OcE5kW82-k@EMDN z*ix?y*#$Rr-mrK$Khz6;M&+|I|sQ$fieTS|Q5~X6uV!Y80}s zlX+@@*QcjfMB_iKEVj>|X)WyI=pL!w%ORSknJy<)@F5KjN&_*QOa}W|Nb%y_s#C6^K7dp?W}W{+>7(k!6Bd0te4FEv?#>Ms~sfHImO^+szd~n zVcaw5Rh!hU$4g-ALTV_9U*b3|(W)JV;5QjP)ktG=3}`olK;uMR6C>UM^`Rc(0_&qTf*LXcNUqQu5 zcNSA(-vLk9m}F%la2WXiw%|KE7eJ`|=~R)8F4Yb#DnvK3PX97?l)~7djrG_4^=)kN zilhonuk~C#bj1#&@Uu(XN-J~3uny}4A1NcxgYTPMQ5SrNT)L;BeSGv5St)v)18F&z z$~a_WKd<1K6pNR~{r3*|M^SWZhZHxOYag<+Qe5wXFJ}iF+ww-Uhej=NwZE9WAjrE#GpKD!p=18p|WL3$( z_bb3TI^|lTSv|T5vo0YZvz+*lA|OUu2=kv{+4i)4_*Yj0RO4Bq0v-ZRQJO`!ZK*sc zB245fNfiZQZn3F=ZfauZJ%YW$j;$`OhE1fw>Ssr^Uq^dq1e``upoB<4c(NO2xxB1J z#U0=#TEO)(q4E!wKu8?DAmb)V%zZ2h7EormMhu5-PNP<2chA9q-JfWlOuoEYrW%IR zxA^(*AtS+FR<3#&;p}^BGd?pENUHLn2|M3tf0z6uKdX)=-SL^^9MIIb^s1)=}6O!5zxcUiZhf5!kvN}O7 zeq4v@+#Ju2om+X`7S&OyZflo4xDO8P?LkJXsMGn9-8o~qr-rvi7&9*OG*$}fkluSg zjJ@a@{8cpO%yV{O>eO+CExe6PLaF*LYa)sKWxm(0iz*x;%Gf^SrVN)~_tz*|qjjj< z4{$4#G!osz*~_)*+>)#sT_-JPWmUCQFWf$?>?m}1`RKH>i2C^1$BMA5OkA2 zv+A!|x|@P%;zQ`vE+!i}yuh`)anST+d!gCg=E|rhid;7Z0owMDl!iou(z8yCvg`kb zw@3%|p*F+d+S8xp=a*uWCPm5;+|0U7Z=OiCDsTSQ)O%GaKNx^M2?nE3$c-Xl2q47~02+Xvto|sV1_Xk^&y_pP9iC9@xvvJqajE3#_ zl<2T0JeXLO&E5tl7)t$Q`SV>xB%t*YTZbR#RY{7-$xsP+F8{;yr?8#H46ngfdmNk4EB;;5$C(qdUb1BrRpiwzxHeS>cu) zTOB=zOW&0LGSNKeqZD);TZzK5V#+`>i>cT3;R|ztQk;*OfdiKsInd4H2Y>tzfdhsh zAh3BYFI(o@=iM#pV#h<^bJ%jdh|7M2>HFPd_`|0Pb->_v)lVSZ+^-=15(ekixlOEj#NjH8vao3!UK z57Q0q>@cUv7_TA*V}d00*eWfRd4)8anR*VWflj|Ry-e~aQHD3Vu?1INIR85mHZ)XN0GZ$>xdgH=9Lmg#vRrx1+j-2hd^?7 zy6`W>JLbKOIdW`x=*xEH{pS9#g=Ud-T?W3n5g!LI{pvm0U^Ps)qb{@<{%^Ed2ia2L z2xex7%qMc2m>%61+$6$=4%=+>psWymEFV8BF$oi^m+?Qup!h;58AyUypaK72NA!_= zS}k$r?(2b2RT?o1e%JK(p`fP<5?s3|unz@tQl3*|H8fVer8kb4_?PjMbW=P!=E&Iw z<@NF^LG5B6kJeZ~WQP~{nveUG6DV8x_%D}31%-_0Wldvz&IR6yo7_a^dh3bhCx)sy>(au>MPtBp?PYI$(r-Qz? zEAy392`6?yI=tu7+Jus46(V53D!KaCw&rkNzW`12KGA;x%7%q4Bqv*AZ{Pm@!x*ELSC)X-chbj=M`hD=qeV%CP$O!a+CIJ!Icceit5eU?fe<8#2OE_It`?8aUoF zW0{JgU+QHlj0qkjWaaLoB>=D1F87O1oE7k8LYaI1V(n{KE(s{rDpjG`hF+8STPi#48V}HpIKE_Ph@4_jU?e!ai z(C}SlC9^f2M}czO6o||YuSQEo=PYpOo=Yp-TDdtQ2J+^|A^9gk<^`hwu=+C3UCDM4 z3!CU|r}oQ`qNWNTQVBT(i)7(0*AS0IB}WzY+6?_H@dgZ?V2o z9>vO5*b$scatOKgTse!^x;9no?W6LL^FZ#cpc+R5z!m-#xj=Ug*LN{kOl}l_}_uJ3DKbR>z3brF)l0ZXzOAF?*w!(jnL=*q0JG z_$8&Pt>8n~jqdiM96|Op`N8#5#k|&_EW$$L(dP8E2Q}euyS$S1e{qzKo6}ahYwxlV zt{rhgAi%<%_POIpVJuuioyLqKt$SAaLAdJc8VA6Y(^2FeJDR&f&w}aj; zs>8|2`7!U4yN9Oy%iJTz^^pO5l1bqIJp-}=oB=j_9&v3wBWOdNb>u^1p098@i-C^S z)*G$Dr7f70xjsH&uRrjCLCVO<2%s=fM?P{$ZhlGdxdqAo>ePh* zE&T{?TA;NAFiM3wn{1?#M~VEYsSgeMw(h(m!o{CpQh-c{S!eR!nRdX%I1+^xC>))n zRYWgQs-KXWEB%N|XB`J(1K(CWW9q1|)z6>yT*%|{5aHANN=GICyrIlfJN!;Jfaspc z{mD}Vfg>SD2GKm)vpv(@YIJ=QmNIQ8l7UN6H%?R;IoY7ok}9A;*nFF<#W(?(-j?lD z+Hj!iIQsz&L)HWd@CNz|frhgy;jw^d5xt&cHLAI6t6MBjjjX@kR&Ug2Jq!L(!H^Cl zD#(4iFD*U2blGTqL?7bT?&CF^!1}Dl$*jYSH$G1pFlRy zpB8>k7eLRQ^tkWwtmOys_r#Zfr&|Z??j`s74V`%C5aPkeJPU2$#2bQP2N5z8*Vn!K zeo1Q&>RDkntfIX^W`t*joY5Vv)F{TwDe^tr%G?H@{5u>P()rq4j&`$O1mTaRn_%%X zi_3XCAc7N(>rXXo2~HXL5z^Oc|bhkZgaR>a_b55Lur{PH8~c`TP1R|OG_TDT4Q5=i|_bxsO2 z=rmUwX{KUG40^Muj--JCcYiQErvCY+s)$yFY^q+Ag}26^b_5w-r5c z_Oi#bWf?1tud&7&&hoTn=OwpP9Pf@7a0~|YkdaseD>Y_x|Cy6eIlvP=y7=JwMkg;n zyh?W#3??C~yoHS{cyll?_c>+WK;|(3ZZ$1zg3I}RZI5+e_a5sdkV13p-bmL8$g;VUbS%v4ucm|B%1rzWUW zQW1DfzB&rJND|Bw9G2hg9BT|5O=y{IGYLv{WLMjU+gT^S6!Cy^Ng z9z)s{wmaLt=gPK(s@B-^O1Usihj|cAPdV9;UjXd)$PAWzv#$o(64!2kB;FY+tJbuR!&CXO%L zCm!e3**HVgD^~liUqH`kpqqy40Bc<|(X+7Mgfoc8L=R5%ld%`K{@ZYQrAV!7#{OgT z!I)PC6dqhfgSNR{Y^&8-($-CC!cpHVNcCA^+J`P>pbnuNCC9u*rRt^J%yRcE?nPpS zD5GdOO9}ibp>XLwjdrK>5VG-HmbdT%Pm#&`@`rgvt}2wKCkMhEsX%Y|kpmjPb2!Cm zD8ZbV>09om=yr?G!S7+4UPltnyQ^NqJci6moivy%Y6ocd zO8xHSPZDdv309%9a9KJ>9*_yF`6P0F)I%z)owm`872$GLm(nZZhB-nx3g|=T^BpN) z?Ue%vR_|7aUfvx22>C1mGwHI9JiyFn+0W9gc`5^+-{&8Jy^I(r^BE8S8<+{w>U=df zS>%d4B)hE8CCWmNQ`dRgbw$XjVM>&Ype~xKEq^eT%JIQ(12`COiuC_& zgLX)@;#8(MBS_;S&c)fyvHS<-8d~IjoY<&lEI-KOqmmbmW|ZT4MazDr%JXpzcyfpJ z1bc&7{u3#U#<2}{@7MY+Y3@G;GM!Iiv`c6RVB;e@DjavpElXG-E{~7SP9!*OTAbt< z*TLJBtI4m@uW!^4bls(ppX_i$0#!`dBnB#CVFPoyt`qERx@!Sx&@+Z(7Kmq~1axB% zFYd=|1o94%h6T!ERt}CmFG;G7PYhf(`imX7f&bw4Fe8i7?!%ZPEGDS)zRMnWEv0)licdBqGULv|95n2;W4N`6v7m<1UQ2OB$}Bx`tyOgE)MUlPv%@ zNznzjro}|q+NMj#n|MIzKgY*uJiNRRB_~XLlo#V19 z1zxFRfXlvSWv6q1(0})~m^g9{h-lcAaeHs93pXZ_gWqjMF-e}9vbT6gDsjt?g_o02 z@d7eQaME~U$qfa|`g;{grPx9(ZXai!8n7e)#K<2r2kb(OC>HR4%|JF>lblKWy9`nw zhSNmMvIN7;IL3BrmEYI5P^hkXEE(@8M+CO|rCz6EokWRCO2*QP-2M&4Qv#E~IbX{e zYanjKms0~7U6?7L4lDW{LnZdz1DPH%Z+N?3wD6~}26Bl55L0LoY6IRb;L>2%u3MKf z0hdolA<>Rn6n%EIzJp@p^)XUETlD2(-Bj7;sp#B)544xR7Uj$B(XU&< zk$BohzThlL+Wa^l&@*5XhCh>GYh?DO~8lmo?vNXJT_RI z_7i0GX_lVZVNh>G&$!`e8AjxV1ObPAB0or=8?~-a`-vVW_9{dCxksM58;DBQjis=I z*M1A%pX#F2;hRq;0d=!u)hEp7oU?gR6FKgtU`Ax6Roey+5t&L0QH;mlN-yw8&E2cZ ztQJU+cV>_vn;N`Kdue7nFoOnyK|}UXX;cnrk^9Ht#aaWj?>r{*^Bh!HgT!)RN*zc? z&`NM7n&uHPdj`|NmP#O2{46ommHRsl%jTedO5LVhzzWKA2 zW&K#vTt)4{vf`%(9$M4iiNTGTlR8vl zK?&~1=3Ak`WvucS3|GZzCgi#^-!(Xvco6GKyKSSGe8BGuye;VuvxF&UQsGXkV9-`@ z5it&ye)_)m<<+psd2;Zc`EuFZW}RQ+)NY{Sk=1)wzj0MpXevd{=F}c#Y~RDL)YibN zkiYj%S*a;-lb@cD+oF>vnJd(5Z^$!5!lsvMQBjho;&BF+>h&iOiNKPOXpT z6Qk?4`(b41H0i}y`wr)9@z+?3o-Nh2W!%V_cwYYbgYc z-4xQIb(+DsX{VR4sO@HifLW0opyFQXC2rwVCyqu3&FQm`Oq_Y{;@LXJ+#KLSWI$ie zif>(*q7vC{@8Mmd?ij5X=Oe3)XXqM9+Ewhhw%r*82a2_soa)T*)WSX!yjm(D?5HZ{43zSSnk48Ro)2FM`in#_WPSyVN5A@+n6?I2l)Ss>OhCF!7| z4mdBZVYD%p2xRLcEbn|d1*9Muz6|1|c|VHmOKCLALe8;OGQZ;${#t-$VH880?_ zX(^bCyXVJ~o%PqpxV{jW{zt09AC~8X+}UF1!GSEFkTayTY(o-Y-CUZx8?cM0Kani9 zW07}jtb~U3e%IN&^yB=gbbLH((v6=I1}@M5jO5 zcF&sEklM(EZ$&zKbX$c>+}>pH4x^toCsrTkE$mb?%A};ps;l&3%t;ET{hc?~g4DT( zJwHQ4=S3lMlFqQTXRtP-$7HqpJGeT>wC{|fG=1e3Za}{(zyA_P#X=9ET5GmvRKcmj z{mGc;>g+9pc4yRQa5}!69~Ctpc9~J*{EfM+HT;Xst&Y>4Ws@+HgKp^y{pu=- zP~Vg<)=)louj;aVub;J;_ZbC`HSHK5tb0xy{35b026=Mz`jCR%F(qzNX=_3yi_{yvZ&}vl&vL7(7I^ zjhfOFHl*T5XvEW-VAYU;d9FgKUAZ;CwsWpOm6TuOKFZ2&rR1TCq-;$e_RvG`M zE7D7PA#G-mVgaf9LMfMk<_(-8tO(j3J<0nf5^rvNL_&vF!2uQwh_gM=do#lEJdT5!)+im7k} zN4?E{p!qigZ-Yc9<2)xu|kikCwkbLn2fV#IW&pHyL{AN^zP)T zGl$OmU%ZrDAK;B`)*KLXvvnCXJTk3jQqmeiI48jZ)Cb>_fDh$-TzNwUTRxPL_UzN& zwRRKmi7x7h=nUed^b>-xX0=L}$29!4B@Mksq0)c2qwcbSy$V#2KIEq*kRqJ>x<6+f0ZS^{*P?`QDKf;yQZ~?N#m0d8liNIg^)9;4kQctoI35RLGeqLmf-h# zIqu(eTD9N~e=)2OSsGZ26L24_br=5hQvbAfo3h4cL2=pMTA|9Ytrc^TZ((>KBOeO3+5~f} zw_>SZmPCp1(@|ODuu@w#c&8TqZ^2RcZ2QZd4imv%w^SuyyzQ{hdU+9S#3foxT3Z8$bXHKnl}90N z5|#T~<=`Dwz8#w=!fip0tAU|&B&qZZ!@m-@iO;pGPJ^9!*dk};g=B^-s&`6JHBaB^ z_EP3+J~3QvHzLNwBa@QvC0i2cgIzk#-^zvsK<8x97hJ}jV z`26m*^h4ItK$k{AhUc-$wiPd@WSMpDSBrsAG6TRquZr^O}4ZCEJCFQk9n!A3xujBfQU{=m*hv_pveZRHPh=-vj)r}PduV(6 z!PMnKfuoW&4Nugwe7yTEm!zVos2vdv{;w1qWOA`{HTXRwIgbZnoL$U|1|~oH>696n zUXk%9SKoll{W7>b(^hm=;Of~qu|3X~|L{r=*lEL89ihnB)&3tMss{5GQy=4*wz1 zO$vax;3byDk;r?WHqi7R-y1&8$yqljc3kai5TJ*fLaJ{HD*T!6KTmBFvR*eGl=*>KRrwLi7LsjG+($O)h{{E`Qdlg^3^cuY1-}To|HqAC@Kyr z-FL?VqS6Ei8dlZ8gY}Xk`X*5bQD>ChrL~cHWh*`L;8C84v#DAzOKJXQ++*cN2sO7|PPoh1vkZp-oy;G{gL7lnY%4(4-mV z%bLP2_+{O1ph!72R`*6K$%$@$R^#tz{>WY+Uz{5v-`5zcMf_Hvn>~Vs?MVa%$cAxG zPjKFlMMDkNpSPd_C^k#z2Mdqk8Ssdbvc9y0N!G0_iQRBA-r0KNpzlj?hg!OwrJHpA zWc=UMOgMMT(&CHD1nQmL{wlEL<(#!%w{~B?e4fF`eB~^J&y7AAf=~S@;G2SH^-wFl>}K=1 z!M1;_p4?U>=Tp}|%sIX}~m zkY;K43IWW4w0;h>ee|gF)U|OnZqLA6_fG3!j^SmM_{D&Ur&&2r9swhuX>lb^3&+0I z?CCYoSyz3D+4urPJhp3`aBx4o(oK|P*(-JlpVsK-RdB%NM$RtLH@q_J6oniegB2K7 zItsj{7B^t=y|%CQM{n1vk};aRYokc$I)Fx1+TvLqZdy3v+6L?r>n}w~N{=6juIELZ ziIpBfKJIFh#Lh5D#R8%!I_9j4VW~~PF%~kd8t%>08kLLPw>sEv9J9GPhrrXgypt0f zYm#Sf_z8RlDSRLmsVk}X+VnJ_=*%I%$ehZ~b!&#`e*(Muqv7XokoS$Y;aWRKp za=DxBwh6Rk}yElUFCeQgZ?9bWortA(q43-;^E-&Ayc zHmysM3Rq;wbNk#l)sqxF>_Tc=AN}5gv_~|6J%eDGf-pViPT_w7$?x3_qO@KCi$b z%)b5YVUkL^OLBF%GVwBSTcb za#DMM0@PP>(8L}?rb)W+lc-)t_obmVpkno+T9!ziJ?Z*MgadnoyHjSR*aAudK_<7R zz%`dGLHP9`*_^s$b+$TqygIVSj|{Shc(@bf5fP*TRZ9szN!mKle#s~w&*xky)5}m# zB78Xm8ny$tg`(IWYr9f z$vd#-L1Brkp971zGXbu5gK5e>#E>^|{iP6c_hU2aPq61A;;%1tK+)+upGz3PPMszq z&Okv1=SqC`f``02pfqW=2UU8{=sCkdNl47Z#6dRHLS`iEW9e`&veig>SNcdK1g1LQ zb0N9kszk%y2UVK+l(uO(8FIb8inM>|zlPi6jHl)>v84o8j}#|@daFYU)iXG+#C-%z zRY$Lg_>it1mt9#cP}lu`>)Yn{7)L&fyc4(DFfrhTZvo4Jr$F(A%*edGbS$?4yK%m@_$ypok9LKB?gPP&fg$YxwY_V#y= ztJ%@-PO^*3vDrwdl%wm~6K%ZpO@lJA+J#&O1#xZ=Z?D}u(9GB(Gy6d81z?gAQUw~? zOICgU>^eoTxl}xRkDy?~Q1lxpe>4YIcS@R~Wu38CSNJg2TmAkWKQ(AfV)}gf*}&yU zRMiW2spx)0sgqw5Ct`Dbp`l=tXirW>Kya{faj(YmrJrn10eE$7dvPebfSxiM2MLRa zf4pU*k5RW(2o`!RGB{U${2u@@PA#tgc_y=PuO%v03r=9ag}du(emRfh|QLnOS8 z$oUvU<$Q-|$Q8mK6e-?q))4UQ<#b6S&R#~YJ?JRSvZZLvrpd>iX^#x;cN_SM8&5}~ zL?y1Bi$($MJaA~X9)M0)n?Ni06SSasM_5au8hw5<9 zTg7X@Z7A6JW$o6bxZHvZP$*2gnKs68?Z&%loEPI~HIP1{@?qY`9RhR_NzHD32)QYY zyG(CwvHqEif$)s&sZfQ|P&=GW3Vuw(X&b11Xo=EhkJ5c8D&$XhjN1{3c+eLMEB4`feSv62SC0>c9mh)Nv!%fEVL#g}N3|WaKT_m>mc| zYyym=@U5~Y@IU?py9kLpsJ}}mz6cvm99ox^o|nLDb8cYT7a)9k-ExfJS@OZYrOs&f zLbt2)PuPvx>SCqg5!#o#HTEp<3B6ksTC`oo92O21`O!|n@T(!WbW!$iDQTiZ#^Be) z3>0f7_UegSo0R?NfXKG!UgsDXwKyv208ipah?Z|3aL9hO+4Hg!_Cw1IC9Fy4q*8-&0GW{()3q9VJkX009tIa>797WmM zsLn=PE!5aSGzF0NWtzoFM3s{Ju=9u@h8aH`4;AlWqMhB5HNlZUiUmqpq^cWMrG@lO zJC;9*rPs zYj#%WZIGs;#iwRBuc$uyA2f`nH6rPdo*-{MKC*YBJL zc1L6SWL8tR5agpdb7AgIv&a$Ut4YLjYeC2Zt0_qGYCo?_j+84MwPwv~R3iLiGsC{agv{XK)op&|GwLC~wfps$9^ zhtq4?1Lul^lNEFb_D%R`v%3$z*+CZH!1GSo)Uv7xjWfDc&X*bY1`iNyu_T|b$SXRP zq;3>IU0=H*1!jDN{Etl%>Rc#-)E5pxasMh*3$+1}xl9joxyH}m*6dAB7t_&^P$v9} z4snDqX$MQC)K-p?#{96B(J<98fqJOIjCk+#Ur<4T@vKkjrODsv^#dtJsNdIAyzs;j z%`EVwg_t?D!Ys2mGtq-FjUred+7zxOuv^i=d5pI4sI`MqgHLKfV=-led`NK(qPIiy zC@&T7Yv+(bpOjA`499G?35Ia4RA?7XHkZD?^tM_&R9F|en1A@!e~8U&tGb-a852|2 za@?q^z{v*IjJSbJsZ(RqH}>tsopgs9lEK5SG{!5t!q;Rw8*fQz5W{8mrnPW)tZ8!^Gy zZ+28#1MBJCLW7NF>11^KkNs>4kq?jvH|q_N%;W526c+arQW)a4p1p zI9!GnJ^Lguq_Wg0eQPYs*Ubhe4aGbtbzMUm_caI1Ekrp7*tc>y zdBUFkb2SXN-t~z-TwgcnXh;vGp$h1A;Mtc6Ee3_vjm=P%Tx!N&nzOKVEd!=>nbgL$ z2A|tC<0@uGOvMa9I7SNt(Y@@!;_9*M9F~3bf$R^LwTUj=`C5$jE!3hT%i(TvWwAc zOWU5gk(}vsq#XLSVUABO@>7#x$W#5KxWxLO`LZ|io8-VJqHSkaC5*rAG?EQo;p*#0 zr9jAJ4=qAglW}G%?lqHn;7~$YdaEofevF0+kS&6DO}3>3+Yb5PqejudOmAn$Zh)}S zoTA=u(YvVOAGmpvR)<+B>3C@RzOK*bo#eGwA{(B5UrVLRANwjL&3vq1V=EOHGJd=& z)`?O9pP)-qScJ#x!{7GP+8Q26k(fLTbnrwflJHs)g*v&EL!L1ChVUGq-(z`XwwkCr zsbD`5wtZ-?G~}|~KK=)&1L%;YTIpPE9=V|QE(OPC1W8Z)pJc2V?U5k$Ij2m6gcX7Kkwr=X& zR+f02672AU6OvF6BDK?eeQS%TJ8_NYY&?yI=vy((?RA;-TFeHuLIk-bTFjMN=va>y zud~iWw)f)rLC2@RqyR-efmp_9u3W>3-AgghIT_R@W!jN0rRg9lckdVoIEk`2oukMH zqCBoOg_&mz@w7TJC4f@KC8%0rO67O9TCq#{t*onM0v?}~#xR*F2$a|IoiuLyaiHrU zEL5M}BXKT(+^wF~hO_=nYWk^|C<|{K__e~TnOp^-J@`ekcP!Y zcE(Ut8nxJZW2RvGOAEs3cmnV2?$}mjOCCc6P)OLkywA^vtOK9fi`S1_E)-G^3xesj z5>qwA`r3`{-R-^SdRj{b@_OfUAx7!A30Fanf^{nQL$pIa`gg^C~+_@8fNinvJ8Qyj)cNPGJ;vZ)C~46G9sco=m%>nVY5hKY&9 zQGO>xBm3cpIy^iLA|o=4d=N%H)i*aMPoR@pmL-+=6jba>5v4#W)4j$0;KCP869k;6 zF>Mu2DPT7*A8lSIaIN%8s0}i{Zv3X3=~y^^0R}B^k$iCZdqV!}hw@$e=Tr9k%sp4| zt`<6J5>ALAkJr`q5^*WnXn5XXJ={gWF04H-Bcq^bJ7hLrgL2CiT=XUxE_OTF(9czK zP2qxtzff$BCfD8WgUz)in+K-&jodK}po9+3Y!W_;QNHPBA~b)e8By;`BbjDgfGECT zpTZ@@^NQO0@nvSJFY{hHwaxCnVP*hx5oP<<(UBK86N4zHks*3?RFptrWq1d_e|PqD zHa{F;lAZC~S;mH<7jG~-ac6Df)?9_{pC75l3!V}0xaR?9w+Q#Lbq*7By< zQuz^Y;{T!$dYyq$8+8oG7?<0DVGMPa_RFVOs+r(GuHQ(hU=nBy1(iQFe}(kjy`i6_ zO1jxuTVnP_Ff70?ID(*Ps3-pVTnxgeZr8yrQbNL;jx#e)61^Pd!C&s}+L+{VDe8+H9f_mtGkL+4$ z{PK@7EzodGyhM5c4xXTK4IY{#oWtfdK<|iKS5P*as!WdjrnK%9R%?Hbo40~T`_ zKdI$u4Aa>?zJ-A=jn7uAO;%84r;NtlFo%*3@rhd@xbgT%@;Y2E)FYuL3T@T8c}|in$tXRF&s8|P`ed#J9M>r!3Z`h-rY== z`OJO8o1-ndfEL&nvU~&{ktim}f35if%6njFZ6KE~qkA(|sqL^f#wh_D|PS*P_WjPvv1UW6~LCP_l z;`;?rvtoFKn=6~DH`^ky|I|-p?zmH-I@*dAI<39G`Qxzjr(EQn`{8k87kYdiaxq}e ztr2<{oGF$#YM}xtqEY}03Cw4ZP2zK7f2zls5%tHIZk<%*6g(3#9f+)vh1AQs|=?bw9eW-!pEy0g&@r8J+?_qrB%9g zCju(g#nj!}KI%`_wo{W6m|^EE`qPQEl3U(EV`l*VhPe*jlEN)>rjk6O?H_Qa?VL)7 z&5`cjS!{iN%O*Wa8I2=(V`8FBkjIwN{`J%U2_~h_twf4Q;P}2|6AjM8h_0ladh_$1 zS{HtxdZjCve1tsGb7uFDXf?h?QY8ypyYj1RRmq<;Lh#^@(9g+*6|btCHCD|p*-P5Z@iTh}eiMLyw&lux$3{I!Sq zz{D(oInStIL2JmYDJDrq(;zm4aN!>HR$%gXflNy~ET#|gjH&PuJ#Nl=mUKrnQ(Wz#xS(D|HC7p`5kTk!RZxLj@I!6I!ujB3K3kd z3PPpLWG~WC`0;LaxpqmL?}ZSXvCqX<1&wB{g56Od68*!yMAY zFzJ>(J4!{)G<+W$Av$?lv!mMyY(ZurjCFOA-e3gt@iu`ztfV`|>7!92-7@5vs+ZQVYsO{%*eoimL)5qt7f=txR_~d2;jW5Nj>dT z>OvL)@?`p{4lj4PElY+FyL{$285Zp!vt!TT?I26q#S1i(K(R^6HZDgEFxcMF>f+R| zW{!a7G<68)Vm063@NI<698$3dsb@*{hB#Q6y*hx4t~Xh`E+p9ZgKyXqSSbpKMz*4Y ze6?=2pqGzN0?NMb^iS}KI!S0|FP?)J6T~y-N=N^Z0U9K1fu5WK>VeZ&$6#99mQj> zJH>G&AdP{0PFiOWI~nqXyCul&IP{PusO3&jH6hL)*^gbx0{YQ>Py~H<%LQzyHnU&u zrr|63m_~}c!=5^e_**cX&!wCqU5fOG5hGjEVE{5w!XkBw%xG@n_g|%g3B#I)xkND_2^5`8 zl{V}7(KhSrea{AS7s~n2QA`Peed_6mPned_ZcsWvM7W~(F6AnVp#YaJ&w}_Iy6JS? zH<-u+K%pUJiGn+W6jt;q_PQX9Bdj&keceHxr^~YVqbVwfAm3-f-O(h{|g%yB_Dy>MQc! zFRy5%jqS4XMH6i969h4>wE(and3uTc`FRYLoU0&aSUHoYThtl_F{1l>|s8Qy@vJDEyZ+c%PCTR zdUYF|^G?8_#Q-?)vf7qf_UpCSJN)XXdUYI;=}(+3&(UVIhBa`W$}}?f5V;ku;0$md zEGcs~TVp2DylIYU9$3~CMS&Rc>rj!iwYqvddJnmiEx;FoqASVi|KZc;ojcb07!+V( zK=Zr6tL|=yyPRsPsjc)4k-CPcvKFvig4R0K$Z*#NeB5>cVTW@8GCBj3N1rDtcn$sPpmHsZ|es>t?j z@%|84^lUSi%v^v54W<>XAw%#!*RV*B`K9saFRGyGXXn%#lAyO17j!pv{vUvgv4OzV zyI={(?E~>Dp|9_^Yf%~Qx!nKsM0FCQ;bywsBb1ShZvQs}Q>@8!t}X8pgfX=tcW=j2 zqtehALZQ>{+s(pgzJpqned_o9W1@kRXlDWFYjI2Jg}Ij>lQjHIP>arC3i)te(zZPx z*T;5jQK|Vm>i2lxN)GPly4M!5-TyFVKtk4%NWRvOGkt=!U5~s89lMgng6p~II^)fjOBDs|zqx95X*J4DH$fr$CDh+cZi?zDmA{`3 zM%MDS{jbm=r>^MW$p~Bn<0&!sMnm{2Hm&p|v~X>bZ@OMpJU=i(mm}tdyVp*+gH;83 zjnagCy$ay>T+A*V<=cb`)dom({D@EWUjY)Xui0paN2Ccl_w1NKZ>73QxX*iP$!R-EZvW9BK{ z;KE)jwH;+PBPxDDBSRIxkPDoWSu3`Z`f0~^vX26{u+* z4Hr@lFop(FWY=^?JpF5jj89Fb@#8FaU-v$?gi*LIN{xU6RMJ^##4w&P*%qf!V-4GS z9-{bhnLjpts^z`fU^IKjgXlE_`evgL;*t8vZIn-)n!xW;7@TQ;F2W}hA5sI$x2Swt zT!HeZV8>aXQtuNOWXc)T#Qz`9|HpY2yUFHAQ2u^s1gZo~eMO9IaQr@k&yS0AG2C0N zcU!+-{wR^SURNFQ$|`FEWSxvp@*QlO%D#F3rx_8eNY;kggZ%#z~tZeBz z-)*5*$uNdhuNJ|lJjG3iFQvx~^P3?J==jd%wgK@0NI)ptT`ca`;i^!|Cqt>4h{M`gDiia@PH|qT8x*1T23k`@&(dFLlBw|kGzgBL2*|%AnpUa>8xd8(<`&HMrnnTEf)XkB^!dlt+t+iJ z(^P-u*Kko{qxcJHciRA>{9l}l7iOV~WDO2>t1RU5CiV;Qa9vc!3DvvCK%z8@S1T=70trw7q{lJ4K^9fy)iYtz}R+a zX=4t}vpYj0fqhJD&d-wU^M}fTtvFIkkhz$PKX##bH_3p0=?^m-|_o;adQ~d3GfnTC{Z>d64F?9@lmVGmG!b^e@oS!oCVA}&DOe(R2f zy%y$GFZKcyCD2JUswRqWPkv!U>iMCGZE~y=i9Zvxw~&_S=V9{rDo@}pQ~j1Xj&gBw z8@NMTL;m<{YPm3u7%pJD>IrEOVlPyKKtkjjPbRJC;rn(QCGGw^7iyBx)EZ$XJZ$qV zp+edpUnm?XWK#52M&}J3^?rcDOlpEFO$Cz*vqr4h(hA+|yCd#Q0(+YkdS>qDtm+ih z!92a&XzQKe9*(9=Lf3PVfA{J`3o@V#5|sFWBc{eO!r0omt8H5lEiVtqhYT#{0wiB5ObJe^J1IH$s^IHkOb+MZxHXefYv;ifRGOdQ`~9=Ot91+ zjVDQ{<6DW@76#t#78Q%iK(C5Th(W_tNuJP1$E?3lk^+h2wHboFA7AE*hL?$vGrBLu z@kYHH6SG|*MW^};4HCW}+M$F4>eoE6n76D#jNxdN#Iz`11XC5=IH=$-)>9i(#F$aX zc`Z}pWJaa3pIzvx@Y)!Hpr?EwygO=Y_%2Jr^rM6=J^H}t=e46rBYaN1c{Dklq1 zTtJQ|6k@Qybap;YTFXm=zN=DB5{nLI5Crdt zT?YpR3h5-vlaT1ZGe#z1n9&p!1vW!O+|{gbyM5q#gz zi?f*7xZsu86fuA{;Y2!yBPmhMg~m`_Vk_Qj=elIx{t|Dnvq+JHZQoBDEb39}Z`5J* zD3KF;@;0`yB72E1e|F~U<=w~TY@Lptze+YH%p+m5@ca4ZBSC{7C&>ZV!b<4Mmf%W)H=ZR(~222!_*pplbTIG1re;%JUhQw-~`-C zKZrgvU&|*59H7V2nkJnUw?Q(Ch(9lZQL8*5oPBYi?w;u!=FTrlDi^rd7D}@3K4a1z z9}MmwQ4Q`QPOE{KKw`!^l+_yRMUAYxsI#5p$~F@*_;hxnr_pKA}Fx1Fo$=jW40n>Q`_2x0kHkU86aEd(i==0^=@{t?11gi2(-Ba(J``!S;B7L~hc zHpVE2lqTkplh0`putFG6{P|!1@}sjtD$lFVYi#h(V6KgYA!}aTSrbi;Le+r3+Gl(> z?vl)f?)Ott)4ck-2Di44v4)%;@4g&H^RF_1&H}w!OA|;HWwkRuVXPi)PX5lt?rn*wO|i<-0NXDZG)gn08eKhzZOx3 z>K?b(SSy>QPicx0tMVKXQd=Q^i8qZ&H3m|tC~NN_b%ZwyQTDWescvwh;9;CQR3cP) znHWYj-hmx?=34g%!tq@gyJ3&B1!mWgjCxr{8Wdfo8Lr}IuI(8Yc5V~S)0)u8p7~IB zs+5CQ^s=zyM`nXvA_)q_%NA*RxM?)1mh1W>m#Jima#dpqO*sIN{M#{OwI}xakgaw( z1ZTt5Zu;3p#8ByUL`wuZv?#-eatdt~3|{!>07Rq*%eN7fIQ@(P-^@}7ayuKWU#V^x z7kB8U*$P7oPA~uYKAwn>Tq|k`X3v&zT9A+%Z4M2qw$gBMt=LMO$iX3x1~j^Kk-4%a z3Pg~Wx5y;Yqu)WPcr37n2{g1D7^LsR$@nX;W05A$yjX3juhTwWIZwgj|7lG$vaL_}8?^LW za<}O#M-0%K7lBE`Rw1lN(;&9AS46{?5Eik~eTH^IF*{^!8bbCMNB((jfzXZptx%D#pvL~Y+ znnk9jx6&5!>$5}?SAwHe+y7Tq`=iCHtNjQ*GE0z!MY@!L%Xszbe^WO`O0HW0v1FU$ zdu;=NqA~f0-M}G!K)T-Z+j$m1x)iOt+cg{pASs|5`PTixl%nglbkc|&Rm>z6JeUQ1 zP_8o0C~7JW6y(+Zne3m3;Pk-agldlZD-#!tFNXui)MudF$dJ|G8Z@`3)xm)N=E{)e zX*o(RgZTr=Klk2;7-}NjKG?kH?%t`EIKXm;3>57Ny>EY?qy0swRBDvMU-XYm%xj+= zk2Dt@N&ImaWXNq2*JWRFe7j12DN|GI5FvlV*Jf_oV23X`bOCDdmO#hJF8r{Rg&N0J zU#b**+7<}~#g(1ovDS^cN8%d>9_{%9Yw(?UM}n?nATX#yb6gsHM(qiDh@nM+%`vql z^g-|Gc*!8yL1`*B65bcoD7cY-%>zm&4?}rPy|El&bq*>9*$8xAdD{A$EOF*997>K za!x19K;egs)$$l@lOydUzd)~b*{!8LQS$ylE}t5`pt{|0XLU7VU|{FcZ#3DQh7q|P z&FxEyzBdVU>4}3Z@sys!z^CG#7yn&Ig=BIMydJs31tg0|=4O$+3JdJjO0+pL!5+KZ zMOR06J+tauMGER{$xc8nwqjU3{R&8uiFa*slnk`F{J6W-(ehp}dCSK}vs52|db;lF6JpqK$4*MqL)D~&5Z?7{-7 zXU=OyK_|K#cr~;LCpp8@K9Mv{Y#Rb8h2NsKO(Lk~puS464s6Nr&%aeu6EqQPP?nx$ z4@GbR(XbJ)XcddVvrC6yjRd-7+FYS;t1ghpZdev8cDYb0sm(X~OuEYdyQ42xtkpo1 z{ZNiVJKt?*Ne;CTQPIdXozz*92-&Z2>{{0`PqDtKxfYGUc4Wis7iEz^kME@F(U}eU zSyhB_Mmto3b)#TStTeKt%w zF&W!F+cd=L^|hvv=Wc3LI(X^SBt{~IJ=@r&QDB>H^)BHUWzme5)(9Gd=du+@9D-Gu z-Q5_~omh2BZEO6b&e09k^#M!scoq{b0Iez)ZHHP@lQ3VTZvut-=I1f$aAhFM@)NW^DbCR%^ACat2 z2}xV7t(|P9zz*lNE#c-Pd(*Grtolm0Vl5=UNNNt?SnQxQd=B=BDLU$iL#8^aWfJu# zGH{yUv78j9WV2=$L@$YZx@l<-;{^AJh9;!RgqdKVR?}Q1#N(vP6S}De z7kL(PT2=Hy5dcpj`YANb14GyJCGwReaDR#wHuWU}?{WV=0r9A3OsMF6Yy4V9xqyHw z>(n$6NR?4GIqc{I$p1+I9ZK_@qNxx4QI9V_jAPOAU+uvO6u2-$+uadx#owwVQ_?hJ zVe*vjO@K&K7vi2GEXqt(YzK}b>L1<1FI(FR2P~>X2CR?y9w)Yd3`%413qu0RLT!Y`wFqX}ewQ_d)GQ#W!PmvX8F%F@?v|o_;uC*{B=CLs{!r-r~y#3-fWLDmO@m8qt2_2PEy&rww;)U)+!!~i25h&&`B zT2deLj~x*7$PPI%peU3B z5ZIxq_9hWsI0?A6bcQdV9Lj9KpxUJMc6Q6EY;wmOh&vgesx#A-e+GnBg&{y`>o)dR zM{ZXU-MT$K7ru9htVJ|b=n2Q;hT-4!=5k6)MQBv(0U6RBzmnAKGY(6CCs1_Z zIKAk#=QbX15W|ulca^Z7E#=?O{|kEU0EB9sL_%N~B7A#pBpYW6){ZebA+th=Ao8%W zf6iUS43%p0nr@xJtHrGL8L`QKI-Y4BO^`wZ&LA8*#~vzHQ9>sGD)%^qyZ^){ofN9) zElgh>#0aq?qAL`$GPDB&A8ERp5LRC3J-sMtcD#l>FaYt>V6wFw;QNf|k|Nghpe*57swkqZY`am0=wOSAIBE51HMfFZ5#L=JMDT0E(oD(O_=6qC;u;gN28E^jWK%0r+y6W6-p1OOixK_)cwX+Dr@VJ~ zbezj*vR7LK%Q&QFHH56Mw^2hqzsChPfaNwq7SK1>ikDg^h2wAGPoEz0CzP$G_ZeI} zNQjH<4XUGPPDUl%;f{%w;zXM^w6-hQ$Uc)7wM*9{fc1I!rrdrozt(f35nKbgxT;wII%?iNZo5l!`3G1Dk^n-=*fir zuJR_>rG!#;xSEh3Gf#a|^bXnH2WD9agChg^I@i^u%|#-mctTo0oHsJQVbiH3 z_0VdQETS~q;WoP1@BMSNQ20Op1-Vrv=eouTvvdfa2*d*1&Iph_o6AMg*J z^>1DhQPlY*c^612xvVau8o*7i{UL_MO#Eyr@AMBKDAZAtE%eysgM?uz2bVbL@HVQ| zEtKfGW~*JmSMk5P&Zx7l^wkB-LtJ<&;IBMUGZ$@*p7bNnprJn6ae~uPvD8-`{T+p^ zePxf{H=70mj7-n6u}msyYrfe)pUt zi$phcqbG2n6LgI!n%YBA@2&l|M3U1$x8fQ`Ts!oYG?3e@lf%DPS`}RDRzWjY1*xIl zGXR_LM26j`F2vPVi67&oR={j-~bZxo#phko@gt&Y9#A~R9`i#Kqp)kKn-j`Gh z)c`$igRTrvT7F{`Dm&aooJ&J&)KzbmQ#c5?icEoBP6DO&Y3LAXcbk3& zGTcdAbcLycG?~hUPFXcQ*ShV=eZrVf5DOuR;MFVnSXomI%RJ&e7SxVm=ZIEGLM)WM zb8}h8`qIQjr1OsE#k9Y|yPzoYjl*~N4Ps88v62LM7}B@k>srbOD&Dm)wBk`}uTP0e z{vld(`5#xW!9|G)>keGDD_vNlmhIQ>&TpJQgVa1w)#MG=Lwk@@j_NT>7wiP?ZHu2w z=N-1A8stJBZdrf-@Ea*dF@PPMK*$4ws;OM1ctXxU9~S6o4}<8H8%Xz$WZH~waO8u7 zql?7UX_MDy=NRFt9>UFJY>xv>NHif)$Eqq`q+dW-C+LoC*$&+)D1^q%k5^z(^m zJs)P3Wu6Z4^F23q>Hq#wXum5GT6$(5=;{&CG##o&S(kJu=G)jCuCjL(4C@e^%3pLy zF(k5nU{>us?nJvuEs2bc1828ek>^26-_dE^z9Q#ZAsTamoiABg5iXCM7*L_8_S`Ux zr=0oi5D0y0vgJwz%{`92)BLBRXuGZ(K3c&EF;~MDRSg407I7*q6TuoRbe5W`Xumuxmuqmg!h8SE!n$8ai#p@xuuJ6;W2X zLMuNd`(y$qPH6=uBN3u!u@koww;L&rL2ARUoSx45%=ai2g$@3d%6(>bcVcN zf{^M}ib(iVPxh#*+&b0<k+bx>-vRVt>l!J&L zp#d%(ufYmEXs%M<)_*WeTagyl(J!9ptx8V+YIxRr!}NW)fD&?bGcZc~m}69FcIIrW zd3Oi;^YR*#pbHf_qCHU5WjsDSF7=vD+|bv7#P*vz(RyY#xBk}r4sdZXfG4ZL5fd_E zb=Sp~g$JGyn5@t&iS+Z^-Jr6*&Kod9*l*QtraOw^USDQaumb=~Yqza$06Q2;HyEN^ zhxDJc4!?Hc&gkT6N#Oz_rQqHpA_v|^-Q)1XTNoj|a8$>Xo#{GDg)6xM%!JuvX1zIe zDT5+suSz$on%P62noRS`&Ee(SYO~{6!gm}#@8eC1u>+<7ufw_SGKeZ0zBEUdeJ^;? zvIHsjq|~~1Hj5)3kZj06F$WD_HV2f2^`QUM zip)aldb$PK(jOcjPjj2J8Pk#zPrRW)t{mR`5$xO?%+iTR?#7&#lDa+nH8pOuFhfy< z)K(Y1#!;R0;qIIVLGSj@FtCsydG)J``fm}u<`tWC&H0X$vG;-N=rMV>wibtlS=ju; z^Q#zMi=TwX*m}^|%D-2Zd>J!LS^oT69d*Dl@s>BY9X7uXh%CCprK}jL9Zz zwK2ky)+r8yC!QwindG|qU>ifmpHemj0}sR#V{^F0FZSb8$}T2GN4XibN~jbBEZJp= z(PckF-0r_)jPlbljBKIC1rrZ|CT1>%E{I$e@BybK7BgB*S?7a0QreGtDL_y^kL_g7 zalZ{AF$L3nwIB8PnGQT1awC9YtR~z-_f3E_Vk+iC2(d+d$@0{LzsaAmoW(BOVK5Tz zQUfC5)}5H{PxaNtS{PabD*y5P$Y>4}rRJ`giGjE=RS{r_oJjy@OzH4aO_wijMu)EwB7)3zVO)kHDUjl_wRVHo&YI*X>s8? zTc4q^ma&8W`E4$p`N~_58#L*JBhm^El9vf36-c5nBk#e{{YMb6(4;}{hxwR)ll`t( z24y?MznkDnX6Vuzv7w}VwEtHk(W$X!!B%h`I>0mmO{k+0DY>0Va_~#os>4=N8XbR- zM=`V|M8f`=EYTV)4*b%J@$@SUtWU0R+pLpcZG(f4k?)o3g;M^(?m$vq)~rzJY}I;| z+x>0d%gD8pzg;0GuGAooM1ij5^ zs4pCyx%H4w7z*7jG4uR{gm(fnjV4s1!)TlP(*>9%kU!`W4KsTLhS3O|dj52g)WU@^ zf6vo2ud_4X==DAo+vZ{yRNYLGT~ftC6K!Fl-$bIz*bMX133xEwz`9DyWPS(z5y9YUjdzR1@!&Fmg7L}z|3p3R5&u$s6D;%qLCzwzP5f^O6 zMOuNWtm`PSP~*xx$nI<+8Vv6BYEU7CjlGpf9#XR9Phe>;D0oHwit6Hcc`}WHvbdb|_O9RmY`pCFG$Y$CJ1=TnX zSMOoT%_i*NY>L4Q$jTk<(%)B?AiplF;23#y;`@I{@}6||*jku0B-f?a_C2kpga#V! zoHHP~Xe2@v$&6=<;A|&%t2$DeYx-HUVT$QhOysZpA^_TSSfpj8vkYGr=ul5=aEp$T zX*(BfykU+>pI`@LPGD>D(GMRrh}i(wMGb>z$VWhQgX%;_w@cMTM)@Y992%?BwlAXo zO5Kev9)3o`vs_8;3m6yS9oIOn_LYX*rT-#co@;hA75QoSb!o$bBEAmE-r>0UlBS1| zUJlOBAen>n!~H6-tjiPs0dfum1NbrMe?SKLBw?wlFVmMWsxyWYSoT4i_&vcSdqDAn zuYJ7(;-_VS(ysCCKLo^%32|Hr3GnbpkD|4E@(*0myDioPxqc@HI{+-{P#BumNb6e* zikR(%clHWlo@YLGTPFwb2xLN56k@q+N8DCoiHtz$o^8VTA;eUc0CsHguG#=;YJNW5 zwU5g&U$kU?Wks(&lHyWz26pz&XkO)5nxFWvMcKK_C`Pr$bor77QS^CN#im?TD`r$D zPQozpO+y8Kk>@D(g8|d(ECCcNszS0U_!p?6rPIz@u*BwEa*>_&xEalcZLD7{@Upp6 zUaaYgFTBIE9z;(`-E?!sq|9~8R(X>OZ`~l}IdkiZy!T{}n9F@(3!VlCo_}?Ck5?>>3T+YwQ zwrZJ_9FEpmSsB1MFB6{NsqCtFv_$!)pl1ckS@y8~V~#30qX=*s%9hJDR*Ok8M7acl z7wpT`A&6H2_;H^?t^Ph!dcE1gKIC2zR9e~Q0B9~F8I~Cv5Wbxi^JE73Z#CBuecWHp zX9>*stpbzUWBc}~z!>Urnz#}$mZ~1he zu5>XolPrm?5Y}W;15FZP7vf%3-43R(4~+}QD^?=%F;olo!mxQA11!Do9V|GD!+vvb z%3-U3ys^1yDqD+7vW!%3V0yZ@YL@wD*2_K=&dcl0?y=Xbp7+i$|203(ndIM6;~1V! zgAds3Ji4hHJ!RXppXW`2(zY-JTpE2hU>0#;q3C3Ii~s6pQ*Mkwh+68v)#p*19NE`O z`H?^g=x|1b(Rp>-3y&`!mSg<=Wa!#uy!9g(SpY?FDcHPeIZNw6LDD}w{>qLTZ%X(Mh5uYQd8m9{glmB#{#Uyp6wd~O}Lz=@Nm|3T6$ z`$YaLac5vzhqtE)PbEpo7#NjW&E~4A{(^T^8<-7#n1?WD${u23O>WZfIQM5eSB0dg z(Q02CXuFNqX6^Qm#)YRJx^HgxXylcb4CH5s{Hr*$4>ziiVQ8}>-$8J(H%$=y=-!l=v&4OC>k^S zc9bFDpUR4J%ocH41RKAhir5Gnjmn*Yxs3p=IvwR2gw4Gkudtqg)_qT}vEN@ap=1<= z%{#gyi88^H8O)e+cH3$yB;)(qa;vU;omj3@y-MAf2O&^qNgY!`{hKAXdA_0y4Buu| z&{o$EN_-Y$+8U&`5p*7dye|ifD{(Lhi}yeSN3Efu=6gZ zA|7!s$Z&AisqsacMIc;Qls+H7jaQ8~;XE(*9l>nxZpLoC$bd?nG2^|{8n|#v=JRi} z!T1)`<%i69Nyya@%ZMGq9T{M|=CoZ#{acMzG8QmmM?z;5;G3jl5+nQ%BD8NBJUX(y zipZPGFbNRAz0P=%S_yww667m3PqVERi#6h}NyN7rofL9P0{|0f(ElS6mH`nJ40;JP zyoy<668L7B1CYdp)o1@=a!I=P%0)0n%W4HAA{dIG>YOdCYl^;M?RCV20_TX*HQ-|e zW~~AdY7XPj<_+be(WNy<7tI{<;Mu^cs&l=?j4UHJ2wnxf(B=nWBPxpJNF&uSwx2@G z&dug}(RZ@p!Wyib+Kl1X#hQc}6(WCv;D&n$=TFsS$i*~Iz!#aM#po(cMGh>9`KsZ2 zP*h1Dxz{Vt+9;lNfeic9q(&~f>jq91z7!3Bp~@^r3O8D<%J{ zvam&b3Asz=aahDS4+zCM}IFYGsuR7EeyGW~n&^ z@T1#wtC?~2M~p{-o*rXkZ&5gQVxqXNJ5ga`GD6`yrS7c|^Dz@T?B}Q|J_&6zSs)e- z!C1f=gbOR9YIB9Xqm3l(FTC|4R3(Kkduvpu`g=ih4ZIuW;|mEX#mlS1EZ%WYQY8|M zN(I@Yn(uxmQTI$&hixmZMQm#}JFtBQ$FD@)rrY^1C)#nD7QN`{tu|c1f#C95=>N%? zAh^eqb)g56_;hr2N#-T^KHyl4x3sNLZ&@jq-OxHkYR?D1j!J#7?));mv}g7RcF=7H zgYNN%flI>uBGIdJYgY_o`t@A7ATBC%<8?FH54=neXN zB)?KTwB%H-1L+4a)dz)EwQAVGW14T=qyI`&;ni}VM-@Agq}f>}$VD7hBvMXq@c+tx z-u14Ku#qVch1TIS>W$gOrM71WLrPLn8{WYXg+qd-E)%pTd1+|O?dc4JLVmB#zW8IQ?ExV&zPvZzdloFxyQo)Lk z(mzj%(WI-;5+z?O71RR}Nzc$K@^@M(qNXtpjUO|H5db1_hmFQ;Wt5ZEyhy5Hh+}WE zI@-8Al|BMFJmh8lnu%#2%-gi%rL99R0{%AW878k%&}BNgO1-M5s}sd++ydc<0Y12e zfzvYhPLas6uH)0Q%eXiNv15%cL9xn4vu%kg^;`b5En0=yy1fvr^u0Y7>vxy@-~I?CqU~wt90Tg)r=}K!b|<2eJhSFylpJ&qU?Q2e~?5P_=LyqQ5?HvZ2;*a(oW)T zbYK@o%$LXKVkwAuA=hES?a0hi2|l6kzKT2Kpnm~>?j;BSA9+9(j4g&h<)6a`(cdp#U0|nCBIiTe~rAZ zhf)!B*Y)g|H?J8y;7l7uCN&-lNLE=lZxM8y2xNE)eKV=ur+5-irV6jb18g7Y{)>fu9j86{desdt-~fL^ws2z;Jjw2jNh zou^Mx=n3ho%y5ELGEh-ssQtG7o%&k{&`V8<+(aPl@oEM8=d`}c%0alAr#9m-WX&0x zdQ=pKe^c>Q#WLjglB01_&~EjS2OGKrv(k4$4y_LVgS$O1a8$x*=N3a_wdg zzw;P_Vn42AFd-Kq)BsS}`OpN}4UTQ#QM=zr{rcO1ueNeUS483(&f*5@hR{}BmSSg- z9LRXcl?vKTg4cvBvBll5#2^oB&C|-9ngNYTOK5)Xz3nXlNimMw2U&)&(k@L$zbR0> zCohFPgTYSQa1czY4K;B9`0;Vm(oO}Z_(18N!&sT?bBOe9F4RQDbbi?L<8tY;(E zysK4#J|!3$seNmKX|V;az)oXlQbabbFh`3Jp2~gh9oLS}!49$Wr z$Ma)#&thRWX+QHT*!xw2l~uU)X6ZXv%!#S6{ec<0Fn(VHTg05~U{D~DqHtlvrKvE2 zWZTo80@;(*2-M$viuI=Drt9P|W^xp0GGhk1xeZsa#wTR#l!&Z*>+=O(D(2`;`oqDd zA+ljF#9j4guA)@P8;%aeqeF;E+hUm!6K>qT(kR+*fW@~|Jo!;+j17mXOo6OB+qT)C zd>oE*!6|!6fbvhs97^z^YOsQ7WUAQ0?_e>m0-i3P|LKDp@8rh${Dhl;Tlq`OB?|!6 zLcvx_v zU>0sqLm_X?=77>SAusq!WpOR@_<79FApwCa+00KBqG z$U;UA#E%)FWp(7uA4UIIY7kjBL3K#Ws^E}VZ(9BQd5-*56L{p3jtsX zb^<=6sYhMT-aHy|9F9nC1R>FsU^4OemM-`hD>H+#_DX<+jtOL)r!i?)hub4VJjLSM zt9AGKWS z203+sG!P<9K}|{G^_>^9D81RneohZk!l%YIA|ru8;39V7uM7>B0irde7jWA<0JpOe zNKVcqQlCP6df5HHuF_qYet&V7h#a!=nWF&}b8Zc&17t@HaRVEOL%Z)UaV1y%%zc{! zTe7gR56$9pBsO-aflA=yZV6P`0h_(=8#4#IM9*K5El?yqYl<`1v*3oy4=c^EQY?22 zS&GJys0k7rjL{mV%gaU)28(xy)Ao*5=hhw$%(NOtR40TKqBLIAf!A1}XYu>mPvXv3 zdghe~g9RZ1^zsqs7FTX|zzhnysU9?D%7NZ1p3~0Q-#ttBJFc@7;GRT{ftRMRzQKEULEswEDT!+Bf|!DI$0RdrE_mLC!&ts774GE+m$@#TiK@6( zaMnBl#>jn}LOtJW@!PvGS;s{;4HvtITtZX-5HgH2ihOk5Fb&OZE+jSDS0B{-4J>$P z=;vk0SxzhJosqBoSP4Om zd4G?8EE-j=v*M0LLCGVgFal?2qRUZjeGPty#eb{eL&qo^fR}^$qZRFfsO-sicvh63 zB@rylBDBReyu=S1|1DqIXh1!6e~YvR-JawH`ku;LPcS~h0Hx2p_gi0RW&eV3QghjJ zrPNvuQal5BUJ(0~oTBJw!0C7h62;_)CFL!|7N2vP|9`^B9eTN>#6!iRvtHm1Ve^@7 zq)up6fcSv;r8>_M(PHNj?DL`X0Z*Y0`iIf{!rZ? zUG-XFt5cffhL)CR_zpD^)$w*f_w#bIAq(XX(b_40@!sK~zM-jo|Hi-z~(Pxc= z;OdcxoPOnz=kM>aFwmVdW|`@p+f=%!U)F+h7F1hNP&&AT+|IXUK=**YC=}F0@JbCB zXd3huyQhk84)?*mH{(UQO3#e%wD_s72@loLhn7-bvbMwjeuDxIaWcv5QHpPMHQER=hS}{;z_6H~b zH18Y#)dVSh$pTrd+bI%MqM}5XHrBR(FMNCMznI2MC$)<@WtS6;8ayC`aI74HAx%vs zwJzMS=fZUV@XlSCD)$%*ede%!qa(x(4ee_w!_X+cU14d|n!U$2-1oDv|G0uNIK0G( zXO{5^C*R`RhH_DzyH@!cMaiMM2R1>~dO-yJHG2dY30^W~jn>OTo5+(_SLo7!Gt{6% ze!qeQm3npXp1t{jmp2rwV=ca_J4yc0U<}R+) zNEU;mAn7Xpb(W~&QcU!5QZ>TJZO4F_lfkZCl$~Oh@O14awxW?BPeuRFAxAGHAcbw- zA%D0kn@|0QDAM*?18`aIje}xYG|fiGsqH7!${u^bqh>AU`o1MLl z>DPo)U2r|eP1tDj(-6t19P@}sYU1a^0E#vF3ai;jlvZOgbE5W3OsH37?D83lxLv1; z9EGOQtZ(9t+z71a)=;D{My)`JFI<{)(2!;3f zkjjN9t9iSuSrf6?AWT+ybIL>uW>NA#MhWFeEv{P>-~&_kefPO|VEn!EfIe*@t#o%Q z(z(UFt9sOz2{fp!f#&4?rxAwJa3!Y8fb8Rcv2yWAF_%BA)&fkS$*OvN#Jn(5Y}-S= ztC+Hc*j6;GC$ptt6B>6awOgdwVz z>!qO8a{!!2TXz%dG!MD3eUP1PvCLk|7Odw9RsJ#(WurpOeknR56_|eLYtDR8*O9WM+2n%gk#r!KsD$0yH>Vz?os$otg2Nr~7w}&FCnYu^s4P~Lq>Ln%sMh}288=9Zk5=L~aKpPH z6Uue|98X&P1+qdS65SR%@xRUxHjRI}7e`jX^MVP3tx%_~j71Z6>8;^Fu`_QVXvzy> zIIy$8Hz2qWz>ds@XtBo#5`<17;jDm8AI6pIVFxI6l6tRUzCsYJqZiAK;29Fn6R+K1 zS_4y7p{TaJVX80ksyb-ih!Vb(6ofrww8+3*(5@IdBmAgtpFs1jZ6f1?)G`q>gH2&W zr1K*#-DVQ{#||#rAp!0M5t7iCvgyt7>DSLNoGcB&(j<|H1YZH(`~ux|7+p!?>20_S zJy5SzeVppJ7dz6iY*Uv9H{l1~GqaaO1U~iT~e~eD>r-^Z@ zJ(t>y-mM)lS#C_u_z*C^+5_sU9l}{YL;=vEJ<RwS z@ogV<-2DAAYaT)A^e*Wy{T7Z6FeZ=g>MA2;(cpBBk9TZ#?h#*Rbv*W_YjPS+d?#%u zcTS#3Y$8Zh-AddEDGH>VI5tiBDCFa4*1?g{TcWeRVT+3nJb`ClLLh9-sH~U=qw%li zVg#ODZ0)56sQt*T?cxDDOXqrV%IaN3XdJl>btQSgFnV(8neJs9)m_qUp&*H|vW>|b zGhIsXjXxy?BNt8-q0>bU%+BS46tjU{UCO2dK7I|THx%#2QjESlJpS|Dn~S68RvYitKMI-Ky4Wxq z+A`m-6^A@3Nx^0M;RF?#*7*+mh#xZoXYSnl0>=Dot)E#i^BO3k#@KB}*c#VabV+)z zY%56aoxSV#2ng#v8YI9x0BlX1xC(sa;!j-6z6PJV~jP3c>4d4qC&qCZ5Z31g|8mXofY0Sll z9~l*Lv>Ksnh3w+xBY;UzGcZNru9^hpVK79U&s19El;2l}U~wBHKK%!sZOgW>s3I&v znIu}Zr4uHfsI|Iay5fpXM$MKzVdn1E&7keX*tZ0i1MJ_y2CKfcjC|dg&F)an7^{#w zL;Tn@-6|_MZ2ly4BdxqV4TR`!aEwV2hQPUsO>+7!Q6wlGU zsUq#!+lIYdplu#%;_iYaXo2~-U*PjGboo>tMfIci>uU>rn^RBkXGEeNA0rI-(b)n* zbTl%0xP&!c(eCxBbovwMiF#y2R0PWg^W;z}kanLPjtRs#0DC`PmBb>6wNt(Om;*_` z;Llix(mSZ;`_zO{+JUe$yfzUz6_TtX_ZlM$@X}S$8dXc^5_)UE+J!`kkjIr-dInMQ z5JhQ8*Sf@2*grMbXeE)zU&GQp(f|K60UX|!t~l%F03(NEwjb99;TVM@f7M|)4T4i) zy>E--9wElVSF?}|hmg^E5KX9*E!mkGYR59*eKXQUN98QDZ(#G!sP2Ojf=KL9RwXIp zBjHD}(G@}2mAixJk4BJg)=?!)KQVPA(mJgtmU!TsCU530-8J?y6TZVUB~=}Kz+Uj# zZC!F1(aaYc}CC6oME> zJb56GMiF@QjTqs%+vg#l@(e|XL;0qn=Ko`vdOKz$MIkru<{)$ioBTbsi5S&HzQn|6 z#Y)CiC@jVmP~wxYCQM+Hi{lMFM*(&4AsC$6yt%;~PD?RlMpS>F--x#SNww-hC&ZxfMpW&9oLo`j((lwkC7DURt{#SKYwi8`RYt0D0KQOGr8AfrJKl> zvM@{%w=6cWZL_A_TtAn=y}xYa-y+QT@n@dGyx*Rl;5>ljt@8zmc^K!S3mxRC*cPFM zlJcDeymhyKb`Ec{)Tr{%lcH1_QmxSmW8N6Zajl7`8`}Z@GKKOe1m)czyGg;I#j|H(m^^AlN}OyP-ZBiZK-dK>rReda)!1G zOZ`B>{{?QWP^FW@KbA8HNL0?KOM7#qGYHjwYAFmx-6=y$*T}$o`>lz0`8mK-w)E?& zXv-(1lnyteI%b`jAoq>mH>Da1y>mhT*=fR9Msq17T$)*;0}|3vZatZYEq7(Ls&jW> z6|AYfj;#s0u?&XUpCFKF<=r3h=~DN!z4Un1xz0y?bn8Rdy`))kJ&FiW&P26_>0}z&&HO$cdt6gvgw3cSoF$g@hlpSLgc-oY1Qbljl)LVbch}<=@VY8A7guS9 z{F+)P<{BMNd(!*(=bWJ=z8IRF>$fAx34Cutvozc2FMF!mcMwLX*>^HPTOT*OYMBKF zux4^2Ty9yvk|iZ2+K7ekptE|{kG8bMBnn66uhRtsh2(M+s(8P?N;n0W_)SCf0f2IJH*#6W2#V;ox}{TW3B*sb z#5cG#f3s1pY?K*bfxD)#4^dJBkEnJTzz{>CCeLdnkUqi?BtF59(PxUIL;b!hk4aWX zF_>Fk_VkGg(-}{~^W)(E{MA>}t`rV)h_*AtoGfsVzh(U3VqIxZ7fQPOC4D~=OjEdX z{s0h-f~YEYGu@*F&2kb^110{%SgJ^Cc?Z14crw9yZpEsXW39djl!t62Oiatp{}c=# z`dL#V^<+j5P%$^FJ(pXlAC6S#Ug+PAZ%z|9qXNyZvO{#2?br_L#dn{6facsCsiKLh?1jd;ewDyZ=4@ z_hYZVY{pXeMF&?gVw7O^CSAE&v?#jlFLx8OtmAT2c)Dw<1Cr}8M=t`f)*IM#m?ghZ z#q=R!ib_9Kr9*8#l9NYMF-3DMZ6B&qNXU8MU`->I0UD}8;FeHArOIq~s zslv@c1>mVeE>lMxJLb)~1htTR8R=Mb4+@L-3=D`Kb7zF29EW=WIsW8(r(Mfu8JEGg zX)+P7XnbAErP?(H8|FkbPA1QH=q%<8io$mLFyA3u@v{LJrO5@GTQ?y( zK`79VJqI;tlz>BN$DCIo87kP$EOsmV52>^c}3zOJDCw4wy=Jk4}QmsR<5bHE=ylO~jXt+=v@J7C5 z#}+LMk||bmDOUSXhW-bbRHWwZ??JSaeT{FbG0V^ z)AHEcZ<@{R66TsidYZNkx zUU-$#j$LB&$VP9{n~azZ|9~ToZKukEs%We>+|&)HSP6Klsz5s19^z)OAcudr=Fm0c z-~j$*^!tEbCWV!uNzVqWg{PIwt|o6|{~!orF0BPEVFa{1{&_Kv4mDZyb579p4Ks_2d%_@b2DBBM@eGih|TH)l5(b8mKYdIrInMR2n8>z6x zS=mH{5IrS2RdfQ<(R)jxN#dgk5ib7c4;0#hZOBIYhH1ea8f&VZ#lnkacJP-!=v4<1 zO0dJJ^uxtBijA-qQKf7CdDhm4gWkPr^p0%x@JXVCpsb|e?5~$X?4+bDrY zbs_oQK?Zq=4)u575E~l}1B>4o_<~!x=2CIEe+{b zkg>w?#5GvcC(6)B4*+loa?U|CYYYeZ6Q&N&d!T$XIDNC{C+=X8ori8_v5QlepXoYH zE56L6)a(!&=$c-CtYI4*dQ-sjq}aXYOGQMG(uO|5fQ%mz_$r61Wkit{E78G8DhPo# z&3Q69P3?q~4QIP!GOj_|e3M!!t3b%EX^ma2u{$J1AHVaCbq+5!{CVPmowKzArIWil zei%0%nwKL!<6$8N8<(3z(Q=t)(OYx~lvv}VFz`y;A;Hm+DQ3DqRA)!xAbRGm#-AxA zxeZ;nQRMAAxPh_+&EcYJY3SD-v-`$8A=$e|aZ%Zfa zmEGxdImWnkvsLb-LIreI8>Q_K(57oLNKSM|*Z3{c);0Z^g86V_*)P3-`7izKp3xp6 zs%G7Ty?!HV+Xh{5)il_epjD4 zVXS~I5fS)%c42wb*!t&I%o;It!k-ru2$G;^6R&mn(IeUoF(GrLLK1yLM&*&%bOAGO zzrYQ#?ilGaV|}soY`Sw`^jdNHQ7(crX4f2?QPP29S}Q)dDJ;>1f^LTRUSuL&0Z#j8 z9;{hLkn9=$^^31C_9n=d4i`s z8@iP-4PULiB9QxBVDB@|?tG$!pTkiuLDDItyFwv@+!;t>3a%nr21VdA_GUUL%+S|P z?->OMQ3%YA!5TvZ{i-73GSW+uF>+wOEB6>}$5JZde5|_wYG)dKu1P3T)KyHnyoYQLIg;_Q`cIIt`F4(0v*&iI1sg3Ta40#(!Kmw3@UaiKj=?zl zWrzqICgIky#eO1^Qd_)){ZidMPyRvH4H;18Vg*`vx7Bjd+e|=MBE)7^oJh=g+FmF< zuW~XqXe7rki&rdvS_tq(x0A~|Wj(G-7M%M_ljV6+w0Ct&F){#IEZu&5*^9N89Jw>a zN+~9{EEVy8*LvUfyWq1%Kqqacp@hERF@zh>JT>W&=!+`bgTy*^6*AjpJ`Zb; z&=%-diwe~Y6sKMTHDAFb@Q*J!RP2|gsK~Oyxo}pMu@MD394Qfb%m{OIn(LoJL_9fq zbpanO#w$a?=XN;=`#@P{;+zyxmCJ#C$jQ}U%l0h>;t16%XZvv_N;Z6De>{)@dq7dX z(ww~y{kL+i1_++ZTZ0^o9A%2VM4-isUJ`2GC$|m{^^1zm7=Po{17ecpHUyK$v5@Pl zS9(TQ7*^@oU5`2rYwmK%!{u+I9B4EL&Sa6~G(UeX

~!?)z;q05U~CaVL`ZoVSuQfv;0{d7fqJY(`wT@d^;T$G#R#YwhwZRS8;=Hy@6AoH;dC zsC{stjXHk9IQ-xjcrt+1aoAoHfN>9@@v@?;fx~ywuSB$Aq_^r`Zr?3Ug66JPotxi) z%N<3+JPya8UM(IZ=ZU7Y?@+5^dyvYBB;x4ck~WBx%j3qkvUY>5@Hg0;T*>%q>5lTw*+Fv1ut1g$2 z-Q-X0D4%6^)`$gn5S95|dnFpvt$~UNRt2)0L>4ooaJWKbvqYTIR|kQkVP2(q?lWJ} zUzI=jeQV+^2ie^cj0SVHU6bd&)N&5P@SurT;EtWWl?tEsPd{pO)6a>RB3Qcf9xJA9 z*%hJg8nIPst&$#+FVq`Q#LuwpYriiAfw90~*!_-gfd1Kxzs`*@_Zrxh9+vU&;Oozm z#SY}L1Q`^@_u;v*x>^(2hP(83tOgT3B%~ZR_%W8eK23*?H}4$k@{y``kq#!QvCr?* z4mkw9dho6we3mae+g^*oolI^h$IcZaH7(nA;Q4GV`d;ij`G>ksn$7Zg`FnOvfglNkTP0JM%Nw9yjA zQ@?{a4budkvHac%Bqu`cq6ctA6LsW;D=dMifH+%Nr{uFaC&{?rwHgoevr;8HsF0C{ zKmLx8|C^{k-(Wk-Z^Xu8Shb~Ibi0y(U=T6?e@HSilEof6q`(ot^@sWSxlVs(3z10s8&r!0 zK4F|HqpGI4U*2zrxh}e(T0x4gFtfsozYDG= z(*r@-=wm(!CqVXR_G}^VR$u?y&>kj>8^nl;jQeyK)Tj(41qgd?cnk~~&=RSngoH4O2p55I z!nkWl;7y#siOu9Skro~g|ftO8$(2bO#xTOOU67H?r5 zL$T$UA9ic%$nf_n9OcaYQA(d6_+_8U7uR;J(UXc&a9goXOTv`6c)ec}B`juFm))A& zQo8`=YmrsB z7W+{?cg2Z;`nrsu=UP_0uXH8j2T637xt{PFp0UbdgTF{s;gB^Nhey%Aa+)dRZb0*> z*pK9J(X<|QggGszQ)d4l=XrsR5Fti|PD(DW3ybc*e-X&po9~TQ?1o1TjR0#&cKjAo zq~5-Bz6+k9BWq#)AQ7w${{`1U&CX5&$iGLX!<(b%ks zhjmJfrtpbE07>VMrK%?#PSlZGZYRBUd5hA+tDlqoPYmjV%S2dle!FPVrYz4Sw~^IGg3 zOeYAAa|~|8Z#TsaE%_M<_X-8#o<-i>o|he_lPRF)Rl1-(L%`NrUF=o{-+{AO07zUIpmbv9V?OQGn`WXx&s3|X|^mq zA3Kbr$N}0yv%%&&Jxggvh_WP_wtcn)w;!M@o_1>AnqKI=IKeU0!mk^e<`@yc|9v>i zwGb<--v;^I0csJyRQshmFco@S2mO@Z5PlM&R{_vF%l2LJ*LLkfl}&*NNihf8tgPXd zUBOol0KyYLBe4n;^vUO`J^Qwgs^EJ2Yp7U9_7Vx`ny8&lCXg`@ojxG%mGG4>w5IRQntZNEAKrpFCJR?Mi)cu?n>@@^@z8WKdyrPPy=w^H_#w1 z#*`x)Qp20LA%4j;hoBymRvxDyYZJhW7)W>UgSOLRTK^LPz?uEfXO|QI9kK1IqAwEw z>wMDfRGk5GuNV&YMOzQ#H%3B&o0Eod){6b*TAY?WZt0q`9v-6bhWuI6{po(7s!rzD zpXYV<$aEGgQGRxmidx3_GVqqJ8xEHc&`=QZzSHpxmY|q0m09;U-+zx2&Sp)rcna9Xuhur|T8(5Q0Oj8F!oF0EVV9=9)Z z=Q|D}qpb}urrvErilP{I`6fh0aA*9VH%`|5)wUPtoJ0*KGkqDxmX&EKR%R4aZ1Mp# zLf|11Kn-RK@`9;tz5@z_gAJg4KCwrrwW{;otB!7fBm-gV#Fx~uVo-A}JiNdWH8@6s z@Tk=i>7@Axk%Q-Ds1d(=W}P$bq_<#&u*3h97(7_|y6vdB_XNWYcCGcTu!dOi=SpkY zR7CK<9~h2cOX}Fj+_+4v1L%q}fnLS8Dlyo&$UIps^-JJ!H9F{2@&m@PIxZS)eimds z(rRETZ-3=?GEyUFKvG|OZQ{87E1F2?8Po^g8j<6!0=dM*sX@_OaPbbt93D725tU^F zSb#ZE9E&Z*i<&yQ(Z_nSQgn0m-M}OxRf~)FEc!{pndob9dD@C`pJXQq;DW8TDLjSS zvB5$~+RlRwhU=x7Pi$_5#!;REU%t!hg~MWO$j0dN{vI|6Mmdve(%QnFGwgCYl1fk$ zstV)QLRi-8N(A$D06l#frP1OiOQvC`%I2ybn<2&wGs!s$OO}W^w#hw!D z)KvxR(X-MZR%pRgZm|x|E|qrSV1+k@(Hml@YZ5xvr0{StYWMrWc(Fg0rk&}UUyn!a z$Uyd0%fT>5*N5(zN^UFL6>O1dJIq~cG>&wgp+^o_oD7K0Cj<;RJw~TNcQG5hq+WEf z3TN21;d>fIT-m>anleWJPBNfus;N0e2Rx?IOc7a+Y;fo+UcQC7VwEQkyw1$dx6#e( z{Nhz=Bbj~z5wsQ`D|8NLkxg!N_=_Uz9Mj@pe_r;1>6*OOkzeqb6jB~)+c?z<8PsFv zO+NLhdLy>$zvTsk46sBMH?)+2XOMY_E*h%3tOW}@%kDH_5nb!Lg8YR}t2(ckmOKWj zU{zVy!0tT+-4?Voo=IJ?TY;WFbu6gFPBipB#7u+`E6c{BrrGUXjO+YncWRf^z|DXP zoh42-HR^-@G3_G=9Q_~XK;5Vm_~QkBRc#o|$fJfKIU*+&_@v$=zo=RPeH zD0@qC+AVcKz=W<^ty4oRUuFlfzP+8*VGIF>r*^fwoKt7(NOZ`hZhMHr2=xhwa?eN- zd>(?FK!x?hz}unw5`^nk);a*qOpF`18o1?D|uIen!%Ts z9<*GC46^sDmkcHFW@11)Fp~a9wF|GyhL~23D1#hL|A}x`?}w}k#?(Ji#s;WR$b(Rc zdnu{*VjZF$1H9MWQ*02JfzXDpz&>ZuS_}Pg++Jn?9ox!LNI21oSIdz}dQc$i%8_^R z5>2IW>{OB1%Jf>+m<-T+-R*&Y&3^Aw-X5NjCx0)ITM$G@VnkZAqq*QG#<6D*rGK2E z8q@Wts1@N4&sVK_DDv1`7@9ATwl1)?SPjLn;`m4|@bwoL|K?rWE)`ZimN#S5vr$RB z2dXYH%e<2G%OW=Y;&WcW52N zrWmlS54&iPPK|DGE@2heYe>z+j5#51kSJ8h;w^qLkxE%#+QiV1a9qBmPdcVg%J<5X z#qP2b1nBjaqFZdK+T-OAWM8=FDFAdsMZv0oF$y2=5%Zg~zEC?vYS=j!`{c`J~v{Dc)sk;!CC|HCHw z;WQqt-a*oKATAP|G3Q-__`3$f|$NP&Xg`*o>VVAhx60+EI-o(fTHWgi& zT{`kpo{blBsV}tdeBX+sepGwUW+|3FIW#NK)qitsE?xDHE0OK*^*jBr8aQk}YO3HL7(*mFR;{h`()+bBF)Tk?{<$d zS-b5WFulKO!0IU0K_B-6Foq3fL)DM$pguVu{bfN!2mE`Ng(-H8EeTP(AsmEYfk>dZ zHFP;pt`B;+teQ{75l|fdHk@+drCL+mnY=ia*gsWrH&3*oK}DrCu{> z-w4#7L~pk1N?JMlJY99Fi#wjSSWsHpyP?mPzz5|VRE4S?nkTy3-gCR50WMgfZ^+;A z2`h;LK8dv>{a()It*IL$vg~XAgDZ>pD~`rcV>o9p+xUq(HX+cqB{(Ni3mSny zLTmpRusrrz*AaE=%(vm;iZ>7F-P&w4L(aG9qZldx#9W*xuBsA3j5ry{)&T-M-U6YG zjvmtE)gc%F)+I&2dKaZn@u4?JA0LYZPP#yXpt7R{T!{-$1^nl{{pA zfBsuxau`P?jmf04>;9QE@fkO_QOQU+N`aNbn(txt-?eu?Cw%w)>^oaSo!X?G8kj7* z^*enXKlkc2@&VlPDP zH?;Dns{3!-K^qL;=I_JvD>xj%3mpc;0|{qlLOk$aIAp<@(Y?>N5(y9?ht=|m3=iW9 zM7X2My~hh*@#TdRQ_70R<+n&R z6)*@Ug5JEV%#ZoF|0Vi#tHfTVKgyAE!{vSktuCeG9+C8m@rLU1U$EJ{phlCnJ-W|% z`h0~;r2rre>bq|OE%fP0a}JD~CDn<@Y#?1MEZ_&v-;NHmJcQz>HXU*Ol|m~2@dvSAss96> zaisBa51P^-aq@r(p>Y?a<_5U1nhZO-z!Or5tHE=Ta4hS>op0r0QODi4U%?({^V}0~ znMk~q=e=|pAJszZR}rE;h#m=OK`FjfKbJ^UR%^+vKzwzPqloib=sPhL(bwIpKQWoUurx zfe9VQWW8G|9O`;F=!?j8~w~|4t3H^V4@>jJBsjDV%+^&;9C}N-vw%(oDuKLVD=FrBClS%(6w@;3oG5 zE6qldbtpJgkewXi)T-g#-fA#7D;oCju|xNj#rVR&yty0>gJ^>#dVTI~Ey97kcB}hP zsW*MiC}nkDiah6)mlB6zOXb^v-(tbp$fm9a-CVtvM)9gJI^F0cJXGjqh*`8P6Z_`= z-+qyz-pKjMtj2hL!Q|nSgl_rgLP-0McY{Qt%KX(EEGhII+gDm*wM9JO{abBjfL2CX z6N?WO_5KQr`HAK|u-%lry)BicJB+XU@4CMFU>S1pL1Y*HP^P2zEQ2*<0oykj@y=2p zzbI;tj)ByaMLLahP3e!N1+;KM*?rIvxO~in^_bnB&$;zL+7ZJBGQ~h*?TpL1wqm&H zgw1z)&lBHRqveN~GS$3_9KH&w2(rHv0J?=r@!z;C68Gorhs}8J;&S9sY*m8glqGc= z`79xkT1_VaU>Q%lzk^SrG^^{_taiuw)#?f({Yi)vOrnd9U+`AJiz^!jKh1q_ow4$$ zb8sEAmvMV1$L|GBO(K{*Z0hzid=}3rAyg=QR1N^&NlY8%a}{IOg31b->PIS?mE%gL zuLIr2Fd3X0y5aoBSB#=|(G+NqK^g#MKx3S(CjX3>M#a*N-TM@?lNw%+J&b z-~^^*%8pC;+e~+1RK4-J-`mT#`0q&1B}1GO>5xwn0gzQJ7OHYY3?0*7X7hc)8i6^C zBUeCZ!ZzOu*Js6zd1b3EB$W%W++oaV7q97hU`wS8V#JD?@>8$dh&P{R(e0*wc38~E z0CN{l;M=Nezs?uc-9bV-9ysO)x&!VGxXkM8y0wK&uuY#ViAoSQYFod>4Ib23WyjhFLge$?o;GUv z_?%HLV{yiUWXKj64IZYGn81{oN^8wWA=u*inbaoM6{-NjoQ#DzS-=-qAgFeYV5v*P z!wbDO`HwpzCY5t)deEjB&EWT^5L}E)3jg(8G z$l5{U^(=TwONE{t&=k1vD41@*Yx?r z;hv8aN!~@+mK>Nq(48W*u8ec1z3!Cz1(>x-wSl>HZNb8ikHhwR!SE=nk$I}ANe>8k zI@{fK>{shiywb6;IYXQAi=NgGa$hXFG-30<#a~! zGAG0WrltNoQuaem^#Fkvv=PGg#EL;JJVNfTg+G zv9WM$+-~>^^hT${l02AvjBUBdr#RJHUta-RYT<7|WUOhVi?2~r%wAzSGMUO?9h=)e5`w0k+@6I{2FIlIzp&?L%)eo&hD z8d3qlkfF1sW$Dpz@Vv*x+1fUMe{Lgx9f7|x%)s(8wZM+b)-uyxSd(Unjdk(@Be&Gq z7pPLTB|=Jv@5pVKUlNZ=pc!Hc6rK^Zh^%%W*XowQ?{tMdJ9d$HwEzp z#O6I=&Gl@>TngOC-0G7RoF|wVa@~%?ZY>7DH8>ze`udscP?WHb&K@Xg{uGbItVDf^ zUjCN_y56re(M)wfMamP1nj%-}9iS*nSfE-UuQ((TSiLr|0z0W+$(xAX|Ce!bK3EV^ zEPua_uZ_;OW2OS``l-NBvAStO4_>PYxqsd?u0{Y-pYWep~lxdh9?-eq4rn7f7%FaxwRv- zvzN%l@@{`H@)Brc68=0^wmygr+q^-xy5-eNAAr`tCB9YxvDn3&Sr8B<6+SK_UO<3; zsFUC8ibx)z4fjSOemgxHhCBzyu2*W{?&d~PNW5Vmtea6E=0Jps@=Df0ZHX&6*WB%T z)C{-?cQ%0pBpB9dg$4Bi?$Q8P?8=%QmE8;8nC;=M8u}5`NznJ?B!lM}tG`|kvsqM^ zQ;Q{}YPj8)j}>wMGB}>Hb_v8@Bp0Fhuj{ZaQ9D7{@uxsBageLROk4psan$`+O7$iC z3sUve4dV+B6!YIrVSX_Y0-Kn3;xB*MzDt%AD z=g?1$k7y|%iK&Lk2EG0%FIY?8_$JcUeQ{Kf#Q*h|V@~xOF@CdKxC2fe2>7VlE;;hQxPG(_;{eND)F zSb{WHlac?FgKEY_x520u2`9Kk-a~pHdl-ZW5->z6II1!ZSvXX$rm_hOkv}<*Z5j&ny@+f z0tnZMkmyy-#VNCHXj)6jB?mhN*%9T94Wi6JW^mZ;Xa?txK%lm+afb+Dr2InL7)lv< zGf{0(2!yn=ASIOd5!ePvjk;S?^H|5+tNp}=Qhe+-fb4UO_-+$8YAy0dx^zW*Ee2T9 zVbX&o?=73VTh8xbm6`uObu1wmpwZsudBYb>sXnVPn+JKq6|y}|30}@=M0N`4JJDnw zk?~8VlbDT)wuFy=kX(vBUn^cxBqjSv{u9LO{tCgT)DZ?ZK}BSvtW7JtY)_SQE8YklE78EFYC4oKpkqzuEdy|TpeZ7tAliL;qj279dyyr zDvtYWb|1tvIzOcS<&9<%*dtla?UN(1XqHk@`wjD!pMhs$z>86Y!8%_*Fo)HMm%QS3 z2*oG8TFq?Z`9Jr4IqHkx)E<5)pr~)nV59;ZQTw2HKmA)sL(BBdk7@zOiD4hS<5ekS zTx1O{g8H|PQF2|$4Pmf8!?B535KoozWhN#lAM`!Sl;#%CdLXOFK@H#23i!req9+Cd zaBE!qaOC_^WDE;15rqbSi3G3}ah6GC-nC9iqjKDoHEFlgqb*C48KRJAUE-CB+>s;g z02t%HEH{>Ub5rV?_LM(7Y5VWCeT?7`kL2_^u+=j2OESVE5wM!#UDh`L|J;>LQoPj1 zsuDGYNuVSsB(vEJm{0RP1R9CWwRJfFH=0!M1CReb4Iw5!+>(vAr!sq??wn*5Keq7u zRhlnJY*~i22-(8IHUF5Qntnyazf*!LyI!cb$e0Hmii!L41m>-@Rye@&Hs92XqGV=B zem;`z;M|_nga+FW41TPQd23$k6Qek9Qw)fZ9(@~dz6api&hHrSs+$Xfm(Mf&d=6#FJ^W~!avGM?v`GM*##<{qdTFs zZJ0rqw;#$7kg5@a*h{gP4~A5CgHNV|v&It(5pOLHD9=MCHf33qnpdS8uW5w-7(AG_ zn0E=KG0cD^R5=C^dQ|S&nh?cR8Bxiua?fGksygl5;W%j^KGCsGy*_I{0@LBika_VA z$PFjtKQ0KP1RgqRX5*L@HZ=2#0)i(?V9tkiI~y|j1)#3!4{Z4xCrEoXAny~V=)DYR z%53hku7xsyqN0K}zS8K_qd^;WN3^bP%%3)#C?;(d?}dQmT2`stz{R?Y3lf#6ZFhyT zmy~p|{`J?_`c<0d0d?*~ZO4;9;?CX%@y*r9RmF~%qDn;7Eny6|uWsw-U1Ag6Fut2; z1E}!^QCRxi2*t^K@=nrJjN6#D3?t_cNJf|xbcAv(Qu^M>ID%G6*ugC{9IQC+MSW;j z(j%pi_9W9sbPLQo+CQN5Nnc~xSD$lt?~s1!G^9Y2S|NVL-i7PA)@phyB3^BzS8B=! z)|NC++}WHH#-4cap69>wbSj3&{@m?xV&YUl4P>^WCx%)^+MBc8)>ryVAJCH(qoX2& z#8l5QgtUKYL8w1as2#UyFf2djOwqW}_qupE<{(%;RZawHD`+`4 zK4M#-nM*#|e6+c|1$lUxm6j=fLeQy$I}Cni+i-S1XT+QnLvav~uB0`sxOMrRX`(sI zde7~uz-%@2)XoH;afVO{l~1Qhd>p&lz7$U50v|DEEsIXA!Hy1lJjyfv=(#*bHrGV` zrF)!Rnc$?>-85)8hTYD;h6^&cTd zfKbjdx}g~WAy)>DFocJ|lx394`Zx8eoT)s2QcU$1FN5pd<`LSyM1i(HU%BvM&-J0= z=ZSWFiDx?6hdc^P0V8PL}dHuxtpPja!e0ghYWOBv7-@~3(; zMer7s5xBJc8=9bebNR-~2jLw$YMe-=KO94k!-79jxF(nO4EQ>cQ-iN6N`kKRoB5?= z=D$N{P-fP*4CK(4o~%gEuz&n6Y@xQ%nrslE3I>M)1ZtF(+>3$HDq&K#;8~gK`zA)i zdDEqKJWw(R659?`&xAlP$pDAkPJ3V;f9Ho!>{icw+MV~K5~e``e*M^_rTI(ngjqy; zA3m0|MN}drJUY^_I3)lxlj5jJZCqL+kZ$Uv^adb!{mmQ|43;a@|Nfw-x;g5wuh zpcP}|NInF3v)4o2l}FjT*t1og#QcbE%SztoY#JqajU$7!K#jbKp}RD&DB$k1o-ux= z*HdCf>#-BOLUqZzR|d5t-fNbS@m2yto4dlMQ&<+Cy!EU1%P!PJRToTLb{u-JMQSmR zD~gjro1^Epaxo~{$rc4dGj$MMJ9|;L4;cu2KE~>vRH%> zC=8+u@FQ0fTTxRo8h`3epGuP1#!6Nre;*R^9l;Xah}AsnmmN*CM9;$Mmo=arSX2Qp z2h4+R09!`T67t(&5TD3^pssfvs8(K=cRIr$@abPI!R(iv9V4!FV8VoxysshEONmH} zpf?M+Pl&uS&BSp^d{OLibtr0!4)5dtgZ_$COKz!H;#0lp!kE(nFi6r8gBM{YZ=*G; zwzkqC^bL)b>1A`$kl~&}J!ncIlrQu_Y=+}3bf2*(IuH9{$@3|@6V{g>lKrkz7uiom zl+ID3gZC?3i|X>0vTS>8mWJIgPLwXlcH&N#r)L$He5c&`hY1KwL)V?P5buMSOHS6* zquVZbt3cYdkDH~wkLwK{JVndZm3-PY8MR{Lmr5}v|7i(^RK2WkwNm*2MxV_bo~2irdx1SLS85Xn%81OY z#TfXv$~Y4G3gAV&`GK*Q0fjXHNE*M9-woAvh(z+Y-RPx;o;j}D7rqu)TL)qKf;-j} zWGZih>-C4@XjY1oS_pg z<^Lcd|6*;Fc?(im5U->U11G$($P6Ilw&fYxgf7V-(z&|?w}{Gs6{=pgqNk>E(*d@k zRn8TS+JZ(%5yuV|MLUaBMpk!-TOLObJ~`rsgYTlSv9KefiA2-_)5@1^i(}{n)Uz6J zre|^`OGo0~0Q7nu0V>+I(>cncyhk{UOBLo}@k700Q?`N` zbw4?NRLUy_F8^WYD5h60*ZY+@#2Ud5iFk~;(-2$wtX&_Y1%=H3k&>iESgb#OS9yGz zx2LDNo^0?O)&;m$PvL0q)9mHSm`z-P1%659Vux@-OtZ%P%tPnFq?oOzjsp2bBPRO* zCIO*NYHcc9Z|inApf7AJNz`OqXPmgX20M$4iL*?Rz><7gxwXu>oQ#M2eYK2t zIpeUW>`c#RFJE_IcFa$T;0t}Kw}!Woa1IC8TnyZXFVa^L55urNMoOLmg|%AXUt^%J zu8HEkeW7J=9+U)*oV(;yoo)p{9INF#k?qeh@Jprq`0?OH(B}xD)Sj#tyTiOz>ZFO? zSFiU>l=kFW|2`1;_}8TNFJ31h;KJmo<_`lxa@AC>n$MH}?;{O|fv*j;LbkS&s~jsz-_DQ7>6(iN9lK zMDMG+960DBM~-$p9coCcc)z{$PVP??g!7j=5L}(x3AYCX=-!t0OeuF3OMPU=L_B zK7HbTu)M2ghpd>Evd2s5Vfy*udJ$?crhd$uU;T}#4WZfD|LyWB*=_?p>-O9Y;~mY1 zcEOmp;V$5_es3^%eB9{>+#vOdgULroC{YLVTzlV{$O14Bay}fEi4YX^#6^|MJQsh_ z>ET%deQye@plzRCC$(pbA)g)`kt)`HfCAHmE?2*;%~s) z7Z_(n$1sw!*Vf7K(_rmiU(t8Hus-7-8y5{XifX6{pjneB3)lo_K9f}B&WpVf%oe}7 z?FHoc-m)O2WRCHs?0$K+4?jMshP?dL)jSg$AWT3SbSJyGV*3OG^)6v7y&!a_KbOE@ z^G`WCZ7ma?>n2u*jQi+e3+KWWU7~d;MA$ye2|i;l}?-NOV8NtiVA0Z{3wKBfpPx5V5V6ZF8^ zlz;Qr5Cy7)aEERw=f*BE8jNdr$r4X2c%OV;NT^*W8nS{fE-{Xc!^C&9_3Z;v&Z1RV zgz5V>;>QeIvvUhKe!lHb%r>$Mtl(r`pZA}l)0gAB9EfbudSNO)rmiZ0H>j)`-dYdrBLCI-&}emt9ji0k7#(q%>_%@j0q9e;a+h(OEYe1nQ! zg-5^@Q>idV0xD0R3#5~Pza}6tD<(ZI!58QHDzf2K&@Bx%&AXWkyWa}mP+Ebz;c-La8{=W)qD)s@KuPXU~`S zGm^XhVJH;8y%kY;V4CH+tVbMlo0Ou@`JS2Gke#m(t)zb~^Vf?iF2sgdD83q>W)t-o zv3gx5rJgMMdQXxQwn;Z)mSX&f4K&S}0^Ew#;_|@Is}heW%B8SwNI;{N#4hi~h%z?= z4(F21GR>(7Kyvw1DQoh5KK(^*No|ED0pa24{4TioKjg_3;xD-2+NPEu*x_W*%zl~w z%$j5u5B|vs!SCn~W`idV)m=g9%LxGgKLEha;Sg|vw?w=b&%D>>S1^b7!{@j@+^?~x zTDc|VrAW7iWD-KKH*C85FsZ{3QswLM27?S~%(7(t?sN~XYFDkSy;9u{9qly+_4fWv z3{@J2x)LSe_P_loPs7kE0{n4dHvg-SN@)Z$kbrVERC`V_C{o*o?fr)6%Kx0;;NKbA z3bM`~j*A#$s52|=Ks4CdAiD9nSbG@N-5p2dOG#RSNmqOlF2;iCDY2U+$z@@^m`t=m z&d}+U*wv!aYSrfP7C&Vzm9}D%rsRYQmdu{nNrwABay()e7u1{PcdxxRcn?goTrA3o znCNj`3AVo=g^Lt;Y4A0lVD_hm;J=$rvVGo}Po@AFzEkKEr#niNjL#}A`!?KWFXpdV zpj@~-G(i;<-~tLS7uAG7jj-TQJ<4}S!F3GfGmc(_s7YOODAfzC7q(9)Y}tNwrjNYC z*E@Ts?hj-B%&B~)If1zs%OAPyJ^S>(nVXXp?MeB&yX(SqprtnP`5cQ{&OPHM?$_V~Yn!UMEN!Z3WV zEhkS;oR5~%&;1D+2NYzq#Jto%CKLjA5}gfLN3>EhR$h;>Qp6E(6 zI`GA~%44O&7J8Gze^GHiukI7`WQqHl-eP{1dx<=w4b}1CY_>lCm@3<^;$j!^{Ioro zpYu(zyMXBW#~TUHW-Ev-)^n1Q0sa3ctNHC6TmFBw5@1R4C=rrSFgM_}JoX-w#H-TT z{Db^PZCf%&NQO8l8uzAuj8345$CtjJ-NbD*9_hU5_z0q@82_Rtqps{`WS0^W$Nvt| z?NCf{m(;4jpKv$D1`7{5vw;pO<;?aAm=kW#7hUaN1H;k$g1_u)*i>-y!=rZiw)o*Z zhy=%!WY`Cj<)Idc=NB}#MLK%E&up(@TZT;4<)JJeTCbIWEfHB`{lg?acFc@g(ZFk4 zQtD#L-Lmc{%pZ!8W_iD~#eEjWR2-sCC=io^3>yBD^Y+l!tn3qbB-CKKqXk9vyGh|1 zLBk?A7apFH#mmjPcQ~+a#$O(D&%_qRZ(Req5#VQoBC$@FWBeD0H{$JNT+!k$gtMEB z8Y-|rR|@N7+3k|s>R-DM1UyGR;=@dI9?4mp$K{D4?zw+H>DBS zP=k*vG78ymj>T}EKaieD7|gt)>wDgWY&v+pX1%J=x_o|q6tDWKJf=i7u!K#|YL|m4 zX&ID2`MDtg{2yB3qn9mH!e0|VH@QQhWi5Ti6s&n>y&oQRue`GrFom8#7-z;pW z?&f`?EaSY=txNs#@M4W22AP@d64;ZJYcVN#w+^pjR7Ah$(-bTyS4~d?mPNJ&Xfobb z3fMK9^0Y<$)CRR;hl;;ag>M>#$8Pd`5OMdlm zNJv(LJ`7xO#Xf27Hp0%qVY%LpZ099JPZEql<=BNlQ`B`#I%QNM_K+R?R?*Nset$}c zJ($)8tX`YA?fVKpdqK1Cj^<|E8q>>+da!Gi9gG*!J_d%|4lzKe?w;FqH?DCYJs0tp ziSA+LLSeIFV)Q%$-!qOHo#NollrY>@SgAeuBh~|cyKPq5E`w;g;2AN4^jx~IKGV1M7JI1 zK&>61hsx*sBZXz-D)Vm;*e$<}d0vJEE%+6E>(kIAP;>^KmuiyUzXSPtd@VA1HHu5V z0`O{3hz1);fy({Z`sF4ZDBo~)JU0f1ncsHX8WLe4#CE zq1D<5F7NOwb0-VX8$Zq=NjrfhFd3JeJH87K`$&Y@^$@(iOn5}ZZr zJLuTl2aIx24utP819AVM+p;BK%KocAS1JsQcY&hdfRn{&ECjE3Cm34cvTiB1ZCQR6 zJdZuWgkjc_&S0^|sy1c#%<4Di)9%yXbTe>AI|&eU&&jM%_n7K2D-%GYZEzJba%ykD zb%a_d11vN@GK|!18NdS;qd~dmr>n|N|8GI%R6er7moS z`?!cT=H=3~jZSn1G9lXCsh6xTmh}$qVI4qtm#*~U*^&DK)vTmYPJJ(|ye}gM7P$z2 z0yT7`(=5&Jr~Ra}>ihN4Q9w_hf(5@_8wd?j6&I(Bv1Q2{vW=Lbb3qqwA{6qVD#%Gc zg!NnPcmi>c?||#HpD4ps{wiCgi?Z*K`$lmzHkkEIwO#a^>tyQ0cpWF>wFt%|!M{NAa=8&Hel|g_DR|}3$ydd=2YtHX zRf9D9$q)%*M$mzV*sDqflNp#s2K?3Cn9WISz{EOfJP;0I+(ZL%(tb^Z2=CxXXpjK! z&%m#-bvT{9XcgA7#c#ILNIGp_6-Ae=Q;)@+1Cgi} z|2blcGsUpIghSvXs@Kc^4s;VBI{#(t(h`@A5|KQMPq1?pk4l5_E_&{hU)~L}Wk1kLV%N?Uf)dJ&0mq*6HAkt=O7J%jp z&-E(H5I(*m?a}zr5p}Gvw*L-t-Vrh&oz#>{w0z;9In~0dBR2^CoB*NLkba?@&*;Hy zd-NGlJTp6rRX;cSoLb}#dD>-=G?~Gp0Qc@J$#+jLphR;BAzR+cydA$C24sg|lV}p7UMN=6Z|_sp z=c-S-zfchb2z;W>7&k%DpPq z?~~&$R_?+g&3c8WbF3*3l$f^S!j=wsnv6}ll0%l_*k7ck-KoLVfN%bBo}yo-1HJxq zK2gaJ4neGs#cft zlhUuOE?ph8v<{;*GYJSF$4MhNZtlqw`uvAp#2Wo~$A!J~n}s`8NHs9dM!lwUDOP2nu6{YvzBjW@D0!tgr{!H6fDtQX5GFL!$-eo=uZrFE}8aXAxq zzq7pCAg-|{KovK_H?;_paS)Fz4H4-+1{(ZBVdxRiV6chC=!5S$kvK)Kk6Ij}#>?e( zR{HP4<9B z1so?_g6xHtp+0JI84f~7<>ze=qBOHSPLSau^^Xg0PHsasxf9X<(gg2l)I?k^j=T3h zXu_Jji;})x=VEYk|I_z`;3!l~_*)j-BbS>qMqaqQO4U}}k67F0E(0|3^K>ZnA1V{| za8s9zQ!L9e>oM2^to07Lf{rf|o4Cf&J3N0~S`V$)!Yw)pF`uc|_vcxlYDgtiQ+vM8 z@3eUo{nBbzc+;q)l&Y8kzDw<}meF-)Qc{YgOFBrSxs_hI6pEsFE$i@De`w2!5>7Ea{x1YYCZ&w5I7tzl1s3`bq7~f@x+l~d zhn(JT0%)4T=_N@;S4aBo^O+p2arU*1NBCHHYZQd(Jp2M*-efve$?Z%H3QmW1mbdpJ z=LR7py^o(jo?(=x!Narfm{WQcVq`uTXmO`#RTbu4sE2GHh6NL|fQ)io`XW8R2_U}a zt+lB5m|^@jGT_yothyhczjxp4Ax;}fTz7x&$In*qyoXNEMY4o6z+=&RopPK{E-{Rt zW1ltR+uDHFC-fozPuVtf_P%oBtjrW@ZewlimQo5cIohm4^H?vbfOQs1{^D-r}_2$lAu_T z6OT5Lt+BOhDY^QiDq7wBjkX{1@CV`0)#jW(=^>^l!hwJ0HcLl@Y#PEap?3abypD_R z*ExG)gYXbmi8JV9*!8voaNXd25!4YQ_{q9a=HGtQ`Ol%$WnJ0;>rjF~1PuFjX@kQ~ zn_x?7PH}}H)%o})SVJgQXL9?Oj|uVM#$=s1;%?R8Y$QrsOc#+>e63homXN?ojaiHR z8Z{PODhR?)oWRGPRGBOg_f>?qt@&o{W#K6Ao8Qt|mHw(&4a@s__h{taTql=T7ag!= z*O5_R@PL`|b}en%8nE8j%PRhY#r3k1tFmqSWNfB@h5P`IbH#bhivOKeMv+ z#AMZ3qC>m2f;D!hcLr;Yv&n!G_wJMGx^}J-j>`MH6@8?xMtzxoKvj;-zS=!O-EHzB z@rZwww><3(vL`w7ke~J@wzBH@x*p>46C_Gg{E4A6Y$D+;zCRf^3Y5#lrY)zHaWb!U zvY}Xo7!d|sQtLFS*9YOKUn4#E3x#mk%2onx3@7vl&&26CRQX)Ubi2L_yvTq&FKmew z9FirQthe)N_eQyDMv*^ITsl=-zWq;A@&2ai;pJnEe}Jc*mm8C3cBGP!)!^D=P& zlv&IijGW~zm`>tp#0xJ3)_yk@O3)ck0E{AWgj-@qGdEL*Sz0qiwpw=?&S~YTgsyqH#^{tYF})X(Noc&{RxfYY$DF!RP*)ab?VHMj+f_0EG<3zgVe)-o zD&@H*C`L%@k7jW}i*$38!#d4usr!&%m#%aw~T)IqTbedLNz)1q71q8(bDzC^qRo|G%(VO$^qWx1IQ#8gb+yC z<#mIV;%>q#(}k8rSSXJbd9Vg^20J&nYLin|cIcZ|Q?_%1QMSiqh=C1962V{U9<1ov zR39^q%>rA#6WYdr2tz~wkGDIOcYFCkz(V^=$Y#>iG^9qc-FsatIpu-Avb?D(^>+q3 zKdj=4ThS#*c&i->7)De?R7p@Sd^j%Y8%j(Jf-hx!T0bPv1H-#YY8>h`A21-mFRkC5 ziyyc@ChB-LwjHDn=dDz$LS@P107#Ujq>S&$!?&!`8ox!|Ggds>+OxD>j zTo#f(KAu+WdhKo-bCXNo*uZoAzqeKz$hr(KT%+?5-*^T%!M^_FZ4Enb{+3@dm%(1r zvTV8Y_rfaOW&5jREf}yZ@&RxiKg@#Q;_YwtQpppZFkqgBy3Ja1#WNZ44_$__ zKv5J3^gn`Z^!X^{AC-rrc*ZZZNjvHoVqo%yIxG#VUX7A4@%vZKNFUq??@00-qyMkG z&wUeG3=(=dtQXOPWJ5J-cnA@T4rG1N%Ma#nWTTQw*uTbYpD`6zki~HcMj@!zZpGUy z(i#6)e%Rp_15qaLXn$}@gu6tuU3%Z?^q3QNzpO! z2px*Ahv^gJTU3Uoa6{WEG+}i6kI>FHGPn+eEMr$n;8XkFTopWcuf7kNjRz)!$Yr@R z$6_PY*4R_8kNTVXB)ArOz$+|y;u4zEB5En&?xj}*g<^>5XW`3Qmsc@qy!p^KYrpl$ zCysiS@Q|2aeqZ|^)*@RT7tcm0`>4fdl z2k-hY9Zmnp-+H(X$_-ghEpm(R4qHEix>NsYtW~P@WxVwiH+L#OUCeVzOibY=`^}Zn zKDSq0I>jH*j4CJWMZg=kgp83}ny1uoY_>ChilFbg!o*YzwV+n|mM*N~NJ7tEs!oh( z++S`u9taIXp2nX$!bvh>4Gq@Bzyx7m5<|qH-a&SbwRXAx>FD%Rez0gV zjVYfA8J#2UJ7ysPmGRZX*Tof~oe(n|HL6WZ&Rs4{7b;aFL>8zkFNW152UhqQF*8uu zzD~FhPpW`Ms8GeZG%)<9bc9*v&W!MOWtxvlyL4&)4Y z9=LLgM3jrx-qxPHyTeUOj&tWGGXkpE<2LdaWlFu{qH5s-Ux*@7L-{E(RH2tdMq~gA zwj17#SMn5O!>Qk;+O|UtuCq>vlVo1g;VCLPsXBHZ(0(eiyjAT=;||Hg?726-W)qG} zjbbc(Jes&W)1$#8b>3f(wb z5bP0JRZ8l^gmitRLvp^iB%%gtS{pXeIUY|QrDMiqrnXlVIVdG2Djw;B`S@fEE^d9% zvfKIUJC$9t$sVE}xleg~aE}M1>clmWkf`f}xyyr!Y9;=hmO%f8yY-46jS zd5|RFsy##rE<(7ffy}#}&*Y*>McCWp0jI^WNxQF+fF-*IXLS1A#m;Om_s^^PK{he1 zDbgqqWw_H4*ym)yHT~BzFO5M$(Q4z6YsgGk#J3O!o)$j*45=jMIzjut^*D;tfv{d{ zhMZAe+PkzjJ8N8(-+eD^2E-Yme-nUF{7(-a%IQc`927AA@ZZe7j5y_qp?*2di=ub? zb$RCdnPQAR?c^^d0j%s%%2qCx$qQJ<6x|jPh~OkVI;LC_CToGxDrioV%!Zhz2z8oq zLBvl>&M_Jv~F=T++VfRKxTUwJ7w6=pA&okdHK@NR*)xb+%;YE85M%Hk(NEm+$8 zdld12wXb~9qN-IP-dQGjAwnwtsv7$TJZDt#)2|?-XW3YT*wZWW*Km^BN|iu+rY||N zJT*@~v0?h}ptWW360Vgq7$pP<@WnYL-V(Wpr?@d!Q~a*StyyB5Adc7~+|^!*?`jq^ zh5&JD*w~9xIi;*Y=V#E@qA1Nl#!4mxHi^OlzB<_8B%(U zWxiU2@TZ@Lp+rE5-e^oSCibtbb`1%nn+#H}ABa z$66n<_1J0#(HJs;B}aJF=eoIa+d>!ja}wetax_<$S`FFJ6y5rD%i2A|he2fZ>W}t$ zE5KrVF$Wuu)V4a-`2CQE58ySYz<_QwbKwy8zaYx*peyWmhdep?88)TuqW;M~I7#tf znhH0$PfAo2pR?5si5`@rTo|c0{}w>MU_T^r`;zgol?iDWWT;*Yesh%SCmD5$^*0U* z#-Xib@isqaV914w_$y88I?ca<7?3)oW`^x%USzb9x~;dI+_ydoCv)H)gQl5WSCJfY zYM1|CUl?oIX}8uAB(OsDZUhbW2u;tQD0))m1aXCf_!LWOLI{=blF7%cH$MT%;A_GO z&%Nbwx{p&OPQcAF>vt8ocw!CqIbzrEsNi1xt9+d5YN<(WFcqu6pq`A+q>SK@1Mj(A z&dAj`v@{)uMCn+Oq7dLRhY1!J0(<34Vyx9_|(azA|YIqwh zb7E)GCLOJ{>gGmZzXdj{Am%E6VsD}j@-rKh^O;X$PuY61U6L2N4I+TpuvGJ?WCGsP zKW!GsRRi1_I<(uh@)>O#^jR|k@!n$m!&_KEz!Ma5L!pbp|?$7+-0A*A>?rCGny_Q(V<>VA61l^gXm2!v4036mr2 zQ2RIzo@_oayKc7_ic|$h@Z1OL}o&hujkQCm0BRv zO;l9bLOWO2Fap#MxU<~tj0Hkvd~ry_5s-=2mR27a#_ZY7UH)!GhY$%wM@sw6B--Lr zWQCK#V2Ma)4C!=Se>E)ROdRQsYVjKA(r~Q5pE&CZU0i98W3tR-S;C5d=QgGgdYOyQ z?O4mzJ?FqI_l{sAurwNC)NZkZ2>R8>fAIGmpe(Zn)e7fbz~SbP@V$Dr(XYR5payKr z(bk7SV(Pcb`+Qa_jvs}zzHa%2hOKbQmw)1WWGJ9DOmi!DK(L)0$HdFpdH-5mq<&MN z0OA*YYCPuo;<3a#<({{0s};!f7Z`y~E*s%9 z)e_|d-`O)&K8_b{&a{nB__K!E(3H8Jc1E2`S5dGGlj-?OZy`v39Rh#9U6&kp0Hc`Pd9Li5PZ*cHMX2^ zQPstdjSP{!ZYG5r%^44*Jny2%V?{xA&>y{@E7UY|YfxLEbC@u&iR=mP<ag-NG zF6}j2lH4!v$_ogg$;cHC=v>&`@|kF$~Y=M;?iIT5fNa zhHQdNm<+8(WNOYq)0XvO6Qu~7bGdYh*)Rct)m?i5S%u2il&ds$G;u#CZL`;69|)G^ z=E)Dgl?TI29c4EC%e2*TMB&Ljw?n>QBnQymZad_y!FjGi05Khly`=Tuowh%xE7&4m zBXGfj^1s(0*`?g#qV7e9VEmd1HMbfoWSA}NaL5DrYk zY-ZkK*niDBR(cmg^Fk}JAa<}`mW%ZmjR2LD6N`yM^3BnbphS`NvZ|W0iF|&>Y)w-k z3Z|ST(4>>JEdojrN2|O?T=jLo8A?$Lj`&`oh}RX^1zqYo9A{?`Iw3iVsUlv3@I|NH z2IQsI)E}o@&($gf=i)S1Z-MvA@u$>0pjKZV$o-o$7zzoz_>^gyDo-_uEu~5v{#J!N z>cxjA5}*8*C_Y}wXV%ZhMJCqm(A0v_<3e5_6tjUz?WIK5LYdJlAN z$RKPUdg6HpPm#&+iC;)~i({z4M)o1oNFp%p0H7eR(6gK*y;!k!HiMjU8P_pn4K1`X z?gA%8B7@s1kod%{Fvj0>8G77n1@5Xf(BRba&exq%LC9#)# zpC2NcP|gvbkRw6wPSZtZV%9`A#4MFLow$f+2E)Rx_j199q@~+Yp#Yr0o2G6Bdacce z8%TixpQWxLK4`znnRT^YL%LD;3dK|p_N(?!$h+Oi&g**{VG~nhn+U3qKjiB$YxA#B zd%ZbvyFz9>nsoAh-03f*3?K4Ye|KfDiVR@;hF$lvf`V1$dAN2c8*2b_v!?<#gm;cwG@Gdby{ zl-^MFqej^GlCu>!&n#L$A%VIO%!%S{A_BVUk?F{>67+b4O~>`&{GYa0kT>MS|c5 z=9ldf!HlNs+(;5l9azrrioX|zrz6RR@?oVZl)2mv8I)MHp-@oGT9Od!fV+K0z9T9@ zb}7<+%|-ABom4fi zYp#83cC1LANu(;`gCX;&oCjDT^*UCw^@l9QyW3i#7Wgz+GDO?xh(=rKi|vd`&SnnZ zDU1IA!zs!04w-nd;PK~$D{xbYdTE)V1r^Q=&vL!i7`daq^0`;d|H216;?-~m*L`5P zf-U-^u*7Jo7cHB~Q28Rgz>g8|fd6TRFueNP2b0KO%~J%E01`k~$AHl6RBrHuqhcxF zB&Kkg6Yg)_3-ZN|WXJ>v`l#Q;()G0r^Uq7BMgpvnnb-(umkVQ4!vDpN@=2W{(l*85 znWxm-)zc8(KX#)a24eHCE>SNBTz843&j%~#Q<$N^of#6Ylf!1<++U;{n>%`)voG5u z*#&O}CRIg&avTDy(B~-RiobtcTFdT=3on_epoz}ufYUPsN~c*FEW2WC6CbvTx_&2! zv3jjL1i<&yZyzzgOy7Ziw>sCEmY(=+?AFUWk2`n|2W7e46{XFmScp6nreIY8(uoyM zl6ygu@7b+Ip*t%7228&Ju+(`!X!m^uD(rWULEiT@u(UvfdTOv z02|Qep6mgTUk+Hq0=1eluVU%txb-+mAC2DdvLs--I*xQ}AjIZWe44{j4y(vHq;uvn zg=L$0#yx>ijSj%F#*&qkQfb{9btf4e`rBav%d<|l3*p|auvMhd{P(dt?m)dN2iRTJ zWADO^r1Bd4DX?t%wYS8F7J9ZR0)G?#IK~11Dm1h94@dGk5bYp6`6?7a;VObGYE=H| zN9d0t9U!c;pIs@AM@1a+c8X{o?lBzGd4hj6)0DrLtp1T011RhG{km!icFbC$SJFL4 z&d$?uwOPpAa{4D;QR{m?aK7m1_W8VHTYjPF!YkX%B4J+fc&(x9KV;11yOzH9c`|l4 z0y#gLB`;fqw_st!mG{^R2pKOqcT}nN6mQ0M{XsE5#*7;DgKio-ySIB5`tJ{<6>aq% zmcldt2Y!+{a=cb!8oe27)XbNY24yWBe)X%-_}H}!J`(~0y8rwLi42Ag=p>uhzE+|` z7v{-4!+Zo{L64mOrRapK-FMuO@hsl*TYc6t1mRyY>E|*>PFr5{rjJ1ymf!%Xcdta_ ze`lQ?i25ud6&6uB;da*9`Yomf3!Q#VQzj~oB=TZz^)^%&vgHx_Y36`1%n1DEVB4pp zC>4-)+`Vy*r&!!^5G$=iLv8oXI^T)Q95s8z@JFXpC~X=NLlY6_IG7O;g;*>c@IJ}f z5#L4rs>H>I#LwZ=Ge!W|=HX5zNv(;2)u+p}+i+s;0|2feqBE^jlcH~)aB4G*w}Y7y z9^a|z6<>}`p~ypc!H2_(o5ADMNvX2m|9`cMx2l}KbCAV=sc`=px#;Hsp(W9P_N9U0 zVs%6(XFDX>PMC(N82`Adb=y`7*h=>B-A?*Nm^t z;+_CHc5oN?;84KkYFqSoBfiEpWm|hrF(J?lz)~8NFEz#@9%MfeKhhqaEepwsS@<`B zVH#M(=A~8dHe1?X^f!ky8h&%6xi-+l&eX?)d|+VON6{^*NQ3EvJe+Esn%EJ|C#>kZ zSMJDY-%SD2B?3}UxF=J%GoB1@|ZAgHGGA?de{Z7_C zqLORRJce@B_MC`EUJ7DeiAIM!<{u#2GIt*335E)!ZYyC9vHjp8kzj7EWgeL`vXX#7 zc8`V!U18r4bZfa;`l=;#xa8(S{tHE`X{pvHy^-(-^~oqXk`eiZ@EvM-i>ocIzm}pe zLb;8GQ?0d{d^N#)(ocwN4)Gb@nOZjbEFqkhB)`y8DtZxmamAluLwu*-%ena644RF) zd8fn)yUXYJvmoW(VFL(*5VNb}-&ONCVd;WKw30ncJ?2#%I1tD}W2T=qcT`^Ts)dnn zH;Bw)DviA-NzBEwp4Eo4-ug?pt++&pNLeh=d<9Ht-uZv>4I}*~^<49`0M~g2SCFex z79S=$OD&JFHPg+0yeLI@Qic+ivIXmB0vK-Wa#@4yz#T?H>u}q2J&tq{f9D0QG}4~r z_L&k?p-VRA!F@=EvgAcy>-U2lN?>^2l6Z|3bTgV2tgAYn2r`E&@92~@y{hhz=R>0I z`i8bQDM+6r5>Z7t^r{+gQ$Q;g3;R4mA|dj%%_obVaILyZJ0L42mlA+tYsN2N5=bxP zt4{dgHXWyqB8lkhTkr}>bhwCi{Khjh3(CFPPmsM#+s6LI!BshXz^fdcv&mB+?|~2c zjmp*ADuMsA(Q~GO%j^)!%CrQ5zohGK^Qqp1!&1ed-eC{!dRpVjPsBnmL`H(0x7unj zQyk(U9!I8w_%IHeq}HmnDb;IG*4hx+89o0hYCi2{AwE2?u9_#3YQn3J*#*4$tK_^J(Q}Vz&!GYRAwRFys1u zQwas^GyBA!$Eq%z|KwBX+5&Ot7n*Xsf25^-l`urp>a^Rd$%p11k+!{B>h~&yhShwc z`tY<4#G&(SQ|}6(Rksz6Wb)^unPCvMu0-l(x@ttIhO)cqK030#X77T6BhopG&<_H4?%W%jD|Gi zW-Sh*?ers@(ro{JGUNgQO~Fm<8}m>fLL8k_Fm}m0Sy+}Y;<(tY*3hDfV>t9(DtP0e zCj#_%kA$3=yafc}MTrl3sXoXI3RA?wvW{^G>E9z*zC-sjaXn0N_PLxVqv%6LaMhh1 z4qS6E=N7&S7S%h^dBk;}OKZpic!TW;mvdiB1(p&?iJAsPHnx@nxUOPqQ01TGvmYkboKeGvZu$PXX}S&~ z?_tB|%>rzb3_Vk1MCLF%x+Ditn${I_MF(yVDN)O3YQ&>A*?T&z;`ZdBtb*E8?v+T12smrM6zMlwid8UcWF zUhCa&)b3aLw_s=D>Xg@8BQW?*?33z8o{9F zfDwA(E6!JnR2#|GAk6ha^YNze5{Y7OArB|P3_%ucNgb@Rydy-&g9r?4I& z9oFj{hxdfJRGy|7O@8$k;cee5h1LW*3zYJz0uc(qnc}Yb`sv7&{ZD>HRzQ6VFiFgC zNB*)NRcP4{$!;wOgumoJ@3Qs(vX>O=;$NKA%s2-$pZ+X)Za%g@lk+xGmxW(}|cN93_9sCQAh&C_ze50!SEp z_=|@?`FSu$6*ajMTwA(}^e&9KHJal1%})q zR&U*YR7t;I-qNDRnA~(IVyTer9f&gUhKUCEmLs{hwM(^4I(9QI=WUbO<&x|$C}d_( z-;MJsh?sUA&x*{lnfu&lEu3P-XubCC1fs?KA0z{ZE|LWr2fFrE?SbnaiQ?)jdxnw& z%68^Y?gM_Bt%l7#@5w&##f*_S1rE+HM`O5niTzU zzR<5@%;XC(^kcG;1B}jG-x1lw;EZ8l`gdr}BDk8AA>$jUlx2-;ue++I;E4L$)@&N7 zvmCYC!w){+-H<4b%{^Ns+BeO^Af`1_cF<+%0g1m@D$)P9#oc;hJKm$=dL0QnnF0>@ zP=7|K^)DX^7>%}|uc5+}!)nQYq*eQgYJ~ik&}zI>`cHu`0{}Y{Vr>?fpNAgf5m={K z0sP5k={m}07_oEqv~OtYhdxPmRiBi?7xv$H-I^^cF(OGAP2&`2q^Cu0E3aTC9^j^O zhq5Xi%)HC8l!60$$M?CBsD(0KhJ6CWEeT%a91;;PQ!>UmR3)h5!7gY`G}sZM&yl-# zNfyO-h{GhMOYfgw)xaxUOO`Ah%+JSdCl6{rB?^0=gB0%=jXy&tlks8H_MS>($d);& zV{)(UV#}2iP@I3p>$qXb8#p5H6T73FQ%O4nAt$xjcrN(kch%9DVQWag(Vg|mU-5; zxam4>X1@nleUjGpBrm%F;2TnZCGCA$nC;o*EQFZ1rp7@ms@byVr`wj%-Y3aMr}%So z4T09-`BWBe8z6Mt;rZm=0PENGFM0VzV40e)_?qSJnu0~Qrm3J$yn?G!!c=S~GrRrDRJt2}(dl#zwk5>Q4yMB6l65W-uw6byr_#DsSr>}PY5p#{!)ntE z)Bnk!P6F(<&J+@%+`kzhx(~s21Je4i->9xzsWNX3-vBZ+4&+i4V*2N`2E&EJ*`wIe zsi*}+tYrVq9b)I{hU}62(QGf{i%EG=N3L|fRokW?Q!s%DrT4l3m25npaIf!quq0;u zmG_Y2P9ktvMr;C8tOKqnTg*n9xr}!y%POr&fM*t)fa`qY*opN8of*c0Rh25ZZ+G|? zGK|=^smD42ytOH&YMj11Y*h`*A)o4=ibRGI5j;7citkZcjQ2 z0ue{JbUkH2=Id(TH1t5~1qVEl9=U|wcmuYKsoc!N zJzy|7+l5*QVPv5_rLoXwb+|vzc)v|;%Izx6%8NIHm7caBN>i~ zyAQ~mn8O3w!t%G5#e4^OQcU_^-Ct}+;x3TJ(W1HG?88*L7X7qU#>#fcDv*T~djjsE?Of8O1LL1qJY8aq^eBo8qH}9*qclif)q(jr%dA z;LTntj5#Q&2*sSeu<^5tEQ-z!xWV%RMRp_x#c<5L2Ue1PjdmpSiY|DxV{-j{1-Ax* zd^Nx}r&s@(kNcpm18bFJx|I5+FLD=h>L4a`@*`(Y8O8_O{f=Fzw`{^X{n+dR1|hp5 zf7Mpz^SREwq+wjr=2pE5Qc4#v&`t2l<XnrYY#4TE9{Kv2P?b;30AX3<+8xq$WU%kN4u2@9w^UtP~#_t$j zyZfa9U*>$a6_(I7I9klT;@Ej57A;0vA3k#pjA%?qAK-Py4JnGn{^XpFi>N2oR#qILCz*zY0U|+62O0o zKUG7<$@R2y_b?A;`*i9;wIbW^i`8A_!9nMd`8Jsn|FEt{oh&xYo3K8oB;EQ=!SDTg zar^L-4`Br>UM5{YxEaf8l{ev6=7$W5TcIyFZ>s2|{oU7SsUN#TORk*7t>u-5$R?C| zY|en9V7yKg9+^eI1X$ZefGLV7C-RMByf`%4@j?ub`jKE(Uw^@-xl<}H=jEldfq3*; zPj@AL&MeiHeTB>Kp8Aifku42oxo(@X@?RRt0{Q)C_oaT%*zOsRxfK<=eRFsrYh8wr z`ctcu2i6qUER4#)KLv7xaK3Ht%LF-{xUE9p^?!{|@Q9v&j1n~z3nf?Y92rdgT5EDy-*`_ir0 zI__8qXhxwAgSXP{ThxYV2=8v%LPX!nLq2a_ z;8E*%1lMMPUtC4a9o`U_G}Cs>_3pyHpnfAM8rR;YgV!xeE#3re?`SFaz_=LoE0Qn$ zpM(m}3ToV{Hbk{T9Benrh$1LX&5OLqq%Vr1U30#Hd~1Wi|5;r2c+qqggvh)^O;RFa zza~iBPrE|}fTV`hcj0Cs;T|Kt~=0N3G1XEw|zHT^>*hOq{$%^IQH~avGj~pZkdv+Gd;0BKINxVQ5e)i zC?fv{fd!P1yUgD1}(kpyC6}DYj1I~C_-M#ujt_WUvw6~g#zLdf^kHDBiFbLpEfR;2IU^{ z<^l~%#ar2m|ERnBt2)+LGXRVW$wJJ}?S zujB6^>1XI1umT=|1WeYK53GBx>Wy#AmpULTM+W*gl|c;}N8zT>={#_(?CU0sD!;!*h}tjh(I*Fl=)>cb53$=Bb-{`t*t zW3xeaxKciCmQ6nMeeR!V4s8CiFjh2i6o2b?#lhJKOXGt%r?fZM_;}1# zCV{}w7>f44UIwHnIvVN)>xPGaS1CSmd&Pj<4>cK_zqwsf%rXPJ=0F#vzn6SC5~#p@jmvVWTpo=kq)N5?bGQ{)jhC9IQ8&e4nfc!gU36%Dl}OqT;*XbrZoqoP#)Y6{IE zv;*-_I&*uCFU4;<_K*ef9*4@wgs0sIo4F#2FvRg|pOOxmov9tHhJU4UGw4kaHXO+lMsZsg}ZT z4?~r!af==IFB8e2i%XeM#^n21x>18e=wq7*=LI!~859_hWXMxCIqoP+l`XN4P@k$& zI2qj$&(lIlw4+NfhbL~9RXt*{`}eXO%^h9)Zcx z?t)JW#L^B8<=~vne`c*Vf)j+IaRs>7WIZQB@arI}n2HQ0-Z#v!k(Bm>CrX=;2Qt@G zawM_nyN_K3sz5xOH!7eQ=)1tV1#E~aA1PE_A;gZ8nqvag3)||%W-GP_3(dUk*9!A@ zff;ifq_KWzey)j~EwxyWOS^P5dP|3vve|UTi`y$na=lIQPzV#AK%c9KV^C4M3fD># zf}Uf40LHjH5mY5FEi`0n_lib(aSo`foBC$`->@q~;Qc(6s0EMpyd3GnKJbVC~ zl5%juQbvBeTv!Uq?anzAz3kbXjUG@hL7fYgQl@UMKaZ%3hK%XO-eL#S>C&GXGmXv} zMG10Gxi&KJ%55z_tVZ}+(X>cP6K#8I02Szs$l!8A{wYn`_kN_*gHccew;kFQE=%;EX;v(# z=hn?G7wqJ}1AeyzKTB1rFY45IMjJz#0i7wT_fK|4yf2LNz1VTUJ5p#T=eooPKjeaB zKX{Y23Nf`jfJSw5ODe(8lKy1- zSrTX3=7Klg;)!~|Eg(s6y>sko5Ow0Qhk9*>tTf=CY{#Y7`gNk0e4&>mn2@e9e0^?f zoeq;?F=c$EyiK(VvD|w!Z(MKeiGn{0In;3Z$S&8l0z<>4V1=nC)t) z;)mBdhKXlG;8A4xpNZL&&ZX3@RQuJQL&a`KVz@aj>p52g5?FoS>|tAPdfAGJrF3qn zX1stRW`&Y?OwGzDpbq};Fswxs&xL4sGv}VWBaxV)rB{Q^V9vcKe9E2+E3%D4*_rk# zqcU}DU^^ZE*pP8VIgt15#6u<;=9;5Im`)Rky!W3p8_4v+0`3y4p_-is4;k3tV4gNO zSX(HUein;*T8QFx%}`NWoG{aJO=lg{&G58cIH4~nu2Gt%^s8)A-*Sank0<2daFL^% zdP<8e>TM1~Au#&dIPr%@0FAI$7!PTzrNA)9I){m4YXf%%pRXIs2?ebw+@NZKf{$*klOaiW4W{{8 zAHnTDycHVNL2&9$2sPX6^-p#sENgq>^cF3vTD|sKTZf|L{XI|#h*rLkZoEBG162ja|1ZOTx_|eo5#fGP5z_??42>Vc z-?*eoU82Et$l>IKv^npGIVAx&b=DaqB{kv1t<15Yn&IZs^#=cQ(oNiSp9Yn&6&>*B zK1t=WUr^Gw)G^tccWF-8VFr8PHm8#JU%;f_Gf8)nbnCmeC?vVP#7B0+@UJ1}B;rr-Y}yQ?zA=LTVW}EX*EOPU@s--ssh(>x}o)NLOg#;OqvQV>VZyxltikN^hsFm zYzxoG`9{J%kHx2Zu72-;4;C*5y;M|IL zBo>QE4AU%#NLH)+I5&Sf&~FVgl#k!KL_1oa#MB?Z|oGLrZ-|D706?C;!)(dK|@6PmCCwu$E?*K$w0(y@#(kct*_~2jU4R z;p`v1e_3-ezmxr@nMRJsq=}9$`@cJzntu=A_F=bC9cIQgLC-dmXa9`vFFJ!MY&YC8 z2jdcBdJ|BAZs;iXH*ze1SpTki%33w>M*=e)d^_#;r|iMxDlMh_VQlpeuBcL}*$TYektgRhVc zqhosJlYO<@$M_!A{6n;>&IW@^*l8Kd8RCnbMICJE1dOGvn^QZq`m{hreoG|)M(mE(cF zNq3kSf0|IyXxUz+vnG2y>i2rj@8Go9Y$X}cG~7hyxA4COwproU+ZFT&P8n{)V~=52 zVvym4SdU%T`?ZeL-}j%M7DYSP;N^4uwmu2EdEPru$eMcj!i$=P*V7dJ?=PE^M>m&T z7h{I9&+rLjZ}&Kl3y%&#qHz4@rnRAC2FzLCb)CMqdiZrvGWjFBIXL)Zauf3dUh|z)%7cL9M$qpF8w={}>!<10~$11oW z*5S=jI9WD{t*IbT(b+F6wOv@m<2rutzjs2?5jo5z^R9QE>gst3@>x!?myS6wr=gNy zsRy?yyI9Nmsw_MC44CjSU!?84+`QPq#{gxmhT7cVk*SV#?I3)J`~wx-?4(9@mn=(&qDsMxj+j~h@gl7WOI^xPXK?ol z2F6`Q0o{sZ>S^phWm+0n`s9wm#V{HjfPy*0h)oWzH%}{!_URK|E$ThVWiiNVD|FP} zKTG9zKm*laV05pO6`*{E0;5>-MWEhMNDkAYlvZ~jUVJNR&`A}cUP2HAfT@^3%#fVK zYWn!BS#;y;a#;(tAGC#s^o6Gfm3zdU=gakj0{%t8tePP4dOcIUQtX6aun*Ze7dOvW z9})sMPP5_JM5I8>zV3F?DZlm>)K+Oyra;6omn@*oI)gn*5MJ zV^=b)4bsnzQ3u_-2|#xqIDwCUQDYIm@FjF(b4p>=aguR!c{EuB`c&EPkIz&K0Q7x! z{=w3|_Dn447O`V(ag_M|bCTgve@r;lj4toy!|LBTR7b`GQLkeTQ^zPD`*xi8n2|Pd zELo;fQ;EDw2Qsxao3>>t;yHTcVWKEG8zrJ)jJY&b&^hYjYJWbq$UTy6db~plwyKcH zj{q)GPp^)1n@2t5zWvey8>E?15P{+Rba7GtKei$9QY4m5wIlL^L+dy9=1y;LM@d&b zC7pifTk-;1*;`VQ#CsWma8Ul&3r@ws_ zv)mF?JFL%?w&06)ia&Y@?I~|Cy3o0Bdfy_i$)J0Po+P!c?MhFJ?6sQf?GEm>=(tS$ z>d`6C`Jr%>TRvO~lVlJnt@KsE@3MXHfiQs+A6q>TL-q~;0p8(S@D2)`qVVewLscbP z^P0PW-fr^Oq#CDeHO^C_1=;ytn5?!J_?J)sm&~pyGP6ml9I_>+Wqp~TmS6hzg8GDh zA|Li#tA=vw8i1Oj<$X)Nduh%q%uu;)rJl7eZnD=609;t)^%&-UNc6Jl`TYu0>WFEo z7*x0&H>C4J&5>&sC>lDmAQtK@?B~+8o*mTCIw9nG4YkApT3&01M?jQnkvz zaT;}p%giDbfiW(<)by$H#T4ou+*p=Z%Cryq&!$(oU(V90tBQ?h~OgSj5mH=$fwB$nTCe`!RJYWoZHR{1LLi(_u-2S)InYAfaAHx16J2OtJP?4FOSA>I zaRP>8X&F=R+6J9loS50U6E$}7S)WsVpnT*Qn0!7St*7w_fU!lWE2j7a@U{%bI;61l zk|0VH(>>@W9N#M?lWde_9)6_exoD~*EFqIceDdugq4P3lkO83%vZ^e7@1aZQD3+aM zE7N95u9T?y5sStphR)q2XjRffEqzo>qgw43bWa31EfdTZ$*m0)V2WOHt5%H=c}#uY zeqcPwnqI_$U)LD{oh{O5@o3gVWy+EI%1|^>_F-KEvX;6?LF{2zdMCY|zxtX_`WVbH7TN zi}lt&Y`qgBas8%;QJ0-@d_=nzrU!m(Nf@-|=k=9LS z-_^L{8=!*SmC3kCb+F4Sert1pT;w7@ab!fRjdapC&VyCUtaxZOLKm37UQ6COnEC@9 z25DTGjH?3v^!44=PS}p(_`5j8`Wz*5RbLy3PzUX}^bDP(XGis?v`P7UYM_SJ37E z0+6z?b@J!7(p34$CA+7H(&$}nZLueQpn~wq^X`0nF`KKZGAsw{ZR;Sjqp%7UYM0XE zHQ<3^nW;+UOwDrch~4VUEy-9@Dt7}thajg@ErqAXkenyWx7=ulIw)|`OQ6@Kg=AQ2 zt%}yjWjO~7lnf5ioZCUfSo6_BM=#VR#Nl(>CD*+NyEU!*?K|40wZ~2#bQKqY`|h)+ zv0_*+wStylSzsv{ZJ1L3Ej{8ET8%B0UL^3pC#vzMJj-$@7sO`)>To~08Lk$F$gfdR zVH*v=B|q)_m7K2Yi2Eb=2GNItjO3>jc9NjlPZ!6wKo6HisgLt-Nz}-(*9>j!qttN* z&ky$*R&dAWa{=y=@4!pcy^5zn*(^lXLL_aotTq%se8gN^9MNLznP=A|cKN|%7Cc8q zldyI+#nqLcWXiAWJ-fJ-F|RNZEVo!LS*;burr={wgzhBmq<=Esc@he(Y*(_TmYINj zd};p3Ug%aoKp;Tpe~GfP?9lJ07*g1ONn7GOU{EBAgdAEw^3i1NwnX0txl6aSZ(Xy76T84jy;mYT z`;9crWc0B1Ipw6tnz2Nvrs8`&dzUq)b9Uq)QPip!;Uv@sQ=!4(~^f0DB z{{3JJ{YeSmxoPKh;IA!deM9=>`-%uOZIBI!MkfF#Gw6dvFYGBf{}tJ4!Cr~(Xb@bM z)mK(ZginOdN9rLj;;ed5h-^itP6~EC3wI5^`wm!i9NANSTT`dyIPKx}*iLPlp zjDGwk_e9kH6EC`4{Q^xwCNwAn;$c5q#0I$?(KMg2fnFY;@_yToJb83naGl0|ei$+B zKDzPF#ni-Z*VOwB$R*D6g?BAz>9()>qvcgOl4C>ZA@m83N6}e5;a-2$z&yOR8X!no zi21}WA=LK1_OO8wB@*FlnD~C7c$}VucMWHU#s1HzqqS>Z0VSt9>?Z!Duj2$t>KI~S zlE)a@hN~z+9eyVa(DgbtSfb3lX#ZE*PP#yp=m|+^9Guv)ZLLwKgg$c~O107^tPOFf9uSs2pCdxG6sE zYC?U08DeIIT0GJkN57^XL?S4Eo|(`H{PoNgL9%30@C$gsKbuLUr!6a*HCbIO2a3p_ zZV6NodiIXhZyA&XO=|JR%s&r4spDhWheIcSYyu|PL1HK}G-g6C-Slq%DrkjgWkr0! zM#Hv%Jzn|Uxeb08C9mD4)cH!`{jbCw#-6e!0(NHy1V8Crw>O;>jqbDXzyB7N2Z5kC zh9s0$Bt{@QL$sN-8}r2OPyM5s<^?0s7iBOIyz+$C9fU%lIR? zr}=nsd~c(3S%LAzXON3CY0Z}|4h|DzYslqcnevJrp%0Q%164TsSJRsc))M)96?a&a z0kt)vZ1q)O55!sH5Z>5cOF|<~SefwvnOq_?Qq!U89m& zU644}Ebn5+&{rY$IK0*Wh^8g`GR(NjdF5Il&ZmXq?{#1@*_iRrzz7b;=q z+ob;ix#;YrQflqzdXnby#B_Y*rJ`5ho7WOdYwru%&=7z)7vV83esm(DTCLGIYssr! zOiAH5W!%Ha`$$VQ0n3M1Y$#QN;gPo2;Ze%A0eJ#vp>a}GwY!A)j+h&G zngg9`l*M*Ak))aPX#I4kXr>a^{A4Aiwjk%$Ap%EtZlCnGTD5>Xkqf(5N?+pd@r$$8 zU@9iOMY4H-2&)+$1bt7v`jfZl6j8({j2Y+_{+GWg`TBH;aHp@Ec}O}GWCerD-WP!8 z{-~%3foe_Zk^jqSHnqUducrOWBeLdE&d@xODTwul)iaT>0NC zx(!i+Sl61ClLC(%?$`a&PFR6H-C(4H$Qu1pQ05qb{xf$ay|*q0Qa!YBtWDRmX}eKR z=FG2$*5*iPzb1n1JBAB76701uoQ;Dg4wb%}e5JV(Pgk8%X0=G;{;hsz|%R=B zUX2|=2G0k24^0h4Y3aQsy8fA%9?CC$qS+F&5A`oL*8TD5D?#92kE;*D@k1pt3S=v{ zM<_zDmyVzWv@eqB9FXEuKszJm9N(rhY+`f6X$tgc4?-10xv&4#fs*eB|OQY^ZV^m0HR0pgKv>w?!8~*Ymv=^pWC)! zzN5A<7z|)nexs=O@pFX1@CA7I2m~ot)EzirYUOw3QY|!}T>)q2MQtPD3{G31zF%}< zHro8t5>~mEeZ^V{D6}a7-_3biRQRbjjaMj#Pb!(`Q{O&9ufqYdLtbAh^o{7`n)AJN ztbVlD%Dm|*2z~_EehtkBZBwA_VhkFh=0B0OcT=!Mop2dPoBa)v_r8EG)Sp;VlWq@Nv;r{JHy!@j=q z@xmb8%VO&;Lj!Ka^WcdsNtnHmFE!jg;>}^)H!CVe%wxHNYSxjvy+579 z0Xfc?ScIGy zm{*N5OXQrZ-$j>tlk~loKNz8aJR-NN4NOOY_aPA&QC#AAX$6>^zZjfI29F4U#exU^ zYx|O2VU8zv7i>2NH`m}q9C$Bn9e_K12T};LoK(Up}NIzE9VeW^TB(P+%jkxS}`J6uYx^PKK^3G2i{{5 z4>ZXp49z5gbl{n4(5qr%b!5S|E>D0TX73QqBty1aluI>`5h(;$olnDjwh+qIF} z3nR)uZ_Gaa8_TqI&G>CeO)YiBon!~z+-)ZR7~aTey$Q6_B_YewuS91_eD3Ts1M+r{ zEFf`^qj#NrIUX-QF@2A3T|6~QUu28tJjR+0-}inH1v1g6JoQ#Oc=8ER&5Q7GjW$+) z_uQ`O4&<%vd4lp!(c;C!tZwF_rk-6+5(?g2l_`e=EOw|Q0%C2(etaleHX!gFYm0Z2 zIR&k4?iM{^1~=e3i)Es3Qzfli&>J6CuB^fDD2y?w?$d3fu)snb2(mZ6FoKEoX$)#Z z^9NO4As+YQExQn+RyZE0B#EYlzMCf#=FY#1;efqt9W;7+d08u&WJha5YERF?^3`lL@ga*rbef&=$cEWdjaGERiPj-lS5=e(^A#r%pkE7k7&DbuV)v)Jh!q)}GM{F7CF3lX7 zqh`Kk=+_dt<2xn;@qp1eS5M9)eb%A3y?&%dhu}6AINy~HwOu0+ycKJrx)01n^KK6w zFv8gQeEebUg)!(Y=ai00j4`zzND0T*kWKMRjW}etTBhk7AX^ge4VH75FYG@y(ZLKLgJ0PXkZPvzqV1g0dyFxAoZh{%Mo7(lSg>_8c?9!sHz}zRQEGeO9v@ z^zJMX%gathi)R$LN7dn;sYCLr(WZ6Ph;7lw1xAL>D&ke-ardD=)A8aC{_*IJ9jbc6 zztLkF3O3oVV0Uw9M6Imd8o3u8pUUtQ^DV$*tH*4)M~Q}_yvO0;N86#2_?@f@-`9I> zP7_v_HQ$RI0S?Fg=V!8Ub7>O8531QflN#`?zvyuV2c9=K+LH4+Y*vE|AAoQ#Nh@OD z=u=TSUJkbj8Si$5x$Xe??+=hz-7|Es>f;A8mpRL9Z~_+_;IV_$I%o+#VCzO2J@}(?*jeNFUZ!Ttu`Tq%>!Nv!Gm?JE^IZ1jA!RZl!vQuq zE2yF~3J5r``s^X4gm60l$l>U=DYBk%_u&9!mF)+^jO}l2=sBnjdq+fRS*Kqo5-(k zp~N{b=S`jV(QN+XTc-Uai|=#F4LGFU^K=Vc2~Y#r&@`NEz*lThl>;7N8Incq_3y;m z$N{PF+&{z}qBP*Pmch8a(ta4j5eq1Jj4&L4R-YwWr{h_%M{7;RE?!t0j1=xiA|_14 z$S;2c&w}MBnxpM}stCehAL2T5P5N&m#}Gw9NI^9I5AMi+LafnWyy_Cs6>*>GzBW>b zic}N@3OV4Ojb%RL5D=d;cL?E<{a^$@Tmd%*)q}})BD`{~1LH_f_P);|dB-3e$8C}m z5r2JE;s$AX83!5*q4j(Easv7F}-VsIB`f(-^SSZ5VN5EYG`q{X0Ge-L{ z1WXts^a5t)h(ax-NMY8;v2^kVjV5=qTO6fI#3>P!*bl~E%*>gg=#=_vqYKzJLbwIl@dUwZNZcIvhl%d8C$_PQ zSibewA=W_(Nk-e^y8=i;Ryq7e2+GX_TL_p%KF?Uf8MDq?MKUxdCD~L>A%#UdgL#!% z@QSyH#u8G~Rkirvm4`2bkH@taL)CVVYk6OD@tq~Og0OtWf9_VU0KaPT+ zXedPt`@2>IF}?(ke+4xbOj=u>PkPVY#XcwG!Xbuvt$D*Pg(u(rRL#H@gRDOfh}?4fG_w#8h)1QE z7+^EILlWh@Ku&lYC}_)VqpHYmF@0jM%HP&nz4{M{X3#ZCHjegCn<2OfFK|*E!C4>Y zK&`J3fkHBLMdV>yVp>|QvKsphXSM2|oRr{7bHF6pK;-H}^s)7Nx-I_ZH3wH!)Z>}J z2##=5W4j`M?G|SUgVivU*CM8t!kTvE>DKJ7%tI3ipQS?vOUKg61`|MZo9Ild`HC>`)HGg0EYR~3t##Z?O4Og?;?wd7wq)%W zbIJ0Txb{`|K>mh`OU~| zZ3wDkCB&g3cs(eQ;~`Hy5h9!}0!}E3r#bNc=UMdvc%NQ=R;o~H%SU5DQ9G8bnpr^~ zeBGu;2h}?ThjkNWzuW>nF%1~rx(sW*K<3q>yCsf!gQL$pe8}j3a3{59o#*8^%JqaK zLu%}ECQokAM=*yTrUeSa1`I55csZ(avz+fTzs5s`v>HO&+p%TF_u) z*zr#kBM5XBOeTUVS_~ngh3XF%GwbhQktjqrD2Ef_?(1pRAP?FEdG-wNEC>WG3zB~H zXihQG-sO`qG@C|e;S_^lhtN2=&(VNj{Flaq}$g1LWHAb_#_dWWjIi~g+ z*R-tjYBgzgjR30n&8;N|HJWq<*Fo#XOwmtEq+~2lH2#o*CSO8AD%R1_huD78q<&(X z?%9GDVoY@`Z#u1;^o=;4(M#zK7Zcrb%y6{{okSm34K>en_3SdaMs=YJC8)`IW8y(% z%k<}TFc3zo(#J1if&kPWRqx$1Q5yT|-muV-yEdqebn^e1O5z5Cryh_OutAY8cmvk; z(8YqKmn%cmUIyPBCSu?`;o&3TnAFJW zmRDQLwINaU&Vbb}r5bbP31xGCb>^?5RnL@oI-^%mv|^{cRNB+)um=C^5Lc1Q5dp9wtzx?8=jVRO6RarP} z5ss|_-mOb;xW85ud59u%wau1W1;fzyg&LE9)TO#~4mCuW4>fId4D(q^apov0xK+@R zBJWLhi@tJxw9#{xXPUfjW<&+a8BQL1#pRe@2{FMn#r|K>4dC>h&XM%O7cv>7+1w5FPDt zM#?NHfNH2%pHdkM_B6Uk>a!ovv*r=p$KGEKKBth==jtJjPu_n_MNJ`q`%M@id}1C@ zoaO*4s9#8-#TBQB$vHco(>CzAxtyDw_d~!Mt4j!-PRJt;zG!I|tiuvG;^UUQENB{K z-;*Ij@kTp;g1f7t3bT|`N~Ogp2mjk+o~d?q6_CTS_|dCGRreZUa_I3 zqO{<7D!wAmT=9|8YP`KMm0{Dy>?KsUTfzCbT# zZVub%f}9qA{k^u306$ePC|k3(oL7H6Pb*GBZaqTsJiy1j+(&2#S7J6udxp3>(yM6^ zk46l)l&UGlmMieQz+sR-*hZOU)Mq!%o5_fPAc^H7)xT2%Yp>nXPe&dWmUevIhiR%; z+s(3VEn}a9sN=!Ti7dPTCb#`;M$(<)phOk|j-k`8Mzxgv=UB-+I?seHg8osF~U7xU2HmbfJKpzcP-rz?ThYHzRp&l*!?ccn4bLR8+S5Rj>zJ z%$oRtqn)tkFn|8OpAMIn*eXX{T|vE6@ug7PHTK@0Lo*iOTCdlKf6(L`J@En zTkZP)zSTkmbfy7v0(B`;hM}d)jM+VR=Tt>+R$UtmX7J4>8L3F>2`GvedkfR~Mg3^f zMdn2Ql|1*?WnosccKrzq#4zz$^bCam&zG>{qv4eqX(Y}RDB=NAyl0l7EV*G;{5|MZ zu?>Md+~BxSuBE$U`;S^%OUhJIevCNvlt8_!|WVAr1oGTuc-lY}R?lt|7IucFCT zndh9X%Zh)m6 z43HjIQA&QJ0~yG+GTbcPH^~wo5HeKvewuyg=zVR68Tlf_w~hM%;#1&wYGElrQ;r-i z`eFC}$E_D8n&`#|?(0)M3$!*uNWx$UoAlcVRjv=E5vxU+?9j=tUG0;F5irAw4z<{< z@%f$o{!r~mw^_Jt!em=InWVwW6cBm8tH(Q;pYtK@A}>CEo<#t3km2&AGKF5WR^)e{ zD5f7pCces1sS?DVIYpG!x~ksNw@!Z{+c;R_hH3wNe&r=wAxg6d>$;>!}zkw~~#!%3Gvk=jJh+4>>g~{!IIxvQ6flXqa2{(WOvE;IEa$l_!-n zB|P)iTc54He?}1L!yP>G?Rm0LVl`J_M~axPJ*L*-haFqn~8PBO~*hXB8;TY4CBHfW^r2I|~kIorON zJElWa(s2to1yGAf@#HvEZ(0wT6sT4I8$xG)$oAM%m#1RsND;ux@j=#A)gE%{tB6J7Sp@7>l-rYkO9pR8cxpJER7c+hve=q4aU=0f> ztheRYQ`{)v#)tw^uqNbTHqcu4AKlzC)RK6I6$!1HZ0=SY1+qR}_lPi=jV+`(5?B98 zINgdG;&PG1jh8&6sT$wom_Z!Z=-!O-WT&5^19mnkV<&PDC9P;Q|0UJOI3eo9TN2I1 zUJjq{sCB*NhoXsCLVH=vjAE8HN6jWz7|;kv2k50 zO(3lzj9*uwkFJF!CR-$JBsV1clo9B-27%kTEM%5M$;_E}DLZjaA61a*jVdwoCWw*L z+}2&pGCF89%t%Z&S<1b@&$gB~sd^H%#i{^F+{r3e|7iwbS?WT6tyXw*Dkskx{k1`mb6DB-KdBkrLcAFj!Q-6l5JN|SG%+aog%}pA8`rCYhtPX)W=jE`0kNc3+QT!9k?Zb!r=$mJaE0R1az`AjK&Cvi=!X^^*HBZFBGofut+ zMAY~sW|BJg0fYw*e-Q!4!{@+;TT|s$TUSBNK21SlExvAH{Ht|wif31@|eFD87K_126p0->oSOF0Ek}ee|`q!>DG>ob+snl zHUto-@G7EH4;S#UIoX&vBEo57LbnA@7X7#SMI|!b_PyKypkz@=KlJjW1smfl&rDtz zCN z<0pzvMl+h8Q*PT>1I~6WNT6|9pu({}QN~hmyDi~GZ!OViv``g%GXC58v=>q=akvW= zd1PgQ*Z=?taMyog)*bxQu*Fg<6_|mXZ*DV1ZMoy%060yBdS^gT)mRs8bAc#-W=U(b zQehhTIY+S1Cg|Hea)tJWU8l8|?%d+3js>++Fs9{zsNIPtIY23`Tw4mJzzJnO>5bmV zEZQ-cd^YXc7FYwXm>gr>uMYcU7}AI=>UVefHZicVFB@id6XBx3Xdpu^#`Z5QYhZVe zK?V%YGYh<0ch#&1aYKv)vixnIp`adAm_M-mzKpH`BF36l)i_n--aR|0d|~P3R<6O^ z*r6TtDPBEt=L=4(>?85N`&b`(46NQ}lJ=vF#kn0n0Vw4_Cl_1*NL-6Yj#AOvbu@~) z(K=t3)xf}$<|-xKNZU> z(N_5u!hr6m8+O)1wjNd&+YvTD^E?jR+J8 z9zNTiohjrH%)+Pf{>8~58aRUi45voJf0VX$sLRHmMuq@u#Tx?Rp1CDcyLLoI&`o>D z@d3`Hn1_}b7lOiZU15$P;15dr1iupEM!|R*hPBW` zoEc8|6l+hP?aCqsXnLDgY$losgSV>FVCZZGqohCg$FRMK z5FCBm6O?lL9V6eo+3b1uQpQgXiJ9`b-bX?(CNdETmNViR^@hlGh(NhhDD&yk9lNR( zgms(|phYDIA?nLgluO;{y+*p9dZN`3%(-}}po5g|z`z?`j=k&*mo)Ex#3wgmDo-_z zh}2Zwb&ch#+ydoRem@!ZS#9FPdbPyev3$#0)J87HqTxf}f7-XKnPmF59l2UNS(i$2 zvw#Fs^o&<;&z^OoSOt{s9hvq$otT-6%O#Ek4R_@}v1Bt8H@@?NcbZqsy;cRLhC6&O z1*;37TU259cB8OHe(GpuE&{mCrI!^4F)YHhW4p0`&F_wdctl!LyVE#b>OHPiTHM&A zPeJ+_^J1V~x8?nx>_R}5N6!NbFKai*U~jhy&Q;8e08%Bd8wVfgntHz~e4PT`e!ZE= zCDX%3jK1`Ax6F>Fmm;<+UMT3vYTDzYio2YFr(+);X=TI?PSo;BvP^mtXNqf>X_oyR z>W)}ms@-9Vv*FgvuB_T4XRQFr3a-~z0@9FQ4n*K~O6XU%-D{z#*Z`4KsfLb)X$qE^ zkgT4|U4uY87OzoJ_YWbJ&cQ&vNOlcs7wqTrqnW)^dg4H`G)7grg36BXLTH;i95Y4rmX>I+!~L`x)e1RW@mqp$#_Q z=;9Cy`3zbV0oad{_jnBlsm(gTu6rWMTv*7i##nSkwf47oaFCczW;Y)MzA^BV#717+ zZF6p^G0-+P5aL=z3h6`;e-*qQEo9(4W~_Uj3BaFW3`SJdg#-8Qr;`R~tx!iJ%zoOs z7PV%#PVR3TVuz+itxMg|x>m711{@Jd$LpWM6)U~JMMD;VclkPzX=bsxH)3Pm+ur7M zkIMvX*`ol^nmk&GxS4k%3?4)1if%=NYJ$o~Rvtn>rFRon__ep0Af-rmo5#Mqk zD{7@^g55&r;4+g#a?=i8>8sgg2QY=v{_u*Jz6q{trJJF{QkHV+IpM_gy290zH7MXt zs_X%7y9+-cGhDhZ^~ATo;1n zTD!;Md>X6kuYCNovtBJWM3QPx$T>dWyfkeHkAbak%@v&YVTLRxmz zvYJtqEyl2XwNrOLSB&b*d1_vSBcIQRXQkT~&kVXvifnEK?X^~r`Ok|yG4HQUIOB*y z-4_=6MlssPo@U5q&IF(&ua6l$1(E`#@M;5PT6od2MN7Q-g_X7Fi4&5nXIaLfQ zD5(Enzn&wB7Y{F(Z-iM55hHquw*9zu;u2pqMo}xag9C8vW~^lWZlst~B&W<8^fdWN zPR}83eP;7P14F6rQ9mW7>K!BCx@%}*%`bs9VhgHE*F@B6D9&KIn^m-_(d9>z0M{H= z{DPbBz{~B)7wfCBWPkMWB4KZ)0?$mkSL(@HNJW}qWdi|kRd!~5&x?H!ImJo@kYqaa z$5PM<0h+t<|J9n~(sF_NqHNAL6vY~wS{6ysYXauSeXfkf#Mh5y!_w6eA~*(=r@VsXza9#yy_tA!{VWzX`hd1SDk7ehEAPU(sPt zNz}#f))pXfS~Y+7DvkmgL)_*_rP@xzx^tckeW6h%aUv1IZKau{-ug1^jbs*VE3S_B zEf5W;*N$>4`0mi=J>Zd*wQ>&K6O`ggHkX{pvauEI7##k>03h~I#$tr= z@zhiLv@(^S+5W_`4IO1PL2MwvMo=!rFJ=&6j4!+s^bw8PUUip%l4g1@j4Gk<@%_?J<= zO^Y`H*RIE!LN;>hCCak99ocjD^&x@TfFU_vc8AMNtKr89-$DTYKLEg>=<^P%w`RWe zqJXww%CEAG$-MKNv+*>=pVi?D_o`f*%v+1lGkx(+o%sVi{_sFobECw!D_;})MBhZY zNu&!bgP=-(@p2zrL1X+A^bxhCdQ21~)u*sYT$1}gqA(jd?{V{5AOfP;6~&opQ4pxz^( zk0O9^iLj7yr@29$a#Z2pK=VB~#i4JhP4@rhxJ#OAO9BWYds<;8K*qm$mH-OZtQS=I zQ6>hUeV?2NxB6+y_!4GTz0;BxpO;xa?8Y~@xWlq2F@?ALq*aJmpj(g_@librv;!Tb zckBk4IxcfA;L;YhmHldvsKnGOojaaw1zH+k#jD^im5W`12IrkY+N!8bwm~$A8glgE zndux%^&(AupvX3jVhbe?OBrXehR~e7$8)6rzn|^F1PW*^*A~1Q3+FhOfRf@*0;jU8 ztIF%6?n6Ih{);DcWNKE(vP38&49z={2NEqjA&ZE-*snFv?EDd ziO4%x4XHa|OM5i2dMczeOay^T1~?dbNhr)JV40(xTC;CDBf_Gu-9w)`> zu$hW=Nq6aeE}3=Mbgu20n&pI@(B94m0X;OPu;)kTb~yl5#gN|Nppy*H#KIgiD&|Vr z1!D5!Va`yO_c$2?mVqW{#M0{DmE0pan(WTOkSJvNg&uT6`EwGaqo#4SL)vb%8nF5V zmb!fJsV9rFcFzIiezlhL5HAv%5W&k!EDo;Qs#alvE9MsSMCKgd;tc#Qw zo=YR*B^j;xwADAFx2YpDybYM?8HS_HkIush0opqxcYD*PyjG;xg=AR^^~-9PH6-#h zLsR;)yrfnxZd?%@5p5*V%N?nV?t&@g@0OOx=SxOAh8@!FHHp+_oh@SY(5uM0Z-mZp zZ&h$#Uz3+~vERj%as{?IN%L03IfH>H1t%QVtJ_!ER&}4C{+`PZwX8f*f%w_ zMbd`|4kv9j_d<`wSF4{59K;{J8)J!E=+>E3+>|JY6C0*R%(o?wG~8e(u3<3^v8|%g zd4*5;`|3_Ays#cs5TdDwRgDRiB+4L!K0n1~3X(Spk~z}r+@^TGwztvj>UxhBNp_iX zN>aXdoy(E+&Mft6xG2I20@8-!hr&dpxs-q+M~;ZO*2~B(mAdte>*pZTw6vQr&V9zg z2vd}+;q|-JzthPgrOz57pSkfA?U$Dhp)wLcZUeE&54?tG^j5Sqs_C5KASAGO!`mOF^==T@Jr39Tv|A~Ke>Jf%+pmYxJ z*`|w6kO7IIWpPMf!=}?_L<8+s9Pdz-u>m(q#*C}h6&fj`v2+H79y52r%FGQ-y3jx0g`Xz!RdX6L3bDG}TfG^rCZ^`brf1abF2 zHt`110p=fwVLo7%Z7~KBP&94yxKwNgAN=|$1ij&@mySe}ckE0j?6^$`=tW-SfT^gT}qtkxg z07jo`f)8uItqrqjso(3iD)MewICq6fOpTO&{$;H=Bx#eS^(y!!((lJcITRc8C?86~ zMXUUd{kS~g)VYiEu)kE^EjF|}0=G!jV5l2H!~q3#&5m=$XRB36(=UIcK~4|Csov`; zo`)y}{82uCTT^DS=Bw<3Ho<}w{bSKn{6yA#+_I%f_PCBTOE5KXUy$(S?}vppUlBgW zD5GOJuUrsa$FQzsD| zUM8iQqiO4IMELtsGEsFZa^ihCgEk6qXWZ|O_l*d6w5MOXhU%@v|3YvflumLZ(-aYo z6|2#v3Tj@{4Wy2-Ov>diu<70E3{}yI1kkyip4tGrwJ&RapoHGmD$`slFsOr+#EKttM zZSt(b8f@MP1z3UoO|{y2t@+AfM>qgqd2AZ{vliCDZX@aTUrEJmE6vd~Xfh|l{tZdX zcN~ntxlOxd_5wfS4A&v0l(noLAKs#SI$>A!{SG*`uly)8JI?LT`dV4s&QXnR+&%gs z3|VV(35BRo+Y!XqTPO4%c97W;7WckFDQJAzQP&~O&eyZW6n2`Nn7(a3?;`n>e?Wk1 zkMTaqa(uxi_kT29_6R}IhP3eOUV#d3F5R*;t0d8C6vgTE&%COGg>lQG6D!R2D7o@K zT^)q$!sJQ}+#^^q}$0cPdpu+|n_o$CBaY!RN2}Uh&PxwA`7=Hi?u^c&GLIALWBi`+7sVrSTDId?vYzt97t7I#f)*^G)l+uR<2 zn8y?k)?RYloZCyc-9Wfs*XIb>ADCtTOWc7Bh}!7_SgI^*IEIeM9V=bH1eWQL26!CxnhiEgY@kXfLkP3#>3LV zupnMD*qEvE9RX$ta>th+u!z6_dLwd=x4F`qE4b3ED!FT{dW621s9A>sJ|NnPLP7?o*;1}wymrB zeCVtmW0A3e23~3&BAT3y1rj{LLe>VhMS*BUGzC-yqEI!fuyKb*H7TCwnw< zy7`(q0E$$@vMkt1pidsm(qX_DjZf!2|CN8(!dWCEg7c2qSFyB)8$%Ptrr6 zewtr*EntCkMu-W)xWl|Qh>{4O#q^ZYzNHRFLHOEoFmDRR)BkSd2UM zJxH+(etF&bT-1YnnC=%i_23DR8X&k>ieyN#pRhKe3nG~3nY9SbJ5RfYKKhEx19Nfg zjZJI1sMOk{wdyJMEN@e~eh^Tvw)(p*t@?xDlJ2)uleEjQISYb|*wu$rhXf}eMMnT& z<4chr_6^w`G_;1}%*y76T<_msP_j#)Uzusv4b5TcldK ziPXimQy-TZA~(hF;GPQz7174#Gz@4@6{7*(m;E(awJw6Vp}=lkp>!dz=swLIKzDBl zIy?~)5JN%OTo5SLMnsJBEg+vpT30QAzt0=@YN~ZN1DXs#Vdo*m0v{&_#q}J8AEZOs zm&vq*kBu$*mf+^>GEn06@F03c=mZqqc5YS<&8?EP`lkS#l8$|f%20QxotIntW!|Yc zQ$rtXwcoYNBS`}ST5>yQwZOv|>}MEh5vkt~(zvd8=MM0hn6ST<%>OdfFOpR!n^}5n_QoQve1pwu-u%kWT z7Lbo@l?VaazZ3v7v*^a+Y-O;kEC0QmaOcOvtGkecP*Ts6W_JiI9}y6+;NAZ}b8dcu ztBMMVZtN#1q`mwVe+s@i>!g^e-w#WIzvAOrO{u#ApvTkkQr5RJ@V*T4R%aF1UMSb4 z!#UrPpq8rO&16G}vWJosH@Jis7AK3+@QH)|{ZU6M7HjwpQR>z&CausU?3%~_yX^so z!zYVoTsF?4l!$#HdkU>i7bR5>7tOM$6&OR86?TVRi=}Biu8h17YicGRXa0mF97-Kb z%$=UgP{L%O{!Rx1x&7lGpTU0t|raLvk8fp$2PR9z$n$=^kR*=gh#JSBr>wDwIZJK*q8>z zWpn?b^kJij_4FVPuHn44&Mpg^9b1bDu{Z2Y_V&i)*$V{?gWEVI{La%Zal56jB*IJn zV3AJBau1nnfoIpezd1$bvw=*0AV9Um$^pRM3diUhg=EW- z>WR)Fot#$a&`ciuPr80t_z0%?29~-fy-_ORZ zQx8PR)R65rDSLOe&%%{lflPd*al_U6Ap*!e*q^8o`hnba*r0k->f-?F`-8FvH2FE+ z*}#*Ym6*JIj|8p$_3k)gQ-n4MdHfDt&P({>*c_+zBk4&|M$T}KZoW?rR|KZ>sGjmj z2yO)Uc9yM)->-)_Bh}?Zz_GfBqB}az(zefatvQv$mB%8-Gsh28Ru@?mE%Q&ypCxd= z2Hi6c_PnoQBvvzv7$&V8c+oOwA5*EvN&xfkmtHQysw2p~bTOL0vuCg)4U<>tJl7*x zml{H8778$lhJ-J9>&h^*ng=VA7c9SCk@^~{CQ{%jeEpaA|HFL+``yH7*~Nh6mIx`o z;$qu}+dJXjT|+^zHXhCH=1Go;Lj-RBp@I+(Pi2#Ut~Pw+(`ZeEbdkgryv_GkpRw?G zP)xsN`2`|yp^tS%wV$+ekT%xB!CUQAf-L_k0QyW_G+{tcWpa!c@_A z7s;<1bxb!&rw3lU6nG0Rd?2JuA5_*@N#8^)Eygq349Fw@$S+WIm3OEJN`_F7LK$5JsFW#gI)f74Rk5CBF3uelEGMlvWa5&A? zw=~kB8ctN=j#2}CWCqb$I3SZ3x(?g=stf&3Sjh&8YLnHM-A=1K{IlA>tgN1SW3GOt z%x?c98xah4q*-08)*BOj97uSLLDUO&2>kFYwbXon(VwvuMIGNT_&oo;G?vGectT7H7GAKOj|nH%q_@<_*6z0%wdZl?{@^7ddz zlt3zMKMWIIZo3C+QX~eN7Vc z#gc1{D*C2=mhs$JCdTaM7d>^uDPA&HPOpWCzzBRv*WLI55^Vkg7J$}?!BoQ>`+tDs zACnlJD~wsyh@C?8k(>^!l9GBaIa!>5NS-LyNhX!5gvnJ8k{~v`H4uiNfA%YjW`;T^ zOJXmLIC|gt;SLA65MfnWJv_WPf(S!A9+?R_8h6Yg{*fitAeN75!9VQ~9iFFOz<0Sk zqn)%JvCYdaznps!J5&x4HzPNZvhYL^;1DR!8pC9lTtsV;hl>mHf!rB_t%CNVu7~Bd z!_tTu1B` zNVVMrBbDqADZ4^BL{-4=B0&Vvo1di>VC2PN?w!?IYSM6=0h<4>IM9xiv7H|6*qPTE z$rn}wS+7H{nooSuxgqx>CuJY4WRi+kCtMowy~++?7W%4OlLmaygXuCgYNcdD;N{a$ ze`vZI=NgiJYafML5De21s&2C!B#QNmC}hHq|CS{D$h=-yrw7{EBEJZX%uSy8E9J7X zU5+*&D39)%p490!UE+sYgG{M>ZWlD%;7)J*5XqAdVK0B(jaUf|+*5xN6Ov8UdbVr! z`_L0Nr*^23O>}%qXnb~We#6p2W^)FH#l=ntTvvVlyEGY?iO82ew?OBGN?Ys?Mumo; zjy1a8|9yApmt4VGLJne}k?ueJT$GE#_LDPX(wlrj2_6oGO#x5;$tQXM|Bus#^s1Y7e{OaYx zIZ#0nO!tFk7OqRCjL~Am1b!%#8=hCEL>1zF{BPuqb4n1qrX&|3t{!VFv;;}1|@x45D{IP>bt%! z@T=Z1KGNQ9UFz6c;)wD2qo`c%axV zf==iB!^q*ATclse=%*peMgw#&Z}+cb8Q}v~%V9(a3H~sUE{py$L5-6+;OOX$d?hKu z@u^PSdkeg2yvEMl2uw!aS{BwBEw(qqYLt>s^|wN6n%al3F#w17VIg^zicVfeb* zf3Db`CS)8pOGNp2ym7KgOW!(wm4<+L#Gf&`rj!!dw0kbN(9ZRpL`OJC^t~M)={|!} zAsD{fbUpjA-rPSe5QpmyG#%DAmkh!yb*4z9bR45cbXDQHd3- z4;Li*S|XAL;bveq$8h-%!ljRt5S-2mvL`-ZSm|Q&Lta3&OatVV**EB5c|aFqSFlJ% z1$BIQSijCx{3bP{@wN&g<-o%|J3GknOQDJ(w62}aQSCO}UxAif)N{!JN*LBT28eRF ziwz&FBLE?O-xO2^T|D>{YHYV{k+DKinI{no-vNpDHCHGFDS}mf>QcTJgdW?u{Ib#C zleN>85gRB319sxCtMWP2o;zy(8 zHc+%J8UmCQ3Hb4wh2D=Y5l{YNaS!Oc+)#Yk7qLK{9Sm< z*qNWf)nBC+tLS4FJp?SM5Qp4L0ebQyOKXnq{G8|HfKX|T8(rEKrePM5g)W12B-E5R z_Usv=(mF7&HRPzsH<_fFtOQikKhvpoKprTbQgtdgHUu$u%)8rk;da!z0$|MA^a0mDeh+z48+kR9nyiOjD}^O_tG8MkhS5TXiYu0I*>3;5ABsidmbDtu@fxx zKNPN=5x?j8PWT;9SX+7tY54HSgrFGJHo(m{M(E!F5u(Z3O7N7)EoN%BR2!ftv!9_3 z%lq#7iCAyUc&CH~IJ||M+%X@LH||?scY}#eyAEGH0_;BrNg-#1vpWM?uu?g+8E#xL zom?w@%BByDpr-$}{M!Mf0Z54^25}D1zq|0cfP+TfstBj01k;(x5r}n+98}6vXVJ{M zOTv~12NiyT5-2mc!9Ctr*jm>Flfyxm>JkZHCFYip8uG`!zso_1$IuVrSP9dw&GlX6r_l4+ajp zE&znqdZj5W+%N5EbV0!OOw#S+m#0H)$a|yMfQEdM*DTeo76_jZV|R^ zMrgr(FQP5cpJ9#y_dKC~&3~7XZfQ^Xr6Kt+W@`Sxujjw?!&(~@nnYX{hBLl$MS8Gj?tw`rBWoO05H{j zIP_|xqEAshL6l;#S?N6Arm;2A51Tr0U+Hl=+!D4$x|0qx<77nA{RxiRN z{#WF=3aHF*0nOiwT5*FkcuCvY8L*J0wh7CLz=v%JHmWPWw7kvqd`Flc&q++lyyi7y z!CIYp0o0Jk*Ed=7nj5_xAKosd+!jDzqBy z91Rw=@p7?p+zw*8Mc=H3h9IRie4>nlANq}k>_rG2pPctVc=oT zqQ97LzdV&T10bNQcS~_Q09MqQ-ZN9c)?cZ7kXDCcO)}$BHklp&%il53)ixFuXxfpJKV)mwxIQ|2L7>pVHC`$zO|!21>t)o24Uk5=lKJ{k z>8Pfu)4wjjcLKy{DbhzH=tfhXerY=}FpV`j-jHEjI+~MFr0+83+N3(q!l!DXDax1- z&NQ0e@Ud&&`Jg3&US3FDN#fdE%DIehX^mjV&#m$W7hcTz2$jOp8ASQZg78Jbm%GLB znAW>=W$G_lvowmX{+mj?>GHIwN(<3}m1354ET>&x8&HR{A3ffYJ-Psq$1FON3A?0= zWddg8-EudtomS?A!LIJc1^$P#nmUDj8D)o$ImbPCI;{wVLr$sYq`ob~0njZMgxEq=t2HAyGC` zFNUk@#WkNTL|=Zwt*}Wctd)^uqp#vKJ8caBk0+oeHA%?_hR)rrPUe3x(>fJ@+=+DO zb)bmhYuHb3bYPZ3!?k>klJmKR|C1T>=qjqu;D!3k(>5NX^bJcw>c@_Cm|z$?_Yx0s zMqgghOImvJ2obz89PZi;<^`_Mnc{R8kLsZ=}?j?UdfHGM{>MGBo z`J^W=%(>wQPi`PH(-q%BSNA5=jAIp^{vS$0ry%A=*BlCN=tvDl=P=8NyZ&&AKAozl zEM28iG_&9H-rxK4Cr$o*oU8DCX-+tn-YX#N>FuXfwC5V8w4=mt#qyvn6fVJ?p+q+o zB76NLjM6UtyrCJ?E>{$=5t8giVN6A~Tq-R<1-kf|N2!W$eI$3gsY&W=kM#a4qsQ5?i~*t0`2#! z3I^SV;E<*E<^mw4B+jze{`Z-y*cpuxu3O_2vg8q`KZcR_ieq39NyJs*&>IY!)hU^I z>3XAFzm!T|hHF*lu>KhWsK(?Pvd?yvk$$Zh`frL7l?#MdeQ-uU^fwpBh&p*$%FT$} zE5z=Iw>=*J=fcjfez}tf=y(f7G6t~BeuZqP2fUYP>;3IKS2)h!2*OvWCf_a5FK}#H zXz$Ryo_=)BgV6klum$X`3#x)16?)@eqFwc8xG{s+C2bFA>s2Sc175JQ3!@r~&xZX3 z@6()H<>O{DkBukSQxH&jfH#T%>KZ;lMxAqWGI&2KSfPj6+zK(XoMOrNiv!-p1>J;; z>FK@Hrv!zk0X}^ne2#mI-iv==9@nZm0^it-*wRzS3VcE&{b_B{D2P^PXV-igY^G9)*$?u)H*LP#w6;}Lf``I zlw_-@JM*Tc6lq?1v#Eq&9p*XmE1;sxej$T60+mqWMGZOfR-g1sxFxlOA8)n9Cpew8 z&2G2C7okU#g7C`7IW_B>&9{S1{lgf4d%U^0(m?@p4?^gB)kCZ%vm%=pV045ziYC8Q zFXsZ$=#)ZA=>n!xecV^J^KC^4BX@bFCqUxYgElXwB9fxL%OgVj(U3rC2Ak=>Gqa zZ3e^OlmDA}oBWz*kuKjiz*pz?L498p%6m8HjJwvEp||}%uk{9F-0AhV zK}4F6_d;-Xfd0D-(j6x>7JtFoL*1PeftzdJ4vJaHZ>bK@{u{JC|M4#F17b;qG33D! z3r>WT-R$)<0g@2c+i0TiqF1%?8W+lvUbd)_Z(mQ3OJd^hDqDcsn6&IFOZfi=&9pgD z|J%i8SP4LHP4*HDE@C{VU=Q+dw?6xP5D@!-xFBSN`B=siWJ!|_a>mi`qFew&>(^E#sdo~$>r%{lg=?IWf2 z=5?g)1C#~Wi=$3Z@x!e5paII2gEw@abeUGxRRKy)Vi}p))~@DNv#*B_vhbsGS9wV> zL~vHHL6Nq8#gloNLD#>!AdwGg?e1hJ$4NpzXdhN~-`_QrTNC2vNSoFyw$HYgbLWu4 zEW0jKmnyb(rSdk=S_tDUKjNPb5ZHU&`G0o8ybSZXmC^-O;6e$~3gSi?37EJ|COjb$ zfn4=LVINFApjLRc(_+T?GFkmKDG`g#<#?=hyYTb-cuUWWD;>q>?)%~ok*?TMN4noF zA5pSd44A+vT+j*hpwE{3Ah89HyeH^G`_PbtS|aS*<*ab-cL0BuH;3Zx!PsHeSVXM` z!C{d2fyMZQLdV+h;Pkc(_k0=gx`L2{M@(pmf+ke#6vf?T2uSV4)qcKnc11M39*b6QTGtq9#dMwOAdY$l+Z>; z!kE_pPx#Zh%NOI=I{+X)6-(1+@qBME56CPzPaCbqM%G?3$U-zyZeJS$}Uw=}f_+km#QI3(mcWymoNPl&o z=8UicUY#qt?MDrKncna{U!8UTmY5h6IY4~z#xV)cDo(+e1kkI0@kHjJluKgDq zrqImkt5&#hh9R1XL_lkm1`>2@4Z9k?9Hyb(UM^f(HBA(AFqiau28j>|%$;a+g4VAc zrnb`-x;+o1#0!;65H^)Sc-h3^lc|QMv6YR_{O@Nv6)(nR)w=vRltY=!#feVyCjL3m zXk9W}a?Q^2=Ounu#sr*O)*;BugJMxo zR&hcPOaF_VgND%fPAho)>H%%PBqXB|jFrrsP_EGl^o$E^tfCkIs%f~h$!1ObX8cb^ zj9hHbf{%-_2)cb$T}Ef#5yIa3(67^K$?G$^#kAe+QF=rD=i5cyzif#LGhE&b(oPQiK)X27aGTB?5DeSUig~km!zhs)5&a#ey z^R#8R)riqE<6h(P!SKFuj{w!*#rk+wlPemRZU+s*+r!i=PoJ338+o;)85;jPPUeXrWuJvXuF%w58dm=nU-P}xcw_=v3FgCGz^0s3?&L!R?KH?1;WIks9@ zc5|dOCOB@>m33j*46prV$bSaK!n&1r6$wYf$0;AY?6&Jg?g zus7*pwyP)Uj!UAlZl71h4FFSHS%A1sF`By3>f~Ju#J_mU)@qag&7NQ3r(OJ7K~%Bj z^=C2OQd*-K%aYh|T~vp9JyDgwNV0Y?f3URC(bZ=)>X;95CZstqs!x z0xYo{hgf@C0aSgHJPufzpDVuqoJ!)!vBI2LL z-H*mC+w~9q$lvZKzZHjB1a+6;)1y2NB!SJsWbr2SJ_scElL)hL$;`o_d%ORUz*~Qc7jjVLdyJ&O3AA z;(Iil6V3@u?pvLORELO&#MIL}{=;W!`vT0?>sCOPV2E)r552UfqpW(8Baz#6Z@s{h zRp?V}EvDAv-3IW^dS*z7-VfUqONTPMgBF$Q5kLEHShn8R+no340gchPc3`^pr|3Ws z$Hy`U+bvJVnfDV|Tr97~Z+3{KaE=w5+hg)`deWssz^+<4OtUStkIFNxAQ8rOER^-s zB!U$3aa`p4NpE;0rMD)g%I8-8Sty?R4|xbR)@X%ylkt<07W2-W6jx$?#cZm`-_*KT zDEPXI9y%$=t}C2AyrceDN99hz;ApJLQ;itwq*pi(=B63VJEd`;e>BeLl;)Omr9S_x zAm3R~+gTq~)5Q*>J%-AH07vD^XzH`)Jp)xUF|?jR9Z=0ahOh1yail-4UwA_Rc~aGw>RIy{+LJaYUVHjkUD;Dp;hv2nk3bh}tGzFw0# zuCb)T5Mlpg8Z^SZ5EC-uWPGbmhMqj{D!~H}AD5zFyj{)V!g6PZSsN??U^f_0IGOY< zhQx>3En6P;5Ro;DT=$`)RQBf2OXo{*YhWle(#WIB%ns7_97^2G9_eIQ*=g@PRXOI& zt-3<^c;qC!OctHQdkolZjFF~+{APOe7ib-zu?Idnxo z&xoLlP&ay?=F1{p+%?*)Ue5DtPr9&M)J8>D7&<764~V?Ri};y*6x{qoLl>ds6jzXA zs)E@3vyiWleF5Qf1;M5`oB)-960e}X?zzd#ajse z%7YoY8*u#VJzY5j$LX;ZBQIC>G)zj*B8Kh2AZ&d$fU z6AjE1-5VjG5p~FIN6~Gp)jo94Oulzki4MDC>A#jiu&5FmQ{Z6g%<#hA9zdYvKe!co zv#X36Ynv)|-ua%j?=>bpeoQZ%`nyh8DL*LYQF9dld-HwXh&0<{%HhbKz)Ab%M|dl9y_ ze3>JlA4WGsD`T+X+}hnq$~)n=3RC|Dk2g_mp5Z`=8};M3zy<^?zgKDas!>|bR1|Ty zK=c^#Z_mnsB0~xCvMWrc$^$A3tx0z)FdJoqC8s|-exjMsObgn?^;6z2M@I1-W6V$%g&=qTB61{H)M?s^&&y zv?x3y1QYv7jKx=Pi=G&oa96(7kT0vk?|Jo_yi=~?8nlwnGcCe|C{M3u#U7#JfB$?C zb>U3AM;{-hBN2{nF1?znT^oh+Lf*t3rL%5l4Emqk2V1X#h1NV+?CnTWNTCHO*L4$$ zb_-5#B@}Jg8Mi|#Be@jr`glPzfAo!VP5)y*mw*;wZ< z>7Vjy5%@7QaVDdbAZ`3Ed4lGYo$_f;CnbdDJ>CF8(yjSy1k8tZ7Ye*qsggF}hTA!n zSy_~J-fjRfB=j+j$`m&@ z)z}&tA}b+rg|r1eWk4%tmaoj?RHyIsjI8FeLbACoO-iKe#uI^jLRLMI6yk{q-<0qL zVpk-zhoWuwc_R^vtlXHPMfq^j`g`9Cy5{)f^h{U)g&IH3RsP{>14ec_4V$qpeVW&C zUS=Q>KvzQ~MSc3buTyhstB3Om=JuQpIKhGno$e;h;E0Z7Sz13^F&6&SfGLxeRzt_3 z?OKH|)@4!LOJCN;R}IKV&jFVi)?GfId_-n|JohV+up&Sie2Nn8tTgU`eOZx>bC0o- z7A7sf8gUb5_*}AA7$(9-PTC@SE2f{wc}lT{3YlJ-M*g*EhLQ*bzhVUo!%REL%?>!Q zRmJ90gp5Wqh}eA-Q7K$tWhNqc)#1em<4*%N0tkvktXN(@G`8;|6AeTek`!e#C_03FI%%(EtD@Z@0EivD|avsBBWqSfWf3d9z$b zXcvD)lnoMHsEd0yvrX3rLk_?#~2aqlcZIp%H+cP5C*IPdE-KowIEPTYJ+)3Q@zO%}w z=gce$&soH(l%}2xAO;#*FUjGc*(~%$loP$JUSav`p5(q~9{N(<|A`}e-nOVaRRtu! zX26bia}8NoSh!_Qu3Jprb@0GylHts+m!e=rR*ZC=bI05s9Y#o{eMG>k1 zZ4J(k%&zM-UiaY94R>A>Df{x$;=o@Rtye8r)?!=B6H+4d@KJy6!lKF6BV_cI;i*p0 z2$Mv_2HBM;J3>v;#!hkf4f6{1noWvofr-A||4V`EAE_jD1+@4apC5d8qk)&SGY(qc zhzF-EgbLA9la%bI{~h)y*vW~CI2z;q$SI7h9EPd+Q2U`*T^+2sVMK}(99g!l1W8Iu z1`C*j8mmy;fw>{>KTtz#v(ZH=+RN86Jkp$V>YoEn6V$7YVfoe4Wxzy)|1oYX`hDkODLqP~ z(Hz-2eb_}>J=C=GyMEfCMBVh5Mp}&vM%PgR=n$J-e;Zi zM7bqen=Uo{GoA1rlijgH5F9NM`S84ygJW6}W?9S2@xsLXw)7tEsuigfzB0r4xy5+Q z2ClKEWBkc7O!%8}P_0h%Wykipb^kpMrV5p)^4HNHF;XBuH$@E<7>X02V1jy-9&r~I zGW7HcbKo)A@Cx6~k&J510rcGn{C~>zsU&0>V)7H8^}(fR_(Y;6sd72m5XzsIgVBN- z>T)|e#W}EYW#6dbTah~Su{yXF#ih8P1#h6fl_+{pV76|0WW+b ztreCgkr9g`C8Sny0+eWv6-R1grwar{aXF$WdFR6K*4BeEkn!Y<4c#!tn^yFqiUhea zF|Pqy1eiM72#L4!`<3`9Wcnb7Yc?dVXLvIoPq4IyQ2)FGSw#O#CZC;K9m`(b&9Tp& zhc^*g-}x;?#UmRtiP*GARN%N)$yBh}LVV1s!|Zt#vkVK>c zeD2w=@3*$k&Gd3QXItc8f4R?2w-2XH4H z($Xoz58^o12&j0P8THkovRuQB<-||=ezku_22<4~G+kwQ98g86W{C-vIXHD%{s6MR zM(5*)qyf|Bl;Y)RXOak3&<8-9c}?fXGalfr6&Lj)_i{nib7b1wg>MXR=$a-Z%HA2i zU#wzWC?O09{n^1NX+q1bcQqEn_z=2}fAox;EKc|H7Ds}CoL@$9`I~STa|8(C&cE#G z($Vo7KTicJQM&`uYoA8UpT933zqS1%m}0-977yePe0X*Dat!IN7~Pl0^C&TTu5dyuiFVmw zO7)tkdfm7Lg-2R?q2m^G3{z;7vjHGyYkpliq%{0P`6}0;>3!bfT*LXbK(~M_a)JWu z(2PYn3upm1yjZOegtD(V-=lu}1+oRj29r4=!C^LfYITOL^M}T9@?sQM07Z9L&p~_? z*RxZqCF@l1FAf1GT0uz=r~T%k;I|6o(wgM~CS|sceuv{k{8E8SL;T;8*WX;rTZtc<>KL_J9}DAX>gFsV6v5&OlCc)Q6~xXE;$Z~jf98V>5hcjC08?Z2d98bL-yUQ>8&EE^1N_sV zV%tSU&TfzSAWQ@3%oEyU9F)}19m{L^n9zXM-IB0e;ys35peA7XB?gI1Qa~O0tmi@_ z*IoErl07)+Z#aTO;;uGil=jsW>~EF))orE9)BL;S{}8meB)3g=1`)ATQmz31KLEh> zFgzB{;yz$-ujd7LvI%2wpK?0Pl%_BuDW%r)yJyQzf*<+oUcBe2|wWW*w3 zD8<$})j#eNoo<7tX3fmgd26Hcy6r!?DN!h=+Pomk{&(S=kBa*Uij?O7Zv!*j`n{ln zPjQ+Mir{%46MqDmMH<2CX$~>Aefj1~_Vde!{%R(LW2*r0?tNx=uRB#@DWjBCIUy1GvYEs- zjYndB>^6}XAs-y?1C+U}AW$yN-Z_2!%Om@m6L0$<6q#T)!&2T2kTs0~{!rxNJ^A!%HKxpr8%V)GUW6gN`+jJ}xcUcEpjWX5a zDgd=r>;alY_I5R}6q{h>cdTTm@eOw}{KRiFXqcZqh-VXb&*6I9{ z7&$`k)K`3j&gOT-GDR9c!YR)P%qaDkT@Dp0hBC_{<6+~MW1qa-&FB4ZbFhNVV*n)| z7tb)p1Y>G@=G)vUNZQ$G@;vqDY@DNKO1Kqpm&h#3edSzf)haR4kFlxFU;gW$5xj7O zt$w>8_D*SM5x&dE&-V2BJ1iXJ|4d;1q4&!Gkz8&C{P?0D7N>dQQh(o$NvN0{VZ%`j zOIPz>gonl_Gu`fx?zv5j!?CKFnyhqBDwNs1yyIl$;J=wHXbrfgkUx)l%5nP(1hK!Y z48?#QfyvJpUhNYSliz^5!pY#q70P^6=Ww3e4M;cj*KU`SCvlU0EgB>`6{(AL{_Z0W zm?0F3=-Im~${z&Ah80rx&QuWKnpyzFDnJNGX8&8=a`s*NRImaM+i)B9&^mCat%PG~ zkCqk|+@w?qJ8y-YM)75A4KuV2tzXBM(8y>~9;^@cWpYG?H`zwSiV$eZ`)k9v+5ATG zBF`xrtM`{2TTkD}qR#EuqVLpA4XaIZ!xvx3^1p7pNpDL#vInx;(hdGY<90&luBac7 zTnY{bBMFxIH=Ct>lgrM>o{}SM5fA|~vDvOa}ThhB^nWo5T_xAwfL@oA@s?@vIOmTLIp}&f!5mU=*_-Yv^ zz93jE_?~tQ*n{{C^e%)>7M*`m7`9?ej65k{wdVcoNevQ#x8^%Sk1EHo00bSs{Pg8IXHV7;ava{$^qaeF|+Y6dr2nl!TUAWW?Gy$sPNWlF< zaPG@YjDxdiX!kQLXbS~>P3nD(t_Ey5D<^N0!%Z{o(Z^+S=8N|4jbGH$30~1tbv~6uWrN%rAd@~LkACyByb`lMy6e7zNw9F99pz70eYFsXZs!q;HDiFZ@-Hh#fg zU&Lo&m^9HKfwwMi?hOGF8Jii>*xM#@O-nzGXCmr?jeeylOtZ(^9)aaB<@Sp>+yn06 zW8_g+EOEgk0d7^%r~~0oZ-r)50jLt!RlCThwPKTdS+uHekszG_N}eyGvl>t^tK_V) zVwCKXC~PDrGnrp^#EefDUypi6TzDc?3-R&lR`sj-5mKPy-Qs0%E=h7rkcv$Jt5KQh z9Xzs`V7!F<@5WVdEQ{hEQ%-VDIOB)|`5X*WL3rIr$?)RzrE$bd>RoE#nwv%%rOCad0mGb*1Q(k# z60(<)!EOOzyS(LHI$tvZj#Dt{*Gf3Rcimw28=}#yzDLM1onIY8Sy*l zrhS%gwHUK=Cdx{sb3#HVIl<`OF0`J6GHtD@-Qdt`#oxu9IuX<`2h=bKNy*Xv%?z<; zEVDqPS^AQOfSLI*Mu!yzlJMZTd{t=FxbzE^o{+tht3M=znl^CucV+bFa#F88v#6&U z=pZz6i)Lep_%hj^k-jnS%w`o+B1qoSTrnD%n3YY#h(tfE^0;fGF#f)a0NVXX<)aM4 zx|)*B7PlCh?ulHq$q0+>;5-z4E=QO~dxmw@K4H}#0}`r!810T}62k%i`3Q*1D(`KX z5CYK?vp^z#kqM+s+1{cX``T=){eQ3iv3tFwmh|-FeuB%O*DAj5Yh#G5Zr52i{o}s? zDC(_DqJKReMhU5eP5l9z(gJZmXm~15I44vJe9kCX48Q|chy@~^6>b5l{D<+ET`08> zgtn{7K%}$*VWZ8Zn<2(9Uz1E4GarNb!>{4nr$*~LHs?Fa=tIqKB-R!h+K))FZNt~| zpu|4)R7H^tiaY`6>BcJENeP>i21;y%bKZf~ab_o=%Q)n7b(MSQJzkq#r=b(It(Bq?`EOw)}~jknWvl! zZRJ9LG`W#jXsoV&-cvZkeAtJA<~EbO^2HKzt$>;~IgzXdnnqblH*{zUmTv=Xme^T( zuANEd00r*?POc?)gEl4Z86|~=4Lt7YuAndWIP#4Q>*`4aLFWo&+O(ZP0u$U?Ucjn} z?jE;1&ls(LdFyA`fQpQF`{EM9J0T*>ln^g%hsnO{2&&t{$u+ExbaWYDLTaR+ z2#=f8*4h0WF?##+dwE5^JxTjy>sDK_dY2i)#P_4bg8KpPR&Q4pW_DsWWj&kDC0Rt2 z+NyR6UWq9P#4cI9pJRu0l6eDH!o$tkSQSEl-;^!bn?rth@N`;gQj@oFVpUhc$@!*4 zi)etvFzCnLDX%?lE?NH&6t)HS^b47Hdv3;u!`po-YZgt_FbS)!ws$FCjk1+PF)~=7 z%s*C&sND`Bo=uEy9A#_NwXZ@A-tOn72hdhWDDSLjPNFCn)xFyfS=xCeMXmXszk!DP zlStOYLDA5i)(?74Q;R7#QZj~4=BUJWK#*F4ip}pn&b@3^0@z|tQr+d>d$HP~1Jjf` zh{r5PlbZ6br`a?xP3epwmkeP)oC{vIb*dyIuJLnLq_vBlF%C*8Mq~NeQ<6U5l?p>tj*XrrV93&}lE-3a6YI$K4%IE~O3^1tS1 z7LuZ3>`89;84rLHs(T>L?*!*FKdW z0ECRYp&{F^R(tuw7^#x6ZB^8}7Mi~@MGb82#WkiHRrH{RHUhMP0UzUtR_xa#AFl(! z^!qUq^|Awu-kS{rs@jQ)c_nD3=CB#cLv%?9IrEC}QtKAqNvH(?r#mb6eUvzeXRoqG z;rHgqoaN>PBivfvr*>Qj&oIGe&xSafg4H8(Emx%y@Vj_sj0*H0SO3qw+B2oC<^V%k-M&`V@Z3HZ~-IHQIuHi+(G!Da>@*n3;j85 zj;Ire&~5LLNpu#5$avB#rjWbI54Zj=!C0uNHR@EH8@41FKSTqHaf)Gl^KXI?=7K_m8WQ)l#=!nY7OU#aXh6sz2-4|BCV-1tz3@8vhT^}w%V7kWg9UhO-Hww5b)2tSb}`1s#sni8977xR^+FkEHWPVaRS(}^4{;ivU^>4 zt|5|#-$9Tg{x>gT+Y#f#uv(0GQ7rg}Z__8zZ&|CIe^95_6xmaDSUV)0J{CXb9nR;X zOhG7?;k>gI--Do9tK*l7PpW4lfIeb0fiwmCUm?#6!N*QXY`&*bm$r(6M8|Dl?Ro?? ztUpZCO&o}wxe}8d7DKRCk6Wokhv>^B%n$OhO^TQI6LO-Ssm1Y@&x3yE{h?KvH)ikg zm~KnA*S#=DhARgz3@n*ba)-Jbgl~6ZvNhNWpiYz%Ab@K^XNNgV<%~AAze+=W$5SM8 zPCI&|{$_BqALjqe2S&G@oSB!y@P5K`Mh_tGx}dS~J~!!7nZpN<0(F`7JsfY*j5DY8 zsEaN@tm$q5VAyy;vAG+WJ5oO;`heQRyfaU?FPqnl{kL9P0E*hIAtwaE5jE7_SJFh( z)V?;C7gH~gEg(WGlp%zyE4PCOy&!*9RGMAaNt_}x(P~6>McwV2p|9-V>c7f0;%XyF zeVHfG@QMGg=g&?Ajlmgr* zgx?htXmGJTgOX!KmELATlajQ2NQ-@a(|xy5{4;3j>>n=O_CXhQsDYk?8sAZs1UiNM zO9i5CXE!5yZ03RvuJ4yQS$pa5@@pXU7S@gro}VuPhw9fM$02zv5owv2YSjzd#_9Fz zXEx;NvLNsj<$WEh-9>#mFtR5vr~aBfiGr-yYJxlkbaMJvnVTkY>pj$1F>~UP*E^W= zh{37s8a4WhpRB_{0xsK268e$h;wZQ*DE>a$ylsEG0b>Dv6z1D;+;%srfG@4xL(!sy zai<;zxq~iArcMIrd%zVofpvh7SY1-1ve9S&m#ad|@1}o^`SYsJc|5OD3u4B*aO-y5 zMS@cApzFq86o%(wE{ol`1!DgeKwSJpFOO(qO>}dmX>f&-XTJQV>q?;V1Za?#qWh44 z>a~osNDf$2HrAq7UpBhajzY;Qkm>KNO3j5YKbq3oJ@ufxVrwy&XiRXJQs2*Y3`gCC zz}z;s3O`s22wDyJ89IW}4z}FiAH5rA-(SIgN>03m1AwFit)PWA_z@x_AiY23iMR)6 zWa|fYU#VOqpcfVx*54jqi9qfBX|MiK;T89^dL>3Yyz1 zOv$PPgf^t58lC04b9Z@0TJmyRk6xvv34RzdKWP5gu=%q7 z65FyxM4;TuEv9S9fo$J_+PrBcC2>wi^pr3b(40IgCvCy1(+qD@mz~5HneadwG21u$ zpwfb3bd7n0Wt%3IJ1*6K{Y_03JvZMx5g?7?YCzD(FtRavAY~ZG*ElS8Kvzo7H#*p4 zm(=p%Y&^vz&1u-l_*)?QskR&Kapj@; z42(_%zPNeE1s*h;(a{{fl4{kf$xQx3|cs*Ns zPb#s4D7v*RbCzvc>HJ6$(^Feo-BJ%R*~0pI!sI!M%I5Wu$7D+otSRuwkUeoEpR5L= zHrP19th3TXwQ@fM%{7a1CZ7+9WXD*-0kJwe4HjUC`rDs%tz)ZoI`K*h$kXxI8GkDK z38feh|AaQp&jcQKi{DMs_;cp}6N4+G=w$n7+pkk8MDBtz=#xE>r%wmd4-6qCHj*1f zYY8Kw<<#TR4RJsMf|dIB?btkwYM#H7_pUAkeoUQ4JL`ArgoK~xrdpvlb<3yZ@Dv_Q z2`W9!@3DYCcLE<>P_HQRc3Dba5_5;dBzr`DAr1ewU;S#%_}!_GQt)|;O zEJtV}FE6%gR7#)0E8xJeFN>vP*uo{YGyT0M(uRfOp1Z>^sCP=p7$~@A=`e|+?D4kH zP^1&UGejUC-5MXD0Lu3AtRFAgG4^bREyMzzS3T+lAl|S!Q^yC?enZod*d8$n5ki}e zM1ZatwA;=%W& zQZiBu5rz%Qk<*T)aI;MF5sqd%?u@&lEublIKHC;u!N=kfL|gWfgAOZ&gdCPZI=-Ph zi?CfX&?9S;AJ_5z{Yp!4o6Y#wL}?g7=B}GYrZ|P7!?9{xy_)1|a!%;!RMb`zHVDSu zNmDkI$*WFz%bQ!s3E%;Qk1M#{0?K2$TDMkWUCUmVD^RXEmi40}@HFq6d*+~V*ulH( z#`*)9S7HxMgm{;YFk{b_XeVXZqPiy>IU=<2xs^|dug-R(@&s4%^3bC>0oR4rocZrY zJ#h)zZ7|6-4l9gJpG}bgOgt~gC&x&n=rsNEB;F|lu__fdY83e_;L&)={x$M2?>lHd zytEfeW<-LoNi(5|TIZ~Nuj&;`zL>Nf<&vZl`d?hkF$Vf6%E9;l z5%LcS%+g+3>=&oWK<@+#=obc>7D#LPC25h%KoJ40U3~;6z_I!Z%cnTDkuelZ>A2~M zno<;p=AH4X(EEUB*nr4q^?NQDB>fJX%2o(*Xcy0Iyk0+7vN92yOdZweBIXo0zCMqP z_bjG;9%bu4wh9G=JGNJ7x2nbp3;_=F&kaHVMF&w_#&^g`mQH(YN*`eB1V;Q+LVj z9XM34$Sy79Bhb^ns!?N+ycA2rD33{G7YZJKjW>oltj|?@A=^WC+_KNd`V=h#u@*vM zwaXo!m|gmrhYcvABQ#d{pB?+G49lb1u3#M`H!&omkoGYcntbF)PEXM``{A zZ2NB+)LK3?^#N^w6DFA$zoh0duAtntc(VehPq!+@ zIjee3gQIc`*t^+~t5)Dd>m`VP_=B!>lOAlyCz&ZHevo(&gO!FN(W__=M}ysN|+i&wMO@br;)#HnAB3Sh?RG zv#nr!iR02SyMQt^Mk4yFWCO&+XEjlZTK_+`#^8&Nwqj|qL7TP}=bSX_4ue8ceA7z2 zaIzPSf4g%7hjM3YGeQF@||$o`k_l|NDE_AJ?Q970@sD z(h*S=KAz~6#D~Fk^8sXhR@X+qoyir<-gBI#_^bj9(_9zY&V`uw6elu}qTt}66H~0u zx!H(|sirEaQv?)@sgH$r&7(c68s&7&v-0>`+~tV>K(D+c_Z_=tfit`kU$@xRy4oHr z-+eu;ibnN(HHt|duK$wz!l@2jRg{sSh5p~&&dOoi1lLtT zI*f4UUb zrjCJ;#^t=eQiw!2-L+iK&B%=hFqvMEFS=I7e`wsDFoh$Uphu4cm7ns^?A!+a94ez2 z+?0h_Vz&ukJ?z+%8;D2nRwV%VkjuF7`xMo2qb$G)qgsIdAWIt2hMW&5s@p4}h;T*K zg(p9{b2g1J>4?H6P=ubo*0Pcb=An)VnI({qoA!NMvD1n|FH1cGulg$9VeGRV+0p)W z=A~KL<^4h@y; zKTEAG7I6S%Wf7agSNYI`2J_wYI3T3phFn}<$!r{CM$ba)7aVS`qeVSV!ZHQq|BEn2Hb4*jET?>5s~HZRBg#(pin z=fH^$P%f~Y>iO9XT71pw#-#vF_yGqq^@M_%H#pEE)1Kp_6nxFjdLk) zwe=a2w45;^LvA{CkOLoE1@o{6rb^o@NFt-hNk;MvRXK}zjhd^~$;dK!h)u>ern!dU zr_OKLrFQ-X7loDr2WEf;+n%6!n*ocSabQ5NH6h;lLEGjO8Yph|sYb{30{Ssf(Ttyb zjazi%pn|E~q1O7iGNLhSy%8VgE$(~7<_s#365RbVz%@S^2fAIdj1K+BFur@CR>(Pu zi8%+$KB#p9V^b!Kml=&e!|u^NTQPtp!)6jhNNcK7A#U~++3K?G1dN_CVV07Ao8Uj- zOrH@AwMh&oPz;-@IHJzE>}rMtE?B#P2vg=Jta$Kk;wr=8d_x)$G9Bet;5k2AEHUH|WIVp_jeH}VF)IoYNdcwN=4m=2 zdU1vXNrOomhmW%F@oDO0R?vevzbokdGr#~B99|u^kHA(w2!gqD1UA&#!S5=w?H)Z+nwI;DKL*F%|>hCG6`5?1xgTXQL|YV?@KIxxnWDSHhN@p zGqbKRm4brsmL{Iu!a8QMfFfe%1wbZCYDncQNUhAQGR7*+$=JE?D z$%Z_hn*nGTls_`C<}9BH#9;4EgQEGFg}0>Y1YduTRDwscNm?&|CJnzARFhzh9qvwobq+Fu7BF$)vS`WC$)p0BI>#f-B%vyqd1 z4CuyYvjYFxHzS|-lwYz-hjSBGokVz1diSIkhLwIAn~pwr_&V)I_20+(?WMzQyyHNIeV{pZ%^kX#FtT5voS=%A;y-;< zJL_$Mmz*1mf)1N;UYYRabx&&i*$<*(|F@B9oca=fmNiwAy@x9hUn$*Nasxm+kN0F-Lmea5Yyy!RGRD}c}ks%bO zLg;GgRC~ARJzPqiSaE$&aR}D~?`>#BYqn`+{4yvbmhzQk9mH+sPK3PaJE6wUZ=|(n zOK+JfD`RrLk+(ez7>?5`{?{1JQuD4D*7w*Xx1!(0o%jx8ya(mO7O)&NWpU!O0a9r6`NX_sfBcR5{dR)YO)lKue4^KBNt(UqhL1qW0 z0pMXYw(M=mK-J=B&EN74@TZ%Hnq11+KA~uQzmUr>KX4dk=Lwzq0ihrSP?qg%1_$1p zK1f1s8=&I8B6HQ}9+~}tJE01R48Wk0P3Q6diyDwYniNMI699;B#c2xTvXw(;sveW- z`5(^Yl#G(>kGf2%B*rgHWu(!MGLP-EKe^4TXHzVzaZq9a!%gAQw-k@7BhZlW95wML zURCB!M}?9+vGB)$6O#xRJv>A2s(*mh$dX9K-R3(h349?q`D)$cc}DOm#R3m*KFdQ= z{W<|MG!9);BASbCp{NeX=qE?OpY`A+qeO6MXr@#AuFjk~sB` z5xj$Rzvk)AvoVb@p&4=Za4G~-7+}jug4H2i7)+%;q8{|AyYqMCTx#AED5>T~@M~z> z;VcIMpVSPpikv4qR`=5`IuMkP1nf(YdAV(Nah`!_;}180Rs|?q>cW|#R#rVA0dunf z%vc_ZV@z4H5OM<1(lYn}`5a{pg+TV*3iXQ&Nh-%f(J>#xM;t62^*;>bS;)HXuVfI; z9*~IeY|8p(w-Li9PM@ zY2=v%=_+fZDEV03;Y}wVh(xjZs+-|3tv}|!e#?pZx3Pv&w^Hn9c{OgDO8>v_CUtXF zkRA6l|9P=BpIB{!A{scK+^FSM;oPGZ^JRWn-b>B<;Zce~=$$rW0_3%tTMI$yyu1!A zE3-q=y3}pjvEZV=MzfL!dQpMKo{nyDyRkgve|Qxc!~8u0*9Ik|fF%}MOYp?9xJVwx zM&N+9y?eARl>T`VZmJKI?wi%c1OmLGa#l&(L<)7}@fypLXq0_SC!)tsU(Wlfr@0U( ziFCn=y_Z1WzIKpiX0>aq*nS5gyRrdXprRxId*;C5638Y*gPd^7zt}-th9{>F%2whA zbP3wYC4S^%%RgpT1n3_$CRc^3dbU}0FQBsyr9oh#A9zJt+9Lfj>kEVsdg-D?k9>}9L{{Avn`%L_8A$wE|0;2f}nT@ zjbUflOwPh<%Fii}AM+0V@f8i!o^fiY7f4NKDbomtO0J1FyLiGQMjgzx7e8S2E<|{} z1g`JtIUVk_mpt#%glCdr#5X;www^BE4|DwhqG5ACS1~!LMQ$rbJ3_dMXHZUd zz$(C7-&5zN&m}>SHw13TxmvxPzzG3Q&1{05Xq!GwXSv5Q9!dlwOv_JLgNHN=rKLgl zFuskh`^usp)ZhGB-&7TBng~|I_kFZq$@PknS1Ld$0A|6J;9>65I{|gk#VO~RdJ6@z z|48b3qNZfmTeQMx4j^5S!}Ts|f(|(|*d+@$OxPpQ9|m)%An&J)-*Oj7O+JMA(L?HM z1I@eeK=Iybo!$TuZrUN!8dLN>mcsrn4#4`u?a+E}dOCkpyZ_|ZF zEk;}2nW)Bzhl|-#+LXjLGN%3yYhhUQGp}Oa?N;G-&D@b|4XoF}oFGw}=TK&3=H#b) z$LwOLK#u8~5YkVBV_t9=Nig;Vpw2!@3i^ME=%_iZ_t7x9ZH25XeATj%Pzho4V7Q1jak)PZWIu6ieuf8#%Y|! z|F*Xe{B4BK_@U3wG#HZ$U#4ZYJJ&P@@%okp(xU3IT1Qqv-jUiGF4^F$l#?~`B8>>8 zi*1j&S${kVtM<}=j%r5;XC;$HLy#N`)zrB?6%ff)6x}&FIU0W<*t@+`Iz=B=d5`bV z6@6fDDGAHR4Q^6Df@x!TB$`d$$S8EHLyLUB@7A)B7+pVNOeAlnXg%Rm1QU(l((ZAK zS+BjFT!d+yE|5V6P@)^S>F^w!LKUS+hodh&nUn#;x>B%G~-*A!DY z_@>UifdO+8mhtrSv>#^Ty9^t!z{e4eg@-<5ry*Sc23s4y3w3 zMLxFC=Azr@I~v!6hi?86tMx$Od~VB4*7BnQnEZ67BXFa4eLF{(vms?Afp41Ule<_Q zhKr73fko1RQSD7Xp~cUL-I5sZ6Lxo+(9S3+4~v2be+OFY>Fx2-BwsJN97+Ph?m5CR zy+QVS6J)&ODh-8Mt=%|xS1EiJOQd`PatpdH0s~v@@UdckNL|$oqKMEo9+cKgQ~~{y zAs<&=h;s%X(p>3E$E?Wczsl%Gr>-;;{*KP*rDw!F?hel4 z)`BM1haNxAp?#U7y3NOM-7O8148T=bIZISGw?A+?oN0Q{;%o!Y$9J{8jQ>luAY zfN?{}c@OX3LKlLimRyphPdcCY`B|nV z&$o5%<|@BeJC#<*t9p8_N}4KJOkKwVN4;w^+ofrD2(#4!mwndoP$WPYI=GS zbcb)z|H5MV2_BQ`zRHI{klB z^dCv&?q7bHSDi*@Qi=muCCH^-qQA~IchKt=Nf*XTY@1feW=(lZKi}I`6d1qVY^g2_ zeNQ$U!qi%Z3y7rI2z|_1Q)A*BAkeWh%k4{To9v|@fbUvp!uiPJ4=*V#QoZFImBE>G&~ z5DX2POc-5$=`c0b;qWgi8pLi6aa0x?v0#wkZmfz;=VnN?drJCAfH@J2(DW0D{k0R! zRg&hq{dn8?N zUYEF)m1ics+qX~N{w>~Y(r$A9HBF1EBA17SUD0BV>=SUi`FAC(wOhIFcxg?R8Y34c zoU<(nphet$8Z&@)`R_hNA(LM37IvT|v*%0o3&whnqP#@5AZH0FUQnZ@sTZi~)Wnxt zgC-4X;!WC^Uq3Z;8WY-@{}$IBwpah)4313o13a)7Z1vjF`(E%ydnUeDg%L5QGj6@0 znS;x5snfMFQHx}$6kh7Aous2)CGXL{b|4R%B<5h%AYidG_#K>X9)>Q=nL{^HP3Htsq#>*Joy|G6bdm+iw z;^4(wDtm$ofZ&yls^~!Q7GFA}(dLM?6|yY5mcXVCa3E?)T0+ z1VB$grh)Yw5>lcx(T~l1UI7}L6^Zp|4V=l8!U>fP=JSoDd`edcOo&I`zb4Vh=&;Wu zM)`7<69L>W$NQYk>~t#4>83F|{y9H&?R|WPhjo5J=EB zs6m{<`Gm%HR%G$$+RoR-y#I1tIV%|cD88OTD_wLG6n?c|2cQDXp8kgG>G0`(GkxQx zue6%S;-^mR=3PzS7|iVU;$>j+{#;%$HZa!@v1fOV{I8mjGRh4w(+9{L-8jq?#(Iw~ zy$(a>rgx?}$%w;bnZOeLOIW^bvima?10YXb17IvKR7zKGE-HGP9nJL)#i}7)*5m!T zrSQ3f3-g5eUrTA48b_Z+{T_}AfnXGkk{X*^a~3I628jPaV*OO)4hgyA>QOU1%H}oK zcL~BIE0~H$C`&f}($F}E8BQVR{36t>2ljvs939`<6y?`M(ho;Uoe0c|QsVVmhkt2g zJ;kPw0Yb|S`fAs_m!FDHTq|&ySiI~Ix^|vC9g-tQ0IIz<5utYH{H)6B_Icddl@H&X z54b+aEjVlU+gHxM0G_2pBa#<&6_+Q3utyq=9h%fam;{wl8U`@U?5A{0&lT{Gd1L^f|VqBnH!vHsyUm^#IR8(RUCXY79J4AnVJ3X}_!iJ1LPdc)klCIfeH(;| zP*Of<6wY~6(+DKrEXiv+#nU+wFQ!*;ZQk|L6iN|6TL5;0&{3@T;!d?L3s-z(wVcc1 z#pt!my7hm_65sH6RXE1~=H8?NL)Xu-Z66&<)Dz|Z^7nxA%Ds2=P`pA52o3LQ;IU%V;Q`T5?Sqi!3@W9*+Qp_8nmgEgu z&RCh}z4@CIrDlkKNFgl-B8ctSK-%r6SGKqKi>XGlzt% z;daASh7?H=$(IagmZ-Xqrv;1##w(U)s3TFx{IdKq||o>`48>*C$Cw^lb-L zue>}Gyh3cHXr*8BW+CfE>rDSJZWo9RvAyH4_tW#yVRfx4lE-Tlny+d=C(-K0dY2P)64Pb;&VxPvkK+} zgvXyhe30>ENoF*J|80*tf0U)+dOTHT3(8t3A;}qXG)=%JYjm}V?R8Ke@ycwU0T+FV zd(&43W4-mb&hr&dy_14=uf&@3^j_z!a%mwM8X2>P!yaMDS=ysddW?Q$3RU29<24Ta zOUCpa>ij{@hgGI))V-br@^CE!N`EWtE`9|k{$e0XkG#qF+pet?V|ZGj`x~9jT0Wp} znIN79j7%(gq!ja*#an$`{!^gghla^0CBd!QFoPr-h*4${Jz1~2sKTg^6jR4DUpy5W zESe(3Vpm;#@)_Xsyx3NEPvpqV8}4E@)?=`xJ z6N9|5d9+vH#qoap#a6avx!R5x9WC$YUi%1>?yA@4t2yr@YW0vkU>$9VIbvy##Pigj z0UCshHSCpUo<&u~quF`wzGj2H z);ZVyn5cTOQ{mK-UlskCh#%BX6}h?`b$(7z!}Rk=cPjUB;FSj6zpVgoY3nBnbXG53 z=9yL#PpRtyL7kK)?+PC@iB!@C>uZehK043FvoR;)*HdS~4ek&m7RiLjphlOa0CS%B{s*( zTWn(u#K0ec-IQ1>ms1t^ex>xw;>62x6XqU6p8k$AG>D3Jq_3(U8@E~{v?&~0-2?LSwSO(IHp-DE?b!E0u%3_*-AzE6XC?A1tbc!1kS zCe4AD#579i2A*{;(b`;=T%=^NGtjrqRk87zs5=pbH^ES03v2~*x?<%XTT?IDo`fBv z459@xQ+n5?a8W-H?Oe6yy%FENov$B1Mr9)~LEa)*CD!oRr6X-S`8~a6`_fKb#`==N zoF;n35021B8m6St{9fPzeqAUTh`R(|VU0X7jGeRNokS_1=Kmk>i$lwHT)H_Jb;K+m zGh3NnE=UmyoL)|MA%fwBhU4W&)l+ucgw%BrgN`D)K(d`B?s4R=hvIa;6@T)cdgG;E zksl-TWayf4RKEEkZ$(>EgQ1%&Ca1o){i$N(;(%O5P(ys2*&@G?7h3X_Et!jE@6^QH z1*}<>6&&Kr+Y8nyU!5fXjw-1?iNh5F2E8)6NL2*7R=vy$XJBr`xy=dHH3{>Tpiw?&VxZ0 z;I3P3BHlOF!wh4s9;JoFN+Ju8jB143EmyTKX1cy=c1_L79C3^6dU{=! z*W>-;p>>NDHu>a_cigQ#RbAd#@{-BhGLlGzN*RPK)}y7{-YGb&-YI z#m=%HB~0=4X|m4 zJgVLaa#3;pj+FxA1G|>U;uKJu3Cqph6Yt7VeEM?yF*Yu1wmo{R5c#g02YUa^M5BK{ z)W3(-2Hn`jf(IH~w3e#Pd3?p(Xvor;smOl?twk4|O?uv`$%ZJ46FEN`8chxN#LMDN zRVQ4Z=IQkG3Wf;!R4+AGGQ~bcqy)G7zcO({{c++mur6UzrBG+=&maxi6 zp8)Y`pRy6k4QM>QhyTGvB5T25OPByF6yng=ub=S|Kc^E%3|JPJpYYb}1aLx)TPKUx zq>9@@^C~pO69xbqk1tVsG#xQTg%lL=wX)Ro3_u3-`0P)r!j~t|mhlANc;_FRW>Ayv z8Q6a4z6E@m#4e(Nh{5eM{uUoWP3?{1Z6^m*#IB#XsU7Y*kqP2~s3nK8PRr11QbAy3 zbyx&n-0#+~1LxXC+1R4Y^hF{qiawa_NQ;u%E1LQqOKHZI*DePU5_HMkZe8z3MW4;| z*J=zXuyLnM(DvPhN;xnuhIRUaY!M0^xBprBj2pX2?p6dKR(+q{;0#5^tof%DAElTDUjV#_ zAbfQ)YvL+m(`#haBpZ4lc~}1i+zU;u6Vdp#HO>vA#{JvJpt605F-EK}BFh7?>#)RG z(DJKDZAGF(S!dJxVKv2QOVpf>v+Hwx-)Yu$MM#s{aoav9MaW-y=13@8eI1%zj|}19 z72>~sTS8E4I8bE>m+tUEnXaPEmEiBdy>}mL{ix1XS|QZ0q8uq-CeKO0uWR2i zzpEX$mQf@tIUNFOT^Dnw&W<8FVVsY&MMp+5#b;m`K|jS+5}&$LE8UB?U!m1O87fDB zF?ay~KLEhZy)3{2DBCg-yA!7f9|$tC3D05%`V*0KJ(mucPPv}KPNP}yyxHquO{{Fj zSls+R<~@}+aSKLLbZrM*qt*Ub#u_Sf(`6|-l;s`S5U%AN7Lbh`8gS7u%39;tWptA+ zx6@|c3Voh?bZz{z&{guqb!`7i@pk6a`VP7IppJk$G$H4FL|2_u9{tZYT-2%w`JjOj z`HyBKRNR@ImCJF&4}M(w(P(q?5T3)lk{*xQta#Zvwh^4vh>@CFdA{57GReL4JW+@n zk@Tdx%u04d2Py{&&CAU0Ho=l>3k2_W8GSa52J)J9C<7Vy+hZ!+PnJKFRw-+#xUm3@ zUzBb6qIFR1>iRjIxqk-sV6J>Tt%u?>C!b;tVXw@A?aqVq6^CvQC=^u%t(j{I&P{v+ zWl!nhKT`*9_IoM?Vpk+s9JR_)7RqhGX&$N&KZ*W~gWHhX5kI012y9P9P}+pV%v&jV85r+M0%&z8 z+V0yp1*?Jc~4r(9rVu~Kiq!tQN4&m90Q1FQKgEl|2sN%i4 zNOPh{_ge*4S;O{K!{+8$ew6$w+8}BN;fC4;*@BB-d7osI)pP>$Z#Wk62bhd|g7cJ4x!_4zvy!=#i( z8jZd0+Hq+?=%5alWbhc97KX0=!~z+L7y(^fzd4Q<0^rf2O5&4y;7aHJr%XUcO`aj= zy8^n8PuI#iz4)9XV0E%>k&*l(?^=DCVhkwEUU6G-CYWM6d#QH3bzOu(lmosKLfbF& zhdprzGh8e=H#}+^hj#`9O8ED7+rGi(JPbUCqz#vYK6Qg>25Dm;v<#OnS44bigO-^m zLrJM+Hftt5z?c&j{_v~{WiCj5srHQa6O>hv2oAa%XpgbTdnUf6}h-pj@~G)((_Bq5S|eLeU;%+czn!W>*w|?A@rb4r%p4Efh|--n zcck>^5YT6<%_G+gdMRPXiZ`s!BgIx)MC$L2bwhLMvV*=u{vUs>Nl88@6?IjL+uz+kOY0 z=p5L+GF$(lb>4b5`0RS-%69$Rw(zbjvaK!FW0T}PJKraXtek%I+<&zR&PCAG8w;Wz zY?YV)pJ`v~zN0!y2SIym^#dz4l_m@Tubm03D}21~I9(*BuFnqqEOJm=9M$`7{L% z^X?k&+=JK=%rE=y{KXP^kCLK03f1=`ClswoHc#tcUn!0y^f$e5LG2=@F=LQW&3D9j zsDZ>+GC-BRZXk;-%|2-1g}sNlNJ`!>@)AUKbgrGPp}(wF18sFKmwO+M-W?wR&!d50 z{_?IqL;I=!YGg-mJKZFuUo8>{ce@)4qT*Bgng(jFX2Z{}vPb#D?tVk>uYG9Zmh|d` z_BBaZnhX*d1CXQV4)+>|cMHBzM9!fB&W8>!dX*RA@?IqMI zO~Oit5sLi__sIirI$@2TWIC<8qClQS62EEbnY?ldjQeVQ*e zQv*kPZDF|u@ZOf3$VjnodZtySj`H?Oh1>tc0_)K zAKj;GGPPu}7JV}uJcF;5X9Q`{mCgfJ*DYn=f#|<5` ze2L`zc^i50P&uc#*wH&Gv7#x@!cHGGDkXOL1XabFz0|)s#t7~#?>C`{_y?yBGx_w| z_U!pyw8JEM+;UP%<4717t3I@hG8}?GP>D`R^$JE5isx~iC+6lRgUOtU@O+xzHij6V z9)`HG?AjP!oM1e#{J9N(E6xUWkGzlhp0N3?sr}LPxq)|g>Dd#ygT+JejJbtDLf~DX zf9q#b2NRBx1kin6;UP2i{ZKuU){4lMw7vOrETzf3*MNW$K&q;%DEGGBiJGo&=N^HK zyCBCg4?=a4+wIh`x4A27Qdew}aQxmHA3At3W1P4>7pDY5_E;O&1hy7a>_DURF`Mi>5!{Eouw{z7ROYoq_2`sKXjBp$rzDl56nLBdPNRpHq1WX3# zfxxs)5BQy;|L|UuHf;s~DGBy8oTQ4}*KjQBoqN&a4X64GO2JYkz3jY4X@Ytx8tM32 zaI>Yu0|dPZeR)i)aLVG>DDaIpgjK@HIB9psR{&N%d4}yg2;M=@V2p%A5WP!p+x+jb ztUe#MZeS)0gd@vvT4VY58J1sBC-R?yh(0ltVR)|8NOSrQx1-Vd#3=YyIW zgws`yYTs$Iynbmi{nSUF+Y*11YvfSd#m}-wRRW6HwYE)9Z0?aBb$T<&q=fbRKpQgu zY+cdHD;=AW|Hk`7Jzm3{Tuw$=#7M2C?hlQoRth?XkGd?WRyFyPcCiu=FK!3rL5?pq z)3<`Bx6kV5@S6Hk2cqfTfBH<9FRpvR%+#K`n^CuE<$Far3E9o?lrvS|=O2p`M&cfy zCHOul6p=uABpRW4eP6LO_--N5I?empYpK`keyLW|d%X5^S<7j=m=i*!K*>^@h5m29WohIrdi<9o(2E6M~Ha0mBqjw%63Cl|G2JYZL9D;q` z4^sYUc~1$Tt5}xN-W0Xag&u#=>>c3x$nx(_2&OG&^2xk!Gw_H5QTG)a8~}U|wdkfI zkF?CJ1*m%>$C70Ee!118x`R(XwWl^ocX|dk5=;CG@3v39T~Hd< zD$T?ehtN11qhd)z>sIQ-a+!kd!lR%4wSFf=iNsME|^5Sk)O_vM&Dh;v3xmkoC z@*KkRyUTW>&Tpg-9cqAmTmr+kf#D}Yi``xoav{g3R`Ytk?3NE~@MY#y7rfqoV$AAX z`{4Ut#lmfq&R^RsztNTe;>=w(pp@DDldgy94R<()7?Y$e(}z`3>hY$vK-Qf6OD`zx zO8#lOjB5h;SV)v%<*;4~|LPa$I@0VBQ3xTdCA)E{Uf;Y`vBmPtZ?YtvLvlYI$f?;I z*Aok9?dhn9SL|mnkitq>!Gly=XdZh3`DzzX)&ZLH^GGV9guTG5NyF3i8Xn%2stNQR zZ+mM4#NqA0vIj-YBxZwIjw8q{3(1JDPqj?U_P(#TDHp2-nXuvt{dl@lTx4RIpP@_L*hjJXz$>3ESyGz@bchB(qt;}lmGKIAFP4+9k_@imG%sTqZj zP&X5pH2;RK114g zqqWv53Bn&jerRB*G!Skwdt9#&-1O&AN7z}{t=1tq44)EM!kfJEwxy!V_hYTOj8Q?a zkl7k(R<1X?eaf7F)6UKKP?{c^6VG^na4^FjoCChXc6PFQ%WAl_X$l1mwy>>RShF8_ zHJ(qmPY@>TY2n`+zfD;YXzORkz+m110$P|0f$v%hB2J^LN4B6#LSdI>TmTZkPYeL? z;r;lqk$^|rqioj23-93D9m@YCu%bBjgD(LbVF5*UjJ2zi0o@}9B@H*ZY1qzEUy$@)Ma+rQIu&!#Y?tm|C&3kc1>_HE!zgBe? z7ZDU6KW};r2dxK42E%3gVITTxYG_ZuF2m!TxNthgfTGffT1x3#aMkg7+(8vAaxXR; zIzaAudnH`4o`$+H7%Utm#JG&4zzxx6QJ&mca`;kKQDT$4f2-vO$c2RUIE_~8A-eO2 zZ)=e6rY2}c{|kdIg#zq9qdM+2L=imgF6`sxw46q$(->3h@3VACxsWdd;IqXGY zt>`2(eg;8wR5ah6X5o{U$h=$5Qlj6c1CMP$u2uYobuS{8O5-AEN7XqMWwBPeg)6#A zcxCJc(W*{ItXbk%=AtF*-~PmO4QO9XlyG9WE8slk@n*rk(1OC1CBX7K9YuRenV328(N{xaMRZo zji>Ih3m>!cBg*#S8j*(c86x&U+q4P2-{VH2M(9Ne_WfcFGS$rRG+f5*NyN4&wm+EF zU^_KPo{&8iwvyW|%kUr{4Qe+ON$zMgZCFuwq*pm@mHUfMFyw08s|q=Jl!I_9wx)Q> zH=(1kn~Oo9QGyZQ6oLMbW2DsCb$Z{HJiXr9<&~!4{o{ULmKsc%<@ZN|o^`6ROUGt83aZOg#avJ!6Q<=TsALj2mPG&t(LO$O+e{-PQ6a}OL_}U$ttY1T+GmRuaw>gG5AOeC$-FU^I4ArIQ-pF8O~lJL$Vzz6*J_ILMoY zqYga;hKOVZz+8Y7_Sht#Glf`@u=5$!;DTZNPr`#-Sp-JyLJNOr#MJ#5U}Pyr#rHd| z0uUJ6znf$0>(+KHwqJYB->Q;Ss{u*%>mgKXE7_-bez}YEh1AT3pB=)6Hj>wH@Qg{! z#@rXP=J`#}!ZhHmc1ZXHW0&^vRrPo>1X?5{{2I_$g|0?*1OlJM?>{G_ka3*U)? zWwVer1e{xuetrKfI0N#3$7T4jJYxqcK8mN0hDly}urtan-w@2$*8-LFTo{yz{Z79xY+dY2(PPF*XWsb7A3^{f0y?)HdWQFt`p zbLnQMJ|w)CQ(e8Vso(sxS%cI!Tq>uP>tT_8azJ=tyUz$n=M&H>D2x@4)1uhbg8Zai zh?#AICSE$~4?2&5k9x}kN^f>?v=ov*ClVOIdJ};I2Tezc?tHvycVt<0dliqU8}tuS zrgWdC52pE!HOP=H1!;r#YI&3c%U~OHmRgz|3Yu1_jGLVTqbCR3V3*4>)DmNCZuB`y zfatdYoZg1~Z>Wgze~^$@}GZNl>4Jh9+<>4$viI*m|Gb z#FafC{+O)kHMr9|<((`()CG6SBYnR~p#7Sra!}KV}Ij z?9FCQd=e`}q<0aHBQR4cNd5X&#L2j;3FBJ$;tg_v0%KhReY@zfI7nr2-)i_my{BKjLL}XcC znny@JUxB^xu2&oMOR%XM9I{(nXJsyTm_!m?%D7$M(9|&ZGESCx1pB^m&Vyj12*hhf zJeNVvk@t`_k(P0LA26>%Yd|hA3RdM3L%j9A=!V|M!LLX!2|qzHjH<$4=tEDPHbYe&WtR-JUzQA^W7| z7q3HPnANyd)Xp#%(}Th#X4?_kQbQ|s_N7mAm7i95B&6T*bR!!=Eo3ID{jveBrXaqvUE@y%yplsK4Fj~Cr&MC5^=%$7p?1S`U z1#jTLqj``?f`q>WUTwc{kcu(@hnko6Cs-0)3jhY>Jx3cQv~ylna03hcIRrSTu`h;PT1i7_Ic8S#x5+J+<7(P!fUIyv2o&2*s zIq)+>yhdbzF2GYg#i0@@e~4X@b3XmeYeFA0EDVpl4;c;0kY>{p^isJW4KXaND9qXV zUf}nu2`L<%a`WOz)WSYONEs>T1kCpR4_CsARI@i}NvZ$@>^cW(&|d(1ajKhMiDS=6 z1Owe<+?oEHhyBuzANjwgONQw}laK+(A)`ZfYu}|B^;YxedtKP6j>!|{zxSZtLB$y~ zJfhyFg}UIUl!vouaA`st$CMU)7MC^<5V=KWTAyy_i*q~vZpiXtRim_rd}i`)<88a34AbD=M}-V=Jl?N)%x{B)`UnI2$KJGkSYd@Nv&r z^q*IEL+~*oGc6etPL9-xIX5b0YoCu0j#x#GsboI_wWBfhd2C1+dNr_b#j6|3sVrwf z_~O$C-=Wc42np&2LlFg+cjt&E#PQa)kE5vS^oE~1vA7mU4|fY76@He^zEoi(a%C_q z!>PyN9Ji|_c~^-?kiXrOCA?#*42jy>;oGf-z;QzA3zUei8|z2o-mX46i+#U24_N%%B)pWm^LDLf6^23|uPGH4~BpM#*Z0b9iot#O(S=y z6?YX#!{#3T9~n9H(JZ+Y8pU(oMsUnC!N1pA*->w_@WR)BF9%ME*QadL)FkoS<#Mh# z{y`~kr(qcehO72DIPuz)(5o6yu{Q&J;KTVI-V0Z5Tl%BKiQ}?F9FMGfK)ZIcXsiBE zV|<83ZRZp%RC3ISvgT#00NZ3+55zefQrbVW+7P#VDE3k(|HdQ=1r9cvKsODv47Esh?m&H0sUUM?%1?xxr|^B{x;rkQWX61Uu3#*PGx-YeZWy+T8>u+1 zE3=HGtN$_y^8XJ($4@6fuG!Lj_;Q@in-7eSQM$o&O5)Gw^c}|4B;7_k@>0;8S?~g? zEJ)~&loq$h{stA+-vn#Q|3SQ6!2*Iz9bf3Isn@-q6zim7Kz*s%Zi(a8| ztB-1yJa#X4@K@6PI9w2?YS;lobOg9WF#CC2|8`%B!UdXl6pzJRuVqSqKQt(I_m!^{ z=V+&ELliCj8W;hVQivtDHk%1*8J-F!G9(S}6bV`e_kx;ay5B627o3e)Pr2JXxgTiY zly23)31ZhL&;Z40OvBd#yT9Z23J*q9ISLg7bQ7cdvOheGYpgGzXECPYNL1%iu9}p+ z0C8?OgpYn6+gJ;_W6e-_o?ID4#1|aOuAuy{-Kb$#^YfMyoM5*gm{WAUn5bU-b@p4c zR$v`y+-eNfPSVbo{D)hl;Nw&sx=;UM`x(4vq|a>u3KCjmn&sEq-rf_ZtQH|ufw9PZ zQRQiwc0`!*+NS<#*hS)^j)D5aqM~tSSUH^i0gK?z>eUsX1pB<94i?bG%nv}u1Q2z& zeAKC6XAPoACw3|I+hQ3vrDQ;7>g-n6n0L6fZJafV zBEiVe(S1m!ibS&|uVnSgmV>^H z#-@VyL1xXHE8GUTTjy6sJQcrO-6r51=>J2>AL-h8`IkKIK;=~9X9;LR>49inQJoZ^*Q${CXm$;i@{IEm z?)ttrSa}iev>|8L$d-NHNS|n(W$M(I!7^}}zO%_YS`xj@!mB4q8Bx^bOwxO`GdPd& zX0DsAayJ0UA~x|>;-RhI>8a>b@EG3mK!v}1dlYvGyThKcdsQ!ekLT84-~_b?f(+Ln;}){iWb-6+J*#42acAy0Cl@-v*QV?rOwJfqy-ybU9v^ zasGFbZAlGF^)Xp@ zMs@DP)EaHUubpFqQr8XLhOW?FPZct%{@4e(9isiSfq9uC?;Jj6*?at|0K`mb1w6t` zFWucX;m?WC;(QzWp0N8EPm9{tX87c-4!BfO?IR1{v0(a=7J_>CogAoe6LZus^SY&~eSk-j6DC>Ab=YkdP-X?+gu$7oG=kGno+02R9* zkRCq?K0)?go^h3g9k(BRjgI+G&uz`-7@NG%X#fg<{8$*IIfRA+uHqE3lBV?dq|FK> zXh|bSX_6YVN7@~gpp^wAO>`-`_8bG|uT90-RR*k~7MKj((_e*|OoL8W+$gM6$lF?u zhlM>vRswXXf*q2nF~Fsg60ISkP(}<|h9Y5Cp4bJ9nhAek&bR&sG5ESA9tmCi z{hN-c?u;KC35%jkc`F3cM}cJzQxf=u<>1H@;r&}4nt>Nz4XzJ(`Dc*m;ZTS#cb@M& zr{&2d=SeDHb!7Kfp?-orYCA9jrR5SS^lK6;9emEn%fo_YZsMJH1TizW3}|4yjxb*H zTu@h~EK5MHo=v25GGkmCsEyel5l#tK(gN`=#16AKEULtO2yzUnFBbIyGt#z~bP&h3 z^no>w0wb^Wt0At$zAasYaRimsmF}K?V2Qc{n3}biDtz?C!-t?*$EDU+LW^b8hC>*70I=1@k&xH;nX)4;_jH)bMg>|&A9fYswWfH<2#0 zILIt67;`;_J3kiCl6G!i%GB5sIDPf4fA3ucb)azz$`B()QDDXRJw)zN#%e<6$o!XK zO*^F>_OtfxC1}Vla>Wa49@}@e8v$x|Z`fpmh_~ALWDv zZ*KoBXWp}c8Kn9RqLCIMrjr@6$f>Y`(Kk^b`1?CJp4$FDK5E$?3lEm5`v2`EPfg@W zl1L77O%^LFiCQ|{T}v9qMvQH|#kWP|)p-AUeL>X02s}^p56o|dsdd@6xfDW|cbi!&dznoX za_usS1hy|b5l|88Nw55A(m@nOORHYQn7@QK?NUR6o^6fz9 z&w2u@qcBYkQAfHnI7W=3*hL)XK|4g_ua#l|T9_y$hdvD{OU?A))|V7&JWgnI)`q~f z(nS~q+fZ9R&mj^uI{Hzeh92qZ-P1p(Do1JXZx7g&Xzuc6+11AA$>K!kr7)){QOqXy z%!a}=vCw0#t~E98;=x9!YTr-sq#~LuxAlt{p@w}q82eSPzNY7iAXVl_z->MKfAAiq#Y9=Ap#+`(%p}2^qbh_vn4BYlaB76~5jYjVc)i95Fxd2x?>Q38Y3d zA0N$C$E}!d1l-Y%q-!{~L{9Frs|;Pwv)Bp0#7#xTcV-B7bKM}_{Hscb;h|bWLy%8G z`R#=?d$ZG)9KHm=QqqGJ-ThFU5N*wyoBo>L60ZsY;Dfn+9Zh8s@x!)SN)QDXAQn&@ zh`&g8^p~PeUO{pduxybQ^niq`tBgdmG=~?fuF-BUF1~vSSkPXgPC{-UC*~z%^K;dD^RyjyE3N{=a=XrJ$Q>{uj9-8z`1! zJ3@F_|6i=c7UofF`~>+lN9%dOxx_LM(zh9Fr|*&_{V#*_0ru_yiRhmn3dXaYk+;X2 zc$6Y}|5BE^!@T~Ld(c;ByWxpdnlA%JPYs zG@g(!-tVV{@M*u<&8wUxu`1I1w;f>xjhESQe;i52p-(PVTf)z~a6wjjiMNVTjghYb zZIQky-@S2NV?OL{@$dZ+>yWnU(_n-;c&?#JA9fU)DY~(>k-r)nMpPkPtSLKXSLMo)s z#U0wZ8(ht3Xk?e6Y7*nno&f*pVm3u5d+$(1`Ip-i4L{-B*ZSOF#Fj{uxHxxNK>Io- zKzL}T-gD= zuB_rb`hTV=PbBu;)eig;MXY;-7BTQ9>md4n)FlComFIK*e+42(yc;} zf7rmGBw^cXRjRrH@&h9#^uvArlX>~ntGLcniZc*>PirFeOl1o*y zzLfY#j%1=*C+FNjb?L#j7IE>iV(g&Gn{Zz0c&PVDcR4GCDA zAa}j}bJI!N*$O;~C~EF2VYg=q05WhX6#jq>e4}{&r1nFlVcr4uLg)gM&v@av+hel_ zwU-z1A-pltkP?9|Ed%ATXhg}e+^n6%i3nQ0F&cD{Ar6@hoNntXs{%J$Y`#52fa#l} zads@Y0);yZuMQ~FmpV}qZO%M7T+BZ6u1EVOaoq=XW)?70@jab*#_Mod z5Rz6@?%!N|2s3qj-xsv-UNK@M5m*1?VV`z7Thq2IH$1ci%nF7XqPo=UAJ45pc!LXv zeRU*w?dBI%a`4}EPJdbgw8!-Ckeze&2}0NnI+AJ4a`x{!ZM*>&cxJC202Wvtg@81A z5h48%M!7Q`2@4RlR(B;-BC6AcwukiSg-u|&7`PZ$FhYM#{`lJ5bxpGJt4sbk9+>aD}z7F9G}cO}$EMt1#wJp*NWTIB2c&y4VEV zWoq<+dg${@nQ(l5nRI*)!AO3u92b%kryl1+`d+Cx4`@WUTW?V>7;{P1;mPKu) z7@)Y7_*~x5GI_WA$VFExn0ZUIf(c~Dd`GvM;Rki zWVWo?w$p(+IAh2@4lc|0!X`_sSx@vjI?=J`&;(7OyCpmAv{yLS3+gNnoU_ekxs#rK z6ijLgnA@8yS2B3*$~xN>JHM?EEMV`kJ%xx^>Jn>`;3|dA^XyI&sQ$mU&LntwAoo`Z zxxg&8n)kA6Z;j#1X6MRU4J0l6A#nO(c85E~mv*d2K?v-H?m9hXBX9IPkW%!aeD{oA z=O_ZTG?8Kp6`d+tcRso4au(bTduc_dzCu`Ue|*AUpYXZkYlm*kH)8uqLqrNZ4iAK^ zuhAL>EUG_K`(T4CYAi>w=b`#$iRtl5kbYZkU{I?$5Ieb<$(cn-stB0M!{a(^Gx<9X zko-L~wX@QdQf^Qcs-I{qCcrV=n2M)`gfr6Xv{Mg>vnG{+*~(-c3Syvy-k$J|6$7Am z*RAR{Op0DKj+rTU_djgR+kzFIykIcmc<%JuS+lX4V$-La6##=VY!UqMm|A4C{(kPS ze5F%ft#O`+4mJEoc4HyxYOEKWBqT7yta{HI(^8Gt+>yNE8|&3W`3yU_s9|%FRNw;F z)tRN!L-zKU;XM+hIZ2e4gu%~bpn-bLGI+ajW0NDv@gPQZbn_rSPA?u(OB7A4f_Qqf z0mpu@R`v#%sYwh|DiE_k3;p+`49aLgNG(td-8#M&eyC#-SH&@}*a-h0KSl15-sD$i zjPSI`?N%LF#s%oQkxnT){FOT;Vd7dWN6bc~>_}1ks;^P?lLt+#&+4ZVMHZ4#i#r{3 zsM@gvpsU#IpomF8#MRG`C8Ag?MpS8S&`qWzs#BdB5{R;*cL8*eX5Ty7@umf(V4z9a zd!Nh}Th0YWra z5L;W+FP|S>+ug)Mv$a{_u)86FXl>0@jVjRaL8N5!c0w)>a26A>kwI^%zQA=&Bo4jj z3|JL|UCWsW8^|eZ8=P4r0@p4AU30eP)X0i*50CTjAuQWruF{#TH}oLDf#{8W@W^(| zXi(V{TTvn}j`HRkHS}54;Ry^Tr>B#McHorA960g86ydI0iAK8C2^BM0Ur#uUC?)73 zduNj=3390F{=ybz7A0?{$6Al6iLYX&1OR~&s9dF~HhqZam3?N;o>QLqacH8}a@0gB zrsk4IWtrbRoqh#omPB4#=yk@8Y5aSq2x-#{DxQN@A_@p`TZh|5G{8T0hNsP?(Q!A? zt0$MfhD*3~TA<>nkLOaaUmNlE=Oj(=yG_s|w`?ao1fp>#x_y}|2UDwCb+`>DxfNsR zMwF>@y{raKURw4LL)PE`8-!BXr{qjF9WkoqyxiGB-(jt_7M%x9PPNB zH_C2fD|D2gcb`0TXy(OUzF$q53cYh~fM?j6GDClY za(?!j*?uCth=P0hJEmb+m3~iSRE)2^y3Bm_3yb@A#rVc2=}Y;nC?VO zSg|(x|5JO{NcSLh2dQ2Y)8B#U%-L+2XS7bUypO(oXqo}wtTDPO3R^SWK^!rNUE~jw zlIq8d1C5y{vdK=s6No zA`~l$s>ei{w9C2`JCr+i0?p2{NKj)fAxhA4JE@5*j{{C>;_qja^e$@v5=TTgth`%? zEg_v833r=CjG1Xq)Kw0v>kuM!sAp{o56EaLp?gw%Tmoeq|D(1CF4dGm{$QH&&p!xc zS1lx<`HV6Q`4V}`5VlBeDpQF72aQIQ;CSgBf?SUc1JJfAfHcvmkEY0c5K|8p=Y66D z5P!SeKEk#tVg9zoM}_aRrtdNJ09#rMsEoueTeu|CC{UMkrktW}E<@I#RfTj4D@N23 zP#ehB#ct`WcgH-9qe^2#eg88gMlJe$USSx21jXci*nUuvh17K?SBYIZ>&e=MHEGzJ6_I5J|#@s;Ejl>7b>$pcHYexlG9X$o>x_xN@cr zAInCD#HoJn{*4Edhjs*#Uhf5B3UbiW$cE>SUY94NFfn(ZRqmrL$NPCB6=U)0dY(hD zam+Vx-GoV>P>obZqZ7EMZNMk*|CJ=Ib#_w_2v{LktX#~S5Xab>J12zy6+i2~lV%Dpsy`KJSVOCb&I%WfD7r^6+SB-WKl#i}L@ zwU274;4~)l(`=o_iIxRvs`ARW@JXhWI$z=WYSMS{C;nco7V*nj^OQ|i9jWVS*W}&E zMhKgkKYcPyvhE3w@ztYCB9m~cAwc)!{`%YLj-GWPYdYUpmxHt=kj7};0+Wd~tU7t0 zd*FsGV8m3waw9dK1)?;}i4+1`Z`GOi!kkRzHZly$oshoHn;H-=i!zOV9M5!eDM>U| z0Zn{Pmmef+v2AxN7T|Q5S#_QZ)2a8FBFkNHp+v5q+EsmJy+7RZC~#h@6xFOwJ!4A? z)E+?LX+$8V?B)Uw((Qn;=RYc#5>i zm(bKhuV+FTf;8p24XvEY-(1ZHnpM8mjc)K+69h~W`FB(CzBmKO@nYlD?C2Rk39&c< zszXlXFAu?7%{^P1yThH}9CAfBYr(-I`7xW1JBT}P3i}BQ>ZcyK`DckWWH9y32Y_3g zSzB!HJIl|=!W2S0bC4+O_^MSheXma+j4s_xy7n@ua*0{9%bzx&UyHnT^x9TQXu^3l zCt~oODw`-p<#n}+%1wcgYNG%;mF{E*pHLoBhui~ofvFKb2sACmtscgUQ1X1V_g?1d zsDpd?gj5legu4SUQy~*024suvP4Mp7M2W5^mTNnB3Kdv_NV=nUyMne|D=VedX|-<; zck%6J?)Yuo|1j_$DI3nT{S=h=_@%@`xQ*Z$>`MpQp9|;Wa)9h9S)My-PVq_7>bn^D z+AZLG>}e|*?Q-{~&hT#`|L|S{7vkgogOK{2!Z}MEpsubrK%)r+dJ2>g@A(|g_Hs9q zUJq4Ev19W901nQ1cfFcy)fDmDVsQmF#b%+jkhW+LIIbtbKrncA8CD$s(4=R)PkUru zU4fV>zBF}5CWWzzle5lC0|T-B$O75k5{)5abu{qJK43$HMkmw!ML&N|Xzdu%0_jy6BKW z5Tm^Wx}HJ zy2w_8xJ&<}V_qAa^*;c}xS62~d|bb^d-(*1d=jIVNp2jX=>)u$v4%8M)_hiQORB;= zbZqe1IE-^sPiz^EloMuF_Blih0s2@;}4i5f3RAbdk(BR-HKh1edv3{_-muLlVk{F%!!1*6MMVwisagqXk~^xg&b zTl}^_B!Ps)C+czU=IO3RdMa~3)qbj@-?{A^yZI#Kya4ofc>*MtD0Yl}u1r3(~L!s&pca=!JOM9JfAQCh#V*n zn5w?^(#w=G41nxgiv1e+E$`C1B^awEDYSnjRaBKv)y<6PRrPu0LFl4CT>l$sL1p9V zUGp>vLTV0i2~e+5tShCr%gUv@;4^|-i+z*m1o5C-mZ18gxJHX|GwK+(kD~2Y6&}F3 zL9{A_KOZfCh8wu9heimCR{6nYw3aq9vRiwjTmmuTng2yu zxi#_-mWHrk%D~%^S4=P?kZ7IC5=ibE%s`&RQ(2TNcQUtox}r6Nyi~Ans3^tshqZ)- zZ$30PWxvm)rs()^A|%95?xNqf5WZAQfDWT1$s#b)v%4B7`g?4+lJa`ZW@)>DY@o0w zEd(D&9K6IK&;cS4u`IsjXPY%Me#D^$ME>;zA9z#V;pjsPwSHk1f;>>Dwezr-e=~P5 z3TaBLVxKv-#1yN+0>QR)jITN>q%JWZ$;%Po4aC|VZ0YcCyLo-ldbP$#ix)8~nfUDy zu#;w-8oHd{2s!K(+K0Tl_-iRP$x+`F@$YY^50Oilc6F`E6v-gNJY|eANAo?RVS*|g zO0ke^43JF^Q{B`DHc-Z;U|lced__2EUIqIH?=6G2bEA{iZJnZVlzYnB)fLO?e^2CUfx|?$ zNiK<2TUC95nOHtU$|^E_O6b_dfTKhH7QprA2R|1fGC$A0*_>3@Fop|IG}#B30=q0H z8K~vWVldkkA$DPj>SfKW%n-B4i63UARkFg5a*nV$^T}(cgJ6$X+I-p_yB}28%|f`arnDFT(TiJ&yHh!D*KCzaKH|6^-$xGKkxyXg?kK``gaVezzlwK zrkz~@T3MD;`g~C=7CnA}fA>56d+H!~FdbZuIpjdA&T|X=o|?c!^$%_ZEAb*M0m|9l zLXP&l@7%>Ls8zV>;j^_O-fPqaf&4f@MpQUPi*q`Ll--GZf zG5Q#mX?V2LwnNE`S3_L>r|s9yMl2pbLTHaQ;jaBPeu?M!1`)d`<1Q;txih87arLKK zezb_oBm{@(5&#p2$*)lBY&l`C_tD@WT5wvAb*Q3l3>X^LmT<`4yRgO*zF$m6g5t;np<|_R)wtsUoYe!?w0y z^>|F8hjc2+cN|yqK5Xu0t)`v8yEp8okCMA>dIsOI465h4&Ca(U(9`;Ng9!y0WgVm@ zSc)K&`0nfqNf>~ivAzqgqGql<>BMmN{gRh$l11WTm8yjI(hwy1aI*;k*iyx~dB0?o?=eLS5kKbr@}znV zW2YG~YQtCqP=c0Eh3WNGb6ES8&or~LiBA;(qB^Ri+xCeBuycApPn;Q88vd6D-8l4| zn>UWI%cClGIF3->VZ51B(4oo)oA*8sDP2QGT-WbLuZxBgcNY^+QZ>p9T=ox$Z3pP( zW-RjmR!C{l$OADScr2n73R%(Ppmuy%6qZ>hA<=54J+3>vT9K)xpa~Li7$%jO#k1&2 zCuAYC=OXTYv!m_Y=o8SI(w1@wB=!xtFch4(o}p+RsOP~}5rg5-GSx$qDg;*BlbM=*s;euw9oc!+HM;jqem$*P;Q3B4Io6c z7h_cr>Iw&2=8N_e^eA17}EGJY*9UyS4! zWdUF=8hPc?gbYsWwWK+)`@GNz85~{|JL@1~6pb5i9_6InQ7p=H4WC=D4D>1{Fn{fc zo`l6qeccNcT+fP~Apqc~PIUWe4jM5NZBDvvJeVRnbQ3dN$wv5Y^uKnI=os^j9$m%k z;gN1Q8)WwSG`7SjfxC&$zku|kgZJ(sp}1gD&zI(;OY64B6-m_iLR^#$0sNr)W%!|4 zuK}+;WM@??POqgY&2l3UkBLa!=BPD%`TB}hHIG{3Qdt-xcNWaVR7?~X#G_ni1sP&j z3~d38c>T(;YN(8pwC23?uSu>jM!Vi@(;^$FWjY>h_D)s>yUieLAW;sNtj9xtQg zO6+DQ&<0^-em;iIOpYWux$3^Gj>gp}{d`FE!v!n+2EH?GSggh;A4KZnQ0bc1+>2rC z4BRD5wQopv1C_(0j|kgYWUm(^ejoziu`leCmrSw@s+B{c)n!RVq`Q$61UCk)i&ctF z`|?SBebxX+PrJ(zSZ@hF3}IaIUop0EkAV~q0L~u1-=NDYc)S+SiBc(G;@DXa z#OHv1ppHZf-#&yizu?_dRHCkw+h&Dl04JK%f9lZUTNIrbX6Q^(HBjUAicSngKBiLc zV3XEJg}e=|)QYKKlapN0Gu6LDtso~` zmGF!K63UX{e-&8z>?gK`{?nS&oeM2f!#3ADlYYNJ3a#dbN%Je(BYGA`@Tle;H2{ns z`G)y$gJpc}vO(T{B-yZrT%~F`y8MnQV3ZcLrpY5SC99HpITMh5DuA8`c?DHbE`9Dl!{MR2MWS;ssr5_%*ET$ zW0kC6yKQ0O%2IYYLAO#KTZgM=Gu^-nslLkrBiivdrE|o9v{|d^e3TBTF3)sXLb_8r z6zKR+1Gyy8<*HI9uBX5qUJ!bh=%yGJN&5s&j*d&Hl9IyAJ0VUAZ%!Rs`YLR31q3PK z`R$vm9x3mg4S7{1jNR#)e))gQy#v0upir-wc4_46kE7?28@HA^gs$;|S%3apJU?+6G62l^SHkisHv?fH_Ghdz> zLv_5lfO9g(%lT~S3R5u@eHbYj=cAmhZWKKN#~bhWw5WN0mZ1ikToG(_3%L ztVpH|>N6GGs{BJ^RSgE-=#n}YE*`(Yv^d|jP;BY!OI6H)DskOhN6=1Vv=>`F9&npTF!~Abt7A+EhiDd}Y+4d}`KohfVcBlcn8sP|_-y1m>@(re6BJRb@)SMmp z;HMOeHy%?R_fKjKdgpt2^m}C~K4~qZmKvUc5|jL8-6B+;aF2GMC*^E;9Zf*x^@^)Z z=-XTHmjdP@A?i3-p1o0^i?`nkYTR?Xyg-S@R7 zw&8bA#$|ZtNMXXo2`U&xYs{--s8o_dFD_yXAXE+Gd-kaJq4&8RhSz40is9%6&1s%d z6q!1d`RG2N($E&EPc~N;yngT?H#)xx!Oo1vpv@~%u*MWIa#J0jd^qZ*Edpygmsd2M zD`UwaRY;}i_^1Ys;d%iSC|gmcSMt!MrSDO7?4mh!9hZE9Cn)ZoRI#&Y3HQk9Fqsd6 zJf5@qkz@FOW~}r6QHu#DXs#E2#645)p~3*W9=!(F>xStZ!t;nI&LwxV_qs3S>O_Vl zV={?fjC8sY9lmb`z^*hV4aIGgcJRX303YO%6)~kdMn`ohr^nV>0YQ{mf+ZKi5+(x~ z=&Ea*pn@BeQH&Pz%Hc#mk@AhN3|^4s1gelcsR(C+TE-GZuW|Gc9QaIIlj!3yab#Y) zj=qUj1j~oOUEwLKZ5y}`2W zr@7bDktbtZ$_%BN%pZrM&>TI=_sWw;V6J4PbqKMJhxtXjjisAhV;=J|*M)Ln;x|3a z;N@W4KaXTsp524Fch=jR3xu{kji}6Y<{q__96~7z!kr`OM~s;Q0OCe0 zhrcrE+wId0cm!_X_QxTHrhc41(3w%!P=Ji@xpcTU9{2gq*=@g;08Lp2^m`yXcyDibDxfi?Oh#dQ6eJ>OQS_9 zlz#Q=#nXr*Ftr26AqQP2wl z4hf;DRm34D0G_2OY}7Dve=C*s(18-Ap43S5(ou$OT>+ee@1OkkeH!WBRVGQ8Wz7>t2!=E-+o=d#1K zAb<7)dW-q84Y#tc3YhGqKsW}Cq}cP@Toyxs7`d?V1aTVSz(Wg-g32a#Aj<1ykESfS zY#F~hWHaSF>Qu0K_Lr3XSP{de7Av?ETo!_a29oKRmSzZerBt<_{9;x!4X4-z-}>{i zcJff0s0L((-6&-f2SqsRj#FeKhY8x1PO%Y@HS8E?6%67I|Euw|^qAe1X%0$lj`?S9 z-1;17Ri05p%Ex(sj;Ti(Ded0fdLaEF8E5}08&6Z(WG|F$x}Rvp4p$HZCVS{!2)*1j zx#{A0RE+oY*78FmpTA9}4Fm{H+c$4wm9SNm(*Ai1X<6v1>KO0PB2vn!pq917@4TwM z2-lUD3btVL#KhTyPzviHBFbcl(J0b&Dv-`SJ4*Mh5|Yikc)ArR(J0d+ngn6N!HOL` z2nj>vzr^Dcl>n#Ma%K*ch>10tOefk1RG<@uP{H@oM(-cFaLL&&Q}oZlwc%&$gKy21 zbU){O5^Msj*(fpRY%OVlp)zmwld?`fL&s}?((%#uf>iudzL8-rTn&43Q0gUItBQ4_+&FPeQLHAAc+kgqVzwTdy^(~)oI#m$2-u|?$T>1zai zI;WX>Al6b4Cm}k^LpLwnr)-VnT!!$CPi*$o5K1!9B89&O%6!PK>>aum`9}>dJ5#Uj zHnMe+#W8%cOB3%sW|5YGfz~)%?5JUhBbcXV4`&`XI}%#H$Zs?wo`is8|3-rxVY+APIeNdIi=&h&V^ zkvb;p9ecuv9Irz&5s0lU0R;D=d%^wsE>Nb!uE_+Ibb{+tckd%vwm5>yAPL@ix;Np zVTD>#FVG87`@VYfo-r&ix|P|kHwTztr2bW(5o}n#68`r&(`O{}mE#J4}p;Zyx>Zjp}H@K0jJGxB}&%SoXLA`f*Y>5)XD( zkb3bxBRE^Ma&fk5?7KlE**GWnQ%VY}(kio5aPFO7Yi{+VJ1V7!JzugQe>uk_t9jDx z?0&ZdhLuuMgZZMpu4XWfs1HfDP;1;o#BtR=t5ZO_+WxuBb}mSTv2^@=pjR%?{N3g! zp)Yb7>!AJNH-PED%bz+)^NC=Ykm=_HBEYjH_;;hR3cYKN$|~!1lkuppDYa>1dr`T? zfB5t2Ki1s<%UAX`dP;@77jyLJq+vj2Ea!r3kG^-3b;oLNHmlxLDdqa_`k}Qf0fpby z;Dne<`qpj5BM3U?|IHXWf*r~)?;1168p174QfaE$QR%9kZk zb76hp${na%k)UG_V>J2BcF~b>uWdV_1J2h=JaE98WpnQMEGxuV_Aaw+IUbr%@GuQ#6P77O}Mq02c^mpoS3cj|CzFJME0jxKK z(CA+};cg4B`Gj8lXmn^C4Oy0>C3ec&;4Kovc0CWkAUm%Yt3Aa1u%t&1Ae|IgGeBxfeK&#p; z!-(z2tvkQGWj2`DLGo&UPsASQH+(iF_2r#X5mN8!t94DjPWY`t=&(+TKnm(H=W^lJ zhUK|jzVn6zj$8Mign9QnT8o48%$&57G&)~Y-&5y}8!oNxZkGb6&xn^z@>>k8taUkEVFMAO}LIA?7fthHBi6|dKy>8+eBjUne#8e1~cwsWSm3;K;W0UsE(a+QeYiaXSMkZLx{3KzTb zp$&eJ$<0;A&a0Ok-9U)jGoNoC_*is|d52;;8Tyf_oMN+hlu=_c+HerV z2Sh+WFJ1?KUT6`=Zwd95xdkF^PS?7i7V|n%T+!5VB}1AG>$BB*YUBLOROe#O=bRdI zmfgUf#K*o=6k3rx{>wv4^)em?2n$?z6-R&+iJwA$x$J(T{-*4p@k+HXc2E;HgXF!M zn&h1NaUGK{^f6n~tKzZjgW9R385-#kg7gW@&MREQv8y5F4;#K)Tmd5OIuuqHQy{ zXhrULyc42^A?f$pbD9?zN8U%-y=(R;tn8_%fxYO{`6vhr(!cKnO_EP}l7cM{tPBfF zH<+B(utkZ1ihimWQ?*Lx6#(B8W$T4UV)8z9g|o;4GKn(oV`A14U|+|ftOb~NM=wji=EXGM z5U(;{xhb&~M)`!@47Vp+sobXE33U!HF{gq2Bu)hZ3#hyZOBLK(CH0z4L5TLs@fAwR zSMf=?*`Bnn3@pF+xa>t6t#@xKEe%J*tfOXCS85()s(}y88cGEf#Xh9rk_`9xcHj-1)jKXlUN1dgy@y_q&^Ip z0Y_9=xl%B>Tae;b#{I8=Cm;PtYd}fqEfZl1}JbDzLM|? z&{>UnR>10SG$XPPa;NDyy3wvs$QZii$E?$kA?LS4Cl`9je^W^l+pr)7+8zW_y8+NvWMKEl3kjRHL1m>RdrOLnOo&`knBo(G* zEzS0cd)p8t@E+KtY~LpFzih|Pb&7}Pyrvb@d_VP;j2lYMPNCH@l2~?0Tx%mx88Q~;RU+Q9wDfzl zSa%B4NRldsCOoc^Suqw9PxKBoD+^)ueMOCI$K{NCS`n{`6P$>)dUIm6gK}1x%ybOb zENWaEa^^o#Jo*YsPj*J5ea@$$hH?-}d>fkUF3garb+GKhkQz~22UtX>ovpxo@qTOO#|JmVy;F>p7t z&WRMH150#D>o1``M^)*t&)cKRP0(4-oXi$~=75BMmS* zZz7zUw;(Dbd{6NllA6_TmtMZ@bi;f+Br^XY;q&wd@W?9V9-N%*envcxp zPm(|IODCO>Si~J8fI50lJbTJwSuSwNhfRE-C{lH&%L&|aCa)+fta;;6#4A_UeJ486 z=t!Y$x9Wf{EnlEU?%r}>51XPP{9FsZ)95ud93qcPtXnnNd1H?&_eYl=!h$MbJVNb! zIzmTSssnhs0gB>+vF`DpIv9nhCmls z+=dM?!`+TLUGUJQiH28WExjis9C|D*bjghnk=aUeJBDUfv#o{$?}ZM116;3%ftQFf z60;&I`l|bj5ZY=@B83rlu!Ys1Y%!shq{&9c$h~oq#H|o~6J-w!a%ABq`^egGFVVeJ zv~NVmP~8RMRgNKRLqRR0KQZI%rSFDXD>yOr)wpGWxPcR4kmCkfpWMamdX1&`K}eR# zlA6|UGBXQ?r4gL_ob+N+mq>Q4Dwr2;OFPw%XfBIyJ;VYwK-Y~W7&Wy6(vJ>Mbo>Ck z>Ru6Tn1MWG&V#l^3*fUqFD}3{g&wJIdiMs(|h~dk4Nwe@^sofdJvkIsJ;~2joM25swyhPO@RuJJjE)U zGF&loQa_s9sR1&nMU5N(`f|u+fQus-)W7zCq5Y{Iwf%JfGnTPFpO8fAh4K3Ly;Z?i|to zTibqEmx|Fs5%wdCp2pSsvsCpqVICmBx7Dm%G52LOM^6s>S6VrGn44;u@ak(ZU(GY* z4Iv}wkEzpix@E2ipU`o^-bDIX>C5lmzZMw{#yaLE+t)0nk9y795-R|a$sbMeXr$9l z4M|U35u(VIia>AtAT39Wth4($yg_0{b8>WGyK7G$q}@gyw|!gtzQu1;VPv1!9%sl_ z^gTXVqc#iP30*?u$Pg!PXa@r?>dq1nMYYjoxVUU~6H6^dh>%d86@+fiy>uQ4e+ZX3 z2W~D!x8qGOmpwM@j12>;=~TnS_AvA&BsmQaTFBYm$6ilf5KUI3xb&8XyyX#FP-C1t zmH|qwxwq~w_GN;NJZ%7eh7w8T?o8g@V?NXcYAimM{Qsht!n8+o@=+FWj}vOa$!DKI z4h;ARZhF0?UgO~;WtHfmCBFBup?xfqh4_GXCU<1Yu@L4;l+9kI8I^+{Hc5hb-}Q4- z?v3^GW!`CD_U3WE`uvT8(d2x4Xdc>9J5>wQYL#iMcrO0Y)-<>b-=Zqvdp2vi0BXyZ z6|dAy*lhrNe4Vk0KA2id3wAQ)?T)t_XazJ0&RJI?5i*|z zKg-N=0f+{r7;Im+SLh15!)o){7-4!fuNeGwgT2a}GbxG`Fn4r<%usTdr5O6LlVZ-+ z!~;24LN|NXfv$axkWeajq@=x^0IB|=cNeZED^S zVi5>hq(^=kR#smK@<&VdM|OY4dDIrh%J@|$m7`%J!w=<~J%udUvGzQ#%bOiq$XY(E z;iN+TRTsaoU9CLyc?H#t8^5;}CqhOSuBn1A+(zm}Dh0o-xbXJX6(m8e0L+WuU3s!c zIqkhtemscQ5u@Kgp1pxdaHJ3un!y3V$m;jox78RkYi?@8%DfR@7#>B7q$7wKPit=TC$d=A{vzhqi6hI{2 z*iN7}-{H7P7Da@@054Nm46S7z8DsbQ&kn8VJE{(jsUn)daj0!%isYuapUGCsVX>jd zUYr9;u0J||n#;6a#}HagIg0a#5QCn#;Ou}bpK|QL599-v&ToCT-H#8ybFiEtAe0qXUI{uX~@)$8PZ^VT-*D&XC~>lY1T>PNigJ2d$dio$i^A*o1wHMWZsLcPVJ_t*OM~NOvP_%qDPGNCkKU_7RUZ#a#rRMM z$Q1@>SAa|J=mUAnq-25QLY!r(5SKzHA_dF$a8AcoX?gY)1{oc5Z|$s673HdoqHIk! z>N!hYOMeF+>is^)enDV3zH(ndBAa*45lL8t&iPRH>c_5J|fw=|Z@alJZ=qTZQd*&>;SsEy_^QD8f^gX@|+5y)$HP`ZC_Z zv@;nj0Y&pog=D&MZ=x?aQ?DRA-x7$;~V)BADW&^<>~*PeRQ%L6ZmABW&acB+KZ zie>5Omc`9Uw(`XsJf&II=GmZefgp)KK(*Ql-K2%EK-YbXUeT;VBEl_x%CEHoQZz^5 zS`5uF1qK;`1Iutx%5sGIDGR#Jf5@(JdR_7JmjfQwZ!Ly~#WQTRZy+m_2vNTx<$9@g z*Y>oZb}+W9n;OSU!j$x26mjB1ObdeW(n7GA2*lfdcn-uT(jx19cOPdBSU!3Tj-jC! zi3X1V*mvUDI@RTLTJq?@AB#*6(m~n*H*PE|X!I;$hA){E1EQz!8BZ>^(jmeZ#Va36 zSRP`&g#-&1h>C&&RT~`sDf5kvlxCz$$6aIXf$M&vR$2cs?WWnf6H-9NanQ~ugxxWx zs*+F*Fx*x#02hx`=@E*)oF32edh_K^G(R755e;YM3{Ok#SUw5mmhqjI){{7nGKb#| z6g)36cmHph-@94@ttB^!asvsvx&a{L8a_Z$94hz@uFs+)RZ+54(S zoTN~^L=y&x6HC#)&Sib@SBtDoT7@KwB(QY&chcXD?T&+ks#$v>7!9DDa>R@|0TIpA z7#m!sA2Yp%(Pbv09p~~J=A+AL!v@i7X)OoKl@^$kiBC_&6iOpr@?J`&o;6!Sx!sL_ z${|0w$ur5^=9NeiTtF zYEa41Z3B zn03*vCd(Q$4WYdc;P3mE@xBEHYuTu5=Q*f%)|5n_0Rq)qigTh^_en9u4lyEVKX~yK}0$Uf&>=KVqRevfD5OMT|=s{xXVq)HBv+$YC*Nkbi zabF_Jw*`6I#mXT;h`*wHEs7*h_PpxQXJ#^%|S@3jZnIhZ5SE0r+Mj(Onw4tefMMA&^KW^B;UGpP5u0FODF2+ zJXoco$sQb(p7xq{3IJLomgH1G0xyxz`ThwN@s<+LZ!BJK<&=)jrJ(QdTCpMB`lSeG zH%KM>Lw&f>voTdj)iWrda>iQ0!58LcmLo($;TB=fV}6sG{tLlgxW}lizG>2Gc&F7| z(9~gyB-`HZWl(_jN+`JoJ%m{}&i!zI3fpQG5inBCYTP=6XSK-&pdMJ_D#zOGO#xrx zE1n365n)e*#R)U4Bh9JagVW|tRpIN;5&tw);XPHd5~;=$th&whY$K1Aa<;e+;+HKtv=ras4xV+ARpq)E%$HFxBtO5a0~# zBZDc!_eV#Z6bOgp_+wzbaKGv^8*nMJlQZ{KggMiWMl|D0;X*$V|JeZAj^=~wsp0)k@!;_2-Wx*?RS{raUuNl`;VcS1!Vb{W8I$09T z_805;cHpASraxRj8d5ib9Eb`2A)ruvzU%8~3dpHS-Y!PN=px1p{RCV{*3n*nU%Z0P2hfNQTYe@5Gp6qGb2{6qA zzurpD;NX;aFqw;!g2Xr2I;vk?3?XRQFf+C46yYFS+HM2PlruUJcv8m(Xy_1f(-GR| zT6Bvx+~E`?7OByS0EvdR9~!daC#L2^XO<=XQ{+V2US(`o>^-xm$F(x13UN$^1#-t${z^DZC6Zrzf2NaSQgw%8&g|lV{1` zB~Qm|T}5eWHA<@5U}81BKCcdNo{ST_V5EtEZrK}n>3D*&DsmHgMR&!?jpmH8H?7gu z(t@q#v%5_mYM;uhzH0!4{uCR{d5M?dn zC=*1QP%L0)xEp6Wu4w^P(YFdxE)_XJZDOR4OU5G8-Sdi2Vpkk3!S zoRb)Ru^jWEq{zOZ`7r^69M61=2diFF3qtbqgP@ux2Ffe}3jz{ME+vVxXSDEuY6EMCc-!eLS!@iTD|$$Gk5^8%l| zQNJ~EwPyiTd*_^z!ks>rULv0y%ZaF%^R(b!o&qKDpl2-Rc#%7l*7Y2#`}&O#m{6^P z!|w96a~Ad?71HHDf_T>fA|yG|C5}CO z8p-ump((>(o(0S+$kkrHN3}jut^}HBX{~UC1P`Y9N@C<*O1Ub1jAYt;F>chR6M;$| z?lWNwna>gre^RFGuLRM1TW$7gmqA{(p_Qv9DCPy&Z zT%ksDxbLFq-|Ve~O#DzkJavLpEjNN5`pFI)Az3=KAtDjj`+65P-tZ2-GqR@?jF#$1 zJd1bSN}ed)SW_nRbU0!>k#c6)zf8Mf!K~iu-Jb#UqF`E{L<_cjy}w>@JXw`FH`dSb z(3ViMF*au2z);!dB^3(FDJL-4Ev_$cSYm!oHPa3`0Ht|+TgDkgJ#E*))ypQ$XCe)j zrNid&jtIxAKVhaM31q2>#UU2HR3IEV=kOPTwd=I9N$i%>oD!IW`6Ci7 zasEbBz3e}T8PMmb)Sbbr RuItRga2(L>B=?l?MNEUN!$<%C literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515174001-Config.rsc b/MikroMaster/20260515/20260515174001-Config.rsc new file mode 100644 index 0000000..5d2dd1b --- /dev/null +++ b/MikroMaster/20260515/20260515174001-Config.rsc @@ -0,0 +1,3406 @@ +# 2026-05-15 17:40:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.162.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.162.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address-list=VDSina new-routing-mark=\ + main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net log-prefix=VPN-all new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515174001-Diff-Config.rsc b/MikroMaster/history/20260515/20260515174001-Diff-Config.rsc new file mode 100644 index 0000000..803ce0e --- /dev/null +++ b/MikroMaster/history/20260515/20260515174001-Diff-Config.rsc @@ -0,0 +1,32 @@ +3071d3070 +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3073c3072 +< add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +--- +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +3074a3074 +> add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +3090,3093c3090,3093 +< add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +< add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +< add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +< add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +--- +> add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +3104,3107d3103 +< add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +3108a3105,3108 +> add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +3112c3112 +< add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +--- +> add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup -- 2.52.0