From f2a46f45133da0b0a6c5f2eef24d1ddc07fded4c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 19:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 19:40:18. --- .../20260511/20260511194001-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511194001-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511194001-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511194001-Binary.backup create mode 100644 MikroMaster/20260511/20260511194001-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511194001-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511194001-Binary.backup b/MikroMaster/20260511/20260511194001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..90e842b3dcd05df90433aa8a724b187d8de133e8 GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*3|J3Xy;_MewHpP>^Vy-42x000O80004Z`SAPzLud$0xg!Yv z4=Y$IL4(`{1Yj!k~zF=qV6D4J z1LO%t*d0M^%4+D6_rz{&`l9lU&+-(@WsVuES2`8IiDzwbDs#wcHHINSUs6>kS67o@ zC5Gt>{Sxdt=&NN`ebrWew3a4H>LhU27TJS+%I|+FJAXksiGfm<;b@yaxJ5|6!*ppjf;C+@|2H`;*tkJmnj^fuXW0%Vf&IHkZuFAdZQwDvA7uTE6gg=PCNLob+q)nOz$?@cosHZSYC$@L1_B%4MkaxD6)N|6hjXgA>=dMN5)tMblDSsK)1W zV3gpm{l185=Y*Ni$t$t-%ZlkY4aNKsGV+$w#q)lXP(Rw8QD%_GHwoE06l8HKV*xN? zJ`^`ww_7z5#6+-k;N-K{e&lPOsAMgN1BdEcSO5UIS#0Dbc)Wv1@9#RY7RIfUYFW7v zwo-~e+r=I8BqpB@!T-E#U%rvqDmA`jzn$k=oPTmDPa=P#(aBO?U4GCI^Jdvpw<8ed z&tjh(#n0b7gH0+C45Qk4gj>+3%*Sae^HH%1o8hCco6aNZk^AkM*8>Ov?}+MxlB7&Dcx0 zFrP1&kROAt&HLe}6E8!^)P-h08898TVPHdWSGXDe%=1?cU{iZu;^X!6LhYR7P0V2kXQzi*oXQPdzEKoMD~YD%tT z1z?-!f&>IEePUJv2}g2C1Accx_d#NJM3WB=d>^53PAtla2Sl9)6JMh3Im-T3vqx#l zX-lWVF?Q2+86pRrS-YX2T5kd3CgkhYaurStC!8Ie$KFkvm%MT-YtBObP8J}BJMKdw zm=HCuCr1*nJm4XB5wSGtUYV}(R&6{2LT#jaC2$Po0*fHdh**=g&4lX_E; zQq`GgNx5W2N(d?8;hZ?kaV+Kn5|SByteBRYBGS~_Gq5`(>H5J{;q|(kTHZwDj3$Ls zRJm4i(P{zlvRTyE3YiTbsQ%$(PA8Et7%lk##n(jT2iHpv;`1D}{wa$EYt-|JTfnoe zH89Hl@&_k4vk}&Z{i1i2hPoYZw*dpd58m@4^7wSw7x(dA6^a$tW4{UIdOK^hTR-J@ z)9K^%HW;M%e8AUg%Wa7$TGq&h%Zq~f1990n8`~=P>#aYZHA`ptu$G*nI>S7rar2>2 zlACFB&^h7TvH&QYm6~mA1WMDw!l(W+?WTyuC-?6BjI;cpYmDC!Lgqy{Gp1C&)WHr; zKSyngQU8MyXNv2;ZX~`g34BqF@||o9mNBNaJq@9DJLhcTERQ3;Oe^{?h*W-qQWmP) zIB7V3ur*t{__DPLaS>Ymd*thl3q*JkV7sbPJIFPDw!CFLxJWVFOD{L`Mv4ZA{pmJg zERI(^>MPxW*!jBboJa*+lZX%tdU<mAK^HOZW=7^VYEf|(A-8~t= zsiE}Oi9dc1_FFGO7=^vj&BLPGE=40j4MqgIcE%AXjqf>Z?qtZKVg2WbZlQEIq`8=C zwA~O6d5&!~!9=vU$r{DYB`@S5ga$qXf9>c#rl+Kx_>5x%q?o@b^cX1DY_ht1P*#xI zcRCT+8N{dT50Yt4q195Ken~5sm>KJDLrzs1J8Ts(&TF4|BHm5{ltcAYOSDzJ$ z7YXi1=k#suJy{f5!Oidd;H!l5&s`}Zj-Q;%#FOjrr!@aW<)C_t4d8(vYLFzu9COGt z-v~(5N?dF{-FYsmIdT=yJOa6Uc4g5|H5E^e6xR62b)v1wCr3?c9M*Jt#127!l*nfq zZh^XN`z+k7fVxvzJx5#Q;2SBJ?&4K2Fcqj4dy{M_zfs-Iuvwicff>Z15xZmk9~mjM zeR&kf^JCQT2(rM8e@546gP#>{sq))nf1A7ED_4fK-1E8WG>~xQ>LncU zsa9%$da+ng9swJLoX=xnQ1wW4OGxF$$z?@GF2g)y&%@RhB#+s&=`g3ElGutq1)|tHAo{>eJO$u zn-P+kfSsJ9kWO8y1Ywrm!~a7@fsz^Y#8i$$V+Q~Mn7knJG0;Mk9QweYL(3D^{vob=$mb)afs~h*4fvGVi*&PnrV0~{M%?w;%bDjRz7N@ z%WM;ln<*qva7TeIjkiM^w`e-NiS-zEWs$`QBv#o0Jcn}vm#TWI9sB{+HNB*i5tkXg zgX1_lG-cJrJO0p3mcyY`l-Yr39_T%G(->~iE{y5 zY!t5^)p9ax`^aQ%Nv%fjcm2-DUnS`h0IsxWtgnG$`s0F864DMNKfJzdYM^-}mnbb| zXy3v$WTnT4+=@k;KC%5)&_ye7W8_F|0dc?)Br1hIA+u`rQfkv<-%K!qc&jFA!oJ~ zFE*$Zx{Kei$9I}rK)E0QJDT796PNj;UD!H(Y}UKFx3uI1FS>oG7|aR)yVp3nsd84a zSAh}&p(5Hom9ou4D_f|l>e|b0xNQ!PFbha{8mol+|Cy~L#kjwBKMH@NYcP@@> zW}Wkbylta+n~i*W`NmyPND5+}7+xElg`+J7d+)<4yP!=nIET*e6y$of$c@he`wYCb zB$$GY2y@h74!G9Ok<##z57sn!#djBccR2qRa=!QWFlUIb}CsOY*Zb(T)q*A{_)snkp?AWeUaJ>lcR$5(jk-4 zq7WV+2&%5igv9m6)#_S3^TR2FfemJHoTd3*eTjg6Wsb-($l;vF6xou!TbWSQKf6Vx zI4gZjpR;p~FgB?BY#YtC-ld=~P8i8nq=SSxvmls~pCU&vkg&q$)ix|AMW|1yY2@)L z8s8y7bJ8$Mwj0jnp9h{>bPte$RPYvrGvi}+w+$<(%(4M*W7MozXK%;eMWPu=MH?3X zW^x!@L@Guvg~t&Z4m%J?lE4GHX@_XUt18TH`l6MKx)I z%ry>;OsINHuv0Kxnh9js=oazGb?OL*pW{DORH+lZRP>{iu+v*J3+NDWY<`**)L~{s zL-8FVf!GrmM6;LU5D6K&WB49}u1|wbD>uyzn7!zW3h0BJP8I@`cT=6|JP3S2w8kAR z-JR*hB(_p2IjnQfdJOS+3XzU6DA>_>;py9LgDTCw2x#me0hy#i&j3?mxDsN|Uahi? zTH&JqdW{GgwOBsY?opn3J<-M4&8aS2h>fXQ6qi#Kyz%EOfE}mv(5{J}QK?qlPG<6@ zCBFPh8#S0#JdqkQ|#7$7hi+aFp^vT!mP~bOznB`ZupirzAM->QeP2=1CD; zu&pOv^OaUR?54H#3D|NqK$|-(u1?7^{5!B+lcb!cnBw>Qup+m#aVHDE=#=^vxbDoH0Hb)hj4bqbBh&L#1<0IwQjW68;^I>o@Ws2J?(rr3yk01}<>M`d8#L-pS1s zCY@Atg(STp8N@!7FIl7^F85bEZe+gMmiVH#Iad%vhXEAw3gRw@t`IkBFp?FMPFXA* zJhq(#p{+f0T6v*wTA_#?#xJhFjJWz(61H98uUAv>MPPe}UveU!1<_;OV?KFujPgS4 zuPJyL?MsfoAQr?Dx`Xk>n@n@jDu?(SF@iSlbImgl<0C*KoJk5lGX);byu;M>+iD*H zGnyU8mB`($Azn=W%bl1=dN}Yk}KHtC*P3Ih&tQdAK^G1B}u628z_2*(;_oi^>BUIzXO00S7pW zHGVI$@!#%UR3S-`xw40pa!WR|r$=pcQBGtAY?gija#bEfra##!z>49WF(NAzobmPm zgGaIkqs#?0PkY}iB>dtZZ$XZnb;$bT(}G51kv6un2lOX=tV&_y~2`1W#|Yoa9h(aY#@J34Fy=QdxoqO9TSv z10lnu88l~5H(SOs_QZIWwL4HHc>XAtGD0Hz3FHl*f46NI5Fk)sV?;Bc`#a|cJhxkI zy>2K)r-q=%b&3q22UhDDpywvc@_Q&z&qHp7Iu^wJQV)C@ZYaWG53p%IA7Aar+Mp2i{31{1$mQj)5ZFr4KbQhxs%c^p`vPjO# z=>d$4Za%jvF8Y)&8#B`&9g5Zd3x4dEe1K6g^vy@eSt98beVe)IWwPFA9iMNFp(J3B z$`xYbj3GxK$tK(&?!l%6Ab50JCsWNw^7(p0r9%7&hovN>kj);mxd9yL4f#Gg<@S#N) zvAdqMOgqf9&H%oQAa3Z*+5$3^w#ulPL<4;S>+XU{(C2Wfex2p{4-=Ju;HrQm5(E12 z^8J^+4NL^SXkUSz4||E{PHlrwT`i9rAuhBrKd(iL)$?bIaZ~a z(EpBnv&)KNJXX2?<=~>|X45wzX>}tpdI29hqjZGllbsp`IA2z@vJ%+zq<#oq<+p># z?%%+Rwk;>=17Acz_9$cOQ=wS8)zwu`r3o=!$2SB+z$8>&V0gzJ{ZaUpfv+h`OunoM zD*DaEuw4n&mSAl#K~8PVpkeMCg#@R{l@`h6y7ps6QdBYxLs<#wfG;ah*M1%eo0Vw6 z=1iHBM7Gc)3F*f>PU{A$T6La6lh_%d ztrX40K`}%>1II}`5bgYD)R%}iE=Ur?4a7Oo5IfvIrhKjZ}j|8(Gm~A6LM-Xyyl{0j3ylV^Hk3qbLx$CX~cb zkuKJSz)xeba4{jLF+n~bWcx?4wmPHPKT0CV5<8gc$7lc!JhT?s_$(<5Jo0Uoe|o?h z%w*O63tp#i+)fBXCR`jlC#n~(Ej4gOj_5z(3z5ATfht+x#A&kexbO-yxWwKUYeBV0<#3M#he4^t}05`Ym zszCBWt7q(#%VdG}z9nBA>q26>uctVoJ;U%Y{6)9R1#d&Uq_eLtCS7Zzvvq9iSNge* z;OrO6yYQ{$u9v#c)>33f?uQ+b4&Rf+`W5qP0((0?GfFZ<X+yTqy#* z^;)gEMyQaU5ETXFbmtCEmEASw!l&itmLj6<3-rjQzMzIw9Zx9{q|E8hZzTNrDgx)} zg9bm+sxZW}NkzVpzHUOx$kkQwKHJ=08d}RSZI>WJUl{ubFcz>OYl#3(B_t!0p@kkU zpRQbt4T?02@WCWD7+IO~ioTzIgV9{+jRLu7*Bfw9{uNrX?3~bJcTr^_Dkbw5S5%jkAtZH!V(-LkkeyUnZs?#k#LCmh??S~f)OFR5~=@yd5 zwPd7Is-Y#LxKbj|d8~p>ULS=rU*)Xp0{JsaLtf_Mg^8ZrZ@tl-JB9?cP0|}!Sa>Wm z{Z)ec=)*pvLoM!_+2Lxyyq6xVok?yzukiUgJOHw1z)PT4odWynmAr8GRU&Y`)jpdR z`iAJ%|EAfjThU;+dC{bFA(gT^1J(_DpY?09ajv(*On4mp%634mWRkQA8QR3oH}@~$ z^tH#MdS$th6;hy_7qR4qddHi#M}gr8i~x>l+BUU1t?c)koypGoqdVFfOzO89=c0k- z{Jg4EC%ar2Os5>52nM>tIGK8oC6+~Q=U0COlR-!9%wuJWnymGs25b^~2$;s5x`;2A z+V>%riJb*Q?SNY?CUAmpsDlQ6X)&CBs_x@K+jb4%fp`SoXe!Fe8CNtAhUtoCcS46Y zhj8lNe^?)Kd@?ou?k%UbmFio!WxY2JBQI}mAcR|AMH*L8(96+N8VEbHdQ_QdSUDVS z8KO|8Zl@SSq*|3<+DA`*rP?DZmp z>KxE7fG{wk!MK9o6fiYHusJfrIy=#{D=IyBALqYW5W$J6ZYU6tQch2ouo&t6XKfDIl7LAbrbliCxZ zUZg~>Mu9~J0yhp3!YPi35Wq}~^zvV0fKg_OsOSA-F13xk#_?udajC+b^Smi+l(NA0 ze;YJ&o0E#Y!!eu>q-Xtxu|)#nAM|JU(s z+BH##L&5%yJ@Y@?xYf#Bl!ZzgnU~LnQA&1*%ON0+=~oC3N~XICy4%0SMJN z+DF!7M&hOa0_b-Rxk9$+NBGLXGq?rS@9cnDXwiZS{_hNylV{e{$lq~X2SK=lIrIr4 zkh;`SnQ=`=+@g|mPNAhY4NQOfRRo%sj0gU{a4PS)5PsSFE4GypvHb-hmSMu2u-;+V^=RZo4 zaXiBPBJ0mBUZA#cb~)ZxH}uh@eXWVoBaZ90%?krBM?J8Bs93!j^f$f%6-Ik}OD!rP z&jUQ(jx$VSvZOCe&p@kqmUUs;>VprUof`*$R;EO@R4B^UU^o5ot+oo!h`^&Zt~}Gf z1*DMQ6Gt=9O5E|xX?QyZM)EX=!1NYND17JETbQmPi?p~gQc&3#fN5uCghl@I*cChF3~0GgWQRSq^K#GmerJ3Nj@pn?4i~tughQMc3bFH)Z(`qj(5%VwY=s2tFSGaMx&d0;`Fd1pCnx1h z`eAYm;D$s;s8VX;phRZb@k-x?n&`^bt2enPgE`UzX3LgX6#wMH^HiCTgX~At8WH`A z%Z0TR4wW~zS@#yGmu2KJo2N{vcjrxwDMMUo`7WX0c#mtHCB*x&-R;eOe|B7a8yM@Zld z`N|$=4EC@V+JC!U$9Q+djBy4|8trxQL+uMk^<^T|bc;@NfY4Urgs+CVsdN@oK#=1r zp~7e`fGgw5m!7-0u6RUDfx{a}XFc{Q=5=}PwN6f-yp7Oiedu)(f=f%K2pm*!GFmFu z=RpEeWtk^7XkKi5!Hwd*pOwnSb0x)K*^iC@l4^ezzuFLmm7W{Ag&9Rc@qs7(OkMgS zYWqJ$vjEt+magRyNb*nN?T1+YmW||%ipcuv=gZfMlS_LD?+ZSQtFv+|xh)Aav5VhwFQPYhzDk{mJ? zz@veVk#WX2?O2{lscCVpbwjP$&XAoc{JTWyW>txXB>woA*!f?k`Lrk&znK4P`pUN2 z_T$ZA0?ev4eBVpUAewAl`8UF(5`N*;>$H^3Gql#q6d8LOuoR)HN!lu~O+(}t&D*JN zfaiBVNf2j1-Ga^kE?XpB&O0)m`}HFJ{!j_0Y#D6E=F`xvdZ2&YKxcjnWh|N(T64*n zMQIxrj=Xh_h}13qIOK}Ll`OnNTUG;ki zh`{}Kfcxbpf)rq9+dV8QI8gWsz?lnTI|g0Sh6{HCXLKm}G*jmA*(C6umsgYQ5o59} zz-i;6NH^yw-p)@Tvd(thUxNjI^xVoNlt93n%5G)OSDIhh6guahS(mK$lRAt-(;JIh zLs>QO4(U@2`eC&LtM}xV5qt#W5|>-$65X9x>W>g$F~s&Z%_9I)LJ+Y7+_NthoFLB3 zT|7#3MxNWSmd?XHqZkzVN5H}j8n2us6;o@@utL9&8sjy|$2`+}q$AipNwuj)89;?{ zdz19v>e6x0?1x^7jFmMsjAm82dW|gqnBOM@Rd*-wsqM*s&*B@1q?c>PR!`J)7^x<) z{7_<%A$G+-mS)P@qW<{A(MSdwK5{0T71oQU;XNDr_u3_M%gGVU!{MsU)^IFgWz)y3 z*1F&a<-)zKC7?Li^5``vszoG5)V5SS zGj;nd!ui=K@qxX!-xqEl;heBrJ0=?mVbL=QH=}Oct%LbQScZzV0SFAK^5k->2;?7( zi>>gn;<7GiiPgTy;w8?l|L1hF@1%{N7_J0U&m)_&r&gBG%kYjCh>;9}|FLKm1&=AU z^5{=_(t{mvQ?hpFY`a@;XIQ^LUuKyd+^_#2S?>Bm7oqIFvsMq5rFk^#`IxXJ1hg!y zFwFB#fznALic87*QiiL&x68#(wSXpeIe#I>=uWj%!$Eo|Kkf^Eel*+9oMdOpzv$E_ zwIlpo+DVax7ru7s@%Q^3qIwQzi#qgxTzEv@*B6i89Vo$CDc!dv(H+;6@UWrKBK7(M z1#k1IMkASACH~!#sd252nr)GBO=(D-+fq}wUOqfIjqSkb6j*sU+^(+g9cU0mfZixe;9@f<~{u&XL+l%G5`W4*K zps3Wl)PH+vlebbm?)AwRf|y!Fp{0e~7&wVY<;4=d#Xl#@cc44?=*K zihIOJnc9?sJ^RV|o{_h5uhIDJS?gaU6*yettK~B)%n7;C7!panLcI0>^S>Y>Q4#<2 zoFTj0aR$y5`9z*#-jY8qcCjAkc9@B9d^R%qWvgjgO|2r#wj<$~&$f9MzTQ(OHOa(| zZ(u0DD6l^Sq^r}g4%tPZH2S~cIYT$8Tp)R6KhT34MHGT4lv{;;mZa8U>Az#Ym|bp) zI>$>+^Xp_ujY{?tpI%Wej{##IoYng@#0%>2bl|Mx>y~o*gN8tTd)X^%6GH_XU-`i4 zK*IZ~O{96$r(zz72L|Kn9l>!MyOlkd`*-@c2jCTGvF!U2-tJIuchQXb;+9O(AD1IR zmPfVg0jjv$!{DXDa^rr9bD&ve3~0Q17$-_{lNuy<(xIfy&5PW(iMd?H?IY~oF;<4S zy$s=<#(#77a6@I=%s9FZ0N8S84gQ|d)ioFk`0(u9qAk0HL^43zoBY9yT6#^3MOCrU zGwSLKTfcl{R#+<0nSKFRoEJ6r-YDprdrj9nI>iSKHz!>V8jec#h7v0b-qbAEb!Bvj zlV32;s3>3TovF&(_&DBw3+3#8b!E67hqUoD!i3pEk_pI0y}Zl(Hy^ZuZ>dKycVn*= z`aZ6ek*NbIfG!}*ifpI3_=sk#_pAwVR>#WQ_2ika!pad}1gy9b2eRh=&f03d23o_p zpXR&THT)d*2+(340lz%~GdnKCb8X@^8;rs?Vju1|#ARe+sFVc*TPvni03g!Y91>aV zBlkbVV)sL2w5SDFg@>=mJXAjr31K`$UKHW`b1}3NjSE5(uV1#=@AQ2T!jr_F;SJ_> zGk2dfkAQQ#$t!C0m#pM>lswKbw^bD>xhAo+$rOSbVbv;aZ3_EdKs8m@xI77D{<((J z6$Qd^*4T>loPdQ#M?y#m8g)aapaLt7jRcO9dp~wv|IaX1tvSY%feGkdk#_3U(4y!d z^2gNiAipW5eij7Dr0y~=DS)0Hx;?ZM z#=6u6Y7f+TO%hgE>LgbS$d9!Ut$W6?nIXWBY2pkQS^;9EqAzE@SmNI;dyt2yYT5C(L za0~%V-)Ckg6b3J@70wt`V{}R^OF{J4j3*P#%MtM$H7}fGylCIy-Iako#Yi+>eP@u; zxm5Z7k%sJAX2#m0$^^Ha*biSXqljG}VM#Sv-j)NK=Fwp>2Ud$=3=QwV7tAJ=WCh&` zg~Wu^?siup`S5doc9zN{PM8l8sxb*8_=AZ3y5FtD`#ROVaM|~`&x`$cj73}^e>`n zVtl7o{NUzaa44{D$jRcVDz}$Sxsxf2fftl7I-YN9u9F2ek6S2Aq|Ew6&X?n2vwQtp zv8P$am694Fr#?Dda@M^L_yA{ZzU{g{beb7qvF(wu;vt7U{2J3X46*zyxe_5IZ7PKE zYZJujKGv&a*((6JkS6~43+^SIN*4*Iaw!hdD66}pOxVSdEiCUu3r+J-dV)Lx%0kVG zFS1SOs1Q+nY&ARFt}P)MUsB1Vsz8|-6vx85izoqvT?rkJjOx+bmkeiC(Ug+I9aSgR zP~EKawH#)U_-nL~09ha<3@3j1D$dXI=b1ITj2jdyDN<5>@-Z5ejR7s?QNS}MDM^7d za*fu(bMqtP?tA!v)HBo2-PaBy@s2d%SlsOvRjlG+`JioR6r9iJxfVbriA)>2Nb+p9 z5~}=MXX8LKneAui9t+5pkvFR~W0!5P*7K{6!IZ5ZA?HltBbjKxigc5c&Ug%v)zi^T zsX0~}ZR#CmQEoBBb6ik{Ff|XGVeq=8wxoZT$5nQ@?Q)~+geCfc8IXr=S+JK+jt&Dw$k;Z5|X0KB=vn`_qsEB<3W3H zxTk+^XZKZMN>l+1U)dBMJ~4MxFLW|lT7%;75iK3}xQuF#wVB+eQsMS$u1H!>-1F1^ z_6<2qq}Pi}zUx9~qVWj8nh;~y$|CPab0vr(#$IX*m6(b3fBgXkwy3dJ*>;?1d zk$9@VrhQd_xQn6@4csw*W6$6hTAd59ETpzyZjhe{E>VD1JTqu^?})6~#7m_>1j)AJ zpNWJBDuPS={*R8HyvP`d>aLNrgzu<>#d-%7(Pkd}L0kAiIN4aJ}s}cd4tfI2L#V-Y%31CdWP zX5aot{+P8SoEfZSxQ5e~tud6#kGFXSlamrb{dTymr zTYmmiwPs$PU#}EHrJqYN_3c}wn$axLH7r6B)fH}}t@w9BEa+n>btLUxmm$pA3bm3u z=o;XMO9AOazSws%u;&6|fX$85;!LFO^Tq7E8GNSf%P5*g+pve7H=QugsJ4zfcG1jQH%p#hk5USAs17 zCPaAw6~9Tg?nO0RUi;idaGuMvJH!g)(uwKDOYt15-luv=9|G(fF!FQ8KuvTV|;@^n4E2Etm=(y10UynTR+t)m^+9Dn2 zj`dlSEKdeaG$u@?YT}@)O%FTw3n=#*Go6AsG3mo_TN?lj@lMo%`(4h6J7nx+i5Dhj zH&GXbTJvGLG)B$pfI?)Hrlf@v1Kp3U4aV+_ssyKjn-*6yswT!EIUN6FA?ez{zds?;wC*0s= z;*~T%A|$%vFAO4E)wLWh^+$h_J9o9`tB5PYHNh>1%URa}Kx#hUd?-aIwV83DDKiE* z`WIfkQxO$irEwYIU5+s)_iM`~b9??Zz`?+#%jnc{BuUc?c^XPfbvQDim+dqikAE?7 z&C`dGYap%(ER!gNoxgFSKyrL?t~zrTNxb} z{hhj^dsUk=)vCWX90d%mx)ksC(pXe|=<9QNeTu|RM{#Jz9RgL%-()xBA=FH*bV418 zYvf!F_RjY8Rt_>!*eQ|BKaVUVX15qQCG^5#wc3#<&u4ILe*5MPYQv1e{WQ-7+g( z5sIjq|3+Dep#<9dW7N()@m4uz>w&~$>$G-DPCeNefz&8tnu()ld-#kVnnrRGV z^HY=mG0}zHZ-Xr=!MnvU=8Lprv-a!CSs9`S7)pcfb82^`mn>qCl3H}`AKaOdU0$55 zZhtc&1Y|iWWw!{Bsnzc_6^NnEMv$R1rnwZts^#5}Qb3qXpK=^rFYT>=#i*P_Xzbj! zE)C$)Lnq&c+)NTL2I|kO-|K!Y-a+@ar~ztTgF={8>PC~PvIk^;Zb6e)uEo(X>ujB? zZeqoMQ+;1A{?4ur^8VPnmKHwks0YDClH0$y(hS*C5l@fBf+EN!Ea8@9{q71;l-#;sc&KfJ2s(2pK1Dm4Qx!}&$M=48x(T3x3~kEk*b_;T23k?#;c+CVN=5-_ zBsa)&B|ZZW>?WkP%nI%%F9_DhV0j-itMmWG8(k2yHeSIe#btE)9up-CY-)&fVF)1u z+&*ifnJTpcN8bYnHSUUth-8T}B}DO~MkVH?HB(qP(*cbMU_ySQuiOj4Mt0RPc_$fy z61F=w6oBDX)R&FdA6f2=Fgmi=b>jcD=Au$ePA8KGbi)2xi03f~7>S$e2PD3^s|R3M zp~e$!H=Iw2QpC+!SC~FbL35H=Y?Rkh8APhgdqA8*g^&U^m2Q2#CDHz zNZ(c3NrTMe-!o|bjkK*BPxRf25=NL%NA}GL zCkQ+Grv*csnf+GgGm5E0O2Qx1OD_#R^7QWP+uxJg9I}%YxtGg*;=8e!>kShvShS2E zo2YW6HwNb(%q;mi0WTS_>S!oF5p@?AF{Y%T0e}{UUcXl#Od!mDlhwJVf~3jh66v0_^{aYhKfwYaNFvnnCj+gyp?9d+VNa z6_1t*?M2uU2k6?l2Z3AdDIYnr;z!F#I`$B<(-oM}d}A6@0XQ!^y13uo5;XeX6&vxD)TEtE{hx9BDY_8*ii$b)m2S>3&>EMRes0-j zO+$-k5#R_j6%7b-L7)5QA38$B={#T#Yew^^L1-x*n=mA%pzaCtSr5-|T)_M}fuLKV znA8e)=A~b(rq>LOuShdB8%J*>x@8Y~%Cak{q6mZ~zHxU2Ob?v(yOVghi1n)GUJ>#4 zv|`2OAXYiDK&Bqv@2~Qi8|VFXgp4*vleM7>IBWOX!$+@7Wx8`hzskB)tuq^9i?x^s zV?BJ`H?*Tdo?SO@2q25F zdB*Uq1hLYSyUJbX3+L+2&?dQP z-1QdnGlZRcylRJ`2r`sdU6IU;nR1wk3IbtC$ym8++1tgm*&o(i)81=buNzc=Xe)}r zTi2(Xc7V1`g3sXy|G51H%mZ1O#i55kLAf~}i3tEbpf7Ep5goD7%d}@~K!2Da~0Y4qRMm!cXKv(S>)3H0SCe%H=xlKa8&|OK{q(W2z zM{-8WcKAaFht)fYFL1EgYTm!Rg$lGq0_#Z{`kzu_)Qj9hhf50h{i=A7dVWH6bAWfCJt424aq6h)bW3UGyCguJ8P@Qoreb8$&un9S&}L(hgGbF zY45H1HnT%$ZSNd**6g1INUW{)qXca&$Iu*?^JQAt-sbSYv9VMm1n?n9TfmFM_=9tk zl&cCpfMk2J>D3Rd`8vEi+zCQ7w>kLI3D_rJp_P{!S4^OUf~uOV|8zdfdelRGB+bq> zc&&Md*4r8Z7cYDHL#!wp&FTukcR3}}Zkv|M)mc9<(@8Pk2V*-qAN1CvoGBfW7n!#w zJ`JC|>A%eD9shoZ3XilDo%|>iYsYlHJ!yjg9`q!+dQM zx_Q>R`k+Q$s2((`3U*61yizh)GR|fj6+>}T{1TGv5=PaOWgj4nuw@}LSC@39OAqqO zEJjN4_+?XK*Va3TQ5~jaD7gy*y3eI9I4iJI`jbUYFQuI(Dm+6T+(>tL?#?gc?)G8O zsw0*(2oi72<$qS7&h|X?8<+VO(Q*@Psh{H_kTfU{&rsp^M>u$k69jPohdR!@yKx4j zq-vn~jV~FEV(xmE3*T7t^MR|u&b7;N^&)iTMUW%Xs$qF)4n?DvobUW#iPu2fDTbcp zFzA)D#AQaEBGs`bJ%L+VR2&?LcN~HK6S!>(Lzzu&%mgAW+<2GWJ+y@#>5U~^d(Str zz<8meI33-$27_B@ModZtr@OA_X0EaoA{ch!Xc2vI-$~O7v6U}3%;Fp z3MzCH1?Yo)+2_}!NaZYgnU^+I=;0>x0emOEFbUHvC_MBT1v@|j{ zfWh`O^5gkWkmZU7eL|mKf~XXEEG{X$+x0m}TXtvCNNW57zDg?56L~+>rvwFmysF}{ zDH84*D|GM;cA!wUuZogBX!O}K=M!=^)oB`bE6IdvN4~u}|M({J-l-DKg1uxK2ykg1 z3xbs1Q2t&*t$$$Y``PpmZXds50vxxwM$qzhCsLezMNaLQCR@iIKFBb?Zr2Kh+P`*( zmKx2`mtAcsg5xLm4PL?Fg)4bTbZ*y^60ndp6)i6u z7BscR#3VQ! zzw!JQ*3UZbWe0K4o3)aniic}rpJrTQC?!(sYLh$V?RxC?GBnn1Gn$8cAd^Tx8T36} zotr04S>BSjJfrw2U2!!DiafI0rCaid0P!o979kLbs9l}vfbV4}4Bjy@PpbkB=2}U) zL^Z!`D=(|!O@X&u=NasYeNsy}BGwCGf*)|A^v8rtyC(u)`p@*>+@{Aocnl6qM=$?~ zD`sx#cHG!p0OPNGE-#cMNm??t?Q~Xqcv_O#5!RqP^ir90G}>*!Nz6g;@XEDoE7ch} z=SeMqln_DYks$iH&gOW`?Ay^hxPyk)3%J)m+)!ORD+J>BvrEx53`)nOa4(B*U4$>I zv4McW+yYj;yAG` zWvg<=q=FUrxs{2xfL&Hr0qT{G39=@aG+3z?tXo8j}sU(#| z!kJo1ptmQ>*{S6Lk}uk&*tSirDni6A-HmL1XL zAGZK(vWi+V-cQ=Uo}D#$5v^2+q`qFZ7=2M?k&=y}+fwHB^}{;6CY%7a`MJQbNi1=h z;W$$hdPXR)>nMjR3RwNZ3KX>n(FK7d%h^RA6&Bcv{XWWB3Npsadb$#^dS;wM| z{-ndIX=@WCb0YJrojFxS%*(0+qZ+U3gq^}6F5+Uqy@}f{-Ee2+T~__d`Uyrg6WnoM zAf9Mxc*e0b+sw9lx$4gbgwCC_QPCJlzLl|PQc8^Tz!%^BaB!#0#M(N37cG65L^(TNkV}MCe!F;2H zpprF~_!5K>fmcQo6r|!nUVvW=ru~_Tmwp^V7i0`r_f%&}cJVO)hB3HG(*H$GmgtPn z-5aLoqrrY|uaM_~n3eh!7E4{4IOY4=CM?CkJU5#d zD1FzeWLEj|k!g<_X5JPGtIUad2wGQ3^R3vglJ-j|PnSo^=tfRS#oyt~adG7KMM=7Z zi%MB{oE~%pV!7sgCk|hp&7c2gy#EqJ_~cXSvQ2`OCfZUK>#;6hfbZ92M6GYSV3`4w zQfND6aVO~U9V<($Go)<+dRA5Cz_+1E=*}f-d5JEWw$XLw7>_RSOXM*zxZ$C=yZuUO zUz5-mscbk20})(o9*2p-Hi^8ki?%!=wWj;QJh zpFTlF{Jrje-haRf}i0gx;HaFhfvrTjPtg~mNMEU3D4`FP{VVS zu(Z^%P_1*vtGD8V>lE;NAI+Nb?*7D=4Zm#!c<*EdQE{!i+@pfyNqO2|3I*pu)ggub zM-DLeJ7;DFKJeplXEq5ByGc+AAHb5QDOijaaPUo=AoGC>mPOD3C5(Xijqz0%T;XVm zH2`E?Y>NZBKQ*ERGlE%A1L0y{-tvCi6GOlj0?LgU-kzIercT6|q)Z$&&Iai*<=+@$ zM{1OsJ--Qa$Bi+*9wR&teX3PJ6D3^7OJtUwF_V8*S%=e%!HXo}%z~ti8%a5-U8@N& zO`qEzv5t2RA9z^n;Bd7T*{+wchKq;8_`pMM^bXR|ZS#lliX~&FVNsY!k|C#cBhW@& zpYLyqyS>@9+VRfV?ArGtr*Nfe(o4<))&S(l6$!`Qq8~j9ai79)7jSq;Fn!WA+JAZH ztZ2&@>7YbA4!qr+m3Xdj;uuLt3z&RC5x(qNJq+L%t^2c>`5l+o`^0y=E>4jeVASh9 zmaAfe+8ipLfxwFaa-&{+FLAOg%#Pq84B(>~c?qCF4i&$>W+p{o!4kZtAww(=8?VtxHn&Bol6cPSFH# zp~31NN^&f=Lj>HCq}i>l8F$YfU~W1(t3#hGA4@E8!8A)K9jv!3`5D8L+0+GE7J}KY zWPo%n$z9(Gz<(e)9gDkD&ADM|JyI;lrjv#xYSg3wl`ke`k7wqActJesnSWWz7TjJ= zYb*V|i@*!QQ^_LY=aw}HrKLs0w+oZ3s@|1HJ(aA!i>jF?6h%C>nNuj6)n8s2Huw^)Y#nfXN}Ue}ac_%obx9 zc%)v@1N4g5UJff*sAV^X{vDTPjN<1q$<9C#S2qnoZou0oJBtiTQ1xosD~zJhv-QWz zX-GILL00}5aae@WEk;apr@L2}81l0HEuE%zdIZ#uO_E0T+r-+JYuN1>I2H_vXD0iM z%3$JGpQwWx(e0{$%emq|5LKI2waWR#-=O~Eh7{d7xHvDaV2tdP_HGqrcCu+6jGT11YQQVoHOh2 zq<&ctcdp5S>3A$2ZEK(yTLl;reuB*gj_d$y8*)wI(4f$q_y`xwEy_zK7~`DyO{lo` z(9ti;IW^pJo#y?7A{=6_X8O6&4~~Nz+Y!q4ve`=9!R$zCoN$;Xw3fg?@0!qwrKjm5 zcO4p(%dH>2Hln%CD2VVVw}TXU;bp~))nUY%vp$Z?S)#~#ph%=t#k6*+F;$|&Ql>qG z=ywd{TO-O?&ZE0Zo`olm%^v}&@135q`XxW9_w1Vd&f6O^+$*Exv5^iy#c$o;;P(!j zGSrZMb6mEL6SWx%6!rmZW?L^upZ+CG2FoR`wK0j zS3V4@4>D zn>XZ=5{7_G5i9O%YAJVL1Y6OVQQ7k*m%<$@qFF`(4Zf#)aH|tu){-D)W_|D#mR{)+ z)oWjV?I5j4EguGTnA_dY!Go$^RCX(nFX{~jcIlTLA+9E`@ee~iIjU%qA8(gptadqHIDHxN8A_ByUscAMFzl;`aGf%DCQ7Vmy;V_WB zaUja1`xeVmu1=Xh`GV+>t2QMHFuIs=&f)O#C@zo9Q1ca1Hf7udGsLv9my!KD&9#NCS`^XdM5>e0Gv?}`ip(is`_9ppE&Qi`cewhla=;FB=9P)H+WntgJ`+6Kn^S5SF2W2-uO=Yl$Ftiw5_dx8- z{+k{<$4O{UYENXlJ4BL=fbcpkDM*+=bY|;9j0+6Yq$kkL+n#CV>>C7)gN?=pq;mZ8 zkGiw6(Ekyr`&_9QUHip^Q>h`_VqZ6i^WW=6P9rbTAjJ=Xn^y~8vT3Fo`r9lh8JRD| zv9a9W*xf$_Bb`&r@Dp}Rt3FfDsMtA9ERDU_`Iz5E1#*6cDyL1rWm|G=XSGa}!n}-W zDq1@Y`ZB0ClPD&vpb@zo4sxT912@!Z#1A2J-+8L}(CDzp2p)r_H0JI4UHOgF zOxz%D*a*I}?2S^2$LIB4WtJ>PR8pS*`xx!} zcdwY}sRjOi0of2yS%c^Pf17Qk@*_4`6)_WZNx0uFK{+S&ZW$$3%_^rRCAu;oG9d}2 z4mVfXO)kd!)K$n^#xP=jJ?{cgZ*?Mo4-9~MT_9Xr5;3g1d#nn^*G&Bpy1Op4A-vc` zY9O3kuj|!7@LrLcJwT1!HX2O>oJrIvG|v+j@d#J9%X&l6iuc>1`8)toBTsI6|A{vj znLNQZ?D^&S|2o(e?6BI~?JX zpEr0Pl((;@#7Y;$>tkQhRvn{10Ki=0jzu?WWvp;Ngqi5iqQc#+6T2>!%GkSepUNtf zDW=wUhqV)H1Lh@F7uj7L`E#*+WiqTr7zp>Eo&Dig&U`#uWDnu}B0@WZZj%=)+9y^d z@EugUYREI(pTCtMm=$)2Pr4IT84w*iYGLZNGfb{33q1WN@J4FYy+!E=O|$xONL9C= zVI~rcm)Y3V3;h%bfFuh&ikpu`HQ#c}T=<^IYj798pnWN49z7>pFB)CSz|VS8>SOj+ z4{}mMFiEhCG&*KGGdg6@!hwDX^|mlQ*eVFZ0}fHqW*>nAHr=~?&)9dhJJ_vIH|}#9 zOskDiTr{qAhP7kQtDxexs}n(~3?#+Hib%F`0GWW?Io1)h(%d;!Oh;FZYZr>0J#hG} zE?mZG>??E-7E|%K+)g6O)6695%=Xe!?EdFAu6ZM+c~`UM zwrSa@*LUhbEz-aXcJQ(ElR{9uzB$k;TSiS8AO3dh;jOCWn=Q;;riACfap!~^XBxw8 zEE`sR1nM=tJbz%UY?zj0@Lh%A0gd><+cOU!pS$gB3npP`v3kv6pu)eVigREjs3~?j;@$aOP|GNglQ9QJPQiNe<0+|Bx zy(2nMJ$rZxxoPkOrKh`b&4v5Ef};)J=Sv}=&3PVpy&kqYm8A|+ms1iC0n>i#CCn$5 zqMkAAZoQyiNP|F*dG`&!`E-7Z4Gle09q|aHQ)QWL1K}-n#aAJRxSE=HUWx!{mbbck zeoYXvH6W^58x~hv-G`i}PnIp^60dXUILkt7bG(p)P7(cRicEI1R6uZkwvh>CkeiQX z=TZJ~_R_TmQwu0E6b4I8l97_dPZ*|A<*;XJX|k@@{mCVXgQ12$7|$10-$3vTm2#S^ z5?*Pe)b={zEJqp6VEC+ljH_I!Las2Z%`xC8?e}#y3y2vQQXuAd^jtwWj}7jgitLHU zPv5LPZZ`SUG5od)gDNqr`N0cz*8%?NG_y>?;F)Gzt;%-YdHJck{GsY{RDyGiy2Y-~ zSD#n-k8JAZ99qF~{7#3tI4hwVVt~(+o8T#6r39_&tW*9*9kmP;T~YlR9m3^?9B&`u zbTWzTF;P)}TOf2BWBsEX=FoS|SsK1%ABId}Kb)=GlpEBvMbM&@y%!{09|O0b{gGq6 z#x%~X_;X5H%dL0;56&!%mb#{O%iP7pDumh+Xepj7I%m=N0m-+w5;VDnDaScgN&T}>zWIf%+qdKIUV&m&(?Kft`w zjF6LxbAiwDBI@rQZpN;ruiI&gli$bWeK|?7Xy$aK-F_|TM>1Q2AU;fBLTVZAnuqak zX<9DWwD#GrI7JlcO1^Pl@pcF5Xzx#)o=R87y^bqW&k^;vLz3d3dkha9QzKVQgE}UK z%|#EwB;!xe-f=lcvE*wO?LmW!VGH)7Ijn#LRC($6dv92!3st1@pWM~vgYth-JcS0^ z#muT^r!xz7N51REDzly%IdD;Ojkm%3m6?66STJJ{`8NIjRg)6GO^PRy!mcynb?>4- z_qFFVkW3PGGzR^BDK$IbP|1r%=OjC%-BkCM#Gr;SrlHc;G$4tC)Vq z1uV#q->)&QR#VXT9P-DuBUgpwjiVXphMCe=lH_s=y!jIAja@F_I2Rqezo29Da4z;k zbUz+!5^}DbVpH@c+)gQrd}|ZVH`fD%p%J`CaXktx10h*}G46xK91p2&58Ovk97IYj z;lDTGugYBW4xyegiY&<4e*B5siGuYn%mfbYwOR>rV=L6cVGyi$)B=X~GR|}S*T^6z zH{qs}E~%76R@vqOJQV}`*#{1|PC&lvy(R6^0RDL0e_kXJubByM$EO?}B3r|RZ5RS5 zkx<6$QPwipGIbVliY;WN z`$1pfpKAb_+v!<9CXPUXc&sv`vH0jYmRHHvh)Sq$uCoG5VYvkDp@ba|A9J4G2ntmZ zJ-tv8{Lm&4cE)C#*7U{I=@Im$a=4c_b77od*BOA$1@<8v=3NNUUg`qp>AhXboXPJt zUrnBA+y26SYh25#E#c(~mZLSv1a2kTd~kHL12g(CYaz}K={QFW!-O6Y6U0UbnT2qt zW~3B~`+VAB1yJ;8eIr zv7>5afzXv-KtFJFQ)Q;(tL9YDx$m1%9{zh%Mp&bO)4Bfk|%t2##Z>Ab1rcy zGUuFo%H9cB^b;}Y0Jq63la`=-v!gA}5EQ+t73j55Pg0*#;PPrsOq% zJRx$WU5NY{g1m{_aJ8ak$j>)3(ithJh>VWZ?(>*K2@HOz*kKUD_Ss@E!#pyF@5tpA z@&QE(__XL(eX+|OBWvq19@HarP*j0=jP0_65f}Z{!ojp4stUSRG-Yu)SDe75R00z5 z7Jrw{t0&Owro2B)A?bdQzyHKaWdZIfP|{_dLhETss^jR+)aOr0VQ{%w=ZrsnXO(Uk z)*jj^*cYJ9p)RCws$l{v{g$qTbch;HlT`Cbi?eZJG_M0zdYsYc1b%KFUhM#P@LJGJ zqKp$g;e|uyY0jqc2@toAdN{>_`yu`#v`x^@p`HT?%og`2vh4^eu2jcY?^K!~v&5c$ zgzi(@dsA3|xilW+WB4X>$5qG5MU$88bQme7QI|*Z40Leky z;qhO+@^ck(Tvm&gwHscrP-OLr9)4Ca(wH8>_n+^78}I-uU!Dm*h;q^g3)i&yR8Meqwi8Scg@ z<8h0b$G?&rrF%8XGp9w1`VysYAJG&`rM>&=TJqq5@%6aGWUU9Wa`h08oCEa|A}g4Y zNhqNo#c(PTJPrt}rs7HuU~LgF9I^e)rxNBl6@a^H<8kt+GNx&F-QZ?y67l(1y**K$ zdh(!N)J!*ECu*t`c$&g^Cli3>OU*_ zirqRyo(Lo+0#ALcg~MGwND;HjNX*I{eHaJlBOlWIDJv&u%OiR;K*X=soXs8IFR0Zm zI&`4q6I_B9=4H({7@^o4d3J@@w*=w`eG5lkRbup$Q%INYwtlU8!w#{ZqPKPnTsoga zvXOA`yr}aril6c5nBGO{DvF?2Qd^4uWZikJm_Uf5CsT_dKpaN&LZea~wBiN3*S!Z{ ztC?nxS*3uiNJt_1w+{ADwpJrqiNzKXy$jRgsj!7I!8!9zfk$6`KYE$!Db^bQtMGGk8}1m*&fo=oZmZZGRz0~EuW1VaD6q|6xRUC?6H4#b5{@meZ`)6G*anqZu+`qE=F3hZd>#u{iHt( zy&QPG40GWkNe3M40B!+9pJMdC~)Wu;4}o)VJG6K${jauaHZmZ7tpbXK3Pp^JGKk!}oT( zCp+iiP4By*&FV1vVnNMQfkQf5q2uxXe#q0kpuaxG5@sZaxFT2g;^)?<*^@-BPpqSf zztqvR4xp(X?(r-s%lcu*=yxM`YKPe}QKD zV`%5d7|N4jgm;d_dN;|;mM~K>(RiIrs6aLs#|K_v_Zq*-%&F0{zodN{@8dS0k5Mw` z+6Df|fe^q{zRfnNdZ%gL#jB!&DIv6q$8&+}7Z13)fqSUMkR$0^Vmm$X+%X`e{A&{p z`K$OH8vU!qoVF?F3$N%d-b?uAXCS!*U0ldH0DWA}4?GllrKcuRy?(z!WA(CX5d9we z!_#NA0ZO8=EL=YW({7dohWxzK2dES;ll*(pL!a7?nFsSY!6?hE?!`ax5(!|Wj}Uu+ zQJYb<;I2tQ4IM;UHr<06rO?xblbJ@+V11Ae4L)(EVY}-9R5O4x+a}YAc&g_La5C{g z{VO9=m2GtNBF>4qz+l`H*WS*;<}ux#cj)6dU(WgUut68a-^}PjUM0e9m_jjUg|2Ee z>9-vCKdQSa%P4K~t~;i}_D!^!@HA=r?>wGLZQVqinlC5%zK?284xHG+iJMarF>*In zz@o)Icho`L)9&kB9oPVs8<^xUI)T*r3^1UkxFPky?@;SxSwe3SMQFdug@WYtO%Mu8`0U3dqv(QM! zfHZy1Kk2Z$R(D`*eI~KxoYf#!7!m%xke?n`dOO}aKD`_y#j$*WLK~=iX~3ta9-j^> zAcN?JE+8~z27q<5M?oiTPOuNWnHcAtt6(!Tn?hFb9a#XI$JBD;Gm;=SiAcFps0MZ*cF~4zlV?8L}`ZjkkMP)o>0Da?rV5cgLiojp` zVTSvy8JVh!PN#)zsLKoYkYNO(F=nD>TRB!09#A_$)<=*H-Wv>}&M14M5G$$2e2Dw6 zgEgnheRjMe^^09w4ZHNiP^DQ0qb|d=@{cL+g|y2B2K{aW0*C|d{8eBtcd;%yRIeV! zHPl=nA2S>`?Q>2c*#hO^U)Q!~6{oPJq3O=iZX%jwe~25yMm7>%n6-+007g+ob7WZR zeZ6lTW*HZ< zGjy9cHXq_YD=}G z|J@3OaE~HHj6KMY7c@uc-+|~e3VB}qclJ3?k zc5i~m$WM*ILcb3@YH;0&rT5>2Xt?9aKYzRvNcOO6zuw zuxb!r!aZ0zPno96WvlYJp6Ib9!#5fcAy^_WWQoQ3aPZt}(@ynbzj&#R<)0DudWV)d z?b0PzD?3eM^a6|c-ex}Lp`Ow%%J6Ot?sfOpwWWTO=nlEtz_RkF_8E2fw-Wyb!D*D~snpKD$jE1uPi$^P%F+oFuEO@;(>}<1 z#JI?iLzLsF%<5V$t+eR7c=A(*6J0@Ij`L;@mxb%9Csfzv6hvu?_5fXreQm0*;#lg9 zDNPZXnR%3oHA8cHqkkRlhREPp>H#qM3>fR|I(qFEVZ_Ph+wBD`Lwx%3i+{|KFT(2t z_1=gZChI+}llF~mJQdA~iO{pBFQqKOhy{vAP_gqj;9k0!m;A|o~nDy-u$&@kqbnB}WF*&H1 zGDTE}Jf5MW6C1npJs58E<_&^eOhM(^DdVb=?Dh|?8pj0%0sdGi;qav0?7I<>u%Z}e zLk$OzMM!YdCDf}E;MVcp(5N!J93ayUeu!|(Hcs6fQT}yWkw(eA6>1k-i5g&st>wSG zoRjY-0mnG%mSU^G2E$ZC`T}DTkYcEiUr1ZsO|EtZw`3y_rwoV~_h3{n{L=BV=6B(;ITG(Q5&pBN@xbw5hFIeMko+%IN=na-N6EoCz}8Ac1txon}D} zw8JHsj)ei0jUe$&qIr}0A)jYSq?hkOgmcu*QQ!TT-b!9*UAH;NxjThouP@_(-=r1# zL0g&>c>~wF1KucD=5aaf8gB0c|98V4cQ)W6f{TDXTs(-3cvM~n)6(j3ontH?EU;Au z+|jdzx}lmHpq@MSoa5ycuBcf}fz(TeS)eXR=2C~QR>(Y_p+bT&m5LFzDgL&*<$G!8 z-G!9SnZJOyMn)qKLGMBOs(RJp@XUp@&GsfY4 z2f%+ixf5z7(e|~>q)$cB>GB?b+bKY#Rxe_;ROVP+ga5kx!juQ)`)joz`w6L|0z)cO z&`}!8k5}?rJj7lk^0msKYebFjvE|Ky912jc?)P z<_yg}uO7LKFs@yr*lftX$TEbaCjqn?oWV{_Gy*)!VdF&qtCTKq!z$h8ECths$Bd_g zZ?q>+6A5F$;{iiKvO+#^|Dk?!^OfwQTUjRm6(hremZvJL>-r1 zeZ15X62Q<%Bf?HmMiPG<%@&Vpm)f7_zw}4n#F^!ZbUl0_1(U`*(vJO9KG~QseL^gx zD*L_#g?G{>KsbReJ>zV$_3b~4CwM?oK#W4&62Ckx#rY~&(pm97V9}qU-4UQ)U+22JcJ}CtGuFQRzh%#We#}jgTfhuK~{+quMEjj+Eyo8D)-=ng)}7>j>7 z9^T@FU2L$W9G8d*t{1&YS}3`_g1g*bQK-|G?LNQ!=y0J;Q1Pj$X;X{24?DyMm`EfD$Sy4hU%*UL#@69I(^#hd^THlvc^ zCG?I{L*(VcWy=}QZUHmE|My*gO8jDlK5gez8WrXaTj&o&@I~@1+x0nWmIa#hnv|G2 z2+}_86Y6=mJ=c5cG`;W~FQds104s~BC8Ie}L(A_ETv#O!cpB9vX6F}_LUXi@0S{!0 zVaq7WV;@F^k%{ds8l8fa%w|=!UDl=H+YCl45ixY=6D;{nr*erXI5+9!n;UBc7sz;P zlNI$OodEDvbUS`ylgjQyRN#c(KOQ<_NPt(1tsXLP-)t*loCze6rkE!sbwu36Q8oKb zQ?Mme3b9@XBFtFJcCd?tT=X-oRhB;0P9quXG&o^Nu!5TA0t|9Cb4+s4n_cV*jp`|~ z{BbCteFnw}u&DRz$Ipw!bCn(%N0+FRCi@L^04&Dzould1=E%Uj3*+}vjJ>U1Xsr*3 z-rRpUpcK1&ehX6=R^q6xZcXqH_Jhr-j~RjsGz>9foADtyx`2Ii2>{hV_|nBqNm?VH z>39*?UN{j9Jl;JX3*5emqwQXZoUM8XQ&^d+f)xr8k@U_vJ*P}mrQ|7l z1hL`iC{9U)Xlqb>IxoW8FhhaT4IBveJpK?2P0XQ^whIZ4ZnGCES?W}f{G~ekrBrE+ zw^S0=pq_k%thh*D;XKw#XN?xk_s0)aN*7O*V$~(9v>2A+ChlG}ig%PP=_D2c#~lua zYXhdmY~NG0FzxeLI&ySmSk51&t~xr=+AVKq%~xo5wA4vJgUip?=O9oU;^gBd2^EDM zTc7wy4tWR&S%M*1DR(3{bV;fOC44k*CBDyl*8&{n3 z`Q&4O60fKv-ijp%j5>>A^|FRy_+0wvjU+OU(tE<7i5+JmBe3Xjm`jOncx3my`N;C; z`o#XfA$uMFN4_5L3Y^R`y=+DSD1OQ3c7j5eb?(2sybLhQs@`pyZ@R)2pz0-!-ZZ?5 zX}nEj5Y@yr8~+M%hXfqI6L8YQ&}k~0RHj3Q=r5uD)Cg1+VrTRpgy)hR+zA2ASAXf* z`}>o!-<`ac!4|(qf~sCsD_}78c0(KlIUyH_5o)Y9k+bjo9>J=K4Bi*$%OKv163vyA z{77~+M#V^w%ls?^ughSOH`mcz4QPFWm4Urf~b{hfMx~&gGW~1jq%F%8NgzKkFD{2G)S76U{)I zd!Y#}o}1cw6%UH(GZTiY`1701II5=omR|lTMBe5)d0z7)rEoOBXcqfJbUE*&V63Jq zK1_^BL`gnWQFSJZskg;n0~w3M!e^$q+twh!jZAlM6KNdap#e$a5li{dEjAZfkHP;? zUk6B$>YG(@PGSlsbiH}hf69S$vedlq|dE@ZPO=l-_3{}Na_3B!@Vj0 znULECIxEjr%bQgQ_D)>^l4`n=6W->u$%?LiG+ZGQ4ea63^T6ZVotrXzj(SKxuS1V#IXxlH|JLHM&-tVMO3p189mwd7dbIBSI+oVp&Lda?njmHuMB{X`&ve@S>T)Qut0V!X|590 z=p|pIUcJ2G(u^*j#>gT^RNCDv%d7?eE#XDc43Qhw$%^qMs$rpANwACP3YLF!_nMZ=04Jra3NjC6aniN9Vsy%2#lIq6K|+0u1g`4 z+2CX6RSIrHOE$!K8K2?RT+sWuaosTE`JVz|e}T2m_mM&WMX$7Nn)G@Y;w(x^e0J32 zm>GOTg%U`|04Mh&I%5D(A}-|mY{N3K^Ek`haI(tE;vW~NBr*Deo9JVhc=U(lZV|~; zp%ev4t1WCra{E6#{)ctOk}h>0dM%(2i0^`_n2{F>b75sfe&qVuVC%fYvyQ~3)E`Bb zLa~_@RsUgDAc>!v+szqpMv*G8&e1}c&OTUjq+_=mMfUJEasFQu`y^+3@s6W~AZq06 z0gh*N?nVA3NwG#vZ0i$0eH7UXjfV5WhhI9 z6Bkgs31D=)P-QmAF_u`U4T=y$RUTVOv3uh4xZI@$4A5upuklmLpx+s|ZABF;4mVZ@ z4iee3xgs#-rBQgfNMCgCrY&S)+YWyzUz-YfFLHaUQbR(}9S>n1*uV7J>DNE}CmaY} z?zG%-@ZK`26ADCEirn=Pr6egXZ~T3!ggBw?yn2QPi4Hzt4@XE6-M7FgVPvT?+)8sa zyIdD0AgdXf>4r&4!ir;CCyw#NkIzh_XG1TVJOd8&DLE_`6z=gwF4zDqcbcdG1+zad z&LkIQrHWiJFnN>&2sb1GU8j*XO$)a5UpVG>VT&N(n_ZRK(o$Xr{VV<|07*0AWwRr= zN@YvF!%5y;s2)mvSvO{GM>dWC-&v9KEF%G2{>d%SG4(n$yZP(K`n@?*+P&c;X_B-S zp$^mxSE??uoPXGdL!#X<=y8ug09K!DAM%>JJcxGoKAQ^IP=JPmTd9Ra5?xel>fsNF zrl(>t5{&?^J$DcP*F|Lb&iS-D1%y&RN3PO% zdVI9!br-`3@ymes$bxFeWBvXanU+ieq0oEDFGF5sv8V(9C)azPsyvq9CmfsH{ts-! zuwS_gO%Y6qP>&Hl?NRXS8wL7i7H;qM?t@+fu%RT!k zY30ONh9ZPJm>f%!=4Vj}YF#skc&$8Y5{EWzLUEm)rlP}(3rLTMDoR2em(?Ad@K2R8 z(8<95`YtoJCmgxU^ry(r6Y`)X@F?f6rs~W4ySMFof_5|mpbDjw9W(w|2_!|TlyN&KCUGoca?5x$%X3vDE&g8#qA)}+%g zO(ahX1NU%k{gJvX&Q?mq{Cz#3s>%=o4`yBd4iV4o$Xot?fkJ7cDhe2b;Q>(8^GgtT$(Pl9X|F-54bt9wJ43KhW z*@m(p00#L7{!8PnXX2X>ICF_Nq1#ukDyE;7o>sd273`Rb(fEz=B&qM}_uof`BwaKyGy>U6q`*B4f-!yrIA64Y%fJ$T&t6dFcS zHRA+Bu%s#gnjJmtI z!QkGruyNGYdj>egpU$l;$nwxIRyweOX&ozy=E@x4(ws?XQ6sG`AhA)ae0v4FLvf(a z`^?6_GB7Dj&_c@xaBJhws!@U37{n2EzqjQWSvw|moPqBy-p1cC=0hOZ^g}ulCJ!5f ze3&Z@1nTvG;vy`yvj)Xp2n1nWM%HJ^X+s~wJ6ld;%*FB>Nu24go)?qaK7PJUqkv+^ z{?-E;VcQYEg;)3M{oB_3K={!5!Q=H%8 z1&WCg%tH}$RX@tlof`bv>1ritZgp#?5)hMRz(@1_{1lXT0H7r(uoX!xPAFNlw*5$)xK zA*;hpZ>4ONF*bO}{w`;p$1XW`3A#M!qNk}*?RA*%NQ9auGeI}^LVRu5ZL`Kw9VyMOLJ$^ak$l(vt-_)G zUEHMPr;`b3>C=jxZ#wO$G9w-;L`NpL@O)Y7L2R{5HG(;`AUR7Z|yH^U-Q1q@~= z+oQ8^hbI$KhcM&Jaew;hoFX72M=8{BEQSh@n^$98DBg5?VUZWShkXHyq@22WC(4YT zaR9=q=$5q;m(t2Ip{MI0l#q%E9=QV3NKMq?aHR%J*qCkFPWcWi%y4}75|PZ#u}tvAqiQaNM*V4t=c5a#%jE1_&u7Sr*|>U~ z4=}65*iFkTv^|=s@9J^VFds?-ksC-YjnvA`JrRjT7ESWMc$!V7dgLOQYcHz{3UoM+ z+j(dCk55_TOAE?glQ2q1)wKB(H9J(AK9F**^j!ZR)&k(AA*v~x#OIFjrP8Jo&>27zjSp8k=>^kjG6aavg~fzj%5!xTKiM2HQLmps#6?creg^16Up-ei?{ z(#@e|y>8T#-w1K`{x%ScJNb1 z7lh}RufTno`7;tF+Ly7L|7pmfQ_3GwwAJS%x0*fG(R?r4g?cKUQ{hj7&>zJEc$Z!( z-$&jxM&Gd483~(3v2}Wcc)~Js^ zLWYr!VvbtaDF>b8Pe_cGoHE?A9Zy~yO$7-InP0IV_=vGbqr7g{88QY(n#{Qqzk*#D z_zJ$>2he`H@nDP0fQu9lt;6#fFPv3d;>A^cr%7sN@QJlizXCjKFBxIO*uu_Oh}Whq zh-gn_Fq zphj1aGR-Hlq%O-aA767X{)P4BfmsGWw%<<`8CtocGO*2Q86 z-3inhw&f^jA>;O1x%q#_H6O`_a}I4TYO2FjKo#G2oEYduMR~_Z(|1c>>b{QdthfXc zZ(aa2x&>h`Jne61&|V#z1x@Vt#G-i=M0qx8Gn}}95hkS$Wh7sR5;if46~KrPx0e4` z(nXQ+v-%2;J@b{fOl4-08MC!*D3fa@*^$^s|AAZ#J+o_rKnds{q(j!dx9|mPl^4-XKGLd``&bUlD*zBlbiD(uq>< z@b9X=@Gmk2&4)~$UcQXt_)!j8ghspdUgbeAU#0pmS-+UBxoq?~?BVHo>gg|rzT}g3 zHDnLO^F`F7l61Apng}lXlQpoR&FkA>D(>|FnrX4Uw8aGuxJyFJ^q9~q#Ra=br=f9@ zKpBvGHbL$DYkua%OQhky z0iP53J?xA_MWD0O>Zxb*<}KvK^=~yDOj{@@I~aSn<%b|T*c^Oltd$;_=(LN@er-!1 zJD-Z8TxnB6D|f2gvx|AwLhymis|083MLfgmuqSr#g=BLHq#<8)!WBUyyR_>10*c~KCxP1L#O zz{fBJ_B_dr9bvBDK^Z_$S-R*54mp;!O&juHSRaG@!he$Kr~^Gw0gXC+Fzn9OSw9-v z#6i8pRn}~fZ|>Wb#ma0)5&$R=f7p#u$LfPj?A_<4U*ySQry(2%? zs!E2#Z&q6|@b5g1SV@`Z$f^HK943H%R*!34nF*JkG(>T3h3WuZ?28$PTtKXXLGcHJ zg9UYo5!ucR*~AiAW%E759ZKzkFU=^|TO3<22^2`Upc`}l8RJg(`)N4}{p^h%Z_=!3 zl)~nD_&1H;-{jp1bP~fF+q>}BtZBwjb#a$Pi|?dov_+K7vJpCT4k}SbN;zgwFBuuSFAe!EC?e!>m0n5eU zX=aud&!66twi|RlR&xqC%N6~(l4UqOkYh`VAp99-o=u-g@(6Jiu$<$`mUSpA6K}U7 zietF|)ui+i9`r0c3J<@m{8Xuj!PlNXdG7>dVMp(w>+#}f{Yjr%6V#H{G- zWa3;rcQWjaOkrEa>5Za$&0)gR-f3b0qGN4mFi&pzIdZtniQhyCoC5R+%-Ew82N3H{JJBWlt#uHODt%bNQ1Ug0-Dp%K6rSi z!KJf-wrX*+;WvN_{7JmwIt-&uV_UHq?4@dIj|O#&Z!|(lM{#dbK6CS`#@?CEr#>d_ zA@=uBO}+WyVL|2KBq&qwI-u(|l9jX59CB2TQsRjN<8nB<>*wcnHIvlgE$W6J!5dv` zzETywGOH5_x+xsJFD6M?_#UG2;XFz1Vw4xCr>4+~s)Om!>DJScS*xX+N1#NCM6ej>YV7y4LxUqYb^@Ybp~O1Pe$jf6&> ze^`@1=H0xBL<~!G`4-kh0}-h@XmmlgPlbiK+v1>LMS8D}YJcr;hOeTQNpqLbRi;!jdIIBqH-iUOIqFXjKOdLj702PDk5dxnFqHpGDR#FYh^d_@H2^-q3n zM{8w+V;YQ1YB~c44p^JP_X$2B)A+^Bn9_68vCetq&99PB3W2kWjQ_{m!w>%noKcDK zPILNyaH>>5sQm$eWw7n+#fTc+p)9ebpZcmsA+q0!w;g8L(8+Nx38xYPaX@(notiI0 z2r#bq0u#Y1b+OOpjw>9pkSQ7?f_O($px2+P98ZsAah0Oyq6{P~6KJ6aT{*S;g+7f- z!4R#mBL!rcY*43Sio?19m*h>>jqNKLce?93(CPk=qU||SeLpuy)7CtF^}waYT|$vH z!Lm{l#J2yVh>9_sPkx&*B(u!+Gc+qpF9kx-iD*7L)$2|m5ozwK1e>myUJ7Qj^`|sx zHw+U@r_QmOa*2MzPGRM4*?$cGwO_b;0OfxNSlx-5% zt5f-Vi4TiXqCvx`fQ=cpD^j2KVW!#z@a1g%;Eprcik`8jxK?PCSHN~Mv3b<6?3Ued z*LZ7ft)z?G(t%ay9+aEN z7dKRu*vv{~4yuGL{%L8&z&N@xl7Lq~r^hH9*3mkXaN#9OnNO(`TkU`;5>}qwp`^W3 z`n?*5HXa1G->}M$2J~Wus@ms2jvl}b<~H&a)YxW?lU55HMAqh+*iRBzYp8<35QYG?#kp0iwo& zBuneK4g(~|t;%*YB568^Nmn*$>lIzS1O~)Uf@{@O5X7tO3lCSWN zcM1ryboe^zxbddRTJhX*20UvsPb60dy;1L@eYT>|K}Tw%DYZaJM2YE{AJD8QJXJ#z zH>=u$-TT~NSDWxUFf8}1>Q!WUr)!TkknKJQQbZ%OyJoA<- z--VQlKzW7vJ7@ue7hV6>5rm;wjN{hV3@Go}=GZeFI=1qS#`9emVVE%)S2!TK0u7Ee z*+zxsXoBvZt?TJrpqNELo{jI>q;uTJGHU?BCw(^+_UFcB?^KWIqZi)#w*-M70q<7g zS@9?uKa~-9oU=Oh#|w}|ko1e#fOTf^4FZp=>^|1WQpqRe8f2CLkbCbdIK&K2G+v^` zGsqGdgk_pj-lU&MqS>8FR%FxM&zrh9XsuRI)jb(j+_0Y<`9JOeX*3A2LU{m90PoEB zSR;21VTq4A$R9ogqfRO(yZq& z|CEKCubvXS;FVqJ&Z50MRjpxD|HJO{oSw0-cWFCMF*ZV>S~ir}x9}hG#@t>~q_wNR z#p;XE8@AT}-)0%hvef@>v_S(Zx1XZayd(j7-kJLb*N{rFJ}*Nl28e*Po!Ll~#PzmW zvrmqJem)tlZ5Pvs0q<@iux*qVlNx@>hr)hQtz{wQJ{y-QW%U^MP) zhF$!_SK20I`A2HchFBae@d2eQo&{nG8cXpek?Z2{(gs1k^;pH{WQ;@d6{teJ`QJBT znTozQg^g32Gx8Lx!*IzU#SVucT3MEX_c7eLQxcjCohas3yB=VSsYz7-;V@)fY-*6b zj(foN0t8#Q2JF{c&t(u<)1Qup#b_gWw$e%$tdGK`+;&`Y1ByUrABTR(-h3JCX(6mvx)$e0zv6s;vHbsLe32xFx!dhQ*3bv~xF9Bi4H6)0x+?UvC~$j#RA@qI`Y? z3(B!4r7Rkv@hxH4A?N`H7o6jJgPx!AHe6{L*dPz}i6m z77R|pVV};fBhocS*`XWn7BVC0h)33iX%(}mcz+`Eb)fkH20V`!rxeTq=?FDC8EPXv zcsp3%O=a9)OpEVUwYGwVgUUC_^O04}O+%rczX?ui`RW?KgV zEC`-~WpiC$!G*L*V4OdhliJoViw3$AH|3{BDlrVk#1gzh5q%50_v)tlS{FIAAnYbE zEi5N2$w!nnnbtjjLnsj~O=23v_1lhJ?nPG6;MY$dc#62Alb5=^O@G7V?67)cY0%GNVcbPS z7j%W}+9^yrBhP+_W}~lMNN6r%+~`p5IGWT$Qi_Q#46mw^l0~j~!PSDtwy!#8KhM(O z*-X+qHC(<~JDKcrK}BhIPD$`R%%^0TWU%W1god{s)GWxcg6|o0ilFlHjn#x7M~TiH#bBD^*Ciw` zPenBbjlkpbwx&usu0XhGFH3F({he(^46+sol|7c{`IMmKMIY4%NXO? zgjREe{!_T(pr0k>Zr26#56?OtL!#bF{QnI7$V%_yu4}l*a>>^4&utA$%RLp*PT-<$ zP1(zTkY%gn7JC9RSVUQo`0OJ>*=v9B{NW;3sozkHrpI-A*TMZ4f0~~^|4wdPkiPSF z8b)?(nPPs7Thup!*v8$9c?~w}j zltqW50VH*?m8*gGWbxFg&He4UEc_T~h9OeFtt4J?G4*fMjo17%jD{p&40|A*UgrLX zAKa>_FljvenOoWfG4Lr3#@1`-p1f9d1b~u975rkwT!x0Pze%QXtPR+xh3|c7*)}{? zeklPRiacFBHG*iNS0TqH9@IQ^F;lqKFX2^mov)1jE-$4+dh+GkN5`+hspT3>Xa${H zP;C0TdRw=;+x>j56ec|jfGo=vB>V^vqZ5lMX;W?!z5b#dp-S(-e|FBk4>b<-9*~%c6-z3v0<@9YO&}W%yg3B*>t0 z5QNfa1uGkt;j{-j2K0bF1%QP2Y(#Q6Gw;-{_w zm-XXPQq|FIBi9m0U{Z7o2WzIm1ro5-?by#6Bo_dtSop_^rHb<&oozx|@jleO@6n3) zHbvxSm(koK;C3&(D?;Gu>4GQgcv$w*KB`-Pz-8tobu;-Cb7-ya!4V$eqIm*fYB4!W z!0k=M6mGt97Jo>o2dQiCigbS8W70$_j>Alo*}XwYfYmS3DA9+49Prj15AkP(BuhS2 zpkAO+z^@Tw%9T)9{JZINMji`J&xy3nk|nu8RASV__2NzLXmj3Uk>oYor88tSz{EG- z!)6pI0sxvv#(>JTtR?a~a+EIuzzf{S(gS6e1*qRYC3$?1^cKW-cUhXpj3BR7o2(`+ zxPdqG!}DmG`P}~a^@N(_YC-6Vu?(xgeGROL?Ab`azoQe?7@HDI@z*9PAayKyio1T6>l>fu3`sklzb5$tsD|@SXjAZyLLrD_V4!5hc3;#BWdxDw&n`e z%{dJQqe5LIgKp*74-PM|Es3@wAiD`AoOPj!M{!JiIO-ty3VI2W#W6_9C{{ zbXbw(`Q0SYkoSTjb6$4wM3&aqfG^oU19zsm`cOXc1n4pBPqHFUh6HrvZ^c^bA|~-V zH5i-zmTGJLFMaRPB8^*#oVMz)3=7{`$%tS+bm7n9MXH8YCAy>l798ucWmkJGD`&|> zrI5a=rmv&qBh}m7y=*_y3Bsxq?oHr3>C9$B1I+O$A9RJ zB{w$N;K7~q0KOdv2Wfs8@{PZ|hB}%J~A;U~NDkoJ`AC!5q zySG{LiOVLdOon7j{`FZE) z2*;j7vS|@46DjbXWz~~$AtQI!MpR35W_E?k7|k!8eRfxNt=TYx^)EPH9QST@qvvk3 zYFA1gzS;JAuDaCMK7)3um7VoDb?TuQYHyw%;5iN*_jKXP%}SHn|11p`2LZd^U$+6s zgnr`nAQ^78^6r_{<=%1>(pm%UABEQ}Blc}kT0&G)b4r3qw;{c$Obw%>-fz0W8}5D# z?Y3Ms>=~0mr8b%$M1jGBUN2g>r?U_6q!5e9B(w1C!`|ZiipaC#3 zv$TzN4#DBI_{AJ&Q4bJ%vYPg&kOw@gb#hnaZ4e04?-v5x^_n7ZeYsW>=-eS4=zwz? zJ?<Y?CAB(*uCF^YRd_G^m0=0A}pKBIm zy6^8IYhdWw&@pTqQvBIU=;9oq+Y$M>c1txfpLoY?{U9Pg17G~-%exk>A4Ik6kHOgq zlv_20EnzZA2=0>aVw9^j>ytJdn>KC+ zGBsq5%y8h%ZSTJoTUli>Le=x`K(dZckbccL8o;S31^If%GOGwlLZbJUCyvFcHabxG z!omJNzir_P3Vs383>f~!XY2oRB9>slJ)qAZ4=yn4QrQgz_Gt1FcAS&A)j9e$9`^q) ziWyq-m&2#}o*y&^ug67F#rR=@XSDcik^Rmkc!*XaKAao$3E%t19)AWXs#9|x42`}k zo#vIl=cMbh>Y@@xKg>86HPnwcj4QGPO{$0p5@@S3a1oRsYm+0$2m2FT{!Cb*?F#Z4 z#h-H!7V`!|AC&?$EfVA^oG6!QAd9k?PIZ?5-=yRmJ-3LAraCIpM-cg5t*uemoj8M3 zT`>3Hw7o177$-5xJ1c;OpMjF5e6%$m77a;_94r?ThfLfbH?osC|3Kn>6Y7VhI-#Ntw z5w^k0shLO*%xVAafI9~N-^2j++rce+DP}rLQ+y@)qt1N2fN%){%puCjn819g3*DU4&7|88->nI~xkPS{is+OcA;17pOEmbA} zF6b3k??Q-mjbR5$WA&uacp?x!!l}dnzh7$k??+L zhXy1?lOk40J*lcSmfiUa?m6`&gyK*}wOjV^MBjM*!5;H_#ZQyE=Rmp%0l!6~2i+QV z{fM<9OFjnull&|$?1iN zopfaaRbEFMd1U57%HqQQvfA@e38Gg^CjyM4hZX!>)#W(=-WW1=rbY*@eGlqZ{W=Z2ebusBudd87Y^HX2(Rms&l75jp^Lu-iGT2&RqZ| z8SQU2_pkD`8p}5JJdv4<(@4HDRjA76QYnoPP)`|he2cPNxC`XEi?Vy*-zA^P21>q4XYfRK z#3rnju%hJ}mnu-ZU$$7H2Wgg6YRF)GB@^qz*Ul7&l7m?D)w!5yD^%^tX)7a`cYZJJ zA7^(0L4Kl}{&GHSF^FSowaUb~(3@^f93oMn=@CRF3yT7Yi_J`f_pwh<9)o0lYrVhq zzwbI&YPvYjMS3fZXvtW&k71cM(i)7OkI!F=x=CB@2CW;fy)$&2Z;)~saBs%{1k#Dc z(u_)&5ydy!bsx_ zb3RZ(X4EzPJ$USevo%=yyi{&1yMaAKzB};tGoQTuv3F zgEvMsvc*ZDMjRfTn87ebl(rVZW3Kq!qjK>=1=F*)``dzPYixcV;rb#Jo(82a z1s6edA1dTYQrVR2Ob)lQ9gZ)GfFl;=ODr4*pi7_Td(pwv?b(yXg5~`V9NQ>`GsAm8 zy^p1Wuh^L?wHqyuK}=Q`BWO1=37}zeF0Fv`5{D$@5ke6kZSX%H4q#Ivzz?;utmr${ zAD`-(^SlaU^%0Uz0F~|_+>(L0uP3)H4iRR7OG-w>OlvnnCZY%m{2FgbQDT|rpVy-H z9r{fp$b@r#PN^mgY@pV6e@>`e!%SZwZIVmrdoe<8=g6lYig9TEl+8;bMp2#Km8f!u zFEe3oGN$J0?24YU-FT0iRmBs=`^&gHosr92{Dgs|tD=O#W}+F@E=^W78sb zo4P2o$&XF&hfElePyO~>in#(uW1D2G8I%nh#A3zH;2 z!-^B$6~qYC!U#?Y>QBw`T#J&yolwSBmB`7odVyhHckGGx#u?c7Td|k^Bj+5P!_Ab` zT}PxNp2?+<(#lMTxX}Pb1#4Qf@l6mGcM4%DK{w%!(g{0Q18-NBla8Th8E(s42 zypP5;B#U=vrhe@sWCuUw$45>OA-Fk`a zhqIW}kOUUwS!524t5O9?$#Dt+Tt=KQ_2*dH5_cN3|K~#f=zmryr|1U(VkREmT)%%q zbB$j8i#jE}K3%;?3RIWvbfz_^vTHIy@CCvo@=HyO-I+y1GR0Q|B9AB|K1Fo|Y#y&@ zFR9UuF@}3{0-I9;Aykz@=MD}B6UmV32Z)Im`~EH^x3fVm^(Vb zT5tzYgKvou^j0Ztdv;K#tO~5(-D_9eY;cQJm_@=$jOW+^!xOq|y+=E52RTmO#bX|A zUMhiiQKQi}Ge1uu2?jxzHL!}USxC(8-a9Y<9P?_)m|X5?qG`3}g?0eO7Gh{%q6qE_ z0)IvaJDtiMBg?2Epr*~fca+JuQz9KN^7h!CJ;h#(SJNS01gs7ex7(e;@1)e=#Bprb zF{k2}gbJz5E(IvtRS5tL%jgGZ*JsI;2g`Xrg>2?U$z`UJuIHc49guvn%~JiDssxx> zsq)A(kh|)9S(RDYGMnrWzTLLXr%}pu*=pM}K9Yt803KxNH$xt)Pu=?ZFe?iOcl9=Y z)rYv@LREj3>?PbFT_!K zEbcla>EC4dyQPcs0DwmllW4H;;vYgY3p5dFxc`=3<$p{S4ZJb*BafOe(*}S^him6s z?8t6Ix~aQ!!&Iqee`Rl(1YkhYW3PUk5Te30vy>)4r27?W*Vf~D^!7@2J1KoKHh~Xs z7hi_YO!RZehYda(ROKVlHaLW!Fgk4?Wh_~tB#AZ&YRwq5`ZvP1!Ore&)|&CidQiiT zyPf8ibk?vid?GMor)~}fSt&uezsSXWRV5|0JI^AoK@JX3F9%ohCT+yAsM99gvAa--G}z zSUXN3RYT^6L3#lWO3YI6HPsIsj)2l#SL4UvhBixqp4VE3lwjf5WjT+c!_U$&co@-3 zqmk{&1L-YS)-r_~8ha(ZJTtf~*`?2+7>{CXtO=Ql*TmzP6tYrAPJTHIltZ|0s z`9E%c;1!=N9o3nei%T3!hdD!1dVj#%T_f|Q?`R#7lyhFe`it>o5ub_rohR6SaLN1{ z34+t@Jc0!Cxxvw0yRW$V6X&{IoeNZryyC&B=wFt#Wosy2d;VxJN^u#g=8(&Ku>2gC z45LNmoYUH76F1|~%JHU+`C`@P6e%fcxMBd$g+HDt8~}rkuesX<)YU|@^Obc}ICny& zlMU|~_?eman!K%fqlh83)uS&nK#`sz%Z###_-1gjcH=yjSf+>|!8$=ILh=8^75M#9 zyJx6(@RspX{gLP)`I*M{DeWEc$l(f$nB6L%*%%=$OL}5pu7(*O!ExXphLj2oTQBxxdI}QkX(vUjR>(t; zOi&@#;F7e4JoVLPOyI3r{d92%Xb&XwKOk)6v&1R0BCU#_%S>kmx0t4M_d>yTTGZ~M(t4w@y^46 zPXhs)(HvQY*LGY&u1sf-Yar!GXV|8ir`5w|;de$a#hJ4bd+0XRd~^hv!I3zz7qZRducx+H0@)9Fnx?P9v+gPWERvZH^J z3O3WV4w|0DZaJSl*BwfGeYe#tjZYu?nkcheP`^Y#53HE~y_H5{-pd$p%H~wEv z*ANK>jOz62)?cm%1DA&_u;3R|jP+ed8pl*)9s(%saT2SirZd}3cpHbiXIsXtfk;9b zTo!K!vLaNd24W(+2(l_hw6DBGdNG={HB8J{TOUOom|uYJBQJJ*rB|tG9T9od$>g4o zZm52^2I~yRi3jB#_Pcz(+O^>34-KZU)7a-m^QpR?f@e@nPIlq&8)}z;krP|^ayE0e z)EBMU&gIrtlum8xblE9ID*1J$+t5I?s0vXpzOr#3G(D__A`ks(5IWZ%IS@NGw}_Ll;;ex&IvMoe(b2Y`@AwS z>K9K_c%=o*rMeYv(!ILTj{cmwx~dBT1T4Jg8Q~=V`8?0%9bQ2#fFPEPo3vz&-X^Ao zd6`fO!r(hJY2c9Bbi*}moAEOUAVlB6G_L|bjov{Ym!)ycl1=5FdRNtml-@7@En$=L z%HkCq3t?JXx;Ai-P|^?^v1&$=hJ)ju#x`smz)>U-Daqud0)XZP-OBtX%V(IqYur^0 zx@klO(Hmr<39pOZ_I}&D#Lb!<*#js40v~R4O6_3M-7FqLEZ-rE;JaXteweDMIN$^| z!!;O_ns2jbKW3L3P{gTppa*##+jz}3zv@IODXF8N6KgfW~4Xqgm zo1PfOiOrrPtPu#@It|~IPDZTEcY&$b4`Pd7GJ*H#sF!a zO_|Nz^YlHbH9eeG3j-SmQPQ~|0L?4ZWG@v(kboKmC<1i9i{dveWUsij5!2U<5vGbs zrg+^d3uI3<+o5G=7rV>YEV$Kyr7lpQb`MEFSVLt#3b1~|@}x)AGiz42leCV8+xsqL z6>3?z{1|%vuR2w!Ss9{Yk*@pFT@}m0D5o6-TlMF2qfqt*$n?|2NCpX1lEeATpB~1v zqK*iWVu{<>IR9XP&93h+E=uJbcs@UqVRpH_F}C+ zuCG>S3Xr7ArSmYo;Np-M8|BS5okU=jVvVNDF34VaRD20O3T4e$aBT8(Blp@ZAJ zy5oN-he#NYvVamuJVw68%B5TYSLM*tl?b_gRkYds$N%Y0$|%AHhso=Fe0h>R%0iR?3RZav}Y*)^u17ummgGYG^}! ze#MVq6YN0XRY^8Z14FSzqO=TMVm=0vL|Cle_|hB>dIbs*K`|E%wk+GMm&j#aGgthY z2vv@)iRz9MclISH{GlYl!aRSQ)lalFnQNw(U}c8b|3BjQA*S4>Q;lWkEmsnx-mdYl zpIM%JY@{s~+02uIW=RkS&jEkDQtINOm%rXq21-tIZy21n50>-5N@s((N7_}brJkbL zB=;pKPVOc7{4ded&Gjp_@FpB&Na}^IxNi&((+Pch&Q!B845CucI~v{@PBLgXIxq_B zPf=*62JWwc*|w<@3~?uD+??nvkSz5M6{SoXi+btSP&KY+BKQ_rz)oHVa7Ng z8)eB1WyY1;57AeWJ^s?&HKo25{<1O!)umVe<^2T+Ero%M`hX#dQuf5LT9twr#y3pw zh<09FcotJ#(-TRsc=g*S+wtjiC4nw=n>*X%VJEenK|6B2JgzYP#6S)Vsx`+Iked$fQm;l zb_D#!AcISU2;Lo( z9FA;#*7Jf-94Ys&EPelzO6~0kL*Gh%-^x;IVP^yBqS;xt(@pU&dq@DuLj-`J{Rb*% zyB2ySD^;!~&!opMtb9B;=_SIO=pGzXf&q=zI~`~J;)dnvGJ3#2|% z50OTlW6P||AN1E>S~;My3XL`B{UCR8DR`LOD}gL3S{IPb##*x+vgHHKNK*v-b> zX6>7ZzI0*_wVV<1+gb(U4lC%+i}j9eA)*xNl)-VvsB6?0kEklHN+dt~KDdbQF4I8W znuQdmf;90@RjFXUnnaRNLXHqBaP=HFQ{anTACB|y(x2<8iX!ZcN+|3|bUjdCYs6kL zq4u8Ulqk13?IP@b&x2?ys~qzJ?0c3|^8N>~tG<^7``@yVM$d{#0Zu4kWN-THWoF49ai(sy)-s{U+uOa*eZ*l zwLzlow&OMmhKc!2qyB0=PZgfx-_X_`z}=@-i(th)hRlNyVLM71cez;Gs}%uwz6`_I z)cU#H;Jm%36X$;q?Os3G&iuyRK0-mwA;3!vm%5;txMzAP#IYy(bCS-tlJ?t_|2tvr zV}r@Z8bd+lDJ#jIc(WmzA{7upjJjGOOT|$P z&!=qP@FAZgH6?XMLAOL@X9ZvC>#?;8XTNqc3sdh~NCah`Sca{*oG?7} zmYFd!$f%hX{h1(d7+7X(J0IOZlV!IklFa4p8YM6r3`%AW* zj<|@Hy*&5OZ!6(G7tKUY_kDd+3Mm@mn{i?0bd&oN>c3`p$S^z)kj#vtjptq92P3kW zZ}zN*Xk#o$IG;|0l}KZ;Vg-{4-Co20bzsgB&Jn7GVkZ|j`vN&tN=`~8G0e-vJRUEI zLYT;J$4@Sg4QO0r22lp3H@+R>`o;6xSvXgNn#9T%aru8BZ zqLqT@azZ?zJ>kOlb#0?h3I8V_)_&vW;fB71EH)M*&@M+|>O8enatSgvgDX>*1uoBm zcEsZPv3f*`S>6Jcfi~A75!MO(rv}VvoK7CUlwUumt;^@j>vT5?3`P>u$Im~{r2XKw z?8+8O(dof>8T+cV<~x!PQRK_{QVfFW`SUa~DK3BczS%x{W015{rE?{YMkvu5#?ATX!`m@``1-=v=^X!f(3OGAfw{r_K zDGzV2!H!uqM6O6G$i!d3j^u+(qsQdbe=xJt zAXpc<#x%DVsASgFK=08Y?Eh_E?( zx#1q3X(EA7*fHP1$3YE9Ma*m#U?NxJLWa?=S!h%&Lb=i)?8Dck>h{RyGVL7sq-AMt zY{$bZ!G-0`>mZY_K^8Zpz!zp6!dh@)}ehi`JmtEIh?8yqZyIFJLww@)Vw{#P55S0d!2x2fN zOiz|zeC^}p8If?b$n?#xLl>5SSC#r}lL|V1?aHuGi&}}@dY?_&pJUCzDuVwvQH)lC zr=Cfv%W06xK>efb;Z9`@ph%j?VlXNueCkNv)!Wtu_mt(5j7yv`gqBw{y>J{R(y8iJ zc4L+=CI&kZvO`M}vUQnnYF0W=Wi3OvZl=YIuN`xbY$a*KieV65h*YCD%v68<-6?Y- zcTxHb>VE-vV-0Y=eR1(+9nMBC5%j60``Wg6m4_Y6i=trE<)m?yvxXdZf~JJ-vz5`t z-7wzId3PS~0pXi}=$4GWrlQJIYgsBHU^c3r%X7XDtG(Lc4J<;(3BNc*V!6oqhKE|a z0T<`sj=_oFiwe@GB|Kdv5zzSQmqM&ANx{Cvh{cuY2~uZYgJy3-kkEo7Ov2%101H&$ z@SNA~^(44ony)PBp_?Y@LtW5C@9P#AAo86{(8olA>-*n-%(bB(0kUxDaxKHz7z4Xqyoe8}u~*{$SUS za#Ex#kqka#Pxs~H10lV}%v>AhBhnoz2!XQ7mQe5}0X^8IxSH`OIWg3+a;e7-DZMh^Faf zCASh$o%ptcZ3n+TN>qZ?Z=mXhxpXV6&{>C-I2>Tm$rFmot4aiZeFY?@aXDVfaT#Pb z=Y-#0&7iEt&OWbndc}}1K+G0Oirk2%a?U{pJ|8UVjh#4cL)t5C-L;0s{H6iI{hD1K zA+v{XQ<(i@C~Vg3bdAmRK4b1*nZQh~z1!%Y>hFehNW6xZqfw#I>d-{E7zPwLCadLK z9tD&!&z;i>+sVy%+MJ&$cjxm5MvpVZ4bdCTdOI>`<3kP*TGL7}sA+hO%LiSD#BnFkn<_AUovfao87+OFhWudcCibsz$ z&a;LW{5*R(EQRYW4XcbUKF3lR=J3P5hDiCiYz5N~f$_PuZD&s&Qj-tNa2n*`EL6K6 z>clbhI$+6USH5C#oqpl_q?sykupfm>Hg52y3(0kM7IJ5?U}|g!aO3bAH)x)aqlx5~ z5GHUUnl<-iK+F_IQp-{!;iuxj;>0$LMX~YX?7&cw!H@4-=TH(w6Ju1%#|BcPRwxH{ z$&uz$`LNv|@;$?E#Q$apVmG6|2blzMS&4FzEc}zSry^a{cqP*pCfJs{Kb+abJX?)Ya>G#gvD*8;AtFono-y z**oI{`?w~EVhD`4qlP0Hi2{6Gm9C6+juXSL?XzSF`T# z#^W75A_ivrDjH)E8hBD5qB;F0*S&UKX=&c1li0MSa89n7e^G12=z*;$FP6?~(Q? zCpm^ddIfR{%P(4)jwG?m10gg;sc0WK%B)>|9z!c z`5k5tzL>1l_U1j)x88CJ<{~C2D|AD?ARI+Cj18cou%tUa&cAPG>*3bJSbd;nrd1AH z1D8stgH5DA#l(qI$Z7kt5%6kPVrX>lW{)=liNkt=El6;167>|8oeda*V;V0|< zI=U(WQCcV-Fdye}3ea}6WN|ql;9k*TnR8j=G)i;$?%zW|mB+vZYC-x9v8>T*#Pwj* z4wUGvQvZkB;N_Kjw_KI832Ivnv^aqm!~tB;_M(=cb4BuF9|E4({m^y_(??qsrRa&Q0}RJhr#qLmM+g~SXq(-5 zrA4bFI0S&HTv%bgDNV^tY1ci3+%|s4+~3liXj+N=w&S+d#cgfoB4AFJ&T-Uf^Yc9; z@dff)?}DZggGEAWNEMAKZG_JI`Xyl`vRmQ-gkNl`vHF~z^p9*nmhlo`?6WypgirKH ziDt`-8pf$SI1jhs?n zkP#D$Be3<2QiYs~SbFn*aVv~lMzkKXmxi*)D?guS;QP@ZWFw>wFY9h7yQRTh`D_jZ zADeVb&+U6JHjAk}pnH@eyQhdwMCPE1AjEP`WI~o05qss3oUuZoJ6`)}DtY<6Y7!R) zr&@)^9p=g7V@Qdy5u5WfMnqq3B_>!eSFcs=+Uk1Ie`Fq{ z@`;)V+5@eeYp_OzyS_-jAWY$VVJSc5(BzD(RCO*hsk^be{)O@aJ~-K@U^G^rLkvH1ANe^@Q2m#GUI=x7AOcvv+;JtJC!MI;^AcVH-Y@yteOc!sS+37?y1bq(60QLB?tZuM-$h52m4fgy2y=> zb(r;BeoRHht=9ea2wMq~BN%>IwWPEdi-tpqIAl|YlH6VrD_ZE-#O9Q`YwPeaHc&sa zC~(-}%g4;}n?2@Q$*50CPiD;Qa6mmJr2tjtBTpd(L4IpLDI%R7vIoD>FU;(9rq&LH zxB45^ta*k>MO``LHjtFf-mjw37J4U6wB9yLN1O`eQ#mz~A~s^5nIw4>k>wBWWVH*d z`if@1p0W`C0S+-=Cn~3 z`BIYz_PfwL0oi(atWYrN+H6o{bGlQ0^`T=WqA7u>22Zb)5Utx&b zAS=7U{t}K)l2$J>xs7d?s3t@}40A4SRP{9Zm7e}bHTk_LGNL1(1SPcT5 z^Fe1sySM*`pUf5;K3XnUg2drkfDw)*ESdQVnQeI z#1`?Tv%$fme!eqfTpP&9q#yuImUiB;<(>IM2vhnYRHo7|cFbW}iTU^o<}barJW9%W z(UsS|4|j=GUf)>1vIID~dipGa={z)(MZyra7|I*16S=%(37)Yy_6&*{ccOZF>5IKF z28S3u;>@RsltMhHZ^L27mCKGOcGbVNvO1^i45RJM?!_eOrF;V+-LJEzOiuz_2!%TzKJ&_k(^JZ;{4e-gc?}Ank=B(4 zBt6c>Cq9os_=~wMQaK`mDCIA4qhGm5TkSt(kC`590lHmt$Dw|#F*;DQg^PC1P0+14 zpKPyXFy`YZdgYq|Q>$OJDsScRSF+mqXq)1ghG3=*xw7^qLQ*myCTb4Th((3{lU7rv z{Azpdjm?Aw{Ah{H%(r`30pi++0feM7^)eas`$u6WlbCj~`RA29ai&WxZE2?RV=76e zA~-h4$xR@2zNv-h#?w%BmXk5omuO@r9PhM$NzYweND?x^yY5akkUdsOgG*W1gOp9h zN|Qjz2d~<>x+}bP{zZ)2*#~&KaJ1U7m3*FLa*{r{cX+-?NmhNEkrV@?J}?qg0qcKUF?M=GO2j;cy2B^wpE8V5}Q z09`z~UI9)S`@xd0$mM$|LYIK(KQr^@t56ioPjMMAoiwF~d^=5u^f6qvtpj({4zbJK z?;IdETjCTXIgj`4Bs|g<nhZrdQn3|(5b zqW=}LnZo@Q5+>u3my?|7nb-Gdvx7j8fGJl0#*5frZ)ZnANuBX+H~$<3iA^ahEjp0x zKDvHMGe?}bc1HOGYRo9#Ln8_=Xp!9TkIE9$E-IjtUS#oQ;E^3q1PL2A<;bjDKQIMX zF})Rr>cZX%LgjxU%IErL2vygVOE1RiVvcNg!a%R-H^C;zNMt9U#7cmw*o?-ua)D^@ zfXH)wzhZjv!H9oMDV+;wUf1zDyA+~ zI_zevK5ZdHHJXFWAQZYC{W;$;RD}5ZqyKpxi-zR*kSnY_%3~Nl`Pk&dCE^mCM{`hbYH z2w2@x(?c-Xsl_|Gs-`06`N`g}M}-uDyP)rw`mY2nLph!LYw0hu$7Nh%gW-allGK%_~khnD$_+y6uc#bE6SE~5-j$i!ve>CyIbOCw@zQlLJQkMoi4UIE3v zb7|3keh$diosR|50_78>EUq-PV9%}Z#xz)`HEDyRFSs$JnblxsS>ID^zbC0g%w{0y zGqLeskVZ4R)oq}i%a=%<4>k?#s^C#|6ZC)Rkwm75xs74Cma}zmLz5t2U(_{iDX_VI zQDi4^L4C=|g2M6Zx(w6y;jRjnc5sC3Ma63Y>X3d}|;|iBe zodlf3vtV>k$>0^-i{4FlOm`t$Dgg#3n&EkP7e4x3YphID7W3*8hDM};45S7+B{RKb zqmU9>jCTB)NTF0jMt(QWUaq@7jbc&5u6=gU2MS8weT6nQrD~BJ`@mSa-DoV&L~zCa9KF({ubfC!p-1>Bd!Y zw5ge;&1=mk{}{%ze9JD8=7OOA-CybIHlZz>^3j3G1fENmndT#&a}q&`VB6HLgKTsd zX4Q=*+9S>{j3_OF85jQNwCen3~_9_e3)A1&}}bW(I08Z)-he$wnw{&xUcTM%54{<^cJ9)ZB{#R zUV?bf(U5znVZCEH;^qNtcCGXIt`3mXVc`1qsy_Dgi_He~JYol#0yc=Py==Y@}&)$9GwzT94T_AbH+?xt%yFle;R3n{I|zAm@-Kmu;EQ zG}3Jf>vf0o@PLbyAi>Qn)+eOjj#+aaeH6h80ve!hpTKN-b;qmP45DX>5j3hv!lQ() zAPzkG0NksH%NXrz_$Vt`gS^aCtq zK>xgM1!4=kRNQ7qxLyP%EN-z zqs{Xrpk56-`mU*IqG3~#I~1$Q0d@4xBhiTt>cby4GKx)AkvR?hCHbE&sNG4jz3S-!Jr2^)OV*~Rs51SxvW^Bs)=0be8rzyk>@*m z;WTcnJ!Yara$&|qI*RqCn@t~l2Y@%Fyqm=k_$Zh{xb#^dYb^_S>_|toQ6iFFfFfAz zq%6n%p=?f4x3_g&t8E#*<{i*hnS=LlJ02QViC5E5x?i-H_&K?$ zTT1r4GX^qJkWi9XDH~7Rj#=|Yhp>Q|apudbrd{aED%_-Uw_mzcc{sS!dIR+Ak3o6o z`n5I~r$LI-Z^DKcjq%Z5JR@BOkmBQ$iKa42assh&Z>QgkV`CEe0fcGqP|vIm-U^9+ zxFTX059F{8KZXK_d)5+51-XjV1u~s!*xa%$nL_ZG0G~};NK6e);7Y`{c=drHH9h_X zc};YfRgf0ed9H`qlu^b9#8ah4aVe= zbNPSQbn}-YME*p^zJy%m#Rk9-P&|Ywqu>otz}ZpdK+lJHnL>qHdn)O<2U^x?fwy2| z{Z;C5K($%z`>`?Yh;t8{LewHup*d_){oe1X5~>#ETZTlKCq{#J{eLE`u3%?vkixZEttoDF)lN8GI750= zV(D|Y>HtAb$UAHX_dq#99TEK}k2Bs#%&sfZGfb)B5q7+xs^DX(+mqInsNveyoC%?% zkbyuVF3BWqVwX9a{pc=wE?QKq_5)G`3A8rD zMwc#zAnWZgnuR1460W!{OfFCIhoO{T`Uu^_tZbciGW^pIK7<{czWJL(z9$76o@LgwmCQE9dKvD}?duYmL04JS$T_p_boz#d|S zzr{;-)&sS)TQnNon?HLmd9EOISt>G2Y2s)$_8u(O3Q3XCJo|gRzJ2yKaS7~a?KmTf z1K@?s(JM1?dury*lf8`(RaG5A2K#^AiU^)+Il#rh^IEbZ@J{1Lg^EZhT9C}Mkw@I!| zD{W9@C@|_$i6Eiyfjg2@4^IOyPn{hE74V0JGi2#1TZu*erRo$?r$kDOglgCVbX2E( zfb?Q>u9-$)N~sOn&D*xWwq_$l9=z!kFuQwqv05Fh8pku4OXO^4PO%8gDMp3+xqViD z7z}e5R2D}PX#2yPB>I_+ug%GyYd$lawNjVvb#|f*wW=?=GJJBeTNjNdQ+y{MO)fgi(hPG+G#Z4}nYgL6foTrgH>5f8iPJU_bMOZ{eDS`P&N$aWcV z=&den0?pd@7mn=0dcXpez~kTh6H|gU97_4)1sZs0+O^TD?<0lXPBe+1ur#S(`dltw zmm&Jm;`s3lpj&LPvMRt;pac;gm{1-yd<>bHQV~NU26W-BEvr-68v!`xG-IUIP6o9P zP0ZlS?4S$53!O1(M0_W<@oryCf-$E^VSYlA_yp?{q_#TRtfJ{z-gd`b%(I=z;MemM*loQf=ykYEr z_ayac`5)@>_Ws)svJLX$sT1ZVpucupJ$5BDo z%eBHrzqx~_A4{ylu?`X7eM}9--RU`QihwD0&dwf`axD>!MtAd!PV8@xy5a~cIS?`a zhXRkn2Ws$vM7ZoV%ik{j!5q=v1A#-3;+&~5_~Kc5xiWU8wo`bL)2o%5ub$%l+27Ny zT$l-es5rp80#+kk4P57s*@`i{w-Bu9-ycJ#T}}t;B`)D7U6)%iWoYRQM#W1<8l~SN zk8pe{GrMG41HtvhwCHM>_G|nuCV>K0B%HI2UKnP`)rSNMi74(pUC+)~`Bb0f(-qaf zn9d5ZCqvk;o^<1DFXh%1AVP>F?gfKe+^pW!-CJ50q1=F6!MEvx1+`hUoZZui&`qAsb} zd+dYux?>1Z@VS9BEIy9v7D=^?tTFnNi{^NOcMRknlz?CzXO;r|<<(J9yuh>Z5&>v~7vCt=^g`zWS3UiD9y%O8*XMFXu#u{jWCTX zNxxrA&=g-pM}wfp8T+vCDcW&OfQBgS@Z<3c_Ka%|OGN~O5wm&E{{7jX>rxmgx|KwBg#35iAXyA^;*b!DhVlS3b##$zuVhUIa zjxC*mSd@!or*naBVUsLiZJWnwN$!br@TDn|=+h&9-C`%KdKr-ZdvbdjS4?DvM+j(q zssU{>JtTt@KmJCiMD3M@&M)#QB zsS)=XGY$TOKvA-}iSq&r@`G!cyMjR9 zpHV}jBSOxTcj9BSDRJR*SYN}gri)@3n86JqlYR%bI-%W*>PBK%q`ROTb+6#@A#|&e zVV3JOlyn79sozgZXnDF5(>m1l!hMw)O z=90yG)nk{9CgP6)3jmM6K!e$$(KP~Gd$Qg1cHx(sc$jkZnfCtQ&wV21D@t24)m0C- z4Et-QvLZ}6YaNtLv2oRzWH1Woq8f{-k##|g$^bd2VdnETI4H@m4BLlcfyS~ql4=RV|9f;*h&hVMS^!a~ z+Oyr$){fwBaBHw7iE`;u=%i50VlQh{fTSaTL>&u2cfUq@I8*NOXEVMIK zudsUQ-t>H=b=i<`r4%-H=D&3x8J`^>i9k&sVV;-WceXGoax34rNoL9X>>(zBO}wH; zj$p5m)3`iv)#lJX*9nO)YY_{b^t)Q?qUF_x=CzKG|R~mXFq^{O;=-PtO@Q*EQx4+~iu zV<2rnoJ1~aufgb|YtTV62E!TfVrPsKF^0KI-+5eOAboBkdVL3@Roz)`&lwQq5V=)X z0_@mPbv2V-IJ%8(?p(9M^J;J#Dnz}p+O?AdYs(|L z35~1391t8`2^}H*nyV*oG!qr~0!8Xr#i0wfVwBW8jr*hv9FlWe<|qpW>$9bD0ZfFT-bh*Uf;al680$9pk?Gv#m_-5HB# z{xHI-UB;|3;`tO>$M6c~G1{fU(bJ+y%m)}uK=rReSKBYcfLgM$nJUhxQsPbu?aS$V zyeXR?KE^vzrYy)|9@8vK>yt2(=wxowkmp*WvzXV9vuAaMcmghyFU0t~(b|#ngGo`2kTH!@C z?X<^(554}2AwBNK#&@;3#$S%&LasA za4db(%Hb)v?D6O6ImJ_TJx{K*^uW5KP=EhLv?L7-WbW&UkQIO;Tl=+x zF6hRY&Ux4P!oT-pOg`z0?Xu(zJH+fmwOIS9a+RMj2^icEE~S>b#I7b$09*`(ROoL7P~L(kO3iv6QFaQc-4si0--hxsD{NyBP;y;MSSG;3kZ6z9mzs}F3Z%3?4 zc5qUS{kS-JaBu8sq)&Z~kAk1198|ijMNPybfq|DTuVy@n=HX-fog`*p?d2}b00nf3 z*>Q}K3U-d?(7EG5{!njLpn?mR_5Ti~?s{U^-`XwV1Xt@x?c_2QvOmsH(AvlSJ|#VI z@SX6<9Lp75Y~ZFXH6d)(x?qOG!6;kYojHExs;w1x8Bm8=a(Wjmy*d!F^C{rlazmTe zvH}-&ufb-F#&o)_DBnGBES;0}X>cnGotK<7lJYueVTz%HkS};~hvVCHD%WiEph8*0@eo>Cm!~TaU4XE~lS>VTnzdsYaI~@tgLH9n$=~|5KpWDUUtQ3oPR9ma zJMv!GEP^T6>|Uvn+xVi39g?Dml(Ki5Koe6n9BgX_nP4%Q>LAK~z&6|n&l%onW&mEA z>IwCkWO?aS4Us`}jjlE;9tbtBl$18;SuS-VpSyk)^EcZlWzwTPIK>A;PfEH~ONc~W zZ-}e_HvL#NF^NVU2<20-^D+>GUW(yYt2T{8Kk+O{QfpWsHzQiE;M))ic_rNZN#;w6 z$V=(3u^3~ILowB<3T4qV zKpAsnG|B$aPP9+?og#D`5W%0dPX;41hS*NCy*KqRQI;&CoRiZy7C<(vyI@8MI82~8 z3YNvr*G4f3?HiSZV@(CLfKA*0A*oh1)#6*Gi$yD%A2Tc z>}!!+Q-O;RsC648^1|+gj2p@Li}vUcgxeSA)$ivXgNG%L;2gB$k>WOkf^ON_4a;Vv z&Khgu`dKz;+G1(nvL(~_EoW?jm)L?`B|{RqMwh5Mi^%e-nv51t_8W7sAQ1RlXNva(_T)RwM4iB;^CWkBUNpGAj3WKviRN+H*L$71 zMJXOX*$X)G$cpa9o#&Q5b1N@#j>^0 z27^-nP-2pG@;Gqh2G2SjuXDQ_iH$Ml8jlZH%X~^nX&^vji2>JV@H^VOE%}n77?8s= zpRSTX`6t8wuv6Uvo-EUnHwuF7%mey{Xds^XTLeMV*0XjOR$`8<7~H<|82;QyTaG4h z71Xeks)|G0!!Cz}$Zr7ekiX?DuG+*QYqRxW`c(EGx>~GF?O$!`rj3Hg_F*8bZ^7lP zz#9arCkzpcZ_bEwaWhAAI)ei>2#^ZK*)t9~#5!tw4~GO91NoQJy2;>n*ee)z3PDE7 zU=Kn6?9RXlK+NloS|4EW`96?GLYu>XloZ33tvWr%ju0F<6@b__VSGud51zT5!7HrY zSIV9GXat|#%i7x#z+h^Xsk;n|4VZ*sQ819lbWgcHRR&@r&M8ZK}@v)tWK()*c%)S zsz`$>Y_BN433|pptIP}godS*OGoD}T+f6x$qvpj=y#;v-D4do3m8w=)?V-SN3`FL$ zOhSCg97H-?&6?HKscoMtu>-BsD1&yPkpT4R+=mdU8`PS+96KR+^%4L^eAe`;Z%#&k z1q_!}%11(`&SB7bsbXIY+0zqNr{jpnpGTQ1@s=9^2D&?};ZzTOR?;-j6qm^&wdz_V z#8{M-tx*o+!Ck#>hGV=mt%a0q)Y0r1pU2FZ44InO(Mt@AGMmDha+}IoRX5}vfc|`7 za6(kopNVOaWmMC+sh=SSgrt~97}ZJa{gLMlS)RMgD%jCO>oe#*(qZMt&a3vMQY%lA zZs}iN6+t@?N3Y$zg+0}VV&)i1D9?uwv996_M54$r)JtIC3&jBKV8dX9?5r<9OS=O- zJd{6FhGl0;1^P+)0}WEw_9TJ4^?wYXlY?0$Is%*5ZW+zoa!Fd-3^h|86R7R)3qhyM zBc$b9ECrN{Ur_oKpv71ZXDLHNOG{G{mIJo_sl|iROwwJn z=K1QqV((NJ6aND?!IfoV`1ha;9$einoWe4oOlz-<31IY~=+9>P)05vj&CKmvXV&cG9h& zUsppoA-)7m(&@ztJp33P$6qa%@AdaMFa$5}x}OcXNc0MdT6E~a#$sxCM@xr4~z zVIy28Mp>D$+lmxSCY1s2Cw1=2DN2h^B^>VO0?I~lFW)%eF<=vcN^aXdz#-hC+#jw7 zo&sqVes?HZ`2A)8?w;0xc|)}(xfE1CMw@BI0z?;d)Tv68=hshbZDK=(md%?0Rn%5XV9(TVclkDXK}uF z7EQZmwe4FlM_FmQ|G6-scjQ_h-X)l7So}Tq-2^m4b(edvD4Rei!>>L9Bv(+MH8mqOoj%S|w z7a7z(=1`-Yh%}P=x}Pq~xE5SV`$Gu2>tk1oHw*h)OZ>6OwP?)v_pfs9!At|F@iIw@ z>qy5v?@+ZzVmnr7`xf!+f(jb!sEM_g-yjP zJvHGJXbg6IzIg!My%Ya_=gqR3r9$p!?B3AW{>t0p8Me1lR$+%mIXnDB7q&+_v=={P zn8;c2>HtR>5TxJT2gNXs4NjCC3Im=l=?k&g>uO%eyfLgQaX=hPIgd0oK~jaK*g{0v z+m~g0(7<+OZ;{=Bl|pu_{8crIEFDBE#~|0}qRUiLNUY^q-yCQcu9tuxb}YQ*$yZpI zOLeE`WQ70vz&|93cm%rsW(SgJNHH>_?8E7N%M+0FCxvFZwiO_CIe$kn4Xt$dMG*s0 z0na%VE-4J^v-V}?H5w>QOlQ1z(@x~qQ4sq(uHp<0JPmWHD_ow33XtRsY}Xi6qW0wC zp8gHIj?Y@3GGLAcjKb=gtYv~yL5|Y1-Tc7l;Tes0;15*ao5#gqSVF3qR6uD@L}g7a<+?Uno%}AAT@O*V
$Ih2th;?-rb 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≪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 z ztx>bV*(vI6- zn}Fd??Y;kerhZ{z=&|g)`UoPt-KDZnJ(BL0$ZiLzE360T@2m`?Tk)pH9|T4Tl%5y? zc!fsYF$7E~^_t^Q%|+^GScrSNl&&6wsyne@q@v?81~9+4(m5%yMI$pTghsBRdI6E2 zBSv_Gu}pujk%(|uCf~U@G+)V1ysq!`>z42_FLK{~ZTZ6H$!3I3{ud0u?$-`r`V7k@ z@VIxwCDPrQgQ{CpF>}_F=iQ9RZ?=4F_69}z_X#tB!N8dOb1WA?2_(@C2rIb<8Gp%Q zHW%DKtU@xS2sY44m%V=Ra^Cnf<_A8(?(kD18|Bb1v^Uiga&n7xz{q=b#g(Sxq6;*e z?45j2b}R2mna;Q&nLW z>ZndyR4-ysja~kM&mS8YZS+{d%RKo*zw!aZO4(2&F&kD()7vJq^;B8gqIu_Y-$G7e z2JMRVI}kA`D?xB{Qb(`_0MfP5lL(pz`k4i4YuXEl+mF=>W^3==0H^R0M%=Gx4}m{* zf#PDzKz*xl!7?VfVi*p5UOYl@Vk|E6X=Bt^d#`TzC)DT1I>H=4?@Lok(h=A_XCXa9 z7-{HECR&se0;;%`a6XH|M+J#BAJZbw2{Z8Kob1Gjj^NCvbbJWeL05 zDcXUGCXdj|rgdVJG#KmC+sNC=S;U*Q%|4U0os+OiU`YdO4g0UMfuod|D*^&dhR?*J zrF2nxLI^tid+!Z+63HHlOM#?+VBt5FkN%VI<;+KxDU`CxW^$HLC?q%&M1Ckfz$ zXZ)INg{1^l#;+^4DS>qXHK?SfGjL2T}w`*1!e#9`kmbJ;K z-N`AZPw0ob&BFQjCW0@wV<#6Z{8CLZV9T0jsxTDMLD)V%#m76wZ9Ouu*{EJif;9Qi7%A{D{a3&F?#ov12zj4>w?s zunsC4eS+%GXHR%00G^3sKiHr)YotjX^SdqUQ)ElD%;aXQxj^6Qv4I_h%h~SpOrE_S zB38$>$z|!;ExxQ|Tv`v}Wd3tw-&_1ITTz#3BvEuqYh!jC=aGIS=^&dez~qlv9Apcn zNAS4%0Xwsbe$TcJ`hpRZB}@g_Vlf-IZG}yE!AMpCQ6&}0FE3@7MblgR-!_;TJ)vp& zy)pOB%7C;zmwA;^GZCM8>xx}HbsJ^%L+E=#7DUKixfX2#zZs@}CJn2Z&|v z2*-A-nU$S|>Hwt}_%t;|7#`FQXj>~1q@Jm}2z#(8%_t;|d6$`zWmF}NUS@aAEp4YQ zaNX1lUTHLd`Qev7f~Mq-y+8AgA3GNKt}6{hB{^h9Lj-LD8+^0s>)3^UNV_z)_OZG;|<20@E zs%pb^O^--0a$IF^xE47!1*zzu@j=wjAQKrAD~lbm9&Z#Wi78(_=JL%e>X*yQch3z> zqt_Di#yL@2nrP%X?kj-=RiJlqvon6=mgpy6k}IJ=C^OK;1mad6wxCap#yk1mkRJyN z1F!>Iei!vBx}NalXrwGsEJaS%KN!$FmEJbSTcS^(DS{La(HrRUVHaIm>^S^5W5iF7 zkX0rE*BB@PPQqjARi9V8N?ZC^yHw_P)0ne`*B(^Kuh>+gI0CvBFwEF;J>hwxNwnsC z1EwKa#}{y;56(?^je=P;Qu!jB+7E0}mD*ssmk90;rV5n;H-#C>TBh~2{m{l_CYilY z%w@vj%m^+b2Bpe%?7>?&!tmv}T^+%--@Z&8q`>~nW>Qo?h1=lM+dIfVagv|fx?6x{9!4x!FZFFK`CytAqR;SNZ^6u?SB+Hty zY#~emuStP$?lcmg2Tqm1g8Gp9OsrVcF2f55X^#HPt8k)lC&{(~zVd>Ahxd2WXHj3BoTkWu7oob`|7(4X77Umm_20}Tmmj}|+83DcbI@Vo-ODa2sC zr~%kcZkB0&m>%*0K3ojL{E+84#!7CAXlJW#=xbDO+N8Vyqb%1IRFMvw^#4OFB+h|O z_VasdMt7BzR^pp84}?b-z<3PevL_hq7pe(ix9DOPWIhm)0y&6eGbMhG#@Q?*@FvyK zA^%|fFK{VvQfyd;0lAOG721tysKzt}oS6g6|3*7*9|J3X!8fc&?|hKqlKS@svVZxT zs1Wf1&PU5{{I(Qpwb42UN2**G_Tt>T>yX3pr)4t&IrhSsaa@GWhly){+$GRD&}$-e zHIj_f7SICs@uAjJrX@++-p?U&2N%0RFR{K#r`w_zNB-gj6mm#WXB1@uP%IPu}N(B}?Zdyy0ernty;$TCudbs9eHA+K}NdMx?xaSVB;R<}|ze8fFhN$=CC% z%%{7)H}W2-IdiR+z+i7BXtP8&v`xY=`F-=;Pf+Rk%|rc$mv(V8c@62=9pXEWU(@-9 zNNGHB-j$q>c{r>D4+g~*7waEozBSJ;gHcDgd323JqfK_|G&z(U>F7}Rw& z%jhHR68OH52YZ=bwX$V+PSn@Jf+{#NhxFN+?%8=lpF1x3*sxfpM4 zQNKhMss`ICOPcs3wSkCV`BghWfRZqTfAN~HqaSE}#Y_{`(sJTr!-(gkrIIQNIhCf1 ztr9c=3W$*NdhCO!Rw-{X$to-ibE!D%uki0SKQGDw{WPg9o%r`re>57Y6?UhuOa(9N z`l~eQ897H5{qzMS=D6i5(p9xF|M7Qfb5R)-FT6WA-ALOLj!qdwkZYEa8zfPLH-uC)@!}$LB^~c zTPNEH-ic;c-yz@6xx)Z_HAzu5)$?`0I{}qg8zm0J($G21&6Q?a6S*G`1SMnkyv77H znolnk_})0ls_Wr_*&-QXSBq)V(DbCC4il;P@mFE=*x!wRp#A!ik*(>ruRA)Z7$);! zS8q{9LijZz7*@2P=tJsUx>{y4tiiK{t6Ex6`3irg|SaoCu@!{o$mSgTj1sp3(&LD&tU(3opUZ2SO2bP@(v$$ zIqO9lzw=;MwzR7x25W_5o2c11SSXJv89c^m!idrUCc!8!RC`bE=s0`R-?YeiT+>mN$ckOqm6Xz7EDtVD#Eka z7-|2`8Il*tTBKyfK;nA3khcP~TgW+-5U&^8F5x0bb@#z?EaVbb#T1ZUS<*Uz<6B&| z8*uxYGIZe>r`<*-l#;pN^j|fJ@|Jzrw3w>IyxiXn$RLsjUqxLH^yz4}YF#m0Dib?9 zvcr7We%4GuP`IRXfYlSy*%#a^AcI8kk)^^Pl*dnZ33_m}buGU`6J3G!81pGmgb8I) zjbKZyTpct9l9sHFh$dMHR1hru;4eclQ5zVbxj|XjQ_(5YL89-e@oS=h%0>JW&zJs;p_!#8~p**|N~O#Q#~(s@uEPZB}n{#FSq zG(fOOG1jSRg9I6_Qs7%|!T|yqQQ)YP zR*OysZeVDxEAgFr88(e&%meIJ3iuc@0u{tQzs4Cb>k!veCWD+SIF>7+{tpU@HB~;EHdJi>NjF zwJClQMO5)F*_k^o24b=ZL65g4X%x}<9QIR&tM6@Kb)B6TdWv9NuTcXvoBZHRCtKl! z1!N~JjQH@&_mM1-T}x1BOY6+RR$G7ddQke7uDH}eVhjvyp@sCtUu{gJkxpm&b2_yMM6`FBxMc@yE3yT zHwQQ{Vv@i}5j8sB_zFkKQoy7p=reNaq@p+r_;zjLty%u^aZ>kVK1TB-gjnU{voJPO zsN}`{`T&FEYU0>N9Qd9Yc6RuMb9R2hjsMq%MH;HE-B2c;# zqJq>u3vxSx0F(pq7tP)6FQ*{+h-5^oypc`lA@Ak{ldy<}_>X%rSI9bo>Pjy5JQl;T z%9B5v01*fAIfYMQ@kiy$Id!%FcHEMzxT1t8JTaH7@6OJMPZ1%&`cVjW?1vVkZQLa| z=aT`jJvtJN-l$*Q7nZOi<}PSQtpJCD`>HtX8geRb&&1ovT+3C#yfaZy%HayM;=@8a z@L?fnx*eZE`feuz*8N++<;+lzNj?Y2*Pz97drO<_1;rFB;@0NRR1;e~74_$!0g%q+ zmCYAlgj5=SqhffJCA9X-cl2{2q8*d%iiL1~O(s3QZD|TT98#PAu(60ZRs%)pzIVwe98G3V1_GP-Q2Vzc1Ea31Qrn)!&9Opq21h_)=469KxIf$=eA z%c<{_2h3G5CGRubhudoF7nWq>!0Sc(yq38C+Cb@`W{^(&`6as%#)I4mD;e;_N$6cB zBrd8XQ$^*tStYm!f;oBW^>A4MM|i7Gu5A zA*uaAC2Cqv29*RFZqxRU$gr|#2kJPX2 z_xu-@@GtjlXRlq(XYnjLCy0F#1Fm|x^XiR%oCC`0j?zi%+Xnd0rY@rV-N3HQ;ltftxvJ9;R5N>IdsD6+TpP~(qmn>V!$Fh}v!rbBl46#LL?!w!*5%-Ox3=rv^wUV&U3Hb6$oHJ0isVWF7J*u_E|IJR zP-56LUgJ-za>x->U6XM55|=Ue?yLbSOot~g7E-|vT6%SuT7OMV>hU8dM}a>&B=dmoQd9?@MVcSaQk2g+$(uc(XNdMneZ=6M{PZ zN0PZZNBSdHiM=<^5Pb298AzNDBMY8@0epX+t{&(R)p^AN22Z@9Do~$(-?|w#jbgSc zNIB;~30Y(1<&LmtQzXX2&{LGrs24*jvjYbhk9uv6t8X_?en#nDwKaPh z12!v);maz$d`qO66uB66r$H@I%pUy^JXmQ#ZwxRBL@XPRT-vF(Ain3b=iJJj?JA?+ z%6t0G;UeHV`_QdkVi_9^$cn~#i9Ob3jG$CM`!Uo%V}Q6ax*7*+)p2LABTac9?=@r4)J1G;!*Ig{J9eu__piDgjmFk1;gkTvmD z|B{Zm^2};lc7^a(I1A+-Nw^tr>Pz|bV@`pThEZ-ixW$C0c?OUdIT}0xKuTq>2;5%T z`Mvm#>&_bKW-^6~Nbt3GtD(ytZQ!s_Kzqji&{l!q3V&r_*-lhOvgpvv$8I&qhRG2g ze4=N3#B0~(7YhJPiKyb`u7nXlZMrhPd{}Zb*s;Pz-Et;Bx->wHp23S~EK5B`Y@Vk| zUcJOwu>-Z@-&+~U!f+MK!<<5}UoH&eGzcb++(Hh)(f^mJI{nILgc+oSPZN>YuhDyg z;lm_JK1QDRKS4um#>&pHX(rxU*>$q77wDmk2te&FAqxlpA+MAP;j*wYz&kApbn4w@xu?&P%RpEi4*5(z<3SRJD5|L}B zVf#s>I~*(DgYcgh-fb|V!sp)qyqi#wM1s}$W+toZOD`+gHf%Ml^eK~HmHO3RkrRaj zzD-1w2^ryZvCssU+V$apBqc8W8_UTP0i?Zi`Of>%J;$(^UXFQ+#r(pm>x3bOR@`57@3p&c5wsDASDRB=BC`i$1_NUx!`2Ll zgP1IwNN{Y&`|l67K~DjfK5)-4j(-)K{Mdd3YbXi9IiwLcm@R0n99$M$^|WDgmZ7C{ zNt7+}s5XbH&T)?Tn(@N>oU4ad0S@YrGAgJf@NDjT`$wD(`H*7{VfqxKE2&>|93ibL zSU7JT!2U2C6k{+HCQ$Aj>go?>;Y<(=V?is?7y9!EP?M0X+n1STkXyuDmu3`&_{gyc z3zH}eH0zBuxuURTL`_s>DcA!nG!_PCM~E%o;m3gW5^l`0Uq;j2SC6$|A2?!0>sF_z zklLEQDDLnsM;l@NjGVLh?7#ob-BZ<8W!hj-Lt-Mhw%E$)$zRYd#A2`t2YslZ1N<%9 zaKTh2GIZYiJgo)x>H+VpM5sFpccFuy5{JCG+J^mQO<3me7xvLDhGvOMl7!wUCek1F zdcf(r9D*;2)qry|m+7YSs=veDJm1r%wmB$aX_C~-m{n$!l4L~|+m=?1n|m!>UzJ9$ zgYGO?g@vky_c5F}R{!I>y38V5?dXf86Db@Xujjw(&+9YPOQ7XI+sU8E0+*EkXW9i+ zw3YflQ%M2-^}7aJ52^D$%I>dKOpSoG%YJ(L{|ebJ_s}O1#tOJgq33e!7TdgySvR@tnkOG@3E~Fus+cFLpg6(8CI|mZ|8(+IV`}$D03akd3)Eo{~&&-`% zf!SO#4|H&P=jbn8JL1YqSXFdV;8m#U#go-tIzm1>z*VWwmk1p$aY+-ys%dZBx#CdQ zR(Kt8UpwC1q+$K+qtO5X4D3x%J_W9qdwDuA>9;aY>G%uSxDd`Gm9;f_ZY1~bSKC`# zMvkhCz&$JGq!w{vefzf3&WFCs^oiD|SDggW5rK3Odk80~zVQYO-f%WSrwm{BxC2_> z8{s`~565*WFehH6z1%F!q?l(n{wZBe2VUg%stp(X6*EbjIb>({#ju3ldwbiCp}83! zWyIucOyh#)OR=f|luMd*2b+VLguH`WKr<+}?@X1`biky^9!e6YLrS-^YFx=r*eZ;U zQUAt{I1NN7PeusnuHdVTN+?}Uw6Je1orCK6i*1p6*;isOF4zXk^E&Lei)4;Uj^y7*(i zYj2$CPrf#w+xV3!Tk-ac)r0mF6@c2*^$$)FiUpDunFYC z*ff(_26{$Z8XbR+*fm2h#->vdnXWxKxQCc7Kk=Hm3U~yG<5oRmwMFccK;3)T;*9Y> z1D#n+V;jc?3mZKsW~z$Lym533l67aDXCPS+fL#Y=)(X<}Hl+hyy(OPyyypO-qTbcG z6o_(-7_P51zcZ8Dsg$hlBmDWhJsZpAXEv{ey5;mi=jphQEd3MsQaR%{{2tE1+mu_5 z5fooR&;e0C|D6A3h;J3<73$=9^O&LbA0B}+0XUdwwm@saAive4zUG`y)2c#CwM=`9 zPk0G8w^dLy(LF`R*2Q>*j$TTDI_&4M8y`? zuM>mhiCr2wZj8^^wg1HZS%ObPX!il5Lnn4y9V)t~){6{YDSi63qs}Z7-5@WEP{j^ScwB*gkB%L;#DpahRT z<>!^9VaWJU&%ouG>viI)yDSiNz5_QB+ z;J?*W_O8^i^hu)%zN!czSE_?0dAlP>8<=B>c|nt2F7I!|TR}#s=bcMMe)LO7C0>{7 ztef$8ugwrUAeH1Hf8?ze zaqmKH=O#P*26y-34a*0CR&>iR-5WI4Rz1dLf4l0nGwY&bS(cO|G)hkhZ#9GT0MSe+ z*lFCpgBnOiD-?>mkDiX(8PG1iUDf!(6!>v3>VqI~-CoJ8-e8Lxoc*C7p^0g=-`#N; z5P4fddNIZZMQlFvaFkK#SS=Ym65J>?@g4QEh++=`b8#&u^6$h)iT;&0PaDbgp8%Av zlM*_j)2VbVd2a?@)-+jJ)#wS*k7{C0(rxFHkxp1{()ub6zokq|i z|97%Xuj#6Kl_z}`CtIgubN74&3~cDjxR^5_V4?^fYHF~xe$odrXD%Q1yM|ri!@#eD z*6p|Q=*IXOs}m1im!<*5X?PJ5tx7R*H{YfZz?jDbjx@?@{apPD^o2cMgfd&5UPezv zoz8pLce*@2|Anp$h3aR$LP-ET zEuqWbq6}Sk@Al|r{Y-g>Riv#XKacgg7~f|zOj_10@dZ?Oo<7!HOl0&{ohjdVEg1ix z#;I2iKd;aRG>MD!IFm2>iR zg*IO=W0Y0YwFML8sk7bxZMXATjhXXWC9ZqAD71ZTDf4 zGT?n%OF^>6SMA~FFn%HsM9r#7Ce4&=pii123SDCbOZKgXmEv4kLK#GIqBVxe_}K~x zg6(rT4l&U5CgT?0CciEdflOGN=CMQRNkqXtPx2~fW; zaf~LIY#9T33o$6yf%knxzuqoZ0$&~2w{|Q-n-z=8sKvM*IHS!+;Ig?B;vsXK3Wo#H zlX!w3mKnuN=~@M04i++&Pk)HtDJ|I)N|&Jza~Kup4+WFlR@1qE1E3Wzv|X)zMNvTi zMw$e=Wj5ODAlS8{lE4>r#?>f7(|!q5P%bAf(f~!=breMaI#{toLpq!Z{W80d0*Uu_ z_2P7!8@e&vqC5P?KQdrkgGi>0n+uwCmlfF=0+|&3st6`y5=$*;HSG@a`tW!Xa;q;G zDdULnsB(dBn6Kx7K{EEBV?6;{k|wf2B1So>m`~*c0&5DwT);;EQR3$}=~mv8oO1AC?6$u0=IBmdIGKRLn0Ix-h|70bF5U;vzJk(v{OYVpIazF*i zbBxc+|hOBRY%P^F*D|jc00GO*^+>#%{ieKvQT--w|?{T+o&GXJPO4 zH7QBwi5M4j*ZPvejD&tdi^>sbNg?~HyBnxufUfI?0ayJg4Hm&j50K`4+;gsDE;@rK zZchD^M6~JJd&lZ24*^R)79jFz5f7|Vp0}Zw~ z3-m0?Bf=@3L}*2j4(pdt0~QuBrc5sela>b)5y;Jy!Bt;@Ry&AqqKVEMQ)J`lrE7Q% z)2xz`!d_JpdBQ*_pe3E}0l9b7Ah^4)UEN)^Jm(ySBtr;1W0Ni1qB!fp9Ef-Z4DZ zh*q5P0{^-zR-mVS&y(Z1SeqS&xg=dteb3nv?{Zu3q(kwaC(F^B0u|zQA#J=H6lozI z>@>aud0l5YgcaypYID$2xdYzrDj-sw0*TOx1K-;Ox=EfCm*Hamb*-RgyWCo9V@+Dl zH}$nyS>l9hEq|#l?|dXok%v5JooFan?jrW3SGAXKs$w0U~e`f9FTENaX>u)Y#X z=j$0=rxfbEA|{xd)5Dfy`FCFKVCcE(B0VTWZY}P8!_hR zAH?jp`*=v${Xz-r(MJR0U%gJ1$HN+WE*rDz2SN;YFDJ-3A@|xeUILSm<;37focpBt z3?9F-hDuFyR>i>oa8V4d>mG z)YBgRu7FifLNkHxNw)V)!Zu66==ZK5DQ|36w6PSUzpcW_Ji>9D_pc=WUuPun+9aVe zGqYXvo1#z;|6c@qGO5)ejZHe;ohC`Y{I@1^jx z?Ru`*H7l=#dGs`gmx$>7_~TjPn)5D)YRP738yWGeTGGLWjIjEaVOpB%S|0=XX?Ye` z9BvxhyPI#Pel8dKZ_r5VwyFYA7n$gfVzalNRNZ{31|H=k4Vdk#SO0KxT8V~TRd|oS zJYDufG{UR314nkNP*=Z${x4-*ZgIOPap&df1v)|bW??3~OyBLHKmwkU2o3h4E2N;I zcmI^5^)31qW6e_cy$=E%uGN!iLnm^5UmE{pX^CkGVkuq>oc??Qe;zxRg;ZXcTOwUkaN zNLCmb?B2>hzm`X9GW^rci*Ivorm4q=b*kQ>xbiEczzZKlk~bOV!@Vx3V-6ngzfLfi zbYe%Kqhc>|;%8*lK{BJEW5z0D+^9O+40@OV8WAXvs4ZEwIW@mI_LIOcS^=f9M2^nw zLJVn`oYuP#IK_6{t9s3E`l@7==sP5~dC*4Q7FXfhQJGiIV<(~cx(H&d1!OCzOV;eC zK0d(JngJzbU#v}x%7nKxNa~JoH)VY|3=L;w#>Ydm6HYnyXKy&I zYAzfG!9YaeWZ_<2R8kN#EVqf*H;v7rrK=L+L?F{F8lhKKyv*G0rr>fYp zhv>v(%)$)t08Ss;&b~|?8q$ScHSulx=b5~JO@*`UYFoY)KV{+&7aZxEUH6%Qh@TSh z*iT<8IzVvPRscQ*mUa1-r|-r1@z3P~8f(5VMVlvC`-0CJWZEpY@Fh=I9wAsBt6kq3 z<446*#oW27P4h>|T(v0w>)@^uRFi_Dj5r8{qlu6+pNOK5m2)wKWv9;5h8{)!fH$;e z5LYj{fz-)~k9DYf&B@l&+S33g(HNHxI~07?irssnQ_y4F%qhyCJ!~SSJQF6f&y6M+hwp~@RbHC-`^V>Rdj zZc|O?1%N>+jUi^cDbJR?a z;t!s(%-VdKlI{+0o3-bBHU>s;3$mi6YneQOIAVZMW)pE(JR+D-7`NzN*vDxW56b49 zSI9%r_)~u;;t#nS7hcm&_+0EhzlTnTVW%8or5A&M9RU1coD+LZZ@~pz^SiJ(SF$y{*NkZFn~(sG8HVrV#{g zQ--MVAN}KymcCnls}SHTo=uOHL=15uGRoRTWf|xSeURdFMZSnN66e%+Nj>mmsufVJ zvZQZYb09D2POHl1Oz!EKDZm@RHS{DZL63MeY^UHEt*=*d=Ctzi?Op<)aVUAaYj+2k zt?_PugaqLM?iV6My-a+dNB1?-AhTw-x{;4#lW?uA2&ffqPG?C@G&qI_6P(=z>?(Es zXw}Vo;x{BqJu{g%m0J3?Tf51u)A}7BN(^t8wpGWMZz(1B&7Sf5vD+@>UZ+oap>nCk zR!GdA>O*lYA-QA+>3^?t+K_l@y&;mJG{)mP!DQ+`tt@gZJpUaj$bOO$tPrC=uDp^U zVG(A_sHG+{>$WQaUuC-PS>SA4tnJ(#wWlca89e~68TRF4HEzgN9@Ln~+_)8XBm?Xs zhv4ToZ#huD>Nauhpa3WsCdx<1U8Gwz|3^%|b z>Wc@#R?3+`{Y@fpKyW>QwO-h?)GJ%8A#1*obKKz74Dx0|IeTgYGaj98bHxch)?Ft8 z!>WB$@~Q3s(QOW@^Dv0v_*0}9 z?kdvX%|u9&Nx7DcP@_iFb}|uuj*@;h`Sqx-$Wp(vFI8p$hC%-AiimZai-Tsa_nZHc z$I_?_x!2P5)2wWYA?q060jpRr4b*JV1EAD&t1Hq0ne`hYzoVP`d;+g5By|Tnlk%@% zE^H(y?lhx4?VdRwdCF7q!fFK*9d-v4C)gVU+^@QA6t(hzI$ zpRSb{#Ji=ns@jVb^n?aOt@k7OqbJx*g`Rhs^===WRpr8Bh64{@UBUve(GS>Aq=K~T z{e?Ns?vp}JDN3-h3b6M_y^4F?lY>V_rF10B zW|fSz3;8QCYQa(<>*s6~kiD4*g5Ow;!3&i%y!{La#^-e!RkkzM|5$k_QdD=?=W^hc zBiv!i7oDgQcQy}ah%`=hohXNF&ddgcmu4&hsakcLS;2MX*ltha+Gk1klXr5Gp)1r^ z{JHhm(~_rB+l{)v*X}?PKHVoG3zzM+K`#d#4grAgV?ke>3E2Z}92ux&gKGK+sKVwE zpMP{R*=Z2P6I1=Qe@H91&}TRj9P!Q!Vlf}?6MSGWBpQ#(>#H1qfJC9sBAN*g%++lV zIx9LZrdMd{Y0E4`ITFG+g!B%XETnQ=m>$2 zv#ef0WVELlMNan|)^6UM9TUNSO+y#tlt629!ds?i>Z`kq9r!Mi>wSd(bsHHnw6s6U8?njO*}Af^px zL1%73Rq|UxyuPidbbV=f7*+_mN)jh6TGbGsOV4CMVVlnPj_2=w>)RTpw`=@USmoKt zy}}s>sD4(+Uo>0k*o^3+c(zF#8J;3V3xB9a772Wbt*jfdB(}mJBjgJ4A(xne8O=KU z6@fq=HHhGH>)cHzY5qCO3{?Wt(wuk>d4lr^hYw!kbt@unw0eg7ANJc_ndesAG`|#cxWIRkJm$22g$(3^XvHwwFfN3zQ_$5OA@4q2qjerUXNB*i8#87+ z?W7=Y0+H$s;O1jgjKCuZ^DyJ5+Im%qVuZ#le77&KuLxK!<0O76(IiZ4ZK29l|oQU(-AKtFd`A}cfxQ- zN$?+UT7nJ`Do41lX!2De1Iiv^Wq>`uyb*shNxXzFwD+`SwAZKQi(rlaFLUdrJ>?fW zhV9bO75BMbI3E%EVV!s3Sm0raw+fN4Kl?K2hgMB}k0QMyDlk-!tg)0OUV7VERUS-38TVHt$e5WM89aK43q3M^vDZO6~aX55X@c zwUo|1k_woZ7Rb|97C|BZ++p!jAy`5E9!RvlGXUH&wx%~Q%#i4q#0N_k3Nh3A8xm~Bit;5_0y72_zo|SSj(U?nR5AN z{9T`*z#cx_OcK;9w#}@GZQ`c_eW8`i8I2WR;}1ChP6#_I?CGNA&cxwAQ#GeB{O4Dc z-cu}R=u$C04VEN zf;eB6^Xk}Ig5wy7YY7#@pselJ2HD_2qO5%S4Qu;0rg$cRi8LUj99&|kE_{yIzrr-@ zt1Ze{iPPmeMY#aBN|so(i*j9=1#{Zlqu@!6}Gm3czmj+y5r~L_anj`i+ZN zt1JQ1WKBq*wSWOvTi~W3v>^IZ2&9xBlynm@1)|ly16N5zNhte*;+!=7sqWUZu1MSG zeQxB~P8zzeHp~)tMyL3!UG=>6d69x^QfRma7(2#YUWACunGBA(ATk@jhOOyem5V|) z@g{rf{{tCVd?sYSIOsR(=$%vd&7A_xQuN3PBK0(ar)bu|*1fhMO`VP>7x%RWpwIdD znUXZYUyNg?PffI6N%%nZ+NyV>+U4{&id54GFC}Re-{z!(r5-j@E1%S~ZCWZhW6BM$c1o0Ytg_Duuc(XrGy!?&&A)5QX@NT{o~2pL-!7T2do)+5|N~J zxy%L~Kv~DfUP78n2zte|=D(bUN4!M*qxPFV55AWBfAhd@&Y4R;`Xr_c0&;C?mUJ1^ zou;h(A0U-Z`NTpBF$n$^E$!3m^_o!Xu|Ojs+IIWB?4m7PV1x!ci`{$h7H-(p%KI^Z zlHtN&n7#kE)o?P}b1vh&e=~5WL+;k4PT;%Y`kIK}gIz5(>hK9*4#x+Ez2Winm3t=D zg_cSY6~q0B}rnH9yqbVd##aDR|)HPCzANr+8tdt zwUO|enWeiK0bXQ>PhQktNSY4b?a~808PgtX6}igl+3gToW0g>(d)XNn5U;eszJIGeV+4@><6-~xq<61G!Hm-83;Jj25N;g>Y{Z5IBsWb~{DE^N zh->YvfW4M`#)qte-x~MWVLBL>c{Z+I1B=x}pRV9D2u*g(>4GzkO2Vy2xfZb~ax&I$9jtB_8F8QMIQ){O>vxl%bX7i~DuT zfHP9Va(-aWFOC%w8G-{D9c(Pe8F^aLepa_}F1b0mtPUgAgXgmWyIL~bG7PKZFmv#u zwwGgX#0is!1tA^TAm&PQN1EJh_t|udzh;KK)L19xUC#<97372+VK(sjimy{!8%zzR z*fZRxxGDg)^@6a>yn|K}akj0oT`?H`*j7CKy>#~mE^=vIvs%IwO3mNFS6O5G$U~!l z&VZHp#$k-o)lqBdKyEO6ok2Dunt9z=L~KjjzAXxNREUAd<6F3pPmbaFd^wV*&wp1W zl4a&RuKHINuv5ls#mLeq&hTMrfj%q{bZtW2(o&^(P)rOL7C7~2!3i`~4ow&dS5s?m?X(}QMGuOI|w z!RO~GN|%UHh=+exkrHm}PKvGo<>9w!%9R76f{(#fjRa>nZaM0k5fn0#bnN-JPUEfA z)p5R6VO#TvRL{^hT>Ae3`irZ4m-v8dIzuTluUHb_o$JBr!C6nhIvRlvWM7JCI>)xM4CY!=!m&{+T+~{^!cCn1MwuBBi99hU)x zu3*(Mku0+-e#U8hfRy-D=oc}cIq=;G?pDcT{;|neezZsH28B^~NKBS-c_YGk;`Lhx zpOMA*Nfw5>mnQSg!$t1&*(THc#|JcXxDW)sAePm$Er9dEgZd1Zy-ACojW?);iKyT^ zr~40u5rmYmhplk_d}_@wM|96li3>KN9S~1Hh_}N*a2`f>MVI}rvDDw>{K>f=Gs!`o zyp(=-J96CQts}Pg1NZbov*fQN_}fzRmgfAP?PCazabo zOe~^`c}xA#H$hbpZ9EHq!)Hs=O}HksUkOQzfy{WW-StPD?w||q@Eu}waLgJl0Afz1 zZ?1nukxcYzRjBFKV{`7gF=>ys@ms^AsISaPs6fbvh_qry^yf|QuY%pRIYL=)E8y2} z5ii>J*C>2yiW|kGEsM^vgKlnCSoHO>3A3&ctb2~;n96^U_Kege=Z!xm5cgfF5~EG6 zR*};=-RDvyTrW!Ha%-^QDsk_;lUdyzdb8P{pI2>xvuDem0w*lu-Ta0wdyZen8U36{ zDdBQw?YNeQxy@;*+|NTcLasjU+8V6yLOO01P>C%ij(?oXd#XV57HQ%QvAPT%)L=in zJm>L=uK7h%@xKM&AO{XNI;;LXJdJ|(YzELBlS`1!Lho4y^3PqtMD|%#;zPAcDgwP4G*Qx z&A8pF>_xvvS*`{S9=|t13HqKK`n{-mvDZ^R;YVu9E+cq?6=h0hi<%tTxCw5(QE7_m z3n-xm*f!OnXORthr?Pjc^FUTIU%Y2K8~%i4xllB{t+X$>ltAlGg8C%>?X>Z(f4Zsq z1>&^^j#QavN!M`Zbw0BcZNA%bu&#nq+$LCOYiBe{tI`1p!`@=XUWC?Lp2>=oSwwRG z*N&}KfS4lOE^CCxvJ)l2Er{249q<3o-dvfvsVB8hS0XZLJZ%hHyXiGJ223~U@^ZGX z8edu^@fC_UwXtIMTU(YvvI5$;#wONVw`JBpxApGB%5s)~F<_kd;uAu(p{N*4JkK{S zxybeJ`d;ANdIRJB<)+Y-G$}m<`Z=?UhNgz3;Jl9a1vvbj3Dfc5-h^3~L+K z%e9{8I0d1j>1G_dr_ug?4)q>hRO5KbwImIeB()2x1S5~5xhaq4BIv$Dt$SVSG74It~WCKnL6gH10 z)}>p#h7s9UuPv=YXMqqYmX-C{T9`2~i00uBnY@#Zp&LhFYhJsfBSp8F@#Zr=OU0#T zPbK%Mk>{`fanma}5qq!_kcfg`&<%LkT|_2$o8V-zSV0QBhuoB=R%Pqp272+aUQg7 z5y1c-j9RIqg?jomj<7f!{9yAvB?#5liBBu=vrx@%LV8t{F?D~GuXwyM%>H?B$i9=8~a}lLX~LpNn)A#wd6}c zF-hnL+}!esTnX?ivjB3gBbaro#QML z7No|fWbGn;na7uPOn;%~sHJr?=By7+P=Vp9=7%m;M>_>8{xWXx8La>!aII?+X7-CR zN>WOdu{Hi=2e=lJ=7Zc$q(&GXYFOS&o$AAb$({o(B=dodKe3@`$AM8-*bCkSA};i1 z)=oNj|NcCrDoJ!+OsBICt1K~%p0Zq#>0)5f9p`ypXCz(Tl^B334*9b6tXp9k?%UGh z=1r8ooi1L|^$rz^;%Jp-w_K55yK#Rf6~GWX;$0+!jdh%GLIZEgfoy0!vltH0E0^^+ z)w8)H2@ahu0aux6iJ{zIV%e}eg1NF-aXi8Fy7W&8_2(yhM6Yg3IzDT4)K=Ju8e#oZ zsL3=bOZF1^1|S<7L$vK3vboRa@7_9_-)fyLu~%@9y?&eYi!}^ttbFCUG)CjDIW)Vh_R*RgiEZ4YCY@`d^@l3rcIDkHJ}(nG*ma% za#k_as(KIO!#L!mIFdNbWaaB05j%Mr*@JM=1#@6?Ng*Ra@=u4|aMNbHfSd4)XZ&{A zLTEio?pjZE*khxW&Ds4m=;4;l<~mGfKj+%sOA;6nB6;OOF>>*CRN!AHf3{%WIC1j@ z1oUTQ7HJh9arZ&b&Mp*<^%5z&zZ>I~f1}PN#_%I5 zDdXFG!lMyn`{uW#xeO(Zc`uItq~ov$w2?X>;GWtE!~WQSwD8$bY`u2Y`c5_Zh!oE& zg2SViZ^M)74I1PL+F9QCwLSDL%fJY;qKX!-3NI{r3a%F{8B;e?E3z~8{u#cKT|%g# z6*Nvi!>kS!KPPn*D^S8xV><*~2T{4n@W`yVa;-1_MzzA68bX^9&4wrIF#=@4YX5Nc zXr&B(k4Xi(rNe01X(GN{qJC*I-hJ z{`OF<-B1>9Cf4r);3!Hay8}pK^shC44v8TOFZ_hextkskuB)F$;)r}C1~Zk5t0n`E zfU7BY#;Rr>s2(#bDQK2wG;Y4xcJB9pcH8kV#nr+T%m#qnMURHt*4INQdVAbZ58&=T zTo3}R9HNMPaIu-ps`f4^4Mk4EHZ;;Owgybu6QQg#=yLRxjqa^_fl1c8J6b{aKEGVO z*wFvd(ATdviw{$i#I!_T?A^WR;jBm0P?c>4TfM*4{*x{`Q(-qQgQJ-Tbmc>UY0$lm zZ)L6(-v<1le-hDH5a{*>0!q&#ofshL-%TjH8w8;6wm3j_(s`O9Efv=wVK^BLiS$?H zWA2Zi3+v5xvGWhN?s=uw-3q>W(yJ?2EnKw-E|Y-@O(WSwY_eAlscKxyx9yfblXD1C@@k zwL8>8`&#_VyK=jJKQNxp0}NfkS@`~0uKhrdL;!_pnm(5j@nsBb?h<=(;IN^$KKguX zpO)*3;G0Gfs}ecK)m_s4<01qox8FW9`P(0NpGZlu>r1B`ko-B_F6yLA;!%h`P1~S= zR2}r6-F40J{@eruN7my%5Gy4nWhViyS3q1s80~G=&Kf|_vPy9+8(%{|`_SR*B@BRW z>?)-e@;*=d6(D?6h6KVHxm)hFefvQnlM7v2+8*C`gwZ_M0o17Lgngx^nq5K7qGpvC zMqp%3M~Oarb4$qbF0UoAbX(;e4*?_LT1gc)M`BNEbNVGR}PL3?J4M|BVIJY4)nXuUII)XB9@-civ zsH2tdh_y-xp2ztWjz<=#=Qu~m&R*mS-t)_3pG`85vf1|MX=J0(M*&q9P-q~VpmfgP zHuLOb=7XlFd37&R)aiZIIp?T0|BzBPbBN3e&`5nN6tInEW`|)UZ%YtKPcT1j>eOwnB!(3 zotJ;Q5~=0UGe{W^RaP_NX+MT>$BOK9=zc(M2ago~#aOJh@*SQ|3?P<6{Kbu1{>anL>YCpAOZg1_C^y7#?l*tGbuI_Lh1@kW z&u0J{>jwOIX3R-rNJ#nyWbm=yR`)bhW`IyXW|xuqSJ-pVi$Pez2OhSe+u!b3$Ef~c?d6!b zYJus`7mG&DO(GG4QG(&b&W43;oUU(SJ?vXIG5*lFxH^6#!Yh7izW&KD@S%NXu{qJq z53_nw5O3F^1BW4fII-m9OY{%gs@IR-fLdJ&kqH>z}J%SSYtiFjCy z7ExNGEACmz9U5^)_ehhLGsJ;;k$krN-Kk%m3^}t12`Rb@SYp> zY(^;&7kBt7Zcz&c;faC?@c0wwiB)5!)XiL%RqS@Tu zcC-Ow*btR#isgdcWV#jkp0GWk!xADIjd%UQH%1t+*ro!`-zG&TGm<-JGkC;kl- z55$cs6lg&4s(OkVi}7&%ge`}n1N80=R4*$O%Y>wB9eph7eox>QRk^tlC_>GH0J^oh z6u9P&l=v3qeVn=n*@{`9SDZuUp>H2fv<+A{c9Fvyj=*ey}0r zlabFm!FdbT$rjEY!A@tpB}%a*L0OUszn9JD3yeIWq1P3{qs^2q7L@XU;5ldl9v`4; z@2`8PY;-p~6TtR>nsFjSJasdjX`n`nrCW_pwD%_xWklM$%T~K}<%nHX915xjLFakS z;F>~RsmK9oYWv95#Vktdzh1ue-Vc1B>M<(8bIPc!t$b*ptj2_VMF-A4psWF(|6aeR z#JzI3(#emg9het^CY`m=wGAolx%sH|#gxHjhxeY+c$AklYK5Y&rY!jn>B4)iG!)v> zlP6d-hH?OPwL$F+UAGGF`1V zPYTtkmwIflsnU5yyFx`qI4* zJU(i9p3Se1I|*Jn6S>ct2G1*YwL@rto2A~8$&(2b_6Tzxcltomrm#}08m=ob0I9z7 zJPLJPFcX{?q{*5(wKtW}p~i(c1rE}e%U1a?RO@9)gCCLwN$s&bo&p<%6YQAP*MiI7 z67bTH;DU032+2U__d<+vE+2*`FPmXNXBgXb1`30)iK1Ns;u<>kHA}q5f?45oE&v5# zSr%q3Y#If{aiVV_clWD*bj2R?es(_BUlNF0E+?})I}lXYaby6sLeYGSf}xRK0Hd|S zDdTL~ykGr<1ts(Uj0(P@Z#aYawZaYYl=bY0H#;~d_!HATlK!R__Gu&q9%4ym`(`w5 zr8C8jV%dn%*Sm83D!+Ha>>)SF;m@+jm#?vzUTFRz*8M$AW=h78l68fx2CjGDi7po% z@p%^LE(HNZbit{3#SWIjxE>_;fGJIs5PH0g?*oqma@;ygQFr&D5<>2?KBYqV`inME+jL$!Ihuk7;DM7sCr^!lavm2N z&DSGax8v71DI?hE&rEWOzlFXhlq3r0yPUVX)C#5(g_}^bPw(>G7$ljPFZLpqG(ibj zC?plBiiag|!(O&x6x$Z5ym`s=es3K(eo%Z9N1iJRt( z+gV|>Mr^oYgK^@^=t% zS7>3~#Y3q3OY->aYXrZ^`gu!(q4Q78r&@lr2~zcnMVeWFQb6y(uTpT0+rZfmE(`g* za4sA*&9)r*Lu+uON9n_&gZkb;zr!w9eAs~?yu(&Q1?-Wjw`nH$H&@rWkaQdO<-Ew* z0F9d}AB48vUv8a1S(`{pU_rxtFjIKhA9du=*;D|@#?}Dn!S5FTriylz$pXCR4r$hV zQlB^Jkw}~%Ud1Wt6kZ2B896Evel~XvQkR{XO#f?lNsIT?#x6NR<1kas0H||;R_Xdz zTF-`r&%S%pKlq2QlWuxI`CJ#8U+zWN&_hD(G4`N9SJ>HIXd7|zDqmoa^*LN2BgA7~OOJL0-IB>Q4|aJ6^LF-{LX;q~!A zGE;8G%AHMCYt+6B1vzwouW>c``?T}U&8eqZ^7{?2^{)$-3vC+xD7Geq(l)P3fgpn0 z5xUcp@?UxHJW`5Sx_qCt@meI=f^#^uToDF(+nQ0gv8v7>X@W5gNj{f$8S@Cp$52iV z?1jTeTAox{8@w2Fb{-(4Eneu*{QE-tkO&AhYlf1gE{8HI4LAn8tU#rw7hT=5a+MgT z7g57q2@Y>S9Bp_$A1)tEnL9d3*$@B|h?7u2sovf!vOwXn+rJMHVL%Bzp{Z0Rl=igq z`EF5n0PjMO#RXG{mJ=tpE&sgpryG?-^Cl{gwZ7fs`z7t3^|72)wC;g%AFWZlFVlMD zj${P)fgUT$G|&UvbuT3GWR$f*k$SamZ(yM>W}$`^&_z28WfwmxyAdrzx!_WRaT&_f3v|J9=>Zfcx=UdNTB0o?3Ux zs}lGdloU_%kIjIJ_OpoAV7_-89Toz)fXNj?Culjkbo0VWlR4Wp7EZ<1<)YjT%H@wJ zr_8k@@(^@joE?-itoJLvlqo^&@jmjOBBzTI$VlIQs?a3-VNvNz67(=wdT@c7+)fTZ zSAm)}tRs&OM+|XDX=qfNXs67*I zk}p(kszpSYu;I8v;BylH3t;pP#UZar_&8yl<(3s#vE-8-zw9t53zDHf?fZpLFpPrn z!8QQys9kgxNh72NG=*h`C949_kMWyPB$^~dm0k1x^re+f1&u&uw%7n+gJe|-c$xjI{f5a zlWMrX%1FsU`WBv)UO2H=uDQsp&Fv~lj<2F&DIQ(H!(cg1%CF?>~%taFGa0^F*{ zH3y7R$qj}Cs0M`cxNy@VD^b5FHv9Vt{F@RWkR=pm?IkB&*5A+y|6jw8j{20TY|RGp zJ2zJ|Cghrv;#@zg3ZOYJD59&tDW|?YD|AMKX4r0pO_J;4y*srMwYd1Kr(`QqL{y9+ zH4^o=XLY3&d};R^XxR=>hkWGXsU>OnwW7&*yn-@CYtfM*Y?+L4RMhESp+OS#nqI6- zngq0mOv)u%6e&Gn0>===gz;=**pa=^u?w(=cfKTNG7FBQ^T>oyz8GUmX`WNp2i9X)Phc!QGhT=rf5pGuNs~+bJZgh+R#< zu^vY8#hq3ZEyDtL*Ubo({7WwpkP3QZOndMsnUWIq;~G|>U@)5cQ?=tjIIAU3!%5`L zEM#tjN_OV1_wf^9z220nfvCvi;;j6_YMlGXW_Ge3g;;!0J+jkARs5NiJ>w_CPK>;s zO}MX=`}J&<4kp)hj#k~5_VE-jz>t%67%DLcoeV!mG$`B=6^-c5o+AxnJ1`5*Gl4kK z0(ZXnVQ{=OwH$;w28Uut7z(CCM(1~eboZr%-?cSlpuPN;*1xM=q z{?TEDt$v15W_On8+6K~~vjv5O;}U%-I`g5co4l2!{=6y?8R-6j#EQ+O3qo!sjM6iU zsrbdO2(>n4rz+|o-$ckPD!>_R6U%|J994WF0Rg11Gx#FLOAfQIWb)17N`H|NcL^~B z0*&)^fuj4%l%Y*vH!5TZW~u}r010oQr9diThGKoB(BMT?4x1^v-}nlZ*2+H8Vr8GZ z&;^5~f!8)TRuDrt_Ftc;(+GRmPHHfX3~^<&Fr z_Hi?VQaCgsNx&uB2durIw+6(co8hy0UF%6GehO>}yNwS2eTrSZ4`Yq7jqphN-4Rrn zvHqC*bY&)9S$asHb*yszC}_x?f#O$yRhQ1ZiLwxRT(%zrx=fQz>pPF#Q$N7@jTqP} z5y}4@o?PH+-vZFm$5m8nOj8VeMQkXpS{QX5wUUC5r_lDDn*1Z~VEm9v9*VAs6B9`r zrz%}?v`RL}Vv4sEBz@pVV-^)O^kC-$yPWdB(fI328p_mOVfIU`8jfAkPs(p>N4M#! z4kM8on4pENw+`WSvC&&VO6_fj8Qm)5@rOr5@2Ze)1|#_hilPl$o|W3nXZy6!!x~3e zOkbQb$hinKb!9>GDPp;#J0!7Ayo>kzxJjyrfJuJUh+;*#iWw8Rb00xSuq&|isnyV( zhIiNbywYbsOR^SYSt3XH`- zuE8f*E6t$z(_I=J_<*W)`_?jXWj_y4P<$bMR<+r4Q?w_Epew?{Ra{ z5?CYMzU(>msOw3cpi2s15TQgm3a7tW-(wPYTh0z5`$7_}rY>RGL2-Sf8AO7i9hcvW zeFjp@lh0+ZI-WZ{7ZMQl=C^{+>=TMoCH%jJfwb-g8il>N+d_WlPm3$vSf5D2y_-dK z@_!}Zj!iT{b_e7YhAzf!b{nm08GQAd9fp4Pm865BNBkKr3Q}qQh$7T z<>%nNhz6LW%)I+fCpBt+-t`KWvpHU@PWGw)_$|3pQ>kJ%A=sZ9nK0nH6VRhBxW5Uj zASrK64MSf26^#2u4>jPjxW?{+T!KNm4D$72=bsYE>VKtaNq0xy{*K``(X$efv+Fcy z;-p}9g&;?A_n+9Y7#Iv+V2D1ISPnWoM3ibv;IRhyz%QL~7b-yV)K(Tue{F`d2pr2t ziWF!Atmhs7zTgi+Hr)tn)9N#;In}u4+>X(&~Og_G7>(+!FeST1TlMmTvk1>@92^7FN%hJII@ZyjOus?WYd^7$%)DA)9MN9kBvX# zAPN#jJjd6_g#rfZZ;gK@uuSYSH7mtA#a(K9L&JPn0_8$!+Pq)t5-4>eV6_cz$`HEO z6nng9Sff><_xw%f`bjJ1j5Qf$l^0UC?adI=rR|lukG~VI`OpU>PWBh7jLMoc{Vj;nKMd#jU8 zoB#Hk=2c=Zn+^ec2dQXUHg(slP$2kI_OMK8-1nh1vir$d$5!EZA1hX7xL!v-TGvnS z5)EFd7v6_uqy@fyld>Qi$=J{w$yu8sNuY_UCgx7+|PQ2*@B7DU;IG zsBh88N`oRs(M^|O8fP|+WnJOmBs`V2mc>H%SyA2D#STIB?kHsf%&A$GGRtJxc+`CoX@)u*dyhqs%tz(wPP;sE4<^0;ovp73c zX_K{qHIt@-aYxV><~UtN^x*ywsWrZLPs*ht7eu%R_gI~y^34vA1W`&EsW5l{2(4Ap zU1NCX1rUR< z$b5!V@KLr;m4kVjBc+9>e=rM*_Yj?MH|~MjtOZdMlL4PI(9z9hocV}FNp{Xntz_8h zGY-*04(&cV-dX~J^9ce(NVzejZI4&Qwzea3%uotjZS&cri6c>%zNETLEulaJtm5t; z=Jk<2H=7RIOo zjUqeJdx!^i=xAyciX01FEBAx_K&xL!Q)aF5XANj$iApDId;Z^Mz?_@(uLwX*ZH8r* zLc4|KC#>pN+?3=l|Na4OR1S9uo8Sa@X)2MWBNsWld*ggxAE+x>M${d>Y?^?#s+sh& z$3b8X^m)>+4aDhfai`z}pP^E0p*Br2Zz?FiBIk8RmeU{!v}xuKbvhVG{Y9r^tv$=I ziIfheC0btKhvH5;t)?9cSOYG-#seNOjFy-l?+~j?DGxv5Uk@t6%_@bUQ-)nXU1N|X&ICi zNf=CQmG@it5Y#9n;B#IM zAp`_En|=Y}ce;~H4cJH{o{9WL2P%kg0IB&rsCYl+y=^LnFq?=IM@ar&p13a1YWX=2 zSi_R0&6chX1!MQZ9CSfDe47wZeY>8V9S~Dzt%cr>+vU~VuWrvO2uH)Gz44mX#6@nx z1_X-O@8Be$kKmy@b|{^-tVa{}KX0;97v+2uE~KgZeuV~)AaLv@rO;v5o}y|y7xQQ>}Qw7mk7 z-O|GNSS&E{QQq+(ZnHD=4YdDb^U7jNEfpxqDVw6l=81 z!{764{{hSVx()9fJi#A#N^8xp)^15#+l_7a zRJ%wG!P6Nr+OF2x2WxOT=jvH7%U52aoimG>ymiKuoFaxBwEG$F6yP+xm4X?D~(6R zbwe#f7mx&%Lc3w9M!-!9saSSVlP#%`89xIaJO>V&WA{o(q-eSnXWH^661Ocx1YbdR zn4@;+8B}w)M>?>>A?0LkVi;!QmZ$q)rHd0CDcn0HK-xiOtt8{?EO`EnBHt1Q-h$!q zj}}_|5qqPFZn!q(WiB)2SyM{>(W()!l8+q(1IVJzzEi~1c%s?hf>?(KL%&4i-q#Le zDPLA#I&&1cD|Mx{Ox$9{P$0)Du^cTAOdc{CrU=I&c8Cr$EW!VLu;ImrJyV!`Vo;Jw z50Da~1|QJ(wqQR>&#b^yK*v*Ce%Lo@af$woj!H3RusooC1GhlWQcqzO)Z~ls$_l@Jx;f!_0tX0 zd5v2L%<%5A$5Ll~%x}|CYHH7r+Me<3KDe8kvg`qC|76fMOznh79S`TPOGtXqON|JR z2LADR$v0Q1oB)3#t$2qurg-@bfSHI7*_!Q^KzL3>#Y+2)N2}PK>v{{kz zp0YC4cAS+4F5}iHmYF%V>e|#l7NVu7?~{rko5?_z{X!~nCvR+cxPpv!xZN1;JSe0w zI6dCI>IQ)4O;Tx|*#P$ZvXF`dF6DU!8{hK{WO0l?Sz#43BmKxq@zu`bS+7L9cXxlN zk;awDO#Q^7iAmkq=LiP*23Q zzL}I^SID^-uewKM1_X+*I70e8*I29ska4|yZa^N;HgGC5 zwCL8ZKg~MAg_Aq8$3Vy# zv?S%13*z+moGlip=?w$edO7e%vA0~pMEMGHd%+v; zzbdcpUtLX2j|(1x;Z(R8-FYsRIOV8hN6rP#xiVa8^TZ{q%H%G6l$&0z1ew*!?3D9t zo$j;_FWEl0!Q#+Og)v}nBH+uOz;)#b$TWi9IkWb)-y1?D9E`-sFD<;}C%r&|dE0^- z8EXTT#?KS0{jWEWKy6}OuzPXw1zcdQCwwkc@NHT$DhmITiTbE#(SXiIY|9F_YYuhj zo<}Yi7)-_j(PScVsGgC2y!w9@GP)?W0?w3`VqcO|Vz+YZ8E{UQ%M)O|(aqnXN7d({ z89(CBjbQv1A<~bRp7q}|P?^ub!SWT3e4h9_6|Jl65Dm&pDjhJAQkNJg(;yohe;6K$ z?@-n3zbh}D80N^P!SVnY?5(RzZKxPZn|8Mxu#S>YvTym6L^7=7XsF(rVPfI}sdx|eC0loQE;BQn)c`7LjC2Hc>v`U>QbI8*G4ya%n-H}Oe978F-88)i zfUq>DtRFry#5#xKiZTy8HKy|vQ>GM0^UC+7(AMY#!M0#lng%|}12h^m5RfwVBZKLn zp-8A<<652dg|M^umwmpF?W%~8(Iw^l`3R;W7Ry`8QZIX_sz||ZSXVVf`oMqEQG?2( z5!q1Vx;Nn5zgRHpD`5#$=r3_h#MM2*pKRol=ZEFcgOIOmBm8M$UC%UGM z{y0bUHs$|mi?>&KLi7U|zH5?VOOmEbYD6)OmKS!3$$UWt>s}h@Wt#GdWPN%rVhs}s zU=yaUi30PgrA7!OJ|j^2R!T)1jZ@GL+^?rbxsk(4Lc-)rc3-4q)BwHKpl;AGD<+Dr zHO!&8Wt)NZdJ_vOhuI{^Y=CYBssD)5(q6^L8WScL2DV zR5|7SYMk2=@{W&|6JS5aZTyTIgUqk!)-e7UmeW$Ud$yAhUiPC5^zZ+jmvK`p4ZkBv zIteU<+&4<54m#8#5GI)IWEfG`VkZ|kg$)2*23cP=AUJ@)j)e!6p&%m|v1)9We5@A-lUqDiUVCdk?naHXt5Fc^PVgBstY^ z-b%!=vTL!HIm|*vWpD~y-NlORy7r2%R)-lrHN|aB=I0qR=xgf1aDPd#y0@!m^S`fG z@AtYk%RoWT)o{wrUi=+E9lTA@)yp z$Am>MYgb;RBWR4Q^g?97%BkZ=AYWHF)m=CxQ6SRr)`T*!=+iKLEgc?`x}!{{(ZHyXtddg(ipcIQKl5CB;w)A2hL`0c?St z)8?t3f22-ZIa zN41m*9t1IJcmjssT3MCaz%gyYNcMTMR|eGrKly-MDGIkRsf==+4!d34+d6(;hn4KF0SK`+?4>DNPzwl6!k~^u1z54*_ z)9<$j4`VlWUKXU zoy9m^7!ha8V@U4SE%DV=mE08T|Fel^ZI%0g9BIq&L5cr&fl}PiHQKOh7nK7x&X9L# zPEIjQHsC}G@OGsy5RzTH-8Z#zOB$_>gA#O%+wT2_^!c{^k3)tY z6B{cv0x!$xgh(~`H$bmv}e_Nw{`41L-%-0^#<-$ zR!?b+9PSqgcxdpR5&-|KT!^9Ps%n3C7uqrC7JtFI-ivJ7-h0j0ggH)lnKT$uNBD@TbIkX z%fg#|0#koin)ACv=hQGJ0g`Zs%v(P(l%q(!J3ye^Qe!`Vwk#vUAulx?g^a6OZVYJ`^OGc!U$=hv-!bZ^FLzUTmY^q)sgmN<_Z{H@hh&QakBj56q-l&kfj51cxn&^#pb8HaRYG1*)zHORD!klwe zTry*eWb%>VEL(WH*VEk`YaF4Qe0B_hiYGPAh5W?G|5M(xC=>g!wmq&cSfJOccXm*5 zRbRS!6=XGQ1p#?7wFNkea^md(?&@53+;8?GH&^}D&X$2b#SlZcARCpo<@9TVhG)ha z4AL(2$aO2rqt!QfV7@B)&w&Y?c_|OrC^`Vpt#WZL`$h2uPR>ihrz{KIQ!nP{><17@SWDVLaI9lFZpvG<@1=J2m!X zvphT>zu#W}D>_tmALj?nyCgxfv2#w_1O&q#<0?t+vFf_n9Mv^e&Kc2KWWI`R_1_*N zy2o~cc6~k>GydEd6;T=f`R$=%*kX;%$9aEU6}gIw9Z69LC0Or$@Sw{m7`srVQxV@^ zK?1H+nYA3;AbyxgwvF|@Uj1y|`b8R-@2zd{0ejNLsT_1$v zcaLR5*M+0F5ybU0XRQY?RWil)NuY?zO797`L4(|x;hW`r5JRk848Y0wDmG&M3Arc@ zCPYfW*m=?49!m;%b_}jpfZxZfSTvn#^x=X64mCUZE@9IrFG#FJe_^@7dQ-!btRmK(#5YnXPG|=_ zjCtc8(yJ=ZLOC#ie&>s2))E26j(}~YvylYLJIl?HXI*h=%7hRI8muibE-VEUy6^;l zVny-)73_>l7+6w-Jw5ed&8O05RD-(=?RRyx%!SowL$6xJo*e0KIgmdX9)1+b;mNub z%GWZgfE}fNm1I{Dt?VTOBM!4T#x1-G7G`#^07_{m=|?pRKV)TnevB`!dJrSE?s*EP z>;`bfm^cmB0mgCmfVgOS7mG!J(`95n<7ShPTh1L!?Iw>z&yMVs0<+4o@TN3WBEAb6 z)Nx}Al0d0UQL1ezJh(YNS!SJ5qrvYP%x~mjP)}?ZR;8Yqf`>% z_-i7qYw-kH7p6Mj-y`udc;nK}_aaCmUjQ!cMviyI!_WScW*=?Q+4Cj}0;*Ras99T@ zkT$#_#KLo`h&f6%JWJ8S0%qdvw?+rk1noJ-GS`eM1R}$rtf)XJ`GQ_mQ-X^&iJOqq zuq|{lt5aqn0AlUtA-YXD#=^-8XyyrURbbTlt zp#xWV8Hhg0AQWk1d(U;wn3;VDNx1LV^E(3MpNn_%?(4~Gh4hrpQ!+yqIN*&+FJ4B_ zEI-t}Sw1kE)F7I`>V)^R$(p|Wy#(67ndd=S+LR)A+6 zO>?nS7TYt_HbTvp4e`2=KO*;S&D;5^T$(UAgPHwn##V4TX)l?K9R6hPqnE2j63`vzyJDKoB9R}*g{iqRf7-sZj8}yN_4pRq= z>{6E_0=*_fs3Pt(S!L4308#^)2@tYYR(3WT<1}oRJ5yX;XtYI|5BF-@ zM1~hnMytkw(xG)&Xhn2P4Hx|AW`$4XFNe8#M#>-6MX&AnOQ$PaEqbxJn&Mz}oj`C1 zygK(SoT;zMP~?W`X9B)35109}!Klpf%1+0tBg>bGS}{l9O_*e4u0ZixirR`X!dSO9 z$)AD!Oj~vm(EiW^zaGxedszx+JT|Lp_a?fO5HM1wtH{DA`6i(?pDGS?re9PWV%vDi zCrj9e==0(RCRgf0lJ%|lqueJSi*r(x(a6a!^e5Ggn^#b}yaBHVOw}NHR8G#rn}~tm zB2mp>r(d?15Ed%RRx7by7O;|=eC+?_(NLmsy0tCz;$Q(B`DVEWYH7Irex^ocohR>HB{trOev|Mw#~<9R;}08hdMX4%I1dh9V`8trXa{hjDm?LN zx8*}>-kmJ&P8U8Bydm3+M{`BG$&D1Gkq>?z%TPy#JTDY{=*mM*CrU$g^Y4B$%xh*SARTSi0%^ElbxogK&pZS5ORhr3{{mwzCTtq zXGU-r?Dyr#f6a1ppS_Iiq`(&w$w@q%JC^DcL(h^@A6m+~+1;5-{lt+kt9L=TI*V7s zoC{oBpHR^g20pJ3=o*=H5~7W8gO7HXvYLoMrdxb-$sofmo4j4anaG-W8G+VP8G?NS z1{A`{T=4+(Dnx(p<64T>k1E{{UZ z&0K{w@MFW$9Y2ZwMFtx>=6XfDdh#LUp#P)I<;RAD7Tcq!@D#9Nz0qX8Egud!0XDb! z;R%n-%E`^Q|hV@|F}%Ap)$c-c5(X)!`o~B@MbQ z3q9u4+iHgTleX)I^0jh=n_V3i`!l-L9PHWht&#iNXCR}@WN~7oiGP)9z9>U)eLe;I zsLzWW6`tY8^K3;%Xq6b_Xvo5ztB$VHx~`U7B}@(^nK_hrn3D;PY4V0;Q<1j$&WYNS zssMEYW4FP2d#}wPNYP=EUE^_d-*Ra3?(?0S;yrcsaod}s>*KkgM=dYK$~cP_C2s(czULBL@a`lrq$R*FDG1DIBw0$5Pm)Wd(n#H_`Hj@ ztD%fW*8HHsF!4sn=z?W3?ZDj!8e~sz7)V1DZgfZQvG12Op7d%F$1ik-J5bUCp$jZO zJG+Jr^`OY)aHx(!=Na@#JR6j7d@}lIJ$LylGF1QtJQ!1W{_M*X-Hua;Rq&wvuJX;< zrg9Qv`KVvemh;dbNPXYbvsI=9H7zCV#@x{uIW1joZ21{Mya7yDU!y4Cl1`;$0~Z{g zAeMdGRY?|-(Z~2sZVNK73p_>B%DQgW020C~?f6uayw6n$mm)E)v9`L(n*|-0g015~ zFYKQdh#8JXqia4i$tHtoGCAlOT>VVBgA*`l@#;N?ABBAYeyBvBlmf*!#5~h-Dv|W( zR+$)5sRj2O4A(IL$MTSXlumo^uw`vPoyxJiadxAVO!{q-BgC|3fkLq%9n7RTS?>BC z#vaBS?W@#2EWu`>Di$tqEjp?Hf5|F(*QEeiBu#T+kXQC?fyNwgDnTGk?Kk3|gnHT^h??8CNBEQ^>8DH^#%2unCnQvSB> zG;WR$Q!gNMQBB!2PuF`zz_~@`lQY{3hqsapmuV^wOvc_63q_wkqCDW6+Y^14OS29| z5hrq8g&zXGnUWB4W#cK&-~7nhfRHC+48*B{kG$l`kNuPJn67f!f8KIFI_*L)gVG)& z7seiykA89msE*w4Iq-RH)NRRL`-QVKHrgK}x>y0Iq?$b5Jy}!2s|(IcXVt^Yge0$| zxDkSTQrL=GNEWhTMBFE5gfn*h>&0bkrQPlHHFwgW+q42Z%Mi9FsJ*9s&d^&xg5Le| zC|1E5<2=#4ktPlOP%_gxZR1HmDKNL2{%)h+p$j&R3W2b)$%|<~(yLzqkG^<6U$>38 zqA@dwlg2TeDyfaAxm$?E?Q_oBzSL6h9B3{MKz~p-rkEe3HnvD5*DD2GLz3%l^w5kkOy3nMNj6tS-}^8J5^#~*HV;${9_(I3tguJqWlFFOb$bJG5Q z3>8xY&9lMBO5EkDmC#aeTy`(0#ik|pkGY=g)cV)7IPwr7ZoUXvLuf{V7gd?eeMwIF zhC-XsRazU~j7B!j$*|f89zv6RH@hj>V`fjyWn0pog$1of4F)LE6jg?NeLG*tk!%zC zOw{+1Y#Q|MTw8;4cmIkzg02l6aL4qTFOK`h6ZG}#p6<$`#-c~K>CrNq z9~cSgL45sifV1ST0$VRZn(pGJ#JR~|v8E?DJM}B&k5&%-{%7NNhdUCaa{^;)2M^1ya1E+{jgVEzl)i+1uaS;U{76d(jw!FG={+_q|E3Vm^~ANu#jU{<<+w|o@ei4-dA#9T6LZ&r9e!`jhwZIv$J6ghNA6Bq~Q1>?sn&j6CWc z6hYc(*Wlqr`D&!uedt^<4hIa>Z#R07N0Of6$16i69;d0v+Hho5(n*83mZN|pXl{fd zlkgg-C`1u^L`F9*N?m}s&j^+a|=?Txn) z=@l!hiG^gtYr`Lo%pq!Vc>XtMqRX{*%(zX(Mh!U^@~aCzV3MINLv|?}v+s4KKi1>h zYN3CH%c4&@6eWg)zeI?Lv0{}@WmX}9ZOrS_;$5O{|b;h6beMSQuC zYlNO>mT?yu5ih5y5}vh0!dw5xyYd)njP|j_x+;)tg|n{yKQC!=OI4I~vs%b2`X%%? zn+vr#srZZ)82-0Is7=yswBZJQ*RGp+OI@aFQl%4Y-mTHcAy!!#wZ~A#sRX%}hw|+` zxRHbzxQ1_ip|qO{5wFWwg+^FhajJ0MF{mq;@T1}?`6B9_PeEjRG8jBzxnhr)h#(#Y zEwy8ze3+cLXpvtU`ezca&WYHh9o;mn4a>B}s(8;MY?-Gey!SMeW|#BFnPgMbC@jK3RL11~Tg4oO;!HW0a>(U%GteeI~g zPY&5^sVMj?xA$$6ZcQ0m{AX*gz=Q7vp-k6`0mXmd%>ie#q-LzRgyl?b_;(x(ZJ(XnG+;0G-SzOp7U01tz!-e<4&2kr{YAmk zr@`|Wp-6&|X2V?96uKkourX-xzd@IP=|v&d#;J%Y0uR6CW|?<&(GlTJOajVaUZ(qb zoUMD~JK&6bwfZT^F5K?@cvYmeGF7zpIUhj=&5bm{QrbS0!!0r)55y6if;TfN($5%aEvWUHwFe$EAkv7?n9&m&ln^3=%&jUNA>ef^ z@j~k7;u^BGESKdk`Vbz6!E_Dl8_3wnU znW|AAX33UT4oc$LjnhbLsh z3k4l3(7gehy$bsalQuz)1F%vN=K~qvFh~y{HfjHZ?4_4Sgv-B!Ki2*VXfcD^OW(;V zStg|1OqdZ$JkdaRzVg&?|16L%x?4z6dgQT%9+U}Z#JjG?(1|(=pNd3RWZZB0ypw>>fPd#NQT~f;@TSuJJS{J|GrD z0Q@dk;EeSNA4C)FjiP9Qo99@_g*;G%ag!ygVLn-~j3O?NC&T%Z8sFxFc%hmbyV;Km z3ovN9=_EVdF$m5AymhFOLx}hNjhbxc*}VYKfLfj>({R`|t+#75xPA!62hpO&NRGXP z(1HkCCsyR?M}GkUbxt9cZ{Ed?GDg#+ML4 zZQ;SNty=69-~rPl<$?7vTl2JLk7ayv1XBjPeQ04ro9q@X4k2=tDBGN6t-o}ic7QPE zVmu69B2g=nO7wZ^F%OnjHQ(~x<}^4JA-0Hz?^buQ93D2-nH#+^GjDtg>y*exGBNOe z-!p3Uz#o5hp(e-+;UW}Pzi*wkrN>>!Tlr+8Fms9l_HS?cA{L_y%j=|Ypl~ZFXIXML z@{6%6(B>uTBV^FXg4dp5O(-0-k4l|x%M=CWxRgyN;!*->3^)*VPLLCCD}BtoUD&%L z=o)NbUCwJ>kf}2>OHx@r#<6Z50XTNa(dB8~7tcM%k==jg9USAH*i@($F_aoO9ebN% zl0an8{;M>&%Q#mOqJNj+lsIYF)l8n>K#KK4;coLEpS>8|P*5KyZi;^RVWeav9I0yI{53m-{Fkjo&S2=Vng@BKNK8f-EGT8ypg+$xhMg~B@e)&6my%(1U$ zakou%*W3~ntLyY8bM{>x?e_3dA+siG7mwk_JFcZ}j%skC<2=Raptn*%ktuvICO=*0 zzUf!CLo=z&-kng!j*h3*{JcTmFyMta06QP1uQP21b@x~8#kPdWoewCkzLz*kFpI@>KxI4{K}*r}dR#+>=+MrPV(o%sGo-R1ARrL1vM1AvXbs zl6=ogChcgU0uOk`_JP68?L7TRk<0yJ9<%rIHdDKPQI4ENfysY^ro=MZBXe^^>qPE} z#X}x7#yG;j^MmaBf;hrx^K^+e$06}v8}jaPOp5*eU?yZ%rNDWcW}447mA86Gq-efH z=f6vxgS;7B{J<^J>u3Td9B?6};y8OQS8Z6iyfjx5!8EMME6WxhbLxZj08=lIBzCz% zg*}Fo-~4ON9J+3^Dvh($y(AytJ!DXQxJ?wa)cCJ{CmAo7ORwx%+o=vfh3 z(*0#vwzMJ>V8D0?Pk*mn!wIHuv{XmIy~k!E);IkkWeNqEBqyk!&f0@C>YEv>f$mSc zEt%SN2W4btF%cKfCiVkE3<-jMg|1FpL$SMXz@)^E(8s8NFUHvqd!&I~ypM_Yhw;~@ z7x(0q1m`I9&^y5o*y^cL&ebDgwF1I%7QD*{RKH$K_m|%zo9^ly6HHk+g-K64R8IF- z*XZ6&qI5{0!&s*1E+1rubt?ThMq~w(ReZ{Qs`-z!6opTs@6kac29QU?><%_Y8Vuwkhf!>zp4wZ=yeh;StEctA!h~qY*rJ*7&0?0 zZXj9|{SR`;RMO2b4HJ1KgJg(bV#Hj9y9_IRD)wk3V0KeM{;w7r&*vuC!YPMDRp7?2 z(EGD3w&YU$fU1;-SdQo+{bahdICXz6;vO3j@LJs1@+|*gM9u(MkDIOZKW4jIe#8eA z&nyRl5x9)zTyPRv%H*<}s@@c#N*-PxEwiW#gwtG*s&!}R?{7gP6&yhN+`rP1kYo=W zpM#3DSJ@D-Swo_uDv5fOkUQM6KmlBPmW*aA0pA89UmzWr(fy@0)vp za_#VOtojPJ+RdTmGis|0SF-TICaIranF(GtK-hm}3!F@JcN* z*w|$>4EZuj3^o5rB>-WrQm##u;G>985V13+uJMs!oWphE^~lwIjJ638t1F{oOwu@#|@YN*$%2NMRqZm&^b?SG}_#2$AM4+ z&xnO4$|~#Un+D7$gQMtG7<|;5%8=VPQp)n`3gxp0Ox_y(0aOSYwrqEnjJ;6+)L{ru z)?MmoZ8S7v*resB10?24C})_z^2G@0SeZ??ogil;!QokV@UvuTC`#^_!HeLA8z~H$ zCR#!lP1A)8f8&i~GtTG4MOMXft_`w35;&ao3y!D_0hZl3&R()C<1q@o>)DfPxestM zc(9j{p#&J%e(|veXUZ|^W=YWTSlUlZ!Kt!1f`{KmO~)c_yUp}ph3a_o1Bjp3pehm4 zqu--Y2Z7$IeV0_{YI2@1w}q~!oD-; z<*#J2d6mq^`3yquX?n_w4}!7i>vFbUt6po3nNR_4laBZHpgja>qj~mWmGP?k%}o9DqM6cQ zmt0=qpPy!C!dtu-V|GcXlYy9eGFAKx%VwpmZfvNcQj8=SIjyoac1~^$IYlJf1-#B$ zv4y81=v8y065w;B2^Qf$hzWe8b5%L4XDlYrk%_E@z`4IssZCGaDf#<5?o*}<){=7m z*AY2B!qA%Zd)E~@s&F4wVn&6hvp|XdNA!9k-%6B3P2&^9CfEAB-RiWRnGI1#f*;X# zasy(c?%WGDkse&=vOr`j(DnHA=UNqpH7H$!xPvV95MfDO zp*jw<Ez`nAs zQ8jd1BQPYDl?$bkEH8~WO4gTLTBsB(b>%$n`TE7cv?2wq=!}=V(Y7phAw&t6;b&UL z@f%LQ*ym3~)4Xwx0O#vqCREt)B(b+U8S|c4ycR?~LT!vN3tLlVxO6@oQi9;ex}^&G zea@x9SxZ=4oQ8Oho?R{tS0cV&hdy*lz(B~;eMC5=}1!%OcT@%Blz7Sdp1O7)Ua ztWL?YT!2+Uv?Eum@o}(Wnw5t-N5OSKi;OW^I9!N0l%3_QEqv=eqG~scjVnnyEFqTD za;xu_f)>8UONPSeZCv*$nBn8Xf$N1763I0tZoAbA6g}j+;V6}*Pe=Ib14PXufEjD0 zO2wuth@z5nH=^XTs@~zHc@4F)>P}D$U?dN8v?&Bv zAD^)_GDH&B*yUq6t*MI`o*a>Eu<|hs3VA=TS{ATby`MQSCk(7_zPu$ltR2@ptF?ci)6?Y99kE!o$-$}ln^X1{+?Yv zPyQUs(?5e2i0cVhG-dKvj1oK{ef6S7t_@Fh=tA9kJ*G^Xb3`+o=FCXVGY65+2cV4Z zBA9E3oKq}dq*$BgMhO&gF?(rMs7){BkP2qZWr3=~M zfpv042I2hhY*#%ABLe}oEGk6!+h!>qyfSVZo9(Wq$K&u@Nhjk}g+ro@G~_HTzN#L% zE=Ors{7=(zQ-0nq0U(-G3J^d%Tsmv$q)KYYkd2sefsS z((+#RI|9gL*;h;@2@*gV!rqrX3bn21;LqA#*CxQEr;0WEj zptKZ0loftzlN5FTsE-=tDJR*Fjz6 z;@yR#I><0E6>mbGlTvsR{F;iBFq8iwtdRa}3Ql;hR^gkCf--$5ucO9>a%FR5oQ69*p>30tU7I{cr)P5AdTb=YI-R9F z$bVN2KI*pd^4^l?qr_smtfR+-8UqFbl$$IF7vSOg6#v9Gpjq5BJeB}HlG4XM{h&e} z0#~G-gxy=WdVgkxB#Qaf& z3mW7oLCyxbg|Ar79%|`|FJ}UJ-%BDqw4C=n5sgxa-IU@Y<^JFipHF1Mp>mUcM`EzH z{qVgaPF&xn%WcY%$I!VAz4SkRiQ;D*Tjn#`(o%KzWsMT6Q5VdrKuWH}8*0lh`Oy?8> zuIF7RQC=D16B-kJT_~&9i`0u@pjR`War;@ETej(z-_pwIYz=-Dj@OGwDweC$dz?-2 zn5>lyE^23+i|d08H}M^WKcI?|FLnxs;fu{e3E|puxV_lU`5=O)G{5ejM^W_ zS*-GM0)!tHcTTSlmXzI)xejGmZwKB{D0Baty6b3lnk$t~t^y&Br~Lq!thNL05G8gC zV^oK^diM>$3ZO%u?K15VK1L7Jx$F!a(9!yZ767nnWssd?a$zXR(>gGJl}7j2n-eK7 z4q}49Jah<-?%48#p|ltAC?E%e{pU}p_J=1DwGA(~{g}hyjiULO+Eeq{SYZrf1Va!H z$lfv<)A)nN#btmymE#eQ=p5H;q)0{000vlt`C$jm=y*XMP&cFu)z>`L$W|KWz(h*3 zKagLZ!fJ6>WTd{MOm|U(F+qsTleDBxFa0LveMPy7nsoZt@r#?r)vf1MG6(+ zP1-DVTf&|8$0AHY^c|6oC~TGq`c3=;XeG_oOP~z-7MJw3{y82X(}<-KS)o@4%qYIl zw>i7;PI#%)%fiAF!JB)qY@d}Ah>>1=1A5$jfeU`}t!<#$R2%2q>xw1p z^H79JuCwP3V^L4L9JNDJq0QP4~Sa$cA^+tWst&n>eK0zVib%~?wQAnB$ zA)1q^rjLz?+6#I_3QkhcD*Q+h%Lh0piu%@)VP}naN=CW|kAk*3$Ro9F%T=maxA#lB z^5el-CmsGAnFVoV$R6?^!;f+Gf&KJrC(OZHI~{$<8(GCAQStB^NuR7Z$T`)xa(`4d z$MK3ilKFK?|92`ef~lkYVVf^PfdcU_hX>94zy?}|KQfZxIkzJSQm)f#c5kxj9MtJI zrKI(S!(G#=Ke$1%vI!MgUrW3~*X_N?sjdVpNO8nkJu6V`5QUrVFYbL&OjLp|}ARK+?MFi3xW{6jY-#9J7dK%FLMU707yi zJ4KDHcST&*Jvm0qa=1y9fcwQch79THF$Gb=hvT`QP>yHR3X>hy>wdkfTCDC~uP^o& z$!a=;Dj1X14%lpFJGj!NR`+hrV+g7soF|-k#mtsVUepvph;m*gUJPk|6q=l(M8DL_ zW~Nk@8O)r6l;t?bcF?di?$`HPb#X~_fEFC4Rpvgn;x+YNP7{SUwm5}8;e#o;AI@AOX23(cXfL($ZhPZ$V#)D4u$62xD_cIKuF=N|$suD^+qg5afE z1eOB)XhAu2iFOXhukrpo*16BCPh2xH<|)M?%d*c0-aRSrfDG$V3A8MqBv)rx+Bvm4 z5#^m!cvc2%Lp3N*uI+d%VSEv&;GzI_$#w{o#$YmL+qr*H%KgNY7RIXI{Alkq4XYUy zw|xSK3n*!qnwQE$sPh1ELf+iyfE#(X0BL4JQLiK&(ccb4rgX$=+?5vSab2_q+A>o0 zlf0>?74A($1unAU;#G^9#XssBSl>`?dswv_X|KbID=vCCP9!7q z*bO3ReSHIOGGdd@e!k!k!ysLcFu#7^j-+mI`mMfvtBQX8BMP;$OSN)mW9HdhyO$8! z0gyW>qcx0651YDSbHM&l4k2P(EJDNS?1Yex;f@5nIN6RcH#@(ZLK7{*pg82o(t zm&FjfMMcydXYy?$P@?mKm=kE3?o&1_OKkf803fCmJu5F`&mf-T^u=W8yXN znVoz0sYfIUj`1iL5ORZyU3J$>O3WiwNY=`UN?eq-LjCaRS3+65Rmyo9}0fU$Ox| zMs(+_X7OWNq=W@%hKeLcs0iYwP&`xrhOh92V|ETF(E)Kr-!(VrDKCvPEH*tQm{I6? z9&j$jnkPET+?*kj&imMR+mCdZoWLUiJZC8mZ58`82LG&oeP|voKS|`5F3k+4BAqJT zqN0oceDnAS7TYi4G17LM@NxR5D%J>r7eRu~c9w|C#}a!wk+QLBF0wXmN|3=95w5dg zUfL)W*+I_hRk-NaA>q772{7ewxA~z>&Y{J<%_SA1)oA8=h@_$}8NhN-;+cI6$^}>}=2_cw~lc zZDw((8&pVUnimC}K?&AS4!T-WS+9Q>tWAd(3_3SRS5+q^7)? zWA%UFLi?{HF55*WxshymOh84z@xHE!)%^9jFoBR}L(G55YC5)G3gv+)@c*vZNBo4B zq{N>hssa0yHb|gzJ zOe(UTMJG(Lg*6)@z2g^|x$$(ZbEA}JqUXrmcOxxzTUjVegY#E4c0xwl+Sdm`XVWe+ zz(`%Jk3N-PhtVCad8hyo(*kAz^P%~WKpN_I+|9EBiE`x#2ZWSz&U1gH zYc^km0!d#1&13p885Vxp_Q&LKo_qg|-Y_%HV9z;i(fK}Ww&Gf`!3bsegn;D0KZu(H zRj??l%FR$?srT(41MFU1nRPoPOn-_U8rFbOhlnuR%52u%&^-pCHfGM5SVCq zi@j;7M4M!d$ilzSBcg^($HZT^DE(W$O9gsIj=v8%TGmFaO8K2k&S@g@u4`?)lhP%D z^jcb(PAGrbo>=MgUQFbaTc}aMJp6HxAh|Gi*Tfr9r}Ti?rc-eymbN^hF7ZQ3#leY~ z5-~p2>aqxD;PDUIMBy*+w!I!DHl~f_UMJ(4q+F=+oeNJQ7Fhh6Jv#DsXBa?XYAJ@Y z=j+zIHd|8Y3GKYIda7a}88O^)azY0ToW&>G%-8XiVmAQ6a{Rb@XPhS1d(g|F4k=g0 z6AofTo9T|S(!((z)KdOCc?(lno|PXZ5*=`cguHp@Q!A$qyZ_KQPPymTEIvo{T*FeG z$st5?;7cfX{zE&mxUf6Sn1EBq{BE!gy|&X{k&WLBGzU2LidIkI?aRA^!Dhsqc=A7q zC{O}zP+vuy&~&5fEdBDvE@wf}Z=pxXn@}^if#9hBC3||@yle|-^1*AOO=>MhNhaFv zXyZuoD8ql5g{*8@EOxB_iXeQZ6~@ufcE^wItq<>0f*& z-&!mD4*B^E`XovX8w)6($g`N2yIA$^iWM`Bt3bc!#JC!{rZ8UM%5%Fxfls0$G0 ze~7(&og|0>N-6Q2QR@J_&W8Es%RPZU;fU`}?Y7gy^5u77o7KK=E^JnIkei17|VKk&POIxg+GUvI~ zxLD4)Cd?eka4?13uLXGn!5QMi^EWP1oZND74-<`hojSZS>m#6FEoz6`Nd=BApPwK)7~*G)_gQg{mEh31=b%)1~^yRZjI;ZNY3$hahPj&;Fd8g=IjD! zLWUdTk5ASYR&Ulwv=y$>hpe7Dss)y~y#X1hAGz!B3U@kUJoop{9iLz}3yZxl`0 zvI`J<20f7K!D-rOHM-EacEfp`AVcxzrI+UZ8Me>WLlK8n~Qq zb^M+WV1qhGqm>m)!^ZDT!$OwcZ}l8tavk{l`eOahhK$z#VPP~$921=TTaT>Fx^8?J zk9HAHS3ZgZ_=e3L!A6P6_$QvI6rs#dpZd6WP_*2JDIc5%1B6;X#q9Trt}k<{ zLn%knVM~22$A$BfK3AwW5kux&o0AqEi%{jqX+oQ_nn3-+ul4R6*%KI+e_a~uwjc>71P04!9IZWTu38kxZM=nn*MJYtXS;qqzx^muHQ|@z;evf#{ zWMQcV+eSRlzJeNVENMI1A3Zc6&@*U+{_Wipy%_q+HAwOT&>e|R7A6p8-%_VAITjE7y?%wtFRImI}0m0&t)MQH&W0pxmrw-8If~*)33ZJI$OG~U&GI0v5Vm$XXge)4cp!2T zQ2b%IoWbbV_3A!3Xm0qMd<-?r1~bjR(B$2mxO}9d63LjMav!UTaU()*7lVNv(emg> z74-huC~|dwL5`fID>b%|p`V>&y#Ub#t&{{%i|_(8gFxfr<=dIqRrO+X;bsc&9yj*SrQcCSdHFc%%B+Rx zbXXTgog=T7zQDsE)k%f`MzXP&Z$>+F)>VAwIVWlJb71At^{az@9gl0)ngWY2@thUV z048$!41uwULj_AYTAhQcIKslHFT>;w+LXR5*#UbPuah10|FR@_6~8P+7tVDETCYAQ zccHg12Kdk|Y>c1wqro0m?~wB8A%YKm9LVb**UxK)EOvgxi#CMDr4PCQS9<{;kMRT+ zoDRQc3JWLK-nMfSzbRXrngNv<+^PWoKLEg(sg=@Dk9GJ0cQOlFUdxt|$rNeoS zmLWbTpi$;bOzXzWUV}hI&XW|wslU^j;VlC{pL*aOjUcEBf)8OJ^;J^eOo|RBDpB`= zfp>U8Mt1pshQ^6Uj$(U^2>ZThv{>DIQ6w@05dV&`hiO&QCtkGgxO~h6Gqb(Hs{YtQ zdf2k=L~Zn!%{5KHfPC_Xp|UybQ%GoJ)~6{*2HiHBHQmcS-{r7|bADe+-J|;zfXg|T7Y_#sd4FqImQGK4g!Edny?*Z`QzmD{7hg2lhknw&4|%J( zrZ2CyDg3#@^s^na4MG*v^2OVr~Yh6SU5B z<07~|STd7pGMm%*p*9E23_58-?Ee&or)q2hz2g*C&yy^d!B_Ih=xAT^pQ&o@6*}PH zxa8$CqfEMeU9q*jFRr3EX|OZ&)Zs^-t}G^FUQ`wRd%^sUyLAvXE=yV=s%R2N6n;WJ zXk`IJD~8+g$3_MKvk_Q^%DD^a1{xIIjD`y5YD|wjcNQjQ#H+y%A(~lJR>S7xEgl ztg;^1GPG3&Yz4`5#tQ22bHDe0Cv2O6hK;T0%IC)hX$s3kLs#lUXpr*Gy9-btBq0_r zBq+i}9rF@8sk|;u4l`4T5B*bvp>+ep=tH0NXFV69PmC>iNG*1|s##s7E`JG|#NAIU zF(R8qMEG7uwQ$1<4URa?FVNBDSQ}^i99t>j*N)4gw}}avXmmDqXA~--tnWY{?APOp zJw_L?VSRH#(YKi($QJ3oZg$Tb>F+c7%vMTfPDeM>#)ztj>>?W(zhM29P1NFs-rTsq zdEWK2S`5Vf!*AVP7+9Y=BiC9R6ZJ>A81HfTEcIGFaDD}g-DhuQ88~lw z(h7#4P(n(m3xn8Lqs!2jZ}S*KzQh(!P^b9fl(4y^HP}MPak6Akbq+l9KJxSIg7#Ck zN|ha(v%J2kcjI%HN*5q%k)tw0-6A5j6HOm5-ofvB{y<&SsPYkP371_vTc?z`FPXSX zWvmH|tg_sAVP6)bjtJtPmL^NVIZAj*^aoQfff0lQ!4YSKD~h_J*Lz72e`m+Tjc_ja zNgR_aOAiFpz9Uj&dkOR$foRJ%)^ZLoTgpo9r?2+PDxgRm4!1#GJ}h6rCcGY&>?*_Xs;dW}H*T z9NtGuXf?3qr_q8q8iPOFw2o|wl`5xSdvIH|G*Y}$dVFK{AkHc>2AfoBQq~} zx0L@47d0g%}YLgPNIpj_XSCy+b%X{Bz z5wCullZ|}TJ+=~M5a7U<#H0Hs37|!emp5&t{4v%g9adzEU+hnWQ+A*DP+=Lh;CGYX zS@FJTboSQ_IX>-oxE_P3blt(-4hr6Qigrb*jf-t1<~ z7|X`otn2n)@Wj3jf1>pQn7Ec5d<>Bz=NpHB#3kxkX)*5~2k7BU@bDC$p^KxIEXtow4o4?x${m<7*rsg<4I+h zFFD=nHj*0!^DkJakZ z86hv8vi+MgwrAmiW}4{p%OTOm8&}RrZCLF0nIxyv#)lfCx~?9=1{*A=qrleYjVlbU z*YdN+t+4*zuPcqVRsLvz5 z-ytM7^ct1>Ny`&!4VyYUuU7S$nz(O{RMhcNUSOcFM1pUcB=fz*sHM!7C<~U(PV})& z9l76J>|0oG;L^hG$w-*-;jf!l@N=4pTK#3foahX021*1!64JLP{OSA4_bqmG+SX|C z9|FO@3sfD&UUbrv=`0?1>69+LtzR;g+09<;$6b#;jpAvzM>>))SnitO9q)(H=YlMD zA7!?h5mo9w_p*v-xl_~a$OGzCRfEuBLOPmLG?s)VuLFD?j!3WiPbi~(wP@oxyF8g`P-%@}a3S^DvgT>a{ z3;o>Y<)&vYb61?YRIe`e*dSk4ZH9&wdE4UFu>;}T8C1N$H@iYt{U|0Ye zQUyDb^eO)*37Q2dE*lsjl66$>;ZbsN13K^8x*hT^d+2JoDc^Cwb@WWTQ>xgE)IX1m z5V~TR&)QXqSEwv0A8prs)lX)FRcOmtsCY>NHA3uK7e!3r{Q6(X%IOlCzKB}$U)J+2 zvVdg$D)3&L9ws*yYDrfPNMm3e{Z6BU{P2|~!3)|ox{fOY;&v}Xqik12E*6|-&OyEg zH4tHjpm4^H>0=-+%FKXW$7*Y=jPy@Vk-0kcwK#Kd|E`M4TjrAWuNcm|<;DO52=t=$ozDR*>OHHF1-J z6wNKBjP?7val&w+e(w zkuw91=omK7;;Bf0;bli8_kq)d+4lrNLMy1@O?TBEKMmoJmPy_A3bG|XZ{5f|t=B(s z*qpbLKXu~0f;Z78-@s};*f%4pWoGp$*#E_1mp z*FuJ`|DH4n(ey#Nu|$O1J8az75lyo`a{5LNYWR9O()tZlRMB)5PaX{aq&ajLoeo+V zY_+W$;!=9}x*kcKjbeZgasx#2Aj69?0;&?-kSSsDmE3;2G4P*5&rfDA_LPpc>2ki7 zC%kG70{gTvbV1|_1;rq*x#Ea2LsKRl4Ih-v5&<=KB1#^%%moNavJnV~cy%|B-g=M# zOwgO{B{X~gVZvO+VzM?h)QUqIP_KOekUrb@apz}<-+ zQaa`fG^o^~_w0YfgLmw*a8g>U?-hI@Bt-9P=zc37^}~hvDJVC!lk4qwpekC6>|?_c z3-7ViY34Cj0e2l1ATi-2L$u2a76Fx_^mG{C+T2cv$x<|G-=f4r;Zj4R@|F=g`lYoI=UWiJTDFTzz`%uPp!)ko98$D>l>D!;K_OyXv`L&CpU zr%d;dj=75*U}!J7YfvLMrQtu&1!P}~s9b+Ks#`gyOESARp%nv5NbqZ58dgS2A+Os@ zfJ+QCZWS2CVmVkBh;J2Ulc%Y@yOgyXPzP#Z-3ES5JtMoP2j0PNHGt|dS1by2 z+4W6$;AiuktYGy0hy>tr6s8_c_-Mnh0x`Vam@htq(hPh1v3EcK)d@!oZ>@n924FKY zqkgQw65SzH2>};GkVN4O{J{m%Ts4Kv)>g-~Y~1NM5>c9~>yBu6W=PYDN{0%^d&+{T zA1(q|#=mFZ>}jiM&q$Bw=W{_(nc=>`r6#dv;q9Gf=oaBD=bmIa{5})3^RG*nY zSr!NV+8kZp3;K1kUE#;{d*8a@@IY4GR5>G~+)~^}b*Z47JdCQ z)F+mC!)W5LSYsJVcbR5TxjC+0tJJ2cx@mi!;V;{1c-R6eC-9xiXbOzT3`t_-MtQt=RNvW#9PCXwHDGFNaaN?TyezKvE@@_=%RQK?TI9B!@l1-+;>0Z&pGGAnC>1T|sYbb95X1fm?v1)U$ z_YY$I_UbkY!DDmOW-Y9qgQ_hzY1H|(E-Zm2g^kVDnl5Q}9=Kw;6Kj+atuBMsvyja|v zGbfuxo%G?56tA9)jHktlvJ@;?qj7W^YJdd$BsS&f?#Tk%=H1N03sIz(Lx#g5?#N04 z^5eERx2pPSAS-eRF$zSUiLy@Ua>`?_0r|o;`GB#yw%z<)+eT{)wEfHiaNX_Mph3Z? zjl0{d)V7x1za#J&QwcCr!o0!mfvwLb`e6Ofq^p-6k%#GhYXgaD*+Z7HhwIEuqo36Z zkk6{2w(;qe-mWWVP)$tiC7t&`n=BTj>$`Hrk4{cSLnV3ca=2i*CC~LhG+huF<5WL# zWN_zEQ6NS_rlFPi(r#d{49!sFoVsr%ov=LjkTr0S_lO1ll9V#6oHCs)7-0@6##pGj zJkYDzU9Jq-eiax)Ry3OK#|qNi>|TIkDTIzp-A{AXlS~sOz|MC3{BkNXWyBHKEi+_0 z`40dtXVFHxAs1=Y7eDVVI&D4>Z+T=|LFv(?vmVBA6^=;%Mbm;@Pt?Ek4QbIh8LoV$LksO znxn!^&+u#G&dpEVne&qh#D@0nejFccgc2Yc@AwTCan$Z(SE;RG%PJ%Aib~yf#A!YR z;S>LZZH1{`i9%t_m`lzUZE6#bLHKhkd9ns~`~7x(C$$MRm$p^oXZ_qk#L(3(x9!+5 zkmJQHPl-b7Ik!`PP-EQKq+<`#J@7Mu#;BpjX7CCDUhpClVob($R@$|wV^=uN3sM_% zn~-Fu3X=*ESkt22;ifS-_GudL{e(*oiKUw0d~+o}Rx)pd!lq&e_-Lj$b!v~l;`geVF^B?PBX(QM|%?+<}$uzCm(a7gZrT3$KV zy=^OR$2a|qP$qwnA53=X{8C}$(9xUiinRn$gtQJe$T;&x`V4pX6Zid8GAXj%031hO z-s;<>hE8u3MoS5Ox(sFor{`}(f zoDHo%48^}@7lz`nEc~^)iDkk7H;W`kJcs5Y-85Vj2Psw7He{7izgZvaqC+q1;~wnv z*eOmpsv-w^$ubdDV2XE(Bq+9Dgw$s9UxYOORKZV>ciAZ*Z9PoYuQf!qZj*l~ehYUC zu&mDQxTT-^G$Qf;?D8FStaC3Kb1C3J(WnThJ<^q{p$%2=BNVnN`jHzV{LEM&%Hg_VQs@ARa5dVOrma7EMBi*t&yPAhGm8f;OeR6=_IrFe%>Mw=(S7ahU zHRLw@3Z>7E`QZh6OB$I&B!-1Vj$`^G3akdyAnO2`!+W8!McJLgtXebIFin3RtwE55`ZyaLW)Gly*-+CfEfW4T9OfaR3ge=Fi?l`{! zjnZXUG8bjZ;eRluPcdV>iNRe0b5dpe1}Tl84Z8AVS@ZFxi*aO^ehwRpW7|h6PR@-E z%(G{uuvk$R%~4l>TmWWmTuoRV)e7L5ORxDh0Pn@5h@&DOl(&iX_2r}PAAZLDrt$;v z@EQUsuJ@oGiE{74LXE>5tdNt0J7{7&ww*6|mq=cDppDL>jJz`4RxVhd2kNuZFyO7f z`YQ9o9>F;_^i16P1?J6{F(SulNP8pl0pr}Hdx>?&DLm2+Z7R_pdhcRRTY%1-&}~_r z{{O2e5Q^DFcJLtdjs-wn;wDIZ8bn`uP*pQ5`BE@YTG4WZXhRIOf$4OI&RrAWUMZQX z&G#ULpOf_#X<#7T0xSF=x?2x~I3TA=D!%6t#km4Dtf0W+-42Vv&{uWEJ?lJBEYrF4 z_cgJ`LUjZ1l(Uh}cGF5hK!Yh+0*^(SiC6b;I2eoWV+rOh%#nj%-_f>MGloEhowB zpiJ142f|w<>W~}9zf(+y%G4Msb0+)cVyLnz%{7k}BoY0FzEyu=#ft&w z>xDyD6amLL#i-#Ir9L5Yeps~|Rx68pCmFVH!_+||;1}^1s)`lmYoUO^i}Vt${%j64 zjaG*z;A7#N=ePBNIeC;BrHyQMczMDV-)ROj+oVT_*V!7khzsHw@SB<>K!G0Yaf9I~ zyIkghuQew#4&AZc>ZE*Z%oJ(NO;6lLkba#T1i7U$s_W@uC2r!0%SC z?sVG^vO3&GKI#Wz6q$o~8=|_~r%%Rb%f@%t?asLT?NQRv>X&sc0!~FVQWGA&11(5l?Fyx8jtPfQ-Mv;TL^r&61)5;Bz&`>U5WJ3 z3l0=xD9%tuf3XxMFvE&xax2C5?(gHmchfqQ2uiqUY!Mm}vIw5JgZ}Nk)GM~ zM|UBY;rMD~?E})MYGy ziqqDKfOPIUi>7>kx^FwKc`nDl5W4olN`tJ6wNB>Yv*r^YR*;z5gNvo`7;UC+9I*G{ zBPp(_Y16@$u>jtGQ`0<7<;WWNqU!^x{R{1;cVd?}W;?eaFkdaO-^l}^gGa0Q)K;IRl1ul>jfIEis2Y2ICmBDaaE?Q`r*{4cn?d%e{Zm!ysX{jy!1!`)sph!<=6VKsPLk+2Zh*!j?JbwTD zvERC{n0ul@oNAg?8XO9ef5Jo6j|Cu`%va3^;Z;bpbiC}{h;{u;hYml*%_nMivOhoe zDaZs7r-7DdjlviMLpMZXpSSptZl$>BXa41gMPZ5pS~gS+17i)V3a6qY4s^!V zzKI|#)7sftv~%7+aDaSK#eTwL%yc@-NkKvwEjiziD_d#$Ze)7pe}9oR*p}dhnl;KH zt*WMp-xVrD4RO)J9@vp7wCsUYM&P>ExG8TF=D1B~nv~qa1iu$X^4D&XfB=~#Ay;8` zMXX%DLAY&^B~8yjx$%l9ovzh2Y?PRQu@o-fKtaHb@t@-GU6i+bl5EeSq<5!^YPTW} zh*e{GK4p*UOL~x?kPtCy#MR@yt-m+AP{Th-qKyQ>$FwRNP{ArOsIH-XW#~UjD}(W> zynX@artey7X0WU<*^hn?6f3lC=wjxa{&2Y$<*6HzRVmWp1sb-^=D5&4Xv@Iv7pV&? zP?oG5TZa2vLr#rHelkkIG9M6Yd{8$m^Z5=gF)%cr6D~|)*fmqwO4u2Lr?dD(@Cu4Ag#Wp zsJQUhxWb4>afk9n$hIn|w6oYcXiSJ(uiY$FFUOKVBD&u>&#cV~l3QwY5 zdF>LC{Ok}0)~$m^jA+%8C5vit0J6nPs8*CVQ)@sgqaZy6Xx*pJilJ-{8#*|lQ`=o~ z3x^*flUw`W8a)h`51vGxN5dXJR580Q_hrTM=eec4|0s@JJ- zJ(5V261?5JtGgDsd0`WA(&Dl9mxAptV*y5Ww z7OuqG`Q!g&xrQQgEEe~aP`t+#_@=WcY{a9epcuwes<)u*?zKx^&a=seZXnr-8}!QB ziNAe|3#aXRM$Eg0;h>MbAyf7c^{ZmixZFF(}c9tLT#gF7M+iHg?KrTA@QjVH-^n_(krX zSH%@H30N)u;a8tA$q2O3<2>f{c2)C+h|vlW1(}%+7meV%1>`OL2GF0q*ztE$o>l5H zokpOqayAbBBPFp#xIR_~0uxvNTGGdAH^E#0NT+gmxf^5|}1~|+fw&)JxN^Di%ArC>$-a?VT|{Chq^8mi-Vfm!uv!D*Y>xzLd7|+EvZzDEvHoE4 z6rQGIOfx6gOh-MV9q3r}%V-a)R$6=+&3|EJ4`FBti5XN#6Yd zG6%4h*y=<<_$&IQM#79pXcZoKw#D0s+nzwRGw=;yyOzw9J!!6^GQK`sxetd}5eK|5 z2>~yCX#mHf%KZ(m{wK#4{d5J6n`wZ>#XlpozgI`~xG3?kQs2q76shocrOzj?k1Nu( z!k)~hFI^h@uQrA}-7!pyI^)}kq6nN%ta4<}{*u*ngEY8Fo@M0x!Z81gSIj#|%eBdwqOUBd9^ zG9Nf1pdBck=NwKL_t=a9y4|f z;&B?F_(-1yudDgE8dvjzh5eR&t67U?F=`&LJX3EfW1Uyoo@%(I!SV1(Q7A0`0-^m0 zg#ShN!PU~<=;ps`TcUx0nEd*DhR6;kKa)g~qeVh2J)4~(F}P(w34YikmzYXQwAeOSOD`%KhpFe{RNtt`2fA!wvi_*R-6uEDrk!c))wuZGew5@ zQvHP7&X6XQG{|QX;UH3RxjfVIK6C+RFhOS^JWbnJ??N@xynICN?{FNN z|6e_!AkeVaVS~alpgq(&Y3Q7;*lZ5Hfr2cB6SSNlE*v*Vo0i+Q#qsJ@%wNp@hL2~V zn=egGra{4H{T&ST2*hhq22+FL4?mAA(d|f&^EMIaeBd5e|3X}0;#*H|E z^O{Uy?frL=OCa{2`N_I{S?743jCH=)#RN?G%5ST^)maA&PD0?>h?N45ldO|nE9@XvUuYz?JAMg&IUzW>H_Su06fq9AnSx@l-2G|pFDiJdJNW_| zOeE*)X{hHK`XS2C#KqNMco}4v{F-Y4y)#}R20CUw<50!-bjzZ_y(Ld3 z1$+8`z}aum$a)`9R*zTVpOHGJ1|A1F3yg68S{ioK+65v<1j{;bL@G+EHd#nOWOz2L z@BHrNJJ9=30F@k;V!)j*qL#oj-fPr@efc_=Z= zP(+zsbg^FLvWDe(6AhKIgLIfS$tMdYb2Se0YBQKyk+Qp~Z6i>3mT^vN> zzB6cpR%7jRROfCi;%YiIFM(_sX~rFqsT3>rDiDpqOS+1Og?5vK3$7boc6%6}zuTxL z#`p%OTX>;aao%)=i{c05a|867wg7>etZK6!KVx&bIdO&8IdIPIQplj?ZuupksIA8zed||uE(tj1GM$qw}*2q0@CJD#`%3#M-Y*3q;EBgPDiL^|r>fTRQ;UDi!*k zH4>e+1Ln#O7f1m;(Xx%&pMpcXuV!V6%Eckn+dL8QvVhC#=78op61&b_a7NIMesYHd zYf<{q`lg>llAP#v*2Vw+9zc@k3~+EhUX5c0PLFmJ(<57qDRG(!Liu7w1}a3}XOU!q zJNjs|_-U@IcrnA#KKJ{~Y}7!~VlB_dBT`PqA=1G%GU2c%>7WP-Yc`rZ90}($)I)M3 zwRd&nARaE;$|r`=MO83NM=<@jk~M{yW#?|8!}65gR%K;c>&?kI0UeQhOIYf2@!Zmy z59jL-haZWx;<<;psh&K^OMJC9KAupoAbY2rQ0HTbId*yf?SJn5VCM4><~c_)PuJ$`^a50sW&E! zvL#3Pp;Ds;WMPivedVQ}TAM^ST^U3pZXvF4msm{vIfomL+t2jR2&2Rvgret|T#{QR zwww-P|BHOUv|c*{C#EBmIa&ismzjH!RalXvFT`V`aQjx?SFxDkURa%$=Voa~m=~j= z2FXfmAUix?E@75#NW<;0wFo=FUF>#ucjD5cRlTVo(h%9px#Kjk!=^q*2H;CLM{hgp zi^~Svg59!NK0;-v;l2#iQZln$M$qcDqxMnvx~Mc!wr5EXICwyw_jjE`XKRtAV#%_~ zK*vIIWvPAzkU+TIA5ECW0`>jKZw|Y_9REMNT>p*pdl5`x`}V?6Qax?tqr{u7tOu>j z&O(kRzyAxG5=Hfy-@ViplLnT@VKU5d*hqx{i!1FS$+sJMW$&mxejNJ z>n#PbJhG3q$AbMj1$+uBty46qpLi=#!&9y-mpa)JZ!=C${(IMo`X-?CB9p_azqv?hRlK-!`3o;$c%<4IDxFrG z8i5M@Ru(a{9pa94mi(Kp(h>jLD0Zum|2)qIAz*@bR*FDHbBdFs?hV#4Y!Gz?Vc|YG z!PW;#b?_l~NJ16Z8+v1*j2Gol&aTgvdn zCDLgLhq`v33V+#Nhcshi8bPU8&1AN#9P^b2r(Ty*2(rs|X=SG$}!2&g4as(;Me~)(KL97i`aS){e+% z_UJ1+N=;*RDhCN6gi@+)BgY@oX^;4@`mkfrqV&_1y{?>f^A5>Gr*?^SDj&~hrh)sg zSp7k%t>M_9OU~m1LDx-Br>8dWnUfHL+mDDTnHm6ZleB$!$Fb2V@|{#)Q+! zWWDdlqIl|(DGC)>|aEPylfutsF@Wgu)C_4)!a*g}TW2a3;L!d|@04&}J-`*48` zI?+2$ssKRnp&0x1NPsMWhqOFp9{%<+EA*O9n&gZeW`NjfKLM<6l&(}HjbB)IY!aEh z`M~I;I|ES@Q2Q~x;f~7*(C~6wyt?RB8#-H*gkps-I@)|})-`mmXG%9 zFlWfci^sHRM3&`G%fDu zC7%vGC)mpkravW}lfGUHCKGyNL_iktOFJntf5i{&$DUPH2#~B6wuI9Q!D*) zJtDbPdG>M9S(4UlpUdshl)ZVxeXx%TgPre z#);Dc?83f)<&$h$`gwzmD>;yR;!F;es);qF>y*2>cZ`Wh)?yO?k46gCHTUR3e{*(D zN|*3Utj)9IU)c2$8SQkUSsRJPrToGg;mQczsAci{(Vr6$^K=7I*tjxpq?&ejYNz%+ z-WpgaWYeK|#sVgxty8?`LMcdW4)Rb>J1h40+9-m9ro)34TMx*w+scik>e zlD?AO>?mY@>HgOJcEpoJvJ1jZ4FyX4WUPSRIJPp*eab&GFmY~OAo|i+PD8l+)krV7 z9f|8=f;7i90nCcI{e@YF)QPn$kh0SBW)#4{e%kdtjotLcxmc^G%@%!CI$kLjvWadI zE$?MS6;(j5M9{opy5fh!$kLSV{B_6rWZkok=b$!Sr$sh;_;b(=euNp%4+xkPXa^Ei z3Y(EE<;8Xbfa5E|0l0QrY4Rt3Q< zY=o2rO4=NZ)5hGbxq0RS?1l9Q>b|4W1fT`yDr3Bh$9O-frxZYJ5`dX1uGADFg+b2a zXW42_-l5ZClTC)G1=ZZBZZEzQG=9zRWTLp*BMb?g$iCi(ct!LXL!^&+OgYujX0@`R zr?GYT&KI}dI=Kp4E3H&-^?P6DAR$#U(IU#1PHmgnp%AI{WpAMiC|0}G{+$fehTp2qHyxPiGhjA!2JoN#^)?OI#IE(;SxILfKgp*((@Z zFljyTETMBFwGb|_lswWFv%(g^pzWf3O~#Bl0U^Gld!Wx*WP4#lCFm2SU`F;26R%Wqv{_nV^1_o$!!+pJl7^Srb z*0_Ebx~SER`E$C%X3CvTjb5!$spk=@3ggW5I#0zGOG(6C2n3dvPzc3jf?el|IEHz5 zzaI&_EOTGUcJ=+7(s*6OLqx1G)jaPQvRZ6ny-`xjF)m|HcST-0w%38&z%7**j1jYF zZaWB9k5n0D1aAfjnX>2?6Sn4Iu*%gJ$uG&f#E!O)Qf{k1B(l^?cC&MUyS4n)_;Qjl z8rs_o7?>JzJD5aH%Elr^uO15r_s7X9X4fZT;^H|?Bd;WA72S!{v z)o?5t>4a;u3WUfy-Y-GZ3?qyIrWaf@6#e70iXqH`E&Kadc~%18=j=H-#y_Kg5ASa5 z`+K-;?=_B9x#_!zPn|~^%=xv$wNC1sU3f1?w&SN0)!+&rH$e_Qg{>umGB#w_xj*VC zh0pb?v^iV2>^O+~RKg9GE8y(W9b->zIH*zH!pf;7NenseAcRla3m8hSQUxi=BXM+P|7n3}VyG`J4%j~hnf zU}zM)4;#Gy4sf%wa0Z(tKd&BZDc#boP0TA+kW|2+*JWx)=5I#94!~x>v15&4^Oebm z9orEnDjAr?>+UFzUd@zi6WGT~)pojw9}tpo!b|7Jo*9ZI*Wh z_z))Y9`;*ao*@S5?>*nDVHR+U4YHrqHZ3IE!%AqOR|< zcN_1kOT&uLez5J#LY+5~sssXP+KxIra2M)5Dac=ZaVa>-v4m5oi_*>!Ry+1TyzLVo zsF*Vqri9?J>EIDMiikbbOedt-X=Sx2&!CukW&$pw$BUOtAO}*zmlh4R-T}X^bu*=& zM4~MmQG!7MA)*e|eKDmmaYg(V4eQgG7#Zh&W`ez|EtL-*u2cc`>DePdwV1iV!~Y0)*qKZhnN4j~ zVos&=cqcQX!Kak6hZ_oB$|Bt&wE+MC?V6h zmlg|Z^{-$d-#TVNY5EfJDs7r^>l8@ZwP!54NR*Q#mLHL046d2AX$ za;?kbc{CHN%W2ovFYY&UbcR6Y5-tEZ|_Y_t|NhRL;LE=X6U_wbEziZG1K zUPfAze+=iPXr04%V{@4rorKm<$t@>)_GP98g@nD-V&YDr85!tO(`j90f<_(c-cv3Le&nEBD|W^^3Ag0u!EJ7>{1C3pb;KLEg7Z?Md6F1VT;iMEZ0m^j17 zrR<5y#4;!6L)J^>v>~U@c6^iGzKu6mtX{A*RW~Fw9|o+J-hM}HyF{yw(DDL@?zshZ z``y-fS)X@SXT5|=_3A#aM%F|Nn@F+bTb9+Z1a^QkFk^^hGOzr<%Jq?LEMqQ{A!yaS zO>##)P8#Fq#+K*tJ1Vt>)h^#UwT59+Yt=ZP49Zw@^tef$+LHzwwu=%1dN@dmN4~YnKqI4A{F&S?#w3Do z+FW#Yz?Vq(75Pim0Qi1!#@;NlvqWN@tjunY{ffTWYa#&zf^ke^HbMx>f@I4c!A2ur z`dbCLTZE^;g?%>hwA4lFo zKEBn{^%$J*@_o`x(3}2m4WE3YqTE&oDbdViewfS?A3P8b=D4y~D&&%wMV;RcSZmkS zV+G94*FYiuaMFX}+g~k4=$YxZj-3@_WJ_G+U6q_~asOm!;*F!B9G~uZ5EVZ0d&mzI zmO9tR)EdXElXxD|s_vYw;!LEp0{0Qgo01=cUueNhwN!Dd`D8c7U9!_N5ai`hnFcQC z>!vDk)2?_8=37Q6%u{6fCyw9yGTbKo(7j{~?2I}*if&6477$v%df5$DI9Hf>lPl_? z_J1ruY`r^jO@CAD#*axoam9?Q>A|&b8zF1*m4gj@{oqeBJAi@t3NI*c`vkVkVya@R z$Hw==z&gJ5oj6Ay4zLg5wSC086!FD4b*HUTDT%MUNNszDEnyo?)`vdY953XT^&cC< z6xHrRCKT-}hl-Wuqo>KU?a*TA%oB+BKC#GAc8gFcA^DWJW zh@_{{qgiRMIz7m$cqmqqnAfR{^3^PkbCnuGDh--+UHvuw?;!bYEbs_vY?;#B4wn$c zbIm(`?W;ICH0J)#23}ZxfSk_=B;Rv{!;99Ao#2zn3dKJw`_4%VrSCniG-+Yq2j&N` zRH&tIU10vmh(3U5N7D%Ha*lSAkFkn;%yUy1Q2T&k_QMJ5wR_Pj9>=h-cNuy~1y@O| z6re=3#mA!fp#_0|v{|;R3qW}$uzg%NZu;2kX{8>FjK> zgvw+yaW#GEp2C!?q(5mlvl=Zm%fEZo*@0Qkm@N72%i4-`$uSStdf(d3#!_f(ANvhL z6{d2St~sG9dZfZ(UDCqeeDS65A=l^z*80QHotlP~psP!9AAUO*1^$G#S=mO)Y~@#u z$7=GZLNrmN_py5178v|%idR1^M7NNz7Au&Ns)^8w=IlzUq*qb?pw5Jb0MD$2X#Vks zz2YSZZ%&`sgsr%2D=Jrpa&M8Gtq;xRCYuxJH!-`BIhx_>?eWRI~LkU8;6VHhh0C)8U;$mV*5=`W)$<6cXv82z_k;5U1TRRO)%n4smBl41GezM z34W58D%?7mEq~Zw8uN)fbd#v3!onMkr<~}|TdhSrHo3FmSEKFejaa#7$m?r7tg`Z; zeK~ulOTYAs3q4O8WIZf;JS;}UjME`QB2cG)*cup%9@@&Jpvt;4m+XD>YPg=1Sc-cl zbA*U!cKORk#s*)R+HQPwFG{TH*B|XUTk(1jlu-X-NI(vCwqyx2>i&N~Q>KLB%mK)x zi_SL_1#tm?1k+can(9a_6GrhnN!=tSdaM&3WLN`uUteIl3F;&$fFgqhY8Nb_vSV$N zax@<_qh{8&066Qc4@RHJqRi0hw46Z=#yRoBetGufNv8fBdz(Or=GfJeOu^V3Kk;RB zyVGaYLaS;@_O-(~J#5v9<%L>r8?=7``#>fg>(z}*Vn-H4%;*Gtrb@pjV?PhMl!bqv zJyO%N!UgreyNo0imcWa-2c6>jOAc=Uj?R@NgoeAE%OOR{ir@6)ltW;;tZ$9rKL5`Q z{$w-g=Ut_z2dkYmyvj^Zbw3TNEiTPN2c3rxUGLe~tlu_pZ(>~a{Qm@V=IV*Gwa*Q) zQnS#+;_wD1U0b?B^f*e}dFo(l=W%T^F)C>(!vAJbT!&oskJRArZh8uLW!8O*H+>$Y zvw~?i7H-qhZa?sglh@<|5F{3rtm*fBp*jig{)sEi(E6N%zGBbw3uA(xb=`7peu0b>dfk&LllkP7v9PhzxSF-|$51QD z!UyhwBm>x|bTI$(X^_tX2XsK#TZAxzSW&I*I+>@IPtuW1GJ%nLCDDjs+G9+;(9egZ zu~DL)ACrCH?dDq`dlt!S@V=a%#B^hCHt!vGU)`j-^!r2^OhES-4a>NqDRKsJvgj!f z>haUm4rbA&Ck&xem_3};iyrbDiUPRZ)q4V{VMG8OERqpd_6mFh0)x|jrs17jiP$5l ztx#5+&%{b-c%9bPG3l6uP7fR#Vus4!ZEVo-7Z zZAwz6bUNPF_(V>lRn{v=C9%;m58fr@l*gzeflu_8>%e6~Kc!Hwi<&p=Cf_q$2snvt zE(kVXyV3AxaCKnJvFU=B2JK`LlInup$L>cQ1Fpq1)if2aphL}7MB^B23o?hQ?734M zx3HCm(gF!pn??0SoP+Qb{>88)H7=qmJ-4A~Ri$>n8%a+2ABeClsfZ62Hq<;1f914V zR8M|L@9LHo1(7{0VvrXB%91n@hX+*oVDSzS=gf>byA#3+`qCq>o7BwXD+~uq4Jb8_ z7^yjiCerfj4^syNsaV{8(e7|)ZKh^*$m^F67$TJ%R{u;g6R?9=G{E5Su_C9lF(3nZ zGoE!Wb2={|9eS{|ETF6b+$cA7j>^Ocu3Gz}!t|uWiSYectElY61FKVOugaRtNl4s{ zM;qJ{31&-$KUG0{468Z8bR(qX#Of|SjXOPZ`F=6rezcZu<|s$0F5#7`U4jWvJvz~% zEYh2pXjG#MCh4L&x>tCzroN%Sek_ zw#hx)=Q_z459OH5u@&v+`ESX?y;q>@@Un)x|NA;=daLg*=|oB$erA5$MV(-0o!dco z-{^Uv?7`#o1%-QPWZ_z$BxxYMHUy^AnQu%)gL>E*nOCl|KiiAChRlk37et4sEB{vL z_KW&KNYTb*rX$+53(9aQdw{`AHrLFo*2sI)PENRuJyJCh%f2G!3gFUB>v??{82{8e zJ1R!wqyR_7Tp})YiKGangqZt_VK0@YtO!Oz0cYNhAFe)tNlJv9?@7c~&Vf%d$fA%2 z!<$Zz3Q0Cr(&JHs)qV&C`K?w~Hg$eGzBeABFIphX`^MzakQMR5O5EGnt&yta<6d6y zKKy9ZXiOAY4qT~h<7)Rq$KYa~!#6UFGcxsMuIx(0=zcQwSj zgX1FV;jIuxc9V4l#LmFa+KfZH(eze-itQRoMVE{tBv$l%0<2Q2ms@wd^WUKUG)7d2 z95r7Is%sHl+Mx6Z`@dxSHv~YRNesly*Tr4sAt6gUT0)! z#d=ZsO38Q-s}Ky=j7i}4IG78LQsjLQ4+1-ko{~YN5?h#lc$}b{rL3DC`A=GaV_gJQ z84m{6jm5++VvU`|T#bYFVhxt)T&IdUsgwJ}opfA!Uu%NoYrkYROXvp(2X}!}h)R>> zL(F>AfVS6+*Ksl_$+0B%lCVAzbLtL@W*aebE(;UfH#U~dUcn;nGilCGHnhPz38n|~ zI|&rCS4MP_o0D|Sq-WkZ!jROFVKOBm5^6DH(U92{dmqt<#C=m>O38B?5+?|fo4ePB zig)cdVsgB0eAoyLYrrA6jg%DMl#JzKdO!#-@D0tbE(aEioZ3Sf)kP5U5m@Z*5pB5L3yU-#@A3oliQek4>azmMsU>K{wWuuxOjf{VIS z)QBP|c}66Gz&k^#If(hu0clZDO6vxs0Hs8^y;gEH&$tOR8g~<8z*>vii3bFd zRBUpL^q91KUvMT4@x{IlQ6$+<&TvyBAfhx786<;WURJ_k?D@TZ%)Zax(wZh3l(|=l z_{P&YGzQRs^Mo&gDzyhOrxqno)YmL&;=j@xQWAA1QSbH7G=-HT+vA>LJ5 z^;wqAh^Zmoh9!fn=paXD1L631Lp=RMU*!FTUp{L>1D`iN!_kk1kz8`07gj}k)M3eW zRhn_&D}tf+ak2Za(OZo?{o=W z!)jbJI@}BLK_g+3z9>6{Z zQUFZe7V<-Jo8y{j#60B~^WOT{@Sqx=|0g66nOoGx;(zis`-)PUWBCFmM_$Fg>v?0YXTYh**m4)bEadhznc%SJ0 z_3LZS0bJKyrvHYBYy9I3EN|EHzSg-?MJw}4q>*#%?NO`!XZ9 zYpV|zV^*L2SOm_%mO2E+Ff({yHYK`n?rZV%{v|f-WgCw(x+JB+`|^`>9otFMlrL}r zIJVNhD9<3tbJmwpks2wKl`hK}jvk*h0}f)?u#EeKeExtL;MgW*h5?($E-tCsX_y^e zdsli22v}fe&7y5LCU<3-Y0S`)-OY)wJ5>d70^Lt2&`%7W42JAPX{5@;w&Td!p9j+z zp^_~<1#J{EYHoeso1W33PO>ZA^8SuJQuNMu(~V)FbQY5nRJU2OskGLDWT_Y}y|?zl z^`T8skf8G3W5ngl}t6Oh*)CmGuZ*`Dz3tvQcL#MFwc&os&@LQwgcjoi{?q>x@8i)ww_< z?Lb+8eHOx%dgy)DshSRFB%o8qVf2v?@ln@uVm7~ARZ|p7yTBeqXE!hLo=x|E8J35l zax*=U^ccUBWS4pisZkx~(4JtM5ml9g@83?L@&;mh)}>I}@J57ldx{CIeSe|aM1}~t zre^(E4S)Oo2Gi}$MEWVtUb#u`V?uV@lfHg&&cXWxH0t-ljhvoRviaG21{axRK3_=J z8oLyl4{Lhp;13~>Gy_N*KP6(BA}*W0S)nV`?;aOh8(?7sU+GedN~#)&S)y>cZXLxO z6Vh>Dx+?;CnH#w&tB5KrZgn$IXxbJ#fJxUpQD)btJroUg4ZN$K{QB7@%O1eroL#`f z6!#bXw(UMmui z&}yMN#b0q+d3C_*8AVSJ5-cNTR5Y@&S(X%Lhkzv=iEg>zhr~TMPZb!`a~*~i^WtHq z8NB`R6{ivftWpOr-e@}3Z3!1e9O=E03R-AP*UTklx`4*=Oqr{J)*>8S{;LB8W8Z!I z?^B*6IZVU`z~seir?7{FXODyE$U@4n5GXZH4n%lKS}y%hFr3M0*8AXxpG7Q{m`+H7 zyZUj3-Jw4J2O2J^O!AGpt2RY~w8Xb=T3Tk;MIc9&*I{D_lNnc0&+w-*N5i~Th73Jd zQ2ljvb?r`wlkX-I)xUsot#-*vk-(`2j&qbhTbcIT*tb?LkCcKD&f~>AU-^ocWq;9f zdhs7LZ|G~r8!N5q*#ARmwbN0{p7Hj^c>ZXC`r(_tV_Bk_?*?wNVkkH<;zPveOc z^u*=r_qSe#Q&pW;Pjlu>&Fh%t4b!s_HypEdj6MyGB^OSpT@vhmLX@-g9JZzTmkIOH zl%zr6R=~ZW5mfvo@dX)jbmVj6WlyTgM`dbas~I!{{94XJgL4}b&C11uNY$3*QT4(c z{0CoOb#-3|t|7}e2H|RdFpwf}>bz;~RSp`z9d^t}X^rE|P?^{K6jbKr2El_7+hB}s z?VSwAj>0By7e*kAr$vjJcpbyzClyFVyuCPKdgFN>S9-UtKXEdd7(ZdYt2ul9>pN=(I&tD`UoQg0Q3Tr6Yz z>3r;A|ny2L+Yb$x#2Fk+$mL~rDhili_)gheUBk1Y5+EiKFCiMp@m&3?d zz#!WC7UTcsbvkk?GZC?k)~%un6d@?8&JTE~94Z&>7#s6Yx3|GVlZW;b5p#WLh=un6RGE{2^xhb`cE0 z3|dqXr;%ZjP}zWGYXI)9u{d!D0}F(%0viF{mJdV_kvU2w@U1lI>4kJ%4paBfOEn!P}00wYj%y-z%cP78?Ssg45&M#9J-NNJZ=Lg_QsTGE;z>G0v> z8a284sBb!$r@l@Vev%q+bvpk@DaS$Nt<#I+2sGVjl?g`_+WvkMu*pM?VI{xav}GAo~tINpSby3Vqk5oGgbYG;y+=|Q>?3@4<9c2w=jA5@?JJ5c!wm969RXz`-Ij1SIpGdAk+4I1fejC9>yL5)pT9CpSsx#-7kxFo+)FaEF1M#w2sGy|X$Xdq`c6B5oKEc3 zo6dK>z)3Xy){Mxnuy}34f2!gjCP|TunaucofQ(31%v_iLzkos_} zRLDJZjQAaNq-$%!?Mr*{h`H8Gr^Ys?d4_xYBhsLWAb%~yR08cl$>5_WuS5X`Ibund z(wCpkTp?`?Q*{rqJbyF;N0T=WF@palR{)&nD}z)JPiIM3s{$6o^Nq+F-zIyhcG<5q zVL%ZENsDiAom^Vw(a+g&yz{?h^W=`7GcEpc$DA$Y^TLF$EIVEstoaxG6}D$bdeYZ)=vDj}j@P$= z2$Cgu^KW%W#rk;+1_E38;4NnISM%P5nJcnuwx*-G>QxT?xN$yJL>94JCf`X0wCTN} z4Id7XS;lK+CKLYz9Rnyz=a=ga_G^$u6o)0wI2ouqAU3bD@ua5Ct=3nhcW{MkHK-4~Yb(7KXd$L~Q|{jS@w(2nh}LFKA+npcb<5XyqB zbG14yQ?){dw%ayqzHx@Af|5r)!IwSv|v zbqZ1_jbq{&piwK_tFPC&^Mref59mDDCb*zc+TRql;HcMG)3B@a1+lzEkjZ{bXnj*ASpn6{u zFLdCl`FwB3FwIvrL$2O6Jh6E9#|Kd@7hPheqFdVOm8(0o{P1J}S9Kex1W+~=wF9g! zsA{9mPreE?uen@p=7-VG0-(+)I>SA4yf?o8yO@l!p{B|R7P6d0tT;+=ctXbtR>}l@ zV#UE%MC&dBbb@}x(;K*^JN`@J{l(+Qd#4kLMtJR-NUEUwg!vGY>oeoqU(|u$q-|+?`OXIrNsKE=tjN zcLdgIH%Vos*|8Yr*$|rO2;47d$9E=MtW4+p(u*z!^tDnx4pbkVq4-}Qh#v-Gyz5ra zQA}bdw0W9HO9_G5tQ5Ui)elA>HqJ~8FJ@fkd-)8sNbTgt7dc& z4R`Tg5=_hLE?+Rr1OmE7*f2P$&-?@R&}_ONL=^gntM7}e6y_DnwhiT2vQvG$Js7+d z6pySGX~?b=Rq_{E@2pI3MG4^S#ydc#RjCu1#k@*mlK_3zogyzoUi1i~oIl?kmvU__ zUdzgKysV-KXB9k@DH*v>yAjRs!FFNg=yR$#O1CIv+(9BCegG7ZQ3FSOjH(2&$Y0vn zN{`x^iz6B~B0YqZBEzsA=E+ABcz)&SiP%z7)|bi&kMx%fVZ$IG_|Swh%2n~W7;Mxf~G(w$yucTkQEH{k{rK7_FdWsjY+L_EvxI3@7 zK~9pIItC;Z7eVO7k1-p!AdMb~J>-HufQ6fT1xHjChR*Pv&7rKjl<3544jU%z7rI|Z zz`v-N|D`x7z_cLeAtJmeSq=F~*$3vE!Kemi55+vr82KPRz~YN0)RVM~ZyonOOE|ty z&8(9^uPsU8$=Q1Y_ZO?0K2lEe3J#K8<$yte)WF<1chk**xc+qlA|=ku`rkTiyi*Y8 z)-L#F30$bP2f-tfsbRToT=6wd!fG6_;cZ|#fO-6kXbYJOkDhGcUZ2!{#kaFVa*2g$ zbq3Nw(I^OJ#j9?1xF}k)5y|NYW)zeG=_7$wPXFzXLUFBC8g>Nu-t6X~ww$aTT(t!e zTP$>+y*=xO+b!P3LIZ_!PU*pe`zWWSct;nqA|1bA@Kzvw41+t}_){(QzsUWmJ8CZ` zP>f5ws%PQc=)zn3SINq^16p|bgQ^eUwDvfDOVE;sJK?>efUzcMS}K!2LW|h>zIGFD6ACmYNV^k9WbI=2NG%MkKSIrKK+ejkaa(|1PUP5$u!Ss=8R zHJVaqXu=c2-7)IUW|ni=vr6Nl8j-4x-i5Rw(DZa7)y(uQ#kX1f+Rghib|5*^1fVsL zwmp&WCsY|*rEamCnzmGU@HFW_2m!6sOsrEPii@;& zL2bgP2$pl-nD_uoZ1V(>)&X!19;`Xv-)r|^K$JRXTD}DP9I+9mv`j+bqy1DX(Z{~u zcM1fz%!#zzZ!|oux%a;qSdAnY5qaJ%h9f665x*zb`%-8+OymAg z;^a;6x~T%+Nri9$nd0o4QhZGlgXWxF*IuGLH5x`Ej7uf7q%P5uZ4?R(CQf{8sjS=B z88UZs17=&R1g;*eKIMyqfuz!5>k*qV+>WZUeWQ_-@m+>ve!nf6OOy4VfjDXaiNTrD zMNH_IK8R_a_Np1bjxk5Jk^90C4|AQj#AA7aTX>lh?r~g%E2%$U$?kAT*q8m#L|&-n zyVf7T(d8jJHc}r6mZ-t(fJhHKPlUx_^yp9hF%H)m9YG zR=2%6uxkI!!DEoAjH?Z==?T%*N0G*q2Xsv~pBm?AizJizA@u-28(i}cgeyK|h>EwL ziKXc*Ga2sjZWUclI|B_K9+qB~97gD4ztzFSBC_e00bR1w|Ykvr9 zNcdB-WOiOw7%45;zly8f`$k^TFYGRI^21S!faq5Xs#hZY3I+5b?Jkb{cNWLp`QmU8 zzjYRQo!3z4TD=J;SppkqS5rm=IJ}?zsP+m^Dgx^8MFG7>O21~C4^hqvauXh!fpT8|$7D zF>gNL{1r+NJP`tHx5h2YHR3*d7?lz>6b7rtgsaHEU}KLc1l*n@cPNX9Uj(-wC{>>Y zycEfasMKh>uq<*Z8E`tYn;`F={M)l7t4u(m908mLa*yxs#yeGZCj*A_fNHx@yQa^G zCH>J#kOu;D0ur?exUr2!H|3>doaQcj#6~q`(6f~?fu+psS5!mG=~T32d*{@vsBA1i zBW~;O_Q0ZJy|6b%zdn-KzGqf-#y~pBD9?Xs;jB7@J>&_W-*&cnYG_dl1X~e>YNx*@ z;9D-gL;wJq5pRZd!$ANRgzZ(~#Tx>({H#7FKoVo^AMLI4f!y-56%f%>6l8P+`C9Tp zk4T|!mU&hh%t}B%kCp0GIg?22fdlbN-bjOvY^kZaJp{qcy^iPN4UDDY9mMn-xU985 zRs9&VpWe07Lrj~IJz}?nMyh!l)U#~M5BgOec=PLe>eWK@0mOyhw0sEkLJ8*=M5IV@ zRRd?|p!Db9IE4nqH`FCk{--`&^UHn+>iJ;Ljt%cQH!PpW+a840J<>U}ee@yLDdp<& zRr*zeGRBunF=hc^t4ca*H!eDKZ4v6iz3g~iwOLOq&ZvI%irwYZ;+g`)6$ZXhyA3BY z)r{1_C03m+aGUA2ofbkJBRfHmiMUiHt%t;B-FQC z2>OX6UQWz4v`5k$S!H#NWv$3OuF|P6$0=B^7%dn?e@un;_seSSR4%Du*=nclK+FPc z_#wf)+KZqSXg5?CIZrvvtB#A8f_%fgs2_J4jt1n-3HK^4F@h|INI#fZqKf30iFqF}Wrex;WZVuDiS9Kn|; zrCXV+C-wCx?RhcU3WFR9i=5Q%ye~0$$^(91FWmvlysf<80ipcH5rK7n6H8E{J^iX} zz^_+I};Q8isP#}a0vJeC0X$amZ8c88wJIRBQ{S^mzt_}Dbb(9+ILO> zEJMb7-0Dm(29Iw-eiU_ zTYphV9q|-dZ3Y;9J3(z9bZ|vasK2P2`aVhR)lMzi34o(X?P-6n%sdK{`3Ec+<;T$8 z32MnaZm&MJltyx=(qB!4^2>n{UGDsP(=?!GEYSUlX@ORRu3{MqIYtudgJ7_z49m-r z{#Z5y41_j@=)&bZmv)mdmMV2Ev@&=e+#Sv5&r#Ys)zD-A5jMP}7PZ}Qm;|gKGl)w8 zy)CE|*9G$Hug1v5em=24v{^z5>kZsy{v+UL3j$rx&v`JX?8y(BcfWsF81|}+aQ{r)a z%A*2QxBMK|g|syoo)kHS5x9+)7lN_um*jF6snzKY;CNgEj(F&WE&9;;?~6NwuY#U`8H6K^k>%}5r| zY=q*HFbDs}dQLRpH=y@Z_Lwz=D3)FeEoDv=r<3&s))Q5%xSGKh0_x;>r#;0L?124qi<6OY*5C9< zhCf;78##cIfWQ&IM(szZWn6X#r{AJTf7fpqa?-Fm+e0NTA0Jj}d?p^S# z7+lc{S~ICeq4s`|w`GND_7@q3tXrnr<9VBqpt$ri@Md??g(E-yjZ|ZOT+>j&y`sOg z2C5gH&`Ef@3T~dS`PUl&Cn8sWHL60l+_R4+fjnK!ikzY}*!Jm1cPij;{XzvX%h*hR zV_3mdT?~UZX>8g!o|sX1VSlrt2M&+j9;H3KXE$xi^Nf{TyC6+}1;QWU1Xtn@Giyuz zU{ppm5}n|Acftsw%!uIDuo>=OUgJAahY!*FbfQB&I<7TR@AgZ99y#R*8=D}onh)-? zbLh~u@+8|rgf9%hmc@QR2;Z}nJGhTmzh(_Prr2N+NJcm8Pe`;kSKj6Lwz0aDdn7YD zVa)%FS(EYf7j|by^LPVJGBF!0e-rKL7mz^*U2(oRY z%(VcHmg1qbzml8aab|^cBvrR=tu2VT>1r?68y0HR^7s;N&vQ#``VV+a*vRR0wJBXm z)!9etRN^_ero+ab2dj3HVbgm!_2L+LV@=kg)UBjIVoY20=kowRk7)>C?C zSswd}*V2_zT4m}pw!JVMKWbfJO>r{2i&AH_gjB@B8b4Sr2!R~?`T0y%*bUZ)jT>ml zoqqEl8uYkl3V=*LyXmRdCyU4&34bL?H>0{S%c55BB^5n-i`t(iCDg)$Fdg@Zym`S>3C$m#%oc%a$4PVkwI#s}i4xO?=Kg1{8QilEGS*q$<>L`~m z{QpGFR2Cg5qXR{G9BhrKz`Z$&>DSl;Rh&NsNk2Mje;6-BmMLcayr{*^GdNY8#!xGc zL>MO-EBx;`(Pc|=E!$P=KO1yqH&IQS<)oG2shCRoGcR{dbY}~O6;63q#%$Y_4f@$< zG;mJEu2moye`W5kE@n@;Nu4RrBPa<~%}&tq0DqoFv8@Vw&_^3t@keV+Kj38A*(Kos zJ4^CC_iy5ej?g&XcPp*OYn#hwLZukEaLJ-lV4`|cZA=dQDN*B2m)tEs^$kd_mVwxr zS!Mj02C1|o!=hKZ+}Nkc{5*HgK^!v$GDMM~a9;JR_<^QYUmW_kE0FTl&*@-!lD1XM zOb7<-t*1kN(pfsghh_zFN0u*$F=I2=S)eHP5DvC zQ-r8qo`D1b&Zd9GL9L$q% zf86{{kzTfyi0Lpi+NF*u&4HmNDjO+POt%SDHhiq^o3%YvZHr8*HyQBS@9vnM@z(yl z7g{XYHwtG(jchTQ7`*U`G-9^9{2a+T$yXo!CbpZ8{7Y5w8b+~ zXJ^c24HoaI?NIR#Dr&`F@x9>|AK6D@lX74sL)65PZCmM=UHJ{DXwSkT&Qbpt#NIk1 z&@$q;#KNe{U7PCxI!z)TYSABkQRFo8%(?P5P^q6|BF`@ZatS`b2A2lDs}7<*w*o#v z@rz@ly~hzNJ=#)6^ljjh>a}Z+(<2T5lr$Fkh%H8RI<`(7V)R2%v&a2ZxhwCA)uijoPdD%Dvr#_dw=kEUOPc_ zdWTOz5}+(N&$~IDP_L+k5H(a={rRe5HC$+E`{-O}lnA|F#B6a!wWB*2Yf(FTjG&xW zwb~+p!8Zi4^5#$!WQGK{B9*HSm;)Nqv>lWa_xGdwlr_H2F$0>MP2?)AH?p&^y~pPe zLQwt-e{J4n@83i<5U>Hj=($v-D@t+%NI#}(0Ex3H;K?-C1d1>l6Y(0qWf~pFWmwrB z8ML$Z+ca$+(*(igH6uJM5`PBu3?W=G5!N1zS@8&5?0;kh(p zHXrrUnZ}7^*4@WK&^ewcJ?5E6j!jbOd2c}?M~AT!v=_gYDfA*s!sb+|=!#}+9fcjy zuP6t}R9-i!2>$Xw;DR{PRIY$)-n8Q%3th|<#>ji+>-@oQnR7t>P5z9PB9MOWVxM>4 zjs>0{osv~WR2&Mqmh50kn2qnx&I7P(+=mShXHN;_Pld4!M8z6Nb>;Dw`D6U>dr`QU z{kP`?Gk^hD*Zrj}mC3S(lyCi!tF-(eolnjSa=hKHBpRKmhCX~`0b1t{`2P4K!i$7F z?5pp{hO@;*f2&t3NL77FkNORG-7-QOJnaJR5)K;#ia-J zT_ptvlM1%{q%Olv`?d$3QL9jeA z`Bo8jl$5HbXbK_nN?gF@PjQXh<0zGH#(1=$CR+-pq2P}q=jDtj7k&6AfJmm@~x6;CaO-G zF|HMs2aN`YFG;HWakaQ#Y(_5JZ3qrr75yH3Xd#2&+|}G>&A$ut9SZf4hLJC4`W?~8 zaP8oN*4kr8{+Lfy2YQL!1Qckc1f>_7lV>o^6pW+u&2JJQgar2SpVs1sXLzqM*kdlt z&yDV{W5E^>_$2?zxvn6K@og~INCcp2(NNz;{u>;sijA&sws41yi6<}%muZM9K*cqsY!dmuB4Q=csTvd9eZ(cT;RRU?@Z!o(@ z@yUOMDj9^2@FcoZXplY{Nka2ZzTJRWJI+#KTt|X__10G1Vc4k^1#$WIBc9bYSPH#J zVX=FF!9pd21^amilL);`uRKJ}%XwM&&CiJ!Vmum21&~X_(Jnt^3C{f??L}b1ajpDM z8kxZ6nGUe`2MX$1>0>|LBOR^Oo6ty1{bakl&b8)Vra9{%Yj` zHK)Fr+l#8CP4q!18Zy7sho0=bdl)w6-ylrrkMDPVVF6Ws`41uKY-exz-1|8kx zBCOku+{`vCg2C#fI_5p-k6hlw?$CpjQ#88;0=D6JKw4_cat#zAW;R$(^-=-!<38&9 z0;(rnDkgiWBHQ3=%RNW|O}NGr*Z$9YF+led`em7|hvxgu!gVcx6ONe%L@JT|Vg){= zTzLADNJidun_FM7{M6xQ_nFA=hl-db=KBnsjv6%Nw5>j@ywIm_3S)MR%pl`0# zUqX^HI3rqTBghRsSh&#-tKRDb#g`YYLQ7k)*=m4@*0L?A(m>7Myh9{`THqoMDVe%> zrPVe>(&BOHy!LE?C=8|Aqzxe2!dZ3)-9bQ2^&_!hi_$?BZhIY0TX5WdGq}|df5mUa zg=*~{1d0Wrs@`6q$utEb*;fXQZti41DakyZJG4*eGS|04C~xZuw@3{MzQN(^?^7QD zYd7=YKtn-cw8FmkV%OFNnPm~KjhG*8I{rwE=&kECeX7-jAE5Y1rnBa{CrX%AmbGzU zaE#TkF))XdQ|!f6#xc*CUQe~r=1|3e6T4gtxH@j^b&ucx*E~znJQNEe7oe5(XQEG$JByq2}rlO{6;xO_uN*P|g zm=43qt__2bypH(CAkGiuj|Wq-mRrP0fGnm;x-`E`s*JF^B_;b9#{g#k*FF>=)N7@W zTFYirW?Rp>uA8<|eFO3;0YKecNn^7VuO%WHWzH`88W5Nf!v;MmxJW8F72lDP(nAnU zeSwf*@<(sM0)Lg~UqAJa=ND`;fszv%X)u>i$@Djho8Ey2{>)4z+QgH6<{!jXAR~fq z&&vV13J>Y2VNGcxYihd5^E7OFQ<_y%%SMGC5H`}BREEg-OHtoHCFT60*nY%ItmTr= zIDZ6QM5ls&>$ap700q=U(3MRpWy^;@+EWy2+58Q_9R%IkbDAUw7GHilUPDvgT9tA_ zN%rR}lh>R{Asiup$!oKcOq{AHjtU*%wkg4*99xb>{K>S~Dp}C+au{TTguTR=+C2l7 zby#4Q{($D{<8Zd9&x ze7}S4AA4F9lLn{1Hd@Z1mQ zucaJ%51^P^y0>0Q(W|LCke1}~{Wxj0?uQUI{mwc5iVrg_pj!UaVfER662jjh2F}CE zdO5=2P8lm+v3axagj7zhqEqzXa(=#j|=)#vGxRJ-{{4A0)dMMDI58 z>ngk8(b|t%)cTOEhC5E`>u>Yr&$!f@y8NCY{{l6sK3C~^NHfJ+x)>~z(+yG|Xmy*5 znA71-u+VWD%3+Ci-Sc0+;fx}S`Nl9x0L}RSF+wC`Fn$UaSsCo#kltdD)or0`QK!cH z&iBO>gE-tz>OMcurItPK<)3IJZUDgRTSd}&+kXPmw{(RW{I^`tl2p&0nP*!);scx4 zUvl@If1e^X$CK^6oqJg3FTITC$$0cpD?2!H2kZnZjaC|L!b2@`LIJEED;ra`ZNgx0 z+}@M_xl!BF&dCi1^>fb+_q2%jc1WQBA&$0!3&0m1i1-0IghNPeXU1Gm8wQ1|#WK}( zC7y&aGdXnI^$K9b7*9%p_#_UySC@ltn`iYt$gN(tM9fOK-L2Le@)+4x{!Eg*_)VT~ zBWqL%!tBNj*>wHdtr)cak1SopISE)&b_B#1dzW#Ptd6KULbj>6;2X(ZosCXQ%qZFT zZouUXm*8NuR(KLyd!;>=4|Zzfj`+Ohf*J5f131|rM{9a=^L2BT&~cCJV&_H>z|jM@ zl;?8#-J{Ok1-TA>a-)wAMeIych6xmptZZZj5;1EngNnmNFPAQBra-*Sm()}!JG>4stkk{IVAb0oPXaf zxu30GrN`OM^>jC0uMR+&#;^Y4%Ne_qB+Y8c1 z>UEX1!wMlpR0tf8a~*IKH>#+lolR~RBTECn@ie~UQI+{5GS{NX> zasJ0*FAmeOL9bNSLW4khN6H?fkt(D`b=ArT>7SID^@@B15HKm{@$! zn{X!jz-^~fki?mYS}HtC%JiZR(OaJ>8G|&4KR9lYou2x%IB;R8>68!$hU$`)9+au7 z=b;b+hO*B!j(mAs9_xtlUK;@i_eHDEu0n@pu+Xiqe=*EH6MVJG^SuUq!3@y%x|BsV zDMYbm6%HNc_BpwjZ;?aOUWGc^`4e}mGz0#;?WNBh- z*1XR5K+^Me%2t1!cx8^bbMvKX!8={sj1op0TKE~Tg?+sbEpucx#=2l!L1 zh-RIF6)>_)s5eFKF}|Lt_g7^L>bF^2j=L?ZD!VBYUJGz28Iz+};=%pKQm^0XFsiPl z80XOrUumuauNEGVfPZWt+iUH}|cg~}zRI}_7x0n+^-!bhVUFPOY!RP-5OE1=b%;Y`_sIT5-R07nC9MN=+q2PE+;D{cpNA zs0h@^!eZpoYMP7Y! zjYVk{aG!cUouaRns?-hJ17(*C5`oj?x_H1el@Zt7gyr2h`2_9BPt{s+b8A|d6Sq*z zhwx4=f3lK^0?^6AO770{DSNFkPbeU~-Z;uwqIG(!>uf@>#_$KzU6o-FMmh0rU`&>r z=cRA7`OLP!lM_`YZyQfkY*b?`!FYaCK>xRs)_5pB_;P zIveGIHr@14+@1mSIc%93A;UVH-m8-_Eh(r90bRd)7wu1t3D=-=X#atR+>db^3U=86 zAgL{QkTOi;zSz=2Mwpf9R0tZP&pBHM(RPRdz9xE`=K*Y{N+2zEZ>!$lA}UKFB+Hm8L9YK`qJpKU`7$gm($k z$02Son#6&3YhFH~e|JC`P72~9tB^;nj8tZ>$d}F>Lwtu76ksP1*Xzn6n}!s`+Z}J~ zNl#PHoB<`ps91#_p<<7<>=AsE8oI6v4If&@YMF16D#}!^yt}j8d0@0#{8zV!kOi5cDVYN8CZeGk~q0_lDfDKpJ058rs^7DQ7(4Gh8U{83!l7gL~ngh0e1h zIH)r*5zs~_qZJTCLUo7q5z@2(c@V;A#k6lvZn7AA^o_v zgrAQ<=P-T?+GYLr@I?U{`|e=1zwdd?_u5UHUB%$v0C*ZjPpPE(V(vru;1F)Np{w!d z!ukd}zIrN2u7?lhm)>1&2fp8c>e$Z(V$4=M{4sz}6j&_mBM zb$`R6l?j8e&eS!o*80&JY~tU5r1M-{?_!_p7KVN z_hHxEI<}Aup$0vc1Zrgm+rFV`sX~!Ry;0YdA@gHE{X+sFb|IoGMWfcdM}L#csa8qz z*@kSGx>fA_t(S(aG0~c<0vD=DgRyF(2h>6xXCIeM_or5!$l8^1H=tE91S?2=2_)i* z^=hz+8iWU}fGv`+gBnuLtL}#i4H7MKU8f}U=Sfny48K7thlz`~Zs1scFy_DE0PS9_ z@uTKT?HyS?4hBG2gW^jcd3*K5tO1Z!Jtj_xF>;z;=Pq-^twYTQPz_bhZTByoLzO)$ z$qdDEE~0o*UAiwD=<89xhJRzGXPZ^-9a)jGxr4cj{=+9c6|TBI!JBjaP=RNMwMCmSC@Q?dGa@9RlNKC;|1{X?&cb+3PUQc0bnRJEL5-flWfajP{&Ah@xTKL z%4FHQ+7+gH(cFT)+*(NHUad#+n~r=*>;cw9^rQUb=YB}u{Z>}IzkC%x3BAtSC9iMz zRFK@3td*Tc9}6)+u2jr^asXNZ|2Q&7j!FLX+bxndYdeo@u+}*3SEwFFzdSdMoHLU4 zVWeDE;V;&~cZmpNK0?JPap{aw%yU+Tj>IPdyGoFZ^-9Ao@0W;hV3F9av)O9e7oUKS+Q+lM!#6leb z!D_dSEOIV9Wt(&1a!w{l8OSfWw0G&NvsoZ~X{OFk`8v*@JJI}klkPta_9Jw|kTYEi z;NfG8a>bxhY;11|s(2GRlQWLe+Ub71UVG$Yn7nfvH$9mMdd81mn$;j5@E_5DCX_<^ zh^qMMki}c>9uU8@WhiFkjpkS(GBDwz62b84U^=SR#dU--Gd_d5}5(w%dB#*3%P#w{|$Gj!>t1r4s4o_=mya1hQ=tC}yuN0Y|;Vk_MkQ6*?v9uZ9*gi#sAz6zw-& zai-ySG;HJhPjXDgz;FZ7sNAVer**ob-PF8uLAqnVi^KH^@BEue-O81IfxuYf6t$v& zdfs@xq=oh*;Dt?m&k)>oX(*bbdGHbtj7KD$dlR+UKY1%<0+qz9f{Vwrkih?>M(n`N zCUgr~m;!{;L*@sI!$0TBg2BfL?#CZ>0}co5UZ+3>N1ee99q;w5I^YKQ6ldXemAHjZ zal?L0Z}#deWofH6a9uLywCks}a-VE(`>YW^icuxS?}%z9uQc4#4QLCe&x|ndg;s~2 zIPdE3{FSKKi zweDE_09=Bzyf7ER2vN>KkU-}qPFzK@5$uy1-VI2@Fv**(zO?Wb`_&tWw?3GIEV$%w z4Zu$z&`KJcyldYfTZo*u)RR?pUY=_q#wxPGOc)#|El&X2#A3y}#|$&tkejRC$B0K5 zf62hqHVv0Qt{#XW11H>fLhUvwBD#6F3B%S(c~)C$4fYk>nwb)`gysiA@TdqUiHTjV zG0lVdpL99UP(Z_sF-Nd=Eop3aylu2H9)G~~d|Mj~w90pLkm<(B8&?z#d&1aQDORti z%ObZL{FJUliTQJDeAIO5eF*JV`&Y5E%&C;$tK18PW1x;1@PyIIlV_EczGRQi4Av?x z)LRkgd+OjoXL)(IjfL$~l87ym;R$bIucCqN4Oo=;tJ{UT%1z6JQ?uwF zgcHd?9UfvtH%k2B7|^HlPLrrG@bAt`CQ!(;0n9AK#^2M< zY!OlY>#F@rY6pu(pZ9r88NSrvmedba^SwM-j~rTL{k9~tCS^t}FVPhB9@-_nHdcf@ zdIal-#kHa$I(}FCUBBWUoe2slt83V#z~??dD1#mn{X;$OQ2{=(e8JkHpOK)u<_sXN zOJ{HN)D)@`lf93#Dn@4gdc7y08~0`WBjk~u#|vX^LyvQ}09PD1GKFza`L8tl-W*%F zHo~ejz%OFA!v^FXtzN3ok1-IjUO~(+QQe7#%IqJPhrXu2zNNQCY(~yYy+YfG;3hn4 zTZnp~ADsEr3cf6Pp$0Mlj+xsRDb-7yBDq%zkfpwSDjn}!%-%$A>Hj)RqOR*cs>Of- zxL433PSq+H4T+}n^naAeiY^&gS^v#AH`A-5pEJ>N6}_oKQuyge%Gf9zw!jSOtUq|0Sb2K$l7>e zmPuRkE>!9@R&H+$-6mqB7Js)fmQZe9ZwWqF$Er&99&#%v9TNz0h{EW?7>rNIwE0oz9fk>mu#*l1|4RRvbQb9C3uJL zmB3W$Pi{BfZe};5&=F(GLky6PLe=3j1T}&0oa@a9{N@8nZ$Eg#K(?hJGSPVydf#q zTKC_8uTvy3E&ikNo{nj}7As0P&scR8>0#%~kH@SQb4wyTa}4D8$?J2%pW^57EMJ6K zR=lFBpx=>of{g)?eT6yx+t%qho8Z_S(f z!nd4!YLwm>(F&S499KFC7KR#SJBl8hkJ0t|cf@5J3H$Y{GGHU6BltKV{2ni5D`gQ*_Z7EB-IW5yi(m{>O?Q!60U9nrA65s?TfpXdZ00YW%$g ze@!A&oO?4cHqVBe?J<;ECDAZ5unN?hPrOj84^Y$=M#;6&#O}dKCxw0l?H72QdUUx| zb_pE=XO->k1N+@W_Nh@OE?!iU3q9yR*2vq+q3W3CTk&zx%p*0B#msWv8#h#A${*FP zoK2uCSw1T9md+Oj!wY8A1>0t+kP}Mmj^X{u%v`k_0wqFxTP1T36!@hRO7{pS6JYu% z)pCPd#vF_=UIk*0deo)~C<&WLOk42Jo)g^X2IL7;cOi)RpEUngr_Yc!MoA2^L;SDWMo5>7LS;_-nuGh|=xxG6;!3CZ;A{-OLJ zg1if|H)KdS4r^f@Iz$2Qe3=?7mfh{92R;*P{Ur3rV-IRpZ8`euu4rha;*=MzSLNgE>BIA&jN*cQj6UX3t7QtWmc()9orR}Ew zsyIwI+&$q$d4sx+2{U)LZQlCO|&lvYxGMC_@=ICR_#<6jmD$uRk;Rty<-J&5I z(C}l<_aqBI+`Gamkz+gF@QPSG(?A?L^fU3b-flzE>+(~6YA4XM4{j5k> z&$ai&TIz*Pdq8rlPw=;9=;OBi!c(-#n-<}cRqZtLiRd@@#wHGE_>j z=Tray_Gc5S$)r)7=k6;A{=hRHC%>S&{9b$O!ozD5m*Uz;g>kffdW_wx4- zn3isIUjNbv;Fr3x4)DVW!SUSUi3lXhNcIk3c*3&;5rz8srb5-b_iDm-t*7?@TFrbI zk5PKe|K)0}qu(_+4_AlF2KB~ndI>iTB1Wt##9rd7ApzKKQx%YLt3|D6i$RrVe0IZA zIj_*FT2B)=1LTxfcUUC|w0ty9VhrYD+ocPxgbg>$-V$=U-}-q~{KcFDCRp!6rIwvB zY-LVEFeLjpUK1%vMhPeGKu`ZjF$?Vm?PqdDv4Fx8^X*8PgmI_@af13(xrPjShQcsV!=@`9bNve@C>9BQ{z_duI#m9J^Y_yIUr z7@5J%CC$7>b-ord1ly=jUX~I{(4$d^d`3_M0WXElAGecR-8i)zy|7GB7j@L&4(R|H z4LWdD<*M$hWKAGRnSOO&>Skp+(f~@inOY~!^kEA2O#m3 zH2+Y6$z$60gcB){Q-dGiSWRss5zuaRjiALnBH8;G!Rp+YOscXhZ31}HER&+35ro<( z7tS&}A(RETi?|6;(}BQ5IR%3_H#7BUC0Ib|*%F>YYUnR825g44C`deTybp#ij-BBt zHG!5QuPpD`Z>4^-(n>vr;s;2`un@E5;JoWb$uzE^O)z z2W7y&#=%8G^MAbAW;LN^y$09k7E0zqFxJ?9-DR%vBQ7mP^7@1gtZN-JEejP~@o629 zrxQX1_`yM#@JpvU0Qa^*e&z6jSOHYtYjL-TNWfB0l50F}O#U#I4QXnaXSLR&ogIgiDw_J3rw zN3a(-x4@517bRv$mgbS0d^hN!;C`mpbR6ydqfB6jncodC{9s7EX*&!^81gL|>e3F@$*t2$EdSq=T8AlP+ zUH9$4OI3eNPrf^GraylcA17&dPioMgO0&?M(;V{Dt8k;?Jxp@vq=a`0+~a7cawNhW zq^Nh}(#|_Vw9izV)&&pr^hae`xmRY)sAY#F(O8?11xN4D9tu>fMeXN~kuHra9i4&k zl3*D;urGeZOLST=sw2ZPu-LK+;pDb{(!x(+PcvobN`fI%0FBP&|`UI@uTeBT`;BQe1@l3=Vm(dL0`^t&X+9g*sxNW$KztjXpvx74Z)djFfIiwMpTl$WSp($;AeZ>2Ku^!D}HIY<75e+n;f`5F;*K7jfVbdaO!p z(f#5ho{^9A;TK-DNtOHjwSm`~mUaw~>oFJ4 z&+gXRVjJrkyF9G(8;lu3?EbiEmLD`_ij0ts;O0#m$CPl0Q6ckB*Q(f4NKJ_2F>6J3Zy^T?|VIZJFf+MFDKZCTFv$6vsFwstOi*_By~ z$9R|32_tVyag$GyBn{fbE0gGYJSC#fft(ANrwhmU#gDnc(>VV?0VWgfYml?4aY6*~ zJe_4ZM$sMx3mW6jX8Z}dwEch-NHb9-_hY!sW&+uy$2R$cuFMr`IhsW`I?v#N3#}WxX)C8E~ zhYx@ssiX3DJReyIE$&*xDsOHMQS~pUBV`4&8qw1=LqWBsE%fpq2&yy`L@S z5MBGHW6$%y>GXPJd}vyew7=+_<>NmaA8RWJDFKo`if)foD$WH)Wj5Ir&SwOXVE}O> zYcp5g2{`j=FHuR;YhYfi|GfO#QFhEYLY#@3saZU5spNp-JWUOZ3J+!`hf?_KEy3S`{r z8sG$sqDc`eJtX!cYXFou``R~F@Q!0xB}K$%B#ow!1X7BXgl>;JbP0lVcKAg{K1j`a z5v_Gxi!Bs9e1)}Q}qRmO; zr~3E_QCx_->B_ap+z7}ytyeo03+@HeF4sbHU1b|q;=N5E0d1~q7CSSc=y4` z>qk~U5@_+Z?jzxhpXB~|teX#E4fC5=3p~o+Lb(iui2Jnd0<3tyebJ+2awqQ$K10EZ>gBfqkFx|yo4b#96Ix&V^kZgUu}&e%P!kDV8@djD(fs( zTgbz=>#wWz(TnqhK5zmo`y)wy9$YjXqW(E%JR`-GEo3x|RSJr;&xP)?H++Q~Y)M*r z%_NRiYkjFpaQq~lks1nW#mv9<#mngWz8iyex%fnUdYr;kSFSK!{$shzR0clQ?*!)z*!chmInNOdw(2~)#SThXRf zi(T(+>Br0w;JDRTx?GMctM|<7s}06l?|Nzv3n>DA52c^rmtBg!a3r-JwniN91;RH(VB;RG#fbCSga*9fM1M=X!^0bD!4py759PMf-K$EFt>ceq99+`nO1oq zfnGc26+~1;Nd2Gooc9GXhR`n_f9bp@il&H+*K0eghW+{H$-x=~uJ_~cVTIwsXMB*; zF(}Qi53q)Ak&u+ES&r<^TjRpIh%@$k6ZDeeVt=A;WU+m$q`6U#LF_FL#2d3Vr1a&Y{l5W<8CcI9YXsGKETCO2xRllsdYr0^l zR2c{sW>cyOib_$Fn#4SS2r8#Gg|j&3iT*P#YmtgvLU_MgpvB0hqwhH4jk=N@@u@Gl zDJNZ^3DnWaNpNu?@!iB*d2fC|%dJjEN<{!-GjQ5`8PQ8HN}?GJWYm6f@8q6#qT>~b zDXeEk)1e*C12RLg|6jMk=5bxh(MOT{?N0?!udmYKNSi2EW%8Dgj5~YpEC6O?=G7vM zAd2m$h?Q(g-;WCpLcU^3OnVz*c!zh$_y5A{*9(mw+lY+GY@MuM%79Z9Evygr(?Qsu zPRhtWUSV^5CcOEVwOzjq#ADj7P&P0}86-iA;kqhdn~Jq^46Dbw&9zQ|9l|sO1(K+>|^4eXMgr3V}Ii^f=u~ zX@y5!Ed^X|%;D>MgYFLf!_cVRMoQDEG^|2XI1e6PJJlQ(%*u}nKoME2hZ#hllyz!H z2Q*pq*2UKy>xX=ao<;hr=iK8whv_qIOt6x>lA?^E%0wILIYXI6Kkf9Mi_uq0SM05v zemTENzuy}&`{9MxwO-eqeX99ghHKYoBiDOL#NR*I6hAjZaBW%hpnJ1P*+j%X1LfEU z7M!U9|B$9fVM2eGa;q4lCJnss))sn%d;un{_yShSs!#e&8B(9hm$OjJzdwW7s|0+` zNw%Cd^s<`hSQ|Xnptf6+D`};z^XU<8O~RCdf;hu%#mlKRtgcR*f}|nCS0joKpj*O0 zLyv!7q3{zR99==3mSR!Ye8vbFfrWlQx)CdXQ>VahZQ3HwDUllp|Avv5*kst6;={^V zplmvSbWDj`j0N?wk+6Oy`x^}9w`l?EVso7c##ny9 zl<c4v4xv2rz?)pe>T`IYr@OfZ7j>O&CfAc%_*1J7Uj!G+%(*c?M5=@y7 zw)w5Hg$65_c!PuLGcxD`3+hj^VV=8JDtb5C9!#3~jzG_73XFDkTW3oaI5x|E==~Ok z@-Wqggxvwa3}s&9)K$_>WEmOx&yQrhBKJU~+07T9<>3swyyG4Ra?8D(0b0 z=fLpEDi-7SGid~T#hXS(dR6$rnnmoKB*{K$)wrtg`q<4dSR5}#*8G<~%=Kr^ZjdEn zkVg!WNCoNIEuHmfV!2|L;zoOb@vC>@EV-)w7Wl0VF0jk;wX(fOY|`;olpxGLv|asE zMyC|@63l*=BBM@Ktx@c1KC><2^cCUwd?}S->&#hp#Zx+4H&QMHs#iHhO#D;8w&jQ5 zO~qaVOqwYm<8Vittq$hlD34ZjJ|ddRX!`mhg_A`a-D($Pz=BZ^DiB*+F2|UUTtB2L z+{mf!lDbj@LLzII*|y=<%UaliI%^V~54ls?veV>_K#CQ^>DZJZhR~1L5_o=8Uk~<1 z0I(+!EiHB)2bhZ{yC4@!#?XVa*x)Z%S&iU=z#Usj_0D}70#id6BFs@`z0ELlAG#va;5}ZtGXdRMhCTCZ@^d=n8nQLYZ(~& zV4??`q{Jl z3G`#bR;Srz*qd;rEz_`qtkZLf$;X^Mv;qA)#xm`x(OyLc!H4A`@0Ag?H6pJadNZD2o&~fjZ(y7_xs$^dgEPz6_aO-G z=>>^0vT^c^7{GIKLLOb_V)ULvuvu%Gk#*~9U_-`U(c6kpSwcw;S2RqNn9rwh4&R}n zCfWo&`)@Gxn9^aw4zk3C=$n8fS)jyk3zGOUzXm$A^mVyX^rVE*DXE%BW-nYAW>*}R%2>i%=zi@m zL(1$H>t71_!&!`WD9%5)CTORvVBf}#2=+tDRfvjYOxFJO0HioS{FQR~oDQh0b{f$f zUQz9}ThYHE0kTuOn2##|@R_10YE0aV=#_qmCDh`PlNTVWRlLxqVH!dc55T8ExDm@1HaX>^B zE_CVbpAgiJ`K^h61xq;&TayCyOM-41vnK3Ay-R~65c=>==J@dgu+&56$p<7$Xs+E39y2PU}kFY@BWn;NGd3bacS7%#@cGu;&qG>x}N zo8Ng0QM@GQ5dQrHZbk-Z-}){0^>UDj4Q=LwFg#WcqY+W3ukw`Jkhfd<07sjUwcRpB zsQI}?SFE7L7l{nLU_ZB`wO=+2aFY{hr5@-YnqURvQ>G#1vl7Yvq-iN2SK~G!A^N0x zB5|mm;#dB=1mj~f=A*{=YALU}PG}>8wC{n#t9Fy<+m5Gfy5erQa@SDWiyi;LK2HHI zvx}AeB<^jJ6X-SMZg=YIy_a5Nvqi5{vhgJ~FmhTnxRLMFQZ3-rO`04rS9K`I2>?oZ zwW&FfgC5?Izk3DDvSD#&332M@fJX#F+aD3t!_@sE3=!X9>umNq2* zs&mCT*{$`{G8`qDB92>HDdEKOly_mFo{@UH@V`6C$1ZW_*g%CIV5|}tk*fhkvdVue zE1JT&6&-#PoQ!Jxy3ItwfpPp3@D-IH5z2hy_}u|}S|WgRBait_Tk zWPi9rFSO~+-9}MrUU|R@*5#x#7>#>KqAcR@$c!!_g=#~OH@@>-qpOgIfs_YW63q`e z4jXbu$@%G4B6XqOKKZq)a$CjJofDw@ho6gcZw?0p;cAqf+N0#*=Kg_qrN+dCZ5ZN^ zA9;!bIN*ya!s?#Wzmq1iLCg<}`<9nmM!=MO9-82j0qDJhF^fcuT>pMH!XvO^I{EP& z0ePacO-|cNCF&`9n{s;o;quv8p0GunMiZh|zKCg!h`*SPJ*z{h0{pdk{bE4Qx~kIc z4D+`xT*hjdc5ICYlO=%E4U zJJwsu_eVq7t57xXT5nll!*~;=e5ctcv#Ih8DdJ@(RPaum+G0cZLNt@QQ?FS93jSiWHlsI6dvu#@$V({ zg`-=xm|6?^aR~lospoPH!7%%zG@q!gLK2^Jia}*%|EYar@HUa_LTWa`kQw1d(6?dL z@)p-l3H?yV?!Z$FvPmf4(EDy#62DeMXM6EXKUz=pOjlqG>X&xPheMqvpdr@RtoNxo z2%_A9c4ay4Qe)y#2Wv%)K%pGnqiTErV<*;A02O-u{#T24vPrtb!Q(BD6`hZ6|Nrs8 zNQ~}$u%&z+FU~V^x2}5+Qwta?1Y8v^)WC*eD`I+#?|=w0df41?pqKN3>_>WjHTdDq z(q$q>&QTJ?AyNBwu#2hmo;1ihwcG6E+`CFj=l1%zZQ^)^luE0Y{7$(v^srlUIn?ys z>=a@tJ-ef7vhXl1`=SZ_`$zYm&+)^>A?eo+-50C5 zW_Y{dOgGO3D6|vpKHwNp%6N+}(qrACg68{v?Ldc$5?3=#UB*7i@X|V-_z_LxXptK5 zhl(FRu<=mQb@p>SWP(4f4)VW)W0O>Gk{)-;Kh4q8b^Sx%rf^DkgkUoefM^lEDwF4| zXIrWHG68eNM`ib~o91!$z6DqQy6)T7*9VZbrqVnU@U*iee1Dq-%j%BM(jr)T*+C!u zuN58yza!7oK++htE~W?>CBb~WxFOyGj>Yu8EsB{!_;WgkNndM?xRjscGz7;)61SN~w~gsrQM%#}o)~5;MgA_T_+@GqWMR|2^Jm?s2~QSve=8ZX9b=H;_8_gHrY-sJ z)4&fVoAB!JLD?l;hNkp@Y@^sTFN}TIPF14kfKWiHs!P}WRz708_tE|_@zEd^*zj<1 z0`64Nu6KT%azfJl;05vuG~+1}sM1n!)Q*!x#)2(dg`T3eRwsFNIwhL;3LqTHHCOE* z$5p6uQ?FZnYD;uZ@e&zM%ygq7P+CUQl>`oNi)BtK6i+3m@s~3;FMg5~Bbj-kq-$yl z0{TGUW?sHb^19cleoE9vDk+Ko@b^=Mt`ViRr}&E;x?w9C37Y#xn8Ym z;Z0Fa8U#>;vc=&-x?`=KgUKEP)wOdag5F7`GA_sM0LCdA2CfB{QPdu+CAQoiE1{AF zg)o5}PqIBJD}|&y>|nnrsISQ9vWX=lsI_n3y}PCVj>+oi6%!O#BZkw)S z={ukQ~{Rr9s#$~4B9Df)+J(0d>6ik;sS2~^=yyMsb@Fz@+elL z3=;t+b-O-a*FX-id=T9;bpAls#^wyo=6Y_wus#2!C0nFxONsevIuNBresNROt^cOD z*SckV?o_T-M&d_-JKg+PVPpBu5E~7iEOy-J5yc-oV@R8C> zE09pGkZk#KIl#Joojdjv99tZ$=e|)^!W)gGwaJ53299qS?5e(&XnfWEV)pDFN@fPn zKP)t6y(fRyJ-i*uU-CzQ{ahu=!2K=8G1FKqB!7(&YG;m6o;{qb!Xl(6mi%l7VAvT?pL7`BJz$c zpubKP%zA$Ziz5_#;R&@sl%uq_pkMnqwfCabh4croQC?~tnGF6=r?%84X69ET)=Gde zg7Ib%;Uj^}4eTc4%hj&?UYITkwGocMBY!faeK;D2NRrt`;BS2G5EYHpo3KsIQGmoF zfq`LyOW;ngdrX2d$4ADOJD|zXRX_t!xb#uiGFE~wTUz&jMySwPhg?KF1@Ae0ZCpA0 zoz$ue7Ec5{4amQ#Un`E)P7QiEXDP96C1lkv*|H#b7OZ3M^?A9r>z3van5(v|H(7kCTZ6P1LzWGC zPvf&6X1VT2@%4MNp0EgI)HBrw)7GBWuOAEMb*JGoS4z|8Yt~Vw=97uBvh#PY(ttgRI zq`bO=(*`-?Jj|r0{Y(44PFsH`)3apBkjkZwff=Am z8va7^eN%y(zjQ5_(*Sw+Q9KkutbwVCsZ2};w>Yp$DF6B2Ip2$#XR5iA$|#FUSSNQ_ zKS{F%1wizx6u)0fz)s*uiWzZ~A*A+mQ~u{^wGgz2iag{unu3S8J!~Uua@}9CuaZLy z)W~k$wpfzg?&mTzc1j+*u?tHu2sEK@)y178^lJ|_m9V>T*M@&1O0AH?uIXX>7AKIo zt8PGE5Xfq?CjEVX(xo|H{w4Jf`RPii);iadihk3|H@^?K*FfHw*=TnBfD~;pW>BzIw&w<<+)e)BqptjAxs6B`Pib~N$(5C&SJ9K zJdmgE%)ZcrJcgQ-DcUMnFE|2cd+bR?)-22Fwvt)bZ6KDiWkC9b*>}(qqP?FBq-qa zugdDGb#%irR5yToM_-+$OBu7{_0 z0x4+tkoP_?wj3I!0fy5vA{SLJa9-p?!+dCJK$kn7&VdLv@2>+>xS$LH?=7=@x7lJl zB_5PS_K*4dkh=wU+j44m2jKSwJ-Z?$@W?z!x<|oPI7^M==uMVj1W0Jfh9+s{tbnwY zW{Z*bK)T{fG8VGzWW}dniyO?O+Wa_j7{sBDtx;TkV-#!EB~E1b@o=k! zisFcwI?jVy$a%HJngG7lDQ+40%eWdkyg6TqWtrxvwxLoRIM! z<3*GPjX%n6s(en6T)!2H3yRWeGh5Nu|G$`#zGyJ?H2t-wI)g#8Sl>)Icf3PiQq%*2 z8a%VDXsk|9TP9*wjMJQl*SSY?X2(ClOEn_$98<97pBDahqFeQT7KB&LF;$;imfmD{ zoLK5Y6TSc4&78hYeW1)z{4*OnGWtKc=4(>~DM@UE!btJIrIr@KrZ%7p^4bn&cieBx zp?8IpVn5HSXv75ixJhGIH?YYj;?gFoQ?&7d!HS@4!AqP@@= z4fT-!v*y=Q{S5H#S!Ia*{=CiSPW4<{;%u>83AnlU)_0!qaihv+KmdCmOXiLYDQ+It z+p$Vi=m2S7Qaz8M{WQGutuB7Em>^sXA+4*8{ZKG zi2zxzia5d>9(>vBbr3x;LdUWyf(&4Ixo_D?oEF3RFT1tir0$EuJcZI@8?34?EykZ(t(CnA~M0Z6-M?>So?OixPT%y2+x z3E4rL--;CEZ~P|F$0|bbKo9+2GD3rZVN5ni`u?4rXR5_MQZ!E~d6B(f0o~Y6;Brmr zpz4AOQ<0UeF&J0a^UcdhASZ}m0A8zM^q@&%{0D;AI2(m+W}vi;y>ge-IsPbdtAP>m zpW~LQarL5EiW=0e7W2;}{O}-ox@auwEx)9uHKz82(TiGg$8M~}9`#JG*fqdFE)d$^ zTQSQu8ZyxfwFsXoRWCvvs!U+g#Im$fv!4fnJ(it@##4v0#CS@#fAo)~bK=>gL` zxQTs3VCU80+B$SXcWG@7PQ#6(Z7QG$p;Q7x1+k7QJsV#Sda_8Me0Evc*KM`uIh4~Z zm-w+8fhn5MTq%~Ak#&pF49}_cAYokEc~dxYsX6tA zDYW-f#@(A=x#z`-34t(&VaIV%$vn}}|8d25&#(c(#QCc^Y>i0x6px1S3EPacZjTGM zT98c_8Vy`st_iBO$vj1qN{vkSTl)UzdA@fb&DSGq7zCcPl6`NLyy4VFsc;yn5rgZ? z3Mf}WVq823jGy-NxlOxJpRAWbcBod9>W+EL=4krAEUy(BKgnU!i4DGFy~2kAOY$Sk z_qvd-oH=*Su8}B8A9IhSgVhJ~v*L6}Szu#E>3Z=}-$<#Q3Y8{#Ip+T%6ay9yqp(8v8pZ~CbhUMK{SRl`Z z^INYgp?@?Szb^1k;BkrMvM>q^lu6hmCfnuYpeUR-mZbR=*%S4XF)kMCNqAe4cIfc` z6Rnp!@`d0(nFp7fn)~`y3=CMDCoXwtIr25;6Y?*6bq{C?w=YXN#_0>vIK2*^)#CJ& z#%2qAcs(A&ZTT)64w{w58a;&ddn)#M;=id5C>uNiqB){vBDQ?5O%@}T7~kvJr|`91 z{smG8LWxG}6%Guzdk0q9)XLML=)ab@kqMXlWn~u?XL#W%Sd$P_Hir7UQ_OJoTv^3r zkl(w*e;d?ykc+`D-)rbLNnX_h4=@`*=!dwg56}T`$R?k>HFRU3!pva^I5w@?$V^eN zfS-b~J+3Oe5oy_UPXaOdZYT#aCp`SI8=1@b`~pZwplOLUAF={QVw!HH^q2+p~v{f z2IpHjZBph`2-r?E)`cmmg{Y|H9d)h2Ccu-&a2-rk@P!Q&Bt#tz36ReXF}h6Ycv4ni z^Rx{UK6SU(fE4#FA8!Q(NjcDVVcg2*r`|C5bVv(fL<>d2>U%GXdsSOM(ZJ`G2?Al< zZbp3VWj6{PJWNCBb3-&E!q+X^#vRYz#}*?!51S<9d+AwBi?a%BGF+~1EvV=SOCK}N zuqMcJY9%@~%(SWRfH&Js4?>=l>3XK_f)vetQ`Cy3Vo@wo5%;cLa42=sIR7w+$h!Xg zGDde^;$J*yKN`rFNWAFfG>ZZsx_ys$qEtx;(7)XGX}UQoZ)bf&WQ{SKa+qL&K-`@c zR9x`W_hAN#tfrXG^7X&QvyBcXS9KV%CqLsOf6%YBqK6MXOH1TK0J~Nzo^uiJU-RKe zwyQKcx-iB($QLxtegzh7HH|FbmoeRGs@ohHYW3Uw@F zFOdbSyJkc6{S*)i-)0(xP;WEi?YjvYD7xenC5GZrC^4(ggI&>ctww1gTbZ}7V`|FY z{R3p5dfJ9Z@LbOHPpm#Jk_3julO*}3vRgdc$p6!^lB19|&sqwa`MgD85H}x^JUIpg`U~o*M2{z@~8k-`-J&mXqn-EqPO}3 zFP+S!a5L60Z5j`IV={;dw88%|k7c_YDyg8Cm~OX`;o_s0Y|meh*n0|NHhXN$zuX ztAOycj5(op8S@s^ih>sWyYUp{ze8y0^(o;N1y4;^)=gIRn$!NsdhXq*w+QPcz{z9` zyV3>RV*9UUxMH`1xq2j~-#4&YTM@udblN<1o`+YM|9Y)KY2WJ+DeSn#<8iRFSpbGO z)vHN)%8JnOxy6)GaU)I6vm}lBEobaQ!^a9w&QDSJqe@*VH$n7MAD=k*0cb01)5dC3 zXu;Je9OTU!un5h{OrqsWJ#)fVn76vDNC7?*DQKp~)p zEsra5+j69c5ve%oX>ue{UGm=Y=e|U(cbalNn)LW@1ypa-{LQBuHM;l8{nFc+=wYimc*N+{k^ zoHq9R(LEN7_BHOV^c^osO0^M_t1O9Jt;@kETG9Sq;6W!b$Jq*m@90O^TJ0X=D=ra+_Hxsh zbWxCsJ_-e6*u_kUq%OR#iU)ikqa}+=vhs-Xw))e-*^Y3Vz*~6<`1*M% zFmi}n08(8z{<_oQ$uMx{WrfpqM#vPtQ>93FCRZl(uhlPcoxYK<|Jf65|CGSw4sN>C z^naPxM5fW@AEQhSiGxlOILi6BOfS&h20xTwFrrJfoK7_2=Itkh z&f)259vhP|Nf1zAxjE~IBWvg2&+eZxP`x-q{}D@qw(LNQGB|Y#wW`uBDNMMa!AqS| z)RFLj&SPvxNK4_8w{~p(63@^F5nujWr;vw4PIourSqdqkL$b3&O1eAP!~Vc4A8KV~ zm`#k1dYiG6@g9Zv?0RSUWsTzF(HgW6=sscMC5cvw;EYWc%YT^@_&50iu(sz@I`ybj z?Ags<#|)N8(9|c{)>Z|qFj|py2=87ARizB+q{jvT3CoA}#xF0@Q7dcH zeuM7|+`@{WuTf;m8VU_7~82_lt$qsEaP&U z1kbsB3K?_!%x;H_?z;))RlM2*_*SO&a6 z1pbgGrC=8_%L1-l3BV=p82tGhqNZ066DjmF@uymVoph)5lfBdR09#3}>ix=5T}JXp z&3oESr1$L#cfn0>{Skr##gUPeu8uvJ(%|;WP+Lz|%PlxY$`O0DR8{D6RbJ(%;kwE5 zo+bxKIXc;4AfH9ghw}g#YHu%!Ozp^6LSc4uqghq>=L7WZ!MPgm6^1;W@DcJ2$#4Ld z;F8;7AX9w}>D@nmwg2On#e>%+A-cEtQ*QKWf4C~YPt?gt|Jj3TOXaMj*4vDT-m=xW zyCdVG2l9Sc;Bmn$u9dnm_Z60og5VpbN3xH&4T&Szm!6a4_vDDNUlq8!GGc>_wZ&@+ z4X)J3L9UT&Hp5u6#yh{_;9vwX$!6q)KNpPy<>DyfgvR);FX{w30+3JTH__WSLrNGI z4|n(}#O$<@i`KZU%M~p)Y5z&Zr~C8tFr^6IRX#L+O?BIc^ARty@1MYEB}QnJEm1+* zX}9@9q!?n1qZXu7LBUr*nuQKEVWsU zMSmX|W)aS^zvm4yWHeB08DJg`T$s8zY4b6I;gbdC59@HO*u=r4gVEv3nc677VX%hDRlN*<^)#jP zrq`HFr(hc|85IU=6sZ2~?epyDvC1db*=5FZ8f`uxF=d*O31pmtQOYoplAw>&9@e&4 z6}wEf*Bch|<6t?EA7%v23H_VMNj1t^Dedg4GMn<86xOfykyoNtoH+_6IzR^XvEwp_ z)KFm`a{}4r#4k)g_rrcFsE8j5RG(burzL9MKN00sV3Y><-X>9!DrT|-fSC**gz9xs z{@zfoh~soc>(xW=-V{20oH@dAFU>NZe-xA-z;K_sg$;Uo`JTv~@FtfF!0-@*1!ypq zyjS@Go)a8l?&;qNl3q@JGV9tEQIa~`{3-`2Xl`^RKXrGs9*J>(h^uZ5LHc_`hh zIwLA>bH?!e$#g<)(a$cxq#G6ozEZ`u@Lf-E-uDNIP8 zIV^@e?E=ds`te8x4I?_!+ZqjoEMat5&3JNcuNXF{mdA(5{n05+yPFaha<0R5A$7Je z*O|CWqWbU5F`IPPlDlnUlnOtW2By{MI@HG`t|=w8hZt8RDBPPjTi9dIcb-k^@~k{q zT6qV-y)YM>UfXgst@-gX>ENPt*_rnAIeu?4q=9*=xi8<^vRk6;SvFlRLzZyYc+zRN z_u_NJY4zxb5S(IA#Iv4Ex=|r}SE#HCQ zd4{ifJWseUm2a@NCRMhDhk={j!>17~>kE3WJN;0r-R zwX4qHq;KSOTVWTUU+Z$OxLJ+DMK_mYUtKpH@k7&eK2RGA_oet&;XE8W0BF z1NP(ra-BxLGqyLf(Y5EZy*mb!o-94;*q(D&{7vfBMctQ?Y^JWeO_!RqTa5pE+W*=R zBVMW)VI)V;LxjV9eV`CI@0IIRI7;}j&eMw;*f=T9Kl1F^&-@>eiw;gYC#Z(Du zxP+48=FBJb11p7i6y7k`eL;C`_%rZ+UmMBkpg%hy(BypL=p3n8c74XI81=neL!EM& zf660z53*?bK)D$HmPx1I|DXa{q9~#Z2cM$7js+Qq$A_`?3scCiZG^)FbZ1`qBUAeq z;kOvh6jPr!Rw+`KWM+nMjfk>KlO2cLtZ4}8ishaO2A6cG3sGtYr2?-_Sag9cF3NX5 znpCPwbjertMXr4pv&7Jmu(}4JLN|dc{IP=^5`v{pcsAlwwsp|BjH?2ikkx}rUde%T zZ=%QR1IY$L_^s4bmD=gU%dUG$u++tWS5cDOJ~}LNvRBwc56g*=U;+7t0!`LrCiUL_ zXxdbdf@BvO4?+xYoWPT=9*W$QjN?VrI2y=nH#Ks?N9xuZC;*r}(rWscky$BWZ-66CKLN(VA<_!uJKx~&A5 zkRA6MjOD0#3=%B}F4jNukP1s?M=z4hjT#TC$~Y4p zdMeh`%tFdzMYpHk)+9Ck-ZO`7yU@*2;4LYizVBPq3XMwYbuklEvlI)_K#j{6b9x)_ zFj-Ky8pm2AkjU+gG!CP=sIXy5QYiKNUOZuO7bub-lPz0w7tbX(cu}bjo(_Sndd_uLxTw~9ZE|ll_nrUwiPdNgj6}WAZ ztZprFXuZV~%_-`V3Wu6`F$DZk`w@+(5rMWi;;lh)bg7O#O+cq!Sw;6NMYrhu{1R=3~gdg9Ry^0R1)RRR^4h zYKfhK9R)yS4q_5OolX^<+ff3xHF z^5~kaJ3d1~Q;rd-34WtAot^Nu)l36TMaj0q-kJ<(&CGTH%&K77O1;1W^P9)DY2Akx z;T(D~3S3054a-*}DC1Q?QY~fwZFR`UriE>PPQWDnz$B{`a6a~eDRY(7Vk-fx_ zVGNopallNJkoh)=G!lNkg%2b1k!Rr3fo0?#%w~M>WZBP|Jem-=p2hKwM*V}hl|X3n zU!@G|La3j`?oS;aO;Y{}Joo}n#hQf#010}S;2!{YMIlJto4x(mRzd8H-efx9FMUkf zGq?&8v?yLRb?OXD4Qi&Tz}?zm(1fum@`RAzr<#QgLmfc!UnH!7kcG71oH9#rrS+5@ zJnxx?qgWY{etl?;ijpXo+t;n}ywhJI0-IXeyW;!g{sdKXqiwn;5r*hB^IaLdRv{$5 z$Sv(_W2C??-P@tuN|l+im9kMu|0Qw`2ZA#njj?mY)y@XbAysIHlj?@Z#Z!88&=2qG z1ETOF!K;6A?vwwAVwq0VV7@eA0T3WdEdPmXN(ys|?zYjgbT>IOr*#BYNhYF6S81&3 zhebni0CPN1Yj0+XzPA(4o^5I_?hkJ!po(!RO>qwC?^{*Y-qfo>h3n1ksL{g7Oiruu z7-!1eNl}f33}c2V%iLZ3qaI|z=df%|wE^>l4@3J@&^!3!t{KPM$J8%~ac;~jE6lQL zWDn$!spNCdw^X(@#-k?Aul5=~n^b$8DVsC5F4DCEdos$b#VG6Wd<;{qmBbj2Tl#aT zCCLf?YPX$vy+Wc%$U4gQOiL#zB)F5cv-z@9 z!UemQF`Qx-7%%9gOoe(V!n0Ij#R^KcTGamIwmy*pi${W>Lov2$0>{C7b5K6Zi+3mV zo#Fo9Z^h6m#9xwSbNcPYZjlMo54zLb%yO8!`6ZaFCZDixFFYA5tTrxji4am zUId{S@J*Luu}2rvuJ(;{pb|ID^yYGL39&X))fcy#A*#ggcDz#r+Lx{g*>=^_Co#u9uBEdthQ2!no z+K0@~$fG^f=Ky>PTAWG7mI~pUAvlQ3^L{bW-&*`jDC~L{oG8_5gb%tHIhhYdzf(T< z={Cf4a@1(>uRmXg&t$|i)dVOJI*sxqW}P;Ay~@g+0-pe_K}a7AT(4+Tm4v$T6Lzsk z5Oqn>#|Q*+zy{~m)Oq0HkM6{nr>^J2>_CzwtOP^z7-@7AA9xMlS=*=k9)+>Y+)Ff} z=R;d+O@6`tM9BLaau><^JadLDQ{;C8IHz2Sz7B zeocKi23uUZU9p(+RQF~k$tgaxQbndUEg2Dyrl@y-)WT`8W?goUBKe;?+gJRPH3Ct3 zI{L+y0r8%{$?L8}*AmA&mtn_J=D7Bh=`$uW$@L$py4dDH$*SmNu+?m0CR5(9Oew-6 zaz_MeM1(K=;&0w1qCy-BmOWT7m#H1BA*K9lgDNBR>H{oxxV%~AW0c6L8?J=Ozt`Y` zbm=|wSvW+tY74DGFBN&e7DZe=7*u~c2nBUKZbzn!FG8K^uvh6^IVx3EG{^NpNfi?%w@hz1z=-ns6Lqzcs z-G59x=%xO^@7LO{eId>{8@dWphY}kwgs1znTslslyET%KPuuLK|cI8On!apFd2j=0VxJ8E-NHKPhC>12*wYbH~Z_gIPe3g=i0 zfP%&93u40Hl?bWE?uM`43&kx}aEtFLeo+Q4+Jf`J4L9T7tE=9lysMK5 zYFee-dXSgWWLI?&*mR8m**B}o6wPDo_?nKCy(44t4_UxXMWh|vnI_gZG?R?p3;O0x z_CE^wM|1sUK0R9mW=54F*DiBrZ`5O#d;+CdTOh-dMc79Q!et*FY?PLr|FWKYE{TnQ zU(bQF*`yGe=#6;#sUzMG-cOv5^U+$%ov|1tCqi(MTJ|2RDNhq-KQl?7QSKY$d+IO1 zoy_nsojXSREQlelW5e=GyW4MQnE0t;&Qwbyms}8hmROc-+9e^SZ!6`z;5HO_PP!>_ z&TQIH^wu`f^%9|nW>X?Lc7pD)%i?g(H@U^Qi!^c@v@=xmK{8#i&UjJr<3L7!Lo8$APMp$BaZ^Ec^Hv;F}dO1^vY&N-fq^`Dz#CO@h{5I zH|KrhTCn$#_ir&FIc*Zah%gjfmL?qzfo9zb1`DM3%%-CTXAog?doF`lIhSk8OrZ6f zIyXTBXoSy>fv8A8Ig>G+$D?(}eUPOCTNk&thG5=z+pY$XDLE*&Kwo~YfvDg$u`5j& z>+abJhr}jd#(%jBC`gM7y8yg*cz_-Oajp|XsubxGzv019NZF!o5KxAspD$kMR9U;-DGoqxmb!;@ zI&4-eKer)a7VhW!F)tcj%ae9r{7Apn{5{(8(&}0iNnvuJ7Z7azj1qaee|*IbvBIO} z&5;jarYn_4ApP=`RfouZN#Rg!EeRE?{^W(HSfm!EMlHdT|0TG0bAvmy8Hw;C` zsj3WNd`bJhw7eL63F9~dv1H<0k~yAQL&i6`dZ!yj;0}lx*(ueB2OT70(|q|)Rpa6x zz9;j?sHZAZFeT9Lwe&+dCiTST&TW>Cf0|dov?}x~A*8^QndS~qMpvjHmFLGxB%$+Z z8k}V*XcJafOh!;RoBd{;Rle2S`K7RQP_zhe=n8K?5kz(BUcsgOCe!qGZhGnjss~Fw zkdBQqo;Mq_y-2)>!s{w?x-b^p?vRI^ju4uN;v=X38Tm z(GD;6Wy$YzppZi->RrvJ)?=A6VUY$Z$+|(wg+>XX?zSzdK~O#^m?QdHn%wOSF%yu+ zvQ3Z`4GjAE_j zV}e3YK4q(BOJZZa)-c0A-X>3iE3`bY;g-0$vrAkfai8!Y5cCZp&e>{UPWQZBPKT4M z;R+0G({jw@Ck3p%Lpn}{oy-QmxGEgy)f0@P->C@+h3yNw$&I0LyBGK-@}$V}=(9VV!BspX%--bGw%L$ryYL{*B*~ci=E0ks@TSlGd^Mjtte75*gMd zGh615t>ULbrk(rU;}C$~fanO!*}f;g9-CCLi{8Szbo>miMA<4fZUFSTaFeItPZ08B zej$YmS zuyKyq-PiEcg5n<7>bbrlvL-h{=`LOiQCT{9g+%V^_@g)l0LylRL23m;WT?Vbk) zR13Vh>ukz*#WdHy(+oJsSU);G$R>sK} zmXhHLQN@&tJ;}UjxFG9eqe`w(If#@b!{$Va2Z?@4#+qPHCL4V1LSSFg=tzUHn^80> z7}!g-W!=9ie7hI@Lv|qDNoN7vFv|tRt)YYjIKj9w74SDwVvPc4cQ@gh7#)`mbB9#7 zk*DreCf^08cmcISnJB8RXYZOO{;h3=R~R!F_mwLYa3FLgfFz?*Ji2fvk*9GZL7rGN zrq=d?*wlb&#U9zsDb>h0ydCLbXsI#7u*@9QdN03YT33Sl?lU;{hM^)HHP+hO>W&==RsN(~chEcwCx8CyWFC zEJtukX?~4>V~d>VoF1z?W%(Fis~%|gY1gWM&lo{?uiPJ&RA1IOG7g`BV`n(9paVK` z?F0}r&JcsKWU!D;Fmv)8e_X$Vr+s!-^THjvmleb|gKNEmU92A%?U6VdG5pY|LG=*O zZNCZi6h@Jtzy!73`T49grr#B<*c{5p*5c%myF9Kb=Xx(F&o6KV`sZ8>cEuEdU*Z>G)9AQln{$xTA z>ms?%(mg+D*(Ab+f46jY76n(a%1n*%uPbdn1#0<-Oi>J9)lo=V z_GW7_g@{W`*GCVVogpYWm5>g`$<6&CVmE1i9~9LU;^?HC)UNxfsX;hY+YuKLhcRD{ zR-)}thx4f!sJG=tLPNBx?V9DTgG!^z>SroPrxi&2;<2&p{GU;~eIPc_pPjOy^)5vWZ0eZb<8K8Z|&G*-*et(P1?B?Bg#;fS=Wn}b1uVrmI4A785 z6*0u6du^I!r7K(Qw_nI*h_$^8&cD#B->CL1k-`kEq5HE5R1;Vau8>@|>;{7ENbygT zrxROMT%^we@<_;1cC#34oPg3Tu?Pm?>vy3{%+g~Sfphs$5q4%v{}jd< zapkNLrKy2UmdNBM1iXv<)`j|^o#x%?AuV@CC9wHU%OOH1k^LlfRg{bDIj#8Cn_cxT zGW*7s(a(nnoqTlKmW2MwZJYp0q@T5}Mji3ORFCM7UMPAHHxj6Na^`D2b_~rR;Yng? z)%fQW0@ex=3I5EwMN4O<4$~|g4``$LH|7}_XuA2Gse-k`?${c#;5&7^#uF}zfyJi@ zgrc^);KEo6<&+bn0=`hfL5NB;Y6f|-~KypC$1&y-#x;E!g5C@9%; zRkJX(zJSPiN9b~72EcT=BGO#-5VUJ&#!}HI?a^g3Y|b@X=eshr3D4;To(gxeq)>4F<(SDBFp^q!##9ln$Lwc64o*A7pkP4WTHfq)_zbnO5)!R6pSEjY zm}##Xrw^Z!Hu?tWR;o=En}lr21@0ZbM|$EmbyC{nOiN&7z0+Js;z)6es&mk{2X zqXN7Rps0-AijJErnL_87?6l%@KlHpLRqJAg0pqz?{fU>-O}wQ9r}@<5>E zRiR-^iOr5QHcmsN*+n^>2x|E6TLnL9BOY&;E+Kgff=hyAZ=PDroS{OR=(!?nFN2_#B4m3@R}#{=E-1sIzulm z8*1qQ3o-5^2k1%z?#$ur_9ct3(e1r%-Zas}bImtco;wk&7Z?ctwC0-PaaKTP9;IgW zLocqpc=edg^cpmz`OYt6SU!+qEzmgY0tfIYVSE(ux)Xch5DbzUCTH86s-Q{^!v zuy`Wca`dE71Hz{AO%QMYPk0BO`2B?*e)T_u+K{4&P;m&zV#txaPTwzNwD$oPtj8JN zwjhVSvVsD_!d~!oP+c&ZWDLo-VjzU=Kj`ytow;|Mn!Yx*I7OE$EoHi_uh5ismeKD` zP;qI9bY7PAW|Qh33(1F$7;%tq1!iA0BMs7U=`+&hCPYrJF!aglUj1Q50{v+h%)W_O z=q501rs9y)y|}J>Tf2*xXr!nFVUIi(@kV0ngBGorIGi}5q4U`>7EvGUy&^7pX=BFT^vdO7hcqMqd_OCz=Nn7nlK*j);a-Cp z)R_DKY$3r&V@H46QLb!EkJOnkP_GTuZ*zK>84Lx}>eb;D&TBvPIj@Twm8{Z^ z(QsBJADAr4;QIw90|IKD0|&o|$jR7-{dW3ZqTXSN9)O+Z(pdkpi#>X%uke`}2jP5^ zR2RJzc|o6)XGXfNpBq zT1{%jucsH3Up#gixFjSxS23UFwllo=>~xOg_*8yQ1nbhP*FYkL?`2};?2Jch>Q)?8vULdx>Vwpta*8b_&#wi(=?IDcRu82Ge7q|ESO`0 z9hYS9qw0w)m%0NhT(aYGTeEzj$>LH6L^0EyQZFN6!0BVu>tv19SzeoG6m4o9wXIsV ziM~>*AtopCj#bzd(Dbymrny|m-UQR$cmP^iA7tzM!m%4JFjVr|=SV^31mLdDZjNT5=MYHOob{q*doHGn*r z57UNwy-Hck)(#N>q|}$lkF2?&`mi54(uEvD+tIo5wdW2xX&gItJzc7gBaPWUQ`3?s6q5ost#R@XxYNU{fMfGR8 zXELgOlip%$odsKFy?*{v`-Idu%jp@vo|>*C1Ct}7-}YRnb*R-#`3{tBV+&%|m?AyQ z6EDX4=+XoHrR4iiYMb!XTw;fTRMgb$(g&2~yzZhAE+;NMXom0Z9-qfGZ92+n2P;1I zf%sug$VA4VhF3cx$ud{%s~X;G-HsA2=+*A)*%tP#)VB9U>TXM-j=zuWIvi)(F@QG(uHl-4N*{{E1R6$=Nc( z8t1+zRN+y_wvEr#Oho_Q(M#VPAekiJZsRBZ=1#}B%EY60>TP}ztN^$>=I_bD*?drK zDMPnjkD-M4dSOo{5&3#cmmnlBZ6YUrW*Pgq!Uhx&s-mo$h{)8aeG9r~Av)CCx=q_~ z2eLUpk=)i?*z|HgFRHrO_dDd{q45+$P=H4)$$OBkc)ia6{RhHV{97KW*-<)l#Eg&k z`@6$_AmEL#drsh41t9uM(ymCkW4fGhwmAvK3q)#~m0$W1MbsIHjgyL?PYDoQvyG5Oy zZYyo?u!E+hOX*1gED%lXLL?SEQ zVQ=mA1rjqGD&e@wTRMNji%=Ef5cwGhj3V~f$U=~9Tbu_(5_l=|>98`8Lj)nc^8+2} zx^!fCvOjV}f&6VJ>H4Jc!*Srsj6_LM8C6kf20Ox+E^1&?b?R*wGeZS(9!=7FzCn)X z4nG)~K&Tkv@$LWEoNuqH2q;h5;V6o#qYiV@gVESfWO6KxOKXS(B#+;{mg%)DY_L~R zuA_-Vv?>(z#Klh5?tl$tj3Z>s0m~{Vc|Y~>uzZIY3s@&XE8DOlP3~)V5T;|;K*S{!XI;FoffLNqlQasW8F!Fwex2Hfm^i{Ud8=cy9!Dq zq`0(1B&s;3f4w)lKJ8Pe8PKJtUt4#Q^=Ry>q-%uQ^BRMNW-OWl&;Q)kX$J*%{$1{! z6W=1v2^^e1m_(YXS@AwnV}V}9&RVhyE@|0xAQhSHo4MV}lKm0}!=1T7T*a&*%+J_R zwc>jC)Kle!(47cbqgD{6-DjU?f!s{71q!*%4@=$JO<<4kcUQk|Jhpp*hCQ@H{7OAhB0F*FceS- za`P;anV|q&7O?d(m1Yuz9PisF+qN-jMH5|IQEg;&?fm7;P@LDl(i}-;tcgVVH18%N zEc!JjbqGC)Hk2|WmWlZi1!WRI?HfsuW;wW`Q!VSZC)+$96Rlqeh{yU*L4$qb*kijNaP2ghV|6E|olh%%P)R=(hk)fl*rHOznm) zX~qEmKLEgZIsvD12^}(RnWsNbXQ#it(oN8e1pX1M-9mWHIm>t2RPVUjB>}ROxs^H* z*yMo12AK93C?`zM1jev%mRSifm?b@2>AwM^T~90z4ecy9S?y9y#Rb3*MQPv?@Ld?x zGDS)t6+7@N-tE`q{m$;EScVR1e!4Ttxv5TYUZI zh0vw@EA=_alb5fpiEck@sIKl2<-g+844`Z4hvS00tC5H>#A357gEB2fIz^vr8s&9a zO`1-o;}@{Z7%v**4Ycxa6czyNWqv$hoXPp|lnT#Cu7#;c%*SaQ;2G!^WI|Vk$mpf_ z4s2?p7q`vq6D@C&NQ8-o@$r*hqt=0U{HnE`bd9^<13{6Zm^PzKLUaJ6-Ogw-hOc%e zn8ddrJRwR))RIJ7+O?N{lh0GE?XtUQU}=wN~N8Z z2msNkMCb=b!fqdbT*B{kt9obCp>z#JADaH~A1E!QQk`Ulay*|t?dpSw!%=@CRYa}WBR*H;SU-8&KJ6Ig};1G5`X?~V%YQ>9LAOI@8L7>4$2 zr_jDik19w3KQNcp6%Q#?Jp_OLXD!x6Gto>&g$bX3#j*KG1wf;evZf$uV9moQ>IJHE zdg?;G#JVLC6PpfspUy=tb(1y(XGg0o-?!Ea=ZugkyJ{fiNI{6Zn22{1ssTU&X>Ss7 z%!S0+VXuSGp3b==(R6^-?~fNhwt5WHxio{e_mus-*6s7RcN59q0$I$*K3#J!rwscE zG??iP(5`EA>4d3BCUR!ISL8k;dD3C1O zc0`WVGP&agRxq0?4h{9lmm#gTVv|aiBuFs+wc$S5Hb*^l-}gFAFgjNi-2?^4+zFJ9 zT~kjq6KDVvW$rH&mG)}fC|m-kzO1P3cWv9kg|oIrFI_Kc{3>w6!Sx(}TEfqEX#-n| z;Y@y9+dplf?NkBUi23;w8Wc;Tb^M^>yit803te$L1(#Xkl$1`4=XyhF;Dc!i5k zKI!rFdklS11P96%8F<_R6|=6^U=`$AYJ~)eFW1dsr&a1)Wmd9{R^^?ru>Whn4DAxW zfin|=ebh7fXu<%TZ1FswSfWqv0VhQ^UjpyQDB=yVKKI_r|B1${tGH_&*`y@l4IRNR zqJ;-FpKGxi+~n==dY8&Dua3%{lXKTP^K?}Yi*+$ft5_`AhluY7R6_9OOwTFO+0?I` zs7iFSz1WuZjJhDZr10JAz>_%Jj%P6zDq|R%)lgHGfuOE|a$Rct4$MOIWtH>}iTNx~Ai3V8r@N5u zT_8~rr=iyjtf;{>%008?bzyKDLR?08Wn@v)DYSLjOk-PQ*{(v~BYKk>(;afBZ1Sq)P> zk$>~#h?5|s#Sv=_=Xy98X~p~-yKvfsV6aW3hvoSc z3G%6ULW6R9PPT3ckpPf;pahcQlq}H4@TR+26NAY=O=_9XlOaj@E106GmV#?tH@n3M zIoZv?iBU0$eWdhKQQei?FcCZUe5B(&A^D zd~D{;v6_^v_Wcq`;v!wZurgMc+@G>1L?4s2-*mOCxv~S7Nwp!OOpCt@8eHN~9sG@3 zuIb5xJ_Z?wL`-ryrg83StDNxo13<8J>Xo4KDBt5_D5%elS;t6cyg zVbJplS3OC-yAp{?fi@s^r8%xIz9xPEi6L^O(5krvCIcL8m-D<4O8}mjl7BJ!(;om_uemSb%?vQ)h$&X3I^E~jjbuO45q$*bMi{uNPLKmDxwN@)p(@2# z--lx{PYfILqqW}G1p_*1I`j2c1Q7mNj?=3C+Dj9B13Q|}=%I)$l8GEM14MIx(bPdk z2%x&aa!&<-pphc?ca4njjuhpeR=T|-%Ouxt{PcmwIQmd3Yd*$1ze%V=tybD=Ka)-a zbz^HwC5rhv^K-+VWns|eb5PRurM6zX5c-ysQ;BX^@-p3Ss;}JK&6=0RJn>J*%2H@{ ztM)!2OI8ij%}0zl*SG2G6-4(jpG}O@rqrPaZtLuUf(r#g_Q$;aphN-unN;w|DxG@C zB(XcU?y(aNd4C6niyY^{aPb%0WbH7`=GxV#KW0%|XC(N9ROtw|AY#Q3@B*!Ein7r_L=^^m9OTHphog zmX5jP*|8~(r&y)A^zdD*8O*w=z z4a@|vDuF(oi}q))SLUihqergTn}a##6nCI-VR0o%>ox2bf<-*UZ zsphaq9W`!}SJMGCEwtlIz4h{%J=n#1?R=B=c<-f~tA*Huy*kZO|9OOxvdo=QSH$Uf z!2xQ##*qlFkZLKHrT5<#HtyiB!DPuUk zyXt55bQc%yO6?FOd^8f=BgeuLdsQQ}j_=xECNc*y`3qmLkze`L)O+1WKsIJ8HlC|J zd&BS`=J}M~!(IL;Pls_!m3O;?wiN~&_25xoHRR~8{~^T|p>5tXub57cu3j$H^7dP* zGWdQ{hrVds?x%I<@exdVzeV&c*yJe3bEtdspN^xarqgmcG_?DO5E)OLKAmC6G>&|bG*{%&oI`XZbR|G|+9zbIZq>Rru~s|tji z4YQoJGK%Q!Ft%HzC6+ui(mWct^#rG%onu2t>zF4)Z!|v2ji!PwXI5-ja5K3O>Ev7=6PoABUN@r+0?Z4=QG6!w3&BnnIm`+_^{=f zeZQ2uA(F46e*m=H&{Ptv)u}a-kg{t3%C)pzVh zsBrhYefN&yZ3cX%U|vGZNYI!*u5gUDF$AyLq=(^ z7V1{u7m#S?d-0lKNxPjeRq2}Mp>kWQmZj4H?Z8VMXtmkEEe+Gm8J)EVQ&EnjR68SE zu24$1!lQW9ySehe}w(CWNJa-PMZhJ<++*tBXxGkYpfxkMwj$l0j3~TZUeL^ z{Ms?~=K1j>E$i+NZaq0rJAv z)UZ*v&G#%<=-N>XNAhNxoiq}OY{i};5*cX#3Ga=tl3E@AemB+iS=HQQPk?I)d6S|b zNUR~A`MAImtF&%9$y1f$5iuzrtmJHC_Q{K{>JA{Ud=Pl%26nYtV$O-S7bmi!{9kwz zT;C9@$HCGtWBM%Bus=dfES6NK{NK!nx!;oj0;tEwMJ?4$W`>8U*^9sJ8y3J@+rxAB z*Uq}X1^2I}N-o1uq9#3pX1_U#yTDSAetE^%#0>M%5vMiUw*PO3&y(+SGrigfSRNL9 z4Ybq83ivY|R#9NpI06shk{e1Cu}*;hH68XfLDy$%pEmdar`J>r$W}W2D9nqW{$T_M zlc5ArbzUyT6fbV^g21u9MeG^{Tm}o7^2>pD0Cvz_qjG?GMbW162nfNNTOAT@ROL%030V;ZJc{ks|+n=*05QxSF!!d$}YH%H4PJ6yVRmg$5`US0t7_v+BueR*w5DX-OUT zMXL`I6@S_xnN@ZR%JXKUfH=C$SdEMq3`r=8n3j*l@sYc4t83NsH1fsgT;)+UP2?;x zufZ(R5_8VSto@LyTY0kJkHGzADQsj|oh4Z9)_iEtAm{tWf5iER>5|{V?>QpzR2?mK zDrnLl_eLTgLOO=PYJ7tr~)8;Mwk<>*^O&fsR&A=#ewJO{@0avvPL zfW7g&Of4>p-*!P{Z$P>U8^~AkHS&RgTyTC&pMPIF-=H3>nTT+-R}k>&Df(AbcnS(X zYYVASiO-N7ZXKb0=)Zz^=LV=X!4wpaGg(%LkTWk&+AqQVPb2jP^5}5u;GyBHfsSor*`QSK>ozzr|bpi=;_{?NaX5%2k zQw+AjZELVb#+t*GJeIPl1V`RqY|7KRBdnZ#^f^}sMJk_}1Xi0}UVaraPxcH-F8xUUmVX}aD1!4{YgG@CZ1 zSOheeXRO}=uN!gb@0HkNw3F6|&ssFw#55fpM+c4Z8nXj$9|(E+fQnY0yuIDz`TGld z9R{yl0FJT7BoB>1(AlY_^-N@K`ioxHWB9Mh)xkdKiZD2d;#DRg1M|Q6NXcwk)B)~c z=ab;;t{v*KHs8(Mc4M*o{~QHCKX3;OF60q)MTSM1spq8cQEuz>$(L_Zd>ZNz!fxi< zKzm4Nu3h3^>M0DCXkM3@Hs32<@W@;G6Wwdf&`I7xsV7-U)CW;5qT?w+^wSc3EgY@- zvE#F54H;BpWKn?bWagd4+hEH!2m;5lyFrARSaAc$uY!lkro3FVx%=7}>}}3hm`3~` zFf`h$c8J8c6LD?XTO({aV)rF_dI(6hfkUxbScO}c4MDRj`vydzf=}j#k6>8o-R0s8 z&`cnzULOmOI}r5xMc-{mJzx?@Os(pA_I!pST8HL9+DsI0N@{YLM9+QG$*P}f>90~G z#T?||Z^`hRL|o*36urp7%r~8QtyV9 z{)gevCEvr$B7{f{33dPeL?NYW+=BW59po5sD(F!L_ccXG1q=gV#(wbnN1U+ zPIDRQK>#bSbB+3IB<Q;bbE+3)8e&Y zEIo4ATzh=?=4wxBgcrZqFJ@(#Bn{RPXincYMVMV+{O1edCf8I66t7C|Vc~?=S%9?M z<02ncwyF6g`CaIFycV`25a6`5&fZX+9(2*^1>isc;rTdTEe#vLS6Q7mh8%uilCm_| zb)Gu~)kVbp+Y=76#?P^Q4BsdbR$l1W?Cl$S>`D~w2G<9vaYXx5 zM?phMMRytTMa&^c+0qyUFYHLCG&0E`(3MXwj0T$`S}RjGHAf1?dNAWPgz=7mz*&f+ zGzt)`{B^b#Wp$tL<;6?I1hML~>8ijulNM$|$r*Z{4lQ7im&WNz*6jQ)SuF7~&-z=| zW}LvQxYO=cy!seyH3nl_KGulosh!wnfXM|&8E34n9@|8(FwxcWZvmMitg%!cLHeyY z-Dz5Ar#f^7UXY>88XdX=@954#y|iV%lmBuniu`vnf@Ty{z%er?ywI0jD2G_TVTZ=z&w#Khl!rQynO5%A8u=0{vs$N(>X~q zXZNRan_hxPnc)?eGnPeW26MV*xyL;1-urIHoa|~_!N_)yC)ua+amzG?_D6D7GLmul zbRQh5!XT7A{byb0oYRyMasx$mD3dGy`vcO2W%uTUxj-Nwh3sf^D?l%9#?}*3ZBRY zCS7HsbcQEyr^H1kKlAIp(JFdjjRY}~wVAlFff+a^DYI_ORGAW(>qIJ2VtjqpOVO$O zOxG(V$3Orc-!#|XwUdvn$408)tq-;j?`v8$9bO{yz#z3Kl7 z1Q7{zw5SQ!1{JwmOCK$!@z|_RWp@-qoFdOCf_%+zquQ;LSs7pB;&}#8>p+b;$8K|B zzxIilW!{Z@R!jjra#F{K;zg`r83iWX6yepd8#99@5+KWENmPi_I|~5Yfw_e3H;a(c zE6xnRZDAwFgvLl2b?q@fg?BD5OoKs1RTgf^Ii<%$-$YQ=uT$cxb+Z@x6u8eq4#(lT zyDg=?C*MTuW25&^8ANHvB}@-Ej+jhZ1P19aD%BMmMmRq&Jy-vnQCS^vkPUB1q0d0R z3~WZD%jjjqeGu;+4t^u&g*~eqXi@Ctv;$0V>|YT$qZwj`Lf}WqM@j0t04u@L0ZS z+?n2nq=Wi#s*CYKU{@PGPG z0#6FI#LiD_MqI(?^fZaJr*f{en!PYm&kgmA>8acz+z#?8Q4SzKK3oe(Oq%U#e14EP z3=ZLRB`rP4PYH|wRy9gNrLuUEX1yZ!B!lOdr5*vqY4MT_lwR7aEv>z^hXx{N3n6n7 zj$fiTUnvkzrIi@PSAhIUAd*IU?<31Lh~i>VFGy1o;$O*^6QUMd<7LV-Vo8xph$Ml= zDs1T4W%P!U8NRz_fK>cP;F9oPuE<)#3~1cwdMLPN8idk*^GkV5&`f+Wf>&ZpHOHDn zobKl%yM3P~^|EXlTvkUf<+%#`oqJ>SOQ)uH9oSeWsO=Bf`opf;$JLO>1?l4wlE6IPQ|%A^k1{frp+yN&^_N8MR7X2Sg;rYVTOB!lg55xpz~xj6 zcs8VhjOdwjYsP3|)1iONcj+;7kNPt))_^j8+a#24P{&}5zQ9pzdO?A$Q!jG5(@;GSE88NFwY?bWo$u&HglXS zzi{-@OgE5tQwWOAdNGygNxz9+p$Rx~$I7Sut>GPi2cINr3uQ@irfw}=w&w~uUbmB* z9l*6Sq>qmURQqsR?jU?)o->z{5poId=ZhoSJ`P#p6zrKWY4OP)8#V zry&4SKjJJ#Y8pCcA(wJoJq)T>)GFI2BQr?GVwO@E^z_RU`c(X6BgtDF+K{RG#<`45 z_?p`hCSD{orGRfAfU+B*`qSukbbyGhNBZfdLeApSIsXdHMyLdDFVR$%O>o>q_~ZWNXIh4q?`!{edrUI>1_``Qe2 z+6+JcO-iEIp%{H1#6NUMpuVn^ewK;HeGs~rp2ekNK8Fz!+es6^u^ljEn4D`Gn>zwA z+&fYWR4(`KC+-YDo2BgWX#?eno%q#nNc=Mzvw!BSQ?Xs(T%N)|P*zYhz6>JO5f#I9 z>^V&+(Mwfc5%A6pe@Tl?qg>|NW&ULY_j}qP07#cb4qR28dWeApO90?BBvpY78fu6b zZU@rtydTbanapXcnHpF@NupVaw}kdv=_J9g>24!9sE-EvSb9n$y3(P>0JCts#|+1< zc=g^CL?8h4H?_f8v&k9RMHdWC4pf>PjKvZpn5s7r}id{0HLr#t(}wtmmi29Y;B^yv}bn9RaBJUnK$zV+XUV)xg;cv|Aa=<&*MB zbBS)#&ep$m5*)Yd;=BBr60@o=Ejwz&&i^e|-5IxHJ7p(<|Cn&5oF*KN(r$iNr=E%U zHHv(=RzC8?F;MSzRqfHF7|BmQOfguM8F`k^Yz++n?Q_TD8Nud+T82B1MFD7*2)2 zJI42XpLQ{`F|_qtje~<9RxVr@{{qOY5h9)I$KT%-BnDV8WyD)@>=y8Fj} zn$z{0kk`e74HV=##tihVVHo*hNiT4%LXwe_nDE79LhA6g|BaaWsO4%glg&lOPlRi< zLIB4V(G}z1?V8lX z+@Z!0oP%L|5qvaK=_s$CGJ%*^SXAi4THBmMj=jwz@aLvDj?!xZDB+xC_BT$L8fZZC zLi~;uf6C%)giH}4b@q#z@|&oHM&pE%Jb`W6Dip1BYDUWeqW6r2L3(DcPfrWgR9C1* zoF#qArXtNa%_)dmOj*2>_+%+Q8%Inarlwvo<_(MmDjW~Wv^24mfmn-us2ej&n(ic; zN>@CrQElI?9TFx$VJa_>BT6>QB;G+pEhVAVlwmYgNegUyg>6P*Qw5cq2Dq?m)KiqX z)=w2QQD1uu_aF<+5v1V#DuCx-1XXvsnlONfUdCgg+2Na{A5N^*XMY)RLafoG&}vus zGl`y_*u7b~^-6NgtxQW2V_lo-bkkhk5($gi^j*e~8W`|uw!u-&PM?#B<%5Ev z5(Wl^)tqn|{k4_AMtFf2Nh$x`gX4>s@wjU6| zP&!(+*V=PBJpeh%q6CuaI*mdOpF*<+j}X_Yv-sT%DK)R$2LGN7NuK6k2lcF}%skfQ z^aT^SC5e3+p1NaEA%_`7;vv|x&<^chZ=EH+1e!T)AXJYsblwiU2Ma07+cs!aQ9M*% ztT6{alV6E%C^RUYbwtu7G+L-P)OlRLnr1i8cS1I%E2dn3d8m251GE+|(7VB~jVQg~ zg~*hATc4GO*J!QQI{7hQiU=fM1C|-$COJ#!X=Me|D;W1fM4w14d^mXfZT(dcc|3bd zx7JNVY*t5?{K;dT98WE>DXP^`j97rEJ8sx?XiVXiSIr$}z^_ceO_DO4xB+W~?|~Y4Y7bBzr0_3fpB%NZc-;aK z?$|=6ADBW**qEvBjBXq@48QdvU_cI~>efiI( zh6M6JFPj;{Blw1&%K?&AVOPz=7DHLTYbabn;&H{~g*!U+Y0M#%{~4f5!-_tf1&c+u zWY~{u@ztJ&kjt9NXS26~11h|eUPF&bWQD@BCGV4_4mQKZG_8vnA`sW)fLm&!ghQ3k zqlfVHjL9%-io0o&j;yho%?VJVl_YHCA{Jau(h`Mgx&b~*gtT42zOR6MYI2$)Od6xL ztt5SJ<1CqOUzjkeKTj;_;;%bVev}|ZpW=~LQ~IH=$75==3KPT&>^33>(sa$ z_x8*LlJ3l97X?`Qm)!o8Pl~AZ#iy9eukwG@ofB}-b6y*9#{M#Tv80{`)IQ4(2Z)2+ z5_bb}S2Ka?~r+IGZ8T8 zIupqRR)Ml4wbksW zS`dRk@!XTCRjNgwRu`NTRPByAL&ax(!76<*_i@G<@?PGAwZRb?nMzl#Qf9f5?Vica63&O&Zk@7*AfgnvkbeKY1CUpa@^RUsc(?(~=6 z!n7c-J`a=$<>B(xbo(d#Z$LmbHrW>0xTF{wa8$``WJK2nB7QmJ&M!bg^cTQG1U3`T zBOm`3DK@OHhUBQP{?5?NBPwzzr)z_?)OoHlo=J_)Nq9=WaDz*tX zOo&EZBq`?v|9GWY&*`!^L#Lwq6mHde05X?b5neFE>Q-`XuJX+vFz4Z7G62pK&R-|{ zLhE>8Pna^n>`dXZAAz)*4o}Nu*32LM(*C3;Tl}gWT}b7R0y^S;sY3;!t@V0JawX&@ zytqRnL~J51R&m$pFx{9nKVBctO%*&876h@2XZKUtz%O(`GQ92suDjS7&eF9%hW&a` zM^ZA=kkta?-K%T(D(DvZ4Ce&wxb8!HrMVGgw499I6P^`e+7NVPN)Ub=2*v1x2}m#Oxm zGD8UU00$w=J;p3JR=tt4Z0ws#ry37$tumeG;h zJ^ea8f0^=viSH3lYp@&c7m}7>BHqAyO+UH{jwSp}hB{J7Wh_Tf&31GA|09!z0a5+*><@IvmjXLXTs4<{G}8I z)Ug!Q(TuD=R=1Zla}1#JYS&V40QfeNYvas)ZwygSh{SQLt9l?FG*yi0H?tyO;n2(e?iD5kh8Bz<^YScCH$FnBa}=R)K~QS`}V0IJG~i!BV@ zmBLpj9dO>ih$cc8Y5!`h#8zb|DMSfiqOVXlx#F>*2Ji*FUb4-n*#82^00&f=V$EV} zJkg`2qD~t=&-KwZtPbu2g$S|+NxNSg%t$bg6qD=fg7Z1XP!)dnIOc0@U_G^G(x#rT zAN0VF14iMOI_K{{v%ZuwbC-3k0wK3bAam4rImUJyM`KEl@I&dJ(8flis z?%Aju=|0iaWg>I^FS;K{DxH3Yt7CAbWz=YOsz&uauwTs3^u^l+#;Igyojz~TGFG6X zJp;M!fktE?nsjYpss&uQ+t@oP6w>S*BCO;aOGvW9+T`{Rh>Mz>3~(R&*o|2ye!GP1 z|Iw*uRK8@^GrRymM->=GAObBiskv+W@i!TuAq`~}h(BhMFmlOpVjkgTS+4W(_KRs% zR~SGy!PhOI5Vv0>1YI_jg{Qnvf!8xinrlzi6AmN$@fOF5ZJdh7^0R<1Hc8Z>4rwX1 zrHMvC0mChq)fx4Nl+(#?Dy0AmX_Q}Te>mQaIOpsBTv(;qF{%(Yv|uf-va_Rce(4hi z+UZ!;wj}U_E~NQN=so*RB%3i|4CLV5E4uqzy5yxA)r#7UuyGHJ0?}xRiC}>zS8o_d zV;{;qq2vlryO(&Oj1!j^xLd13wFyuD%UD|9{CMq~vxr~16d>XJHVoB}d)glKn^X=a2hMS~&JbETW=kJx}F_n48YTxqh7 z600rX|9T%(PR(T9@w>sv7~Y5CIjfC(qvD#!Wd>50*hljn5317BV1M3fH-NVH*-&Ph zUPcm>kWRt0U;PYO#7pMd(4l9@qaTt%<#|pAa&0oRAmrOA);P+5fKfjJ1 zuKilTO9U-Eh*+i^7oL!BumZ60F2dtQ6v>=VL>K#S%ukq|)rWhWWM8Za{A?@kgbd4X z-I72f-Fy-l>z&I9x_yii--Tu~(xatc-`$7T{7_^ck$e+QS%wu{>I6@u#-3e&pThZpPI%z*JO%qH#@v?wEn>^0)wVoHrADo!tOb?x?W$RjRFWGH{J4T zo`mefjv)vLm1+%vaykmOC`S)=snQVm8a02Bx%7n{HH`-V2T9@!usv2|=>RpVYe`fH2E6 zr3R7G@LkE#g_uujH&Qn(m=}WZlIfwc(snFNIZZonB33RZr?REiPU-zoAfAqQ-y}VT zSllb;G)#w|Qsc$~t=k_cFHA2Zv+zc!_FrACF2_mn+af#ArUY97W{a|5U=RV`SuqRW zOmx$?jbyb;)=-M5io1w4z21~eCu@>$hNV;r5_Xt-kc7*wsgwpDysD*&BwUnO-Y_L~ z>bV?@Vo?0IOse4{qEBFu*_g=6r9l-k`zfb1cn_I={4> z$soik-!;2VY0MFYHp^l6AmTj|+ZA2=f#3q%hH8`Tw>bjWJH zG2`T0*Fn$r;hdU9Sf1_sJ3Z|z&!tnq$%>v>G=JyREji%N!djXP-_kx95TYETYEq_P zTUjblB|pqPjpD{kOHJ0D_Ga1(Ye7NEsOWcfHkW5pd+ejnKONk>j9VhjyMBz_p)9Wd zq|51~?UsbLy=7POyM=?5MMYT}ochDY$K`z@(Z+!>wko11&H{tqP5wJRFwUQIq)2LY zu*>k6=atO1=5D-zR*KB12c}XyE5BZNdzT7|@CXj*za%I*|Q=Grq z7AR=kA>DRocl3j&MDYzt5;{pokUM56btZ!YA>39hk2MKO>~lNW`qtIL&jcFG(#W4h zk(Hh}EVD%0DPssH<4!BR+c2T;?eb4NU4dN>U7}r`HB_w#i2NB-O$2(q0DJfT;_h%= zXVpt8FelYD$9WW_%h_lUl)XF$Bzs}m0p2Qrby2kyN3OTv@W+mL$g49O>7IO1F0Dil z;ZJTh!j=LvqYypizZddagDs-v&)E2Zky`_}bTN90V-4-Cyv82LF0yKk>iqWKZ^pZv+yraKgN;QpPC8A-jw(W*s!`>=IU1}u)>Wma4DQ3O|v7&o*6N6(+M<5<#YR zmYn0#AIrP@g6InQBd>Ulw@neOTq1js9PP(|GS6eZLHSVq+nAnx%aMfe2S$smn9=^w zX9jleRU22m!5{-{4P>LS6jo1Bp_3rd?*_M^$-PTeT6+4(cF;n0H?Xw9&{|amT1pyN zJBe3^@A+^gK1PQ#!btoDQv92aHvP>gsP(z4MW@1CYe1qn>sljmu_zcAJE&hfpt@PC zJrwV$vf|5j{ORueZ~&r2@uJT>5&Cmq`Yv;Vo0xnL7|Y$mGJRac{LvzR{#!A}t4_7} zlCtgQRJ?7WT_QqAndIJsYU1_TKJc}xlEr}vpl!#K*rV25)<=#(qINlG<3g;4m{ z9=%rEcFkfyMu>W5Bk(caEKaSJjgPw%%ISzoAb5r}el*yF(IG?UFcH-BGWJqmKYbcO zdG<;U@!kbm`sRQnoOBA{7(vpo2n#H;ZHBeael<6cF&$Nx9#y1yl-i@slHOPqj)P)g~aCl zC_3&!0&agNaFYhqIRv9~62kCN74s~DjP3trwYN77slp&YMR2N{ntyC(-+CBV3%ACsms*lJ{^xW%HNkyHV+O*ROG_2f%EPR2Q1ElO_PbygIf%uTx+-w97G;V*k2$CMY)%h9yV2e7Ub=i2`A0V=)f?>R5Y=7FXbDHo$M`~!mT3VLJ_ig ziRT-r`yX#SXo&X6@;D%o@vLA4?^tM$;h2Ht2ds;oA>#wW8Uoi;CowgnZWaK0LM1sY zU9|I8V7isE&Lu;-^=G0Ep<701j^&O7Zmy=|1Rgr)RVh(LX+Jqvuarv#_PNeIdjD2K zwSd`s{{lChQ=zoI3Zy%9fAF29Ou0Or;8Y#=BUwlmYsvUnJ6iN)&j7H-YrNz)D$e4{ z$k3%p>|h`fMSdGih1NXpVUi($I64bUs+Ms=DHwH$z0pI0V%p%jb`yu!T|i?VH=p1jfQ9@RhSxQc&pI>I080hn;r-0he>oHm-M;FA zp~ez0aA7=XWEuhy4IR@iVBS_ehcGXgcBe>JI_QJq7TPHdC2$@Rq#uRBs(X z(UzD2(hydnbB)e3+9tGfk1hKE9X`%4=#`gF)Nu=w;>^!vKt$Do`+AonuLL-VXK{6t zL;%(O51JSY4OqdJ-N}mH;b#d**WTWQ!D7+OL-W-3@ufL2WG*S6EYa0j(TL}2#e*z+ zwjEpW+QkX3SdKP^;B> zu!uHs7|>TaP;^Bnj#dJ_XcHf*X#Ii)8MPiTQfkiMW+Uy0y5s`5RXz({p+y@@6zSV^ z-eB>T-59j+(6PSdqHg{7pKO+2^qt_M$_vXbA64=v9%vH+OR?*M<_HY{SG_WO?lNPn zE%vfpg)Mqy7Tv2yAil)R3&Cu5EGSJg^ibdcAD3II2rsJG&ClW0hG96Y6%9G?@h4q) z{asf@#MBrJ!@NVQVGvGA7S=NkZGvMu*TM-JM!Z&@z^9rej2~P;l>8oLE#@L+*UhUg zZvU&h9b7M7fZq-a!XJlT&pV3Tvx`)@>49F0ltl@EI-XG0xjodlgO-k&G1Q`;YC>=@ zWM=Gjc6o?(F*=QWi;yfQ7Dr>p4Rr@Cv{^KK9Tr$r^Q(}PZ8D2TPfJ{H>hD6{K0C;Q zV4QbkEt>vJYsX{hzk5_5r!u3-BB`f75YsOe_g2d=d**TiG)kR}NCW8LVP>z~JH?6h zQ5d;H`Ez~fFCGB@KLEg1vA1tUKmZ&b{6NRk;wIgn`N%0y>4XcRLsEr1XgnGymWGxv z@b%`H$J@j#duJ|;n;=2xd*pN9N3-o>ynAp8Ev?glmWQzcHm{jyVI!xP^st zTKUYu)J=v;QnH%KVkDd_-u+obeI8~RJ?Cr*8im^s3)|k^1Y9Ei3P7gi)3Ig(d5_p9 z-w~iQ$l=Dmsp&d{IHI=wM2G;?2LN0y(F?Q#j8_3gc_>rc)C2+PNfE5;hpd&UH-fUm zZTgGPBdE-UL4?hmwfKJ7eGurC7s3LmCE;e#LM>7w4ts%w79R{K(Xw2v#G5A~&?`IM zUp4ifFL2O7S?!-Dq}~w5Enp{D>u}1%AP4ArsCUET%C*iuSG`R}C;KjaS<7Le1Cy@U zJ*9wCLnRC*RfT2?`L)cXpI90uj5rY5M!#v z$mB)41~u6=>mZo#!LJ{ass^GOhmjLFh;U=LfyCnGx`!!3Us8AFnWLipU)EIZUxBHw z;82dk509c4x-Uhg=l>ro-i75ZhBJqS>EPHf3iGsx9$j{Ev;w|Qx&kR>g#j8@@t=8G zjv>KAkV>XzUvdO9SfsC+1#?80B^Mp%8gIh8*Ri=K2r@%3^)WpDJav6hc!aY;Gap;scpWwKf+uk1lZaK-&RMn6szYJTn)aoG9A2c@ zzfbD|uC4k|qKX0uxi~c#5L<4b&X{Bn_9<-LG8kLb3=5d{ohLf)`29?wr zvtZ4HCRX~+3@2c`y@@8QS5oqA%%!7hOcT7yTCh(Dm&zQ*Bg?%fz=JdovdGqaZ27~B zFKRS)3>Ti%2BI-ol%=5Y)mbkt`wdd;COHiQY;Wb|b|&~RP|!SQ%b|{mk`scwfM;|W zVfacyMPNr7t1$!;qtzskR&_qh#)^9;AR^gY=&>Abfzi9uP@4_MIyz*Gq8Hl$vm!2r zCfcp!K*$MmoAPr)%RtRAnQfBiJIKilX@Ag5p`_MwrPd@xV4{$9z1h2D8HWP^H|CsI zc@p_lzXW#T??hqi15~f%r@v+NFZ1Y?;o0QJNjq zXNNQJ8?#Vwb}=b7PW=#6HctJC!1b`8XLhA+S0CeH=Ryq&d|UhTv3VTUYc+03sZ3pu z13?~uLa>E^jZ46jl*kt@D!N|BFw5B=VtwXzXNs$uGDJw{LhuvZVo#)S-E`NcC1Q*; zlD{Ig^fJye&6=^nh2eHbR+&e|0#9%!La_iDW7hcGMG@7DBC5h4!Vc1qbVvkyj~7!t zeBPLALvG4Tt9JR415iLvI+p7LY}d4yHUKv>IrMvdRU)esioF?vZ~SxqyV0d&i&Y@z z3^UVOqem2V`1NEZUdBpeGW=}~aApwZq##gV`P7c&d~jbqt2vpIpa)%kQa@;#m9>-* z*?tS%EsLL-Pt9#6BdejBF@%9h{$vo zn-(aEj&+M1fm6=lP5F2Ex{Z;z;DTt=;c!46?aK^{@+o`B|5h@<$VcN@5f!0<)guX8 zcmV%oDsbQAMJII3bnV2FKBk2yOa!zSYXAI1#tQfe7e2CD4Ot}zVnQ}Oc7|uHb!Yrv z(?JqaA~3nP#9*N9TRaoiEEWX}CZxs5#W;5mDR_#P--u7?6o2JDp^T+ud9wQ!fmsxQ zM+E6Ea9=O}bn<46PUE_VhQybHO83QR&h0^nX5rejSs1u+xPB2ahgc=t+HAFuT+j(g zZhfl7nj$D1@%fGY0aXbJ#GIh_((`)qKI81Kt>qeMafvU$69Nrpt( z;RX+VufeC0)xNQdT$06>N-GoOq;Y5s0+(tzE)Cy(M=9+OsB-iCDNAf0G+VHP{nYhM zP_|$=7!jRcl@eqQCQYYFY7Vf4PHJm))guT#e!kOkEj#s^pKc6NGYzNuKzCR}PtkWp5$|I* zMH7x~C2hhcKWpYvQY-Z%TR<`1Yz&8u(}p+c(5MD6^hlp9e?z9XGEb2}>_E}Wueo}3 ztPecs1qhNVf;@qj$#%CEnZsn&EQQ^Na^1R=Ms>!;i}h{m;o3a6jd|67=7EyLby`c) zo|W&xG4mUzr4X??-9^=e9I7Z8YHCxmvvpKHFx4u`g{>f0Cbfi1T8OBalW^O=|4*Sl zGLaaQ3UXYcD>8ol4t^2A`9Dcf6<72@^*ywKXm-%VLHv!tU+eHvrlD~u`EWl6T254? z0N#emUDI1wGba3v9Pj4XKK{eATuk9vL z?^)F%%D#6Et%nWynp4%@o4_ZP0>4dx-ij^7oV(fnNHRmku|cj4-GFnpUQVqr=Sd zaDN+yE}x-{ai(*FG16?@sZHz*kDZgm@ykCoUpVuds`d`&%^L88+CfB;-z&W4KV_IuWX#mCl_J%mD*i2{r_AgxAFG#EB@fIV>N$q;`>f z#qk#|HuDifN~y?QC&EOn&^9^Md^GnAWU1DY^`8~eK*x)yb+~>|7ly+lBKMXY>zD879*UVM0?NLj~oqmvme{8vkLzC%mU%Fj8j zdKZaj@0ELBh0o~bP-5_a$G#(^`jc~!-bU2nNKz$B_MmAVxaQ)}nN=wwF?bxhDBK-z z>8dC~4mgVU#MdId?MLB8yEXVnemj0oEMi@3b8F}36l{!3^9J>8hBShyN|08>W|k4^ zhMW>EoE1pWP2r7Tx+i0>+@Tvp<$g+sEO9DMEv*deaE{i@V5VsH}O>?{(@nN@qn(yD!hpueM1t z@X9t$&Q)m>`_;YAmVn; z*gYmu$IdhXN~y$Vg9!H?|_Te#_Ic*{Q#sa-z$)yXx(S zi5fNVY6*>6cDve7jCH9L?$Knv1LUdaTOgkym7hZ$_BoG282w8&Fv4Rsx9?@Xfa4q` z0N6?)5W3;rj*R_Qn_<_0DA`vjPq7yynizh4FV!2hjM~$4C&i>WwBED(=B%Ss+jWHe zdI%ybQP?HKH~i2N_x6nzD{)OA>cq_0qRvLuLq6I%5^Mu}C1QjY%{xMHp}llVf}_^U zx|dQvOLATme2QR=3q3eq?eXzPZSqTR2|h+F;jl6jr*35vnbcDTM|y$4bR2LNdO3K& zAD6G2sS8md+t*O4ZDz0T9ahqlqW2fV^oQQSp%A%PU~?~Oi*l~AJ~M`+MS$HvsX$Ua zW~;(c0&~dFd9R#m-bt#$$5rdnyKm}Y7l!cJWivSppcLNZ;vX~X?2(05jysRkdvx%LQ z{$2G30hM|FS!OHvV}VwVVuD*3GU2Le+*WgwmX!muVU&F`%B!(95@lKPDTh?C$We>% z(MQP7c{13xeU+`zx*-Ecq3t>*DVx&ShWiVnVf$oyz}0LC9S)UauK5H3NuRu)$J?vo z7~d?!o1@*c;H6zk%%~WWw|!N5fqD#1uXHI+2bWaTb+1l2&hB+<%_TC5 zp9`0^Ag?OF1Stof@};$37BQKZ^h%aG+fbDoJ5PW{f>jmrYAApu{&?4e&j^m2hp=9Z zO__E97-DX?4I5Dl#c+XK^_w7($^4lCuYGOpQtw9-J;d_;IG?LYON>jUx{X*4`{&s^u#>Wul{Kgx<3LM;NBfGIGOWiPdWM7vAnP zVm2H&#qEcJVjCj=blRdCShoz|$x9$~-$dD>1lS39y&e)k5r&MqjfA4wme2y?n4rQm zT!{xxZu$7conwm#wyPZJoY)RB_!~hH-qyi9gI$U)aAOW>A~6gSnf_pKBsrmUF9ps5 z*ByzdvGlhyJc*Mtn(lAJ-ObFrm$-uF-_j&9s3ksK8;WkipyHgBk^3XzqM(O3*QB%o zQ`}~4?9k6<8^Az?+)Bxymjg6;e*s*M!<}fjpw@*|D6StP0sP6d+U{f>kL|dt zK8bdvZKG33*3(O980dr@E$3k@G!@%Ffl`jn`q!COD?87n1*?2|>^Eqnbg1?2BYUmHc>CkKwh6sN`EeAzF`yqm!>^K#{qpOG)|OHK zGTd_PH}NRR)~jq@F=TRxWoCok$A!IAVGhd&X*z^QPYuai(_sd)X+F?r3Ak&9w~@Qr zu+6He{rQ=d4{%@YrQI_hNqOk)ep~G)gH_D!c67$dn6y`lbU$D{@Avxq&PoV*9bB{L zCt0@N&o81~<4GpO&Ud6kD5L2}A`1A%|D22g06)M|w&%_uQL(!3>471juppqZAR{MF z#eGUi_X>^(B=v=~(4G2Xe^LB=&CtW-v7IDz4Ksg_#}MgfPki^s-BpWZkzM9q6)2MC zxB?EH=#cMlx_Ox6^xN#VYl{#%%Jp`k=U5u1dEp!RmCcaVe>>S(QBqt0NOKw%bUNY5 z^3R3=_qo;Ize{!Ac7y0p&0`kStN5*C^1p%*fi?s;Az}f{ix|Qe3UrW9?|ES_D zT2tRpo%v`nChrU;h|-TjO`C6%;;uKk`{vh8?F2G42HxoohrejU<<-co%@sM&0@`_X z8Vaf6tOo7H#p1O-(=_9u4aKdM?3A_=Yi(|~AKm&2Cz;5dd^%kih3I^$)Q4zHcb?}I zS{DxH2|)U#EC9AsT7m7gVRF62km)=czEBU0wuCyCdI1K@2*Y8ap0+O7q z$~MBb>kjn+jt9kpuggA9w{Vo)fg6K{G3YjaFUq?4*{FHzOPcEfNnn}nb$ZkRKfETzoeDYN@tFzfVPH6@qUeVq$a<*KWfrs3jy#|;9 zM&#Dj<0%w2T_EAFd0uCik5xuR1s7fxpP5*hb}VeLA{9=TEuniPiW^q}>8WRlyr|I` z==1I2@5i<56+0mAwP%j#q@SXl#@N*RFRI4FYVx4w`#iplbp>SxhdrwhM`iO>927k$ zhZ|4?^!2V27>dvsVBWwM(aPeoe*?T6kGMY+Qp}Rfn(RWv0S)abm~uWb&H4DSnhP{I z=$Qz-9-_{E;9EJX4Xo1qD)G#z>>3R)r>5y-e-&{F&WP4aUSOQ3LzMU&tO-fR+_6c2 z43u^XsSdxZJL6EuN9Tp&-r2T&iYkrSW-BYedNsCQQ=w)@v>P9W>sqt01eLj~PW87UZR`Qy9^@w5 zf&_0{LU_@}!r zr0YidL#@ZAhv(Pli1wE+>i254;sXgRqAAPvW<#m~*e7ev0s>Bqkw61H2Zf_}|~Uu9BO&?)7Nw?~eWkfWK;(<--3 z%gjnSMzIMND$96N7)iV;zF-`RM&3MMw$8@5VXl>_hoFTVfOVEfLJ-Ig$Imd5F6HeY zww3&o!-u(hGfLF|9WYFKohDIv^hBG=mt-BFKeShvCPM``7SuEb|5nq%dLWUQP%ONF z{+6NDpXLdBY-Squ19}niWW@K!=IVth6Ao<=J*sZU#n73V4KNdl=%99!itD_VDt$x$ zSV{SivQiz6cguuH@k649#AVOC)88xll9TZ(g_);ZarGW)A*h4vRZAM^*gy=)Vn<|% z8nfO_$tuyZDcCis)C2oB3F#1Rr%#~c=z20__)<3Nh`xCTP1*rXwvsG|&l?V}L%9(s z55Rtn_~&itx!fx_%an$sUa3T_Q25*xF`B^rPfLjycS=Jgx>L(y73B(PIST(4k%?et zgUNKbhI*w*Dd!#GS%x86rUK2C8HMm+`9&}4h1)W>3j5kH#tPhJlFVpk{YU^t;!Cd% zxx-O;9S>#=>4U$G~eny)rx%&Mfi zag5nl)P=U@-t@DvnmB@}!P-4CYTz)22fxX%`4(62hQ9cRilzFMXjsi~xmDJxUyO=8 zP%PO~pd^xg*>GjcWiV0QibjOB+_hy9@K}W+!?>1u&1f^w;SLiqs6Mg87Xm?GQrp*~ z#%%H3%a)B~zhR@RG@~e$mq96G6*5uet&D-&jI8R)SMrr{lC|F8o2RuEZBSi)o;yEV z30f4Z^x@DoeNi-3Mzu~dOJ_**LUzt6qlBzE7B=igBPEqw2rj$PELwP~ksh$^DJ)=A zms3#;f!`-29%zMLbV4Cxyz;SUvq|)A@NWhX=lLxWUA-}Hha5iUne_veyM~-N zMcva1acPZmlfzoWv`@Y>1@F*Jo4cbkgW`+5{$+ZlHAZOD-{(K3hh6ZKvuNAD>c_he ztXw&8&v*iPbITg5w5$Xjc!E`w-7gx-q=i&<$twh#Zme-?83n+h z@dp*AXPM?@64ElXhHL-`goXxVGO0ffS2G}J1*}F-vP_bpi-7^k@Ra%!5^Jqgi0E>fq4Z5^Q!neA1WJ)09Lb zoA5FV2szbNSvy9wSD*3sZca8#>24K3%0x2)=plVSyoRm9{16JF4tVq?5C3)Pcm#s1 z^ViAO4f_y873%QT;I7?HX`cEtO?+&rCsS4IAw)VTgJA7a<^4>)f%F>_>>IY za4ZK1Q(x@5j6H6D4Hbx=s1i7%8ES7x$~Z3_T<~gvG7yNLOT@t^ z4l?2ydh+yi6%$-fT;+WxWa~~1x`D_WQ@^PLU9wD7TXp9_@+`B5xUOFBFn|BD28gz+@XJ_$z6;+dY#rt z;!_aH*NY!4J^ibES!&*sBU8;D2!R!1SSg*Ji3_>|b)l#HpFAkhBz(_Zi&o;MrV>`- znE30hc`39;xCYzO>A$O~^?hykZYvM(sgJR+T_RJ2+1t4>wQvkTb2U`QL_uWu1lghY zcSMdx5XO8kIMb;Ft{ZT(gajNf+ZBU;_-C(7lJ=jgmi7PzSW0w;5YTwz4aX?KrnKYe zKxEZ>nWD$;Y+PZb1ktrbu-*u?RkV*X#;S4)VAAAb^scNUbv^{6Dy0iar>d-JLD%mX z+;K{{smteRDwe6pgGk0g4+>8oluRMFWMJJ+5^t6O&jl44Y>((tM87jfvgks#^A6M>|o6WYt5)(Ly=#?Ww& zEm$bWZmo^)1#mP2>A(C?gm}Kt)GR6)urkDb=uFR3WZ*K7ap-Tp_Cb*G(bQ3F2HfWk zy=3Czh7%2Y2*&aq0Msx+Hhq)Mo(hn7zhE`DCBwh-}qX^=3>@;Sx{#?gA03&@_2jgO+M!C6S#grcLf#4>X z2Xl!1b8ZExz#Fl_t~LbzmT{P()Q{3oG-zRc%qLFLCqs_^aOHOQ0knr*EGS&F>FSKN za8%`5RIIv}MTk$OjM+YROfcM^Tu>id^kKZe+K(p%TaL6zp{{Oau~+ujqh-#3yJ|-J ziM;xzb2zD0XVeTwO(v^;Ba=p`Zyl#AMnF@8npX62duYx=tK-rRvwK+y^P9)oYYD9m z@6;NjABt}983`KKa3aFJ!nf>%R{_suz1DHOWjmp|5Ms{f6B$0L_m({eiZrLN?D(!G ztmZYub;!VmjIV%QNS0;i9r9($St`^1)v6i$Glz)JrciB;BrWEA`C!oURTU;GYP3je zADkR-xiDjz(EdA5xQZzpbWf&K*r+@+9XeZ@mS0+`cgtT-x}C)EKOMdWLJwX8QsW{Jr8I)vyR11 zx@1`@u;^TP4>OO~;_#_laUd4lRIk9GH>@`&*o*uUb1{szm>Kq)SMX~%;gckMsTatA ziPGHY9{sK(RvcMqN#@t0=5+fCj4~5zME6>s%Ok zR5KY(Y+K&D$;enBgUn$qvUlrf9;<(~>Sh^;DFi^cFROFhhmkKfrqy0nz|A^9C{b8i zMZRc_8glE9Tj&|l>PxF z#gb-$fNQ-vg0iuU!twQ5XcaoQdkEyD!p*UAT_G+eivsK>R+D8hgz9Xk-1H3Afc1tOCunkB()vIMa<%Sc~xENSllg@c6AtXOk)dCxX3s$M6Xovu%Nr~Qmg4UkEKI+0VI6xbE0>6 z?!g~VjdiH2q{v4DD%8-ZUdUO43IcB+Jf;R(B%|+!c=de4rBgvRZ(y&{yDE_g$3QLM zRDo#@fB>yJ1+NzAknsFftQ`4IdXN21x$PH;52%gj`6bpF<-RZ@fh8Bp*7Y&@l^fBPm1OqA%H&sDZddN` zlXiU&_C4t?d6kB@s|X=CN1AoeSAjSTIT}g&!wwwNbaT)(VRi{bN3emva)vt0uy>B{^B`uammt ztO%L975ori<4m2#*|GE6Y^aO1p@VgkwU%bD1=<1@1*B5uPQQh6V*A+L3t!ZgKLP(J!WHOPySuU zIjwP~)ClnCKM6cwZpuA9oM^sF7wGS?^c7p93vgh3;?plt2gSvH+$@7?wV^%QP1Mqc{vU?A@PUE8A-03 z!t1)pfzRvgVonf@b(~s_9<4p2Q*Q1iIoAsu?rV#D{59|d#}avbY4k~m?^(FH{^eE1 znKdGi14<(b1MP#tL+MqxFb9S;t!*Qh3A0wzNi{BCrota&z5wSQCf-msj_;pX>oshv zh#WFVs*p}ar;)7o(& z<`S-A%!5}FAfrykzYO2Q1LWu&%lXc4;^zchOEuM1?ePe>oDHE0KjSiXHRq=(Fb2g$Uz$ zkXLIwIM_Q&n(~{>CF!Skf?N3<m_aRK0v4SPc0LPb&uls&Nl?KYevWGK(p zPr&d`aZUd*SwlV;THNvefy$Np0hHt%!(FpnR4s`>x1@#$O4yLroh4LxjF6pHAQ9<} z>xaR~T)KSjOrjG%FXDlhmEvo#wkCalPT{4^g}!f2pZzV$_UVT+UH9kqWkD-*8!0|& zXnm}w?D9>^;>3#0iGjNajK>h`-;6V;vQRzE8Vn7+#?W=fadp=l&-ui^>%056!wWQ0 zvI>w3n^vETV;=p}iL`gFXahv~MinXE{X$p8rLM?Ur^~=Ee;VAJ^?jG+@;*Oh1*va~7M@T{7xC~+61a&5b409ZB zB3k`K#LLKl#FmdaHi9*&A zBPsanYQvrL-1Nh85%^FX-d-ZlRuRI3zAldKiW97aV%vj_bpw+(g^tU;p-_d+LNNuh z^Su_~0ji}8@1LEa53!5N%(i7@rgOsRj}eptZZSg|wt}J7<%~k=7Us`Tbjo9y{{LE4 zvhzXBEdJPnX>fd0hUBo!Dm6UNXg0R^o(Q^>e zj2z^yroJm|rR*h*FOA{0^&lrylg9Q?`{|crtatC*_hM~F>MrukM}g;VE_887bli~N z-rRalot->~exy`;u!8PhIP1h`dlA(Krs6whmr0UjyvyW^;G%4KP89=Y8z$0O_a_ zXcr8wH5LcX4XowbGTpH041+)(BJlXY3oP$nWfx6DPdx(} zM1~I^7aG}jlJo*6$G&k?KqrAAX;enh&WM_a!)@+9J2K?HnUbB(2Debe-HHCkw&Z{u zCQCr7S!$*NFY}vQNGoC-*=sfJ7o%E_Av%vlunbF%0H8TfqE>^^UHt%GfMJm^O%FzH zVN96m+Q1q^Ua_`yG`j<#S~0e(=y-K3>LAEUDYHQR zk4IRPUK{5TU=g;z$|~p7xT}+zfXL~ z_YC?8@o^310>*in)F07Qlh^&W7Py#5`}UH0rY=SJ;1m2Id&~!GJ1H1lZMlD1q9lg{ ztZ=uO|K6qtV}X5B37)e@?%gsuK!sZ~2f7_qf!PCGNfybixjcXnQlx6p!T<30hu!Fs z%w}#nvb|;3O)24TL^}38;V5t{Gym+?j`~&YFqLsc84AgeF-a7-@N)3%c{*5t7(y+r z$mdtpCtNiPW=j%qwm(&i0XKMlRT2*uYVEaK7l5<9>zp|KV0 z{af6`%RZ36OF5{t(v~){hPwF6o9Ou-8>}fdmFR@T5t27sa($POYF1Zd+RNnUCle4g zv$wb&ZY>}lA9w}N7$F8yZGI%1SZxL#=CuPwz5C60>Tj}KlE3|@=y5xj&#fEB{a7sn}qPzcfZ7OYu>$>lj!Sul2 zVJh}_Br23yRi#=g;LJ?w5>y6^#4xkzC4%;yv@UL*JSq_9L784h4Rr1oY&@*{BmaO? zuDKe&du0xr`>L%o{RBm0>7VImq2xMa5y&76+N+812vn9$>dG$4XQBXL#?5bh*pzCaFKI)VMREgzrcTR_7 zm^!g(bhONloi-fq$Nu7jqtd9mU)+?uWqowdDRwVX@X4I!1@^i(%*jrpiw6jQmVnR0 zY8!Pq7p{n&rAyG{gMm1oe}JjOPfAl$%e%$MpKfA|?iXUQSX6}F=Lk2@dbz{;hpR9X zKsGF=Nct^zX#cWltu~z&v|1H#EOly!_IptxHa-i^g^7%Y9JDR}1iGqrK4@JeM9M8f zLStK%0O24_pj;RXmc}hT!rqI!m46%V84nJUzn)9j_GG3KPN0u#4{yI-ysqY{b=H|M z%E~NE9YMi#x@<`uH>y?`vw9lV{WEYeN%n~HfXgZ=$2jj-Qzs@;Q>XWO?uBe-B_SVs zcgK$z({Y0XW#hPuOG+ClR&7af4?^9 z-$VI>B)kA$xautQcpEj^BvScJ8CXI#=YO^hb!!n2WVtkOPdhXd>faEf$K;X~Qi+R; z#Vypkk&EK^sQ+-1$Ow5Isj?cBIp^CZ4jdBhb4Pu56V-q>Apr}6=?=@{Zp3y7!Xht9 z($3H~SCN?taG8rSRkj8g1G1P`;_5`s+r}VhMYDMr>MbffMI6M8w2xADe&2B(;{WHc zDhhRV6&UTw3j;om4ffNuCjP@4mRq?R$X4)SIpM{;S2O-1SX$^9?eO9Te4!-SmWq;3ur%}%&NBvRX`N$TPmPU0^3o6YD3W`J z^7F&b-y9X7N<8T*f4kHOZ}jtK04_p0y@t^zVgcZ;vVdW7>M9}*MW9nRww+ByJetrw zj7GZj5mkI%gS2MZW2TanRmj(w^7Q?|XQ;Vw^N=sMzn{kvmRWFWK!Lw|cHmgDNsU8d zK~xBeC{b1*o5q|4ky1ehfB#AyNIdCV6S0;quLxXJ6IR5`JL#&BLA=lzDS=h$Xf+0^ zA_a72t2l*0z+OTeaTnketf!c6oJO>wo@^uy8BC7q?RfL|lu z5P=y2()W{xByP;yB?FqQmFEAb^lJm!!R5#R5N;~Av;Fwh zS?G~?##t!Ez2r7)7mr7&CZvAGR#`{0a{MMb(Kpp z?^8W-JM1KSjh)-iu&;qO4DAzO>~pnV%nBlw8ZBSE4DvFCoSra_` z>;X$83X9L8?q`e@i7ywWAXp2(bFP}e@Or69eb&s@n$^q_2;X7dlQT-zR)NQX6f?nBmip@6a~#{D zz5LTxrp87Y()wths`M6}<^t!4Ng1(1*S=O3Om}-phc)BpoH$VxM`anTE*tS4mt?gs zD#4MHxZVHD1B~c2{U9Gu(!(8=BB7u!w$E*0Ui7d^&ckv}bb(|`z@VyF3pJ_|ki zDGz5wK51`X$=b)+ltU@klUxfit|fiFC8jK6qM$U|AaGS`zNz6MkC^O4b$O`>(1(>) zF-o*@T(?C&vw7Wq;!28sD42~h@6Z(l8H2AV{a7*EFGOoT z%8KSeBD|rn|377HaWi`qh`S&1xoEZhqQE$Ue=0$(vZITN;UBnNbg4LzK;GNix%b%hHPW3Cc#b)m>u;2zEmaC`rA_aO?U2QNS>Z zN8j$ROc9tyz_RG*=6Z$P@URpfP-}3yNKx|ERytuT2~&mGYl`VocreVg451zB;hjY( zBb+qgL65XP-LH9Xh%=`*;>JtuI~$TA{ScQhRSU|DC!cnvcTbEL!QUFO`vw-%akf5W z`M^g*sF7nPV$4S!j1YPKc4}*Z_9Usd#&iTO0yuTLzi6JQ`M`R`0xbne2;6z=klYL% zhI>tU*RM|z$~)OcWhk9Lwz?ITz|-^ygZ=L_S}2v|a;VC!I28zUWLSdD5HEGns(ZTx z!q0D#qp}*c)rk7f(G;yI#D9Wc_BD%DQ5peRwN(t_^QJH z`xILzR-UhLYYJAn=18!ay1EJos$4>2OR}6rPJ=J4tSn{t8+Qj3eyF?vl;|dW-WXpd zqX3-|LV{4;l1)}0c_^k9r=tDQERmRc4b@YTu6`0FBPG;yIiV36JonCo){mG-876&8 zHNdh#0GRmY!;gJ(^5YMpq(DEBAra36` zXb`OXea8j!B!E*X=O9E34^l4@v*UU{Y@K}2HH9;PdiVxkxd!2#?P-w7k)__&MS&W1 zAsWp|AF~F{x)^l3xZ+?FiUzi;rH&JzzFF1 z`+jOF$V$nWwQ~p81%@cM8KQ^mNu-gCZ-j#n!}lRZZwrqR+!Vk_C*A5=%0oJO@dZBb zaus_G4Wga3Z<&fUO0}IHmeL2C2~;y&9;Vuyr1$vdbC@1NeCUN+lY1+9Evg&4 zV?O7Iu}+*Q?U_isc#-)33gH(9*U2V^sWFG~txVDSi+;N1?a8~frHU6ta#OL&?2P|T zVT8tB(uQ_Ok5$F|@iHhjJRLKLItR;0r)~=?x>WVX+1F-o_XdT8C$EH#h#z zfa8_(;|ORC!)4dW2WFRV$-Pw>2DoQ=tPNcUoTYh};}*fNM|ubpNce2$Z!=*LdZ5uk zBHNdRMabJxu>d*`Hr12oQp=&rSW?`weIk$iM$GCG4sBFZ5tdKK@M5Mqrr}?5qCpSi zH_Cc$AfBlbXA)hB%Ki-x(z;_ba`wnG*|@B*zfO9@9f%_Z7S`{XuLKmHCO`cpP!SLC zoM*Z?047@uEy7}sFfT7n@7O0Q!Mu}5t40I$Aa!FsG$6u*1Wz}edfrS{tsv-FH(m)o zm)uu6a^@wJHxXk#2OO(C`w`-V1WkT<)l_1Zmgh6>dzxDkUSS2!4Ko0@jYq_3xpm`2 zN+ky3DuLa|L(F&;8iv>0cz{B-ImY<-dfJ+3DPlTcfCv0X!>?ML=?U{>AoUWUo=mns zR%ZI@6Puu0kOg)0h;g)9Q#?FoIzBw%FRFOFE4_U2fB)jLtpCyHUNsQ)ytNPtpREBT zNUI8{=qYzii13xbeeNfF3&@wphqhl@;RJ6Pjf9|Acb2+KY?*S1zl_vfdZ6@~L|KT3 zU`a&=0ZKSGhNEcn)Cp%!@Wxa4IjD0U@%8#uCpFbsJ}v*-npd-qtANzCd4`=_CSc@;mp>@JZbHm)~FOLyfuwlW?&y}0ktQB0M^)=74+}~ zZmPvYf!Imqss&fGHXg@h9!2LzFJ=y+M>)#LRjqdVJ19n(_pubm(eGkc`wXfRya_ui zukPFp=6NDBw6tV(NWCUz{~*fSe~28e2CcX!T}SUU$O(F^ix=zw?JWeVY5oUnpBU!1$7<`t9iR@0&&=AoDGWJ)K4N=b z(4Sq49sNg60`8s1DY4k4K?Ge;1+olAK>=-Cb$rr zUX||A>6AKGUJnR5OwRYn1BpdEtnr?D&e6r?-><+q@P|8gE?UAs#kr}4qgc3#S8!iu z<`jUFtWhjeC;{pGy|g?B9OthX94%EF4SQh({2`}-f9XDg$K(aQIXENf6n^7U;*!Pb zolJ=8%2#IlWyrTd`+bh#CKslHLP2cF}QNzy=xSIAmc0`4(27NQ2%h zt5Re+Kl=%hmip4_w3VNcN@d>Mj_N#Bo3L5Ir^T-E>5*eQL6xX4Oeo!1Qo;Tas>cs7 zEK$?A$Z-&0m8PWS8U<&)^$+`w0FSHo5Y>GnnuzX{7Cp6HVu4^yHaJJ~n4v--@ zDV@)tg6UQuRIfd)8WK|M3DMC~FXPHxn;S)1keRIdSInEzf+<=~B4sPdi~qipqLnGq z`TEk4bpioRCp~#2jRJ~7^=knCKLEfF)XNBa89kp`SwQ0djda=~!K{M zr_>3J@IySp+zkbphR(lnY-WX*@5`?;Vg51673c;oBOQgGvSlG<48nZ_YkJ%>2TF_n zv5mV!UyA;-$kQBlI=8@aa*OK%4^DYtzlpP7e)V&tuG8xVcnN>XBkOEQ{B{Sa2AnY`pUyuXOf;Q)+X6YDWs0SV|F$>_JCe2Omv=5vXb~0~o8bGE3V>y^=czQ78Ow1Y&$Lcn z6nQsT296dleY(Ddlzlc^sx|v7lX(vXDR-L^>J>7;l`M7k+IQOu4dK!dwLx&QxI;pL zkYH{xN&?}8ZsCQprkLEu$6;7?Ci*jrAfmK=4GLM}M@F&!j#J3*-GtvO#S4lyfS@oy z@a$C@bE0ELe0F16adNkO60h*%{db4rg_BIg$M#B$6f8-R?p(7f5!j;bBnt-_)GYPY zh)m7_`z+loCV74u)0C=deSEQOH%EgU)CEgik8^J@Zts{UkCCIQQb+a@6+MYt`WDUJ zhQ*HZiZ$k2vvlU2Ohsypj!P>%sSGr8U)z)acty0|uR`1DRMIo=F7|1bw;2rcHrIN zBS+IQWV+BX&cl|ioKlht@)dOR=u87nMC^_!br^cMm`zX5C3=duoQybgsneo% zWgpi9rT@ToS%p1M5k9yT17)3o?@ozbiX&qWO4cj@Q2#05WV-tD&_-#&c2Cd<67PJ> z6QZJGD&(RWKGMc4Kgp_kI;zrG0o|)Y!Ze-Mu)*}eEjP;i1DJma2bSMXKIjRhg}aKD zL{i!VV9p1idnGl3d+e(nvG8kY2+D~<>I#+_jqX9p4A;!>>vSG{U zR(n7>g8U`Lk>4c|tMq_E9xOg!O^ZB~&T`A*A!!j?6K0{Bch}wmYu^Y^ytIu6VOrqU zAa3bv$l=eTbA#L$f(C(zB|NX09)lHtCe;YMkWP)DLQ2KIY+a2$gv>e>NBlI(xL8_h zs6(Lqs6$Q1&5WD;j#O9Hb8W!SZe(#Z7K834P+tNby^Z9X643A(1Du?y#>&*U2#fm5 zu#cDNr6O<6mL#$zSmM_*(+RTXXJcCCZXN5z`RB@;cpwNx*;Q?WwVJ{Lq#IbZ>3Hw_% z(o3@I5c{#UclVUDm)o(zS6jd#S#3=>VahvIxLunE5+b{yt7eV!0QeLG+ zp(ppI`a8!OlweK@&6*Co+H zdVb2)!BiJyvi6>8FWVx}Ls1fI6|J=P`F0@|j+Ibb6h{oJ^SPXx9JEDvtR^hjw}fnU zHCyfT#3{k$}QU?dHL~&m<-8{#udmrpk+dQkf7rz3Wg>%y6 zxXhm7zxeYxw}FenGPa+jOx5aXbEtvRYU5rB2SqCfbmaFBv8q})YafB8HS!B8w4&qN z%oe4?zHL_l{SP2Q9k+m7)Pl>gNm&3VImNNiWAZ%MoqgoX+L?}*4GOdn>r`XdPRA2f z7z&p1Y1dOIR-5bYUYv>`uo`qK16I&^EIZ0Om?F~!%q zd-$<@CWd)?!c;8F8WB;(Fo{&Xw*V`SNh~SqX2K#uZsjwDZCWGhhO9B~pdmQvYB4m3 z>p3DS3>eSV)s%pMMZO_?|JI8<(f(?=>ZiT6c$!i+s*1izFR~v`ebL|`Qsy0Vu4Fz~{(=8H&jhC4 zf^Zq*x8toA?iB$Jsv^7)rx4a&XB0r|6k9y5yIDUU;j_90eiPv6TL*D`0b;jKTYu)W zI~Y==s=$!&0*t8dy^Tx8;m+bWp1e_NmUWlaPY5VmaMq5iFhvBrtrA<~Hi1wCBD!#d zoPPD+wkIO-IEnjCh;jep5_ki+cl4LMJppN{OIbQ22DsiAD#9lG#G>REWLxZCqv(YdS(S8% zK1BNxUy1>_IvcB`^ce~vqwB~vO=zIqQ8$M zE{;s`9C=3sSY^4r`x(s<)#2(Kwc$9bsULvt}h@od zZ@3Q1Mm!^N>+yVj>gvLGK|CwUGjW)+NS8baS~_;T`7J)?&EB)`8EHNcM><-ZS0TXK z-&e$*eiMqj>g5f`Vj4&-4x$U_bVIPD!v`e*Le4K%S*|Nu-AokT#S;yB(08HM?ps&+$i40@s1_E{O;|Bm{)C&LqCD7%Jk2x<3Zf z$QJr~Z@mi6`HkkY^#pGy!)0OyS=$6PPOZ&(0wj61)pU}C@n#a%U#L2t=EtSXIQm>S zat@fw$4JQhnS7BwVZY*b9}-DE(*ByiH2ss0_^(C@h+OA+vOe2}q$wCsHDpniEPg@c z@>Z>NehA4kC!GUxcy-JR9G}@dit{ZoJ6lIwtA?uxRLz}3)`gp*8NlRDmm`QsxdTMC z>43Xb?qHfpKpYhr5oxu|y~W{bOc|B|OFZ=;0i@##bX=!6B3QQ^!TDHi-{tQOy!mAM z`~h*H>DbW*^&M|)sjeuuv_rafK;!GnZ4N6hIP{o(T>xeT>gN!aC09)@!tzn$_1r?C z`H*myMqnp02z4D`;d?M*KS8U31@PFmGc*(HZcDm?9Yu4lVvOj>d%rMv)<+wciX#*X zjGY$bbHIPa8!4|WtTcC)Ua3~hNj`MNj0Tf{l6c;`^Wbd+leYuxK7oH>UYkb|SPu`m zJCdt@w0cytv|jUdph7QgDHZ$PeCL2O7)h~woo3@Gyu4s#X^MK}8_#18=&t2}@T)ur z(j$UIKnN~Fe;GLfMp*Pv(VYv(KPdPe3o0{yw?|7Q4ShqzFmk)Mbe)fWdU$C{EWy3k*LYFOb=oFuLnx)WZN9 zsvRq%Ak-2=`!oi;)`B6Jcl!wddp0-+qH{~13G+U_e>#7OUua-{m-P}<6W6N~P{pqq zCdS(4vDzvns0qY=OenkN*=^Zn;jh5*b*vbwVqC1H+J>*2ZxPQyloFV!7^V z%UeQ(Qd`-6Ni0A={W~Swit6?ReWMz1VYUEaT$GKdP)H@>-93I~DiQms=m++(%-`9w zc7-O^aqK+>n9bu9QNeAz#hj znUKMLP4$S)1X78J+xDQ-Dg~3k#u#==tjFGG30tm7?W9E-U3ZhU1N#Y=P|m!Gim1N5 zsD2E_H$s}!jZM#!qMu-WDPAbCM!0Wlq@+ilG*-lYZ6=+|h)@Q2A*|zrxHqwK$$+?4 z{)5*GT3k3XbKLg7!N&kPqJEiOClNDKa?Z<`UKQINe!roXs~FF_Yt;kQd$EN%$r#zR zOKabo5rL*5*&k`%)Bhl)gY`%cgATbt>QM?3b!8?MH)L98N>t@$jOR@z@Ilp^Ugoqk zNU(fR3fNbM^YojH$t@j^YFmKcx%f-2;>)eq*yd;1 z-twcs!_cAz!Ms9jdBwHypQiDF2caM#&ACUh8MCR2aNr=nxPT3h<@3-YxmiO}1MqD^ zTDUW8YAX6S&7qxV=YDH7%AHOhWtccnGd{E-mK>);%bGvKcsvMk&M=@;%cXo3Q7{>Q6mh#~ZpE?&2 z5rUOQR1xBjOzb|93cU>`+&=HeIAPnVi8cu?7=kqcOgtr zIxqO%`xi&UFdz~F9cEs82x?r0wG|KA*L=a^$4D!AjSk5*b`o$azah>z%#(L#81X`WVE z6NL9rk9BVRoBUZ5E5N2{O(<0+=^gZXk|DE? z+wLQeNJDnkb6Escs~;XLr|x1lk;sa|khIgdSMH}7P}ucvGAOC)#2~&X-`XLzbS*6e zvaOCLIwSZFnw(~aP6)~{b9uI}^IqZNa$hzJUvMx{0jNw$u9C5*4$H$*Z_$+bdgt#VVmX3wGS@` z8I(dTGJZ)=9J`oP8I=z-gE(z9h2gL?%G(&|>$&v9lLG*vejaXmV7I!xm595mdU%^G zF66?dpcLCT$k*y(<-%e-fWIhYL3{G5i=D*FB zrbUyJb1`)RgWGgsI+utrq!Co}2lj}Ij)xyeongLOCX_GOp}HfF4~||bqnv*=(DC7J zV})UrU<)qtPiJUWB7n1hGE#%h+WYLJzee5QM&b!eDF6#4UHW!L5FxJ}cYrd4h6h?! z>`64;z0qFsg6NuxADA%m5IBlOZz9Cf)U0|cGLLu5P1zTsM=;xOrG+I)-#)*J5Q!a5(k&rB|DT8I0`3xKgai7~HeZPQv3SjLVvXvi8hAsh1i3Wr*gtTYSt4!g*l{ zZU%U&{J8*L=K-Dj!{jOsEA0XSpzY=i(^?DtVr@kUz3Y5|UZn=)onD4GtjH7tF4_ca z%JOenGOXto?>a!SDElBG0ijCZ*2L}pxWsswR%uC$_w%B|%UnmAT4kxt1 z-3~m$EkBID3-PAtO{8U(+^1D3mQ+TT`{Z=^w9QUnunFHwZ3@ca|daI z6~_)PBuGDdf_Wb$K1Li`^xVv4WyX-kOt)Zr-_W^JolSM$5k9QaZp@k@+9=w1fH>Ea zfxC8AwB;LE@7!s7OS-sdfWRfhj07mj{*#s-(@IIPfs^-NX0eaeD9-9CZfDU5sM1bC z_$s!Xg(3IcGR|t+ReE88hhlfPcgUx**-q2Yo@mdm*Svz71Jh*lFc!-yp5_k%tPe!3 z8hL?|D?$EjryCX8{Zp|RZ9W^#9BU7*>QX#%s6G$O;cHo+GKO7eNlhy8>;*cxGTAGz zjG!RrguyZyficjM->uq92V|`IN$*#~O#KuXUM+i_H|M981&@&g$|wGGwAZE-Tt-Oa zrX{V;ID96FHf#3O>&etHb=UkGg-xD3%xdcz#xoMn!H!{JW0Y^30JmPHjC$TyDG>(9)$k)r zo$8T3{1I(lV|FPxyd`nReEk@90(gylN5E=!^4(gq8#R7Sw`DwT`X;|9wW*O8H#O#z zcX}OGxEuUCXOYofM_9TsfzE_~Rf&DtHD~o!as@&Y&{{zklfSJ8hYS9QZ~WS5T)2sb zW#ZYD3wD4o!TOgiC^68fh8zGv+Y&k-(1ktbBA{jv&mLUDy&@r`W#KGRXMgHd@dpf* zLW3g_-q{^jB-=z`;DXL|8KKX_{AGD{{dCXmEyY|S;VeZ>v-Vh%6+-GqP{;VxzJ=rB zqlS!ZMFlxyH>|9ipHFX9MC%kv##Xc>0NWN5z1~C&XL}xATOkjJk*V;S!AGNWuBhCa zRHW#o%O}+u*#F!)1wa~3zfu+(Fv2hsFG3pS6|cnhe>vR zHO2Nc0(2Q@=Y73SvSP-=L105O{H^P!2^KvkES9Ku)e%@E7Lim4)K+wd(<+cRENBI= zXXxlYe%Xivcns*jn(j2viIxku1O&VozS=|D-bG?!y-R3Egf|FtLlLiw3Im;@dK>x_ z+^nuVl}0(f$-8`I#rSiDqc2(Fn7RiHlxu3MZ3ZYRLBX7Tt*4H2e&||6YC8s*m0|GT zQ!i@_fQ=3RhXG}^gaw_|qKU#EQ>4%kM-r^XTOS{3e=v^JPs|`jZ&i4^FOTxvItCTt zV2)6VuXGaZ)}<>BnXB9vDOe<>CsEBLu)RemOFHfk0b@EkiL?W_KeZJw=1J*TqwV#mf~$kJ`eT_r=JWC*F36{i;os&%)l~LT^=8it_@> z&SnM5piK}3XczDDVOu3{d*tLQI$QF=%;f$mKj8C^ z+eQo+FPX<;F|2lJDb;XK13wLonvFQ)yT$_Nf`JD%wC|QjH^5Eko-T_ZAa&2ty@GjD z=bMbFjG}i5raOn^>U?eagrB=)XrSA1l4aI)h^gc2Zgg@={735d^J;H6oX`N`VEhiK z`!8u*b2#KJA|;qGYhCS3qrYnG*`XE^ab?uXQjhmy6(u8RF5V)D)+==U?!oB?%fJaa zvBzOe0KP@LyMZ=?h^p|&cRZsEfi=P49+;~MV(q|*u;YI>P7l)E1iqgd8Lj0*M)-d- zsVGw|n4@Z#co;KnF&GI`_npM&i@PKnlcZ$)P==sfGZCw<21KCGt7&;(OnuU(>(7cp zdosA)yLXbY(Q$U+xLGRD_E`0Uf{%;Um+*&FUNWUetgxf5J>*64z^`UZVoWMdE=MB8Dp)OgMW zDm#8sN$xg_4RehtQ9_w~Obu(@(ToIB!%)rICtaZf zI+vH2_CPehxx6Dv1B94c1$W46MFIuuIW-bkL!N7>&;&rX{}T-#%a(HZ+IA7=THD+( zu6J~eA!VBKtX=Ejj@{A{0gml+)*`3{kGY?*AJP(H^HV7)y2gb4(Cff`GCLcQwg*1_fzg2xC;2lv?4&?C~Tugl=}h zuxGLRS)fR)t8@jL(jV971$md1{mHc5sD*tNbeV90q2vlx?XmE;v;g`ey^16)D(;B( z`)KX|k%((^4T~CzJKW0_fzW5*I=mk=!Q9zanJm9fj+Rk8o_&-&ycr*eaGcM_5Z*b} zE=Dmqv{osBp|rP2Xxmb0I`(w@mIQEErk|B;f3 zi9wsb1NT28!n)nz|4$_16$c)fxJBVf=vWH;<){S3*@Zd_0oHMI{a6`K2ERCfG08hT zJ18b#-2;D{Jm~^Tt5`m$@AQf;c^q0{5#9CxTOfi;zHg_{p<2s*#r(XkXWK5U59ynm zfZv|OREnV*p?r{8{Ikj>llWtv zs#S>E0>0j0&qHPBh+I!1+6T)HdRVtkG9s{gG}Ox3m=0${J*1Zd>7|gocIpVgE|O+W zv^ZhH1FrJu+*7w!rxT7=70GoaKN%Ids7iZL>sapoDw%saCs7mMrLe78Vr>p1?@tNv z%iVOacRAjuDBnp{5M_Nf%}r&T?8tf?9f)mK@4qvKyJ_<}=k6%L(Mr?`jEzoio4v!H zZfETeKIB{>yc3*v7mxfOTAyFD@I<63=B-t`)lbk>s#R@3LTZCZ3$^|_N~Q7$6mjR% zDm_J1StE{|7XGD9e7EGG{=C)mtK9KkwfTkt{B1}e!lf+4GQdTO=Snm862{|8XK;@0 zL>~Q5WVUa!jx^Ny?S1Hs?EDb+;X)cph)GOJv5hctKx;LPa(mAOVe>all&3rCNzG=0 z43u037=}Fp#m8qLY&NBTrrygTYu1n4uQ);We!&OZo;=H_IqMfysz603Wy1UDR0BhH z!EQ<=TU~^3>$~QZ#3n9NnYekIz^W{6qv)I4Si7NY%-1OHl2}(nXmw=m2Wpa*#OeFN z4PCCFq&XgOKb&rmz|@Xw4^fzbD6mFG0Laf43qXm@458MKYua7gyL*cla)E`!tSe=v zUEbXyNTEFJ2Ge=b!y#`MQ%SlEQfjP{-CH%@JmsplyXJTn3|+L5Ad?x|*!lfQLdOx8 zQ8go+`Cfm|pB>0P>BdF$_Mb)*vyKZwEvIm^u8mj3-I%kpN2HV)Fax$2K$gOH0r6j= z?8Ys#CMg)>=nME^1W47J&>J=s{ML-Laf`;L$|1y*)Bs!Xpyo%e zo}i(<{_bF{Ji#ebA2bFqv8*7>*_AStxXK&ZC4_z5?eawg=BBpgj2fnc0m|G zOKSFc<>FX^rgB3)PZZ8gAAba?Pl^$d1VuiHnSbfoJ(XOaB&JCN>P$(imgB8fah+%6`KF)v=K1dV+_SS~aH= zk7{y(EB3)8%olGsVcqr+tIEUXlA(obomNNl33h|)5_=kC z#c+tsOa+RBlUah&cG1qX*3o$mhaUH$L(B;1TdKpS1hFfp3(UplxpGy)d+Y_44My$%~?4bgG7gUpoO*FO=D zN$ct=NVZyT&KSSp!`ip6@YV>ER9y+`{!$NShWUg$PB@mtocqH}VKX2v;vWwY4X=}5dL)m%8aEcfl<~^-lxZe*0XG8!gKSHx0Y#E!rL`8 zalG-*e<`vyG9>TFg56Fv3KMU2N7HpNXG9z;I+L3{WY15hF&wylgMy4BpjVqC+9DG7 zoc$|&KKK%74iq_^lDY`_M@G)uKeb2#m7OT7UyIikwpN%-pXLDhX>XZ%?>Cl5#ST0dOpmvVx=i^ChM)r?j-fLprIAF{_A-i9+OKS}fE}&g6=;0!H2M zpL+8^F=6A5%pneh=wWC6b;vFEtrxGfwx?IYe#vW8^Gr=Y?TnH~gVUAxT4HQqcM z42M1ogv=qpqf^);v=f)IFsLg*ZW05NltF$Xag_dwz2g;zzyAhZ7*6a&62_@cX)I}lYrKOgs`w}e!c)aBrXbIKw* zrzHKpv066xU^$}sbBYLK{D+hq4BW@=hs?_EA-%Q4Ho@6!D>nPlzwM)yZj{LV?#4BaB^qH30uFZ>jsC)e4X&fouHe^uF2E^L0UM@vX7y(; zbvO;u1T>1LFzP4PbVl5L^$?XyM>Fgn+sRLL4yAdg5nqsD}569x9TJYgjU^M|KKwu!exR1WxL7Lp{I{SUi0d1V#+Vibf|Iaog)?Br8}Y`;%X>t{ctOL{4_NeKc8I zL6es}%-h9T6nsAmB#U|_VO0At#Rjl67qYj6c*+vTvunrot3t+JUCGH#sW_Q(MSULE z*$Co{Z0RwMDKGOn|83&jSuVwEu2~&89ci)77a^5O^ zLnsUJJ&xj)sb1&r=R#-@oT;7NNF4lv37pASFe%YOvY!8vfj}sK1Ih)9k@;*678?xG z%60*+h0^c_)60t_V(*mLRc&GinS#x^`!mIYK9;S3!Z`}&wF_Dm%Sx*}A~Wbx1-8wP z_SoiEbB70xs11!t_ORDTgX~4Ta{SstuOd^{a>k(!&fcL^8MsmaUGVgrL2ll57@h!% zYT`APGZWIi+#G@=y%v;>Qz)25&qr}@?SZAi9|)nhOp7zB-;qFWJ5^SFlvwn-zMX-Q z0cooW56NACKMTVdo9(M(buh?{sH=l`5Y@nwXB_$DI32%;@@M`F77n$Z<%g(Fxy^mDo=KNhtC7^~ z+@dla;a2M^P~~)}+zu<hA~Y#P~!pkIXyxw)gb_XG<6F=PjvOo1xwyUxkX` zwvv{7ESio?94M?!^{F8bbZ%TC`Pui3MN~6nZuf!luYN_?kYIB(^&A~GWw%S|N&+V6 zFzC>9BUH;Ny8r|LU>EAWT}qskt`D(5FV{RaI9_r9Ea>Own#B~EvVjDA9% z>qZ!_1&`ZB84&iZRMDmy43@_6HT>@=^%32cdF}xpFS)ocLvg#LnkE5dy}f2n}u&4;y&Sf83?8z{TB#pw&g4U z4YNWMd}9fli~&w>&LEqa6YUPM9crv!P>N@+Rn=pLx3Fcl`gy;?Zn>%RPEEn*)`&X%3xvT$3UH|L-BRt%ei7u|U8vSUc(2aCgk$Td2lDBhGjAPN zk<@uxJP11LtP*jZKZH8g{6*oU;GuskD?|i6v=bc=Q|GPIK0>hmWrD z?zdmAE||$chn1K~QkUO%KtuZq zo&)og^;F!GpM+`jQQ=ISpJ9uj?Y9A^t-U_LUS4?IdIz=M$O>+HuEqbOJ%(^u4=+Jc z?LAaU8)NI&wUl|>FIfrsIfmXzCau(gk2o5*k?srFV83S<%Gs3a$a|kByV)bF+)bN& zlP{KH>LK7hrO>pg;%Ctq#lned8(Muz*jY&J$<90(?K6cKZjUyvAt#osp<)~?+9{4! z-qbSi@Q#(IpDmg0Cy`0O9-EthRgwkcAXfK7;?7b-)H2 zAhcHr#q=3w55JhZQPm84IimiB1I8k5-v}77g9!Wd#rTKW&PL(I6h%=i59e^YS5~r|DNsT^a~pS^+1VsQVw5-`$ecTxgIHlD@0Yn8xsihe?OWQvXaAP3K?AM|G}_lx z0{ToJNi2q<0dZj*A4_}f`8SdLyOuL59Et-#U5D^b_pSf(MvWLV8NElpE#pcmpUiVI z2gSLQ?t1T2^+er$nKp#T5M&_NyO-XJc`chGXmLpRsFQR2zjuMR?0zN{M zd;BpN0)+@sC{*7UT`xgSDvSyw*>WTS(OP2;5iAxhtUaoPzy?N+y!lGoVy?FncOLxU z$^#4TF%+-!beH*N^;|nQA5Y2yEDe;PlvuWUb}a^#!n-OJ54HNxch+PpEOh94udEE_u)S| zY25UcBMpqfvWmEVla=C0&`V?=mI4!Te$Q73`Oqv2=E)%~+1z39fl6h#V_7VV$!qP_sqMsWtDac+oVIoDr^v<|-1kvs#hKoy zN`j45&dDf>CA@aT_B(#vya}sH!rSUL!)ZAMkJ#R5r1fny+|yD}UlhP<_A1V&r-eNt19f;POv<^<~flUip4If18woa^*Siroh>Jt3y5?re@l~x1fi)uKGbO znG1SHRfwdH)tvnEeW*BuDDXP)?+R9xPX@Y-?o7b7(5+=iEA z*nkA#nY@lj8$oNqhsF+5$X1;m=|QEysTNkp*(8&zfPYYo?l~BNO=R0xUDkMtJF&U1 zUk$$HA#){|pyB~hda;mwLfR21DkKy>)U%vtLafY*(}8^MWX}{&_$_8=(tVQiqpFKR z+lO~ZLHL#1kB}-J&?S69sq3`1FQD32v)T>)(>taL=7}cp|5rOUK9fzAVhMd{kE&&* zxhV#*Bc#Urh#;8MxcEqG$}zO=?n~B@LjYPG7&u{k@YP}=MV!l5qq%9{G`rP5PtgGQ z>HYV@@fCQFE*?Gm;`X`IU~)8S!HF3ywWvG%<`n1h>AT(B zsZcJ$BP}key{X$)TXC5opZcyHpY@eab`any?5mK5Pih~&_s4B)^c!NK%X|V3{VT5M z&Da`Z&D!h?`Z8XiG=9*LNn0{D2iXXlV`M^TOkE#>7Un zJE~mTOMb}hOtN_z8WzhF$T6B}ap2?(U2{3IF#xuO~7_r7Z2&cat7ZvUh2 z2VtqY5@e%Z-UJ+T(bQvZhNC zzTtlNL8RzUCd?$}-v5aTQQk|9l9Hj*v9tnndUJUas07iUd z;41LCAp%4*Qc0YcoQ5He1lk)GWi~bsX>&)tU1ipZ(4k!K&CZFXPNFlW#5bgrpwPxE zXm_|J!P+olyBA}w@s;5E{S>>1ZsVI+6a!_iO~&KB2{i4dzv?Kt9){)lJU9?QGA<>I zLe&Vb)*S(BR>ocKUYA4S_+Bul>K>G83)w`@ZbZ3Y(Far%98A-Kl|1@MqsYS3uuS)O1fe__}6=qG5x!_HU|Ku{Lt& zE?;613O#Hdvq7|-L63X%iA>WDS8o$$5?41jeoh)(aWTa_T!q5Wpojl(|BpzrX@J1< zs33m?(2nVBWMeJd%pUl62(iAFpI-gd!2pmk0{8Pug`W9a@H)jW$A3YEh2~UW#;#rH zri#ekGnI|FV&OBwhfWOE!~NJDJ%8?+`O&~HPp?6Td41J8?#6@g=v z{}@p3<|IiQ(p%0EZr66JjKd&)_CJ(OpxAh|pE4q8M(+0Ym%`le(th)XqImNaDenqw zG`71o;TIscrF{-i=4QD4fo@{AK6*=NO#G$xs^*c${Or5BU4pKk%rwxBhY~M^V#un+?Gr+cfz#aSJcLPKX5--FSK`NYX zH-p(xndRc^U>-l}=Wmbm@=8{n~C?j61taA{8!(wp)z zF55`?NgG`kS=%XXY)~-skI?VbmDYT8_O8ijMBtqCjY6JDZ}>-}Qb2W-k?W%k@glQz zO2*F!^>(_kG#cd)Ld(BZ$0e~lzeK0mun~5Y<^+v*qi+H>alQ2A{SF1M32b7aw|QOWRZ4qG z8{MCA#`x4c_@&CBa>VoCRJ4xid9$^-e zm~OuLn(YF|UFs=bFX4goybm&dn_>f|W#%K^q3XTT=C)~SR3rCVZA-pOqU@aI9O3I? z-cJuMu1(7X-ETh^j5lFDC|Wk9zR|V|Tw0jML>YojlhqTXD-tju%B>dc{O@0&(>D!v zYozvVM_pk}DiRxKOj`}fAXwO}d`gywq%%Fp-fv6!9py30Ce5zYDQlL?|Li)dhy=k3 z;u;GVc~o3kKT?fNzY@IS@K4XuH4|$|kOmrk| z2;T?e0c_xw2r^H*8*Nu-Lv)EVm5LwL_v12p4bPOremjF2*GBx>BCqJ}Ujo4OXt7r_ zB+iYF9nUI6?#}(K9zr*WUTzuhTLO}1|3fX(R3Z(ni2IrL&b$%mx=YGTxxR6F>7C6z zf{>0_n-%~|ZCU=%QLZ8ZX|Gx{uP7-%&D&>@DYdI63mf4(6hAPR!o%@uAyblbk7aBy z`Qp5vL_>!jCN2^FgUI}AYKygv+uXXVG^OrKYW)VM2EHDT4x}qds-`FTl&UrEpDz(R zA>2rrUfiFiJ?w)YB2AZrop4@)8!$)?{>~~V{m$yS)@c_^D33F6GB-_kK3>4c&#Y^a5ZiegxzPWKlaj z+_Y2?$GOb&HC)rD@K}-339?7ZkMx7fQ^KKb*v>K^Rr%dWZy;O(0h_MQeRDI(8?K3A z>tGZRh#{&65xot9dVG=efqq;Q2{t~{lQPf)rw%V(h*kuA5F@Z2<3k?y)y=ZghgaSH zvA<0{z%F9idL-2UR@d|ilaI)+8UBKI;Hs?f5BJ|X;ap=Upm}omOI142;yLU5Rh;{~ z=t)Ous{2n-CjA_~XUxWa~eMnRGzx&xBMMX27C0@S#A` zK$#76Ca_F~D2_h-g&=8r@){-a8-5eJ&Yj~B9ib}@5@=f+v|+EKILYvlY$QnSEsU31 zED;yFW%AsQ>ma45Lih_3by}|!!9`1jC5Z@g%@ekX&zCjln<_qCo!5j3Xg?j;rXspO zug_n2qjkd#${Ouu&lO^iM>$$M-Jy{E4D{6$z71WRdkj#%rq5JeDUm*=a(ir9jI;k* z0d-Qm6gA@fWt?|&CtLAvg-pHHe|;5#`MVkXC*}%=^OiS&23w4I8ICzdZ{8d`&bY!A0jmZAMl_*6 z=%jcM5iIEjSzCE$s*?uHo`xIVtlKcJC}u=v`4>6&X0Iqx6URDu8pttL2S-r`HRmHy z2jFQLn7;8TtZ=r;bx&E=UuXQm8-4EiKczMoXnjTw-;a)(cJNQLD0KE;oqv=ybyc5t z9!ZQIbEUt9`z+X?*Yd4BxiXK7w?Nw5`7EuU5-NEErGt{DLntM~yiF*Am%q_Q5%$Rk zoQ5~oyCaz?-r(1mQqSNd$3HKv_cnGb_8*fT(pN#(xbo0fw50JF1Wwqi2i9@IkoYO8 z0jXl2jO%^1+iKTjd<+wj97fSW+A(v#%R&kvK`d{4gu@4-iVj{l*$L+r_o!yiu`?8h zQL<#qF?ijIPWtIWqay4ezP|l0M&QVG;)Y=Th;d+UiW=5Me^q}<)Cm&H=kd7J>i?BO zO3y;%pOGLxtOU?^IS>)D_6N$gF3WeGoE!lEKLEhN_5CU@w+I6C6XF#v>GhaC6l<_B zqAUboSa3s(&`~PWkdx5+e>jP7kq$Fppa>rNa!vEIF)NrnWPqVU-b(xIv(Oja67a7C zF!`RX&NC{VWt>jYJnb?fD2Zon9=0*3yNUBq?ph@;)h{BzenqPAC9dm|2+qEDx1QqH z`Ai3?QT@M36iF$_vKaBxO#6g%VaGT{yL0eQOY#cfSA@Sgk$1@N$1o=hyn)8JmB0nn zc-Hs)nQ*MC_$TKfNMYey1MspX?KjEGX@NgT;Z}kTOBBX;o3+_IO7qh{U~|SPA7^7X z)!;CPhlY_^!HJcn2P)(9T#;snI_2Kz=&fBi(WG?e22qRw)I&DLG)Ea3!&B(`iKB&) z$iYgEs(b6*9^tg_LCy}ax#m0{h};AUSR#{1Pf+b9wp_+qK_lv~1h?Sfsf@iC;sHZJ zHo3|7?5DJ_+U;f~nPuP6zD`wzsfX5o;6aPqGx^DQvlXHv6uQaWR>A+f3oJuR@4n#w z$yN(cS)TrEdz*14HDbrA1Hfzd2^@8X6oDJ#$*@@}TptD`X&t7P^t@luAiGb>`YYI{ zv~;p7u!3@-JNbX^yr4w#ESuy{xeL+^V}3eL;@!t!9Tz)D;<$CaRtRmOG zL6nAC3&qYLykR$H*LfMLKHETH6_9Z#Ex3;O?&jwPLC~G2wfYEnkuNz-iEBk;0^Z}~ zgpvr_GamyqFk2(8Bclg%k&=Ti_^6@0yZ@Ct8vQs3C*k4Y^-xO);eQM)J+BU4=FhRr zT(ROLbBSh?{%440nNA}SLks8| zX>U|f^9W|_7i>$76aM;G?EaasE=15i%FeOwQo_2~@z-dRe{QrIUBWf-r)2mkh zkjP8Fj@EUN6+B1spzwNd4q?iw*{O!SCzTW2_Vud33O=hqm;Hq{oymdj+2qdIxTH`r zyxXasOJ*$g*rAH$+EV@iQ`p!{<>5wR+?SWtjSW;wLZaN>z82>Ln#sym2R;B|H3!g7 zy{07OY90^>6D^l*PYgW}D@SXCF|OlJJZ0pvW0Md}LCVThKCm<+B6MUYAqRoQ?H>=; znjS@qU2e*#!4Te1q`;rc7MeFc=p$72oR9;<=@?YcYW5}U8*$-_qk3bbNEP?*r_eXl z{GJle_3yW~@-wEjUb>m5A488cpp=jZN;Y)3m(-bI!0eHS;ah=tuI2x!Q)a!Srs(6N z1-*m@%m9l?BAnR0S>&e88fJc!u}tN=7CXu5;hz5RU)yr zQJBYB$&tZJSb)pIW(>Ofb8Iv=iNrN{Kj+1VW3K=WpiE_%I0~alxKLG}T?{j%v@`Q*cX|uMM0kRen^lRCDFh*Non{-F9WXUL>sgkVt9jH8+K@!(|9P z+i}zYw()W3n%Ml5+5mH&lF-&E2yJ$5J~Z5(p)&FiL5%N~I8!H%n3kyFC-Q=Za;>jK*6AO`cq6Em}?e zL*FHT=Nqp07T=;sB_~;_QwoZuo@$ZHhn*6(&uuE)87~bDhTd(i4WJ{l;Dnu0QMj7| zUYk94-ZNv!iwy2I=IUY?JP67ObJCJA}aZg~23rKf}m zPQC?omEs_+cz@R*JK&-NsR?5`k2wI!@9cntJcBk2X*}407v_= z+t(l|_}l&vruL|x%43o(7X2M2vd>gCZ{AQ6F3LkQh4;U{0IFY_;D(}b8u4$R(T#Re zX-G3%18z|uBItTx>{DF6m0s6S8W7@de=qpSCk5>eQ?ww4pd(+cH_6m<-DBy3ZlPH7X!KH$SrZ- z9fgt6nXz`!HW6=3k)0c}pgSj{s+37NCjR(U_a}Al#bxF6*$37ELeBXk3nGq=b!$EB zsAqj>tLr-w+Skcv;x*IQq)`w5$Jk-NSQ|YT&TRKmO{XT?>;eYOTSGzhjQ_+-oKt!tHs7?5*WMl zN1n_kMUE(gaCd}|tkTTslqF%DVX;L>tv98it6cThA5b+}{7()NDfsf(jc;P@<|O~YAl7X~Zrb3?3JruRl>OpM zb`cnYgh^XV*BOt_mjGk$J8Wb2$1SQz|HvNag^L}W1|%3Z>Nl^zmG=+!Uju9EjlV;$ zr)3HI@NbyBULv})39+1CA?p4iF))tZy7X3Ft+%QDoPlk@_ii8#q&~>T^5ha8n&**f z0sIG8%Pk~SLA&u&FzbK3frPK}ZN6cx)n*^u8xHZN4mbIM*Fcr=5>%L@zC{<$^0N=h zp-LmHA$Ag(ro=ETVooTSh?M0}n7^1l8PzRqAJ(rt*KnfR>J>O9#2zePMH+SYyv!2v zN;MVm_~PV5ptsD+7}e)6ngpOCmi`gt=1?hpP$g=r@O56nVl{eatI9Bkpaj@UioGUE zEP@ly+mDxKuOR$wKfzy9_1{av_!nwm2vIXSy()h&J+x1wX(g#5L>U7z)2K=3?bO{I z2fg|cCcz5V%077YReD732>@+rovka-e!nE?trX&?qe1W)N2S9pTU{9iQ(JxBi^q+lrKxz-s}-V*RpSsa&TkL+!AZMm>zyK zrPJ~F4x)g@1rW<)%AZFRbK!Ki--<=Dw62&!g_^QmSzIxA^CSe$jN)hv021D&N6v|87vKG6m&PjivDq7`QesX$ZUm0@<9HnO5-rEM< zJfuqbOm;fh8n2;>)ig^=f-PP)E0`$yL|cg?iQENH9vDcV;T?1a{%2Xt?9tpW6~K2I ze~7&cPUq)-Q(d@*2Bf+ho}Qmx15nu~aU0lUj~4o#q%}vy)6tDxBAjFyJvrB--F@QC z2xsG#1xrs;u>?M`4nqyK7DBPY(EB{M|0)S`3Ec~0Ms~Br&XY(mZYs#ww`AbVEFe5v zQRgYhd-Q4?xGxI?Z5`5G^c=XeaA>n>eS(6u^dK^8$q4~Y2TzWQEp7ycq7FJPZM=bl(S zE=i{^dLrg5smaloa^%wO-xw(Ah@V7xIMSP!{<+h>B%#w*Tn6m@`(Qi5praEN{EYS7 zfy4=tZm*x$R)5uFQy6N}?&Wid47O98LB>R|BAYdtBeVrVC%rSsRv_tKhO}6piQDFk zmB=jo#1@J7T|BEW3t&y*7b8vjl2Jou)zp3FQP*^izhzC|xeftyP{Eayrf2nw0R-iz zRL9sRIMs-cT0BVi%^#s)PCn6&3sbMY*a6Aq4qWMBS3C`!8iEyoy)VgUKjQy*Fe}j1lTS()e4kHZ@Wo5()@R?-Eu#TswA zB2P1mb%}=IP9q6&;vl@don0izj?pTEFXB8vhOEYdw#_ibeFhGKT`0EV)6ZzUAxrNHsWf1h6Sd@IrEDZP;hdj1-p5SiEDYuFqGaQkdsmYPkS_ zX!9diy3Yc60J}#&Eqw|}&((J3eKbeS|IDF&6v369apiaRz={tw$*yzXo=?kh;z^V+ z%}Gtojy{>+=pwl7NRqq#Rkpae^^do%Zg7<^9a{@-E1!aN3;)#ndmeE-F?S}CI9B_Y z-O+TW)UMyuZZWnR%o;Lko=B{GI&P~e`@0ucu;+&D?x9Z9(a6sPtoeX&k!k{9g-8F~ z(N3Jx2L_;^2i(vpL!@WNuN(NjT6u)gMFxZ5N}^a;hl$K7)xknL&qq~hfR4RFgGqL( z>v46T|9fi=rKoXO; zRYv*8LKb;QjfWH}i@tJ_#C>^K9{|{N)jwv#KbxXff`tR9G_$7$N~KVf+SLmEI}67j zWvlz>GbGmzdnO;rEG~MnpXy56eH(dS0h3|rEBy&c?L=}mT4Yg==73#1l|Ye)`mMlF zpc-kzt`5olxqt;SsFW#vviLow@I79#6gi*$a5QFbaTNGnaA54$LMq=G;UK`HtN4N1 zKV61fvG|9<0mA20XM_+>7I5;tg`T;HVvL-S#b|;=DbRC!psi-Z;Pq*!(WxihL7$o` zp0720BrsB(Lzn1E+GXq5*rqiEG7SBnw;EgB!=is8~~N#8AK+zG5D{(VTIYX+S~6;|(&}g~`X( z-E=afo#O@C)^83Ut3jt}Xri4L$mU3PfaYh!R`Sn*4#OJZG)6I5NYDK^1gt4&Z4Lzp z>B3|C=Ne1BcM3i#o8{OS;L~Z>zk~;Nzjv0Iv}TpRW2<6nf=DUFAmsIaa$J!(nmQOx_-LskL#6RYOjHXX ztJJD0gH^zKSpcp_T}^P37880764AnYP^4-XuX_jv5Q!(gw|p#%`X$87eOlfL4WY>` zW!r^9hhm@JbDvIhp$HW^=xVJVA5hq@sHU-NKady`7F)@05;SKFJc`8qtT@!0z5s?UcH+SaH#ra~1; z-a~yX!TZh8nH)s=Z$m9-Y?x!xQvcI>CwiNL{r z&EC&+_^0$@(M(pQ)zkm?CH3v!92|+M1t6=;W5=O*3R!B^u__@W;FHqDwSEu zYE`E^`ONyn2Blc)jeIE4;kGK^u(OH0Y?qcYpXefxcqAeS&2qvWton!WEp&w-$e(AD zafAZaM@2yt3?8xAw8l0jw{M7?B1f>#s_~-J3;b2rs{^}-;DSS87L9`pottM6*&EsH7k=jV)4=Xf>)W%!{#Xq_Ehn4Q>cZ2;a zZrwNm6b!8vY=clKXynb{#X+eS#bOf;D!`3UMd%@l45!1%THu}a+(|FzS2fImr*_dm=yog2iC77~n6S?`@i3Mser zVNTDifDVjEfO*PTMQ4}h0pDqg<*j77d1;ouQN`?66xJ`7`_eMCW}h7skPa$k`utpz zwQXC#Gzl*hi#x5W6b#x@oDl`)DbnP|a45#4+FnjUjw0vG{^_48se{8sJ_b#lWmhXN z0iITxPGo!X?Fqt3=Qb*7)Xop)q+i?c85kgH{mT;X9rQXq4&``EvX0>}rzcFrs5RSY zh7EEF*}^S`18i}9-Q#C?WJ}sgir%M3vfN2_CN2^E03Bn}NO>Ovtj~d3xJA3i3dAEf zx-Ys;va3B(DEmY{Jq}iAV?EhkV*lUZZ}xIQHI%#XsI#il8_yR1`HLTGmga!|$QONC zk^)5owl2vIDF9;%9tYO2p8*wbYl5!bC<>PgrR!JMv!^-9@?O>T%v|8oJ1X_&)@ zv&9D$;RAdk(~xeUTh{sh<6fz%_S3=BLx+c%&m^{S`Eo)rOaA6Vb() zT9(DIPA#X#2h5lAzN|MO5(f~2)djwaZOF7WnHv4B)|6nWFq!+(b^>sIjIQ$b-{#Qy zw?>_}j%i6tX?E8iS2DcKBFsu?v@SLohrPk3$MI%v!TS z&$yF2sTc0*>AAouHYrbGR-Zz2ZBDa4f#bgH<_cv;9YPNdg>F5_@WJTyDu$Z$e>R94 zRjk9pB(S_cnsybk1nO0^8{>aaJqe*em(WUGe(69ix^S%(vrWR5a4>WEi_*zOBCIFv z8!Z&7v=;p8ViGY3S?LPy`u3PghkXg{Z@oG#-&B^7;{-8Poxi|6ffk(-R9XYQt6hA8 zYJ87AqXNO|;R~Aqp$))Sg7_40_d46bsr>-!l|nEh7G^gLP02G{(qldYBYAUcr^v#A zgMU$F#3`s7aTQm7PtUE&`sE+MxQLfLgw59`v8nV{SQ{JhKK_&fmPkxaMW%@Bh%>Xk zWsD}Oh>^JrZVOU<{=?q(7sG(3tTo;*EGzAgEfG{k9^6>Yi?XWUlZ_I&ZxbHbcc9F3 zh8u~9Td|&D@X`CNKO*ck8l>6rmFkbMEafZ{cJse|qmI|gB!}y(s zS4{}l0~5B$cj%^do;10(zn*(1mgJayI{TOO9ymoaHvv&vJtmwqjwzQbs~WduA-VI0 zWe8(9`34Ty1PsvOsLDsox{=pqwM(iMS#OP12NS8Zy2A10i)bar!oMe$wxC{$PjB|q zy~Zzc-x}1^D6z;Hr8=L)a+fOJoEj{*rW(xbA+lxM;e2jA5JHDzIH!1?=?!39RDOZj z=~ZIXdDS|J$>r*dY6IeO`_ZD#P>Hd8RVwwSoU!wI78;Pvo0N9VtjI{=>5dB)8m`L~ z_L=R|qn``w(a1=FUfJzQR170KCAm#$tt9A_EbL%p)!xD4GiZ-d&KPD&tdK}#Z_}}5~ z*zvZ!5*B^H8)xve3V>`fiiAO;{xLwuAVWYNpjoPPjO^f`3YCcY@aSEo)~0bB9`E zxW=)x$)^R$;)oNY>7~}e)+t5wq1Ja2a^V2IM7;kIYsEEn%DGljT(=}&WV6s}o~>9) z(F?z~t(v=_GpV+bH6WJRu0yAY=f~alSgtLk)YNs5T-5&JDHA5?8+a|z1c5Y!D8G{&Ufxn!!lK7!cq1{VSrS(WyxVA-UL;y-SyX3PsedA8{;&xDC8TtUvT4h4_{!e{&qEWU9a26MK zd2e7%66xi(@GkxM^mVi`3bM|0GJ#GOU_=x7FFgOGDNR(2l`+1i{^W+%mWVd=^izST zclBW-vR~wz$XFdD4V`p>gBrz}jT}RUQHp<&&Ll)<)beFHQVf%KAnkJqi#0!=-{~cxRVI?3t(nmD zQPn-w-j&^X@!L#-6MBbl(qK+jwcZM#+}Ai_9p=A!krPVb$|Snkfh2FYy@A$jeNXPZ z6e06Fhw>&-XoncZp9w~d9;`FZ6X?^5V221jrx1@tr4T<~fNtV>N}-N&uO=1dW9MQJ zEWYwTD!40xux(86Kj=zxOlg|~m*K^j=o(**L#eZa;3EwD&PYrPudNGgYEWgSb#|O{ z<_5Wt1K0)GVjQNfUyhxsLO14oYwi;w5rVz+9s?hhUSAWm5E|HjuO#Kk)k&_b<;04VrfGFP`&K0JU=KtLhT(`sd} z5Ua(AMoU7V=18@E&YlhvV=<8(4JDiKfi6;c(ux8jJXuZl7+T^bovfq<0lx&q)n9$B zGxT#nm26%$noVVah&_i%)f}%V>D8r?SNpZxyK>}_Z+%P8eqsU@^%4{f^_R>O5@9VP z5Dd*26Sv2j{iE@V+i?gsBM;X4-Zu_#MsNZmN;s(Y1YXI^`>53#EG_U7*%~}&VTb%V zKwWDv9xfe4=-jE-T2~%P2y?Ry)XZ}&8b`pN5#mTO05{^2wi)KWo3()8+KPMJujW6n zcha*R5Ew1fqq+Ye9tGu#VY$@bZOfqLQ*7rnznY>%2U2>_#UYGL74fR?zrR<93wCWfiuVJezFYNjsl{uKU^Dla| zdcM9jF!jK=jfH9!c?JXKlFD`rJ1!L+x0?~M{rudbO_V(y$eI9-KDiu|SefjzI>J3W zo4#-_fa2(0VTRjCmE%SW*u#%y=oY8VwPE|W?ae--m&uTRS&=oc`(KRW$mTEpJFayBH}w2}IJipCwbQ z4&JFTW6HQ(dTA~Euy|tG1iSBCKV^=+$F02W2!9YasRqAHH0_=r5}<5kUl75mXxvxb z;TxF6rLEh>+cHn8L(9cv6=uQl7!P3{0DcgDXqCC#B$Fwn{sBEl1L{p)+IcgG;y$BW z;CQAbd{Vc52bd_mbg#&Ry_RVjGn4+m`KuvK=niVUy}UGTlg{V;C<5RIl-g|Gjm7@F z)jWEs`I*enJ$+&Qup?roKXi zGc=cim&f+58}Y%i-7S;@ao3B+O8WY~eb60p3f17plA6TJQLgX?(A$Jjj*fijgI~eZ#0N>Umq`(qP zm^dhWhy?lJ&?!>2eZvAjHJ=^I4iJZO-EVY7ysWhAIbE%`t5PWM9!o=}ARF=j6d;RO zC9V1;qPBM;o139n7I+oK*RN(7jF8Q}%5s>RpNyH4@h-a0TYDuvA^m`TOSuLdZkq}@ zJ5j;*iv210I8BsNHlg(K=~^swUS;LzFa(=5^DsIAlx@F*4@-1Qu|!}KAbB`h#| z9iueAn#Y@=iMUFf;Q%p$1!?yjKy%0?>}>bFf86L6l*fj>tl1o}_^G#EF$3MA(R}neC(|y5|U+19WM+yc#A8J-- z;zA*U&FV9v`Kozo74k+GDhX+`J3CBGU**pj`NO#@2P>a|bA2NUcJGCGXjk^M9wmvS zUhG7~pRW9otTbAh6}KmTH?ikdn5(LO1Tt^IRC?W=-&*mjdT|7}l-A^%XKvXOAfo^aW9@gKI3p7!2n=7( zS9_VYshZ@cnL^F5hb8ZmX||863lMJ%$SuDWZ~*^q+-4w{P6qM_cZzfXJ%M2CZUIFw z%6uaeC9nHNcI2S>+Tt4~_N~C*>2A4J*xdxt_(h~zs-(}INHykNtK|-6V`LZ5%|hSw zoh6?Q6_n_ejU{SlG({QIp3+5=!HdRBZ4EcU8VkPV(O7HfL(|ci)03kX$qA3K=CQ1Q zdd=T?NAwNL2IffSzn=^^%}A#NP>7$<`In(xSd*(s%P0XJnp?iE)Ft>N_hQNj25Dcc zZ+9u%U$GZlchOJMje=y5jE?4``Gz#_Z56EZ#urr*`XDLH)z4%XxH=Q)>fA z%W?$F+9SL3G0!cumg#%-0bzwPQayLwRy=#3>Z}u>WqqXU*Xq0YoKUm{u1bO-ktkUa z=IRd-;Q>3Y5dH1JdZWbs76bN`NA`Ris{Cx;094!Gb&_xZ*aDDsZl}HpGW=9^F76Z& z`F0g)z9{Ik^O~JVFr>vK{SbxrSOQ8qmJFA76*EbZ2_oBtqcfy z;!rrGyNs9kljazt#JBW+dFBvTkTx^^{MVPOSZXr1ocqCO$5}Arp;wB9QmevK!GjUN zk=)1LpO{g(0H$}sF>4&Z;KU;%H7xPysv_z%O@V*()p)N($0q}bf=~6EK*C33A8Qs4 zl3zU6Tl2*+Ra@ugWJ_=C)rMj8BHGPb5uNGev>0!pcJ3XMhl{cQY)=qj`Xw0HsnN9mktT^DNQ7C zC!MFn5E)wDNurZ$a2SA_XJwhjHNKZXhY77Wkc&Bnmi&!F`*L2ykh6^%OT zA7O`TVaG(Hh74)e1y|A7zrT2Cu)s|j*fJ|?@h-8B#+4{}(HWQMMb8-btu5(9=1s#} zA50C4Vo|=cvMPj9bYwy9Nx|n zU-g*2b>viiS5Mg}mu4;1->&Hs$x{)vb9NQnO5uJ9orI2_lR;*Tq@9Vy4eHY8kBsY_ zUxdn$DP^Pvp#1>2E}`81>e`A+<&KV#c4*m}g7=WExcO#5yr>PRm` zW*c&KenM0#+ivj=*O*ND9ba-5>A(!u-PEOytIN}LpQo<{FY;wS--ZVl*lJ!V%bt*} zgont-rajKtJ3HV+7N&FCS;t|foY=GhNEH}{=Av;G{C{x+?3vGd ztCH#CYT4>7&EqBckHLzvGt@r?z*EGsKyLB7pQ)N2UZK+O0taDF&E@2sVRTFLYUvqsFuGlu8Uz2sL_eI@{7fS}57 zGZQQOa-hxU%C?t?;r;w>i`PA?TC!+Gay@w@O=#bm&on-7oSu=k0Q?39-VxSt*ppOI zK}<@?z17^f;f$B3zJlGUwrf9sBD^XcnqZ2|7!|uIvy(^mXVzUl{H3LT+sf$KnOOd+ zAhGAM)o>1{h%6uhX~<)k;q3-&f+b9ayh+;Gwxe+L_)F`aci-%Jo%|!Vmr!?KtxxWo z`ihA?=HXhx z=kOh^TX##4&ks(C$_XPoDqh4zcJtdpnX=w_S%hFned=QS)n{PA4lKgy97yI_O#lqz z--_FADKlqR3q&XD#x05lOs!ro0aPv18!{}Gp;Rk68=CCofqSW} zhuT(v)BU(6!;7x9aZ&iYE5?u?%{|3m5gFNdd6C)X39Ox+%$2=Lk?&3WHZ^Myam7=@3(Qek;btg zkE7Eay;xWme-cl3-adJ$aO)<9IMQ0k5ktpRu_>N4i65Y-{>ta``~@03KgCPm8x^+7 z(#7spxkV=;a7@;s%4B)&hGFBg!76lCT;MU4?LnFvkbmjWDij+B*~czt zlut(v{H;NlgrS|A48;eI9F!n*1|Ns@5CXzwjtK!4nDiKuP6~&dt+~!^22dpm$5tPS z|C51hmOQrCCfwDaijgM%#Sd~;_VV@B7GcloP1~Uc0Yf`ARgl`Z5I?S7y8#3K?1H9CU z)S=lrXf?MQdD3C%-d82vC%N++4sZuG8ho^`(36-pKx(1u1$rDq5a?| z(i!=ePZ(mpee1kq(yNW^d;Fi-j=LiRzV5WSXFnT@r_LO4rY2>Zk3@}xMEE_*{0kg% zhA2T2Uv{R3Ag@2Coi!|`0+Ru$aHW$}(pcp*Fe>j72iwThA858 z!(pohyaG!i9wZ@P6hhFRV(83;qfM>8oqPCvjn-KX+PY3Te9!YvPbhq@9uWYI$TO2G z=-M*xl0M@#HJjo)VOg&Zw`zI5Fw^RtIgJMOr@%$G1aamFjjAXfYlw|xYTo)Vke&V+ zP9@NiFd>t(v@9E7Qb1RePahPByAf5)AEgWRvsEa}@fghaumJ(Fl)JE1F?m!HOC*eh zk~x({kb)8aTWsRfc~SN=WeBraY`abERx$%fkDn{A1IBhyHaSZ*04cqgtjO<D!%? zIQjs2c3tgMMAw04My*P(D-|l1bv0DAjz>^2q)QOJCdUe!K+u2FuN5s4}Vl+H$jzAjs~DNx+k;C?;#xUl|NH#b|a&{?LrJtS2!r}RHVaOuXYTytUH zYn>wwjY(O=FAg%%m~ZlDDv(J)LKO~iUE42@^7$Wk2YomtxDT2jAr3d%wOrYOI|3_J z36{zLR|JRYZyAUZO}4CZ0NmQdMpm*)haX>MfbbrTM)2#qYqvWAG%Ae?QRcZEv7&Gj zjX-1P(n)~4+GI{>yxVb7iTob)-Px5fvRux?<$LTFpIf9P4ib1CkZgNyK-ZKw5!J~G zfvMP|!bAEW+ffb0Y8^d+))6NQx@?RMA-b=W2Xt{q;xtrBM4)vs8FGOVk3c9FvlY4G zFLL8c#yD60Ayf3@MQ%6+pYz*JWnI&;e(2J^!)eRU(Cf|_49<6?7dCaE?v{h<{isX( z0{U=Z7i&W!IG)`Q<6HYEn70AG=Aw&D@PZgwr+kTkx8gX8Zj?5mfv$Mr*dLlNft%W2 zDp}MWN;RD>F%NIACyF!L_Mo6XT(e3&?lzs@AM!Xg1v&FG4@w7RS;3acD96Mi4aSt} zW6V{WF+Yc-z7AA(5cshEFb56~jVsl!B$ld@cc>fW1}ieV{))J_@L-5D{mM1(mX+#t ztLHgPLZ;Gwz~aQDp)E9^KiyCl5J(@D+M64ve$o72c{d9DqX7y$;~(=PG?FGgkniQp zCgJ=cPjDm?pUxLf&YHb(7k69{a)Sk*e+bPLU7rAUu?&!E#!#rf%X)6co{?IzgA^|R z|C7mbf=g&ttg%E_$vL(t1aBorOlo8N;OMLl!zuNv=eT7}dES3ng`i`O9yk)bDGsDq-bAcI5nK6os-B1~(9gENS7b9Q#q2 zZwieO@?B}6mEm~W^(vjnde~N&M?uNpwgDh3!mpom*c0x(Nb(QZF00N33DtEyL+q&{SYu4^6E|5i=inpPSjYorx&r%!aLce=`M%YjMXo3L{_^0%4 zg?&NCU?`oaV^miFvI`P3NhjATL-`(#yI@mj!wXqm^Hg;$%h&Km#o}<>TZ|-avkx&8 zMAbskU2X>ORg@H|$KG&mE6YJls{V^|R)L0~5%{HAFUs)`!KQV#U34%7UtXwejSuiX zCdznSELe3n-Pa;Ef49lEVsX;e+EIvKr`J!Vr@z$<83R4A@#4O-4o)GG?b=5f6TL(Q zGcf5D&FZaV$&Z!l?>L#LHE8REZJebW$26kJp5{kZJ9OXQC8d-e z=8fCu#}5Tq{B^;oNZ^?NTTE>~M#N<@?w*QSUZEqO{;b8(MBPORRn7AJDnrrHll(P- z7ENar^~|3}f|_Fs&7>CeOt<^ zDo!#_MRIsI=dxWH;EFBnQxF|RSP=eFf)Tk-j^s3UrSjxom8gkzyhd3_olL~V)8)*9 z16t+Va(RP$1HX`82!}uw39~zk4YE6EdxE58e~>scpULf@vj(B{a=T%lRh8k*!9AW- zngZsUvf8)KQ22F?qHo+BC1aI+CS6$ghnXYFbB}?7z+#g0q2{rJP!?b_e@Igm$gS{t zvE+pTSJ}aq_#*&;@>1H5*~dSgtb`!d6lQ5}4IxMly!JACHVyeUBN7`HQthI=t)Yep z8jo--)BFR9ba})L(>^4enI7iRh}mv-x0q16$VC>rQeh~nOiE^Y( zTW^vT{uG#W(hQ_Pay>ED^gJ@TZ79bOZ+3IpF=m&%ww-*cp0|;oE3f%?_rKtoibG5o zT1xQ|-Wwg?{NZZmRMG4u@$(Y3Bw;7cQcMmhboS=&$Bo+_>7J`Eh1pi7Si&*G>70=D zwhVy3Niq3t!moDYB-$R@`k&e^#Lx}Oejwt$wRlI;1R?upzAKj-76Fgfu#azXPDkgp zt`D05M_|HS22CaN+~8XPN9Fsh$VuVGb<0#^^-Oz$Vs4yi>m7VOS>Fl!{TtJ+n5>A3 zbe~S;=$jfjEI(B>QLA6~^E#x)7C|^+L_%S}O;@zqhNt@zQ!w}2`fNvHx<_|ZOr>`& zC|^7W|B)%oJu1D#(Uudc|MvFE@7r)+fChAc*rL_TMDx13VT_MlWd`(1%-Kv03rGQx9GoOa##kAt5z>foGqkYZ~_6?CW0o^A`l_BE*F0 zeR$c)gWKw{9!TvKd{t9GxP%vM_J4cMBVU#@nC?ND#!cth z&UGvbh-dNN_bGE-WOj&p`F&0JJ~Pb}5F?6R`uX zkQDIJDqu1Y}xX^{^)iO3yB(rZN?`NjwD7<>3$uknXIJ7NK1`&R1Zs0Ltj^Cio`@*usp~3 z&{;8CT(t7FN5Dl$nIy;0D~LoO1F(1bl?|>~UZhdcZL0lH+%R2b%_ifX&+Y*$2GHG` z*yG=`Ad|^}=4|4&UVv489|le)-N##2hW79$VwW)Dr9JGRN&+c&!zOC!ab$Qzkbb6t& z8v_~Vpy5x%ZyOc)8v}!6y+mlO7q~4kd<9ob&|4z0AhKgBMtGxCgI}3sswa0jHFS9T z$_gF^Y^x6oRlHP!q4sP%S3{YNP<} zegq<72pQKT0fm5<*jDR!5m9DUAW^uceEHj=vT49WqRpPkj|7ZV6WC>Oz!ZBEWuYB| zhxh>WbZ79ho^^{rdOS>n-qbgRC5X}5-6_{w8bqj|H~(zLmF!gx`*Yw71Pxz&mn5M4R(K^H|-9L6VK1`}|58Iu^D%@a!swPdd7z~$MW z1l`SGD5+mV`GQIxp{SUA2+2px=C25`)`7&zZTk#@1ThbOF^~4Lk$#!!(7Uzzp&Obi ze#_H2rt zGX4mS*3uBiGBly7!~QYsH6ctb55BPA3dLz!_)SsdO0ZOq>fXkS!gNr01ki6^g~pO5 zjS(!z()#nz*}{AUEW_Re#AF4K1ufrf4_2Kr)0iMs^e^5k?1^-S0g;!% zxzH%Va6-G`wY1WUzU9KT;{G@jJ@?<5OmnCNIdoc!;}uak<|D)4mwJNnsZ_{#f{@HJ ztN3HdBx74&kl7&72CF{#`^4SuuT+xDo@B0gy=g-gdKIhJ?6+2(zoJq?_U#tm&C!VP zE;^H3QAzFEp$lO0FvA!-Nl9;f?9!6zBB5cd1Mjm6vF`d=7`od+BgR=~c{b#(T-RFr zgcwVa2HDh?y~3mw0#2X#SzbsCMTqfyFZzAmuO5qgZZt~(-Mrt|%S-+$jEX}izaaTm5P# zYBpj6XBOHRkgJWpjV^%Jubyz`J>m&!1UCVgX?MJ+N7S==2vzd8bA{QKp8*{#%TW5x z%ip`C$`=0;-EF{$Vr}>PnhW*vJ-=AqO&ewH)(ece^+#(t4B6^g+67ShQqC%yTMTHenG^4e!-`6F z;x&3|W^=jP09uTL$n8t**L`z!Okp!5YI%S=K*T)cVGEsSYr zk=a?*ip8Q`qH#Sn^~6K&#J*cU|oJtwnY5c5U6|Gm1Z-3)7Tcer63cd4OR?EW9T* zV@-85z8)exR&h!^Jhaa%;l!HM@ICVe;}Ucng0Lz@WqC9>@0`~Ty|KT+A7i|>&DAv` z4ghj`@q5nHnHKf~R5xAVDnb0YpnhooUC`{o9mB<~GO@)NaR5cfLdUhprWGtEue}J; ztd1&#wPLF!Kb>ia!b=zN}5A zBMhb~*tgdpkiRjixph#K8HgGU(}bQJRTWh`GdYZ)YlF35xe(oiy z=_A(ncSDPzLOoXX6u;R@YVh@RYrbF~-md2W-+)RjZo1?~8lR~4PqE&NX%%Zenp@?WKyg+W%CtDk_9+GGIka+x;?u{I$+wF#<0?Ho{&Bk5UfA8BFX7>CQptQw_*X zgcr+&V@>{smIMkTZC$>3M;Q)Tft~D^;nw=#^$u&sW;)hls<~@o1p#k!hY0{>^*h5k zP&)H9C>}=4_=1~NcH$dcrw`Usp zcd^{2k^H>XUxS#EE0#$=T>3cEQby8!>pPxGw&sd^`di@OwYh)BS=!gy-58EzGBJvI zmE+z|^W>4^ySU%8%1s7_o_TD$8Jz7ExkL0qVb-qOP+Fz4BCO!Y^BRIPJQn$>{W@zD9Aup=Qir2 zls{jAOF+zYn{4FsqKxBG9Q}W2)h)E6@H(I3OV;~npzsJ^Sfs8=xpZ|L6(vB3n-qA8 zfmC`DZ$rfbH-k9Y>5RRN2W|*Gu?d5*a3xl5jVDFW0i38=K>dm0W(W~{;ZYH&cK-4Z zYio5_B8a%6aJz53G{QV<#akt*dnsgo;qPNVa~16i&Sdboj`2x@V#R6x{}8~#pYIQ{ z%ecL~ikyaeuZx^F;K?RVFUj&$=~#%BRt8$N0d%CqVzSZ7JX0^5L z2f@pcU9wMtjcun!u%0TP<{=ByJQr~l*ho&Dulqv}$)cHo8~m8(7%YbWrFc{I>GF}~ z(|vX4(DPCphMJ=KBU8;r<|iy1EQU2NW6?EE!DR{Is>_&AmvOUY9%akm5D`|56w!+r zM`@;#*kXoQ#MGhX)vO8vk>eWC-`G4yf3REq-Z~L8;cr%xP&Hfcs0>%OzlxR(*{kBkl_`j_L$h0B`PR?}gGIZ51@VkhjVtB^ zOw-Hb*0k-cXF*|BX@)jX?*sG-C!nNy&4D9~>^U&zJCR?cLQgc9JPXPD5f5_kGX}u3 zh3Ad`t-3YE@k&Yw*oaPakd_ViC~b6+caShJ9v5D_6NskK1S#7r;3ACM{Q}XBUw{ zxdC(;G^J$8c^Lh;gCyDb`)f=5_A-Qv{5k8RZ)UuAcUEf%tL@gJelAJu52&#mcfTvL&ClOUuq z7E4%cUx2(iSgFA$J^`>6G5QjZm<(uiDRauxNTN!%z^kuUG$3(Q?}`9T0AbSEIPQkj zvCd_Gj|GY6ePVN@97kb8^?=D5;MP`~c3jqDu+&{3X%0@FtX=3iwt*-PA)idi7$?Bx zqrioEdQbANEu_XJo`q;zl$k;m6+|XK9)$FgQwEnS62+=-_^QdBP8hP$m(~c{T^Q=} zFz-jmAgYXdsws?thB*IGY2&ey_aJlDTpeh`l3pBXIoh{Cod=aj^1x#H?5nAbVpE2; z*n+^WS>hiQ%p8h#sdZbYBi1g4f^(tn(hqxca%)A|u66X%A3Byj1S=m|nr~dd~iOq&`Dz7j9E}0}fx*WH9G0Q9}$3$8UhuF+vJ8Od_JRB2^ z7ux4o6V|K1XTkNz@Wm5PT^?T;tPW3}V&eX{SqPIIz8WE1Q88V4+2&IOK1U0@hP3pc zhzGj7*&vpbB!lv@$^ZRw_pR)iYaR4Lttw4*3&$E7x!N!<6xhsRos+uucKJLlH(%(6 z5VD9MSy%l0-%qq#vce(~^Rc8LD3pU%?cOSrcAnP1Y*2VlBM)Q&mEssMLtzDJsRM=3 z11Wax^Q$Lco82)P$fUlkTi)C40cRZWAD|}Hx~M*^__$&&3k-$paN*yGg%5ayO!IZM zITfF^C&A`-rCVp5{%op2HYzfV_wvSr4NG_Z~Py5HBpaF=in7 zUDG=r1&h>)ZKBimQ?nHZts?=|_(_;{+R}+^iUh|9rr&R}umDh$5(bQWw=%y@l9*>3 zLsN`U^D((pSS2Q+2%>~+#@)eCL@x5zr6se>Rbp^P}l(GutlN0;wash;7chD^*8yO7WA;gaRf?seS zyF!@3L}1ZKgE&GSV+fiL2*R3AKucOo&rGBNmW^ad3Q^73z;=4?nvLo&tbG04aSISL zvSrYpw>#6VZ}V?yX!6caNCG#1l#BlN2j+zPh)@%}-qE5q6u-Ifgi=E%VjFuNxu$bN zuJ{Ip6)J2H_mXrp7TQ-&e&7Zg1yeZz+T!ds)8h+-@p%jZ7$C*$^T(a%!Pq;p8xl)( z9S@KPIDUso8cP#TP*b;OVW=(lULXMue1hDGKT2q^A4T~y#uSZMOPxHkWkCY2F-#X- z1ege4=;1r$1R0IR;X!>bvCPt)v}=`4-&=aUeDg>Ycb-ZA1(vgFL88R`iUN?Tz>@j+ zG3f$)3?zhiXCDN~t?CBGxPq~?Iv2r;0A{zR+ri$v_#L#;Nv)|C{?=iE)Lu=2SJOXV zQo_TsYsV|9xE@j^oN;CIAxicL?&%fe2|J@IJ_I1$yGnlOvoJWI5+y6WD2^WbLCsgI zwGVwj^;E}%`WI-L$;;}*awmrfr{64MGau+|qSFUahNjszd2(Dnu*yKP!N^By(bSdT zq}^d$g0B?-x;bdXv<85fLh!$YJ>eANq`;-@6~&9v!zLH#Emq@UVUXJv#_Tk;j0aNn z&&|8$Ur(n?DA~{qu@%R;KVun(Ah}sZfLtXvJhQ}gR%HL6o(Y866PR=&6`}wt*dw6v zfB5894=;Yulx!8Y4oDCf7Ql;gr78m$VQI;^CifBWbFhU~Wxv-xvG0*$92;-17_{)D zZ$E87>^ncm99r7ajnLpSv=2_+eR(38RwON(ofTobVfNZmihYkcwrkQRrU_GTEYZuJ zXS$1&G+!{vEdq12z4FM2X}&Z1pQ&dJ#EsI6~W)R90kkjx0v1 zqqv6g^SE`8DTVnvx!Rs8E4{(7*|}ksYgi|9g476L@y7Twl`$koH{PoDD{KD|$Db`a zpa%zx0;b*dQ7`tLB(8g?7MffSiEJi{YsJ99(?X3>McIeb_i)7;3%VtnW5+x_w!z6_ z(Tl7_g9OTp_oU}?N#;6l-L*SMzBV&?d~_jf`BD=>;Rm?cvaKnF$jhc-z@nk4DK}AtMNoj1%$^aufV= z-4!APLy#GAd6};!`loSyacMiC7!7@ep06WH`AS$^U;Ew2!wBA45Cnhwx~JXkkxXQ1 zALM*AaG6Mk%=D@SM5$jvk$JQ^JcGnkGe=$n3zf`H&3Ia*UV3wvH^QL_)p?d_;%h(W zX-nW`=KOgD2v!Sm(12FZX{>=mC$0D#!LMRWKO3y*vG3*}YQLG6?!EG+73eq|{{5SB zB*S`D#4l_6J)Qku5eK6)W8X%!aca9tnzl%$d50}rd9W;vJ;vEhXZeaD*U1dvk0$zw zlAT)GQ>o0^iFF-p8$P`~Db776yuugQK+F3|xbN!eMbMq#(-MR8Yu7qgi643Q_p=qn z68oR8OBdloODBc$Am1?z^=n)78)8b)kPJ4<^g&PiWBN-^5=wJ0I>-imT%lp8N>n~dWf4?c=ri;Ed3t68$halD_z(y|4ED)h zOuof=gv*OJT7`SFL&7S52OUW;>CV)Y@I8<$l8M37`UOZe$? zX_Ce|@{ZZ8=2z#&I`8Nd6Yml+$KYeVvl}3LZ4t{&!fo#99E&MQH)A#VEvXOt*e*IzYZ6-Pcc)@pR$Fh>|&Ez{$+?I z>hxY)Fhu;Xx#1nJdND8^OmJqPA&r;3?FAsB)~W))tjGJKC^5lP#h1Qsn8U`WWk4dv z!Cqef8$vVYi4tSH_k3u>^KV;;nmYXlwPn1Wbrmp@^0XYgQG6H}CD z#wJW=hoLMnF?%!)!b;Hwg10p1;7RA$A}^%>$~ei$vv|Rk`d*F6d8iGUb#QuhG!K4r z?o@m}JvV9uR`qXnL_U?rD~6Bm;%>uNh3y>%PPQ$~RJ1OjiA9k?^Ip_7UR(VAG;Puk z0=}=2WU@AB1^Y{f%{}8m_o0Uj2=R_2-3|Nt(oxA2&P3eUq&Q zEjMhJ5dY(4GK6(CC|e6NtivFZ`4w6D_TbsG_6l9L5RfbXnLdT;8S!rZsR;6g&(&Jw zXXju!R{+kx7*(pA+wVXzJ{8v444=MJidYU54en(E3|baVbU|@K4xJ7|o}%YJ&&%FG zZ4b=9Y5Uky0!6(^=Rr@ce32Zanpi|F*Hf~7R}uL#=COCIxXsh!jtH%k>FD|(fN@j% zKHdj0uw}|MlnjcBkYN(*9=2TQl=IZRVi3=`J2#{N+QuhiQJ&i_Ye-(^>QFJdnt`ue zYQLvHiKS=^jj6AeCyaiLSd4Jt$~*3KFrrE;@L*yZ_!7a!t3Fse{kKqU+3WDHNZVt1 z{7y#El&ef63HaMPEQeq-r#*V3N+}sMcO-Q6iu0v$FBiL-4i9y?V;tR)e)qK>h)>}? zUb6gn_vUGdTjqVHn1?&jos-in$XP9QoL+JAZJTl2Wo)Sid6fD=0GKImKk0x%Oj97l z!ncvpO6eRdwXfE%iX~;$Mwt&5h3AvKJgT|L4gI@@G-@m32w++#aHc0Oue~jSnt{;D zzDSGC37WZUfZlz10Ys3w;(3q-^N3C!%K~bJhoQu92A>p2SbdGiJI#@OkK6(P>oBt`hA~GFm^ex{4oXmxOMbn0Kv!+f&d20_|~4kFs8iZ(w{JQg13SOED=7BV?ZYj)`~{phADz=tOYC)uQJ?ToIh7mX6eVIJr)jRgAP%M9&4l(DO&_w_@BvF3KIBB1sd=HuNuJ(-J&qRfT$fiq5GL3BC?q5`6$>beRgLL_!BH zEOy$^bMS=VhJA*z2V@qLUC6s2YU2;=#*z2rx;=vJZwnm{+fq8Y)a zaZA6lf?v9t^(L4%5QU;N=v-1uhVnA@VEU=NpkvNSzr1JD{^J;wEr!G z08YAwgAXB9B0C|Nv-bi~Fm6;ei(Gd{9ci1sh{CAvY} z%_-75CZ=t8=f(->GW!OAv;h}e@OD40fT%8epSgxr%X^2ps|F`G|K}o9zMHE*qn=Dp z(rOJEdbe=q&SG~8?w0|gxfd!)+Lh64PnhH+qZf|n0WFVBJo}c5fG|4j zR9sPYf=0Jqb*JXx>*I{gb0VIzW?|7t|4YWVY8G$<)x0nJH2Vgzh#>Gjo1q|crt!5P z|F8hN50PY;P2iW&bhQm+yv;`hPBxB+qb{rO$J)Vv>*Di;%6crBB92sO0WLyRV-j|K zjJe!(#YfwvtUMyAAKkK|iGQHEGYhbed}L2H4=XW7UikYT?M z<*;%0siCn_$5g~Rb>9ldhy6@P)x3hF+-6VR%4A5Ds}6HRXyvIN9^)P&R&g0PiSoXS3l2pS+!II=a-%kWgM zXophx-HMrS=mpEV@h|FWK%o6inUl^SUB$M-eIO9VZlG`+D@4U>yd>OrRwx##7NqR_vFdcb2~kq zJU8gc4lBGSHl=1ory;&=B+|7TE=`2__vQaD+@j>P4H(p2SBNYKB^QPfQbG?%pKk=s z0LX}ukryOfspZqgk3S1HqgfEA%QVnhX@h%@{3=trASTVtFPRXQyEI&aC(%+8Ix+6_ z%uZdw@Z#LqxqBX{Hw-gaBieE$$ULDIQqTE<4Xjaj!kalxy^aK>9neu97*}meQ}$t1 z7*5i)_Ix^N9XY*ql$ycoLf_Dpv4kwDVkm%ebj{F!K2=Xbyif!SK;@O+pY52NHi%f^fXn730bRxMy-5ZghH0s(U{ z>O8u|qDMi|$?&)FfM?zXWYv(W>S_70F8p}9267=4-e(QhHr^S5a`R5RRpKR!2U z`F`4=g3FNQj;>8&P-G#6O2^q}Jz{iYDbVzE=Cf|4yXa_C!KNEg2O1uBP^p3cq5Kpf zD`=Y3O2MD~%Ho^f$V6TmsY%Uc#892se3Xi+6B!d=+G>i+_(=2-;I;>^Q802QS{u2= zWx-a!s*LEK_P5^roQWF_b0`_&ZU42Ld9OWHqfKtZJ!8uspKlPDdm_6ywZ|@#2AI;( zJ{u!DXz-GS81MjJ%zTwY9D_&y0Nt$XgoFXI0 zW7smlO2KGLKG3Wv)8y0qptaVe#Dx84k+`=B#aOxh4{yT%obujXd1@=>TF+O0m1YxO zIu+w0A&#=N|4b_7G@-UOe_1!0Rpx_$K zD>599y1xsRqG&-ZkfyOFt}uXG$cQvQ@@f)?jIy9-BP1SQCg}3jM1lx_->pk~%iA+{ z*%bD5EN!wpOX#3l8V}gT$o9!Sw>w9kUAu|(_>_aB>hbM5LWVDftFW*Pca2UeF7oH` z4-uAt$XX$08wUAOGR3XYT!d66_N@bCS$v#eL}3?$itwQkeUNYAq2Wn@gF#gZq02lQ zDSnHaPN+(l8M@{#u&L*pS2SeKosB8J1Q{{f#kw~5Ictx|tmqxcK3JoYH>>WU+w5I5 zY)IGxb`}945~TUam$*0FBXDSW#y}<~k@txlQ19dA zbtUFGq*=nX25Au!qY{Hdb+ynENO-o`zb z|A|hPvH!}dyWC3=qCGOC&ZJkBC4Y_D+qT>R3$*kTCr7>wV$re)%@;kWw{vkU!1l32 zIQZMYq4+*Sa|N>Hnb3*B0$XebydGLzrp&iViB(+|Pen!3t;HcU#;#h|w&IcQd@-E1 zr?YYKEV)QE%i>-=`9Ww$@zC7K4igM1wt#dkgNXWVMw1OO%_#sab$F)83o)bt6kD4P z-L!U(O<p%OUbZRvCFn~zLD&pvv&jhZjo#j?=qM*U zTa@XfjaM&gR+6htXY?r~3#I)Iq@QGu3FvkK%40www$Oe~2Oy71HSbGCNh;JVeeex- zxDYI2@{jyKy~{14N0~byeiibCyH+8bTht_lv->vDl;SPuK}=F;*5by>FP|^r%v1zZ zUJu|%##fKRd|}~aCms`(BJd2KG-#HTL&LhA;W*_>=7p`4!=WD+YG-_y)nOmG`Mw_` zvZCR-FqzF@yO*vWfuInp{J&FwD!gcHpF96J-@R9Ust4|jpc_UkD9Y}0@h!R?RY~aI zT=Ll7$sH$0DL7}P~Af;-r-CD-T=7bBE?h|N*6YL8Z#oO zsmU3htot0=03DJ=L9Ab!kqNe{u8Y1P1Vzmi=?Ua z?EE%pCU8R1l$bzF7*8}T1aQ&Tn)T?Jy-TAB+R~{O#{Vsc<4qy3fMQrosJLII_(Tlg z8G^0ZmqcG{QK4i|BJSMvOuLF)n}-F`E;_HM+h|_!3z2IsrGhgFEa%`5b6BN z-=o7}(C@~gBN=P}{*T?0sE<47ywe>oYYSXCxgX4PHv`EtFwJ7t2@`QTV|x|84A=}* z5ZewL)bW^&YP~eV@_?-7RIcNR0F}xUO&=5~{i+94+3A5y4iPWo`{wABD6?C$6a*9^ z3hGqKRW|q`Ku_u6Gw=~#0<}c~eTco{O7!Bz(Yb?DLCkV!g_TqW>IOYq&&X?9<+N)T zrI^&0azj_O1htg*G`@Aq@f(yGpv#ms;lfw9Fu&)sd*+lYX(fD7dcv5{?pD zK1x;1PI4&$z-UQcDw{KlEZR0#Zh?+anr^}5@LTL;O&e$5nSb>7yVgSQcO5L73(xAm zI_~X3NHd(Lz8U;cs-n;M67W`|)-6u@GRicg8lMQZG(NbTsJ%(Rq0X?%<*m^w4J5r5J{lP|#kPw=~hydfGf9F?}m)BW>FA`5kgMl6ff znu+C?ws09kTY$AZL4uGz%=cL#Mf$emAu`Xi9Z8)V0!;f^ej|4xp{G(oEI?ZrleqX+ zC&(-1cKhPX>wxd2v68}wcymSv3%i&-leeC0mX0IDQKNjHxhz1^|bU zeA-f|wF}T4rXgKk;|XnFz}tsRN~mML=B{f&w5|>^fhZ`V3yHioC_Ic9e6#I<$-Q%F zmjecj_ehJ0#M7S+#i2~0gkEGBBH45tZEh0tbSkz1S0nC%vB11Ln-IOL$Z`1=1+5nu z)~PAe-UEO}H}Q1_#v>pU%al8{Q!AnJURz-AzR^vysnjj(69}w{Y)c=ieUB?NqMkJr z|JpudEKjr z68paGlgolgae=GUbE}N9m__b$E;)VPDA^xxB~F{;IR2nEtA40B^cdh1Itn)dt}&tC zJ=zy(q=q#FX18oIFfLde?ZBog(Do-$M2Ka;VMts1nonEwlqk`87)hX}K0kEe`&!>~WV+xs`Gw-oYrT|1E-G^XRC) z2@~e{@H~!I{7J_iHgn7gm48-9A{t1iBko6t#w8?ekb0(`0M~DLUW(^lQ!s9rjN!#F zv=Tdy(V-{Dts}U^vhiEzY!)U2Z*0=B$gW=dPL%<$);S@ct~Hns)Vu`|AvycNI{YMjyVlj!2Ky zzDO%2kLhM6PAn%mi-szEDK%2U$xH^4p}2%|fu|v4C}|XkO_eB6`aVO1u&$Zp^y2tr z&Wyapn2+0)6MQ`Omsyc<`=v~-j<%IeuBe4VqU#ss*+0JfxvX^X<7TC-~5d>LwC#7ryR#D=~ z7I<$b8q6ur&FNi>dz67?ku971S1Csb@I|5CAwRDTS4*J%!gEVHhG&zP~++3P(K0YPv&M&^7YuOE7qEF!Eq3xFojmIVGs;_?u! z`Js-WO+4U-PaBIZa_^u2~2j$$wPd} znqQ3#v{-3kms1SqAIfP)gGd9*;VBGg!GP8bA4t`V{!O9? zS6TF1LcKHYmq4g*2HSn~StD&3mq7vEP#*g>+`OabKT2N8^b%ra$C|5*XyjH!$V9J2 zgai~DdF*+@Ve1lyeMi=8VX9*+aJ&F^;@li3B4Zlc7!^4&)wS}LinJ+2Yx@5U&DX?o)|KC~2`AwMle$*c8D3&Jep`~mY2!ohc4J?|j zV=`_LBRcBkw55iQR736nC7p+t6bOE@Rd(V7l%IjLIXa=dl@wyf)Dkz9Nu-mf6!j(0 zmugZU(LPU$*x&3`cDrRwrn{%3ng`j~hT|9p+FOh4lZ&}#HID{n0ug23Sn*vYJHF@_ zJt(ljFt=A@+zeTG$TN=oO|stKsI}d!eO!+{=&UfB_Trd6pyBows!d@IYbKB(>SzkI zbNH%$Wd@0p6Bk)6H9%&$P`i?}bsTBOtf9iOm2kBkz*)aG)2hDt)@7W1)8w8bhshxay%Z&Y%cL+!j67Ml^Jw_q5z=XKR+S1)?LOVsQZW<}c9FIS)l6T@{tR&V; zmk3jBolPl>E(MU5Rq+kL&H?A_hOhf}&?*mYcK&kzAZJ@#d$| zB~{1DCEd5ni)VhWjpA;vdePe3OKREMg!qDbDrd}4t6AxN zl}z?Vtk>X+zVRsF^jD%!EC@tkB3j&=f29Lou`knl2`zV(ko(?eblFJnUdRM;t?~u0 z$(-jq{YXz>Hehhh`0#*kamB>yO}u1e>>|Je4js8I(i-6YLKo8&QZU}G52CVSDt`~p z-CJMN8MF&Y&4Py#f6-T*2IJN(Zg5VE_8>&JR-j9)u06`YSAw~hu5-4yb2-Bs9EimV zY@$D>BG7ZWQRBVb6Qgm@Chi&m)X!&K3f%0DKhXpRU^FAvL1zza+Jg|80tuNo253VF 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 D=v+Ls literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511194001-Config.rsc b/MikroMaster/20260511/20260511194001-Config.rsc new file mode 100644 index 0000000..731909b --- /dev/null +++ b/MikroMaster/20260511/20260511194001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 19:40:02 by RouterOS 7.23beta5 +# 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 +# same mac-address as wlan1 +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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 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" \ + 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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260511/20260511194001-Diff-Config.rsc b/MikroMaster/history/20260511/20260511194001-Diff-Config.rsc new file mode 100644 index 0000000..11d9691 --- /dev/null +++ b/MikroMaster/history/20260511/20260511194001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0