From 7d8bdf88c2571031a6db81eecf4a0db04c39a10c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 02:00:20 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 02:00:20. --- .../20260510/20260510020002-Binary.backup | Bin 0 -> 300485 bytes .../20260510/20260510020002-Config.rsc | 4644 +++++++++++++++++ .../20260510/20260510020002-Diff-Config.rsc | 39 + 3 files changed, 4683 insertions(+) create mode 100644 MikroMaster/20260510/20260510020002-Binary.backup create mode 100644 MikroMaster/20260510/20260510020002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510020002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510020002-Binary.backup b/MikroMaster/20260510/20260510020002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c8f824250888bbc04ab059d5c7f09e9c89c4f728 GIT binary patch literal 300485 zcmV(cK>fe(sF8EUl>`6)0000iDEby)SjJ~%+WR8_000O80004Z`T(2&LY=%Wdy8te zF$1p|kZ~&KGZPZc!IJypU$6^+4rc`R@-2OBg%@D=_}K%DrbU(d+_uMooil2IQu zI^p<{)G7RvF;XKg%#Uq5`|F}3&!J7+g#fp|MBl-X9IYunR^q{O&u94gNVY1airr)Z zyXsPf`2U6O%$W0Nu%B2F)l>H6rlmafAP_!>Gte4f}8vMJzAyFe;<5MA=K-im4@D zDlQAlJwfq??Vo<8qyDl%X0v6 z-9IEm2Rby*&SB%nt8+~Ny8W5sYg$gQLK1*_5zAp%h?s9CJBs?HwxkXdt_r33^N+DC z4Fz&iz{n@c3p`JOOACoJF!LnodNAy(*tKQ99f%%iVg?OF63DL!-)rwgGzlcTq^}%S zz=nm3Vg11M`~yNZyiC2@G;5efBuAL84KycYc32!wGaPqE4U|O&BvAnKbYP2PA5?i| zHLd!fc#NqmJX}4qplGpXc~#*NG_&(HQTh&D4D9vjlS!w>k6gd$HG7Tdh8)Y}FBod8 zCC>ivIq$dg&K%VKqBvPUY{7^~!~RA1Z)oDal522JqcrO;#+?==EpX$I_O)L7G1C&^`nx@7 zJ5_7Dva0`uBs#3?&P;8I8LdgPw^!QzTe>vaX%=nCbdSJ>dF1myOcCClNSsTon(xL5 z;@F2HxV*gjqv5U)CvtOgwv{wjNSSpGsU$g;3aBtO#3fJnPzQ&Y%)I!N&xbMVkYGxe z$F{Xz_+V~fa91eR=~k7ls@QD6`3zV0^h1?yGnYWV7>`Vsh^?iRV`y6UL(5aCv37#M z1;xwrSAabG3DNeEfZPKhngJ6tCgIFj|H=eHn$NoM23gwf&jaJeX?O1o@n@g=rqzv?eHzTs3npr|4HfSHF)XCC1c#-lwc4a7x$Ic zH@4#3mHdJPcC>zi8KE-ig zG(!m=;4y>W%p?(7U8x*vD1=$CU@UyTY#e7N#F*M3uAm|B5B6^V& zJwVg~A?Q%feCMv+sJK^3v)p!O?vZe7j7S0yVfopSxNF)Rh10$0`EP?hP201jERjF5 zNDaWSP(Cg5&RwYJ6hP%U24smox9ZtZzYLwB503M7T`Pxd}CNfR9xR zwhH+!fK*gxY{p635zKqmo8mT1(qQfjrg4qaWnmzTeY0W zE)k&Gc*VB&pcs;+Vu**^4;+)I3V$_DgFr~-n)8*4!US88t%`MSfV9h1El$F_)Yj@#)M_k$&=A3tzvE0Gx<=-Qrdx|DSuol%P6AIhx6Jy@!Xe z0-~hlhQH9F@^E$dh*L>sWc@fq4JXaOaQG@fEo+~&DH^kE%AH~;KyDjd2u0UInw#<; z3H?|ULbep?&ZC-9|B@Y{@()jnc3`hw9KZF2qUx^wQ z%BsZXfKKgl!8T>+y@^0%*tc_{h4lWwOP)QVY+HcCDFq1lgeoj?{=JO@=swXdr}MQh zupJSMqxel;(VHK2nDiIYx4s=is-ExiZw9_6<+{{`BC+3jj^piAeS@bSnwsMV5inN4 zmoN+3xlW(g7-tcealh(jUXj<(JQep1ZQP}+wf;f3TL5qZ_i!6*m_ZE87+%#e zOG88KB^HegC0_nR(a-*se3nsqsrv}q{EJ>`VKw+3>>$LVue2gWz&4ZuY7H^Q?7zE# zvZoKS@9piWL2vm;Kh#aH>Tz$85+el}i#Q6XQ|nSU=e}JWhBdEu(cF;>ebQm|JPdD* zdtP(U#$Y|z>X5jH4O_}+-r@6`P1Pgbzz0%n+C^!OLlKboO_M8*7gFXyN9&^ewi^x+ zY5Eg@@l{a_Jw9p02O5rGD!xzfp4WZg71Bc+RT^HenLt@qz-F^S!RDEordy5|b@9fR zXBZcaD`u4OV~((Pqe0d0qFCfKMTBHBrO=rkTPQWrAidRFYn5VUT{X!4+q&jySk|3D zT5IZ5*R?)gyp-^Pt9yXxX9=wuuf$?*N$nl!fly_Uea;smATj4?@B_w(w}Mu+s3!Ic zDFO;@8$4A|M7)B98SaM|tDpjkdz`s^wCf4<+Y@wsInX!=@4Z zD%H*mtssI4Wfr-$#(wVpWEsuV6TE<0d>UNNFeYkP$MWdVI6Q|N$h8b_jpg{OXxh=+ zi3_-kmthdIoeGL3$&S|*V7os{#td5D^M&H%hMr1xLObLj@uR!|K@{JQgAa=Dv@h+X zPnqds=ZbSztGZU~s7~;~U?;=^W^{i-zE%anN0=mb=)WE+%^;1k<+nHwmcZtuX!B;} zLhZdIRfoCVU=W!nISX=S0?|W)jaHKUe6%2~Yb?jYEAVkwhmhj$Ns!#ZRVg!~f&zb3 z?g_WF>a~1ID$KzY)&o=xlAq}ILZePqy<;)7Lnu5B)RH_0az8R^xb?9p#0?A@VHbZ> z*m<<`ce4FIpoQM;0>Oe4tbyQdxORd{&#XU|rLFn{`bw4azoJtKDLG4o`4f+L9EMYR zT)a0jB-kbO*zPoBjDW9$IpSJrgu5HOl?y+zs&Fz7r6kgzc;0ywg$!Wco5Nul*-xAo%=Kyj>=3fq!j0p_Qfx zh4hU8&8Rxk$H~fVi%cktLrpzWAkhWP_1WCQ%%Hr;wWE+=0u9-(1H2WF8#vWyZoIgxhTHvi`hBlhJ0$v0%Q82So6F!&VEA|0IaLC{@ZZo( z<`-^@>ZYv;B~6~7yj5Dn2^(43D+;eC=wAc-UuO+}d2!QTN&^Rv+IwmSS9K5wgwHSn|y-aU=7-UuFU&aU@Z-* zgD#LTff)0^uG0$lLB_e4fFTbz`6zdf8Ay>wA zv$(Wx(OcF>ka1FXHfI0@Qj2Nim$cV9FOf7i+pD3fZ;A5?8P5|vzIVVMYi1_Su?+$K zl}CE9azeiGuMGlDF2actkRO`%VLlQE{}3ctKaL-A8cX&BO}vT4{~z#UL}O@raB_6n z;irJY_sK~A=rraH>DN#3=;`qDXWl@3CP@Q*Mx|s(!5(VOvls$6K2Rw$D|kt(XL)0V z&~H9&tz1`}bOeW0DC2NapOtwM=kVj=>9Wb)n=YyeOC>|i zfmi~w&~Xz_5Evx?@SG7jrNs~v#fn5aqd7|-rU4+7X#Qa`H3ZLaW&Y{;JK@E_&(KZ~ z2d>35^Uj%d8%k^VG(H8RN=J3_BWQnr6p$%g>HK>_>(6(NuK2{BmRx$5&8hNKk{bkJ z1yHhCE&j%T`)}}BiRX-M1Zk}0Nu?le}u&NthgQhm^xxG83Me9dT&8*KhHroVlT z^Bxxx61&go5$kGK*(@nwwUZ#@w)`DFaYHLx6vGm@v!A-tA>Z5VIC=`KU+^}!JgV`v zibsDYRU17n5u5iSZyVkJLHmCH90eE+a|{fDeXRXc@DG-kvXKRoocNgxQtYtA8$*_5T6uHc$f844 z`eH!5vh~;vEz7xqZCs64WVQO{Z}jM}uEca+@{NgB4J1X972jGr*+-VFkD4c^tQQVV z+CaFcZtY(Bf1}C|&lKug9Vr@wB zrg76+6;OP5^jLHIJi7ZIEq8PS;drTHB7SvxSigaV$8DyOmx4^id&wWB{=jYdTU>?J zDJ6MSS$uD^N?`G>QxqV{kD(G1-(n5@HB#&|7L-2dZt0VDud`Ld*wJ1VR8X%f3)3}O zMOMovxRDN!t#Uryb!)vO1Yis}eE}SfpoG|5dUQntkLB;PA7aS%>K+iUJ=R*q@`>Zt zqc$0YY~q)w))ryw|7~Q^*lqHp)9(3nBa0)l06(~7Sih~0A`CnC)ODhZ%aW%(L0h&a zIxLJEDTNvXjzmSCU%_y2w6cy!%zEwss0^@!j--NI-N0%e)DK(2_CH8(t4WI@R8O9Z zC9ew*>%#o=v@mM<3q$5=JAm`Tc_wav`;FNI^Gj1UFnZkM1p~{9W$_;H&{B?J)(VC` zI>|eJLi8`H$L%1LLSoA)JkM+!+_-Y{sfozMil=(fEEY%9)d!}9#z2MIyI);j9mYXQ z7odOi4Bo%V&9^Kh?aiad3nyJL-uF5={sC5-tO1(atTchq+(T}Ev9GXhHtfhnUWWp6 zvyQDXLZoiwCQ!2;w9pDe6nBSO*o`$4kAbzC$01`cis*+0Z1jxTeIsW*gJk-8%Lc;^ zQ5blz;B7G+|BOT#q%9XO=XFXU!3Jy_M4Qxgt5wZyq?0o$+axzD{ zJER^^^k;JEe6%(SgCFT7J*jRyWC%-Z^uOSRNP29E*juxLyte4Su?se`yITM6RGULX^{M^^9t& zznex>N0I;X`>TOQf2x4z_}y-~9W6|}7+uB@BIn_d%mzD9T-XD8^H{c{^i9`Zl$?r9 zwb(oDNV?yUE}m8VON@g~C_83;Y*KF7fRE0uPvMY3l-Dess03aIK%12w#j>?3)*)Dy5P};TH5w6@K zOwOR<$nj4we{0&+$GSJSo!%1_dNmk4Cs3B9gf~w34};%vVo#881LFZx?s`R#=#n$<2yOY!r-$TbiK! zI2hb7`PJZ+yaBsI3$Z!bGmAM?m%(;hE@x&y$&ly}I5hdOwyuS!zf=4N(5C{f)C`Vl zmVdsf!pDlVT*#{jML|`PT5+fNDpWIRrw!Dx_cg`xsmJNHy_HrQEaVES=}kb)mwc*n z(%=NI!9hk(D&vBFkL-w^3Af_)=Gly%1%5gXdZmwDVuHz2{tyNBxI^9H9ijt2^w|+T z-PzJDl8rgEgf2wq1z78Zp)-ZOj763=3QZWoM${Cb0gyzRD7?CjEyzeew8>dzCKL{1 zc*T;Hmq|sDdFhPsXx}mc;?BgPt;2NRy9V4s2c|m>{Q1Es=oX_|mQf|>)}tEL3z6~& z?n?HgT=c3ouw6n52(V`I#$rGB?VZqTG;$K0U8e1})1?r(j7rOPGVA32AasGjxZ%}j z3A7rjKVoq=Hsq)}K&&)ZjL164eLw!9N&>&GZk-{;&M))KZM~a{${T(uX_kSm z{X`)KOvvt#qbQQ!NuZ+2+70s}PUG{$wWb6Ynh%JdhRaT2Z<3&hfMUi|>pv-_3(mrEuL(G(r;d`2dJw|w5ve$7z!fDs4CvjBGBs=qw4HPOf< zj{7&D$MmAAE3$UozvV^<1x1g855Bw@QZICi@W^!WJMJE9O(HX{dkN&^nooa$-3JTY zgab<-z4Yr8k~Ay<#m`l78au}$$O3TEVl=+^&A+*JmwYg0B9B1jh#5OE3?7L6Zq}+X zFX|@gdztP#21`#mtiQCn_VoYlx2Xwy9tI zU^nb%zg;7%J|%k{70eI;_N*&?d+wDpHM(!8i_)M5Hdg^w_%#(-$e4P0J-vSEYdP;M zG)B(P#wd8IUQ^6U_=j5IhI}g)?v*`y1|GqrrmpsT?y%XNX=UcLi5P>am=hBdrh$Iv z>-l~RDrGexIOw5y_>1ED6huev7A2<9N(2&pCh4R}r)WxV?$03TUJG6>*mGM$u%#4G zMM1*BfRzTHq3w=nUVrGXT{nS35o-msOmV3kON8W~aEG_8KoT0|9z7ik9BP?vp;Mk+ z+S`=Jd~IQhtgrA6?)xe1vW5kSOL?+X3=4WIn;rS#_y}-pY?86TI!B?Vak%z+s)xn| z@%tY0XbS?>qlU}#MCDn$y2R$Mc>ZaQGbqO$(Rw!82cD!JFEfX=Yx7*$t2K>es{5{@ zJf$N~kR-sa?rh%#hjmGX6i|U4a={V-NXl=jq@4RO_uy6Jw}1l*k~3zf2n#!Zml@w$ zG#~yzRFBCd+|}erO4Z17!?1`TDEFI+bv;kI7osXF+UO33(iUI3KGzKeW;OrA8v9A4 z^Rt&OR|@lo?jH9YDXEzD^}(v&h-62W-RccAK$^|KfAU&L^Q(=L76lzu-VWvc=&ijC6A=HMLww=MKw2A+f!?+n<>@)V z^p;~Gg<+1MDeMefq=0Wd77F$eq*|sg(T6bALSXr@@>wT>d!tCQFGNVdAy6%8o#S6! z+2lAJu)tLuOPPm#5JnP?7IcLe@lNd}i8lRvK;y0EN24-QcpP9k@>qcq@Q6V+ek6kn z$A|Y_=*))=iSx`cSq}b6yIa@a-^u{)e^t=_2ivv|Z$yo`6=<*r}WYHs!+C$+jahAOOFcx=c?Bb zPeJnH5-uF#JhZB+@6eUhexIKWiIAHOYpipw;6Lg87#_i<@CS_xP_$$n1l11$SBaBs zhi^$CNTBOePant;sGG=7Q`&XX`W;Y~qbM-B5`VAmL~;qu**!nKT<-<9Z3dqfL!xc; z4!3jTlE~{=CO9pVUCGQ*xyE8`q=_RDiPy!eT-jMM6Ey@%x(JXMa0fQjaHoV9F2raf zUA^%8J$`0nH4v5~3vPN!zKl>`y+cXQ?%yF=siP~@cj)l? z(^mL=WKE)~&Q6WFvGqDEZ<0bm5;brXPMGl-Qi9S8X{DXR4N)Hnf_#9M#rP=(dVt!A zooM!uBJGVsZt(?l|GbHBQ#YBn$mhe0Z<*!sfPiLn`TU?yjbN#q@@G8K1{T<8mr1pWTnOq$F z1nR&V{a00uEVp8Aop( zYAM{Xn3=`OcDn@;Z$efN+qOGIo-0zPHDKbZ*XMs0QCDtu^r&XSyWaX=f+^8t7-sM> zVdL?eaU0yr`USO0@_uMm7D;b%lQ8sLE%e|Q?V`a3PT7~`0`bbO@7YN|W8YOx@3i$2 z*1XyrJ)MgRaS?ieOv)q2h}AE;hh$Emiwxla##bb00Hz^zytn{Xo;RI^@{a94H>b2m z^G2tVI%>FU)QJ;$RVKtux5Hzwml5+J)sR`u>KtrX)?3uV3`n9@v{cI@cKeR@Eeeag zj3LTRu^8Rq8qDdDnB5E@MG#1iA|-m>#kwkV2Zr5j;wPF-LOJTp8%$`Js;;OQaGU(g zOtY8bz7ppf{oy#PaEVl>uz+dBxIp3q-Hy^r;D2vDW~Q`ZW9eTdZaaTin8G7*4xTq} z?U?m=(D_Gt8=ijf`<}4g;7>lMT0^eW+p_>5pNX8WK2QMWX-;9ZxHZ7hsNiD>XKjJ0 zcy08VgC(;O(4K@hThdO-iGPi|zG{!C;5JH!7wmH`HdLC3Oyc_IX^>=#xh7w9_tIz*+d*vTy{8i6vMr!Rf||tZ37Q zYF>1PJexk#OxxnC!9^_XRv5FA0+%c5GP+$-`QbQd1O@5vDL{(WQ0I6NVkjW#(@rF5EuLqe)4Qz$sr4zZyoX%2=)Q-M6-|G&$|_b1N( zkuh9CMcv2kRQ|1&H6lX+chvHLJ1}WVP_QyL#vEHefK``kU>wWrfLJ+mIlRILTju2se1=(hvmih(X$&ck zmll$11G+3WX(a>_5PYVN1SNJUU>ZQ7tFL=PZ@6OHKi0>mYdHlOy8pp(l_vHrf6ijI zT3*KJu-5#9eh4}kThl5YbX%#EynonNu+cB7IrK6I90LfpwHBQ@37P%7txrK83Vy%w z-mFnY_cm#*;Px#7J!0xo7SI+|%Ydb1);zwlk*J<$J;OSLtyuucL5vGJBJ4o8F$>Wj z6AEnbrGIAU+-nloVR`-XI^;M}hdMA9IuBT8z|c@)jWu7cQGd8?74F>Fs2xm#!B-KS z72UY4WcB_253a$-tu848@L@^<@9D&cGAlO3+J4v?GR~O7!FwxhAColy3uz$tRa!Zg z(@MBp6At6_dQ)&VhoHiHfByY=p=t8kR!IYJ6=?ecd`!UEcMr(ZQOE#ShD*>;3Kdh= zEdEA?>qFsURHMKjFw)J@AiT38(2$shDx~N$0yq^exuco_6>hbLH24kEuIK$-rG12& zrr4yP;3Fk#)Je56&5p)o8=n82^H7Dh0I#ae8P@odx*Yvfn7%20Z}@ z@y)31Qax{Kw2_>g+ejMnfR5Vdj*D>jE)=iYbz4DOobMtcNjhZkIbj{v#I84uMB!}f zbm#8*NeZT3<8mJF-3%X`yg2nEX@&QS5mRnfU3ld+JJ&yj)0L&|pt0;OBe$v-z$m}z ztR&6bFI)EA>t-B1z&-^{Aif&fZ%ODgJp#|n+-N;aP@M+bNb5-Pp+$?z)HfxsXsRsZ z<$FT{AT6W*9&&|Y%aTO)Wp0(5T5(RJXUUP&X#JC^$!GL(+%#^-y0*(zm*^0Mpd2$q z{#H_i7H>BYP+KknB&%?wgI^t)FPocUB(%qNMH;5Oh~cY@Iao`t^ONBEWq1!-urqON zGIj51az5|>)JW-1qIhZ@k4d@c<>MA#kv6RPtj&uCHxMH!YCwpSKmG2YjKoh2Y`Fz^ z^u3ym6pDj|nBDVy2N}}1a2mJ0z8a}U66CfbO&;01=Yq!X>5)U$xBfv*n4DUNG1SspuvhVfX0 zu*Dt*XYhrU)Eb}h(4v+A>1_~)A$lZ!6{O0qec0* z)K-#-uRBcxJ`DC*?6%vYkLW_XkdX087jVkd(G|@5iHkc@qr&NR{HPAb*R+s z^(aAVQto(IlNDmzU!iCzt}61|zIfOKvrX~Xc4rzFt5k^stMkEfp8=%s+(krR*k=rC zgAO1ajq##r8DCjp+u5XXr{ki!Pd|P8QdOPKdvEcU!v$?Nyo{;1s45?3+ zr%LEM{NAiAGD)EiOf(;#6d^q<-$9Eq+j# zm84F$Hq5f8%Oe_Ns{R%T(gnwrklLkCT}1Dpe%LsP)l63j%=r+k)F5VtfFAiZT>FkV zPSjNH79*+O{ac2!)7md8N91U-i!|5ki7P>!7epU?*aa@;C&gdOewS(-Xns5E4Q7&m z9tD~OEPLGOum#P01g4V(Hzl3CdfKUs5zUjy6R8}M)gL>_ukPb-xF0Dtle;nvp&EH2 zr6KJJ>C)u#cA)Z(Av)5E2He|e&GWt14{%6Q9acvLcjSv%BcQ+@U2MLwl(1x8RS-b` zOO`;7mf60vghwa?VQMFcoSn1y1xknnxpF-I4$bb^){6r(%s<1T8SS6(Dp(@+$XlQp zuzK)`C$`MqIShp1(=z}%3wMGb)wLL!o-kc&2tFwGjB#s#7hGk6y0dNam7=C0lRVRC z<(a3Bv@w4k%?$k>RplDk%Oipp7Z-9roxi&(UfizeGj@4ocLC9IVy;~!d0uTDHI(I|btfFfJ*#kU90Ai*aH0U9x{?&&r_5@zj z(lcfSZxOZc9z&1M&qi&gfnet&sV6s2Yn+Y;@ z$V7X?+iXrOIYo2HP=haI(Hd|%<3b^8;T-REI%?b}85yaxKG}%hEq%GMw=LXfB zuEZUCe-lfypH|KdkNGqWBxEetp1aC_X=jQpr4ZAu zcwc9f1e={y&Tf*NN2z}fW0=od+w8ic;Nf4(v@7paUK@uwaM>f%T+xsSo%(KDlu z{vMZqH|2xTuy1yJE?aD)Hr@KoB(2^k#9rBonHzibTMw1`KN5>!hA%OCa|XPlz=u|h z(p357PoM5{a82r}>xy`&ZI=iOJ&s$zQSV$lnbzAV70R(_Bn<$H zItk(|v&LjOg<;@I&EmqJ!H~{M!(b&e5#230nB3TL^FY9b7>`+^)bY`C60w@0aZ~PN ze#Nf7+~Mch`os*S(`We=yZ5d~j}_e!M4I{ggTFBZvduP{?JuMs609F=dSX3Qm8UYD z8K7X;2SAF;^<_Yd3C{SchE6|cOxVzV^|UnzdUtUSlV)%NnY=YU_}vt7qk#%=36H^L~6x*NpONBJn(G$Orn_ZLynNP(EFPv)_sEWegg?ie>}6 zwRShn!ZT=Owa28ICl=Tce{Pzz)g&c0+K~gQHhIJ3I6+BFZ65khOiXE|KQU%3{NB7J z;sGA>`nFC8s<1EbU<#{X%$f~MtT=IKwZstRm5i@qzUl)%{ z8Ole%(fpbsAc z3ODhqtPmV$WcDf$MM?Q^|;0R~h^-Lt}SC4;{X@M|+7urHoNBn658* zgTT5*_7fCcMTG0*@D)?m!XAfMJ`}15^#Z+jN8pxSKe&axJ31Ha^=WNY1pmi@$LhZ2!O3ceowqI7Ns(J6f;ctZLNHhutQyivtlO3H zj=!*w(2Tq}#}+ogb(yMmD9LYoP+~<43>MG*R8TINY%ASd8d~Fcpda*w#!Q?G=ePm< zvgA=JJx)B@6iV;eNR{lx&jv0k2@_{em4m&tk%TCTP~6o@<-UD-7* zrXBLMFziwDaL>Ii3q#4K0jg>Mrm#%wX44Aty1e?1)mI?3z$4;cyGla~9X|hFQm<+I zTb`q29hHkL4p8%EOSNFe#G+>4P)or8%Y?&nuovx6LOPM+}JMs-ifB# z8~5-(7>3rVsR$s~MMi6?ft;98#ampnF060+@+K4JGB?K+dQ6avNr&s0HS9Jsu0 z1(Qu6{V6M}7>k^_ZsRUNLQ~AR9Jw|M4;Qa*p-$Puzvk*@NCqafS@eL0_5jEP&BLJh z7F<3M%HMsRenZ@cU6zWlv+N|Pz+OI|$40N6i_%#|@U69TsobI{`y}Y=+s2n2pA|{> z;O6w~Ezek`Hi`_%fT%>WSY~18C!_^a{sbsOYXII!N5>D@DVitVv13U<8Aky|-6?(! z=3Z*xmOhyJ|8sB&v$7YQwtVEWs&)nbztoB(IjKzAtky$1$t)KlmaA2nlEVc}mU>2M zAB85H7Exu3-!`w{EdTrCOH!^#lhp$=Jxw?h3dxGg=W|DW(ffPC(H}3|im_yGS&;gx zKLV-gFNM?cj#Ii^xi4z|z(h96G=+1H-&`jlY3-kxkWIw4*v(JHihkYBi%6I2p3jvX z#ogvBw(X#r>3BCS4IZ#8j*rbNl$=8d7~Gxy%z_6DzMv?70&ViSlVk&?O@&MU3F@r( zR6sTIIQ?>HFKolOv0wzse8pf;5!Ji+WYAVB6KIpwM!_kw^G;erQxMp!8i1@#`iW^aPkl97V%mWoZ`805Dc_Bq zhfup)Q1C?w>;k^uyk~{&;puGn{Z(OJB*yvmI>>j%Axp~KB1p-IK7CsPqVnSX%t*u% zyQ|XrCYHCu>+hx z?yCjDz8r|A8JE;D$+&E_G(dc@!BDM3q{e~<4ksNS zJm=}_fbB@rQ6h%dB~#5y$+G`Q`3(K0T762`LWlSPlkXl-bd`ezWdJt zmAJzOCN!mij&wdD-9h*PJ`k<9(rSSdalC~(StzO8r0NBa_KRL_V*4o9kZJ&uFXlm3 z;^U*Cxyav>v;I&rjf_4{|K zyeYN{A6_y-hg##|TcD#jy81wW%a{(fod~-RTjF*gn!?7KO~@POux28CY6zZt;uf|tbff%el8{xNM2n>f#WBAML4wPTc*<$ z{3Ook8=Opv8MoC<(P^%iZ;(vbvEXL^XJHfgv1$IHF=Z|6*#K!__XW53r9v&f-Ohj_ zV_PWD#BM~|NXSonX}EWujN&H>n8n`2q_`eIQjp}kh09k5K}O3ExrSY?Yj8IRCFRB1 z(Fk-~&orrEHJk0w{1CN+teGBrbH40};(MJdp=3qy6B2L?Mx0eb>yDxU8BKu1Swwj~ zvG3CQD*u0jiiGb*J()}-p?ZI$XVQkbho_6ApfzzG@`RYZlbBMiXf}Oqta~E01G_-u zsxvoq)v2g2BdV#u8im2IeH#qxmNQb!-V5wcpr~mo$;T_IaYIIE47?88lDt}r=WbCGK?Xkx=o(9=YFiaCh$4->rO`$44+t{?NTq-b2=a%Ji zuXzY~cwDY>nIX40BhY7bCpiP2cUi8RiQGf%m|z)LuUGbbmU;w4=0T|kRnf+P%KGcv zf2oAk_7y3zO;!y4{@IdTftHsU3{zZ7y30fk<-r7==Mk2t+0v6mp!5_5 z@Q3TpFnFQT&zz}iknvic35d_}>^Z}HTW}5AlyaBADkex3oigaJmty=qYf-KVY;Fmk z^O>>`SriDEAkO>&$rj;%VKkJVt|d}+OwtqJpCovu$$^W;qU)6?R9VQh4ZkqxJHvm; zs_povk}HvSp@fx0wYTiQE=Va0EN@t?ZCX2H=8*y;a%eOoV%BdeT8!$tnw&p(nG7zL zIAw#cQ>XlD#)0Qk^YtY>(iql5o52(xRl`pc?M<@j>jzbGNXhW=#D;MUYb+Cw5NpR5 z_K$kcZZb3nF|yw@S4H1%$ceMIr8m0q-7x2|K{VvfAQr3Jx-K@q>ekGN`qaXZkVgoF zMcd0b^6)Vb`rt%jxPI6G`Ll0PCs8=;Ee1$1bJDa%djT3N@MRMvqOjO2&oiM@R~YE$ z0Gyg-R2G!8a1!*aM93ADL$|^~9JKt2(r&_L6Xr;Ph@>Lur2~8%Z!58k>(I@e82p!l zi5_!%_OTk#p0xo3{m6FcQ})K{4sis+fJ8n{OsbgCM(&&5DOvvj`^vtI<~gF&tHlKQ z-!EgiCZhB+hAXd8M!g|7*#tEkte1O+u#UjdDFTde)KOY^;6B67_>txAq<1K9o=AVp z*x88YUK^al|sMHLVP&M>Y^FKoeK?lQV?)P*I&HZZ1O z69BX%uxPEL9IYlM0touga09wJn*y9qTE?tox@fuN?+=hOs>Eb&{*isR#MvUG7d33hb-izfSKt@_y%ZBA3>-uhtDV#(#aJa zr%-T;4Pd*=fYmnwxT*aFp%1NZYM5UmE00F#4Y7ZoZ-)*KwEJk$_qXo5_STg3kV{Qn zNOuJsr+5dTsa7*Ln#p++Y>_}PWt1kYBt_lc7W~BIKtCvbCWQz1KJYEvvjj31|9?O& zEWkIE2G(~5$S9zk{PbT8NO9)ebEuAMkah zL4Hf&DJUX{d-W#*LWKm!VbS7Y!%fD16*KTq%DB=2`6o$e=UGO1SHf~jxd>+8#}l|5 z9)ICyI)9>n1}7RsV{_Ct_Z4kiBsf zDh{?;AfcG{%gMBgu|_7=?^D)~($MQq*K3)vt(3+hxz}}5Y2iyM#)?4CzC}SZL;7Si zpSHs95amHUI;&4_ovM9e_=a*L-)@TME1Rl3)SN=QrIKWttcoB!yTvO9#E0Bsv0#Zr z-yw8Ry9+vnG%{**6GA@sD1H(tbrew825_)oW}dsg za5qU0W2Z+Qd`ip7`pFBJd&<&-9MFa&;{HeCxA&w2Ls{2_`{%sKFIz=LbU1U&T`K`8 zq4ok5oT!^^>>s@PJdD)roV#BGm7kztlp+c4F=e2nl zGK(mDcqn?#YnSBJLSG6|nRXcMN+2;O6D7(HZqI2+^1=Z;r^KNyoS!{|^*qCn*_b|n z#Q;Slp%UoZ`0MZ(ew=Om${ab|oT=bh4^Xi~uFOEb+|dLIro0%;2e@O>ga=YQG4IUm zw%2C%h5opf0$;Ukw(K0G&CWX zPjVD9*%`DimA54d<}7(xhdFb8D3>i(RAZP5?sIhrI$K{AC3A9D`B8!B<^KPC(;a$JW!8a-+vnsRe;R0G(m3#anQKh1-7^`Fzj z)@YtJFo$x@=+W<$G}G3-+P7)Sn2olq;?Zy{yTRax+Sy?WZeSt%I-8hL%BTgox7roD z@n1e3iqdRX>;_eH?*@WD6uR!1qgagD5tqYA|=dc{u6+qQpyUB z6i*g#cF^O4T4|HTlruw_Og744%0m$Q5RI8^0dpG?2S>WC_L?(6vDd>Wi_fzlicYiM zd}f90cbuZRM;x?~!VRe|7U;|zs6(&q={8`*V&9SANju(P)Dfl=$7|s7I|=IZ8r5C` zb^pG;G;u{KY~y28gWK@ABd=f+Q#gi|h{?_FDnVy24_l1R-hFBZ;m|R?5WGEEe&&^e$!q3w0W5k7u}%oGWS^5 zn|2A!(XpWAFvqViCU2qU5U=4x5wsRex!pt6tqGoaKI7F+xS^Z!+ymcNBa%vTbMeLD z!44Y^1!2qvy@Hp>$iI?W|Fkj}aG7!#ISJ`}vHrWI)tV>&a7RyF!^Ngm>}0Cg^)l2T zr6DGn4G{CmOPr$iiEL>6Q<|I#n(@^n)a>N1%&1UWZ{BspSptl9HnlAEf~UjF+T{(BPgpuiMY(MGxQ1#+=TAp`5g+1feWrD05ah)>3m;2)qH)}4$%QR4N z?>C3?@P!?eAkq94AF@3^;}cY^5TKrUXsu_9eL`8Y_u0YnrgrjGp^^H^yOBd0DUq(q ze9L);LS_z6j9aKvssR5#0Km&B5*aME10>UW-}Ao=v)2izSA!)^adln{FOqQ2?_l6q z+F88CX|^HNc6D~nolS7&My;fKR(ha28x0-4Gdu#0Dl@7a?t6BpA{>$fe8Cf!e&Q22 zAtK-H@@^t@vyxm8v!QPLYS?|m=m#UIfqC1WCLO=V8Ho^WhKh!wzb*4aV4T2r!O+Wo zN9Uz}9|MW~R@P%>bj}_3vps&(4|eLF>%WRwUhEO$2N8izM=%HfC$aRJM2>&zPEWkvcii2T)in@SFX9)zfo9R{KAU zsGj|oKs+Z*i5$z0pYyd06P%xv4BysO>%lrYV;+m7fgJ5pPqw?OT}gj6l{nbX#q7K=dYA!=x;#VfkOj3&@)ZQTN+;3F=U)X0t#fic?EG&awUbO@-X&6o2KZ*B>K6%-cWDV)CL9u8OqqTn^MH|S{)+cRehH~0V7ea+oZeu(s%ttWU?bY1Yo_YEzll#A8e03jz}pOZ>aez#G7JEg6VAuETF)$ zd+Pq`^2ksQ++A-k>5zTp7uxS&3-y8^t)h8bY_|tKSz!}n;D~&U^~l2>@aEm0W6A{k zCCJ-xT0LV$)%K#a#KR=7hDUKYi2BPV>v9Wwp+D0@Nj@7&o`c)ddtGHNs@Bi>D5?hP zF*(;ukc_2o!y2=2kt;~AGzA@?-TS)dt;=Ju`-(*7JVa`%>*djUl zf(MgQ)Y(@5UX?XW)-Du?_;7D+GyrOEFe$P|vnN%@?(sZ-Du{&G%5h!+JP=XUOu6C} z(rYHVj9g`7m~)+#GoxTg@b<>%k$9(_5PLthCHPOQdJ^b>-z+dmaK=aKCA0txH2p-A zj{GQz=7ZiWnZh3zvnw(d13bIXN5Kw;j>64)2Fe-BPv5!%9rQn{MI^){$IN@KtHQ%i z{v3jug2XXm+HoNB{Z3vryZ^3)swe==2l}(jv1TZ3Rw1C1x^CVd;?5F;b5^($h9r9N zZ(m>EwugKp+NQAGA=ZhFM4JMT%VUvqVD_9Y6=y8+@|Dx~W;a{ON+D9c^nEcLRO#U;B;J-Z$hNDJ8ARrj2AG47p9k*o+fo5 zubBH+GZzh54Ty}}0g<6vER#KQ9vWo?z+EZ}~ar0RD zNt{dCqyoGKsCLtZIScP(d(W(!tc~3ef-K*GC&}V=V^QT@o6E{={^+@f_Y*umUn3Ta zErEPn_1OpEzq`W?VTBvpU@~sr&CNih$^UNbi`5cIu3FrMCR1(8jm8}pJM-6rEUtFk=b$D_i0|?oyut_1LNf?SnYhuyhh%6Z1u)4 z8S=-ftN9wCQE;kl8%rc-@$Pz5)(T`MUTJ1#(;yWf6=DFmrg_0zAJ^(w_ILpLm40}Q z;p+Q#npEz&9#4Qu7B(J=h4lB>UI7OR^VBXQItC%j5p|FOIEH1$r&sm3KSka-I5oUN zI>@k*A=#*sJl!z~z0kjkrc7^xAU(=YaUIAH-)-2v1QOfxXdcuVi>@)Aalj|rVxvL$ zUz=yAu4%6Vg%{#M_lF*{VR+sxif`zlnt?Zoo3g(z@swL2;uErM+$cP#--64?4L!HP# zaeKokXDc|q$U+t|-P<~k?^5@2RiaXVobR@jbZV3k`9|GT*rbNwV>#{>A%T=ZM`vS| zb+*T-lhxIooWq1Q_>`|oE_JnUNnJHpSheU0#|2DKr) z#EdBV+{=iSmSd8+tsJ_-{&Bio{%(!aLQ2odmG`;K+mj-tds2PZdZ$+dPHUA%WVZdo zv+4cHr~i)HC}y?d03|yTh&fVJV%~-vv*Q8}bx>XWh|rB0TvUlO^7oe6$h7*g>UxG6 z8ObGdd0=&ke>}*7F~F5M_Pa6onT8$=&)Y9|&26m`0AMFFpa_$LF^T`iC3baGoo066 zrG)@|(?^3cT4Eh?iN(~p>O5AC3{g_%n)>G1lKFObr}@>^^wWm;p;zHU)o_qpFmCE@ z2fC~EeHea8{P$dzlz80ml^X7WD zz7jE*q#HXa*ci>Yg=vFiLM#)5CNEN^`4S%F_R-p3mvo3W(>aK244oB7d>u5_j+;Z? z$4GDrl0%U`;rJCA*K9OPhu**}Mzx%o&BqYRYS+--nd>YSJogTrL_3rncpAFSjpfpF zbcyR``<;mDFDv7BJ9ozD?2at}&lJGFj(IWJAJo+a8&lN@(kq z|9sQke}p+y`ZR?9g9<#FKikvpI<-;BsdkIVwWOib*@2ELVKH&nG1?Z3wdogzf!Jlb8;)n) zIB4RA2-~1uI^npg8)eueWQ8;}Hy&S?upRKdr7>Fu;L=S(ofhBt+XTU%sU223N~feY z{&2ONS{dg>%Ea_O&T!UgvPSqQVUlDTsIpeUY3*q;)nK=8Mn%xlEb;$-5Z`kV8MDiq z$}2ZU>sWZ6y~A!_?dvWEE~2-bw}5H7FC`y^l`+ZUR2Y znf|UWs4fGoNlhs4BILaZ9|YT1v9Z3Frs93)gL{pzD&P3363GXYxp=w^Bmu*EJy5EQ zxk2tL+~4?b=c}8TItqU1%=_i8xsIyTTvF7^$FT z-IfKu%;dvqUF00bY#49uqYzLfloF=y-`&Z**Ap~Yu1%P_-~EIUR={ghv!0<KzwZkbD2*2ZOgysTnS7HV0giTFroay4k9(pz-_kv zeul=E9}IY-@GRz4ZzXenX`%dMl3TzJ-$_Djao)={ZEctJjoL8~aPeGb(4oRuHY};f z?2{%jg)#0LQI(*S*{!l0=EZwU5_M?Sd^6y&Sd|qXQ3ysd2GwGE!I1`6pVk_sy5a1| ztKv6VUNvtHnxFw@pR=uxXT)M5_);>j6`~kkP44kX2w;E@c~%GfQJG(6WTcF@H+1rn z@(p1hP`P4=cI}-IwC8GHJ#6LUEo_Y230cKRz}sC9D;dW?9YSt54Bu|wxqPSoQ91vy zJ#bF~@4c;_Uv*A=fTcSwWoyEeOa$Uk1(mhxPueFvjU zkp7_CK4dV|t*G7iN@q1f^ZHnS>^j z+k{>|B-I0UAwS%WI@m%$iu3 zW}R7V%g6Xty2G4=Z|;r3C@^`1F=l4-H(D(P<#eAu-8h&<(zwQbQzEECFI;s0yA>d< zI1cpR2<~8JoU1bEs)vjnITr&*@ zzOp7aM~pU1_C9Ki(($s5iY@Yc{ovk&nu9uhDK--VWlOCn)bGU69il+zd>-p|FT4-K zcw26fO;85;)UDy!b0oVso6!4r?gPpG|3v4pQ zI}sl<3Z}g)vt8}c)Ta0MLmkG9S1^^!0lvlT4scgHm=>ZTU4}f7P<$AV`_*V#erJV| zafjAZU?Vk?JG+UE=^(%@V{r0iMN6diK`@`%ph%C}?_>{+f(2MY4v$PqEPiK@inOHu za`?20N4;yLH6!x#=)|w-oa^`%uzc$xGO)inFjcH#s%N;auoUz!uo@MFggX2uUwHfn z+%OIrcQT^NFYB5S0vCfy$n@>lDLQ8>5GjJiOY27&AGl4p?r(=-Jalms{=a(xt2y6_ z$=jBB5nWBf#=qA|n{W;Bp&i;-C9C1^x#ssE9CD^z2@f0Z35M>gQw09cCxmzO_QE8D z`g$yLrG905sisRO1zl^@FIs`Vp_95WTJxTYwUJ!=axAZfC63LJY%Q7l&nY&RDSToR z!-|fql;%h!ziJP(BD$MKPiPD4FoJ69;f`zxPy^ggI^Ed`C#ho}xfm7U=>-|6VF|NYn4~hQR2B^`fJc|5n;eG@uxu{irS$5CH}dw$Qt$EAru?>3iFE=KO%BAW~x8_b)DV7@6IsW^!%*BPN-&#35zB1<(l%~#LB=tguDH!pe7stthfdR}OG|E+(O!Rd zt@yo8FMKlq8w1sz^;7RixG`pCORMv47#OrmnxxkR9q7wN2X24% zrmGG~hQvOT?6JSq2-p&Z`dO0#mhnvqva(wK8lt;)TwlNo$KXJr=W}M2?|Jq+e&P&M zuTCr)usYa9_nC53U(43H_`6I|@Di7=HD>fB1p{~Ii@Nlq7_Q65?dGn%QdY1JJ?dfN z*}*8$a#nknQ!>Y66V*p=goZSAUOV1$T0z)k>OWU6>vIoHc8L**D8XTl=xOv!) zDino|o;*X`G1i|yuNTJ$cA?oREg<=s|2Fb~s^4illcfLWMH;LQ^fb0lo08}Bg=lAJ zG*+l1p$S1mXokjndG(j}e&iY*Hb|3Gbg6Wca%DNKZ=g^J0208Or2?%%AU8xyW|hd$ zYD0A}ufnV_A8Io0gvoD@M3FQLzwTLUmr()&1Ce@w!f}J4U3XNhmMW0Nm9PbwRIi6l z%oI1zRHd#_fC_Qlx6h`gP!Mw)sE2-o*>ie#-UKGdS;V_$c4aC3D(>t-#Y@HuJMm-t z?G5(E4h3Tjso>n6&wRY8P>G7V3BMrbrMMIJWnQDo!HNR!Ck^MWHM`m<7w8%fZco`C zcv-&*He&|gOEhgY33YH=Ea%$0vm{Sm@sfI`$&RjX*ID&>`MVnw`P~EO@)N&Z(Tz8b zx~AZiw!37mE9)}gW?~OnwZ2-CHNhtW!!VqM7tCkV*CPfAwQ6n7ZZ_2xM;!o5$mslZ zT8kah%Bf}@mJ7fSPaN)oE`1pp9G93+Z`T}paB7F`r?+9qVJ_Dx`C95nLN04F`@P65 zS)+cr*CcbFQ#Sm6EL*^U4d$XYo43C?PmYOYg=YD<9cmG*1ZtzDkSGB2h>8 z^w;dp<_?$;a%i5NuJwmAP7$>3&#(6; z)1(q&lI}YE(&c86u>9+={dzTtqA!q#(+WDNo;;F@a7;23f@Tw~_ zZrEr_NbCK+hqfQE`RuRA+qCvSXa`62-tVl~LPo!~h>&^~n)qL-9lr~~ADEQ`(Nd24 z*S^S|+UO&lmt(uvxo@9PY-ca;bJR#N&JA?CDkS~ZbY0$ndNkAm=VVnuv-*5yO!{o9 zUMnf+6?>qb7`L|8B_3bE>$g2FAZ0EW`6K7ydRhM1iLOlF^Ic6xS&(q8iw0Bf!fViTu1NgKdeNcJh>nyTrAh}n#(a79T#E*OC}PF}iSggokW#bW zi^2ps2C#av2>#tKy<3kv(!bA0aLo>u=xX#!>M6=RcCwqBfS>|xIUoZ92aN2k}4MLY>zAG!T=`p-)Zz6B@2rJ4h|Q{mbdML z$uXN%xJ3kNH|Bl6<<(tn#Nnn>TcVCJ+U|5_4E(dQ!2qD;;;Gzw@JnG@{3QwM zIo|Le?+NiX3{F!B4K#XDm6W%2*XEBN`*<_cz=#IFW_9^FudcJ=lr_Dcahfskq8Q3P zQz=~AZsSK4EF=l#6k?M{*?n3g#UN=T=;ZatD=Kiir&as}sT05ZEnw8ENOI;Py{m6B zvWLG3tQGuxqY1CO&w`_@j?UN+Ua4G?qdD270cTq`fBaVlPm&kz&-xbZSG38mv|+QJV6fqPotu`I!$Ecl4lTR3d*WK~3D(H& zqU@gcnTf#qv|Snz;AM7_phQ_ug8831&VX6#flu(04Ox+AKMxP%vt!VYTzrf4hf+7L z4H4qyIx2r*0)~pv<3*TOv3C+>pX6N-4tSd_!0(>LTpvNBx7!KI4vrCRT9^1XjsH{Y z`x-=3j(uI~;N$Y3&lB5Wg66He;l|gz|G~p2bml5p&oZpEhhzXi4XD}wczF}B%x<}L zPxf+8v6b`F(S}3Wd7({^hnxj&kTbnb!{Y*69YN>|5u7@I`Z{*@x@4W^`o!V>>B~G; z-)15yFsv#>+}|LL|C^gR5`-yrcF(6u+}DK>b>Swg16WYxX?28(<6pr~3Q8GfKXiRc z`0tPkEsR4uC`O^?4b!`5^#KeecNthIF3$7!)?MFP(?x-2D{o5l-X5kleAQkKB*&zB8I`i8H!QK&l*HQCd`NrDiio$1Rpj1wB8`4^k5 zW<_x-(3b+zCor3H{}%ZRH{r8kpyIfB3w*71lp2c0v&bw%HzcPUWi{Ii09f8FhJ)2_ zrK@r?Ros`AMFbSnhk?!Mm7$LunXeehi;%`c=2bLfitYC8vLrq{HBgTRR$~hX_+vO6VE|M@uq=a#6mL7R`f?8$C@&2`d=k^b;&RSMr z%EguO+H%dkx2VEqBhH;68l)R%tYJeH+beA_lLrhRx_AR4rcR+9vfDCmbubTnl3^SW`-R^ z8ydV@rIdF?sURv~Aqx!sKt1DueL_NpMc(;ib&4MAfdzK*I>~l2{wEgh{B=`xRDc9l zC*M8l!dXs-JZY)d_hT;C-CG-q>(ec(RtwU#H#$L~iMR^c z<>w4vg@WkJkwdPJRP~xQdAJIb^o#02m<;+VX-Gi47hi_v)PDeUkGwDWHoc9x|u(MU?(9v($QTRtYGn3uS$n8 z18Ze$d!S#zQEB}ESv?r?SyY_HYPdq1XgKZwHr5z7Gz3?*9x4onX+9{&M@I|06)W=3 z1yR*mzAqi1Zw}NcZ4I174t^Ed@~rE*>jO&GauH~xR_2xJ$8N5KD$05RbtiM!E=2G% zv+unQ)hCTT_O|(rSK_{{>ubtJMe^ov(ZnE#D_|Bvt<8z#ubYFV8(R3~XNwqd$!$Rv z9#29WMx_o+#Q>#tBFdGG15|F>lBh^SvY<-b-B8#36HpMC)n|QxrF-|vFRf~3=o}1@-d}HsBBhz!V{n5V zhD8!38+|Wo#&nY!hBUX$i!mzg5=#=*BSOB5O{+=tokGtjjnZNIVw+x00I zYM*yJU8a+!1+v%1Lbe8HZ=3R1=(310f0VYD*i!?;7yq7?#X065gJa#tBguUTQW9p5 z&m}Ho8^~KfUtJ3bAW|Ng7t-OF2EHsMb*C#qG}&vutn&F-6rpEv=!9I@Svs(uwQbsG}VjE=I#lp_=MaVKOTV_w;~gAp^+0QPhsqI8DBIz%$j8kUH(3Y3sFucu@gy{0tvun ziv1*qT;(=8Wo&{oNh-A_ogzuf-)rB%ZdMpLg?cMAwt=+LxJf`4trTp&yw8o8$e_BA3Gwg6 z0=uNxdPb9s#rh=P8Bxy~XLl&)WBf|Ftx&X06u0Zlt}nIy{B<&Zy!Te?OUrPV@eh|MgtKpzt!iPA1OLp(XNt*f z6s1LmXwS>XWVuj_}vb% zVBmxwKRpSfE*s}WZ+0x3RQ+o)1bG39Mj5GLuEPXa(TI|4B>ia$!JD(hveSeSm}MiA z$!y0Vq=b==yg^x__ifvHV6xyd29?Fe(@+Spe%qpGIqM8{WM1zp^>Yd-*I_@=kzc9c z(KBtcUX4<_y!F~#qysv6j|E$59GN7mm}?lYdV7AC16xa)C7r%PXGRT-(mfJ(2)0#0 zKbPc$Y_0h#0fS;ovvM9E(EaxS#0F3$B-{d`<(4N_0Z0US%QxDDW-Hv?yEGg}NW*+x zCv^KLJ;}K~4y9zt&AD|;4;LjeoB9#yh}AMU#d8A=Kv{KrlXGeC&e-X2!+zixU4?TY z$tiyIIfOU-3JP|gh;+Uti~Rf!@ZkNwLGuadfc&1B6_G)`Pk9q6sB4H}x+k2TWc60B zN~Ik&5N9K5bBqM}gulJpzf+GJ?s4tTf5M;;%lyQ6g#PaB9HIU2PF?xEs4pE>Cf1p) z-BPtZ4eSY6J2d-IkhYjrRBQ2WjN_Tad3_oK9S&4UL5NiQS*i=8bQZ160KXz9Z(*-| zcOo%^LO;FLH7ocrXQ`mM8>s#ey_`4H7m1KLt!{p>7)<+j#3Zq^m!vqw(gLP$c2m%_ z?ZRo<;cd-{O;ZflL?M{kdiUGAr0%a@bY`0m8Zj8_^4p54%gTYX#wdg~Z(j0bv%E(s z7h9#G78+%s&T&O5c1Cp)ik!67jL9tuW%V0`dA0zC`wmod)jKrxecsLSs6sQqrtv(u zq&=sMLkE)KQel)PXj#)MN16nj@E^o>MDan1CEv!p6uve6B3HXuq~Ad8a~IC8$*mG< zOLj-~boAi$Vl_0Qay$M}{8=OG`mO~cJT>NqkPTv-rWjphbr$mI7H4sK5{$>;^r#p| zRY!lcqLXw_b8CWi_ByZ9xu2s6sNDKsYb2Zk*%wD#yA+zaX~B?v2(V-{izfGmd@Xi zLQ6i2lnajnR4azNR1Dy&W(T0H9nvwlMu~Le}{}l8X-D_Loo=vCe1700QvP;$PfdRkp~T%%%om#s4ksHJDm|m*N== zPPfoIMXkn1c7xdZt`TKLILu8B5UiC_KkoHFx=sZk`#4IHSkI+_uPW`flvTC!HD5y8 z^zxXB7r&Zk?`F+2MMZ*YM+=hJxDj_iC3}x=D)5N&#Ed?aGAENVX?L;!zHRIvh68Nv zV`+XD0JB&8rNiEl#&XknT<>O?Ak13dy2_&l(t=^k7p0gYbJW@1D4Hh{ZD_qVx74w^ ztY!UpkPD_=*g9dO&GWNb$Fpn-ulUf8?CP!$ndhU05f>2CpKh_&-G$n{r%0~ppucvQ zh)U?Yj2)rOSe)PFJ1Bs+43v9oZgjx7bjjx7HD30^C+yNF76!-2hdtY8Aqki`T@wN% zZAWvZypaf^I7cw2?xY|?QSm98bD4&K`ztcB1=drTj0N4eV6vpRY?Kwtftg-VHeHF1 zNLdlCmLL=}m50UuZtOvRLO8~oVO;*XM(i5uI$-*Abr1aM_f@pK6xnO~u#hWmAhmZi zV>snhLA=QWtUmPBTO2G?_N(a-mw%Q_Q-*qa^+w_PMB~&~(JohR7|qpV*RqRUvriiG zVf2DLDb5=Q2iDhPCoMnKyD=}rG+{R(0=x+>H|5W8n=eF2S`AvsQaK}May`cnX(t-+ z+Ppnm8(!gY>c2yA-}LSm;jhW~oX4F@2Zx6tP(Qt-Ur+64$lr-P>wWLIBSnAOWbWz0 zsY5t&uz&l^-9x{=wLz9Lk0b?y zA=2l`q59a8t@tKRHX9HL90kZ1opxQv)%&3@y@bfxdd{4MmVU|7oq8A70)8Mr;${XM zFFo(nJ;%;-^W6_0h#;+*o46Bbb-H+qX!>|604O&7;5^-R*lTw%tt*an;;$yX(tl5; z(J_6`aMB@A(>G0IrJB5~likpxJNiDqQJ19jg#ji~(L$lZ*w{-D6b^=>ZJs>TbXs1% z+lC@tTZ(@I`9Xvg*Rhjght|CGD!A>fy5<_!prKJ9LXAg|d%TI4LR)F914NYp^JQc1 z3+L*-yiB7O`6CnqR)l>0RpxMBLZ*<1+PZwP{;JOhV^kI!%dAL9%rO)l{^SIK%;wqE z@e;U2bMi!P23Wbbq#-sYhZt@NQG}?(3#H2?@-$5nfRjg`nOj|OInO@5I^jfh-jw3a z1_MzGb~pXv0+SSj!V!cBpv()x$SS494r{!%T8{82JzhvSOjYn&s!_cALkW z?(&#rVjHL`j27h_ZByvFAucN5$9n7f!pZkVU2fD$M;?lc{9>YHA$oYTyl=5B2G{9m z(Efn@D)UT5!FO1r92upN4)^?7EO>utqsoU5PBhxFqq%#&w%JB%9KHL}PsRPBz*CqE z_uK647Bou!#;RB`h&LhWm;>~#ZJNzDgGDBizk=7;s}Aj&y7+N+kmr%T?_pkAK2TQ7 z*?lep5di*0=lgu@fDDc`DT4BS;c9K(KV%9?0=M|(tl1ZMJeO_6&YIC6L@&Am6ty7=)@g~TKtGm9uL!Vq456m zO-424>O1+RP_>XnvM&Wt@3Mv=!}(ixJVvN?OYt@9W;S(iAo#)YTE+cAZoHM!oJ7ae z_jM?H&h<79HS4@(Z0Ur5NIJTp3ZW!#g3+^~eQJ%Ys7n~VgzHC45VHH)TcV&5rO~>y z?{)i|jV!fF(d%f<$!c(S>9N5^GvnnD=PGsQO3d}L)5}zTnR%;(MVML|3mlG=0+V&j ztu2bSDZg;41n6BGCJ_(HmZpR!8;!Mc1Qe1yVnaxwJC;Bc>clG2s!3XI!|%7F3H1!3 z#S|RTn~#=*_+h_dpt+*Z1lK^C00WZ~i;F`OPDgv)&`HLgu?{6sTYy-cC;DV3N$R_= z6Bo%R{qYoe0A?GlfM>;<>EK=3;iAvh#q~Zb)By+Al;bjN$@9QR9@u~kmMlCecVyr9 zk}jqfi?bVTs2>)L{x;+G(5}Fg6UBA4@{F@k8*CoxoJ+}Ka|FuNE>-_azmJ-m!&(UG z9(4x%%rL?27KWB59EXFJR^EFQvfuU;hwRJ9&TE@(>zNmeh3JXPzYx>JS$WM0CRt%D zVDhLqDk`_1@?(R@ziBtMFfY&FJjgrdr>ExOgKoi9~os}j-<3T;XVfEpP>jjxpBhmWG1E!!!ofd!5cRAnu;R*LC=qfh`VL$T%uU$v(UeDS z^}hn2YK3q7aYpp~TT7M~-SPif3M|J$!mCfRJ6lv?dsPf*Kmna;2=dc%)S+N!^B3Qe z3wmd-Ue5Czc)*h+R4Ct}B|+^${TOk*E~WOu&T_vZT9SKU8?7t|982G~#U$AxBw#8x zZglbT`;$Dp$Dsx7nxaon1FC6L#`FMFSSRE9 zYT$oSg>Rb?HX5(-D3&!A>hown=|rkaTqLeyqYt!QQXG-J`?+lJZW>m#; zP2ZNDB0{G@cfA#yI7{ZO$C!lS;Ltrw!4Zf zRoj_0cb17ROBEeRmC37xu}M1@L>}X;XD@2~nUjj|KqAcjfh^%GA+x$>AOV^^gegLq zclDA$5Xu*%!QewAD2fcH`Q$~Mq`rHpb=99%U{!<;{GIHoO~FwVXpSLQWmlZoeVg^- z2Z@>9(oD%L^g8C_s+Y@@*SN_?O%5v*z@d}t?F8Apt8sn8Xp&7q)` zJ=!YoOLaXQ1Fg1=J$mliNRVRj$^|BsMTgfqb>&=wn2sSl)1}K!WptH*6C5TH^Y50 zBW^v;ot7_gf1x2DRBPYYu6MtMh-aA0h3iN!5_hRaxUQc`FrQtsF!kgvzwe-4k&%RO zILi@rtf?D*%Os58T9+eF?tG@yqN+v8KeHJV1s@0bgx_}7#b}po!neG-bo$v$8SA^w+xmxAJMbGfcu?cj(NU0bx@+Gd{y0D|50d7WLC_kvEmx({V?2?P&0yK9G z1*loqT-rRz&Lvd-%7k_jo;^2J(KO$8i8fZf=K(;I0o<<0ld3R95dKK?n;qhjSn$4i zsM*=GO8A^Kjwgyk>?yv);6O<(0q%jcJ!JVLslpQ~ASRc>J7}o+BuoBHLkSL21-0i# z!(`!4J<5wRV9d=U^hT4GYO!1mRs>pI#P;eB3oVQT2&G7yDN&GjzoJr{fY-8ao0ol|NsbF{)$hkyL)RrKlkODQ z+pl`w?@_Mmy$D1@Aa6qEncX(J_rwJ(!jk_Ay#1VP9`9#@A3;`ix%1c$=F|YV8tr?r z4*CiHG8qk!CQVFdA|Zr#%2r@%H7jp*3}U02)jd z)4DqUUR&sNGpSR)ykm@&V#P7cGj*Bh@*vBiNU`o*fEm&*+(&<5c5y}BF3w#x^Xae5 z^>y|3b(;G0G`T6Y>=k+~@RoZqST<7=o!XZwpxdQmj^G@zN`&aSh8pP1meWnyRqtS~ zB4DgDfKKS+yugrKp~xyFV+PGphc;#w_4Vy_`UF7PimACv&JpScw@Yt#n$oJVgN?YI z>4(D@`#j}|+z!(9Hv#*pvtP5;PNb>m?@R^c+$GCx-Lk49JlPA+{=wgi8)Vr>8Ftr* zvJksH>LD9PJ3178na4}PZNUfcVc#Iw;r=TbAYC`^&_MO*f`3hpnbFFBkb+Q8=pr+t z2+B^a@z*Dc_G;&C}&jAa@!o&&5bvL-E`xj%1w@PRyhd6oeW7f`N&H z6?S9Jz~8pc?fDo^d$AQ+Z%ycNv|m$wiZ-pLOp$3SmHur9A*a-r550(rM8+N}h509A zep+<&z8R;>tp}#C!kF-M3eUZu=ou!zPcFSc5La4B#LOkx$4*guLCX9-@z6;mV>^wY zBaRBzKP@+y11kP<=U9>QC)F;4kj? z+`2pzr9maTQfz$)etGmEdft$3oC^i+SBMBdnc~DWB3mjM?a0GXWMb zvcMZcH1fL(>y@UfqxEjnhR8`@N{O9V4n2q`)sPdYmizb-PNWnP=G<^GBM?*!Wupj1M?iM5~3nvaw zUS=T&?wqMc4Z1H@Mp#7vHhY%aX@uUa#alON|4I2sys>9>+Thm7;s@})`SyHB^}Q-8 zAp3Cssq*hRqB1|XQme6i$lxX)>V<)cmB6h+?2`4LQJr#vGL<%$agjjNVN-V>gdL|t z(w&|pi3U8^S4wXhbhiS>np97lHJrF4XsTn^b;6ye>Ih8+y?2T1Jei z@vt-XXZiIO6_%=oW9>It8a?YL$FARb{Yq9M( zsqSX4@PXd|#-hMW*tJCsB~btVK};D+;#|1#;{H+;_ODp_xd#xmv!aF-91n-lDq8FLH1G|-j!e|%`>Q}OboYIV z1Hb8TiUWq`1subVHcT7X1UFl6eDByCb~ zVMojrH;gY=2{1HcXz?*QP_E9(F?gylmQzJUT75jnwXr*{&nbssg5;bQUZf`AYvX-0 znkHL%HV`T#pF}s+oY?V=Jd>;MZIWEA&HJ}UY-yG8@!r)g3vaCP#ghxL5HxZn-e_1* zqlzo8%S!9f*EOSNv zE>k%dQgA-UvA70@K1jG(J!_Um^U9GHE zgljlsN}sXOPk`7kzjcuAxvs5iN!hkAl~%^Q&Z1xlH$UCqkEDadJ&O{Yncvw4@M*=1 zkp~?L{Ayf555ec<$tGZtPMX0KeLys*w2U_0PWqBBzjAPWiK2b*WylK=h$nDY%`J@v z=tJjeTF~$!Gtb59A%Dac7PB5P0rj~km^7rnxIQWuyZef$CyB&1<2yr^jm z_UapVh$90InYup>_>K@j*d$(sFLOCgL1qp~6PiD5HWy@M6@;@>qo%4G={;Dl5^0!0l+$!+|t@yWToTYD37#kG@Au|J?I zZ{ERnu#AIV4qv%*$*#}flxCe&X=VBoI+qtxY_sAk9yjGLK_jXDgC&4u*Mdgtnd;2v zvuneL8E#&{-Y#}7uca@;s-kNVu%NR4q z+9i>EthhtWiz?glOT1d9*%vhp$bN(k$gjJlq-?8wj>PD{c0>WtPT^p};#ySd7#r1u zz-@ZUbp3gh<}?cp+8B&E`yotbNgeO;KVO7|dS0c{?DTEK={PPJEx(AaC2BY3I#U`9 zDoS|kpmnrKo0$6wj}KdaQj1!dQ7_PEAWZ^=Cw^Mo5EX++li!r23oqj6Vq0h(YVg}o zr>t=UKn@^FF1-iR2T{QUQK@qJ(5(76#_g@;4pTHMOC8t8q2nYxWef2GGNmqklhbEg zS0XDLFTZ5agq-R=W1|c>%tyBfn{&z{;deczv7>Z!G)=v?Q6kY~QO+L>*Yx0Rp)lVj zt}d&q=&qb+>pW@TJAZYL*k;kOBD|&v#x(rzi9{r^7PY2n(ya%btdD^4PMk%Pr*2uM z(T;kvS5fk&2WQG*<`MXVGYu12003yC-|e6zw_wOtHmb=mvZXD=#$QD)MFY>NEtHE0 zl=uY-owv(4iy}&;Cqwl-3=yllG)siCBQSVZLcA`fIMiXSY>`4-Qac2R(^Gh7NI`fo zat+d8ffXua+?1A73hV&`zND5+l7jAHnEOp469F+W*x5uCH9!8M5a1 z;2ZAri1Kr~9Wp!{-mWcn10ualt17IhzX0G*+ae@U0Ap2+LQBhs6qB~>((#O^e&AUm z+ZxeI@&Q4pQI7qI%1VnP9l;i1Y08l&!ji>RyJ4F|pulLVKqC#n zb%<}ZnA#CJ1a$2T6-M{jiubIZ9fiu@;H2>H`7_(8C(hREE4*x5?cw zl>>Eip1Q#qZlmDv%D>gzW&CeDOgukLZosc%5;Rl~i8uF#ZBrMqNKl*cI(^Fnjf_(B zVxkKLSwfUB&)!xSxP|oMQV5ZXl=Gr80)id-9pV;3?LXea^pH`fd{Ogp?Pdk1FRq`s523h{WeC*ogbG#=5Cf6c+Z$B>n>oAuD& zIu9G}T8pW$Kl@F7_wp`MCLf z{JIc%96|gsId(A8YRyp*DTWC#^c6EJ6PG$)Rx4liM%?3oRya;xB?KpX!;l@i1Iuzkl;xc+c?iSaNb0{?nQ#30`TmQN7Du=GfOx2g|6xK5U~1qYprn3qW zHSB%emepT>Ac@#mW@H2MXes%6R!*yW73Ob11cDnO+7IE_+zUm z-aP)N7xXvQ=)B4Tc7QYdd&ZbbgxO85^iHeYoKZXrtA;;7kv$yU-c4u_tJnSCF!BQD zE-f_(){px6C?uZ3TP+nZF9&7Vc0dE%*hXz!Ck)-Bfau9jt+Eu38HSB0b!Z*V+QL{A zw*_xWvd@bzQw=XuMmXe77}O@2c0|EsUxIFPs6y-%AfyK*7+$XxQs7##W=rah*@Hj5 zt7P(^v`=NIQ$&<#!P1%c-1c8jL~v3NapfejQcR+n?5+4VTm=*>d44OnR+x}if&x?H zfb1%Z6Qof$W*{is^_dGP#kCrNRsjD$0Kh6B3&9UHZDv+tDZZ{t$BBVZq?YzBrQktf zh6L)W!6vey5Zs1F8>l^G<>7Nbkzr z=sbRi5)JrfS3bGxN9O$3n9&|!nfko#*M@b>oK>Bb;#hP))uLLru&yj8P3gCKF7RdF zp%y~&x&{FYGFuFXgpBAs7$88vyVMMK((Qk@zi)+%hd&Ap4xi0CNFkZ1MPWe&-QNXc zOeSTE``58(#T4&kk##S1s}E*1CX z`N~atAN9iPz%JqlNLJ6S(Y8}M1ZRsuWtBiNt%i{?_pM(>pB>bIWt^4{A1)GZp!O0v zz(w!jvK2a1Y`nLbvo2Q+qE-naxktA0;pO%#xCVjSwVdca_?wa{~>9cupNI2jx_pA}R4zUZNd=(}3ej=bp?51L#2x0PPRU|AcG}|>?vUw|1waC>R$myf0cU0ocpQVeu+u@e0fs$5ZY7LH z#hL%yMI?t!2tO4uZ1yz2R^-YL1SxlTCaH=e(%1I0L zNa6sGSvJEAP?oCdK1sje*ChWH&7(Ui+maC-hp$>BHoV*%m+CCzsz9H)6?5@TS0aYE z-XR~HL~80&NYV=M?^c@Oj@gjP6?2q9D+699os`Hp>W0 z6oIu0bJE5+Gv2fi(x?f_R%;lDfnuUE>g$82GYTO?Dp=F{rYH59 zmpQZW^Ivhl78f_TYE}W}Hix?=O545dMiJ;Q-u403T*YIrf4}i*rbs}*ereHa?44AZ zIiyvgdEKH!bQhc`iO|uAzs53PH?kZp{7nS!_69fO8kAfj!K-|gsqs&{%oHX0mL~x8 z-kZa(mo4kdhrEX`h65Pa zxKA*ee9$DQC-Ud08|5sQzy|<@{ij8;aWnYH8^QP9F5SsLJnN^YFpez!m}}Fz4+jxk zc~%L@(oRP3X4Y~%0;q-a?c`rAOUYdGU$f?*eK%yG1*>6m=pq)vz1{mAlbu4Uz;5hq zOLCwg4=_n{yt$!m>4+}XTA3h(-%y zY*S{|6>^YQWNZEa{y~fKEch1z)dY2?Uy78|XS3|16exyxBz2P`%Wz%rUVW`q$57f( zRf!+El!vLA_-+QnfH7u!9EikExO!JTgK1f-Uq=f&3BhMyaYcGLqY>x2kvrZ!?Nv~Mc%i>phMC$7&mP`2tKwAvdg|9dZCQuX>Nq$&DtfIZL zWmjS`W0t*E{FR@*6pr7#Vd~p9oj11p-Lg6E8#>^`)QfJ^QP%3brmb+m?dH2p*^k!p zpOXL>+uPVFEbJj-Bw1}}q7VuRZ;p&qpKzOB?YMWEfV0cQ| zOPST4IMfk6$4m`aD29o!F!PFzC$V!P4x&$`CJW{y2JBKutUOx0y$I56j>MnecT-k% zh2L~c{@=g>tA^`h7YSOCv|;_9**KvwickP_GeW*?b)i>=8^-Cx4#=M=#fg`js1JAk z*pq^t`>kTmt~RSL7hL$+bu=qICqLFTaAhbHWu$&*MhsIzTAwrN>8K!_aJXg=%{3;# z+fpP@rIi5TsPpo$A+U||$^4@Np(3Qrj5*XxL=G29NKURS`FI76lG{K}S)`y6_9e1Mf|9-aR0~e^s0jN<_99hH%wU;kJeB2$mP6OK#DvzWEo278ti8&%VLl|!M+SrPzG4rP2 z27r6FM4mk9ZcT{Ytjg`m0K&6+1CofBjr3NdvHGI~Y&XtF#YA|vC2u^&2;Z_%F zLR<)f>x*urSjaTt?pqj0^0bqVB)USM)EZH5o;6MITUW`iwWJp{GjIpeW#Qi+=Y?zT zxK@%CqHAzA)BuVRL~}A}>w(6Cmh`|w=(uYuc=E+KK0OKnbpnI@1KFP9uzn)3<~Dw1 zPIq>4A^j{;SAHzw;R-8+&Fe~!e|?^hGiBh?XS)yk(0{XQoQ!qft&2`e8Prw)il=`U z-ICsY)X!5DjxI}X=&o86-aUHLIbd%j-q1NoFxto zgd58rSXYMX72?x33xIZro}{**LI=`IcNSc8zJ$k$;;k%wmI(88l_) z_2f~uwAe?F-Q%o&-$u@-=NPGVjWeoMXtefc>scev&mz9;j2L;lL2J-;0vk!Mc)o*OY;9Lau~O@ir@%St=Kbo+9w`%#zS4E6NZM%B%_3ac3y_MUGrQqu zI3@*eoeOn+N4x#S1~G(;F=%1ZP%zw0ZwFYH#2HfpX2}-+&DHush(f4XY}$T@tYLHh zCV|A;MU~>osif$L@mJd5xe<+7Wl+={T)_`y zmPes_Lhs--ud)-RE6fzZJ&^=9tPOldKO?W$&Td>Xuh&ja`RMLEO)-KufmeA3RA9Eh6PJhPRX zIZvuF!^YNi0ljB*S|TwhKRaZ4tddYIeMz-{3xFi%?`qfJtSYl3f<_?Vl@txWb$S(g z|2)wLmD);>5QspAU#B;*Z5gf@4bs(>X?$Dmc3B9-c}92lqpv_+l!!eSEHNuyjZj`u z_}=~Wiw0Ae2DAHNGQz`7(0V`Q(6uJeyvyP!8}r^x2-3{`8&Doxf#7JmDOQX9G1< zz-#ZZd{>aK*j{BH%y8)%?)9;zMG~Y<{};+{>N|H(=CKYS6k9jd#s%PaXzpDUS3sJ4 zP_&f2^4Kb;CtuzUG&5JC4#P9$h34gq(dP%1*1*MVY>Uqq0de{@>5A^({5F)C%T4Yi z)-hmp0~bO0YPHN%tbJ6@c_y(OL=Cd{sEy8YY8{RAl@3|0d2OzQzNtf+TVkSNDn(h2Ft+%Z=I$)frIE7W9}oU&~%D?NESV% zhqhlE}N93cU;z|5|_E7w+T|J*yDj-D8 zDsoQLPPh0QWwC1v_5QI!uP<;PS}F5Shf#-3nsY9f2psAG3PovQ#COt#c1V)S#uK{A zE<8d~t}{mwn+kIyY&M9ohl9>{oLcoyEewfz2b|9Tm5kV>t`*bOX^V>TXUXFAD4JNAPVR8D_&U*Q%|E!6Rd8UszDiB zIVUwoY2RmOMW}(9Fxf1+-`g?*-CraQnXuPtI0xP#1I&rTL(OY=WHpxe+BZ8C8X3AS zsn0{dvR?12itIvS`hLU%+|h8s7_;gBZh5i6ljH1f=zYo~lv($bm~j4pDA%r%>J2x06> zIi~RP$6MS(Gc|X;G@K(XIt=3KBlngff~<@_oJVCwfF}YaSzn%uZRR6 z7zkz2zm;TJBo43V-$at z?=-KXbs6A6tHHo6m;MBS*kvb$u`sRnA6!3XzyvNNO73QPK1Ir`!Pq_z#4wlwpQoIu4a7~VJ?=>k9}<3IP#-*K zG@gQ~l*MMioNV=j-l@#^LT~`=d70AETZLJfr;~&9@{SM`k{UUPWlllN{m;dCjdCIV5kwld}`3`rQ^Hw%C7vioUfTj(C_$UY(757E= z5zwD*0cz{$UuN7ib@idP+edXv{3lzvgRnR1>OUy47!P5`0HZ31)yte=DAAK!3Y&5i zkKc5S>6@dPLm5{W!Y5J%dfKI&7J?3$mamx?*FdgABJ=P!Ho`p|=`v_*gG4qlu`XaD zopMnmU!en58~L>LinidmXmjL^lkDvmdq3-kmrayIaP_Q#aKTHd8a+kKq7J=OyN5l!Fq^jSxoieCq2d=RQ{@-F z6^BMjKN>^or`?K0)VOl5Fs-)Bwb{phjxnt;@d!W71V8Fo{mX z4ZQ7*?;@bLRQxD(*aIMt&8sS%##lLA#LF!}5AlDfwDi4iA=2wbe1*?H*eD;81-Hh(Vufg^vTXKe6BjHVxRM0}kkP8YU^66r><=G+D+l}apF4U85Ik6? zqxzffF%dSDuj=IL@ZX!^FC8}iof20Ls`sBYtIjN# zt-IOdeGD<0zp|L#rX%v>Mqvm87OuE)8(qUMTL&7F5EBls(&z~hD~!*Tz-&uNX%8+X z;^4>YtzCt`xqf-Gt=Q)g4CzW@h@0Qn;$UTf?5UODtydG9V@-PkP9Ara55G1$c)BQ(B zAA3;@`<9@pw0kt~cFyX??Igb^Qr9{<-vF7JtgfzK546`8~rU?8LhXt%QI8xU%R7kJ|C&A$&$`kal~FB4GIx^dRVwo zxYqi@FTR;)I6;tMbkXs2V6`AWTbEC6b}pHq7yR_MQ`Q+;$+A04xCW(Zm1lFE3XdW9 z1?abHQF5kU1&UaewiEMP?sDF^%o5LuCjPV~q84WKu-q*s4GreQ7q!Pp$FayX4kQJS zJ33lvF*`G)N{qg}(zpG8Kbzrxs61!}<<(wtxQ=)~IQ%BtoVLwY!dS=OU=ebSwvl+t zZ3eRgS!>~qw74neT&wl?I#s>^{*9X9Ra~;0;1PUK;0lcnD983pyL*o&Q1O!JnCBfB z#EhNi^~julhlPC`?3&C~1?-Mz4v(O!dRZXNx}1!fK_j&$k9fNyvF7^UL3C<|QHS;H zT>(tm1y`)=#nb%fu<`bN;7jEu)wD%4#(z9ZhEU&6#)%5`+mA-+IAECF?fU#ckwyqZ*K@CLyiBg#PwASwo&J2>dFt&R|uJ6MH#Od(>= z@$Vrr=weBPXU{B!s+O9DS*}D)6H1qimJ-DqNG>`(LrO$AM(LmNJ>k{TB%Czt#f9Yo zam1uDcRuh2+EcQa4X@2#j3;A|@owb8RrhZKbAef58#ij$kH+eVKWd=;zQdp*y3QeY z*_?PxYc=O!o9M%D1(GWucz|lGxM>vt_AlY-Jy>6q!}Q3~!>TmC0;JO#xvsA; zc}11{E(;_VMKClgEVS)**wK-3pz&uX%kOBJmps{`g+ub>rY$MjX=qwJO~UVYPXwNq zr%dn(7NxVLLYdqE<0%xCd zXKesucqTD;-U!f(xeJY+1IpH^25hbN8xuJWgysQ`6JgSw4_*h2ivN4Z6vNw{AFGQw z%ipAf?Xlx`;n)K)xF|^!uRZ1T@+WmOD&=FGp+I3U?4(}*!!pSD^hzCW{bn3TbgNrC z{Ddd?f~HhEE+x&5&juQ2Qib-NaV9cv9c?uu$gO!vvwV?&wzNcaYW z%Py|0R|^L}aS<{Ee3WvC_<*WOi;7Hfavfnl2)VV=TqZtlcYhN2lE*vFxEDCcS!dZN zSo&nWEuP%(P-^C);Q78Gt`cIM(tLB=qM#78^zk&%mYae7)UZ%Dqk zGQeL15KjDu{!ucD`g(%Z>3aKU8xc9H-ZOM=E})+q+S2^BKx&7BT*=vsCj>h*Y;his zQSO3=8s9_R&ax#C97g4}5!DP-tk1%wf~M7RBpUUNGOrC6YDJx)@qR#s3&o;KjO6RE z)%PXz5`1NE7)^07kU06K41>~tWWA7MrU&j}TzK5PGBMzN+c#9EcL{y~JTNU}L#n0q z!a{m!)J~%10YRS*0^dH3_u@|ic`wsPNmducRe1&l9XgKZhU^BD-}1C8s?^bj*Co`QWk|f{QLv{$(}A?N?C!Le4?hTnfM*mj z^;I7WSQkx`hN5lGwwGCThmECnQ9r{yKc`}NONmH%CJVa@;VM535TG&VJ||&16QR{= z{<8bvWs86#{!bZA5_R8S@|jw_2Q_DLu3N>&k{ztW@vnO{h-i=SiKJf1E73>2w|C^7 z4ga0bermJ#Z+2gHlnV5a<$Q~vC`7Ila9MUBT;v!2nCr#G{MSu5?) zuKVxco6m0G^9eutYTO&Vm7Z2e)waE#y)KztvO*%Z?kE>!vs223Q(^8g483#+IS&gn#4Nsw%$GS`L%+HQQ7Jj%M{(dq zA&&&dzkDH9YFPEK4u||=j|?n7`DET&gRls~(WIe59Ds!;$Dosb%Xw085CXDb~S)|5%yp0S>DHD>=V{qY4OwhrFDL^!Nb^L9e3UY2-Xq6b~= z0SU`PX37yK3+ySe6v-8`$^M8}EA5qlWwNgOzq6Md&PJ)@0Yvlc95@6)6QNGvGaCNLMnx3D30gF&5p^JD1QIXTs% zXTX)Oi`wMio*J#eOb}y}1rEL`IOzKxVOuqA*oXS|YFjuhR7e=P*@B=DQV!YDw^pT% z;||tB>f0>joae{^Ds?}{9GFQPAs{gqqx|RAfaGg1O}aYAzdv<9&`llGh9?&`pl4Ov zdI_IOA31XKQJu!L@6XPl2gf$XNi!qrhqkQZ6b@Rgz*1_^jcdy7*vIlYrqW)Mbo2vt)5)Asa znCf(VPZGdtF3~b$g7?2ar&~^8Dy+#424sm~w$HmmH?xE@ybL=M0JGe_0pm4_e6CwF z#zf*1NF%r0Am{d_KN5_9nvL=SbS(UH3+h)phIgRjlz!7?SQN|%iz)ywE=!zv9Wxw+ z?VwO*HgqXKr2C^$`+;T)512X?-8ck)67@=>#~^Cf`TF?omXMP3Q^G1riB^WDS2V&6 z^q)j#M1{z`Y^gX+_tw$IVXd-Erb=Bq7ZJypmH)ZzD{+e9dZkhbn{~aWSyZOrc+`+I zTRk~Cz=7XDHE(T;8$!5`EK5W5YnNxy&WS4bx~Mh%5_t~xXzHFNIfB9Nf`VeUI<-rQ z?Lam-IJQJY^ygzCYzn|| zn!uC*zlD(C11v0~Hx#s}(}nJ`I)?4jN8K+b;>7S%vzwcbkHNe%B8>MvZdOX&%d%LQ z^eQG{O{@m+Yt!0RihhU2&ZcgoQqaK$cML=GiX!Zbzm$TZ%&Wx%JSVjrcSS}&CR32M zW1%y8g!Rrcb$8J|AtP&&Zo5zyAjar!DbNpkE8#R7_bgtbG7dkeE6$%+a+=ii{^jx| z$-NRAL43t-+;bVI@a~P%2M1mQlZxQ2F;u)wBDd|peK!?$qM%M9(A+Fy0cqejN!0AF zP8-oMn0N0VQ6SPn<>L-M)Ilss3xfom5loUqwhtj|{>N=m*~IBPs3~8^!8~0Lb2hy! z!8mdMbuxhPA9U8wQ>VsL`I(W>H!8+pepL|8|HG+myxyeaV~iUOAG1-()B{poDqF8<%#yh!Z z+jWmRIBVE@?5<-*ZoP~81WiD#*p@(Xzu)jFC3yy91q zqxnZX3f>>8Z;BBpY}AGOdfr)OWh2VUXg#{~8{AE{p0gB)JP4)dWn3)6wBXp*aeCjqGpKZBPl2JkP$n zW_Z?hYBaC=7pYjI{l+{yQk8i!`oM#)v}8qRg4 z(Y~MQw?WA8eX98U3YDoCh5F!WelS618zMWc8w!2$<}psF#3clyy|yid=rgB-(&@RB zy|D`~^BD@G=P>S0EEw7e=Dj_#!<~~N{UIR9`Jib?{nW~8cK6gZGeK@_%6mOJ0}dI7 z4Sfx=4WeuYkB#x)Nfl^${P)E^1QNQUnpf?||AH}<|7k8>Lf_x7zc!WudZyG*hT%@1 zPfh*r8CuGmraRr_5H!8SqVZrwo{m2HRF$x^zRbheiVN&PP!4fSo~$QySpS?o3fanP zvw6Reb=5CQ#b_4;Yf4Pc!afJ_;ItTr1KjY1`$*eiouOA0rQ?4JiI_HWK!x3bOH2Q} z)}^<{%s|50cDbYo%HDI_Qb?i@U%MDJ1YbH;qFVBz`ENfxH;sCu}>i~DrZj}EGLPZ$(^!N&n0 zi<1d2Kq)0Z9kHIu`kxcWZ}1eUv$_{2m?XCB6f@P(3wVQl(!+fuye@~r)AIlNr23rr zD68lu`w{CP(7nkKK;L;sDxB+$u@VS2mq>S1XcYR&Q$Tfs{=l*#Qs42nWTN zenozdXW)O2eX;YFVfry^MK^V`aN@yR4Nn~R%De$`!4YGFFv42Xh#!f*MKun&RI&&-i%|yJ~c@lZ((T?1CkY2Bfm|wP_@11;mCf6 z`>EYoyVSvbEvxwMN5ilY#_W8VcI&^d)qc}ZPuG@cI}>X>?ZmrG1EaySWj^&}=P8Wi z5xYfTsfu13fG!7sef8FVg>k6U<0p9D&;R}2LOb?R$qgHXNe^XOYC72wC8KG~k2pY` zk|~6;RY!iCCK5+b<~*ti7vj(i2ZQ&fbSzF@XM19z-J>qFR#ba}YT1_oA~&yS(IvKr33jaz|KoYmhhDJw z5JQ!8BBy57rl{DZSSH`Qg0{ThS*}5Z93R|=m1IZH#^6!x_>s{Zmq1OY*^0lC90}61 zmIe@m;$klGo-ahbHm?$Oyzi&kdG{~M0jZ9x_jS=t1dDcRfl|XF zeBsK%4_%+x6jy&1R)!-_*FtUQ_wdt4$-dQtiDn5K#qEb6uM*iQ6hEhH4`%3 z=6b?=8s?~WC*;7oyh-ciuQMYIJFbOPUS$mC zxLpQ}!h%e4aq$l1`DjDuTjUDBUe_tEx6Ip~kv5$pR1Kf=D35Semc_`kR88BsPll|a z+^#|yunWt0#&a&A>(f>M3rV{DJh#bqXhrI~X&O5U-~=Ml=@Ybd z&acMrPoHU|1Q`nKT>Q>#Y3H`y`5#oqn}~=MDV0(jtbza5H+(AEzS;+NL0ak)=?^9I z9>moJQXx5w0eO?;^p;-Vcwb&+##(0}&v#UH?jm4%)wf=Glc-ke^@tE}CWUTVLb842&z_#G(y+G zRFDOWG9A+JKZ8QIjhf-Cjp6x zMVgQ+NUAQYkAKa*pQYc8zN1eD1LV|2+;Jet8285%pmVC?#zU|9Q#LbmV;X4m;6U`% zN5Kt*XVyyBhiJi*=HL1-!6e$gLHl!6GB3(s3~Bs3MNehZ3t9z1Z~U0?5*j;P&>6=b zR%U?esqV+injoxlSQZ?4hId;HE(y06ojE$iG4!I%v>to3IQ;AN8^1t}W6>U(`zPVa zbd{Uef>=QfwX!5Z?3>=-;78NR^yf;Rg-wXOLAH5#P)o+rS*{>%_KbHr+nTvd3E`81 zv^NIHu*GR`$usThQ;<&i#N3K) zyLUIp{#)23hale14Ju&3&{F7Mvq&)4gDlfiGVf-x;&t3QZp2M!d9AsS{==mAAWze7 z7WQkh!gvutf$B#ZPXw*EhTcbv89@40Jl-u5Os$=1`yb(UXJP63mzvjgTXPGeUL5}N z)}cE&JyrNfwk&eod7Q`C4(Js7HhD;F7@=LI5L%c1be9mtVEKdcFAX1af{i|fRJ32# z4dN<^Sm}(%K>rA4ninr%gdQJ3V|@$@BsHK6Ie^AD9i2(ga|QEBZQt=~s73Z-L{{pbpHM;aVUAkDKRD=|-R2RHCAa<|u06*tFxxBCsihC=GV*q#Hp z?1egr7`XA(TT1>D$uENpwU72Ak+xOsAQWDMz*tz7`#*D{^}-lG_1xgm1rwI^I63V5 zd=tv%;EA9*t@Qs&2ehZN*^ZLIbC-q34l&mLZj+I3rK_;bR2+HI>Dkw&)>U)6K1agD z2$ZjTkNYfZdT_Z??WelC*Ksc?Y$8DYw}Xi6+WfqGGI*~i(dWY)eGrT=6c4L5oN@y< zJ2nyj-^v=R+<+@zO)y1pYmJCY1v)0*1G?Zh{(_T>=0+?BT}xDy*=teI5W&l=KzX{YW4X4FMCTUWw z14k402W%E3TwpD>A1CB*(_<|tG-8W(m+?CAPZ1ta!`rqdfNvJNn_ViBZ}n%|@TqL| ztLtO7FWiPv*RQ=GTcr5EWYQG7ffH~Yf`M(22N+i%p!aY53&iD8QE;}`Ir2cGFYLFJ zdrh}1)sD3s1fdC(=xWSu{0ybPDYc-ha4aFOoZ3RP{x4D)cN>KDUpD#brFC_vp@K3# z?u;6`wRoJ9navQ_00WJ)CP^$K!2IY$A~YumU2RCj{_7>fH0sK2MRCV z((A>;!hF?dho8?Do&x;HQ}(qp#ylJbo6H{BuogdC$NMoC(J`OSU=I;YDkPZ;=#t+ttWF3RAS2J3`q!0lFA%Ad(@F+HBMn$s>}}$P!Wy+ zJs9bD&3?zZ2R~e9!O8R^Z`q_X*ehwpp??e677C9yg8}tL7HRXAcq z)~ImlfH2J~uvnG#n_{jKUB1zsVm{e=;v^#zy>G~fN`(XQ@=^{3z>Eq+8znM>eZ@nu zb+vQfw5ubhm@-tL5Lks$9gHWT8UWDZF*CUVML4Yc6AK1sUUCAFq*{97pkBVuVxK;= zy=qhS0!MGu?lwH)VUDq=KfuO8W12gxazhhal9FgL7EA)0vEXH{N^BqJA`9kvQ*X*U z2hK%mc|GG00*z^=NDoJdPUqjU@Rh`bbwd)*IR)%Blv0HbnS~+e@^_Ifo`@3_<(02T{|-Q$%Y0<>ZT%=9Fv zHH(oP-Gc{(07S0h0@E*Xq{JGovcg2vnyASv0Q<~1XmSCY;Jsr zx?vqhF^+{6-3N%77^4*wf?(|A*`7oC0K+@O%9Q1c6*aj0B(Jf1zs^4q1HlR(!rY@_ zVybVI;ex~&_g>BL?O+g^qVhDgx-eSr4hQu5=p{u{WTubt@&%{o+S;eVg2oQDbC{U# zUq?jm7nyOGt$SwY$=6dP{+sSW$E>UGEl#7W-d3v)OtORXkyuTL->%I^5f6U_9Y5EH zWwoL>VO`&#-NYr4$S1Go1qZro#%OiVELD19m}vZ_*ygtoIo4Wx-wdZ4Ekd}~(GoJ! zeh7?4$&Kc>?rbCPnL(%C8|)2FaZ%g1$x_!)^`Ye&HIM^dvnBgaB(K~M>gag698A`Kr3CPkwzp2J~!Q8?a! zEHlP_7=aaQIU;H!g&zy-jfNC3 zSwqx8X;`J_VIYLnIdlxmj-EQO_j#@o1rb!uU9$>pduQ0&^1CoYjG=pEYr8Roj^*F~ zxB-8OYRnaP=r|}g&q5$IuWs4~{0Wfpy)M%7yz+@g#M4H&kyoxAv2R~I@#H1puzaq{=JxD+P1 z$`xh4+4VKxrXCe>ljG?IOA~Ob^9kAu6q0SVg<))^<$^aeVkU+86qAbR6$)F1$l|m& z&CKaN%WXq6lh2|l{bGVxOK~p6i+u<6%Q@FDn4TViH}_BRX{V<`SSI@IEsVRpZL&!` zwez?pGoff&gb&*rRg4DL&;8(QgaEc^*s2k}s9{i<|L!pCM5Tp0;hBx!Oa1AzT`v*O zb}ajG@qM4VT|QV}WlPspQmG-|;Q-cWiYr#PD8ohZKu?CkKg#@B75;6o;mlDH5oo8N za`Y9wk6Nm6j;e3r=%Nq=f#B7o18#zoPvBKV9Oeb~cOjf}Kzz{JsKHn2;360l=Z@9> zdl0^{I3~5YEqkuz+gW-a#JBv0rH@XsRzqws2gR`ldstrVI8w!SCtnKUDCP{-fof>h z8f(W%NLj8~tev!ten}luPoK(e*=gLY6&cNZV&yZ?bfWU4zlSL*)5Jj4Ghx^7XI{-LMZd3d=2H%3JqiL&e%ERbXCvYmt z@5ReVG4Q&X$T086^Ulzlykd%08U<^A$R+kDxkaeXB@!bFvunJ%E@@@$fhRAs?!#0+ zcs;TyBY}WIuK39VJB#3zeD@ID$3TGBPQZN9M-jL^A(mO;zID#J@7@*@MQ>?n z)SFhgnFdZzdIU$1b(8@HE|vr4H%GT{?t}GOg~;weYp#)akCx8?n03d#t4P;IUZ3sB zj_v(e&a>+wBk#iLT1PyB-dN=$@h!oz{nYXlTnJ7(^Z@GQBvGXT$$Y8!=x>-p7}ny( z>R&BsO@(he%G?-v`6BC;Xqh>#9W-DQ>2I-{o?7V*G!ow4 z?`tV@q9V12OQ*tk2-=gTPUJfHA9YyW<@;UueYoJqe%=1Huy?8xtFBN(M)>LD+P0v~ z4VG{)Z0*6v;TGhKNv1BdZzwVx*bxV0_t4DzAvx9S7_s#>*Y-Bb18Y8avZn7mEOJuv zZrGJ`bJWu|)pg4$zA0bMkaQ3h60U()#&k|k12o{5jp&51TbrnDta8P4#N&VSm*+c3 zMOkgb(w&$^IH2NxFv3@WVBbG3J23*%SWqjG;{!9+A-=T`|)&+V(^CUL`25daFIPJON~H?O^1{%pe26}ZsgT2{V=4L`>c26{ArQ)_QPg7|2<}@ z-$SVpc{EgnLPj8ZK99<(4S5ULwd?z^ApW`qriIIFi%EKe!GioctD|eUb|{xdwi~F5 zzo+sCC@f3As7)--)q0j+S)qQ6AA8!7f+2t#4ttn7U8?ogbLN$0PEnB>!&<-f!EcO| z&$t^0=<@H@d~7Wr?Ot-pwGr}4;%Wl}DQ0uGZAAe^Mh|rPHX7ATy4P#2^yA*;Gj~*yoL=z z^56Z)E2b>S$&?Z;yE!ERii+EZ-$jxLmQ03;Xcb~k=C~|1$i}F5cpO_ArT)Qq@<_v6 zGkIq6Xafa3Z1Kn4p1 zqLW(2{X>unj)_U0hvY6g>M_KA0Xoe{`jK3rq0#kW8sTEQXH%m-CjMy{F?glR*KHm< z_WYWt*iqC?&>)^Vykv-n!QBCm7Eni+V3NZ|B>?|F0Ki7jnPzQlTRzMHSO7sja?qm~L`eVKNMYcqgrqVyrP z7iWXpK>Uj|l_`IuJ<>2QzUSNtb-!&Jr~Ta4B-QtyF)#P|uY9r?&&GiK*)Gc;afnJo zZ_1pquEGL3>M`AJ)W0;r0)Ft0pr8P_rlcX!as0?AC=Z^Wocf`0^4PmOxF#=6x6{!sa~%FwD7K5z=x z(2dnpwFSuAI!jN8EvWm7BdTF?Jk#3HBQG*7cuFI^;qYUhMNK@QW6$w=8`lptAl-H{ zM7ye+1_QOaH8!C_NR9gr0vyTOkU)Y`J{{zz7f&KD-{rJOf;5pU-y^&7L(w zWO6thS9whK#+J;>nG#P&@Z7|`Gq#eQ3{9Ooxst`?_8%~J&p;PX5?RAu-!v%6Gdd|T zmI{ml{Bf-madh(#1eb`JcbChIf#GyqbWbWQnvydeH%!U_0-wXDwsx6Pud;@zA}~VF z%0jP{`_fS|77(5Inpi4j08{vwXxH@5Fl!kNXYZdjn}s`xl6c4k^WQ@38;9Nb(D$D@ zDshtKt{C`WY7E(embH&Wcae4w5IA0L$|TDW29Cm_(z^!omQW59_v-Lm;*M z|t$he*#@GrQj;;Kqr}z;?5tWCmm;zNQD-+4%`If4C zVZNmC*oa914%P7aKM6oHRh6*d>xp$HKwJ@8@JixqESN!+(^+OoPXyuL4K?jwD-cAx z5y|98RA(yX)(6g@ zP|}n5bz;HZm09FqYr==T9xawzQC$!6qaNDt_aZ0o4X;;PQ`v~V#qASkNjo#d)YDw5 zOg2ElRHTpS8hvm7~RLQtKYJj=&M>a7{{iqfgQ%~0GjkNtp%htAkZdAZNBzQLyL00%%M1b(8#g~wkN zQ$BVN6Mw3*T|}sJeL>p&|CE1lxkRi@7C6lcuL|Z#RI|4acI0iFj0effJRB-?b)FDJ zp0360M)aC@V3BS0{%jZ2fV%}U!_WLP-{(4|@4b(HF!I1HJnTO_-J-8^8i3TYYcnC6 zEaoMEQU`>yaJ26oSJIxT1i%3U6+$hEVV+ zRH1IRPf7Xf6_pc9@6wfmfC!ucH^f_*YU(Yhp%oOlA%>A`gG254{2PcA=LA+5M!8&5 z+;*rNqltNA5y%>Xh7J}4?SavXf5Aycw38POQHv&EZ7=gNiktOScyztPFw3dS?cN@$ zolVrd>9lFb%}N=0@B3>cJUgc@i@9@+f~u+zEpdw~ysJNW*<&P8(G(%D{@~+2!VE62 zCySPO^mZcN;%FW10{2oOh!=s}@7rNI1&+!~N9$P9g>er)*ubX=!Th)K-_AEJrH5De zgmrd{ml5b8s@@GY>WA!KE{a;PxD=^c&b?B9c9g*wlB-ILP@>a!B+i9e4BI|( zA=mD(^u~&f_fNDBGKV4T&*MJ+|ayetiJw@7%aR`i09-QgeE}DS#82*Y)F!5^ruUXibe_Z6nz!O zl%ty;WHaZ+T1o2%8qiE(|H>Dc8m+3;3c-9}#=>&Tu)A|wBUu)Jr;MAT51j=!1` z+!Y)1u*V{xnAlDFBi5k)!h6v3uZo;kx?V@*L%YNZeEAGn-psW-bZKE-Mu_xO3q&v| z0pUACHYtLXItCS+_%!e@dfgy8k8dlGAGy}m|t=hIJEiCQ^ zDU6L^gFzPS8xE(MGx3`|4x~GdvemSbEsky9i=jN(1^^dQX928VEGmZGdZgGap{Fr7 zWy^`uPdh(>o9gm}sO_+G3f6YxN~Nz60~U<|Rm7KX&LBU%b&O~=-JJWA);y7ya2~1+ zKyr65!T=*@W_tfe!n2ZUym9Wp((}kv3W6T8?tYj2rXg8i1-8<3Qr^G;WQ!be>ZmtM z{dltW#q(-dvhGM?Vf?f7w>S!YC~PO;Hl8P^R zO`AKa@bKtdMoEp2`R!WoJ#sWq=?9=LUNm_ zemE%`?hph(UqMPGD`>N*>Xo<^4nzlbu{9-B2jlN-H;S}mpM{9I7=K}o%%aR)B=Pj?eS@=J7$nfu~Lh8!Dnp zV67B*V?^@#u(E+20Fo!{K3^&19=1V|5SRm`mr$I#bB9`kx?mfI@o%3|1|?XasoEjp zkEV8(f`r)t7~I?dyhvE@YGRG3T1r0UWbK3N^~B>FC~^ajbWPEeA#nT1Owi01PLhco zUf-QcBLf{KpS_ZX!TXg(PPZ)w@voB;1EyLpO;uA~MhFss&x#0|$+P3-S%5V|K@_qY z#KI8Eqq?+|kU&hOM~b#v;t%GY-DY&=j!D>Bw!iDkFq$b{rOrqvaBXhk@8kk~b&)b0 zNq|6zEpj}mv29r{<=oQRDaV7Vq~jo=RFfjaq&2MW(s2MZ-JaYW&CuujID7w5T@UP= zV+W}gHn0Zq?q2iQAtXt#Af2H^XuT<5T>Ve2WS=Ax)#mCF7k2OcaWN?aC1Sw3Wsv4# z_`UYcdf0}iHQ~z&K~Kk-7X+mn+&9aDWoq>=^um<=!sA>XVdv(wllr~SgVS_hRoJ6S zAC@;nUNoU$?eXm_<_m8Ax_L?oaJc}AW>s=3%rRj`P0=MB?-adxfSa!?vj^j}Dp$Hr zU{_-)=SYgYqx5A7vkK5A8MDN!sF!Qu9mLTnE9+4P4hKuI_wPyA5RtSO+C3*ZqU)B} z{Lafv>)yl+=OaFVij7R7OOXfoJ83z78pp}XYJDq`40Fmf8A?D=WNvQOA1PIQ0;i`>{SSbL zFH{S=vfMOMe$;G&*KD*C&3P3v5@7Ls4MHgB+pU{3T$aj1)Q5Lgi!iucyG}eDwZSm1 ze~O~71nbK3E*|)o$z+?Q3sA$VbOH*Vb|U0(;B9UhcXQEEr_!pR?dC( zL;9<1ZJwG?L{A9tFNUgVxqK!Ew!i9IbaS&S>Q9T~fhXb%yH=^xACngP2FstVHvYdU zcuUn>mD8Rw312wY$3%hUEYus0TCVudpbP=S*aF(9wFcTZ=1*Zlt|Yvgh?t#woT~3q zkyXaHPO&8QOmS69E|^;jJ!h2`Rgj@Wzl?(|13-TZ7Mzr|d6Op^{j{Aba-lkZni@G+ zFF>ZhLHw}zuqP~Wwq0sBh(m3yu`l4)A6DT}-G+ALYbUQCE?a|-$aoJy^^A(3qNec| zaCuv`ka`S5^QR}Vf=Z8wJeFNmjs#TaoJD}JR1F}%`5JGSfG!J zzScR;zCLjOdlMUp98OvX`-GBMD34bAe*ZjolR57ZR2(q;{lLrA#5yv|UUp zs9@Ey2A3smYfc#YF3I;vHoASA0!Z2NHH9?Zq){;)%LT{=wZA@jT%eq-SY@S-MTZzb zA)09vN8CiR&NeCJ5Cq@|t%TKcaw)y?xk~Ebah=8HG>-L`E?hH?o{5NW+yAalCqeHv zcX7}xdn4K+UORoiQ22zYbXQH9&@}{jOa`pz*?uW}4SZA6iIW*PSLINy`e^j;!G9*} zsItY^?!^R%qJ;+forc)=IelZnyswU@m8ORJTS$mDeqAIM^e_qFlNCM|T0`Ywn8<^b zn_uOMXvX*A9=Qra*Sv``*%@dWPNgc1JnA$ImC_F`MRN&m+x+Oxui->SIcB1%($nAH z>ec>QWeT2X?Mfn1(TEbuYNKr=oMnsFEB{&xTS_@VgC=bkF)`v(Kt$z$FRmg<>@(GV zaRJZ9eUZ0z(5@^d6}G$ssA+7ujMzY=L( zik0E|+&yW6$|>MUBU^kQGYG3%6f!~qh|K>l9A-o%*Di2ZGDdzYz;9jn8_6V4Uni+6 z*z;;jEkSkYc*xa4I(}r!#MEx8g(9lL9`~GT!0=Fx_@h8cuCl=`MacV%9tEdRpnNJc zl)w7s8Sv;1d@<=#E+)xAMENgY&aB%pNPRP5_j8I>Ht!VtJAAnqD8{C&qL*&`Srw3c z*q5o)PJ%}bL*AreLf*9}fB%9F$Zp%`{gUyLKcD5mETZ8MrOKZyv@H_t06T!gh+wB} z*Pix8H>5hzU!HHCUo=9n+*ZdI*MKz`w6^~;IP%{%xoAHfLg9x?-bmM0Ry=Pgfxcv` zY8pq21Ra&oBB}{rYD_*ACT!X?z1kFXe=z6-nW^3Tse?PpO+PqHaK$O9TnG~4Nw{dh zIoqEmTziX3znABGU>aa2B>Y{F-vO@hm!xNg^xm;(hTfGx{qE%|`rkL2+Sds1XOJ?gleShv2VR#O2ca!}@PZvN_?#`gT)@ zMjjFVVbtTUS88#)HR?Hxl|*dRbI7{MfeqFDtMx|q$plijG^1U52G;Z_Y)W#5wvZ=# za9|8O;Uam+8Sqj%8mUxq+UH?-+*u}8L@k@u{W~N4_6rK@mI}?%CyvQBtnV>;!~C42 zOEj}*tIA4v=*uNT%YvJp{e7wrm)R3x(F50%zuiQxisDhu~2gqdW6C5GGVL!=FZJqu=ol(m4X}mUZ7v7KxKt zVX9~2rDy_C62V8(weOGQU;oP{_Ggp6$PDk=o&W<0@7B|Xy+j1*;o?Ta;@A+n5ss+% zo6wr6(fe(slx_Z-UcUO3akA@A$h4x?4$oRUeZq)4o?+X7I`>y8-QsQLBcMz-^Pym zt9GeVESEmUOFt?4`HzYk-UzR*(XD~5))I}qUeQN~TTqI<@EWB#Z6s{N^aMwnQ@AiC zbXPNwtsjgh4~3l^5OZ3&RqI}q{$OlNJYip_QBT%3)KTD|M{edE>o3>F-*nAQ9tyZxk;fwx*_*&h zg)Hhc7qij&D*p~}aVA?twie?Bmi%pvr^RT-Vx$;{fWzE!!4u~*2jo{`$z?Q+g=KB6 z#_R^o2t=YZTZO%X=4PJvsq|Tq;`c1=U<5XJbxG+$V5$w>PefscW*n0-*Lv)1iG1(g z`~D1&ij`xVbZ}FQo5ym2CPsb=kpicMV4IXVa`Cg|ciWTsK;Hl)IRu-GPW!Djz~X7* z#`UhChu2j`xk_mwKNI9DaMuHbESY=bYY2pWv=t*RKWA;CIi8vmY`NMC9H*7CNf4nd z&)nJRT!nonnv}6rUgG_6nN7@?wMQW~LkVgABMYTXx`srKM#_i}WD@8ZQoDrIM)};* zZ=jn%?@k54W6W(6bg4>-txn-si67v4a%Li-?m1WZWOdf~^c zhm*uEJDcGvT)dbI@5JACY1xQ$b!BQ$5+K(;a@?u1!rC=Oh@5VNkYg|kQWia0N+;v; z{ivyeX~D{M#el*YW()^iSPggovCD#ZbpP7>ZEfH97xEw3K3Qn~_y{;B80-#m;?20o zCYs=N3_q}5wuIQ&k~}|1fk4@^@wQ)FDO)<8A&cC}j?mHtA~`CrUQuqdm9zM>@l`T* z+LzQIR)NhVsKleDD7Fkin=&Ber-aXIW#b5e-;46gapP4yI_E0~L!Z&aqWp-?DhEK! zydu5r|3~g*3?nyie>fBf?{lN!+si&r7sM;*;2>PA5Ut@~xHuIH2%U5H+y0h ztI)452Iqp%)p;Viw}xCk8n2(IxxFl!>rLOBcVkBZbocBh!5`*KsD;EZl4F9S&=af<1{Z8gO}Gs(KQMTD%EpiFPDcP_ z`v;RCuwpQ~ZZ+c+n3OBsu}zZdXM+KV$2Nv{Zx^G0L>zfJvMK>yEd3#&1OvD{N;_C; zf*aNY2e94gkh$4v)+2!{ewfh)aoIAWWX+S0CVXdnPRb; z6Dg^evniL$xD#W9p99jf@2NzlPhD}YnD$2|^j+L_eH0{cWjZm~UgZtY!y|5obVTz4 z9__aSkJ74MbE6hxhVqCpZ&^Z3X}#UHI=aL~+0~LIlkhIn?SS7Hf~jUs*qs0qo_{~i zm}-YfGL20`o!@WTJLX*TtrmS*1m8Stk?RNGfvLOSh&aNf?b6;Oh#@ScUm5yS@YE`) zTfi|2LD4x5!gB((pgPLuruR#4j!C5+%Q-Wx_O?s?@EWa? zyTD!-cfd5KxC!1y#IQHxr6f2Mg?ISM9Ll;GAPfy+l@7CPZ2rcyRtK_fTv_~Lc^d@a zN(pIrU8a$H?}a3^@_|t=tp$Vw=o!R>*NVE2^I#VVde@V0or(BN+96JdO+Oe-EH`uX z$vmK@xkt}^asD?)Ha9>Qk4emU)!g!`mNJQ$<1-8L5Jp!ODh1Zxh18JB{FVPD(ja5P zFP_pp3Yl@y=Ye+D-=wyG9$~O$5O&zhnh@AW<@>;$e;$?mp=RcLH*V2-4k=ogwWq1t zDlRkeNp`iSL_5!gj4 z;spcyh9*)bmzjB%v8=&7Cb?<$3aXRvK_2rf8uyP*oUdTj*(9Xd?{$CJ5BXLYaP zvS~@=u(5o2y;-go2_&B41j>(}D_pqQN7z*nt_#?RwZ41w4H1 z43DORgId*5ka!IE+{l#tLSd5_$+u4vhSqxdc>uFu&S?J--ygE9b8mT-;!T^bS6JPW z(7axePKF4UTW;$paJqK)n0dHap~JT3*T2Tv*hVG!Bf#2efYXE};T@Clja~}er>XRp z?e^#i6;l{RIB5;LroBMt$1QFO9UL@JCf=1+speXyF8XanC*vPG{Oqz!d=t7 z|7p6xH8zckts@-7YV}F@$xwf}2xBeSPHvSf3{_FP3M{KEquq&Iao$I%)?zHN{hG0H zG?{?5IlkG{1G|{x3)y_c_d9SH_D&ESN=RIJEepxAhP9UrUOySZo};j@%e`gA3U60| zL_JgOzQH8#wPLUPEY?@cVoFdZ8XQqDqd39X$Fw(6I;sR(LN@Ou+Y&FxdXW2$GhKbJ z@E>Iva}h}OzAJe)6+jRFG0W1z@1N!>giHrEoaG9gPCo9_ALN`Lj%=5TM0XjQM1$8@Bb z`uAjTkpqCkL8TIiplPxF`t_Mogh-#12P{2LV(RpKB~60+Ksovefv!X*u?Q%sjANPO zdU)|wgO?(BcFL2RV~@`8@vQ+183+Qy3k1s7ts8WdDF07^1f^A!Jz~Qo2%88+pSi#(u!-fgQQ&Kh*K8 z`c5#w7(%L09aApLa~V5yA!$=@Vejx`xgSd)5TJ> zS~0%Oz4SsK>RnQytlDyO(wXsdh3ik{9s?;PUgjBUUFKR&>PaWwdb&p{&TfuzL`o=W z$@7ltGMK;>s}LPK%=qSL`az7yv>qQ_JY3;KZYZEJ$fG+3x89#BN#WOz} zR|^#n|MxdaY44}p)$o_%yG<#(#P@Yk7auCBv0RdB*6}jVfLVgHY~>&9u+e0T5KSBN*j&JN>=uRk=y)AE^d_dfpV>!t*KKBbQ@qA)#ybLb4 zJ@{Zc4n^JGaIksTmDCYj$Q+}J6|iHDmI$d#1D0#1u#9A`Z05qWmw9)GZTQZmq}gWu z!jDJUjS$Pi;;XA9n_Y^21!0_F{3bm(-E~@}HGXK*oSZ85t{hw^1)?9Q!ZYJ%rsvLt zQA_e=GTHvp9F9$2vzj^BVb5NJ`tMdEtU$d0`(?$%hpuBzJ6|t8+GX9(0bkD3wdPzn zHB*dH!2YU%eCl_@=t12-IPs7smMZ99Z}}VE#O9dB)d>U{z}bHH0YpTpB<|zrS*5Uw zbf?6WW$niC^uol4Ru_l5C|ZAlN`NQNX6bl%1F5FW4wb~cx6Bk8uU>~n2=yuwU%cRJ zv!6AMsUc_=IX+}b-TG1KmKt458!n|P=0=cseLqw$>7WoBJtP)Ml1r;z3X`R|);QGG z+-vz3jm&}@`rEzTYL#V6nAeLHX+5o=>>=umKm4Xw(qQgctmhbk1l#Xk+bs>I0|A~g z7&=r%UVt!cI+8V>rR3!ND(v#X-F+{6C{FQPoj6C1{e9r*i+|1f^;9c37m-@OuO{-n zQW04`w2@vfZ5>nvtwi}Fr|gCeJo{(?!Ic_F_NFGH9F!c*ukc4hVA1Ib^i(l59Q;m< ztbHgJIGc?=mCPWQc5Gg`qK5f^AQ@q%Do1$o(yrk(;SIOj5VECSUDqcadU(){lr|Na zjzcKccPPrxlDFYMG#F{KL@6Dytu)M53$R zSE6fomZ)sfotprSTYR>dSI6CZvR*eZRF#e9OS78!ag@0BhD}hs{J&8Hml2MUh5z>J zZYXAte;W4bTmbF0)UlQeP>hv3xlEz?rt%z|CH4Z=Jeth$5sY<5+mbHP`l|%BAY|5! zLxmBKDP;efqi};)H|vUGI!hI&hO7G)fd;sP~5wu>fu7^^)*nwqN|VW zNQGpH5XeCfvvf6uT%8DJW8zghKF7ibshc<3+PLf1f2*B1atVDX255?X{a~+IQ}$-J zdXJ# zv;Dh}@Z@a*m&SwB&X5#%wJDC;*}h+9ACayCqB&7$C+#kG)pm4H;i{I&StAf(-tFio zmPf(y^^VG+R0Rto1Vl?QOtl9Shz+L%|%IcQeuk$xh zKh}4|=;<&`gLmIII_|uTVt}(7m(T;Su+PawhUC{VtP!@c)JT4y8Me?oLx)XGrNlM7 zlA&^=Jh5W46@8U^`t}^P_9%2NxR#oAD~b#PZ6U;!nRFKYvzoiaXs)*y;Q$1j0NQJp z+OgNaC{hhd=~1z*zDi>}XCV!=&0L3(isBnQ62&hkf5U};&P@sDHdXexdZ+DGrPP_A z0q|!7I|Ir&l@4pXPu}goEDu7}-rcEKEmwmDgc55xFycf+INh>9Ha*gcKH`Cs{zm<& z(t$%cn$fd$kh=p?PYd~1m!jY7m1bA+j=063_I&hIUB{JO8=O~WFE5iw1t26&Nawiu zHY?by_H~~XTi`du7DrL_fo`wt29eLFp%{kvB`rz|Q^iclz#F;zz7rHs>bJg8FKPn= zXVt8^t6PC8G@z@W9#3Jkw6fJ)RYB!?d}b<%91Bkfih1%6y*po2?_LW@VxAP#^=(y^vAledE4)}?|`2UNhjwNCXvATymZvQ9L@bF!w$8JXkL>A+L2_Oc< z@JI02zQLtF^$JTq)PAZ2_1=MWIE=ob~^6UC}u{UWKEhhNwEaSF_i%u8@x38~V(*D+XJ3-~xQDJFX z*wy+MyKW?XryFwMl%NvgY@e~i(avm~>L6+1l}O%-#;BlL+ixw=QyEcXCmq$Tc5`@_ zl@QCcld)K)bWI#0nS+Q2Qug4n67ye}RT$~ZIIvsJW}`3&kxeo-#zXxF_i>`}A_2q6 zAFE%y7ZE=7oa8?6*|dx0Qe`)qtXStQPgH4}s)q{bDr1C5&s>D5@ge8yLJP;H!`Jg2 zG;{>Gjf>Q~k`Hg(t*E9Y6er5}zp7nxk8-VJhyWUf2Y?3|(mp>yjr1Iv!8-stA$Cio z!EPO}1cO3=rzr<2SC2bPhdUa|p4iavd%9`(daXK-8r#yDsz_L?!blBHPRCT|J9Ur1 zBFV%Fb@asq$)%9y;KQvqzDw8O0k(vV!9?yr3^|*ekUE<|;*wLkq~0J}K@~+!{bP?; z-{dK%YsKW(8xQRvdls{qK7z_NnVB760S{esHtfK5QJ`5&%mfK8ueCa12eDf^dr=N$ z=c(p{>90SB_EQt2awP)?i|(L~@dCe1*o9unwtfuOc^z0I;D(vHC1VEkI2>U@EykC~ zbd_i}74ijdK8&Ez8sM+L&V2(;l2kJ=BJ!`)LF(z4-kRnt8d!zH29`AYG89_P%X}#s zc(DTPQ$qqTa{l>)N=f%uWtbbQ20LCb$M`AL=2&)HPe4qo#W_xyIcrJ%6B=POU;or^ z7lY)tOF2qMOH(|dS|f+Q3ZQX%>tjlBGxBh@b$^-ptPo}9%uvI@k9kLUtSYSEH zM^QS?qvCe(tIt5^LuPdkfNX7Al4|}7Cz;aX9B~rZJ~9@-%+4qa@u!G-NBP6?M{H{Q zbgD6<21%bn_y^>-KyMwP7xRrfN`)u~)hZ>|w=oH?9u<(H!}%@I2A(O+B&vn!3m zzU_F)U>diY65zyktfuM`fEnvuZZeixKcTEo*Ow%yBv(8yR9D{ zTb_j&M6*Wj=(J(&vPe8l$PX&gNzb++`a1T&oW_y$WMig>%9f@X{5w%r9%lwl%Rha8 zN|RQ{SteV%s!`-m+$9KsQ=?*9BS_r}hbX{_D_<(*@D4KhmM1LeYgEjmHN`79_sRtT zJY)SACHwdYr;hIJcC_p4%n-h>9;CA_qdDQSAHsRLx0Sqdyu;I%U}SJn-wAkAX%c_UEbHr2c24~(jmkkfC@tjU=KSZ zJtuu81n-DO))}sagYV1B8HZNuBbg@^+3aNkK!A0x2goHt3~w+cD9j%}Q%0pB=QbInR2hv%nfWQP$JW4s5er6J=&=ZslFe3c54*LozPQPR| zz7g|?VON+WvJ80!rHVwuhC@1N`SkDt3s8>+7o=JfzcZQeuTua2Gs!BIiInhVB~%ox z2AB$iew<+;0*U5sZ~Kbtx?9{Geu@muY)6^ z6tz2H&5uHsWB$o4m9Ho4#}u;ryaCb?wlf9v*1hrOJgGYqp)tT!i-o-%Xb7!2sVRP8Nm~lg-oQF!yZs zKTIO2=AU2U&D0^{1gPg)yXCrsu#Pjx}Zi4E3y(=k_+T!uf~p|Ek^dNm~!^?cgI0(HWq3O7C#qyb~^ z?ok4(StVR;^K&6a=pxTVL7G{&BCLEuEa<+nT!6KU^kI1PIdhJZVSB8g$u*A=sS-98 zPA2b$FGE?mXM1-NY7J^V6Nz4y6hn5t7Popa|JHsRo^2}E`7DQ9uYcA-2?Ha#;c<(w zeNIoQiayBt*;Mifa>~|vV-C|Xw5gx`SU(s^+`1iA+qlox4db%Zl(U}n&SmtT1!ByI z8Z_Shu;%plz&lbOtyO%7QnbEqrAVgo!mSuE1PpXYv%|2k*I@D5cC-=)B?>c~95@bv z{NYs5_qmA>Pro5Wd#koVXwu*x8ZEMV=}L=hZ$<#@3ifosNb{#JV6dZ=3dy5BvOFn& z<%oE|3Z*+ws7?^?2S?Lqc;Cyq)Lg!f6gcYk6(SJBg!ysjL^HJ4Jv zw$I2UY_zG0eqFTB$jFJ9#3R&yuc3Ym1ud?~+qF@L4i3eGfK_bVS;b zq_4=P6%#h_h2n281<#A(TE6qS9d{y?R2Fp!d(T}sSxIT5uI@f+T;0v;OtA;El!v?v(5fMR{4eX z>e2r^K%wg3rRB>FLFX(&?lHBs;Wbgd-;QxxZefEh4{wu z8hndkvhgR-R16*aclUB78)GYKwZHk?iLo?f*-}Ueew#GeTzrA>Un2=hqIT|W+pd!k zIa*~j+1RJMTj$a#-*V?5Y7({NZvZgG=N&1wU_|JYc8^MTLbGbZbinjOXZV1L}f6_UW zo4F64?aDMXAeN)_&}&u#|I8@*l2@JW}g8kHwh1-$Fs1TK?t{DVQftcgmdZ>50EWV zl!Mvs-h9*vP^;z|3$)HOx50yruyhrqan1HH(jSlD}!O9@wYrBP?u8YKdnXD zSGi2%>xfd;99%E%FKqywxvjd&7Z=N^t1p63DSm1~W2@j`K4Chr8GZ#OFXyk>mHNN z-}%K=U0caJ(10FXc!^a}Xh?X_}5+QC3 z_iRR6Y%EXRz%jbd!;rgQU1vEcfW?601@u=9-X3L0G;DwFV$pwyTk50@!cuD=zonR0 zO|R(D^`jYIkg;ZMyVBG~EE+rQzKOEPeHL#6wWi@^w;83LsNoYIciGGE zYY!`<>um!o0)XHajYX!Cn0)R?^XO`cjmyu?-x#;K6hEk>4BrA6uKV0sbYw}#l^ zu5}`y(!j?_KZv5!7eF1}qL)MKN;2aOK?VwoF5p`aVN>a!=)LnS9?d77$gN^+3SjV( zVs3aVSBDP1aG7GzbC2#OB;esboJ7>#;yT0`DI8w?bR7Ee4@CQW(Sc*W5;2DBF;Bk zVGl?rQ@tQ*Je8yIFyzmt#>rZ%^jX5FzH!>q{dRrtWgr~NIAI+9e@}~!50Iz|Zm~o< z)+(D9v|_SoH!H#D)jh92>6G_gT=Pvd2@5?=B`SVd)ApRR=Q?8aJ(OkL0}XzH>!oUv zuW6{9VB={~VHy_WlC=QHkYj%>{W)C0z%0zl**#1iJ^9rwXE~w+QEDC?NQ$0u_cw@ zWm!x!gSGt{3me+fX*~mG=t_)z@|d-ANnc;9|67-oi8Q`fVR!{!2@FmxJ4}n{jFz2C z6U^I{`W$t-zL>aan8$B>U+A1?to`u5bE$j;Ri}}|U{<00+WY;WPr3ejP#(6)@xO*k zJ8=s+X+MYD3p*g3iy`=;B7xKR@45U?bAlZb$pfaFRYYsvg?UmH4jQF z#jf`j^}@&uQ3$g&ZcUtKVW|s+DY_nNVb+9cz4)zrTfN#pcNx|e?tZ8VL5#@t`JssVzfQZ_ z&9M@D>r~-x!^2<2Fmi!!$3NX2Gy=PG#Wb8`tFCvjM!wB>-)$(U%Q&>vgDyhqE(2P~ z+GU0{QYXbpfy5F3z8qBm6%g0$KJKh?cD#6^D!*VvKJ)P2{K|l?P_O-za;7^L04M#E z9lcHXYWga4*T!W*JQzzoU^A&9A^n~OEsgfpmtDa-vdlsPE9S(8COaV04%Xg|49jPA zBxlLp7MJmQ;S%|4eA-lhjFov__IL`kVVC%N7#$IwM&LM=D4t>Mx_>7!pjiz-X=gmR zQC<7LjC*E1?<&s?r;9MKWm>_Ma zu&93jo(f}xavO8QjF1>zAch1Iw64i3u$!WPLAGQF;9&>Ex9eRIgBW|tD}789F4za)1z z-Tj$2&0a&Yu_t8c{sK7s@IM4lWc2`_=TvJ`cWsQh{M$PZ7LGWbOT8Vk66fUNpcyQ8 z?ypnILI2t9-Cc9_D;w>u5&@{gP&ma1&7l8hC?~cfHTqn*#4OcfsxfJ;yRH*e;&e@s z{Fd#?VImV7bi+j^^`A?i(8EQE+ccl@oAxzx1T)pp4b-t7N&ZC`%lFzuok*JV7yIYd zqS`p&a^=JSdxrsYbjxVKPwk6_}pR1;Wlb z8XC%_8_U;a$i<(@j)!Ul>}t;X6Ix1F=pQxRF1+$8zD*e_W?I$PjU4~$YzIlgx0AkD z%n*qd_>%kv7bU@6hTp5_j!-wdtlP~nZ z>s>CTt~xLce3~n<7n#rZWFlMup%9O~WL#EfNa?_?W2}?5Cc5s3mubC~01EqTyuPP{ zHJ}?Hy3k)Xb1kAFSIes1gn<4;#{Y@o%kS@tpVepJfDA8nozLonZUXhV5n*4aDrGzJ zZ4llm#38{|Q5kT&4KPy3+Ry0)n-XE=%b#`2nz4B&ekDuDW2a94U@v9C(>kT^w-^u( zb8z&|#0-1xh;rLL{W*a{hoh|bTxyGyWiyDRBzL`GHGzuiy?~)j-h2w-{x9oE@$dHP zvGFshPXrjyEDB;9i*uWx^_lTJM;TcrzAmP^k&b`RR4 zxYaZ^S3fRKf3~Y5P^;>e)Q8`0r#E44VjzTcd7_dhIyd6SEK zLKs9NZPuAt{jsP|l%R%kUtU4T>POFHZF*ATA3|XZ@kQJdA5~{=F6n;TABFHcqc8aI z7Q`GgWN1}lc%0Fne*vd2GzKD8jbIgl?9bsD9?Q{5P32Os4@ ze?0PjzFaemEgdBa$3S;!*i8tFp6^+l+-dI0jLaOUulXH5?MQ+zE0gRXA%Zj4Z{+)k zy@Ee&tqF{1^s*8HeqIbbCueyEnO@_i@>h#PBI75lYi(i3;q#mirdgA2O`{223$WjR z#if)eQjx2o#|i%gWbCzob_F*rrPLJ6x|4H1=eQ*KDk2gvz9e%YaIDST-MWis=<#IG z5U~`V6J+KD6;EoTJyHlfs}#W+*o-#(me8_#3zS4z4hS0?L<1?=DfXVq+i`cG#*7@g z^}P1n{iP#qLpi46m%OtCrE>DwC-9n_lJg zjhYE!k2TRxo9;lO4hYPp_;o@jN%{MM-=He&GJMnmDl=?WGa2(~fd$bK97B3(r8Nlb6>H4mPxICIJ6G0Kh(4U#ZLYyhEHK zp$ske|BaEaG7g3OF0-4O2U!|FgjyLPP5A`XDqh#WoBsuGFtcoUXW5q#&`epD%za`` zqVFL|k{Krm&_)Q5&}S?KoP3OPF!oD-RE@Uh{CzL%ty5Z;>LI=@jJEvFZPDP@`?L z@2$&WQ&hdb2m*(md5v3u!^js^bxK8J#(#P(x+JfZf>K zkJQ>H{#LZ6(cY219_bwOxFUvYg()DI5}a~j+}+(&@YqE_yM6(#~Si<$p$V7t1)nu(QFGJNSmGg)!Lfp=?Z$ol7spi@a|ugV0;qUn6S#0 z=noq2NG_+dZ{%TC#WV`g%ok$F-%PnYOs?9{+O2U2_r|Jmv2=YYEFhiLsK8hpMMPIq%9212a>qvZx#Vg!2R~%d77q;g#2F2TeJA$N@ z$b6bAuGNc3c|R(UNZ-$ue>TDa9gG#}Cf()zp3AP8?2QOe=W}vBcM(3q1Mn*3&KA|% z(KYOKL;A7=|8FkHVTu6OZ^nj*of#7{$ZD5ss2bPAj@|)=!0VYuD8A?tVw@}!1`C{c z(TLE9{EmX8xw*Kr;71YDu)zezW|al{&13%nBPpE*1xlRCwYK<-)_+@zPkGi!weStz z6ni#oV|fVu6_nf-5Nk9gQu5IoRBtFYVY+Dx+a=f6tN`>-Y5uYD()`Z^Svs z&Z@Q?LLK+SWg1u?U%ab>GIV$xEu;mvaOBtqDr_b2zM6h*T4E^LOsXXF1g{Au$f1!g zfJY7|FwVau#iqr+G)$Ucs(SsMK^dorPv%1@AKTEM!y8h0P?fB&963}h-l7tB z-NgK}AQ9NgMzLG8_VWYx1=n`Mrg7J@y@z zc@(WVib9Q;jJJ%}IVc;oA0Uu@PClqJi`D(=}cxWuJJqm#h@Zl)^2PNz+ND4a`k*;H0y|Wd2Z&NRO1ia=g zFqB5t^D(D)0{UX#ku>R{twG{N70Z}|_^D&+rr?dvm-hcpM< zni`)B%}xX-&QZ`nn?-H<)CGb7^Gk5Q3e<UQN!5KB>$WA4;a1FB@pr=%T}}4XI)oz* z1qD*k{kpm{F#l5kY#Z}=jD==2A}Czi?6x1jGtf_E&_dHULfYe{Uf&`8^T;&>w~$e6 ze|~q|BR15PDjZ%ThXR@@Jb#4(r#pH zNX!UDx}UW{1Y(C?EeuO$N0IKFrNC?%+yb4goD~?!`l=w-Xr>0JA+VFHt}Y~|h)OQ* z$ywJ;;57&`mth3}3q2*?;eCVz0;U(uml*N zFs;!`HxW8BC-3VyzZVXK3ATL?hd03{mLqU$FKF~fhZh_0oc?WT%sAL`Kr>IgqA^y;~TSQ{33 z#5(;{#&L6*GVxGLPbSsrt|24i)b)`#ZD(xbQ!??Hz6pG|>mVJre3@8~zwQJ)S8gQM zAY!kcM3&>8jv#Ak_zTWd(i zqY*t>_EGW}Eybjv^**9RNyIMvX1vPT7VE`TAi6BOXrwW8^XYq`TsNX_B4U&R(#nSt zdO|3(ybWf|xs$kNYa(zQ<)o7!@Q~CPu0K3;P--jt{5$EpxdapoKwY=vw=CA~l&o+u zT->RtIKVE#v4Z|O=3XcY@x|)l6;AV|)G!gV4}f(Pi{DE%4SdC25)P2@W<}&2R9zcgLAMHF(D8Ske}nzXtCk$^;OHx$Ydo z*>T`Xzm0g>fQGqZA(Twvv^S-eyzr8|ohPbKrs+e{^kfOjx7#vc{c<2@{ zVw|VOy%CX$l97mm}? zExj~8{tI6|P14K-v{4UBc3AE{5pgcRJe4By{qUmr_@p}JMaHgx_wOJ!c!t&X_&)pPiH>(*d50A+lWPN_^iiI-f47T>U z3{%vW_8=>;JBI4nVnNEo4*#yr@-KDlIrazQX^l;MSZIK8>ZKcNU@}a(ORQwS<3PtA z?&S{>CBx0V$iXUeM3M4k!K>eY{Lw!7i+xN}D?;Bzqw2T$&NI&Q2-PCP@Ph-Ibj!}; zu;|HW(&#n=Gc0CfUI^z3i&pxgRj4;fdQgF}sa(}r6-wJu-3xg55f{NZ7&ozn|i#+J6E^JWF)SR*i>XeHv^$oyG z+g*6ZzoryLw7Yr-wJGKW7iAL-@()7i$XwkcL=SC=f_RfM3;P^3Xh;e})J;m6kHnXg zy7Myd80iF*nF1&;j$8(qof=0C#Domi}+(6pNR}U(2g7V|ERme37 zGNuW3#(kPV(+4%G$xQ?c@7bGcFEpDcxTmrzxn6`|l>MpGizzPdH%gpg7enqnw#uEb zI@*B&{P#}mp)cv(`3L?{w2^xmUbR*)e0mY;O^|x`T}=GM@wCQLueK3s{3w{TDU7ZP z6RM;?^z)gslA2UaXeCK#$+c!{q|^@$USJ!KY}DdTL1}Z|Rs3M4!N9-x_J_}GOjK7fB~CD*hHoxeh~@Jm~ub( z3Ra4Ls|597M*C^}>J^|!kuO{%mCwmarIbuS50W%+o%J@3!GXf13jy;ep_9KKhJ!_@ z_tJc?C(a04a}wgrqr{AP`JxyL!{4h&pwX&0WifTrq~>$9WC7LfJqiU097zMLpWzod zUnQUECZjx31Gdr#<;f%9ZgPBxEvv zBa(k`RKZ-(T2vVNJI_sSRJ@e_QDFo`BMs@&!x5613VdF(oDqs30T<8q*8JJ1@$Vxb zsfI=s*_*m#9xT3*L}hg(KMn^gX$&0kV4MuKH>3f>P^2n`wdolSJzF$wv^Yb-;(`{+YZzpef>{KIL6+`0 za~vGag9~k@o5fk_Az%&`3z}y1ObIo2;yoo>^Cf4eS?iA#=<@Y%9(xb*6#V)a+5!-L zE5FG>%0($i>rslunQ%JvKC_7ZFiET)F>g1XYsv2We6e(HpK{I@#xX2vo?k|vDpDK} zW@7P3TIq#+G*=3Dl>14)Cx;}JGmpCKF^Tgad*38@%FJ6v$n0W*-+cSvBWfDdAExhD zfk^XEF0g?ZQG_D~Z4r&D!DL!+QS!fv7pp#{4S4gMRgi2!5Zi_VX#li>{J9vPF(`9o zm9E(8TU!-LpsZWTc0_8;$_k2 z`D$wgoW!bQ!IRWlWHB70_O#njMdB;!JKVGO#+H}j@r-JJK1Njl*^?z_ZE2{Pduj3& zOg3$CF=mC5FVR(C_xu~U-xeRST0l5rSm8yu`a@u^JwO1jV{(!Be<$1DSXqJwW+Ykh zn7ZXJ&>xQctFQgX8Qi$@(E`*Hturh~PAEzYJ7o-4jUih{R(P@DQxY-6(j_ ze}o4KUcs9K_Y-7D!Q5#SE(nr5J+-f;qA|S${&2%W#HR$fu5oTq_O{SME@gfbv=N2h zO#E#f@2{d~4y!&TSY=rw@y!+>h;;C6F;VhH^tqE*SSf$mtV@LzaE&nAxsT1< z?*M*+QxMUsYi{dGnc`kZ(~He(6T^JxXk@t1k_abd$2PWFMAfVR!QDhPssdeAZW^cHM5QC38pOl!d>3U z*@vKwYa8CJDLy$j(}om{xLOwQ`H93tDT>C`Q*A6XBGn8132^ZD1&j;5OUmK}wdsfV zId)-tx`i*pAA`UvOW?r!GU7=ZLO3cDb~Tx0P^nJyy5FEaV|h+C%m2SOD+g8~>g(Oh@|*4Mz5)J@5*P>ed3jO#KnSR6Hq?EBUtgp=Mm} z+Eb1-9E(%8@n-~As&4Wyauc320RRMFX(c3+5oyYqVgjo{SFe6ljWmT$Z4&VK9(#QY zN&H(=NU*~v^9Z&#l+OLhQqXGFQCT-I>qcf)vTO}WTHHmUX`d@~wz)hKk^tbP-9>9m z--z2UB7r=f-pu*Yb~Rp@8R6)& zPr>r{Y${l_{0xM-api2O@S|@d&2-!!?`gsb*m*E|QgT|Q)y#(|OHeJXO)2v*;H0@i zT_=^9>6$!|%3}1DlPU4Vp#UNJ-k~xad`+<=C~q|HXi!H!SPJzMnLkX+3HUV=aHh6t z&phFWhNW7bZ6x5qXy3Et2fBCM4Pnt*vl(5%_*1>r4G*T^+9xQ--{Ik^GB@1c>*!5C z*8H}3PFxo($|BxHK=v=9WAEo9G%7LO%B(Rg9TT-1E|%5~4mHsQ&dLz*P^E#9C9s*? z)ldKedD>zP#YA;_2;(yO=%2|ATt_qtMU9)Rtmp>vJ?gwtn+?z4iNJKk?b^z_6!}-i zT!fz5*YvBcHVy|8j`AtP^sBJUwk-VjDqeF~A%1kg-c^%1hh7hm%Z*yYs7k-foGwNW z+A$-RgM>OuTOt62NFrFz8Rc_A?*?MEK2i#B3>ElFB2n4}e4J07kd?jl8?gZP0Va7mj+9C-j`5ObdoWq8;UY zq<#-$PB-vbqm}AFqrr{DNjn%SMtrPSx(D##ohI#Ll$1D8J4f7pM^}J&)!Y==Ho(i{ zAlWl2yg?ft~)on{2<>f5%(mm*Ibwf8>P1J+B4oE_2F5 zx}nntsrItxgE>2KO5{-sWYcfbgZV>2_*L; zYVAav(R`+zUYCmB6ZNqhi$P@I?e6`Ie2cbc8_#JaPNsy>kfa1Urhe;Y> zEvt33HCiA!65~S=U8p3EQOPu+28N~Vo0AK}k+W<6>Eg2WU7iIRmDnhKv9xZ^s`?s< zm`=lgh$yja!TcZFL*K0o+W>(~H3wv6i~Jd#L|WK_W`l<+@p(*!tq|4bE^^H+Y8VZT z)$#P?O{BiV$e&!}L%(sU(e7ITucSl#tN+>NHeCwwIIkon>wG1K5XZb#()x95bqfT8zNG5fd0^+d=Qw%016mr?=5yP z;B-eoZ{iW-l$4jt`_P#E>Mi0huAAU$4PY)3bDP{Q=$XW!RJ*mhU^SF9!-0SgtB|<}`@A zD!iv8i0IJ$#Wq^;s{K>}&7KP&UIdW^MI z=*A(H?R;a-EOR)oP;AQ%H*5=dSJ2^>9J~Xx5h&HYL#`RvxNR7KP#qN=o{i&xNsehn z4nwd#$o~-~3o8VG40aYsmlj{3K+>T^9z|rYkktW|4{56Q34MTg-+bYyvVAk>K6P#@ z)mgdcpf@REJUzK1NqL}tU(mj_v)L;NYvtkfU$8;l^FI)$u4eYVAw zcIE>llq*{iK;fP6^($C1xauu9yG@rRPa_@|!isJnQy_qDsulw9!MV&;C<7LkHllRu zSln#*bTe?@;P55kComH}NBLcTlqWswuJ#RPN80mJN@Hi6+mZ(#$tUC0OP)>_wc%V} zOL5*tBAhkcD61_+J4xRYP{)`KTJAP)~>zkk9iTq18e6zqKD)$WzSM zD}9b>k=Y3HF1jxFU`eJ}?-e$nJ8Qe2{)fva9Q*8*EYDfi3V|3^fhUW#$A)wU8h!@{ z6#v9mk4syA(@cIFmQ-HSe0gjbCF-_*2{>QK=Q5{Ix5X|u!CLX}?qO?pr zjn~~=PoBxff!90=7~`a1tOybj8k8mrUv$0Qp(5Z9bHp@_n4WP%^sh+a=Y{GvQ0Y@d4E>GawnyYnDQ`x9q-l_t!f0kl?ZZ;f@T{|6J5HHfxux z?Nd`{vuQXt3s3wUOmuiF!f35>*EV82&yXBoHsWl|Bh~LFBJRH(Qu{_= zVPSoZD8`5P=0VXX}|&##${l5z-mTUd@1wHfK($3d3_U znRH|(JLeCwu1?W4H~%~c9gzlSUe1d5@va#q@zGZX4by^7A^&_U_^fQas>5G+&>T=K zpiIDZljQ!M6Q6GchBD3fHjT_SJRj|vFpk#aNIxT!6m5m=n$K~6GWKw~vpG@?XFdU4 z#T;ii_Btvbl&Ag`>CPIR>XCJw+nE#!}Z)l+-)c|iy`y#6J}!xj${ZP^#vM}(kZ;xu*Y z@dLGVJ0T}O{A5(IYwf0>udVVl0@SaN`UlPFA4@+mMf!BZU9v9vZN?&F0t%ci^ z)28rkQWzJ6W{G9)wY{^Irj?zb?exbaMieL>BAM29DYKzDJXCZcB;@R}st$bK(oF#Cxwl2& z@qg9>{C{QDqnG;w7xazEY^Cc<7Lr{JS;x`1v+tb8fC^?fT5ehDts@zC_zzVnAquUX zj`JbDx?RCkq6!7`yJA`r&d^bkvI=K8PkblJC;`eB{+yNN5sMS&#?qD(dlrPX@C6ud zd&D(LOR9~N_etlf7D29zUQx0#Hu0`d1e8=rR#|F6=Cj?QtMv_$s!3lI0JbHI&jsMud_CowiG zR_?3wZ_~3v(!jH!f$Wxl-1>?ObR4$9aWiS2)ckcN(13l&su8Dp{##<5j?EQJ2-7Lt z=qx%G(!<>znlnW+^#%r9Q}tbFjpK7PTY7dLyXLQ}`pKe%&-n%2p+QMSEaAp7`~5KS zTq7TLW*Pr+GPS>}1k(ZtvQ;|Ws-I;c@V@DQ2;8iympn`^f|idWnL zep#Cu0OeI(v_OxR8F4)3zKKR!o)fh*zKyVaG?wSi>@U{X3(NM$o#*9~CaK-SVr&!r z9uj`0T?rDw>gk<>0SbMcd)VKn*$rYOd+uxr5*6)H#=gMtVl?(;p12k|PYbO^%QgL+ z)mq4ON18!^7m~4o^UaNAeOu3yxu=D~pCrusx9=rwK7 z<{eedj}(PA8`*f@m*qMX)9x={kKU@>41GI~o)F;SFBCa(;0UfoDT=a;XZ!Gr&B< zvQ%{jH<4`)GJmh}tn{0RoMux}H3IUjzma+Upb$%5$yvkkd`eb^?HZW%^(FI*8gt&;A~??vzWNfd zakQTOoX(jF_WTZ+ z0>~hM>-I53@mF7F276gdGxkLrX4OJFKHF3mY5r-{sqBdald>rvSbWd*;M|?{O)0IB zby`J=c=2qaN{EgjMyahrQ;l6z5<=CnEN_u|&(~Zc<$D@45H`SJ^O5n6gQ#6cRal0+ zB_F*@v#k&IjrRY&*J!lIAGx;Oq>(i=-9uDZWLbBTy8X}+3x&SkypQPntUZo3uLsv) zH7i@s!x?X5+s?EQLFo|aIPuTRt@}s(S-$n2;Hk}d^i!SR6o^jW8UhT2-~RC%)Jdl5 zv@eG3$Pk_QQu2BhuHUz7eWq??beNmk{yv&Vt6K3JLfkq61srv~o`bOkN+LJ&^hdkL zV>xmZ83Pve{O3K?yHd$AC`R7mMyr(1<$bgGi7xn7#v@QQ z%&lPKenv8(w{tHlOaba{br#btKuW$IWa1WN&@1^*T^2+`$b3Pk{L5NnX&d*hEDMkQ4s`>(s}eNC8AWE&ateJfDP|1JP^b1F`I zRY-p&H9bY}%|>wj^qh5>yT2M23Tc9;Fm)3~4{gbLl0Fe-aFS5b@jn|*c)w;yz)EMG1{ht%P;8p?4`WUEap;TVpRLi{^f z@g07etwpI(&u^CA6~VuPz_QF8@x384|BMn;Sk5-lub65JufZ!k+{d0Mr&&TJyk!is zfrHcRr|Py5?qpL0gVxwB6&&&i<|E1ldV&b$WkR?+P`0CjzzSo?J zJ+qK>#y|%Or3B$Sd5yiQxb;agQI3!4f`S=*ifLL=0AT4CHP-0|F^M+}5lmt{Kf8n` zQP(_<^nk+NM4{HIl*f9Kzh~lZ70?b-{g}sru^e!1Q7(K-3V}x=aaij zkUgzH;IHh)+g!B3ZYft-!Yw>uBanjJZQ+z-0`skWRVnMH5y@iw?ncb{>J9agS@fgR{hr z!+(mTR}QPf@#Y_zPt2|ARabjhA?^|_R) zieikGC|xzZR5tfxY?MJhAUA%SOt3N>Z;2Y=!|WxeTQ12f%Px9uO=OyX!5R<1v?ztL z#4AT+j?J{;9ExKo5bRScMZxIHDRzbH1I*vp7aZ>UinGr5uNbYTW%npEmf)paZ1J)bOr7efkd1OL|WBpv+*5HG~CvA9pa)ofxFn<<0FM&$mJ!f?{Kh=66 z-7Dyqc~w4Ul)rZdF=b|j+T@B)W?P-QFgRmRoJ<2@^+`6bm7xDTe9?KY^hHS^vFTd) z>$nPSgHzp;Wo##-ToST!1qMr(Al*Iwp^r}KH&Hs@P6_2j{ngwDXqyMYl5KWP)^@1M zv^0u~lF2K&9x@98pOT_YqAq3N+Aa$FYk2?y_|I&!IDYL711%)O7XCRN&^r1T%g--~ z%HhG~>EsMS z9LeE4&Z+JI+EXs@S|YYCYonPQN_*dk=7XVPF(>*6Vk`p=+>7jD7F7Q~R?kA_da!Gf z=v+$-+Nawt_by>u&!Xe4kz|`*<8Yo_{0)v{lE&OfYJoH>n^Y8kvMug7)A2u&XnS~{ zStV26TX%K+0*?RS>$GV1SUeHrZf^!?qrQX8ghro*+VrtfKII5zU(fKqMgp z+MAtM#w}8iI`wN~0_?4Rt6R$|IoQIG;Ow(8R&>3D*i#IEzoJqFF;d0q_7d_MV@N@| zI!Db9JG@lj=Fi*u?+Y=WbQcPyfG<+TR`jnH`-M~9(ZhK*DX60KWT1^iPl;}8rKW3U zt7}ULZuq+?Dl+yE@U@hCh|f83>tn~YxMxf%`e+D*Kj z;!wuYYuPGqH8f_FE;{6r<0oF(q$Rnv9hEdE?s-l9q<$bQ#o)lan7$lo`l5yfAZl?g zgh-s%AF-wxa9%^dFA64s4sw^u%l&5PEDD^RjFZ$}@3Rfu~$X&TxI>z0$l2>&00U-Tp}!2U)LL zS7`7c4}m7qH9H9cNzou&IO=k_WoyzTdENl`7&L-skUS(ykE-ODmK^0ndq+RgMF}Ia zXsik;spfWhc=bZY9JWW*@`?tR1N$_^Es8FQv~&c)J6Ou0_LgE z*=Epc-E&KJS^5|icmNt8G1#_qAfH;5Ut!JTw851dz2w2taj%Fzq=-h|Bc~98E+A&2 zfZoxhg9m&%)KBY+!U8G(T9M<7ccqMnHb|k7$V@0WOw^9HoyZ2>M{t0)7)5Z#W4$s< z5WK)zNTXY^i_vkMT5yelMQvC?Twz!|7}PhC7)%9_9vXAKQnJA`KZXDmTzf~!fpve( z7^fiEDh~^e)b^LF5BM?x1^e}J#2r-Y$s)r6h= zE4M6qhoeHA>Trn3ZwN$v-yP9o*_B2^wbm0QHyuDvk*{dpPiE(8gkLt$51A-O)Ak#B zr@FX%EYfZNWvxUW9M1*rMFsvjsrX{y+O@(^7!W#}2#x}YMb5}2@%JgmlLn$Ly3QWf zSlgjzB^HeYqRy5pr0f^%wN`xv--PR$pp&<0mM{U1Jr|fm#vw3!Pi($18&5u^M{@Z3 zvVvhvcVoPk&WD1uqkojr$hL5Y^C=V;X#_sd-=tuMYuPjPwhBKQKTDAbI`3ITzsKAm zKSAN6d!&=uz#|n)bzTl;#TLRYA{=+hA99>R5}B+*0`4pk1aOFL1#t8<;;9_FRMrNP z%{kzr?DxhDyFx0=9?B6uOJPq8#@D{WR{JOBm#WDoc5Mv5(F-vK$R+JvHr{mAt2%r5 zkcY?itOG0+-J-?#j5Y!RYFqAIbq3^`S{u3^y%p6zh~1C#FeJIFIFop*?@w#F3|vqo zr;KG^gTDBiEm%$YL9B>pB)*60@bOoG>5`~&LWSqGMhSsN^AB-={i8ut8$N3T^oCI1c}f4>LM4EdIdR6ECGvNYa#tbSj9nY5(jg*e(-yjYxYEE zP0zIRIs63nK>Axx=_kQBO@kPVE@jhkRbnfbdLC&?qT(--WC!MA^MW>M-jmlr+Dh6*oKLFbtSMItMNEaE zD+X#ipVQ81iwF7_Psx=VjL&P9)YEU}x#jHp-^88Iif@F_(LWmBdDGweNhf8e|)&?syswU9G(u@_zN+}=6VNrzL;W+`t7Jh8C5J7F3K z!TUWMIDEBUXU;@NOX}Wnykvmv&J+( zL42V=fnYREdzP25>|y!^nIz<&GkEIULIuXpPQwRgx2FdSFL722vam4m>z zosIX$B;0OJInK8msVnB-((6ixp0I-6D)~|ge7AsqpQ|>-ea-O2mg_f<(|87@vKs7& zl2u&#*>)(|$47$Z+s@-ehijS%KW4m0=1{ez`5MG??J$~VrS9D0WxgUeZDiRBp-_r& zQr)Kzw@}~i^Xe=4!S4C9TY5eXA*7p1Cq^71CE!5(`{1BN7ikdB{NJwz&ZH49*K9~? z>-O`^h*$>xKxYV-^*P6s3KNwpovecuu%)a~z?8xB zrVbyQ06kQoj1Fm}>t=#}Y?A~m+tnLVlG^`iBC>G<0ez{Qz@mWLw~2uuIr8Xs9leB}tSI%}7)i@!nS)74L(AIIc=N*71UvV1MpCmth z3U}qdUrN!54l@9z8)M9YuhD3tu=S3J?Z)H|#%X2^EqE_C{OWAibZ-34x4}AmhIX7gLZ9XE|0zjaBBNK?u|F>hMV#t7 z)0_Y04%5(_#-om?a5{ZNGHRu>CxVlhz9nns9@$fM8}Z^w$xOuLDH?k`9GRy!)nB&~ zqmy9#25BW`4A4* zh=$*6gO@QtTysoG;)TCN#RlKo_W&ZGM9xPVar1&nudbT2}zl2)v|4ji1L(N?h7Qa}(rhOX%vFW@8lrty3h4iqCYN z4XT7H#UJ383Q`;sljCro9M@|qre$537vPJ4)$Kg>ZGEZB92Ujg@2GFWY$=Ww8GHWB7^Mpcc z+@7xlE$5MkV@7M*F#?48=VvJ(Sy#pFhTcPqHJK+muEUrL}C zuJBFGBhBGmoRP%9DC~H0%AW^UW}0r(ypcU_8KW&BxFI_k4?t2oNn@M=3U(FY_YznV zz=z{}QGCYzmHPez4r|vvZSR%|^NA=bFixf_=aQFZdX*+$7lNiGsk8wnNn8O?p&DTL ze>UIRkBE8v26HEPry!ndOKMxA^akdW%p(PcAzt>QPkgT~#_3XBC_Hi|it&i8tmkp? zssuC5<-0v_HM~1V_Q1Nbr=ToC=A{!N}r@;BNe)VSh5JY?lB%cSz=M zJpHo!cK;W}@z$QAiZ_=39S)D*g~>9}z|JCa^!w14ec6ESNAlVTJ;t2hZ~ZnL%W1R$ z9;pGK_Gs4PCIxCXCkO*FP!OOCY|XQ#Ta3D$fMzkao0o zo8qdgj1Nodmiau`W#Q~*46ENc(&IW$>%M+qbPvO#l$7VYWnb=5A8inyG+Qm&?;tyy?82pmy55USOzxrL3}fRM$V@+1g&M zDitHA=85#GH(tM5>At%0*CM_T53_YLDi-#Y&$o?lCP|J;wZjIl^(MPHg}Jza=3(AMIetDs!gQKNWNXOosFR;Xpt>dFEw-lE+^ zu~Vg~+h(>x@pT7oO66A6v(u1@y<0m0l55u}(rq$Xw0NW1q_g4MSD6&odOs%A-6jP8fZm<2%=3+;curi!w&d;;P5t;Irogw=J& zb4Uk_jXCm1jm~bU?^lS#!z{`R2guQ18~?%iVq#BFcd^i+w=9Gb!5(qO2x?^8+nn@3 z2IrZc!eVT+DJ;W4LH2B4(X|;6h}p2XbOC0KQp}xyEPw_rSoHSH_Yf>;UFhsOj+I_) z9wl&QIK$&JhE9PvYkq?|yqp?!HT}wFeD5QPPH@~0KY-TJPhS}o*T2lVD^jg*BvuyjDP==UG1?u2e%W(jKf z7vadaFTWX`MA{49YZpVPB_qcI40MD)Rg1bI7Q?xgAJb{8EV3ID?6=(FtDv1O1;~c@ zQ{Flm^{zGLI#g$jz^ickKlA+IjdKCiOS0N@66BrveD{2)%UIk>ym63{%;=!!$UJp% zXA|4LVPp4ORc*}X2qF;JdaIGmcC%WQY59_bNOfvlEf5e{r+(F`6u;`E+BUx|P6ZN{ zQ4+?AM>FYIb_0N48+&;}%MLj`%#=Ahy(uV4^$SqwG8J2sImOm>RE@Jsf$ALcr>if1 zfhOVz=?cuqh$0&M5wY>r*QHa#CE<5BOEAm&q9elH6X6Q>)%pkW9D$|rPR!Ccr_P3K z?!+PtSDhj6M^~6|*%#~`7DpZ3p~+J7m0@Mn?A|H>HV%*CGO`of71|t}`(!lAyMs3n zava;9F0u+2+x!pg-e9Dwg?2?SStbX?4BwaR&%q@Hf8m;MEchW8Tv@DIcWJKzQAw@@LB@Vt`0tDpFBO>bmAAiu+t{?8dIcTxGe6*Y z*zseq4^UFZi`6HjCv-}vOfw}yT|@QLwc1-;Q*Zy<)JHFix#lMaUz?bvV&F4wjBt8{ z@2xS372z+QkxhVbMeSkXx0E{9N##k`p4KFo{Gx}59kRa_O}P6zk!WB!L)1sGQiP{Y z9}WO!=XRYn#d$rN2KaL6jeAHTc&{)&lj7{mO(KH!K~^E@Py2{!jH#@;DNQP>OMtv^ zE-|*+Zr7`UVKwzM8<4Vz1S;#uf(M_IaEfq=uW_-f49l0+S+e7z`ggJ)KNt@62 z;P%FI4l}R_vh?VR;w0n6G*nr!`SPyTiBsw7q|o~hyK7(@_Y2yFVh4#}~ZN_hA3pkP^%vxvZ35dZ=}{l8Gf z$%I?L3I$g{3s=>s{S@dJwsSgDzGAA}a58Q*M;Akr|wO{XC%L}Z1U&T2) zvqIYAvob5sUZqM6Jlha2Z5ioWd{C862gx|0*5%QpOGQe|PN*y-OC+t#D$^_63*<>7 zYfg>x;d&q=z06r(9qHOr;CGfOlNWkBUndueBx)XFK?cdcO(fFZTuti;eYrM+6TCGEl>wzBZWV$-H0_1HpKc0SBU4aQ z!#j+cas`C7M&Q@33z*JvFm#QybLoStFr$5ph4Gb75Ya**x!zz40Cp(qa|7)pUO42= z%wNXnTEaJ=uJQOW25HzQ{axrGv}+bAZQq*lIrmX#LtYWyf^9kASC9YIG?x;B_fnsaIu!Ak1be2nwXi_?6t6uZ;3hrZs26|S`HRQ16%IBO;gCdG z4W#C!qexFrQ5&LirFU?Cs7?CY$nLt_s1ho5=8Dg*#afP<7*XMKJCr7zd;)&?xQ2xhBR{y)8 z|CjEoub*~H;*~zPHRBD0Nj(wU7|2zSD5m*)lS_8P+arJQiAian({NZHDTz#xX8PBJ zHcvkBpv!oSxO%E_{d|VmjH0h&qR-blpXwj|Bz2x8ZU_rcZ4q(t z%PlBc0KM(CxgZt%z`^4iA{=#-z&oMXJfEgI#%ZLWZ0q=VyX+Ishm$kd)HSpxzd0hs ziNNRMsl(INu-8r%RSNJs85?TC83~x~=M6UpcH}4La0BPcuj*JK5Y_T~+@Ph!?@-$w zF;11wk-1?ws?{jOOwy3rA&77LO&5Eq)w%D@_Zi`xzHX3o&$JS5L>?6$>FU^Gn<3L zFt5La>Nc0K+`mc`Ufm52V}dRcS$_d`W-LK{lSfvO0bmTd)u64mte|;ok-nO9In5^*jdBN9yd^+yp)rK66lUB2&uZeooKfoM zk#hp=ZcXr&>OFk6xZlX)UdZx1ocU#QphdEsO%p!bqFTh9kx>6o&CCpazQ`Ww1w}{? z6W?LgvGnY=H8^@XcGMPSvSj0-K;;sr9iF;hQDRblOPZSNT@dIyzY@YR5(KHGEuEu* zmX%h0XP#qyg?wDW*?H-i!PbQ&Gq75eQ2Q<#iR^-9skToWSUvlR*L_eTWQsBRkiEiU z_o(@hu@nkj_oN?6wYK)P#9KJAGQmn?q&}zkcD_8DVH!Cw&qPr~tnQAf7F=+T@I_Mj zHUQ9)1fG6Ac@hWYtUhV-cq!+EZW)Xk&kkPDIFIEGJDH94iJ(B@k*iLjX}4oO!{U=Q zD{XR71HC)9tBdQfHy{+a2rYZ(V+ZwZdFPM6`=R%~i|#H@kS|cBv#z*6 zkIwU=etGThyW1-ALrh!0Plzm3TvsdJ>7>mCX#eaQ}sn&cNTllyKN zZ_SOpu)!W25*zJ~)Ng83?A_0(x0(n`y`?bk;Uwj@`>r?ynj4DmN8Y7UPysQ-bVfF! z;)dFo3O0F=a@e#z!^99Fl|dVWfby#)GI=G+C~zKEz8LJ-j)Tq@^2{1Z+2n_|%ID8c zjA9j&K`6wtLp+%yjBXlSF5O8jFxlBP`{suGS<}X+y6GZ(gi!I$=--2e#m;KV**8AHFp}o~s_$yaWCcYKQz1mo%K%;Hy*Oq7pa6M%rl*Kpy%DTb(nl zZakFc=jBTBiD{}Bqn!S(7$2~{|KXUek@IEMuZDgN5bLJFWH4|&KlCUSYx&+P(!-BJ z;CIBTNi<4oVe0c81G|_$(7d_kQ1hfd2#J9b1tc7Z92=qw443>RZ!6&Rgsf6k3_Zpa zus%O%OVA-^c_Zb~g|NZ1^>8M?#Oks$o3`jzX^-R~x4L^@)|%eDJjKZJCZfQuo_w|< zRx7DdPgOEuq3)v;{ihw{tKCxj{Popa??m_bd#9<1jXGKE)yMOTYI@f!$HgNK4>kNq za|}_ePIcK$sl>g?D{J3~-3K*PLYLrm$Db`i=dcNn~(9@6B_tag%OT&Sjh(&=ytY`F?! zfXlvOdy1(Kw9g+eyZA89+_PZ`BF<e*c<< zUo(*{dEp2fgMBTeJpS(9ZWf%8%PCFtm$@2$9GzYC>7i`>0*e{#Sx!P9MG15r5XYZ# zm;jh63Lu8jzJcv_CWFcn}4@W)a1!37gv7C%dvr6Yl;yCQRNtAzTBD0I1%97 z8FuvZl6O#2Lw$vPv)u(_eeKx5ph%Jpt&h78@qmp&*(%PbchA|zx29p%mMh*TS5jLO zMe-mbmzu^K!*SJ>>6HbS8FN164rCbb;;`??YTqKcnsj#4nf#2*Cn_Dt+$fgYmuMxH zISGE%J_Bxx0FNo>@wa^T+Ue1T{GDnf(*Qx8p*UzNrbIYIGaNyH&X&$ryCQ9J9h>7f zvNFnaJ!CH`oVr+GUk^L<#p*FT&xzX8aA4D?a%01BV;T!ZI#~b$866$YEYcP5m)UwN zN&2~@{>ZyqLh+dZEhXk<`+5ARW2tro+k=j%+k zbWUe&ZlFx`{bfHyKcQdip$IA)_{`4|eA zIz6&6$&STs=zYtcWX&1{$x7DXKWzpt)-7JV^aYIus$Ob z0z?kC*ERbgNilC)ChmnF1SiIAKVK*@z?83`zK`S)FeSc0Y)D?`PZITQZK;WGB8AH^ zVu7x37eVDpAU3(vs`Qdg4cG5=fr?}g4o*GYvg{bbXae~*NX94q4Y!^33<)UT1->^5 z3ugNC@F)EP9^~sgrE!7&ZqX#`zQiSDSd=Iv=v$9W!v3VA;bB66Vj(9}1=OdS*Tt!b$*SYK6}wPpEK3yB%tI4X5G?T4G9y0q>D(I1a?dd)W^?H(d;!cc@=3S>C_n=@zJYz8Aab1sanv!*2 zj5)t76VZ<@6-!_l^(cL60XckKE*Nfh<35(*1)`b{vS*B#brYotx-u~I3Sv1B*XrZt zMQbpEOgl~%8DxKmh>aXAW~X9w-LQdjVScsm#pPG*ZCEH1QxXUohzb7Vo`(&Bzfzhk zf{^(gKSlJp^7gj((?GH+=PyOFTEAuT|4jz({a`)q zl%U3cGk)wY`Ihrgc9e!wDNQn)uWu~#ZdFPBTAPh{R}O$L<%tbZ7os7A8mFBcj5K-~ zVYzW}^N)amov~7>R5k2VD{*OY+zo^4V_^9n+smu-+RPwg&^LAQj+Eagr+3fD6eCck zqivknQQnS*5u`8JS$0MT z8=!l{0870~k8YZGeU;a+D2XVKwggjP-yo4yUU)UEtoy5J&~iWj7R)CYrbK zWLf|1gus&fFQwDR!KL1>wG_kvT6YkB26h$DW;&chtTUXnZHRC@M{(OK#B8!PL_?OvqMi^#S7jal+f{-p3 zynq5sZD#9NSxw*5M%1xH%Nsk&yY*?_wsLLCLLL&O58})3G3(v`9BCse9<*>5Qm2*X zyEbk^jgw!cQwnY#bf#BwX;MK}#*Yx{?4@>XIG;%LnJ6~!7402lhC!5lm+lqO`PHB$ zk#0GRBeVX-P1tV`l04E2h1)y2aW(XIy6!zdgn4?kehtE66he=~$~sFOTfR--`dY5V z9-!L&Mr|EF-2OD_qDPazUXYnGd!sm@xVMqutmvRcxHK}SlO42607utkagU0H4u&yd zNZG#C-AW~A^w&hBn5A>#nAo-c?|jEG?)JaeFzGBtfpB!Mh`|Rn<{vdKyd<{~*9GZJ z}?jh4Y>RoDIu;Wm3eBr6-ixb@5LN2&t|l}1tojO!Qu-z;w4dk=oYB7)jOk? z#GY-4@7v}6)$a^{JLx@+ZN)d2rf{7kFs}UAvnQqvX{j*zDop{k^W;@u$ZW|&KkDr5 zpRUKkMbU0;04}u{C!LtGaedu9O7STr*`er<@N7fwy3}NPRs?ym5k(@wNTp3v*J;Wp zRfkEx(^**c`8hXEu@zu!!<`nh_kz$%q(EDN^AmndAU9nc`htwf*+&!P|67~X=r^lL zKzqm#*J(7GC&o`bZ&9*7ta{I(C@5i+>CEX1*$<>5z*QJU(P)PD)kbpZ%*I4|({Guu z^v1R|1RkLAT3=egH+9=pCcce6B8%)68JWvQ!(~2hHGYT4{fKXzWP<&I`*n>RtZNgs zR{hLt-uryDg7JvgZFx#W8OowZ6y)vv%;SardEPM#T6myAku46)6ySs zoS-I*I+xp;zQsgiKa=s*Zv|WMV_Or+O$lOvO@79;cF>K}J$keIV`oC(<6gkpP!0mO z=+P&syys8G?g`P|U_=v1=)lE2P0a=)lE6u37@Hcoc(<75 z>7%jtyhP*M{GS{Mv9P~jzqhhAC}j~BV{0lLI-t@N&VuPNF05i<@Oy;r7e=1X3X8u= zkPSbdlc2zlv^c6Z%)}<3PvSipd&c8~evxH`t zeDXXS1Mh^tasHUHR)$#(>x9iXtQWWqGMP`S(;R2sNCT#jVENGAJ?~YYOFVzz8LN{3 zPq8+o=L1b}>$B#F2-GAzyC1D(dp&l%$7)+k^I8yb((1@e*N#q>r`913S2TwXb2yR* z8V3Lq9lx&~6B!Yx1L`gJEr#mwbrGagSo-T%i!E>BX`^%3KqRSo@|KNY6AWhEO3>NoOWoS^IIz!IRQvUi~_b;{J&x9n` zD!i*Hk>r*`I@3Ld7dGF>2%`MiMEa53EGBjgK92+#s*Uvy!rjM@PEWV#bD5+vF>}Z&lvr|I2EBYebU@?zPeN>BKaw}fjRE*)b ztUBH65ShpFYf$(j#=&*5|Gy;bguBrR+Gi@G5~n_yOaxBJ5oJ|+&kJxR3~?*?Yqgvj zs07lQc5lN*b*bEMjNPI}C0&3@Vz42=8aevqjv~HlF@=a-n^l_M&PGXPh2WLWT?gcr z24p=RrR#Bf^yS_!v7|bzkPf4hkMr!H>d58EX_8o>%W{+w=w8&B)fohR(v;b!jw0PW z1@cqX-)(#ikTj#(S#HPxFBg!Uy6QwU(%hbqCGCZBruoeN@eT?PA}j{fFQvE3zbax9 zZKdT43j{`OU$~#{Rz_6!siISgxnyz5n1!2%(VlBDp)IwzHtM>G4!*5axxS}q)+d%nufY@?FV3Y zXD!%}U}4TTy_9VNU(e6O|Jq&?TXuVRv|$JCnMNd0&@dr%I%FROtBp7Vu3WNn;Klrk+n zt{x>jK8D-h5At9S0Bb1Ng>E+*)C=%&JXs!=zsseP1d-`;NV9o6fYNNM#7{D=3%}_3 z0&vgRH+jRv^}>f&jKN&qQYEh*A_)aFmDtUoN1g$HAXM03oin{RK6H$-Ae(B#EOfed zTAN4pi!cyMSB}E)tR`hUM0;n-d}{F;Tw5CM8dfJ0+Dbt<{xd{1Q;?tMOmMs5dg;9( zpng~>f&nc}vQ&6JI$W1G`c_3kF%8#``4bZ$@KyewfMTM^G&@>w1uPE!qefC~SOzli zg>hKF9X!WrnB~R`Y5XOS(cB%Ty$<~10V+Jg=rqK3*_TEZL3`ld-#Un z!f<{)`sBbkOev1S*f2QfW-rW=T?U|jE(1mDkt|zPzm5J%y2yCMRhJ$ao>;SZ2kbj+ zPk_MlNmul0{Ch6z?{SS>=jzbeJ*ntIn*dVQ`7;Ey4-E?$sxLy%9ylQhMQ%=|^$X2u zg)Gs5j+!FPg&N<%VoUdy!l6=hS@QZ%SM^z{tGY_uGJugQdXZ1Zb&MO*yspU*Su4`* zQ`xJ&?BEgTpA_PW)s83huQHmpi~~09`5(E)nIi1olpaqjC3aZ^&Xx)a(&e+I2R2zu zb-)vhn?1Qd2sVZdPF}~VOf+@?*Fcz;TF+WI&8eMcd+$>t0eoNb1At`_9xk+^<4)g% zbB;C4j%TkX}CK%(Y-BRWmkpfAfCHkpX;>lIO2#giUi7-6or;lvD=aR+bH5^>L)X_9Pt#0D3v@swL zo9uGEZ}}ro`Lg!G;A2Re&$Acxag9%WNq&m(PYah#3JkgJun<__s1in^nFfh+ir)*N zHUV&l-_&|MTx&v|r?~smwQ^^pc|k!Z4E}n8!nd4*MA#LRkptsJI1qHy5fEt&I8}lZ zDgy!%{+QK=qts7{Ft;xRtL8^Efc8XtubyWLg%4jTXc!buJXJMe~8aTdEX-M zFl=8vwN%yVPmKlY16E_xi+gutv47c1FF4y(cLTpo{@nP#EDmgkO{a4P)0Ss@`Trmc ztAjk9@@WM!W`S-OB9a>drEKdAMba}NrPKRu&a9_8LAYdXHK;GsD@x9bW{p@!ZO96;)u|!kNaih=vgkQHHNC9oFg7!}#t`gW zrcmlnE_<=}+bg!RbQCPu!oQOFcH5;!0U%gQEn(26%R0o~9A>aAHh1Effjx}c7gc{X z?ddRZW3k5|MjIFyF!pV&zL9^#mZ!ah@{~_KraB%?#}765_L4VLm5$0lAK3ldZfWRU zQ_nB@DJ%@~eYB|U(O^Df;rzhhc~0sK%AjWYX6@}G>RnK-z}}bJk6^5&?lvpWVbyfa zhrltIOg8m*OwvlH>=J;yw&B|vBk;1H&3-DCm?LB{3VRWzsBg)am7REyAg*Yn4Z+J3fwaH z9ge@uoYJ@4mkNx__Wl5`c?~^PI|l5QNzdh4wYmTm_I`f^0`he~7)N z0)r8|iyrXuzrwpg^J3LT5_&#XVwao(d#oIYj--s7iYMq1F-|g#3u%_RWI)SV0akGr z)ao&Bs^3`Xt{}j-t4gt-&RW4?{eaQJq5e?eA6RS`f0C^S=5Lulfv`XHfC}a{ifGY# zj0rdvar;I;Bdofe$Rx|=t%cD8t8<7^faJpCiVzJE1m&y3;)SWKSF^EyIwg+YADCGu z!1&_tG0VKw4!oI8iBCjQqoaN^A(Dq=mcO_Pc1gI5zz+0f5eT0A2{DE=b%xfOqZq#N=ixBBxZSP@2AoMv#eLR@bLF zj?h@>n$?q@7Qwo{9pT2Ic9*RyUf|wvX1vyf1Koreqe4nPJplVna0sQ|S2yOT;Ooi8 z%1#KVklz{Z_v3)vW_nzr7zt}xK27YR%-WOcV$yCu;|oI(KBFDNEM(HpTT&8-b?D)J z_1x)Y(!_$Y)g@o2x`GGu6qnDQIsfDcDis-D2lu{|Vn|+I59cbQ?-oG)i61xtE0B?r5lDO2fk}esh8pz?{yv`V z9ls)XhWBY_afR^&Ip`;{8QCe?E!giyJ&#z@9E_hYEJE};(jx2) zq#32R<^u)`rMi>g0ITgo1%L1p>*yarYwmh;aVG7!fr<-OJ7Ctu7!w_Z)GE5UmCjv2 zp|_I61j~uf+n1P1&JsDv7Q|44x#gmyCL~*UT%Qqjr_OvPjpmr32xb(NmzCw{8vJ*m z3p~@sx_58yrR-TqTT8-QPfGMeYGk3`41j1^X*%066%D)V+w4GTz^bYr+JWo!Y+HKe zw19fMV5hB5ou*!Hx~O0qpbRBYq12W32L88Z$J09=G0DEAQSjF!R_>!aXAIH(+qVF3Qnh0tmD^C&VOg z(0)rqE|Sq_xm=bdVSJ}@9M~AIlzU+?e0fqdAUQ`Y_o=q_OCf4IJr-oMT+CX7+*-{` zOijt?{WcI$0^}ED=oZ+T2^$x7_^0`hR;E|+Lpp@*R->Tq9<3qEJgNP%qS)o3wK_7! zBO4leRT6wcTb(G)e;7xst>esG7sE#my{FQaM?ZYS1;{TIVv&$zbeF<1D7}2(sLdYln zwfK3;J2XUQrq~N;-BcG`Z$h5VWt(^0XBytieS%k#2(bA^+ThJM*e=<6smu0uuph-x@6NPH+%)$A)$R`(pGoZ3g$F zmn(T=aH0cR^|pFpA6R!fepXvz{rfpARPxb}QQ{CaKiAHU<{Jomg=lA88A>BHFtqi! zS_l9zQoiz1&B3(gw2V1yX)IUuPQvuFM@wa6yff)J^1aLlVS2%J(UJ??>N^s!5Rn;-Lc7`Vxb8Q}QJ;PW!U>wx7%IFxk`8T^}>D=fI^82As4 z;07w}Kko2+YckkTdm<${L=l?@7tb~NrhVg>c>}-Xfw4aXCj0l{aG0O>!Nv*%nYz0~ zG7Z+gy@#7Ud0zPx-G~dD%KM{@)kke%Ij>`EqJ*gOA%*Bppew$7ZNob7ablELeAMjE zyqU9EQo~?L0o#^f7^%|xj|_hwE5}L@McG$WaVS^kC#z_Y+`0(;&LKPBcUb}SoKOJF z&`};Pmb>{LX4?)WGDw5Xw^J3ZO`_o-a^N!~owMRJcZYyWLeiZVFRRQ(ynW_}b`|I_ z1Q?--9|tLV9_iMJ4P$_HW89KxH3lz|d(0Awnx?qpGF|oL+1pz};%@D@GRhf%1$Ap+ z=ITJ?ibi8kPi-oBL%+96B6tbzC4Kol!()V0`7lT11ii7EJY?oN}!|s`7h?Vgw6>$nBcT0o#99t7#+UpX#2HC zu=%#9b}{$6nMQ_|mFlvwKHXhF#0P;E{2@EjoH2ySEf+@~1DQTXT4q6;Mv_-P!H}Hq zY0zKD6!=10OS!|zW{;e0$vpE#4NZQmBorWqO1EaBS9P$rXyp7nCP)o3naaz4s=F|5 zt*`q=+^3odwfbKp7HaTbr4Rq=oP;(K9iaon0G{^83tD@ZwehW@WQV1bUH1sP?HNU~ zhf>pAhSz#Q%+1tRJY`~1nn*N?5bMVq$8^=Ju)fLXj53PAQmxi}>XnCt;{n)HytlA} zSC+$z*+|lK|Leh8l=t3sa_6ERlk8-|586R?7KEua;B^1Qy+h-;+I+M&S}uV}`nfF( z8p3Vb&=?nWN$NPTD9l(FlnsazP@T4(4G2dJO`D*)nJwZ>WCQ6WNOIEK=^Q&Fb2)G` z=4<1BQOy1atNCy<#~U7OInVTSr@s|fjbQC%+A2-gf~Po<5P5>L3hAUdU4jj!CQCdP zbYF0wB{(ZdzF13i`fU;;gG&&0ry3XYni*hkx)rCeBOy7eN?m*4(7#$l1%@GUzV#mQ z=uy3-;Q*`4uZ1SI}Tn3LGrc)PDS3yK7VCU9r3%<&JI% zY5mt2-cF}sX*3plFo|1YLG7`m26(9^i%lY?+-3UhU>98TolxNWHBd?EOHcsCINxYW zzD_RZaI4wFK(c~&miRYMsOH`8<=9XKf5{bPXAZ!~92F|=kq=Lb<8ea?b(08QuTiOH z$!hTgNh`Q%65x#pAVqq!_L5LC2n_@XpFRH2+!{j8-u$b&pc}Gr^+Yn~GFZd;oKbP& zd-$1jlLZc=k_X}Pge*XxJY9r$x0*s_K>XbEQE66`(*lMNS0s0LXkt`I&s{uLp1`{g zKbCr^4nOQm4IsmBQbG6pU-}6&$OMN6NKTFGFISnrFgdB^eJ_MChxG{jNQtQAKc+cC z8%`WB9H_B_MI18assHP^UPywG4KfG@Yh$&(aM7emU#v_?rQ0{&gAOEgGNVe^R^3rE zQ|dvgxIH{6d!>&==c-{InbE@pqCYf9R+ROmh6s(kWM>w0a(<|9+*BG<`UE|B|4~05 z$1er7$?W0gRxt*bt`!`k=#w5Q+9d<&$6`GOt84L(g`98lNTeH~58OR17x?P4ITi)p z{|a};1;yHhlF|+~LsTC=ntKEY;y~wNcs3H#0&dK zlaJSE+1$M8F7{j(F;}o1&c1xr`dD0Ymh@ygF(#^+T{AIy^LJ0h6o7#)X5D>YVtl%n z16|D(a{4b9XO`_Wo20^}(t29$!H+89SF!MNxHlmtAuxX+eujNNf2hDUHh!h9z@j^t z4B8j-G*uL!C3e7C`M4%*uGKr$wpa&PyzCu3}C`54F3+ z`5Lng{O+FSXu?noPTppGU?Po;gr*fqk+jrRf?&Q}EM4QdLw>p?MBjb-6YO+OW?%+Z z+;vqRPY_hG2{Iblu(4P=NjV&U{gV}EAl*rJv*A^)2?$0t8?zAN zv_to^D89j6z$K?NM@q;{0VRc4WiNL-#|5X56cz}>Oy*uGhyk;hM1HZQLLu^>WX~lY zr>Fvlow|{KwMHzvi$B7r14N=48U(8Kyo_(66u#J|afvO*>S*;E9G8TD@cG}N;Ipzo zG0=-0wPX8`XQ)gBBsv|Gi<2^Be@dw&^12PHh@g3mW;Q)|ws$m{;d?MF73*Zx)apzi;GO-;jWOmcGk0 z1bwPpTCrg&Zd4g>9JVy0z;>FX1G5Lmr>!|bQtQBy2Z+Q8rZ3u!oChiP)ni$QOGi#I zRQvaqArTcfX>yF_fnMPsDm2>>n0({PDFCS2723#2wMI@Y$Hh^u z_E5UG!19B-Cke4iV>&5+tR6(SFpS?ykTyc-hq<-TNlb?vFy4LjD$$CvK)-B+7XDtB zOWdA5=J4z;?QHLz&kkA$U`FQ{>PyWl^y~b&LVzPW(sgAJ%^&uXdZEnBxMl8`0R-Cs z+7a>TODRV~8QJ~096b1vl$}$m%Jt3jSabJe&P}271$#z@9xwsB=q=m#4Wk=>^xs!E z_n;XI?g;HZtZBPIA%6S|$!1thA=pDl0g%1cU_!Xc_fj%P*V8@7lxTmtO>X0S{;;sg zJPNmJt05xdn7h+=SqO1z8#|GYk==3siJ&1SPSa`3GKQp$3=2DtMsv?x?%@ckG$0+g zZNLuA^*C5J>p>>>+jw%o8$AU@+wN9exvr)7G{;E90C<~2O47}XEfytlndJ$p08mAi z$%NdeAbXaj{%s;AWA#a#Zrw-~oVvcJu7dNC`Lvd@hNZ8q1}&o*i-HyT{@6hEfBl&( zuKDVXUY}Jq9LKP(?5o>OVk_Q(SLv2-lr-OH$d6Ekt}@{zh({8Do@c-Xc4c2m$o$@x zo3u)z)n6Mi5{aZkM<A_psivOiWr)gmedXrs1%rL!2V@Cgn$L`=_*o&) zDS?wYMDHXE?*qC%Ip1T}z2R#v9vgxmWKfC^&0jMda}7xr?K#Z2byAzit|bVVO97hS z$MeCNSGGyZ+U9KXKf||$vl2xIYpJ<8+KK~#QfRWvRuP%=g$!t>I@L-`^8ZC?!%6?= zUp>WvuK;13;YPCeMY+70@!hCRJ&FB=hboyQKfDjgaWNHJ>m7%KX_(V8 zB>GVYM;D7foqmD znOA|P(#YQ7~%(TT9;Dq*QmXZ!11Do%U)GY1FLX zx3~y1gT8Ss#O=jh9Clt>n-S!Bt+()6_G`$2cn&7^p*xp*ym+ia_IXlY6hY>$7RKcuy|C_-VrGs zCa^E^$6YZ5tnAiQ$sNhes8XyFiKjf8yM~cpODJG4nMcM1R?UUh3>D=llMbzt_h!isEjgMIZsScusN4dNl*!HxZ(VB&g`IF%C*M-$rEEG|ch8zbSkgmpN#14luEu0|_ZA`5#A9?s4&ic_XW`|2E8qDo=q zMCho(<#F`bB0WWz#g6h?hM8Ej6-@3ih^Bw{Sx>yZ?MiZvySq^?*JNP3r7c#tC)ENy zY5%*+Jik&VOgT;FwhFHa+_**@e-ynE&Af|&vSBAN9-t`6X^F3sd* zB)ZO*0B}_@c^InZutclucO9N&{Cw~EMHoUD*_rPKHjB6<0p7Xt91;QoR^10lQSpXZ zaGiq_zQnK)!iHy?`bVl=t=T(l%Rep^;OfaWWexa*-zdkuJE!`egKjC*d_F?PRF`Fw z*M;-EctrSZVU8N{he+T)D5Lwp#NTh?3gG&xg&P2FUCK&JyP{8)t{PH)Zg_+?5N6mG z()~VT4)tg5nt+*!Klxo}Xd$qq^Q09&EED?c#z2nFGM-oPlgA_OPHFoPjz%s0>4vZc z<~CC7w00C&MER$YbB&~&{^8arYYtphbt*M2Y(4imOH>L#sDd9XX#SO~K1HUmUjCxe z)}&;Z^Y)sSgr8*$m2Zkk{XR~bhUm~=5S}}9IiCwmi$^ zAR`+`bPr>CCm#8mOaD z$45->J(x5}4`^5uO$M}oUz@3a z$;6ci76;$1M2A~mss)|rH=@N+LiaAq+XBLxt3TM2koVb$GBI5iT85%I!a6`a~9O>pTL zx|2lkJU(zG&IXTZOO^`IIR@M~ohy7L7i*-Cv#6~!d!rGjZo~iDfmGvc6)I^v|KNg4 zwpf|oKxXU|9}L^Cy8S|VBpj4yDGL;>HI23Vxq&Yx?95KDn#V@y@pIsqLks1c@uN8; zUGGw_hSx@lIqA>HkBsEH!QUwHX1^Xn4km-@3)3CSzrcgXUgt4Mj8CTj%0X$)i{K~zi z&C!PCJTg`1O}j}r((C9#g4eo|taJY4<&D(%8@tKMW3--!Sxp->?A(BTTl>4`x^Bt- zBv@Pbutm8r{;&lmCPSApH}MG0kZ)=nr0rbLD&y9RX3?xT0o;OspG8C3tY0F+H!Ulj zI1Sc5WmYDmCX!C#XyeS?G}w73CJ)crKtb1)P~MPsJTK>%;Eo``XO5bo@TSil)?v`7 z-GHGc?j^-kuD?Xx<%@~v^f*>T8;okRK2Aw8Z(ea{l}_sZ3bAZmbMI0WlSoQGj#i%0 zI%z-1oK=0VVf2A&;>>auaxT&; zJ~l>J3)K-vRSO}=EP?SMPi-)6lFebK4{J!8bh>(?ZN*Klk4R2SI?O4p#Wzm_;I9yV zr9&L=g|WX^$JV0WBu?dik-*|1!?{$y$8O~4DF%HY_YPakK;|S{f@qa)(HRy-BG=b&_@7RDdY5uN_w2k(}}-uE=)*(d=FATzWZn>16P%bL|Rzbb@yG$Q;dRRrpVY` zD1lV&s?qzNC_{oRDgKm8iL7ZXe(jR0M=!+4^{Z9P8fpv9L!Rn_sE5go%hnJS^}%q3 z<|Y;L(PsVK?Q)clOh*)ONp>4YFl^**cl)_mRCfsN6dx3{+7Y@JtrNB0ckd*kU82ta zxXwg+iv80`9t%mO7lHJXC4}%3{e8{bX!q*AIIu~@M7)Z>qK}Xt1s>IKdx`tP^ z@v$jD76vydSbjDEqD~Tfziy1*gg6N2rzC*Y}zFim!2>sWgFGL00UBa!Lx>`h9igc7GL-L7B z)bMI!@Pa1T|#!$3jP_@XZbPQ4%sQ&#`v-&Fn&TH zrFeIete0$3;xi9HOCVTcZjJy|y3PI3egpM)%#9u0lqyxnp9^WixbU43qgZ#;0CA8a z#*tON5y!{{MorBlicTU*!gm|m)q?a}Hv1NisEpb!5iWt&uNwyf-B9;qokz2@W+NA3 zX5bHS&KRV6{QC|;HrNV5zT${T834+i|Ll6D4Z~|L=Bij%&TS&J@+q3L0 z^JAu&&t)R9NMvPFGk-Xm2~8KtDEu3fjlN=3vSV8_MirG0sI#mebZ(sA^5fx0Yjoi_ zfkq`BF(b=Vkk-7>y;PM73Z7~BSxLn!4>esd>G7S|y-FIXcz`^M(EjQ-^_|a-dI?qz zA>xht+=f}+N%$0VVKw+OvFnxpbkCrpxG&Q2=6s_=w0c$0@h~_@3!Rd)&%6T!hwk}5 z6DBbmR5NJns_O-PexqG0lqckX#mVa_gF5>dPzuzcV~}&ZDezxA2l_fQ_4GK8jtn{x z+P3hX!yV3>JMCWGL^F!)5RIPwi@5Lu*~fzF_{xPy-@k;%d|1aF1Qh3?L<2UvSwY~= zx`i390RKM#z|!}JLGK3;4N25>&&L>q;yaZ*g%k!4}9C8)0k;_j%d+D^Z`KdwxKsce34X~7>4RcI%rF#%xq?YY+ zGKC>yXiEZWH6pTJ{8nyqc>S|#dwpI0k>Y6p-hQBp>0XKk!0kBTjC4NDwOs+ z{<_dboC@EPXk_~G^8Z9+HAp%4j90#cWj}cA+l=NY+eEM}8;Nlfz`UI#L4$cH&uL%o za>bOUb^#X6!i`I9jpKu{XANK`iV8_?={Ld!v(*eVS{%jeRu7ub)Gu!o>6`1WrC3?h z@X8jk!mCnRSm=zl&t^^tEF+s>-R4-JoWnj2-Qe*Xh7D!n!P^;uZy<+x{12usazS=v zDG*P@?rfKt3=qR9NZ8LFFU{OGZ5JNIJtVrtw^QHI7fM(n8yoF#<4}wJljodhXh#0= z4@h4EB)C}iM?TSxk3`w$Fs1EHy-Cj9Z1GxxDOtTnS+R5 zD78t+KwFIEN9{qeYMcEenUT?6Py_u9%b_TRX1~qYIu$3eX7}w`Q@_YeIXWKf~ z^IX{ffU7=1I+;f3)_r=`$0%2M03{{a&)YVYmbBMu4X zfH9%1ed{01QBOo`{l$%790!PWB#n$s$`nIL#eF5k-roX6+~@G;mE`09SjlS@YULxh zc%D3EdXnAi+|y%0l?pa(1z?dl<_wHYW0ZJ2L###-=NP^h{4OrQgWM{Eyb$tXQ6ej_Vd?*jH^yMpGQDysYfrw^iQAMj} z67~OX*xpl@-*j|wnOlRmK|epODK&$&M95ylajqoK0M+gsR?^i*3wb0qQbK*0xdIyW zfJ3Td*9Exl_1&bgAXZH^8U-wImIrRF*vGTYI(XdS8qen;fi?V~mU94JLo!qo+aLwK z42I;gb0*9oWait7Gi-3>*fPu&g)?wgsaG2mlr@aO8;F7rNaYEa$`l8^ zuxLe35qtL+m>ZM+Ka(b|;6UQFT(mM14EVKrX+*mst_DZ@OTlR+eUn1X&n8j45>sG8 z{t!!KvM!Y`vxa6iiZsHXD@nskBN`$5IIGGiEc>+Tr~tH%x4`W5r5CJ+XenH9&k7Wjw^9!RAw)iHndIsy0zC!FW;F}cw5JbX)6cj z0y<%6#&hIGs>yIZ01AS*kO%D#am(33$tpI5Z_Q7(&Rd!~NN{s?##7*13XR%N#==;# zkaKUMe2cvG6gtwjmJxdLFhWni>Rc1+U!^?13n0+t-p5^vT@H+}VCJbv5|D6@pzu8jY5@GO8D_VH1C-u) z<{L=(QR(S!M4V1JKLx^W^yn&U_-ZoKpjDXHaOdgM3Xuw6hDWE(VNG2M(>Qrf!_}-N zUU;j$C=+43K=kc}^;4h$?uB&84`lT0&p^&`NUNgX8#|P<6_*%IOqEn$ESnXTABa=( zyf!Ys8-NTVQ@0c$@asdNzOc(ib4TdI_5y7`#RjcmDfs9BS!GaJXa|v{%;MaOvw+^M zbAPk7N#H^$1~AVUJ{Zu`W_K{{0R)s<2^Z58ReeADa9ITlSUrqf;D2{x(QHRRzQ8fj zJiSqVKo(fsQPd=r{PAbo4Hf?rVB~E<>V^M6PaEfcJ zPUbhA!eQdg)+~N)Nsu+wFs`L;*tJx)&+3eU+rPs%!a9z{8@~?6*Ya#Fc10IxC6o=L zvO&{Cek6Z!8BV}@CnmJS!trIp*Xo**whp@HME z{O=(zq?`cC=vIR4)5#{qI3z4bVj@_IDWUF{DPl2@ZAnipDJxngqOym=VV>Cs)La9a z#6H-9lzm7u;MK1_<*RFN>1ie5|F!+YO+?@?{a;e*g)b|hKtXs(UYUaS0{~o}M-CQk zr>Noth(D(^ou#>bDm_Ob32gF5zwW|hsZ- z5Z^>j^{DerBAcUeED`Me9g3ePU;7)RG&I)G`c$T-$1E}lD>ug5GcmZ=q~QI?&I5wm zLqv_GrWm?)wAwn%nFg0918at-1Kbq;QQj0MCGAAlQ^2v`Hz2thA!Iz0(qkJ<$&7Ii zgUi`AJTS`?BC3QJNoBr2q50xtau~Igj5-#|xd53wfU@0A)^xSUD#6y)hSv<9-5$I3 z>wBtusV7rp)k63>Dw0u(?7EdVXO7E}qs|;_iqA2%%yc=ZkSJj5`W4+a?Ik^(PW^=cW;tkTY1zkHU7-Zd@9$Q$Hh>EEBd9Vv8JVJ6r02& zx4xt1nfzIN!l#fM}Wj)PPREJkc{iy$1l{lY?PU#2u1~CoLvx ztw+D@F@25*&eOd!3cNjO;tl;J)bg@NHpRK{dwl}#7*rmI3H1VQH;(Dl9D$qmvvjTp z>9{oA1dIh666rymte~icJ31(+I;?e()$!T(B7Z5GH6xJg>v_=LvqA@I0E+R4CiCGv zP*X;qco^Tp(X6-D`q-P+gCs386ij^ZI(bH#^V`^2qc_$%EXVefzHipPUWB zULJrP=bDcRI5KV=VIGpU>gO=#CKe?0(CFaHYfX}H@$eWi<>_)vq+p(-&!>HA80zVJ z3h%eK{Obe|?uEj^Q$*NZu+cmPLk#ngFWb4W#p#cuW@cBxVE|M)`$<$%6C$Z|Yi}cZ zr}|)4J3s7hA$@m9sbMC|B`N3d3W5r^hkcQ@3Qy7d1=7u#Bzu~zu26Gf=Qk8W{lM5z z`;LAB`Epo^P!tlg#Q}EQ;DE!VBiRQli&rSQe@=MuCBl~R+Xbw+$LC|a=9tY}U17Q>p9k2cAAY$En#5Pw)`C@qEwKeI;V>XyaQR5cKlGsaY`li!^vDP(o@%PQex|M zx((sHp)DfL*h(lWHOTxVr=^9G+g6c=w6abN_?sg6bAbg5=V6fztt8=VN#;!b!I$Jd z#WLVq)8?>cmBRH)B9m0M)}YEgK+@^QB%J|y9W|s|qRLN+{8s)?Y0ze0>m+xQ2W+^C z1DP4}sU;vy+r*b|OwJPEm3m>?Twske-+Gg$^0k$6NkN+w+b{Bx0MXp{q`^UhOFH@Kc1EZnxU3KOUb$DvVjh{ zA6c2OO`+RPXZBc`7?Yf36_kFdPSGmYX9axWq+a-|E*W|a&rUzy`tRj{992R^qnwMD zUuh*r+y;V^XC>x_Ojv|nka~)Zg;`n3UpgzSjZfZJ@cPF zlo8b-Skla^EC`KKyP3m;Tr6*BX1B%aJCr`V095?Jjd>~J(p|eG&t)~u0d-IpAbTW> ze8Xl8%85SN5i_;hqN5~V{X?%ebG-Xj+Vh1#CAlGRRLNwp-mL6xGdPR1z8=#=)V{(z zQe02lR0TzkELPrH7?89A1HSW@TTzjse>85w_caW^=nbf}r62}RHGTSEWTd%%0F1Uy z4;&vr57Jw`=nmJ_6DHpkK3bm%@bv`?tyW?_j}>W1a*$9{{AxxzJ`GrxzYxrHp_Rs2)Cc|B?CwkH?M{0VCG2KcIq8}qEsq$e@QHMibk=ZlK zTspb_osLt~2oFL(h_Nj;O0l^8#xx}hDxvcBITKinleq0F?rA1%SsLHjaqQS>D|{cA zgRWnlyGx#(q=P@p2GLQu)Rhc$&DWMv0h^l^9f;#t4A2ldmo!@G^3!rf@W^4Jt3JYULx z*C08Lk0Dg8h~n#&WOcyX`*%p5H*x|j-aT_Bvghaw+p%A03vH>=NBPL`G8veT#g`Fr z1t#SI9<1rPM}^#*%CPlP{-wd$6*_(a3p)AeQRsH@6@AIn2&tqM24oU0)FIq{)b#Wb ziMZQTs(+eF*(O`I=J+N%XHf@(V%v2M2-^Y~PIxlBiJka?xe_g2AjfmCgfIs){pRGl|N_*Gb@{oRPjX1v9; zKX4A%EY74$hlk*q@$`vO_;>3D$JNSX-ujk9t=}pkqnPA`yghD_8r+P*Tc&O!Upfw~ zAghVeAJ0%`%Vof$mUA8}!_$Y5cz5#c!Y2_LHoEDJCy;*U1S+?q17d8=7$O`#@|Y zuyICA-OfNyz~CA9^bN@V?s$sUJh}m8&Y32F^k2@aMZYuopII9KcPx#Mb+DO(CP@#q zb=n5A+fxnvu@RFyg$=lpT74xNZ^k5L*FFe{G>6HBFYTKATEj~W+1F}o$-Cal#>a=t ze_zF~YXBUGZdX!kmPGAYtXDG?=u@Yp=Y}qQ4?jtjQ+u`XGRO(p1bj~L{+@On$-oCBOiseW$Hsvl9{T@)th?tA9vtoAtM$Qy zsAJtfaQcJ8xOJI&RA%~y|j}~5>K>9}M zcxOH=m%Tp!WKxi1Ti$ZzMv3KJC!|th_Z+(x#CiyCTZ<`ct@!^h`tM8f_h>j=C-pq5 z6EO>jOrMgVswk~AL!BnzK^3}7H;LMo#`WUgojsHIwI2ytMJ;D|IG^gV;GmCh`&;#N#Xb=7 z<15Vcc5*U#D{N)IFyka@Kh@taybq9ehD?*rr!a#&$b}h&2LaTVh?K2gTgvPOyL#xu zFHN2{r1$BZ$GjgvB{(ZoTK;M31|5=i%B4g_T%-gUc)DG;8OsD}vBOo@5<0Hf2tXkw zc6-<|1Il=a&n3hjL#oONxR{=F<~LE>^Ujbf@nyp)G1Qg!(K|k4E{{P{%|dk=`hu*c zpbmwo3a$EL@qSP;6ENf~1aa2OB1)U-qD2GhT)ca6!s>g-1Zf+}pP-=M>wka;tv8&p zJ;2E@&whWFqb}^rKkUgQ#r3bk7D}H9MR(T7WM;+PH)Z?INS4-dPVqbr`fU!$Fs7A7 zvns$4YP1Gmax@4%suR}dCEqf-(KewNAFHfp)Sn5lw0={Ou86=0@>lV=3((@~=5Rwy zygc<}jg-@Iy)dXgn}NC<-ilaZp=2|O@AYpVhr$8p1;VcIhA$6?tF0s*jSSRJ~IAmBU%KUUk>fG-s90Jbm&RnZx`H&kVpy zsvQb=4=FDZb($ZegKDQL*QL(N-})MxdmAEb08O$7MuC;rNdoW2wd>VbG9AXu*}oDs zYe1wvf=pt3i8G6;aDF5-j8H4owxn(@AxMLGwM;_X);xehpH>IhA4ZWnz6ji4)Tutq z`tTw2L=NgEOLnRTAZA@%;aU~{hVS^mR$ew-9IZ<5mgkHu*3&B3ag&%imM$TjPBNh}sDHQk7u=p$eEGHdAF&+Z!% z<>Fz@P@9gVLEhsGYpdrLPa-g$x-C1YIH1~s9e1lBu;JRl3A?W=w1?h>UmiUPArnfo zddwZgSfO3b!44iZ@Xvc9KDz%Rgwk+BZ?Tp1-fMkWJ&1snrDJMPYM)?U^`1rByQk?T z%gQfO5di>|F4IkLOtg5kYm4l-xVf8+3L_JL#&`$5BK&KWp>JPtGb^_yH2L=VI%`Xy zk{Pbih==PVX8?uX9MAoNSde(k_@7DZnPN9-$r(1)!;QIQ@e!?iwfH#KRxWW^038L4 zUSAaf4Ypns`Lc@O6#i>@xVuVUx`i|0y(w63rhLhXw-xAJ zeaf!w0mMFHGM)cbVUELVrIN@UBzZ8{K)lhyCJLYGDIvq?(@8z; z+q{HhyHt>Rm}4IINOU0FVm) zE|n_s3p{G`hwwZ?2Jnnl95_Ld93&v9lUz2JEy9?M=F zH^S>?^`Kt#Dgq24Fh>vEdg%jXo^?uN?$1f05%n zyb1xZpO^MHIGxqUoqw(7G|B?|d$iYsw!yR0mu_vm_c-tX)!zIG+R#5$zY0>ZGX{=W zUkJkPWY7A3o`8EuWR-ksY5vPy?=W0bA_E9xR3c>p{IEWqsm6o%2seB`nVP&YP<(F1 zSh}(FGL{hXsnXl_!p1G>S0tO(t===*Kv*3YMz?c>0HoG7dTKCHkM6vSRU7?Ad6)47 zXOT4%t~}N6(v1(}hrI9za0i|nVyax-C3f(iAb!FDSB>edBSKXaAb{}6|NgmcGM7jp z6m(e^ipZs;Q86y_+Ww1Aho(Y%FTjkEaUo327jCcwWXoldW#B+7Kk7MhP;H?vU&#CR?}pIVr23a~JAT4qV{nuHDR90<3bAcu@^(BT5k zRHG(kX9>R;v*+?u$?H|p03I-I^rYuP6wFb8u6R;MWyX3{TQ0FmLnEUAO}3QPgg&+t z=(HQqWrgFU4IcMEz|Y04sY*c!fD+$uc0OT0 ziJbOuG+zly?seAIdoir)E`CQqWxjoTrm&7&^LNSRzC(qz-0WzEXZ95no7`5<;y*Pw z>OMGVnqPfz9fe#$^-vPLg<^My@T4GG(kV7IuYm*}F>sBjZnldIxow=31}w<%S73=N z|KHCIP$mTBVVFy4l?;bwXM`5H7%d*R{OKnC6aHU*eo;k2TG`E#i1xj$LwPLBM0-c< zBX8RS$($`f{tugoCzGktS~p^so(47`<>FXM;XC_eI7as8@6~FpvZf-+^>{%%9QWZW zI1UEL>|pRb=teK>p>5CT4Wv4_B|N}l-89*XMdHLArWn#MFW3@=0VrJV5+%@zcG5h~ zfQua8jCbHjT;l#@1)2-07Bxj(2)gude%6)a6iLOu9+$2{Z@LlmSgBW!Ve3>}s7C4? zR^+!?wYW}kA6=n9*qa-akT96K+KOQVW=|vA)s-fjb1?yAr{BLwOa8(FV>JMCX1$4> z|J%@@e_p{*s`WX*rr9>3Y>@7XT7#_vx+Rskq}UE-z)r%Hl$XbyZ??L!0<7enVLg^# z#j2}fRTvokb-;Yrmcc@?&J{O!dOnA86vjLkew`02{pMYzr^e)kxtL)sFaA8#!8!6{T zS}V`74GQAvq@=h2S4|uue#2>w@wXM0kJMHJMQ6~NhGStUFz)rRmhk4-hA&Q_dRW|5H18szRrFcg=f*u$lbNO ztc(Q7;awUcV9a_rm#q+aZ|7?-s?Hy z{Tq~TCqh?G=sud=UZB(U;pKP*o5v9k-Ys5jNhbkw-;k)9Qb$9P|KwL|Row}NrB?@* z@OBwh`xO>&Ez(P{y@pjLnsbl;^FpyVYoJy|AO4LNdC&h7^{KaDWt;@@fuyi@9O)GL z4bgjCc!4W`?y{MPorW0x%d#9=!Hd9AU>({a5=)&87_%T@fAdCMjagfene|B41-do9 z89nPfMpraf(fRki3D^+PFGg_t1ah*hnWuyEP8v%)a{(Jyw(#Z+ad+z*F2{;2_dPgM~qwd)USn zR|uMUCB#p|?xMck{%K`sjST_+a)v7C-j(g&HCi&mwmlQDZW^xssT!(5x1TjAoRP>sxjifDI2a={ro8}t}&0k^%|EY zf7@kK6RRrrgBakujtRz(UBD4gZvm_U!&@Bd>Z-Kb^Zg;|G|o}7T?-XqrtUDaN<{SA zvwC;CFgxyvbL?74+p3O)ceQ9ppjwckrzJ5~$#Z=q1Vc7|MT)q6)b3(w+{;(f?rO#XMgALloiMhdGIk-vG1@hnlSw9?rd{!8+hP`hN4+ayGs1+PvpL%=2%p4&f_@T35^H}Vc^c$TccAZ|g9y0YlKT`!a%7G~Mly&7)1CZszv9f?Uu z%DE9l#&+i+<{4U?sR1{60h64VSh4rblIaXD|K91xvM+ZJ1C6Bri4U-$wIj zxQ>Ja@{JqvGO4+|-E!0Vhp2M8IT@ept{+&}=LoWC@f2z3=%+ebTMy~phzxC{NX zr8Uv`#G=o;;pt9X;esQbbiug13C_CL_LW;xCrEKpOX>18UOMKOr0^ZUzqkL-@kaCp zC1JD;tP8g@{Q}#QzvS@9HnCEDsn6Ua!h^e&*uQLev$j%Srsezz%b+8lYqp7~r9 zRkXf6o#YF>H5~g?Ri0Vv7detSiB-YVhGOo8>b1Zt1N#qM@|t?4;?>gnN7krW_K{@v zVJHfo-fs?c;rK-A-Nz$Oh&3^u&V%I{K;L(RhTNC1?k)z_CeJH)f|_=ntgNqI=Xs`H zO#Q4~{ChKxe@th|gE*mGIar}cI)usfgvvBbawZJbu~dn8kwI5|)@8p{hz|K1eQa!h z`RuwBSY|_mrcj(cYe&phd-nOufe@@|b-Qdh9Ss{r-n(af-qLm)q~*W#93%b)6B!H8 zs{kZv7W&-Kk1rg+o?GqXN(%$Nc=cwsAiulYt@e8S>a7}&pi#cu;m?x1i;Wg}$NG`} zfbd(?Mb|rs-a3sQ&=(}`Wq*e7SZsy^;8@IU4x zA8Dfl;Co9N(NC^r>`6A2+=e9uDgDHg314C8mqfBjaG`DdgLh){C3Fr-6}ZX)yl(i} zxa2d;o*2Qs@#GGTL&G-CY^e#pDh!UF5GljP_+)u2zzupIbpy~T&Unvn+gDh8lFob0 zl+5XafkaL_qNWE?!3SGJ>0f2Oc>e_Q!;^=PUXuA2QDe}!N{IagXAL7W?h&6d=ou%d zmJk!Cg%Gir3=&hh#iD17U#g|KHfO5}??Y4# z(glz^{;!nZjgv2x<|ISn$66+4_1r+Fe0g}gpb%gme~}VIc5;Hnq$-1{U0Abk%mR>N zFTpGf8Q#jY!KyUsbcK_1xfw$WBs2y1v6J;^WwmjV98{7aL`bx@<*|}wl&59msq6lAC{um%>&l#cM@Kk`i!3h+(qvM%m6fe+m2Kf5leI=BpDTACdvG8YW z=I-AKxQjkxGUSc3o-9d_$J2gHm0PrqX2PM|9h-R}bJp=-k9S+@+VuCDo@6Xs7aGss zZEnRLCV4C_0w*i_SC$kfv>KkGv|T858g+#vdMP}FBumo^A5c_(vew1(L+6nL$kJ0U znZD5kxFekJMo=^6AG7AjDXPyO$C7o+mG&_X4k#OtSoVOE!hg>DdZrO-g?@!}N%C$=K(KcijKLP2L~keLdz{aZkTnE61SUvh6_sMRmCMg5dZ zh>}zV;{zk6EmTgFQfN~$cr#S6pTECVs}&LIA$?Rs!x5;d1??II#)FMvHNmDesfk;? z&D|ywco=rck!`dC2Hr_oa89yKADWCFgdz<;-8Yzo#2+pq)3gFjfRI-=Sk40|3WwJh zPo5N`)UZ#uXoIh4%rFHJ`I>J_MChd(#u1bj^5H-RqdIY@lIT$7&z))m3rQ>mYuiQ| z12P24E|-achb&aaA-u6l60xC+$v$EPomZgs50&BO*9CkE`gT0OIYBaa`M=_C*sh}N zV;vHMmMtVw0sV}LWPNqP2HXAb|CL>1iAP$l@)a&m2=Vsj zUW8xvLGvP1*?Bg33{_&-P=1pbci~=QeO#0t;6q@rVwbD|1d=sA)P&$JN5K4gycS*m zM4|cxj-Kl2DGVX`X!Q3qiHo+(Ft)c^cWjyCstEX??+(X+SvQRWEapO!cia0 zxa~&K2$f!TCf{_IbN~v9xf3F^N<*uugmIc6uof)t&(pOjJezV?Z08Q_sK0RCfJ^L> zS%*!}+YAj$a9hLsEkct%@PsPo&v1GDzt*-S49TGATqEw1DDcZiGlt1Ju&iW2jZF?@ zwJl>M=86o!R^F*({;h$-kSK=y#Y>}z5Oi>UE{daJp780=O>@0htyR#Db;A<@ z?(UO(iNZ_VH;a(4dvU_xqQyZsuQiIMiH%cFUfTNmhCK3cNn^EvS^=e9uDSv#b-!3j zl^L>9GCPYy2~G)`t|xi%SoVJ2DEAf5_0ZFn+;yUQk(jb5bkDjBcvcdA*}}fIIKfIQ}7FK$%F+)+4I+Y-ZnZ zLIR}M*Q}#CAU-yqScNC7=p@>2ak#@)YB>wBRl_z*zUO(CN!@G-PDc;CMyYbkniJ9< z02OZ1;2+zMI*<@(kp7U$@8!;~LS48BEBOpwgX^bMlI64KA0a+gDYRFaHD!)D(Oc;% zY)rF+2Ma_hO0(ks#z}X$j^TRQdvCfdP_ec>|DpgTL?V0A|63UdD!Y^hfh~ZfOb;&W zqr7f3-1ag!x>9U9GerN(=U34UHzi(TTCBiC&16*bd!d`fL&v9QXX-qhG?ERdYAfhI zpi=;%A(Yn6sQ6Z4fDKd}AK9_9x!+9|;49BuTu%2Ai5U(&sH)XWj+65A+-=#oRSGld z7VJ$Z@dn?Tz$m2VT<%Nm)++lGOrrVxdHv$xDjNbVR=_fkFgU1iuh(XnoZ*!=p?6EtTz6E;7`_BbwSi+Tg)>qY%n5Fgy zmU45k{C}|JAwC>$Q>CV|bo^dT|3zG??%xif$A*2j`++2as~d#iS@0VKtcPlOw?zI2 z;}fs~Gxnjj`?%Re-LcNb;CSeg6IdyY|%W!F}(ax!WUK>Z@baHl=7D8_67ov z$2;@WID2LweV84x^ALs~3g1l;N06tI_M7==RgjaB)ihvfr?0_*WxGk8*o|OGrjW@| zKZ!|lXU^7=h97JvoI<)Y6cNvs{JaC>T^2?9Y>(zp+97v!L6Z$+%QvWju6<*|a=fWK zqeER$DQxE|OcvwHqHUC%4Ga~g8Qip{YcfXA5LnDyd@uhNZOJ6}A*IQf3BBqCI zIfC(QMM9Z7HMQ5BPG^&mC5D2~BT6=Lk6$(`&#`Wvkgw28XV85NdRGb^q|j&*KFFS~tC{ z{fo(4yLX@JiEPiGAx{aSs$k!FV-vCMcP>UoK$A(Bnk|=B5+uSij7;}>AGvSMjx9H; zwbeMMo2xp2_g^k9=EBzJeA=3JjGjjgM&tg2qMoN_RrF{{z z4oRhZ(uJRA9_!cK2;jqaZ>VLjd5aJWb zbs*lVR*8o8LcOpm5OFGxtqS@HNOUzhUT47K%i4&8tj)2pNiGfJ#orwn7mdtAAJ%m@ z!J1=DP>oN7!>er{>_BP6l2-Tuz*cbAqGYD=J{6Azr!NQN%RBlRVq+?YJNgz$bISsv zE|a%Svi6|oJOHJOEp42lGPhrbT|t%;skJJ)L=ir-qj)Dwm87ZqC_hFDf@{gpsWfvi zB5z{Z6UTVS9`1ixnyywLXu=`ASnWb{+$AZ426jk8fNClX2!*UN=~1)qe+R8l1%oXm zEwv{G-418ilwNsR#k~GA+HQTOkUQ>&>$GDcLMSp{(o(w|3RUO zU90wH+JAPxrB83le<`xrZTsnS1Hd+dcbmc%vxrI>rERKll^$4Ec{K{bKH1z||B zW&y;y^F=i2;&Fv<`}2vl=91FmSeKi*Xu#;nU?N<6q}!|0a(+TlW${ZaSX-X)<;+<-*ON zAimel7qkCNZe*!FDpY7fi#s;nqnSNHpC|kL$(k^L#E_0>bo1k#VqWP#IkTG3DP$#3 z&A!6X$EZ$_v*7lh9M7Ws>WvK69Mga^;!i=X$R(djQ1&(IGsrd+VdOiz_?f-%_ z`#(8#`b{bMtIRJ_bfg@G)AlDcjQIOhDJsM)qOZgPSMB0>uF3Zww)kW4&pHwq7d1?t zhP4W;6+SJ=^$zJUn0Y1`e1%es0UZH65}yvsY9fgRo=^EBO)fmB!Y0ImesR4gai1Q< zn2SuSNjtO|Q&|d>3yOG4eQ>}iO#j7`&YZSY1wi{2%A&E7nwcC$5 z@sb|QtR{0qnu`w|w%6o@*NhR)Vv)b*ecC{fg(p-c7Ci3ho+OAln6BnCK=Iz76|@`i zn%)zLf>I;F%twR1Vix@y5lSzRqcYKWyNQDJT57eo?j;m8T6V8CA4D|(G^V{a1rU#RXG=Xk_PG{wbpYY(sGXa^Mbk1s`R znins=tFc;bpUs~LPH<1fac|3Q_7!RUfVm*wXwzgijZK#oF36+ zFu^WKoY6h4d}s?8?0afMiC>FGtMT_?XptwiZ|kqaTi0u>7$-BRAcrx|tl>fsd3`{7 zmaU4&MD{s6-S)Kw&CbB^kF*JqRt&YTZeZ}~JyjVg%M0drLiCAWj@-u0*j45qeKS91 zXi+Kh$giVLopuq1E`BS`4kH3?PBl)=QW&!Ld1lTYboLLB!$Ly*rMN+f=3#O+{U(>9pBmT++qQo`g+<1$o zH;_qS3is*$T)720(VYEr+Ve##xPC^trp{q~HQy@i=9Q{S#7{jh6DHuNQ}zdHoJHXx z;SnhzgNS0a;=o@Ho<_42f82HSS#&|onTm2>@+MBnC2oyT@Q%kwB4!R24Rduy3ROn2 zl7bt)tUQ)_SS0BA8i-~P>B(fXEvS+!o9-yjty+F zo-{)17U9MvRevk{1!S()!XMc&hM%_u`bQ78+vY)-=JW~)J4{y>vgZ(_iL;6^TWT^t zn(3KoQ{8q6(iPgv(9hFRx|2Q=!U*XYdxpsH`UP+4k}Z}Q3N|UbKYS5UYL61j)Z+Dp^e3NyWK&jOeAk`OzX zggc)tBfPSWNefqZ2w}s{oEj5+j&>2vtAAnk^YWKYYHc$V1Bee09LZ5xV)hO`km`g!bfH1DtXVm<2zF6*tK{#;-UxY(BwS!AT1iIeg}9HV z(!mrO!%>>u5MUwo@^~bes;5kH0A?mGxiX}c*oBvQ3C28s)I1r$WyKe2fl&mZ?ps%` zSg6i7CEs?KD@+e9s@VKu4J$0W%On5h!Uwi)xXmSZL z2P}(q;t_v9^K%b?#ZzT$8bZ^Kn71Ad$&t*8eGO#>Z@}{M9n_jfxRbkXr^?jJ(&L*n zFtf)lh{rc1SE`pX;~Rg7?Y-J%Z73E`(2c=98BmOj97YXRk99NCP`SF&WiQ^~b@`(xu zC)Z89MD#?}5DHwc5=pL|RDZ5d*UpyexWxzgjgURmun_Me#f!wI-;UaqPoFACj(*0F zk5XtqyI5m(<3>^7UpC6qbWr?+<;cU|=c|p-TkMo9%5vRF5`=A;M31PCBD}z~6`HI? zTVqFG<&tdE5#;5^F*H?1BMl8{i2;bLH<#H#SN@O5^-@oooge*A%5=vlbqb0g#vUsK>vQZdYT=< z6!Xjh3tQ(~91>m#`gqcl!g-@(Bc$J2EItgKVrDC`E_OiiVc>77mt<^ViYbf^?R3p6{FG9o^?zRA4KgitYC8F38DtlaZ~Nf#LcRfx00fPj-xL5ccf zz5m=!rsK!%>@EVSKE#-z(;{Eo;#3-lPSfB52b<96Uo^^Boxrwc=|&zbIa~YEZYMgu z4OKk!HHSTT5NW_i6#6!LlRlVV(b03hT0!vDyb0wwngif0I&7h#?(KTUQ@`FW>&%p; zvuHlDuwRr?0tFWOpkp%fx|+vlwFG;htpi*rJRDjM;o;_W7SaSG&Bm#zuJ-IF1EjxWuq- z^mX^uf;|3m$y6o$oWO}WyQHJ&_{QD=>LHJFSMNAg`sWSB_kMGyquewsj%-1C zxXMG@wy>{7DUe)M!Pu_e#g+XRzjwOP7qzxP~ku?KKf(NUG zq%1HS0}stry$fj{_O*lALPT#=c62-VskB;?necZ++-AH$dvvN&s5)OITuC+Z_p0Zz zT`qXc&}Qbgx;fOvJ#m!;RrYk;=l*qZ`ueIRm?7?1K#krIr0PsPMBuQ6!Sj|_%DG7v z2Lw~!)Q=ww1^cT`iXo-gX^L*d6VGiGZ<0EbuFAlXvuAR>FPFs-n+l6@meEPf)5xnk zR`CH-_t_S1TN53od0Dc$u**ZUhFe7B1pBS_v$J6Ktc#vJCjv<&A+#|g0trNkksIp= z)Nj3St>U6rb}ANkfo0Y$8S~;Q9vK81epY8_cS_Ld7HLIcp@7ej00N(Fq+WJ8C*ST; zBLLaUwC>?HN38=bruq#OY!bzm4>`YgM;&UcX#%;GJKA4#NTX~R&-Sv0uaMf<$P zV(~_dew`kJkoU=5!s#LZtNrKL_ofly{Ji&YM7a^DwLI$B1s@_z$ur@&Kc{f%IX4`B zaGzvT|5!3j3=k`FbNjsUZ=w4JpG^?5>oc zEzM@W;HoF?1eJHNB@Vw+1>h--)^I7YPW`#$iV8U}-$Ji5&^;1_&TEPT#$4$Tvq+Ku zF6@v#AC*_~b~Si&2*no;kfheJ$7m8{M2SkP`{8}dWyC73Utz6+Y%7|~s_aP;6MG45 zD<$3xInac1Gd$@6uPhtK6^L(Fy8QntS6?^Y5N0zwv;YLzcOX4O5CZXd`(llcagt2M zj}}o1{BY=&$l3uDMm}5e(F78@av6x$8ikW%##-;_HlZ`X1}55{rab~2m|GdFAx z8{0q3oZtroX$s+lAkhxyb!hhSgb2OwMo~R2vb94$@xC+915OP;^=d@wO}P?dW`@g3 z=TY1H)H7)^dZ<@HD-MkN&qJ!8Bd{{Ca_GwpdF#y@T=WWDZC>e>aMb<}z8g&tw3E>v z-D+831^JZzYhcCur?%g%Q_xMl?*fEd#~OxXz;Bb zq0rz|4G`;hhHBPiHn8Q07A>;+yd&YM0p^4Mn~P{{pYbLe39gf7wZg$l1YS<+6I_ts zJghnbU*~ne_L%xpV0l9T2t5zcf z*s`%y-MeCkP7BAzZxY5li!CU+9rmoUgM;OWdKO*wahXdRuZe7HuN=^${#kiZV0edM=F$+02SvSmj+p zy_xO{7S{+=C78G^`|^3OOvm*iXH^mo3`(tU4Uy|1t|wH)2T_q?mnyHG69Z zGmWd_7!%B-y8FjR-vfX;qR(dlkl@`56fI|%6#Ut@84GJ>dh0~d$#f7S>8Hu_F!plB z?a**Y9i^>eFf9cqDA&L;&bAErLt`$l#jAATPv4fWA6vM?J+OB?`4*6n2z}Zh(i-cK zA5OlgoLuz@dk0`EgB*v5eVpXoWI%AQ83h(iJHZsS{$Q8} zV7Gf>_Fd!tQj%N(LHQbm-U1y5`FdkYDiT~GTJ<8WD)pPKU#&jUdceJHXxSzwO2o{>zJr|u@s5SKVixz zL$CvMQpEp7ANHqRge72kyg59y`!vVgQf~Kj2i+!hoP}ttt^-%_xp}|@QhRo@U&kJI zNW-r>9sy|}Y99{5B#PFgwV04HwfcU;6V}k5AH(#FVI;b?LKS*d7dMnn?9)$S_$p5M zm}mzFy-Ag{K!8MBYAR)GY?5%gsSn6SswoMZKp>&OAn+KwVm#P1B5M9 zIBVJ8s_d_fcx@_>y?5Ea&UeJzhFK~lq%%iru3Zm2_!&JzUA&i~PlE0k?FFV?>OB({ zYr3C**_NV1RB*uOtdmJZaB^hx`cAEXkSD&v;Ve}^1aZT|lC`;7- z)}9|-k+y0f@^t{aE16d;FA}~Vz`n$J@PS)}3RMqgcYzi^;GIjp0e%!!Ff7xvsksdM zF#f+tD+J{r#*qB)FNaT8z303<{mXaQZ#7sKi}VCq&p*afSJ#rh zHaJiS$Nd@Rkl0_NorCKIj<+m_DDpqSft5vI>=QWXk$jY?bzVD;pqz=ySs zf${V*v;Haz`>ubq%2*Lp`~F8Vl9f-J2!ye=5H~nmXz~v5Q?gCr) z%6=c!Z!G!mOdOSm9@NWVr@W-?o?R3yq0g=p$QNl=FLhh+Ub^5wwLdu{(KB;DFdVoh z5mxVZqv~wThWg16$#fB4d~D?T7|HHO*L{o3Kf-XnvA^QfAfM|GYA|J zlPumdbW+FDz#6bky9;`mtT@55j3(~z`cGt4-CGi`NH_TJ3d5ho23@w&BZ2UyEVuFt z&)kzQI_nX*oz)VE3&3_m$$Lu%gV`1cq4e8tqkdR(*>8Wr^SXt)kf@szy`Mcdp0l^xDC*e){y%eQ(NzD?TvmKQU6UkS;?WeQ(T)ug-@?QEzu%&D~ zFwUvHA#J$!kTGEo&mQBwTZ0Pq!MhYrXOMXxi;5+oJx@!AvR~0= zeymTF+S+j&&lv6Hx=#E9y|F|{aWx_P2?on4_W62n6(FJEQmwUT-(~?kmg7N^Fin)< z>@XBLAwl?&A)Ug7r}RDAgMjwR{>nG)6EZ4N{w{N}`uB=R>oNb>nTWNF3xJ7&72NIB zZdC10bxCN61Xr=S+E%Hw1UjQ8qGfQO8FySb|Fy`#Ob#3ojg!SV5kn%5_25_m9aTSz zv)XYRI9jkAm9#?%eqs{xkEbInTE^wYDpv42v`Uh1B;K(VCKVJi0kle`TU&qVTqyag zI)h)u?B{#rMH-AZGA3JLd>Eco4^f{;k=ywxyCq&z*MokcsP@*krf$9zQ6p$D{Lr>K zGVG7s0JXB_@RH7R%_T%eg=C3Q2Vv3;(3O$HEG+XfOW#<r7D#0YaSq*R2dzUAqmZQ)V2lRuc z{1TR+DzmS&DF#jGmf(aWJt>rv2Yckl@ZyaHZvQVQ6fp^^!L5oymOz$fOZW?=%)rbN zlz~V}a^JC&E(kw_Kvu3IrG;?%HmvaBq`1{{rbAR;BetH~WY`9iM#P#5NrYx0M0DwCSlOup-YkI8WfUR z9$e^dG9s@?5b4;+i6EKCS7IL&*>+0kT5{HYyrUA8GF}9MTb2{x4!*qYpYm>Q)Zs*!dmpD+8YJfj7-S-h zGrknfY`dbWs?6K|I;fA>ESeOSa9u38=Vgw^;gfn*5IIv+W{=VdVW+b)*>2+&`|xI9 z{3QaPdJc_HX{rQtR#~_IMN2AVt=5ANEnw3M?~vT{Hf_hJf}`5fG_nbhm~s~<3xAta z&5ygpJfm3~^yQq9&#wsyijocZ*)q@vn@{Zc9j>%0Kr_Vas^zT8R@1$IxZ@kw9f!Zn ztz=LdZg2p@^6$moN3KUqe}L9kd`{GCYpuNn*TgPG~Edt@F2R6{lKTm=;3!(!+&;lEZ)x8_K(tl5__7&sY>4&e( zS5kd6kAsA4_I}K5v)r-zl@?*_@n3ga+0W~?-rH-&!K*Ive+dtqPHMu3A$ei#v$)}k zq|IH{27-wI)syjyfW30QEs#laI&Pk_lbb2d196wR?lNFOgDqiMbQ5yDK1MeW>o|Vt5B6IA-^!%aX-Q{LeZMd0K8QCKCEF7{R6NzfZ zp|*!ChasJUn{BRjVv3eKc95zO%PnXqHRxJlB7IZ;4-PCrAr5h2+oLaOH>zDC-u{{n zW}&{8?oBi~-9Ry**}Z6_G3S)SFIx4TB2JyK?}%Db=lV?+^CUKgm;ChsQ5eKEEFkb^ zf*zAI4GwAM#d#W)VHAvXf&c?~vGKsCFe|@YV9rl{{QDKOf@z*kPZvkEK0!_#L(pbH zZ0LX?pn65X0x7OojMFcBI`)zhizu808_DvFv4%&`t?oG6wo-`fYd@hz%0NME@@dQx z*#g)7#1J_7_5BZBFG>;Morj*zYKWx;ySTJZG7)Txlg-xMwt(CcP5(hJCFeNq#(>hg z&>dl2zE9_QnP2{%>pdaplg|xKIG}BxMT|KF23Pz7r@I2#|LWf3cmsT#X>Mx0P9uzr zB?ZYYs@rzZ!VB&YI!iDXlaT(>WCdk-qVX&%n+ZP4rpr7i^noHN0R6DV?K5;*Yi4W2 z=J6_Wgm}ryysm_mxgI6GGd2Xp@g8qUN!ehLYAgmz) zt18%ldD^#(LZwP1a*Uvz+6rnM{Nkt$Z88x;LQZqm8t*Nymbclk_ZC$Q;Ol@4XXhy-YpqFeO zjq@ODd3C2NAfR)DjAQ;c3wO7OLJm^4Z{H6M#`Fgt`xPsp z!5m)Qbp-%&meONWSms9*v-o@P5%pjHbz6Wtm^8J&?Lpts z*SsSC$u$M$=|W+I7Sb+r2gxF2SZNjItTpJ&`My$mby$Kbtb)3r77Ij2IFfZnCv}R+ zG|uYA=>q0|Jad;_1U<8bnk6AYFI*_hQ@Wgn3+?y{g`VJzKd|P+oxdU09Izng;DKrc zcI@))$3V~EyIAa2uch7>kh+Cjq#?jQo6oi1Y-gIYBlKvQ$Z~p2?;Uaf z>S$gvaWqPnUmfiywfW~T27X4#x#A?FPL9_U2|sCW#X@Yb18I$2o~GaV*~c8=v3Ij? z7;2PEg@N-e!}o$c-E+ID?K!Mr8E&r8ij{}}Py0Qy&NUqla&zs^fk~tF#UbC&ZlKsD za?^C)izvwk1j1rr7Vgzv?#iWc?4=5MORuZGDQvnVB$Us$GQ*c6`Vx%vj<^JUKruco zoN2~Ds(sNb3@nTQG3{^~0a{}0Rp2*r{izd0?K1894P^BqSy`5v%`CR-G%yZYI^ly; z?|68c1^mNG_%iq*@6X!Az$irDLn;Ts3y032!~-HDs0xMC4?eZf zFAbZ5Hinmxm5%D17RO4N)Dyg<<{4;T_;RcgM79v6(4CxXZb&=v#2uYrRK< z$e>z4^#MW?u|CP71f4qD%G?}N;jOSD239z*>klI~iBXcYm9+3WP6eZ_%0+kVHwmN>7iTF)g**}B zipe)3na!TCqzF8sq6~j+tA0C~TM>gD=mo~CH^|qDeP9CSAw-F_Sj*(j^D{6}<7jo{ z&iyAUE>v4ja7ND#uS2WweB6JaBvDKc!+|;oFhT?`STglmFx>g#aF?DHNm`oHOF^0zY(pPY>1wJtmU&_Zc-Y49H*~}n*VUP&|z|l2iQ}EZLk(12dF*Wo{tk;vWpfSIi(-1 z(f%&|mWrL!v%NVa`g;wed;e}ih2yMxd6rVX3{%P6>s z#dsiJ=z!LkS+}eHTBw9*uMMeaDu#8Cf-F$k2al7y6X_rnaEU%&NOhUjZYJ_MGg7Xb zsHLQ*XB?^=_p`UZ+44ESuA~q%sbR!{E1ih@zEqd(S4FS(tN5Bta78})RtFixmtLve zD%gM5!jgt9U5-7d?Xjmyf-R95V(ZYJoQ%_*7lqca1{5_v8S9K5TEM575-uF9g#49? zxNz3<$4W~j-TWL#Pt3pD5&f~y+S;r2Ud}p<_xa_8I%y?1J4=c2K*pc)T^(aPV0q@v zXl8!(hBQuPs&z#G3*3&we1nNlszR%-XjaG7d(#IsID`uS@?6vexG>XPDZnv<$g zN>@o>h=elkPU4TwkI@VYh_v*`4O*`X65HJhwa_b6K?jH_PAu4Qi*qRCltrY)o~#F4 z6luF}@im~zq$ZW)>HhM9VVCUITa@Mhx}Q>`rCI6sTWaN0rgUH`Gm!(bSut-ft95Nm zXnx%EfY25*TJzf*%(l;`pC56jN>O53fX)gg(6{Hx8L6@$Vu`=mj(l?(@wJKqj?fyE z=!%Xl)8rC48Mj%y>)#M(l@s=BL_JhfK$1$pPBMvi(Aux-416yfc#s2{#=+(v%V+`4 z6N<>W%WDhaI4J7$IfRHa!xSMe+rnelZlwCTW7Nm#KFA&y$eC8zXZop3kETJ*6nz|(W7{fgbzHr81?n3`SWLl3 zHv-wDU#4>WIIy6i`lSdq6l;{x+#z5%UEZJ+Gj%WnU_4wt=7e`RX~b~rh+uuW^%Spi zpzU#Q_pssLI0G3xAP|N!dC+hjMbuC#R#IwCV^ry_Tn`1i!^DPpV)8S-2gem>!9;cA)BzUPM-$NnE#YO%%4k#S`<|5{x9_9|XT2 zE3h9O4Z(B{NxLB!siT?md=}c%iEODY`R|}+Ad#iJ@fPD5v9cu7P;FYqM5)3l#tFXE zm7y?v3K4i84B@r$!qc=CYbXm288x$zU`t62y$YSAgcmdc&nqsC!c)l>kQ_3mHh>*A z#Jt(XDXJtj8^QfUYQPQ8kARryhnG~PIsgM4K7@K{6Ma#J#G7!j^wHy+cwPLkrI?gF z;Lt?1YfT5mox^L_%C))m5a!n>Sy5+ZiffpnPVzwG%=w*xYd)$v!_jsQxJ@3#O4|L| z!22d4Ipu0g0IP5L&(pef4$B5D^RQ?wnV&JtN#67Ncx78NFFu@t3N>o_DiwJX!ym`5wG`&<7o;R}5VBxetQU1a7w5Xu z*4Het0o@WHy=~wuY8HlOz5U`IDjP!9Yeiu!VX}}twrnHDPP=<)Bnzh)#LzJ?6sUA| zqM)9hekc&f z1Y7{oICKuaKj?UzTmEg7t3P45S=*Vg(&$^U7=F64=l;z5WZx>*Hsc5Ahh0yvfI)04 znr%Y%!y-(s(xXt1=^TNP*ulG%!(y5*TKnGw(^wtUi8Z=wvG6DZG8=$isZUJDj~x%M zwUv9)vn(`J%qiK;hP>EFG20!ipo9cy_?;Okm-*+_9K1sc=Ri|=B%--7Ibt_SC@cb^ zbwdrzrV^+NdGp1EPacgXQ+7c4&5u;Fj>;B5n3;mDStN>jGi>$TJ>Ooo389lIDP0g5 z-y!h$cS>I_&*ts304IO#D@A64Ui>22y5X6-pWicw%x29-q{|`HAg$? z`~7P}!J6GZzCXShf><<6qPTE@8~-m@sQk;1x?`=%I2$!7fpydx&}tE%$$%kL$3?Ng zgRsW2ncE)O{xuc0_mP5>5Tv=J;08sT+teBI&C7V-VUArahaHE)$pJ*JgdEN zIF5xRXzk>e*z#_?Tt+qsAzHhQx7@o&RkQZHja zcc|HZqd}GC%Py4poLz7_#^~MQ0Tl?+sJ6z=qAt+{gRJT41j!|!C6NMR{`wp`&dHvX z8(e_1P03hXT`Wo+(>mkt{1P2zZC#zlW~w;=I?OF{{}no z)7N06s=Yu_RG)dcg*RQxnl2?ILsNDf1gm)oT=Cg}Hf<8OoTtNo1X>ffx*C%D!y((I zg;wZV`LQMCCp`JNz(<|@eGg`yM&8f%48VEHPzRkClrUWZE4yhG6C3)LlS%O2HWeEZ z$r%2<`T*AEhiO*dEePy^P&SS)3ezQf8E?r$OD>z`-S6fG5S_|ot1h%z%&LwXR$@8D z*Aqc&eucerV2fXr>Zv&bJb;HojrExawEGNV)bY|z3t}+r`fA7m1 zukMUBneH?DGEKl=>ivT;b0@mO*p1|ArMMbJCgQ@M#dJa4{~E4_pD&!(M-n1!hj%!d zZ!jLd{-rtt#?O7Cc8iUf=3EAN4NF~0$HuWcUj@qNuqUg|-DH7bylT{n_1GhJa7h?p z{l%)*H_qBLdIeqC?IFqRV(y>XC^ZT^`}+(&q151O{63VuW_QqR=sLoztBT(n*i?DiTzaZqhjr*soo+njT$uQAfrKj+;{L^-yzpd z<_lj$qhD@CYnbPh_V>-DeGL=jl@AQYNPlJg+L&`jD>$5Gnfl+hZ?tOE`d9;QFbn3= zO5wDnq;MRO4wzW2*O?#hGufy8wxOXIwbNPHd^kFVqig4SO7;{cAe#QjRvM` zC5qc7g)70^{(16p8}ui6Z^EXHg6vr!>sKj8mz3HCV`vMRE;=lT&t{^>R^(ud(E~C% ztoT<@IWOplnni~j%BP>SRsOI*2$?3y<>U~UP4#QlZ`4hrvZz@nT+TF&Hu}h}F$+F+ za|V_?(rLkt#wy0rB(sJoWQPW83_pt%2i^DF+TUiogIo=NG~z@&fx5Baa(r_LmJ@i1 z&vWWfnc1R;kK(}gHa$v{MlI#c_lYu|4&TzqV-9SHx%NZCwQ^`8I*hGz$Biz9wzwPs zN8NNA9f1ggn^AEdoBfCkZgPrUxG@0U(U25MJp~ERp&Z__fZM=G4R(7mauOt}mZ+yI zNDhw9Je&+|V@YJ@`aR=n-5-bc`H{%;C!%K(?EXNKc(ziTlmhLmA~7R5O3jlKy9Enh z71wUf|H!v&qXzZX{C4$q5KQBa53UDzZ*V>*XBMhjcnVsU&lDgIO#%FU!G$;ymt#}l z@h7Qn<=ZX+%{5I_D$U*E6Lfl{$otPi8yuduV$^hPNaY(I+`8tsG(a#E6Ddc?VpF#I zfNC@Ve43Uhc@B(Lm7Y%I#DGabn=F`_vC-)^-suI#Fx8{_ysXQM8yf(7WfYScK{1q# zz+X}XSG76{tGA_B<+NAO!$#MGuGW51M$SBLsFOUXs)LKNr(htvDizysU+Q}hrnAPl z_T`@wz*MmXz-K3`iS2#-C0YDiwVIsWf$AChYeY=aLXY?I)9K;+=ZayKvE5Trr;wv? za`$p4Cha$!<&?nMMEp`J23DbZftid_?uUsB*nA`1o7nP8W|bQSLD6Qo5l?C( zyub|y7yCANSN?AmhAm(+Z9p}zAw6##e)7Z6u#XXHP}WyyGo_W(5r6FrErYLZ>S;&q z5E;8$oAd~JWIa^aeeYQ)CiFn^B7)yMG!RAo!2eh2UBkX$Pl$76O#4>~=%H==h*85l zCM7{jCFKe!fH3ruKAIg){HT@uL;K-TIhOX7?Uz4YU}c^?n-UmqR+ z(2w^qtaYsNv6&c>5eGnGa7Z6FC*VYrj~`Pl?t#KWa1WwKYG}isJU5orfF4!pr~r0% z#Ac37Do2hxZy}X4y=@kFhoneQy`kKBR@P($<-gXsAjZnToM7x(h+`npk`Gxz$&8g3s4{4N9q!LNu_wu>n$7>>$tI8nUWu9>$|C%$n@ zxq^PTF?CF5rHv0qFP4u6h3ByGii$yzS8;EBUgut<9D>@Ibg0Je$Gzpp{Znl`BUJP* zU*K1s4Wsf?7_EXiWwiWUgXn#9W3} zvea}o0S2>Z5~{!qLU;YyjCVXA;-$d!0Fs>UsuJg&HkmpO$Jjw@!0NTSAZk<>Nz0qo^wVG#^1iNoyumA+neZ$ zA@-&tG;$_?zn;imn3=VX$9vbDkeTO3WxS8Hmme1MA{a;yC!J?<4(#TAMfo}N_k0Yk z^%#T_J9*F&akM#68h3SkkZu@VQj%8DqNwc)V3_h(PPv?T86h+i+I}kxTw{R zD_8rAvdDw{^R5HvQSmx{EA(H}_tdwwJa7_N24sjC>|%RcBGK+f6qy+SE>? zG9ng2_fl*iBRc`#xf3yZ%|cM(^4<#?k*CK;#?9p+(~jEx&e4e*8d_nPn%iC@N$Izr z;5FW^+{r0yTnd4@Y?h%9`4X^1LZFBta{Eej=D}9dXxn&R^#z`Ytelk7>1!v{F0#5$ zn-62Rp2tpM-NXw1q#jWS69)EDrZBkyak}pv93q^y=+7S_CZu)08q z5Wuw%#X}*yyjtG9wk0MApghB~lyztN=+{otf$$=0?c!_Cmv*TQTYfcgZy*R@6zG%d1D`N-t2*>BxvejoTTI zLrl)w!$HpiG$h>m&wt8?Mx@F2!?3w*lwJHB$MD4g%QyvAl2NfoIhYhlhQfp;C#5%n z{oY^NIp`wh!$uSxgRbv+Vwl3MNE3VO$8Xcl-s!!CZ)Hdr;}Mn6$J7LXA#gw*=K=Z5 zJPk?WvY*%ma6qQGR16AEGs3*%`p5-Cv|e*LV1R`pna#n%)!FZ80wnGg3QqAsIgc7| zSoDnr78-*T$uclw9i-o|PP#-VVEb1yus8f2GWcUY#gwaCY@DLOjy6=oO+umH+w1JfcJOr4(RBLFfleeCgPDtG@*AL8aI(15b8fR#f z8rdp4!Jh%pT@6(SD||)d7#om2T@j$qklMLBYo6F+%0X+?ZN{wH>Kp$Lq-NVB6~7e5 zXZ!nT6R#SbU!FEFPq-{o^D<{!?l?ZSa-2{aD^bxXmc^J!hRdFI-7Ti#CoSM!v_>B7 z9Xi=9DQR2dJ#}wQr4n&#;=#Fda|^LUo4;PQ;BPK&?fK+-S^{2zSUF|e623?rFVX1G z3l|9_jGTUv8PO9+wpQXcK3T=HXUVQ_>h8B2dag=#@Zc(b#;XF)e`m)QqY z#A9mJfxMjHAc%)VIl_Dk>6eh4UOG!OtDjLhqYFYP?Aq#=H#m%HOx*x`u`^u=PkY)i z(xKdQO~wLkH%G!`JYd~Hx2m!}Fn^weTgFB^XDq$ar`WT;ekbIAW`6uRAT~F}0c#lb z>nDLV&?A0|1=Zv7^{?e3R9JB2s;htT#i`h`487nMMj5Tb@%sOtQh$?h$(_fufj}CA zIpSE$6FV|sGheRcWDE~(n%ux z_^n5p+xuOP9VRCsb=qaCGf=nM(VyEH1RhFw&|yMK@Xc^`6fP%AYhwtUsaon5fgBew zA5EE|yHj3k#oq%Cdg3+`Rh8XRWrj5N>S2nMu43m=_lbGjuNd$hpiVFv2VRU7H+M2{ zLh<#_%F6Okg}ujoMk)_=^e139UW9e+U8GgX(sXf zwz4`DTtcSZZkO!H%Zlf1q}_<@iIIZSr&TUOc0?clP3-clU*bLUYxgN}(i0L8+-&-` z(zUB%P4TkKB20L{Q|RHlsU5L+0F-;!LypHS|3vLM!Bg8xnUTl(la?s7UwsB{DAHge zKhs2mMw&DJW+eYwVEh@IDZauQVA%a0w~7XWtcEj-s+e1S3?X4wNajn?OB0#-IYGqeoK^xUU?RVO5prBJZj;ct{qnP%AuUXJb?9S0BAqN zP_c-iO?Oxp|9w3>^^h#9p;8|(TBdgj(;6s<+H$iPbQCSwtvL3!2c>YXjVXdtHq5k` z=pHR;qm2ZSG5Sopggt7FyIgITOXi4wKeG`ABg(ibIfgOAf({aEDNui9pCRx5LbG=? zfuMBCXO|aVi{h7)i$_zc?VkAJZAnC;XOn4c0&7+|xywQ{vOuA@QUYfS8fsNM?hRM5 z!Zcw%kPR70P9DfqyP_90GEnd%P&}hRV#A&zI0UwG5z}lsDiCW6-9tIiDPLOp%OTXd zh?&*Yw!A_`wUG*i*6kt#wuP=ZIqG9TKyLBibzkK+RMe*T(zN6LEhHv2&^l`P=`OQq z8nwh*ojN#C8}*H;PDNIO3(q5Z(nUAm2%kLtb|AiPD&t~Ce{z)3Sz=D}ERk~10WOj` z4-$0*MclG-u&6qNk!D9X`10Q_92mkbv2<_O^nKgm8INb11%RHqdH(^F3rP-x2)~-H zH>pd_K8kA0AW;W~wYZ9~?g8ZYG6)}6ACPLFz?Cvoh7Xti%J~dNF>Bu(W=jZPmp0+n zp9Xm;V)|8)XThgttN)>v}X(JXa*hlu%7 zN{eWHe9b6p(A5!cu6jGLi!&_bXg(teq#P4-@@ey*>e)8b7c*q!GtU1fnRbC}i->2N zON>6t6Xlu!^hl(rfR?`+B5FFuluE54-TUV5(!Q5!1%rsftdcT zCxp~V>Pv+t~*CD1}JmYpx;Cs-%}`J!}NTVlV-6*x^5rK zrF!Ey{cXp*NppXTYLW{UqK{>iQLDNJhUQYPorAL3wwh_0tsI?O{Y05=sFGtwFUoRO z(;~(#6DB@@$|?d2hp{ID#0A~FAEnqIG=`7?vmK;HSL@fE-#PiEKETlB-30Z-tM)AU z)k=u$`p9Pla8%}dKS)2piV@7Th+foT1e7WcnLZ9E|6vAllch{J;YPq3Q@yJ&NacdL zrt(*#st^r1Rt*TNG8Qxo5NU<-Lt z8B{+}8)3%tPD4lpv`!4vI<3J>+-Q!EbU(3F`HMw=h_1%>ipID`BK|Fc^~HJBD+&Dq z%|rwFmZ72N`Hv1#_2$E|_5D8ZpTA!|B{ktRu zS)$k4FhfTV+!H>>AWK3#y{80Oc=Yg5#o@*1tO?gZ6|5k3eH$Iu@6eTg> z<8Fby3bW6_C+wHZeWhBcA~KM`;XbVcvn*M%N+Sl4)23dh2_dE6PcByYi}Ui?oWeBd~P8`Km;fsWCm3LzcENiz3@61llFtvh^Kq=y~`M zPPq%cOi`tO0oipNaK|gv_+j3BZ--SBB&0h~`6%yglu_jTkt{t{n8G|HNb0OSpyDgN`hpnC|q(>MO9z(b?5N6IHgYz^pDJ(t>7F%H2pE;Td zmKmvg7}O;@*6DYH=Tz(2Qv8l`!uW_F9^qt-x%lsthMQDfvGU213zYH_Cva(r&M*`T zCX1@vUwwBXc4dAph+Cx?|3Vp{`VT%(#l}ZVbR>ppa9QmuGMn6zCM9XD0n_W__QvYs zz7K{L?D>rT3RIolT_3e!c6HsH13QADx#ENegTom+BDsTqOo@J()H{&|^3gt(ecTww86y55musJ;^tdP7bUXZ{Z^&t%pffzVfp4LAaKnQSU^Vwq<92unIfKlYbXS)hs%A~nb&SV1L zeX}^*!96d;uchs`Z^P*}hS9dyL z0y1oQz)I7O5|zNkK8Ho+k@w*S5b-myv=}?Sl0RA5=z=ad68gbGDv^gY- zES{xkMEH7P<;@QYyp5e?`eUzV4d;{2LD@}qysQKwNbrJ6Aw7x(>cU8vo zh6c*Xez90oK;bZ;b|?t)0!64bwPs_huk7WYv_RWUg$rKoe8kXjMl?-lr#yQbLFas{ zd7{g_-A`gV0`GVc48+iYy4kVfK7Z+DIRiFS9GZK{F49EFs(?qG6F}^sp!tZiR{nGT zWhUqw@A|-xRk=d(V~qIUJ^wz)y2&GddJJ;nn>`puu4sfWLkSAMyo5O!{E%C*Z_!{7 zW3qaJklBiUASbFBnsa@7vjIE5-*C0(KF!cgu+m1px?Q7m^FN(?zhtX>wy*?BJ&ybd z%?9d+9}pl!_M7E9z@QxT4j>8=k# zVp9)U4uys=tDqF8mEeORM0b)=UHKoMa~Kc6i3Em9e)H+a;y|UMeoG$22%k61Z&}~t zVX5XEwEA=JuqEzqxoG4@0_sf#0R}?7jy)QqsVL`$CrR9^Le6;?amk;R${$SuiBElE zvEf4QIDZ_!D&S=#Sux|_3wmizI^RQs6Je0+<(66vJHR>T)JkLcQMBN&pmuRhDziy0 z{(aLC-!G0kemyfj_SCOQ=q)~!eH$c_pny$JNWeU|fu_2rqmbq8C0ELG^3g!FCM}IW zLEsZiNi_f)P7=jdq|^+#^33`BUvmLBa`9vy;!{991ZO-lgUImHU7s>=&LzaUr!ljl zLW~FA(iv>(fVOO^01nrW{OA!7)N$xv7(@L!#`(&v$L;?O2O2VB4B^-SEa|^X|DbcU zF{`X_^K5&TMY%*`kvv@Dh(c$MgKe{Whu%5yvUwyP^PY2{D+zPZ>_oHqW+-Q)G}Lgd z8^B`8;N?sh?bIk+PpS~L%bS%(L}{^LocJI6yv6Tce(%{^0UiOZw<_tb{B!9qCP}yAav5NchbeNIG7~jV@rb=edRG)f4R;-@7O=Q!jmJ} zsFtX=E#>T{K|cO?(>|35^PCqD;yB08N+xNbyyTtEDnKKbDDyQFzXu&2d053TI1nCX zmtD;#ZMaw461CuhkKA?`Q&Xn1oR-dgG?pz9*F{S8Q@ySLqZuS`sX4!!T5$`nyN|sn zpTzlJMW(VoWgCT*44Hu!^U;)8C+*JinpOT05K-D{aasVUhHIRr&DhW&9nqegL;Y)( zg;tT`r##XYS%=R-P?T*%cRzS*NT+gLF%>3OSInYd-a&WWZvbbOVAFqNF~Dpg)g5sN zG>+aNRp=W+)G>4dpPaghu>oHGqVR}%S`eq(1>ioj3^xnv%DmXv>L{I~3m)(0!P&cx zWXxwS1gO4jppT#N6MHuECKGEfQ!!uib2=$|Li8=QdJtay1H|%F>&)-7O)(n0GEIuC zR3oou*DzLb!+CEPZ^|SHDxsL; z$+AnR3e2~a=f--l_VN{)y_eb5%E@bUTm?y}Vgqbu_O7TprVJsT4FDyzw4wpsbe#eT z&K6|bNcd3XQ1!5DwrsL@&4tg3iNuCt)sxm8F8>x5DHQrv#-V?xAh|xpI$pUixE>^c zdMZ~SgQ%qZiLli-p5_GIo5ZM%&$n=2(9XA zq4&6Kpu@+3RdV3Sgi{>As5dl-DH)ma(oSz>AMmk+iVvu-UKj$Lvaw~191e)GGQ9gz z`3lAz&^;m@QOgjByN@M6Q7hjR5@m>cGtxQsVKZEV3mfpT5_Wi7b?Z!7I4MtosG)$2 z-eUxq%9;xyaSez-jdpci=1ycwoCu!)v3@#31}ejnz$})X>Ih|zTj0#l?4VFHg`=bO zqgZ^NtuIOdk**L&ds>O-dR5lZdQtrK-De|v$o0fJH*hYB6} zUW2ILzQVduyc;R-8UjK%>1@%5ggcFbLn1tf`rOKkhygU_>VHUaOv99@Cr4_-U%rmd zs=w@_1d;K9NDIvX9ek!oZ!VzU6g~shuY15~cgnUk3n5ut) z^)fKQfUV#cu%9GISk7W5z}$lWrTZKrvNcgrqtXL84!J`T6k@6s*I--N0l31OlXgNd zI9bDYO^Y&)YHld`}_k?7EvtyJj$ z?ays=%4MU7Kn?dUKDM_GJkI>M1j72>I58&K#bN}%4=lh&8x27hi}TA8F~MgoLY!ke z@F0vVJO>u}-1A=NNjSXe%-SoQs=h@e`FJ>&9?8@9uaf04x^N~M)!kr}6(j7l(->S# z?dXisEaPW;c}MT;Ho8-Q+_0l%Y-A}bX&pIHd6Q?`VTlgD-CY zi85P=)%lDm1uzMD)%2){_|@xN03kSvoeHLoQa0;f8w2dc*+B4(L{`$X@a=CDG)$(m z4SQAf6#~NQO8IFumcx4Qj}MlKYB4}4NdQpM1=Cj5vW(xb$7}=+gkl$g5^DbTlE0uQ zsyWhJ#eaqtN2v8dXEUGOTVZH%SI*%2PoGiJaI@?Bre{Wkh~n6lpi(5bO6(AjE@%ZB zl#~7k>pU)@HD*alGVD=N^CZqO?FE2T#^Uu=ZNp+V|Kh#qXVT z((^eW0>9}NW)F2kohM&8l1Mzh^1)!;%A7&&6cklbu&xT?=+TqLIePDnimS3g@N+^b z!TCnZiM(OQj2)X8iDo{Aac|~t?HgL7?w+HoC*5U5eHI42g?E?I^KQCOi)M6~!CK@e zS|Qp19Z3IK!6Tz2fR`SEt+XlPB~K1cdM6d!PfR40Vxr?V&d>!}H2leG808axA8gIJ zN+LfQ#4x`$iH-|uhrmVrb2=EZYp5yf8!nb_8--f zyoUOK=#tUI4b$nUINlp)Qdu0o=AE?4oua_@R1g(t)i(yN9daMvJT-UXw=xRCe!+En zOPNtEfgoqopF{m=E*?rRMSs%Ekgdl-E)d+Ldfkc9rRkhmmNAeAvd;f*t3-hP@}Z0y zgSCO=(xF9WkJ%92s)R5mltmk_F6EGDSZyWriliY!+YF2W^a0M7``O@|VQ7pd3M@wy zflymC)>B0jMAB*jvm>HV1J>@mQzREAn}99nuy2)*3nli?d07P0dA9GTFqZN@JhC$o zZdq=pmEZ6UvXC?t+Ka(-+eIfv*X0hJKgWm`A6>6?x;{TRe4cLPkS=soN?y|u46O;m z0-E!8)d6b1fpYF+-G|iv2 z{*tkbWD!;R(8}J^tSu{^$o|*WW?%#u@G%T_IM06eV1rq4U65>SO0BMiSj(9_^+nA9jg1YEmOt825^t=YfmSuWaX6kmhoYC9&KG#9OdXy5Aq3|3Xmg zHGn`T!xEh^JDa!W?XXvXHRy2Y$Y1)vyym0KeuoL!j4&@EAhp*AuEQ)3#th9Dq|H1B zReYDIbQPAtSk(L`+^m$;0xOtcd5bKP@0#LULynIARN2OkPD)e#7G?hal~nzkOQdsa zV8V4{5k&x9ngIHF!s6FU#(Q0jtmwpP8>5arpB^CbWt`+%K79Kd&HQcMA4`XqX&az+ z9?5HG61>&BVu^|cpz`W(PLl&?IUW^Et@;}llP$FW+VqS6%T|;dbKAyacFLP9>`o>i z0C7Z^y`tFHYf0X}o9e*y@=`a6i$mWCXo(Od(6r52Z=0Za5}0_y&TB~8cDU}=*Z#~q zP-)kI#=2We{8V|Bgk4y=Ce?u+x4p-vF0cVFe1ONN;tekh^g7+Y4nETtGiE$J4tSh1 znH0p~+p0fid#H=d9Ih{&2SnV9DZ<_uJpkwh<|-Wf&s<}5o}r$F(cK49hOBnpNwff5 zroLRaH+vpaVw19Z1mvc8$YVjKHs1j`8v!3PuaioVEs8H8^e-gwQ}eO|eB{F-hndga z>k)IhK`Ml3vaues>$9iRqt*~(mzBQqaa3S) zTJn7ADVHtL{gh(@BCTuNZ!QDb(>(h%bf!>@yAJDHm(I*`;gr{5VihN ztGc~V4iVl7HF45}zVQS-3)##Mi9D(QfhU`3?wcu0KC~8!ll@AaINX(>l$PnzYhTdC zu2d9QLXgJ7thH~7u|&2mv+4?_?(G%>!-$=O=yC)Zq;y0%n|uv;{;@ z;k};`#}H~aZXb`~xjOK~{9!dD)~wNzD|?x_mnwrgd;AWG^LM|IykpNNH;#-zLS1H8 zpAGsrKd%BZ6s3QsHOK3&$H$MU0i46 zpoCycB-nPs?GwYHZ5mEKMwB`shO3qsDYQ{|!`k;|or|@3Gp_2BMYh2hi76vm1(a`edoMbcPu-G zUYRyEJ*!K_OjW|T;*~@yN-GL)EyDvbvcetvb!aFu4N)?jOUoyz%W978Y{R0w~~Kr&*(%xB8LVkPL}cYFX_b};I-f?k7o z`JDx`^Z}0d0m|q+G_enQb>hm@|5}!tTTE)Y${&a)XI>%S=~%Q3@VAyv#NuXC$z*er z&k+VK$a{~*>10E>tLy|;`?=&r6AJU1GEf z<4l8oT=piWK5*RlxJnhfScB8a*3rBwRL1c;iYJ)MKhE%m^aqyayvZpGIU>@4?_LmV zpxP;O8!irfjfzjSq_$awou6i7gTNe3#j#YstD%{!t0csU$y!@OP!vq%*>9!czSW|a z=(?K(cHCW-(QOJ7xFf)zXjl&Rr7kMaXx5%TuUBF9iZ;+s=y@}ecaHkZN z(bdOeu3E*Sspw~PQ6G(GIW9TPbf(y+`+rln!EA33S^-DAe~-K8`Ej=H0iBV8Hncr| z>a{cFcaR=rUZxWFz(Pyu-_tKqc=-TKh9-9)xmEpuBIN2KA3LKB*T9GvWf4Ezjc6eD z8#u^o^lU2bxxvgTzOmUE>nh`t{xzuUGC%Lkz$_+kv|n4LX`XXqU>#ojm^*x%8hh)8 z7;W&ldrKGx)j!STppX*a2K7Ql;nc|kVRHaPP5UMX9`=Q&sWJIp&XvDp!N(|ReO_SbCPf|E7lSo;%An^&Tb!K{k^ zeBi4}XF`g04c8IUW;=d^*W-M!$1W#jYASWj#c=`#;Ek-54?t1?MS1n_E6p{o=X0Vg z$JMNMWu|-jh@)q6O;2EcZMklixl=nLJARWD(0U}z2(uPEa#w)rqUxS=e9QUdlG~EQ z^?I$V6QJ!0*qn<`Nnm}8zdC7JSJP;EEVU}Qn4^Y@&*fT`;b0*l>-u5wN{6YMi&wzh z_}PE2I-KnrvYmk!{$575)#Jl%xe#y*yU-y>T}Zh0y+nHitmz^?BSFt#^nZ_hYLZ%b z%%$RhLi8+nuCoFx))IQOEjFiTy=`En5LN9T(n>+BecGnVLcZWr+HC~f41wO4D9e&siDBCggX^zBtloN z?j^{_ug)oGow%UcJZa`c^c4YE_4@^YlIdb-GW_kdNNP!##A^eQBd@U1}B5O}=&_fAVd2KXT&HZ=d|WED+5iHGVHadw8@ zNboPk=m(<2AR*@hvPooX`=*^#L%YcM%{J7Bj*RYJcyC#%w7;rCSin!&*7=>tkAsB` z(ur2FYYiwKx-A;}UUfTfy)3uzZLbr03tVs+a=D0eCicwafd0^d8({tKzk4A4TckOH zk-nG5(f`JVl|HkmbBeL6Y9P+pp0$J~(;q1JV7_VM8xDJri0i@-oqYQd0rFEZ=ostf z{-Tap*kX4Xj%lRics+%FS?+reH?pi34maQ)s$c7qO6qxC;2d9mCOm~&Tq6oEW?;Hz zA#6gn28cq-s<*AUypONcP^Zp4IyWz^3u57Z;x#K;1DrEiLAfQ7Jr`_OOpVA^> zf+!au4p-f@53Jrh646WShf$;M0KP0YMUZ=7%8e73Z;+h13ry8O*+$!mtVl^-900od;hv(mo27c_O-?5~5MFF$o2VHDfJ?R7^$W2u&)h!~i~T!bfEz&slm_nZ$ORlzBT@4H4^q?Akp7em;iq16$|h zlP^*ljNY8r3mUj~fomvGcd^4QV8KcHa`X#|#z2VOeH9cI$C(zoSsW4O65+MPG??7z z+U{C~Xm;1hnbY7Ff3`_nO7jI<6R+`3>)Pc$_#Ek4;L*N_yIgn5OB&B@;jtF=ea~+! zlP|A$xf7jna#T*Y8lv9dt&il}O*CWWpX+xby&Kxf$O}$Su_@sWf<_?fY~TsH;rVnW zW#rz+T+5=@y|;=vDx;Q9S&4Ueiu}ITH$1upbl8%6-RC90c(iERo+0TRvpr=KcXB!$ z($vx|eykjliv--u@X_?m*^vp@_C!P&EH%)g!X`blwO}A5%g}G#M4aO5I2E6XhK7CM zg|GhrwCc$tkK{Vsi zF@qTy{qg(^RMAO;L`E5xwn-B)tDS(S+2&HaM5XLj3plD(5QI<1^+ni1YiO|D?gWcS z02ek}elGxrfsqdjUuv{3YN_VN&#t2e7@%4io|fR4etoTHYlsy2PaF$DTPpGD*a8^V z7ib7mw2n&9h`Lo}Q%y8@GJgXM$72IT_jH?dH7Si^{Res2HT3d?>Lcv;zeW)J&9nI8 zYCDjrl!`3{<%p}C@WO#~fnJlvPHwW~=jNZ&`38Im*k*<#mndmkXWcYff4gArXe6Wq z;7pxFiC;FDQ`%HFnp1utxJ3WCrQShfF|CWDi3s;`S(?7TY|HpHjp&|L`hvN(tPCmS z^985d9I4|e_Z5X`mdAS13RY8v)W-N}M) z5N4#!ht1L+fe6R>ju#IA#cd~gSuE%SjS;y)*mv4t(+QnVb%M;#BQ|>nh^FUAZ@efK z#|wtpiK5-+e_K27c^UJsH3t$f&Xk2L9y{VVZJYQiR5B)poSMg{cUKs{2)mw$#*-8f zk$e+}w1;70!V{_NNbbc(R&GG&dLTgFTON10|C%g4L6&%$6eSZZH}^v)2$X^-D{@q; z3II%rAiJwsI@%^h{rRHo7W3onvnbW*Vki`CI?%HvkF`q3%o--GkO+$`^ zpRqWu6NOX*QXBYo>zxQflSJw163&wDW!R|4(drs>&Gp+mhr&@$r@9~Deg9qVXuyEk zg`+y2s2DVFKZ6~x6`joTTk9pyDZ+=^9xWzkp>s8BXmC8yX;ANyy)FF^R9`+9>oP=F ziI`E{?YNZ*JC)+nc{Kgwit`w^x{#Nk*=k2|DPF&ErQlv9S0}fPVr>)1k)2@OzJBm96 zdpul(sy0oRtx@`6Q(Zau(ukI_B!zLpm+3nr+bCMnQlDbt06$K5!Ar9wXl9@OdhbBn zhpFYxq!Oz@OB1KUDz6-$7ioE9Q=IJxj(&NO=hJ|jwRq(}VhnpQJpH+_Yb8ND@u>Z% zQsQ{*)fp!;?)>ltJ6B4rw^IiS&05OT*F}N~o?n#9%Ex=6siTIa; z?@&$OHL*3?ov;JkKguU&tPrRPQOr$jVrqxi zvg$S}#k@zz6*1^bTEAr{8utDS>I-Sm1@zbryt$)ZQ;DV6cZRObSkQFfXlUDeRE71zb?;-9}Zu2$2 z4q7Y1qvf{`m9a%PuSKe_N+|A=eS-b~RY`+7`Hc;}NZ=)^iE8KgXcnG30(DU0SX?Jj?a z@&L1o8PAi8I;uL~(9i*WbyA&+myNr$%|8m1RpjmK$0cjx^4z>MoV+jnq2*Xb#vS?{ z-!25M z7-~8~s1_Tkga;zj2lfeZn_Bn(P_u#CC~K)eEL}!BO}Dai`LBsYuYxM2`j-O=3|q}A zr2?NIhDl4bAt-hzf|3#y7zTf-Gy6$8smjF=&i{ysMJjIp+<~$3G&U{Blhj>dC#nw| zH3S`cLbiCmdVg?7UP`u=;Q z$0hkre`M+mq5+hpaRlJ{#WP(BPFH6&RQ}7NQG48tl0z3Cr0%$7qYK z)dd?ZSS=lXhJoe_>K+cUI43Wv8qd(0^TI76cI8Y3clGpe;eUu@P$xt9} zN6+lgv!E4G7UsCtG+d91Fvhw@_yrg4;8T7_5V}Sp8NKce)fpm+6!Y1*xyKn`CmSFz ztWKXAtrx97(bYhyXBQ+BBdCGyM2H2ln>eiHX0W^Qcv7`EMe~w)6J=>ojeaUgzHT<5 z&HkeHZuEzsY~5bcGwe0biv#T=?D!Y#>#-y5ZX6qrxUEdj2URevlhnWh2jjg_B;I^M z-X1J1DHYue0s)dKxG2eTKTR0H6^~%u_Yzy%*VmHn1Qgmc#i18BrK0@}s@(Lui}t5d zA2o?krx1qHG2O8Wf#FyXx_Hu^BgTqy(qr2AD3^~rdbl`+U`3m&DutZNN%ktis- z-{{^C#?FO6?Dv1`M&D7sekPbx6ET|ONb4tk zk_3Y9S5S|JFS(yIW7#A(K zOF9h-;~Y~Mt*M!~r4iQv?W?~+tlvN}*G8X5#odIFE2Ogmt?o^CIV+zx0p~8`jhlTh zm^{YQ(iZ(4L^7TWCm2MW?eoe=xwft75un|)3?S>c++*N_Ci&BS1u#(n#zSJiiWo#2#0HAu%x$SS;kPvS7_!YvB;-B3;5GTe zKnGYcUA|EcvME_Y;OAv;@C5;Hu+dBzrbRxiwoyi2_~sOD-4G{Po+PzmE`dF>g2{tg z(}47n-#oK8%Vzf0&~mi~_En-{o3=r4q=0eYvL8_YBe^}l0m9H2!K36|e*m5HI$9m` z_7W#2sGIlSM-p5pcmXZ|ff5eSLX?`Hy!-YGuDyK%5y2uuKMLa_Z8Uc82<@?oT7Xz) zl;B<{64-;>z}7%GO8Rg+4#=|^k{ zql2&@KTWPsQydRcWRREsMnyq;I0Huqr!Ow;I%W z{w>xx1%_+Qw25p=MmVz2!Jbr1lluw(55+#as}h^rqUjZi99=ow!u}8!&t}OjuK(LK zXh&BOi#GTbCjRMUjuc9IpKdxtx{azB%oKaaPA08KsGm*V=G|SS^)JLsjjF8zA1r9h z?B`7bm9pOGxKX5rJL+)>RGL~_(#o2g3Rs?of{uIY^bO<%ExvU9LA^23(yI*`CYiM~ zw5R|Q^-!S;A(=UudL{aE#CLgF=#tarKg*ibE+o!feq&@UVZDl=k$h{s1D=38k}f7n zP(D@*6_+HpH0p7poBw=?=p$m~oBMMHmO8e6*c~E{WmmEEhSg=9KcZVnE5h?2VDTn+ z`bKAQB}H=~S3ieRts+m)sm}j3=+BDYPivW}<_47i*%5!?l=b`}y-1k7MalqsC8u|+ zm%}F}^$jwG!7x0I&k2}36nj;_-u`NC8v)!r=?g0F1Mx#9ME8~tf>F72WBs*nmbf=W z1{}WuFyZ6x56Us~9zTQ6wM`wh)`mKF*ye^0h$hcUxxLChG!sAS13|cv|I(Et_B-Q4 z+ABR9urF5mq8md6I{*DIo4Qtp4)>~4@9)Q`^r%0lT+oGc7Tf27bw;*6oXzvb7BdRP z&j;J413N8C+nVqZkhreMzPW~ z_dxm@ERYIkP3;Q6Bcz@=-iP2Xc?a=45h6llnD(_ydGQ8kbqb`P=C7J9GP?+}M0Fu% z1+d`3H34(fJowvddR8tyNtF_$ybHfmc6d3tip%wUU-LC%nlW@CUT`>kxQH&fF+q2l zuf&8~)EUmGHcgvj?GtB78g28%`HnXODUf*R)9Wn@?N}N0b1WMXbS9|F;ROZ{GtdKJ zI8oZoPB(rfw2Y28%@mfvFBWwQ*FvP(zI7zeegqG*KbvwkyF3)nvpW)*VDZ45HzJOn zW-o$w1c`uHRlu`o5sz@g#$})%OgmkI{ugvJ$y0nj6v-4eKY&>Ly%h1L#T?M?me#l7Y3f>;x1QRk331?^>55y%%l z)Eh58BBG9dzEAg7Vhs@LUpT%+CkefZ&4p??Mg~uBg}T%+k!@o%^rlr^ zM}V#s9pHgB3zUZ#n$QgstP1G{oUM`A(&J?$To**kMJ1a^jsUj8i+y7G8(`xXv75Fc zYCyLzg;M5yMvNmO^A1|kUA0DSG(L)nGWzdA6H55X0yVM4C9Ej1mK~}w$-IT>IzA5D z2BX=g$&Q&fP<|ksx+uI7g-~3`Ml8c7p&5&Rp#yOJtTPG9q$q zjfGHaZVYtSd$xWFuLhtYvA}{EO7ItYE{zT)M=6NDJiSah3QQu|Ny!uM7$m{%J`^l^ z=U1U&($$3_xeoQL;@-`BY@HO_W<^&R871aM5h4a|MDeXGtcjoaG6P8;JL;Oc5W@Z( z5~3s5?1`!dC~rHnsM9#>wdd84G&(tc$7P6RsQL}XI2)w1z&8@NyzUC6tDM@Nb;Y&p zDIfmlK@EDCoLgfBL%?Bn<;M41UK@d6uv`jHLgu1~oC~)?8K-2)zdp!-Z;XTeJV#n?i++H%pPhqory6cHteCo_sr~Qgbj}*oPz-9H7cjc6Z|#zC3RX^J zLYGN-=|7}sPt%+qKLOl({zd|Ujk!Zzu~e_2DMU8y>T?&_C=&dfD$e@)JW?Jv-?D9# zgw+7(9(W{Ku>`nPN)9C^pzQ6ae>AdG#kA5SuHgIH0D#BxtsZiq)8wF***I&M>4k$Zsw_?7u&Ft z+cgk5_M~4J`O#HAI?gs^*=zK|2+kk-Vnt-I1+lQ9fsdq7#^(;0L9I>NFrBj%irjc(MrJbt;G z;$yoMhTUlwe#&3+tx-FRuX!ts%)AQ;%F}A3WhaBQzcgwTU8D`VOk`gc=HpAS$O40| z%EtPH>bl7$g)8@j+_$?;UJw~psaEf;mK3sm&4dvd^t8$KI!i3@X}0v3inM|4Ubi{I>@q|0;8uxdIn! z5s;}`HZB8J8Q?cus+#o>1*XbC_N;;T{3+Bxu-YHLH*K>$p5BNL+a)j$G!noPe{`45 zH@Bu~cUr<>wu*77M|>tyUmZmbJQh?8!zVMo)^d6p?>Pl4tuWohzSs0UlJAjQHuQ=_ zKY}V?M}e2d_vCV)iJxXoatbwquQYw#EBp!Dq$TlHq;$Mue86cP3WGe1vE)SfAQ#7( ztc6Rl!4o9}fu%Am9cgNKbsgJXqSEx}v1uO6nW;xu))U#!D!n4j=u#WAz-1c`UiKiC zYBsw9Kk5L}MQoo%^X}CzB^||_S7?HWO3)U?klK%O`2yLmx8XmLLFF2^p2refKsaO0XaIF_km!Wxru?xd~nATm}*F;_n;ja7RgQNE)<0 z%r!Pj3LcWo2XaQu$GJ>YH0n{hZLp~YLQQM>8A>zM531|#ax+RVPi9=D)Fzjk{kR+nUA`rh@TCg&cIBzL|gmAji zi<+4RsbfYb@U7b#={c#&)OPRVb}td9K)hA0S!$4%*u*`t*L5Xe*{Vo$pyb}jerrEf zUh3GlE?5qLUU=yX_uPBXc@s%~5#7%b==F7cYF`|qek%hj#o@+m$iwq11@qjdxOTdd z!z#Te(kGnmwOEF;LJSCJCJgVS08?&AipMM=)_YF9a7m7udEy-$&j@Wex>->quJI#n zPws`z5bq9B2mwlzk%?w^V{y^}oGek?CL}TIPp>$WXExqX^Mjn;<#x4egh)AZqo~_u ze7B8bWt5Cook6SE%p=N-koLJy(}po&&r6-VW1*{I?!XjrLbZm0?;HR0ih`xsHJdKL z#CgRo$BSP(uvyVzzyK&pLJ)f*{6uzyiRoW&`rT=ZR2t)O?l^fw;7OBpm=}6GXdfa{-tsI zx1mGEW7H^CZk1|t4LSS3s(*VAzN@0HI{@IjHzP6PEhQ0Wfeim)TtdPOMhZ>prZ#mG z2C(_5m3!0_6j(FOj2%a#@gD!(B%E23WGT*AmKd=sC5KPY>h&S)GQRE5)ABMKC5P^1 zk$=w4orTzXg2m+TL*R|7OU-+GE7;Sf#HKuU&vI5fz7v<5@ZuC`tRWFJ2lbcrGnaNe>bZz&~OkAm- zI3lkr1;>CY{4pv4rslFwo~$wYRJ%;Nd`1Bf22-vD{`NSet+JSW?8r=x`J60*)t0eEP+3RVnhtw>!j zL(hf@fjEF{<54r3qsE>E-wqP4c?%ja{iI!jnYRWsN~*_iu;8BVY5+13!t%gsKbJ^w z@2{?HCoKhJ2T+XScSB?#Uq#w9zzBfLg-EQ{SfrEsY~u<%mkw_MdSzneOsXbLg`cZARjjr{tud_yrO zdrRlVZY=2ks1J-|{rnnZ2A6Khf#t4Ri$F){^Q$A*i zq1Q)YOLqn-qo8^G{qk(4)zLgN4Vgwu9eGAwV-u1UJf(!gpaOoq*kB%=cEIKWV!jy(ky@WYTC1n&YJ^ zn#NOxB=5Jliz(z3O0zV>c?G>=$Qf7iQ&8R9Yv+YiIC++(zRm$3Erl!6oqT$PNbT(X znV1NUH)sj_^?<%Dz8pbPpGe}!I#+>otpX0xk_DQKZbr06j8eL;Y$9*9Hd)cXWrF{k zC;XI;{|J2*94i9phk#Hc>8*}m(fC~k-Q`-fVo>qJP%oN>%Tfsj^9z#7Z6Y7KYP2ZD zPsWug>~MI7%V^Qz*D74Tp|rqi+P&ZJhZbX?b;RSlMiFU-kQu2>p;5vJ*jY2CJR2o#+9%hC!QAu(@Br zbqeUk;5eq_h}h@-zpjcXDo@FExdWI@%;TxRhp**tKi+u&(#aV_Xwd6&-NC|Clh|iw z6knxrAfq~h2ttE(Se3oyzub@6qC&B}v?a&F#02t7H;$|>N%9LOY~V`sWG`kafZ(i_ z<`Kg;sdDju)0u72)ramS;QEW+Ze49iTBCvwX2-*6xDD9_1$}{miAUi~22L~&YusBn z?hXS`a<`q+O?2A))ixFkxh45I1!NzCNSf_A^;7%guou4HLnBVMAYfJUi!ro)mwTTF zDJC~cO}3;ixW2AK62QiY)o7*Ov0Ct_p7~<8r20^Qe?5Ww^0Pf->k{DLV%Z){)l`mr z#*G4_;IwzTvMs|^E;%(T$Bpf6*C?PvTS9eI$ZMU|Lrq1bFM5)UH1MMot{S_1fbn_| zwk})q%e>@~3RWHJCr9pVhO2-%i%pcnnb`VV&%qc%5r9yXlMHaAE zJfgmI=?aETSO8U6vE+*R0_k8|K278^x5elEkO&DI_**dpt%cc%31^|dU!VLP59}xk z{rgf=6!7ykj^>H5B?m4AtqwZ1QLK3*AC0Ev^Ksr?U&tQ~Z;k2NWP0yIk2Esb>Jdq3 zC{Cft-iShjyNaJMJEru$t55B)61|1GOyTJ6I^s(ULpV$MOotRVV4V|rlrCtsb=H-x~;MxLGtpaw9- z+Q=GKaNRvn8m1Z5)o~H3fu`wiM`l&-|L?nNmH3h<-7xiyR^Y5VH;k4>X{r5pv2uyxri51Urbh)vphJw$z~* zR3KXkBY^0XYnE%{5Mb)XXWtjI;lm3IXPz_d}%jgO@L z`io^bYcD^6@HYnzJgESKvpjg+kf*w2|Hwt()`V zJS+o{F3J0O>e(%@x(~!w38KCQ45rTZ%c;Co2iaT=vrp{NffQQh8Ct$!&*Jzm*j-+4 zYi=R}D6A!yp6^QCRoeh3a07(fu>-L7KZA$?tlQ;Smq5Cx$b%t>JXX-Fm>H1$6Wa6L z8})-X&LbKo_wTyJfQn(a?0EwR0ubEafT&=ewUq2Q6KX+#*_O3%dQXqbVvIIPtx(mn zC4+7hFzfSuns=Ne&qUFhPfY7E^1qnm+jzIFE%B&x*8;i??oQwEb9gxJYU*oeI2t%T zcY1Ud8EL_qRx2BWXl-23JG}R+@?M!*7d{QDv6&! zd%D9NlJYCh7IS$Vi#v(AVRK2O_kE4?;WGaCr=JQ+`BjODNysWINr}eH=Dtmr;Urvz z5#RrU>2P-*UHD_s+HOyN^oAZk7YV{j%$KGjY#|GAot!B`iJ7}U7rxrSY~9s=RHE(v z(P+VS_~Eha%lUXcloCSRsQ&DP*t<&>F?i-t7b;S_j%lCRC~II)tE*z{9tA7)rLbkE}W2 zai`J)Es*|->-^U$Gsg@4=8kLsU6ia`vghXIQh)__42P-~ZM{0~PB1__iMZdEy_LL& zF87|fb|IXMX_Bs5tgsQvHmVAo*S+Ndf)SmQb~&Na%nVu14)g~d_%j5>WZJTJ3Zly8 zQVl;BomL+24-P`z1~H;#9{qeBa#kCz5MCFzB6Nu+gEzJ%)@U^}h)Vd%qHpZ}3}8so zc$i4`%x=jz&=cTE#i#+y?qqem3o3VtOeW9%Zm~I4u&oBb-kz`AQ{|c`m8xQuiYZDv^2bPM!zYE%4Kh)( z^=;=C%RokLK43VdM$~>oxNOPSR1s0<*RM;`SGgk6T?Z0Vr}}G@9LKh^uLYwG;{&=G zqJL_IsszCri^W!!vKzn9uO4UY9lz#$+xnPG=goq@5-_;>5%R>)4QMWZu+-+zDdjv? zCjUo{L3{vSi>Ym=tS-S?)BGUzLk6|wi87I`+kWS$J`JL+*chI^xOBkq@U)WI!}K2~ zoc#lv`w&l_G43Nut=60HICaUFX2O&Qig&G6iO>`N(R#2{RHPs76y|1%sW$^{`{gLp zIdtw*G^MpY^-O0$nHj}AAX+f2zx?YT+9^}39X=GMn-0y*A8PGX*&4|?oWH`A3Glbp zT(LR>DUXP#OYE)yoDl2OcKMoO7EN-ajV_OTqR#S7IIsNk$MUK6=)gpU&Z(+C@mn`K z9(B#eG_YuZeYhfv(%VWhByySR8@N-!mP}NJJ(2{4;KlqvP;`iUz1?$9c{_FM5da`d zO5Yd6DVjX-$kG{b(jRsSQpX$W0;*%`&wHstp=p47x$Ru<#>JxqXeP<8w^0I+i6t`I zZ{-=lBZh^EqN)Z(zz$LXl?nA1A_dyTe0!yXi@CYP$Gu|!F;=lB+<;JQ#S?J!NPN$1 z$+;dF*CUn+JGxjkOBBoA^C1bY#7&%RSqW%XMBIp6LIuZ+sNgO)RJ*Kvy_@rB@Tp4` z-c2Uj;8`S(uZbiatqH-TjbCKGi*g1RU3aW})N}jA#S!(*G~;g2kft~3fLY>1A9GAg ztj7>Tj-*@DIIp^n0xA84v=l5+LH)xE3C}l8>2)A+_dEVrsrt=%ta=wNP!uL@B&49? z6QPtRJZ_q=K3P_67sM2!$h-!JEt%VFes*iT=p}){fB~?=fc-~E-6j?^gAIOmTjPl> zi1IYAnBrm>+Cv`|);8^f`%?_E+IvMGU(cr;Q|tkWaXrNyexnHj8GZfhf`GBC8P3WhFD-<@*0YdRNcXHk`0RKM#zybjo-=irDK}f6J(s?L1)G|AT z3!qx}2KLO9m}536?ofuC%v;f9kb%P?#}Pwcy$Fl+JnI7c-yAAU!a*ax$+Z$gf0i7X zta#zB@Rxs-v~T_fD|xlhZW>QCnxB5jM1}iQ(9*PB?BJdNh;DtpUb+qkAgy*D{!*f# z@Nnn~Bfm`^Lo#r&0#rqngOJ$6mG0a`gz{e+jyi0I+k{yyF##WwL|*c8j}4*6@b%*kjz3^q_= zj1|M_E-BvsASrc-)0*If9QclK+60`9lgrRzYe9iiT^iNU`5=aEhA1rx+@X>%baG)| zYb;p$)$Ay{NX4A}P=7=pJZ0}j z7A>|zZ^rW`N-WBQdA9kLrghA(6R@!a$JwR9ah1Tl`Y!`C2zD*HWbCaC5;TOXJXRv+ zF;B)aDgM5Rz z=lB#1tmrMG2>X-$v5(E`Ci)hP>Ntb^E^8%hgh|HO{`J;u+1A=COExfAi-xKj+Wm{* z<@^hhNX`4ulSGp{8D^K@OdUEu~gRagKGlP8dR!y1YZ2z(_AQ|lb zHJaSf`Mb#8-Q7Ch>(McM<{t(4N59+qnS?58XX2{9xg}G_eMc6fqQ#JLFRhC3o)jSk z6ZjivtxFj!?xE)le8{fn*XhDeT0J;5^>-zkPSG43%HQLbY<#DIJpHH-=u#%jNq@oF zFv#m?Q%SeTXm1M06yKJUXUdV>{61g3PAK$Q|D0Lu-`lz(-Rb0*Qz}TRy<(Yv{^8XLY%a~9J=FOLK%k7qH^+3D8 zk_x=f0fgPjm|Sl!OooD7#vI(yMYNR*F$_93`HS!bb?eAtn7LUBYA?`&O##*X$C6B$ zQVBbldcJJ0>wk2nz;XwAJ$+9qxz?$pC!J}%3&@dlxNEayzO^T3ng)CM}JHA4$?W(=I-D0R81-bS zgPAmp+h;Suc9z4F3J*R?Y;R&r%0N!oD;j6lrw#J*sa2SyuItwe0a-uA6ctV=9%JJR zdd&R$d8oF*t_jhqYPu(s>W_WUo7P`u&u1k|6S0ND)fvp8rbJdbe}5lIik0hC3La1T zkP1z8%8{nJd%M{MXELH9YN}XZ=&+8AlV;>(i)U8y{?}NrjO47Bn+pgNOqEIyrHT@g z{+RtP}*khY0l%1Nc(1lg8xokFh~Qb9>^ z3>+G6RV5)*u(zBPbvjz5Fp`6)iJUq>-F576SVp7W_7ZI`3#Sty5M95>S6}`;lo}kS#OuR8ND3W*5a)`)# z(MUT@2jb0M+ZDEhv#1G^dlISLlfPd1%3NejO^86Qa6XWHWN2s!%hbglpx8+_2yNPn z%6nu-ESKFgAT-&w{0|}KFpP*F?RNROJtXPta5DU?q8T0mdvAkq`yIj$e)Y1zQbQ1& zd&3|)RYF(a@}>cfiYWH())$UWAd@uuVxjI*Ki^+mmwuE~jU%P18L3Hw!VK$!lxi+0 zJw1Ygim?_37rz00UlFtW6DDLM*z2GXUw?j)asg?uniOYk?|ziVBezX$Ky+TiC3e0ETaJy%O!$^%@zMJ^7FX|798RQr%<}f|aA4qM?wB#}o*8UQfY|*m_#^eJ-8s?|| zIu%fRi<2#)s85=GF6%r-CO0JghIBIWmuNrZ#dgxs>|{=DT265(#YHjh-@?Qscbgbl z2y$d7_BB32;Qsq3uCGkXp}%vu)9@B78fN&Dr}pAykRv7&4qcxabgiQdM7a6^u~b>EWGCA%a$|R&n5k?onBK`<^3a>5 zJ4!z1%5pdS?a`F6xjJ{1tHT)V&YXj_XvX=^N~_W)z^F7>LSOsb654V1eySfikJH7b>DNHqJTCDyAC*> zIZt}@eY~45C*pM1Ivl1cHg@aH3lVf}hz&8Fhz+*Y%E+-G?)6g?fKeHJiOBRT7Q}&y z(=Wj}8UOkJ$-Cig2+Zm{uHj}VDL+P%V;UjHuWJM# zM?@iK7efS3+VT*qoR4Gy=L+x&9F zpH#E2i+I>9C-Bmvq7%l(ANrj>DJ88 zetJl#N8pc)L_-rY!gUDs&qlbgRkg!_fs(+G#D#7qv}oB<4mj9S?=oh;U$phvIw{#J zI`ka)KqHZj?6zhwfHBSNpQeonG)#8}kDhZ)vk%_|z^|zFun9j%UMg?b&#Pp1Vsk%a zC**;{K)59RNxV5{gbSB}a^5 zRj?et8LQFWylSoykueVM5!HD_e7c*jv;`ay`$@B2;SFQ%3B;LLWm3w?s_hUl2!And zZHE(O$rjoPPm-m;nu~`^YWF%I4GOR5{q+f13(UPM6}om%hwS$G7Mt6|n-Pn5n203` z6NXf37Tw8htAl2U7c!wr$OSV0OFQd{5_}qkwt-wh+W|3xE*y@5R3s~EK*s+R36lV{ zR%+Nc`PosSua7HdY-vCTPS-hMR~yQ*u-ja;pPz$(Wxw|LP3HmzZLM|>q?@^#cDztI z#-BuJ^hJ@|{!BbU%&m~3FYpKR-Px$ZB@${_HOm=QODKvgVK%svm9D@CkbL{+-^} zX$0!(<+(2Uu=NR47t~yMHX$?;DesN{cfT^8D{Ko>Kp7K*4pV=}AePrdx^HK35H>~i z+3DtG%zv)uualf!2xJ8ovs+>HuiN=Is-Vtt?cQL4p-6lX1he0rP=h5JR=WjQP;*Ve zxS9G8qFWolwx=u}rar41rs}db^hDE>aeeR7P~H%|@m8P&XUL z`J$Vh+shyH^{pGOz^r|Hm0X!;R4XWSSv!mpaDsFCL@Na+szgC;aaj94kj0i0x(x^>HuAN{}e&LxVIzrHM@9YW)A!gyW0%z|F! z=f1~RJA16Uw<7?m<&7eqoQMG^0RF0Uqt=C*o2bZgJl4ak8B=s&Vhl4ZRPdtpMsLVB z;`AbI67{Dyz<1idr5K*E^w(jH#^}GX4O{V(&xcNa zz`}fZ&E}EaewNI~-TL<~_}THV6x=NA^&z!01+@A^G`Xo==K#UWBM0HDd+k8y3qb-Q z^z5=LQEu1Tlbyl zO~e{ku)1a9vDme+ktv={nlB+KszE3}X9+KY;+zVV2pUzV;I3mlp$kX|u|B{S5h|Gy z*xVI#f!vwB*!l{M+Ez37-yND2JAfp$#Gfs3Ql+^@&mYR(w2*hrc!Km-RJY>MW`$vz z+z!wog6@-|{TBB<`5aGB2EduWGSiUzH1`LZMKk&@?P)R8Nh>%qVp|9eCGCBUxfS`J)gxTE7Vmgkg}6gr)O!oQbqsQs`Pddr zh}NJaNgsN{bm1-PBj`YZcCdNp$=Ln<3*PRmJ<9`h1wW&Z#{p=FMIu~i8Bvj4zp`co39IH!<@)Y3jX9o#X=ar)w z2T?>BJTLZY|0L`ZD@@5fB~q~clN6*@NqT0%rJo|DuqQf!r|&-=5jtaDm#O9yyzebc z83IGhP0XkuW*~Mz?nR3tMN4f)2sPv46k7duk3AuX0$dC(c4;R5g!^35x9bdh^mo~BlVA40i_Q_VnNq3s9ayg;X8ezuii-l+>} zb$;t`pQz$P!8@UB^B+BtFw&-|P-=CD=W9NHU_+y*?!{r(n9iBOe^BrzcY8f=Dx+b5 zH`J60V$T6k|wjYb#>!KNX=+>?K1eCEDDh3-KZ z7@7!wlH*UM$|Au4H0ewdCcZuTkYGR+a5Y`%K@k-LZPr^_oS=UpENA8pgbT)qb&5u)pguMrK=1d-xRhq_F|zC;3bcIc+7V|i4c5F?RcLJawlov z&FXz>+yDx@_&$C^ps#j>2S>|=H)EQUDRqOs_^qUwnFQF zaLvu&eJ8et+ba)rS9}sU2E*t zlxR`Y?#z@{tEkLX{YUI%57q&hebu>=x?|6SOpovmVmc=qVfS* z0F)@~4Bm7fSuD&yE$ddRHX$_&i1Bt>kI8S(If9#DeJzdR^` zw5V#tZg{MYn=Bo=D*^H+1hc0>zwTnBZaw)6!4gB7V*$2i+4q}I(0^d{-zFt*18fsb z&zCaqI`nLOMYacX?_1{@shM8k_ru+eRO)KS*bM#^qY>_JOAET&d|Y@l;6+W%FB=V@ zPWWyAAv19pAo6@RRErJvpAFyB0Epicq($d#^&^2yynHP2S${qqe%+lC*aPa}_)->? zl|G_%B&Ry#i+W8RD8)4YS7{mv$eRUuSriZgu8pq(gPS(DB%DCAeHrB=$`V;TRG#8H z&co~bC%hVg8}M63l_BE|uw3`pxp`6z>~0{fIf*a&O`2vuAef45Fd+pltr8q>+(ntf zwYUY@US+{lnayVtH3g2i|J870DM=pmU^zXT+D$e*2UJrX>&-R(d`5BF=@K%EuQ7Q( z1cSv7k%&@r9N7%G|7Hs3qf0L|wNvnMM60I$1ESD{pL9xxX7nKvlCAMEQ(`w3YK23x zvZvYx?tXlSs+U=wj2cd$v_Q=^W@o~_YR0`mjsr7ajRck{)}Nbt!57d>pSkADcB&zv zKVyiixGr3Qc5jGDdE`*+?1_Q4gXZ7;?}7Ka0SL$|0j5Pv#1>kqgLpU( zNKuMQw_n%=rf`ZJ3AKG)ttdns;y6n$d7jnvlzy(n3mmV(KBc`QyY*pGy`~V9EUT z%Bt1Y-}2M&{x&SZ#0h$?_vEKlp0ZP9*#>w>{4(?-Z9kA>SIR`a)pcxRb;K#!I#F0G;nS54bDMn_qW`yvibY_0 zWxN{sh_vthAxTIkvS3}2Elnx3gWC_oxbjOB}%>}b3$ zYO>$~<$<}N2D=`0 z+qj#&sP*?kk}^LUbM{PCLN0EvndvnuD^5~k;?PfTIoY*GfpzJ3Zv z-sNM+lV}`jPBPxp>lvw99&rEJJD29O#5!#hisgV87sJK}vZcPgpi_ty*qpU~z+_~R zk)0B8k_0aROOeQy0T*%{>Ry{kq}fp;YLi8by$su`=4gHccH4A+>*9M6P6JEJ_Fz6} zQ9H(8w`iC*WP_J$Do&hbm?3PTy}$67&eO3f0nFj|k;IIk1O@szaPpjQxN1kpt>M(T z!kRY4h&H7cUcEL9jBn;qo|Zy|+xr$HLFW=%rZfWHf}4*B1R`m@8Dc~ssNgP^?y5EF|XnS&%y+eT*x z-SvPKh~C{?0h&Jm)wv$82()lqdn%cjD@DLa*a7KHqrI=}SG@=MvKfnI1lC7vB*$fu z=aDio()p#Y#BaceQY_|P?kmX1T%SoP8#AuP*(>+;Q>BCEe$XjZHh{4_v`=&HF<8UFO*3Ktl}EgxHb~i7iq?DFBXf%~TUiFdP)Y zKny}7k}vs~I`APszZQc4^~Y6OMU0 z`yaU5zmca#a#@L(;=>pM{n<^|;@G^gKy5wcn-2-+Hz&;)=s3R!Y7C__h?`Z)b`vNq z?k!tALImeT9NQ+^+ehb%#Mgo)*sJ6=y8!tb--=&=cTaokhg+U^uM+|i6z@5@XCu`4 zXTb%?tD?$X=Zw;tidPXcY+qw(9&uZqXRpQL;S#c5<&}wKa(_8D1o~r>FvV zB?xZijLs~;T!r1EW0}bdTzw?R!YhQN1x1i@>%p ztqzw-R%M`7yqx(ax*Njc4RW{s9H(YjnY7=QvJZjx8$_$I-g(YsF_9lPwR)eSzzef+ zlyo7X&WVKOrk@&-yvBA3@$-M&McUMya?X!= ze~FSQs)QBz^NPPp4v|8A8L6pl>XT2>97nh_!TwW0l`s>VwnfRUw}!MtgczI3IHMMf zd?W<2{Ly&h&C`l&y@xa!%YIVbS?kVW)a*pOjXXli_tKG+LTN@27?{F`hY1BSXWAM* zJHn-}`cpz&wQx_KryWhorz&Li&h({F$lwpFm03!qxoLWn`XOhSxzb(Vu!$&KO5;yi zyPy2V6_f>GG6kR=qh>FK zTT{`|cRE6vd9A%IJzn-w*WDwq)s55V(^abVyCwHoGxNEF<|!)eR9$uGJNfZY+CWKm zJ@dyiyVhvnn`Ub@*S*aCX#0tX<#WK+3ymf6=l@?{?^a0}151^MmE~kgUv5Qz)lF56 zobL8HRs>z^r-xtU~0ivA&EH-{goI zT`B3EYzV!`vjPA>r6F~A)YEN?;?Xi?aCxRsBjb*=`W-o}IuYbpN7+g5MUxpMrx8J6GQW7-LeU73%@# zBP!g0Z4pZaW6K~~+N4Unrh#QogBe|0-Llhd2Uz};1Rs@B=v!~6H!nqiJM?Uon}l)! zW>-gSuM0yt0Wl3Yi_ljq0Cs7Pyqwoi@)SP ziyi-+WWy*1T9$Mhnp=o>UCTDat#(Hkr0lvA^G*NCY~y9@1l_Evt=CedRwzg1w{UrZ zK@4rYqW$0u(~i{4^K2sLfIC(syR+Uq1$6gVm;HKZB#vXL2JXRwHFMZmu88FP?@jR% zuf?1GJ8i1ho#oT-LNeRQ3BQROn>rtVlK5#K_P7RJFF_TnPLAMK$!o^f50*f9=Fcv~ z3qvoac@<>)OGvmNoToOVLQqkr}E3%Yn>q_fhivNi7R!? zSEZG`7e(AD@m2yp&9N>Mt&}YW&f(M-mVo{QQpmi{_(QGhm;470Ul2StgQ#?eDVVoC~s~~#^{lz_{l$jtQNB>a4^H(+B z>q302#YFOIFl*@nq@FYCHw|MDt$xYAv3^YrB+EU=n%JX!d!O}>8%p1GmyaY--1=&r z2g2U+lpJOsnUe7D%k<-Ad=S`NS7yYygGVb?qz%e!_OS70vL210NS3=>WF9&pxPu81 zWxvMWjxUwBM%frTO_UtxbXdn+uHMa@UgB6U*#RjHvfyVPQ#u@;-A~E7P4ka)-&wJf z$$j3xdh*I5QYf{D*RtfxEzw3Dgq<0_U-hPC+*er)%ZV-Rx2+N5rP?Spn z@8LG!#b03xXY_+og`#O6nYZDZ8Z5cpq`pWj;LnQC%X4M63qb$y%TX1OCz`H6@aK&0 zwC?dyW-O%r=e-Wm(FRwSaXXIfqF-SrssgIGqp*Ae?7e|gjmfd(YuOz}oK&q8iXdiv zQj^3O^onwG(S{qQKF(DpybFp}i=6ILdz>^QQhw09h9*Ri_CK1EaD^NqwxHFXeLnGJzX71UA}b0Fe? z#JAdt9@BX)zemx3)1}%f9@*ZGgzznw94=Wrt@}8Jn<9PiSjsfY>S$nvTAI!R43lS! zFRh#>nZB9M3$1er&t9sMyg~xNkEJZ#epB{GY#T_*wd6qq#??}kP1Y<)tuw?b4JaIr zUKNL$lsjfWT;|T#t-m!LYicZ^#{)>wj^7;N6wFPH_kN;2Q}%^#)?6u&-ulk9aZiAf zKwG|Q9ehcG`iXog>6}_$erp9d{PmDaFj;=j|9+2f$T2ABmhi+RrT%dbG{4nUI)l6d zl}9s2vGa4DsN(BzC8N6};jN-cYTwNl(~`*Iy-i!9C4>rfaLm0iO)LEbUOBZLALK@7 ze|gGI(fQ_i`k>+@1TR0UL+d3Y{XE_qSv+0bDVk=v3BoNrkv+2&OFgT|`*Af4b{ns9 z2Zc1NOKXnlW|RpqL2h+7?*Z*jSA}9P1>T#F2j+#3kcrIrH}YNjR*G@UURea};p*%s zR7{t9ppkdUO6N&av77>l{Nxc3qfm5$%@Vb>FIjX;dt+6II>u`@y#EQ~*eoOpxe zLU|2O*OT8Z)0EZWecA(dnOI&N=7YG^LW`bQf(}p=04Fcs9awtIoo>Q24vs9;-X7#> z#Mu$)q2>7hd(U4ck^^e3_3z#pOBwS~>cbl|sOu#*Smjx0MfY9Zs9>O^qWMmdjXGd| zUwIF5pG1bUN8algP!JUWXjv#f8WEIZ_~ct_m9tOR#yofr?IR<6SRBfmi+j z%&iT!>nO&B+7PSK#=EeojQsdvg6G;f3oHrE*=m2N=%Rbv5p@TqO)vFUvs+0qHz9Uk z;Ce9I9Y+#EV-^VMqR_3FTFA}0TXDOvPgE!EIoWBjg5oe0`9s#jPS?ZOi`%YfQ*1 zl=SKkzq;qfT3B1uii^l-uMt}P9oK4qJPCCs)eegSrbLjM#m3*hyPx}Xsry9_cc_xj zX@H6%<&7}IBe>4ux?$&Tk6((_wJuEb`e^2Usul7}e`I9YMTwXe)fh@EsaVOsfG*UE zj;^}I36dISsh6x=yPYecDg&6i*0I*sCP#}c{EMEk06{tGbct1!qz(#zl}`ZgtN!FN+GvCyF^ZlJW?0OpbxTzNLz{N#jl? zf5BiW%zTV*8_zHriqKq7*FNarzVRH1_r7;!+9=;9hq#hVt0|HFt(sxbu<^ zS2=KzK4eu-ZYq3u90WgaqNN0zay$N&Wqd|undal7!TS(e-e>&Zx33Ifs^%VoHwbn+ zNHu)Zd2v13=@Nrc;x(mS{@~nNMN9aUdyR1RI(+WjSBz_GEj1M&7@BBhSp|25W-q_c ztSdnnNvY9?zme#0?gWu7JQ`bU+qf4LCHX_}4(^ki2@4yZ5$}+6_ta!c3nT?@KW26= zZ6m3r&rURO|o6!l?ON3!nO@c^3&5-w_78R^!b$@fxl^pn}(T2M7Sz@#zqFOyl5 zkL#9^l!G2;Z0o59_$#l~pO+lY@aw{TJaHC|O8|9GCp*EXFERbA@(w`E9Nybk1Fw*h zr$Nr9f%eYqjkZ7-Y)umNS;gpy0jsdz;#b)#(bX4^h10Gz;}_{X3gY*G7_|u&wE#|A zzg&{mydMo6114hZgv-HLxM|@T?vKP|A4Ti7(EEKc@7G+!i5f)jdzL|ljtbau3G8Eo zDD21K(t5;*Bo$*9~u1=5963Id&P~!ot+`3D7}dnG!zF!`CGl`nTL zAR9lQ-6aTsV&^w5Bbky8B?0H$O2Uxn-SH;rZUQ9dPmB^WjVZbHW1>jU6O)O7?T|2V zuhgEn>@CnK4aT}?HT~D@y0{5xjE`PMmErHJR6YulSH*=gCwIH^U7(b<&jEOhYts5fb)N+3+gF+4J=p}o%~JOlp&dvzGUZ2SOm@d+Uci?2Za zN_JOAu;D*Y9LaDiA8E=W-ct;o?_6q)DAD)!Egi188vcSr&7Ju;jfqF<01_Jyd{C0o zBL@)T<+p=ysllznff>eyckr)N|CRv{f!h-wT$4a{jrgGM*GorKhRB5VilavJY^hEr zbtbJLdGOo+_I35L;Sgrw2;0(z%xMrV3s))lTO#atKUiVYtQ^eD2wc#H>m}K|#_+^1 z^buY7+S~sK&@)Z8=00DqM4o^ryX3u^_=aMC+P&RuXT$w*bE+$!PUaF|huxVXLz zhvTR73(&kFsO0|cT3=4(xl)Q5$~el#Qp`obMJM90s*?y=WSvDg{eTSyJFd4`OoK92 zh9|&$QD%(6Lf8S}^@3P-@8so*?e`ZcfUf5nU&gLRh(OuY6|IdLDI|>|kbNeISReer zaBSBoe}N{;)shCaggg(7yoX5F-wQ|c5>A(&c+LMqrKJ1wU!7Q%2!6g2^5p9-%7oc7%0ID+9@h1&J$%+Qbp`S26-?O69{-D(YT^AR^L0h`Bhdxxu zQW%y3?DdcH8L=LE_oQdpSK1w3O@^kc|T#aL|HFF(H;O zz33+ptkfsa-$B0SN_$RCk3!vX@}K&%U(mKU+qZR+sl~{kNF9AJZ2Dy0J?Zl*d*XA9 zBMm@U{r{*&6;mpXCzCsnW4T8nS!Nl66{TEKKp^S<*!LbvnxFb(tDu>d1gZ*wl< z+3!M-hp;sy8>!}E7tMDBI0;LN*Eq?Q{=0hg#1SG{QpLY7L@_OIrgMsPdYVd*&?4U_ zAUgFovz)z-&h(-_4#yw!m z`FuPVA{9NA=hAWOi((%NV@p0hs{2eCH{bRz#Q#m?GFizgvzfC43o8E-$97({j*8D~O%8JsO}7^U@CFu!M?P(#?gq;Ro2lngHE1-8 z4|A2bV;MJ5(TKMGVZ5o~bikIAiiD(xO1DjE1^u5fI1I;EBM3uV{Cf*qIWZX*W;J9f zZ9L;dAmSLPc~&xbM|w`F?CC8xKtM&eKm-a{TQ!fddeuBX=d?xdg<&N!WEADZt>2_z zlZ-&=;n0sG?@-=r&21pre8^ zfX8PLaKX(a^j=!K1eH=FjTHU!FbdMgU(9I9RmA{Ob9v43-K7?o$-nyBoV^2&TSln> zkOm$h6IsF#Yu|R{jAJTx;=`QMVy6ST`shMMScmc^f&7Gh`h~`WNf-Ft7#@3L^382G zR^i||Pbzsy8xpz?JTbcWQK+I{buMRQpC;c;s$WIa{FVA7X(Z@ixt%?>=3QPyUaJ)l z9v_PyzuVDiQ*QijZ${v$Mt5{tMbT%hONZB(nO5+p(asLP_p@^2Yy~u5`}|7s6(%d; z7DBrlt3}utbh?lfsW|`%Ej7N#J5#{)=PTBAQGoY_6w(cp0sNGkBW(=+=uSD>GENG1 z9%?N2eKzW~W>9^~$q#Q{ZLl(Q9@iG%&|k~?DT*~nkW08o%}yQ1-x`4NQerKTtDxYs zw!R6n3#!|ep7Ir+T|}1k%9~e&vrYYCC(&;7s|iKcVdLY!$}SV$7gVsV#D|1*1i+F> z!QW__A4#GcfyXUE0dn^-N6l$zGuRrEDIi)!*cLZO6(p(h&Nvb0X(B0FDU}C>h?P}W z1-Nl0FdfEs2-s`eN+S!Ar$FSPACj$waaX6(y~DE12KaSXu{;=b8j5#`{TJG{{kA3| z(W53oCW@Ke&x$6MFfjofTUS#Vq(kaBHQuYPOe(y z3}*WCK6eUZTeG4^+}Y2Ub5-s=4fOLczt3!E+MkTwG^- z@R#lnP;McRyAV2#?1fIq0(FdWYG2o(nJ}T%z(Ol+e+6d-#&1}$X%OWfuroOEc4QLo zD>d7|n96gaMVPQx?e69k{iqO9kdw!^DHspd{%=q!6SN1u`LoxYk~~TBZaVhvi4s=c z+6-BwN`0;x-uO8A5sd=fXbs!KBK*t383M{E311fvzHUYwDssbP(@NktTWFW@D+v*R z;7iR?mWoNbDXff}NpCd9T~gEio;^B#pm-oY!8!mUydFAhk74s)cmGEFJEW6>*qHp^ zQd!QMb8NW^)A9CXfBDk(EwEQ0j0`UlLtpg18)+_5Q~p`{lU%6~v%h;NkAAJas!iX!k=HpQPZvQTueV{Q_7Qq}Z zG|@ketpZt_Sw?lgvMEe;T-}CKtGE|a-^JIjBktZ-g2=X+y#a{3z=mX4OBiowYhY~8 zKYKM|KW6{P<6`45Dx6Ay-r|)EwCqe0gIFv?mG+{im3qCdK74DW8zFSzm~Vn0M-oo@ z`F7~;0pk%(W*$QdAYPE27{q#QyS-@bA8~p3$_IQ5+9ie9YO|gJg+E(ZYz|g~6G+*H zC?Wz(`zTa6nZF`;5pMzO5a@Bh-P?56PiQbJB( zp1nq!Zh(n`%J)}$T(238I(1y~6pK&+cVuQ~=x5KtHChq&y@vejy-aR$yNGViXLUG% zKjB2~FsN&T-CHhpW}?suSra#8mqRo`@e!Wrvcy{rEF0!}hx`RqfkpOR`Z}S{F+J_| z$(2137lDi?X>GBl(2;s69NkGMDn3icxtYmo9=_}8BfA?{A4}X(tsFN0KX1gB)v1Hq zT8~w2r+%Whx)tbblcluaj4)|eLvgNp9Rd088SQcnp64~Iw`X+ZCN*ip-3RiT+iwC6tvFBUg_2atCwGhKifIkrR+$p|1K_0h33hfvk-`20 z(B`?jL#X7?J0fYi1W&sv%&1??K{U|Pwz!xn$&$@c69+CLWts14)BhgcFe>8tCX-)U zS4^OO1xUhlV)cW~75ZbnoC%*(_HF_Z>O^gdL!`-CP0t|dTTwKW6`w8>K!p*dUJway zfbAP#Zeyc8qkb2;Ik8~&Fi@R&JhTEG4;8!q$?(!(7H#pf znChUGWPO>cNqT`ri-;Slhrg7l1Mhm}`^GdwSC^oXbIx|CT4%!vT8lh+W=G!4u_fyA zK{G7^P3N=s2+|p&8j;iyma01ayD5Kl=m{YE58*7PzufrL%@I#NlW?u zNqONTqyuq+{WsHZ zsjw}xIy!E+tJn4z5_n5KGl`n^gAK3N!go~mNj;K`S<5m4{5!~30M*E=C=XXg`bluy z--rP&V5afmigJOCgmHH`w}-$Du=tij;;Z5b8W_TSKJ%=4Vzt19Xo}4WMvV%|E=lPi z8Ks|Cd+LrRS{09-rP*T4Js+%s;qa_!TtSpv(e5^}AUc3zZU+#wO?UcAAMbm~x`Cx#1UOVT2i70%hK_mbC9fYxepd&ASPz6- zBE1;K9xj8X)m$}F(TGv}7cT@tz|L^vS&<67c>!`!Ts>gT?zaqYkBXYD!*|fSe*Kwx zXQw9e=h6gWWe6i?^v81!OJT=iolKz5wbYejx6qAE9_)46fvs?Wa!ei+`Q!wuo)*iWz->gkvj6=ke~@*ZL7g7`Qh4W@!>V~ z6K)?1J_kpO@2=)Z(!WcQfAeTI+Om1zwCtd7rduSHMt7XXD^u`kkBOO>?D99%Ceo-utt6*UTS%X9r#w-i7u?uA!p zFs&*uSz|~LwJ41bCwg@Hdzqg-1rIYj2brC#Ytud&>dm^Nqic&d60ojKNcf)niGi*sU!a__WB7rs@CAKIk;UnrN=`t_oiEo17{zV zvUN8>efPGkGM9VmUCx>A$y2N8H}4xVWn5Xvz-nX6Ngb-b@n)fPS89~uBnxQDPNm~1 zt=g~MPUNEK<}Ps__+CVce{rKji;00ZRb5o<9mR7Oxgb3!dUr+_JiQqt$z;Gl{7|YH z^ff-^??V@NEpfpY%525s{V3X7rvod9CJ3+&FV06GcJRi{+JKYa3-Z}EiS9+o+?lk` z!$W5`opYk2v~421kGySYpSN~etosWCnJ!Qt`2=Harqb!8!q?c4@cX3e+oDR3H~6q4 zSrI=UyE>4(_htFKTB>1QSQHr1mUe1UkLJMd%6uEdaqXH{zuY%l8Z|v(G(U+@A%b&+ zo2m68CQJG`gTe?`d8;;0vCnZ#20;mu%7*UviMpXHeu`ax;bAw(F@O#pAQ~+_Wv5)f z*lKCeQ0TuSpola0#F6YbUvjW`cZsO5t-#Q}ACFK1AY4hS=-rT08dlbIA-thaGaUGD zkd*j9PVkh`6wDy@ubze#{D1*|->ZN(QtbJq3_^w}$GPau)h^O*eq(K(){fSYntWEg z^ek)fmkc}pMF=ny8!4W!Am!xV&~c?vtH%)beR1B0K7?RuIKVou8CsMH&14FW*pQFR%POh4Y_ z0(QDO!`A+#h(&^;siFut|N1V(WiQP*0_SN0?O$(k2xIR?LbzmBK8z-e@0@asEou>+ z0RytSvOn)OCMg`T0BOt-^532b?BztC(MYboZZ@x#Q7yl2Zu^yApE(&ZF_qhYUiU%0!mSK<=jpCkzjQ|7WJrgp*(1VMuVl!UvvrWtCxtkt@u~`ynM=Y0Ymna%q@DpK>FIL@TK*RiIB{#@f}hltQzenmyP{LkJB1#4 z=8KHSDKnA^&sgDvArNaj6K9U;Fh|x2Xq6^@65(aFB)S+b%#?ILk!Q8i4-iv+WiZhX zS{;={*NJC#k_#ukySeo#@W1c;DHDn#lfXrt(BL`!=mbL{BI~>KTyA^Gya@ZTFqpHd z#PX^8x@iEB&6DX^=NAUG);;z~Zk5JTWMS0?L`qf7(8Vz(?`$7rTHjPgVoL1%bu3=> z6(Ef|ch!TQ1dpp`J)Gy|x52zuN{1F4Fg8SnLZL26dbJ7m)jWK|l=EYLTTlx;5;lND zB)Ut^QW62#*rOrBEr|pi=28HWC@B@s`wprFn?PpywRyOE@>O^I3KSmokzWeisNBM* zGF4JOsd{%)kyu&HI;Dx_x)dQo-i3$Ak|vcP0O~DGl3*b|v8vTpZ?-EN)%-=u+m;4u zwM*LwL#N#ZH0tu?J#xR&eM#mbUPF|eO3GGs+g|4lv}GllGX~mh&~A0~ zf>$yiIt*Qu0GH-xo$YOTANSKU{zBn;P0lhcag#Wg*^}Jbyjx<&{C3UuDFTZkEJ%zg zl-I@QxHofypXa>5a9Ypye;pkpT~FwcqWYzX+oTcV&*{L_dV0^4o~plasJB=2hSeKV zf9d=?D%YXbHqd+zH?L)_dk!rQDbN8pSl-yXa9dN~69BVG@02kH+PLUuk8kI^nK>K1 z(VqJx#ErzIdL%G*@%aF1AHCJkyO5-C1R}Zxrh0nriYa>eDdg%2rJNk}0vD}5cQ~U! z_1qq3Qx7cx?2a`5sEKnK#fjLGak6ccrgCe+&K_IXvU|@S?42lpJjU`b3{u>^<`B@_N}%2U=6rL{IGr{3WL~I!O?3s{B@lWJ5)oF-Ahj+ zbuH685j5!8ysg)@Cb7KfnALfbz0MSy!%DYS;lRK$Ixx97PLzJoyJ zrzWK}Ejb9gk!;n3!;%+Hk{@35J9{!q?#M-$c->F8429{h3)0zHzU3KR5k_KrRRiuQW5jwbSwB;oa2n zN%%*01`O0N?ue=UrGeczKt->IY#03iK-G-*~UL>8>_~o1{=@Fk87U`SpVVd z$>FyQ7z)y|C=gjGIK~Ht_)&^)$9$XtN z^-%^T-B-NrOUVfA#CzJ8zsc(d=ZbZz&x)ASp1f4U5yfThkaQqPW1q=3tAAF(f?rFmJ$l&DIL{|@WenDF((=A2z?D=l1`j!<)a z6rx>MK)u;NwAY_ucRgf$oG|AZsZ7ihPvLGK+itgW78fLS4Q6zAf6TU^pw?4ZIhiYL#!98};Z0{bIANJV%7Zfi8Zc~1Vf{)CL7-Kbo- z&=b^#nmSBtWEt;b6zKtu*2%|l2`HvFO_J4d_-B^}ieWgSJ~d?*6rvI_E%GrHhnfn~ zBb~j=-Rd+xrCypMn-wP)y6Xt;JwN-?=slt+gAMmF)hNvxTib zC=a(x>jw@id&QoWDuYYGE53rW8a!=4_O`t~G$^xX(LO60|Kk8LHP?8_nnWfFR&NdL zF)o)9lV3xe8!zqafT3c2+oVt-W-nUbk+96N^XQU(l5_HEiPKpspb}~4$|AL_PDj%xFFy@w zGF1*sj5GRFR9bp$Y%Igt2}`_Y%{88Kf%kM+^1Iy-%*sO2^+DN+7$=QKA7yP=&od`p z{7Czjykg>pzF6c$ml9x!S#)E1L5cQugt$4#cwRKR_yJt!)q7;mN487X!JkB9^thO5A$Y^E7p?)ey{%b5@PL!&yJz=tIBf zKJ<)Dkd<&};we?XBXpw1@B;srHx1$H%``L3m6p-mBt-aWa=d)>D5b`P-r)v}_}@;l z@U>2eeUCg1I$2tJipVzlFZ6xe8f)dm3*1t*|`2TMeq!n};b z7rnO$oem+W^7I8-dj}tI$O02L6E9eAc@fD8;Abt329-Lg;=?enpx#|H184%A+CL^g zq84@dGJaoyb~EACl7Ae*KOke(6=G_imc8HPou&N7%>L7n49pQidL%_>LbyCsNbWrI z68KTi=_lzgQpe~`*moaj;cMI32IUaCq9gRKjU>#o{F?$a)Qq&D@ugWRI=60}9E@v= z@p`FU?kQXx<|&0hxvdXE#hbk=+bs+*-f(S_uFFx7yW|&H&Y7kuhLKLpc6i{H@bx#F z1XW<;Rw13!Yo#Cn1G{^BL_y|BPA^F)h1HNAA!f~XUFHIb==#RXS3xBokI$231mmwe@EFu6JyZ@&V$5H8y!)JU80t;Fbg5zJ8tW4@Xx+ zqaK=Xcglc*v3~oGM0waR>!MaHp$>4Wmci8L1{P9qT43@W4Ux2hd~)ic+BW&yMni8Q zVQ*yH@mG&BeR<-8(o5yvHnV{F&<=ZGfRwE}O=UBZOW+-Qy>R9$;#_MG_TcY}MEoH0 z!(ir7caJzY(d*k#*6Y__f(Cf5y{xMi@v6h+p|{s2Im(nZk*CgdZ14u)@L)t44dnBY z9_C@Obxw@GwO^={Ge>4XY%L|f;5!ITuK3k}+3GQ?5ngB!*21nZeal$2jwx$oZlQVF zHRMKI`y*&k2jP@5^of2I$g!6BrDd=AF8?0hC{%qc^5TQ#>i)P=FVPQ;EJX-O+(Q)s z8|O1wCEB&Ed3@+u!QfV2^)lBHK;pKA|!l+o-cPI1%AA^xZr z;2;DutRk-EVaJ1S77qvvM-@;&D_X8MJkqY|IO7g?-GwNk!OO|j5A0oEJ4&+(ZHWt71M97>G!b@wQC|0IpYt$dd)VJeEt`;$Ju`-U4ZC8^s-QA9 zjBQ%u)ZQ;np~myeHRB-*Q0nMisBSn({vdr(IHJxn0DhIpJQ5H{MST)(gC)Vk{6WIE z(95@CTO5zBd3E|AEy&8$WnsvR;alyp78Aj}X?7O$`j}m@q^Q%~nwKq}@A>;iXvb^_v zGr-beEv`1~p4O50#oriP0Xq&8r;#o5U?`r}4Lyv!Hxv#Bz}KcgIF}wM%i1miYJh@U zh>HxBNOTm)(byij1m)vByp}eR_cX1`neY*kLyf;<9^O#o`{&~(98cn78)j0X&A{@g z-2Kqn19)J~(f~9)U~OB|%*dJI{`h0NTrEuOyl@Er)0pspZ&YQRJT!5+xyu!dlkQj~Cvl!y;B>>@z=(nj{~-61eqy z*q8NRIxwgrqATI_A3#CaIN9^5bH;c>{+1v(QEXu{F$mh_>oW%&BE&0*foP^5KWk^% zQzjRJ_^ihO!F&w~sO*{7gPtmPGOXI2X7p#ddooyrFly9M%Zmp6XJ*6NatKLQInXtD z>(e#|%yf@jP~%)ho2Y_>J(TM?nGiwb*GJ_SWM<=*TVz$=m&p9wJr_zm%xw1x2VdZ& z0@+U_YJ9iel$h;bSqp7oKV9f^lMMIIkw353K8Kegodhj({9e%KN}t zDkN-?>(uwhulpLOi5wZdWRk9F7#@=bTwFRUDwv+wuK&USFG+4BC5(P>S5avcMs|8G>+Y`0Q!|OZ;ND4y)oRE(9*78m<+59SvV3?<|YBM(HqDCsG`AONb z#CniIb9^j5rQsX#s` zL1L-{6YT#y+K^KD`x7c8ol|NDXs?vqOft|mu`rxw{ntvKu5Co)^)bB12PvC&P>{hb zJkZCa&`C8JJtg56Kz8;XfUbVt99-8j{8je1;ENx4uYsemCQzifHVKxaI&0x?n$%aM z**i)+*@U!hmb!H9VIts03la-))=AmkNG;?zUbpW{=pBhWo~~njXGgxE#n4_ySTPrw6=UfJ?@r<0@qmEF2WFT((02Wya3M-_MWUj2MWw7~yD z!T~+L{+YYPo7iqnpI|;q2t25sisN`WW9~DV#r@H^9zlIGjWT-g8GZe-aCFLAo}il0 z+{FS}yTpMS!f(Py42wr#M>{a&W`1n1`;+&vmLrH6uW*O(Aglmpw~3HaA3FV%fBip} zYmXP%!q?%m!^3f%ZZ7vhwP`Q9t5|=|)VL2jDRhrfV#i_0;nK*%nG;&vCNwxXG{CAF zUEUTr0|el%6*M7XZnsg;K)`nJiFm;vuD3Q5*ASG~5I1y_*oLo!titJ^?l} z8WGI!Z=0OQpiW6K7^=ogO#&=nNT4kXUZ2`!<1KmH6|$HW8`a_j0MDjY!9LyrF}3EZ ztpS={Yz(q)weZDcqHf4`zc*7+6)P#fG1BN$S`0Sc9SLuRpDslI)B@)0S-j$yltc;m z9~z%CDjF$+D$HddCUjah3jMuEVHU?Z?;-v*>mgFt?%Z~;JZeSgY}L0heQxUe8g~|x zjJod4$zF(^ zJFjsN@8@Sn!Ze|0y@KZtoZ1E7Wox#;$TB3OPhvd`LY|&##N%Xn{ogg`v$hFQf*H2j zIIuLC$;mzlq%)-(|8c6)hreJ&g!2SJNYH6^XbSaqGc2L?kQvU*ngmqD0S2-X5#u;> z$l?fhuw}S-^}GJC!xA97_Axj2>?8SBgNkL}8`_!}$e{MUQtq`v@R<4qkz?;b6PTd56$R&ubqY)VyEs{|$l|&3mpc!4kU;)OczHOMJ#Q_ovjvc`5h4gW`elx15O! z{Hh}t`Qg4egAr;HfOBCm1@NjK0ugn)k)5-y8)CL8S1T}rcc1-fW#s7%k_Mvd3wBN8 z9T^kjYwYXNK{egP^6*;jk~7fU&-0?S22IN~IIgMHn%LcVb`H1Q?i#9xm!4{pOv5Y8 z0)Ocfu-o+=!MjNQrpWq5*R-!10PP-vw-3U1=~uKKw+5bsx+YRX>@qFDRf?Kc9$l!f zR&j9JfdcWVPnwjx`&2*jmAIIwz46(yc$l>nD42cH_zGo6=l`J@y0N7Mo60V(Q)hH9 z9qxasc_d&duvuyqmZQ>>H-bh@@VZDZo!m0EN?)X|aTnii{5Rp!8JOsld^4`b@7zVC z5uyY(`Y58ivi(^lg(=tcgK=pZzHVM{$`ULrh8=Q-wz&QTUoK{+^L)q(nG7HNM>1L$ z<;`dYRf*T}$&bYmcUFkBE^Q42sL82^ZkHB2l(;MExFNMhBLF1KjMB+++o!P}MC)d- zF1$eL?w&^xylPUQ9C*A0#pB0orx$_hMIGV0hIbmKg%C0l0Vg>{A1^@xC>K(ixTK#F z;G_$SD*_5|L|`EBPz-DKAT0S|pRdo*DAOTEG1@`T>n->KFRhHni{we|&)9M)CXdJ- zA0Ie=Gf+@ZiyI&<86mamciqQy{6WLBt7@vYd^58JDG?w+y%b(k;=w8FNX9p5W(>Kj z4G+LojI8U4YY_RMW|1d+6RQthcscf!INk1G2H6A(vzu23Juq@?TV!TTODI@>JKCgG zM55QhM6ug{^eP%(Z|B{v6F@nC@;r8u-gpB)uJfDaahq1s4k)F^-H8PktTZE@7Htm` znmh+y^W#~FXnn#hoGG#I>Vl)~L=>8wht=Y&S!NsgaD2eWA4k4x#_dGKUgE)>_U?jm zvH{dBcsB=eHvA$zOXU&Z^18z*8rnJ8WjNouAAIB=f$2z+_yDgcHCZ*$D*T6A8Qd)a zKcA?SN6PrTB(@=G%kj=--UtL`SF%9xlK4r!qHmlv8`?MR&ZF&0AG4qAfgA`dn4>s; z!AtCz0G1opAYHGxu<%~|yM4gOdOKEuu7^Nq?hT1ybu)66STB7p(SDC7A5kGIAuTHv z?+88I{ps(p{TB+Nw%C``pls&>YNGD^%GJ=xoha{46YYCHlxvwh-YJKf z^w4R90yLC4Md9mrL?I?1TMR$jRA(7P@!?`+b*xs`{N;7RyLjN_oIVu$m5o$h&Q*=h z1y=@a>1^`%);&#mpH$1P4pzIAgZ3@Y0%@yxQ2RHM9Zu$PJ#E$m+nB3A2}m{=Q!fLh zu95`Gi+bflI>28&mw^l>Hzd#u?aJmBjq%fDX}7;2rX)HzvB`&2iuyqo3&kx2Jeobz z&(z{bywo)r=G4@hblo%KrR&7J-%W9gDkN_>tkOT-0vw_6W0SUkLDNjC;DeQ#XMY4- zHI*;v{;4%Ls*~;(1GQ*;su3(TIbm9q>dPeT5MSA52<&$UWLj#*SZetnvZu5~wdO1W zpAE(qw{1P?;*=s!xr#o9j2s!@Q&Q)$O5oV1Yn)`dFJSWK)`Oz)F=cWVyXz8IFOTwa z7N@Du2@!dDP~kpWTOB1n7}U_YesjLQ`}=9f*)l%q*8G8{J_FuFqSn7MLn2d(KlDO- z#+tVVAGw_#?C4Ow$s|F%5Zz!_0E+b{3yd-Bxj?m*hBeN4G#bJj@G(0P)$>I%gyXpT zE&)dw3{XayR@eFGxOb+G+QS(P!z8T6yq)(WWphoa{-_?+z{o)#>C``*9S6V2j)f0C z6S%MV5FcDnQ&TGnMKv&Vsyvq6%t9erVpGj1t9slRl$7b~k<89ey^DUEz!ACn13g)j z7P}edC|hpW)Z$tNnlL1k&QPdT4iKsbW_*W5IMHdBPio2(Vy|x)j>l%Nd_N}j@G3mT zIdB;V%B^oR=G^y>rRK%wz;`SQqOzU0NY^O?v?A z1Zlt(aHC-aGv(k?3+lRkWde%IHcz6_Mj;=OHOpJc-Ctr8HG~h)b&Acb0xL9%a*2(D zP?{o>w@x>3Vv?R`AGZR6m49-%2&c|B;K4|JS2RV%Sf@yFg~!P&b#auXPDKRyj)+>w zw6abayq4bU)Ydmd*-njoFt?#GdslF%iyBzPDDrX4aZ1QNE$Bclav-#tykb7Mpg z@+>qr6=I@ekM0lqws91?a2G*fvv`0&>m&|Bi37z!lIC2%*jk||K+CZI{|!95g2+oF zvfKsAA9!BrF6j+fn*Cdv^-3^FWN6`PpdAvTyVQVJDF@#tNDU=`V9i!KGx>sYy|Orh zuJeCza%N4SQ;b2nXk1aGpLYq_<``Fp-8BMKpUFe{zI;M%5zc!~|X-G_S#F9_9 zmmyAKT_@{dVe)vTfY2>P9rL$JNeptocGO-+f-_t6h01LdkjBR+QSPx-3_hf~`gOfs z=y-4ScY_QtuuW-0`KdFBt*EW}Q`NTHmH@kekTC{e*yI>SLX+rre0!YTb2Dmq4n~Xn zp9(iV32^u#pLAm}owASGUO{`J?HQ9S;IJc5pyxQ#fNl;;%t}^(GaSjRvZ2P%P#>dK zVFn=In-VQNqhCDplx)O5Abfl|r$`oiziLw`k3ZJF=bwyI<@{4z*z&8a$vy0=v96_N z%e}2kZmS3XJP!XZAI71I%ZsSc7vS~s?5VDgG__FQe(ekE)*<_U8UR9a2|kpV2-6xP z)&$%_6V(;oP0-ATvt94!s6e!Mq3V8mmGVza50DXYY-7G@wBlZ`lJFo3 zS{=;94XG2HP#gP3C=DU#*O&!+LAWxwsw2vDjvN|TZQ*Wt9WQc8PW@1I+&CCY2qtoQ zVwb(;iQqWdu8MmQoBe&qhi>hR1q%k|Q{`chGeS>^f}|3z%X*%zuOP2zf}NYKj+Vyh z-R$|N0NMy8#$@+&Nlq2FD9hcITI!+S2SyN-T#wF3~H*pC%2B<|av zym@hfB#7EDWjq59m0X-|F&5KQ=!(Pm_*5g=4dyEa1Va}HCTZ{$puanexKRSw)3TWE z(mafXMgdPiJ;{Mr7)dKiOB#%gaY!_-xys9K7M<&cY)oBLn4L0CCwBe>rRLx&sZixe zs^(g0WQ}X|1YFvhivuoh@g6ZTFH+yOo;QJpmo>Iciga+ve52_c5TBd$BKJD+McdqF zt!hy>d{K!>bI?2>TLez#(8?X7>B}3I_)wg%Fy!*?T}m9-ZBw8#`GgTI!@Lx|Oy$w$ z`bpFN1hl(6N0mb9e&S`MwWsvr2kY(z3^4`ce3UzaRf~OA6yN|K)A#t$cK};60r=E->+*&7d#!t~& zCfo2%rO%vj){G@nGUg=J%3oCsZz@0paJVYirg-hb!Aq_B(an&#AHN8nYVUtcD}T`2 z;_J-Bc4wm2EkCdYK#}ZEi0j;-O-j48x8yZ@d#;iS+O zQu!Lg=&T>Qr@MY3smiinZFgD-5aA|o&@zJs5^~jaTMp8re&2o)?t$2X4M|;k;zBb+ zlKKP<$j9+21;^m*Z99BRh9&a6#t1Hvfq#r&F++a6j$WJ`Kt|3XJJ@@1QEpIzz3Rff zh00F}01sRR6S6pRzcz6#&iO7E{ndbh)2ac&yzndyz`iSAW7IGr8klvEcKpQ1fwa^(Y@#n5^m>S;FO9M>+dHumEHi~VB^M*84jBp&>> zdv0Ixx1oaospiiFAA1!}S6Prk5G*@6n!Prq@0m7rK;O7J%wRR*0%!kPK;s4iIe9T& z$Cyz8Ed3=mzbzh#pqmKKAnQFAFTfv<7&J@%35RLE#4E(3h5Bi6whXCeqr2d?05jgR zP}2TAfcJ5IRHU@*h{-UzrZWF3FJryZsdpE7-nOsUWjkD&uy}*+q2wV+g08Z1PAJUb zR9pddLI5ZK*VSP?oe)3?5S$yh+nWdgC{!=NPqGV<+a4iIY8xn3I}Qum3H$xJ;>xyJ7gkV-zNZkhK6*qd6XfL5#=4uG7NFf>&8s4c9-oNNTpS zQ%j_|aH7;nVYTT_inlvulfzP0pPg`t0MCL|7OC0lC!$fFRAW+OmLHIIjSM=Su%2Pv zRZf#Wv6mG1q;Fo&ebMK|0F8Uvlh*?_F|>wIbCd|`PtS>ULYs|lJIvx+Omy79_M6k+ zlS%=myFg|@CcJ8`6ShWhZa0sIE8aGh_=th0Mx2qlvNe?zhT!T!jv!1;orR0n5S3;8 zAZb1NY>EvCDC+;k@9vAZ8fc)`$ic+n=T|3wf4IAr$gcoh_psKbu4L|8zwJG4bWclC_y;aa83Wg5sF2;Er=o0C4Q^8fnSLw^*;kO=0xhQ{jV2NJu7Lf(R^un!RE zO}uM!204qxCjv24_V4ui*fp!ND7x8z>mG1vMsdjsx);(%69i7=biT2N^o!_BCHUP} zjd{bbAU56wKx~QJydF-m)|Bm+2*m_s3?hJVv)Vm)9@2VLiw1CFQ`Et#cU!*t1rrYU8I5Y3Hk8~nIcAXZeLtfX{K>n2bi zENKJ+zFtOiQ4L72a}|FKpmZcz2vuL0nOPCDH$Xeu~T~AM^OKhIk30H2% zE9g6pA8XE8qXhT^HG;jgw^BMgzHJjNcsn;!rF&V!XdJEzob_P+miItktp(B;(YCoy zzleKkYclpx9Bns^7S61sBV)Q0UcXvi&)M(PyR^l2xeQ3CbC4L}vjX*O)D3JfCDY`} z@qGybfHe*-#)5qqx-ZigZ0lA%(Hp38Av`65o1i|dS+hSic7ml8mFkGuV`DrEGDvXx z^HMy-2zE`En*6D42U*{(gaL_-d!xbwR*X#tDYE{Z3hbuf+|q)vih0jCtO-yIF(+uJ z@t#wOho0nyp~F;cPgr(Zg_K0h^ zmlhz3=?_1ohNaQ4iytD*gv-dp-n$N8429NpA7C@j2_R|+ek+iG_8)zzP=PCks?uMr zvc;EPnB91L^QnnV)C~=BzC6(a$P|Q$t{<(izMzw$`qAo8aLF=gVH1K3+WN<&s$l*?w*cX_L=+u|Tcjj(^Z-S!z;gHbM zIROki^vg+F*+AtKb^p_zsgmJFMQe562g+Dq5v-RcdLvgbvr!ZSrAvxb!1Jn-+@xa9 zl68Z!k!k=dl=t()z=f9(rkabupo-qdD8Q$?(k))gX5wv1(%3rQl?0AP(qY5uyd=Ug zepIo4`xC#?a|Rrn##mBgp^oSjE+1J$(NM&Y0Eg=*eNh=I!UD}p4TKYJxd2a=^S+j5 zv9SF_A#h>F?&ip5^lhV{Wj`|4r?T3XcGeA=Y6)=96+&LyVxOa_O74x)Cbe4f_h!!1{g*4SF}zxHpw$ingEIbtC%(>; z)@pNWJE25=HnE`&yD%`2IhfYSws7;0;Mq{^GN~Wy5WVgFJ)A*XsVXd)hi=0#t$ZqB zEvlq4H{1LQ4Yz2ST4(rRBgjKN$W-TPU8mRI6fpS8`R5tK_b+EUnnpn-&&^Dh4Y@_Z?$ydP+kQfV;kTHhTu-0J;%oS{JrZY72nQ)Ydi!ed7?fz z_U*MDh@k)5q+9(~6AF|-LKizfads@~&MCC)#28r{pLQo?A(x?&fqC{>x*hB)wL7kO z3W*L{0(ead^<@{XlmFSAwrNDej|dfw5$gui3fik?o$SN%&mkPXZDivK!V>T{fx%cb z8S(_0FuJ)nckv}7p-V4MBmqSEmCrMVgE4QnLYaY;;z268Cg^p`S zT_v6ur?DvU{WINvDhldxtx-|hp;VoqO+;TWc4I$AN=pGMx3`%BK-A}`6T5;I2PQ>r zD-iS8yDlvyLDn@?XiD9Zar;Zts3ePy{+f3XP-=sfIdkzqcLPWqbS&k146(N@w5itWuQ`e?uESKoG=xS|TWas(bp`-IYUvIEHM>O%?FeID){x--(h&J`vy}!Ir7I zyrq?^6Ke+?2zcEWyclHwCyL)JQFg!hkltr}Uaw%ExZ|d^n%b3EJ>#9@V!Y_S#u)Z5 zTNfHPMCt{hjAWvS65TXV{J{!vr$XH$5$2BQ z54zGyy9Am%5qt*d0|ksWNs|@*I8>_FW#73obVz|KvT6V3m|SVYWz&sGgh5I;uJe`e z=x#(m6MvD9D7mLIBc@?`4-!I)5Ho_N}ZYcuxyVHOi~B1B*%Fcqd;K0g-+&1~PNKPHmYY$9vg zQH1dlca6^^>b@Vb*Q82bG^Nt1PJw5xuznWvikuIQ!c?vex)48SQ&`$PSZtIp=5#0A z&IMH~q-rpGTc<#uEkYWb3K<)yi3DzBa!I(0{eyG3aM^F}qz9h>7IW0!#t=81@nIt3 zf2u;mtsi8vZ59kkdKLM`M2{c+h_lj|rR={6b)UnXo} zwD;3^=Y}Ta_Gi-iYZJiE&XZEqM*lxrEl}WJELanIrtP;ai@HrpNNa^x_pQQh=U{;vYS$Ky7y$FoYRx_g4PA4=qh1wBUN6;d1veZaVo#JT=a1BJ zg14F8t^rA+IA!RKEE&V~AH51+Y5}>AH{YSNRXqf`D-2d%vGT?0bo0;ClV%2!2mNCU zlc8YwUG=t=v{`vdpz;H(-n86|8=vV9e8Cbptu0erm?a|Ug~f@6)7BWQv50(eh844v zJln|qtqD(f%~G>%fkdwj6BmO8amg*N(>uG`2gQHNM(9~R?U0XV{Tli&L8V!keoK(M zHbOj7$c2T?^`e=;Yyjv9U>>8^^im4>2^gST1(pK>Wsjdxn+dju{FiJdSuvzll{o;a%oeF+if)MGywimFoyQR- z0i0f>k?{@+wsKapi(b;Q%X%KwOCikZyO}Z?<`7!bE5Yx?gP|2R^~^u4$s9`3i#9mh zlIVmpY9v?vW_Dad?bql_YK^>=9cK7UMIbCQp|adb&xk=wrT)~9zqaa@C|rH7vm;4m z?;C`|mfOvWZXcdAF6OzlqZh~Chf-~$Z4|4H;i+uI{wPi;rk4Y$Oe)plE#|@^-76Ob zbuzF%vDgU!03W2@TF&n4^}6hNz{yJU1G?-}?!}oB#U~Z`he9}3_3-j?_{M1U@G*H0 zjjRJSsXCw&9}yFLb53|M>%Ll}N<4|AY<`1K>Jx)^?Ry-jRIa_7boi2l>i$Kxowj%I7S}C!Lpqx%yG)PRgx#%Sioz`Z@GlZwK z0@%0^eiUBb6xP0pDPIIFVhzl&eA8{#mf@o+*D5{Q~L&Ai+1?ryFhn)!ANAIps+ z<_ax4^;P{9qJ43Lv@(fIztdop`UZ1Fu9C0F&d_Gb6wdc(&2!caBr4}8fp6C0Zd{-> zo!l#(C2zRV=Vq@4NO%EPY)BA5B3x^&e}NEs;N4gBx+jN|gEj9p(~v?#nq_Bt07?RNcgFgIig?>uh9F#;wJlnKa6rEbfXeW)SMP%tX2O zO;~G^Xo>iG@P9edNORv(X)Nu~34c2HVZ8T8OA&Cm=DoNqa-yec0r`z<&b5u?0>1#e zyg1m{V0!VG(1xHfCT?3?zLkbtS>LuAXcL2$*l{!ceOIN*PI5>+d;uw#oT1cz*00cR zcA&m{{Lq-w`+*?5s+m*`M>R8p5k;bxSgFBs+PSD+#da03xmXb4*H&W3?s`#F#jyLv z;=h%Dc0XM)Z7us{4?r?{NmPho3J~;$2t# zlsdR8_cT&u29X5rL-&~mT;LG(g?*jNi=tEBz3ULPa zOjVxK@km}F34I_lIeu!N8g;8TrA$;j{wcbZ3d#C;VQtY4Z>lLUsEL9MiepVbSfMgO z*aCwEM(xZoBTv4|C0kT0WJ!Ty&j$za#ly|8oZ?fK@UJL`>2*R7Mj4$O(N4hnEjW@T z-njJNNNx+Q{LQ`bTSuL}vU%z8v?`2?!njHhB*fE;==01NW)tBYx|fZX9XI3`8ASgVfs0**JgeyjidMKTFg@h$L^Ytn*h zv^XweGb8>(po8MKwNUKaK7-eP1ze9U0@?{dRGmG11GShX*YfY$#f*K#meS?H+|H?c zWLg(D_+uqfhXjdyfAJaPfXE|ZWBZr1r2Vf)6}QmopF)oL&0jElq<=G#nBIR#QSRYf zu1)Jn)_*o%RI){*WDsf$J$q3N4~IiJRUkTH9})U$#dc2NXh~{OoW{pGrv7R{%;a(y zPpgUHB4!`{RFF0Tbo_F?s+_btTD8lw;Gp;jc@bgcMmmd{L1JQy?qLtsvl98t|Bk|{RI4^bGk6eDgL`9y75>9l12dkaQ0IOf%- zr$jNCR212!*ggXJ5ygf%Cfz|Q(b*p(AUm=@zWjW-=a?not+#N8lSCz7HtIAXa$n<~ zL!_?Eb?Zt~STfys2iKyr3t|oN-G%FI4fW2m#um{>aYq5?F5PIjWGL>;YF>PGgzrv} zA&2H9^22V0;0#4f=jT?W1wZ*t5cLQ`wlAE2R7*T97?#7^)%@7`s=%inF3y&YRwBE(=|Ypz)N{= z^cJ@(vk_#!snk>774M0jr9uZAIOqe&Tny9*XBkC z{szv64%)}huZQVrYhk|@St#Ki-WME*`LhWNB?;TnH?Mp1^Ui<#x^T1J3bmb>`c%DVh9SjJbp{-MBbY0ab1Mgasg(dV@0zou|P?i8Hb+rTPRmxU&$X!4EHrl(B;OMMo#(yS51*BH}Ke89qlXcFu{DTk}%Ec6(0RKM#z?4L2 z@E30fr@I_Hfmn}a=i@imd4N=+ISeSflO-=5yyPpK>U@5s9=j$>pRSFTk$x@8 z4vuIAnE9au>w{cE^$K#hRo1d)f34gc zUn$;utoK41ar(Sm;h{+3psm-xcKy}kk2#xHw$d&57eC*w$K4($0CsX%#`ZbK;6fhhP=ShYJ$K6{LjdJAMP| zJZtoB@*YdhqneyyBKL=`U~bFdNAWgk`Nu-ZLhq+$6n$rZR6ugy%S*5tru8>((I1?s zY|(=shahLg^yDidJL0H9&1&rUWGysQsHd`iN4Y(+fAvp0`YkbtfsD~VAysY)p0E9V zfA*GOh<2AWVeN5D*VEQ>r&ZLo2a@F6aP@NNN6wL@{(LHP<3o?tg~a`4Y%AG1004;{ z*j1}uU(tu|=mx2M=%|2xtmCC^@n}8?CsY;F3LR`i7r>r~wqqotPec=ue$%fDj8>7; z=5{I2=A_ zh!kw#p;Q}4bgu0@h+y~-lKlC{n=t479@}@OQGJC+U(oezur+Kdjghr67bkH z9sirk>8yKM==3?y>JzrlS!FX+vjK^0gXGPk z`o9wc5E%I?|1H_#n_h`Y1RHbDAy|^$l)t8=+Y)+d*H3W^h05)m3Y2%2cv>+c@ z^5Ju$dn)-MPqpUpinK#8WA-;7e-o_rX438@ml`$>ck|zoS+qI{HJyW4L<5ONNQ%Gy z*E!YfLKy9cE6Z|zd1Gx7bX==f8Xef6G@R-p9Zg}lJ5@_$wzFmO;jBc81105E2ga4Q z?Lwe1)^LE??kPU0?GrAh7x-eON__I#bNym*Eb0@N+N}N!rk+e= zDT2~W6#N)%fmicK3XGqoXNn*L@T=bXqZ6PtjulFSQS9`38Umic*O^^Mkjxl-Wd^Y zF-$0t<6R-s6mrM`j)$6xDy3HG^a|xa++pd>W8T!GAGfEZ;jb|21Q_^0l$LyCnLXJ) z#l~U`h-w2&EgqQgkHi^Mi+a@zw|!+-$$NhVDr@UHAlZPS{<uVzD{CrvM9$9#r; zC52B?%lHYjhuPay*x?P9-9VGY(KqL|A#7=^@;|QU*YvqTKtC(45Lb_Imr(AdKpWJE z6gbjrRU{m`!!Y@@L&o&wvh~OOMIfsnVII)hV?aM_^}4O!{#L(*C?IdxpddWleq~VT zzl`|=JAQ6uf}0o}${Tm*F{?zwqlL2)N}W~ceVZR!xQoq^^^M=(ovs&19Hn~s20GWZ z(P}E9r`S$ukrcU?NffII{hZ9*DBiL=BE_#s5%wii|{Jp#mg7qYbGSmrr zfecKN@kaGzaufiU2Z>{noDZ1}WW46;pP1R2b>V03J?d+?Z)nTV9O&yXKA>gWZVU>r z#R-}6v6LMh**CPLiT^~w6YTQyp9M`9=FZHoJRkIOCj7D#8Q==HIcIJj&Vwqp1umN! z@;SZg4XlELSd-OlB(x7*KigV0Z?yjJm*ZVOTal|S7uKe@=i_+{jlY;}l6yoAZ(5&` z=du{7_;Gx`uv3Hci4J)OEUtZnoksc-o#8UiYb1|~&h>m!1!Z9~*+Vp3{%r}Iwf zCrm~7S#Q;APf{!^O%!~9asOT?5-nOO(=aC_!$?gQ{@haSno$9iJs#>nD1h||(px!P zH4um)li}Qx*<(`DRi2EK7($l*7?)iQAQ-{GS>!Sr*CQ1M5l)yVh)C8;CLpwA zB23?k(+mN{GViGx6zC5^-7Wl0zYw%H7^y&tWt45so5TfWz2*N5Olfo_}6M9ZS^4ViFZ#$bklK?ugZ61=r5>NHAA6F3;|N1PZ>RhO6~x*Cif> zlIrSU(t-DEr`NjugR`nmJ)!dx@hl-&6y@9%!1gZhON}>>Ud^*2FK==wp}~;%UG3TO z`PYJkb(Sthxz4{(@M1^{5JdDI#aiXDKtMaf%soCWsvUU?T;<-fIcxwZw%Fqss@4tC zg@&bM;z>0Jql$?g7JBO<^Fv1ji3?mXuTF+DUlza|7b*SOB3TQxXgul< zCH;frc2QU#DKR7$Pql2;kemLkOpiOwqNvnw%qxTJ~7 zVal9$j3s%9b6&L}x)&Nmtxja-@;8q(*ncGq;kFJ+jp_*Sh^>h(^rIP{i>wR)X4>ov zk%Poky@_Q_;obM5YfDaZ@f9@X)`d+#ZWJGyu(H%l`f}%Ybr8&GVG^`uWq|#0=Z5;T z<5>Mp=%pX*3?Q|QXjX{dK#f>p;d|yxIq*@OPUN+t)>#m0kMbL;0#r+VlsnQawqrsW ztJ*A12xT|yJ>}i<3qCOX1=(5v+)~*7Yr&Gx9{SB87rS4)#D5!SOLJjL1G{k=raA-I z+U-;L03yNTEin|^UG~dbaS#aBg(}#%vO&VyPMO~%)%U9LaJbH(YUJP1=3{KNme8$U0507*hd95PR*+lB8=>2nnU)E#Xn|g!|m$5b0elVDWTz1s}ONDqSMqG z(%PnIwp7fmGHzlUf05HI(}6J)*MUKLA2*Uw-^QW1$JRj(|F@LC2;()M-0Py2`BDI@ zV<1pUf#>SmmIr}4vLZ+77uv7@4mI-~Cl|-mnWw$V27uaVUZ_bQL-R!Sn1|i}+6SA( zOMnH4$=*!il|toyg)&3@{~Y$i9?YWgew>N0*pXP%&>X1z%PLkue#O4#xQV0WGM}_g z7&Mv5PpicN!(r9>-0};`51oThHx(A7NK=2ZWPSL<5Jec9Q~NdH`Efik{LWE*tguFM zW@ZJ>9!MudbzyAZ-`w=rh{)TwnA5U7sU7kTN!{jjs&>$2K%$mJ*Y!LEl^e7mLAMrt zTG%Iuv#{mO9C_%u3+%DF3Liirm9PGi%UlC?>d>PaI>H*a&VAZ~liqD* z&(h4>L0*QFsI;CbqcttGVxG$-tmV^TDte)$H7n(54qhU?LD86Ojk0+Rq;=>`k;&uX zMW*#?ZWR3}x)#=_l)`JT@HQ)R!Qcs_rN*P^Fm6e=dsb>U=pXxu-Llx6t+0!W{KhkQ z_%1&u#|<;cTDa<$e-dOmq24knIS}IY1tYKm)uX}Z`y*UO>2bZKL6D>1q*Cd~^k)a9 z{nF2AuehwQ)fX&3p-iWvw2F%4=nrLe8OL;~uhS0gLD~x&Pct$$)i_ ztCn7YABNDy^+eIOERL$81D(+GvTt$+X*>un%?)~ifEq{p80_7X1=p0H<}+(Cj7Q`5 zh64}{TfeyoqID`{ijjy!`K7rRo$JtMS&$SUPOGx62Iylyyd~G;nC8q_&3KP~qYl6< zRfw>g!=Csj9N~!{B)~(=5ceI_DJ>sk{ej;UB8LJ}=r6@EWx-7G!fb*pW;4nmOcW@1 zf+;sOO!nig10vId(1EYJ6YGESMJ6e&YteHnlrC#!=LB%6gP6^;*#6TZ{h44?zx#cC zxUECfiDM7Et0xW1kbX9o-z+etquhRi_|%sNf;`wrMcC=4(T9us`uix;*k}pA59}F2 zd2ukbbEd13hcuX4z#8ON@$eD@IZctdC<0Iyru#<^yj0J#v%4UQuHE9K-%Fa0NXNxe z*{GaP@5Fuu4oC5c1lnw5iIpt%*U~3O@Y?GKPWvYl19vkxLXKM3a`5G-_M&MLE2NU9 zHBG27BA+wKWLk*{2|37Vbek^(G~5Q)iEZN2e0{-+FB4rmVo0T#r&o7oxi8M?u)L}K z?B72oQ!zT(TB>Q-|r zpK1r+kQ>Fk3cJ$mFI8N`*s20j+jfoFfcqSr(09^5ClOtQ7LCwKIQ5k5r;LV0$f0dx z&L;9r=+DTdl5+N0B~vYabVOR!l$xBo1#AnMy7yr(sQVpDE>W@ zQrA{x`q#ny@a6O;rr%jg%{Q!(*V~{T=-|ax{i|i8=3dkvB2XBRSy53#=_~d7xuvWD zHsP_}qLtParZ1^;2ECpK{kLOTjzP-=rTjBPjRk z*3u;k7#1SAss|zYus-Z^!_%j)*I1nFyfzxOXQ!WDq9#E!a~veE=Nm4p8oFe{B(*!^ z5y;<88jomK6f+Xt+hbi=0GH{0|0knffZ(wp{%CFB9T=h7c_-GNNNq zV`6>h)kedN$Id{=D&we&M&CKAF{dCVs3=VhpOmA?^JS@%2gfC=06@J~SN1urANllK z0nJX&cRW#=G-%AAHsH(jyM!ynwZyzV>xEYNk{--eh*pz@Wbih=HY`ki6|TYo#Dq5l z1GtIXw#al^ z>Mo{CHNA~2e#IoXNDtS>9?h_uIUN?csiKQW0Y{gY!CL_tn+uCnnA5Mh$H8O2GaBIp z%lay`nXKg;&FVcyx+hgBBW?>R!&E`e{WHOj2*P}f$vpO^f*|zgu6{S7B#_Jj)jPof zox5!e;rtA)-QoX8XV(0_g^^hwAqn?ZP%QU;eiRO;fvl-oxG$9ZjdaWv=#y@69>&Vt zj86r~mi5sjW0o% z>$IW~EP-!Hvz;ed8GQud!ucq@K_pV!E8P!MKSFKcQm;ymyczNbxjzlrSyR8BI-C$B zZv3K?v1Jn}-|*-?Exg^e_1z5e8)4d}oC^b%|I`B+QYN5m5?POV#bJCFeLEvy1D+2v zn#yE8EUZ?;9&VH&#DIko@%rkja*5K(txJk1Mc7DTZ;y2)z{(YXL|4;As(o|3Ls>%`J}dDOc@|V19jHMLNsALk@iL5C%zx06_crweY^QNIMM^;HBuTddA@{>C zRYHAad6~f>W;5wk!uU6F+x^x|+V+-e*(99B$Kv9vlj@3^s3uBA5RPQg&th~Kz`!_C zTevuk%RdAgNtaD!^v;2;Au z1?hml-~pRY4%p;9W{aqdp5@cOu&UxWbSmnf(}L@AU1q*e(#a53<2(w> z9`Pg2=h@H=e;T!Le4$9u%|%FTZwFqty(9=P))XChv?vK2LhnqI{2E?8qdV~XU&sb< z>nq_U$rSYjIw0$7S*2|MVk1wunseGuZs!SrI5&Q+SA{(TST*e0Q;ywjsbeUV_K3~* zZDGvLFRt64Ftd89BDOhMBow>3&SCrdX25dB5AA#W0f@Z{A8>7-A>}U^SnS9%>iJsO z#ELvqkQSmcDdFwSS82b#+18_@HW;x$2as33!{c$dwR*|j!_FhdwdceQGIw0O3PDl5 zZ!>_!9aZ^GU5()|2gKh#m6Q0$!I}0<9y+DvU!ExG6NI-xR?8yAcbqh>T=Y@dsB*OEu1)~?&K2&Xt@E# znUg1>TA_n$7YWLI64w>QwOf_M-tOq<7!c_vV)iodhK{9vB+0m+UO%oHYD`$w5n}4} z$p$G_5^$22Th~*;U}1^}qA?5WFG-ugi4-;8dDY=PA~;#Z}QZdvXD$CabU$M=ZQZLoI$% z7)GgLu}O9AagGiVR6*7$wHY$eo301l=1~DzpCl(~N8)w_+l<(o@%a}ZV0KvJYtvP^ zPQ-cFAoyAaOb}@VD0Jl8C?%5$-ib+RQB99`fyjGD>{Ks*z z+WYs&7R2mSZglwsb1UQq%V@Ws2?QY6+!5_;)u zJYJ(t=j$7dV5v=NNm#*P!*?kHJ;@AigV$mvdLRZ9onh?$GE_&u$F z!ld}maM2jOG&-oJT?OD^FsO?!4{*@AQh=a zcHcy_-(aDWLL zG_i`LRPlhi{k#tLKi}FUaCFm`C+hWA&f&Tp2vcMdXoL5eIRUHX!mzD{m^+8 zjixCLJ93aS&2lH+QDtf#Cuh>v-HH!8VIiP+0tu-g;Q84W&_2P!)?f>C2f)$6d@$4e za|J$})!x>qtkpvm2-fHYVK2B-fWrISMi?#IdUDwN%Yzn2&)_wUf#l~17aD+&<|dniBH1Fz-ypOdffg6)jo)3;+x?gP{uCc z1Q|HJ8*cXy(7)Ix9DvByX!nhx%TwQ>5x}vBvSz>e>!1G)=eq5aL^vqbMaJ4%q&NBJ z+sHs*T$P2Jcr?y(&Vx-E%C5IH^{X`T1=Ly)hZ9UjCuXJHL*$0$0jD*~i5ko!N9ai8 z@Pk&*zdu?&Vv}LIFvEY7!UJj+SuREQ@3H;wXeO568IxiHP*S(Pu&dAKT<96%`P(O~ ze{H2^aT29nda>Wix*> zOs1`>(Cmj7e?#*ozb=W1GLLkpB&x0MlTGP-5t==fd7l)^%05t>KRM7>VDiCht$iX5 znxwn3A?A}ihwJNjHu+9Vl+MRnKiEVSb)z>R4h3_&qo2L=6383YB1!2)h9#UE5(;J@ za|yFkW!&<39(a^sK2TkTK!Iph2y2dkKzCbqq`d_&^jZ>BSKK?@S!TX9{5ix=*Wj@v z01N7@g<_f3iU&^8(FWZdF)06?7Fp_U}bLkL`zPYNd4Rb_upe4Bp>oZ(kWHNkbPry*s@o+7| zo)>GlM6eL_d;Nv4YMEuJXgYR4Z&ve3%9r+7S;iQ8+hIG{ z3PO41IqlXZq+Exmb$KSmV#2I8T-SAf6=kk@5TDxbGcK1gSAr;&ZAr4zyFUPTQ}AuT zdBjT@q9nz_5rsK_bB&=CFIPx!`H)q4YBf+Tm_lZod81;FVJ-28{n?%i7bttoJK$s2 zL=VAHB?dwbL`RBIxK44;=;bUDde2cJ$^*3t~e`-p*5%eXc~QPM)?y&w$Ca}PVB1}0hVmh596YQDQCnYW1!yQygk#AE#UmlsChA1~brMH5x4zH`D5#woY-${W*|Y5)GX81sV22Rk=1nxl7_y1D$CRL4vb< z+~$V}EOka3sG0{S+VdTa?FOxow>4Ra!xtF#qe2J@fIR}*4O=aDhWoA$b+iRSXuLp! zvp-rSYxG*wgpx{no%2l%w+Tx0M8{*YD@~xL=ChXg{b9)PEp(Y&#e-p?LBnyGIE+$$S?s1U$G>QKsgP`S zl%cjby)NTx)?B~k^$)Y4j+jCLz8FvF)q%4y#2j`H7Lw@n>X4-0Adkq*$ePa3WNlpq zwNbcA+*jiR70 z?AV38(`DxF!KB5MNfl*Xq{h6&J-|))ZEoXM5wDmg8W)JjK4je>cpeqgVdQ+!24N7U z4Htx$fZp3NEuw?ysr)sM%Eyh`>{Z@=CO-<`r1m9bP6hXjigSlN-uT+t8s*~O;E|mv zyARd;8fd=FAFDr_lsk#?ub58Q})BEl7 zt$v{vve1hTAic0rVFc(`tecG0PvG^b69SjtQT5!Bl-~+?nmaN@T+c1^y$4zkRC&r# z%17soB{Kj=8U4^QKb4Oeo3*pls+-I#opm}7IHoWf2_*xzw<$66YfW{W-Y%5(JQ_Vf zQC6Ue4;65;LTAJ84?jh>H?Ehsxcw%#Lw&!GU_G2VtLoL*tz*aV0WkakV-N)X_l0w1 z%VZ=Su^R{xX-RlVEy;QG=e#J5yWf?(iGX#ckfxJ9d~_=#+-6Ldh#~U|{Gf$5*ny#z zd#-$3Yz&xpC3cJD?q z8T;Xan)l}B^ZCV4^J|>f)}YLw!$d#}yC_6){fES_|LX(h*_(q?65JV@38PPJzUS}N5`dBIv`j#IDUmg;uo2Ej7MVFu|*|cS!74V=Kx_$5lwB8Cd!=qsE%B5kxaEN#S@*#Ar3)d ze^Ux3w$;rc!~U!Evbnq7Tl2^SSKPh|Pp{Ey;og3!JW*i?DzgPK*7z!Bv&x{p)jh>V zs)omSk@#G{xYPiCmYc{Cz=|WyaWUtLr$? zP=EB-o*-4d&YddPmQ5p)hC$LG-2OI^ThS^qCEb({mC*w|FR^E&^8bC?2g5L!t2{1Y zZTac^rkgd^mh!e0J-A9xed$lY31qL4+p{zTvIi!U}<*sU+cPIED9s6el zM&}-8pHX6U&^hGl^|-F0Pg;ieBIMph0T&S1u@odtIlY!6LPcOA#b zNWHW9PbX;|sYHQs5fL8#z*%x0C-`-8-4`$!xezE7w;WjiD*wEbAJOciYctN<9b^_x zb(fUr`B18XEzmKF0;k6Cr{mZaI6!!eEqBcur}L#)s(W2;(4;DKRu63MQEX ziA?M8LDyIm0D|?=LmcP%Hdy1)l9W>sdpEjSw-hF!9Nt;Kn7rEXLc z!e&2U$ve$6Ojpa}v={eFWC&9EM;fTws3H%(Rl{#_9lp*lhii(;&YUW((!1ewdp^(; zt^0AiuxemBVO1702x<;aG3<^nL_)VvyI3Jfw<;18qW8naL|-a9CAl3D#viCE%P#0qB#MgKl87_?j6F&<6xhLRm&Owrj|b2i&V19F?CssYcDBF-E_$Z-=vp{5|S7DcQqBV;i_ zGnfvrEF|72i~zas;I!vCT$q%6>d4h_i6#pT)ESyF z>rD@96WTB61Zxn-K((cK3w1U{SzwjU4>-5D{SGgWw!9s+K{n!m+Lw}njQB`@`$IHh zp!`vli`7Ejq5kk^VbSmA=cr~N*mI^A58u8XW(U~R z?W+B`WOl4czVU-SI;Fq(5&qt#@xf5MZ7X~@m||R2J4EbigKZHBgXKaZiP`g{Wg|gQ zEcU!fQge`zn`fzU%W-VJz?hkPOdq0ntivO}!Gi=qtdyENIZ!reH-BA63@Bd5A)P?o z3JX{UFd7iuiv1|CbgIAOG@NjT-MeTaXhS_LUz8sBC_9!nD? zln=AQ91C|W&Z{B=dUUo+Ac1ftyboTG(LtKlO@4jlu{qRNIanv-$fghraIl_i5waSr z?QM42j>8FdmFS~>-Nu-M*}lmW$F7Tf#?aem*X85=1Y7YnOF;A&ka0-=qu-Eu4%)-g zZewsc`J+&etSaF{5w8n!dowo>Lhk=;n(HL$a+2pyq*@=zpfZut#+UMUwT_L+E6Xhj zOh!h=&q!gV-*R?(E@nXH+9ajA2d9e8u^e8CkF@tGUJ>WdQE{K6?*s;nN$9z-UvuRE zrWLTz`@Eh9IsL-H%D}})rJB^LcklzA_Z4xZm())dnT)$^-%c{+9~dLL6PA{GJ)Ti5 zFOi#-Cd{H=n_OGZai{jOHW0^>g>i($flO*`^?)8i7&Sd#KZRe53yK$tEn2mx*Nb z?{Pn|a(QC$Glabx_2vj#HBQQYQo}4oi}cJj+Sf@u_@bjw{zw+l-_F1Y=2Y)8D=>;S zXrxuLffB-|#BkK!_CxdL4>b#dbDy~i=ia8me5b_sPvO-432!~kUvo}i-9ub|wE3C) z5_@UT4=k)jR~SPPWT^}PQDIb!*V#r<%4wZ)Afr^p&ZGHgG2#YC9YMK7YsmAiZxRac z!tL|jIKq4@X>*mB`C{lpbWeZm9qc&Dbekf;*%$H`spahDXnhEnY1ZBVl0X7stj5OI z5}fAc>>4Up5KImRKazaDA;@X)!uvVZvNX6t2rfml0Fr@MK%=ka8)IYK!94k|nATHH zo&^$+ir?hw1-k6@4pXXhLD=XE6~ix9I?lH^MBn2wRwov)lE0IjD$N2vlgzNx>{LFt zqC-iMI3&<*1r0e^O;MBAU_}&3P8v$b^5WGtNNn4aPiEnZlJgoeGX8F;SKHz>-S%J5w+KiA z+$0&(S{w>2ei783NmqvzF$S+$S!M+N)hdXJzKbrDzh=N&$&MTWIT}g<6b0>Zw}F9s z*zjPKPzay0vZ3-~4L`!PzNpNh89)&6ZFNJ+wq-)uhuz5w*|%+&X5#4=RiKYf{2t2r z)}&B|gq7j6i(Lr5I_bgyLE-@jItE0Ceba+Qp{X4KkWv~|jZth&j_(n}e2k3HPaC5hNg*H@jdSJ=(~}!f6?ztOIdK^kPgzqY-dmi@OQ(mL!_i%7 z?=9k83FMd-<^TL2`8xHC?=V5%wg7CdJTP-L7ucfYQ&Wk!!LDD+464>%mzsCN>=?mf z&5@^KAKSRv!B>ezZ2k0bfs(Xn?hP6CyC9VZ8a%6fcnN0;uZ%Krd9L{!oUtfMcB505 zPS_eLK<+l)xmAu}Rl2}$oURz7s7bW#Qy(nE;t9#4K$vQx7Z^8OTp*LI1 zG^MxL8wA9z@GF7>)f;~b$e5I_htR-~_@0UzT2W*Lds#jR#cGs2{9}_@@c^RB)0M5l zPg&hU>m-=`?~wh9+@@<-B+Wfh*HOpq1ZZou2lrZRa$#hWk|p(cS5c{dQ=dq40oMRt zU>^>Wev;GuUT{mZ4k@n2;Q`8|sY%PnlA>fB6Iq1ugz|!j7RX+ANp0@fAL0hnV#x87 zl4^^)qpy~42;-)(&Cs#CRhc@wm)7I}Mhyt!)t?P$+tHJ^#4IN$EkOaRQ$RGlrNkd{ zRblzE$wB<}*hG<3DKa@kVWv`BI*dt=*{hbhL)^)gUGRd8;DDs0+T9f@Yxv6Ry|-iF zNBM!|f3U}d(tNl%9bvKmhDHbFi+`#Tv)L|G;UL%MPe4a~)0mnC~AZ@YUc`!4O z_gHK9KJ5x6lE$`4mI0gsmTGL~TF~NlKN`~{a5cE>uRM;ormgF8?Pe~5U59|WO1;a{B(ycO2C2zg#D=l`sa3SE!haYo-=|8zwNL5uxq4H>AlGkkVCeO9{%9H7VvQqoyDAinPIW>ps}dt z3(YU7Q=nwY+t0rGSaxh&dA`IDxgnh)v7ll*mbEv5aR*`+raIYZ$nyA8|G!~iCV7r@ z++b(M)mx<`W+6fnY_bJ3NpxrU=#81yMiE|e&pZ@vf~1ej&g{Y`>@Cq-gzr=b8PWa_ z+fb8(2A3NYn`;?58(G25qmoB=W;+LRWZm|!;u2$r3%cv+s6Zh(s}E@}S8ne8m#5qF zqPC|MM23P_s76wGbHZ8_(35PBSb1rz&PZ%B6m9Q6@52FhB$07m179!~A08nBJQGe;*7qU&Hcx5bo|s65CM1y+w=jj9S8R`I7M<4V^)4bzKX%^rA&N zxl(T-^>o16mcNb>ll~ZrboQ~eP=2;kUwRJM$f&%$ERVHmt z!F!xhSr%)seVovxy6a6!tjnD!*&1eEVCSjf+Cg`Qp8pMun*QKNx8RZ*Q*7W>r>B#k)1a+?I?`i`vj25 zZp1ba40bq0ylBPpewxeq1;za#NI@teF`GqH86`GaXr)_`SR^`tSWvc)8pYAWB-*hv zj05(?pIWMn2|oACE+kcs$d?Xa70SW3!r{jmBJ{=7)J@I%?Fy_NeE*+XIHByTXeWlQ z-6wU4pyvbNkFxtQO{dBaPBzA`5n7XHYn|?2e;G+q?H&1JR9PsP0Kg3L>58Zdlk1)> z@uiK}*AMIgJA-HIzw%wTjV2bIq$PU4{Lz^bAy0tJL=a`|n3q4Fw_J&gPSWf3@pnlDDj=B%rHxSn;>(Qm`MwRzl9ySp zniDl__1;xL*+Fsr7vnk0$UcE-I^4#mkD9N)_-68)I>h@zfQx3={!>K4Pr7Z@Q zoj))NaDOi(g%Ny^*T<>S^P@WfME6345T&oQ(#}Lus3!|e7R$EuJ6tDH+kkYL^O>DczBa(K zh4x=bb*iS$7+`%%AVb0CqQYSLeI}X~znn?Y>zVruVPdwf^yZcYw?%KOX;U=P)yl)r z^T5s5$UR3e^fMrlFFhmu@w*p$4xp9obhs3d)osVrE{%wVAyTtHuY(?h+IS`CpwX<1 zr$dsD;~J((X2jtIEc?pE+zD*z*ma~~o~t?jS9(241EF7#fic_5hz2gNSqX%wo;#8C zmRinu%S&E68$vGSBJE^{3m;gg%-D{5Yn3!BIomPV{mxT%7jhvAQ5hqK$$lud7Ia0H z!w4BRqON*DH9)6bLGmwLP0vR8j5rJ`15PH@D1TEw&(lp$MH!Q$DXnxXxv7uNa&+P#SzMl4pCkTHx(Y>rvdVxPIeNzP zzk%EOl~rWI@GT~Vil}UBrsX}({>sz#6mSrF(-%>&>#`vLhyH`3o9U{mZ~|Ku5=@~ZwO4XEl;$E?QgeoV&(Vx$7szftB#T`x#Tzhq z9&C@!B-&!Tu2R#uqG~3Vid;S@fYU*2%&QSoV1yLU6k(L`A0;#}R?)fAsH2lxC6Fkt zT>OAp@y8IxS z7j$lJiS@W5N5F*I^-T?{Q$Y>k0bZ2lB&cBVEICh`|MJ&U278F5@Z>(9)3+lfj(o(PUcD^9>-Zi?(+-6- z0RKM#z*ts3gXb{WaygsZkt_L_X-pvQ!8kt+oH(Gx6UTq_vFA6qy&N(DNza#X(};Z@ zfgi(dYeT+nE~MIBHyb;8o7Wix{d}`|>e>|OQC12;u0ktNNE*BtbnRFqH^G9=@;@LB zlDxpMSX`FH+-O&>DZx!JF+CX7V-YhRr?3o;wpW>aerpMj($7gw5>xvROUlzSSKP&i2L3>y^?)ksvpr|9r4(Qo-2R}yt)35RRu+~D=V80{RF^^S=6fU zE4iMM*KkYY)%Lle7N(y&%EM+)FGJQaPSDd{2GI+OeBjJL1?Z)$Dy3TXOG_fKRTX=_ zppTcq@Mmm5K=-5_BR`23q`f-liCMdIZWSKF!N=yg5qx;eY!Uj`v8(foO)$RQ*SMUg z*(Y+vnSNT225|7LG&X9qb#>w@va-R~Bipbc&xF=wJhs#R_ViH_h&qccSiB|b6mlif~qsYfILgpJ(XWGA9RBY>BDkqvQ9vYvy)Ik!JE^&zAHA>rA;QSeQ7 z;B4dOqf`u0PBuYG&*?`heI_`#%J@osFV47)j6}SjaXrup{ zaaWn7-c~{{oHd)OxoN3JLrUSnFAbuJns}7q$aBAy&j?-)rA^3 zUa3H!6``t0d#glP@ld{Xo8X=b7Bs@e!Y)l@vO9jV{^L|Rx{s9!wqf^=q?!D+N&Uy-eGO5JS1aDHufn4_({zX1OW*Rk z;IZVgpjdXCN&Y2iuvaHUv}})MR5fLut~Y%8P#q+0-WN(89lDfPf>oh=&A zjv>ht=Fk&x7pynLJ7aLZSjF<9M8#MCCuy{1h>^w0*hl1|ktd>P;^E3{?`w-zo zP+sxrus^8i&`tOtN~=bB%0o&f43Q7}pNCZ1yUU?IF=)w2HT0GvElS2ckZ*O~#t7RN zaf>;Di%EvG;(kvf?P2z}Jeb#7mG_`qi??S4l6W>($+YjmBtZs4>HcPSiwEK~>vT4N zqt~cRG{9Gz*g10;Gy$IWq^%)&_Le%DpA(5T&j};YP$YcD{qS;x?>d9(QNu!-nT!-i z7uDAI7xJu@$VpVN7l%;YIC3T=<3y+OnxSFfN{Jjyewt@X`DO!}fG1i2I^t430uxxq z-g|ug-{_w$TH57TBKb^JWnVFb^I{t#IZsfX%QWx9y{A`%gwCVLT+6rxPsYqx!BVHval}A_S`z5u6c<0vnslMT(pvB?P50^87(=kDo!tw>}mI5Q|vYQo(O4ia5yoEhZ2DZk% zzj2Gb^xZfwtW-kPy0MA&*)`NuoHnqz2V&8tlxfXELp&7K``Be?H2=G7X~T51sl9hj*iJd6`~ zj$|Vu{f^J_7=`w5IqBM><@?rpE!6kx;lzPXskr?(0EHhbH z(4~yT@m|$VHDVW5TcxuQ?jkIFa`w0283_Mt(O=RalA{hx*mn*SvVu1Exm{G&mnX6E zTEQ!VT_o1GG6!qb_Um!xng%gF8mF|ee185V+C)h`Xkpz$VQn{yXKfeZ5bZNvCTTbg z$5aKmNxdUc*K$@+MQi_;vWbKIydpM#tLUxQcWH|2abfV6LBgBWlySqD9Xa<$v*%!{ zP!`u88}w|_0}>Y4C^C2C{olyEHP)uWGy)cJ#+Y~9oG@=|UUO791p-+Eazqckcq=0Kte&B>cMi2&cvU zGR8knoCO)ZjeMOJ{wq6~_(*+zkj(>6lUPsb@~5^cyU9gOYc#a}i7n&=Z>M z=Miti-?8^bL=?AfKR>=07H4jo>DPR4>*0KD;JqpDcr5^wTej<_athcL{idBrvq2U- zT6&;Z0Oq&gO_s7>Wpzg`g7lMd{@_YN2JJy6i$vnvJdmSGQ-YqHJ|jtlPD5$E7P=Xe zyg*?Wd--_rw^<%7Dr>`j0HXa@#p5O-4w5~Q)PxTU`^YJ^(M*V%V0K3I031&KQ0YiWu@1`Lu;}c#Mful97CKE`NkrXMzA~5G#R=X&bgH$H;*b0>@DficP5z?zh%c zOTa+9Uc8g2?ok%yfjJ%*3VK|Mjhnk z6Y1fu%v*ZPgC=y$Qf7b<^5Mlmg(Ze!BRz3oIa36I$uI_|~L(q<{ znvHMp*Y=Qy&sQ4LNQHsFm!ZS+b?E^pT4*b}z<;+0GQnXFHZ*Z_@jXvh|0vnnXfKq) z#|K6NMP%cv1P1IX#DS^TsGl zbdMKsIcL(w)Dz^xKpS=F$9LSJgAy0xSBES3=_n(ng+9XEl+6780x%r;QAL+|1Gmh9 zfw3OCqbc|*rEanb>ItRuJ)$w=3*PR--gY0n+TlRT3~g>6`>V(PW}gQ_otJT-7-n3{ zz4#(ouZ%V!G%OFu7-3_3;53YG=!xC)eS4#Y%rZxuXfQ)pm?!?uFx=ZIX2LKTcl$a4 zIuL5GC*iC&UkysvDBhvRgk03T994FWT0sD-;b`$;ca<2<&tI111L<=RLiE$b7|Id!t{DPdfJ2v;8kkbbLMShdO1*!T6=fiLWy>CndEujXNy6cHT-Ehw%{@Al zR|O!ZOUp)AjCLr_mhn>~<9IfZQa!__=3Cw~j95&i%4H=R+&5)Urfk3U${9Y7_0krl zr+mFd>9o0zp#_=f<>CpgeVV@) z@`P~m!{vuS|Mb#H^?h!PvATcTn<%fSy3A$)RedhsrwOiOCRt^*|6>`uLNwaEX$YlvXxr8p0qx~mnkrXPLvzK zF+#40Ax!m+=2vh41kZz6>#(BCE%2yHDrG*CUj4F71|hLNy9Vy_m3IiZ2Oa>YFn+*v zxLs{sw(F5wk<48}CA0IZ?9&|1C_4nm*oN8}K=X9l-S%Gz(c}G=&J$v{1CvW-xw;81 zD7h*fzTivmPc&5PI0fa{4a_19liYY#m6ZRQ6~NcB>_DKth0786j&bQWt3+yx zTYFg#7|g%ZGJ>bbJ1kOo<&>#~Qa6-{WSGJjfd%hua!QITulk*n4CJ}4Aj_0SIs~m* zNo}r_SPh*PVn;5xRcm~6T@Q)PqTE2>owBT|k96MgyZy^GAcw`J&oBx&l>UWv zyY>bXegeJ$jqQYbkXMGEY_+i(cADuOS}$M81T!!?DO|tQ+$NiABzRw;o3t!@E&>8T z3+B%!GTxW&uCyjsPe~V5ABMZShkE8tGyWrqpz<<{D5~HwRS1%B4$c08@#i<9v|&nH z2(Vn>fSy<-^V);X%0fC&SvDU+LIjs2gSEh|H?PNx?L>iW=NKgELd?Oyo;7X^>b?e) z*&irvJl=~Nw4j_Tro3IG3i5Xfv;0NmI&z8yd`@QZjy`NgKp7=QehIo=-N6BLoIN}P z_|gY*(;^C!dJFY+?A~2N!gcPTNPC|@wl!Y7ke_i4K(XfIMf10smK5dwX(&Dx(h_QZ zZ=|KgkY&cJ-G7lzpt32rjttA>lCLQr*-o^C#b~6=`s6&FCJEGySaba1BdXL=ZZLFI zPvVczL28sT3oM7E+{nTSsx>B=k-=k7#4I)&cyeE>W5t)>t6Xqv+%_et{a35cBPVh% zfw&gU>t~4*pE(qcWEi@!IScv7JP*PRaBc<CO1otD4@Dccu1iX|fWGXE9|afD|Lw^S@Cf7t{P z`!XmJuUNUIVT8ch53l2s&EB5IIOkit1r~bI!p}paNkG znupDuu6_mV_3V131&Si(pc^?aG@16EGj^n`V%?mGFihg@N&VgNRlinhmg=bapXD>5 zy^^7mFfm#r%69!}dHB@3&wB!$p?Mv}rMWd&MttKOeHL3mWMr9Y!AI=`sW4zfpZL=( z>(|u4k>mq7P^f-&!1hfBJmVjdm%xYvIZ5bR^T!F( zHURO}iE|=hbV)?&;+@76H&af60LvBdswhKxy|Dr_kv>%|xvj{o-3_e4+%r3~83!lL zBpzMO&Tzd(ISNQG%-2}E<_Y|$f&2?R1K*!;03vat4^O%a%gvvRkOF?r?J>g$`6xmU zdo@C%^TKH#`L6miTrOp(TBy{?WVC`v=;bgTa#A1)h4CEkbX8OKcR8Q6#Pwp|Cr9P@ znb4cSesewYVwlNWNIaZ5OHhA__F}2Jra*gO<4llU z6BB7TCnOPhTYlo~i;H?po#s5f1*BVOOfD9RsmMN|GHSrHg2|JkRl@g<1c^v71;>5w4iW5|NuC7-|5u#?jo z!MO^OfEF}igA#CgOnTBY0W*^26h5H65$Yr)+04CSknrPPc3V|5f`Zlt5swUy;;fSI zXC*`%ccq$kB*0L8S@a2*B1SOVTb3ij<1nRRfD!M;-F`X-u-OqU=`6e(j%?#8BzagL z#Gei#wKAz|uv=r9m~NPs#e^Us-f+z|E9Lo|;;5Ig^jr3L3NB!FXccbPI(K5^_`|!G zdN6RN0t&Q4nT2(`hHVpJ$vh@@z@^VCdK;-#EAopn6%547M>y1Qi_YB^2xr4R86XD> zQxem4i-Z*Qv|KVrqT}tBQf#il0|ba(x`B4j!=p(vrU@kdnlx1vYEF z+oQkkwxd({lOah3UH-PcF`;BCaX-^NLz^1QC1p|K&xKOV)TNm7Z>qR=2&d#>teQ9C zx60VEE{+Az)kgoAad=g`t9^>icDP`oxMe~v01_R;cIgaxfnFeu7nm)ZWfE;L=PQ0> zdpd7uSLSak)?HdxGtx+{z;|()Wz&SezH<&`qdZ>#s-8A2g;u%l7yAm5v7nMuV9HPd zvJZz>yUc3Mq7ISN_0r@DN9qif^IWacdeBfV4l!)sFW;5e`@(Z|S?;M(;k^V~v5mES zlS1nkX}8cbX8VfqD3gmxkx;pbKAfM{d2an8j=sy_SA}O7UW-wC34Kb)hu|Y=hQVja zmgm~Q?wGVMlp~*Kd^M8GIg{G>9ymq*MCM;dTiX^q6v!>n73>=0qKtD>x7bsuIKm89 zo)UJR9eHdeCErNn@vuW*TTl$e;f6V-TX=qXfIz1&X8=uBT^eRaaTDit z{e-6@r;lN8t;+W6Nyn7)F`|QR$yY(j!Xdi8Wpbg6DH^n8*;+PbxHDU?a%QV3oG)b} z`tJPX;z8+M7Hh(^-=m_;pPdgjP#Qdg^TTSBy+&<6leCqBkIaWeF*)>3h2fL+L zUbm5&pgN^)U0oAXt!5LVrK^?~rI^%o>Ugm+Tz#orZ7Noncl+bIoD`ELk?m-F!2RvX z3N-^~*&ZZH8%}b%TIVz@CIH{B(=d^F?h|j}xG{W6%{XN1<@x$~3A7$a1}LWn9#N?{ z*`ndxi*)sK{>fRfd)EX^WfMQt@q{qNyHhQPThD=N3F{k-!DYWO!ng7n;Py$@0+myq zZf(0po8rbGM`EbVHXEhsbkyoDdv{4_;NpqTB*Ss`Lhtb2F&Hi0((;tY=~dzT8~CK6 zT*!OG8VJ?Y!bhni8?&IcBd@8=;jJ24+-p4NvicOWy* zXgvl6JPDFn-<_}3v@3x#$!VdaAy+!+iMzM%_~$rP?m=Y5*>u+y(3hSC|FQU2JF=oj zMY8F~WB^NbD>iA9teMGP3X)Gb{^tq=sdQoOlo&%t$;LP*Tv9v0-`7Q<9ARPk(__7p zsD87fNtRAh`I0;DIGJzHD!@_H%4_`-3-Pj=oyVl971MeTO}&RSkZhP)B9*N!RQOR^ zg_|tYkM1$!t&E2YK7tcPZ_z)#rnky_d72Dbtfp~9c}TO^|4Oby-*%3~-+u0;7I%Zv zqeXxvUUQ+0{$4ppDtl!1?-MlLm>gs%a^8&<%22xyp(XWNS}f=q;#ckf(^g7%6^z4= zjhi74l7`Aj>B7q>91=g9xV{~Bi$t6TRH*Np2$z%HyZsq2u~?24T4ap1hm1AbKU%}R z_f~o_o2UCxL8nh%{oxB}QFD$sE~sdUpY346vS8e+xjiJj6>WDJXK^WXhcZo1lz&8x z0;p1piuW2((^vWlzA^Tpm|WOCpM~5GhvjR#WO|0klT<;YqVCW zy_-A*rJ;`Qvp$S(qL3KO?A4K+K4-BLlI^X2ACiYE-IfOQgrB@h$9*+2i`kL_J^xEa zS)J0pbIIaU*Od-FPaFU+F4q;nc@X7}mfi%NwC#bgx+(Z4jhiask@9VtQ%!C4NTtrZ z)ql-s%y9($|LavG5`jgQmTEt=&Sk{@i8M9H>hAnfc?%Yr^ffHicH~k0P&uB3drm86 zi7d8xQ1*;hdHECiGKb5mPWCjH5Pm<@7{X`ng$RiE`eG65F=XPmm*wEGPcR&&(KQJD zQ{>u*Tn}8SoA1Svu5jtZZTXCk@yvhH5-~n7 zRRYHR{w1K^@J{kUXCNhbrzv!(kzVhz^)R|{>>v1 z)U8b}kp`KV(*>1^62?;LrdLdIrx`@`!R|Av+UdEB5H6LV?*E;GcoT5L;oCI~twwFiL zR%!sp*hQwi=*D?M^6qUKjMvm_#JBPemJI$F5%1fd@Ax!D_G(Bg^DRr zW;^Z7LQ~OBxZEs=gHHX!aW5GHocAsK&-bG19GBEsLJMEcX$2%f9-*YBxus;qO3w`u zF_V9T)}weIxIveo^J92$aliLVQa}UhrUf-siaFE4GTXpy+X?7B;Fp~ zzUmHn_2XEmXJ9o12FUBie8h!Toud(9*+fDi;;Dzhh-{C5$@ z@NTV`PtvE`(A@mn2+-A7*Z)pldXz--D5DC3Os<(MK9coE2J9Iv@0VuhR2fPc`x-By z0rXP(D%I1h+|oGJGChhSe37%}`|H=CL&Z2V>hJJ@pxGET7VL-MTa}DdBLMHLqLb@` zyFpjk$**P@JI)6GVe+9Bt(w3(7x4ya4W8VUw#+yw2eF23>&1>$JBw7G?v*SR)J~wO z=_B92*%jqBvISg<{7In+3kAm?O4-d!tkJBbTNIG_? z@Z8EdoHFSRFT6axSaN+-d0#7u6av{7Sdy-1Y)Sdwu6hpbP;MJ#3zVdzG(yjPg1)Lr z-kp5K01lKx!gWxbo)RuUzoO?siUt?5Z@6MVC6+$|oiUbZT~-o>+HN&dm{#+le917~ znZCxqh47dUp>ogoA3Qn1rB>ZD_=Z3kK!-8Cd_IvJ1ai29ZBq${GZm4m!-s_d>h1!6 z9t;|s(^+47<4>Go&ErzPpVJJxN^>IX!vA)$XTdypnQi0h-vAc%c2f?I8^c$Emt^O5nVvk=$g~nval1L)cRj z9kt8{5mp?+UsWYj1x>weHJaPZ{Md{X$5sf?xODkLUFe>(ho!&}bakr#muhm3QvKjj zFNOmFqC<^F8(MGfL@iTkLCFEDy++ozIR-qDI3>Vl)IhA!@%~Nf7DG_a3pao%?|ocd z;4~Qt`<@p8Fe1&LVjpbzhTV~IbbYjlKjhO+X0r3tY^_2!R-8bvmsGKOc2z$FfAR>= z4*Z+Geb?CxOTsd|z#9MbJdRgbmbq3WMHD?foCR`F*+28R+Io;hA7WDPXILXuw@xwM zCk^L8MI%mmT)o$&nDIG{i=vdV3*lumins^S+EYrrKal*Fm;+U*jcP#umiU*@#V~b8 z87xkZ_{EPSs_>pLzSPnxtc?EL+cyt;nJY zQ!?q`Mi<;V^69oN7*Sh);kZan4r{B4P7fAz>-p!ONdZ}x*o1RPq67`I>$#2>>f;qR zq%FL80B_jcl`g|;kl^i1t=fg_4IQhg{I{WQGq%h(*&0EPXz1ST9baoLETI`3lq zoh7_N+*l@?a#1-;np-#2&gVat&gMs3=6v~&PH_KqwqGa(ZY}}q>dr){8jC^L2I~(> zjPWT>?fa}a#FhPziZj)&{~Rd~FyLUhsKr{cj0stjN;NG#=}_*Zc1P%hbJD3p1nsaR zNJOJX4^>_t@AUQnPfx&Rd|R4m-e1uib1k?!pFmgDtCtLsus@1Bsl~fNPE?RZOn?&4 zaf~sAzEosThXmAeWIquk3hr%~U<>p;`;Wr>7CeC;7aTBSB7dKA`N5Sl@#S^Xl)cV1 z1L8G7Qe329WT9zheq;Ae^Ce}btTsdl2F4g~IQ>Ra&IqjTHQ>(A%RV>%a)Os`Ne6JK zu$&@QxmSTmMiTY{(vY?liDeujxCQtC1K`>3p>9*6{wC$D^zy|BIh)gBhDDVt-<*-a z@U;EFa>t=9N*0HRm`Ba*zkY49q(6l&D6+99oiQj6@UNQs?85QnQF8lB{QE$e*y_8M-uYC9c>TI9 z**>(Nfx3i3P=YjrC@=&|GS-iY+lQ|LRLYvm#I$SK7)*m*4U#g}IAiRBu;Mq$>8ox+ zK*%fD-t(j;DNmU6*B1kV;M*bh9&TR_{gg3rRn=)=Y`>yh+-D3Z5^ZH##oJTuqhZk% z3CpdEfsZn(7g)$-Wlpk23O~cE(x_qyVH2-3R|aSrgmhj|ph*u09>x}Me%02okZN)4Q;95F`=X!hzoXP%DOBfs6_WrG9tWrnL$BS zfK}Fyyj5_|QXhj0ItwrZNV_`BiM!eTauOi_*Y|qgmk9v~=@+|cn~lI|5%2B5Ue^JQ z1f1;R6hcYv$|NF%`wj9?-2d^(#jt=bAB>?I^_~gNR#NguvXw*z#`}V9v1vN176cTF z2D{!q3z3T7 z6z|~GNa7DQch(KQJ?LaZ;M8xJ2Xr=!CS;0L)$Xd4${X`JEi-`sF8lYw^Fnn|!3$Nf zr>ic?PUoX>!+dl|=WHOIoqJOCsX%2+1q8|Xz#~yt*qua*)8aF0&D&)&(u5rAuNfNv zP|?nZPz;<;*rX@`Y^1CG>wdpyIorNwa$wV3``#D_sQF?%QF`$m?)_|_^mAi14y{?r z``|ChlQDPj`0HcKZ~V1e>WXn@xeicTJ1a_&oOVyG7qk@iWt$_UddXl?ZtT%thk;L9 zWv#)p)cc@b&ttKgt9OS;L(|c?WGO;A8N#LH=z{->5a_)s%R zgd0}b8Y3_KzxB6jHLvm-9J5%@=X0BY-fdlwPX7#Tp^R=;m9e;6Ljn6w_<-gq;F{Ki z|7Q%V)QR&V)v=$3@ZU5li=LZff+(~7o}?+xf}Hvo_w2@4#>^C7p*yAd7kLKh1kizM zjIapC@h?@11FmIH+=Z_G`jK$;7FXKl*lF1ka4<)qc!7}XxEhfMmrQL`PYdkGvyLAJ zyq1Zr%F^);o$mnss8dRt5c|=`Da1o-_88m}<%K59%eQmAL-&b8&U_B{*k$9O*v3>}6R?!QTe0zLDbMM7v>U7>Y5TAFci#+%I*bj@l$NOB zNRD#L1uP1!=%8>fl{xTy^FSc>pYqwmiH1~+b`KFOv9~<0?g8{aa)$q?CAqKYc{jIw z5XpMfTxBA7k&MO5f_dbe`RDsOT5f7T@er>SaJ+73a5Z=j24QMVrZlj%&)6MXZ-H@{ z%RSP!-1oaeyfs6m3;dLamkBJ;AoJ6Y$cBJLFoQuPKLu*Kzi3s21RTF8*3*{52u*{R zeD-6ZMENWqQyS?nrG@?vTs#lfNJ>#bC(#~yXFk}Q2w=p%9A_L{^0m0??EkTGnFBJ7G|<-B`JETq6YK{$uKn`R|OZf37$<~E}w9zUyih;b(*ayF|}sb z2FsrCu04RoJJ}K1kTD=iigdDC+Q@D_H#@xr%3BRfWp5E#gFIw&YFpAWotpA1cY3MB z@|?TPR)07=#sTM@0cNhvmt4bC%%4Y0`Ymm1AvNeH~Tw@0nPFdt!MfbxL77ZKU$Xhu*kyXqc|Q2W!PA zf9;@;)$=%a=mwEBs=k-*9b^^3LiIbVhhPP=ItMHy=$YM+o@JSHS~e*J)$l$ifFFo3 zoMX-=wZ`J$Qqe8Re_gbI?=)NGZG`)51@0g2Hkgl|tGD zo}O?8bcc#s%ppI_SqVla2w8ob(a@>y{^7-jClkJIX#+q|CZ~wMzi{q^257@ zhB>y~YSTmdCWHokjUPTSbv`74Hx!v1Yi2?r1+R=wCl!uy->Z?=*b48Rv(OUbr5DO} zHt&+gI@g12vvW*&1SYzAi9=>v`{|Rkd+jV=!&y>E2v_Qt*Yl`YZ9=t~p_7WyFY#ZZ zt0dO3G!vh(zw`&~qBsASH53;jhkm_WczCW9B04q8{My9d#O}D+kW@PE70ax+LZV|& zaucy^R*9a~I2HJr-qCH)Q7oc0HLmbb%s^Yn0^r@~Mb_Dq#K$zxj#?s_tNbXq&kchT zy7$E?wQ>RsWwU%c@CL7aAa&q_B3r+eN`_ZRYrL!Ruz_rdm;bod!P9z7j}JSMhbWGlhDR$RHf!L{)5IYd#PM}E)avUU z`Uz}QjgKT6+A1n)LK_8;2TMa3Db(lefG0kfh;5&ri>UdR&qFJQqs-UQI=oUCGPYx- z^uuh|!KIO@B&Rm#)6YUx6oJIv>jg-X8_R#g^%j(j$b6P-fOO}}`6p+2MU^V35erE_ z=~zC>{dd*^urA%$@oTrK`eoh6Db=HRj_B6hv;A8zfS3ak^#~9={b-O0^e=$f=T+X5 zB^d+40jZ;rFZYku%UN|%t6#^oF>fa7R>%wgXd&CEY^=o~C64@7SHDM0q8mj*m;`VZ zc!RwXH@K`i9m*!9`rf)m;8>vr+L=xq^}9)v+^4)UZCr`jC0bi~@1waxJquq&A32h{ ziInosaS-6&!fG2LY!8 zp+%2*Oj05^lu3RID~q7oVkXZ-3`7IZ#M!~Ah}F+s#gXIhkIce=MNa#}w#C0&_|#(! zSu6VdA(PHnu_Ottj~d%m$3f@X%5!y$cOkN~y1}7<1h(5^{D@dpCkaYS@-BDvAs;Z3 zpq49oc8#DECF*e4a%En^qBh~WvEGAqW`jM25F2%r#tO>^4=dBQ}}JdDUY zBQ0xgChx)D<}{CeZifvG`e&Ztkd>c^72gm{ZyqQ(Sa?DGQpR#dkdlTcJ272!zU7w=?T0Ju4o z#;(xb4wR5Vi93rYLHk3Zx?rzh&+(0fl?wTk?(Yt{o$M0Odf#9-FLsME_PSe5{zPO| z5uh-Dp_>ygMQ-Ge*s*!M)$7Fi{Sj!)3p(DPuOIzb#=@QDf2OzztJn8^8wH~5E{Wo}i`fc8<@MC0T+X;jO9ed`9GNpF0EjlsGoOghDWHl)phcQ#EJ*)? zK%^|QVTf^Gu<1PeA>ktFYdGdGW;~b8cP{|MXV}MuF_BAr-sR~QDZzH-Q@+mc=0Hy&%01TJwrg8j`n;^eK z?{9v!<0PVpR1SM z9;J(GjZ}F8NN#+``iXY-B=Qew_>ktwpANuYPXsI+J-|L)c2*fk-3~oLwMJp67G(MC zs+PSO(P}#TIVMYfRn=(?Iz~h>!7OUd>2RKSG@*X04Et#{3X|sXw<&iU9&;d5rU`|< zyNjE43d;Nt&!-5bi=SPOS&2rngKVo%4diGGJ#qDa++icw;mtjRsz&DZ_N(`c$9Bcw z^gzp!h21@Tx-)}6k)v(ZAQvZ`&Sz4@uR`#?k1ky5b$mL4>!wEY@=crDxCv}9(P!)a zA$uZdyZ6l>gupRuXNA_*kK5S>9$Av-KTiwEA6>DxP#rth^< zBqIRjm0@mv%Acsk7{F~6A$aL`HrMLAkA=wm8>?8i9x#8H zQP2tiyh)2Oxj;Milo@X?ep97D8Tojp=1-G9%mGW)A&julq&~E)9ou9f6M3in{Np}j zhO}*EQYa_>rn8OMD?Z%u$gBvNFwBNzK2bUh_$KYU-<3v&-%~Rc?m1X5I4(P(B~BNu zYA#g+K8Ac0edmbX#9+)XYc6G1QH|WkT6)!65p>pozJqmaO10dB=c=;+iZ`GskujbI zsYm}Ub-A8D;@cKiTZOf#XC>QmRG%2Ei3)fgX*X|IkVdf5jnk!$KCZmGior34q@1s| z7`?dD&w`G0MPGqztAE7rke*&}j%iX6xj-3liWwl7c6^0Zo5 zm#MJ~XKNYX{=~17rZ0tSzFSYg^3r@YBDvVnTy>xN%q$tQ%D(7Z>%%vpL-!;Z-^0wZ z4^2==(V7tg;~e-RUlCXN_E*7^pH`CtL;MG=Y6i`1<&Q*-DfB4fIhlz!0K_ld+K4kde-&Th^1#PzKr$F+7_XGA611XvL7jZzy zPo;-u2n{Ty4JLU97BQPU1MctJPm^b;xRPSP9>&iRY$gde89Qf{56Bvl2f?Rreo6qK z|HTN1Zr#Y1BS<{g%1vuO`V5~ z3=az}0#SQ>V4S(;(V9_kEKz*s@EtAi#|hk`x{@SZ!$+XLM6+;lbE4@ab2@)UjOagX z3Hdp@D&mH-r)f9o`0DdewB-6Ic)Ds=c!b*#O|VRaSj2h@pyt+{sz=??-FUJR+T z3?k*lG)o{PRFSS~ZlB;%E03s_vWfZxq2+n=y`0!$nuq8Z9|m;95AwA>k+n{j_s~FA z)NU)DGb2$AK}bc!cSGP9->GV^2k9UHMWXLK(wW%am7_QSx*ym&WqXmyki?B%>PC@K zV)#Slhd8ztb$Mw?zR#G5yTsoYv!3`gRDGPavnfytw-6&pPL~8Y2RCxG(pzc~!BJkQ z?zo+EgT_92!D*A(yFb+Lt27Wy>N@KD%Os=f5t!WOn6mQyU}0aqQ8A&NRwoFE@B^Sj&*4FqjYqe4405mL4b8f7^a7N+%k4v)vLGFKieYrUHc)i4`mCD8Wy6YG@fOZ$ zd34|;VLZFyNdLVPuiiO4GSQ{2KPoc&?_v8>CUU5$Fo7xU&;FXQzft96H+_WWH#Gwn zyl=AX77|Vc2OQ-qe!aY`X({yuVWNpvynS+r4(&D0%SIGolP3wI(D9s$ zr|+Dvl^Pz(%0gECNOuZ5zTU`s zQvh5?ex&d_2h_hkj;m;2&nV}>U^L+Hz>0d51@z4UF@U-@-4Qy!RrHH=(+|Tk$1Cq& zU+ROEJG3paTp^wZfQQzqZ6NC{}j)q9KzKEELaEq|U0qcKBEP+5^#Smh##RNwYF z@dNKW5vsb4{}^Cvf9P8aO{k595%SIxF2MVnm_e!%JJ6N%$e#{;cs@YXi1qMqw|Tg{ zux`}#GPFSfCS$MQ1MKSm#RwneKTWqa>O|tT46VG~;!UD#HQwk>d?inDvev3~A#GotOD7*U5d>bO!YJ%xI4f9%j}MzoXi2GnI-z81d6?KlyjX! z>r(Uvi^<8Ea>}hn6LP?<(RztUBRn|9L9sE&3c*-|G#Y*VJEP}tp_*L(#Teuch-W+i zihQCAgd!juW6t2}zb#hw_HG1=&LJRIAMak~zyWcVO_;K`BOK>8EG*e%ATQO6pmBu4 z|E~Fi8ol(V=|CG96vDjvehI^uWX}RkZwjFb3x{hx$6ueb(5r>Ng8B_UMQ_G1J{GdM z%h%It1sJEvcIqlP2-4Rxj%0|}t@vwlyZ^iXkw!CW_O>Pqc`^y+zO?ps;L5ddyitzH zvQOEAQlV1kXX9E{EjlS<$r(l>0?J7vz53cnd1g>DWlv_30`^QHI{^}%wvPm^_APN6 zDqIXzR1%WQ0RKM#z+LuFc0_E55b2W|gO*B!{yTQPM?fCdTd1cFYaHh-^=}u)b&UY6 zkS~L1E;noAH71p}>`L~671QowY7|+?jRlHK( zuHgPL24bc-Ok8-d+mA&h^RfW$9ac z%yJQnTADVn4%X1wLXD!u^&7)n_&NaUILsFVM zdn1Gx;AR$9HhlzrdF{ff97AnyzABpIDz;2n%w2p z)Kv**?{eV7g!TNyY7P*#4FVICR@G4IP2V=<@MZ}Y1BUP z3jHKFE=6nV<1?=Oi^tF1#jSrA-Bj zL7eO3ep=r_ri)J)D7R}-_w-viTCt@R(L;78;XT#F!ZNRVnnAU*iODRS9N&=qbqwjfU9i5t431^y^ zMZECdzHYoLn6{3T*$?ZC<^Sbz&Y$-@W4xb1Cr8s!8Vs&q)ggYViTux+D6UsTU(k8|MaM-Xui}t6|QkSqZvpdD)Y^zn1YOYJNc^XXqV9C6A#Sp zTM89!0FX+|D zRScnl>vTs%{#zs<71z6kWf1UlD4J=!ZSvtni2U{h<90+TnPxbi^VKJ(37!G1l8t8t zyjBQCMBkE#YQ^F4OJU$wi(A=qbf{@XX7!{h@#Q}9BKNaz^gp1-vOniBwavjDv6b_r zqPiV$sAUS;+3ZeDx##dBBwT;lQ!;0u5nQArz3+&nxF3IL4_yEvK#Jl&RO2UV;qdBeUO)RSG?OhQt&D zD=PZVb~x<9<9Xo*L$jfc+{z4#GY!d%q@GWiUhjxi2XdR`BJlQX*)aVL0`upF3=ycf zeLetz8#mH-xV^Dle;ppibGmmS>F$5B#qa>2rS+g*Ef$Wt)mg+*n>zlp;<=jW&qo_( z7U&Tt*)#haHtrfe@k>;w(D(6cNIp}rgB+Bs7Ta)$XKqFYj?Uxv%^9zNabT?0^;}-a z^grEIk!wo5W$FbUSDxN+_XhVj#70NH?inw&zV|l;^u;*@H0GJ;d1t^Q4X!ukbU5MQ zC`zQrrKD50Z=J1rFw2yEfsrydf-I}Y_=Guy6MZ9`O`NH|CX$H8+LgoCNj^QVQ)7t+ zNff^!V_B^4lekxn+JVOsd_RMisZbpbn7}?pia-Um297iW^u%5o|JyT(56H^-?&5>6 zWP#|>|Au3J=gim*7DFt=`xKfCXe&DMlwFZ0?d?X9ok5KtXQiKO*##ybbAo|CA4*OF z%|arNg7N1|fab;m8S4H=#LOr~SnfrCy#@N>D{VG;BrD{Jnylpkf+w{-z*)3q=VLTh ze$C0xop&jF%w(4ZIo5|oM4%&HxU*vAE3X6|PS5Yc6q(q=+aOvybBG5{-qZL}5&NDr zWvmsm5olM#6;76gW*3{-7uy=RFtX5 ztS6M%o+YI-Glzy7Wp$tmk4oZF`faX?FMr;2p!8DB6kXWO{v|4bYG&kmZR@A?+@5_X8fD-|IZJ_lu53k_axWt8`*qskHMRf+W z2V|X6d-Yljt;AUpqnB#%`or{-lLFk*i^pd1SN7{`&A%KXs%&|3!jQ0v6WEo#U1(+) zeyONBYLu-q#cRTDV<_w8joX-W=#)snp2SV!%4Rlmyw$!*%=F-LeF zQ`Mj(XLhQe2eA&U&sWgu3W^2BZs{$Xf?8$qtRb9w!hJQUClf}Cr4^}_8X{tq0^tI} z*}1kc6g*9=yZVps4L|u>I z9+aI9UUwLNZuG3E%5C0-9=5u1$-wJsze3=;OQBzIIFogHSf_>9=u%+b7-nr`ie11k zqbi#feR=sc_NrY7lkR)5a=_?~>>>;-A7Vab|N6h@FARQsy#d!!{_hYSm+($0J^si> z5R@eK^(h1#2&(bm<5ORn>lx{S-jArY%QlLIRZH&5J|Eu7K#2+J(u@9@At7Gqe(+}S#bfgh>%u8U4)a8-93Nd7HW%3W1H}AP|m%hWQg;2Ap&C+JsZH95* zvDajR(WK2<0(%^{74CA+8GaT3Z1Yw-F9cul>epHMaB3hQaL{*O=NWAUB?^HFRF`D^ z!5(Fk^6Z}fq_qIICy!MRv*?|;^=^B=d3Da0#N+hj13 zv(2%6YErwUk%`tB6F*$|$A&|hA`B8Xj}kK?GOrH!BV1IEj-~2x>Gf9ElF{}tVc{v_ zaY8+>I5u%Ws646B6*I`}Lt%4Lff=C8r)uOmmCg_ic$jF>sN(U*UT`J3b$}9WinH6J zuD`fuAi&T0Xlsz+1j{H-HSBx2mQTQX%c~X9zarB|N&i!BKL}Wk6N1iEuAYUD_#79n zJ+4Pqv$dMFGNVx3f*dJ&K%R)LbOA5SG|FPq^rRouAs9gS!$~coAE(u}LaWkZ&9wQW z3WK+VXW83M1Hk&GgLB=K#raYREAI0rKF}&$_Vqk=@Cg>Xabc?2F1`P6;}zki=Bs>j zh?Mk^2?n6QUTTF491ArWyCt~f^K)vzMs!}(<^eoj6&6TmJwM*az@K#EHml5IKdqaQ zDa@c9PEf?jvvpmH{kPq3invZ4|BB#$+Wa|7tP#!2@U^7#?P{U;`wZ%d+Rl_fkuSql z(hYalGII~aCWNNr?VCX|2p3NZJ&U@triWd#7oo!CxT7&Xu9k#|i<(Ko!5XD-b6Jf` zl_kn-JiHEJN>^%WWfB}4iSKmPOJ)7}W};i2D-*3+_7VW{M%=YHqhU;o%WQ$SMqsKvu7z+2 z-n%-6xL+0tV*DL4m(7E#38bZ@_A-TL?^gAb>t_?T0&$SY3KG90_B8}?TG^T!`}w3ABgY=Q(uH5!6F=n_J&Cvb^H2-zHyCA^95-FJ6N~rL{pXS8`lzn(S{=ev&{3XFORYy zUZT6Tf0u+Al8*O3H%|HuZ2Tzq9y_B`~p@H2~KP&1NA)^W$^zz z&%!H+^Tj`7_plze(E3ppk80ZLoa#xaLdj}bUyV1PM>VrYX%N#=vnt9ye5!CJUKn8P z_NdEsUSrI(4|F}NN+o}#R|+iWP=@no8?dP=0!stX+f30b0q2w+bBu;+l9`_s5r~R~ zt4-O$NHORm@42o!x&9|>FfPSmN8O`L;5FTtctl)4_4IAbd-m+W|A<-|n)2G@SYc%4 z-Uf2ZJ<8+_F&d#Q3Tc2WdcO@mv)rUoO-{TSJhwxH(Cw)XlkvLdh09KG7)>T)MsX^# zFHN(7iw!t{4>?_#`_H1Z9so$~))lV%ivtBu(-s0fFbKv%1@w60ZLg89JFC5V{fvmj zl8w3Jvfo7mFx_B1l%U@|6(V{7UsF9ue_T-|Rg@UQlD8n61&hO+lIObX?FU6yO(>8l z_}%_&hgA@&_$*|id-%xP@D*z9 zt`z_z4=kd%ViqlHhV6rLvoBm`!mIl|JCiUID;4FZ5x6K$`p?SsK|!&QJk`LNYC^$< zZ2qK_wGBMFjTQMD{sV=%8Tuc@D5(Q8IlMW31XIyI5;`KQaH0JKvGwFjkmhO|8fVEa zYCvhB{x&5XV1LFIkv9Wx3q`0l78kYT44fVVG4un{I&~t?w$x3P?P1p82(+Wlqy8!r zF$dy!+HaULfoVluREc9nRX~vbr0b}ql!Dt@juczCOZnG@4jydA-#U~`Qt(p@MZ5Ay z{1Tdfdl^HBzVL>%QTG%~_Bv%`h?}l{`k}&I{bn)y-FNxJcnRu+3Gp6!#ONMI5fMhq z9=eRkFS;4L%Tu9g+t1&03g9{R+IH`|LNBkO2^kl`(u@In-(W z;OoM|my%Y-v5dq_m_MhjU_3v20xxO9WpdJhq2#chpa3o}V@iJKrLv3kJP=(6)Q?>c z7Vr;q5P)C7ZO4m-y&6MR6Lo*5>4QsHF$@w2q@&>lhPl+oDars0SZ|0T3S0f^JpFf( z!SHWl55&%8pcRbnHifF< zpI{nvMpz02p8Ysd%K>fVr{$y0AiE}y{~Z8Dig?LlPsb_>&4)yrzf`1S(PDzrs2t!~_NdO5 zq*DHeDPsG18x!nX;k^3E%d!koH_V#Y_Q@Kl7=G8K)$f$ZD#5T?v`5YXU@ei>4@g86 z#H0c|G2QAUy>&WfS2b|z3Exs~)HM!JtdxjTCEGj0%+Zg*5Ui`{^DkUVvDXaQ972Y@~;*3Kf_p%oKV%jg z>ROPL#!VP0Xrfb?#Y&|jw4QMnfRzYsM_tF5i!m1QL8>w&#*XmFLG=%o;ADWlbmq04 zFg2RzGZGOEkEH2(i>h6rqtj#~n}3tME|l=(WfB)E0m`hocECC}5KOS4(*q6`<2yXV zJ4K$o8?&um(ybNha;xk*U)mvg7pgrWU@$;q4Y$Arcm0huLue(o2+B*>auQAlgA^Zq+oK zU{T`JaFNdB#SH2!TbFiaBAmBZg!_?ktb}@CVH<=TQ)3Dd<5*~88qn`bIOs3!={AnM zo7G9Y6Z;gIR~jdXmA7C6NlZ${E`_uyabHbgnVfeq!(dxe=NcBy{|pq|*J=t7Z6S8H z-f`xq{6t0(p=KC#<{Z;1A?zp_6qt+oyePoce3rFi`QAha?l$=4Yh1g|T-^3WI;Mi6?v3n= zAqI8C^NtiAeVVsG)pAN3>CfSQ53S9NY4zd}66UIeH%mA;&`=9p3$iO%b4PlnnpXir z1kbnZb5@KbLlABo{L`xhfUYv1ZUihD9MY23shcl7^HSH)@RuCN1q6}?q`(foDdnx% zCXJBX*01Y2H)Yy$A4<+Mz>H3f+XxfXD!4$vAGiyB$(|dLsOoSR2U6;yVreSw?Lyx9 zRzQD>J>Mlzmt89oSnkOW)3uH4sUmvCmecZ>W68Pygaq)( z29t#u+bkF!s!-hmR?`aqUWT7lIg<HBsxgMNZaEJ*OlzE6vmOt1~>KZy{@&L{ktq0c*t?sA&9hT^3alvsX%y zVH!X=TLG+C_rdWy8w15xS}+vM8=#}YPS5mAr&$4v;#zdi`1Tm_0Y{&;^8#Ox^G-;GD7BaAM-@|xb68~B_ftD|EXSiv@%K)A=g$SnL{pq z;-Yo#UVJ~JV?`TKsQ4J(`B_VwBr|TLaGvnMPRjygv7Ip8GJ4SA;YBFR=Ym~AC6Jf~ zu-@6bAx1lI>iA-QM=qjh9@Ul$g1ef+va)8(+FJpnbc$1Z#FC>ro)oarjBUMcpZ4iA zf*NFPd%Zz&O^VyMs>t$~j12Gt?4mpcH?1$H7Lt9mh~iqW%!Qc@Od~FzA349?AMl#= zqe(ES<=Nngh%zSnZzlm6DK2E0x~!@V1CUJBdZ?)HSV|P~&Icd>Tu@h0_?F~szzew8 zuiiz_eZmBV?J71lIc^rG;3iZcp|8;Pd5A&`0KcvFe~!(Tu|w^*0mQd^j>-A$+lvaZ zD4I8nFABe5;NQh^BT3$Ilv$FBIue0d4=OYjeK9Wqb8V;L)r4m5b963WQ-cT#maH3MGXUZb*b!OG+VJ+HETPw?&^Y zKlBzb#{8cJz8Q3pTWuX;?+b&GD7DJXdFq5^6)0zM5vcj$ z2G&LKn5{!!T*A|>f}Dx}nS6!@6^S!yN|L7pL-0>#>6Aft(WG}>$W+5Zq;?ctN^k7* zfZSfyK?xhc1!Hy`6oLIfjVQCfpgL5k{}Bk6r!{M;;~D z7q17g_dF%j_N*~?P<-L=!6o+GVZ$m%A&W2=qpG+Dp zTePfOXl8;>P8-9vAA_JvP<_w7oZFi(bxJDkNd|6@&6&_k!08TW;Am+| zr((kzAT=6j9?!$2Yu>Z+s)|~;oH!|ZFCjvsczqm*-x*bhIuWdO(%W$s^^BD)R?yw_ zP}#;D|A$_{ga7&}7qSMi*+07UdXR>C*Iwfkd>F9>&pLGx`KIcJH_Ke|K3yT@T7oOC zL0N?odQ1JtoNr9(gp-Xpbf2ghbTepc3Z!5Lrjx7_7-RbJHls7UpX+EW%)o@glP)8G z<4X$xWsB8Vs9V;Qm8Ri5HnQ9}GtB%8bifc9%5tBV{WuuGg>YJ&#VVHq2-@NI=Pa{}N2`#<3yb`Vk%dqDi+z78XygcAQ?Z4M1ExT-%&t+MUv+IV2&y-rahOVbBNGLrZ{S(N(>g?N=HL=W4;*k|JB19}51#%bs zM|X@|YPuss8IX?3>5X$oPgV=GbLUNN`F^+(gqQ^pUoxGgMMk`Hr`~D|jsLP-SR%bE z;AMnQW#@rtOAw8o3uMd z_?&B9t(U~1Py4@8WAtthj3|jded*Bq1T&+!J9C3%13V%roBzM%%F9=X!Z|FDRM{_% zilt_-ZG#Xnv_2)v!^`JRmK2wK*!{|C@mDaaB()wt(~Ne)Uqokp&(12)7cjz#YtZ$Ev-O-J6|4MB0N#3ELi&ex z#4v*_JmIe=+>rfxBEXlACcbu;>yMoM`J+VAGa;IubV*^a zB0IuVcj;ucXmX)Tp-$b|BqoS9*4_YaZtoMS51f&cwMW~_OYNZgynN-Amp3;g( zxR#}oD_0b^dj!k*P8wAPOS8pXxZc3&=EWHFor)$!A-JF#xt|aKY+VEC1d#a?TFE9# z(zcsW0oniOMPVlFcEkUFA&1gCasZ(E>I?8COYtM`Q7|aaro{GNBC(T1>1&#CbLx>8 zoJ(u`f1+rstmIw9+RO7gsvY}ZXMwR4?6 zb2qndK*3v%8p)T3`C90tFrM|TW4r!bS=QbJT2K&9vYRct6P47tAUKUF!Ymb?!)hCK z^uQHIGE5~~S%iXjODnoL8V*BD-znP<5|XWcH4_$jy0~piCKs5Kbc*E4TaBzw-iUU; z4V`N0GkzL14e&rAfUr$sW+@>YsBkJp$cush${CL0sL0oFZ_x%+aQ&wz;U+AAF9Z_x zH(>8?p+0=Myvb-YT>GhkXDwYBPQm6~B;BiN4!d?sw%94kHR(R6mr=LPIj&4Z*~RzH z*9c-LdM5B<3`sC|QFrYGN&5A5eNDs-h@kJwr7=XQlx6rcz{s?3gbIcx0x;M?fN8A6 zzutljU1BI)vK@PN8YV`IJ1uI>0SsC$_!x2F$$9fICBQDFmbP~vb-jWU-nL$d11UM0 zI8@5aYZqe4C$%t4jq-XaOXUfLTIL8ajr$HdZnV^w^%9+_T_MRy>*>RK9sdp#%qJW zgxCgeg)W($pj);S{pbaJ17myDx1*ILegI_NeR*Jd*I9#}WjJ)Yy@jBsFJ4+MzH3d2 zb9ZV+Vc@vzSJykjh~ZdFKi^Q3^9lwxd_sTJFy^?a-Le9xjDA0-;ZY_ovV4Of>G@PZ zyroU!VJgoYmSj$QnlWSqNRMu(`{*fbGdty&q_)g)^ORr(alUT{|Vw zL>7x@uCmWN5g@ueggAJqOcbP)f8$vOb1bInu(ePl7d?Lj``NLW&n=0+wz*do+Fmo# zU@vGfb8?CoY6J7DMd{A!q=&)oM3F5+2l~wri=@{ukShBn=NmHU6*o{sn~lhz^^7lESqpD3yw2KLCfGXf_mO-(!YhhD zk$pMW1JBf_eNT!pOy6JEdJq4$QZC!Kzv$UMJ*)9L&Ht-M!gyNSHetw-+O_b39O9}h4H zIWb|@Uq=Y@?ZAU{u^g$$_|wfva$s^LeIu+>m` zeS}o*p0{Re*F(W!PC{5iwt)-MZ|LiQ*BXt8tg;DDM5s&70nTCR44mDVf)s3e*?b;* z=4+MD=3~(4{B7bc0=|>Xol_E+Xz^t|T3W zMSr@oCge2PiMQXu|=?at30qKj$o3&2WE>>If&ZBfMXRgkQAjI=8exb|41N) zJy;pseb(}|-w(8~^##OIeQak_-V&%1$dn#LPC`(9Zv%OhugCYa>i~o@o1*2^P+g@W z{J%N^mFXnKG7XC#O}h1Av07YO?3&?G^4U1@0Fti(LR zuojc!lPy8tbKr*VfxXj_e0X4MInocREP{m7e-O`*gtbOr7Ju$jF|(jDsjm2=@t3cU zHSdQRcw2y3pZp<(ZP`RsBYbxGC$Uk-@=+L~D&Er+VqZ89te9J5d6^h@ws55I+z0%E z&94C$ty`^XUHY5_3xoXe6*Y_LYmP7K7rb=OJii*De~lET;wa06PX=9f%;Jl?wOeXr zauh2pmZ@yAJo{8hTj>TToi~JT!3Ub7wBqJT9Q#NUl>l4;=<9R1+;C(*a|&+~w`+&b zHJ^@NdB{sU24`;>CUO3Y>AkSvVBLxMRy6`E3WL=qy=Gt|qVfyA@mCK~C}EWl@wAlVT)$rX4;(h7 zv77UVY`eWL1E`(cEp4(^Jl_7V*?B{DTS8UKEn_@EF_8ssc#)hjMb>MjW=D6O1LsQ8 zXs$>AU|2?MT&ztuv48stvYb$D4T8#N_d2PKAUO6z-h2aT7Q78N#I}v_pW10*CK<6) z6}Zg>|e{U!}+0fzDx7CC}C_ zj=>ql!B*V%uZkk+yX2R9yU^iYnpydMg$ZR)))Hv$89HPfR@4<^#mU+^@m|SdCRb&d zl@S#4;0}&{E?gMsnQFgGuDV2I{fcMwS`hYj^rrubJ>S1_wo`l$-NAc_B+T9g6>W!z zs3N+9G-?M4P!-?M2z}>N&n9GK2Mo}PzH4`Ks?rfkx|z1%3QNrMS%x*&SE_O}f_$Eg zGxkI^4?cn5GCq@SeSN)5E8}V!T6~prm!%!WQBmUtgLSG^8HF<{sK4?>P8qw4|LrXt zf6)kw-ZnrIFWqA6Ffuw;Q^Zdh)2p|)V&qNhg*mgEUR-%oL0s9~qn-#B8Fk6R(~izO zEU%$SNohja07E6KUS)u{?IkNAAn=%zBncznma`v^KVoVi75{xs?D;cLlJk5~-NR!zQfS?l|R*{XvLYA};?p zued^023;AFFNa~65zk9TGDxG&910sFc!YIi?Ur~^x}>Oy#$GI{UIfV0Xi~kom)?Um zAhE*ap=}R+8c}|9_TUmdQw<>5ldV6_nW~%k-wYgz91hAohg|gR$H#7L8m8>s&0abn zO;BfSZ2jYH`yh&kIY2#lH?}x_KlO>4{$81(zPbg#$o$ zTSvGKVw5!7)wodcAp4G^B9JEp&{I z+QLJ14LR~l4%Cq&q6J#znjCuQh$LguF&ga($qHcWy-TaKQD;k1?#|L=#Ay#+BAD)c ze2s$G@3_yh$!UM{3*|iRx{ZmobYaEjJ6kAEY}HCUM!_WUudOurQ#k)$#sU+2LG<^6 zL-aa;GTFM?Z9rl0mfT{(6(CV zN50dEG(9)~kIUdd$jMp(Ip}&5$R{VGyklTsH^+&|n)NEQw*2Zqn~X|JaER15L~W!t zo6D&Jzq@9zeW~}Pv0rzXc1|Lnk6$WbQMXVW&Kcpt$vohMle_z(-%qveDXo4%$?X_ zLhpyh#hJkZ8Viam7cui}u;r&_eDZpE`ozP6jiD#p&}M9?=jW6@X_1tx%u2fy=v9cF zXS5>Yk6tuUco2-%EaGhjlz-!wzcbIHU>T@|ur?!Cl@n!y= z*)UJK#vy5(WB0U~YyfG0p_kmU;Q;J62dc9{EOOq3ksf=ynBA}9JxDWi{NmTHINIO| zf%(;#`Up!b0U+&7uS0Rc81R7E7mlF|hlz;B%QH$9nb685R=t7}b9UEzBDT8$es$%) zn7C1u9*IHX8R_5j@JV}nHSB7)%PkktYCgz%F(oCQKIVlkcB9Rn9u3!o6W6D@6uTy* zf@jb#!PLeBC|PJXjr<#XewHgLt0rTjm4xPdbQF^(nmrCV-p;pz9!&%4>OTHr7h|8c zIU97f8M~a^RYJ~!@D1Ae1-K3KmmulKHnq0Hs=5@}-tcHlQha3*Y5}o zovOuEnlvNZP5**Q3D(ig6aDImQOxR%(?q;+9v^%xnttyN#LTrP2tgC-d}vpW36w>e zntdRQL&bnUwsJwfw zi%CXLe>{zp6I~7y2SHVJNUFM#?Xp%(UqCA4OKEShUrsTVc$-%!z&=1C z?RevJbwsY!&$m1Q^xvCsQmB9Ei)ha1ctD;nBh@1TJ-eN3`BqCqoB^Oui0Z?_X*O;E8)XkR2~hqE zqwm#a(fTG)3d9w@BV`^;3p~@bNo^`Clr#D-Py4%arE3q%sV^S8^z=#PFBnBASGGRI0ZdP9LA2^y4>dIK=S9^^*ex-cF z)9#_u6D7uWWjJ@;zySj~mF(13&=PD{z0-)7m#Pa0zK5GO3cr)n1QD)jNwilWubxRg zhcb;9Yr=L}5{oMtywv4%vai6QZCkGF{_piyhi?89Mh-5Luc2gMJ^##gA^$bwAp%RF3UNg&$#J`YuvEU%I=|;Oh7vfsWi*@;mvo zmgkm*pDW6~+XZU%cnN0W5>{ETn`vIqG{GiZLgM<%1;!E$R2Z;2@jZ}oLNc}-Zfz<}}Lsqk=a)0kOecs7Bk=PM@v9^!W9)Yt+o22mdI?< zZrkbCKLF3ZM@QOyQWLYeMCe9OVb(za;4M+i$eKUM9eGM*XiAM79|PrBIZhZ3Kvu#IpxN=cszvcxY79x&H?`aVjj@=CiPHg9YlC zR`f_2$}FIdF|S%hB0SFNbP6}Nf|A?t{`g3v?I<#t2E;4G_-lZPBR*Sq9GN)8iH1Q> z);`W5fqyQ#3_|W@{Go1gWW=Wy`Vj!BJ=JCm6hbkxjwIe{#niW>@7=I6UTUrSvWi1n zxLvRY#(=0S{fT`1W!4f)d_b=-O-qwYIU1l`?2m!cu42#d6N934*yD1ZucuVM>9m$) zUoGsZ<90UgC*eQDpKkbB0~0&A8Vf&mVIQ8i?7nU};ZCpwTKX_c^}^Y^+}DR#VVS4r zc<8Gi=S%H`bC-#Y=`$a1L5`_VDfa!==u_)O)3|Z&Md>Mv(+pHBQ)=rhz*3DY8XVD| zQOg2VI~NxAx>*22HfjH7Ykl0+(MDb`+rJG9hJsBwPhA{BwpNmF6mJ=JDb!PJs8g;~ z%GD%KALjG3ih=U}-N!+y56wMmHyAYS4hR!lcBrb9jDeRGR`3JzXmb|joW|geT^`jB zSV4#+QdT3@ifa`E*Po=ZVgzAr%5Dwn9aI`*?q}NxL^}vJiUAtp^^%C#3SmWx^>C6k?v=2Qx)=PtCG z5)YZI$c1j{qJ+c({|f=lOqawW*unx$$8P$}Nlxx#aPzE+X`B%qX@&+t>O2za<`xl6 zUP%FLRDKi_C(79in%=9q?GTeF!$RzZm3E!BvAMzhKWCMaeh}sl05+_KWhQ+jS1Qm zY@7uL5T{Isq87hsP9k2s#$``d&>h`)2oBHr?EOyi{*IkE7nXc}6AIy*Ts@j% zr`1lzn`GYbw(HLW4%MYt{t;B>;q(-Pc_%0uxlj}auoKe-k5n`5x0{FwNvkuDZm|!; zF{it$`g7-ty5j-v(=@V;BXobTiC=LX@ppoCe>)MY#GRYjas{`&dhKzy^!MCU60HHx zfDlA7X3y#Rr>2#?ytKvQS@jMlw@7D=BLTa9Y6EY;TudO8c;-+0^Ah^r-{AK;1agDOQDvbmfIRVCCKWW#i{$JE4~@u*HuYHWT|u5U$)?CIMrt~XlfsDm&%A?C*2}Slp2&0ZeEfg;7|y}8FxRtft3yIcsZf%f zSdSR}*^Bb&8$^`k&A|Pa5XMDh4@q|#L#z0CJzL}6_9^fLEo+>zHH=M^Uo-RfYVmlW zO`%|Dtmi*vAS);ju10Q6#Zh%qPP|lgf3e13a;CF}@78mTl2^R^1g<-5OZ@divBrk~TD-NxbK1e7|i~}9%8+v6?W+LM!uv87`cxye#C^9cSmJ`!YnN$Vqe>R_j$sxe6 zmkI@O*9B7{KkUjGGNqzvh>DkYx+0hFo%IWoqVYd?`nER5c|0$s zI#0cTm}weIkaYsK-O?^>%SeuvXoV{2Vp*Q>yKa{hPW5T^JdfDjKV!a>H`Tlm=gu#U zz4L0V!RvW)%#4D-rf^uu2@)uJ-hC=I8nFy|gPi45U!4ZDN?cm#ndl(uBf&)RF3Ckp zbC#BKj-zB_L0OM9#VLX={k<<1m-2|raG(-4qafQ#L9wu194~hL%Ak_Hj`^vz3poZ$ z0XhxSW6NWvUnu@YIdr2so2@F*Ytd~1dRxD|1LeK%i5os9564H3>{V)6NVRJ@4`af+rV;z=QJgtj z$r=GU0rGQgxkjQMMz3jT-CWgnMz$UMdF7-a(I+2F`x7?~f#UZBvV5C~#V4i#P4g+;4 zbhq5~!erf>#Tt42Gft}N0{-C2L3DePFDW8(cV+Q47Um?dg@9Wgol_IDMvO(DxWz1Z ztA4(|GkEAzn=2ghDWz#l$1JD%81IQmdjICA>&1%}kyqS45Dm6t3y)k!yU8N+o$S%= z0(iW~ff90gTLbT+;dOCzI8E*XsIvA%?Ko)2p(#3sVE=!J3Se)f^P$|wP>U#)Zd(59 z+2@jsqKM_GM4pX=$99{8^rG2`shbH|9bYY3C|uZ+=JqgU2U$WrP5x-SxIInb7p`z3 zCRk{QgpzmSTxlHi>uy@wiiCA-bDeY`Vse&Wq z-om3e)8&~4Ln{fu(o(=gQydzbKCa>dyF@MF?QSzQZmTaV*xTL~EB&7>(+@1 z-$#Ga^uC29qM1XKuTG-kFIz5)kkvOB+D)&~Kp+MkV8kG)kcR##C*Nh_2=#g-Nrknx z>>Re)Qnpd5s`K1t-J$8p4yi2rY+A_S|CG*37OIsh#;zZL-*lJ`d!hTt+A?Cy%Jz(5 zRXLiAYzKH31-+_56igUQ4!EB(E#1bW;Qddl$9LzNIKOwQ^<g~1We;xHdHMEmz zC{(gBflfJ)ZCMvOy$&f8$6{ZgB^$d!A;M5cbMbtwQu;iry@BBm+ehZMb0#B8(tK>k zmo#85$Hv{k!xMJO=~yO%r7$>p!^m%u^?=frS9tvD~oFoKc^S|S%XQ%WZ7 z2;hd8HBLoP%fPNJq%o2TtcK!`>A0>c>J5rc7O&=4Kn?$i`l{hn1hu1%>*qTdN|2bJ z2v7bqLMIO~Be`D*BonH4X5ni52@KK7Y$G=I&Ov2qrcg+8(Y@L3?{J~D(^&arC-iVF!hWit_u1s2`Z!gN+qGOgd29^43`0%ATY0Dc!?Ek+ec8 zDpgX=Uu+$QXaA2{23F!2*v$wrOHrLAB`6V7%mvQc_f95fcmR%9o$7I+Q?cb5vlLWsUS)7OGaR-12~*wE@F2ptXi+?j9~oQsquol3KR zq!aK;tzpGiZ|#k%DD6%9qIWr}z#&`!Sawbs=a=ycg0FC?i}_I3IVma}CZyj@@acSa zjN^sL?LdDqtdM(q5Nud~WNmRR6Jpr>GSo$@Gc`8YMO_(<>djR!sLhPU@eoiWpxs=e z?Cip%M3%c(tpTJn@_Zd4F@c@eD=%5>$-nATU4syufyT!MqN&RX!{TZ1$@N`u*LZXG zmM^1vE$?qSb(_=v>NHqye{>*+E5`y5q;;wt;ln2nSO-hO9B!JZ5A%B+Nr_PR+!eep}~u8V)V{$Sa~9UXN$Ibb4s^Vw3p zP&>Gt^?Ec>qWdnofwy_orXCA*A2S@51X z6`|~g5UNqDH!{XyI#4=B&g8eBcvtj>J0b@i!LJ zq*4FMB}akQb+Ig#!dH|a4-J(nszUYh6@cjOms8u5`E`;D)5|D&q7Z|+s`82V^rsiB z1k*HRB|BnGLX_hXJ27U`Hc$aOKu^42p;PXTq5=0sKbAzQ@Ptu=Nq#8&mw1x(!L5H0 zYs{ed0$!?i#|c{d7TADG_V#P{)%HZ5?mUyJkVV^V+bZxn?Qj6@9aD;2K-XkZB4&fP z2~OZP#XUHaImb;52ySG>y@m1qZGwV1C$W8pPSX{Qcs-Dd{ z9p2QRk9U+=^sX-W9=^)r_o?A~Utofr0L$)rYglbq<9u(M=LB)_Zs!XU;u?^2)X;)u zlHHAr*jR&3yJ3Co@s)tDU5{wuoC1T2Z5|d7Td37+g-b>B&qu?h$u;l}vcg*5^E?L% zYS|iU615%kS}se5pi?A3Kw|6*%&%B=+kK z=DCIKf_xci(k3UXcR7NGcox@x=kY1eYw&@gBbtz~K0Hj*JwG)s8{lEPIq=2Ftt)lCbu7jvo!VC!b1qn&j(RvSoFX^=VQeAaIKNUIGO-G6*5E z;cC49jVal1A)(;QB-v0!)EhyyzG}MABv%PBxRv}O;p!3?)l;t$XR1vy3|OzuS9lR# zb=QSB#q*2~lsanrog_!t1W4t#-$!3n(dUe%=w*_oCxV#dQToZ@l?%GY4~m{(cmOM? z7rS*P>SID~hA;t1!i_|eZ-Jkjp2TGM74Kx56-tbNnXW4O+d8~ne^8>dkj4E>gk4e@ zi%5_6k#aN{keLMu(cT3uJj&FL%-WYG%l*pwXTyI{L)#J#W~%##9ES*Yto%G!45 z8b;2%(#Veca+92}-|Gxmf|0djpr+r5-$kL5GEK{ns#Y*Z=VZ%OghGnnwREyKkCtevjh$XUa{!;?c{ELipn=(wWbsiq9Gwl(O zMq(Z8Q@q;+JUQw%gxv!65x8Rm*t{dfi%?%*UH1S2B+`#_ofId!bD(OqWP)rOwlB5n z{yHXta|bFoIU+8?O7<-xBi-jMEV9;-{y+LLH5P5A%(-y_+zplynt(HFkbUyFDehkf zg`y(&`Iq@qfxC(!9m}WNV^D-6cO;t)>#vMRW2@;FBPTs>(}o5gCzx^EJ+iCDCw#oR zQTaJP)qt5T%6KWb5mSsH7;T+ie>fvoC)d`)t9L6x98+n`?2sZ;HVMR1lzbSl#mM7U zR6!1Vx>w?9VRR^e7{dTCPZy>$3D6A1CZFC2`0jz`>y|RjDN|_zVUX|Ki)=IRHOBzG z9;X$|h&mFS)GkAoJ->dMKryLJ z#@Pw3h6zd&+~pNkoeFcGkI>|=^xapdaOa8t&k%iYM>8p>rI1q!El07Bu6|O+*;aXl zOBAI#=s)y&D(5H-%MrmvWB9$2@+Tu2ku5T6ZR_G8s}4^p(EeQ%wXKiDv+#$j4h|vk z3GuFD@0b6f1VssEx1ac@KZ_jp&MOpaSZ09s-4984YXXvXbm;A=>Hn9M*LJ6#@YKp0U+KSg(tAAlTKO+C zH4|D;?ze#Z6{?x~uGa?~XKl8-OsSQl5v);$qk&dI&Qg`JjPNo5W#E#5`nWTk(7MrL zOzkcR6M!z<~f{I zv3)8BmmQG&Q)Ldme_(J(NM+ZfGRGkvnW%5E+H%*@J7-AJu6I(PkV5X+>-BvxR-S35XUquodLu8yIgs(Gyk{x;RUnyiHxbC)T&$Hi~i zA*SadBCswEd_GJSEv{RhIo%o>aB$Dc({FHw8KN;JzW#pU`(L4_(JK9z_)g0af$m$vHvW|@6I{~yqdLg7s|Ga#2MOX|5t}SDquN>Qo#i?;FSa6 zvYrI6nl~Df{Z)~$3~Z~%PsJ`mv}Rqx;S=@MSU-+*maqtk>Kp9k(3W37!|q{I^eIiB zqD<>Q_}z&X8Wz@WdRYxk8QHpwW<8k6~z~ z|HI~jJVxD;I}DNCBbA0zH>1?kcJwP9A*GBo4WxG`I_jsBvd}>YInyxX;5>ymf7kxS zd=aeJu>HA2l*cO^F+Z)~Hq*>h7=7&)RzupVrx?FG7s0pWa~P9qiR2QZxxa*`s{FrQ zfxqs2-SO>r76rv*HSQ89lP(W5FI?J4MC+*A`Evs3K|4$RrX*Wo0iLGZyV}Non3ILH z5fi{hIBBgN&pH@1$azWuy0aUHyr&J@&%-Lf0eSr=I-B!i?K0If88e%F-QN3=Q2+ZG z+uo%F7BX+slYwRvh%@Yo@)_1$QqG8W503jti+bm6YjbniNND;quXtz>2a~8OY;F`> z>s@{%6Q9|=HoK>i4G!*eHyhcRvuqp1H~~>)Z8#i~vh*B8f(dFi{pCqF=YsB+ zsT}a5+X)zJ>>tYTVW(tYpvWtD;#Lv#m zaWcQI-fjyoghBwjtMsNVdQll?MUCSs0y^ajrA0>mtZN6iP$*Tjh+x`!G)L9zU29N+ z-Is`iSu(Ij|Fx`aCJT-Bjn0Zc@@RxUKZr}O@cf{H3;-o^A&NupU3rt(QZ1YfG&Cwq zAc%@AS}Z{u_Z{m|yf<-q@~wiLivY^f zQUF(P(^?ZNX_)G>H`nZfXsMRLrkVw)=#jbGQe|I@D;8J$r=;$@p5q|C`+LY;M?yMa zL!5L(?-?^bmaEjeTKp_^9}#20o9KP&b}>314moJ=YCdQxJJY{Q4qPNx|L z+)PgSZXy|rtAtxcM=Lj$DzF>~9B@wqBCY-JB)H=oXp;&jiLCWsZ1J8QW9R4T2 z94gNnF{S){Iv%^Pqu$4!0XK|Fq*&XZDKjE|d)xaV=G~z8WFbI9+1b2nVsNxF)GEqF z{kI5aYIb&b0l;?>Ss&khm?%kG=foSDcg(Au**0pzVp6it$Ihiz z@~f)47@jTaUp~Eo1O7_Fs81PmrySPgS*_%)CXtkWxMagqQOKs$qm0W)G;i14?>Y=Y z)6CwHi{1iz+13*qe~vQPp+q~3@FjZX>`wzIpNXpxTU5X2kV#I0TOfArbG za&6~rE_|R#o_sLANkTlK_InauYU6{4CIVujbo^n?4)Um!99K=a%(^!dKwdKBLnn`f z#SS;#SuQImZDf~rY%-v#Q;-FKiL4bTFXa5(7_K0n4A2F8_8defL+3=q+$aP)bZUGB z>P70d6MpY6mvC^7D?mO@I7vZR#$cZoc{I~TR82A7fH51e5Q|b-QSCJ9qXXOND9yc` zZ>e4HQlrtEQ4K|ra00#-;YCbeXy2tYt5IoQj*G;54;i(TqhGnH2eDd83WHHRwsj8$ z9h1)O16<~UeO~*C43V48rdlFp9I9pzT-%yIlI=z%CM4~f637X1x3iO@zJP3?llGwk zKw(&_7oLQG@)TcFF^q-8fcuD&CQ>JBPZ~H|u|=l%334_KEHP~Y4wu06w7g?de{uo- zTA1g*vrU=!r_$usR^aMGYbbbgMUUYj?*3gw0R9k3SeNx0e19p^~g5GG#z??24 zbWpe0JY!y?lt}^XhZ7tMV34sg42Q{zi!oj(;GxBi?j&#e@EPMDC~Ar}%oaFl_}#Z| z)$K-UqgK+kTbic2fPdWsQh&lyi=JJAcrUc96=9wXv4^4%+ z39w-V3%m_iJeYphJqQ>t2Dtp0{P)gF1FP){b2>PYIXWuB45D=*6(Ga^uR|%D9NJog zT3t7P|Fu(G_>AmCG0SlLizHG5)J%s|-A4>B<7a~;nZntNTqZ&mTf|v%ei5|GCvw|u z_K8SRx_T9X&^#e#7LD&ztHJ?cIM-kdYi9&d4t_yr+;xKm&T3B+>|3b8sL*5bz0KN+ z^{>w04*YE5soeZ$zRR^N)V7DLbv~GCDm!V&HD^iq{X9}9jDs(DR_hxzDrHRU+NUwB^3V5-`=5gx3~>I=^9 z$Vfy$*qc183La+M5BqXj=_aMg^5U~b>ONee!~Ctn?gC;H&(P^E7xd=?B#-O2&epRn zwB{_2Q~&$o^InaFi6HHh9qr1yy^ouE*xKY2m?-|}X#CTyv4X>2>YjF2s+4fyd#0|X z@sMJq=%MmHqlG-?Cz32)#hsH)OpjOmlYs`PXV>cJNMey90$!v4;}K?0V~c+w`QKF1 zg1QPwc=i1Sq)(Rl6oJi1o)-)t2vM7#B~MTQGaQ$tXbHGul;Y_BqJ898%3w%vtDHIn zJ-M?`I%w9h$ELwUa2(sn_L>;Zs9GI^<%}yVVMS?+y~>!TcYw5pE^cSJB3E?SZH1RO z>eE%f?VDK)3ejY{?w;{_P@!xK1Wi%c{{}FxK%Z27r^yXFu?!-i?YDMpgqzZ zql5PAj9`;Zdw+YbfbkXNzV!d}9B|zjH(Sl3hG!NaP2s{kMI$cJ}gt@HYQ++|FYS-cBM z(;W=B700tk47l-D&Fh5EZ2~+W<nlDtR^_1Vf--wyUTZp1Rq#j2OjIXn)uJE*JxxKc z*o;+=uyF(V4nOxTY>5VI>@0)#CDuMHe3Pdn$NsD>Afq&!2yOM7fd?eZK^0p-DZ84i z*g-(EfY!Ilxj4i=<&MXMPbUf=BOOkbVPl!4-|6TSzj6$AFIAV)++?Hsy1M9`3>r=$ z0asUoR*N#4KsWw#YUhf)pM>6_i^d*?RF=+|R0H5QYZ2#I(lp4u?RD-jiFEoVM)Q5s zG-D}TjRkYIA-(lcfBi#J?b|hfZYB?gnv_50TNPjk@+Ku@JSoW@6qX(DPsV)J>)a>7 zCAZOa`re*pSRwRo56Hc_%+8fqW4<{}hrls;C~*Mgt+?F(NyVZnwbG#v+sr*=B;<=C zhLB?CS)ZbMjS+P-v>Say*gXP7lvLW?CLUP0x0`7z!W8eGjlHKg;FXP3(NpWFy>{&3 zfjYvq^pI<5##z7{+O7a1@-hJ>v2O69DGXpiSwSJr;>mXfABMDM06P-{4%uk{JnW-Y zJoNlPwZinWg6lpOm?#eoAQG9q%)YbIGz7$nVLlMN1%eTeH93teT%%;ot$giFXJcYq zDj`Y5Z6A*x0!51KiDX?g)w!#4>M|vLRI*1meIf4U7bZFn^jPp&5!s5LP6xZ~b~#d9 zFwad(R%so}@tF&I(Xkr}NJfRJX`!jfQKsTfW2I~-r`Uh}SXgXGi1M2Mrv}-Ie3`m@ zxkl)>c>TEt?^vf0PZCPN(uf1J!~>vsjh=gFWM~%YtR_2N#OS(FCDpTVBdKR}GByP+#(NKLu`|?jJOz21yhs zU>PAtyT!gK9f?Jo$w4_Xef*gp5HrV)FC`Az+RGG0+G=iaQGw_ zMh6K##ht&PNw1&v(u;6hG$dGeYn|&XVZVg|TfcbgWtMT`#!+&TTU9ep{iY;z_8~4g z9XRW6N58qw1?1)b9ssP`8*Mx9cG!wQ4<~&hvQN+Djuk1M|-~mc2GpwHS zO2&nCJSVqFPh=ozpYX#Hu}wd^MQg^-?FzJKyk^-nTCocNu3KCHlOmS#LnO;+~uTfv~>%6fq6wGVH@siJ17#M&`}Cbk`dbggHFu4hwZ=q;O`7nKnR=l+bM4^tf` z=^m|-app2QOWA}(#304uK-vnM7&rw@17*Qu(T5L>P>%*w24)jGCv0TPB_4GLzy`$a z(~UUeF=&KGL&W%+Bg=N2NP$TXBBBvoB7qed zBe=nxj)_;w{Xu7TYLJ?}ufz$kA`F}<9F=H2f7fg!1^xPmXCZFpQx$?Q`i*yV>hBd* zEra*_ePe<7_&82-K68t^>lQx>3p-fXJC76TeAVJYPm!+y26hZ9g7!x}mOR#`9ENqz zn3ls@-?cU-h7^w<(j@_c&=f-=unE#2u*3ja)+4@N=qJit;Q>U zKmS%(hnJc%ZSg*GSin<$q;!puM`t9alp~NfZjk;8|EQ_E6xd<(66^5oGI|H#T3AkO zO(l_WvXOK2A&d-YmyI)9td2)hQ-6}#2`XW?SD*9A34Xz^mA$%?+m>_l1Ah)zxh?W2 zWgwcxBg68y&Cu-t@af(lI|E2CE=ZS|(T2mdW-4%rZbu z-_^j~`%%6olAJN;D+)=X2XYt5mMAKKGu_N`!I0M^3#rBX;KBPT`WLHaVcdj$rhfh+ z)D?AY9ss6#_dC6ILn+Pmd^g=?k)5`nSK4xSB&+363XSSyP4-QQcRAVO@L1^}dctIX zo5$?dFZnR%`=JSCrDRBTRSBgo#GiNTt9a%V_@M}c(B47^NtJeXi{@n(>-g4N>BvyM z_^ZzFw5I(aoBmcwb*Nb#p&JJ6Ukh{|vndO0o<$xd+pDg)1o5XuKn)4WaN!KC)@nsi z8l^xTuhMJWIUlnSVJ_C%+Zj!@#g=zu8za_V<*$`b-8cGj? zTSMNt`L^TPgf|hBr0y1>y>hp_)kb!RylXi_F?WkMU<5qgl&jvhsUxP5?Dcft)}Ctm zjfo>WM49GV7;$|D^el+6Ti-jrY$OT*#m~uAvMjo>#Y1HyGk9-mtwiULn;w(7%My~z zjP1&gskQV-CrV660}V5dOI%cLE zU=9z>w+Oxkl?r+#ik$Qhsnh@)^Y^YI+g0ku7aKnIa1@9FKla)G70_zkz1?4Brs72g zK3JH%^{{N|byQ0-86RNkj{Kh9!QsZfT31yGkR}bt z71bs-!U~_IXj_FgXi4BitqQd{SMh4dQw}5#KweKSX&=JDd2o^YN2V`nG&>$EwfGmB zKL8Rr8mV|2yAoo*^y|Yxv49JF`6uG=%loTd$V|r7N@H60G}rRn#R!9+Zb^Awl3;d8 z?k>rq)B%ZAjr;iI%oagAHwGtNhy-a8 z{#WFb)*vgI{HfjjBpD1hc+;vZr(PHHy5^dC-pQt|$cbJUrz8^RmJuh0$T=-K82ol6 zlleb|E%}wWR@=!3dL*5hDt<`dK!W*!%?JgOz~MjUY~F991Ul@xcOFj4R+j3>4g9(6 zXYKM(G3(ZA0nEtg?3)ey;R-AGNOy(UB`Lui6OS^d5(J?yOmO|e+`cWMp>f_Kk8Hto zyY=Tnl?9XPSKtb?On2GD8=il=iDcY2k@~_iYyR>gIeq#XQEeq;NnsU>glG ze()*t!xY9j7aeUp2M!#naRQR#H`!NwxL6?f)73(A>gnja1jt-fXRlayUiHIgs)$9y43Ov94-`_qG0jHfapp_()+z|q(#eBM zi&d0>u&d6DMuBNdeAs8)Y+Fm`yYIqyR%hG9n6{~aT7m7Ej>vr;=hIp!o|2i;;djs@ z+$M|!XVtI^ON#dl#E(sw6x5;Y1j&^d+_Hf;8hFsSs$P;5P5(e@Y$8H62SZ-9*@oM} zscf!dU>O_lHu%R~frK`N68s=MR;Na#oJV3&6r7hp^#7-cJMB$HjD`l2GX+_9^%CL$ zz#k^SE-Juu=YCD1ur6^t79}0XgyngD`n5$-XlY!k(0~?K0bFFmKm5ygB&AIhdsU0= z#wRqH4~-zgcSg}qcmsj^ZZh*m3Z9}NCcxygXkPi!Yh5S6N`~2YIult7;&^BRF1>uo#77f8Cy}0(0Om~CRuV2N9PTRe(Qtil5~bn< zim@+>kEWBfzDb@EI*`c3ZwnV%yp4h^%ysFqbFSXgQ~@#Ahks8GL)qPe$63+-M>#_< zpXer_1$)c^ONy@>6L@jms~GvKmz1eqU@XOpo5y{z^Q z7Td~=_cGo5Zd@lHljHN#_nw_xSI}5wR7G};=dZ~)km$uce-0!Ap@-Lm2N{n)X)y3n z^VxWTNkJ1-q&Tj}1`^G^hL1gp+J1is5F5!axY^9MaJ z5repJ?{U>;q3LGpnUa-lyYASV6@s33H)!|^qnXl|H^@ETPY58$%cp7aj-w)MWs-kf z^12JiP>fJ%e?Ov3;U&`1z{x#?qBG{P z%JeXR!q6_Y^puH6ds7dnaQo?)dN_?ICju|4yuaDrKAE%VbMydV-Kh7EH&>;LQ9ZaE zm`JiNBF5J`Hy^Mvr4bU^+K>X@_>F+-E#P4<3gH&L% ztCuKuh9Q4v3l0pCRpd%R;TevbyO5w^D?UtCKK{99F;1pk#<6%vpF+2R{@bjzw&YCS zYmp=wzetKoY9|K8jW0A=dnc4!S)|}pN6^XxRQCX^x+1AWIkE#2`*lX zHZqt{TkkxL{AJDSCC@1v&4)`kps3L=trx~?8=hb~sFL1y&RS-_C*R%h#-bpyQ~Kbn zB^8464;7v5gKpcbrcnbnm1p(yD3LJkLa|V>OJQ~KjHga)Tb$5wF*$fJ`=16<=Y3T> z!gk3twoGf>IXQX8`=k2uzeKIcUH^vB_y;sHmT6##n%6aD?CpCYyg(A9@Hk@%H9z53#eu8|Uf&X~Oa*Tw3H)@>$3D-BF3STI|D7%RZ ziFCkNF&n6;2*z)g3!Cs)x-!}5_?%UJ*6OOxq7~l*pCk=v|LsN)t4pz%JDH|rct=>5`7UvD4JvAQW1-7Bnf;8{B*?3*% z<(9D%fak1qT-9?O!M?7Owkb9+6T5g{fzy!S&|v+TX;pt7^zzKA>Qn~p)k5E>KXz7l zouY`ov`DoeHNgk~DIC{Ydgzp(D=;CKjVQz&sET1!{X_u{c>Vj7uVdKztDX^krO{(&5c$1Oy9il&+PeVgbke)(ziefy?j0;$(<%wDWHH3uQ4jGUPfTl(v@6U!F!gvT z#_&=t3Pf#-LKAkDVKqgWlU?KbK?Q|yPa!UE7W>9jhM9P2zd2q^vl*$$)!A@8HZga= zUU=EKJw-}v^CwF@dQGbwZFYTYSAxky)Ppr)xTLV;?OQ@b9}S&HF@}<90R9?7aa(`e zsJcqrg72`koXOmz*f;LTX}r=2ED%hLQbA{T`j3kD+zAyY*&Du13OEG+Adq_<6#IRZ zE=4o(mBTHh%DW`U3E5CD-W%@ljf3CZkcZD;0!_dY6!u>>Y6iWepg|JDk0n%~Qlnja zq|F(%fZxTItf+5qQO_lnE*>jcwMn?uf&@Ekp@WRND~}ey1*YLwMwFG-xZuvpNoBpv zidSm~l4t+C^7&bjn~Cv6NyY(R-yv@a9@v*VL=LnX*ik@bB!#y?pssG*OVt;@(a!3Q zLJuJ+zq3{1d-V9bjU-1g=X-%HoQc9KoKE#{*_|QS5fz3lb7s^%!maaJzuqKr2de$@ zr=S;KvEpZV7DeZyqX=MQ-{cIO$!_S+f9t&YX$=KysjTK6ALf!3Qe;deAnr$Towwr|Fe@cy_!NB^8&kgu8t zQN(GHL<}M6m2E(mGNGoMz}Ew@#p}^x705wcU^jfF@-8%b^2THSlL#%F7*B5T034g? zGh%Z?yEMfgctVuuFcK$GWmEP;KRhoqIM^buLr`Mci#r?g{)q~~bO#5)7jOF8?%bKs z&E6%D&xwD;P@vGOBN;mt$T}>Yw7nUZ;pfZcrQl(T#Jr_3SDuE6rLWM=)Bb}WsJ0C z*r5oYmmCsh1_;nYd8wmTBf%H+bf$16PrNv16{^Xe<@uV;Ry|&4QE)) z$LGa~({OR^%*-<;1S-EQ!*EE$zc5fC=k8RQbN#ChIcD(=5cM9g7r3Q}MXh_5b;8Nk z5P1Gt_V`G>+7^|aLWyOqv@Vch`afEib6IWB37f5aLQ#NkX7_Gb{U9|sk%`^xLPIJz z!6dz6CSFiHKwrYucB+Qf`OeIBHT-^wbh2ur3-JtDuq>D!Eg$*{t5CT|No{~k!M@mH zj|SwoZoF9#klGCod{4}BAj3ap4{+W?OBNs-4<>Wm^amrv!7*k8@s+55AnTMSAQ3Th z3aH2?4JA(G6jmQZNIvAqaxn4DBy+~&e5DMr?oAZYw8`PAwth82l&cf%Dd?zp#j(cd zd45Fs?5;!wlu_odUTe7JwD?cv(ZS4?%(OC>>XW2ZE(cD;g2nAbdm`<~l%CJN=(*Jk zlH~B4{1O-Xe8ML#6e}UK+4)`6-z^TcRR)>gmaDhZH`pbPYSGK#sDs1J+)cm{8hn!s zb$Q0n^@|6wY=8gexGTX&fJO{J|3jkFGA}bI^QJC}-NSk(#HN!)`g*IL303S}nUy|9 z#mJWPX$WgZ^!rcanuu1o2a zKW|Q+_vvp(3{Rlhg+p)s|VgZkxb$JYcs_7Twjsz7knKTfQjmv;3I}l&UTdbWOyGd2*KiqKY$ISX-_;~qNu13AoZ%oqT8iR06Ex_ zM+T#r^u3h7ct6AaWhU*1nhi1+C+g*>U+brTmc`KW(V5msILs*13uyW(2x(yf$*bLI z(i3RkGt+Bd4GYyTe&)Au#^+5NC6z%Vsur7AjO9B~=Y8^lrE^s7QTZp-~wgqDS z-w9?kD9^v=koYs?l6DWPZeWRSEVaSe?-{9Rs%0t@Q${k$C}wNo<*J z?suLOqQD>i8zu=NyBG>?L^~(mZ3kqzF*C0J;p_lN3c@?un)GGfhT3xnm(3gr{c)py zD+Jh{7ujr5;8{R^+5~SgIAh>7*xd7hKAIb>_4<(8;#((Mi{lVS9($hTzDud%HjglQ zk<(DeBy**w8l)OBsbN%qpbC6c{X|JxF&L+%o_hdPk?f%o_$8VAPX+nb*`BizhzC*T z@~Obd;5$rd)bO@877#bZd_>DLX!vRk$e|eEQs{{bk+t@O`E^q6d!^$3G?0tReD$C#cYpDIvY!%anC96sS1Ry9(ew~Y%T;nv=MBCyL%z_MaZV4iu8!`jj$M| z`n!M-bfwtDt@V6zLE9=M=VbSPR(%IUJSR~6Jo}kZDQ1j?4lM&PH%yk0Wqxle&{J{L zi7@Xy^jnUWatxnaCq*w*V~2|21DUnK?n}970ux4~nM(Q{F2=ypKaa-qt@CiI=I)k$ zy>yVM^r0?Y`hC#S%ZP$wwHF+CRB)iT_P=sPtEHFFsxJ{fbEjG5Ez#gy>Vb9Eu%Qma8Q1aI4L3&4s^0Q* z&JyrEi33s(k4y)NUMy4D@Qx$(C_4W})5R$y=|CN_1r=JUD+j3mM#&R#Rk3~}7z|Dt zcuMl?9gPnQeV!qS&QFwi`EA!}gbmzOM`kTot>`mK56!RY5#Zk;x)&rCVN|t8CwBPW zs484UeMESCvn_*bHgDd}$&Chu!h?53dqO7Mdhf384!S^=vq}Jh9B?wSe*LA5^tXm~ z+`nHdcs+!}lJu4Y_<+*g?n4qaD&{?&`Aqvg-aVYTcOXW^XVgH)oN1m6X68+qfIF^* z|2$BgHZ2HI!{wZWuV((VA&ekoRcdJis}#D#dzeLcx;T)Aw4zZJj`d3!GlVDQRopNP z4&iC?jkdzDgO-hT8fzo#zjtC2EB<=YaF!1TO6yOIj9(E%Z4SrG6 z!=7U?7Q44yAb?{=PS?}rP#R_DA;7n zQ*61rLOR2qt@a^dawY7$o&!%*`?on)YfV zsU+7hUS5PV2%gjV>R(orU>`(FmSOH1++!;!x@v1EcAu^>zla(-E8S%^%HmKyY*Wd^ zUAfkcA@#*|c58k)ba#K&5Y<+99G?q$c7ucVZ2rU1<$_9%?*dr{=MU%FGO4p$pI-^7j zIuUao_PY`n#b+#-Q>~Shr}XiCSPqUm;n>%#i-h~dL>q?R@nt7eCQTbXu;Qeu=M=NE zBD8xNqK{fUaBqP72^XxlHI3W7Z}RzEV(@2nEwlGlV=1 zwgA$;ZY*-o#-55s5_15@ZR)v20(8S^?v|yVTqsUOegTEh0U61E;nk3^2mEu(hsVUK z5mmQ@uxLZ%fQOj2AuSjJ4Tv=l(SJYY__X`Esmj|E_@kI-sV(gb=74WT6u3Ssn^6NjD)6+a}@%SCeLov0pD zM8fqt+ofKt9p~g)blaq{p?M5%hX4!IBv5XKyq?Q&V;l3bc2!zqq&hD^)HU{Zq}8VT zCW|Y5K!ZiMOW6-r>od{{jf1uEu-~%>4-kEyf>hum`Sq$5`NB&1QTh{d%ry!<~+4|?= zq5tEYCkLo43r8})j=BC92TKMDQQvwy>Q_4D-&Lk5M9l#-oBA zi*JPu5sz<5Eu@&~TwdDf-{p%Jv`toYA9I^}ZyFK2sCY4(&#>wfx*z-SmKiYRTr7?6 zP_u0?o_XfbO6R(ltyTjycHr}*OEEVd)4KB+}4C$B8& zOtC6~&uu}%%;lPfsoXnBEocN+XalZqbD4TCyf6uqX26ZjE~QY*h4}?Bob`iTH582T zG%1sIzV-{;eI)mq=M1EW6Bz$~_mKGboL)Gm+`|S& zj%g)zDIRQ=jXa<7nH3?PjDqp<9pr+|sX`t+Mph7$*rAaE`b!Jx3XfbjqE_d%zCQ&b z-cXg3`=6~Q1*dAHAmlOkk%3M_hhc1!pHSbJp`2gSdDcvpudk2v+nXJ9m{9!( z3Z5$mk@4;efv_kfhDCALhAF*P(FlDv?LMbxlfh8aF@06*^tyiondnqfueG52r0pD1B@mrOD}; z9VbTP06y3Mp@c=4t_Stwn41jiL8Lw>$u3tNus4mx7jky?6@&MhkK5X&ADI|;AHvbr z{Y)1?h3|^0>D|2ck99=YolNp36DnE6rw7|xmmsDEGLmhP2)_Vv47>IM7g`<7oy5Fh zrn2%le9nc#9GF4(`Kt16RlVEIptyyxrCIuvV?C`?6h0H01V+HhP-wkdX9Vp%c;y(; z2o5p5oS1llghBNIWcJP#KQJyD1dRneOq~Wl`|#*DS;YR;vyfk(e5p9_W{TGqbL!;d z&r19((Vv#oVQV(vM^`j*+w6|0j&$@_Za9vGCzETJ{fAN`0T&KwdkctmRK`@;%-0#3@pM5ZElA-g6lGn^3o)UQwQs;mIydE>BJEepYdZy9G4j93P0-aKczcPqZ(E z^6dcgE*5*O!?sv&ZxhKi{6Rl(f&ecn;74}_>1suR@-S#`rc`)qaP8iVfw)_*tau^& zotRfcaP1{g%zHf+*wMHzfm`aRUa>8CD#$zrK%vD5Kuala{(>KqllV0X($5Z>W>?=L6Igy;cvd~Q@kgtwqY^xP%8}_C5>{M z66ga)*<;QuW6$`)E~4+x)|>uTnx~N-hL8>{?dkM=Y=X|%90^EDs@FvNW|rnVf_8YA z@Gw=T%~LyBS_KD#CI;B6L>k=qPt@fw<`atqeX82VP!DL$ODv)zjvYAbmnGf10I+u4 z*Z@Jj@^6g064yn!Qt(%OUhp>5;l979UrQrSKzVXT%wCs&YgS`^GPWfuM0P0kttkzJ za-fvhq2RokV|%gda7H+_3g5erQUAQMq{~kAd~Y3uzJ-gZf)IL>sq=^ORo|Jv6{G#D zOuj_*uq)Qzu|MmIwl!-K5`+Nb&byJPxz7lZZ<8Q6f;S*CzMdz^!YeS6+xq!WCTDry ztYLbr)HuBQt%wiFKjzGOCSIUsbdJZ@n7zoB`^6kqWEqg%;Vpj_ag>2_Pvo{p@kxci zKJ)>}ChMj(K00Q{koQ3jvcR5aQ>)D5{19YF36y1dxH9l@;@R@%9d>~#W8TeIo9Pse z=%7?3lYe?)-0u}ymmnP)#F6N6E+PQWyKff;pBv*77KYFUQBMRbPe|H?{HQZ&0ebaL zZAn9!r4p!l0;a-qMq(_OToi-WY&*>ZroF8 z1DQ+$kgJt2uG=SZLlPwJ+L*j>UV;d|?%e7BVxWsNS3mylovK!!Nu$X9n+kNc!d+-R zs%n}KbJyYPg;?rGPbqTGU&y+%I z&^(Q^n*j1(>bqPlnegm#$na1ol1jjbso2rdZk@t!-=19fe6-3;`$6)GLk0xqy{RWaMvoyO^NCq+jd@A=wlM%h!|pKdW8<9x{KJhKY3{7q zE9}|_0{1fqYC;&_V7yRZRj(%UoYz0?v zO0jSzm~6M!As)$f`8NyI)R8%Q+u~*ti#LxCEgi+(Xa-M z?^WS|8c>kPMlz|*M1#XJINABl2B4q8m;L$^+rE5JqDuh-`bYL&-VMC8K%$CQSzXGJ zOwg~_o> z`5$YK%IUBV$<2~Ha9EW;XWqx!rI2hD^mr)7GYv!TSV;=a4+q=^hEbAbiQ*;YceVz% z7Ia4mLLs+;RdRK2$eP93xFZ6Or5;Jn@&#T#lMvemS5nWP67}X>k530)Kgj8oFFGK| zx*1kOK<-fq{Pbe-t(7<6dmqP?)Mz^V7p5yx;*M7L2xr4Xi;U*lsq!+n8;qIyXd)Un zX-ZMS1lPcl@<~2tqY~QSKoytFH)9994E%nNc)usPM)*V&X=|daUb9Nh-s1>ssG?vF z5{*D*? zMo`WG7`NHBFn=E}d&*Ra5iKBDCXximrhv~g8*VrKuwdU4gar&^j2^#1o;MXz!Cfb( zAF86hKOGMnPuI|N_Ix%;iT%b;NQ!0~ zWx})BCg79T?zxoLDJ80yVvytinMyEEOA#x+rR#h99jIpw-k0|W8xx!HZSZG`B`4(% zfK5F3%U)gcn*ErNg{tx8Z6aEA14n(zw!IHMXrc&w$LJ8?pIheS&n4BuyCqzGZ)F&u z(*#EQTcdd&5bdR59Yz1>f7z`{J&-n>bCOPVbO@SDjW+W(`?3S#8{ zC=uUBH%Mv$ouctcT+^Cz7w!D=?0esvZxl4b9vq{=D0nbbB?qK}Fy|MobV6<#n>hCL zRLm_!G5D2R0hG;u@T)s?qi!_H7D47Ho>t`aSFSIq~GZ`(^C0W8K!jv*T3AVspGx#C`;Bmb|7gWv&@LO(KZdRg^QZ#GNp2cV#TgB z!s$RgcNpWyYps!!H#Vt1p921dlvKTABwmQKR-`CMC~yU-WvY>r1At5!qC>~M&ghv6 zXWXaY6Bxrih@<{JMy^#m`{Ew_(YEV+mhIz8LE1wlE2WjV0(<+0_B02LgqJuDVujTV zkKcnWF}rj2vy}rU#8js?HSQ#4IXVuzk=oz^lfNh5w{PxVsiaPQwY>vwfkeOw^m3pz zk^k?8Eu~YlgN~gFVewQ!)H+`r9-HiZhYRz<=+43R4%GxFZV@EfQaWtV8@Pk5T<@;U|hrV zjLqzb`ddqXS5lvNwD>?PQo4pc0**>^F%8Wf6>sAtov)p8MQ7BhE0LpOE{*xe)i|m; zpNuKvaSsdY?@`yLJaB(*ebz!tqsF9%>>PHAG`>VvR$Ngc9WPx)A82W|*5frgM5S&c zz`?WYj|!P|c_9?z!lkuzwe_YLaG56|x5)<7!X$6AE~_tkM^^&Y`t`m zvycH@1K*>2p50#XMh*XEtXH!TmrCOYs649G}q&VM4t*E0s;1#HvetuRCd}-Hrn4FSvuOw0Tm1;`sNkrk4v$e#SYd4eSXBNx6oO;Kq_*-(r}8Ey>jop(pPU zU*eeA$U~aS<=bwEbI-q9cr>%)$6J%_h0O^VvEig0lN@<&7lx<~yd%Das!%ornua2u zY5*;i=sd5NBl;iXC2<*ZCEOxNgr`{j?;PY@od6m11beQb8|Ua#mjCnZp-tWkeYf$Jcffl4uc=?pEn~ zff}+SS~h={FBT)SIjE7>L-y(sK9bx@D;iSU8ER)58{(^esJ8Vnh?xYpmeNSoHZp5EbABPh?3-}4x=|bTD{sLZEA5`bsJz+oqNXU=Zxi0%O5x*H!XACADnpXi^J;xki*y zdpzkp35uj12E3S-{ygBqwWf@yfwuc3ya{Fo3oxm6**G@Ieh;28gisZ5_{yi(Dgfcj z{?vsf#mQ-8{f}LV=N;~RG`GsLRc-SMFbHqiAV7=MB9lOG(HGXFnv&^vxU{^s`02<3 zwokLMhNxutEgF+3>ifnH3=@KW%)p;it2va=y82IrbZukWkmz+lrmq+gnmW`)5#;#B zxaB*_b@oPLucIHhrE_%p_$%h9H{*JSnI1uIE=ghZG11>-CGT8;9P_|*McEY7HRBcO6z!HLj!{#qJi^_urBJFPLxYj|migkV_v3gMVyX zwl%~aI`lX3`R*LzGiDjgmH}P6p8=-#^Ia<*9maaxij{DmRRLa@dOmLQ0spR%z5;Rb zslF80{WQY=MIEs8!<*l;rP|1(vvv0C0b6_a8>7Cc&_6p(Wa?0#d=j zR^K!BX?S>cu2vhDmY!Q-C1+y;{qP!)Gw=(Zfk7_~)rG)C^O z>zt!`%QNs_P;|56WRd&Q<7q|nO}+YhC<=MxOuKqHT36w5R1p0>mF;H@NAsYfLd|ws zp}1cJ@GtPaSn=x>49N+b-aOa$0l#o2ysi5{)uYuq^4AF9p z%oAa0@fH&J`UtSqM_({2$H2(=Cd*OGO0p7?o{apJLc(tFX%s3f%yWPfaD^J8K zDx>oI)FMEQJM(E1jMdx%J)m@SOm6#3#Fjh#yV6}L{201|D*gqfvx}F!g!)^w{t96n zc&`=yfWi;7bf8=fL<&4J?FF^^%?~TAZ+4R1C|1-P8iqY5XIh`m$A{B3Sv8&>3so$O z2!;1$^Q@OzS*}N3%hN{$`^0h7)*BOm+GbTL(oQxo+!LTV?8~BnrlUZlTYj(nBzfEa z1c3fDRl(+65fRQ7@&}i{Xh%KV`_nz~IXfcF{?2-BOM=nHOtV9&O>~DrbeEDjx6Td5 z9Lq3$hDX0Zu^!fawL8Iku)?*G4QLp-cNt8!~uUx^Jk-q}aIl z)2`r1IJnr~8RiA6jr8^C;VFkg{C4CDMrk}PKU$sChxL3T&P+K8nS>h^7FSLp3rFVk zxtyvDt`I+$4gf$OES@zBTnHn#fr4Ues!5(dCh*v95hp^u;Ky}*7}^8Sy9j)kcv7U~ zr^Tn4bB8sM0yvlG9B5L%q7-*Jq!OM8xmQs~ipn5PS@ca3LCJZNyqvXir)*eG*;J;7FflSx1xr z)E6`$s}=L)Vy+c_wgR&(xi1I?{_=y-)zNW`e!^)_FSF2fFLpnMg)pxl4f0o+oU@*d z39_-8?gx|kV~Gu7OJ5?R@Iqt~xsGHJ=@McNCLhAbrE8U@I3@}deX}7f2hgJFK}1LL z?K0t=NAACv`y%x2N7bb3UrXC&fz+ZUOJq|qenKHPI3W_sP2H4UI+xPrR*`Sc z@3?A^@Uk$;DGz7*RU<6+b3S0^>Bdi#={;&Z?*LUQ>M*>X(X-Tzs4?AeE58zc&Pj)PiD8;j<_wiXX{u6nt!= zy;6VDDrpznyEXs@%~8wFe*t z(?vsN7FQGomxW))kzkK2?7k@p;1o8FSR4lVQm<(QP+gi}d_RHbcRF}4`O1}WFJ#}i z6xBasoMW;PxI*j?Y*`b$gDfH|3+Oy6BPP6OQhjC7jAkS-t@*nOR+NSdwYpiq6FKn=I`F zn2yA}BxtB68giE;iDa9UsCX9Q#SvEOiH(+l=AqBVvj}e4q58XlT=r7b0aYd| zC{d4@pqF5(L&wtk%=f1Zl3f`^c7>Zs5F=jw`aJYf&IIYO6%Rp3{>RhAM6C{Uie7T^ z*EtzU*Qq!dkVT_-{pvaUskA}<_WH22TsUxg`j%Ix$!^NIe>cR<>~%ck8bk zjKN&#MicI@8jVUF+}e{0?0Z?tq|+f6+8#P7%IO?FZJV97VI+OB0BV9RLPcjKpWU$M zut~_3kA}k6aj-=0Z4c5i_2?iipWBPDB4f49VWCCuO)bXC&Ke%zy1i}hiVfkZmg zrmiEQd1n9CiQu1T9P|Y}r~}EV(|4CaC{|n2nx2n1TC7+sQ#UT!hUm1FvKQi8DlH$2 zt<3yCDqF`82->pLeBGUs`B@L!sYpN)zisIuzMVk&!)oZUJhgPI4t$cU=A=%^3fzup z3$-%+`y+(v=qyWE zLtA&+VQ@Ca$6hj5%>_6?kHLtZg3FxFy9D0T;1~4*@v|OMX2CpfDIW}@a{qZ-&r|5O z-)@kUBNc5#@(|rtO!Xp3{j-KgJ&DjvvcH*?6sd|Pg3tR^qNId4s+@^;$8Upo0RX?@ z=_r8S7{cSWu3h(Dl1>oAZ97%}bpVbnpAS{uYmfdm-EB8%1Xt@`1_1nEf9Dg5^rUZw zR!(zVga2GPjupyX3#9gEmL}o_-96k7i3ZKMEqJNoKUg(mLzXX0wj5KC_^Ex((9PI8 z;jNAJ3`X08)Nd}escU;KidvGItU{AyJA7wtPuZ8T!JY)+e#$4fCZoB4GoJazDsmkv zN%yL-?P<&VOg6J)gI+`fHiQj~bAz6@18Y%#*jfL^;neYy*YVwE8+gXg4KL$np{@K7 zE*ak3Rxbh=sy*U|Hd}>Twk@!n3sVN>89eI)VnSX zZ7r2US~fr-yNwK5ee}DJH#ul%atFg9?z`26VO!(_cOnH_=9pCc(u#_Qj#ttT!(ZafZ(!ZCp~7lkR$x_7_`#-$X7Kw zQblHvJVP--`1@Wi9*oF^gp*Z=duF2LY%x&Jic6z)&}Mm_ppw1{r@f?Ddt)UzZ50+6 z^eTeu)1K!`*waP`iR%eS5DA>%cy+q7#C=N)u5D_cQf6WZ1Q1R2&z`ErovP7}|E>uG zQ^t~~922n3g#xFrtR?iwO>CASR$+_cw|tWFS+1#oW(H{V+CpZxt?@Qb= zuc-ZhwheSHK9FIBE_BIXlL;U(8!RyING5oB9$l;0r_E9p-qe7H;n9D9`b@|hM_c0sClQj|S9GdJN6r`> z52gJP_op{Njtz?dSuHZWq7TK#MV%+cIW3lWbm3TX*Q^%ijD1bMS_1x1X@PE{Z6P~$ zX9a>nMxrV!UUg^wPsqbJfSzra_-o^J%EVN}LS(mhNTyO`p6pkZg#nZUc5Is04k1m! z=!q6mi67%b-uUfn%uaeo;2?<4;veIt@*Z5YDuR;8&BOm(PhGA@3$+d7ojYWuYZ~Al zgwR8iKC~hra6q3i4RVSNJx+A2-@s9aKu0LZMqzv^$={=^+NUrv%ull`!1_|f$wPj~ z5>!!tIBw>O9uoVE*Hgq87$1Nv0lq-XP?e6MR{wo^3Z2EeN5v7avSGcq zH%nMacTL`Wzaf-#0M3%w|KGAOXuUR*f!EQa*jz zaHM1K=5e1=G{YO8ve9KJ0 z9pF?^+l-5B%q^^qIQPXo;7Y=sr94dW$xE6NhsE=WL&&N#ToZ!MR`X;Pp5&#Q+-qx8 zW~bjJymGlVbm|jzoSnnUc#&h?>?5yk@?_GBe0!jbAccg!T$?halxc&A2&I2URODCV z66{YUcx}G^$Kkv&fBP6z^lcn1XvCAE;>hDaqjf3J%h538oTV&Ui2cT7^>p=i`;ulD z^4pIA($dphe|YJp@i!V;_^t8^^RQp`=^L499>@83LpTW@i4<*RmDG0E;BG}t5IlL^ zA5UGo$m>*)AC+SMWu2D}_&np|EOaleVSHM?hkk}OP1=M@RpBZF#r(px zi4Ld_MT-h;8j){~Lb*bIGmjue(=~v?y2U;4feDFZy zX>c!&72?~|TH7)td3Al&e74h%u5|<^4C?b33EMyLLhXI6WvH*$fzlc9S`v$zv~_w+ z^)(*DH(~Jx`5BHhiS){wIP_M$yy_uWZRP__14dIITJdE~mkSo$FI0lBz%X16ECbRu z^_;mx`~b{BCGsxcen}-{tM-)6jt?64r*|`KMuLsEY#A-0l6n&SbOA!7&yF)H(+3#JlYMcGx%Bg|Gk>A$nCI$JZ1V3ehD}s4B)B zp^lXQ8>NsEsiG%_kvLsG_TTE!dL{4r-}mL&MQYhOmW1sqKa(_kWgJSH$@m>0m;52` z?l5f{$nA;p>S}t$|2DJREbfYs#;sS8R`%eGebzzi$*yMk1^_b&O;fYL=iU6tms`ZP zD_1rhw;ES4%UC?|;!^7_Rf6%OmlzJ8s7n}RNF=QK+6Ox|PFU)&)NvJ&EA#QFLQ?|9 zb!x<2#_m>ZE1Z_Aj9Yc@-velhf$qxHT|%}Z50QKWl$AH#=cjP5NQSD0H-!<5CC!u6 zK)BmtqBn|r8L4x^nPxa;@S*XLB8_KjxaeTFbE z5*8RdGwNn1GR#6d3Cgq*RBOXE!>yNxWzz*NX%f`tTXL%-b_SbM z6uW8A$m}Zp?3w_iGaYNi9w-<434Gy?OI2B5omqO40u%+7SN2yMQ$y;<6&4WUNKdsX z5eb6Tit^+Z0y#quUj?bndp1OJNn{+9iXNSdkdBmKax7fzrk`rgGe4_^D)UlNSJ9$A zz%bk)8o|LW%JuqzQl2mF<0H8uQ;nq#(q9Ett*Et{o0}(JB>BYtbOv2;$5MYB?N{TT zqAW!KBMlHnp9J0*0)*^0tzv?6X3h&NH|=-n9N*7+=X4Oc<=DKZ zgaz`m^vFQgwO?N*XqvVsv79Gnli>>)jf5u`zSXBVrrNy~q)h>3VGkN}2{p#+L1`>7 zdnsZ0I3RSQlaHwM{tygVD+UTq&FK?b=_!7)$DN6kA346G7A65=;u)LAI# zuhw z0G4tLl8W86>$T|IdBK~^!s?SjtK<2c0Q!_iOfKrt2-9mf+PsdH z+1agGw#|ZvL@r$~K@Z@^=*2^e#v)}hmbkzK=)6drGxu!h|D@pn2rHH+!(EdW`vM$g zM8(^|aywSUguFVWnacLtfYM{P&9EmOZzu z#m5RICi^k5FzN|ySD6yoFL%K^&B-AJTuWYl3rkFZp|*>Q5hnr>I>b_sgepQ0zag_) zmELA95KWQbu8iT%22F*DS#a~R!!ZnC;;p@u6Pn>k(FS8d$!lTVAxgOKgN?1?=ZSmi!g+QczMGNiTEu>iJWs^)pcadQIMNDi!i zBo@z*(e}1LzG`dG#KIbIIY*Ml3${!(e~#ggA`iRBO=9DJ8S>Ts^X?l zX${Xm?QE`h`FZ|4k7BE?2fZj5pJdxu(Llo&-^tBA-@})aPm??e*cM^OAkCw4UHV1Z z?m~KX8Hbi}x5|`(6}9asP^c{#Tb0NMKzdy%PuvoaDX!=nSEC=8J~E5jdC68tUV~0& z4e8-V4ko0AOL-(nI;NQBHqeB^@3MDD^o?^XP-4I=9?+p)GM<(Lh)eyCkr^~%c2-+3 zG~GpG6qehE8u~qU;If!ve9xwv*-}$ZG}D32^5uGif3-4zk&}85XPtodTxj{797>5Y zFn?xJ;*xc0#KL-<8Vr>-)@tvN8EnukkML8%GV*hp0-2J$H``X~rdcb*YOmvtNPRHk zz3ioFl&b2(y>|Px6kcrxvH&(1ZtFTgC(Gd+K*F)-QN;M33K^bh*}9b0ut34;G-v5H zun!3@+AORMYFRvAn5_BA=LRk64~Y+kGj@g_x#q&67A*~7(qQO3?Yr4Cs68%3-q-KM z(}P)TQz;b)HR6S9PA z5cv7@<8C}*U-U|+%8}mcPp@|-#-PHMRD@Ze*SX3n$k`uZn4GAEjul<4jrTr=B3#~J zQR~T$wbAi_Bo$6A^Bg53lQ1GEROI0;F*+d2ZTpx5(GZcR;g-sT>oCB!CMgvi{)-A zhSJ3^o!M*8C*THLGSPw;R}>L&MYQ-ev)+SJW)z&!43TIU-|k-196U>MIL>=$BteN4 zi<50!6pQx?H@op67TvHXJSc$h!OpLHMRGxY`58FX+LX8eEDdnbUpy(XM``&WHcI}3nRlAyJu_z`fm&7!W2y9 zBp@&RJ3%CYYwo*r=#5S-%{7> z2(F(fRZ2_&qG+{EOt>zrK8qnd7}f&WHPjX4WLGEPhZOVuDFNz!R(NDou$7RtHJ@4u z)b2iS?P8uz1c#bHX4-mSZ2jG#fnTcZLvi@0rb7N}t+U6N2^CU>@Fz%R4fXmY*n4^n z<9ygfaiF@e&Hm=9JqoA&**8iK!y>eqhE{ZmNfxHJ8ShldU7Hk{xLxXd95_aJb{9Ck z!UuBv&zIYo3IojL-kE`+fG`YYNAkzHn)oQ(_%$=Mt&Q-n7iq zZU0&5Zp6TGS{IRj%cK;z3ixxWEULNgW>i!ZpgJvy>_gtvjg_=m>}atMOPE_3_396n zmn$l&?*5@uG&SmrB<$ycjkCqahJQkM)J)9v{^~ICZ!4*jw~1Zgv-Eo;DC)79lAXK@ zo!g05;~h9*q#Mw+Y*|BtUdrGK&TW!FJ$_c2#d4gn`0Mgkp>N?3LL63+rfr4NX~UJ2 z?bJdW90^=pR+0%Yt46C0Um4-e`Zn@dcT-BDsEv{1qi07N3z0l_Hpk=K6wzI}hy-w- zaMp+32qf_gUO%UNJrPCYtrC&3g&hIJjRB*aR$)yuF(&33^`@nc46FU1R@U^aPXO%# zc~6$B9`(tqf|TeuX)PY##d~4<3;BHjqsW^DDR;*@AqB}0;blQr12rI`D3G^o(J=sg z>&%FgpB(hh-ad=ah*`)1=jMCVo&gZI!p}=v_KPE(Wb?#Y9*#BR$O#POjDodS2SaVNlEy4iyn#>M7gx_* z#v~SrVu%Bz&$)W@T2HzSMU5~j_d>?wllB~Lbzd(+pCGaWv({LuqR{8Owqd0TSKbg> z1d^1USJGJG0Rzl$58#rx$V;HQT)zOs>N4)YhyYz*x#c;D6^kvR~qVATtQZa`vQX7e@U-e@sON52qpg$_b}?=(qZv=#~Mn@ z(SnqIfEXUy0=tZ=+qzQUqCCZ*R!lq{?BAX~mYiycwrn({xPxafD0H7~Tw_eEJnL3m z$`Q;mj`WFB2#J9M?&y2pP;+Hh{xAEMQJsA8eBqHZ-uX?QlU!1}FN&p_ zP%@5zoI%-Vk0rtV;Z!uyWBz;8XKRfj6`3i8>mYA9r5Fl`pEdqd`ZI0nCyGBo-UB>T zS@8&e(^x(ly9rpPh_|;4hwh7c%=L)nGNNRXjJoZ3RWQXZ|VjncN>=nvC8Re zG&+*Fgd$x*#UMRp)B2p0dP#+aKemwbE^>fSP8z(lb*->#JUSPuAx<7+bx|rNd=j%sG#aBwVXesRGM?d}x=Q>J^SDCk6Vornsc=}UzX^LGEge1CRp!Rp-{ne)SZ+@D0}HK9vQc7-Nz42@q(*BUUXNJ%y-L0+1je1FW;JSTwECS((40LZ79;PMo# zmtGo<54_psz=TSil4V!Q@?$Ulng-ztY?w0lH`7~TB6!ol*NC_S)c=R%o63b_XMC2& z9^JPNE$D`Y@cx4?wZ{zPcgJpRASH{iGaT2Zpeu{r2G|I{$#n`E+73v8zV(?>e*WO| zd89|O9UilUXr0OByj)$brMc}JJ_VO1Y%jTn{u)#ASVta`Wh0-dAOG$@8WrzrLCAIB)W+VO|jXyFRn9yZ* z$kD!wvKC=`4jDPpzX*FlV8&B}E*Y0e2z@j5ZoNvKwG6?=B(`_)vEW`l5S|}$&ErAK zDDKh?((YIt;zA`{(%yUep}eNujE67#f*0Sc*aS?UNN|RFG<=3`!;Gm!WJ0{@f<0-Y zP2>oyXBUoapg(N+K`znl?pL^|OPBAyza7?WU_~2N*K0XXMH{3A>o!u}?Q-dl`2?M1 zoE6J><5uwvW`Jg3lcSjNRpY#(ypLaohjU;1NMjVmZf~wk?XX+Bc9<3D)RWlHcGBo& zN!B|d$+t-Cn9ulywGstK*2oDNP2~c9YmPoPLi+G_4{j&-nI5A1#a*!ostO7&R|(KK zzV3;AMPlV-mepibtjRk>;xUjft#fZnJtnc-BB{$N^XlZ9qYmahKHDn(F2(rw(^>r^DtaPClpKVD)Ns&Yg8buJ_G zfQS>(lNRN8sz$*MY^<(0|4@#xDPa1t;`1QDA|m}9VfMdAF#*$SwoZMY<6(-EvA3kr z>;t>LVO%@JN+HE^)hdIKa&3v#n*0Dp#c_)SxK5Q&yah{O25#Ekky+g{!~P z#w7-7Z*LZE9%P$2_-VP@uUf55K*cn%OnR^gv34v(2(q4Dm)VCw)%CRir*6aiK|HbU z72E7L^loBctDgf(uX&R@MCL_l0|%7)I38KTybc9(R%*wfWTwz^PPX9q)%wv5id?N* z5+s53l3m0GI9ni5^|PDFpcAsDf{EZ1XCnU3GHzQn|H4|@R2XEK6nhxk#O(aCPbTG@ zs3d9DS6xW7178j_&Ts?a5q>_7BwH2r$nIK^Ad_Q+V$W#PC8Mo2k;{fA0dC*etHP*^ zLjAAp)XVGBpoa92gJpo17z&t#j&Fk<(=>I3Lwy!zzbL$Azdvc&*PgTrXbC@gfQy=}K(%yQ-&zY3u`eT@WAejkP$rX^Cwu`cIj z#B_UNfVz$}l)i!B$Cv@xB;^8PtzWn{Dfu;1n~d zJ%fGFwJ$*=2bzmbU_P_K-^+S⋘q{N((6hmdIp(Y2vmakK&F?J}um;=u+SmM7uA> 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 ZdRVUUkeFtZ;v;|lHrff)a-BMLF)YfX>LUOE literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510020002-Config.rsc b/MikroMaster/20260510/20260510020002-Config.rsc new file mode 100644 index 0000000..2097796 --- /dev/null +++ b/MikroMaster/20260510/20260510020002-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-10 02:00:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/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 wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/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 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="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$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=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$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 \"kasparov.ru\"\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 \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\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 :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - 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=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\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 :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 /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\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:20: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 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +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="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=20m 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=ether2 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 add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/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 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.4.4,8.8.8.8 +/ip dns static +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.33 comment=AMSTER name=amster.vados.ru type=A +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 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=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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes 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 +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.100-255 list=KIDS +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 +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +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 +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +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!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +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!!!" disabled=yes 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=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/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=!10.30.30.0/24 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=!10.30.30.0/24 \ + 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=!10.30.30.0/24 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" disabled=yes dst-port=123 \ + in-interface-list=LAN 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" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + 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" +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="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test 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=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" 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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=!To-VPN +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=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting 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 \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/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 hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/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 +/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 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 interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/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 note +set show-at-login=no +/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="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +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="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510020002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510020002-Diff-Config.rsc new file mode 100644 index 0000000..2b70f26 --- /dev/null +++ b/MikroMaster/history/20260510/20260510020002-Diff-Config.rsc @@ -0,0 +1,39 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4342,4343c4342,4343 +< add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ +< dst-port=29185 out-interface="ether1 - Unet" protocol=udp +--- +> add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ +> out-interface="ether1 - Unet" protocol=udp +4402,4404c4402,4403 +< disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ +< log-prefix=VPN-all new-routing-mark=To-VPN passthrough=no src-address=\ +< 10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +> VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +4409,4411c4408,4410 +< "Mark VPN connections to exclude from FastTrack" disabled=yes \ +< in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ +< VPN_No_FastTrack passthrough=no +--- +> "Mark VPN connections to exclude from FastTrack" in-interface=WG \ +> log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ +> no +4420a4420,4421 +> add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ +> log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +4423,4424d4423 +< add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ +< log-prefix=WG-nat out-interface=WG routing-mark=!To-VPN -- 2.52.0