From c520de029b518a8bd784ebeeb72013626683f924 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 10:20:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 10:20:41. --- .../20260508/20260508102002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508102002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508102002-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508102002-Binary.backup create mode 100644 MikroMaster/20260508/20260508102002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508102002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508102002-Binary.backup b/MikroMaster/20260508/20260508102002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..befa5124306a769faf796bc7caedbacebc63afad GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXJ=Se%GnSjWa^z(zn%qPGnI000O80004Z`T(2&Lur_@anYbJ z(Z*paM8%Z7Ju;^O4rung+InsOMalGq_3A$({H*G?l&-4mGi!8No@=2?yoQt{7nXIY6ZI@Vl6chbo< z2{nu`l7xUz?})3I%@24!(#v_4Yjau~)|JywS-UPjh(qEEg5jAhS5bYJE2MrGjOC-5 z8s0XQ(zCRf`~d5LAJgud=)Uh*iZGklhVlS1*&^==3t(?LubC2 zl}AP5sk;wQ-e8&(*;JJEa7u$6Kq#Bj-#_7QaZ<3o%J)5k$Yq>t_J@~~K-?-;9!V9c z9M{)$t=GBf4ytpp3=6RabOjj06Xs>^jk5&SB}nB2lB8mVUSS&-tWOd_6Y`xAbl-vr z;Lx~-nk$JNq!aVe_$02*vEhB;BeJH#&0L9~`;-S(tM!xkSH#}ED~kZJP&9XbI<(@@ z<&UtNoes^s#CF>WjXmsjC@Im}CAU9vBO7lOk`v!|%gNb70X0u#cz$8);yFFo>Xae1 z=ngPp()GAzwxtd`B?}sDF`s0)ioVVcl4^JZb^0bVBht<=A&R8~pO!0N|Cvj5iT3;iEyasxDPTsZVTEGc9E9#N z)MIKE=+L`$(;vJt&}Y1(2AX4FJj$g{AA z$KUX&ejK%X6vQ*XDU5GJB>-gV6Nq(>y;bt@lsOVVp8Zj*+vg?=+E~|ugExJJY zGYt^DXF~i(0y^4&k}5_~;&E<+6sM`#XLQW(r~L(hZ6*Bxc@I>gqWS1ts=S6R1soL` z^Z?z&N2*?Z`J2lQ8WRI#rUc4v>W&q^1Vxf-f&G?-3j?$~Sup9hf$Oa?3i#YQ#on-a>jrqxt)A=}*uR-FN z?rNN21~UPLAAa)W`q=$5?T#1nD;s_6@8W~wll*$L9833?N@6%MLr3@kRI{JBel{V+c-+Ok6ku_%HaPKE{C z*-$dOkGII@5oZVlUfV^@BB{rW6fLe<+@&bu>xS@8jZPXE1d6ra*64B`;{fh)=40CM zYMv)UU)WehNIGC^ZYKV#HCrhpDj_E5bgq^McPPXoywo(ggwd-~dp(TgU)4tlbvSw4ZUT^2 zV))uJW>)=VYJ(PY8u8;IGSmk@t<&U0gcz4PIYXpO$v@vZram0_l;EN{24ReOgirI3 zOsF`A{lw!V>385uTog@8NoM{}C(^ULBCE#Wj0;O9L*S+{`3-fvGIkFRk?s-*JoaXUlinYWE^=u*VnigkW+%Xj{bYMv7b0xUF^+Rx!!S zON|@1iyn0k(1dkQlD|psMEy5vcg=-Cl=!wcIm(QP(bAcX3&on-`09wY388@*?)^(R z8(#%#i}l`lYSda4ah7;?7D=BxA&lq8VoRt^bUk?>bAF`bZ*iS{0Ltuh;>|zizV8_= zUha9Vgw|knBVy}Bz_ZFWGf*g&%Yx1M`(num`&IjM%YpthHUo&WK`NShW@povB!?_! zyX~vaV6(5{&S8mR+&acdKukJq^%wS>{G#OWcQVNJz1m zhmTX@?Mm!0Zk37c`mq*lrLyqpgQ~TE%0=?q;jcNSyHW07%YtnvPwc5fmm784p^GbI zbBxkIKC*tBg2vDPj6JHF3MU%ZQNFyNM4o&j#-C021fw%Qj@GHJNezL$;NPgvZSw+L zYPI4wn*%YJVaA&&i3HdeL zl%BCd%h%p@(@;wfFB;6)P!oH0^%i$@5K>5#uoz5+`pO&0ID{U0j!Gr^w|&wxtFAd?SaRKd}5nN@KpO z5Mr>m@5i`7K$_80CILH12X~uH!_l6^R_21MPz+b(#j8*5M&y0yNyd0QSa;6e(A|Gg zOP*f?)#$%xFx7XASPs%6<4g1}8aOpxc`)F!&C2J*qqVWCtQTCT+h8XouxH3u)564H z@$!tY8cTSYK(iAul5R3J?OPOaZo&e5*xPC5TDwVveE9iKR~T3Yx7%7Ds}FtWOnh>2Q>Vhv#hp>O?WCS>$&{?`uvFhbW2S^BxPqq-Sd#ijf+43h==zIDP#l*LlTK7ir^W!F>{DWPp{7E1 zOPi6!dQ^vSqKr1Jxl~w_G&1O%WF8EFiO;vt;#kvH0yAgiWj7aY#JuUl3LurNGVezD z~^bft4&zBPM1@qQoAd& zGLc|Hr}9nX$Ut&bN&%?p5s_a@Ipep~2ab~$<6r^30`ocL;9yWK?b7<1vN0bIi*#9Q1u{jF zG%g4rVfJ6ZPRNmEU4YOsr*Um*BK`$8NM^i$G{Y@1N%@8A!@*$QNTS8Da_IQ5rmeD% ztQS38ZwooIaol<&s^)MIzt@?jv$OY2`C4x*55VIEMjqMyrndpScEHYM$TEFVRG)z6 z(rBKnb$w`{NSn2BZ{^N~#8lv90!IKp@u6ei2Qx*BJK-b*)lqwKnp;?!|t8*9Rm|X9E-6*Fe_%^|MiuniHUL^ z>TfYF<;RIE>!gcI(Ct+BtAh8!CGwQpQt;C39Jaj~T=#ZQ~~^bcWiTWn$?ZrHD@}_SBR=&MO zweKh_SLAE!Vs_Ye;y(`+kJGl~^dle*L$hOKhnWUR`3GDysA+qwC^WJ&1rrdePuQXhv$)@k(KDa;AU`WTeirl6=v%PiPiOPDhHVUr$HkL@`?umzig$qVGT8ftx=URb# zR9{Db7caNl6pO5toFehX@7_^tc~WIxr{zdd12p(&2hNuplnc4WMBj6vD2q)iP$$$5 zNJ!{Q0KfUaO;tk=vJWcSZ+EQnTm>JWqW!@~H4IFbp$Ty*Nr zf2|k`dk`?v;yE-{1(t`djEoVdVleg^04%#}3bG=FV~G9$gv$>nkI)MZ0j8S9FcrU@ zx5$V?mK`suEQV~KFn(mbiBTCBHhrT?g)t`}YJ9yVhS{ST*c6?z(zp+8SU5A^$jsje zL$72N51tA|!pziFE^{m#QRxUhu)O-&WLc2~k7h59VAPq+4Ru*!K92`6aFJ)iFyii| zvu%r)v%LclQ+(}bI`1Zo5*qlVF9k0d){y7CTqI{n5xLqRthwcae&adGCP(%S4bv+; z4GV!oK9=mWK`?y^lv@pz1;mEP`bh*I>MYXy7RvnSgTj(qS-VlM@KRexb{iDP8o>9t!Pr{>7z4lj zfPqQ~3lyB1m!U6{+HsZGlOr#G+lp%6i}qt$=8Cbc6NvzyBQ0Z31lcE*NU704HdX!6 zt%=a7uZF7|Z_&;|3c5(Xh2yT{G51kye^odmVl~s{oZ*DoGh^DzOeJA0TzXf)v)#sy zxP4MiTQPXuFOb2qC|{I&QZ>n$NrglA;NjgL_4r$8-c{>d;=MhtIoq{CLX{eINDgM(xNTJ@#jStpRn`tEs#Khe+gxRmp5iD9jTL z{x6?9srGtLrPJRNQ+(?$h$x*wwb?ZauVex-QT({OCfP9sin_9bfz@Qy?@kq;0C_`i z3!OQ;#BOBB0K2u|TJf*JNPkC>Zw1V?;DPIPo^{gC-!GG|7!Se9>=>L=xpTdlbTpb` zh+1ySOp(ZsG6r$cEBSvbr5dFd{Jk8=zc;i)DO#M(+t)vf}SiIHz{U5>}*M zRpm!LbjW~)(~wLo_y%Y^DLO6kveZzQZx&GEKaDgF|GSluFs9!1PW~GNpLnO&M81@o zfo;fIp+3oq>@yyS9AvbksFna!^^TLC6g-rxJL(jjmZ$~+L`kYRrs=9kGU+d;j5cQm zat}7E=uFSbsT&nmfVEF2xs{D^P*k{NfKHM`%(aGV+EzykK`re5Dn>b&E5Os@U^0}@ zZ$5`8v~bzsrESIC_b=X3w6Mj>dYk=!Hi|Ph8^QcW36k~6XvqLh%Gue8X|tbK>APTs zWG-q24^{&OTX*tSOzly1@)tF=Z4kOel^bb<7Oc+ufze+3>i>=Xt>d`!P=WIfEI@TE zo6t!G7}xCGa+tf$W7|q3Ee;w-x)SEDQBHfzVUjjA6Xqy``xdH+npt2GY|;k zhA?SCY&WE&o>D06*u{vVfWU}|EsaOti_a9}aHtn)@}#!NZ$e&#{hdx`{#o;e#>hP* z2~+<3pi1_=E%a|Ad%N!+y~6lr_Rq`%cI*$`^Ru@CAlmY{TL!!GQ@wcSor(Nck0y>tnV91?LDLG;S1$eJVQ3fNFSB0^-v_@9&Cm~Nh zpnvNi$Vqt`|2yhmF^rSrrUKg32$dfLBto|mLUqXi#(J;}4t@2G{H||ZwkJIMPO=$w z&K`%ntmixQka+ij%nBsblXewEnLG-_zVN?bZ>?3E5b-x}VxQ!07=zx*x^g|(=#o}| zU86Zchif=Z*hf_`X2Q>gdkF0tddGuMa_YhyrI>K99 za*##Vkb>ngIib&y|55bT<5r%qYR(F!33p+IBpqV&EE=jj6b8SvbI=DggqK@Zj?m~K zLjHuJOvoG3;zx0DKwp~sJj(ME2o?EGPNODhC1c>|aa6YInA8dlxS!EXfGM)Bzn{%1jB7n zLU|A>x8K!_M)z13H4!eQM;kNc`o*Uq9pea+Z1tnW{kHm=3?i^@?ZCN!-Be{B(w@}C zPL0-_;Qg_A@ztP@4a(OgQ}oun!0Z$8>z1+u?u65DxkzT>mq3)@*zO;hbnvIdc$4q9 zxmLySio_RAKJPHH)Ag*~tt23=)MH_Y$fdF_32doQ6ImxbK7n z*v4gVP)VaFWkGtk?m%6g?wETR9MN#O)7qbgR>5`JQfsMhBK9uEDYh=Rj;V*&q)%K( zxq6wsvqAo;qMu2gkS@e#GrMy4bzWEMdxbdQpxuR8OW1-igY|$ZmCYcbCXD=!!;QS* zV!h_`F~z|e{U|A%`00^?7oD;VN$#`JpfRl$mQLdTV34{Y4(c7r%K0#(oVLrR?m(fF zmbA>2`@;Fv?#RlwR-Q;K1GXR=28_{_{}QtQfkx`!Ea)0ayUKQTI8f~7rg6t)sXBYd z%SHRKQSe{ou#@8iFp5ZoK@UhO6+{kF?Yx00* z4T?1_$o@h9%mWB4@K`zTeiJfMGBAh^`r9wEquo*5Ptup;!G0c~%K30`oD~kbM03PC zQpoSjeQ&nTHw)T)POAv|14$-|Cp5dDw9^Da!izuGmMrF^q5yQHn9i6oQO99`=2O*a zPbp4_8cmt6v}&Y6H5T(g$s0CG;f{gFWurRSB!KhEmOA0q=bF|wwY1*LjALtBN`|}G zBt7yr8QEwq<3J&ZN=auLy$T;3o@_97tO1$^-2~vabm$Y1J}j4w9~ka|B2elL)96Lj z5^XIE38fP2LWs`|UCf+|DUN8p{;LVI<-5yXt5&Eq?r;lY5nSoG?JXq$LS})^C(=3p z6Kl=GFJN-U8?r*rGVJHtU0k=Wo77ng;|e^{T+o!Yuy4|(?S}e)f+&5(qk1bGHMcC{1Pg z**^e2Ou9NU=dVB4Rn;ZZ8*xeFI#Z^=>3Anq1u}%-vM|csUlDSLaj!yTAi-(znULF6 zd|Vjvp=s(!KPyU%ev=yHP)H3+(!NSZ5SsuCkWGtn<2CUCr&jniv$4N-3Xgr#q-eKb zyczo-3}UhlA3AAit-bGmpa2Wc3<=l$49!fi6P=(Y!_fc zp4pRRdMm~+4?)dNe29UYbt%kiE6?SgQ^YtF)!lABKoso$TOg&Z0(bwH0OnGG{C49cw`x@_AO6=r2~PfY{ow1 zbtRttK%4O6Y|PCa1107Q(Dz<(FA7~L?>hf@Go)`yqI|xpUiD;}&~2&BU!ja*&`QE! z$ak}8{3@O5t_i)yL=`#zJn97FPp!9-nREqe%0+P1ll$~sdgjjOg@J!ec23#_bfo)rcR()!!@>z$`o+dMePVs7wbHDsOp#UKFf z(qH^`Wlr%${=}X_1-|(TgjJ0Wp6P+xi&A#0`5B#c+}+=F*D1t*2M-Uvq64F2Qe89u zhOAedIOY-OR665t}!qWG!+3H+|J;TZtAPy z%w&dN13(YP{Su z)lHsv1#pRdBIsTS*82hK^qEfW>dAECK*yuw*SYIBz?;L%{QvHugu@y}%8}M?#5y zrp$vvD7!C7)Ga~lH1}o0QEQB)nyGmh@Ps0~H|829aL}@PK5>^uJ*-W_l z0<%xyOxan!QR<(~83DS7%f|7RVj7zg_(f^mCKS^isdwE@j$>Ri8F6P$#{ed}vaq4T z%EyfS3#V0(D6zwMc zCk7}teL@91*lo8NOQitlI#bUa(>ivf@ODw!#BV>v`>CP_rziRWB)SpV&Un*&SHSb3 z2UfNNX&eJBE<+Kh;2ybMQkyaHwhBeOhpRO%i$u9T$Ou-TSQ{TDRv)NJP7M9y+K!*R zq}gnT+ED77zhCi!<<^a9{h^^^NgMl1$~BYJJ$p2EG5*>N5Fuq0MrUfL&rGwLgZ0FF zt)_iE*Y5yzy6fo{H=O{%r1G{!EQ;W`rA2{k+4m&287V(na!F}}5RSIOF`^_U#;CJ^ zT;f5VL#x#6QrI}5yH1G`dUq3%T>4hnYcb=6`y~`L@kKAHBPW-_ zrdJQ6KU;g#&(8__60`CAplcW1l?Rq?_>A={#Rg2>tCV9y#m{s!O%_FhqD|B!N*2=Y ztsa>`vVP*yC&RsUS6nib?xI6|D_RqRJBE_gmL)E)-6Z>K)3+0)XA#nO?Zx1yjGx_o zR9tf6#n^?awW|#-%3Bh-c+b0}me2%&1SHQi5Lz9#PhNf4nwVQA)#Mj?<y-U5!=_E(PQ~OGgl}-w!qlYG3ktD62 z)m&1s(h!O)cHRQX04W)7JHf?&t77rxqord5>fA&qZOiZu*OhobEJ%+b3owA zn*(A=?M0|OU_h_asrFYCX>XJb2hAo82e~UdrN_tY^X>!xQAMJNv*(Ewt$8~&>QreJ=g!kfm_k;4i{cm0pCI@Bg zlNo0BvAzx(+cPF@6sW8PD(&B<%KYcbAULb0=u4P;2SgSmwlZqk7Lyno;dm`iU>3#nv2faLP3xvskxjj&m7;9|eNFB?|6qw*u z6{B>dEs?8xkUx-@D#VV!6IB#9vrVt<74cAlu7`MK0ekb0+*Rgsp>6Y zh8zyyLvCI`WEr5mZVYTa^<2xs&2OfqU^Bf;A=A@|_5)eC!sGPa-?>--C|$rBw+(+0 zY7Bz!p^P)?`@!CUU{c>%(;SUBlPQb3@c#L+k_>s=?G+GZZ(P5D)Yt=&|K}fy*q^3F z>>^5&)nD!w!fQEmB>ABk*T9Y?xh~{dtHc*`YNCRG(AA9CIxK#e(pBQgs@z->UF~Jv zyd5hO>-(Cc^I+H4tKapH1mK>UC3@JkRiCYX4VJbHa(G!M=ybnAodlCv#T8MP9I=6* z=ANRohyV~Cc`8r3z|D2hBHDIT)8Q&QnIY@{Tv`QRtp)OZs{6dq?V8tUJH>&9S@UV^ zyL9q1H3ZDVEzp69e_|-LJ@b8slmQwa_8?%pWw~WCEd^UfwWP~%67lI&XxiVhTIfy+ zbp7Q-M0pr2o-XwC;|ep$1!x2#LM0i1$F<>ZE7h2_zVU!$$k|>jIN_@tJLC{sHhUu+ z${hE8J~{hXD5BfIk0FNYF-g=gn|}5q+F$8)au(>e4yr_h+gD_k4R!hmypo?OhKFalRsy-F@HuPQj;4^LL@ zubYsF2{&IjIVC|Jm!p22Q*GHQs+UNFwA3019WzG9}M$*<$YIG>m+QIqFI7nf|7olI^`p zVqo>AX;a&}h0V;F$=(<$ARmeT0D0bucE>2ctK9UcC&srWr}UK>>Gp-8pp!SelOx zJvm;JXd~EQ@DCM*Ccs@9}*yGY26{{+3;6+Tj*ld((AGYCiJH~G~ zpMHdc(IZZpJwJzTweJm5qVK?P171%lO(#ZOH;dqDBHL0FOGp@vg^T(78#;bEpca$P zuJ+Np#ag2&W7eyb_S3&yLKs&O(H!m!|1@pNR$5vri|P4S?%)lbY7T%)=5QG#Y2-rS zilhCiM&O^qUbhpOPT|z(1D9b`wbkR1+-7kG3-wDdZB?@#qaxXVs|DSSrM?MR*~vr9 zqW5}qLh8u})Qg2aMdHrDEEuh_t~Ni>7!!##LpGG#9*&twDrMe;M=HS@QT=l6Itn>w z5S!%Etv^84jG+FtpNYVAr~zYgU{4Fz9;P%rkILdnm%mYPnHH;y7L=%3iA!Y zZe?q9jPvp&dmct@iYSb_f+gn59AiAc#K-e5&&3>Syj4d+qkW4%2M5eVAJIQl;zo~D z#RDAD>6w^bl4}(i%$fzw$}Rk4wg%>j9oyT0-VJuJmX_C%M&SBEl3$0BwSp} zV1VbT;o}>80(O#R7)ob}iOL!g{nAP~>R0zFe7IO_O)_(N)a&5c1Ld-AE|#t6jk*T7 zmOqkn zx&489;F59$SUX=ouW=dzqx}XZrTrkT5oGm-6r~oKk|*Kv7yo?-AVR$!cH2KHsY=!j zbmzLSL-Ht6@AzD{aK2O9P6O4ESM^<}IFmiwC{KN))>i z&3M(lFgd~WgaFOU?$;Eu%!6g6Q)>q~em%)g8!OsblaPwcA_NE4=)$L-x5bqpN!T9^ zLy;KItc{4>DCahtoq(?(E^ahZpn`Sfc8tmePfu+nl)!E$r zs|iLs9tN6&*HS>1gQh2e#)Ugg-?>A=SgP^U zp<{P~1pB}NbhI{dR@bPQl*~O`n|&ER*s3rbL1B&C9@INylKAxxFiX2{Z1|V7ewWAE zP@21-<-s?a=)pNgm{-cU4!x#brOqjSylI}x#)I@*Rr264s@f83U1}Z;-)$PnQ)ZXK zE1E;wx*oVBAP3T$rEXygy-#Q(4FZ@y_6 zlaczjVPh7d^ofR^jlEhNS}jKmCP7XBHuoKEnpKUKXutY1^QZrpzXbjo?>Ww|g-!;0;g)HzGeX6j(AG3{tU9>Hng1%U zDWu5HRg@uDz+rWm|8KviIR^ftEaHAk*)ON|;t$DO)FdxA|H+Ud>}JCUZWIw_$GIQt zd1f`+`HMWGSKAbtxV~mY=iednPvvJ*YI>87D=FiSkvoMK>U@b6u+4f-&l3YzPX7FrcE z8}u^V=mohSN*x!XJDN|cUmw(Q0Xft%%;ByUXkKu@x)7BB6#s4=@s~G%Vlw8gYG>sV zd~DjkHu>4`t>4^HKcs@jtr`Rzn_?*d$!z;s+kL{eL#Gq(r~}I)vNQnB@R4aKb)%|> zST7MmtR3|y+d<^&}RP&rJAgL~Xtr3{6P* zu%`Xrx{1!XBWlK=EAdK@ape}phMheB19h2Qj4!vBnz^q9N|miBmN3n+8@*B5nf}p? z_TmUZAikyvdqi}5d-O?1defjaNg+p^E`bQU2qaNb{GD}{{pC+2&Z=;d6y_=`W8?x3 zvbv?FR&87qeC^}!`zPR_P5bgKL@qOz4Sz=6t{jl==%3Ne zuu&A=I8tURQpw1)8d`=WM=IZ*tdkrj$3}NV`9a%Xgh{IHo>9Y%$rp(_D5F2{FB0Eo zICMrJ)yv)$?dMe|78K}5W#x{PtzDR4Ai@fX*Gy8H^%(DDc1He7;7P0g5QaB0z^a1# zK!nPshlw$2VnYYLHoRS6#)Aj2iO&YAKFyMz0j=5F@LzYP>0YV%_-&}5LEozU&1^`_ z#~2c;y!CC%WSd0~B>$T6C8jCsL=G6^C_03#OeoH1C~1x+7d$NH7ryEuav}tUxlN&V zn|8U#UlWetD-Gr)9&?jcPF{9U%5IZ80gzL^=BwEYL~$4R z{sqA%Lr)TWv_dkydzB=ChKQwmXw@C}S(HnC%Y#)wr?$dC-H&3|p%!Z+6%GbS*79w@ zMJR z>tVmS=kz1^xgR+y#ytal&tTOxf=>+F9H*+XCl~$7RFx@OG<;I2IU=SUiXQCX+8f~g zN86O5+>5XZc;cFlS4-Rp2t5=IRhU&D<&yM28QDU8cA#$ww`hhhs z1}H)E!i}o+j$_?fWcOFk8UNV0!K{Z_`d^SjI0efi$B$#xwkifOFXNmpzTx^e3n%BJ zxdJp7x);~&dyoQ?;D=~{Xan^TMeZBm47wTQH&bNdfWRew_~OzLK8HsQRENi9me@9fL}?I zArHJ)V9_DZxB#AVu^sEh_SCH-2udErQ>S+Sk0HN~*P~57+^5^eAb5t9?GNdqlV`5U znQ~j1)FD7&3pK>Mvz&--3f#nbr`)Wjj(RKb6d9gvv}I7!lPk&PZCKsSjmpudFQ4m(`3|J>{L#uL5tqlsR-Ms zEZ_#x2y%n5zEaW54%)1Dn?bq~^bsOl0+=1lV!4myqyo<4_36+@!E2%k1ZE)L_S^w;6YNw5dh@GrhL{H2>+C~VG*8r~ zEl?O?7Cg3qfSQPKTG>>rGps{~jGxVJJRDYlwjFr3%iLvI}&ChG105CY;hV@>ku^C%F{SMK{n-k2d3CfyvM7B4TWwN^FK5t2rg;Yv+W{ z2QTNnb%*{piGdE-_!_F@#YIpV6Lr-(=&VG4DD&@YV&H}AgcZKsoj$H;`BfAWp~+A! zjCwI7JiXi-pb>qxuT9QCKIG}u47~e`7a)c>qZ-(wMHOvoqjOPfa-&AI$pO1~8vO-| zVqbR0T|i%Jay6V*?MY-7NL&dJJ9;q|-}$@mmGnB$aA71IyxdVkcU|Y|+I7Eb&~IzU zx80?$Picq2*`pX-(}ST_K4_4l9OPICh-t`+x0mhL z)vKJeQBNe{QZTRyT+%DqsMy z(D20Eu)BaF#US0g_l>0i3m#mj&uDnictWF$a!&;yRIC<3Asxr_8Y5lW zi!+^ldmB>F>}A@|iN-;-Ss)MBGei1{03Nfgl>sr)2UlA1T0;@1WBF?!AZV zBTe0TWDDxccnOLcu4_#e5Z=+^Z1kZEjYgJ;4X)sZ=v{7Ol$>Da&lp)SZ#@i7>ig!a z6__icwNnb8h=Q3HuHXj>g|)3KP9EyjwQ*ffr|{;_+LdZQ!6W^jp2X=5$CaiT`IC!u zxA{fOJ9P)#b>^vvH(hmE_KZE|U*bWE1RI{3;%;h;l<9~ZP!9_#2?(Lz*$#v4Mc9l$ z!6N*5q8EMWMP1n-F}q=WmTk!RKZK1PocAawAGdb#oS(11b?EPZ?fMmY#1J;DsR0Vc zqHp5&j&+#`YiH;HR#yTQ5#AtLHT&jwZQ>yR->{qTw zMKpd>FM)_$d*s_-`SKJFjxo&$&3l~tVtC+Wdw!q!kMcgKVU23w+78C*kPsK0_+8M_q_tcOGgy?v^)3t!tj`Z;E*ZKlm4nm5mn zN-6}8X1IqPqyH(sG3y5?Rs+Fg1NNZ62wduoXiuErfXlDw>idN8B1fn#oTYujd)14$ ze^)eEaIfF=UMSQFWScTG(G2>9gk!m~8bsev;=8c|sl*suLq`=&cn`jTH?js@jp*mm>y9U=z z`&;tTs#s@vphs48zieJsf!e|$_rDU<$<4cwBo5X00>p$4IGbCc@w`Rq-yQGT0PV&+ zTW|suRky86D?f zf~4^EGRdAp1S!>Rwo&UZF1Anm*N|tQkcz~ZRE2IKKjGA*Azs@So!hb^|Zy3>y z9+Vm9rkP}N3TzmTdI~^I)wmF)J~k0?%dA~HKQ#`DS`qqaz-8c>N5FZ!>1UVA(nrB_ z)1_Mod71|Xqb0XGoYv$=$<(&q`U9`uUxZ^aPm|MU?~Su zfWqE1H<8gouu*G_^Qxi=$kKuoK95M?V1|j^bA0V0Vs7+fS(pNw5ofuuzOU^7i8dqyNoOCnl7{uAYm~Z9JHEQHk?>J0fH-f-@8-xTefF zTZ1stT|9hkC&#;3x?6tQ%mq8a0$}%3uWLkx%C$z2b@yF52n4x8fR51Id2vL(8<+zE*#sA@>mcXM9FFV2o z&7H!L_Y)2hpGdV~AH-|^2u=qFf@Xh&!Ta2G^sW`C$PMSNWALw7heWsHF_S$S zI4~LdG8%AO&6m!Td`Hwj9$n1HXU#)~QB3^f@dmfhFfmHQ_B$D1@PC{0B^a3MiZ_r# z;!Wz#tX${(4t9ga|9}9siu%x&L3O77Og*hDl$#Ow#gdTcyi45(EQbpc-urhQh{-V6 z#9qlDsy|4VPm3?Pc6xbfiH}Ckl}sLimvg1AeSxCXJw8!8Z(M*2vCgp4!pkJa1?5|r ziHqS^@;g~Ay*?RW0(At|wM$%CRMTlr6S0x8*ita_b{p~;UgA_)1_wFouI#C#NO5Tl zozy5MB*(}_h*4k(DGt|<)P)3QZ94Zy{Mk_+cj8jaMdK^&B}%a9Rgm>A;)ZnV)R^D! zY=MwTX*yMi^j&YU*@$|U^MYhhW_*;yL8V_lx!O;eGtHIsQtspOSm}Ej@W6w(mQQ#A(aT=|E zc1b%mUB0Okv7U0ulc8<-wwcx?S_?Ai}n(=qye zHC-Nz8~VfIwa7wxvzsPX>IYG61f-R`G$yQ4Veb|_)qMKBwe)^;U--D&>h4u-iimGE zT{j`LuEnOb5Xb3~f)x?pM=SsIPDqMQx5{Q?4}=!&4^pP$s1vXBpewZW9U{($#^RY6LH%Wldo7=H`y;2=gwWge5C z&pU^)@uu~19vcz)A>-fie-q<1?g~+Rg$kq$7mkLx0G%B_RodBsJHn7^TTltkAlIOY z%&z9Q+6=)?k2c7lMQ^XvV}{R|KJkQS9OUn%#~y?FfJ+%W+!Q^CF9+ZbG4pyGG4#fL z$!uSB84!``M+)7Nqlb~SnmZAtt#=gVnA$DdDLYY2?@wSdkAwCZ9+brAB$17>7JByW z97jOQvoK8O7qG@=0rrD1Gt4v=Sp zxNa=#{e4Uy1%qf&y5sM2chV+jf5Qd~JNA4IN1@~}d9X0>zNRH9hF06wK$fXEsezXC zZ-5yrB}pQ97Jyfj-Y6t0+41oQ!(>I-d(amB##i?s(=lF5URvlh+|`d^C0iFM%!$1j z>eWWGHM3n4KTvh&a@d-DVs6e;fBknwB~-)HjEhoZg zQWGjWk?Qg9u{@5%9$n>_h04g#M{)q+_N&%qClWP|mT~3TO=|$z(ndF|u2PhB6g!EO z&Q~JxlURG#&4GEX@a9c6_UWT7`!2g0%T|_4P0g%C_k`vLn0Ip*fK_aLtIed#8ohIV z)nSh`^qOaae5wHdKLEgq&=$7zK&L*a2pM*Tn6;NvGy4n9up`x*4w=Vm%M?M-|Tem&9nwZ``JnK)YJsNZnL zPV$h>P+bm8hs8FqaAX*e#CKxGN?)WIH%Pdc@te*P{kpeY2dM}nwGyat!9lU)bV{e9ViURfw zxgEpr(MY`coa*)XG@7b;E}GvY(7zRNQBQ;tK$^dE5qSK>_f zKD|3C;(_zg>W+`T@et3+QOgtjLsW1!od!C;o@eQRJdg=t+QOB2U=3CV%&i3Ob3?Ln zSd;7GT0>82in@V$>_10F+Vw0RNjn0Rave7z%&K_m)fA?wtnjEu<^i&QfNyh^ajjAO9uicY01V%AIIg*XaV3|(jZ({H0U~=Z>?Ez@c)X(pte#M9maWbauSIB z))LPK7fd<12+{&LXB<2bDO+8ovsEqQ?%NfAbd-BF<@OXIh1otJ8pcQU zxiFnd`s(;bVHB-E{f0T(8=4d7nt5~dF+j09o@^<(u*<#|WFX3VpptwQCl}WEFU@($ z`#%neAux50{-w(@@ocQ?Uvzvd%iYd1gB{_ODC-*{&7>VeW{mMoCaUAxQ;B3G@ z38rz@4ns?^z#J}gtJ9ZAev$Kg1!EKm9WAgQ+d#-$|oC^U`i++jc)4M&85V1g|XkV90u&r9TJT!)vtZ_Fqo9L}}*CM37C zc(u1?<9zszVGc%O^qiaj5go2WT9$YFN+FwZ50Ao9WHFhSw-?#y0VUlp=l~IWc|@1A zqlx)>3;LIOVG7C82%YH&H*@(05>d!CeqsWbEPWgAbsdRc7m@a@k+tI|R!80Za)#@n4CL9dvce%u1?$ySSF7z9KBwy2If*JA9$YZ&!>a>mfPE-hgf&FG8RNG0np2O>rhj7 z!Li3B1$D8r?L%;TS4=F9ArbXU8PE~bET=J|^Gd(NX&MTJdURAuCMfaXuUocBXf1Ke z4T_hz5sCq@A3iRZrvG+UVA&`LH+*0Ih)4XR#KIl)V^~{YDAwe%wr$G(vHRBti2A)- zrCH~TG&X5cNE}%o!=AYdI2GGiU+Xw_Mb|s^U9G5(4$o!8#2JJws9=gaYejz@JDyi? zF~?eNDvCLfx@ti(sr26aH=;knu)dk{k@IGUPZgcziO9!fOU=AnE02mxeOQlB@c5ba zjxiQ&09YqY2H?2Y%n-gqv+aP;#kBcl^k>&th`U^!96g*XG1J(|Wv~?>-J%-kQV*mQ zln)*Yp(VQwVH=Zvm)!zAoXohLe=wC+-~ae0>_o9gJl9sk2vy{#C2S(83V2hbN1^h? z?E_62Byu!joM5sNelU9G^b7K!=l)3$r5nv@lX*8V}#|F$pK zu{ln)B~u+-F;}qNY-;No6h^i>ctXQadNLpH=QC0y@O~rzKoNe(=lS>EytPg_K^U)+ zQF3^h^cTd}W~-ZvyI;Gn1*{x76~Be*U%j>a0SsE%w&$fm{B9w5%0z4Zj^_hxwp>kal!ZB0QMe%gk!CVAz1mjFaE+e%)qKYi4Z3%=tz)equQ zBh1OZCFc)|qSriv?}kIOf?n5PcHF;*NeM(2*lahqlZeZmt%d8I>6As9BY3V{TVUKn z4g8#38H6h;HQp|xAS0b3s&O9J$e&CWD`x zF5eQGnC*1->=4IBbY<@p0KN50ZlhXn-xt>K5)Bi+pLoms4)8j~7SI&-gFzo9NytVK zBfu3uDb`|E6FB*p9Z8ZA_~@@7)_xeti(3bksN*Qb`j3J4wYmg_@|2YCDv%OCcFxiI zk8rp!sqf&25>88i?hODM79Rp(ln;3ARY_3X8|N-IpikrNo#$rDpRd;#0UH5k;M(>m_W`H~&PU{J1TY z?IkKM3w*f>ZEM%p$zF-tVO$uF`0*Cq_8e$pc;6c^@J9^Xgn93;E(`1t%&`HJ8gC!6 z{YD$1uaZB^6sH;DQx6xD<@lfPu0fL5j{!r%QSd8MYg%X%5Ktw&CQQx;p*sOt!T}$S zWQeD#s4(keJx@X_FrI?3F8|?Y2#AkJh{{`4SkVzgqON`>xygK_&Ql z^>`)hOEEB=zPF5#TorkK-U6cYA3yh!WOq|`BUwt+Z5zK9$crHl2(5mnY$PLfm2%8N zFQk-CnM&_?YfApmp&UGFzTn*rTY}*6N^y&XU31aH=CP zA$+gOEjm~9c^)te7D=+0xKXjc!U<3iFCahmt&LB^g2~+A2@?P;&D}`!HgEYxFm4|) zyKy0Q%JSJxiOfer6sX^I*dx+}B9MAsIZUvu)-F5}2nYkG-k|UatP+pwsQl>BMDw?k zSe_E{Y88>cKw$KO(h;nl%=O(QKjZEZrb8t+o?RJ;+#TtXg2TW)pgf8);q3Vb6uzkgb6nyIlQ>e9QgY&kh2L^%b*1?iSwSrFTiX3w0 zQ<#{yD6|7g3-+3|DCP5YTz|a9Go2nfo3V3(ih%6!r1a!!#Bzq;LbT~Ep6X2fQ%h2# z387e)1eqol&1{-kB9rVGAta%#W$;W+BLYzXyRqOo{_-4*w}`M{4%Dt3NGiu)FlI5~ z*q7BJ&l!d6|I;-fJ(wsVg{5-5C=t+>lf@cOx0{nE4SYOAHmhUGzB(L@*km~(f?jZ09!lE<-pqm2q5;^sXSQ*~s7eqnLHJp-V~6JlC{aM1 zX_Yu$ce$aTfUB0f7zIgdzUD`L%{=X-&#XyEJA1(Yl}QuFeznQr6u2u5bi9Ochhr6m|~|u;Vw+T1myKS z3TFK$Tlke&FCv1Of*t!JiY1;sF!4N;VP#f$$&g=Y?!BpW&KLEH%Unkjw6VYZPf+^?1ZGe`XHs<-L z$X6bcP1g?dxm_lXRA7{NX~$o3-Yt;fBcqbr`*FTW2+?IRe`A}4siM=KB#9iCJtrX* z*5HF<%~+VQILyhq+!igJ3%8xW$<~?GvGJh&$9 zn47kHo?eq9m0NhsxZ#YX_|Vvk&@9Z|h5L=THsV~tdH&iw=P6R43#yY~9Bs>a`+T5a z@ZzCmE;BZ3$s9$82TlChFjK<<2ah^c@{{nna*#JqhpSvNo7p-OIxx2zYg&FxavWnazmbY4~iCiYbXa!u(+TcU9v8%%(UjiZj zd;b)A6uN6u=H-EdrIXr-yKbL&wTh@b;V_!lURaHyPh(JuM4Gy|gF{f#G_1=dn}3Ug zRf&zR=%c4ZD%3M2qTKPlfr?{$4yfN^MAsyeFPK%y0b^DKfrSIs6zZ=Tk3^Y`Kh$&? zG>s$$&OK2?-s#yDjR_rS&2U=SrLstujs3gi%e-32zrjMd;htML&4BM9prcA6PDPXh z-I;nVw&BWmBKyi@hCiR(+-+`E{e4dE0fWaoulW*K$3U9H!rLOXa{q!aa1b1lB6c@{vsYE?4HAU+(5y3+sCV^74 zkyjA=xN;HdLC=|VLpgq)Pn|i8Gg@qYA3Ce{f$T1znY6|pI$F!+-W47bHP6LjMW}%6 zSUv$c-2>gnypBg2rhiz|Le)^vkDiQj#pUc@Zb*2a8CUz_n*psgnpU{{&x>vuqX9e; zqQ}AwxJgSZO{J09_cX{U7ofFf8E?7FhO?XShJnC#8G;Z!T6jqLH%zpfZ+@8UUX4@} z0FFNpw-bv9pw#s`$UU5kh7-_;VheVJrBf_@{U#m#f&Q>Q!+*aBE=QJ3z>gxoLY0j4 zj2^^xJm9f3-?_9QO8Jv3ux-_ph_W8HGG!VT#a%sfL$p9`G@h6W3^KJvNW1VE5-Jem zO7+J0wqlRUG^r{kmg<4JN-SXdAyeL2ivJ+KV`%cJLS!ZBq>B!ixB$T2&);(hdraKa z%g-VdLEP)an!Ou|B4}W7ZrWo)AEzD)9uv{odJVbm?c?&?W2{PnSvz9dyJzN)Rd5tp zHR|Dpz|@fCZ-oRJQhYe-riMItN)k@ZAx9{KVf^3k6Wn93HQODl1!yu z>MN<~L{r$sLfTsLKW!fD`2EF=n# z0srD(v{-C??t%uatbl;MCUyn@MuuIsYKXuurP7!FyrYGEE91N6u?nMdw3A+*v(oS$Bd+3yn`3RXzJQU7lwhJg{vkFm@gVpKL>>v7bKG+_JQAoYU z4GN!g)7iTPo^m_6+n_!}(H%?5JAa!6m~(-ZDW-+DAei*X+=%F8nPDGH&M!o)oU5Uu zEep`Zx~W&s^alcug$`c#lJVhGSDXjz-RfFv_8pcUq7fv7q=DzPI}CdHQZ)bY9-$#! zrSb&&&)dUe!!V!z%W$C&N6%;Th|TR-A%Ws~=7uAEYniL^oZX5sTK2+?tPSC}6&L znk;luBKzxnz0Ey;`l`l8J6DrTx6?aXTzRsPJ7eOXk-;Ew7doM^@ugntLLb6Za1TC< znjYsVN#XxCL%#cTlK_YCL(TQ;y@39DygQYK(dHAkG%b{QFuAY(Jo@mZjih{yHxhsD z&9r`9!U8%P8G6)%A01yx90cA3^9eNbG#VCEwT#lMZvoX%9q6%?80qCajjcW29P%9h zSa&z@{l!^&##93hxRFgKXI>hUgDB70-@@iU3C}PO$+PHYBS-Xf=)sX{peYk4I(T3L zA0v1Fh=oZki|ZDdP29Xmo1eWKAAY*y4stEL;&kGv(9#1g3=pJKxkS8Z+nV_5%ZfLh zvkne3;&3)(u<-apBwqX)E};e5_6CVN<}|AGZBj5=Piw{b>S%bF1_K@S<V|-uHs$n)_ZvBCu_~o#eBLJ&m%x0W^ns?<%cgefPnR+@(1K2ClOI2W}vFWOgAIW ze%I<74cK$^$mdIm=iH8btbueJHZGF0Xv+~UTvyLMn_M{}tDz?M$9ls!%iA*j$+#vH zTCHpM_DG;;Cp*R({ZXF__D!HL$xmih)9>r%L8~rmw@Mhpkpm!{4c5xlunn;O5W$Qx z@M$RgFPkXC14r>cKWt;#H+SiSK7FY}JZ{Fhx1Ao?kEMZ+eufRX>=AB2TSd%)Xu`rt z)vILx!4AJ73o^~qhR_iEsYXZdg#o$xWorED6`2LFmFCezBG@Y>bQ*{G>EGXa| zhcHb&pG^I4(hAwD41fF36X1nu$d-W{`xYyu+Oo+J6D0)Z$RKM=;_8ZI>p8CxLyjMy zVV!X?K17rhHx#=e!-ed>5sSL5d1H;0$i;nRxNHh8EAUdqIuel~8+zu{? zOcRA{+G{%`X;}fy@`j0z_2c1FH5Y8AAV2l+t0C%EjH((M-SJiF;!?C2c|7&nH*Yxo z4TJPFkBpcW+OQdvCjFlD#1AD~aFDx4*BMeE{N8vus!iaTEx`qLzAv)bE8q=O%@gh8 zXfV4oTxS+fF~Ds8qVs36%|7ac+Hem`vs?k{T_E_O_epzX6h=C;b^-p>l~XR}X2WbS zQpO0=l{y0^efG)kpQ@si;;XRVHbCpn?{4CSyS6hqay>T9w1+WtH#B7y7> zn$c`kf_^xBb$Y31AG4N79Q(&jRzWmsN+FvR!7M}#)C}7JYLlgMSV#`nbz>N?@a=ab z$=J(5Z#sGuyvv~RxRTn|k3{n{%o>n~#fb!vo~F{=EN?!R!E&5#UAIF zn-nKghaN3X)$Iuhn(0-_d)tJ|196ys<7d>JwEJhl>HFdnon?Y)Bw48I-M+@RqVxeD zG_EkbX_LNbfnVHyl|b_S6|hB*S&dOB2)CWGC{K@*4@BEsnM%wMFSy%`;^BIQfQG^! zI|kaRF5AKeOpyskIudTS!AM@QRxB3))b+@p@ zLa)H$R|Ql#cX|wieqz_O!DJJx{D9|f1w2lv!_S&AOy0`)zOWhn9=jkZ1sTUxBJ-7m zE`Kxr*n1`m{EfdKo3^-A)Hc2Q513IfhqXzlhZ9d_5K`s6I@s539^DuuO0n<4p}#!j zJTzzSgCGNF)F(|!nJ1LXm7z$^?4(1aJA!#2neP|ENUnr=O13r(AtB+wCr`wwkndh# zXXR<8=l0WJ&k_*4M`F=m=6wKr=3HffTsE-?7SkQHhZ07E$CrJcVKqg3_+rI-q zGKLW|Zw5uMw+G{Ap-YM3Gn-i}?+0NXUsgtDt$smViSNmtyDxbk9aeRQp5~>h{s1=C z=RDM6Z*eKZoAg}yu>MM)BEr84COn?=UEnQoeR<|%&ZX+?EcV`LM-+wof<)Fv&^{WG zc30D-o;-J%OH>d%YC`{kAD`<)?qBE!drYk==jlN)1(=6+ZWdDX{)=2@vx_>i0{uLz zIZEBX+v9+dfyAuhgdHD#su29vbguPBMHb^^o*GvtXayS5(5=;kd(cMy5w&Q%DI8bG z*f5#lC&g66Z4dOzGj4y##nP$I=60jqu~)>5J(>X$^kQNGqL%X52#@tbEDL&+J1lS5 zebHECI9Ply5^ZO}y~ndub|TFt!oOVoN(3nyh;2H>6+VCYVpksh$rm~bvZ;x2Wf}ws zO*KoRy~%lpo;E7mCvB8qnPG?SN?wUeh(KWql;Su}WZc5Nh!#Fz6A&R5sSSO><5%5) zYDECwh-SwiG>Kf=q3h$O{!*x|t9Bcc5}6~)DmH*k;!@kXvZHc@Kfb5IFS^m?sfL2$ zCBH6@5wu_%onGrll_bqz!Rc{XU`y8*DUo4={2atQnyt|#i&9SA40|mlc6=X`y#PTR z=EO@CoOf(oYe7cW>!mWih*zkyv`UfG6qKy1{pl!=Q2QPbRL{jS| zi-hx2{`Bk9C}hZBx|eyAfb(g7&#U$(RnnK#ewAI4;?`Q9+g^mu;#b_CKqFeDPcVXO z^Lr$}HrF5o_CHA}GkTWOjJDr zk~^7Vk_81NB<2BuD%%DSY3Qha6EQRxcaScjcpCOv{WJS|ySpxHeAgJgwp8K1s(PAd z|6;OSveNUR<=sD@U`x;eB^>?B=x*7)nL&Ai-21NU6-3sySKtG80fhWoajH$LTm_C1LCQ9m8y97 z&9^v4kCtd}EuU3)SlaMG(=>h{i=P^q%U~!}CoWo?c`-+jl@_T%G|KqX)T7aGVupbK z-nrW72}xH(*|20O$OHB z-0`Mt8oL`lrD-g6+i;a$Go!whe@#f{5BV#{x8tqMVO4H3r8U9`i1e1Vtt@qFQ5krU z@Oud~O)ieASihb)=`mf{45E8Au^t&h+#tvY>6eCv%5SC3*O|84Mv!f%Hz)xTR*%Lu zfixd(R%PoRUyj3n8bsQ5E8upOe-SwW{=c;$FYO;~6|Yst2VE_RUgF+SoMs~?x+dmh z749F2gyYDgL$z~IbDn?*&#*YRSi4#o(rD$6on@pWV>L>%f4tF=Os|@dmBl>p0Qx^b z?A#R}TmCwFn!vntl?o`ojmDYAtK*v-|=uv-K z+k$Bpb`w4Q-(Py5o)D3p6;t#ZP!#J!&=#{ZocCr|Yi4TQz4a5zug_U9)PA7Uj>@nw z9NZ223Jvt$c8otu_^}^pem!w`7@D}KC%){1!r9ei<$IkjRM1jXKLhZ>V@Y$x_7RnJ zeUFgW)alLE8|C(r;92d#CL!46bs}|5GC`pLt$-2~wPyctnFp;4Kzg*YsEccZbqKK^ zvz!=>1Z$Bx@KUtNd+lNy>SZ?LU4 zBB##&8Aj5e--=(!oS|4O2tSpxNc0{6e!`_)yymW?9t+tdwJKro>X*QW18SR*pRuTz zu%GtAef#ukhGG}IjtGdP*~&s3BDoih7t=&fEM~lL8y=@%k|5|`?F93$hh8eK)E~C# zj`Vy5^wHiAC+eVu3(DSvJU3m$uM4ZF!8Z&4lH?x$AwK(C1^W$4gYeS`Nl zTC-eWAy_OlkdaJ^^zkQ635<>vcFUTo=;23d$l78>uiqE2qx#cB^coK;1_v+K zM!PL*?1==oX)0_5&R{>&V9_;$v$GWe)wlL6OlUa9L8ld?xdt*9eLs1EIsb%iBw#{( z`ebvog9rsL!=Ir5lc(zq%@Bi8G)&}HI-#7#3~_A^jItN!b8X;f&Hlw24@OuWA+4g^ znx>O2Cub!oq`fEO_?~O3nXJ1VN0djo0|1_|fheVyG62(Z&53X35iu_2BgM5%%9-{B z$fSHI-P^Fz;^+3|m5+FJ1sA5xO!TF0AjzK4ygA^n;9_XJiz~)VihO#9lUr!Q+?DT% z1UH6dA+e0ks&P5FwYRbHLHC-aow8HIu>tQtD&4QeBlDuxeRwWi%#N@+lC9g!nbJZE z^A%lBP#3KA@?RnVxPl4Ax9HHTvx*FsT;cchX~aQ{0J+hp^;Ed$!h#)pX>he5s5``- zDLlM{g^-=OS~al;*eYCT0*KQFYtxe;>7tH|Lw9zJDa3K_ls=s#rk z2vGWWNJejN?$z%Idb!&T=gLu|@>1^U`ED8h*_@1#d6PVlNvYh{HpQ1AYR6=TDn&jW zrV(ph|NZ#y2YCVcg0R4rYAs0>nS=P}NKaIy{i}xmwEqLdbLLR^G%;fpx`gy1l2_xB zl8a7HiL8Zs3S|k{*pmlCP<@49Ykj26pUip&g*&}N>hc1&Px!|#1p?ciku*Ab7L>OH zfvgJAz)scO5mX83wY=b6czdw0~hJodh+oXs34) zclC$@EAvW~(0qVl)_iCWt+E`cnd3#cYV$Op8kCIU33oIz-MRj*T^%cQF<0cQ@bg)P}%qaN3+u9xDi=Z=qD&skxoP8>p$vM-H&97rV$V<}b8y(y4u3>xa`E+1siL zMutCWC+(V>ey+lH&7Y|czJZdO4+|m$g`fuQDOgxlYTY9@8a>mKRQTrPHye^swW;k? zDnsFaXqA-u0G3#jAz2*v#MQq&S1Ukv9b-4SX^P=^9w?5)wEkZBWjBkzfeB9@5AX!X z9sG4SB|CI7tt4a03zM=8M;Z+8GQ z4RB!I%ZFq*<0kUo-jWlya#Bq&J2gKFklIJpTOo-rDJ}P3idS(?TUQY!i3(D8#|wYQ zyoB#uHoh5DPwu&!hU37#>vb3Lao9KIIaTZew^iqoiqtgnxRY9<(;WaWjyppQ^hM&) zoD4cU8s0}QJWaYJ_o=|5zxeym!(rmUwORnfZ0hiqDv_wTx^VK#GX;q1k1YnAAR2knzEYQBcU+K4Re zk#!}|F1tkt?RQF?yc#$`Mg7LW+xA3EX|d~wtn%-GFw~jg<7&uMY(m+8=YSFTZx`oz z@i5cz-~k$>OuZWmQ4D>We8qS=QY7Y1E|GhhB&|k@udxZCW=7u=+FHw1j`B$7L&vhK z{Z6tLxOskY!MaN%h7hJ=6?T;kgcwC^Tj5;y&+@Ai{nRh)gakCj-|U&Ig6t|~p=5Eg zs^fk7*>hdt1nLnYM8<4C+ASWB=l$+#gwigv8);RvhJ~TfF}n#{B{zi>zf(&VW%;)f z3%JenF+<%X`GBII5k%a23=ZR%zc3XurG8^tc1ahRs0Bc{Pj?t71pGgO49RI{CmG{= zRt}gDLMoyX7c%Lm3T1qqBC3F0Ga1O6a3a1IMk&OkjUK`k1s-on^EkpcwGB4m(QHCtzA=e;K$5uS{Yjp1@!B8&RXsP?3FL6_ zPkS!n$El1HcUs+c@_ZVM%XC@yo2*Lla=|mhSnty-%QFlBo~o|SADA3em>N0?eqJRs zZgCJcWleM|9{4a@%5>;Ld1GQlFJz}};gfzqt~@9`1M&l}FNWth?uLLZn)|f_`d2V! z98hN4ttvRh@c`7!K^lLh#uQ1nx-?YOw>DC8P6Me|OgnFonB*I!jc86dn?^cjXZAF) zDQp6BIJ1(8p-CcC$nS={qNU~w_r!IsRjVxb3lWL+tFm`L-O0_v4YVqLpjYhPFC0h5 zIT9Wy%!Gi$$F;OO;EX_Dt}pZ$PUkDmRF?78ebp;@-b{*`&_dJk^D3$GG#w@0huaK(ATn=_j1+}VGfTVMl5aog054i9z&xku2?U8ux=taX&l5{R(Q&5oz1 zk0nsQ_d!XG{7wh|O0sN^TE3wdX}6O?@jAzAHLEbMO>Zop>4AL{=9Ik|7{ocYPc{NZ!L0mDO-7kW zvPz3$o#7v^wTrluKqLq7i-T=;TIve*L5#5FEOrp?`q_VAosYi4EV`3XCo#yDa)Smh zqJPDZwDiDH;ysEcv^5^X*=fzZ#+w~#IwxZ3C8w5eq+|=v`)$J42;I%3h?IjxFBC(& zCiE5);?@@VrcwahGq0sRTN-oKKL51L)T-c{NyiN zhCn4Ugszwk*kTk4{Yk4zKz1RiWjtWJYd;V>UH#RapoEC}9SaYphpsI70GvlNRx$Xj zl-;|UcBk|x6t;y(rwJ<6OrW;L%A@y1`|%thg#z;di%MCL$_e*1HCUQiH$QKVH%gko(fo$uX-JZkAKVsRYh5pb>freBr#pEHo4C!nXB zd-GQ8Q#IC6s$Z;f?W(M!vi~EKkryItX)^_&M)!##<`xCL3LMI4bEUrB!@N>)&UCOG ze$1t9XSJB59@L=|_HemO#D3d@oZfWae}9k&e?@l1SB!Y7MkyQ#4_8mTsk}xv0Amdk z#GBxpqPn5B(cr8VDa?X-fB`5`^Jt+50zDhql;v_jJK@nXF+J#c8D#8=nHIy=-fldOQMji>l*1F)FCcQjk){8zQY`~n+hoB z@bR8^b-O!60T;RK0awQEE=;R52}_%Oxru0{M4f+Isyrf%jJEIj!k6t;T-Fj6i^usU z20OH8%i|hX=v);@<%%|RMO=NPXIl%C+LlL^Nh|L&8-tXx3_%)oxOvd-AAw_LY#64z z=89j0;Ga=VB&Fi&0jz~^&Rm=7{vc*tYWO$LPBBzCE|@hIf~bS&VO9y2PG+cf+(Oz^ zu&K;L93?&~@~6QY?xOK_YblN|K}r1fAp%jB-D2YjSEO9vixIht80r4BFsafFgtI>D zgJZV$YuDJ$#~6~+r=BG8ZOHp<%&Cvs%so+=(M)=q`c*t=2(5Hn3(YyyD#%~fQ^dwKDnxJKK^3RUM=g!%}QY;9Pr7F zDLOmo9fCul1>Kkl&i~5HRJ^+eK7Sxehy^2R4 zW^RXl-I-sq%Z;Uv7V(C5Q)n8Np`CMy1MYCvbg3?c9fh8hlP)jFx{0kqx=JUUz!+0l zeznhN+f85-Tmmv2+=fHo3C_{LMjJOGMe5ij1_N@@_S4Ew;H2L2W|yPzs9LeOV6$`3 zefi!f`sDRZD%aDd&y-a2LaTg#v|9LVJHt;C+FvQw#Mr57Sxy@RJwgu`FAQPMuTpBe z))_vT-w^4Z(&&1H{-YmL)ua#qo}_*}K|DDEeM>xWg+XA_LZ+_0L?wzeF7^c)I8mgr zN(PJWP|P&NiTj_Tc&xcoiv$`3k&64_f(G7 zl;EqA+iTeE2EwOKYYeEivO_FEIA&RV6peE4GN?BPNOvL4I<)M*CGxl=`&#m3?47{` zzT^lQQ}{7-K~x1_^%lH&Ku2+)usJkavq+6V#s2--!NiwDk!VR8dvwo8oz67?9dzJ# zMt^)Rg0DKK?PTK&9AP4I8ePIcPIZZp`8J9G6B|1Le*Sw6N?dQvORwO~*Rq6Ijyb+~ zI`F|GH`gT+MxVhxBxM@r@uQM{1cS3ug?HIQA7)`m4YbQm#q@f?c=ZknW3Ji$NlOC3 z>8c9>D8H$oZ-UYsRRWmmtGu)*v4s%EU4Ku8TzXn=b$+uSXm-f;yqEe=*n$BkXhJ}} z7CHdmKb^}daW^-3Gqcou`B)yw5$q(VR;Nk@nT((&lPP10N7r>P4(T`Bt5cM(L$6dP z`(JWP0%0Se0)NU-b{K5Uq!Z(ZV@^n=d~`xfY{515)L&IZo4qDXt?ll&c)qEIOmiBJ z4ywBr9OA}l!Ba2-+>9?_-7uSEm(eN>fA#I%iNS=gR*@QgpV&S!F~xIVozS)TL611Sl;o`U#uv#or}z z+cDU|7Qb(qVT}Jh#rF3&QqiReFfRx2yI2F-aOooJR0<>$^RkN8i^0p6Ak zx;*9B^7Lr^QY%PTYkgo41JyCu*LM+TU+c< z5Vf@P(dymjq0&flsm;7?L`L_)Q z)RBOUxUK%F&C8vG-D6$E^`v~(oj<5wJ1{ZkmkXX8#P@}f6_%2qp>l6E?_*z1pgYc8 z75$6)1MM@TI{WQj;eGO=64=YX)D@CERO#nIHt zE$UnD1ejEr?kNts9I{Ur$e`HHOce`E`3ZXmIRIO+VA2o0w5{6KSj@(7q`S4@f3^BJ z4UAqnV>gMK@P8&Q$PZy|{gy}#)%3KIyrc?$xCHJtI6?o#g?V}tEP9MXAd(Zn0aW~4 zBr17(1zT1r2jokF+99aM<%dKYaPA!2M-PdvXlt> z;NeZ-ohJYuQcITYn%`Sry!hkyl%pNa0^?K2&M;)nRhAMI@jeH7uf3n>`aa3_orQ9G zg+i)IIM|pY#N~Z>WnbPY!99@o+R2*oW|bFr^}l}WzBR-egN&o}N{?!2j5?6hb4E3 zTAcYOT2*YH&7x*|TOh{9KI|LlVG%AZ+EKC#vk@RGf0re_LlUSe!r7$2Sw2+A`Rt8v zS3maMHcAQS7z7NQ&B@*|89NadKm5Yj)gnRBZBW4`)qj1@1rm)x{c;&k+{x<93=9ed9%>q(JT>zjzra_p1K@L@KBmjtQ(c@rY30OGNG)V0(wpD(sB1ku}1Gtk6t?E}|UnhU#6z>O`bONl9DwbIYOr6a3IJBz8<0JPGR%Z(fM$sCZ=@mq zM3`iqZBfc89t%7u<~jTla@p?(0@{5gOVWOKo1!y8DS-ndqO`rMAp)C?WNBTV-9-ar z>nNG<{;ED_R`Fsjwq@rGJ}J+l-WeE*CCC$Bg<~H%wco%wS;bBzrm^P*5bbX?n{B(* zTM#YFfUtz-ipuw%!vGbr>5PA?HC5CSO8c$4FYvLA{tDg)UH?p^j+#fwnguGRD%G-CDRFKT+|h&i;-sig&C05E=Pd0CA28R zePG;H2U%-U&)fM*V0QngUa&{kGQbv8K+uaXJMR-WHZThR&QugRP zh+Z$>vOw0lVq#f$>$|%j8Dbcs$;!=yZDV*}CXG74^JWp^4~434nZ3x7yUWADcX}xR zQoc&`fM(6#Fwz1<7hZAVfqBIADGs@|B)yAKg}FbTKY_WMt4|q9hen0F$knLEm~LI>Nep(=ccSlwSR2N0>hJ4#Yb5#pt7zIX{azG!S0wXFyUCeL9LF(n<&T)(YIdu)SFQI<|xC5G^Shs+<>Ioey@uT z`5N%Rx;3S|nSQ<|$&MX#`*c8yPds>L-m4k`Gj zw$sFFv@#1kbOn1DvW86GuozF1tE3_8>x2~=#LXbCDxVF;+{d*O_g7Whz8r{>yA9=> z9O=Xch=`$kQS1UVD%U4-XY#2WtdkRBqax3tZXYO(pBkjO z)4yogCF(@s(O(HE@aC$PJ=bE=*Hck+7KLEfo%3HNqhp=de_F;O0d6$$}@|*4GB#giqXYSk+ ze1EAq8pJ7E>+e4jC9X0uiVdo0QHm`)tdIE!Zwr1#+Rk6!q#Z4RRfr)-2-jE%nmGSk ziPR3yqJ@0kwalaUgSPo-9)AQ`+=GdO15sDJCT-Dy-kZ$o#%8(cvx!~b><}?; z{9v{xp7YDke2MIT-)pm}jHXU&?sZILPI8UQOS5Yv$uQ~t4F>iOXuXQMz3LSI#YcTH{vV zZ{O)x>qQ-m-vMYk|HFSUZ-%6nILJ;5z;J7nl%W{#ww$Nq$Kuyy~H)w&z(wG3yTjF7978*V(_2=sX1Ka26y zr9Z8{YqH;!Jt0|W8xN}xW5yKi*dBo5tB@?WJbX*G%TLFYz`Du*Y^mKVoNV!y=O#x@F)OtTMA~e zn3$FXrM_wm6G^Wj953+3a zFh%X;%v_r|7>k>i^gKpVMTlcc-bf9pj4^p5%GB=*8oS!IqSg4sRMXJ35Ani# zTGXZj4n36JjI0kH9Djo&-YoSBsJ=Cz84ZCWFETGUsmu>cr8^J&T6cqCg>0u5p5~AO zYFE@?rF?+XTxL=^-50EG5C@?);o(zY@j7MW@q;fWc70wFR?`dVVvH4<ALxnekgn^u8-E7)ay2T$*aujRXA-`3F~$|0?_l`n%wQ&;)_mF z>(TM^l|ROL@`&M*Ymlo;ym@F`0Nw&p8-lm$&!Wh5ML8V)*1l4H527_#^4Fhu`W;%C zI@6THkta=Bo&@;sxXcPR6Q!dCqaXjF;1_EGaNRGf8!y}P3B3~~Yn`^awNy}WD5b9n zU(qWpvN0bR7B%rZ(@QbA{!)rAJpHx&btK@CBfLc8y$`V_R{rGW+=Qvfc5m3kmwQyf zDLEkQ1&W2-&v-~A{i_-~v)08?q-O+iWwHyB1vMp^yrq5e$}z#`s%^MjVfcg@Eh7aF z9CVw%5CY7{peP~rL|jhxx~NHc*M4?}oFS4cVA%?+d$1Rwv06eA}So-cl^ z(7!w&&#kl}a;k6yRMYBMt{TGZkRwtkg*}1#VzD+X6nCzAB}zFG|M=)k8GlbYr`zA1 zm`k7RkAX#e#88qxUew7yVS9zgdyo0$r(}xo@gUp*87Q+}LhhBV(cX+no##Pxt_d

(3w(07F*CI^mhh+EZ$40REd_OoS@VvQsWg=K92iiJa_b8TM z3GyWJ=+a|xvqw_J$bpt}jI_;){$iOi^zP}Jybs12<)Hl90GI)dT9df`#tyo4ZAk&^ zHMA{x6Y)^cw_Amn7}!d94}BK^X|w61sPmI3v3Mfvz4TI(G`%w^Ee2hN99D#u-! z*&IgU%&QF~lk-ruwVe6}5lD9txfW+mC?;Ul;_g3({uK*)UJ8n9vrYYHb0>IC&+CZI z{h#ng2%fz7x%;ykea&HTv7-PH(^z!XUKRRJNxJOEDI{nt4#C6@q1010JDr#soBZUN zhu80m8Xzg_OGOYgV7zGL$c|qlhl{_nK9?whJEb2pcJ3k%f$_R8*@KH(h9u?X zao-k8i$MM+#9P#=Q*JfOt24-c{j9{;L>PU&iGK7^hi{>0bJwxqz4Oyb_x*Sx-fC|0MKQA+u2rm*onVoA9A_CN(n^ zjd!MSD|7Z;qxnLJ>Poes)I=ssFQ(YOGA$N*6DS=$YVKyT1b=nlnw!EU$45Encl7Ul znyOV|Jeq2ZVDFbJ>?VH22gl=>0Ss%F4}BSwPH+?@0Nu3cZny~8DujP>v+-P^J6<5C zbWY}=KO$;!FCqEmDl$y2`ZtN5Sb=sO|4}`F{`~TfXm|7$haPC@t)%QcbHgp|Rk39$ zZny*cVLSJcU9n$Em95l$tL&80;pr@YF{^uej*SRdf1r1;`&%zBWl3y*G|*ydox(e} zxy@OEFJ(lSThdsq<05N6;c<){TZF&2K~Si2fNtI82tP@JAg|r5Ctoi)=%25UUytwX zV1$f05Vp%OCg2=Po7Yrh1RRu`RT8wMOW>6(qmxF-)|1 z5`@V{N3r9%^ET~p3$oL4{`fi_l6efDAx*#IKsv551Jwpe;XWT}hOk3=qC|-4S2S-4y8W+kUM0v0#FOzcy~Lwiyzvy?#b=OgR3**A5q(Si<*$gw1lDY_~T2+A5Xw;c72V+?dfqe=%DLrIA0=O6YI)c z<;NXe-trRog+|{g;}J+-+eez#93uEit`~B^5SKTOyzc0qSzmx(pjhg8n$(yJ7%sIr zwMkt5l@8r;E6-0w?V#ULo9F|bs}U`^Dlfa!^mT1l6WZw0hFy|famrHDOP67{Z=MmaPqKd0!Z`gt5`3}a6b;Rn9aR$*&aKJsEO*=2K04Uz` zG^8^ymjv=DjF?0oxD$%>k`fzE}lmuHl6!rLs$D*eiMMj+J{wk`IB*9l!JgP-%1`e7_xkm&ULE7Hvu=8PMzk`>$FpJs-6t38|LgUGW zL`3qd?TF@*gUZznYnpb*C^e>CSp)~gV`!XU<~|M5HDNY~ZQ1Z4@x3j$QV!eAE%b^n zHb9ZpXB2W(jQ`#Ng$4HMYow7hMA-Bqg|fmp7vhq(j>2;+4WhnOGoyDp8cG`jYV1B< zVTWxhRBzzVI9hyAeO)G`t{0|8*W#c-Qx!zP(KCYIU8m=JxF%T_e$QV4B@x@hCedPg zDkQyx+1@<^T^H<=&sfjYS|!eIb8e(ag_#vj1) ztGeiIUKY+BY&N8TvR<(Tpd@1G9Yr=*6+dAbY2yx+2q?hKP`wnbI>I%j zivJ_k#S#AD-2*N4RDDeV_%*g?L9k>4>q9Dl^qX4Fs1@mWHRLQT}UXoeO$NHH16ZHE)cGRT_R)1t117)P{`0Nqnmv11& z?I+!}sCJ65_H`Wy?7CQcCH5yJ{FVH=;Z?h1A&Kc0tvGXH)ROme?C*_5DC;+-V%Xy- z#_h$xk>j^v!M|F-34zqyB8Uh~vPXut;*H!0y`?*tel+$V?;7fXA@fof%_(|PC>W@@ zXFlImO%6^cl1|dqIwAa>&Cp$Cu(QXaIbD$2QCM6krfF(*r;6Gwv!BSlpP|+C233p! z94!8-$0g)!$O@CDkYvVJI4pqI*4&KTg}<@y@g-IcbBwXW(R%w34ERP3-HlGJOzkq5#Kp1=Zo?Jnl_5vW(}JBYk`Vl*_AP~ z?I!@6dF7f-)Lpf~^<9Kz!Ty#55SFg0aF&;;tG7-@>CPNdb4i9SEY;5`LZ{x&CMRFmY5BK;ko z21G*V$LJFgeZoH`tSZASXL5-j&(TtM6jIhDnzdn2bOf+n4yi^R#C~#57%>*z-ZWx4GtBY3hk%8++B zd~CYZt=e(9;dmtMGw`wks(lH983!BC9tx5t>pTO|!WZYFXbru>^XtMtaU?c% z-??Po111fHCoV=5|Fm6q#X!lQzBvvj#^PJo4$ju0mX7~EKlv{K*-lfz!}hVoj^9Eu zCy&oC=@5)KfMg!7Fz$il8=LIq<3uiVC4R(i&e;!g?#8oGAD=>LK#mVBw zL3SQxU3sA^36Pgaup5N=Kry%8v86^itM7SuvisxJ4q+tJp>&bZ8u`ZI_l+3@Q7xSE z61b=uO+1m5Unv-mQS4EOJBO$H$uH=K70GcK@SfBW$$)<75@IMGTf0O9DeQ-~F`vQPxajq&?Bw3yCtSUfT_kUEZ1NXQ3ezkF_tJ$#vBFqd3393YcLT}VkqM_ z8%$^e11@!FjaXvwu;q@ge8r1+-W6*FDgJr7E!9$P(w{2OYf*_Ex*}a3qMKaq!Yewi zooQ_;!J>-cp>M8fPk-POJ@;%3>F=}ko*x>HJ))GSOQ4t?SUDTW$fq#np;Gl$FbO3J zdI@0CHM?S@_o)S7Fy2FnA%K$@5(-Ji#l#BS_QfmDWuhgdlOON=*|@>LS|VQeDlq0l z*m=V{ghDyKC>WCcDuAIpMJWZK_KzVp#;jeaY2G!RW^m5KEj^fqyuA<2C^JWaBiew( zFYR@UTR>@IsjSps$R>lc%M8b1;O4`($o)pq@H~S)r*>uhfS;gdLxVueoZ?3_=Nq{A zhdY&9B}{vh^qZueR~W7<1Zjc#bxg!sFLbG8km*wEht$X!7@1zj{{TBmJZ|R$x7R}s za6M?A1=~C)AmS#fk8{tnJ7m}WVs_BxERx^sp@C$on@s_1mURa$zw?`Lh!Vd8U-Co= zHAyS_BQ7xJd?Hs|7@cniRsh^vN=rxRfnzJ3zBG@d*aisv5>RD$6M)+JE7-bV-6;z9 zL9=n|LU)p=O`ufHAA;fDt}eTn+^^FW+^l~~m0p#JH6`(F900^Rx&?xI$XdyW)Etro z1o}8*%%*9+L((AAZ;I=Y1a|;$jRUZHPJUtO8b_acTKAXu+cRgX_PxFEa&~$9_T(gG zXd(psyk}yayUJ0-uo-rX1Wlr94Q)=4dm6f|i6D!dIdX9NEKF@LLjq3jJsLu{+H_{~ zFFmI1FG+5#gsOt>a8Dzd!`oO5!|dT+uf|PxMvu?MyCZ}xn=x>^9`!n~RW%nh1yR~7 zR(RR?_#HXK?0wiQCEF)Jlp{TB!i_ia+9j+n8_!{m(u;#^7)YVY^A1T^brQ-x>|ath z)$!|EM0e)kwZSh0R_=&-LeoZQ#cM#Ht3Js^zV2m%2bUvjwVHwpa?C`}f5`P}TxGp7 z3BNI1O6~0ezvhsqJah}2Cuh`wY;qH5f4p$dbkRH?Jx!|7XUNv4`!3KgD(zb+ySCrI zaPDB5va>~VfJzjTa5dm&w)xeIc)7R@@lZDL7JVJRGmTwwgYJTMWuw;+PJ0Sw#7!C? z7j7HLx%?S5-w0>!lLUL%;#ZYu@3@=_t*8Xvu;ZSYN?rl$SgcB$3nq68Nm$-Z{^94R z)2!Wf;JNs|AptF*Y&kkq($qfe$!!fxmk)g>K+GzJ4c(V} zw=x7J#qI6F5l>ncKomzohkfYwMGSI_O^3-Yc>fN0V+TOh1bAf&Bw19yr zJ}bclC1_UN1TG-A=!friadW-6cp;>vu%qhgA(u=uVXU~KN zkx4LX$9Itkj;R{#lPFZOwdQtVDcbE0Ai;8^+cyC9Y??s&$@M52GMA z(6SGZov+EOtYf5Z8{k~xPnFkOtXzsrd|v~r4t@sC>A+E>G-_6{w`+n`v(rQ^Yo<}u zZt^62NHaNYK;*01hAcOleiw_LS-qCXyBp+*$Dj{v=Nb2Au*snS`{Z%Q{A6M-bPw;mv6gk)=-I{B;rp-XzI8pxG*JOnHKlHQ?dRY=_J4x`KgH(NfNt$U?k3l|!E#XGU-nei$?7)6tq;*So)V z>o6+xOT-JFW+Oyb_5x)Nha9u=dkvowhO;2C8?(9MhY%0X;B~_)o=)`;yo0lN4klwf zf5^L;#L?Wk3n##%UKMUY&*>FQ$;(TnPdNFWSrj%tlMyUTRyl7=yx!3tl6`QNq2=BVP6DWngw=^ims=Z})jENGETMhzAhtii9d{Fkihsijr(K~Wn@j!O& zRL=QHLY_B3>-m9drU-0VpDf#jEm_V{gR2+GWFd_e}Y1cAq`t~2K zsT2OJFBLZgnphH(?T80>rKA zx0F977Z&!+ATMImi7M2zTODH!4#o5mTQN~w40$!Den{-z+GFS)97Ja12eUIgsSP%{ zpqVaS)te4vQC2~CGKd4o!(SzeUV{5nxEW)|=gEyQ0GK^XBHH zqCFT8{kV^VZJGkFi)aK2L)bt70W)1*9*EWyL*TJg*xkQYp(8j;HJ;#P{>r%S=N0U_ zwXmPfJ9#UdaUZ93?3Ee$&tC?fcZQe-tT(fU_#JU0dzBykjrQUV`pub)4Mf+kcY~Uy zaJ5kh;7Ca$!TPkjs-5F@E1Xi|yPa|{-ycR5+_EsSv(Ma#f)zQ4q|EHqSt5%x&{%|M z?=3sBY~-a?BAm>$zZp4g1e`~Z+!LMb<)F^X{b0ER~@-ca;u~Q<$>il4;Ved)fKp4H}##v&_75DZsbH#anleV00m`j;S z`+-l__!|Wn*#z-zOp?u1+Zomfv?(7dVJa7=y8IBjLYlw=h2JjtPFbuT5&v?8e&8ZA zo$L6r1dqL-*JjYMyJY=dIxrKBEwvBTq2 zi@A2cxR947@D%LOzc{qmLvoZ$e>eo?0qE|wOp#Zw-+8g{0H6D$)*YT^|qbIWVqq#I-k4ivJOLV)7Ox%^IbP{2F3cD-{;ZR@ZI@aYF~cs7V4 zT0_#g$>`Odl26{;OZ4B5Bs!WzNyJ>pK!co8CVVUWayi>t=H+oR^8dGF6g`ye8_z>pTyHnC%Cd9sQUa$7dYIB67&3 zPcnAKrZYPIbAyDn##zQNb&o0D!Dhx#Oe4^6$&}5JT~8Y6$IdfDM@-ZQUVF)aOdq$r zsDkrqt3RAqHhKx};5eUzh7QKG)^L=OCa0f_tjk_Uz6E_xev z3g4I$orlW0IiRE4Itu8U`L6~5i8-ZuektzOFs$Hjfd+C*z=tSzwuqXtmLQ)qHos4?$Aast!!(lFLOkA(};3-R^0qW9w zBVt@O>8o{uC@mbX!if3nh;2j%>)aoYqhN+ejPsFpa->&xf2>0ha?rD}m3U}jZaK5SX9V-R4f(LQpICPzcKOSB`?ACo+ zg_%3ynaCDv!CFcI*g{n1;r5Apyy>jGC2?VWxl<${BWmFLl zPc=p#wG+}Ney|D&uuiMZI3heB(C1hCf|C3vroFLftSrVIryS|7W4Hi~S#D9`z+$6- za)7Ov;PMh>9W}`liJp7228@z_H;AONRkjHH01_CyDQ zg46O{@Zq&kR@cpq5=P1mHU3Hcxb5O$=x zWFU>`>O?(*HnaL<|MfKWu9`Xzb6ef=PoYDG9*;&N+&2Rgk4i4_C2v=_^|oiy6e-!QMY+P$S9^3DtQW5 zKw&9ZWJp<=msQRian8;XqSQou%lii#d5DL&s7T6+PNxrwC!cFyepME(MlfL|_isl(i9z1>;9Z2;pv^ir)ju(7;7ojj ztz;|>ikeZQM^LXiAwFcD6zUeRQHFta9bz75unB=mVjtYn)=5psn_n*suu+^MV}rb@ zRf%-7lt;Jhux@RAwVlgNpvih5wEnWZW!4VQ`2<@{)I^fv#iT-bqW!$DDGew($5*|V ze1d|4y?|&(G|kRfa0_J7y@UFVg|4JyNH2&h{_(g!-|v{N#2~e7XPSmK!0N}xByZ=1 zWR4pDK7TFd!%*Lwt%urY!yq2ykmh6fti!YGToes)Za9gC$ za|6uKb)A_N?L=XP05a554tf#HLYlK&$ajx3tQV}u)VVFuh?a*h)36{?KHIWwEl1+) zjHw2i5I2QvgA>^DoD8(w0WBi@*zcC0jYQ$I%a3yq#8TLCL8@g?J;N1uo7S?34t-)$ z0f0n@NtD8tT>p+wAl!AmXaD^yKS4#Llg1cd!)W#vhA9icmzm767191^2 zICX#oUq%p2tXmrqg$gs=rVqXZBtJ2_f(z(MYKT#{Bwv=4qIzuMFQ9?#KuXZ`h_=`^|MM`J{<^ z`~_#KUp2JRw9Yg5VYBB&560IY&6u-q_r?TlyF81`&#-6i+N`W<9kh}w>fKjoe!hkN zcaMNvm6e_ig8-f8CVmnYU6OnXnBD)+Drn{z!**J$iLh=C)Z(LB?7=+uL<`5qiGBz8 zg;$%bS_6P4769v_pX_9v7RY_2_!N1%jiW#jtq?uGLbPz<>GkKQ9O%j3Emf84tO0CG zxE#!@e`6K!o)@>KT}8IbPXiDVu|;sV8=`M{*ANC51sx;C4zrU!H?hmBFf>v%#+n*p z6k&YkGj#z{c+qjhW>a#0l*5Z$VE08vRQ!F1X~7P6J`CwUSf}%3&kD5fFFL|%ZA7#M zPJ^E1)<$RL_6}@*>5FkE8D9n=!75d^0<#Cj!k=kmn=oVoYZro3>mlHcptdi%yf4At z|3roTt?HuM-c1|NDpu_9hcb^KiHjH?UEe!`GpOcWV>!Iv?{;_R-1O*~ikZFR5FQC}WR<`F;3LnpY6RH2@wvl0MMDJILEh5EkKJJVPN!Z>2`hV2 zn$Vr{L7`@F7F{cWyEJAlOm_Rkg12NXwHH0F98nTxhGlHXYVyM-b$IVI|E`@TMDF|kynv81rCh&;c?QgKIqGHOC~ zg7S7qPm;#LHG{x^6GKNejiH8Fi#G;O?(H=j@-dIQ;mc-^57J5J5)eWYu|S?-L)j4O zSLgldn#J)azLk|3CjNE2^o0f90waRCYb2FQ^1H{jeQj;N7T4qGKn0l0(P--UueUfj z%j1cb6i)2^@9VKQ{i#;`Y8#PL5)7xuQ*trRjErQ-^l%dFHvO&J^{@Ruceg@j0hZn??3O~ITi z>fVw66hlWqCdWFeiU3h6xMSTVNJxc|J+L)a>tuOTgG8L%R6AThDiiqbX;x*XuJI`Z z?Mt~IOH(#&&0=xVVYNe?zS;L;BKxw4g%AuA&dPd}Yl@iF_FZ+(qGb8pJCHemvT#me zGtkKX+Tq7Q2BUOQwjpdVh7ZqB5GTqZ9#<>kfaJUvghH1 ztZTP_37A`?QjH6g&?qqU5aO1nzz)+IYn3# zZE!sTjN+1FYyGNv3C>|Talj)dJcJ1!+MNWo>Ngu1gj{_>hq%M^#YCT)pyC`5aVM>R zI&o{20ax=v)62sX51t*7F#Rf$$&ae#&qrKceDVi>{yKRSMN>f}=LK^a&=07w-L+OI znorbKU##t(8!2C*ujj}>Jj)&-lm6M)O-+>MwapvZ1LBs6MgdymfAI=HfHG6611R6g zL@&B&e+~1T>EgwndMxJg3p?7^PUbh56!BT*GPClgHFWmy(j57%&a2F?bfT)_t->V1 zUf3P5oon&*fZ?k&75CfPoQo3eMtm6I3M1?N06uTsf%J_a1BNQuOr0Ws4%GoZUnf)O z&?BGdrp1oZ%LKvb7pGTn19T+vQm4=UAqRK`Mf|IF`i4fCrPQl2Thh4A8@L2XD{cfI z96jc)SBdo>&tWJ=jzbA4U|dS$pbNH}VW)>ADU zWvOXSF=*6gtD3JC+zdgTeItseVCgA7H*BkdN|{X)wKD zdLEqP&^q<*fhbxvva_iRrPy#H551|R6pgq&Arx0F; zEcZ)**KUCAlj-WZvvUMv*n8$^`7VuV!yEGSMRv%8bnLbk$Ephv!A-+w>T#@acY6T zTO*^YgJ_W5ZRT1(3_U9Fwm`$t;ub+jwQTi#`MJy2Io*$N%MZD@uN&@Cq@>teZw+b@8xAzXMwslm&gegTK5-k(0cl?6tkvzjNGz>4o+Sm6oh*J zUb$M)R8s4L!}_AYLCT|(f&>Il3$V|KL3c*;gnBO^C&JsDUsJVCS)exu-+BsY1;vuP z()bvsLoLSD{r=whgQM0qg%qfuOoCu{KU*B&JPCgTE8UY)NyH9NcF#e%s`&+qhLZ8R zEqlMfx&jkUn+}D~(Q_j_O+-p$Q6-M%i>l}YHhjn`eXje)EE{akX9avb>oQ_>Q8SWdy~BqJo!J)3niTxsK{ z2GVKYMnjKaPKjq4lzc^8x`Ig2;0$LHPRKhLB<<8cV7-M1)pAi?jvrBrOGBW}aYX4) zO$?V$K@Hbq*nwQ*4$Fr8(dmaM9dMw0^Xh54^^!JN_}RfL1jFn@H^et^WuM7q7Qq$F zuXbdsRg#RYb-01fa`rRe#cmb2H8jL7Pwh5RWy1Ybo(jM1ftcQU!8jbV1 zCKM+fXoGxW>U9X21b`*Z*n9>PJyyrT|}Db;Uv(NdQ{}EJ9sK95AHl z(qUuX&7i+#^AUKvwa-uc;vra(u9T$Yh(2SFG)ZY(8bY|#MCkq@JszK8 zSHOO=O43+UBjb--TIckl*sC$Dyd+H8aU)z&0f0KCt5G|9yb4ohmy2qHV$}6*0mSfu zFSKRl&Zsu|Equ>gfng%SoicF{^CHFr2K02-&G>dwo)~HVu!tq~k>4y5FY@S0Ybq-( zCzb|Pj}Uxu3twu@u)Mo)1n>9O{tp;P#`QPyRts;eVAeRN>c`n}p4wnN+39%}HT5T^ zCH$d4e$Bz?208=^>;dR5R+pxYmQDa`k4e`C zXrZ#H0;`~@bhqY2%TNVzaFw!xLbolj=8%;D05VrCz)U5a76Bv2_B)z%`>M+f#O#)k zBm_$L$@FRi`4T{lvW!SwNeyF-k=zP);Ub`^G`0589+O!_f0=0Z%2~|;c&p1H0xHW6 zQk@DTXqA&c)v|u70-Yw9@$d$*eikM%g&wls->E-->Cxtw;`H!S*|rc92pg*4Fk6j| zlV5-Ha7nat1dz62Yo4PTuMWrcdwNnKheT0nwq>30Pjv+YA4Mon?&@4-R?Lyw=rpco zpa}d}h;*uPbe9LYoKL&sOmL{138`kGwK{L)s2D&c`^-G`6kmfVJGQv|U#JmcK{OB@K}RDJcjydD`aKSqf_k$& z6iS5;7V$zQqR>#67V0+=c9&&3ugxJdgXF zzpGseoF6H7M{_~1QT8D4Lj9*pN%c|TRrm|hLSPS~yFE4!yBhq9pz_q79h#eny8;S; zxbFEu=KRoPgn8joDW(TB6OMbm6R^!$0<2eX1jdy)jlg&@*K4`}6`;1c;*g=vk<%@4 zaz?sHDdvbLhadRuTD`XRzeMdw3BK4ue(vlVogKhl-f+mrg1+!?#c(M--+--^a>c=V z^Z7dPDMr7ZC}L;`vw72mZS_ujNPM$u3;#>Ep@udE6=zbb9W3yFfzmNk)<%u-rcm(c zGPkj{Ev`Q0RAf}7#g2)${d55Oy@LzBe~se?xT(QpsNW$|`3!f7Gfa24r%Ra4brIY` z*=FLoiEKcj$go5JuGAOO9RPD3fHC97y|-jmMQ8G-GR*Ix zr&{DA3QUfIr>`4A8_-J#xkIbObFtlX!iADTdd_i4LBOg>)emHFV4nWmYN z{b@mSWKIs;j{F6}qc%FMF(7D8UpIefQI^o<=YrfOt{x6rw$pn)($haKOd<5x57u$z z?(s}m04D>ZxuMhG49R?WK42wsJ1@Xksx3j)6gpE>*C0G^p?KLy{}Luub+A=1+d5Yd zIs0nw69Ie7h7VPd zt*it{wh6T7dGwJvIxP{|u;Iw^*i2KAnfCM4@21!v44{mptRvBLx{~->AI9(}x%&n2_}L zi%y;b-*KRJVJun7+W$pmp5yu=Wf9xwr@w{IIYjR0qXuie1xd;WV2s#GNN;fV_<%4A z2@TqNBWzyjw)fx!%8h-6rzxhVwf8RFv<8_VvWG33xGW|SDZR!(lFA+qSmxxBc*yLI zd@ng`vTYj}iiWWW$rtd#UpCQ)g)cRa&T{5733NYK0}nK&uiA?cJI-u-1gDO0B}xk_(EFjZ-rTVu#&DJmk^dWzh1EHUuJ19ry|^4IJ68zNm$(R2$I5V!<)&dt$(9 zAyDU+h=aH<`!9U2f@?@(Gz=zC8OY``$df(YRzqHths6V0wTdERPWf&kD-(FE+|aSm zN=%ru=)2b*k=ed{ifZ@`~tD`C9JNV0Jk z^VACljQzCCbgL6m)9(NR@GX!w&6oKp+X5cr!+ron%yC_#Y`<+DuAwq)Z~h-~IO*3^ zr}FM)jW67Ggn$ra;YDQOGEC^JtL4789i%p3ND~Xpj>M`5p%kQjt$nC;#4S{XQ5y05 zAxT8Vp%8~#7bKIE?8lju0CU{kj)e=kat;@YR%Gsu)=2sd!S1bUxJfB9c!=M$8GPkp zT?&5{yXuZ%6<|TmWkgMI=j2NFF7>CNzr@c7rQrUvV{r3BSJuD0N(|vUPe{01iPbfX zetEp2wMzVjz#KC>sz4Ngz#3<-Nf@gSmQjUPcO_e$M)QfHPhsYRNOtIS?N2!P3P<){d3Ms_uG*c`%^*;tYBK- z*ncy;={?Tv=Nv%~wzT;iIo6nE6Cnh5Fp8T0xmy*k61Md}IyQktqy5gw*AU|dlIUS~ z+L7;C4G2~b5_fV|yr#HTW?b6!@pyb^i>|4Pu9N!28Azl5%roN47NA(n2kyW2iXDfN7Z(|^k$ z9LH5`u0#699pGS10v8XG$pLOfMjW_9)9=U6iLbjvp|3yLC^z^YT1O1h!e_tq^liu& zaLQE=a09eG0!72uFQL5ky%|7<-Whx5)ClPB%6L24snoFCUTW6uWN&5($BpIdv48GTH zwJ#N>mo2s7LJ!%rBKnbAzG=voWTRqBFxhBP%Mp(q2>Sc#8M9C7eAna>ZUgdw!XQWq zFh`z4!u4(oaIdUJYvUz-3_?uY1``u-4?-{`JddDbV{zWrGj2Cxqd#m%gtN>sGk zSh?aqQS|4j$;zHKLGz*?X{1RO_0-LXOd7tmfdx}^aKLEhQXP9t-k>?Wg){Ch32=%8UQ;I?dl#Cx^*4_{$AHiH8jL+g-?tV^mh(Dufj$|I7 z8QW%tGTdLU`t^Y9m8u=NQ<~9LQw26{1D!x76POt<7UPDReqM3J_%{+$!P!!woozq+ zYePLT7*^oDr$u0JOqCYKB{BjEb4Rln9#2_E<70U62T00pe%0Ul%gn^~Vl0fuS9pK zSM&nl0qP`{`hIj9I6_Lum|7_xY->rj-x#c4hF?4NXpZB(xo=z8jV$*Q5 zz2q46LE8R^f$@(`y0^%p6-xz<_96^7rme8E9Y5;6t$5&#Vcgky`H$!!IPB96&xhkG zEYsfZOAQ#rgxV40GRw9L6X^;)GkJfaE%R2gO-%8Pnj&Gsupl>|*L4yByYBS63=5{! znmZt?ehHK+b?j;eg}xxj)(^hWp;9S7yM#g{@TYm9?6wCmlV}mrNdF$FD0S?jkkK=O zww`pbm^#W_EC$Uq&UTL`e1V#aEU-6FD$`7y$l_{|?rnp6egjrc`f!xWVSY-lh-aIZ z&{w}7W9hhNNoRlt^^6z%*{yVgnLq)jEK)(OZW?HjzX~7~`&+hH-7Yy@S}150cnSDL zE=d5xos0N6)*G7{joq$h47H7-YtI#$TUhG_xGa<+li0fo7M+|HiINiJ8c2k}=4#@+ z38(FV;O2ml7RYU@MgYxHfvqDWoyE8XS=R_W_o_kTwVmZ&mvt*_T-n&s07xhtT=R2L z_hrbFgtZyoWi~QiYT1r?yMQ`<3*K$5Xf5dzG&ENDS7;r#8W$fOUR0-Dmh`ag-g)S= zLTsZwTXukfJnlxgwJ_5~KHSiVWui&*o7_4oP8zhq1GbU^y=^3bL>shqObS9}({aH# zm!6Xpk>0^RABGgK7UvqUR4r^0g1!v!Q}PXSeHzAUAtDRN^~JkPzemKEFEDj2Lr#p+ z$|4N4QDUeBqK9%@-N4kM#qMVoR=+R;gE6}T#|T1r2XDx3Uwo*351a{6>US`EIHSGv zON+ebNjo-bW8s*O%D=9fGhwH^$N`L(hONypB$}=FGLPYx;C`Emu~@Q_oq*x0+6O!4vlGovG|zn_YM!~qSrTB8Y2WrZ zRXJtRkBJ%RI8Tb9>AiIp!%<6-EP>T?fXH}~9kM9|wC~$&GspzL0>~u-_}hlzQ>0e||xX0O!nuQ+(MA%ZU^ye%B^64zt%G7<&7n zR{&o;51+-%V+K@FZ3_UNsVX@TAUju=is_%9&`^h}THw0~%$QMpMTNusk&maGi_g*+Wm zKDmHhYAp<}KG+8q5iLk%IbN8&B4WQG)tm;&u#2CVH-Xs+i@j!*>?*9~zw7JhHMOlh z$G03{8Peo8I%q=I6weFZuVeDHx3`Kn!iL*;i@N*z>U@2LZToEz>@ZU*Br=A$6yfO~(wQ7cT1Axk+fio~iRh8bmN$gb$Q5)Jt zYP6UiYMY>)wAT`euD(Yi4hr1+)+J`A#Twy@_4RnroPdwhm5rl~YSM@phd$3MbHtqbI`Yr6LB3Ggz~f!aB|<@D$c%ItKrxS)&!?#<|t0+&@%V%|1a z8Yu;nZ32Q|ee-wzYCmudw+q-L_W?oqWm85SpP#l_Qv4}Y98rKy%3_~QllQ@*U}~}= zkwK6#ov;GEP)WWAL(80w1>9DSL1|Bo5odeSfn)4ER_E9kiIM@EMzFaKJ}G_P<=sEytDL-u^$mS9`m5@mFI zxiGZ>t^{wP>-@Sib)M9im6O?hY(!|+=6Y1M657g#$i!1FsT*2Jfplee-1c_DrN`?_rv4t96NnmhYAW z)wk|_{f;tSPQAsADHopeBrS|v@=3ff{N3r^ohsdjF)%2%dA;LJ(4xqjY z{8-INw-~Ll^Cr6|BUA0ZqcJK2hMh>|#GC=S*Bvi`>)zt--W#M1ymkrm%(?=fhOj4o zx6|FCP@ssWxeGnzlAkq#m(=@TMmrG*B(&7H{D)@%T`x}v`cOw;{<*9E0MeAKs|dR+ zF&xmgAWDNko8|Hm*Ct^i5RjkPYi_yoGSDae8GLqFl7&cSg%Q<?HQ2hb6`?7!~Bq{cv#OepVsNX0x`QsUD0O9iH zUg%5;(-^ZMy^h_8NMbAvGvSxVTws>?wQ0!N&r+8wMV1Wg#KThgfOa?gNj#0Yw^V&* z=N_Y=80uf}Mbly*MW+0yPb=n<|1t?)&QHWa3%H!qV~6?!qZ!?S)tZpVLYnE`CQ!LI*sx<69cY35SrekUvFiR8O?x!_JJ!L$$`P# zh?_*e2>$n3mJE9pLT%z%zz23twj(D)rJ8z%vqc=&iqO0Qo!X{{i24~Yw&dVE1a0YL zGz&kB#}u-Pm2Vsln=&emDcT>INtjFz*l>~Dz`l__aTUR#nJ#zHHs@bvx`Rd!t(+|N z@_}Su%}WT!e&H|wr(r8iG2?Y16~ceh@UC!W-rHst)689gHw+qBR!WJm(*xEnSTKeo zCxXd;IvxWv!a`;X=^h7=4?!~F{#(oPy5$nni*CzlI_J)`7FxxvkEAb-b;v8h=}{De z7HmSg^;vXNZXesNbh&d!x*k5>E@N%NAp=r z5J_9yhQ8A%#R+6BE1wF%p;00PoLos^0vYR|O^z>pFfcP!&INH5G>v*2k8Wn4*2X@M zNwK>dMn%f3RzYi8g0(pwxm2<`MCNBkN#%R0O`r`Ul$J0vBH12sDRj%t#@)4WaV(Z{ zLE{c{cQpJI=Qscngb+E6%~$&ko`}KR5W|H7nKj6tbxV++GG*WDJSRM(XaRaxr-%GE z3>en)^?3etspwDCRH#sxY`r<6FbI1`@NaOKxpBmH#Oq@^^2+tR8{PcLA&*0syyq4n z7YotjZWUxlgJB{V@6T9E@6N~q>lwP^i>6LauX5J9(bWWbPa?q|KsO6$u{80+B~CMF zj0al7AF{uKadN4;<8Bv5&RAK%P@>LYWeB7rH{PY;*^}MysS{JLFaw?Q`c$z zkN7ciQikwNorGQ> z3-jnpN9K&#e65?tqICIccoRNmh%lpWVW6>3Xk5J;P<$Ld^oVkCPSjtk_`P0Thnqp( zP=@|A>VLTdL<-BX0cs+VTnPO8M8!A_MuAp->a0ag;vAOBEsqVtj7wFB7#M(U&1Ui= z{j%CMItKMZp6r9buu0x3igl?2C-$QgP|Q#I2|Rr~>9@??>D8Z05L+{i?I@{mndCk; zh$duq4p0_NWM|yzYr%upmeJ5s)`D)WOkSF)-2i7?7zVNZuoQIsjzhDU3YlY!6>Qq-ckt;SsDKO;fgK z8RI-^Jc5HOfh$>Qcm_r53q#qdAECZ2nrZoqCSQ1%AAZ2T)cHjqonHUxTQBDE?q#(52r9=nAt^cyzhW3Sq zY1W+&1j4h$cW*R+o06^DErJcYr}H|6zRuvZ-B$*-3~ay>E`>=#9uc-eWXo2}w{d@a zEkjM0PO^f&CI8^Cd75{SEuVLd5VPFva25yH&KZ^%4C;1_MJ?)G1q+lFB9 zos=2~Z$+&B^mtGgPcg*N3JszzJ0E@V7t?d?X#hjK`IdZn=)d>{kmaRUcvDb_&=_Ja zzp6;Q5Q|sVg6Kxs%v@*DVgO8e{hu-y*IihkZn2y;BMy_+GZs|1{Fr0+A^FM-hzgk@ zh-Ca?LNOG|MQZ=sd7prEtDGS-KG9HyRZ?Fyw`ybVR-u==3P!Hdmdgpvr7rg#_+-=i zsh*_64VCnSPWKsce{F{*7KB!4mu0Vfkyn z1?M<8jKU3vi9bi0q==Zxb53WCb`R_RR#RD^kxP9Y4FX6)`KoJ8lhH3oA5ek>&lB5H zRTA7JYmQMeQ$x>^)H%J4gE-NGy?^n&Q)R=B08BoN5>*|-mEFo7l@3yD)<0d-kE~?LxTXx)pmR4i5G1Ul#S}^bxWOVp~S?Ey*+7kvu z&#V7|k(rqd*TS;jG4si$(5*;pRaN`7VCe^lyKKvI0Lpn8TFkM=k9^=0d~o4tVmk|) zMd%9iH(s{SDejIQ>80~O*u3@4;DD_5M6Y*&K3LoD28vdeSEsz>;X`tmK(Y%R zgq(C!PxP^dw59fwv7xHIpv2SztO;oMH~bJC3A#ndt};5PuS$Vuf@LM@NEv`r%n7#n zqk=$-aZ&QTt90~laJz*f+-}yt#z)4NcDXT+#}^na=+_(aq!^KPMZKaTZDi!LY1r^{ zb`A^OBz!x1l~YT@&=9LX*s4tnxAgV!nYQGf1-t?QR_ofo-t+>%e_EBO*r4@>j1XD#sQ(QSTiG`*GVN_=ZR=)oqZ$V5H*iQg8jjz9OE{wyuw{6 zRtD!tmIr+Zn-axa9vi6xEY}7AWbmN?^?~M$o_6aA)njh9CVSF;dbu6g?-<>5HSFpp zRZz;$Jh#g8rTId$1ob74ze-lFOauxJ|Ei^Xq;XJsb)QmBxe>c2kXa1Wf{mNe{+3N8 z_{&%?JjwI}eoJb5bvIfy-`HL%4D0^&n-}V{n`RM5RLn;c-B8%XtFZyF%f@ME^r8PR z+7p7rEj2Zp=P2P$E z;(ceH$vzb2qX(|Xt|AuT*zlT`2q(|aLb@%VXoi!|&gSx$RkgZi&$2~*DiC~6B>t;@I6+#El6z(QRsv6kF$C|QiX78qG3G#CP%Gb+67VXd;iq8SsErHYEqG~U5vuznzs}|SX0KnpDGH$_r1PPz09tqF5+4X-AE2SRNwT3 z#{4)UV^8(SCgDIR*v2UdMr4dn8d<35!t`Au-fWA78;xz%c$+cH!JGY#4A?E8ZF62?^U&!w^bV#PdCDcuawVc;u?EKYsM94JayUgO&=g|bL#-1@Y6`xxlEf5RbiuGp^5&j$Rgp2N_+_pvRT5<*$B`F)t{haC z07MMZ_IioxHXlelg^wTLDR;D%KjX|EoMJ0@Pc+w@69uDhp=%G zy+QFVje5(`4PO^q&fIT5{a`SE1}C8)3MG*^nLVu0n87_B(@c!`{)7xhgmq01c&p{w z9Z-#1_uHKICJ5& zUt;G2JX^P8KzYLz)flpvE+Pg@(eIuHy4cf^EL5cm<{?Cs>Wki&c$1jN)-US>FK;YJ ze3I%FVC}26t>IdEgcPE=H(YNh&cZP-(m9VL!7)Qe z#XzxpRF}=w2ME`x|$Vf48B+Wqz-z(W*=UU>~6>mE|NO z59a;a!weyOYO;UFhX!D8P^j_Qou}nyJqp!Dqgf&6pPveVgZ_Q_V;Uhw*@E{#o}|yi zZ*YQkW$C3PHBFk2=5YKBkX=R)l zQIKX$?&K6`!6m;BF6c)zT~FilrD%0k#szMuN1^jz;Rnnyfy%s85Gh4eQ8s2`*wCq{ zN-yT;JReg}$f5XUpH%{G5oZn@ERe|LSK<8M#QNBaU0O~=dT>Y5*pk4prv(OB%v?Y< zqVSSM4E0#yGuB?sf;h=j0-^SQ8iSr$2iRlm<4K!{GSz=qUK@;)3LEtIvNIX2lNahv zMFpE?cpv;$sTBn@8RAG=wyTj5lU~5&MLJY1@Ln!fSPhbZts&m4-OiZF@%ch|!`l4K zCmq}qKw;J9<98Ws_XnELJVDk3bl@;0FR`Cx${6Ujr15M=o=1fl`>BcO;m(s?lhTq9 z*Ogd(5pXyAUs2t~w*bv37L1ZDhM28;^5T_PUFg~v{(QI{W6WB0f`CD!0Emu#IH~;_HVl+V2&XA6^>8=sOB{2PW_~u{Lx^T zS0Y~ez3B)`mOUIf*aQ+40km2g_q!V8+#TXw6+UrKD2X8VAk8aoook1>Zb% z&)J7I;Mi5!xz;goA`o%3%Q75T6#&i;J`$vlW5GmRbraEyZf`9yHAV4RdH zsthz+Em(XV0m=dkBdDRIlz2K~R;NfEDUJx#sS$F4wwk~G(D=L)v5kQh!v0zH4Xd_e+I(4R zB6Jie@S(P`>SS$X7h9zjH>ncGeUDje68Oqb0?6}7wGVORueN?}qN8hg{53&h$LM>6 z(OrDTZg?ddlG(Zj2MDRFF08JO2`nN-v}U>8-x;a@L$lhx2n6NImwtvPY@V@szKzjj znK&*zA>JCdo9~eonpu{S7z{EO&^!9JQjjlZnJ19(Ss*TmB2emYu>`>b&QJ!4!6k7` zF3G9q;+}Lm&V8D6rHAf^?VEi&Vv~Fsy^<_Q~wdcT8H4#GbnibgRKuRXJ~TV zY@rZ9A1G(^c*%P^$l6T$t`LTXV{}8r?L*1BNlRdvch!TKkf01@{U?p9FtKX#-*QJk z3;?=`9;=OQ!gXiDF4b89&wps*c#_B?4_Rzxckd0!BAjm0K}{R|(lO4V8b+VEISPV~ z>p<}2wAKL>u$Zk@gmt5-%2vNH*;)AjuC%dcOOMO4=*_XNQz;3tnn4Cfw^K&L`^0^r zr#8}3f;!u%0@8nnhZJN4549Fr!~J=5yv9(`eDP^?R%Ss_WSxw(64+=SvoiV1pyz%4O`5LA6X^taE z>CO4H1RTFLff%?aTX`G!j$`P31f&=msk<(59A&5nEq~jj$y0dF?R***lo@Hpo?AM1 zbnCz5(tj*V&dSV3&s5yUZOf7eZ_RDdTTi{0j%;{F5EUT}uM*L%<-{#K1AvZBgau29 zxm98id(Z#({xaPxZO6}$G(HgEVWe=sD zkc>Z`{yd*+&Tk%K=als_w3##IPq&iGKkZQ7Tnk4W-QdgS`O&xX&Tl!=*+Q}=>&IQK zGC<_4<&&jfKu1dA5LR5vzhcXD8|aN=P7XoH;n}Ji=Uwse3BLn=H>!K!|&oarTCoa)p{h$h&*4iF* zCwOSEoiIC;3UhA^hKs>C!O{qL$5G)en^J`w zCEfrBp^*Pqk-t8m3NHE@_9-6keQz;TO13RmPJ->2 z-HqI>g4lkwg1_S zLEUlG5yp^Q>83TZVf#qk`j5kBITini;ZIbJ>=#>=j8^O@dV8?8-~7tzKz!f`v98-5 zjEXAgS_`{kA=e5S%vPBHM>v(DMHeGzjCWldIg#~O0l9rxJmfiKA3+=;b_)X#Vhb38 zGqMj6Pql*-%`0Uj9{d_>$HaFn4t`9OQy@7S=DVnW4EMK-a*Uk@g6%JHWfa>kEbzw& z=@~H~I_E+V85K0f-}~J54HKi92Ut8^RN-}0eO^ANpn_hw-yM*?2*T$5YrK)Xe*p8Z zcf+w3;v+E~D(jD~fJJum)SWR`@A^ow(e_!ORzhNjn8jG>Uwj>KsS1L8*c<#Dz1~C zs)EK=djjKnhwu-`;n@38|KF=qABYT&jBFDbM&U-P0+^kf9D>DLf{> zcET+WS>!vU_$Bg=aOfSdk0xgtsXuZXU=`RezVIQdIgoqHY~uTSJ8qWh{jeadMOSbQ z+AaAX$-u#lq`0di)%{oqsk>EcciO`@62Q2S#ee#kQ=Qsgd3C$6_PnGfK&9?7_C2-cQzcznsR_4a^?1g(aSR*lJj0rwjOaYWC$56YuneIx5Re`A~Kg*eS4)75z^in~;Bnn^sR)nvD%^m?4Y>;+i%u zg9MdDuB>myUc-Aj`+u{P;T_v z1p5>vA}( z!l!1W#t+z$+panaR@Jkg} z(sJDas43K)W_;?e9_}k6zNbw(T+7%lziPG@pZZ2K6MJP15yOWm#&dN15WDJt1X*7W%p?spRXk8N%??&u(MqU9O68g3=jlVk z?+3Bn1U&x9(UG+&s6&yg>&fcIDxsO z;vpinQ?7rg7Lo!{Q%^kacweMGES(ex42pe<4ceUa<6fHAkizC$vRW!kErEhDk>yXo z;E>(07*BhE=_VgPi^jihgl8TIa$?M+_XiPVKFZn;y`qVJ9++0qI(&#_YY+`Uy{Z-E zBrnbf75v)mZ~evo`%)zs`xn=-NY&20%0uMnqI?9WKOa8^IH%JW7d!CG$P4ZHC_8BW zzqXD~kr@E!c2@hXM_giPUb)!7;Fx)#C)Rza!{yC?*D(XY?}q}K@u5%PfO*GxgEv@6S%_!wcLjFi6gRXNL`|cX)AA?>3cB zyX?e!PYXBE({`)xns$_~wZ?wFN_3AZEt`Y+cLP$eefC(hb_K305+?xRD5x*auB>F5 zdP6lf#s_*E-Hd}7@;A$_t6lHDq_$&S`A7l$FuY~{WK1FMh{M2DGjzZ#!F5LzZr{e& z=|1h1!pW*t=b*!|^2q3^*uu0$}a{k zCdhuDo^ShjZ6X}*jPESkB_OImIQXBye40Lihvpn>qL!&CBln@lI!Cm(@>a{?MjSEn8px^Fpg022acLxinr`p_~__z!49jt z0zeus=19+n|HWIdKkfWC`lxa09MR2JQ|mFohtX!iW5i8|+rz+BuZeiy=muJk*@`(i zGq@zp8?yv1DPS-T{hSE2;JQ*7G1<(x50=}>g21IU!d!|uqS*+PS+Z?YCY#?D`9FTr zo#N99Bx_nj*Ydf5p*-R|Ro6d3rc0WytgQ{kJZbdmGN9(14@>@Z!tFq= zYaB@U1+s7_X}B=1t{S;v13>O52?U~{P#U;2*9Kbil$8vL1`wf|o1H2wvS7P5D{53o zy+Ss5#$u^p*h3`@Frtq&F5*rF8`Dugd<2BARS)V>p|jDhlW z^5Stt@>7sgJg@Mb5xVG%)}Zx^iEV5kWlbJa%AI(Q&IgI-)3Em=K0{Wl0ut>YQ>Ucs zC{hC<1{h4qceo;%lHx?o5wd=8fLWfIL?W1w7c0vu|Ijw`kK?(dY28WrvYkQ*$xa(( zX#f_a~BTvX>m!UOvF#N`o`P28TY;eOu&Vn7 zMIQ5D-UO8ikT9B1J#C#F->{`(VE(w7)sr5R6E{)rLMd&VBG2vDF)bteT|2)gIbP%>kyk^^6%#Srb?wDxDb2i~~jg6v835g{U#`UBw z{48?5Bx6DdSMcVFjI+5!SR0Sk$ly&-Ot7zKF!U88U_wY138SlVov}an&x2G&dV8~POmU2U=z$WVpsR=Gl`he0J_2Ha4h2KkZC-qPbj7QQag<^FPCs!&x zZP(ti2c*s^-L@%TN3yseK-97{cTIdzB6CN6R;uV1*@n!v(zB5e%DINP-BiyZFTdxP zX88Y2+dsE+P%AIspA9$t0xFVXob_=|qJ9cPx3*zpm9-a9bL?rO#A0x}{a2$*Oh+7> z)(643a^EBuw9OEASBJqOoY@v{7|1hYzvxYNlY388(j^R?gzovKMVt9j0GMCZZ^!b@CeSGqGMwx73xzJ#H{hB?NU z_ZoB#W!kHF;KI1HGqEl=<|BZa5rlUNaL88@ZPfx({_RErMH@(@t(^-`+-5SXW|MWt z`20&8iW7wA-hp}&grUA4wSPb~{XphK``dvFx36>kWB`R;5Kw0`5A95zq{+~Xq`?T+ zCv)tT;#B(AE{Ti)1VpOE8_ta`6zj^T}np*Ba+1Vu#Jpp+6_t& zcJfy(G&|ZwGG*j~u#O^jh4X3RFAW4cuNMj!K1c8{bjEC7U;)@jVT~d0(mTjm4b9(%PYmSfDe$}N%o*AwC;$$5+hY&VL=H{2^-sXOOX zio&fu8QBZ0Yi3`YE=b1>9pxZ*<@+93x(0hS03cWQSF^^uC`Au-8g9Uwd9*8CnmaAB zm^MnMKG8P!fSr#Z&XgxLn$b8<_25Qm+;d|D$EcTS_}@Ok+Hgvv0sob9axX6L#YIvV zd{L@z=!v+lseaucLi)40wf#5UA@#J@4%*8SX@?Im@IDim550UOo~lp@;ROM z3B$pH@WI$Md2~|mJz+PGEPHXb)Yuv^@G+us>1Sj`(O^+uk?;9ZVqNKG%eHVUHZjbq z-BE7&@J%zyy~uL`5L_Ol`ygZ-BAqf@jv}czF{IJTDYPw`MKMU2;pCb*V^%v?_vuZU zU|NxnTY)$a!FxmMU-yP?5_B~Gki<%j&teJqKOH3@G#j3Uu9ZP*@^(Ui+HZxET;Q|U z{ztI(n7;717Ij$~79MhS?EBQqcgUgfDO`+LdbMTgJljSE9J;JW?B>{1VrrQ1+4#x@ z4e)iN&vOe&V5-O>#Q$ic*}3W_0n7YT$)?3qx8;)u6zB(%v*+z%+J8bil}sFjX3&N0 z*0NlhhPt<3e-6(#p9!GIxL+czTi>G>W2;i3h6Ia1_dNZ8%&asNCDPN)#5D|GP;EgX zk1Ji@?0ZzO@E@nS$xWE2`n@{|Z_N<-iYy%OAtv;af+XY%Mxjof&O76`A`PSb%84cF zfW{c_mg09dJCo9x_z_UZ`i)#}R$87_1s|bCxtJ-8`XqW2!;--sV*?{%pM9(f>sr%r z9A@M;j4eajVQS4KE<1LEcG)yK-EMZebE^e#T3#V8uqy2}B+xHPp60~E(i~b#_&UEh zP}DyD-j^o`1qsCfco=8v89G~e=2D9yGG*eHD?F*c67p52uP35R;)@tV+}O@1dnCn? zRPFwCR?Rezk9)|o-6S+BEwFhV>qScGdR+?Fy)2MvZBG{n6;_ zkzy#`la(J`%rla(R}a&p5Uz1?uua~uHCzC*Mfq!eh9x&1>?!1#&a@}mUZ=Jmj>2TE z(zNJzGXm4c1)T?6bue`#0nK3_LXm!c{0;j8S5k8+Zm~m1x|8Bus-tD%u%5hJR zZ*>iEvcPMZK4@v!afU~qHCnpOb>5Acs%RSQ=bawsU&jE9ourJ!!l741eepole3KX= z+s}nN8d#5vElUv8l9|Di~Z z0Uv3Jg`-Y;edFc|P-0Ik+0aMxO%`5k4;f^=P9SCKBoUHgZp?O>+80CUzJu+NHS3Sm zvx9&bsjqU`WUcG7qPIG-W`_>Ez^AGhJAMMp@iTNcr7)cDa?G+czvZ< zC^Cv3F3xyrf$^q^@-dylMac6x>UqlDc%M_iAcitS2yE&=sgxFc!B4xNOeTs`%N9VQ zX1-QUOjH;Vu^pveu&kO4%w6+0PccyzZVHUhFay(?HOx!B&3Ra+IEF$=vp`kFZ)u_p zHLaK)?j}Nud2MAi*fYUi(ULyXzbn7K_sZpZ;UR$}by5;4MyH0lzm+yrxh{Iv{6~Z$=xWf?Tp;!Z61DgZgK zXa3?%hSF|vt`t{^^vZ|g_by1ZGoFh5d28D9`^ik`lf96itElxpJK7<}I>Pm{5WDsz z$rEh-CnHYv-Z;*)ydi}s_J^u|D4|my-dF*VVdw6MU@YVu!WV5BAxR>4I=2Mc1xd+S zs3@P^Q#(Nv)L8@tjAdG`#b#Du$H)dI5t_a-bf-3t5V$~7+^ps0=Zj=hd|hBZxOaqV zYHrYF40|dNW;UI+ac7+0%M?1_o0e4M+Z@a%*=T-+h1RaX9Q4Lz-s=MK0B}>EH=!(@ z)H_jP{TYjFJbqq>4_t8(-iy%1%a{7)GZtNJP5RHHF>6y9*=gl55r%w94td9_-VXI? z6ghtYA+ScI73HcBq zKLebO!HH3Yz#`d$cj%k2z$NG$mPzs@QCiKCjEGdQ=mw>Azl)p6T32f~Q}^!P?YEHs zRz{e+wTJ;S9%`nN$XQ{H9BVP04pdl+Hcvi8fP)1p&u$@HPI~HzMO^`-pG(Svn_PXX zGWDKJ`Dm^@kI(OKBifSqcDgrdRI@8CBKtf}?tToGI3oHXc4m8UQ;@qmSb9M50)3~9 zqbY9lWy@vo1SZM^%98AgwG1m7g+lBGAeYMd0?9}Nl!MN44~asQ(|HnBa!K3q_#M)M zAYhvDw&e0*Qh*r@9n%!;(RVUcMjUeWAi;Ax3FM`z9&)UAR#FTwFwI7ac%o7CmooMw z(?W2Tq*gK-pDcIJ;-4Lt8TmbbZ~^x4a_{-_22?`3bJi-hDJTFfrR?$(!F%p5O3&A+ zR~3OsUE3gJ+rt58c19p8D(mvYNG^Hc-M%UW8+e%(=tl3n#;Jq+i9<#g0^+7yk_7&i zLGRH6s}xqsOHC$viO&ZJvT5Sx^wW}OmKaZMD$(!n-u-S#)J9X=bYZG+$n?7<;atky zA)PY$-WIaw*nt(o!()%>S?34Vpy7der7{-LYqb{CfXPLZS^)Rwshcd2Z2pn(`BB&w zl*(NxUMf;0^Qd}FLX5ys+T#3=z@0mYK<3By247Lm!Fz493U(o;@Vt8C?f_LX+{CdJaILRp+zCi z5*YwCHWh7q9>|rjF2ed`#`;L9+gEnCgUjra{`V9PhQS^^Gqk{nKFv2J zXz0Ss!<;_KKN|I(3C7ew7;Y*4YGw&!ZQ~%3iVRAPaiCM}QL#+d!9L9KJ=Kjf=o>b~ z5aV3{TFyQXyW2a!RNTae?Cp<@Lj>Pv#)N$&d9$3zpxgleKLEhuv3K$Bb^kT?)}{MP zuez`O)}oIy0S${!Zk&*i+~+UEr7hi?kN(_z2>}PHYn(6!OO?cKHb&#z{N6OUQu5MU zIz28QDO$UC!5=m7?TNN+85P`!NI$Y;l-Bpk(xDM`EVP@LuC!+%23T)kVU7V+8rBZ+ znLfjj$;S`pUYLCvQ!gKQ7 z$8Qe=x!Ia0X8;s?;NT-h;hm)EN#drLaZ%paNWiH@&{`s1l3mxqU}Z!zohD4Dm;Wo%Q!DQ^ASk+b zB<=e>dRhi82ePYn1=w*a9TdiEhyW28MV?7 zuQODu0u6bxHcs}drq{!EZ#}bcSXDpS{}g^}rG;ooB*`u|gCtVxaHY_R0|i(eACQy) zKz4+J&oS=GlF6#U5~x?fdZZr`VCh$>^&jL@;4F*PjMnRW|p+HTi02 zVrbGE)MVZRU!*U>^eHyS#1RVVl903EJZ2*oRvxMIoHqOxJEUOVMzSf}sC|UF!e^{t zSz<{F8v<%_zO56A7+l<1YxN9?k6o7*0nTy|zY_=lY*(CGv*L#sov)bJ-I#Onw(hY{ zmZ-^4kbw=;z>mRYhE(E5-78$z{qgmLHGt*o^BzGlmN&gi989-K36g0JW3yX9m0nzl zBv@DaBe$)2F4hJrF(?<4=i3lS?q&n#XAFR}?~YQoHDD4#Zipk*)a=?@Af5RafkB}o zVgL5V;HQRi5cYduzyKd5zLUNq4p*7~e}m#;5}T7GFWI7P1LbNz)DJiMhu5L+Wob!N z6#O>g`#%E_1N4a5u;$F^IYAtxFgLsr*JWOA7h~$5*~F$!0J(6AIlc_d%44Gl$N+gu z?yku;cAQsg(Lq_wGag<43AAnSIiEpfhH8HrWz4#iJL@MLjQCl*Q9?RRe}raE+3S~k zfS3y;b)Z3AJlMQJ<#u_Kh&RInD8SGa4$ustpAg(;l}rWzm_S!<-yJI88*?ITUT@3v z-?KYpDFt)wmRA4W_PI+6>5mFwe(-b#`KV<QW;LTiSstKX3NF3#dR7};`gSTSd&yQZNR_fnne zM2C9RQBm1+@uO_jEkDC0^~3z2B*JSG*xpAe71lV*bDakD^fL7dm8a(!{DjB@t7q6I z#s&7skxyc<^X4sH3Oa97{LEpNcB5X2f|!uTR~-z@Q!Bl8+%HOChFhyR)afz>s4 zZRFhXi7F!5+!qM{i;~rO(t_SZ1T91mRH@S2;Q&zTS1w)fxw`nC3bC$x65S%cQK5~O zSB<5@iOBZR-u?3UAT=V6M>BtYQU^hL&wuwAdiUaizIy{{ar$Xi!F;x4)wyavQ7F_V zCTQ2ut0DXz3tC-ng?v9wCAWnaS@{jzx-0KsK1fgH_%Qy!&4uFdezb)Z>3(xzhhuE&=QJ8Wc{cGze;%j6 zv{)O9Z}^t`yc*&Ut7u}t0eE%d|M1%3JxHq1Qh?by z1cL;q!>+0LEdn`l3g<-bPS3Jyn@3X~x0m4VeXvhVoHH8mcW);3Na$uZu60!>#uqX5 z{9q=7u9M`2SrY81XR_GA@c#I!y8#l&2ZjKXu$97H zC$$Hu4!Rgo!via@bkaMXj(ClBvd2Xc~elgJWox)Ue`3%lbO^HKEI`@cJPrm{>`E->rKC*ha z^R8s|S0n+1L7r#UZu6bSO8m!r9?Kj-IFiXQFE3SMqB zr>MG?$@MSqhqzE}Z{HXgf)$DDt-G1+nYY>40Y>GQF@|2f@c;YaB{v7wP1yt(!LT*) zUN;;){E3EfUL6;4obem>(%>S;}Fq0EdWya!zq0| z_b)fcjCi61o=bQnnj7ong8FFL7y1~r^MFdE{%o?pez0AsSlhkX&cYebmbV0vobG=E zh<+!zf+RCcIUxZ~bwg*@42a%DKCc2nJ>=BNly*hl!O?r85q6^+GmWtmiF@x&Jdb16 zHNjH5IJBxt_SV_*D-yVavJ-@Pc{~|ZG!bL>TR#tZ) z-YvQ@siKOLstVFT1IZhTr8i)R+1ZPH$DEb-SlKbrWmE4$F!DahM2^p!Ssg)#!tzQj zb*WA3wPZQsd##qj=X+J?+vluBQ3Ar|lMD~AG-2$K?h^1S&sRvg4}1p29;b%&GiPcK z*fO2^$!I9a)#k_Zw1Y@?#4*S4ch-50^0JLR1epw-v15ZuocaHL18zyF2aQ8b9WJ#c=4p>^Erap}tk zgXEmVBbCWrb?9-k;%SJ68Bgy z|6n|@zcZl0vv1Wmr1i6pNUTGp6C}a=iBiXI2LLqZ3hBPT3Nd+Kb4bBfD^e9^%!U%T zU}!}cmNwFz6J#G^pq^LfiHaE+HB4)WhIxJ(|zUii&hB5Y6As0FY?K;{w zN$fx)CI|>PUDrB5W!*i;Sad=>zJNvx+CFCOPgGX~4QG0?|I^jRV)S%1LV;OQ_WssP zgF$g+TDqJz&uOrHaV|DHp(Uv?)feBpzK?9z9#=Y|$4gtT1-y8h6uQ+De3*=J{s<(K zpCo=Q3j;Jg$Q+?{7~a6Mxtyap3cMj2in#d4lls3?MLR89T?Yx6o!pIclJ=TSOD3U3 zD6}^tkX~E zpZL^hu5byRZphAvc6YZs{?2y^mRg6N?#hrsRiF&I57lTOD>&7#KLLKD$F=x$TQ6UZ z09Iu|K2RpAw?Rxxu4#YSDt@wrn*iRX!iaCOn2FAncHu7wA|NZ& zOg$%C$QKuh8ustmR$tI8&y1>O6Ffox+B^&&g}ZDU*^UG~pz>^8>eAnee~tiW!y{L> z?44+aSG!QTNS^T}+`a*y;p4k2)sNZBj{v=oi@*&o({pwr!>=x4ZF$0l{VCcgMv@6~ zx_I=+DUydY*=w~!^hgc)Qenqx* zo>k(k-y<|{{>47eu2_P?0j1l!8f5ynse3v5d(pLdN*t)C)Oz2MJIMW>yz-A?maS@U z{L0uP&X>vce_E#1YX=jeOAUOdsf_za?x&1>CF#lhCf@7BCR#v&nr=p7(1|ST zbSD>E9Z2xrJw~En(xNtr=Yz#B{Q}sx;%WbnCW3#Lr3)>d@hsKap zNI-_V(wUFmf7^}sr=CJ11Cqahtv@N>K`37Uevz& ze*fRvfi;$VX^;o<7Hl93dKp zWb2pjS?0e~;Y+<2TG0j{WE+bXT7eViTP8;p`s2Ci=@X%0Nw2k_J=sdRhz2#3Um7?M zh;xh;xUq1+wKQYtL9lE;N0}7&LAj^#Ob!ROPThOQFbFSpZYH(i!%PGmaOEf$hjVb^ z>29^l1F9BgDf69B?HmXKx=Z+CI}3Tn|N3mcEH#!9i3O4SM2RE}-@T38W8?;es|xa- zb)Ie4l6JUUUSclC)y5Pzf6dG+F)UsrpM#?ElIrhAN1DyH>Au8poQQN6XFWk?Xp^oo ziwDr!f$a!a49boh8fh#2^ShB`;+$P4QETD8yu!S?D$QG6jkJ2+U)4zUBM=NYnkI!& z=8Qqp?h#*-fxD1-I>kRm5w6GLIf7QyuXUch262kTA8MdOEfdwgaqNHgo6j{JF?7}G zcZa~2J0qp?2j-4kLXY;_hIOoz+&fI4mI0%_3R_paAF;*Pq2W35`xd&~*$zj9+xo)4 ztZF0YNc#oXt>wOE?vc7?LmbUjliRigeTwM!cVIaJZrJ{;%r$ISGy>i4HcgG&Dm0n0 z2DzEKIt{;+8%o$}8k`}=Ysu=)f7Wbe)G7VpkbZ#V#2v;?8~$v=gS1=`_}n|Dh$qtG zTe5f8+t>H7N5G;7AGHIRnGs=xYzV7laMVzrP!2;0iqzcj>LWq(Se_%32y_-`*yq!8 z8vQf>3xAcCe@f#g6$?I(3*?h9wREb>nQF;r14#Gv5t&7xZ38=dQ}&zEffwP!h9Dyi z3Pf@4(=6zklSme3_>h0E(LIQho3u&c^!-?tz^7=H^q9o>FW^Kua!AaTF@;SQyB)#* z1K{+zNuSCdCR+xKx&!2Af<8WTxvZw~EbiF+T=lUK?a#0a zqBDdHiO*dk71?O%5q2{jEcofX@mwZ#u{_R4bA$UMakVwuBJC9$eWosBG)}Fz*+1pp zriv2_i!$k^RS`-n+j!8)g6Q^Lb^mDSSe|MWk6uKTpO8BL+}7|@2Uv5Wspta*WUD|} z73}yGS)wTp3j#Cwe=S%uvQ;j!&J@%vHRo*WFx7J|fF0SNmcz2ZY6$v3i=ulzK|zh(kUxq}7JzFJM*adV@Eeit21p`E245gI|XIJIbG z`K%=g{)Lpww*FXeF)zXc@ttyNgV0CO2XpSGC{M>nLwA73Jiwfycmy17v6%2wa)!|f zyGBgiSxxH+x@f1-aU~aJuq@7{s>H1Zf4r^lx`XMRF%L6$#PyHb3*zy3e=I~ zlVn1Uccqs8z1HW=(DDn~OfKIbou@xJs59ab$P<7e@PH-SjJtdPs0XpJVn^lIQYW^G zU)BBYguPzsFT^gBoO zziKv1Xg9wsDX_H2LhVRPx*{`HV8fV8MylrTy9|ZBPmKJ9&mV;4Kxq@zBU%11+PPIMrm=q>**r@gAI+}q3ggA?pQ;8?CS(8NsjB(3d z*VQo^qiq2WIdjn|z8U5Eqq;K=^6Q8h%E~Y+9$G1tz$3e)^{+Pl7rhWvz_KkER(4rV z{^@XAZt*;NFf+_nk5ftzBRl`R zmWMaXR=$?KvW^q~1fTpDoI?!=OH5FAS3Fn`RcUCNgCn8;gN+H7KtzbNtm#OAE2OZK zDx!U~am|e~MGDzG7&dqpq$e1xXIc9+ya#-!N!SFbs}~=ZrZOH-cizz~eHyMK=L_nX z1a7T2QG8Hdo`34)p70O?r`^&)zVb_z#EiHbeM(PXYMEN!&!~LaX8^e2SH>Jww-?wj zNf}L$vsjr1ZwyTF49l;W*L&oPhj`^Qb0rch=6dPtamRW>&vuL!{c8La-2_k!tr5L{ zpRa6QDPw)14U~75dhrP@$6*|}2ilfHp4tKlpj9Z>Rwg!(hhT_TUF}^JFs(D{T<;Ye#iIKPHl6D?6=^tWDW@aiul) zx%zF4+h6m1CTjw69{Qqty5jlbQNf@Q?#r6CT%JyrWCD%h5vhC)96K*{yj>85KJC$~ zWV{sR0p|Qrk>x}M+$BjbZd4*Q;Cme|<`DXb`;YiA{<=HZguKaUJPM3gzI+=JH;b_p z>8vAacesxiL=Qm3D$%Dr&y!YMk4b_hwB`(3$*ts{CowBkCcZwel4}?6$lT2i^?FdZ z6cB}790`;;O5kyY;b%U&VCJ|0b1rCkz|~%mXkr^;@+?t-?&f4bx{(S?SAMZTO0Mdo zg)=$Q_`Q*ZIT)gAFJamXDRL^MEl|I~OwmpCiu>{;R~bAhmFk0cV@F zrqLZ4kbGvf>VdC0Z_~4Ls|sq<4SxucgLQt*X6=m(5cjM~<3sV}0qm1vLZ?JZ>WwjF z58+4X2;`EC$eEI(^;G{;iZ^061X)*|LU>wMAq!%AlSmS;z?}LRMT(&;YpM5wLRpv_ zcr({R+{d)KqD}R%3fG|Eq#h;VIgyET+rB{?sGnLr5kA(APR}G06AXlUR=(^1eM0GA zBqbZz3WopzEgXMXpY{fSQr&;0`FP!y*VCd$YH51*ZE?9S)5K?Rae4zezm@<8QL~6w z#KHK=Iq_&On}%Q9##7M>XBOVDT<8aVOl$FVp}gC`f3npGdF(3*W`niTs?Il8eZ+s* zh8yn1HdxS^RZfcO?A73V;=yjKS8xGYt=N1*p~uZ%T$0;Ph*s3h5Z(oAb0Mc%y3Uxx zSrY11-m1{}wUAzrHI#<2!WU0=y9VF>sucxTGt+@UqPyuIbaI~9x|lpUPiDYF>-wJG z1|@=P3V*NK5^$y;&~UAQAT5V?CbM2MT0w4g_#fu7Ud(SNtEdjB2uPKsov)qI3)I?= z-N*ZPQ#N)4zxiSDohI;K1LifrP?tVggH|mo*^x2=o00@JtQ>mvhx`PT^jWsfyU~xc zAjLH;&N2r_45_LB&)NE!)7q|vFJNlnq~_@oFYN_=YuzQRm~S;#no)t#{u;wP52i!g z4coqLTi1^6o!7g6DAD^4%2l}xjZgxs9u`;x;eE#I=)SN9-@Z!_8tsOmw<*Vr$L$iX zyS$3j5&_YEd%j}T6XTBjB(*Is?F>sLC6rSE9`v4ak;5D>snB$*dp}{^9e=2DZ?+tl zMM$BK(Hr;?Mz5{7-*+L(Jb_0u5h*6@^}_|s_TQ`1c0~BLZBUvFSI(3M-;o$T8TD;o zb=xt`Lv_1{EK97TAOp3_SS<{u8zDtrrO#mWdkE6&)LXYfDEr0>n!rA+c1f_C4b&FZ zEJ+KO6=vl6=lk3}#@CnSF;KsaXFJ5zA77V#;cNFghuc6$$ue;G&fw4(cNR~ok+Hvc zo*`EQ!jf=wTQUG<`^nh(#kPi@1)igK6rbRPXz;~lQ~q-c{?e}$(!PUl+0*x+1IV{{ zTqxmO+p)o<cU!&xs$^3`1>G}|J`F9}-1voMP++>!j03(&f||~@ zz+$@HA*d=3D(CPVvH6HNx>o(8=c!tDkBssL@AfR$#kOY+9ZRGI?&p!jv#yc+V&okT z(&#JE7p2GaQ{_lux0$!0RE$S+n;4`NlrZjNciidKAgOMiwY57LF@Tn zw2FsQU0y(M(c=(X9E8s5BkO-m+SG)czF+8_VZ=oX2}h48&@w9DdpaH)jndtfcO*>v zaiAP6L^*Ty>wY+~t#2hFuIaVN z|53`nEYjfH<e!x7URkGUPzmG$_>o#ES*-`xJ3S5Yo*&&+;(r;_R7-~iZ=R`;V zSX)#gU@YRDR<^jJ*kd*D5t=~t@LmWVyB_!uwQYj3C5+rpK~Gmscm^=);)0x` zvNbcMC^vboc)?h6KaInBXo3zISGvwp7=&)B5S+H|IKz;?t; z)N7{fFnxu&_-H^rxYhd(xWT{gK+%0Y5LgQUi#iQe$eXA=39_UFDN97rQlk%@R_8qu(g96QqXCQvkPycY7+%=pwH~ac|ze^VvE^)9lGJ zI&sNN0p8{Xj=88-+d2#{Cnh9zC`eQ z?Pp?VEYuucyZW5oUZCF@j2&uJp0K!-L zDZu;|WBM;yEdiq`Smr&%)gVF-JD`K^JD$%xXq)7OJl_@)=+ksE%fnGsia6-)MFE>w zkyGKfY|eg!C2U|^`*?V*q#`%#A%bjgaj8gs;GzQcEMsN%yM;Q-dpvg5zP_em8Vi13_FnxztFZ+&M@P#Ol zjhhvs{^5-FqM?+u`5YVqS{>=!lw>Z~S3S?nM-Ab%2MDiaFbDg#1W8}h*8tRZw6FkP z0CXwRSOD;b<;i_o1LgYYLZ+K$FXbxR{bkxkZ# z#<=mL;|gc5jT-{N;+%}U=`HOD*uqXY-8${rhLJP9_r}KHJIR&kx~N#VjcL^M=}>E< z0F!_ZW3XEV`I5o&xMwd2oOGn6uIYp%(Di)|{N$omumeXiRXrtuLcTgxTM@;UFM+{_ zmS)H@ii~c&R;{V^jy%id#%q=FY|r52GD>DwC1VmpS&t`#Ob*=!$YoBk0?y^e)xM!i zl-i{Nb|A9Qj0Hl|LNKO+$eKlqg!+ZKo^#wCvQzL@PpR^T6rwNGJX{Go=VyfT)678<4Hs()g=K<~JwQqt5FSWBA<`WJ@)NtZ+0%tz+y^J!J5O_x zI9xTM2g1V^P_ZWdKPo~CyLspuAyCcVYP3!;jBy)hpIxnirBFNm;VmA~*}0ZlX;gbM z)E_ZT&G*8^b4Q8MPb(YM#?J7m4*bL3pKgOb-QfSH4djv5sYSRhqrisK~~@miu% zd4#^Zv(ow2aF2M4P72w2A51N8r7cG~FB-M6%PCQDj-t@@ap_rg(V@8potWOk>mx1G zT0q2c@Hly^^ZW1W$oCuw0(KHJVlO}y4vhSWc3x}_ZFa>1CXuC?e1n_4v<7DvqCkaQ z5Koe<@zjtJOu|~nMQ|jKk2}Ay)Fax#)Q<`a(i590Z*4QZ>>C3bIv&LWFZ^XiWxy;p zu5mu6SlSGej9s%`+49s9^h2&eNZi6;2K!0FvzrhII+8-5dvrQ4Cwzplum;5K&c26* zp9KG=!$#c~QC5+j+U0X;{X3GO*Vw{SNOw)DZ$4nutfZ%7bi1u-l1zSe%3!CU}DuY6BE+)1--E= z%X!0J>{BX!Bz2fe)!6Uj$V0t9cckiKx2p(X-^S5{7al+d2s4iu(-2W$G^=7jEaBVnf+&Bfid!$RW0qjz|emG#mKF6>2>GeU|rOOJwbXF&hG^ zI>3?=No-*Vs>~!{)2y>ynA^kU=G9|(>enLk=8ZM#xqR{3FJfk-dhK3Os0 zuT5ugd~|~V^2-~t_LZAO&djs2&-&LJ;E@lZX(r$sg3vpMRg>aChbgjM0F6ot43Dst zg(dfPi}jDG2Nj5=I7qA8p*0+>LXnsQVo9EK9!g&*1kpDG5^|uhRwtOisPO7w)W`f)GHjj- zoJ9N|!(q{5A^NYs&CfTB34?Sr7Um4NcQsFhoR9)9Do;eb?FfXO&Mq*xf+8sFz>m=N7n-Bp<*Ym4E! zgx7r-@mgP?0%`8tBO`cfDLECKB0fU#pC^cX;`2=0`T#QZE=^N;JlE`d zB0I?F$+y$rLcj9ho|Go~+TtDY@;0(JaLBlRHmj$1)Fak47PT82^T0(8UY<+Q7O&p9 z&#{zG+8}(VJLOKxyZ+IUo16u^E4DVW?DO6}$ijpugo4%66!?5i2`URarNO59A6bG| z(aH}AF`7$hGF(*QlZDRG_ z;YU2YF8J7{A3L5~!I2`$r!kyWD=7Pmf!O5gH#`hCKoI)Prw%IxA5kG0mWdy6p5vER z<|<1|(_jR?3wB#i17+FpT%h00X&Vr8VI&Lt%3Y31pJ5PFUl4%D!)CnPJmq*+A-{D$ z%_b3TgKuUY7ft%jA%=+)WE|iYv(J-7aSiZg%j_@wCae!oWXC!cF2&?Q$M9t3atVa6 zK|@Z67d{M-uab2q^Q!;5wVWvvs(m_!CI*rU-aFwIAPqoG0V9;Nrr-CaTc62)YVG?l z?lp^}ZX3 zbLw@NTX;iVJ5BP82ym`~LO4wX_u|M*O~5~~IjjK^+1E6VrX|R13pOiCoWB6==QL8$ zFQw@NN~k*_D+ldVT6RY--vCHCW@SlQG|bvVmrn|iU@_H_LIt6K)iM0G0E3mNBo0k= zCS$3UqovF*2?OT+?FpWX-6qSn)eq3icvF2z`ZC#r*3C|ItcxG?G$(O^u z|1LxhFXnjM_hf4CGxx`=WTKHNxo$FsxM1rwVSQALOO`!?I8_VWH7;YG?k<64wXt=I zM395XJ7LOlfd-TBKJ%0#_GMoz6kym{5a+ue0I20KsYq5Aj~mDGnTtE0zGQB1q{m9| z`nFc-ipK@R=719rjrOZ8(!=+?7Y3_p6fK?Y3&>%K zBjx%;?I77Gm5wUBzye1WJZ1r@LVFVJ?V@4VyO|EB}IE+7#J_=&isOqfy1qt zj>{rU{QJKYX(jG2ZaTQXs@f_hH3gwFkfJpOFRvQ5!rJ4IA$%1R%(c-omK1BiMS-xJ z|0I-8gt5LBpxhpBGrxkLWB$Fryx8W-2UHsEcqF+Smdn1@^{>A;*eET@4^G6J`a65= zS+_6FF08Y9FmAWSbVfa2s0|#^%`S-F0Bo6uRbu!C)Tg(9gF_lemOYHe2XYVs>=v~h zURzrH>57O5%ZaqXp%rVymI;9(4$8W2GRz02oC&_VU>@%fhAii$=TPVev_y>mMb-#X z8FkuDkHyBY>xG2gk=ezUMx*HTfU4_m?6vUnANG%%vzUuRS#X(^@U0z^LZzDm*hB8` zyqc3dJun+(^aMl2SlQZWq#a%Yzxc`0PBKi)oC*jgoKkofsj2fVpu4j49fpp|Py08m z*rl2`pQHu`)IJ8W=ygv$b#v)_Y8EMyP z8;Lm@Js=G*B3fnB(guqhBO9{~xDf`zXsJjdPokb>Q`2QpFQ=93yN{ZqUCk?PIf9xO zqE!2?;7M=NHn{1G@|&;pcO?qi(Ye^|l5~e)ck|8I?%X?W*Xa(RcNRZ=$NdnqigvX? zF);HF35fvK!nN;FcatTMd8mDwkfl?q z7M_J}*9n;23B*u(u=ck3CVPXy7wpJ}pxc;@u{0wI?S9pisFV0rx66ak!S}2{nKVbx}nf3*ft!f{vOmNKljzGl=R$ND!KZ zD?NM|(~p{=WDm?i$N#<35ISF7j{>*p8Wen#k#b|vRTb|i++RLBzlu-aEL<^5Te*a- zM&YPhfDUYQkiQwBJmLaROWtR1YFD}f8^Kju2wO#9r10Zp~(733+L_9TddK=G3itP%I}zqNsf?+{g^W@IfHsj9!F8 zFP?SJ)3b${)<6bz>h>&Re|^2gssoe^3b`+hN?qLKyN#ukZO>F6_XQ%5dBf1v4bB3h ze&($$jp_&g6xHgRsFW!(O|)HM(F~HI`0|+lcoFEHXq_gTS$pJ&1AjT|>H+_Pm@~rx>yEZibe}xC2_3Knum@nYOb~QFXcx7yHajIB2Rsy0%z#H? z&i6WkC5|5L`%5hW@07Tpe!bj6JrcVTZr$@>N7p?GPOYB|)g0YR-7<1tTV;^N%u{`2 zsx7HNxmaw`5e&vS(47o$P%1-vOXc?d3wOgoJjV*XpO^7D*z06#L^UwaqHCI2CxOKh zs8qJ`5to@@Zj=SO&P#fSGMY`PknHxm(&j{IoiG@CIsKKtB{^oSrZHb61ZnyHhEiW` zXH6RWL4F4{f3UMOo$s*%rtjuDSXIE5uhZR?-aC7!18H7wF6znOg^-O_;48tKdA$wc zhQD~9dlkw4M=Ue+)U@N7F8Yeq^5}nr`W^f&Uz^=LwN2GWQt{%S%T;*CBXdFtddDr5 zxq`8{*Bwfqqv_&S`k8JB-cwN9BS8f~qdmKhHh6GnI~preiY13!YX{>?GXs3j8Pzj5 z5%NaUAA_u~qnT}2L$4}#O7B^7iD0}`JtwFGeVLtZ$N8(K7Htc};hHU1Q4fZm+)4@Y ztGH_&y~FMoSnQ^AUIyXm!eFT>DvkRNGn$3L7ogqvGFWjMP6yPbjWw3uQ(X)}P#Y-Y zLYIgAClb(=`obLyj5&sB_=?pA?t?Q<14Hvo|Ex!mG0kpLC{DQ1*`ib z6AKmx@g=UaV-WzWFdw>{X3VlOJ&-KBJi)A0C_i%`RdC~eOwAG zew31a3^OTANWx4a+dve^oso+~adWl3dyX(?HH$2B2SjgVkh{5CVQ_SPH|Z%^?6dok zLpH!&`~~u1g%J}}`4&OFeFTMT3TJBRg~KCshb@gdnn`H*i4l23`$}CPuNy{7Y)VO! zkGrg?V&bTb)+rznKtKTaC=~^NHbAeV8>D$6*M}L0yCO@lo!UvIy@ENX<7;8WF zGltoHFs2o1lan^+dSBBE1Y*nJb;9~8KFizdmx%03utKR%Al`t&5WrN^{%5pBpmK__JS`Nz}ACsYX)g-AGea?$=fK zI6~5}i;P*#F6rxK2{5b7&D0{N)yhkv35zhdE}Yg;8L9aF_kY!f zaZEV2ukvM`TB~T7Pz8%Xa;p$l1cLMpkgz@wyhl{%c(rYZxH~ODPw0o zazgA^jt1n^MODs`Qh@3gvY%xF)))hZ+mvzTMl0pi^?0;z9G4G_XT*xJ3Bnin#ZIgj z<<|)c1z3{V7L(|#`0U|NsewQo_@O)An8)o-I-RI(iWJ-RtcrrQMs#HO9adZp+oa?+zwTW zH3*^(6;j55Ws|G~?U(T1w#pDK11ucW$LnVy$%TpQW6i}V>HYlQujkrQ0e3v*ZA9`6 z2=)C}l%AqV4wHNK6)O+gNJMK@zc@(jN>vV{@sVOQ9+EEAe*Ozm z&8B>T;Zg;jcktr1(e2}v%)xYXLE}y+DVQ+W3&AS*Zg6<12T=Xm%nfHU6pyz1t=U@; zR-IPf*qtb$S>#~lW9^h&n{!l&Q~H3VS>Iq8UDXScDwZDHP*#(XnKPj{5G88JT+}|8 z9r>Yp#&yyjF>_Fz`1%&LGM!(M8%A&#Rq$N&C^=TO&9_++&ZdM&x)_aS46r1=)Jhgg ze_=7`op9nK_vi3U@i6k7HLwavjp^)C*S;y%oMWor6)K%*8Aa-TCkt3|R`{VEW*z&Y z*iKjuA)L3vx3O6uT$~8GP(&l|3n(O{B{tX|Hs`)pw?+^=0)x=_x|ia+$6bWfxjRYS z+pPdf4D^KaRT^s3D4 zzuGq2P|fKQJy#6Yv)$9LFUzf2i}>?=-y^QWs!I-a)_PDQ-tKRi7-c*NV(qFB&Q!>! z2V{R_9zsR#cbO?(ApL=aZV}&!n^gdMdB(4GoUHheXR$)3&e4B&h7L{Lr?K*$6Htxe zVSd}PcZowFwaTHI`fj)w)NKz1NE7d@+|oXl38@KHc7lBDG_)lH#5^yZj$Iar9NM`& zJkw8Obi-J*X6cn3W-gp{4LDrjCWfYD4jnbGVOncefL_%igCLT7%*zG%PI!J3$g$|B z?L0>16BQy9M`;1rq=m*8a8CL+f#R*+(SGt8v`(WICQnH3S|p%jEi^k*7J2 z$CBIg-_<=MxyB8#qYf%^`8~W$dlaPI&I-L7tnWvUG!tJx!zi!?yET~k31*p4?#nMY zKinZ0k^nCI7i=B8dHC&B*CjLV0sOket!1Z#2?goFG+_Yzh*+J4_aL?sr%e!5mdCo@ z=~hs-18IoUhiXsDm78BEL=L!H@RsEnLl8a>gYdUY#b?X^I)#X{av{NkzzDU=dU|AH ziS%$C8h+GeMbn-3>@SbXah(45s0@vh_A=ypWvp1I%!8+hvP5`OSEA zU#>9mL|Hw`}b*UP0tkeiXCf%X@qjX`lwGB!=POSMgvTu0taG77i9;w z1376hYGcIys8%%`UtmxtQP-Kfje_l=MCqITG2mt_exrHRtG_w+xI3(zF0VMNo?#ni zThLtp1!snLfEI@3Pj(yQ)-{HT$Rk%=oGLW&)%Y=;Wc$d0rkQe}&Tgtg02^$;>yui& zG;6xkoR=RKlyRXl?BU}9>Jljz`KyCf>ElxId=Q}rj~;!nR9dKpc=pqaS)0diVb!zp7-V)!HCgvHGr zQuf^qDHKpjd0pTYeb>-S(1Mswr?oRoV08R3*W=Ao&*e_CS-4=5C7b~NKLEf?e^F9c zs@WAPL=ZQD?#OeiMEikps!n=h0Y#z5Xms(8q7Nsl$Z_FOStrvW+d!~>cEpck%%i%_ zHguDv=fI%%19=)`9b<;>oGXIcw(jE1qf%J~vO0!*`5a15Pq!UQ*rT0WXcq^Z861l= zAO89NxVNoVA>*Ea43NiV4jt9HqPs&>Nj+K@g-oqJ#-fnm_pGSb?(28IA;4N#HAN8C zWIw(o3K$1d!O-EZtJ@Bx6%lF6Ef2Z`=@F#pVtk>fjtQE zDX3X11N&&rRA(zxt*Q&ZBdPFRHX(sLWinUj^{Ot2Z!I(0$nO30`kQh=+NVgtwd%FR}uU zK?=!PGcB7bYTTspC^kt1V~grVok<|$w^sh2inVPI;3u9S>2ua!V`Fm0YVY@bN%yCh zt+c#y_gMXoyVckBC7wn7;9L{u%-_M~D;Sd;q!w}K4G3WWl@Q-0oeX+gQ`{>(UyMCq zV9=0nD-^4%PZVr5(hNwEh&E5$3f2km?4RzL|Q>k@l z(r@W6AO5c(9*#j7nq2hkTO!dd!Oy$jWdkEe;Y8er^lbrIL?`yY{U3WN25dgJiR>+( zk>)HT9ef_fc`lV>RYt@kHd8)=w=b%X#S*$K=|biYJC@qADuWzrWslX=8>}>V6;SZ5 zf~Fl#I`h~;JRYF8j5JBde_)-|ADf8L;=G=v<#?0r=itr8VH28_Oq4U!&z2S7?puny zC5n=BWa=^o5DW^^Kfs0atfn}karUp9j3S8AM(!rvE!J3?}_5kqChOxQDf=?o&Yw50>dF@=6LrU?ElH3XO^CL5=m;>8B$h>cm zr8H^902}oE?{5}W>$^ww){LXCQgEs^yi;8m!3i_eL4l6Cs$t}yg;osyUx#E>TS5-DX&*==w3iQMiSl0S`8^T>t1z zB-JFX!G1Di+d-#J*}Y!(ZZBsijE@!?O@iqcfddToJdd*kuYd*A`hFJRtLeqf#=v@| zl~9NQ8w%^)|}r{=reSV^da_2R`@ken=}e=9TD5c*OT z&yP1*|0Dci_~_nt98ZzA7!({1eB+j=8#K;e4V|0&BS*qD*I{j5(4m26i3I;;UrsHx zrFzPLlQ_*W*gs`c4c60;AXp_iCx{n=h=#JOvmB-5E)1XAgh**&iFJBpNM59x*5-=C z;laXOoDQJ=bPScKDN>4bj~dFkr6Hi1LqyC(05|oiUh&u=gu2J)^SZ%}r4$>_@TrN= zYDCIO{Hkm3?oYg;GR>$=+@F#!)%H(g7>{~;J>xTNUcGTB{Kf+eK-2|+KU}}ImG^A5cpQ-&fwYA zRB9iu(2Bx^hg3Z$VUpq|fow`O&nKWSWF$KUm`begUldQo)%SegwEVWS1vsZW zjW#2d6O<;=Rc^$Zo3M4tns$!fQWK@+0b8DWpUWr6eg3Tffp?K zxZL^Ryo!t-&_HqmU7EBG;bLW`Zv=~P@{H6!4d)l%mxO(8bKS4?{&sl3&!caftTb*a zlvRlpvSTfAdiCIR#@s6q4JhV}5)3oQ{L8UFDw4n5?q_Umj^qYdNH*UfK|um0wT)miDF)eBccnDLvs|1@~ZZM|vwfJZ;a z5Rpal!XQZkD%L~~R}bBE03jygM(<+KW#r~`>-DYv`ijFv-7v%4mmk8SjuigsTvMeo zyh7Iooa>)Y}B^Xi6S-nrk*M$lLp$$$Pu%1GyQ4PqzAaVGLq~ zZ^Wepw!npi2FzuTJy7;gG5Au5GU z*{lBJdPeXTWJmpvTnfH2Eh#>KKSyCQR0PL015J0Lb!?DQ4RSQb>TjNp(+fLz4q#p@0pTF`eYmL6Me-DKQ0 zm?6C^>xd4UGyMG1q-L`%)T-@hIB}I400PMD6PC@@xgip&1gnspn_D!p8@uJ6+vygH zFdT?;wDWj+tv~J(LDZFvH2vAIHvh}SW;};PZmWrs)KMq+PXgM7m3f!Ov^l%XU-EA~ zG7hvWQ(czwJ~0!T!Nor(y$)>SOUHa`Voq9`R?Hj3tNI$5PvC*`EO8H8to28K24(aK z(vB!BPt(=$(|%)%bKVn>J9vfye}is83vXjeNlDkM5?n9yK2eyXui!?8@~~JNDZWdy z+RrPLspsu5>7i0-PvSvQH@A|-(PkL*gRPLF@BvyPa!2t74Esiz*G)O0v zHr;a>l@7j{UYGkT32G&e`Byt4No~J~p&I)#ePmwkSQpTG2rVjIh{?QlV$0Q98^F-R zY?5J~m*OGg(35uzC&qsAoO}$fbx|~N7P0n2Qh^NPz7bBFdm`17gqj**7qny&mT_e) zC6OW`ImPR#Aswg74uS5H0&$5PA>@RDJcUeBo~%RfmFj%Dx|TCm@A)x5B<+CKx+ zkSKW((&U*%YoVWjzFahM=8D3exg>5I$&LzP+2bt=HYpx1_U?Aplu-+3*OvP=!U#!L zuXx-!P?zC>``^_`d8Qj>Uyl1cEcw(;KII`vTG@OnvH0-v`E0)^v@KOcE9~6nb$G1; zzZ%TvlZR^zI+~#*+D8v(HC%{SNGfF}f4@O7(tzF-xk*Qj;RZKf%Bc?&|48HlCV}rG zX3_xqZDQr40av@p4pasw+9F3#zY`-Nj$R@^k(11gezV(hRAhKBQdmXE3K+hEk;P97 zj0#_4{JvUqh&1a$(aLRrQ7J5a{-+^L6~-A}BfKEs2C%M0{?ydvRm%bA)~ z-BkGQGfPB`G z(vjtJs$t#Nc>3dr?t*pZKX@e{ED=&KKt9}G;pa#*1w4F_z8I9yToRwQM{m*PZdrol1)4h)&n;5{KFneb{vD{d%$Xp`e_zgtNGD0rFd}v$Kp=Ph{Ub7%TT)9f(8A8spQ=iRIlEayv^RNfHBkr3^}*y$hO*|7vp!P90v^ZTu7LjvGm?=zFIt znKs3k-W&G;lt5+H%D*hXUBgh>O|}cQISvnfAJtD_to9@w?}?H2n|&DbUxp<-jS;xe z%h!<@B#s#|5aEonVDyeo-n&p2(M1Z~OF2a9 zaqQ`Ak7;QPwYc{)6bUD)x3{(oNTwX=@wv-UAndh!xT1|m#+gDO(_TLjv=!jO#Y-1U ztwbZU09&98Ew@7%BpTzz8 zDUB4r(2PYj;en9H&cX!^@uKo?3zC-cAFF`$eJ#)Ou~zFWcnL!|c)DF7wXL4~&u4f$ zdd$`&txYV(B%!p>nyg;i08N;J@01qq2->57K2ZRy*T#PX27}-m7pjOyK$|cl5beh8 z!G&++L>{0-k5iFbu~hq+vzdp8RZC9wyiRn-93+sAj5tXsn2z zlX3TgBHbZZn#FiLTYO6a@BJzX29ox04Mwi#hwykEbo7n`9K*@wDPTbie&RQ*i48|ZUpUx9Rh02@MxDLV7XUgXlAT$CqPJB)oI_b zDpNtBMVVwlIH4$+oE|CE|2zMIHJ>t_@8Wk;dKkl3wyy5sAL?9`ShFgA`jLvlX&vvC zrC&DN1DxsQ46F4)`vJ*$a>zNtymOVVbQ$SzS%b@%%HLFGmpTD8AF5*tdh&J3uJ5Hj zd)E_t6(Q5QP;n=E3{{AZRPKGyZ&Ec^jyp3ORR##o0SVWuwTI)i%&r6zAFIZ{9kb!XWyUIOmyBVSdjA%b!Sc@9T+O+x)l zt6T03-S(MLf{hLe#G>Q~gGuQu=`hCuxQ~3COgEEC%MACItB^f?Oe^64ZexpE6?y*~ zPDqWQ8T@Rc1k|J(g6A)&EG1~qD>E?nJ|MxL8Bu@##`XUqm*hgsk#jUj@|J>d{b;)W zr99Lo@f~+Z!uekA4FfoAj_zw$DPNKzSnw-}c>hL_#bfA4&6sS0u}XCry;5vA4L?8n zxxHp#&$XWQ1s+$}-WQf3)*fftsWo&Y;MbG2b)#t|T}12l4fv3xBP8OpT2bRxJe&z}*D z@C&%vAHiBN`2FnQodZEOxhOsb<5jK3o2Y<3roocL&@2(IOe!ET4ad`ePyy_p5oowR zxg@+hJkaNzsirE|a3}^Qd)PvNRvA-a-~aZln=kc2kmu?A0rgspN9_wGfIxw`Y4)W%R~1k28h1isO{#|XHRoS>a2Raj*IaoqXNhqm#GeKki>cg4XtVXws!4VeMlo+s zS(vb~Nj%i3zY&(i6|8dNouII9WV7x+^6m1X21j_n>c5VwY*Z*dhvK2%*Bv)_=f+U} zOmzf>jgcwdFdco1_-o^KW%>P*4l1J?#7_&D7b16>h!8(aqPzv+rhW3sNv*x%DZ|p| ziK3!IS=Jp>?v>(k<)kHhD`h@Lf(yuGqnv203u4=%doL|>kTPS!pQY%8mY(h?rags8 z+};8vAvD*dbdUJH1D5Vv767yE-2Hh3ay-Szi02FwWciL#w8yib@V3pW)L&mty8~%% zYBaY@4q=so;26oS-}0cqKsj@_`yodEH* z0AbdMK8&KV?D^X`Fnb3H$gRe~u_|M29_b1Yk zx4`veadulZkK{N_orIzW?F8{|g?bn1ipALF>nc;jS|i2)FwId{C)3FfEV=Y=4MxUq4r=Pd{O`XgE=t(R`6t;K z3Xnu*R|h#q;Lh?YBq~A-atQC4+>+DD+s`M0{juf}?(HYw6e^laV?6LHj^T%8*KOpr z-$QZmR&1>Wxn3YDj23+WsvENKtK<-C0Rnk=ZhE%8j=Yz`f(WUHw`=21*P%nK`3`Lf ze4_AX4&bP^wO!8M!foPRBL7vc8UfvW4^80EH}o?NO=sv$pp=^+bzWG$pDC}G2JrT;(sk+RIZjfe z&?o9LR>gHnDT_I8q1bxrfSzm1&w14H%A48 zgiof4{~;7~3a3G(^|Wphe>Dr4TJCWk_F|hh zPbM?8@bN9xSB`qU+=LrkQLxxCmlUaiH%)o$g+LIa3?f_m^wq-BI#IYzQvpbiqNHFg znl}eYbdNZgkMe-ca3j7HcW^`C7dsDj`6+Jegz@G0V<}cjJ3W_X3*B&<@^3M69`s%n z2#T)kZ~Hz?oj)149^dm!LgWn)tO~F6fqlP~wBLT;7Qm`8nLTG6?#yw)`7B?=0BM4+ zuoEp3D{!d?wFx1VG8*;ZLrTD5>LT>3f6aNwDQBu>17_oavbe+CbbtVYY2aQ1@7r~t zk`Dg?DBn`;M~#-bEyUwsxh&;!lU|2r>aQlglCQ&JzJX?i=DqmXzVh(&V{{4F%Z*YaTh z5VA#}8Hd!*|7E!v)B06^ zq2?Z)5qqZ%?JRq!rQkeiscMHV=qrA(>3>Gu!xq;`%%x`1m^~=OFP+@-Nd@iXmqC(n zQ&H3^(G)e-=~Q_8LthCfa)I&cn&|IrXSy)7vgak0{L3G2Np zmrw5+Xm?m&?Hfwh*pZ;9)z4D3JOIgWsgCTME_Bj9=BR{&usXdH&G#A^Wmh^#D_1}1 zG#Gj+LjKWZLxL`K*4)IC0SICX?r%X0DnRHlBHUj_$~gjixZ}YVrK)*^lff`WY>XP= z(Kc#jYjl&TmJ~CFwK)c#03Z_m?Kwsp4h~Q>n-uK~!xGe~5$k9*maZ@py^dGm0Vtoq zbDU{k1U=vW<&c};RcUH?4fecU>^K$sFj;$2eaaDE;B-SP=q`gZLf6*%m-SI! zg|%mgJjrI;aO8B`h13QDEr2H1ZGji-Pix|@47#%<&b5wL4C_64MKz>4{*73q7Ftew z#j@~?QfKn!5=D)O#;3ebRnEkCjOJw)A_?1GInhM;a+oN zglZ8B73B;Lb)?dh$h%d?kGzsQPX#xONf?T8C2=_SrsG3ayW-dEj~|1)sU>^2P3D&S zYIH&FZ5>&*gvFS05TF#9e<;E3$!pb=jy0YYdRp#^^Rs;dqKRoyzMM(bJ@mBsg3) zMCqfWCcVLkuM@v5S{PWIemDk6$7m5nQaY*;A&>HwD-5E}x$-(tl|bzj8U{HW=V0Sn zD%9Lc{v~z-MlwINu><|9GP`s99q0Q3@`5%i)DbZIF|^Bm{7Rz}9U;1rK%nE!)Ln`qS#fP#QtCjoM9%!dd(|>RT zsV_fXo8@$%IHQlzRUUm@Eyo2M6Z2Suy*6EkgwNs|3z1TTXtes=2W{8e8_F)}OkM!H z?P2*|J>93I=~Uh#5D9k2ZA@IIma}s#pK9*0;xoFetDvDJ)+3}K;YkQJ9GFOe7iR-y zrP-d+uEUrrNHZ5fQ~s;0O?lBvB~WPRTycX?-xw-@!ChvU4pzH_*4F76j0)d=cX zB-g8~vusj7R$yX3-5nNj*`e=k^r{TyLgCdk_fTsO`&M0u@1+CUL=_$Y%vtA21k1n{ zv3WhF3yjdVP}m-Z>1z7@^X;-CoxSHIAPuGd=i$c4VbR<&b#xO}1-wA6%uPwi<>v`+1nLJ)BAc|r>(!xgTRVQFA(Co~x3joLy~ms)XH{73 z>>ZEo>=9)Pm{E);e^{&p-Q&ddVG( zj|!Nrp?S-os|Z5na;(0Y5A|0Zb1RMPjl_$2lo0I*Z)ui`PGDi-#d5W48^Wz|Q_3GA9jlQOR(QI-{ z`vf6$B{EEm!8yp{j}-?KwJ-q1Tnk(bw&wKpJ(YfQKg>{12pAkFJD2@*frB`eW_FY@+n3qHWKy20Dx(GAIUAr4m zUGnjeHtsGL+lm@boaXD1Jp6>af&0K;r-Zy^zEis;1EewMG`z?}um}pDW3!brdtQEC zPv>q4%IwrkY1{?C13!$*9FbWIk7$7hp+^9-^cX zEmv`H{cAm0*aS0ZH;i(1o#E8pG+S{sp9LQ63j;GPojTU)b%bq=SnJGRnm&7!9hbh1 z8JW6*Z@z3lUDbj9)roQUR^_qSyGU#3mdQz0_Uke7=1gaJVJP*K9937q4Rl3TkPl>Q)j9+*Ral`3<=f{*m#sx&Am}{MEin*c@80IbV!fOBS8{p{XLC>BN z`W%tHdi-ja^OuOIX?9AQBUg>oO8ik4iIZ-N8dsD0h0FW5N3BUxp=o9zZe|Xq8^Zy+ zq?ayi(SVc$#dtsE#h6Km^17?>4YAHMZL))C<-$a@vP4jw_1suuST-^S96yde1@HT$ z1R{Rq@U0;9qMC|!d;!Mv7f{xh+x`x~ zUX>e~e82>=dP1BaA2F>Clq`Sbinb+b{f+iWYE1F=54`9>!7Xeel=*_*2I1U%Yl=FEgJtL(=$mhjJf=6UR{Z+pmXCz5@Py7ryM=4~l` zSh)iX_eoTXD9(mWl@5b<-kfAPSKACqqqpLkF61KYxNxLVTPl#G=#=fz6&mC;eWKG> z1M#mj_+`AV8EM#9f4lI=7t!xbmC9S}kf-4H>o8%urS}SWJ6W!#RY)j*IU%BId%<5r zKVE4O%nOO};or<`7ukTU(}lB2WIf^^nCXA6*5EzwC)4%|Agl1nic&HHuR$t<&O(u~ z&9Tu`H^f*=c07Ua&ot#QfjuB@`vzO^Fw5r>zSTFvlByX*JsJ{VaSFYLsR##iAPT)bjo0}M!$E>x#%2tH~ z71v+LX(2YA-%?R7Smb3w{@EPbmq zDt!~TnWi5l>ALW41GQ0cNe?2u)`(Xn~QjN|j>poP2hFI-?Zi1<>>43hwtGP)xGzizG06h&J)9j%k|n zamjt^Y=rXezM0XI&)tW5BD->M3e0~^f)~ z{D$c8XvleVG1IiXQ6=xE;c7;Iu^oYOf%`ziUM!_aO8UU|PO|+mhfEK`BTGY?(4y)T zrA1#lcy(i~ND?$b(5oMk&qHva_G#iiZ*H;MsbP34^N))hgB5` z!Sv0h;jV~G60dj&FS=2C4?KqbGzo)jrg7X_jE58V553FeVM}dDI^*QGRw^81;ECRg zP!+6H4gHu3`_ytFs9AWVo?NuOMQ~Hy<-oamfWDceV+dOf?4Z0!+zjW@_3Pw{xfXX- zzx0UlAh9iPe-wh|;Ay2;fI~V%FL?(;31wz908Q>(ObdY$3+`hl(CQp)dX z#Q-sWyHbh`J@4gZrmLW?QTlS%`5tAmDSh=$)-;ZmKH@dSJiO;8xaP!32_iwdXY+6r#wwfcuMI87t&OMOgfiZjRxbw+CyvR#=6CWUj4yrm zcDpG=#oy9c+9iO>*6D|mFQTfiyU30+tki78(6d_?mDRqe-+4q7*;-&_T)tfE=8qno zY@Zr^bd_sD4m5Rxl~1?2m8G++;I&zElwimR5UMBs0chJCLA$tNflOlK_2Te8dq1Os zhoF2#iBdwZAVO6hZ0~gp&@Q1=mzXQhUadT(>9=H=1G)k>m`oNMEP!D<&^fbahlvZd z;`NcZ;dh;^_Qv&zAw=3KrHQ0^M%QL~H+#+#lw7X`)ot#!#CY)FP#LffLW;UL3gZUl|6bW|o!2UcdU zW86~+w?ipHI3Pp+T%3fAU>L90h(A4U=QVXjlrg63x$Y<7*mg`aer(=PUe(A^lkiw3 zT5}Zu0GTMLU(wVvS-xO$n|w4H zfMN-L^o@5Kp0IIqA&ue7S2_%%)BGrU{ry~J_cV&geQBY?sJ?L# zL(ao{WUm=Qn^Yj%9~w-0>=VzIf~}ReT1-COXj19)!?trsm@HSqI@N0;I|A+E0EGDU z4++vrL0QPTlFfsNtOvllM%eupX37}jR($5Gb9lV!2mWZFK)GqnN`}EwEREBZF@r`T z@6Q7b-f_!R66+sz_dv z263@EWS@08*oyiB4vM?3G}cBA+R1t-ss4_{5QthlNvP2p>#NPa-9nk&@G`>T=};_F zvo~83vVOplUdY}un|A5>54W1BkPuVWl_tKM6wg5UJk;)!??B+pd;B#`ajo9E((FQl zo;;{YTo2S%K3;lz&wA&z1D-lPU8ehT0M%_uzNX(1Ut`3@XO)JI%!5Ibz(e`6qI~rZ)yh=2UiqkH;b5# zvlUb580MfzCoD|53_BY4$p@N=ZwCc~#-E?c>X+$!FNc>ZB2Q66+j-J__XFvPQyki@ zq8aeJ#GI361(H=&;S1J26={#*1^yfC*NugTnF&c>AJ`E=*dhXoS1TY7EJ)S1`FdOC0j*7u zOu)5D(?XwDCh@;J9wcBPq1OgZDO!{)>I-7sYh&vB>IS3c@qjT7n`7YYRDiCZn(2e}JZ|#d-naN5B5c8IIYg*g6vP+j zBEWHx-c`{gIW4TT?B)IPT30avJHe2Hl$MrbdDko++vk8WhG88V`kX5fkE0foM9GiT zJD(P40?aVG-f=Sxfa+Yo`z=X0)``x?k7t4xF@)C7)lyp>EgSu&Wq(cHyU%?TP*$*D zhrU9k>fb-KNN(3xpV9+msK-KV?-#7Y6kD23>Op4p|IqGBk9A;Z~eEqg6hbEahO>j9XGnZ*3JPoxg?!!0On@@ zPvavvNu#7GN1_et-edPMPUNEV8^Cp}%ZTZm=X}r=6;lrIt5-Mtd!YSOomabdx-Uld z`(!$?E$PDAv9b2bOd;XVJW*EsMUHp0f$4z@6xu zC>wse^>})pe^3ueUd2)z!7?(a@r917<0n#e!NcOXzxo&PXPAO z|D*;Zd`NiYdnmN)J2)l?v!t1I9art6@ohQW7k}n!{D~~mxNoyRwYhQN_UdRNQlSlF zR^JvK$0f;CNUWSH!_yMX1OfqWErh!^B396!EAutkV+W;JZi5k=<*!7CJr|mb zRy7?2fa`H5i)FSP_}gVVE-0U>lwv7HGsCMv0mpA4SypWW;f=O+ML6k=X+155BY@^$ z+9h(Bs#uzMvI~>jk54v64u7f+(~yl%VSSPk=N6tjERbB4jTa;i7B6@Vkc*ib3z*@0 zEd<}EOx7}Bcfhe`?<9g9%Q{?V(?3RqpLZX@!zb0qgm z07hNQWWrNG$ew?si~}!aAY{hlCaunoJDpW;mrgi+qNcbYmvkW@IT#wgQa(8+Es1Nf zh9Y9;w&dS7CnW2W>pE-FKwgU(Th9vTWG#)Gc$!j~a{&iqx*`kEMCjkX%E=wH$`?l| zcK{kMx1Rdj!?z%Dn1f8nt6$?Yn!IpNA0ZEltD8R}ISGIWPhv`1Ef}SzZ16Qup~a&z zQ24RVtIY(0R4=Z_98gnxI@G5inZgizmW+$(yTT>_KhECDVKcXPx=;e;H%bQXc^~GK zfxPfa*Z%rkKox8C%PkE&jRYC9bnG+JI0>L24wludu$O$pA`5rp*rD?2A7wnmpM*M( zvx8#GQIfHTkbi>5Lo9miWaV=ONN7*-x?KfuVDdQa?nwhCd!Nw4al1%pT2r=$QIGNN zD_anJrjpY;EYMLk2&%{ce7PKv2dd9VI9jaR+%8u_COB$DIFlvW49^f4dH;q4k9Z@x zC57CKbPdNW?=fyL)(WW<0RED>K%MIdKeI!fG7R%ogb6XfxzM^?1bEe8hZdKdBn z(BFS58`mIaJ!rku&X>SgM2;y+Ph&K)Y=X+_Y{tC*)FJPgylMK$3E+ZS8ew5WY6G62 zJ)DWEHI(BLyoO(P;Cl|^cs6f*8n-66XPqQY9Z~?f(NhEG`Jdg>;XMW@N$QL!9m)^G z+sVCc6x=s5`gdP~gW+Q>i3Kg(#!G~>g5Tj>o&zf1P|Sz?Y(9hO4@3&yol89S>=(cN zD$69*{$0mB`kH}|HZRhnHD^5mmP?}$u#i?IU2oX~nI&a=* z`Q^*BE`cETi^mzAU!sLjq1_YCplv8O1ZrgTR%DEy@gPSSI2KWil!#5TMs&&nYJgtH zQP5u%-ykF!U4VPXi*I4l_SLxw_TQyK65@UKS?6bhPf;6^RQ*HeuQs(D)EA^45E*XT-Qfd!PW^o|1>cXl}&Us+k^k5RF-!727l}y zZ%1f0!e|i=dA#7{Xfy114O;3@t?YGG+q~2NjFLASHUlioc&fQ?jZ+2_rG&bSP^C_E zXipp#CtpzVNuQJ|W#c?6QF=_hXpwm+xE)^cE4DOL)JY8G7vSm7Vzxn8l>FrZ1&;>r z6LKi7w%J&yc0tR4*}<-eVgk-LfJ5u@9E=-pqsq7_pUr|wa7`=y#A^77F}!c=e~dshEG`u(1{nwaH0FUUSGS8ZyP!kDsN2 zuhaZF{%h}~mp*5NVB`{K&`Vtx6Hp)iD?l%_3Rh<@cYgZA&0ibOBz#CTEPv$W`u7*1 zsgxSQUfWoxotVqmxLz2X-?{hg;6ETG#S`RhAjaU8*?i%`XF7~KOfD}N7??w5yiTdw zTYdOk&N9-vyaqHyeW$JPyF}eCZ7%(5ESf&)n`GV7aaH6qvt5*((rDUA5DXny(QZ98 zwOM6aQxyak0z{`&E)Qg4bajg`zyEZ*Iq7s(P-3>kC$nV#w8KE(OGzBk?vPxdpNski zL{lW61vRmYl0$b;?570-bl7imQ7H6H%?OKNO;MY8zStjQtRU z|M|>C`Rk;3c7vOK(pC(PzV&?n|(0=HanZ@oj78y5!aqWZU03s&sGXCT~ZXI{9&|6}!&K_!|pC zAqAC`yfrdUYY;WsD~tf>1y05Q={A#?JrKUmVA(J-^k%shH7MLmdYqQFYp)2wJsCVH z(PGko*lFTb`{VYyGW9cn`$Tb5A$udW5O=&;zpwh1sh*WhX!$yLf`;^K{bV!@g;(Z} zRCSX7WZI$%IGW~bJ~k`lMhqP$gkCezVi2pIt2E&DXvpFF_NNH{845kb?ZLv+AF@ED z0Vcd>>}bO_;;hi6t?H7pB`Y9*R7u1A=Nyi}G)ZOiR_}mx`8b1LmrwPX<*=wyI1lay z5L?KXKOn~)<*2=7ys5KqS*i<2fK;8BXk{>Ic{jtv{&M-MYg9FV_-vwr3}-nCjQEZj zBQ(Gi3+w`8Xz^281dq=$ak&dOAe^xzUOY?3fn6t%W&dKVBO>Rq{47t0O=GZan!idl zmO&ft_q|R|;{8Ld#_)zrS|b=IBV`7N&P?g<;c_@N$8ShbE~Mt2hQ~g5#gT(nBDqgo zxU`<}|1*C<7K9(2^`NfQc1^s5$X?tJ2D)5PvtAAKA3lO|artArbF`96%-7hhD=1#G zKnfj8NaO9*OnGEq=JMH=BNhI)_mtiC2(*z2wYUs$Nhvy4Na%y!uu<a0o>#4;ff;Jm0 zIjHtjVBESn)tHdFC_;lnQ0>}AtT`p4y>Gw}jOpYzMwB(AAL*r9r_ucANn zby&sflkKLmBc1mhjp4U&47S$?BGW7 znLxa>1Q^e@Pn^wIsztIoFeb=t(I&9U=r?~6R4LzriBYW zgog@8gUhIeL{$Lb_6ep>Tej;Sgl4d91S|F(boudFLT+0pHp(9xA#jg=5Nq#g(Cs>R58x{H$c8}GUOGqD3kEizHF7pd?a>6KK z0}tP4qmuG7yg6Lu>pMn|^;w$Xe}Y6IsT}q5ADsJ*l8?5lMOph3TPd=4$_8`LW4Ie0 zt@{-SF9$bY*dP_#wxH{IhbV=S1_BKGa(qsSv zK>fey?1MS+6H>742CNw|E59-(dfU*UXS1vCl^;zu-C6QqnIDY^U2km%x# z0b)&%S{1+MLtKK^qBNA@B+Lq;_WP9?!c|2ONc49k%|M7(SR)}u=3Sx{poTz&Na1w3 zA>Bnc%L$xH2je0KpdZ8;Izd{Ar}s2Y8&_2w$MeGHWQQ0Mc#F7GvK3}DI$Rz#1F;8N_yR&4&aYKAeIqJcH5Kd6nKMR(U<}I$ z2#!s(=@3u7mtMT|dhSzL^tJZ2^Q1GO$~MRH{I69zu6USZf})M!F5A?Qx=-0G|cq^ES+Zhl^ZZT_MEGr^H29 zmgR)8zJY1w0N6XNO~U&YwjmYaEO`2&+X^rDy(d^En!G81Mw^xq)U)VLXL|r@)T?r+ z_6?c6?4DL3vnFdBiB(7~qDY)bwN%tuekby+?ZE0&C2aZYGTHu(Ec2~o)=>X4f=OGk9v7l!N%-bEVS;x48mA~_pnl3rWo;&sys)}L$>Dc? znK;}zMm>ZE^b)W=NdS(qY;!$j>=>+VZ-pzml%mqGs}Cl213B#SIN?B2We_EgN?n@F zWyPx1tWiGH9XkAa4tX<`e`08r0l%gtegfv1mU8jKXOMxW4stggfF0~qJ)Ba5yM@rQ zi;s2GjCF7VgZub{X{~%D)|J|?mg*PD=CQBj^lwbT<@|niYp4$sn%nN7;xP4rX+zyb z3ur{p4z#K@n<_7~o%JSb_}_TdM6acd)SpS9mn%6PeqPm02eLN>gw%&ZRyEErs5;e3 zQ@{ie6xOvzU*6C9jSYSQlw$_g@jnmf?d6JEtzoz={P`-Lfjo8233}hoeD0E&`hc&v zO>eD!y+*5d_db`~(VevC+>v|+^VR*$!`XMi)u74br1yUq-)^cVweIfeLI?JmN1&yc zXT5p;#P z5Kovca&VyeG{g~T{Q@Pow(5%5;SjBZ=&*Eu`5<>E!Tl8RG>lobBHn zY63#0%^yTP1jzTZy6AoqB_>9(6>xB-(a!6eNP1$y%MGmj7f19JL~s*FAee0>PR~qx zT%Ejfc37izaH@S3P#tw~jteZ;PK#wbYR>nG1p@?vjGaym1L@;FW#t5t$`};M*V<8K zXIc|px!W)$ndhwB(u7wZll?0+QSRqNh?on>P0GTVR>UbBh|N5&nJkdO0X46~q?NH& zPc-N_f8VmCYBce+!jzKRKnC=5<6C<1B` z(a!<7^ua@4d~YlI+Pr00g=ogG(CVM%hg;(_9@g>hC^&P?3MLO)r?@r8opUi6Y!{v^ zjbPiy+vGm&r?Ut0!2&b{OdS%gNp?xm&)(l^V5F*yZiJiq%CxHXBmC)<|ugU|Ls&3h7$w;IzSXrI!~At!_+aai@`ZF zv16u&u7Y{3>XRU;Lk z)}Lo_M!!qwRyBWGI%#Q9-X{uh+hbm03o+7Qft1Nmd=XkDG6tLbSuXZfOZo@B3<^?D znSn6Q@r9;sTZ`2`bG!I$uCzH8?8?iK6zy#LK%E9WvzimiKHWT*@|goyXI5U_@YaC= zhO7#kw!WR7sn8te7;JiRuwL-ubOWX_BFe$jaBqGhTq4Fu&hA26D*N^sSsE<={mvr_t)pp$?PC-$wU>&D5M5xl^ZjUDPOQGO>U2gUY`*bn{Q!p2@j^yCvSNcI zu>K>XQ=@04`J;#=Lu=fJ8)pO`hM%u?^+p&8uE<{Wrg{AkRp}*lKNgZtEXY~B5EI+* zZP<)60B`ie?b~`kK>`pZ6o?-pSylBFec#5xi?j{(P=x&0MQZey59`_7iPE$@p^35s zDG>`fiP!^GNPVZWI6uho9?ol%>g1NG6v);}91=GCZ-{O497KqsEBH@{(LvuP#BRZY zyUZG~W1?o{>8NgT)Qc_jYUSQN8d<{?q7?Nw4|l`uP@IH$9an}Cl$(La-j9?F8gin< zXw#PnAx#32`Zo#)H8sI>?wpTh`DU<=7sw>C`q(i^HN|$mMJa!Z)`5p}sD@+9$^Jbiac8UbfMFA~>`4mzk5&mmTErW>3TLJZ26?5w1>NunL9^ch>q$ zDVcv`^<73c4%?p_O#IUL6y6?`3^1gVvWN%TG=G7dSNA9_SR@(KZ3~< zT}H_ugeBQ`IFMG^K1WpxA{>w5RS?w9;_CT!O?_CMy;PxQYb;ot8fmCkUGDvx0CJb*}8giCAxd|>PIS2CBh9i%} zk&Ppu*o?c6COwjv{Xa9VuRAll0Z13?ZHEKit4ncPCdmYCZ%PYBzLf{amE%7F{E-Tt4Y^_Xgfdkq-sJVd#E z8NjWBC;L4v+t14Tx{@*wh)zgk8k?kp4!0o^hDBLO+fGoAopfRFa2`m(yIU6dk5_=~ zS=JX9@E$8Zc(^r5+m*wh8%8`-(sp@m7(j4fyV(CF*}C9dhiTD|-X)gd^qxU@z*J)q5cQ%3BA_LoDCPf;LVf zf#CEkx{u`9|I@M11z9B7yTHL}Wt9^=)l+NQ8Z&U6ZI~evoU{+~XRVbq(ZlH2dHJbq z_i2D;VaqLD*yrq-h9$RRu%{^6LgZ=(b=&WG9K=q}L3&gBYMaOI3-nfSbO%}Y_?J@C zt9rO2dLj}!geMA6-v`v&DDMx2)GDdflM7&M8d6(<{g1H>$8nljR)qcb9R|hHy@4V} zdz^>LVKPh7sR@XWORMD)t5<+-+^>hQK)?@iHP^mMLK7cZtDyo$M7 zVPwE^&af5U{3dJ&fh>|7DdW#AgBq{H&dNrXxFR8-7xd{7slFxGCYPON{Y8eXazwjK zB$}h5W^of}EjxyCymwB5hwayr;!9gC@AcUFC;;?0>T1uM-ne(;%z1tOtg4K=L%jpR z1jk*$FW)a-fu57>C$QaW9kT^_5JG8#vzpwZq%7^^s`}=~A zK_|Jf5jd}vex@Sq)I%>L&)_d&v>XE@p_fJN#kI1PCj89&a*&nv11l?~V+NHXH@vW6 z>)gNwFaFH!$!M^wJKq5+7Mh(}&chj6-3(6}y{*p)x>>xpg4u#%qs)Z%@j_Tg^Cz*0 zoqOSKVlv?UWfzp>E8+{Q7~*=`)SKoh~u=bOc8 zJx4cpL@!5suRad@iwbk~!Acy}*B>2K0oB1`@QccS8)uJPVc$hk5{evKA30r0I z`mKVQVi0@;o0~wP;d-(zs_ir~w!_K>)Vm68wTYde07n)R?yMg0eDYSlh8Q>Ch32Q4 z)6NmKZ8kwl(5vvjAh!AfSP=Yhd(&cOhm1;~B_Q&cQ$IvRAh}NxGcHuX-M@HyfVB#C zZPj<=;Ig|nDn+nwH)s@MR!Wu}1}<0F{X)w8rf#}9=GFp2YDs1--bP}r_9R51yW5Wf zDzp|Q3El3q$`w&$MWU+BaeypdCj>-RP)wNk=Tr9bfLkJo=7hiXPK z_6F^Er!2?&o=7JBE$)8PC_LUZD78n0m*DG2jp9c0nnP2uVh}c+!nWHrlH@>NJpU0L z|5dl%Wy6A6_sQ(OZeSesHg;G$4<$8;*eT|#048;@JOu6{KNw|1t)5K3n3E51p6TKg z&O%nv>yIg4IiJbk?+Wo>8^YE2Aa7*AGhxr9eWWUfCMnA0T^7`Q`esED@ja*kL}AGzC+L$ zz{cM6x=vXs@9$pJsYOGvo{L@N+=?-`fAw@;3fh*)m#`2vz>YsdS!jcS@mh|eFknj{ z^q)FR*rQ;+kl|o)_OzH-6q_qVohf@S(AKmQd7)1Z&-~o@j8U-ohYo59N)C6IjG9M3h`f!X|k)q z{7Fwe;>sUn5=6bd+szLaB>M79cmttVNb06l|NgQ+a64`r3gQAa<;{=^qFqSXbo+pj zd&6IJ7x9A&sbLzu2Ire`Nj+Mi2a~bzFhzT=r~r7FO;Mz~S!^^k%uA{%LDKR4a49Qe zNgCT0Z5m>h{|r%Amz^n_L-lVc{bY)AbE>!YlOwWaZDA`K{7w8-j*yxn4`I*~B27ie zipj5JIdknn+Q`F?f~0D|)X`69e7DTu_qTgS6E>T5LT6i0TNTW)F^%1vN+-PE9p4!f z#Z%mWSp}S27Bd zo8U3Y5I}^Frod)_uZFU3$tS-8sF-7mbg*cyC4g#e@iOU zVyD0cmgk^w^$a0M8dv@V`6bEQXUxFYTNIz)W!VDda1M7rs(N(wST^bR8Onnk&DZ*Z z${2TgWJp;Cx1zx8ox$YpB(ba8@vR%)dDBkW0Ofb@CKCXpLkiBK!`Sjns#)VNB`PuH zq!>Jz#Uv{R?>};1l5*uqyfk-qtXgkx@I78NzwIms1?+Y38|J+3i{&`oEgyWWTbfks z;471HE@Kk7*WYsskwHqkuNA|a82-SQDnzUkG5Eg9J>gKk1d4!%O3>V=oY__l)5ps# zh4#S&%**56P5r3q9o*QIt{EUFRfg=OTUP4W-o`M3L8SiiD>uU2lY+>Pe&lgUtf`5( zlt>`%Ix)XGx zfd8Q}VfoBKuO5uKj1}{9BjcIRF(yP~JWZ~B<1J-{2{54C#qzFQsIcjH%lE^lA*oTd z#>#T$-yT*JMz(@S7^^lDXj<4hcNh_Ogyv_VdUIG050S$X-|oH5Uk5e4(JH&Z5QL+g zVxmO~uSB(UtYF2bZ9A68r)*-p7MU$7L|?gwfBWPbKLW(!2uFC*d472|XD2p+?UA&2 z;D`3Sf`p10wK99MRjr^=H!iYll+}wik3P=7_LRS!)A(;$fV7U+?A-o!I0REmDU%cO zW2U^ZdJ0KO!fW4(8(?O8*kf=@=o=0kn>$o>C`?Vfk^k%8(8^))5np@F7~~;7U?t#7 zUu^8DJXXPppY?NED#O3D|XT0W2!2W+DEN_T0 zcCcE%`5TRZP0JX#rAkV4=`9#_G)#|KuNH9-SuV*ur%HJw!+AI!fvUEsN1DOjiK=H> zb8v1bJJ_BLop(D{)-Qh=lxK4+HwTo;?N5u>SigJ#9UP<8SbCC7WHx}0l%5Ihx}FR@ zywerVY+hIPWh;|EN%cx7%_5DEh4B1HVhG;bMQu{;mG0r|VoW(VfjZO$4sndi-y}D8 zQmWgg82ZY6jwU4UpD(jOe9>f(Y_CYdIbY}Lq$V36a{dswZhY2rNVI25TWQSn8Nmqo zO1|O|d+N{c)mjiARrhAlvJk<^IGaninSN{HdE2tCAv-FdJ&H6}iGyO70_uXGlo_^4 ze6KUVAc2|Q+xxNS{lN(#HJioIh*SiyET?FA12*!I{|vJquN60z&D{-|(^{e-myT{< zeAcJw5Z8@yEp&B`BB~k`3ooA>`jg;?jW%;58D6DZ?p^?9%(cBxy-Gt+?H)vp+&10Q zPdw~HPicS~E5AU%hgQDP-tUI|Ua1`C2{S)-!*iWB9=|y$sFH4pq_qii6LP1=4Im)S z^&w(9U|Q$$r*_8;=AuRu8v)SK3pUw}HXgwGX5K>93-Lt`&h)(=5-aoNd{zA_ z=t&M2dp;GTwhuHU9i;9W^Wb5O+`EU%twO?lfEZYVDU2kM8oeWZny3Pt{!vhWS0H+Y z^GrhslI%d0XSIpG%2ZlT{1C6y8k3i_{rH97*Tu0$+X7!mUG* zP(&nKjND>NCm5 zfgQ<;ePft1;B4Y{MSK{LWa@)*=I_Wj-m+Y4l*$T$OByFF;#Bb;qYT%mMaAhFwZ4j(^FYsIytg9+V0 z?`~$7BH-3TaMiNgt=Xx#w&WIrmz5~Ria9~~@wdugu1W4;q&3}g8`g##Lv0S;iVkcv zjVV^dxBA2$8S~7E`IH8Rnq=^~@HG8qJm&?(>n{Gz;jCmxDLmVlObwF;@n@K|Qpl3Hb% z`R$7C(^N@)zvxSkAB-zgcBte#i;fhbYW$|=D^tmHQSU(uD9WLmDYq(p`eDQ@NP9Y> zgOI`MuDRV`z^w^ESmRDhT&rK-+-J-}{;4v}pE64bkHWiDe?zLT)qdKt4Z5H`f zj=0DbrLpfzItQSRvW9}X1Bhdl)Rz(J%YW}krFEMzG~t!%h)SDD%{*B0B7JYHnhD5} z#E*XvJY_+?{JYOW?|JlbK_x;J-Gv{~^Dixu%;m~I^vgUB=HfWvys2IOk@LvJ){1po z6?&{=1^YL~Om_se#rSG{J(p0(JPGpjS~4ErusfM*t3g z)Rj4JiF19lyZ%XtYXo+x*-qPFo*n92tSy4B?DM{u2`#pVfg4Ptb7TelI_8j@7WfJY zi?{7c_-+=eJl25R&6Qw;dxcnk?#Lu8eT;+09M#0%ucr zti-kg*yljw9=bry3iFPQ#Hw!s?}lqk-83pp>ZccDFx6VKs9FXPn4v4CE#J0Wk%jj< zL8iFIaMKgeq!@2`z+X1GDhomW?y`t|8JYM4TF=g*moCW}^_lQxA?kiVuJh+UuPK>i zHZ&|s3*uKKE8+t+LNmuPC>6!lhntakaU@Grx4PQ6pGfsZ1dEu8BeyYe57GdHD`WEy z?hWp%WFo_l!)y|5Dz&2CoQpGE%BXLUD;Z$L)>=h|n1pAhlf$7!p`GKXue{OQ2VM9e zyXx)6{434Ne=IyH&<&NR(EBA96yrf zpCk30?pVlyy@;*AZJ&}s0qVpV<_NjOWQY;lC3(-2@<`3XM7)hcXGGLS0HVNkeN^Aa zpE{JsZi|*R2Bex8rD5GQr6&s3>CMDl97wJF`E6Yi09i#ggnD|xHreo0JP-|U=OyZ` znR-1Zlo}=qe#e*AoEFM10*s26TX(l*Fp+6aB^K{oGh#~0#mic6ziXN3ZCYmm54`5{ zb7^BkjnN-yC=>LghzvTDtxqQUI@zeUdZfrLXw^XcKHa}@y%_@qA#jGn56VQ}MRUj` z{T2oy9J;h=8vCOv31JFi4V_#ER?xO%NR$am3kHy0$jXsV{E}veyI#6dw;754JP_v3 zO*bNdRA$*CL3lDpCU>m4!c*sziV=AC0{tZ6!OPP->6XhlCW>D{B{7lEMX(X*xaK3U z)>~qOB#4HA>;8Ka7DI9BLwF`}qn=W0OsnJ&xzA7t`_a1`mr$RIK0`5LWZNbEPFVtz zp+O58F`uCOWTcjHxMp1DBAi%B_H{3RK&(7?^fM%JFz4Jt+(MTf#R~h$T?<-UV(9^WyzpkzBm~R4`UMlOYoIAA zEkZA8EtXscLOQD`@e`C8SZmY@_pAK;cs>0}G73x#W{c$Rne>}?o!`9MW+cdwv*%aeERrDLBaK8)9VJ7PvMhl&5foX%17P;DR%cf+8F6zj5}Q> zST7128zl1EmKnM&%hd1~42597V*S#%h)k!Iqd{K%huuORtMPyVT7~a)I_^vM%2dYvC~&oa>?Edbkr(Vy*HZ?v`iEkaIxmutK%j+}OuL$`R;=L*ugkOjA0KBZMkt>d$UG=soC(AQUw-)?( z63!eYX9Y>aXtgJioDV$8aI>dwW7CvDCw=9h9Y1OxDT!#z$DmE-O^}9Em;)tC)nr-i z?shcjQ5Bbtuh=_NYDgUblMj1|8zgo|AA)?xc_S=Nch@f(Z4&(KD6&pDH{;!o$cGZL zz9~rykicBwE*|q&fm7wgcuF_|gjw5FSr-yO5i?KpmTyKoGIie&t z?H=Ib;1}#IC7g(bDji!S5uD|N?5+I@511{OJMr`t-zV>s!(~_*8jib|?;5+FFm%dm z#*L*pE^#m+fBoU*kAAE93E=6=se%x64a5>gm8(|0kYGt>8OPkxp>XKcB0ft?+0o@i zZxGW;CJ2NYK>qymQ%Uj|57Tq?=>#y^4aO`mpQZy{3E`z^CZ5xe3P~iW(;(;)-VQ!( z?hJzAs&#Uaa-OTNc#a~$9mCX%_lIKDyzYY8?C}nop*zO_nzOYersAhQS|3Sr;2*6( zQyGyqJuyGeR&lwOJ?&CbRhB@OsdVY?eZxsoc~>S+A*@E+$e5SkA?Ql~JVWnZ^D`A~byVyu zrBr=$MmLrWt8TBlY6mXu+#y!Ufh66#ulXo!|APY)xD+NRY;y;8oN3wd6xg^nkZ}2^ z;A@iafK7em>yX8!Rk|l0a$73GjGwTgz!41THgxgKK<%WhlmO;SGk-SF$O|>EsQ{9#DW1!iC#_-(O~JDa-xX5c0BENE4lX@$j}dqn$;ez^(lC9 ztNz|e4q6uc0`x10;`w?S>-PUSrbY{+az=dD(JF`bu&Auz^V>cf1NG31jKLqo#9*A` zj!_P}Fz@56AU3HAPPkGbq%kcy zASI)1<}GTdzL12s?uXj)lq-Mj`|Zlrm2VTmAm?;0Iz7k zXV)z^hu6fZ==noVYGyd7C0xZ=Y;J{TnL|3w-;j2l5A8Md6UEis1%VPuF7!LrYA2`) z25bECX83G^^=scCc65UPOdhOez@|PkwtZs@9e0kz+^jmJcWBsHDzz)REb3a|rM`CP9udjN5j(=$80s|jb1`lj5LR{08MUUiRKMv>v=A^b0i`T_h8 zAD00`%CT*pi5L5m-g!7H-l*;5g4X1NAL>2g=UGH8DQ`x3YZ_W{&E(ICIm`A!X`nIa zjw%SFjz(>pauQP8&FE&4@bFMQ?j85~e<8)iAWX^w9uW!3+eDW2P7}orwbqve#zkb{}2Y*sd z6}uJk(~w;t%w|Vpa(i#YJAiY+(O4*Z`wFhvzQ*~;3HCQE4e%AXnG+=+gt#Nd!R%M0 zuZxnp;XJ6!OVR3h?zfAt+iySEp+y=F^?E9gO$No5P{-sh3R}OvS@B~}X;^q(z z(GJkC?I(1i=9H`;zsDYQRwZUNo|%7K0IbX|(X>Ju>1anfR=_ySJCwvb?hvHTqK0TG z6n?Zfo${HGU1f!aa>txJ8-kNk^HJ&DFya6Z+Qnq`$TM$7Pcc6fr zzXFoKkrtgM*fKH~VuJteGXXPlt+Rw)&2K-FRLEBv9x;W$TkxXS_NOsfB&t^;`CH<6 zd+akW2K6d4*S!)`64u5zHLCs|_{f2(K0VxbjdK8y?@w!h$~v*sg<&kLSqZWg$xGiBsJlD#OP3qCt}QIr?9*hF~c zX2h+Z?iXS#1h#@%BS0HJirRh_x9__-^En0%{x^V45RMwYbqUfnOV7hj4#|9}dukG{ z)&^&mz?P|}7h%l@nt_)5ZU8<+`t63BKJ4N@T=dl5reFJdbgc2>kw%Il5+rK(9bg5Y zbR>SYgs9h-)5gqH`PFq4e^waPd9vTYTC=bxb8pybl$xALAE z>Sfg>NC`jE{z*@wVz7v|P+N$?f#aG-4|grcUXXeM{q&fQs6B~z6zr#C=MvnVv8;n& z7()3+lBJ{I)vWa_oAL4&Hx@CVy2D})KIyzr+;xvSG8z)AL0H4JSzFuQ>R1ddP)vHo z9jwZD7VzA*bFbCS0J0Y0M#qctX&UHFwM&?WgA+k%qfK5A+)N%*8(|_N48FXWv%_k{ z(Bxrquy>o{URisNdVJa!be~C*xuU%HSBh1xSi^}KYP1q_-ka$$EtV8Xz0PZIS8Eik zLJD9D&zAEg?;u%8^cNQS+ifGDL2W5oJDk%^=DSZoMuG{=^P&R)3SFZH|6xcsLv{z7 z?LL24YNKhxkVuKwJLN4;pE;N)1CNB<(>!P>PFD=ojRiiblRi|;g` zzq&!ai*O~ltt-J9Y4(Yq4?_{w=Ivg5d84YTq5iMo)a*j`_ObV^do3(&ex8*Q{ZHim z%G9Y=dXQ~dsq(E(BY11~5h}HBz@}|J)yftu_JE+kDCqP@j^kX*WZRo97~W9^6wUWD zzcDqr!1-v`m`LZI8g4q3T2LC)A>8eSm4<`8Z%?+JP~M!NqB;4$0AOG(TGE65Vt0g0 zvn$l2z&VVNM(nP>zb~HZ!;lR52d_x>3+n`#9WY3IvfE=rU?a9EE6+Jb7xkNweN_5J ze6Aam3dOyw)gDDn!O4bg_fGl~=bhx0M5Q%DA^hslnCOq(4K{ea1hc(}u9< zjmdj}UsZqnLD?quX7^!-r-4%4mGKDXbR{1b<_u~}5>Q$JDD#g_F@bOd$g;X3~M~sMo5oCRb#Q0LZl^Zf8Hhf@|^PmFSJRqUAtqAlR_tN_owEM7v+;WW#$s z^eT1V>}B{|J1>4CzuPm>rwd~_^v@&-dFa}Y5&)){W-k(mzMUD{ui8Z*%V78Wr%AyI zL$Tj2QS_myrc%ReW7P&>seDa<^>%7t$4H5e0a9tbccDe}*nH9GQxRlW?uHDYR7xf}&A?kvo`!7qikh;xVu&a{U$Y z;#2Y zsb|<#bm5Oz! zc|#SpD5m0?#|Gnmp^9C1gJfv*((ZUHLym@fNxxa0Zu4soVFLp$nUV1n=H5{+QiXgn z%U>`+hwcG74V%#i)B=khthr^kh9@-Bm5eu|d&{4L)E&wy_GyKMGZx7A(iL-1n&~xE zMw9Buf7HYTS0`Ke=muRhQyGngU}x;sv_kSAwswQ@nV2~t(uKT{|0_*MMfyvzcpYaN zq@&%Sd^27**{Hdh6g7NuIhqxe3S1Wt)Owf{s&OnZK`RlB_^i1_BeC`0C7(|EyL z(z$(Y6Y$_E)vPnFp=22%i2tMsE(6i3(}Ik_5nB$Tl)1gUKC3g%^s!nJ9r^U{bB#ad zLcs8&8|r9`GKR{Brn=ch(?U3m)X%j*fX^JPge6cl$cyqM@wzDBBT(gP?R-%yV*Azm(f?(mQXEcr)6o~0cexv1%(IraNVE|jVt5Gb zYs)3^P`>)Xx{ur@0tUQ!O81a-JCZ?`8>%p7k^mfmN2z!JZWX}xhqLi=d$YH9G6PuD zUrA!A3v_S*px1A=-(;H)M90^dV`NYi-``TM%@_R76+@De2C4Ua&}U7~op@l`L}u!Z z2Y`mCiDw9d<4*+y0>sSjp+qtk57U+yia+~xP$jc@8~OPorquA-F`!d`4~_G&55VD(tbWke3ocj^zLPuzG=4cfWkXMiIP7BJ8y^={VjpHN7-J z1Y(-oqH8CAw)ra`ZxSS}Zihzf`_}TGXJKrS@Nmz4JRiTuG^OP%_~u7gU=_zReM9MY zfQ1pFrK9P&^JuOZO{9CLLP=!P6eC5Bs`$9ty1xg~Am;EKHRTEUX6Rk-Cb5A!-z*#u zwBkiPBK83m!gXn4U!Z-Tn9SqAUFh?=xt56LCEWbePF73sVP=EfbZylj3nytFClx^% zO&)=nUU#S37p1p+<(dq|PZ1cuKoq9069-krSy68hrpXHB%7f4ys!`c?5rT}|*@Swd zb;QU~Iw(~y>YBegjm_7EWv5-`_|^5+vv5TRt97RnX+K57`@tkB6x@de29F0_tn>1v z!+V0I@xQR4!=P?yCFP&Ups}xv)NLTcrF=#CpWo^-;N+sQb;L}MT)%6vMBq;3M_3O6 z*)mGsP(e4-Y%bgbQc!XiQFnBr4aWZ}J`w4}U0T;R&##R-lx6)cOMXR3G(=m|<S6W4wAoS_!Vk%E1NJwHzuLv{_TPP zCBuG!>M~?vzq@se=$tZnGs*XvtzoK95KiHP{OvfOhP~*hpkcuQes&Y{Hna|TZ~jDn z3KTO(p;F`pezi1}2&Nx$zG=q|cVSpYa)sOWkyTwoy5DRb>XJDLk$MFX34>~ZqK=rw z(%mMiQeywr-J3!eQO@>IfRhzgPwSHByc|}IhAz80L!h4ZutfbQF3Xog_~~o>vF6eE z&SEto_g9-V0{M7bxj8{F1y;)IQhsdR8Ave-PHcgAXVR>45J-ibvitONh&0W3Jf9ZV zA!>{@+#iEcGtSpQX!thPVQkRD`|fj3#4-6FO54pig5DoGg8vA!e#7uUU^_nN$)?M9 z!euw)lKppa|KjAwtI_yns(~a^fTdaeDpRC(czs`2yKeIaQC(o4Mq1#{AdO_jXPbS| zPPjobv?#$Qv%xkVR6+eNHM*Ajdgy%ie4P!4sH?tC|I8v@irFB8Ojh&potTdKx3=grs(q#*nib91;#WxFc4uZunYc+wDMHTsk^Zv}I0DL+(4# zmIE{yY-}YPd96#kG+oiOj2ZL@-a3*K&Qo35{ig$^i^{20i`=cY0 zWpWuZ(JY~1aSy>6iqMT_i0M`qkiB6(Tx=_i!7OF_0Og-Jjir_B8Rg(PqBh2lf4|~dN}0cIMRmWh zRqT7=KjHdS1Oaw-!dQCOBf%sUg89C_{Do}cI8ow&>7yFnEjwoWx!0R%aEJR;n_(`G zQSGR<=LKoAejbT3)62`NT$Oavv$Hr%J;)wv#gUfjsW>Aex!m+_SlXj_6ZQ#w) zw+%~HClu30Dr8$jx>e0Z+F^tA^N*?L^fEdO)6XZHUR+`ieEfb;CMgM-t2SPpI@XU| zt8EJ=Sy(M@H-t}jRpsZx_;REl6NvC_ojmqVKGJMjj~o1&c3r=_r!mY(LiXqzOg_pz0SeF^ zc>k|ZhQ}ORU?;>j-~tVN{fmBI9M{AACr9s7b);C9&>N|ZCX;4N{CuKi_c%Q4@b7roNA$PQ2{3v)%{>Gv{$Sp~6Om#X@u9vU%u>AE({Yy||6 zO_83TrjK?FQhY3*F=*|l0B}R34wSGuB*_zjo8belnP+(um zyLqgM?a9rG=rV|c6;ZLW?jy74zDFUysxYJs+?Bw$&9Y+6bl2mAn9zGh;^xA{GV z{JWhcD4p}+b?%VSBG9w5Nj@Mr>UiCD4602kU4NPJil7Q6+9>`v>6QEq;3I1)IE?a% zC`}wL;u4-iriF4L&&awX@kK@MrK1H+OJdgJQ0G{h1V+$jQZFYq4!~XJJf-P+;qmsB z;jvjwP=92FTv%RX8YXh4)8`i|Y)laUGCk=9&ef9K17#pyc>(P}tbJ9Q(m-nfk~K5p zeP=dyk9o1JAi~Nn7+dUyR4w?&`Z#5XB>W_>%^uj7wb* z$`9w%WWGfch>Vmb`ndjB^utyNG{@JPv#u#YnKtM$Y1%Q(iO%7qe9JzS zS1et`^C^z~lARrr%(ogd_YZ?*4Fn-ai zDKf32S_He9$O3Tk45OA3MYax(LvUbmPNhKS+)nVZCmO;SAvU^Rf=&k{b5_;-_IlRc zx|5-rBG+Lt&8B>)d&M?9BxDE>66{-V6V?u*v%1yLiP9x9*~7|6C_$Z{R7U3bL51E zo?m6^rN^gh6qVMZ$T2#UiUH#xs6o?uf8i;gcvbIn$NzrpkU6c`yQB5DeqS1$TebW+ zmgd<-iT9khw|q&*^yY|8cexBM>2iI^a$6W$|DA@exNwh5>sKAQDegg>g`z^%{Zy`7 zKFO^=#ScHe zDm#0X8*e#zE*|;hNPpRcQmgkQ+qq0=KRmtQ$)1S)NKsELjg3h=>@AP zA@@)+8F%jWkTD}*S;tsWCdpYmCb%tFn)L1s6!}qpxy=AYm3G(;*qs)}T50`W@$kAN zq9)bGbzgDe!X^N^sR_o8u?=wt=a=GvS_yVgtdy#YLT9}@aEd&L{Lo1~l(o=l3n=k- zi2vEbOK*h}TlW-gVD(IY>(WWu?Cr zL`ApV0gSNHP)`2v9Uub!MH+J?Ee<}B{j2Ifo%9TqBEOzKB}1IJ)PN!KE35bm6Ik|7 z;IcjT5KGDRx6V%1*{{!?g2~}J_}P3p8+IjdWsOKzVG#0NgIVrC>x`)ssZ(H06JL?D zPtAobX4A?^vHPsOs}5s8hk4w zijr?Rncw3L@u!#SONlP&p=hdG?DvmmdfRibcqmDNG(aj2C}j=w+Jlq|5S}NQ&htV2 zZ@kV+^a4j z1vp_sbM;Y4NfbysR`SnWi=8oB0*3qg$P~FSJ&X@HT=*Qr*in@x zD#k|}O&erlrGwgpr~CfjJo)@8-34>>aajoqcj`d|Rm#tUbI>6xe!>&vaPnhu3A8ku zn&k@-`e=^5iXtoO4L4=u3fz>D{A+ol~!>rE?6ichEh;>Y_4#I{^g>+N+t`Nf2Cd zBX2&*2nz(xxC2Zjz`igQ*W^Z)SRuCS8hA2kmo9QFMD+YHq#O0u_-mKpMEcN^8PV8t z_H{c~HoQJyu9qwDP)Z7a%EBtwBP^dC>CXKc5PkrBl2)Fze7%-rm&Ym)Tg4!eHMya= z@{9GAA1Z}ZFaQET{lAGKA8K0}DYAXX^xOI?BJs*7hV$o99Mt+K>M}tXOnip370As` z_uWg;IYsDT9Roel%JMM9=T0e)23O^gUnAHMN?Q}5B}QQ{=zWAooq{bl)9`)0Mj=&L z@}del*GM7M=LK@y-?RpeUk@yY0^TOfpO()WAed$$m|F3X2iR;ji0=TEMRI3yEl z+C+Cx27di458AjD4KM`{8RG!zGlGyyHhsp;-U144Gr#Y zc!_pFA!q2rmOKknk)l+wz3Ng`3l;Emm!__oJB_6U^eP1||a z820B+pLwEWTx>(_(u-q1blgq~iRMxi+jVvqK|!0Ru}UZe0L>wTmySTBx&Cw9$v_7e z=>+C}ia{H<3d*nX(6htkvzT;uBaQacbDMPhop9<+xa=x8R#AU@H ziQVw9>o>LVAB^`n^JHmT*8zE4#^w-|5eiqmBD!fzL!F@c9ILYW2tCsQ*1NP6M6Z|M zODvll<^-J7sYIyzYUD&7Kg(EN*@_Op$iC;_v|xj1496QZ(v+AS3an5s^g^w6M0mcc zbgSNnGU1Dgot~c$Pq~PFjB(*uJ$9G->-X~-E(jH7ymFrJP=)QaEbMISLK7(n8*FPO zcA`;&Gzxij57hJtE_vs$CgL)))bd{!w(-`uhV)TI!bg~xdPWMO?mCjN+j^+VA^DD_c+3=Tv5>rt$(s&-rl!Ahxzi(yMVMvlmZ;t2oIR!nWfFnW&*eE4C}aqBRUCJ2ea6c@Q}K7r2hx4;8HQ<{^MM z#;oGMy3Clv7eIE-5`p+0mTjl1L}aCK57Oq5&^e~Br(y+Z*iIGNS>ViR9x`d*sX}4v zi3*FHC!E)w%%4m;hRS?!y|;3Y$@A=oEqXU$$Jx;Ar>Mh#yYlz>N@`_Rzaovr)g08k zrnL{iWt_J@J6e9(8$qDMGCyw=v-kIT++zfMqr}mZ&ZUUUvryqlZ~iE08)z!gnM1Mj zN%X?@kK>JpIBP7kyV}+bxWi1sSPnQ7UM<2(hr%Z!Yel=Qdl&Fk28gR-U9K5CVC&wW zXdf9FB$@Is3udatJyH<0yL9D6^($C;RYr10{zFkvWQcjqYEZDKhcAVL_sJ z(!Z8y@_GSy(#$sX$%JmLtZvLD`Y2*1dC`asAGY7g5{lXxja{67ejTmROdcU(5B_q$ z>CJ>&_~w&2_MT*4SHr?;E@8?OJew9$K&4^G*eYU_D(IU^-CH#)&JtlT zs}#tPheCN|)36>a*3!p6qR+{vQ7b|D|AGox4r3?FlhJLTQMsFhq#W`@l4sCCuh+U_ z1!Y!Zu04iX1-@=6PmzpZ$2jG3h17nytVK0|d_ft@7Y^eud5UGvsuqlM zxp9L79dq-5w6sK!Lh?aB5_q+OK)+Cax5?e~^4qtS)FRT&T=nR-mdRyS3O3DQ8Rn}q z@^$QiR0gIeSrn@)c*>)-?a|4v*s?fK^otHNq{fPH@JbdUX72JJmej?^-C_tVm9z7Q z?fy(!yRc}GtS?M{E)`H$)N_GfF8)GsvOuKyvCbgQ?Yw0+_>;YD(`LWdgjs=D7gY}8;{Sx456Pl;14arF$YvQ1s-TCdE@fq6UBzQ;}}Hpr`8 z9qvhfSI=wXMxap8*VTfMHjAZUTE+`qarCh`JY2%cD~Ur*c$I zk1CfDFQETkkuwdQK^n_JYK1Q#X{u>kw_Ku1VT8p)1ccu~Zi$=#NyeZQj ztUp@R{V82X#`BYwha2}O>f}encalX6Rtn^8Qi*CE9xXXs`=Yc*5$bujd^LcJ_6&UH zR*$@Lz?_#;LHJE{U*Ky{aL5wJISlOhvw-ZVpd;|BGG&p%FD0Z!!OLU<$Ix)`W$|S0 zGk7i<$E0IUi8!fU*gx`HI@bur6~^m7m*%d<*0wG4_?CBqllSUqSwK4$WUWcjIg-u4 z*3200r+yuB0{^l&-YfZv3Nelq5mUx0CrH-h5>&%fayG?U$*d#rWeWVcJJ+`hOKdFi zH%c9ypK`H_wjXkG58R<+N9n`ZiyA)b4~`g@aVCsjBMxKBN(>;j9cr^>`m3hFctc(ifNe-{uioK_iNJ;%a#aQ^(;m#DK#U zSaU@rOeA8am0t35&i2Wuva5fgQL=dy96GK77l;gw9o!#UfRXD1mrhXaAz%f3Qz2t` zfHr9-G+3Q3$bAdK{-)4dxQfucIz9T>?nVu|@O-Y|h9y66N3RU+xEFxU`mW5X_JM(?Wd29$9CX0_oK#}=fKj@wM#m{@vLcTSRPoYF?MRXTOs!W*n ztTF1>v#8cgU(VM;97q=a5}Hu@@&JDXs`uv3+~-WMKz-An%@jTqR=Ao!YBy2SFnG~85v z%L>`iv0+ZdxQ+o8M25%{wf#dBPLcbupKS+&{^E{ z3q%v7o?E7F`O5lbfkuwc2H&BYtlNGdRVjzs)G`P^(rjb$v7sVKpDjBD*FLbN(m+WZ zl3G8#ue!2}FL0tD#Eq?L;t@t-w@%rB1Wt z|0~7Jy_Cota*UcG(fV`1PNjqz>Pm;&@X_mY$yhzce!w_K1!9p9zR;|DO+Nb|B0~;w zfyKNjr0M#cWW4R$bvY|i-M&PRWdxwX*BcV&Ub-Z&SE|AjDt{O>VP$7;PGzKkIlj z<5hnNBfOdli}ZT=3s0Lu^arD8+T3$_OotwqT!xN$$;_x*Z3|1M$BPoF4K@&g;f|af z(wdmhEKWU}He3i9iI5)f{W7P#8E8*gawv79qe&w0G#*U7KVi|z|-;Oea z`bvYSODdZ)D!DA04_2!XGXvNaqVXLxJ z!h)Q!2W6P(j{BYnbbLu#oEMl(uNPJFTnuemYh=Xyk&&pnsi4W#8yzUNq>moEz4muT zyWvFZLwdK0^iJTDPZg&3es3(!kN@dlXW_LZ+d0Ki)ja5HFm zDC9mV3AF6RAOtsU%h76bXk|!lwh17ZywgcX=11~7$!Io6aF_Ml#Tk};v8$U6srs=r7@GJ_x&?o)RiyOEiCaxL{B}k#3u+FW# zONRc6mJ@Bh*S_wECYFJ*NC`>k5(Gs2zUAILJ#p=7T1(nWC*&d+I$Q60)#<87)wk2| z7Ef1_WwzB&+wOo^KN@MKFumSm$eK))Q8d13V&ms%_w-*QV?Q}*D}H01*d~dqKKw{y zhsp?v>qh~fy&YR_qh4{3sz@>`J@0?DO8SCZrhb^}ffh^>N%5+B5=q4oh5Jsf_FWd@ zT~$dWQ#?dtcHf3uwoH=NjosXkm;KeQn($W;&zv`ZMiF_F&q>NM?Z$5l0yTOIGPi@J zDDY#mW$?-rki@13y-Q%j0^ks!K{eEOJIuST9COC=f;T)c&f<84_E%|Lms7v2E?Yc7 zFcSCcPIQ|Xi9vzA+GE^S@?{^?St06jh3u^XSq=B_OxK51Nlkm+Z{1^rl{f>Mns$A$Ny<;)w(70ngC!6AkB2z zm7#*_o};%i+ZW0QX} z%w1!s#ix4XGV0+8p&RzHJhfA*TVq@x8(T1oK*_PBBAhb)mdK>OjG%&gmLY*)qD^o_ z$~ZV@nz~X6mhbqpE2%Ry-aBoyL{Er)bOzWJlN`M@XCxwN03f`tkTS|t|MJ)%WI!Mc zw7+P~pMO*Mi<8r#nA-CH4l#RMKC)Q$+6DZJoG;+TYOc-5Tsf#;$Sv5942*lIV~N35Rdf#QJD@f!p3I?cVL6!$9RM*!$ z=-k6(2msEb5S`)Ii*j&94*--f4_lD8n-jCodwl03Vh;m;w`m4`+L#cHB1jw{u-Y^V zK>BAyu`DE-4`ApP)O2D;vRevi-QS49$?CUGwDJZJZb-X#7s2;Y?;p8Yo$S!4#C2oq zwv6x5wym$XIQ6JGx?*PheH}U6=Dj-hG4(o30;exPC8o#QBI)S+d*)W)J_K(jpbC7* z9l2DqZX>;$qgfm*B3vZ>=sjvRw{R?8S^De`o>OdsyOp6^6ja9zoh7^IX01qsLXeJ_rB;6^ik6?ij?cuf zO7h$tI3hE;4+6R;+iaK}C*NZN1AOD?s!gUdH2`Z&>rsFN!KJ~jsm1pvGVo~SZi9o7 zF(;FAbS*Tq5~A}2`3)$uGv zBNPPH1JD3eOb!I)rf_qE;Jq8y>5)s1)`)_Np|WB;w}I9`Ab}_%fj4UXRp6xCxw_By zr=~GqGw{n)WAMlLy`d?pXfn5I23>RO(UsOEO-M{nE8C#j(esfKpir7U>H0PYe6p{3 zq#AePc*H~#VN~qbAM>F+ug1agEJoBkT9PfedqK$$8=WF@#kA7Rl1NeZJcZ%M^-cnF z1T^)eBuP-fi!|DwfLeb0vfi&GJx|FOqe@2AZXZ;%e-d(Hh8q}dxT&Bp3i(SbZ!bga zqjHDUhf>q@u1Z6GiV zN)d6bWao4X1iEFrMTr2sLqiRC=%ts^4l!pUC~%Nr1$9AzP8FR`B-z^>8c@w~2KJNv zj?-pHN+Q@2sqYtj9gx#+^<$l4wMBltyI{y)Uj*}1AIbSZw9=p#kGhYf_ye1hoKIV% zc_Z97HopOeKqUw1N~c@`y8FbF)>g6K&~uVMk=|k>grmcD)ui12li|)#Mhi_vJD=xP zUwkC9E-SLFSAAbg58V+5W%rfa45=JREaWY#NTJ!4q{()==gBiiWa|62G38dt<2r% z`E7IYSZPz#K7`W*#}Y=|PSY{O#TD99s-QHW*=5*Qy00xg#FNAf%-_UA6=vVx79@dh z<&FmO3dQ#E;PAJ7M-w5T?0R9>hPS+MqUGXiw-*YTpJ>}Bn5?vRb*H3ngm*ANFwj_m z^5eO%8Q6>-UM&5G*$R@h|=^d?k|$ij1$ImZNNVT z%9Z}RMiI+vU+liU)HjSpT*q(mXrs|*$t)_6w?M!T^V^UrDV~BqnF%U(N@5yyF+Z_9 zdz?d*okKqaO0!>KPqXfNDZO|)A)RB!>6oNWToJsHXfJUW(Pi!J8WSL+Bgj#~ptuOJ zO+tibM-YmM_z13AtXFxcJQczgtGtU}-bmg7>rasjZcwZb#EoyapWSeztG=_dmNaJ%a=!g7+)A|V7TY%8(gHxhl74O^+BDRUV zkHR_%X0HSvs;JFfiH|~p5`fKrKGx!#7H|g3*}6ss@Nzr^Vh4f2ccSASM4uSU$U9-j z@i3Lz$`oH~4b60#RRK1u2cJ4?BB?brR~LnG&KXaKK*J^W&uEv?bOtYIK=^vEao|_W zjH{rG+QiN+LiyhP;`l+%P)z~}b(LiPQGk@C4iP34hx#SWEh&9AXjYNqr(=Kd|5o?q zthivf&ux}CNBg@gWGtt7?d_lLx093|8*cU7@V>-tnqEWKI;LmscOS$-ry7SKXFDvT z8JB|3QaFp%oei>xl$J><+fpmh61p%PQzR{UY-I1*n;#~*8RYs2LoIAfieviIbTpDD zN>7qs40h|XB=X3~A3%qikC|j`EHLFh1`&`dckkY>**^PdPnys9I z<9fgjpNM1bVTj}?d2jZE^4xI)RO!#I$|IuA$2r@#NGtZ7kr0f z#c~ci3`^r69vS1orI3!EDW;T_O>)NWU&w($?s9Ef!BKVU#WF6RkdyePEvpV6XnE6v zc%qrjYbmYux-h_d2i&Sxx&`R&5UD9-2?!#E85BF9|K_O&EC)XiPdvch>R7C^FZDL= zTjC-G5&}v$dSI{UQqul5XnnL(HZti1+^|I)-ek-c5^P4 zA{p%RCL|mmLko(v!3D50`6sqGn*>aEDUveR)q02DaW>0B+tlRT;$g}&X83^Q2w9cr z63~J80^f<8Acf(IN0oP!5jN2rt(yOr+ZU@vaLhGaln7w4>vu;RMY2gsJhSthEbajt zi&}GOf@!`84iZq}7+riMi06mJH9U7KHNBJ!C~Hi_!GjWaDCO);a^-@k2^b`=l9%bx zQjUC+n1tI&n`# z&|o<)!TqeUgM050kVdaLXQ4*aU>%dBS+LS}IFu=Mxs1x&%3WYm((}{O#&0h?Sz7J! z#hh~gSMUg_RhKy8fUpju-!rgsiE63QkJ>0U-6zv`OrZq<%&%>}#o3sab)KT?X8+xB z`cHLQleS|`$M&bzUlHDSOtNGty87neV7?r;4lSz}Na|J0P6yNL4dTS7@PY(m7x6;& zx|$;Gc6C=0t7c$QMi=LD_7n+Rpz#Ow79 ztx#`MVuM!uUk98a!$pjYi|reM<20sQ{5yBN`X6MQ|Gwbi2m|2ES>g`cc3oe6YIsC2J}oZ8)%^YdC*DBzSphu7 zWiF4M79q#^8?3QU#I7}#6+<>H=a%#(Sh?+XTTT#m1Yr%?R#>_ah|Adus(3@e6S~lTJOUg-aRjoMj)mK4}XdX(H2f z%}LNmJ9AE80wb1Eb8+!c-DJt)abz1i8k3x32=7S^0s2I)@@MnWL}hG8P_pU?RCu@K zx)f(uKK)atg6yV^a5-#&ClfbwB#!dvvUqt2dqXo%`ntpD0v)YX-)trGi(-gPy0UHK*=!r8)yhoVdoMl6$~-P99Wy#=*F zK71Ac1!WhJ3Tx-#CEz|qIf`SIng&5jzF)pSCD25a_Q}j&XjT3`^dW{n{gwd#VVdp1 z?y4qfsBIZTezl>)(w>llRYTe(G;$Z9=duZPp!ZbTL-Za8t=idQ1R^d!W$O z1${Kw+sxnMzDKoZg4k|3iDcGVW(>ROtp!3DFJoxfT;j)OmFr~t0fy%OR!x|r^$q{_ zLgO-k1mtr+ps?%ZAZ>pyi!`Tm&2uKL$hL_?=>32`pOM><+V!aU2 ziMqlpAj#$mZfCHa+yTia#U?{CE}`(YKVfJ^Iy%Daz;|~ER-%d+chL4>NoMATL%L6k zm9nT?zp*OfS1iT=jTG|mIUOV=Y60F52G(wYyAAYAA{Sz5cC996J0N(2+!4x4LW3ie zt;^w6eWCfJA)QoA&;?YO9DVX{;)1XJQR@FhsgM}0EQ?M{EcNWAwPzNotqoMMfKPa; z&;+aJt4d&x+qYyZLSJN9kW`PX8;7SU#8-2^^uS{6Xkz(ZGwke`EgoWDaQh6v@SNhy zO@M0`ecByLH6>hI1xjKpx-fgneC;5$^qO6i zH8v@+JpL8L-rR!b1H=OIbc=@)kcg~nN8LxNgL*q@TYq3iv$cGx`nhbq^0FWv$S=(H zXzacW$7O|w`xj3BxDaR~o8xblLVXKz)#`BePC|O%#Z>1b&kNcIEG&g97Y~Z$`>@Sh zx*_AeP-Hj+kMY``JWIu06E${czFEkAK=8OlG4;a=FTF1lnQiF0oKa=AA(=fcxthQ< zTa-NFH5xag@d;dLXKQ^67)$jQ6a?zNo!DA$2!_^PDXUFBZvK4rO@39{K*i2SydgM z2|DD+gSu5Q&MW*~2mowsl&Bh4-6bbcc7^JUHe!zf@^Hwv>c6ddD&MMNDwbE zU7e`H7Azwol}e1;M1l%zFas0^5K`rO*S|}zY75_5EMygH{VdSK>61cKO@%St4XB9j zyh~`F6j0hz^P?!Ote1mR?&Kd#(!HEo0-c-h1U5uN(u+{dHZ=xNqfa;jeS_(m|AIx{ zZ@_{wf9}Ic*uxG0onvx3YUZy>j$rA&gOQhDMqPPByEoO<0*HCz>?%CRFDOp*gO>ot zs^v$Q9=8;;!rW;A(IP@Fpxv5+%Kon^pShd%~@jn~>uNg-z2G>q0c^ApL| z{>X}+0RNyJ`zGj-eLp!~&Pwbp%yG&;BnrvX`2MV%1t)+<{9Ad>d;@_NLbn2=>wIS9 zySK;QjnEVRr!}t#+>aSJSsDX4;=tUgOU|^eYPYNnszi zp?;eKu%)L|;T>#5>JTASXKY)aW!*_3X?j`TaemSC3^g!!RA`kS^J(LObbG3Mdxn)y z#I9RyTZr{!`**>gLG!F8esK?D7X}29(RnGi(>j2!#7Q91FvsQ0lwPwBH*TAv%taca zZ0Q}`_>~#jU!2IBjcr+I2;XXZezd8QP_ZsIJi|S`p2&2StKLrb3~+&p1ma9J7+~&? z014>1$Z#1iPGZ3!6mzsIsLFspR76!l&{kLNnc6$STT|qi2bq$3*1ggJD#dEND(K*N zTQ`$X$F}GBeplGY!|J|rH6ztIUMbaNi#}d6=Xo7aI1a~eCikO$TRP2>xrPmL@mD5}=2sWtOWUYwV|aSJ=UF(VEGtK}J_97W5+ zg;8MJL0n)PnA*)p{G5bglXhMH3nr4DcjgG7oCPdIv9ayQnB-IB_cE29ju9cb?+RgM ze=v`ML_Qkyl2!Q|b|{*S9R1`{OVrR5D4(+i^LE2X;$;4<-|Jxu*mrE% ziXr@oXT?V z%;$=vXBD+U-qozynH2>jipM3(iq4x!Xqvzg%UO~KtfGF)`#CYFB3RiR8o;hNDQlx6 zug|C)1i3NYv<3C#7gxoarO?ht=&_P5P~GU28|yFqlD6GI-~oOUXlvQ$qpxA_%G{uI z@N=o64NlUc)(aL$Hl>%fdWbFU3PfYLNhp^nS}dE=*CwVUj&Ts z_>Lk15ET;Ac{Ku*M3ULdS{e?>amPXcx}u-G;=#P78fg>n>2k&F0vO+bTdkXCLEdb-!A1+Vl5e%bqZ5!++&rHYc!!(R4 zH5tW4?}@yAeYH?L_yFRbdx`I~4~^zC z<@~mVC)&snjjltp8o{C&(}WYkg}7QW^(+Q)WCo{dHjmH!}{{qr>}G5%zQ9nmLi0PoXS zXCam%DuVh~nom?hvP|fJO6?b5kZL{-0wvIL5WqlLep+&e@Bn-i5(LC_=5cEH5i+Dm z#SWG~&pO-m<dXZr2wzYaI1M3SExB&ej~}~I6v0|$?5$=a`R`6A4_p~dCh$7)feIaznSSKY z!E34$6iFxHGfY?@TCjJcat)9o?^h&oV}UhL3g!arIu@D+3GKM4AutK#M1xa?g2!T& z68A|IA)a2r0)D;D9b&LAOyVZS9s3d00Rm2#yP+#|alk^C9rtiNVa_G;sw{eM!Z>3- z|6$_tz!l>xW+nuPF^xe_2#%15@h5QzOg!Yhc)G&fZibseHRuZKmeu*%&r~Gy3l#cJ zec~aoqTG4h2qAJXt*NlG8A4PHdFw^BVf4_vZ`6zY!h8O=%wDPCBf2Rj=EJoZU+DKRx7jO^ADT5CZ}20RmS>49*7oSQ18sX1ueidL7;48CfD={kW4BR9#h z0r3=A`6!gb2@5aq!H@u%`2c%<|-5Bx5uxszo9;4yaRf zxa=#8J2*`uG3vtxkpj#;(#y&JYpZm~GzCT4fQ?rLav-5M3wAM@A`DYyIql|cJE9j* zj_Oe34hE<&!wiK0hkc-Zj%k7+C*Eowc4J2l?i9}1I3+I?|1|;+x{uw90$J_oOggLA z(SaFzF>C+Dq1|L7b#cT5bnqyR2x7hdJywAx@;#?pg-7mM*@}z7U;vsw*v}zBM@J~c z8w-s3Y^#__e=@l58#y^-%2q?0aNL>f={BIGjLhC-JxeXso?b?8U9cRIE(zR*Yw+*q z?_E!pL@idC%2cY8%h_ItGFd}5hgZqOc!PKg6BxhNmU{`}lK5{VZ8#7M?{1fq3Prvz zGY8x!GvowvRS~mN;a6ta@AW&Uy`1lOYz4!lI4{J#q}u_yZWlub9x}$e&-r-&{H=o- zT~P18lB1Twr4BCX%W8XjM0)zVL?x6esbyBrc_9Wy`En5czEop$pQ!T3qI3cdUOrNV z0unCN9?tr=gh}{+#K(wtSE{#74!$9g$4-i;5`HS*s}q-HpzT;vzv?f~WCls0@cOY! z&nQ6mp_R7mr%>YTCuxvyYXvwTyuHAGn(;KaMH0&4M>x+x>h(W!Hi7%iEi~8k@D)*e zyB!!~I*J32KyXinTmzEs1eQbR2EB{@c9Z5hQ{pxqwx@6qADS)mnH#fq(R(y|F2tDc z0k__zQuvHBsovIoBBQ}H_@XMc)P1kLI1rfZ+XxtBxF!%q<%%&+P>pKHG>?xZwGJl227W^u6ChJBt&|@C5D;;n0{n}7FS_Wm zVo+Yrm#+lw#uA>B{~|emO#-(_x8P`hZU^FB8^m_PZx9;MV2;BvAk=l&r$GgHVCeE} zambQ^KhFv1ntRU0S4;97(uX6E~pgW#H{VYHP=X%1Qs>g*8p7gay~<}-E^(h~h~S~GwkZvm(}9utH`+S`<3+GPx6 z9^@7y{l=lU9zeJ6)3IwXnyA{cUQn`0{IW68)Zq|df;LfY>sgdWa~zss6tS1f44!CA z+r-IPp8zN>0s)>t=Px?o^?(x5QQjPnHxq@kJ=o(gaPdb;h!#cS43q-7Lo^$k!5THe z)oHbP0Am)pEfo}UiWN#gbRn}E`6aV*qajYdC@^t+kTK+8y#+KAIiU7bTBPS9B0?}; zNL=>#_Q+g>AV$^7@>znqod$n!MVEisqc@yk^SPdDeMoTv$`LBsN4mEPXAT*h-3qo$ z!X%j*`TI>!2tBMDcdr!pjSTV%q@Qwk@l`9VnOA=@{<-sD+Ed4h;n-a|5-khTlb#n_ zt8!qIc_mPijQLKJg|l{siiNOHO3SM)D<}50)!4jYmTH2nC-61R{1HY>%JCW{Fp6Nj z;}hs+xxE8JWF)rUk$C`RQhF2zzVh!$-A~DR6wT?hlPQUW;dFXf39Smnl7|BOocZt= z?TlgPb@kV#3GY*SbUbG$mmHXiX5lzlp2;u(jJ!?CfXzjDAVDbsAJskk?qD38#qX@RyH~ylNW3S& z-KiJ$p6D-lUP5?3fb3Pw<_`2dXJcohOiMDl8Y<^DgkxxEcNcZ>L^gT?v^Yizlx-MU zjjAhP=^)}XLL}>5B$+dDcQfvxaJtfr(ajQ^9nZz9+y%zeQ!x*3DUoB-%pf2K91#(A z7fB)Gb2S7F?l}62B>y(LN<+4X!umchC3Tqjl9y}e$11QZy3%6tv$;QQv^TOG3u&#V z3WUvIEhZHS8|DgMMqa6bEM7b%j2rU{b7D*) z4hzI-U}zgzXl9WrhB(;mQ`ZefRF>9QU?2~7;)xX2dssa30~z8ds31#?4I%1MI3XiS zWwVr62;0-Uy)L+IJhOte9gSUY2z$PdHWr)#p4y)PtcZg1r$sl>XsYuZOwk6GO&_>$ z%21~yCPb=g0!buhzQfujJRQEDT2n``wrQx5xX%IvP;}e^T`{^%#_0#i#oeE^2+q_I z#%vzjf{ZpxQzEuF6d02F6ApX`7`9HQJ!tmkCP;rjy4+aUyKg?E;zc$6JFhDOHLOGG zFcFWxS{QUZPpGg25tF==zUhutTzIiA?e{==aFZ>Vs@l?Ed+`mh?<6e;_V}~$E9kQ% zGJSF(U?}$z4z|~!f}iYs3n%>(_$0BvT)`QW!t_;i!u(Xt-ML=^4LfcJm%Iq1n#_78 zagDNBYI@5TH3Lb_IY?KDZ8#z)&tI6@cttuZ*GK=aLIhR`YL1FDU}prE8+(%ajh>`Z zvvB056;Y!gVXELhF*B6FY8#c1Xwd+ZWTbZ=)Hj|=QYo%|Qv{wyH9+{2M#(lGxJ!Ia z7Sd5py{6`-(w9%OoND)Y3Em580o44NZh#}4HhPuGg}dz2?q|7|GQk3DP2^Jv2%;c& zXw&}df?*4k3~25PZH!9aB~5c``4$*w618)4HzQ_s5c6;m=!jF9YCk7S4!x&Eie6COK;L=;$ne?G>~wEm)w&c`0VwBCS70-^&Mrg?&fI-uMeEgN zluPxKS&$emDB_3D9R04}`IDp+U{&KB?QFOCMY*Rv&o%53+!{vVmAL0#Of^8-6(uMw zTChItO3`i4J%rfmJ43MgpATtAhKx16B5!Hhupx-Uk+`2WG@#0}Fd$$*T)jF&^DOsM zeaiN&2{7|7Gpl)@J#ySV@Y%))G8vD0Nn~d)^m-a;$@M#%MgBUCc8|ir6$@w)*HvtT zKy-aEOzeG?Tk}f4rLFm(9F9#YU%n)gfTa3VreVs{&l;ZNV~^L@5+LJA3s$Nt}G4qO91kE)&O_U zO9g@92L+gl&sTkwMCG7AJBD7rb!Izawd4gkF}G*xFCu&BuH0u1kS(+a7c}dZJlSjJ z>v}t(Hi2pB^5qU50$GA^u~b#ZT4{OCXQv7=!sYk-z`Uc&GLbEbI7^%Gr0f6X0&A_{ z_+p7n!;ekn9Ak7@GGhR3@zraJU+yG8>GZEXC8zPk2#{8c&$1A?c)&fxWKy~mXP8b{ z19{OcUSA3A?MB)YC};werl$?f{EA2*^pTi~v06d?O-Bn%SG%E53o>Gs!;?d*6w#Yu z{dYoHq!B5}F*gqOx0ixh#eM*=V;Y_ocmu@PoKd?qMN zmrHyu-`Ih?Kl49C41-!xfYGCNBhl^sFuP!aN;#=;1>_KfB21DnY$eaLrWEvY|31m{ zrw^5_4`OpbVYShkip0|)P{nHFsj_q&c4KlXaq^5-yIsyR`VC1uQbdW_SHv=q_<$pW zY2mrGdqXTySA41fnJp-)?jFlDIIIuuAm_g9U|*3Qxg=82Tj$*@9d+9i#P1KRPAhtM z#8Iil>?QYpoXX!no}w@8!3%#|rowL}#SQn~?gpRA3>WCeLoaf6tDJ_WvUHY((yOfO zdV7X%TQ9j%dq8nsUlu?K!ebt` zSJg62j{jD&rhFjV;J?^ zU}Ka#;Pc)OYbS5yQa(-vC80G1_-L65(%M!9)$JzJ3UL$B!7ZvA+?>LVZx#FFj_l27 zvpUcjd-LOuy9~ugX)c*J-JdKSy>(6)oi5^MDF5@zLz9o37xRXWs$!1a-HtQX&BL^f z>$mi67hlXYw=?qt6D^Z=S4C~u8c9cJ6V$))V8Sm9svFC>=sDx-ge*OM)wo7;gl>v- z@ldMNj!(sC5j;}xQvnqiX00?%(_$zIKux&>=|2o<$k={nwYx7PhkS`QrIi!pq_r@3 zscfiU(TZ;MZ@A&L1!e=(Fh%m!!dMco7N$mjzYVdNj-kXXYljvvelxX4vtms z?;4!!FB#Zco?P&d^uA$~2~{ttw7x%O^|mje8Lo95VLr4ktu?5ct)5y_co#vZJdxK? zra(oj?2|S-B85Lq1_>ybuRAKU{uBITLL;puvG;`0Ik3N*)#O=(uIwGlqRK--);4Qi ziWQi`Tn8O!{bg;ggdl@i*>WsOMnFq_#Z5-yrHFeLPA~sc0eqjg#CfdGF6yUCzvo7h zzx~yw0>nhhLlKL{XsDpiHkpkqirI*vtoj>c8|8y4^RgZ{kZzbriRjfpe$|H^8J3~q)U3bMKUwrEMd$$j1=ZO94K9yFTa)fk$Bapdaz zvWBm!4y+kJrYbDQodc)urohW#H!|@~8q)BBc|XD!*RJulq;SOh=gmYZYoDX8^dwqN zO_I^w@B^U4hwnT^A?|7BMGJfW_awUWccSQvbo$R6FHbF!|Jm@1sU#oJL<7qg`&FNT zV!`$4T4>*uyDSRiDR!oB_i>9-mS7}5zVL$7;Z1b?dJm%2L?u&#yEzh`bmr$oG^0Sg zh&lH{Gfu22rKraYS&`J00GhZ^mo0-)E4SI9G+3H9{(rOAY*g$Fx{IpFY>9^~Zq4Kf zl$GH9WTj!(#>(FT3c1;9o~XTFoG(2z7TGaZ$jim4?nNOUl7ys`6!_zu&Vd!D!?_Tn z?lDK5i}C6kKEv#)73%YvG|@wvM@PS|=sUJWOxj$I+ERD`VNXlxRVIF9R0p)5>{NBa z9hK!_6b%o}3P=A8?*n-B4OU=;J(SESJ?7thowXsXc`=W4R`tH4)}1g$Y7bKBmPeOw zdemGDRm;1e_%nW~(U$5kB~u_PRDYY;#ll@}I*A2WRxe3>a28&ONsl^BtUisHxl3G!W;}9r*5A`KO2ue`@0H_Fd%r#(St23dcd+F}s z{$YF)Qxm{A%FY~x3Cs)Ue(?@nU*T3JCcBbS(-hnhEZ8CN{uoyC)6Ybh++YN=nLCybT|~4!>lHorVn(diT1=`!bhkO#h^ZY$A2Y zYXBcapHK$2WluDVW{Yk#*Udm!MWSgPhdJj(MEeu5EF zJJxDKCc@6V6^1bd8ClA7{N+R+GfP0P9sc5wnGSc_o@zXE7Hy7=${qTJRtC z#Fa6DsUEPspJhbYRqsLrEbj~w00Kb$zjMeeA1Cc%Ka6PZyVM(>?Ljx9yz9o!cO7Vm z&Y8IC^rR^3CiKC@l|+a;Z36vmj019a3oQ`jw-eLMa0x6@E`{Ac$9CP8| z5#EF>D_7neqUYYNoBS_n%vM>I(5Zg?<&PiJO-cQlNfCTP`;+J%R+(B~YW(_T%f@z3 zP5TL9L;SHBGqAP}w!JlXB;pcM$_s))EOBiThoZhjOgY`Dj+eV^0KBt*5wbC;-5@MT zZ4I%)ib4l|V&1}MClyCPTrqlMnt(VD^kXyeZ`<^>}I&s(i zxJ{A}PKJk$N$k(<^G$g2%LXEhq_#i~0W5&*Sv7_MqjxAX@0c&!e4|p>PxO79$l*07 zPOJ^-*OA=F2<^ac;L1Ln>@4>2NvkPkS2&A+hK86o^YP6HyR}>em@ODM_1)|6JH$j? zi0!Avo(z89vl`6{nhcP|ZXhsh^s9R%f}50N*G`Nx#7#v%XRLxMX$Q6ooqv`JMXUJOYPBJvVw-bESwm2HKEhs zs7-tqe;nb@u=j|14EML#v#H599JKM%iIVp%HWTK-f@@yMjDv;ve-D~IUa~@LbHG@= zb>6!(IS$c{Nmv>HuR5b2i46>XVXKdmANnW64N;?)r6|;m{soKinS!8i6N%0#MNVKX z9%@%GH)TjNA>5L^!%?P!i!=HQIAAAkY8dcKCKRd-3y|_OPsix)XE4#5X*!uZwCd)U z_}HWq?mEtlVN$fmJbGxQ?a%|+BeyDf@BRJ$Gl@d)b%UOsEe4Jw#b;OQSmxS0%(ydl z6%cfFsM&2QoDL5;J#NwQMVr@0SyCkgp%e< zEw7LD2C)TE{r085(WuEQ4VA1vS?>Id+uy`{EyOtEle@ho_Z-B6(8OyHmd)$2(90ml zwLYDcM>fp!1-9+X9Ls+B_L)3kzeWPd6vJizNt5eLQ*QPwBD3dXIquEefb%3KP6aL1 z*TvW5B_M*}t%hkBEtRNWLR*+;2*gpj^^i6oL{0(Wn!HQP7$-EP1GN!Y&RJfW$k-Cy zrwcCtjI2!1_8-(rqgyW)alC&Xz+XNgyb^y>BOOXF(tB=Ksoz$uOzexxB8}ePL2@sK z%Q%cdfKt<4t)?W_xbiwt1EQ);3Abl11u89KCR_KK})kx%s!_&NoNKEz{$UF8N z-Gr4$tj~Fodna_j_*^flb)M=9jM;FzNjB3~$F{(yeS`ECRX%Ux4v))yM{qb%@M7nZDJk=NeL-;anqHTL5&-pRn(raS+PWEUjF0R^z zakOy{{Gy1)uE& zUjGIpS8bs2%vm)Nhn=5V^x+qS@IYA}@c6M<3%xY1z&4`PI#veB@h%VPB5M1eBnc6^ z#Kfg_tAm0}JGZ-;U{@Rl&B*2ERG&!FcW7o%_o@}2mX8}IAL$7Q9<0qnY{syI+0od8 zKf@o0&YxrFD_G~&W-X=$@GxsF#li^3^wMM&zJl*n?~Q)+2PM7y>0fX6-%CrFJdSUQ zeYlu&7^xqamJGkyQqK~W7Gi?}HnS8#&0eL3dD~?$CZp*i6 z>;$DZoa$s`yj|8aa;6fg3Zi71D=rIDns;~;tS63qu(0Vpkbp9JUwoeE0ac>ohTHas z5D8yHD`}<~S`xtRoIp|fHt_gPU!b$tiBwyiLx|2w?$EfqLek%4g4g0xnB9oF3dJIHC7D`Q17!omx;9kaG3ZYG*kaQVKnjy zw0-q}ApD)Di~2mX#IB-Vp^gZ|QjRH`8H)z3*M_UChX?g_$bW%)B5y>;LrC5xh}+~* zfBj%e4Wj3)wM-S3xnpmd{bZbsPCyR_rd)_N_-)VH2xhYjo4-k1f{p9_FmG?{o57kB zot3RD#}Q?^MRy0>I>wGoS(bLOkvt2h6p?3^;K66Xtvr#k2UPEL^`K@dZeDXLe!Lao zUZMxCh?9}LCx2mi(CcqsRV}>fq=ND*%}PMa;6JEvWnSBCsMU&fIaxh*?BtQYI-U5kAKviOaZ|53{^xrNVtR&4(K%4?Ogf;b%y!?9O9ms zy`8}jK=wa#kk3nH+o5{d^W=J&REqlw4Ae;x=9j7ik~pYWSdBqpEC5xr<8f$b!BzHb z=2AwSSUsTg@3PaqdH9$`WRS4`(Ea2Ak;2QS!kkWqa=t4D-E97Hq8C zkBf?9IgC`<&^L2k-KM>Q&RG(t3(;`F4*N1R-{B&(a*mZ8J%)Y|m4vpYTf z%DnAGtR)h-^Y)7D0<2PIQ)LlBXXB(M|5E~Tkwpsj-Z8uZbrf?^mTH;Ph`vF&6^ukO z0-uQGmm)t9a4t!1KFEPf0c3m+GkQP$<9y%lMV!;f7mU$Stu-6easB(QpZKOLn@jnT z#pxL9M}fnUxQT#wZcT=V0GhZhX$e8sW&zxKs_3Yxb^n+s`BFw+%xh%;A7J z@@PJq!_lQP>TlFotLE}0&(jn>1EZg3b%SdLK!nc5Zd)>oEm;A*^KU-{_sLMGY#Hb4n-b;69AYE*E_XCP8sVrU7Z5_5O+QrMo0Wt7 ztw3AwMU#1ld&lK7(j-C{l46|tg%5TIi3j$fxr4}NgV>XWqq>*Y~XG#`=@cXyQmKLfI??UcV=L21+^oVu5BA7!#cfAKgR>h zc1%i}h|+nYrkkg02=wp=+bmVt#9Bo=mOl^djXbyCCD?r$n3%Uh-!V!6H$&|aUM`f6 z{e9^I(Nc5J1z@2})m@}Jr?!l9dh#K3N#B4l4Pd|V$kL-uD`VGabcz$Bkep6d#zS&!eE4s=~x83^9W)$UP5#TeJ zj4QBVPZLC|02_hIomH za$Cg|?{NWidDzd4k%a)7;UbW&PYtEF#DNL)I;VU5k5ugir0ZN`y2m-J82Cl(>Oxum zM~XOqk-?D1TvJ`oE7q9RNP@)zD>`g%BeZ%l4YHeBV{QiZx2KQ>_7;Qv<{vD@3=Cgq zRWuk6ZogxzE6akIK>IfCI?tv8jg0BF229Wj<%1D)=w zqGU&Dh`CO}ZLL3uGEjBjeUZXC;recpmkbHoM*8WW>&o@?8XogSm<;;xrZ<1JeDHGR z=({RhMWdnB-2_E1dw&GX}n^MKG1UMeqypfg<6HuZ8PaM-qI58Fi-YE z%HTBh?$iW@D=7jZi>Gs^4R;wqLVh%c&lZ-bjwb}5@bqM zeq-=7pO6{~DH%C(5ej{;koU+KgkKODGISh&pcH;ISlxfLt()Esq+#b4RwyLlj0t%4 zWVtCkDF@JBjx4H1k27B!y49Sm<6FUD`#+lnhQ@Go@M5I7?JQAZ!VX;TiQ8q1!-Gd( z%)2AKv=2y+`zjjzn$|ZHzP2HrOYC5sPkV7?TB8C!Lul0$XHlH(Y-xtHJbXp66*0@um(+3u3nVW7$vXl0Mvwfj&)((07np zK(db?O?t2=$PNA0^cp&1690%0+qGsmKaDBQ`1YxGAg9Xv8tcq{E>tpQ2fJ;cgDHG3 z46US#3WEIXo?PqscV~kq{hI@jw@*9Xua7bCYz7X&0nk#h{*zeaFdwMh-{ zCke~gP&D7&~*Ozx@6le;5TU9FIv-Uz3w6y`$_# zX>dvhRM?ec&9F+-0ARMIa0dTF2+ZaQ7Zt$4hhsts41D`R-rCF)+P7w^%RX$V@Rz@6 zCklwbpn=UbrVvv~&y(~)R6|W-#N+!(D(YW6}kYJIQGYBAW(ON-W@jxFKBDf zD*{KzdMqOu4o#Jbewha1`-%9eMD(J?>sPrY5PAwf#*q$&wOz1VL0yY)9@T)dV^;tHeHyyVo zM?rE}7$e@=Af&$B&2zGg9PlmAeL+p(^1E^6@|$2r=F`IJ`o6IKOK+-PT*@tJS;LjX z9DQvt#yG6yVziXYqKXK8poQ_DB0o0C-`{tx-!dG`Ti#9e_RoJ<@25g`(SN1SmE{G( z&dQUwf>ypWow2Q?v;>vWFizH`F~MwRC;Qw1n@vFdcAqTsw+5^rXTv~9D10m8LTM0{zg-IuEd$MYe|^E)lV zri{mdQ8=l22v?cO3P>M&4zUteD|&XQMISo$emkKCmxqn4wNblgql$ zJ~*9c1goadbq&BX=kq~Q2U(+|81TUv3#-j40a z=;v6btDF4HyH}!Q8`u9V5H!h9-W0Rhlqua+sFuyO89T;FnL=B;l6;9RMX^cdcx+tY zAR;d4uS|KhBm8Itw`zF&>G-E11S;b=TjkstQN~hl zjK2%XE!55$7Om$8|85qI0~e;})x;gA(!#PqnU>8%_<~V=<2}qB_4f9Kc(%kHJ-m0J zroW^G>aq1|d0M$G#~Xs_BvyRYy2iR&?2Q*r;o{PIPqjcv510_sx=GCsn#a?kwMC0a zY|^}99-I$Mrv&|l#Ugn=&JHGkEOB3gB^mzCWS$1G3_x6Fc&Qw4eu2r^2-8r%lS?# zcBxe+12T7#S@Z7I-Fp8wE5u6V^XktfiA4R$%HS{SwrhGGJ6M_g0h$143bM!$9W2e> zx-@-zaETH_ELn=`(h*2{K={;NwPODS9(Ur#&MgOkDVwmM%q%I{NjK9dqDm=<>%uCU z?E4P?u2B?HbbbIXTn3lLL6RoZmn)}5YF{gB-v1cYxvbd)Y_N^Fp#B#Oxg#|diyiwE zN~W=k`s8w&<}l>Btgd4j4zX)7kX%V|qDzVUWnCr&-t{cMRpoDdD@C1dOJ4Kuv%X?H zKokmzq#_P}@iztD%+DgaLHhhncmeLn!X=+j*wNVn!6)b&5vgoch%(Z5Xk_hvp!NqR>$Tvd(PnZnn?Gcn;Bz?Z)mVGf;`^l=26k@| zxZ;Y5Uo)AKn(6X=*P&G8Oi&4RCwBo zjhn590cjXJ0U$pc#X1#=nLr0t03?PVZZ?-=FJBf4HBoT@F z^y{4cI^wOpu20$WPn_Yl)|=8$C4RV3A7U}q%bNKrXezyu{UJ^Q>-O>7PGQf-zI*64 z_3b1yTd66ilwD|iH|0W}I>ik#l`0t~TprO+$yHfkzDR!8`&IZTz*60BKv%J9_~Px{ z#(XG@{^+l+5O5`Ve>5OP2^=elBTN(dB>XjxZ;f1E({oLV>8os1u3|xyr!XF4Ll|N@ zAfPP3c)CM^c6R&~Pq=*Cz;HhyB4MX}e@nzj`Tu5hU}fhh9HbH<`hl+Kkq(h(;WLDw z|AMfVZe9^I{Hf>0I;8Hs|Ib-E`kQ$R$0e-71kGdmul%wCU9Kv;sU&?KFpY<9JM9X( zev(rImq}-D>5uWkrqqw-sl$3IqIY2c$2WZe)!;pnSLn5EEu8V_MNYe|mf>h6DByT- zZ701U04Y)K8@{RAorrYj4fVsPlqwo*UZ1Wm=6KeTGNF&Sh4XSt_llo65FQu(esziY z?-L?cOaS)(0Y8N)6cal>5RuZ{?9Dmj^bXYO7|_e*bJu)gBLuoWeXgI2+SN@61l41| zmugj00B4Z6d%YR|+d&LPW}`C0QzYJ^evRQ>uv>4x@(fR7<0IGC|D<3P>FC^L}-n`DFi*P+`5lY6@|ugB86 zt?75}pGgrl(R2|U?!+j87?5{HJ`(Xt3Z-q-3P#2U{sR^#>-BkxKmI5D;aX!>P+kFA zl_RIx9QlD0D5u||0(f%_0Dsv1TwsFft;C-YOi-H;(`ru1VkCaVkAXG3OmD%|b}ZQ{ zZhUXnd#%#RYRA`{!ks5I5d!YS6Hrg(kI7nkFONE|^8Yq`zP!@$13;f4;%Cw-3TaJA zWBiq2Y*8?ztAGo7@B+HzEzkBXBlG;wCr3M7ORKUnxKG&BIKaLI=fM?=4h$U+7^@&A zC_Wm#U2)h=glk|T4Tg2zy9;#Z;u`QngphFjKfuk7&*Kx4yg;vb459;so>+dYA&*_r zEs+i+=%X?RlOD717BmTks7ujAd2W-^%MR(;p=4EH$l>)ZIQH=|NS>{Ys8{dIuen)7 zKiC`S5&Db0Nz?R_dc~ogKIh`OM&`GB*x*vevFWZ{vtgV!t@bK4iB<*nql!r;TX4-K z?vW8(1R^ukkfUx5?xpVm7VmUZ*8^JTR>C>LDb)%YQVx_L`#s%la4LXe1AEj}q&rcJ2H&`bE}2)nb^+VZv* z&N<7_q>&SRIaPpoHs;;OX|=B27hh5ZfRsATA+B{zDw~}CUY{sqxyf67J$Bxjphg)Q zL(fUHfs{=N-37e0XPAK(FCZT9OcG5Yd@0E~Q8yNFZGyt~-4O;((dNNME;P#ynUZrn zHOz7^ zf5Ulck0E*BODqOrM%6cTrA(~s6X9Dr-z$>4+fr~rWBddo_Kfv5TpDMV}EtTDk)`(ddpU^dD?bSN?>(ZUm0Cq?wI zv>uD~Lry~_0Jxel03C2XM9)~nzw1vR7x6*_!*UboI{8RFE>BO*m(Z}9Gj>PR1v{3b z{hg_gLn~3A*GFwlsq6~^Ok~^BfB>(^)Wy~+{-T==s}?UYZcq|>1p(~Xxma}foI%|N z+<2y|7wdpBr52d~TSBf{)Q`ZELIm5MvqXIFHGlDy=Zv}7UFyPNa?`?Bh=L@+F|B#2 zVr9I5r>Ghq+@3>lLQ`}GE)}Fz`dJG>;Xc$6gkE*}4`$s>}Y4#sn{Qk>ig%xm9BMUJl$-tr`w`XWh0*c1G{g@dcA|=_!@VFat zxSaDhTg`+R#RSByGZo>b92(GFCt=qowyAQ5DjfFwIs6-~9cVa_;dO4wIzH3;m4h9f z;-*{SUtFMoTF`Rrpw>R#>>B%NNBIb9oGa$AZQ9ta!?}CF_->^L$hgV-HnloacB{M( z+r06;A1@-xq;93Ba1y!=C!)(J31dgY5+9&x>ttbU^5mLVO`?gx+G}PQyQg`KFzft2 zkS5vODv$Ox814^p*TQjjl#s@(t*-1|iG>ne;S-D&Q>)wMuMC(9vb*;8?65qMVSGBP zp1i36K%hW8j!BENP(p5wy6t9^RrbE2TIi4SK}!aR4t-vz>cNjR+MeMDmC2Y9uoXya ztzi$b9h8Rrq6YdT1SJ7KbFA>D ziYI>JY|Sqy>s(kf^yAj4+XRZ{%{)^rJ0s;2@dic;D2JkO2)pkAhYlP*NZk`T^y>)z z*m_F}D1V`xtA^ro#|v!CxZV~MJOlPJmq=Co1HyG=n-q9xElRww_u3(>^1t*1|ql zBP#P#-~v1H0tQ$oKF_*=$HLIT=;wgNjOx>DlNmP)Z{AAzf|vsfw$C84Ke`@Q z9BnlQ?tznFk7!Zb9PUl>WHf?^S-)Mn?uM$X@Fq)b`TVfbH%9VN>x3x zV>AavB2qf8Y>UVo^M<{`m>cC#>TSHlc`aQ?o=W$bE+KT*2`X$4t%B-P_4+j}&Qe1& z)m(D9*78FFdLJ|9Z9(+`2U$Fqsoc@ShztUme$bqYy8+E#Tc3LeRO47-C=rIiP6cEY zNKTX0==0vRts%?p*12kyBQ?7kZOiZqTstqptaZg`7gt_BQ$%8}Mt~>m8!0-v9zPeg zbp1F3?&nZDfro8y! z8zI5Jqww53#qG#4Vri)>R%iYHRdf~$YE`&ecWSgO-lpE$KzpaX;R3T1_k%rQxa4aD z3)yBog<3_xnOueGpXzjf8xyu(YQ@+fPQ6b9gO-x*qBG`dwRdg?5T99pqEKc;BIzd! znI5o962-;$f^BA|ZR!MpNrz&N2u#HL{@l8wn+9Qvf%7XVDtrR^lS2$@^33Z0LrL3% z(>D+rvQNnoVM=%0BPowUw2cqUC_5{UgLnG#y!NsM4a^t$7ECk4>Lr$jm;cALTP=9{@q=Wx)QBl4 zKREa>q0uq*Xspsi!?Ht9Nf7Uf^`GEq&K_0H3Ix>_623{eU~e0{5)St!|i zaP1n&NY?dl@X1TD?uA$_wPvbRolCDcYTQ*Sw=2)UPlgiI&~>l1)vYEc{8|9Ws~lY;bd~AM}6%DN1>zXjM@g zPv>TqI}r;~+k~Z*z$^R+=JInFpx)KnKf+9zuIwChcuihV44@8XR)Ef%+12Cpi9!hQ zmo+|jd;37ojs{Ke3?e(ZTwVqIk#u0+*zO|7D&|z+K;++xj;v+*RE4F3yILT%hh0pO za5hB4mM{y4fR$|iPupE38WwLF;6^`aDIfZwsn;}$B+whdlX6`$sYqKY)L!SA89vRJ zVhM|fk5)ofyq>9IxPxT;QYoejVLfkiXtxV*#1pjO;DC%3x#2tcOJ`b8Wq-qEx{<-` zGSSi1KIr7ds}R=^>B9L@Pi%N8L?208hSuxZI8+lwb15tMdP-Pb$4TzwP#Tb!0>nGu zLASy9k15cbecELK?=ZW}@<;~BPbiRzL~@TCDpm5u4B*w64O9O7K|H}@6@rdWBn{A4 zTl2oeE_6NU&V$uKFbE%3&aEDovE5OO@z0A{pMpwHK^sOSwrIK3NH~%JEzuAUe0icw zs1D{YRW_HBOQ>fy-%~?t937SNQP43p5_*lueUZWNt-m{^HiPzx1Sn>DgTOeJ;ug^M%w_=+mGQ@o~ACeI(_ zDtJYYiFi?(I`+;hnr)1sUlG9D5(`?o+`?vJ5uO0fR2&HIa;G?a|H-51yuxgI1iGev z59q*!Zmi-BfQH>9y_3SQ*yX=x(USWm8N=U^C$pW3)J~?NjwR^C2vX8tE0M^-Z{&En zOpG7%$n+QU^B)BAll7F~tuBxD>}N}6Ye#o^rZn03jc3Qu145mAbT8MbkkCjp+eBYZ zdR(O{&_go^kOpf4*brr~22|gd#b5$J+hR@ZGNYSl0I`-r`a1oYW9Dr&E_q*lCEb9_ zR|n-XkgiYTzpv+RL7hy*F=GkceTC+elYwO+=iySD$UFY`85VG!+}CyKZC5uN?F_CS z-%P8{Dg~}Y#4EQ$}dA|VyxY3 z!PzPAuen;9t&8n;(rNHTs~( zHiE~!gfszT?knD$uLng~c>@{d&G%}kr%EuHt4Z;XitQK~x1{^Sn+$t$t*MXCXWPb5 zT=9zHoDtUVlxJQoh5kSp$svF7=3F7QVr%#s4I03VtuyU0wTt`j6*MDF;KaBjwMb~^ zl9rj&pu!K@MHsrg)i;wT1TB5wV zxNvcnpqYG(?0zxXyOCUBz9JTXRrKy_(yP?9s0# zlyX)AEVBuTdnxw&x~7NnahsZDWt8uZ_O&Ej09MFIehwoC=6w*a{$-w`7xlxvO<%YI z<`7-Z%ldI{iqA)l+_Y_E=**zR-MBvW($AHPNXf%_r?tLFQqk@S9Y;M$8(YG2FVSFU z2lOC96L1!D09@itZxblh5QiclH`^NT#u?V;y<$$`SM%a7#y@e_3N$Y~lCMYEKJ;s$ zFC9U)fDJt5d{NTI_R~5W2Sra8Wptom$xrz8B;$(74XlN)jS9>3G|&{ch$?mYTU13~ zadt8#F;N(Z-xU{Cm8RwJ@}3=^(77&mJ~1Q*^MnMs!cxWT6D_Lq=OrER`)+m`v~~Pw zb!a6vNQvJfgtfuzwxDW@$1g4B+KfGWCa!jZ;fNHbF zE-J}W{B-9A^OIF*OX(mH;Kb@B+&q>%7DE(<5rsAbl#`7D z*nlG6Y_`uhZ;>O2=ky(?!KTN3$XI&qU0bO>5Zr$v-drv&j=90!r{9_n#?u!?1gzfB zRia;NAv{~h8oevb!xDzGB(zIB#+&@ww&!rWF`%+e^YGDyjG*Nrod?lrl=Vg?KtH40 z{$2H4K*hZO8~E2~?E_(*sv@CLWJsoFI~+=o*{F%}i^{Uv|}l2{rsPCa9$ z%apP2H{@S}#p&^~GYy+C18G*=a5yVHRxf6^_3H*;r~3!{Z4uqY2i=Zm_jC~lMKFR4 zI-qrt_>Y+Iqy4!G2vQOKkz#Wvb2sK2HO!8kMHrV!&1*2wOVYN`rwNp;&zJds7)iBr zT`JvqwrZqM8NP7p0(!q$Vr?JDbv4W@#jj&$V4pWektR5_XMCg#2@r%$H!-v$BkAf( z(_xnzd4>2dp(3O~qKDuP#&G>{hj=mH0$h82A>U=~u8ooaHt;qYQ-7rtKSKN_V(;zo zgod7NS(jBohONW%62>1tnv&w9HtQSKgLg{69qpl~sw?d8GavAL5uC$2k0#=;FCdF+ zBseg46lzK1B)ykfwXx1tW`#&0fM%;p!foz$4qy9>s1oAu+ON@~G9@EAEuf!yyfUN{ z5kV2-x`bmMZ3c@!x`-0I+YMEffdlnAj4otERuk@3A96cYmIsb5#&}$E$~K*nzjacq zd-R%)9~{U*b4SH4`tcroaMvVgBv8O93(ie8v_BRUMWelZkc@lPmuz9iEms7qXP(}V z5g^<5IEgqU3ggd1eTvu4uAU@q4RL#(gzKRaHuuMzvvCYiUy6Lk4=f|uGHk&KjFG!5 zsc4LaYd_{NHXlejGV^2hxM6TCV@SF$Gj3YI9s3DEJo%&!Zm#T%F{FLgJ`BKHt^vG*NEuLArHFbZA+GDZk@-FDX9 zJI&&S7*V2KpV#VaHO8>l?1hzhs@odL=RS6pRyQ2qT8gIQ!pDFO4QdNl7M4hB0v!kl zfMsDciQjzed9XdO-{WxQ?YtV)k5&r&NfzUyOIlHc(AO@q6rd{Ukf<uS{*6 zUMRlXr0rhQ6_?>8w~LuKfSE5hn7`wjo`07@V2MXW++XMsasde9`fR690RmsR?Ln`< zY&n)`EixgT=lSOEZ$;|&?$4v%?B#kiD1ccbB# z*#>NcnAUB3&IE&NhVpNY^7o@Iv8av%W@s%chiYhIu$ZcuTrdgx8M|KRAO~acv=g zT7iMD^ZoR>Qj!n$gz-xlI-0`Xk>Ue%x1>Q~u7*ttQ380@k>G__``R4&_&4= zrsjgzYdI=}%1A1a+U?6o-xH0Yvgr9dpusO;_J*+1Z=L0%pT%+cEh0dG zHYK4(TV(X-tE-Rz=%!X@T|_L`r6EiJ@`Oxn^U5MBGW<2YO8iX>p`xd^D05DRpDs=1 zsYt3mKm71vr77B|%F_4EN!h@9_T6xzf* zg;6PdM5|rFJYCM=&oi?{TUfPLtCpb@j)PD>@eZx1qve13^5Tt^5Fw@epv zdR%JzP?J-?ue*#LEc!kRR&fkFY2ZjiSQ5c{7NLM5yz#BBGOQrNDUF9p3A8`6lDkno z>ct%!-1WCqL-)!wl=jY^sb|h3bsVF#Jzu_uPhVtSp%S^1|Y81zZ<~A#02M{ zFxlYfuo6+yg_Py^78j< zVjeZ4V!sdJxXRoX@dG#(;rjEwams7lL0;7BKLEqg5>QirXt+2DsdP#HFk%Z6TzG#Z zFUlS9+(pPlnO}yxF4$SgaBJhO^eU3)Mc+L|piA{8QL;dxsG%KV9Vnd~#eEFhPMMPy z(Hl=dcJXIf-=U~>OuX4%c@l(y1+_OBaX^$So9w0*OFaNa>osH6S8frn#S_IQ%q?cE ziFl1224@y>nvkSD+rj`(`HbR(s-vv&V|sV&nP_^QqarQYd00?@LW+c6Ay_Yw$J=S8 zPpK=&k3C67Je_fHVVEnvZ8TqSja1|QI8S*cwbJYu4Q>Yy;_*ytg><^@?|stxi!V=4 z_zLzl{iAjV0QR%5 z#JzIt&4fSKkJ-4>0og%W%Ct}uPVb;0Sxgc4{_u#wUr(fyy+H*M(QCsl0``m63Y`81 zeULw?=2tn?n!C}(RAK{IiZm3d{&YX1FItc>!jWMHlQ#!WCkS)iD9T`_Vme4lBO9kT zFO7vOmL2fz-^C;qaW#CsnT0UxeHJz96Zn4RGpMc@JG+x$`Cp9vkiTA&41%?K^e&N; zOwA9@5ZdmafVE9iWdOYY6MUDUpd;u4ak)p_NuKPoiI&eb3ySbQLvnzZGIM{#VSv)1 z5=RhH^^<^Up{jAKI~va%)WvplNCbe7-U9&S7CzDx6rXbGO4~GvP9u-lde^yrKLE?X zI0rxR?TxN*Fk#}tpqQqJyl5GyqXxI36nUaWN-WNhv0h43VqjvuhZfBA1GF|hY+O>2 zNBE z;&WGEZiX2F;#t}y;Qa4{U8X7CIcy4MDz`_=eBcNnAa!d`=w$n&P+@bKp??<@C=GO{ z@aPtS&FxYtRG{b$KUE(S|k$WNMG(mif4ur!EC zUsBG@!8YVL(kY%%UC%&vaWX3Zk3*26r?PrB9-xY)5L*n+N5U^h{8-Xm|ecW^Zbfs__=l-mu6TPN~Dys4^eG zVVBS=T%VgA@t`of9P(N$x(%WDS8!udgqyJKF?OPW zc*AtVJwCXhNZW|kPQJ@-QqGTPAjZQ?qdDulfp)`{1XQA2PY=vJ-W<% zQ$TShcwQ6txbpz@2y{tRVH7mVN6X0qrp#+wnF*@c=;0tsaIPW;C3O?y;dY0d_BQ|x ze;IX&)61FA3kZ*B-aHrR;Vt`{St)Ov09>KOLO|z_QXu7LVzw6ks&)zWEw>K#bQa+q zkLLl8F7f^o2ogYnm9{*o&f7kRE8Ur@zP+!LlgzQkEBz`V9%M3=fZ)u@IJm~}{d~JI zy>uWD2{53ITV&KO)sbyX%|;LH==dvNCkz+vcIf41>HeS*{g^l}g~{@cTv1HYQ5d8y z7qPC|R%BoZKCj3WAgMkdEY8_bEVt3Ltif-eqVozF@PO3iRXcWk_*dzs%+^E)6(K zWl6fIigPxL)q2n+gHnmc6oN!j)K=T0&-Bmizmh8)-S_=ap}`^A6OoaJj{K zGsS=a&#?cNLf)+&1={Mbt@FD%&8@<1hW!uu1uz`ydpWGhZ(OMbddi)YWE`e;l>|(6 z_iA;+w5EFa8_z+SG8u%L5FVw1iCd?wf{Kms72b#lnJosUP;BG2Dk8vm+AWq5A!CKd zZa>GWstYFB+tiS*wlGQ?4`Z3oD!aeWIBr1M%e)gc$Mqd|Ms47rI1>D znqBwz*TLFg4|8nf#Wm0DZ7aHiVBbl<9ILW=N z0vrjf_myV)KdaqXM-L$kgfP%Q zOVG5<`lL0b@CIejdl3^F^P&Y<44&t$;f?or)hn`IRYQ)&Wq5@A1iu7$3@I$Se(hL6 zcahs2X&3f~-p08u8OAjKZ;gn2U+cL{SbVL+g)rz3roMqZ6ZpIywK`^`iwE3In4ikA zI9VP*I3FyShIN&-_{Cm!VX9Hy2k}A_;+;lkydCIfi8dQ;Ttdw`3ts;9d7U7>$-8SR zBX)UoeV~J5O7~YF(H38|cLhz_Er`iBN04itWCWsNk>MqVkSVL^KlNh}WDg^xgKQ1$ zJ5K?&+!G$4tSA|hIk(KTQnrtPt&Qv6ksLOD1gGm})SEv-ccY64A=vY4-U6uu1=8)g z#$Tq#)f0)y@jCyIG47dI2~jykS-uKaKrdu|8|lU;6*6P>SPMhDzyImr#cUkEhcH-% zjm+caHKc%(`t1y>?kI3W=7L#5{{rh&R`%Dc!V{lbQ}USfL{3gh&-*CxToU`utse~k zj}{ieDlI6LS=KMu#l9-}^|OzG167!UnyO$bl53ekXg2cEd;>HW0Qc9_syNA&bx&5YZL8Y3^l z=xhM+Nb4-l@7HI91E_<`8*~==TV2-t2sPVb2#iR4S>1^auFfZ~2Ae`bop8Lg=d`nt ziqAWYoNtJotN&?loGcK$j;z*L745B9F&C);Rj)B$N_lGagvU$6Z!8v>scd2>5i;m* zd(#7r28-zs=jqn-tc+CY)$i^N6=4z?Z>I^wx$TL`w!4px8!;M0iw!jTOxqdyZ->lWfeDoX6cSA z`!1X#y&c6$Q(Pi=?_AyCu!knR8JH50DvK8O^ZY~J@>;4hZCCA?6afL$^$f}ghx_I4 z!!Bn-3*ni4J*T(v3IDk>61?tr|1a+^JHj%lwo9N6Ek3j~gfPSXFE zU-R!n&c9G*-K(ByPP@B5HB4EI)=)!b&?V(=(Vn~=!D7bnn1(_{5n(Ar`K47}0`Qt% zldrBxDnc*sP-TCtS5QFV^uJZYm-!14?gOmF@R!Mgc45vQ9rSOpdH(ZlT91hoU3edG zmvye7N1HUhzuOJ;gf6a_)Y@*_NT2{TC^f4hY!g}Q>O8x{aup%Hnv`L17B;lZzoC%q*Fts#stn*Y5ZS8u&En^D(09ow>EpX_3^8l>EjjAOMY) zDfpagM5WIm695t#b_^kUhydk>P>tA`6k74T@IJ{*`c8YVbY#ez1_wr620zgw#vc)B z`BS0~4L-T%L7a#6jDMlyFXh!UDc+f{vk;fJ8B6Nv6kvXl0gTL2 zfl7&~qoo4cM-9z}Xy6``p>AcmWD2=z_zZ-aUPs++#e%#onc#)B(oa^JQA6bF(q@y8 z`PXci+PDcn{G7iq2I}+q<|>LN0Pd%@@kWX$kED;vPo?1NCflk+l=mOoge;tkS-@2Y zBdUHa?%QfGB5o!Mh`X|?>#{yYmQEZaMa7*WEH?C=5|Q&<+YQRK9iMt}Y)wWmJ2Bx* z4NJ;~4nB>DyQK}?xo<14#Zb~E64FP$Lk;zos#q_2oqn{2xWcflKi3L6S!C5Z>b;ug z=;FYOF_}M)l5X3z0r_J9Vm*ACq*zQTT5u^Sic9w)IcGtj9csp7Lq`R(9P+!uJBhUp zh%ug#Z^DIW6Zmmpe!Q-`O8Y$R0w;F83GQ{a0=PkIz~uLKW`ekw!V`rg$yhc3C?cl} z)%~Z#V9|P`ZtD^|MTANg`c1Y;of+?``nmpHs zuQuCW3!peT#I%6z9ofZ^_4D~F@2fgVm|xj9D^NgFbKokQyj%6i50a z_eY3If!R#rRFj;-M+e%xBTPQZo|mdtUUsL2IM5%sU25*f1C$c(&wdQ%AN6_J;*vHTsMco~ zL3GEJ-|eD@GLC^epY)jZZ4{1C6fm)gy`6+BX>x(j#|)|Q#PL_|>@##v>#>`M#Jn5W~ETTTMNld2vl6;%8~Pua3#A_GMq{ zC`(l|xztY$Ga{$V`<5t>VHy7oaKBSK$k4&p)z{cq^kI=)S(s`r61hHz+*~O#j$gwY z3ph@MTQFzn>7Ch4FHVq>$JbtLTWC&Gw8<1&Je9O66<$z8x6^fWGfgou-TgaFF(!Wn z)U6JN5Ou+t6m5R~n0=MNfQxSqfNN^%u6(8IpDZC|3tHb^TNITqYS!Nwg~;Z)i@<%! zFkAr?m*PHX^9=yKy$g_LL?@LmuYsFBc{&)`}# z&A@)~pQ?Y1jr5UcS_)e+3TYn?p;$o!Xttp^eJwZkmOUhz-NC|$+ai`wPRYmd0;nQ2 zQbcFdjI}uBA%zG6T7%V=EQ>|BJgZ)^ZFM&LOCMouDtIEeF5*(g25K9kgOoHC_c=oq zE`j0|*|vApT&WtjL>Fiu_=+1BGOUKTigcIRBO9eOI35(FFA$@m~jB*y>Go06lSfLwe`RgH*~1wf9O_f*3(`yXFiCY69g4F*EHw}F6n^BQE~ zjvsBi&}_``;lbqhjJt(j^FjeWUSYG+-BBRrOh60b*FLpTr#*u+*qWDctj6DoWig4LM!1Q#4j%f5pKpoXviN)?}aTo<2cPUH7 zg+hpx=i+?Ei-1X!TolA(h!d%XU;MC#tC0Fi&;>y>wII6B#-vOaZd~%z)3K;KFICZ* zzwydm-1~k=%Cfa*I`yX2DcO+9aYZ5QZ*nmapz@ z`YC$BlMjQR%y1(xY&KM)g+Ue0WD|b)}Iiv zPIoNb*62|p7KX=^gESnjpnJ5@M#VS`>1a6Gp9dZxW{XX6lg)IOED^^n7cre?%ho{4 zU4*iYbsd<~{-hHER+_rg7Xk+U*?&V4j>ag#cc7e zy-3H?(iiH#1b(t8 zjYEs*bWk%HGJ+gaTfRGd>rtQMeglgjB~B>7!%JikN;~Dd z!8UttNfz)5;KA8ay&jAm(fuf&KuXeM9VEqL9P&^i_sh<{*fMwr zIWpf@>=B~n>*)ZJnkF#zoHoya!$aig?^utrB^0dDi-|!_ctPresMk)?Uj=6hUJAJR zjuvh zT%Okf_op2<+>cAVr-QOK51hL2WOT{me5K5V@;=-qB_P!wUpn@yyvy&p$zlJJ8QDcD zN|gy-;gs=XeRpbU^gZ3-&bK;hr@)edV9X ze;atF@G6sp)c|EWXnP=b0k0h!&?PTqlcscb)^oXl#Ec zt2HTC8!84JE2nQX26OkEPn+P#7cr~hGiXHdK~L~ZHal$Kd>5H>PU<^z!rS$qa-Ef$ zCb;jH0xQeerF$L_Xke9C;j}(M-g|IRHGs?5+GRr9Me=iT$4}ib$K_&8T+*2U z8D#B}5$P(mghqz3mKN{N7@+CuyPxmm?JNn!0Rb$z#DRZG?wF6d9MXWa z+sQXPZYi%^{5xD6^IuQlTe{<bZL2J8qF5S9;f~f{K@S^bS zip`^}z2gKv^^@k5b(`G4Q&~P9RgEi5`lGHDpZp}l2{_-L$k3ZB+DG3<@wxCfyw_bF zPI?~4yAgkxQLRLJC{esONG*iOY0Tk@q^uas-f5{cz)dY>y)s=#nF>>fGuD(&U`ZMP z)S_{owFVwa&rjZN2zYDZ=)m$INQYB}lX>XFza!1xA#0PuBc#lclxl*;?6?njBML{a zxrl&QOBoO>9$G>zA>mLaj(*ZLzw(4n=HpPI-dlPc9Hc}iX*YscBKfOFH-dr)!E;e< z&dRx9p9;hAxI-*jzX74L8oe}}1s1UmWLGh@5$A+jnYWlrui=u$FCaExR3Le-Y{GbJ zbl6YI#Un%frj=mWe+OoK5XI2xKKV04SS;lERJmu|JTWYFv+6S4Kpz@r>#0*LIncx6 zFCmdtXp*?4#|?$)?qF;~4TMA9mHgr>!;T1vhY+CLuS%XHG$*Hqiv_q<;$)66ApT7V zxd{PkI4%VmZ7W4@cQ4Q#Z@o*V$9n`0cbTLF$U3gbN!V|jNg+}%F}^QgFD0CJvI+v? z1etK#wbsQ3+$}**M(MfHP&-v+2ziX0Re^F%d-#9KVmKK914`~pub@$6UY6BiGkeBwHsgyaUgIU(`_=2Xw8c#y_<8}6x?_lOwe37?8 z_}5`ufWM~Q6DJt{qlm;NpNqT#ExFl;|6l`(0W* zO)uMSV>VN4$IlScJEV3WUV!N4hpmERGIwkfm$Y*lu=&o9$p4q7?}dDw0S~H@{F6nN zVq*b`YT?>8umfwdm$7V9;Cg`%)oMotL0?+C3lF9RuYY(IBVakm1M08^i;)O}Yj;xu zJVrH3_<5tO(?Z94L@ZlE?JG`V&*W_|M(KG3N>F}`YAig(7%BGO8Y)76x(= zwy9{$8~{lzZvI(_;osCx8cQilbr)8HWK4}9Db*U6oNkQsresZ&f5w01zRJ3sw2fMOY6pTB7sL9FZ@>SDujir&n`b)f1au z3G)+k#S2AYh+Dp+k4+dIwJ@Rd{D&l%#vAjg1-{ro)7+FimsVf}Dtn7pq(A>ZM2+T? zrbUgiX&QXKngVP@+c#s57IT*^Ehmz1F&4E9L>YAf|0KO$1-xwC4x9tm6u-z)!poNY z3RXtzig-+m%3id$vxjh#TQ(+*OTCEEP%ZgyE-5P2LG>JchXz*+m03Yey9oD3#ZwW7 z>+Xv0O9kS09|N+X>Me;0eBBha5E47h$!eXgEtqQC1Ejr8ID%?0hw2fn%btM1k33s! zxNIv|`5P;0Y(w;~g;yat_LPTH2g_)i4Ma$-0myFh5#kt<;%ZMdVn(Zw?KAca zE#DKjYQhz8vW`}b5O6^?@5|r?k|`xrETVc6&!YZCER}zDO)T(Pr*!g^3XA?+=Bmw& z1~*R@b!fOJPG^}$upB%gm>O&yY;?{B2j(z-%Xq%7^-m4WOaJ8_#xQsY)ZdPk5Dda~ zSVG^k+~0qrbfR+^ou7-qb3a)QlgzH9P@GSyG?*^tV9nG4!96j=tHAwsDfJF!Ae$u( zpaY8a-&|yRxfH=sU_4Uu6_%i3gIT$+gS%UEe-$U|Em-^Z{pWMG{MlbWA87i;jf#g9 zz8ANuZk%Z<2gdGT`=r!({axZt&?oJvI_Ju?`E3>MTX_}w#xPMa&S43JEX;LyY_QjXHk;m zBbqC@O2?1@^55$Jzbm&_+Jk6FZ-6Fwz-2k$;Dv-Fn}wlXwgn4FJ%F(}ROVXtuNoay~c90IqF z&~Hc_73Rrviszmu9jU@t34^nIaSHm>f~*V}PRSl-rOeiUbdfF*o$4hKLsQ0+yE?v! z_jDoDSES8XudlMc4ol_w`mwaT?mp|y*WB1nfkgW?sYa28j=t# zu=1M}&3CBjv<>WhF!AOha@TX7@H)20UA@smhnxkbp*kIy`{Hq12_!`W7_phwdMCGh z{PJuDMtc-k=MXj}*eaE21_?y2{*Un6y?k-#!1w@bAI&kZ#nc;#e!)b(@;60YLz4QL zB2Q1I9BQR%LKzvqs#E3e`dvUMWfVTV!w;hM0f3#YND+b&J~HJrnm(k8@YX}U+2@6e z71S+!j^|(``dR4{It516Q5u(bUM_gvg7)V_5Yf`yN}3BecVYHW0l`*BgIFfH?pif` zB@gr?2)MjG%lexErH_}`{2(W5%bJ{bCk|_idQrqcv?EW!QMhxtGC7%oBOzqf@Do)` zKgNByVTi8H?PiRi<_`4lt6lk(Vsl?=K=vDt7zPDMMdCvs>)P83#2F)yjwuh9D;F%b zS=3}@x-r-jopnd4;h8z71|}%JQm2zUGu0WK2@$%Zpdra?uiA$cq}8=Rinlb(V%K@e zi5e3y=jk341=maI%(tW@4?^`+LVY~!ThGuvNr+Q-cnIMSH*`q;rwRQdANT?@rhrR< z&mAjMWO&CYvDrf@iQH?uCf-j*vn~t;JztI`$W7T0c2a85{8;y;YYAbG(xb#-5@ zb?aXGxBW#Cx6Tp1q;%t4?9D;~BCn$2ffKl6{4m+s>QSiEdSb=V`%6_t^3<2DoADmMd0VD~Cnz4W+_fyMps8hRSs%g-Nk5 zQvkGb1KNMQwADqt5Zk$F8zc=oux*8}|u45%d6^AIT8$CBF2%IWq9< z|A286B+8%*FkGVkK+3S+HsW9AkI6kS6;M5c-9yuiWl;?))!n2Z_hg?KC2z*~Kl0N| z=g-RNbF2aMleVl_Pa=!wZ%g?4=d&8<8G@Lfii(e>-=3B zx7ERmmC^jS`U!Y|;2_d0_wg#wKNJ5=PDwBqE0ha-$nI?#ZJZgdWZe7mDp=QygkBmC zSV=M*gIj;(zQKvHc+VbKFT#|ru)uBlRb_`I&7l6s&k04hDx20rH=sX|is=OU2;F-v z|4x846P?_yF%Ks7Xt*n>=%s~r<@`9<16WMi`N+{xpDqs~mu zvE?+owNhMHWNHmJ6i~JWaog1jP0nMVX}IL@CRCqgtRTm|zjo=IoL8N!1nO+{>(POw zKlfq_NQdFNFG%fa%kk|-NfFVAD4#ELe&?r?NWF1M+Urh|q+zf1@@x<=97JROH)>k88{7?$ze9`$=46$BH^71PD^+#us1^y^{7Y|W@fad*Yp%6=S z5NN{+Th;MECLtF#gt7(!eA99qJT{KVa(rO)bVJW2U3*=^p+>;Pvn2F6wpO(68OvZE z_#zjiH6K+;v?`r^nC6S+4ldZ;12a_nQ zw>}F7eY~vEMi(mtA4vg$>-NwB%Vj#un;V6MXJM8ZBie&}C&|XEH{J*JAO3oa++dM3 zLm!7rAD#?hA&1djDM5t#iXry3=Q8SBNd-&%my_J|5Du`0jtM=KxT@NWkJ#POU(akb zMS!1D20_uYhex2u)-u3CN#Ji<5sH>NDxpmuvl#*WRIJw`yP6>vXz%|tN zd(#apjv?+>w-3dqcA$~?z3MeVZE6!8J~su6#$|@8SjK%l)@OW6SG5MAj={uN@<9aH z#gC-|+qf3=`C3zPh+)>LE~Usem3&VRu!HCXO=5*>%uvKghYtkce}=}dtGR>2;?bTc zKUEf77+It=+|Vd)bqsx~M|!dyU3-g=CL_lqacJ`v>F*^85ty&GA_W0JvC|aZSMA6` zp%L$xf)Z(g4zZY;^(p=y@G8l}XBcfUOfo3x){*=e>st5|kIw(z6YTi)aNoRd@9$A>Hd!DsZNoPj zL&8355yXg<^X4o&zji&7l`^Y;hLY2(zo2b5ZS}(Vw;l$DY;d*?lbq!szw;1`eA_lK z7i(_}!&v)I&$6EayOMmmhqW!oBf-Ufu@=ixQjoL*@R5TgVx%WLm7a|(Bu$%4YspkC zpuiSK36**+IlOwisvDeel1l411YkXuS)%vplR+A?)Mtf+?(HdaJI0M5@8GxElFTv{r$Uz6&zak{ zd%r8k?R5~bIcHNsAL1q}E$>cu=IKpH@-%C|ylsFC#^x^mVIB4jzUy9uPZ$ovFQb^Y z`iXhpjj@5f5Jf<*j{dbqN(REbso2LPp_istOq2FdA%)vXz5wWdU>-Fk3`nh-CK%!d z3R@5N#R@=cuXuFkZ$e+F3abJC-5Zfq@i1&ix}~LwZdTN9TT_e^O+9%qDO@C%k=}T9 za|RK2zu6CfCaG`=-g6MJd)75)k8d56S+q@peY6X-3=R0+x3SmYd;Rc~G%sD~sDFbkTUHn|XJ#^8N!V5 z9iXYR7clG7QW(270kh4?#<~WpU>-SBt!w4fCb*3M7R0 z9!Vb7u-hX}(N-l2^9c;nc-^0WlRS@!1NfCp|7E96YGNtLf26fRjz!ZQ+|?dtC=}fS z-14y!sR8V7E7ct?H{fK}msEOWwi*dK!wSUwa6g_#07qwKSQGbg!Ve5Mfk~Hq1A;lT z(AvdYY2S{j!BuGY2w?M;HHnY@V*W8)h?yhaM+6;15a<@A*=#Qny<}^SO1tm z9u@zq?_w7mzE#r5h+@EF!p1sN<{}4c5#Y6 zrEM)c{s)z!;F+#A(4+j(NklA0(MFERk^P>fIU(8Td|^>KF6Ef+7Y$r6P^DuHxrH7W z-y+O0xp7dnHWv>G(i4?`uk{VR@f7DeKibFNZ5{@W*& z$>gT#2>RVTgMw!8?cIvbEazM9bEIJrrn=2g$91BXtL}HW*TsMIj~r{he8Li@1Wz48 z3vt-wS`q`+%(#8gn?o5ze}x$zE#!`BGV6}aG`Z_d@U1c51H&lnzwxzY zb~27lGn1-vXm5wvC4-#3jpyWfqbMdZ4^7B@K6zNebVjspjKHSL^1v3|1phIRW zV5_>-lWsw9mKBe@ZGde2ni2@fw$;|KW38H{J>mSR4;hA#vq%v3?NN|K2O^bR?wN1; z|DVpi@1iNV*A_s7g3c(%9?|nH_o0YH_RVRo-rk!H4;W!^KQ08haZWVe7LxU#qW3_wkW$jgrhgyZ0IRz7nxLgMPwJ#bIrb`=SjB(TdEd=r%sR4fJo)^Pq<~12WzQJe4ZUxA#$V*W37Zmt}7;l zZrvH(>SVVUD^CS99k|wm$7BG4m`c9&O_ZbCf55OTc$nT=ec^RWPIg9+r%|1kR{hl> zp&&C+RK*$|Lz{J0U%O)forNJx=e>4%zAGNefiI_di&#-(c|rmbp3z&w|g? zg+o}G9k5yPNB zXHZMk;~6#Pg<`3eI*5BL#sIGEWrAf7a2@aH>~t!wnAb-GeMSR-5zKi9q-&G1_<69i zkjTh+8&_ogat7nyaQQKCd3F~SZo8X#sF+=GNj|8wWI8(OzP@eEF>goS3~r|iN+6SN zNGq-)cAY>$IBeBH13orFJ4_Ykkf`sCAt#Se7(`3iHRr$9S~@#bZ{0w&-n72)pXL9n z6*c~9z-q~zy9$NDp(#1C00W7>YVJF}W0q#xs(vd{phB@BywAbg?uF4OrV!kg5wL~* zws|1+1=+TkO;EcWvGfW8EzCZh<3swtyj0D4WA-m}Hr;Zfioo?1e3#KVF?Oo|214Im zT>D{9CQFx4yx%*s)y9os>MC}9I09I5eh5djt)|&!&+n%K02trC2K9)y^P?)jBM%^7 z0Zn9W@{;W6u&hVVms|pOwFZ}(#4Iz=X%y?*r{_owFN2Y@W8?8V*aySB2g3?#fXuFz zqVyLq%F*H7)un#wc%*0GZYq3eb%gSig*Oq6_%fbJR5geYsXL!&7)iu?+jJ~g>`5ZI zpb&DiEi0V8qL`Q2?XWQJig*B!{1dXj8my_cdvsWF4k9e`haSLQQ}9#%`^NM13plaq z?E!qrU7PwHeo&bsr>6^rn%{2^t?FJ_4mNa%9Pn~eM+oZ zQpY5$gdnetwnvs1WDg|l$eplog2WTzuPQDW>uzQV`2u};!Zr(%KXdPXD>Dnxy?_Hg z^EY%x2&vWt{??8q_YHo0>>dd7w3Kwj6+ySKHx&}gK{$Dvk()4tV}c2a&AT|{isY%@ zj<=l|4H`r`&)$o&uqL3YG44l_dxThWc`I3Wz)G54ER(*M^%71O%lG>*060N>5j>vv zmHdo^VEAr0m@ipc&oMD=SCsx;r3$hkedxnB-KQC3`Pu&%?4p>U2u0g(28tF@_^?tk z%Kd5URm0)pr?S^5NFB11pe_`+&$O?G754-TAPLV4lXrv`c9Vc9(P7KS9`!8N5?)NU zEI~dy&{i&`hsRy#3 z66!dtgF`|W)HvlDvi>)Rh}0<#W;w`u1%&@?#d=*#`Le?h*@$~0!T-e18(TH zb>+*H6XM!_V{Cf}s35x++&<6~fB#^HnSk~F<>uTcelCByFRxK~+2|h-TiHBeJY-mL zFNjoFe7|bmS!qIv!tev6H2{HLPlk(~w03*Z{{Rbr=Nia34S_qnHP>Cit1G18x^f=V zDBngYp6D??g!s*|ZvkbQB~QHWTMcWtQPY2TdfuP#8aB7iw7g+f6--$*ACrfa{7@6p zX&yG_feb+Pg>kcfM0I~vX}j&x$fL^7I!wFpORmAe!Ie(wW0|;uXL6$`({6gTj$5&) z8mC^<0Cx0*u1MW^bhYGP!(hAmE}a=}NWaS`Y6}KU@T?+|>$R4o9TSfmB+A~jnUkSa z*8Tvi%NXi9Ybor3B{1Q8s?)-Nu#^P$F)|Jbl^~3x**A&iYOk1HyE+Z@W(~Ln$yYS3 zQ*R`PGNq+<9(%YeGK5vhZ6Tz?Pm}+u;J!1!!c#}L61ZEl{ z!tt1kF=?IDuS(A#vi(Cnd91eA1Q=`P`YXPWG@!g&;RB&42>me9%!)umz=rymo#@J} z@}zrefL|?DTob?^6Ne;C&zbd+9{4bM!jxDW0Ww;e=PBL$h@O2z&Uk)Mr4Xo{AHYQs z$1-wfRLop7)Yq>yY=ikF8Z|JF&=g$l$Ljg)U2EFtJ9*fKLx+ek${Gl?9{Jp?3*aw{ zhmS5;H)9d5UZ2`xCj9-r&HVs2^U~zEpQW%+pI3Aclz=rXl&{8H7)XY^k)>_;ZalL&@gEC;%X?6MPRoHQ!H<=zTZ&%~NQZS-QYszK| ze}0E<+Z?u+3kb~n>oUuKUZ?|nC~8XRG9SRmV>%VZRJ-7kb~EZQXa7OmW_NvjNv!T! zf{?6w+*gLvKchr#DX*=Zx7GB=R|xjY1!5IOHHGb+6!R8fMokp#t@Lzg%gZBm#0R>y z>kbT{5u; zc`3wr@D397Oi5v$-tT+Mo6KOpiQPn?6+*;q#M&{v=d#%j``W8rL2FnEm&UC2u`Qb5 zA9RBdS2WVbVadMr2w!}_44IedKAm2!4QBkw$gR!fI*hVxr4^qPV4`A8IkPGMj7{8E zu;jrJ{BF6qe7Ik1y>3V6Z$KvL<&`s&ya_U@#W^>F2GoIpp##{>L;;vUT3Q>s4(Q`t zj*MB(`gyL|xHa6h>Z*KiUvl8o#vqNiC34B71~3#0*BXBiSJ+}GmrX0RHxymtW$Tq1 zqWiTwhM#HS9DeuC_KvN2de)v z2An<=f9b5B0~?jY^z7g-!KOPBTX+PKn(u0(JVC+7RL)Ab*6|9PKz{-E1o-_nyQzN7 zJ_l%+ORY8dw0-vI1@}smLc0)0N8x&iKgLDo%dS!Wm^wHjcBVJ`^9e(zHtXPG?;?C0{*62 zTpNg-fmw5sN%FwMMhe*vM4(*Xu%J?;Hnv$>HS_PR4WVjfwexf+6(={*GOO-TK6&_YLQ-zhFEM1?`3T;2!A>ZqJ$BTmYG$pe>vHia0yg zL>z<@gURARb1A#&P`~c&JO1#R3igxE2$TYhO#qroFa<}3rOmqjA;Xtm+Jnc(dzc?& z;oLf_Ed5eb=^b0n?kB@eHb?pL+c5F6)IU7-LnZW*+owX-{qNn$$$@Bi_`zJV>um3~ z_?X~&+TI}kPk*f1`Dx?znKi?13wZ_Qqyohfqy-DP1eG;Ry3%NOaLg=g4fQ*8Mf0TA zJ*gGFUVgioj%F>Jrg85Z!azT$0g(Z+;b4DNzDI>z3~=08OE?T)RL16br?aiyT#6$V zqmL(6;kz+ci=OL)M$zZ@#-JNVo=@>nCw)63bhb{s&@(HH!+OuB%?AkHz6-9iZcIU= z`5Xo&&5~H!ULVto*H>nP!PI793@WyHp>nc-vV~ikPs#Hu*<`zDK6cn4bvHR#Zu&sq zL{v$?q4F&)XNlNQDBu4|$n*^~z`r^XUxT&)_R{~V-7)BlnG1C{PkI%W*KbZZH1{?01e3U+-F|*Prrf zL6trpo=Fve?B^W8B2lKwU?X-?px5Zi!dk-l5_M?s$4*k?OC73e>6VV}rg|4zXzq01 zJ|ky(8R!t_z3!mlV@6V040VTWptr2#R}V20tnpyCG_LQ`xMob<%O1cJ0L|di25Rw6 zatZ)G3(u9@(r1GS#^D1j3+;1}a&2(Gmv^On8U@r-s%2D7YjV6+}(BGmZ3>Ua@Z$WzH4zaX4jrKc z!eX2dYJ_fOs{1Trt@o}*>dJ)C+R{SPN0R%Gy2D0dmAXU;+>q8gEyyN^qY|^z{3T`9 znjdn*(?E47*ab_K6GeAPwncjTP{IkD*szis3t)N>SbhQ>!?iV{X|E^N*sy89d=J-n z!Rqz^Wto8?&5uOb4r_o(6F_BG^G$x>Gy#9xipRDgvO|EoL04&Qsttj6!}d%lKh1R} zk~+&fPq;y_R_IM=%J&$iAk~NtcWV%9T~2g&y>SaHDmS+N8p30Hn_(foOVYcT#>p7k zhxldNZ)tJy8;CJ;b<|cdaCw08AT;Z55CC{rF-@ypvemODDb(kjc25M*8^y7S?YS7D z;AxtV^HXfaODq?AsxUN@m0FY7WO?V5EN`Yf)D*$TyR3BKBr=1e#zHPZG7|9k`%Z{* zZLMUVEho8qJON7J}W^fMVG1!y}&D(s5vNUG4O!pOobdqmC8b>A<+&b^oMgZql z*HXW`D?7-}>H#*B1~Gkh$l#vy3$rJ4S_+-@{{2P&9l6u0Em?wwC9k%@*9grCo#7`6 zP|eJbaGWQA%hlvx74qCXN@6@duRzt-PJI*oUaWKHn;1Ku z)`+KH+x_n5_ENyplx9nLwtDP-znSVTKg(7{)f-s$y2t5Hq5{$9pc<+Ue=2M`85HP% zh&*Z1Eb4gTczWhr%cw(R*y;$PSO%#KK-4l>Ytu^kgXzfDdjmW|q(#8Ba-U0aug{g{ zQ0`&pbCB4;dT4j9?biQj3HU7Tc%wofkFJ-^%xXCnSHq>4p_JdeXM)bBgL(9tNmk4C zPwWzz7WI7S!G&_e;J4kn8;H6Omq0gu2-N#6cW4;hq{hXHelJbt1ESqcauXs6=(TC+UH=VZ%}aG81tl8=%-x zN%#|dSwrcI`z~F@1I!=uIGJ+1$R-wEYj7>6Lyg&_3yhZ1NDS0OQyS5ov$#p@;FBry zlt)kJ0KfdMnVh~oY;cmG$%r@U6#u#){_KQ7^qfX}*cKwQLhzNqR7}lca}vDUkH8R^ zKH;8NbXlCQ^=5IDp+X;fi-Iav5YcGnbEO#DZ0D=BRu+11eyt6`j*TVqQi^Tek^A^K0!q z>|pEw>=1568+XQ`rID7d`NfqBA0j4k3mFPB6P$VR6w)wGwJH{*LvxHu5hH|HHeCBC zx#1ZnL7qnyBmKMG?ll#c_V8VUNGv#4shDJ3RmYh(*a~@ZvZ}F?3loCu31^2gL_6{1 zi7fnw8f_eU{>%zVS=xwNpICkROHxMqW42eZA*Qv0oeKAH`T(T1Bo5KR9Yqe3K}hXg z7$jo-es$m^D>eCRM)SbQ;L7T0=x6cl${z~p1%CrEHV2?+QERJ|`jcl)*+gEvTAik` zqoA5bT=)6MIP(gZN-k9C&~LZOC}!swy7+xjFFF$Iy#u+$tL-Kmjui}5cAkk;K3+Vq zQ`DOBFW&+>Bg~>q$k(vtMqFn_4roc=Ij4kVOf>oLr)t*@s=rl4Ae{#{0W2%wpX?c$ z29JV9N%s{#w!G}l7-V(%*IuXkNbDW6=^lRQeZ8SFHnR*&1xgu@+>SJl#{zJk!-`Ezh^;mdB1Ze| zTqMLeG(O&@LCuZmKfq0b>$(|+dtxpKy5N9ZkpMR$xHgm^s-!Qv5|nOwb|KB{ZZNZ- z>4bEv=ls8APu7G^4wdhIXlCNRp`Z!Ge~&{D{JU52;Uy&C5L)Q89AbJ!IiI^+I56-{V7x*Joe+k|~dg zk8mb$Y>iC`KZ+qV#)@QV^z-3`LZctR+BAt+&Nd|m^N3VI zOjd%zqQ^R( z1F3IZbzdDltbSM&Rt)*0fOIZ6p1hu->`3-cpec!n;W>?$Rwsm5Y%V|K8~VW7^zVZ+^93QEqi>4g~%bvS(3(UcKn51ebfTzj2Q%L(;AEP3lOd znT}8Tf(t&F^ntz?{g|%PpWwZVj@b}C5{9h{*5~1#IQD{h$dP#;lh4&JE3;>fVO&3?|p`6k&Ys8QbX+ zj7ZjuAD8;48{>}}15_be`EI6e>`j)eW1gTu`0&gQdm6x#o5lZ&6F}h;KqV9^F&M~R zK(gS{h5>^NnmKo)w4ppLF5zgRf}UIJ)uVjq`$%HqJ1rG=TiQUW*DYk!p~=p2=Th$o zBFdT>dR1=;rR3%#%n|`Ldw029MX>Mki-SO70Opv5Pk=q9o@utWMc2&II|5K;)e1hX z;I*BKHyC`|UJs{C0F12bdc*{ChXeu#Q1>T1q+a%OoNvc5hZaAyfa1^u17qSAV0(MS zL-FZ2ZNU1R1)7^;ai?emat=U$qtgO`L)Z47Tv-}anzzF07rVrksn(dh=vn8|HT1*7 zt<0$mXn{h3<2L!yR#)C2MyoDDQu;-v*#2PVcytcE+CNg_as1<{otC%w3*6p5O?oxx z9nNeSw{NT8o&z71Op*b20S;(W9lPoxy0J90Pd` z|LlS)@GqT85du^g+PY(_`MhBRw3g{M)C-`Ac-PHG?kna0tPU`=`uQ!NQWg^|1?xNR z>*bq58=NC8c8UU*7teNBR>G={djl&DJ{`+GmGHesepm$aF!5?Ak<>uytP+1Pf`qfUKi3*# z3;>24riFx|?{&3k`o~l{To0xlFy8Jc=WhUom_tZX(~Y2nT@;|1E}N|JFPgalVE8= z#7N|Za#bWe=_hSVVD9-w@tbxsC-QaNH zbC9S`w@Ca(>E{dylW=Y}c2_(~b69OZ{8ax(M*>ZFPC!In0nke0UXQBb{S0G|uNBL! zOdGp+=;!F(5hTY@Lj&r|Z2-GNoxa4nmv(WX4f=PIL zAp1GmxFy3D`Nw!l8FIIfnNj%;EJp{!2EJsF(vK|#VA>qL2^1~;MyYp|u`)9FSf?Vo zwaK1YS;AVV`M$u(tQGm|Bwisu8ux%NX&*UaHZd$z^Xr-{p$k{s;ARBd3dY!nD{XgG zKqGjd$NE!sW8|}~So`4`B*sVueL}872CbLz0u=im9;}}whyczubTJJ=5nCLBREf%p zM5xTg2P3{J?57AM?D6;T+#W@@FHPbbj5~)GhBL!SqJ%!@Q)_btwclJ zWobKWx5J1~*XAN5U~qkOD1}bKn( z)7ORKhe2v5!d@n@&CaZd93T`6$lOD#)0`uxEZgn2Lvbko*VjveH&$jWZ6eundX&qV z9n&08Wj?@yCl()NmvAHg9Sc!pnMIsW%QW{I?`0ZwC@T@%{E%?UylwL(X^yrG@Qm9L zjycOWMCz%`#!~AdxqwS|t6TfanYEKtLOeryVxz_*F_aPz?kK7A#Rgqq+UU^~^R2Vs zgi@sETHspAX&~0Y7Wf}hdof7inCQbpz37};*(p8X-gRb$vghbhXYI)85}@*vz*wS0 z;vB>5IGy}PKl|{ZLtf@^dy~R(jF@D0wrVGwyjz!un7I0_Kj6t0w8fL4Uj1unWS2U75|fhMQK0Lz%y!zg zFUFZT^(T(ab#053R()#_OXxi!F2UJ^4>DlVX>GV261Qq&j?l~2d_?EigAg*}bclE! z5!L91#>Ty7=YE;SZQ(mWW$67~E+OnRp}MeST#}q6lF57oh$N^{Mb})QH`23-_wA z0`!KTYQKYq#)C+wQ?SE8HGcYAPsCevLYj^N%IG515C}<@P*shjbXS-_0FB$a-AKsb z?P)`R(=0M(V5ER@jBxjAS^F5g_W)7>kSp$96NkFnOwx4V*N@pQScZUBJzE><52eRe zSS0xiO7(9k$k^fb-A>a1rKAJ23C9vAH{+lsAb($L4%J9C!|v5)gU8DQhv=VTk~q3X zv=o?9nKPUfr&N38&-{IdH}jNBrcB%fvvZCOHTw`I`o^Nxb97|e+Gc9vU^bB))ugu3 zxmE>TK)>5Yxm=17{r3BM!B{V1_`mTSt|vcVIHo6!7#2tu?w_=hc`P0bS!^LvSL8WP7ZE|toIS8uEYP=7Q)v6AuX zE4cVrfH2gSF#Rd@y8koIj4R76lC8Xz)goms$YaF|f>IXZj42qqv;|zKWNeONwwa%X z>JguLJx~MH^4SUG5H9I;k{Q{xvqQu>h|3X_Ztsf*Xe!V0+>fK{-T0?mv(pDqPw%#=nv z5ast&qONcr+r3NgeG1LD{EX%9X8h24hH@9C`0%1G@L89+K$v9?4j6*U4rn7B1cpRb z=oU!3(UpzA!q_#rra`*S%kkWE(u#VJ)ZdpV{JDgP-`vbpQwIwX>y77@N9f9^W>IhI zygBrZr@1{0ie+xnSFQUyI-^Tm#-bJc{L|wUAx;{OZ_2ogC{Cg8=Gkem=$$%$xX+%> zcRdXZV$~}k7(5xdFiEug`)?kT5f#d6$Ro2NfbkK*Uivov-(t#vH|u2VT;EqYysVC5WDjfZZ9d!85~$764qoo`de zVkDjP*wpjiW@>&Nw=!^EF51DTJyAZ;L6coe6u6i!V51{}63hZuCC}o*2~d#17cl*I z^md#ML;FGks(%dQHBa)Er=?P&HE6+2GR(7JgOg0s zrN4d(P|8c@CqKY)yFd!ZE(e)7rLa(6*NA)L(!ni$rQDvxA(Ox>bHOWy@lLc}Z@@8u zOo~R{L|o>TaE06__88Zj{VbZ4;wf;D_tpJcs39 zI`xyJ(MZ{TkS)nSs!*YW##gl#tqe3!cWKgXhJRA5tDo)mWKw$25)EN%29Q?{=>H%R zZxRfK(?kG6ae+ifWO{#Y*f=8`cm+`S8XM&2SD*q&Vq4@l8MY2nhV-vO)cU%ly=Ect zmp&6<7Fg@_U|ZI7po(eV6g?&s+^er1t(*ThISa|%pp!~C#=w<(`wj37hQC4VnXpbL zv53SBAXb}W3C1H$Q9A;dy{Nt1wPqddmCAju{Q-xQ9fqWH46uPP{~`*mb#fX<~;R_PK)FB zH7e)5UN{*pS<45^dtilCr?M%Ex132`cM;%^#K{d4KHo=n+9bN#oKr0GWIG~H_vXGCBN}Jf&inL;EsmN^Zd_68F=F< zr48fZK!-*gA0G+mCf+ZCQ&wx(N@2P(+fk_8>`&)rc6eM3>IK2G-}42xtvsPwf7?jG%zCVsqNZ<63%d43j89Hf z_B4+SSeVPM^}c(s$Q-oc)>zj)zzyqknN}7iz9p8T0*sL=!gpe*+l7E#MZ}KqkEaZp zPRmR+m*BWVKw@Wnm49?Bi%5N3*BF|;)IK1#-TO10qsL1>NH7Kkm>m@PP4y}(A~tS2 zFp1?&P%kkOz#1AB1s)2M{82)T^`kWC(9`MQ9ozb**Pz4)I>;$lo`P4t8k$7B0bZZx z%>VCJd~a{WrB@Wqi|)Okg7c#l#qxqw4mO+yu0HYX4{mr*G`0h~)7t1Np*G;6>o$9c zVbvO4yMombQUPiy)nZE)*QyW6XTrlo&i3A=Rss|# ziz~BdWRkjzkkwxyP~G`86*Og=biWN-xbLFNLS{~q3%L&Oq(9^Ox=NY~#vfK2;M;=EFnJ=!pFp@1Ez7-*bn?x~5^5abxy6D}n>Lw(%9b;; zN!2Q=fvqx9Jzt=#wDi(t8|)%P=qVYT^Gdhg_H1}mJwTMUJ9tk~cZSm|p+;kc=HfS` zN0sF+zP8EGc!O3=9OcrzAUa&cDdqujtb+~GH%UC+4DH^ar%YM9pd}(bl%{bKj|G?~ zHcsWjIblN|4%WtDXTM$sErU*vhdE7`jngA?v9I3?q8n5Cbcf414Q1E4vDAR%Pcmhcr(-vPsuf6Q?otNS zEE7eBiZ9wu^^I%)UyhT%m_-Q~`iwjXU>91~q;qyy0zZ)IC}gJl89b1I*RYP@OKRD< z(r)B=6;$E%p)KK|P8+3bA?T*xSsxjv{Fb>_s0Il5!siuQz9W_uuu`t zuv$ke6eL)#;S0kqp+dxO-7X5=x4G%uEj*W$ImG>2+0kh#F1I~tb%i4{iT7(Tud=|n zEL!Vdpq1|Ho3C$InXHFD;LSLS`Oj)3N7Vu0S*lqdu`ChwtZ?&&(jjn5~x^ts=X*kgAx5 z5K^+;j(<}!a$>7It3lQwvG#01*pWlzU)#L=7}10>!za7U2g^J=z6{cJbz>-v@H+6a zHwX)>$}k}EJh0_T&zZk^xLX=t#8aBM`=FQRzaHxL>E}(Z_bp1Q8DkNiF3_C!2~ya<@thCCKjv}B@@9X>>ARj(y;dxA%6!N16dmbg=oeaA8HVZ|uCqrVkBa!)+& zxzn-i6q*w9d$eiWI9!OS`!9!)v<^Db-MVS@EzxR4@V@pKEND3}8v@70>X+_Y9ezuO zo>b$snl2uEGjA zG-B5felNfGVuVb<8d2C3 z(UT}D)|-N0*>%)>qK#yAVMN~l^j~S=D2$vT2_O`LE+}gJ$02UIx#om;il$@Nl)o!K zME?7{Ut2yh0C;+9OOErrziRLpB_8Tc?<9gaw306n>sq>Iprh-29k|r&B$%IIEv^8^ z_JYy4)UsqN;m@~mE*ok8Dw8OtTddw575R?)D#zY*|@V{ju4n6{37m zEEXoH(w`aOXbBqf-f{VD063Fh!0qc3J~NA4A?rdF)vy_NRdX?VfsQwmb3Lnmf7y1;1E;!+w3v*M}2f~m8i0BSAV#fJ%?{{EfFTJpa&PvNQ^{8J5 zjWV(J4&BrY7a0`V8PjX5Qand;ek@gblS5lgBI`o#Cwv<@EAQT27x@+i3j7Ck)L-&n z3Ph}2=;1CmC1ON_%`c1Zu4ucbLEUcZ1x0wCe|s{uQFEIghvNwzfN!9QrQ7rt#%Cq9 zNT!$+hPtaFI;ex^rEgWwKX%$$V-+aGu(F-pHrTgxWHK-mE6l*VYWbXXPYbkDyo@*O z4$^_ZQ-d$!q!)O_^>Zuz1rdD76K3F=XV&A11>ROHykv zas^<>k7Pj%A~^XNmppz>Z8Fh#z;@zOrfhsay?-Ai@EE7#Zq)WTqCi~ZuG$Hi{s|n? zr9EM_lFCZ*+_&Cz0?0Ck55n#XKpMS$d079pHvd9xIEJ9p5{5-LfT7zwC&U;dOn$a> zJTCfD7wq?WDKIax^>>I*az4>#7Z`0G9kr=o-1pMTW#N%PJ&RBnBDl9j@+{xk~O=O8i zE`J0KHIBy4?P7KVbZ7gJaHO+;(mwT`PjF8vhm7Jf{1^=vrxjZNgC$)K4#E9glmDhf zx1?Wk&Eq(1ZZnbK;9KD9Gg@J(yJ8=oY|0Q*wyD?6+xRKF1AX8SD((C;-oX!8% zDJg?L9sC~q>z|z)Z5@3B)5L}*oeO!ah!X#ZjNR0LydY_2nl;R<)4fS6n=Q~@V>L|kU!q0Lt{#ZE=F%}aFcaXxJe;Q8k4`*5!E`H(C!0(Iz02G% z2KqTvAZ5T*x5m}|@Ii152n@fLLQVA&`SKMxN*jl2ooNz(zY;XGm^UkVr;mLa<3Q~# zMa(v|7-Ay-Yt7DUM`M0>8#M_xRQ&G-3Twk<{T|ZZA?hzdr%bwMT&nV!<&jz9JJ%%QSL)t z;l`TeiL~uPKPk~PSybD$_7I^K$ou@bX@JFvmNb>?$*<+EGK1;|;%O^Ik-OPjilHmQ z`Fx27m8mK9r)>av4X&l+{*|6;7GK4Q0~yejUC{)n>N<@3rvR~$c=;3!&lGaoJF;Ke z$-@@abDt2Pg8Yt?n_ZY)Lcw$Mho8no)OYZ`LW{YlqAt#i1QR+bAV)!Q#IQBFX*W4s zNxWeqnTVg=s3UIh0O4^6NqPY{Z_SrMCB8pXKK zP&?=255u88-@6~rD)&KSomyE2W;k4E<|E~oar*E#P#eUM5G*rheQ-0r=((9w&^E&$ zYL50W(-yNzCJ}FIHe;l0ZX^Kwb&8>_upzX0jkDCGns2{uRUT!LG$LC*{_S8_1AxTl zmGNU{<)jDk&PfJhCV*e_Wzi+(yK8O_SS}n>?4%jDb)(eCoNfGi#QT|xzusMkg08Iz z-{z3-ruy5?@Mvtq?f9Oh%NcnRU9-i)WOtNB19yU;_FSU@v8IwAkuR;T60oxNCn{9GE8QK;~$CEMR5{~JN%+LLJQ z0YIgwXE<``th2`h)PDA6uvhP?-=WWUQwv&Rh?5AOD9qOwHc6n18}W*?EvrAsgL(bK zYJR45xp()$0t*LguW5<~%^;5PV%c_qxg%(dfVBWsby$7KnGY#4R~=@MFx(}Aq+3RaAPaq|6EEF zKr+SrbiajAbynM!*U$Ao)5mAnEvG?xjT$YmeZwlzit?UwDm6y~Ei>U=J^x|0^DoTz zIe8`^pUQiscHEV^w%W+SxTex8tOlMhYU7njTGT8mK=)||waqR+b0Ay>)^YkhHeApT zMHa#-68gUMV@d2RT|EZxDwL!hP>^9kaYqt#0G+j#oaCH*6JWs zWF*9+y2cPr!H?DL@aHwZ4q%0v|hqzgo z;iC+bB2a)~%BSqrrP#J0C!KRw#f;|J6EImQUc5omlFLenZ1yR7vL_9ux!3Q?#ulq! z>o<~zgmX##KdfZ!s_87wN~Sd-@mtU#rWSJISAdKQG=`-W8_upYhFpmrgAI&5Wb;79`?umUU5e{`JPS>wC>)ivq{KphBe)e@MKaDuZZZgG ziFIeqUwk$-T$(#JTrj$B;ijS)WSFp@vXtb!hMi`6hAT-pWprMdlF3z5deV zS`PU9CCReL7DfbvA*Z0vwR)!jTN=Ls_a&~YOh%g>g2rQ`j63!(RA z$OC$61PMbDJGs#Eo4c3nkf{_FPc)33_{nUAx?f~cD#G`i>oU8JXlXI1jMoz`ag7(*|=4{JZC>M3)>GLza^KI5V)wIYdK8CBV*Dk^T`{<{3jj ztn!997&yV#WK3uTSekRfssAV2%Le|{-q-B0%T6fm3iuVq7*Z-_bd=!^h}1DWd7B=$Dovw$553u_D?SXuu5YebH z$eHHT;EboJ&AdAGS?r1Mh$RdO1Am@EcIOk`D8y*brIBp4%*euLRCH3(z@{Oo%`QLc zM}Xk7m7_7>>>Zct&eWmeokakvVU9uAj1&-fxr%t44sdJQj>~;>-91V~=i3naynt6v zWUBn$CqRsh2p5Za)NGVA}*c<)BiE`~o1l)I{eec$MFyGFL6JRESd#&8-(W>(YvX`YB{ zQZl#*#?u*b{B4n8z<{EXab|lgV0DH5Rm?M^CFBpRY`bqi`^3I&tYN$I41B<;B+U8T zkoM+5kfVXOt)Tx>J)P-{5e1LhWlDD+Eh-45NZhV#)qEvpbM)?{T_6U82LcjehinbTV0Az5XwQk zV0?{0wDn9i{1qYj?HFmB&P}>|_|mnEtCp)*A+-VAPN*8vp(~c-oH+A$7y8>c4G=V} zqEOYj`5)g;mpyz0<^M6DH9lhZ;S*ZfdVOF!p`-4JS*~4aUsb=;2U9#ij7TESq;V&_ zn*jM5g)DlBryH1Z*S4w>TqZt%Cn_;&jFEOMBnAcd?^+JBW<{(6`jy)B6!KXa+E(NT31pI>uU{?u<#3dImB2{ zGN`m(<%GVjNT3uGFPkr-#AM_&Joz*}+kR_31u3040=+P1$c;yhJSgT>p1M*$4kuQB zj*|xv1?1+xR&cq%*shy7_&4j(h!+LxF)-ikaEZjr6ci7ceNx=&+kh;&-RE(J9?el$ z{kTTvx!}@u;3@w z$-PT$)toK}RMI4!8fqw}Ifu0eCWInp(pavLw8y8g-$MoqgjttLc=~OEZd0oEv6%($ z#sURfl81IPY<3#y5Xy~zZsxkBib)aa2y>rjj|NAczQw^a66kc`j8TnGDI=sA7g`~p z$sp|8*QoCIH9%RID=`M^dm*p6@kdv8ytaQ}g$K&BjZo_gzII{A4m+Mo49`tyrpvM9 z!VZFCqq0Gui7^Zyur0@tiP7jR<`uj!x_mR)EW>C7RcQc)R5etW3?r2g*1>t0qn|Q- z6`^dGPb?#7{~pbFCTDPq-RFHWyv@`mt(T14z97OPi+-dsyIWan5z_C5Tp}T z+3OV%J{RIl&K>k(IhnRx@zhUWH80;o=O z!PzP-8WyRu>t$WRz+7TMIA_xPy69H~DyE`l3t#EgD(yC9jbBUEL9J}h`XrXAXEZ^Q zp^qE_&L%}_?9Jl!Iu?++PH}5jg`<@B>0h`+1RPYmc=_MQF9ySxBov& zTj^R8O#rGSj!FJ1D~#568VVeY)SWiA(PP|nRB zbX-F%ci1ksC%26DL7Q7%Dg>xmt`{xbj3BBp$TS<6uG0UBBj8JCoRchr`8nbBM8VqQ zC|2izt@%NBJIU*V1CiW6vzC#S)pjAw9T+yKGt51hqA4l}72u-`B9hz}l1gPLO!f!U zNf6yx3-Y1^xNNhBA;3p{#y!f?t|Y`UO{eBgU5uFT5}#h?+KBV9So>lrGF&=p=WPrm zUokYs`1%A$9ivYoK39zS!u1Ix>=ZND{ghnCfyBB5 zT#*Qw+#vm-3yR;Xa?CuXLlM|F+49lTV)>Z}cBjKb+p42jluWZtOnT#Mi+iDnHniy& za%))2r7H8o>AYzi!a(?6Bu($ii%=ekR z<$%%;DflsI&@mZ5=@tJ7VEg2f-E4|XQg8jIf&%z*NRpLBvFe$(5o1ZmWLN? zAlm_wSco5v?{obcSo4zsv?#zi^Xs-1TKTo`1BudeID1CwvwLo!tf9!~0+9gNO}+Ze zuLG5O;h_>A$;>S+%MY@}Rz?nW4kZsrIKAn`q{_y-)I;;ZeW>;y9UQgfqbL{4fT0;? z_@7eg)ihAC?K@D__^gI_A$pNFC!^@ABjsxtu%DgGafEM z1G7ePcuoB|Ki7|>@sJLcx4}4Ok*)#zn+%3x!f9cUd>ZFD=z$%4y@o z%tApetYNhU+V0H2Db@m2!_;L&EvgJ1k;lZ}r-KS%#;2stVi=sH+0*4VP%E_Q%Jo{G zn+sj0eE9SDh}!0Gf}9LE86ut9LpwNMFAY-{@0>izx}02>^(2pWTk(ro;n?@ zoK$gjMujB)bfcHloQDe{N6$dzau6o64*5l=gI-!tPFWr6TJhv|9-dOuN;O{{i=h5U z)mS{`1GfH+PG21Eo=rK;t|AtEm6ikaG%Z*}gEU!FXZ&*c{&_SbscyUc`SaJgnU3jE z-pPSBtbV$Mn@mfJ{66&d?qA|*w^G*SNHOi);solV=%R~rr^b1sf7TtlV8j`K)wv=w zE!FVbp_+jTt>Ki03RSzCi_rRH|4o#xMqi`bNz-MfbWMAaMkP5AZCDP1xbMuy9E$x{ z??drN9;fAuXm47NQ!YwDU^@z_+Z#MZ-l%$=e+thqCNI_%sg2&&HjH^!%EK-AX&_mq zU6o4dCwA6r>B{dg8+=H4E8a)VvYc;J=LEbXf=}NBoSAv#8T=o>@w_hq6onU?qjj?D zctA4vM$VM554~d!@WIL3F9&4o2$Wi`cPB>WE}>>*h!fq2PL8q%V1)6DATF-q9d)=~ zKJMFA@zK|)Gd8!q67Ti;nHph5)L{R+P4Ky79xGipzbKSLf#Jq2vq>gF6Dn3=Ps5cn z=zqKfTpXpG-N1g6e%W&xpsUL*0xL*+51u@jqXRsw85lZ0I|Mpv-3_nJ^~>OXYff%aCcFl z?+rNEWxNm^8uL2Hl=D_o7jN|C&={^!$%^ci_ zVJ`v&HS!OI2pZS)4=BIH`QiItP})48WGKwmi;lo{@{Mz_{A;Boy`ZIk8)B3}jDk-L zJ5u&$IiPufRIX)sgB4{ieO~BYpCo@<0gezN`+YLa_msD1QOqPZwS4C2o%yhT4p+Sv z@+g4$a6uoJ#wAF*gnBW$>)g(KuLA6{h0$i=rL+@BsraH|7|y0eV+-&>=ZNZDc-U&Z zf3=y10t9owcS=h=(dV`-<#FM}v9o5{<3+VqL!{c;!|Z~6cVC`rfw1p#sv$T8kM;c_ z#UZXfa`reg7NB(T(Ld8u=41OT&reFcIKk27tXp=n*vVPN-Z?!2cTVlYgy2N!%=f!P zu1MixKpk}%no|s?&<|vU$r0_0g&Lqc7O}4=9onu6kRx>no+^_$3-qu8KtTEP%%d`h z^t6SfO_i0H@H98xj0#m5!C)~Ojsr7tqwx-#!+$=k$^@T7>}+_{jh9>BGASf{v)K%H z3>Aq~IilkNvDY@Gh(3^yGDiI7QX*^C30eIUBO1x#bE!#TXjk|+zl|zTavL&?E(fh< zDZiG=|NLpP`a2{lFkd&2Dq%J>3aX+|Q@@I~kVQ990rA#^p^gk6PG+KbY^?Uf-0wgx zr&6LN%J{A?Z|Y*JN9PEWI>WOyzB@B8xDuY#arDVUXq&MDgm0)oMoHyh-#2oouBJg8 zY5cXv`y7}9L;Mpa-hZ_=TLJqw z#NTqO8wSl+ID2-}tuajc5WDMTkN$nO%s)WQTTrbTRs0oP~xE7K$ z)5t1`2D7iHgG4VNGAk$X-O;&KEvrY5PkZs1S1M>L8X^uJof#{`BGo8i)f-YLi(Ev{0p8%{nfK^Y75+gO~9Kd5R>Qg>W(aSSmh1I{FIszRM z;{k6JC7pfauTr$l=MWu%GTUt91S_}~cB0jth_V{-`!+$9kH$gz0@iqwHT~R?ftWb| zE*MIZ1qQ;?(jn(K@xdB1RBO+3ghAgaxaQodbsc@!G|bpOM#mSSJ$xeFUHmbgXU$$; zby8yHIf9Ocp(EoEL98ue{+BzWo3PV4h7B-FI3>+qE14_g(jiNlz&o!mi@-(ks$PGX zH@crhH;5p^SRGW!*UC>(FIL0Hk&9_{BP$5rG|GFzzV-ze2fD6#zj;{yR!-`tmp72P(PW4{}ur8?)fa_xxaqHCXyN% z#-u8AJWCWkxVFE0lasvx_neMT)QHD?pxiU4?>D}nu7{r)>|!%|W*&9B`tf|Lzelwy zNM`$fxh8etntsd#s02V1UZ7z&7YC9pj;WNXfYlErMUxNQ?+D{89xLnvIRv&xX2Ih_P2W`p@VFqI| zV;}HiXtC!?daqU9Bb<2@9syy?f8IRtZpN*7`pRjc{vORl=LcF{ z>beq?C%zd%Mmh86jEtZC)t!ZYRIoGxnz0}D#bBbGS=8DeeY`wyiWT@n$D)0q(;VA1 zosLX|A>JK8*S)>HsC@^xg0I{c<4p6WI z7Gc9cK2`joC!8R>F*`vl0w8ucB+?9kEW^Da(pBCYdf9wDuZ3PiG8>rBKDsj|?8&kUgG<}YKEMQ2AQ>(+tASW!y3V*k;uvUKsR zQ5*WTme_cY?{=gRA+9}Ra=*bHu0iop>WZcE=?@y%l1TWo{{N~YA@$bMB%2NC`b?V% zmsUuO&J&eAFU|AZC3{oAJC4REu9GIMKBsY(u^w&o9xW_vFSK#cj(5ocN$`jBs0|P~ zz7_R$Iy)uqI9ct1f^Lq6&(K#<*~r+drSd6&0{sw}+^(FP?_5x+|6_IS zm3eUBE?pkwv9lCTKtOvRV#R+;X{xM8Gong3)A~2Ujq9Hb8_;fIs-0o1!{Bv@8 zj|lZ0K$uMFF)~+LNp=lmi?QRNAfLZ$fx#De!)uqe*rqAg709TIXau{#SBe3#?YPTpB0GFMZj#kL|7!i!6$;nj`_yh7lb-1C$ z94s)!7vNP-su!mYFDwbcQDI_R`;Rh#)o6dx>!nLT+4Q9q9vgvedrdL~ggJagj+h`E zqdKrYkYN-O^G&?Y88MAV_}I60;3A7{C@5T-O#;bZ=Ln8okv<=HiO=)GpsrV-b^B$^ z(QW>HwLetH#-g}FW)*;b?0eTQ)_rm#3r_eK6}C%(vh2voWn!2m(E^mah(tF!F^xfZ z#dH*O)$p)3RZy`KajwQRj_7xGVhPSdxID2fm`Zz92C-k*#Lot%Y8;tqJ$B{MoB==zxQSOG)J>)8cwNJ9O>SrV z&XcRaAmA%kB%tbU*UhPRS9~KuxIEiQ&!=g?Mwqurv3PEu8$~LG(CzlxySyB?rDoYD z52_A}8$U#b9JfVBuHX2I_1J&DCTzrq(56D`yRBieY(SxRW?XuB=}r4S-3g>~fU9Bf zcp}2yn0%D<5kdmLATWd8(Ttv>7nWk~c@mkn$w|z=Ue&_`wqg+djST9zZi?76* ze+qZ7RUef8wjE5t!;nF3V@Mx$A7P&N^cpJT>MMOUdY;#)HZ)BTe4S9K(ZhSc6I(o| z7IC(+^et(|%S%iDD1UcYc~7J)RtPN z?$xxnu<0;;&!4uBJr~>9^(C&cwyg3UkgwgSmm5B1}ox z6Qk(!vofEw{4AehH7576pXa{3_$p~K4rjRfVL<=lyB$(5icLeV)V*-$OJynWLBRzZ zsbKZhM0@W}1F1X2rVj1{rsk@^=fGP}aWwK^%p3&(3RPQFcb<_rmH#hfo<1dpUMJY` zcvXuo!9Na9dawXbW@>1XZ-U7uQHiz-vEr2+#aaLCQvRSlgN8d#-xv}emNibO@FxSM zAATqs65M5QP78e7*tE|1Z@z^7N!y_=skpWi>Dxg~)#&6(kpTlz3Gqf*dz=a6@q^)U z01vkkD*Y`*@h$UT*tWB^?9Qp$*6_Y@*^0==L!`sp*vX#V(_^)%C}OiSO3Iq5>gn?x zTv>>9oN4seW*vSItS4NNKw-3Ck|bXLo$$BdNo4)blmbp`Xml3sZsG~S%m_0ipF6N= z8~$q*=0Z-!RO;;rab$r{F#{hR# znEB$v8|yb=c8`)z@d(9)qC@`ejy4)znd@Ejf)H;>Cs7^`OnnMM3%TNBH9q;x!cv{W z0j6nobHb-9KqP+46iG@~5?~n#D#%8zX!n#MaY&n`*UJJO7dr!C%}N!0L>l=`0z27k z1=iT1dJ78X;5m+FcUv=c5PAp3Be~sqQIGO${NN73j&>8NFCxSW|9_YCl_Md@V3yiT zW@)k1(<6LLd(rP#4Kb9U+=GT>_SLOWQNXd!ZbDG%UOh$q7PcY9Zq;JgUrP=lg7W-B zzT3z(pF3#I13G*0!BCh>$8=o-i6dOd2)7w(9jcA?CN#^>bT2%x$in&VM0PeVikI>7 zIoojh1FPDRs?P4!9xh*p0{xP;T!93-KHG>fHMjeoSqXcvL}AMrPx*!-if`eDHqbl+%v)eC30@fs%vL(6%DP66k~O zLvNZ$30y^mTf$iuDj?u|^z(7TflgMdaSfVp3J)4jR)zE5!b8iVWWB%q2lQ8i*4<)& z=yc}*iVV&@s8AfAFRmhO6%GAEM27&IS1_d-Mrn;wpc3~fTTWH4nt7RSr3G2>Kb)^~ z@~XvQi7?H7MY#c-$z082GG!4aG{QUbU|7OmX2FN7Mj^pko};>|pi!4Fjw?I0X3vN^ z#2LT2)dmtWCZr_1PwZ~I@5p=F9dv&X3#Z~%mIgDB8_tI3QCVfD*jp)5f;-!U#(&Qs z@l$uwBGuK*yv*wA@X^0xGq4W_CdMOzt!J7eLqmHvKmqg^;1uVwabSjCD# z37oVlrYvCBhhR-8F3FZ_j263cvSc)fpGmPwTq|Rxp4L4T^X7e_)tH0dL@{gMlIe1z zc3Xu88Ze}(GZc@(K#00x_nX>Mwm zSc?J6I-ZWT#my|um3cuZ*&at(`g{O^W*~2PhN$+syu-JL#%^{Zn>(Va2t-p5i6KcVRr&RnYqWS5$Q8~tJxhg zE_E1=k1Y*QcJO#Llf~PqI&aIazI$gedb4R!PKEp`D!w6|!-VlT4F&24>RAexJQ7BM zvbxSE0VC~c^GVYf5do@Ca-Um}47D*s+`}$)i*PF<1#v4~TG0r$uF zL~>qabbvZJ{KxdxO^puHhjISqQNKM;4|rkZZe@os9Tc^Smo$ttSu99VekO+Qde_#*1Dsr56|z7;tgCC%w|nq^+A?z3odOR*h|k{$(7KrhOzb`N9s)4 zRB&|3>7U(DoCDthH->bKe3xwP^{HJA&dnc*OXwC~(RlPDznC%J5#&ti;!}+w#K#I{ z#8o4l2q@m)j@1Y95?u+Farl4$6#2ziPjt0LYGL@H8j&VpNcpd?V62rDN)K# zs(V&$!r>5O058@8tVB!JB1mx>ya;X>K6(!mWcU>|RUUp)EmYf4`dwk`)3ofqIB9}b znpF-H@9ZC0bQc{w4A42DDtRmF#G31@ZNFzbthE5gM<7^2{Llhsa#I5(tDrX-G;;+q zAB%Tv0etA1Xnt_$H-lawjaE;bl_hj^vQ@ba5dV=Rd)Yo_N*zO+*4w+vLV98=zsKS! zPT9ZuuG0NhM;w+UPfZXmFbH}5*5jcN3j{ z6dDe<%=E-iOMzk^Hl`@GeaTaK1~!%iWtjO)W=flha7TTXE^uz8xmfvs7c;{CpzJ?* zfxBpH)~gwnV3~T!zGoaN_#}hmvCHm+T|@ILNa0kC7DM;ohHDZxd zk5a0Pn{{`B)@`Q^q{gk2VXOFWwy7O_zPoxMEU&Oi&Dzp_arwc|e8bFzFYljteSvo+ zl#9P*NhSHLlPOao z4A19z&u@a|+tRx~%q4MnglGM&Z}YX-)+@F6sCYEa12jIyi=koUrVwobytG zd4fXKV{*}vldlqBXyoFJG(u(WaO0Rvu9vCan{Ts&B>Z(IHaQDp9*i~N>!N^|-cvAA z!fuh*htb$ok!@e0@iePf8q@_NYOPZ2k|2?Pr-+J;7Y5bHoR!%zPn5$zE zJC3zVfq2hUJNR3TdDt6~2{tNK4mJ?!-kmV2u{joigw>Ekkb>AXUC8k$#l}@?m%Gz&|`or zzpNiuj|+u>s(9pgq#JXTs~HR3D?%tOuvFn5^U(llAgXhzT&S3BANE}pb2qfZ4Tht7+V_A!@%*-IfpCA;km!*sdx=uELbIS}a=q=rm#XK1 z>ms7jX(wWZtDI^W?j3n~h-@ARFuJ4GgwAj3b4+0l>m9hZ5=gDEr2y8gd;KP&*7tiv zLlg30Rc?|Jn-%rWWR+E%7>mEp+tJshB!RJpN{nRvh>2 z1(g7OiUI?v@&WQ8l`})Lft|UW} z+`Lv_wXVhmRF?-Ps-D7`wF!PMBBOKlp;?qy{nZlqDHN_H-estcz^4_%=j-7~X~Q%p zTNqg4tlEuq%#e^>hJ9;QR;8@*qu3)W^^rLC@;-0GTj$>Zbk;2ogu`G@r^@8R>P-rK zyg6q{_7M)U0)J3FYpb&<{=JNeLU?FW!yqgPc&* zV&Fr{E{mZmneX!mRmX_d$Fk1BchduO+50OWtid=At&v_HH#bSb?6Bj~Urr#zPH;1b zmNXnWeiwcUSMAz}#^TU`&AuNa;Ff)|JvEr)YZZY2$OPCIX6*H~F1s~H_V6r%Mk$i< zxUp~z6>_HK(n{{J*{el7GrVe9xx#@Qfc3*%iuJOmH5nw_z~>IIMA^aXAmE^8)-2Mz zLfc)uiUYr_DTeje#>z(`k6wmJ)ols0E?VJ+`jRfg;y{Wyl1~HC6~# zP^MY~646chrQss}FP04GZbVzWffR1Wq|Z`|8LYk|vD>M5$><4mDFBcLVYm+ zRP2svT~Qqye-vBIU3>* z(_7MjQ!B~ESbwbo6GWYI?|`l^(p{<}E%M_r(wi57YQb2Z5n&A-!4$^tEI_AEn~*S! z(NE`vAa0mt*kZuJfdjbk7d~NbQs$XNRq}F0x@09n`AYI8V;Z{oXifUT89Fo?HVT{7 zOawbMQjWZlnjAXyCDK@X4Y zB+B2CPz|Dz!F@hWc2`SVdj050)#)x#hGT3q<(HWyP@|NbZnn~5B%tPUPh=rAU=e%u z&UED!8dBpkb*-nb_amE%Vow?EjSbEFmlqp7PqGpUW~N>V@$4vXN}VNdtc#6!xJ|y&u3& z@%B-;x0bpT4=(bNhWcxuFzQCIqG}BC-tQb!v5cN{fRYOb4vo9(E>RoHiLn|U_)%Ip z-(+x0Qz^CY=c6hmDhb!Q{+E*rB*Du-O`VYlG!xSyj8mT`Or%^;@fWnC053*@_zcjE zy}|V#?WvH)jxBwOb zQZg)5e}GBvRJsm$`hiEqE0Ef%={}4t6h5%x2keB@1?385qPL}ZDz!^jYd{vII}lhW zZen^knrDcC&GF+bq`6gxbtKst!cikL4BaJQU;Do&9lS^Qk_{AFe@NNViv~56Yu0Wh z=>vz0m&MeKSET>m$6K~4(3l|qK`&0~m+S!PxqGeDqy(s`0xz#M4$a$wTRUZ4OI7S; ztk#h(jVb&_V=-^Ue9)u+FjtEJ0F{08K9Sm)J46oM``j+!>!lU_$gq9D62HQr?gs^e z@tV|)d{R0%6%D}&d*NAR!2rwiV}Yxtjn}Je-$U84;5ICvkd31{-yvfPPy0Q$QR<>- zjGQqqB>MNi zoP5(KF&KSmJdeK;Sk?mAkhr(t^p3fXb}wnoS^=~UL62`+DxW{K&e{YJhkSui{p-mL zr8?0t09lYVZCFCW(zev`&q^I4T#?Zp!Q6Imaq_{R_ME&#OmIEI(x5qT1J3eM-&UU? zfG6NY`1V_k88oFJqBA{oEOw9D0IclH!4Z@a9sCHsrWKI(gtd2MbtvSj(oG6dOP9E} za|Kdf%a+$M8>*mTCQ<7dJ1LOqv|5F#sYH1ddi!OwJN&2zp_9cTx%t;yw!u*|POH0# zfk|{NywrnqLo95lv2>8(h3nDqHy7ine%4<$!>P>ulrh+bcj{}$yxfK1hTdT_1k>t# zO|eLJ&a#pAidArwB_Lbc%P}NOXH_z6_I*X(YgahX&Rv8iDASIcRyQmYi?^h9@mCXF zR_x(%{wo43i&31eI*At6%XHBN@R7d;ygByJTqyNbZtq;Zd==Yri(dJOp=MpSZsM4M z#lyqeG6Fz{xw;2O?T@s$Ilv&uu`$r z&Lj{}8)~I1yllegFdN}%JaOq}mj2@)d8zfEt0_9V^4Q+6uS3Yg-O|}iJMs2&iTdRq z)?M%DL={aw@L~~DGenjh0~V%bMhmnSZ!;T5?=fICsdzzcknDiH&{K3e{@OpZMx>Ra zoIx3CxuZUoP4E4EEhSZA1QXU8E2H*ylxYi~&-W7h~7;{FcRSY-{4L zO?=ncBZ04_Zf7!wU>=lS$nJ3=AMTrC@en+q*z7Z+_kBWVu$kJ_GZWNI*tmKEV8R_v zgHQwue%{M;t&>mDcZTkq_{nSN!_wJ=hMJq;h%UInqr>BUZd1FeO3^CL zxSX?ZaBe-s7dXX2PWUOfG(`x`!m5ubS6V$$PZ6PiN`-FG!y!r|IOeA7#l;JNRAG?t9M z-DN14g(K)#Ad&i35?FqmH*xyS-I3loL_#{ixiW8;%1WW9 zWkZk~?$lyNS4J8lY*$(s3NR-48pxy(oz!4VR+EZz-HdSjyRTVhm&8MeOE$Do&dG_q zcU$-lv`i(B>eWn`mJGF3e%-&kLxLdR9wQh@ToJKo%{^|AGTichEx<`Lm?nL1jDJmA zkT1k6iln|Ev@GqnGeJ6479TmK*D)p*{Y3&Xz-uowW`nTfvKkg_OacUX_Loy2IC330p7N(cC1ezlPke%8+k)5W0dYQenF} zS@tRf{{7Q4#>$9oXM_gljkYM_;dNBKV#0fphTNmxJ@;ynOF>=N3&UiU~nO-&oP#LE%u5g_p^bi+DNrGCniNs#5oMRo)#mXSHN7!8Fxc&t zP)t~TKM7N7!YbzY%Cm{i_}-Lc+|ED{xkZqmdc-QCvaVro*%QjIf@`nl|<%T_Q4-}0br9ZC=%0P&VY5yE(YNZ>}E2r1|*|0c;t_P^j% zkUm5x_N&0m`*l9qOdblyg8OHpA<2rFf>V%aG;zr}C9q6mqm1GPy^u(>$MGN}@MP-J~D zhQnJsGT0du1+}3CZsB{$%NOB%gJ(8XI*)y%ZGcz+1wh z2hlFD;a=e5(d_Kb{#VqUnkbZKanM>KiOly_loG>YoRjDwlwXyMWA(MmWTQQ0eXV!p z;PrF9LlKrVbR%#BVuy+L>XmS{Viep>O5~#RAeDGtaoe?X%h_$o1<*VS%-8)x#QWbz z5hCBPP9az7ceF6Gp)u5T=KB!zGrdq!zl_3~(7Q<(MI!9KlJAK#xEeTK!TwenI)P*W zD!zVVfPabI+x8es3b2#iV%Fga5%CIR^1fekoFz%@E}IG)UFt*PM8AC<((ccBWMbNG z3^|2ata1nUk#;zBKosP4e45PgYL`~`97OS+OwSYw;x2WQgdQCz;J9<*i_OE{YN+0? zO4JK>Ug7n~uJaP=V3Z*7 zdDmw*iOj6Z@m2WK=$dODcr#gY*W(ODOBxiMB+W%oKmm%Hs7j1lXau@Ez3BhImp~jnvMJ`bBSbitF%SZYmCUI7b)Tff|S|@=7JLg}su8sh!`w{vOuJ zRdPU`YBy-6ch!SJ!C(p!tsK{($OpiYSkV5 zGok_4g$O0|nKid&IRApwN`0VT#qB z>rwEUwuD9;9{q-Y{0rQ5 zEV(7{*T56=xw?7>4ngmx3NNx!LSkz+>3mJmyMgTg zha0N*S^4vJ6OmG320U;MbV=idYVbe_7j(lD)TeEy3 z?MI7fpyCbCTC@bZdfaKI2%w3ROMk$+j1i59SyxZ0e_V~dAEHPaeJk<1%7GZi%M=jK zs3-xliANBe2FmY^F<9!J1wVvb&2foDWq$_ixl<&_hQLuZRHtEpv#)GFj4%u~jnOti z1Yl`qz11_!+&SpA&P^B}mE9?Q+cOd~+!K)ukpHhE^WcbeN@D(m(l59!3Nx=YVPQlA zk6q%PRsIrLzw4{P7F+BIjZ+!wi8wHC76OD_~JBFMyUit~H~gCUcyH{pFR1`Zb$X6k)*S%5{2o1Dsz3Px)k z1=JrYZPEzQs_=}aw!Hrv!*9DdPL&qMC z7BRy9Wf@B3Ki~lhELSk}I=?)Ryt-JEutd3NAFIBf9@8kTUIYf2!RHPj3H=bS!c@?r zm(P-*Z&V+%Nc;lwmqX5%l!mM}U!1mfZ$e4LZtN^n#pAWW@84WA-Yc znFV&d?O+qnTXiMlVe80NR_@hHp(GnnFD+y&;sJAxgB>&~qTlp&uW&s< z+jZx(Y_p}|c{uhmIOiqUCYafOe%DjT1gyP^#*Z+d48RcV;F9#dMroO%sRa&$V$jqM;JX5F9?Rr{Yit~w@Vzi;)mgv%<9yh)nziO0Z>s+-B`e-Y zC0T_@KRwDU_)?`mOkE>{94z zdR~u0i=4n9{nc!KL4XBlp9Oe19>IDm+fQhI{L}ru`L3-(IENl&LjO5Z_|0aji)s;s zqn-!$LyQy}vS=4I!REFa|6i4^o??d@Ybh=rt4su^cuuEGSF1)U(9^-%d)nn{_d>tW zq}hmJY-8+0U7>|ND@Y~TVVFBA=;euP+!e@fTAo$?|L=><+BotwEMp_lbgfw$8VC}1 ziz9Q1dZr0GF_Cfx4wSw?TPD#?4OK1gYdj*I=t*$~94A4FG@DT}o9#dCZ5CJW<1}hK zOVgACrj?NZ!r95Ac?*4r$1m|Mx50q?KcLJnOpind*1`eT7~Xl-rBX(@NYpku(rP z-DDc2oMd%DyAKG`LoYW-&Al8Rgg=)EofzVgP;#}>>rthx!+3#BpSd2rk_ZJ3 zKGzaW92q(`{b3BDO4;T}07UQW@xugC1U6Cyn`WZ0aG>G-M8NnZtAkR5QvoJ(6;u*8 zmLb0whZMFv5S-VcU{HtHYXn55TL|tL?W+TK)%z}aFTG{n8*D?%%M9xsYgs+=;Ccne z@fKyf&wN=*vi>_N4!y@Yw@gB)bXf=(JTv#l1EAL5UDtsYx7=k}{*CP+X^3 zKH86GGsm%m{t{fVPDL-IA5o)cV@BCw*xs;Hm0GOc>Bckz)pY9@8IvHmREG7K>S;VV z5}pV`N`m}uso&dC_z#b4m1y|Y?eXAcvi)rZGhgy~z?hl!Bx2DSl>O2_g>-JrgrB27 z{@$Q_V_%P7^(TQJ1K2kW`aWN6&Nf!KKufS*zAst7zwVuXb18+cQdWsw{D^hi{F zClLmv1#ZC9tvt(!EhIsSS~^tjn)vTDhj~kC1OM(lKAXw$BUsgV zh>2*~cik>SG8;1q@$rhmE#DX{+)xXXr=X4NWJRbKME2(UWUb)6(w>YMU#EV;;vWQhc<7_7aXc}gIMk>MnjP$0m3>l1!+VBnpQRj# zYxyK>mB7N9{VfD2jXmH%zY2FWx|HCb=p(1?0?=a330aLxA!dT$aD-rgV~>MVOsOua zVOAdl7%BU%AL*ql;Nvf}q&^T?15sByz0}6;T$Ds)PMcusyQCc432W&XN_)eL<6X6v zskzt^B>`&i#6*c0Wj4DxTOG2^VkxwD4K@fPl}yMu%pLt>S#@&!E6gEJax_Y>;D1Zu zHCm5ur}829l)$a9XY^}_zKY5__JLk ziz!L+(`No54mh6(*WLCF(?Ls1pz~=^;lujZWuO+`_5Lo* zvzai#_R~V1i&(6q0{o2g+@xP(5e1F750VW2j#w{CJTQ`Fmkooo()jLeA-RIXNs8o zmKsc%O{(6f?4@X;wAEz5pfh%6h5TcPd!krD>Zml{dXzJ+r$Gr}k$+Kt#~~`HgUd}x z`g-YX?2pt!%kSH=o(oeOW4ylYA5DkVP}JcO-gM|wV?Mg`Po~^5Os18G8{0H5_kXE& z^CCcX5U-d82G6CxCA2yTv=mrv4yDny;03Nx$zPcMHIcL1F+8&7@!U!=U5VI&R!RhG z(@xIrTS|rL_q8}~ed}EXQY}cmh}H_G-ipn;Wr@~8({$Q3td7auC8tCzlbWi2lUgJ1 zsAz{BD(!<(7-w>C3@Xs8sVvNDyZd(e_)tz7G!pqdcyFZfTM<1-Sd`d(HP(+`Fi$p_ zYPZv?dYS1uRb3(|<-I;EJpTCOJ5+!Pe?fSp+t?6#XGiEQ_AK45*^cuLHT9ot1+E3= z?MAX6Q@!%hkGV?mhbF^XlpJs^P$k4{ib#H^GZicM>`-20>FWzK2t@U)b)!Y%*ga9? zZRkENcg+VXiZVjK;bb-^bFkLBDqqvll05uujvT+VzMX6XI+_hH)F=`I0^@eS3vQaXe?V{`(#Zmo z8kkkh%F^h-=J6;ExL6Xwjbh=_!N!`+vcW_r~kfAUHk5cXl z+`t?0Sf$R&hykwxu%>wMfliIRn2O3Sf}ugaqs=XKZphQ13bZlKpfc_|Lu+PAodOxS zz7Fg1)!^AAUf0lr_x3SS2)2Xi71GMoF9S%X9U{5ng=fI8-c6LG0bL>d!P#muPzgBV z&7&+dKwcW8=j~pdT=juAuxLL5 zDm@t|Bvie+3CWIU#jZFSiZc;wf32nYsv(Q6u2aI;J`o>wnn}qG+mWh--xiTS_5b() zvYl#nn)YaqSv>Egn-UK%TOODdZf*8$oJeV*1HeqYBp%%4mIom zy}U4&Jj*Dl1}8ovOQq#d5F|0jtrNH|o@h&jb~#@`@K5#RT2CyS>arMnVe8`mMxs$T zLazPrh=AG_z?pimr9yY#QaroNs*H3W$$p$tVJiBn98dZ9-KNua8v$8#JTJMbISLUT z<8t3Wqa!$jJEkX!k9{U@daaYno_k6sb1q@}j%;bvWCR>y zbDOG8S|1tY<7vXucnt7oE;7RsgkfJIGv3(2R(*!(o8|(nIP>EReGS+#mFf=#ofWN3 zX&>sPV6sK%i7KOt3lxJUQBT$VAMWjMxVq7cu4ANl znm=yGGRE>Ju;q}?8E0t~t~14Pve_yST|wxmHJlaq=AbO(livk$*#V1wG$^Zf-K*aJ z`CfL^AR#O8d?95rAO^aS5YVOu+@$4v78cX5oNKaeW3Uhu5$=W0L~f(h;b&>*TZ6Ll z*21PT_o;CCSDja26)Mx3`e_9Q%ZpmiXgHqH)E7NhCHTKQLI(Kx4`kq|b}o^{P=TXM zm`a|ilM79m$|3_yYKFN&7>*wXc}su&5(r+`QO!>PVJcD=n~wG9n*rN9t}Yi4j)mqMe6f!%!c3ZyJMU;%WZWrg!v?=*>`f9MQ2%!34#fcA!XjO*k@^P#!D=8FqkW6X!ItTdnnI|G z#5~xY^e?<=Eo=tY44*tgDiTV`SXTB;ipv;xFs9S-IyaHU-;iwu9Dp6`z?-JoI%L0_ zxk)Wc_~Gy2&1Ah?(#aoc#q^^2s6jtKiupK*Ig#j1j{SDzB{g&s;Vy($tVJABwUU6I zteOhyiN$wtR$z#5v^Tt5)|x_ZC&0t;HV6YEUHtia4D9FzN~@uAbEX2grLZvHyPfbpT0&2%TN`}gU}1~2a=MH(8U|hwC!$WmKS1Q-0F@M?=noNK7_Z$vD=Gg8?mx z_MEuC#ARgkGiAz12%RCPbW&uw>G+clMFAdgL8K?Y0K$jTeIrtYw35Ks0nX}k2j$@x z#kk$jdtSi{3*#(Ck-Y}4dRJUudF#PWE5A;;l?PRNq4G`C+J^^l@dI60^)PS_^3BA| zq55ug+j)+79&8&=Ijuah!?mgrxPi@EnyR(#Rj&97{f((7DGR$yy!JOtN3iIl`>00J zHp=QMO(rWlk?4GL6x7lX?#e_xrwyeEvfi`cijj^Uzbssbpv6F#MUot{HUq#e9C4f8 z%^SB|gu%;ykko(2dzy{Phc)=-8}q)NgH(3R&ioBcZ_6{g_&e$$inlAL)xUgpq0rawI?$M!5uSwB=25~hfP)noti7gOrInsq&Q@eDBge6W5}7rK?B;!bdWuS|b`;oNYU zhJOk9k{hirR|`e(`Ld6PfSC?6CdWEN-VrkHr*?FEv>`)6uxGFsnz_H6od)+TYOf9h z9Nod|(ePuQ1;118%o1Jc|6ZF_k`^dlHN`PO5wg0}Zh&TevDZCMDXib3)S6wR?(`YFBf|8wfN|421{GDAsO4g4v3AhQjjtA_o_lS3)a%JaRaZQMLa|%4 z0U~cmru}%1_nYd0SyaalJyeQ53VbNbt2QslCU}*khB%*Pj&a&%rN!Fl&Sx{$=4Ib} zmfRKe?t@#3IXcM@HVu7FdBO7Rs};A~Y9*ktX^fT(GAyRh7Thm2u>plu66@X@Ke`ej z{sYrS2+Fm|G*uy|-OB_0)^ z0SDm7z*yj3XYiPh+r}a$(oFyJZ6#Q>55}m5Qe!{P`#93=gA=3ZlYWzyS-lU zSS?_Q)c%vnC>Q#YefoN=I|ZSO1JbCo#`KwFCe-?0n$!_xk>oi{P}_lAvpQXzs~<4U zs1PJ>7-Q#B?`CwvuRztl));p??m*FP361-n+SnGcQs&1IRRqu5u;(oEy001Yzi?Zw zbx8|sGDM(}O`O@yfZs~-bn&#A@VoAK%j}#9hgG#0;KFo&*bqFsv5_AIp=5%T z!U)Zj&f*{}6~*0v&|bM)_xBw0dz9-lAuI1*g{t8!`VRg+)|I};WF%UgEXe+Fd&0f6c%qGI~Y5O600R8=%vowZXobBK>(>D1dB^VH8$05Ev?Srw5eYLeGc>P8Fg&LZCNL}vWpNO%IgrlFhs?;|3y0Kk z&|4GyErFd#14`dt7O{~pGoj86UPmIOJ-Qsv*MfB@mKgC-#(5$?)HMPW$rtm6+ag1k zg@=Hp%f~la1`(uc%`6~uY*TLKB%x(|dM1z)QypucS4Bfj#tT)7WZlzP5i0U1Khp08 zdh_1wmO5U!ci?ZQohGNIk2qS+JzOZ{^S)~dw8`dCbeh*o&ciLWm@7xm<3&x7_sDQ7 z*0-?%mwTm{SI@$E|5)uF-|uaxOP`?V}jL`T8iM zh!>uVnWL=$@hlyL0W4}Vatu7zmQxF^Kjx8yyO^y|2fip&%ZkIF&zWF##+OCqp$HAw zZmy{v`p;*Ow9!eJXE-UwIf6Q9LP98!#fE6QF!x7fr4rac&A~+YKp;nWjRv_{c!R@7 z$0Eu0yFSJFjO&Zh7foXi&gGbxOPRqGMtgY;w zKXS@=K!iQALChtlhQg{f^ImG--zjWuFMG({sJy~_=i{-qQ^^l-`!HK!O;F?t#m}^V z|8D_WipKlW6mTRWYNjZRq8X+xcx90t*<{c$VK_bz5v8HdCM`hohQxJ5ms18jgw~Sw zw~{4QAxHXiQz;z_nfk9;5(dvdwZM)W4yqF=ZmsW6XM!C7eq>$1GouV*W8nAcG&01~ zJ1@$XxrKc)TQgt7b@nHrTUdaw=bMfuJd81lEWXe^_259CbbIX2u!QwQTme?<+oS%(V`|ucylDb6FZ$PCujP zW?p1609~p?AFK0$i&Z-pp3{FS#kw0{Yfge^bzMC-AiSfWJKn_~2le6k$n#0`HqVg=R!SnWx zmxu8vWQA^>BWp;rX%Zqoh@mvV<0(o-ZTfck3F$op@o-rm|cWYuD#Z-is#!dREuEXc{xYqBcRYg__>@uVU zRnftxdBW03_Zqjp?ghF3_CxS_);Ac{eh0Ik%*t#27l*q$RMo%1H^Ex%GEVvh;Rb&W zX&nB7C{L|gO# zFip|5SzaZoTT)WslQtC;t~5iqGWJ@v_Igt)EOp)B8CFn7>1a`w)XAk$n94K`lFm!< z=d~49k|^jw+?0f}+FvK{Z%}ixNWxt$rKDBT1hW4feSJ>KQ_uV+soyTRx)}^b1yN)H8xb4DwM7k|tfc;9xRyM8!jKf!}4{KdrB=nwBLga^gx#rsPrD z%Q9~aXQ3V|i~qNRsK?(nC(FoG^U3jj=TtfhAbsahXnez92sXDeI^J3;UcIa79FK26 ztVIZ8)f2H`5eGeAkC!St&y1|0|K8ddky7;(Bj=57fR|Y>1qFqeWMCg-*>3+EalE`a ziIJW)WM6}BeC$ha%cAHua?DfH;spN({$AlTll-Qf9p>x(tmfxwfZa5Ka zAE~-rG%F~u>pdhbr5_o?2`*I2IbasP5ZG{bK6lXxct}Z(BTiklKl}zK=-0% zMzK}i_pU+Q@n^TtWa(SLy)1)DgH=l>S?uQ<4- zp1ae*CLnt+ibO_HCduw4S#F!xjjEX1na zb|a_gSTQQ0vemRr?d&`TJ25kx#I0Z+N&>4b#ypBj@<8zl&l4cBB!+{x{3plJsq*vGrvuT`i;#wTV?L=MPA05W?!k8OR=ScjV62`z!W&ioKRTc z_uW#mIdF&E-0EPknKmux69Zk4xet{x0oN2}^?0(oQtv@ACB%2lJ8hT_KE_iK(V^-b zTm2EEP{XxI4lUQUN;j0=-JAbPhSYQinD8`caU>S2Z>?gjx8PmF zUFgmMghpAO*|8-@lc8VsGqbXkD+oWz3O%eub*d(cG;FtWbtGIJWn&mS*)rz1ECq($ ztWq&UU>Ba|rUtmAFh(&+)A%|=obZDn=$rCmO`cabq>$}?tg+3yP9RE&c+!`!L93Nb zbw_xJbidIq94aaU8DtWqdyu(_I`vRyDX>u>Z9jD6ck=ZP{JuB#eU^?0UU5Ep=Qk4O z)LHXf`}MjM%$@1$ zf!L((kMV?~-+goO(SfTlm_)Fm5fX!s5#8_Ei6Dc_LzeaPCq0L{0U>9Huk8A zI;bE-(lMFPepuu^CPsfPLXxtKd=597@x8?=qFl^$!98GK#q_fl`YsXR_qTjv*U41? zHvT;;F!M{>nxUP(HWPno3FE| zqp=0%Pzdn**5+9w8kyiVGQX}r)K)1@FEvm8B-y(JTynM$X!P@a0)xd*OvfeReiHD? zg!j=OPPfR$cCsOHT;0K}u4!ttNR?UYnSJhR!(=CY#|BkLsxn+A*jIyU^fHdS5J<9x z*j0}J|33i01z32GK@GOk!PMCY*3N^~3b!)+lX~? z18})e)fnCm0=fx&hG8KfK0Hg(Ug_<3>!9F4il%(p(nRZ3(wH5)Ei(zZ8{ibb<8RL%fneCmapJwny;GfER-nOnQrUi{6J0!bTmnN-i$y~>>Ajz z*@$e7O_Ef(H3i~!MCGAT7&e&gU8`gaGOT-h-Wvz#;~6t6B1Bus5JC%%3CQm&kLWsh z)T#m?N%R$lt?e+s;OWFqqu63G>7Yzs`^8i=%_*;xn@g1aL(%1*6=v|vDQOJpL~HRQ50|*LX=I(9k7hp=|np#ig8|_&O{_`N9kG! zl}O-qDg!bc8}FW6ES|&9+7fEK7+GyC+H6fh^l3Vd{T9F>VXod?{WmaC)cKDkLb=ak zh@u&sCwK`<18LT>)*BP#isfoA?qFyy7Z4&e<+uukc9`DILt8w{>(W3+9Fr(5z%png zokfvTt!OOSoo~SHc>ko_N9;O(-WU`y0JySFd)=ZwB4?LVy2#eUfDndm<^EuzRwm>@ z!0O!+ZU`1uJeg^Ui|yIeoMW>D3sv4UX?WX*g#sf?;sz9K_cvnRk>Q}|SxvaXmWJmN z)J>=W`MZ{8u{NsT4jg)~SsIao0V(x5k#HeQH_%O2*`Z;m-;sObDM)1EjkOMir-fCg zqbQA$wjm2+R^$zf+>+yn(Be*qI}|?X zYlNz%pSh4fOr~0JjT|(7A`?+NtFut6Xl+X7A|m>!;>P;1HE!UQg3~8KWiycjM2Qz* z+24l4C`oxpb#>Hmu}vrIS2MW#&=Dl^vcb(;;$Atz7X-ASD5(g0uS43S!-Ly4z(4QI z`(}@LI+v&#+}4sAVt+N z9@O&v#fM?!w9}ugNN>d)sFjT6!b#OFsg-dLi1EqjTOSR{jjJ|kEvP@|4EoTpO z(+EZjeBhvn!Jnc``$b(Xx)2A-W31zbLClNED+*YaCBPW30=Yly+?ef!1#xsoS+8h*!(R*ZS;sFLRqkRsG7A`Mv!VRBXJm z9Q%-hyjQmK5@{;Bv6Ux=zH*rZN+~84kXO`fkHFYAzTEwi_CbFb$z5NV&g*cO^s8$k z-<1WMRaf#mzo21Yk1X!HAsM`y_LsPP9_@S?%v{0JxH(Zh-vYN3w3%9Plkg7RjTbH| zfxF7H40fRgNap%TA{SWch_U>Y@~^fzxVq*f%-iEFWG|WQW&)`D<4Jdk1p#NMatDB4 zUWC6GjcSyoD-Dw0gzwm7=K_vF*9j-U+O8r8DiHdMu!9A7cH-^SBoJYJnbemI6eOVj zeOas2)rtux9+#!dpRsfwn@z%rtz9r>7}UJ!sHDZa3udzzHM72L>VVmL+7b9E1m0s> zt^#4NDyck=Kyv&0g;&f*$(&zJY=wc&yq`@NU;V3`7(3CNgD8kX@>$FrVd_ElH0E&Z zqgDyX!@cVZ6gQXT2Wd&$w&}uWf)CLw^AkQ@bMK{J%jFf)v+XcHR|3uwNcFy}1H~*K ze;PB1Xbv?@Py3IDv$%bQO>7yKAVT|Mj44Hfw*)QHsipKXiq{}Nh@IX$d(>xjx3P~# zb2D#{U-))Td?>n5QR#!Oi)=*ZiVI55T}OL}Q*Ei`9bbZB>Cc*M;k-a@(PP%(H_xDU zilrrU4n5`;5!ZNVM^EUQTmj7fdvdE@>7Vd8u}tQlOl8mZcx{bykB$%R)xy;n7#ysg z!q)cvK<7q${iBLsQd^vxSgk_y;da0ZBa-60EsF_cQ3V!Q znWG+1gG=Kk0He{n5jqS8F8Q3t7e4Z>3@7w{_Jq0*VBg&BUo?kEE#9;HR4E9O^Q|_t z9gLH}&85hz20_7d_vWvy3k}`z%e+73(_B>M08$0P=>sW7+sxYY^gLLIE9$H;o6uME zFKPb^6#BIWj{fmVg^agWKw!mRM}%_J_zI$ALl}dODf=4N%RL75m$~I?p;vt4#sbLB zmoff8#(IvHkNJLei5!*!#9f7tFe<>QYfcoO@MCfFWjLP1(q}X3d`ZofU)6cWZ$c?s zjU5HbC3Ygzk<|Gu05Fr*%+uFbbV`W=wfdwTvY7<`v+XPCGE!K6mT_Jw#GVe?-k*@L z1xx4TcQ$W6E`qqxmQ$_VWqvJwY1^mC2G*6)ki3P_!$j1`oPzoanm8MaIBmG%g~;8A zqY;eBTx1!uZS=Tn%eUbSK7>zEx@k@$M(q{CrP@Q9qs4n(f2OkR1QsQvn1~r4ee7fC})Jz$7P&`eCETF2Oo+@6h3FtLDJ&L8>b<`bo}aW z|JCN2&j7ki60!hF9=IYUFp>Xkjz}{hqoOnMN6@(2&S@F@mzfPDk&9SfKs<3SE-Ie9 zFN|pb9aF6x!(#BoYdk1ZckA-I7`SFUdWmsoVB3uOsOO7lD&)O~*B=1bF7)e{JPk0w z)}8NJM@(}g1W>hrAq=iI<}wSK;jX*|f>ty}gUd77Qcjl?CvvFm%k=v<8tLVm zZCY5GvoqzWhb*Kv^8P3J8uY2EJ51*;*A4ygGnHXkT%Fk6qb)~qKuKWs?Yrwc za@Tg1T9v?`GgPyEd`dM0;`#V{I-Fl7lC%DugV$QuD9QV6yYnhCFnx3si z!?3%8D6Dq^;sp3AyJFUu|8ie06fLzNm*W)|Ps>+2-;Q-pruLQR15&hiL(o_BLX8aI z%p;)82}y2E7k-_dkI~*u*cI$y8F@#H&08sC5@3|N@bEZQZ@DSE3pI*@o^^#sq;HV4 z8#P(qWJ<2#CKKQk<8os&Vn6vJE?0KDr~x-e9};N?FThoNX3A@pMaF!`$sKsvgYqha zIFd*+=Mv00fYF8_5d=;mmiA_?b15wkBj7w6ul4dM!}I0*?pw;Gjt`~PKMx=Cgbx*? zRciIhA>)ayoGM8vu4Qy{ziKT<(D*8eKOB;HC}}`Q*Pi;liF|KPd#089pC)^l=;@n? zIR#ndP?Q)$nIRx{26h{uQ+a7r!7R~$;WTAo4;=CfE9#z-8f(2K4h_6n9)i5T-1@!zRBytzxY z9v>Pw3vTgPFDMjuRI7M9Vl#mK-sTD+>gv{d_~$WAN+)<;>eivEKV!l>V6Ek~j4u(@ z37=+{$hcgrcqKU!tWheZ(QHeUQ=%FlZs5c~WqGNF!~7{WiHtmnJH-VZ@4GLvvP!9Z(+c{EEv|g4 zw)*xJf{85@f|H#{J-ujU77apKiFOL4Xx?jO^^fA$lZhGM%HeTjPv03Q3tjcH zaYIQD-cHK0fz27WoaB}I#Hy5FE$sNBgTJG0xoKVSWV?isI7&{uD4ReA;dzyX@pOooFdpMWrwES zM6pq0tgAbCUnj6Lm`Rt)TBYCufc%Q3S*Jn@9wCXy{$W8gN7NdM{=Orc@z&9XMCtO> zy2;G0X-;GmRfsN5E_BufGpCcry7Oi+`*%eV3WakT!|k5#9kzUPJUmt$@a4J5lF0!W z!Hd;LXc;ZL9fYZo5dwDFqY6Xq|I$zKM)&sNv8`Bad(n)qM$Hfcc}thoYt7}q5mjZD z$UjU20kZMkm^x~n9wO|AFQh*Asb1*?fruYOSO39XN8e!si@H&ASo%ypZx@MLojz8n z#0Uga4aO--7Uz~rI8i3E)k$e(zEmZzxp=MPWGntT{V;5i8obRZ{<`$GW-y3VyiSCu z>hV-7#DnD*>pP3iOm`ZhQrSi2+DmyJsTcAA-B0vSab}wI@w@6oqg*-kTSjOkJK9s~tANorAN$En3T%MP9t07LEKA9PYU3-z z%?9t>F}2})^M@oJ7LZ~6WT%m*q#C)E5yHc-pvHC&Vy*wQg6P@31Apg*hHLkNIYMiy zGOv>Xq-YulN*x=GD1zTQp15EeQr5;$Js@G>PAaZ!U3*pKrcy1d_Xc93nefYx*CcjL zm@g%kU}FZ$*+`}baCPMk4;z#2v*?Ik@c>1ZN6EQ_*aB*)L(zg@0kYDQl!!MC~Q?IVqnPtqFP(n46-pmmPLW5XcP*aOp)H<8y z7Ns7sU?S;S9bu-7Snc`1_S+k?r0xTg!bON@y+OJ;AF@Bh!L+YxQqXg`=P z{XYh|p)BhP86^g*P@q*td{LYvQED^96|$M89aB*+aNRz*$-@_!Rqu&FeU9P&pC8XN$a?LYO&gfKUjUgFTK_UukxI0E^5hASHZSGFH{Swb7)eaIaIV4cvE!KVrL@eG`PbuxJED6R=9a=8bP4kaD6(%ew05 z(6(M;^LvN$&uAw$PhO_~To@)jyP5ySW;@)U5NYqWp_x|UBErQJV_Z_g4MG)bxLvNK zp~V;SGtjdi*z|6#00?sKR0AQ@Vv;3`#hZiaZCszZRAB#mFw6ZJ&+>jAC|gvBm#XxD zJ!Qu?K6YSZ6Mjd&CIwGm+3Um@5PF4E?0AMWAjF64cQ}wf~njPr-1GN zKyVglPwqi}s^|N9f;}YL&$bTbhQy?Xk#?i9r^U0yQGc}PgwTdfmw*8E zz)$XN2T;Y4S5Yyf^jN3x@tc{@yw*vCqixb4v}WMu$kbCoP;)rMk3_+Kc`XB?SEK0) zLJ-WrXJdl2D9FS3XVR2Ys*wQ(jGj2CX3ckNbJ{U65{3tA@JTklwp>mtFw6UyGzzz~ z1>9+3APo!vMC9R){09QQ6rX~GWvI{5JKT+-sqj{I`W#Tn*Oh%A%h=0ff-wMfEQ(~n zF|I0jA?Zt`z308g)ekC{glM;?iVr9YCr%U-1&+Rfnf!oMDq@XQiWXOb_R6=^esb~# zJh-c49#n7sOfq*eXC=03b2%jTR}+eHYmj2=c;uZ^K6WrCrppngn)%FFX$964R$0Z# zn`^EsmznMop@>7pdaE+CjHlya5-hIFoSkEdY5zOtv|(&oXaygMen{cJAx1d7y0dkj zH%OC_2tMHG0Q-nFusN|!sA|I-_q@o{JGt87_#~CpU)InE@v0pu_HxHemqpA8Nxl$NDC{sVL1~GgJ5su1Eu(6P#|yCzDl;|W znq(h+m2N&S)z_55?aZT;kh-0WR<%P7Cd4gy8?QD7%tc|%>(F#y%~N;IL5ZSoq0LM_ z6Ul%m(c*GV-I)3f)X3+zS~uDzT$-QtgCaf@{JMF`$V>Z_*pF0XAPu<>*Ke#YnANk7i&k$3ajy+4k++@juQ4%^Fqjx-7O6}q{g2SJ5Lv|j z&t+mGK+is6zOJURk(7IGL?U}PJEI|Mcv$nW#NJ2XSwFTB~pr$u0vf783hA` zrk3@__!fpqUiOOpV;54eRS1MXmVYv>ru)KIc@?b4Q0suy(INf~t;%_Gk=L5szHT=L zL7p?Uk(Hw;RSHJ>5B}O~Zw@ww9tf9ABKzh?i%F}coifbb3>RLbhFc;Hg=3(5ZxXBL zsA!)%78A*_-KKy~ej&e7qSLYsxRB3{)7)Fp#$v3GY*JT>IhC1?bj;w z07*D&QN(j4W&4TP?e6FpNJilV2|P+PZ{Yb(s7;vG%@g10lPT1G8xCx!fZr9q;JKb< zf=wzo6rn$3Kb&AmJ+wEF-7x&StfE~a>th&k(rkq5~$!pa-H%_$dn#+^i zW4&c1Yu#7f-!aEoB*f99gga9Nnqs?c+gv-7W~JYY!2Rm6u&U7hlk*a-Q%8-7{!%8cSiH|T@ZL7o#&0la%t@=#TQ0~IhWG5085PCG7NS;&W);kW zJgGNO!Ze8Vv2uRc+#j>UQ68gx1_&s|$@^W)pYQVzd8|ilU8i zhXucJ%m=yQZZKFd)L4O{m-tH8afEB6DB#w$|Ln{G2uCxD)Zn9sUqUAM6JEJ=jJADvwbVKbv#rSH_hEte@Mz%IT4}V{t3? zx?c_mF-YLKgQw`8i}fUq@RPGUZYjgDW(8{wFbki6RBH)Y(9~H}E`|U^l6^2DAM;?C zP6`0Ur|0whnE;J($)3*3zQ~Obf#6jWsr=aZdM*e~&B(>m^0KS&(??e?R>n;W0VZTB ziZO_&NFN_4`lV9$Cnd$ND(!e-*Uv#Fc7~auc(Z954Ko{FVD)%ddfj`mYE^0MkL|C$ zv6i0v> zS#q`sH|N)YCzcSwL8Mhu`62gDr0#$MqcReGPM+tOPl|UIcZBTPfI_cXlPnQHsaefu z)}oNIb%2bBzEz@ui+1f9-esaq1*%T1&S_-AXT!emVCywE*4qAqo#P=&MQ--873=Z9 zT+34641ivh+t{8%;FG1#&al*|qe=!D!j!|V!0;&L#mc5LM;DEB;_0VtSsW0Gu#T`S zz~lgzZ@-cQm=vAUA;Zk3nNDNy;W*?qln}U#Q&3Tk4b2xkSLUl_uTANDTpT9NVjE2^ zGh!IXA^&#U>04rlO5j_!0Qf!F$mNXZj&i|4|H<+)Jv$xHx-k7UFCZ{wW1h@jlr8`{vMPJOik@eP&5sR149DYSX!VG0=L zG&}IR;j6G+XmJg85Py|j19hdb>p3%8>Rh-h6?li=+qQgMk=6 zieaR6Qs7Conf>TOZ{?)MNPcle0VUEksxV$aiS7!822OcU&IqXHWZXtoyBu!q;mq+E zv8cL}&mrKI3q76MXFz8U>C1@vZVR>!pYK4?Q(Lk}pz+33hl82N8UN5Rw0MjsE65Ui zIqvWvXxX|`5V%!=(n4(}V7GMt#hT#?iG$~@um3|0GpQqw63e}xdh|<24faV{QTR zoi?kKV`yF-em34>#l?aQ6?*9%Ao1kAVGa7GPU|}*=Qm8iSgUU4Q{^Oy#+RY9*WjUq zl?u)YF2-(_U$}sb#R@RYLLrGVX~AxUtH(5TNaEleR#8RgV*vbz0Cm(ZA=I#vtmC>i za(cEm@O;BWY>`alht^Oy&RrJa1Db;(^4fBGM1<$U0|fv()K+VJd@aL;VV0(Y@gG_GNua1BO9 zc}b?_Yt(QC`-g=i$dw0DJ7zxpHQ)tyYX=&x zn@f<^3j^dT7lMav{+{*>4KK=;Y;U2l`}YyN!p!Mbbj7C=I7~XRdf-uKiGZCaK5kw2 zWC4-QL0)-24Y7Ss5o3C!91-s+%v05CHeu2csKqIy{?wetYdpAq6CCZAqRYE{h(6jq zr8@6|DPw<594&_E0+s$=w9z&p`%*Ua1{JeWElYBA)k4fR6LsV z!?(Gk7r%NI(O1iU5L@9No}N?BO|Bh{ccnmc!(jBI zniuk`iM)Yt)`~bciMDsa?H_Vrepl#`BzC{>onDrNgOM!85x-Od1tKioiTZ@r|6O%@ zYVHGlRh$$YJB6d16l3F@|&QA5#KLr6%Fz-n66)FHgEd_H<0HYoh@yZW}0% zc*y#GxX9K4++YZ9cv;aJGV9T1o4C96P=weiCLT`IxXPBZUM7UdkS0X)Eq$KYxRVG* zsa~WOUaPBm7pUKbmT3S7O^*@$+oc}^9c)vti2?@xPYx6gP;n6^nQ8zy}ysPIwYkgy` zmTVlqs)Q_sq9K~H_7LFzhC*BOD9w`g5LnmPjegzFekTq_J1U$(mZkmzS4eL z{t|g_y;jUvJ`Bx}rqmr5BKxkyVzrtJ$8E@)5C7q~K2xR#bgaa3^}l}ZUDE?( z@OT<+TR^6`UA9EiFZz`i0;e<`gELizAL$Iyei0PstWUBE9tTN=gA;?{(`vU^m2?#l zDF)GkN@dm08k<}`VnnQ%b>fCjx7=d|MO@Tne@}n5&0|;%Kx0Y;i<#G(J)_ssY>9hD z8OyadhvBjL%$g5Fbng)v4i44-{+{^F&vE`$xF!uwYr(H>KrGY4Z*0&8^XuZmCV~$X zzkLb77@hvkPL3H(7KgQq0Mj`q4}GnQD?WIyH;S_40*f*6)X&YERm=N9_3uA70wS(% z4Tfiqg?<`K%1!-zd#DPq-sM%HiKp$mFNqtBfC|>Itlu!n8UM&QR@d?^z|yJj+mo^~Csn_1C-j!p!i5%3w+T-grhmd3 zqcllSyp1NC8X;XLFbv#Rh#tUZI)TILMOio*=7tZQ31Z-LA=hfyf*w;xh6O>VS#>q9_l#ZS75f^@dzKm3G!Rp!Dlq^;C|6zk-hE z{j8<$+Ss{4_6HcE8_0!xjCw)r&|Y0&GWGxz9ep|4h&9$rc&hA>2XR3P#DwS?PBc73 zPF(yo-FfQOX>Cx4v7Ak~<5zm8Y=P8Zx}C7rvXX?)fFoRA=U zyG{lQ=NiapZquXv{0n#kWeK5ROX%P`RsyoPFG>MvfS{N!ZTc11strwjbHb-Oj1R*H zeczo(@N<-Dhr9>A`9`2CSw!^KUJ0YOBenVANbt*_MES!9-WeuWKP75VY$2&+cPsVN zZcG&PlH_w5yEFYPH?u^3+Gb7^3?7Q2daz#5y%0g|xU91jOoMbOA^J&FZGIdJ0SqTS z2dGD_jzi2ifAC0Bed2{8n*>#e_($E=<{K8#=O4gzGI~cD+GJ`R z$y@}`>kJFF1veEMN30`O&yL{r&!a@)T)!uh=ax2RPdVsQX#GSt*jdZ+m9Ed6?WWxQ z=t(*s?v!4bH;*@|NO_!TQ3|~q{u$@Aao6J@Zv|qKm;7XXOaQfn7gg=@Jb@$7Kf?Tg zpMkJ8g?Lz2T2aB>!s2}47WBgr(t(*$Z2jW4Tl<}HLSy{EDk_S8?}qjxWmg`t!>wYj z+zATOacF8vs13SoH+TDwX;>BFai2q39sbE|bzJmo<1hpN_3ptEjy)pHdK1(K4FloO z!#PGi$^xv`KSHK~4;ruj^afP84e#V$AhApc?{_nOT=DsblY zK0w549>Ad+#lQVsPllPMcZpD44nE;=^Gt${1AKXTm3S^PZVfex(uVh?{^rKYD<|t@yGj)Ci&KlA^*= z=h#+`ME736X6poUz&sizOlZ9zp@+&Z!c$+!=d1T~nEvQ|Q>4toTwacU{pLYS+^%te zsewCO%I`TvWjy#S{X4Jh1)Y-B}Mdf(uT!aGE-HZtFOD(dv-ux{olKbU4#S|mhX@hIebd>;<#bDVz5!*_Nu z_hk}5&Wi%wP2C)>Ys^UEp0@)!`<{Iy7z96Vs(k#;|6|R_wMkNWSDLH-}i4} zP*}{#r_jwaI=QVpsB4v?)aP_XJf)-<-vQYR@!kIRrY$B^z4Q+W3tOk$DwT|p?8(0w zzKDuAsG!t(i$T|*sPW<~+@Vh_tQn+{q+}WPNFShrbbV@&wY{w3u|&B^5m617o4|;e z>(-Brqvyu+D$AOxJP$&TJOf#@&I)z{;~Sl2=nUff1E|mK0z)e#8wE|?vf_2T|IXGq z5q*uSU^j21`$tb^l4Sf$gEAkHIJ<6wh7XUUt`7^P3|5s?x;rrOJFVJ4Y%l|6G)v~e z@cr1WtQ|V(^%`kDK$p6$;N`d`dlzejjvJFVXJ52UC9)jyXKATC6g<_zh0iU~u~%*P zml;+M!UvsR+*89~1^}T7NHa}BkNxNFO~gmKm(kk;1i({+(&Qs)<5PLwU@+-eq}B(k zWXSU^Kz&$)v0Mr9HCYk;Lmxx5SeqOaI2pu*?O)ZvBv&OvO}DFD-Ty026nhk~`90^{--wXrk!D=~1<21W*5 zx(x5oCNl0|F65K0AilxxslcozdYof%&W;)@3I2-~eL~gZFsFq1qz=zH>u*ce39I<`Xg+CeGK*%dUE(8INEH(0Ih-IADt}pq+fOqvobC;s1B`Cv{?Bxft3{*c#OI_j#LsNh z?X$uE-c;wRNTzDy`t$GFoJj9;U2;E{jyz`3ZE_(4M>4PAVDdC;SXQMhJkza8g(q-@ zaX_=`<<&t^0DCc)hMjb zI1^z?F?qZJ_V-0xHGcqJS?Up6+)dMY7t52$1ic2U|5&b7siuXj>Vi-Cd}4${4FoS+~{ zHGp(ciDFBM@K1z5p*a;s;CA(hLf;>45R|2a){_&c& z88P-zY!Cqw|MkN_tr@8cr~6k_69!v71*g+u){T|@pf81WU;G}M>gttmUi2{F2lyzp zZMKr?FDtwWp(?iE9tQ*9G9Inol*FrNW3jW;zl-0yAnU{Jdp&fL10TKLTwb=W|Km`R zj!$B1FHd7;XsK;c7`Au0-mX35QAnlq-Fm~m-0VDKA*F^G2p@+al3KB5^{t^Su?h|! zVCk+mNDl6%UUu7?9(;gPxP)ptQF3w*xUlB@NY86{z+Sii`z_d@v;Y0wx4dBIHcovB zciQqm+)yxED(P0_1FSnO5-RK(;smj>1!g#Rp3_fl6k09jdpPgVOiJ&M-tW-7Vn>5P zG^)@tQqYZ;bG)fiCgi8No%Li*>&B3loD2_Opvd0?wq}f}50sYSReRiAbz4|a`(ufw<8P^XYn9XHh?KaXIyB>EQ=IqWUMf2BI8LMS#RQm?3LKF< ztUGLQt-9oyP(ifWa{4nt^Bcxw*zO!=#BN-j8eXgrE_n3OuFxbEFmjThIo!WvoJey< zjJQ3kd%S|xD#>T^(k;?koC}i?MceP9LM43th+gxKCTw)Eh%l9r zBIQ#Wq;FQ|b=xTiSMVz^1WVvg2|h!C)4||`>E1PFj-zkL#L;U$NXA6^tZY7P4LlY+ zT!fV42p2T=x?1X-4CL7#HM)xdviJMn zNvI8Z)UpOIni|T9QH!?V_!+XP^(NtgNR3Op6;~EmpP!1w#*i ztp^<&Dl1z%F?#^X+aQ0-LeG8H$CCP*nZc6O-4 z!)K0lhdv?|n#;THE89x?Di~SpnNS@%gpP1y@{id?*9Zaj3)t{2wD?R(bkU(=!|7*x zP;-wiQTl<9F2@QVy(N>8T_t^94fAWJL_uyNVf(fasxg>Fh>uRqir0;W$g^%Ktu!$s z;8I{>)6eU;++M?SJ6^z%QhNDsxm4w`P@?*R((=@f8RGMa21hrYCYlduRcWv4B6_Vs zx^7GXSbetE%-Nd#tb(egu9w%lR{chO?pnit^TE4~8>a%B~K$$^8`bFPSzr#3NEn#)CvT!I#ZChVrNeKfP_H%-rBtQ2^D^qbIseuTT)tz4G& z#{gn!^&J_*(9ikm+nXMMP-R)+20950FJGIC5P@srRz>s-zIr54fure2c z`_bf*%InlhQTi*^?-!Qp=&f{t>r<+eg;+tfA*MQ9L-@pq!s8yQl4@o;L%RVlti8R(Wlh>E*RS; zy_uGP!FlE6&Fj8e>3U=}_b^~XX94Id_s>kV5j-Y^NVC{i-U#uuH6wwwCv~XDP0E|b z0rdf}5L)4#vkxj5#_pcp*yk*QkMm7&$3r||(YM7YY}@s@{ccCQU;R_58S$QGdgp0% z;bH*PJn>!*8eAZkd$W-4H??GTnz7KDb^$Eqek~En{9H*7M_a5?*e>-gd&)EX)ZP9( zx+6x=VT6AB{*6JYZMlcFkK@SunfX3AQ9bw%BM^vRo9egbbp+79JP3PD;i^Pc)#>>S|BB6V7f?t|8ui6ISM4ph;8P|W#I@ZAf0 z`vqFJa$YN{7mjINTg$1AA1URdv*KfJ1<%uFpS7H#1E>d9cgAmJ=u~AgF8@0c16dqg z+tIaRo@N=aFwsGzn>_Hbu?&BO^{x3O>5d&eZ+eR`aKDW7XiVzXcd%7<)Bcu7%ub-Z z7@3NNH0(GE!TxGHtJ&R@u*Qu>xy4OwU@NYCQDMFg?-bbQW`lo{Krcx~C5`(?`AdT1 zRr#^nHTFe%BCfRBxjoJ$#Fl8pHybS49HT(%88$O!WX) zTnV2y?6*B!%J{t25%(+yI_z?73Q#mT%*clNXlM3kqPtIWyYOSh?*#<*DL$OlvBL}* zmRA~A?NHle?M5D!KFJW)qij74Fs-GK8(%tENbsA~=Wbprhf;z|4fxTncy6YKLCI^M z7-%vY@l@ofMOo*EZg<|ck`hJScD~244=vPJT5P%BRKB~qn)=?9h`Un+M^q_NaGyF%^ z@HdZH9(GFjjh(k@eMbaY5kj}@`odr6`G%q`85_8uSn)WnrKLqueE+jm%sad?n9Ez- z;cpHd?6WF}RSzBQLijx{N-^2EPK=O4p)%9-*bbJC?J)saONo{eGIz2@)@H{n?9Gzt z``|EPM>o8}CLLY8cgLm|Mbywq=00yyHbw_$WcwafDF10ED`Zl?P=MqmLM?oXn}~({ z$rlQQPNXrC64$Ej_QKJukzcx8_CGiQ8m7kgj4c)0^a{n?X*$f9YyVPj z8cb1w$1G|ahI>0mGq1%L{)GP06QvV8@Gpm2dOYA_4iHm**SMTFSwmEV76wx^BT1oh z1|<{?F{lpb<5I>)AXs*$%ka6{jA5dSS!#|!K;<_SU+16!a1&cq%96GpWU}&o#Z`T@>{3wKy zN{k0yL;g2JgtCv&NeL5dIN~$&?Oy}u35dLF>Q5LZlC8rUSpX@CS8{d%p}v9GL?O7+ zpe-R%XO3H5MPg@S$5!A}DCtkpZtJH-sQbcMjf7 z+@m7x3P70{F5TWX8BV8HOe%r84fAnvPFX`xnZSbOS^v~ZwEk*^@K0*z_l@at@W)4lWR!R`pSDw=J&SIZVWzRdFVc=U(v_`<8{yYJ+ z5K|s&->ZKnbx$4u0zm!0Bk^DFWIj(ocD;mw3Zsp*jp#MPoX^HuB+bO=CwH<*?W#Sm zh%E$_mwIrPZtnw$DRgEa?LZgZgirKc3Ej9G4F+NFyzwDgEvW%$Z~2M^GU*?<*_Ad+ z?PclfKRt3DM8p^GBFaeE|e<@LL;-z4+QG*|95EN{rLmUPoT1Dpj5Fi+toRwEW}ISg3J-{vxAmZd|CGBm#$68K zdj&-tcSd1wXUoPov^Lck%I_)T%81ii_rbMshnZBm1D{#Q*cfa|j~F6^Dy8xKYFE?j zKqfoK@2@^tWq7U_Mlwgjf2WrreVPGje%&cHf*Kg2u*dpSVYvnjngOusS5BE?$#Gms zd-UrFhBw^Rc5snE2|*coZ^yYcU^g=iBoKlPRrtgKv^J$8MrLlgWXZ^q+5GTr_!clMLFY9OdI#19}e>>flJ%O#ZGU|z5z zfO&@(C0-lRL@zA*Wcv_+N|AZ))Jnzzsgo})eNg*nz#o-U4;t8q(Mg3`Aus5P`ym;w znWulikEK)Cj|W9yUwGfD@hZ9_s#~I`ySYtC=S@^a*yRaT%@LazgVC&rry28x@dI`g z{599~ThfjY&&O_F(cqhqqi*~O&|qH5dbkvS?AA#69;}gn;1(n6v3u|ZOn+G9+Tlc_ z+93PdhSA(*~~He@!Pq zT(>A~qLM5Tfz9HJCM(jt3o(lfHG?3)UWT3&YS}<)N2ZphtU8nF{P{E8ql>amk=iP( z;upE3bv4$>)^rN$^g}dJT3X8?ihqP{sA#Ajdc?Yy~SO+j^on=}_%!`QyU_e79|+XjBT~Z8O=4Hp4S;|Mv)LSutHWk^uBCts|=p zV5X^cxmQ|vj^6zZMIM^!Wbg&fQEwu{PkH%MMJ_*Sb877?rkN86bHw`icn{GSQe6p;lm2(~f8cnV_PNp^^P$5rA*c`xoGy9F9p>rXb-6h3IFtHBxgcwo058XVF~G}r z4F}y4^rnoVzltKMIe3(YLJ6B@Gf)&gPz_6r69x+XP756zSJ9fmm-lgbJQt{Vd5(9m zBXszaH~V0GMd8eXg`o;cSksccwD{KnHp5hL3n|)$Wnm(#-lXFD@pU3Q!wEK%w+#cj zrFV+Jx$Tq}OXVqoDT(Y~f~Pjg71Ml++oO0F6vX$SiPv5Sj{i?lohlaE3`5AvBP4q@ zK!Jo`3te8z&=VKe(VU_*(_zI7Wwq0grT>8d`9Gsc%{dCfuP#Nae3!%!glwm$d>TrV zL1S{+qqK=lUC*Rlk__kutQG4e^-AUB$0#km5JJO8Sbq zGs4^LgzaAAQaU;Q3Qjp`Xh$8^d=xFM3+fjd*>7y@yq{cykh*`(^4QWn?Ponc0wY6F za633_2Q)8_EMt!LL4DQSd_1Wb)$lzC1s~vy_zm_kgY0#kXk)8FK0Ju>-I8^v z4{KJs!G6AU<0-_`q&1K0G>=xLSWO#7r|2;`wJ-(-OPpc4+b>MMV+-DLj4M?qcwru) zp^GLm+wjG6_QEMy};DR z1i!)bgkbm4>F~r3ExZiK;l!H;q?wA+QZ~h)7I#rlZRk(JEqK+$x^tP)IAE?4Fk+c9 zXxqS0tRp{Ek$tIE#^=hUz9sL!UM!|z89!gXLYsxm#{`-PBMqE9I0Stq5DUy7*G+5R zPP>XV3(#`L=O@YE%ZIU|`$Kt98;fb3!DRXIXGr&AhEf3c0nB)AJ zUW?_aoyay0a`+ah4NrUsKbiYa=Od~h)pLy}^+Veqc%*+G{!Pkc!0SzD{A!nySMTb# zYP14Fy%20AXPqx?4%1jcwMqB(e&k-|~IZeN`eksa_iqk5hCHxtCJt%T=8>-nY-|BO7sNf;U`AI5^s zxU3*>bHGiO1rT9B@%+2h3pfb?Upso+RU%bZ6z@?&XT~3){Zn-e*z%e*@PKj#j6l8; z!El}rQA$%nL(xE^tt~Bb85qTYC)bNHu^J#Vv^Ap7z8R8E9%0uP84-|LDSCi{tw#*(Wx{;88{qHo(^WbLi}TFf?M3#OorJOX$cZ? z$R$Y11D@GxJC{-X6OyA4ZOh+3*`#pVP5KAzcNc;*Q4U{|v4F`+b2tJ9gUDnbx9cuR zX8x}wLH}Q=h(A17N3q6%^=|F{0sPWSo0b9ltNBkS&tBp&gYK7kBM&G`urEZuSLr%) zpfLd%;6@r8bU5zCmhzljP8-TH=FX*Kwq8Cr$FP26hE~Jv>wOT>+Pmjw9TTh`{bYUp zu^9dR!aTY2qW*%SZrtz6mu6&B+O>zF=H-pUk-N}(nGxO5!h%rGQE&l$k3U_XAt&nV zg104eHiXR4=NCtyWU+NT{I3hD-^&Edqr2>m;|U(|$d5fx3=t*$=)5D}%X7wy=Al^T z7VtnmmXNw%jzRcWwkP(RYBk;Afb5a-6Y)T^*dP)A7P`8@Q#CdA+f5OXenJa7oyd%H zc&6h2ZwrMUV>BPel*G`765f4IK?CGLc2eNEcUE|BFZais$ub6b)Di7 z9kL%f*Z?JLe+CndeoLNO3^O^jY42W6IuW9YR4;6pnRY_a%jRrzp&__+XANd4*B@+m zan!}43?^)sw&9(XnHo4$NBEGOhTafaQJ?Fkml4?PN=tgp!y@oaPddc)IeSJBAd8^T ziD~UbUlK@}o6&a_PjBfvdb=hM5Hfr_ye*LtoH5JlJKBkhS@&JdH?`x4FVc+gF?pF| zgdw3mUnp&l+6#OkYnSE#n}|$zKFBp%!Kx8_vl}dJ36sKnRPG3u_mW)OE{J?;y9A}%g z*fXoPl>SVlK#SE53}6>hrEcMd)8vjSzMHzeEk|rpBj(FMclyiSU6agL;OP!0fN(Mi zYqm0Y!vV+*;F9f6eZ%9Y=Y#tLFjIP?^+*!@Kq_0OG1adDodUyMC=`FAM_$dkL5JhE zJ9%2c>|2~oo!}BEbU3GnP453j&pi?@=8ab3Y^n?MgdWdkAdf{xaHPI4GC!v+PkOhN z>H*(tD}0;Agh*xGRg2r4Cq#HYwO9wi+X5%;iZ?yn#aYe`Q+*8e7cl+bxF$Y7dJycr z^)g3DOB)F*#iYqVb=B=ERb0VtJf1La+2z`C;(!PfvNzfC;y6~$(z4?;SM$u=R6r#A zf%{S26A<)gC+vOU9vO6IO^Kb~x7yuaeKejo?SBkkskO&528T9C{8wl01jpv=MVDsa zIEBouD=^?#Jz-UvZ>Cim7)$=q%|%7@m5D%NIk&gPtv_|H{&$~w8OTtUzWw`KC0Ku3 zlmcFVM2@E$-_Lkz{C)UuQna{mOU-)G?AvuO6s1n%K)MT;ZOmDE+`PIK@=gaC! z62zo`9|@=sd7eC^advT-@qb&YVqK>%;l36c=vczQpoS1K-mN%t%a@=4Oj926C)O7Q zDPD5c7KE!W*g>rb-2b2{#G^zWKFcFl=tYUn+q0;($McX!Wg`n(Dii6x09s4VgPY}p zO8k$AD?DLvi+5;>9M31D#kd7#{pqav92v5bDK>tT5$R17XwuDWylxpUE{Pg2Q&|4D z$$4@ezLlr?f-cJAFDY*$uIvSieHDBUSe1v6W$$}1urf5{mDU!On&eyn1wg{P633Cb zIKW!VbcSKCu%-(fh<$RN0**-Gp>Q$h+TnXWBpUL+94mmL>n%sjuz9XC3+(0w{U+Aj zHt1#mjhgba`k?a0SdeYC5b5<3tnZfZL>JBpUAfEw%)#_%Nb$0`On`>xpR9?B!``73 zEp3--9~m1t;6hhHQFs*=bE`Pgyp_O3s&ec^W@;q~;U2mTOQ&}gYA!7>2*|doH zEW4b219AO@)@c45nuit4Fd?e4=ZG8^p3o9lcOSE*|4~SX68E|g$-~9E-F2|XZuZYn z=Rq|Cl@hfd<;lLV>&k79EF50Omz82}No%J0eZ%lXsk6 zY=mrfA$0&||823{k9#+`jQqV|s?8x6)DN)f2);ZYxsLK;mHRnMDeRJ4o(nuU7H)nS zGivD=R(Uk!Z##Szv1Z0<2`89P)j_c;BOqZ?JQ4hj^3zsyU-n8ZPHZIwD8fZqN@xTq zFRnqjlc1JlnD%+Yaocb*sAFEtf()h+RuJ^m@kWhk!D=x=arQ;b_x(<|a zUCBmqcT06#}Kj+Cj-~xM&P_ z(4zCHsyAu0W-&k_HTqUO$M1Rt^Hss6nUpU~+$!`LLdOjWAur^}+o=R@F~vcQ$KfK0 z$)LO2ReXioopAiJS+VX8{{*mIN55Ks9pwuhiYo@t1>o0Ml(I>J)~>|u5YtOzAapZ! zOYdU}f4pv6Xuns|PuCflWs~SkDLc*+Tu$U$!4hkEp8nkriOwHlG<6;w)|RM~ z=com8`-Z!En7YYbk|rBXeaHRVX30}CLAc81GZPZl%An!NJZ-iOM{T;Ivnn*=CGv-} zZWdwfmm>>!TV(a#YogUF&t*PqlY@-e0DTZxV|f3EL1@={2>*0G_Wb5cUw# zlJy>d<@bVV7=g0$JX?xSp8TF*+9=edn2lAtNUw_t_=9y>G4dO===~J< z0eSmaD>}fHx@0IB@EjRAjOi6jv;SX7{aE#fIW(I$_cE1V^}P*4b9(+931DbXH$;g1 zcG`GKaz&+I@<9((U{yv1*euvs`h2gC0uu!abriFb<~=1P?G14%xFTVOEVF7z#R%|~ zf7UZb$Jb9xL=Z!M89$H995E}owH2z(^7!vJ0SNl&D%oUl#;Cy8#u)YbXnQZ=ycmwm z#97Crk#H%^E5^8ic))2Nbb}a^%U>gmKQW!#FDB@@cg90=TX_dBSzXH;ee$MrTP_HU zKL0Naj`u(xX8kcgdiC9wtqjHTz(N8j%s_ZTwfU%4o|_r93$%{PZzzT!>@()2N-(M# zHNjaCE$5Qzf!p}`CQ(NW`Z1X6SFpoi=lJ!S50&Zu!+pnkL(Bpswh*A0zJ{Ass+MfL z-XTsq#fW@@-_4{hAgJQMb5r>vPc~Dk!xJB6-VjdmjJiWJJybP8tgGWDpUxeXZ&2R; z;~wS$7=npA?)Bm{EA+}_QJYCB;L;dg2#eTYX%K!>yxI&_>gbStZKQy}ujbHjrsQpj zYwvD}2hPl#4bZb@@R;i8GCzOn8{9f^Uc78$&KQV1G?JdWcj$EcJn?y1#mxXT zV3G@@DR)Gz60#<#%*3Lm^=+lI^(n}?sACAE?_1ob|7KjXoYS}b?!I8&h#1gzn~x?Y zv=4{ed+K$f+Ts^>DJ$D18C`qLADSH7EXLNgglfsPcDBfY+9Nn{bTg(tTI<*r6nEGjg|Yjb4%L*V&B&_3IbekeGf^Gii+u!BEF1nAi=`B4>ss7b0E8 zHBQx~Wwo1bRql*a)R?wLHQrm6JcO4sfk2A1Z`A1BN@t`k94oBhNfC;^ltgj`sD$)WMLb9jt!=GR0-pxin8^&#Ixs7 z@(@8V)kRIYKmT;tRa>1gAZj2hmOU3nj7SZ5BU22YR1ui$?LmA$^8K5mDps>k(s+@n zUG&;oUHj|{uJbx%lV*? z8&+gI6@T%JASLr#K`wsw#PjwS`OZTz5UufXRQW9LJABmdRqh9kO| zEhwD}>hsf@-qhKd!0?p7J?1e#Ob@hv3HNo1g~|bVjpQ*Dwq_S$TBL$}(jQX*-zgsC z8_Y0Mt?B6-zR17+fNKH<28xfBz3@f_kdpXGa6?;$&!JZ(>ZP!stzOqF$2?hzY*9_MN24tCW zQfA?8ShN>)gD=ISqc~whnqS^U%^2BZoE)3z1X(NsBj)Fp2ScO8B?8 zT^ia+eh^CJB288ASW1bbGNLxN=-HTMdzM9XSwfM{mSPz-q_fXsaFy~SbS9QDPD?=8 zIDk2ejZMS*y&!?xorYQRlYUX-PnbGXtg{**j|c95??XPNkVREPhKJ-!ow+FKTWTe0 zzHm9tDlo`tTL4r{-?$9DUZSrS#ZkCP2&r7a0q%>8|CpVdv($wuJ!y+JFBLxCR`RPy z^s^kh^HP16k~WvD=`qY)_&a~?a0e|I;*hFs30JBG>9L@7+eHb3m7z9`+AR51na>#F z@hGZ;1>IuoqKioevi@j};L+{Zn%4CrP^pM(6s>6YAW?g0FO+ReHZVO{OL!m3y5%P69=wjO{pleB9?-WmmQa9aIBd$hVVH_T2Ynfsra+ytt*c>Ij?l;uA@hR z_CZyF%R{vCl))V)+%UYb^6cWc1@JK-FWc#20xIyqUD;?k%j?mdfj7NUG&f83ff;)J ztw=n#kS9qnS?lz(85!gFL&m~YJP$cm*>_RW!P;(*^ZB+20Wk-4@m9MDBfVuhf4Y-) z2Mm67-nQRx(f7ED{G5oytzU2{oTStyhVfl==;Pk|!%93d0E+F`yDI-JMD}WRnIV~q zL*CrJk8A6xAhld4{{>sqD*!C;+Z(IM?Tqo~(xMg-!5zo~?lsjf3(VT?Q7{seMnQ8n-0oz_S) z*~1#MI;<(uk=|U5Q7Dv~L+)8{VGvu>YT*dzl>1J#)8D<8O{)ti&&Ixd)Qe3Y#Vt{{ z$kzwz8yv*`<1Tom1iiJ>-MVOetjL|l=*1U%UL%6#M6EC3FX910ZPh%VF6)k`pG6GR zourSN)hB?wBw<_EYfaS_U+=+EuG1zS6=Cx3j(P#t{T*_yiV4h_^M5dLk?y^LeN1sP z%?{K~p_XwW%^1#sT|7TyX-bJ`<|Q8W)5yuRFxG7pWq=}jr>PRw_V%1=WntopdQN8$ z-(j`zv)zyOSqgH+x4xAtk@cK+Mhg&a?C(_PVMX(Q)(hTSoBxYF?A|Qrk9w`aQEvZs zWv)%Ij&^G^l9Q%ncfw<3WG}V)ongH@>E4ed=4D0e;F?8cU{#XN%b%UNn9U8Ob?V2B zjqaUX`>sX2vGj!Vq@MdroIQgB4zJT}r-a~DVD6IFb#q2E0{zJNb<9g5d$1p`9B+t< z?mFSqVi&<|SiU2L&hOvqGiM`912c@=3P+tA@t*xX*I8aN>6w>CU_bHdxkI&c>qjzC z#0R{o)8jQ{39g!YjmVIWZ&Smf?w|N7gj*nPxr#T%f0tQJUJ*@SlDIfR&Gjum8S8E| zmT+BF!$7DOjO;!=zk`x3VrmUo_-qsaA!nP(hm8dBq|dx@wJ2vnnHb?iomB?%Kk6g1 zR;}5ckx@K*Q04r*%{J1eiIuz-Ey8~>r=`|dBCAq#o-3UuyRP6UoxOc@JG{fb!|g8V zBHv0X`CSbmZF`1F)@GuDQs&KAker3kz-;b`qGvvsk>%!sB9ba@IGYNxM51{1G}R$+=63d7N4t| zkS2O9oeL2Xz30oh(!DI?Ln1jnp11R6=gphrbPHewCGx8XVg~8n=7x=nkXJwNJ%X>R zJBM|Il8{*QE_og9=|pmZ>6KBX zT$>LSp(oqz7K{jZpgiVNns zWhI8TxDKm)2aSv(O#Ippm1vP?8YQoil*sdWW-nFZ@GR~h=NTwv& z=(4*RWWpQ1)OrwS+?z@2`6y-`VKbDCPxr%u(_9)O@7lpoGF@)<>qq~W#SKwvfXh4o zxK3dBd^-0=xIR&u787SMhNlU{o{saUo2=P$In?!serl?kcou+dQAqMiciX1+OueTA zbcqRDP~QX<9hLQfh8n`Iy!1V{8HTF%DZSGpdo`H#@3%@81IOrb=6sN(WhbR@@JhyY z1b&9JFSkc<3DR&3-LRwd!yhz!xXE)@*(AV9RAN6i2UlJCI_bdG{G5rjUr(k1LC!vm zP9w;TgG707iSl*@?NDsiV3P8WfE@DaL(BU?vR1&-jZQ3Hmupjvc-fASzImf4B)6FK zNCGp!@-u0J(`2mebrVNA-GD&hLh`SBEm!y#Z6H0&hjbZQP1KT2rkme$=D7y;Mz2hd z(~+w)fgUq=fqb}Ei*e|8>b;Bsb%VdNQ6_EFvK3K$xlagwIg#5Od;YXGFY5$lF?s(G z(9DiSR!t1g8;VC_Jv(U$iiTx2!$DDMSG{&h85BwK(e+WxgIRH!)5k__lor_2{MN5; zm6hSEnjr&uYZM7iI8tm{=sBp;yz>J9yhI%l>Q6lHwqC()e)k##9hqd{lIL+?c0~bvC9>DI=&w$ z9_#_F@cEu75{t)?BVULXK>i0Xe~KMy``qE9jxhu+6AhMhUsXa0``Bb8t4Oj?Ck4?Z zth@*;!}X;sk^-y7{h8{$E|u|pBCAfX*y^S%XUDferL%J?1Q2G>UqU0ag7#p|@%l;d zqf*0gT3Yol`UHRwjeC%uf~@+?c2BoFL*82NQKscapW3qg7Igw-?aDhOu*Al1Hdbx4 z@gCRGDN>_&Qk+6`&+_7RZ!3RBZOx=o(-t?Yy$qH#lQ~NdFSzyrYs&W#yVwY0&e3pz z1{|Q&tZNQTxlCK}hE97L9BHas!3c4ipkmXh=K(Z8SeJ}^sbPvjB)lK;wBGq<2D0Vh zWkB)Wy`C_m59b{r5tb5&?}P-sDF+GhT7)_6#c8ViTH>aFk{~bEt`H4vi9_sEl##yi zOc^JH*+U8p(5zam3Wi)`ev@V4XkpgL_CL99rZ(4+hNBFPSzET4{^nX@8~9C2 zf1vnv4A)SIqU(JpuXd7_q*Z%$(H@3p5<~dMVeda41}1Tt1G295w8&PM3@Um9D2O@c zPF@oF!ig)Q>hj`AeM4$+_%Oeellqo2I3@}y7gdetFG+EWtIL~Kh zqB#v$U@Sv1@S)bhHgviQysbi<#NQDj8^>#F*TYl`8T}M+ED1U0M=`nGm;C6@>f)0j zbW`r54OuN6j@Q!e@8Zuv-Aq!wz*reJP2A(M;vI4>E%T=_u zYk3?6fk5Eji}97L9JzYOcQZW-f)A+|w*OXpTy9UHVaein*iIh70YlZIC6>v%$|@o7 z7mVJ?3D<;tfjk%49YedUzHePK+3-GdBhhD#{};2*PkN#ZgcRpE{JO7VbRsgpFv@xV za#c8a5%vZk=D@KgdY;tJ$dqouCXJim{tKhDda$N~z(njhz!1#79}inJ)s1t}j=t(x z-4h@@YG`Bn%MftewT_a0Av-hd*ifmRs^onFb$H~axl@3|2MUE&kMm$08iHiq1##rp zL13fH`LUYJh6ip7n?~Hx^2t9KlFCH!Ey3YdPBHayx&Fp>UWVNaADhiUaV!8otyiAx z2?R~F3s|QDVYIcUFEoI7;CNsQOS|Au&VUOXw9D>9&THGR{E|T-9XP^JbJv8HzNl{% zh-z)jTLs^bUjFR2*D+#HzLnw|)7lu7C4>qW8@{&1uI!^=lpB?`L#24T+NheWUw@+S zhS8UTvU?qPkC1SjhW{D8vZg-C_ zfM=o__`9d}rZyb6&Qt$_KYZ_4i=bSNR{CQpXIo0ci1ms<;(ufM;;7~X7Y|QwCf%9| zYL#^)A7alh_!~V1Z^;?f8GX^aPNXJ}Jy8-u1)ntG)_mEWDEGz<&S)c!%Sv~-+CP7j zbLQuS#X6_p0q~Z4NTn8uWdo2U|5>%UeghInvqf*ku8b}nTwuHn>n2lFi>z%8C0VK2 z?afH9rV!y8@9Qg|0N76TAjtcV47!PwS9Hlmh}^7QUM)wp?WGFbg@z`)-=yng=d!PN zjJ6(?ZcxNCKs2+bI#;9v)f9)7lRIO|=OsB=$>gv~#z3q)Ae@lcbjvuC{*bbJRKpOD z36*Y(V_Y$&zjh<|ut(m>gwsuuaoJA|t(jB?`3Zh6%oiIr!As+H_b610#r}A+H_$BX zXGRq&^8vybp;pJryQy2!A*tIH50*}UeTM`Zn=_gM{!M-S&0Q@}?iVDG%*E>46^JFTJ3{#_Srw3>+T#WC9`SRez55hr~=o-;>UH7GP{ z!`*?7tQe&d<#Oxu+Cf{7N=Rbk6&qT2nva5T;-;8k3ATR{grK|Z-3`ZGzUD9c&yjhH zJ2LHrqtP&;U6c)d6C6(1`cNEXpJjlCurr!Bw#wC|-3r!I6$#j{Dxq_23ctqbBO3C= zsNQ-B4jKYYlygSij;fj%+BC3DB?g*m@t*4ajfB4Vd{@`DiJ;hxg4FO6!YQkhdc0WD|>ipbm5P64-w?* zCLYFQKOfnMO1!WgRO;hGB1EKo#^T9)&xi(pz!2Qgo1SUz*Jf*(Ab@%ll3Ek@pyzbhKW_ul{M1{+VG+EoE+o4OH=@)86C3lI3;2SdxNy zJjP@)@{;!~OY*in%ue!aJOxs!7>b`!{oPl(uZdmR=vWIIx_ST=g=whYO?Lhn{#od8 z8aY=}oIp2X4;u2LirZw}pb@l-y#Le%ve#^#z~1Z=z{ zeg(YK`o(}d^b79(0o>R|)xoLJ5;pk>sPW*5gxrhzHNCNwlmY~-Gi zt;lM$zwlw_m{p!j7*+nyL19*!x88`wX;t_GhxJu3&dc#oM4*GY9h0Ly`9EWF3%b4A zhQJ1djU+zo&{$u=e;u_SBI+0zU}SdvIWfQE$DeCk{uBK?^6>bobF&E20bZ}9F7v}Z z5JU_!cB#KI{>w5;vCLf^yYr!X$xMZ z6O=SM7FQ-G0L9QkU_k~T9yZJf=? zf0Qcde52es#TrJASSh%7^X|GeM@v`r8sfKyw5`=9oNC_Vx>Z!`JoNDG-si1 zfzwf6S?V<}W{@dxbp&FX+Yfu6SF-0@Y-xknz;6){1)S#w@+pN~K{-N#>stX zLq93~uKZ{N@+q$u>)gVfZySWVFME8e!UkqHkY8!{Rz7C}ao>fCNXwWy^IJ^Xg$`F+ z=Kit#IJdK6gr6;QeGVM^3YswbvLK7@fywholbv~{Z`ZKF=r4)t^I$9vX~By+HP!A{ zi2lAOEKDG}a6`Yn*K@_!LimL6!9o>z9JDP%l2n{dvHJF9aA1IWlC?Rha0_RYDxIIc zu$~gWY4ec98}R}PesNRA1bKm(qr3Gm`|sD{LnoE%z3-f*Oe?FYcpn@O@??~)afN+Y z2-7n4{q9PWFBWJAVv#pm$@FP(fGvkV@8}dc*-%rW#=?g{q;x)5|@O*5gJTyuH6~WC%-Ry>?k02&73-bG+7``^;#N$0x=-cv2LK6P< zb$HmJkXQ;=Bpf^qRL4)bCsIgowcpKR-nun5=^d9(;0)HT-IEdGpIQhRzB#ZuEPt92 zS_mK>>ut0vzqX(jA)Y^qPVjl|FLf}0zC_oEKbdpUhiZ}a@XPZ#G;Sm{Cd$hRuQea) zeDZ)))(qj^q3F`Lu4Z-dk_|5H*x*az%v0V=J>z|+Z+ zJ97D2QS>ulbx4C9P(b@_E;dP@2%SQ_0kw@y9+`2k(>;S687+T zr3#IX!67XLR*GXXH~<@X#9qTDT^bhazpQl6Dk%)IMjRTqHz*aB-8?x&g~Yp*8Z2RU zftE~)i0`U3mr;n#^#Le^hp1k8DT-s;G}nkjjX8x(jvj^|@bierWbsAdtaFIOh=!&o zyso@q38u$)PPCNoGD0n^HRtfIP2Fe@v%;SOayc24M@OME!KKaDW5m8G2$3wH^7pw80G11dlwP6l``g4h(n`*{3~g+8U^^FDjzf7 z_r~FkZ+~4obyre!Q+wVUBT4b_G1YQ_NL9VW)5Zw|H6A3o->@Y2Y>=0)5R~9$9i@_z zQ}zhBe(U_P6`qXoYr&uK2!PZd*e{u{K+BrD+S#C<_klmj(ep&@tqo!=lRFN13aV{( zEac!DmpRf$=V);Fu1%0;negbT=NpVL3$lxToJZ>^TY)N($Enmkdx7QjzEP`V2iVKq zZa>D2aA39et^G-f^;m6;R3gK?@$kV>MM4R1B!a9iorgu{NKg~*?m-lN9Bp+yDZ&l`5-4U`#ikbbFIU$)aGIhLxI@2$WclN5Yd^pS`W&%w5H zEMrfMQ;0?td|ajf0W%t&QbFl1G7z17n0-uh4vP+jjlyqt{Uq`-^)`mW))_c9DB8>7 z?{7@Xo8wBw4VK7?J&|dzgM+cO#O!?#7I%IRpEkXxs(~F$tlc6G$!Anl816KxLAp2rc-I=>DW0v&qCtMevRBpX z31>DRG(3g({BEIY-;W52y6CK$aef*vkeWvH_ffl}>I8j^lu7Xo6K$5pZsfX%6l}zj z%3dxOY|@)iZDMdsKf|uZ*PZP7b%Kw^uZ{)DToerkv1qxiL1yh91=e)1Dj^qVznzUJ zk}XO~T55$p^^hV>MI&sLHUPsdvwT~8qvCBSb2dg}_Dq&o%r|xE)0*^@i_HTwf2>R0 zMK<;0N$?3j*x$G|-2X}h-zkOfd9A^uhzW3mEYj!i!v+A0l}av`)*7rIZ^+|oBXmk+ zA8V3&3N&||d6Yp42n8RMTbHg-yHx4Cpga=wNXwud55xVQP=8}oI4{kT7-tpNK_rO7 z?o)92ttBSs%8%%Zd+rIyezgd5bwOBgw{L}wXMyL~gf^RWwQZr0e?nk&Xj2DEjrUU! z{h>ABH^i`OwY)R1nlzy-!F{KCwgg+=c_~D;cf)yx9U2j`0)@7KX2t|jMogku&ZvaJ zSgouSQ0~&#_2~CHj2yTR`fT1^?tBt{38O1CJ(G#DOCtd-&`ai|WisH;184z=z=H2h zT8Blp8zYwo*68W*QVocC>@bDV*T?BZ4@#ojT4myKcEBaB^SRR6n@oPk+ym7ixK_8Z z>=ic>fmB#d#gr%xaJe;f($CHdY#dD}8t=i<1l+jCt)I<*Ak17SvAf6}LWtWr7EZhg zjR>mP&Wwx9VsK!s63%UsQ_Bc~;fLNqhmyki)VuV%L7hGLOAd6Ge3`a9qhMrz1mDu6 z3og}bkYCZ3Y@RPu69)lwRAz5sod*nAfhVD z%H}X5QD|*NchMigyF0B}8`pc%W_3NH#fh$2R8}MaJLVKeeOPl+xgtoVtD4NA3rV}b zK@0Q`&{aL{vv80AO)Twr#^~6*WsKgb)G08GnO=vre%Bp+$5C96Jq&@p=%mAQ zyYAaM=>^ib9q!7v}6??aipFNG^#wlR>29qeLEo$04AN9CapW49P#{q;@3; zZL|7)8@JtNI%a*h*ciLXd7Rz1k)!M)(c%CC?zT47cXbygRfj`O129vO8E(nLjqOYg zc)Mrbho=QD_&iMkR(ss|Ew1h}W4|>N3WEw!2c`v4^-)f0%vI+^=zfqi0lKDGwXPAc z)Gue8PN&ZQZ###W>&|TTwn=%Xq9bST%C;HSdEL>t3-n?&LM;0;FVQ*3-|DUd*WMn5 zy=TvTX7xyJcG2(IU8hQXk`l5TRmttdoUPTJ4xmijU~BvC@O#Vg&Vx`(73}`m79|S6 z?54h3L+*#qVZ(&hQ8R$`X8VcA#tbJ z`X0|a3dhCMPD0E&4O~X#v*zhWbhv=n&4mE@qBfg}P@$E}W|OsHkrHeTeCxj8=m>HL zcSB+)JY5K_zOce7b=D(TXj;Y?VC@Q~O)QwxvXw*RV3c2kL&s*zBRAvM4srj9R@U?p zBopX^5V-HniB?|5tu?Jss$LpXNAHXAsr`0@gd#9b!vf1y=Bn_p{Q?w7TGHL!|F`gO zE_PEZqo*>mRc`@FT!eE&=U|z`Gm(zns6{{dK{|dgQf?LmB>A~=#4fF4)f*)k6&+C} zAqQFCER&{%aQxSu?dD8^)S?ZTij>8l)3AQyU_TZes=!a(I2QWe@^iBBOnC{_eE)Liwe%66edMxO z^F=}sUg|CA(N$J>`~G50fK%LFB8K!5ly+V%eTy)(+ClEFR?xIcMdqY&!I+$C?@77C zq1xgef0~&^T1%a*Su3=i^|J zK0RKAbKe59?vp)^>_6`Dg5)?}GB6@eS9MVK;h`QWu;h5iXPKLg>{2Eea10f{5qqXRBb%Ec5Op= zC(PDo)bYxMF*x_Jfz@kj{}9RmS=l~$$2UF4jP z+)NJpLNIc?w)(W;wZ_$D_pbP}0$FkHh7WJXY^B56G=d3xhdXKbxi?jD6iV%YJbu2+n$hx=1tzB0NdobmtYg@G3nw%8 zmCz6_NGjDU811E8X8U8|sKEgTsh0vW%lKm1__OXjvB~cCy_!YYye2@hTTPi+E|QgE z;G%U5MICyIf4#!I+H2e-8=4}is8K)Vn8lgmnNVVcOj)BWE%;Gmt65;)=4QS)EM4vv zPe53#F0P#%O8QJh9Jp%@itmBnQ~&_~KLEgPAQM7VxgsB%-X%du_DqNMb(Lx)x7IsU zi`1v1kdhS>KE&Y($XWp&s4cPWrP^x<3DvGOZc=N8Y3-A|x&)oL^ZtSUve@xac=s*S zRX&wiQk&ORuyIrl8bBZS1pSdS(UTjW6ReLv?m>I^duj##0zd)nY}DC`_C0mBc-6<3`ZIkROa=O-$@ogj&| z^XHUxYjAWdcENydy#rKn8$Mk2&HqMq<-&`&{^VAn?(@SckEo3Db!qbm!2odQ35Om{ zDNGLyT>c6JUzu!T!c#aBIcIU`CT<2=7d*O-c0tSZm+(Jtk!S-`bj4^yxOW-yQO493 ziBIY13wTK;{6-K(J!c^Hfn=;2s4uo)!ZKMlKcLaeMdCGrX62IlF8kSi{0x-dsyR9tywR@~nCUV-9% z%O9gDO|Ad@We01M^OYQfK#@?_o1r#F&-zfkbV3wUjsOl%}{m%sKlyD>elpTC7C_d2M z_72d)tOYh{jn5EqJPlI5`IY|~H5QHbX~hc=n+BWDV$4@+OeB`ri9)M!$B8+!Mh{WD zh({t|bFM94r=@Z>N@{a+@v*|w$piR^grpo_*Ab&N*;Saed+N8~choOsi(J~%a-|DfjF2c^#xLc15iX`83^5*1;>WUG$yFl%9C8N0>#Z{z@XJ5 zgeH@Aj+BD#i^AZDZyz*Sk4xfRaAg*jLefP^QQ4e!R`B?W^@v*pF?69}FnA%kYKhJ& z-6)F+L>Ll)Pj#sr0z-R$iqA)O-h)VEe$;~PQl^W{0gtzROTjIbe+ENNCDO9vlTV&c zF>-{_MV$+EpQanemxoPGBL3^qIIb<61K1h=oavkk@pv5gwskDAWOGzHiOy4D&q%s> zhtZt!#7MB^$+NeUc4gDbM}1QH;tLDxEP|z1POF@mg-c}1g#C9U$merK`1r$*wDi@% z-U1=-9^B>&K{U8mPmD1t1XmhlX1F`DhBS7ZI*52;sTUtlkhDknAnkPAv;GaD6vSIm zV5n|eq268Rd<>EareVDK;ZV8i#$8iBge^oKVAPtGMKD7|CugOe^CdD4i;y&})q&H6 zFgdTit1%-I1^0nym7f}p&XK?znB#vXRjSfkc~}9FUWLw9$Sg~2sPyok)hMm6ERH~Y zjG0OrsnKQ1;%dKuLvd+S@y;Gjqn*(q%hIp6#oq6&^vXuTvH+^u?} zGUy7M?zz3^}Jxkt%({4a>0A{8T|3;8qi)|f9ufMzNU0IAJqtJJ2XVbeU<)J#{0N9ZvkFT zesJzRcsS*M?}gV;57p5OGVzlohMXAb$&9+UTZBnP61vAo%qdc)^803&xZTy}3&5vZ zBDY(OodhF-jS~?h%hSJfLTeV*#A?W}lJ>}q+HQEbYd(-sGPwLE@&d2sq9Yw(lS398 z1#uS;7;CP$yogJ(yXo31JXYwYp{}`gDvjp~3lB>bkydJ0%`dWwDo@-sL))=}Js<#Q zK<%bNX_x=lCC5=Hmm`XlotkcI*b$v-eR5q~hA`zPX4e&s(puwm3;q5#mmgm! zNC?pJsWj3}w=m_yuhHpG>i_ix4m{Xs;I~|WwHpsIKcJDGs$;qkDUdTyZiPyYCWKk7 zR#4=tel!pbX1FO(IzHOzcvmQ*<>9q3%7x)!Go zp;trziJ7=*o--5E^efT5y}oulbvz+W)lef{bKzb6RGhcyz0oDo)FeeMYuoNmB5snh zVPW9TwAuAeLSF@`FUd(w8NB5)CImV(W(QG-NVSIZ18Lf=H$Z0vN$Px;vnKO2_gb)= zzOt2nqSQ@~u22w16%3~e?v|T7&xesIF;l<;*G-KE@B2vO!_T}{viJz0&xeIcMmnD9 zu@&kE?8yJ{In`Uo=v_Ka9Du$p`Nl(8pkyKpGwa?E+c>O@#aTwpggGCxAUa=f!a~|UvgTrQ$lAr&q(&6=GBq}&5 ziEJr*E;{Pkku1jz39y^Tg}rDI!$;(WeqJXSv#oybf=^pFz-_l;(mCu#CHvh zh-+iTa%_9|NuM8&FaKZEJmt_i5nwATqvzq@=O5_ekluzsS}%J=3-CfLPFv_(g{src zk$-_N$C;qDnou+O%MhFf| z*s^dGRIKYm9Q$2f;dTCzHK!*dNkRX(QQaB@0<9VTuFQnGV5C zw9LY@O^P*Hk*}vNkOddh&yUv^G?jMPc014u-kFHlNRiZRS+Y8Pc=Q%AqsPjUdlS=8 zL2IZUIV3GzYL30KS2kYb9c@o2*i;xZmOwz+^YDW>Oh^BxA~ z&V$fgXQ091!z=mQoQuBL;0wivo0S&FRkKBaNbG)i z^TK96zjR*LDi_9wgPNb3!B~Wha)~>|UTu4mAi;OOWs5z@Z;3YE2d41BdgZ{&*!6-pKnN-8x9#>s#ZEL8I zae_@3z+$k$=f9OL|caJ?`caF68MQfbWh`S~13idd!Me*x^P}~`UD8kW4 zr)sLa(6p7pp~H5wk8O18?xNyb{0vtAseC>4)SrAAHwQAP6kBAjKnBy(%6WlAh5r-P zQMBY((Atrz@%x-WSm=2|5p-S_eFVFTl!XLF*BaP%{E`ObZm5nZ-hx(bMf^$baa}6AVjD=}E@L_e1qH<*GChlNCSkLJ>>}iR8aApF* zq$y3!KacN}_o}!d?mbmH?up7-9R+?;RBm*>>S%^h;23 z-Jj%s;FO_wZ(0n@tIHm&hK|;^fjYwyfIl(?ytWi7sy?~ptkh^08~(dxt=yD-fj8cE z8oobb1=kq$eg74vxE1SoGjhGwI+HA5q`99Q!ITLFU23d!C4!xmidyob|7FT#rb=%| ztQ)RdDCzU71N$uic#@!%7l>(L7H$ACf5Dxn)Rm;)rnir-uK^@s%%S0xvghA}A}~4e z5yBs=vHt$}f-ZG{r&2S}WbvzaOFRn*w=hL(r#1uqiRhQj-A|@(-^yP3U(QLy8U{2| zWyE+-+YO={L7h*7r&A3H47O&@@i|{?b|ETl&0ePG))|EHlRO;T#{T#^c;Hy%b}|7y zN(4fMtDUc5bSZ_0@zOQfP#z<_oW^M2J7mb4Dk@NI2x1>i6__PC!7&rtr$kY8EKdt* zJGHy6S@vLKbCeVUBfzOPj)Wi=+?pRjd9CQPN9a)SYISX^Vf%URT1NJ`JJtiA9IxTs z?Rtmlq2ry7?;tsT;u8>bR652at8&#ltt#7fQ!dI=Khq_cpRG=+He+zi+t}Fn!3g4j zkNrWc_N8pn%kE(_?up5DuFw_Q<@L?xJkWVkV;Fb9a~uVq zs+j(?`n3vov#4Gkz1g2!J|7Qym`z3|vykS*S)fp8Fne9$AS{MFz>mKE(+3fE2+z-% ziikqhNr$p|wttC1@%XejK2%P-@m)!L$UFfr07|?I7lsbnmphGs4Z(3_v+r2>>*98f zq@JE}7kAsdT~%pOsf~##o8!B~rLx~@?1yuD?4_le+0ZA_&Z6n-7v2*4;*{H=t{sp% zgpdm!k?)9yFY%DJrYlD#tEiH;kPW0dhBP^7d{aOMDSOT4+X#viHAEBfZC)5Y2LNh( zGxmq?(Bo({)Gk|!XF$1A`kxdjY9WFbFRnUsf}P^^%1pcTx>Hs8lr7f-qhd5E?z@5; z0KES4beHPVyq#fWrQ_+rW(c%9m!6TZx3IGKZA$_(?8Omoi&wt%K;4uxnEPR1-{iwO z9u+Xnc7pH9XD3E(Fhb=^(adCZlp6IU1@xJ`KErGM*t`nu=0ud5g(X6_C2u%*;T@!N zz%jS-P?AE?S9Fy?a|Rvdp|FMZqrEVlNGz zQAdq?b)ix191yp6E6gLx(l48K1C4}UV4!=%`H3n=7YU+gSYMy8A_Zw(um7`Si|41p z@>S_odoo8o|0nOMev;E^L&dd@?w+wknxo@S6-p^SWaG4Wah)YP0GHvL-?>{-a8Zbc z*d|()8}DYhN=|D|xUr3LfxN~jq&!;TB*{qD*i(Ud$Q~rn35Z~RgbeUIZrb#a-qyAN zXC}MPc|+%p(e5HKS@FJb7(O7}*T zKV|DB`5sEyTQaW3b}*$>pZP^M2jPZ^#4W+eZ=%v#MyrhxLysc*V$eK93bhHcBh9ls zolx`X9WLHtIrxPV_$!UMltAXJ9xfxiNI9f3?E(Rl9=aIIxj3dN?e0#FYnQHjAxS=G z&n-LITVm4_PE6)HPo={HqpbFy;0S)f%{>N$zIfFNbCrLygox~_VAd|rOaYSR6D7Lo zQZ_}@lp}4tii1=PFOepZXPe^L+)fZR!;MFD(hG5AybuTUWuTRUc9WU(OGiL~>~$OJ zKK}oOgLZw5449)ov2UIsqRLHVNb`4bHD9!Q!LJ>kuCr(?A>UJx!%pIW#2%?S4E!2~ z!K*uQV*LiNx*?fQPck?`s(n3# zPxYuidEq;d)szbo$dz3RbldY(hEuo&dBC(PQy6ixP4#ZzihI)V;}y>)mBWASCRd{w0e>vC)zSYHXk*QFFPD!d5FtARJaZTq+}qZgO! zhv})S2hYBcL4M#Fc$99^zf`wD2}~lLpaI;JpRG06|)5+NWEm+mhXA#wb>xtuRqu>EAa$dmDJz7n^)m4U*nLk5;f{f)2< zk`>)o##$xeeDnr|uXZ&$K_yZ&VdQtwSes};5O5KV5$a9pS$FWpkhYE?m?B$?igv=(DWtlEfk1CFv>R(?n+P&5}9# zz5P;9Y92rqGBS;7=nj-CdI%Jx#<`fF20dCoI}ahcXM!ayVYlRn%B`szb6`8oI#qgSj-+@)$p^hrIP&c=F^(En)F$KgdL;<+4V8aaKG>*OOGL#l2H85uC68kSG zAAzJY0qcdwYrm*i1~K>a>?G@n8ZqQ>yM!<`sh;l0F4;`)^Jl)pK71+|bxPvjV=oq% zOVu4Oxv61r4$nMW!WE}2^=r5jdkCfGaY~uC|DUu4h#_D!$bv^@2>3&`f4r@``}QOW&jiJz=aqBS{F_RhxoKah{3U~~uRw3s+O4|7xiXlB3nrn*+OKB~r}&JH zCG44wr!sKBurrf`$WDwUn$#FBN%h@D3 z^{d37oYxb9V3{iyFMbnWkt4{T;5Y$bJI} zJ1r%HA+c@aE>u#sZ%OXBE%CvgOExRj8*yrJH{N0F^=zY zGJ{unHOkLN3safvu&^H2gJu9&6k1`8-pX{~FMe=%A+C!L;?TckWpNPMi-mf_x!#CP z{)lzHJ~dN7Eoh&@V9ss~UWSdxhqg@M+iJOsI%BwEn;RE4u6H9YWW@t-+F}43aXM>NCIc&lgB_TxXd6ny2x{fi4jC)smc}GYRxbsPw17`u=mkrCD8p;Y9=vp|b=D~B6 z04$E#N}VcaG}b*4h#V?g6jLR{M#r{@)-aKRYrGufHB?h*;62da#<6^t6iE*p83zGH zEK8-(jr3cglL%d|qm>8l0Uw#elNBDI4nX3VN!h<^$=O*S46beSY1;#1(l{-MjUL-X z-C;>SzY27VE7+XQ)|#%GSC(Q>r_{Ol23{>ttgQNONY;>&Q0-hjY8oBCkHsegOO%kQ zshg!w;b+(Vp)qa!eXzLZ8*n%ppD%!2&Ae+TD}W7|e!{73Wv$*A+*+Ej#TAsN%@zkj zu&nORl`Tdg^bi^RoL3x?OJEq8=$W3t8qWGE`Tl8ytQOw`F=f0AU2pwF;2&)9MWu66KHxO$$o>6~r2)9l-`(hz8}>x`(ia z0jKkUFV@?!4DK1-mO7EtScA37g{tF0ljawgfEA)*UaDyd{?g0n?>x8!ZU31q7`9<9 zsE~S8nR~tHxs)9tClq?hZE1bIcx1*#E+Sh#|DnS?zu2ai^uF_>3e0DD*PafrGurYe zR@ORETAD>r3gae)9n3MkzlnY8^x_mSL@8)7;{R{ZE@|}L(rU}fWOl0M%|5_&VLucX z>5BXO!+MlSd^Z?TuW0! z@WC~(wr~9r$w&am-6H!`Ob9xAlu7o{qeX^Hz^9Fx99nvg)^8qC2i9q~*6yx7>0f8%)25YR4&g*3uO$4i@Ut)o|s zz#=@+H~c5{{_iMe3R@BIfGIZFOi?L2`U;{~c2y) z7G^`i^`~a|<%`8HHJxT_0=pv#AsH>{=U(rd56LpKWjm`$6jCz@#Dz6T@3BweP502| z2TTsJL$6lU?4)iy(>5XYcV-bKGM(Xcrjt(+NOA=CW|n1H?}bZ&hU29J?Q6(|h`cIG z5mWj#+QkoYKg|PYY-O!sQ-ok>BWfgD|K9x-3WxXTCN8)0HYr|E1USpq73Q_uwYm`U zHT9zqse8zeJFHu;SQS|65b^y6ZN!qyT|u9X30Wih!Vu`|`6d(fuUaIHy5jt~Cd2VE zHy58a;*LA%M5&&p`Vh{5GDGhCvE9(2hn!msi-gB%C*)`2ZisuzMs$=W9TRn5yP#{a zUh2h*Z15ubxOl^{{#kG^>LoPE_(v6uxj4`j2nf-*_o$I zwnTiu5x2^mXhQNt1MDbj`_}~Ll69N5IUbwjfaz9uhRoi&&YPr=9+peMANE2{Y+L{k~7y`(TDa=&BL z0F(0m+DRP($0NU3WMOpGEkXZ=u@0OyQ_U?8HFe4gh^6?bxO5pDL?H5;`8d~kGB)h% z?S1waz_@zW!m=T5%RCtUDqTnTxxOIjX}|njq7xnkxU+?NCGNF3WqLnjRq*;Bsz-EL zGQo{coks_iZ9i2tqFRRdCTV&w?lT**7xOVAG^gO{jSbQE<%VO+Oy-4Np&WSs(NUj- zHgg7rYqoFL9_>o|!f}&s>YWtNNJ;E^iC&O>6gPwnq`xag@g7aH9dTCb%8=X>?YVaB z((N3Sw2o4&y&^bTG8P2gF6E;QBIa8bv&g4br=}Yg4pQ?I-JDJng?Ev``y_1UU>tuo zHW;E~l|;!Lj>RUnUTkX32eO!#_;iCp?6=Qe9KOr8O*l`VF!}{XAozRZn%sKuzx*1i zR9j2&7(&?ndvph0#|h=$zVgcX$b%IW#AV&HPA}FYmLKswDBWd`%`(hL(g$L4&rxum zttHYffHfmlXwsrJ?VXLKz8W;Tz`?8FKEGX|8v2N$)JL109EsdN6XHEBJM;LK9pPqH z6P!q49TA51+lFDIH@Oaf2tV^zz$hhAh#|(Mw`}Iyfh_w07AnNw01{cU8H2yB;p${I{j2d1vqT?=O!$OMlb$k$y1JF0RoB!(V!45YD7APIMMK@nmci9R56{#X(meG8R z;2L>ifQA?tI~0ay)nas!=K*3kMsi(-c+D-v1Ksbfzr|>#f-i+gtvmx%7_CYjgm@b9 zMj20LejXv5sf}-2I=A~}+Ozrd?23-P-S4h00M5LUUlprrH4@08&;PcOJ#4DZkB^uL zcv(C{^S7BDn5z54*_n7rmNWV-{5f6%{w+~1&<$G+ltlwzUsCO$5>66)754_-jDAio zI=z=YjPCNhX8m(eV3+GhW{$s>YL}N|uMtx;X@GVd(f7jg**qtjYuoZjFch0|y&c?) zwT8ej85&o6xS}$_`QnPN%{)atPEM-T&*&~zHK05(g$~F3xA!NoSVeylqM&#QTbcO8 zG(#*z-tC0&PvW~%PC2(mhtO{zD-#3liB6F^9znc9S}_MCaHK*v!bz8w$wPYBGkSzA z@1nOL*B{bE3UZZ(F@I`COzYSTIjIJk%U|~BX2Wz0fPnaXQ%VCsB-J{U)cr!Og_8_N zBOVBrPz;uNV;mh*oOaWXni$cz^l9#NpkIP-ji!G9f{)ns#;{^w7N#9Wf9J|c$IU6t%$pthqP%&%YdsM3||OkO{R)5(Ll_fe>F8#AU>fo4k;@*OdtFCPLY z1-av|8355KLg&MwDno)PLb&Mo)ZZ0M74$+IJe-^EDmRQ6q#s`%pNkg<^?1!*S$BMU zPzC7AZr^xR)hF6)QKTkraBwx@--yA`&WVh6`pHh-$wl6?pn1OjxVEW z9eZ;W%9V`T#^_INEFO02CRemrz>BhK94ep9Ls{lq)(0Z29PXvB8R<;)QJpRB6}ZFg zg4B@y)+RkWBw|3S9E`vxPBY3Yiw>^srG*k1vW0L(=6=1qpIaJo=IrR`HN)&6Do?v z3S1CR_FfgEdG<6auOrO+uMf=<2%0xKjYC^sh>u@jT2#DiUHL3epWyM}Nl8}iX9eiy z=~6Ck^H8OPSXshbegJePe5hS3+q+%BKtPlES%SQ;?Pg**Vs*dJ7gSilK6fuh(ZT1$ zuM;Upiv&=)>a^%dg#I}jTOEKT-`a5jIx$HJ*WvorfoRSLvl2XR=G)h?%8B$}5?F*o zMiVX{M>6&il)YBpvbEVvzp>IX@WB_@t1Od+;qe6T6Hc1sJX6@*^F-m}EOrA37=vae z|C83Y7+!}(=EsPSoOi;_PaLw!b5*pQMg|boBzg=?j|4pIu!}rFTC4E29ecvb^JOY($f=zNYO{TdSuA#>%d0R}Cu?6$bp3xA$kxe+Jr8*DBCojh$9BVE#v#$->vC4* z9$XU3hSR_51AZFVPNcKrM_I{IY5p{=OfoR&3Ekr={JZZudf(Ik97toL1>|xV-28nJ zn52OYp_7r{P(2q%(tF|6*ChUp?Y_4-kHw6QEPw=e8F^TmG&0+mE5MIBF3b@Gx& zU7T}NZ&i7bIIuK%z6CA$&Z&Pb%~rsMAesZ^>|TA8Z}0-h2QCjKd?838FU_hCf8{v+ z(j98gu2b5k#FvX=$0_`Mg_5QXn=}>V1Z{tPTg-6DZ&e(`Ue49ICr2mu2g)<(GNcEr z(vzOGu<@x$;rlCU$YF%32Zg`U#C8}1c|Uyquq{nt5t&Od{h_Fa$gJ6TL^#O~G2&GJ0Q|Gbn|hGg0g`$d56OgqP*LiRvvknRn07x%n%C`izc-!W9eW}1kM zmnqQ6gDL3X;93 zfM}Ug5)Olj60zG=khKf!r~L}P`Z?k?-SnfAR#P;RyPHm2cM#$AnO6EvFdimCFB3g*Y@a9dO@ zXt|3t{)0?)n66df-?k1gLO_Ru@zoK26#PSR&4=&hIp5JCU1ZrCB~92?qd}M3?NoxF zjQ$+GM+lpX-381#pOTU%4BhL1T?;r+3=%zSDy36P=Ww+(f3M$JhQ|B%bpe;IMaR!R z(jdP0oXTDuk}1{|b#5)43SPMnUzeGpmBMUw)v+iBE9v1OsH15>cJY+RIr){TGkRBir5r8ZLN28R3^YchST0JsXof2U-N#m4hXR(a5 z4X^seI$#8#Qv2q{x1nNs53X(kaDc+OIGFm~(eWa_mx+3JbccE?Up1vq=j zn8FNdD+L#R0^K^p90=B4-Bc9f*>lh7c42R=$lTt9XZ${K9qRio_t7ZMq7-2 zd(r&iEJPN4>oRwsjw#&HY>FDZ8qm3cI}PmlJj$P%?qV&{2+6k}#nPMTm03^zlHfi|9QUz}5VX(~C#YjG zl>vLnmzug9KP}l=J0{H`uA4FpI2$Yxx_n022Y;a~?MOi-#lZk&0l<3hUhkz)FI*KG zd6#RL|H_E`nI|_bzjVkKrM?I7Nvdj?prlYC#HDHxOw}>n&W`l?ZeJC1lYVgiX2>uM z7uPR;--uD?9!e1*0zQtVq-))Iu>RXi4IxRDtdKU{;u>Ib2>l&f$DVJt2z}1Q2sw#@ zp%!^@CGxL+t4s#n_fs&ks!9DpAWgsA+2Uh8UkST0%pf7_OaV8CBgna)S{cRq%)HC& zovdbLCMs++a+)JD2f0%k996JsjK7*bcj@wub4V6sK3H#%8Uq zr@>?nJXt`}WceV>95L*qBWWG<-F9u@=~+(_hrBa6BW?Q^BNS1E7$Wbro88LxfyV}_MI&fD>sS06E>tDSb@xr0^`1txKL>epCBzumKi(;*XV_!b@oBj2S$aod zNVFkdlsS0@KqJIqvouDMxF6`|RA=fPi`pIeL1HLgJHB$^-3Gf}=Lo!|l43nF%azkd z>~O$*b)0!3hQ46B&C}xFX46R)gd6%dU?#rNQPuipvoW~WkV|^*{%JX7s z@qxqp_WtG5<)@R9yPV^r>o`R7EqC8lREut{q%Q*Fu$F_GxivWwWS4Yayf?iPa%NR> zxSAljs1TEJ*T(2Ia&BxRcr@*S7q|s5f4yfrtSd(gCfM^t+p?@rqjo zePvPg17LBVq78h!nSzhy|9okJw9&q=N=r+o88@z8wrb!LRW`tK;LZ<=>>o3ZyEZ2l z-m3zHj0jt3)OP_icic(NOP<*tgD0DP6jEG4}H4VhPAClae9*TvuJ!PX_W7~pld_f zJn0i6#GjBbw;IG$HGkNV`Q~r0mUFf~e1Go=rGCHh%_i3}{*;1D_!1O_TR0@q0Ls;; z#@`*M2G~!lAtujSZ0yf=zOnDzy_lK;1TP5k#%-X=sdq{VFAA|6#~*no_dQ? zBmLH$<`#BznSO!Y@9U_j5Yy&t%>xfd!82UTN7r&{n1>-R&bTR{nCh}m#ibH%@yk@CCSkHuwDpf;6Yb5~dvm&Rn%UDAWcN?&?G! z%2iG3U>LFxp{sGsw0467j61r=xgAn8DvZ&#cMB`rbgWSN2Pci6n2#PbXcZ8<@o42g9`16)?7>|%o_Xr{>|ebdFg zUDG{6WcGOOMF0>=eb=X$sv6{S$@$`K=&WdLC3++#RI2|cLZtXVQ6|-Xm1F4M_1rAQ zF|%BjOYqe>gP}hNq6Eq`{O2@8fu8-p47ev#X&D+94DNz&9KmsFbq&oc1@K5TRYna0 zVQ-Yg2f)ig2G^It-^5&~=aQzXPg&A6q%d`rE+cz{8O%VkV8j&| z*=>~CeeP8KoXnUP~Hz@wR|B&>y`o;=X)YrT@a7wsOi8@)4GE&Wxx?Dx_sEG+td*$ZGa1 z5#a57J%Xe30sCxEt!~w2o1xb^*xfr#=Zs70_TDvSUXcl>w_MrN6gCg|b+uJnZT#61q~C zm>C5gqbb@OZ0Rp_(V87V<04}zf+ubY%@sZNT!0P;Dvbt)ceq5Wd2LmK<`en6)|V#% z?N9V_b9?9(zA>*;bYMC8Cf@(n$0u`+FvmklON{LCQ4(FfQ?7383RHa?k zJ6_fAOX?Mdpm~Jj-rCuVdT{)?*Egv3N&zEVWCV8oWWJ4}HauiND{ZdQc$0LW%=F5W zfBAt=gakcICf^5F$pCHa*-yWPY$kYIEO&TsZzH1sFz&whHvlz2L#;rn8Ki`?RvF3qODBftq+0pFt*w)}IS+o=1B5+nAPShCcm{_YD>}X-} z8rkC>+*+6zel2YX8at4@y_3>9ML^DYF}*WwW`sX{RH7Ux7vOEPRsr+f-z8C*hLUC; zUKO<&`dghIbv{8C1sa9`=FXAWCInXE;sy=n4%B}YIpuo^o^p$(3|1|zTYF-eD<%R0 z!c(a5F)QD2faVuVz+*>PD(NT3As%sCH?8%!ULf!HgKz3|ykedzzu^c&fv^f2fOpmK zA6)}?q^>dp+sXKAI2FWvM;>2eONYkEZ{%(AWDo!K&A-RGmX<01Tl|W>()GFKP^P~S zDQp1iP}B|_2enA@h!04Z2mK&<0jf&ZB512@aY#&GVuMY_2Fw;=J)a)j4AQW^uW1lM zJ=t5nHhh;OGR{g#Q7YS?nvI~HOJn9J)wK#oZ1Ma zO#@q80poLIGc2v-n>o*=On5rLMz0tQLQ4ll1!E$?GtANsNcF)iaCry&r~fo*Ao-lI0hK7qD1gZ zI1H+OJ2JH9j#sq%N3v=JyG#^4qF7=M11ZY&GK6&c2vYL3`RKmS`*neY@|Sov$z#IW z&KIV2U7)5g8Pwg&m@mxwFm7+Y?kv5k@@;)Z`{Y0o+ZNAbEe_Dm>R$23p;$^%%`;~E zW@zcy+{iY6B6yyfpQ!rL7>$4g&lvsxiEUra@NxT06TnaC;vk6q>u+0SK5%>c=Nv%^ z;7yzs^G%<#)5-3f_AY|>4S%irAETS(mqJqrPRyWp?lYpG3F}a;92?;MKKR6FmeRH; zvYjBSzSDQMyh4!9lW`GhjWi8F;U&VG!N$dg2pk2>#Px_X4}Notm)Qwln|swhnw+SE z;7!Vwmp{13*BunrYzctjR3EeQ+-^vsCGwK}a{b8mrCzo4u{;G5M#_OUM=4>SG_++X z;C@q(FdW+zmAwK1&I1W!77#4FLj`N~=EuZ`_=s;I;O(yEmr3a~nimdahF{7p1K+8z zGc+HO6CZ%h_gIEQE-fDgCT%2B{&o!C@|QdrMFY?Shylbw>R4T%cqlKUBqk?wDd(CF zI3%Xrl#Iyyo%e-}C{$;N-QDC|so=YO0c0+S?i1TvPqWj}hawZ0`WzDb%-h*vu+KCb z%X_7nhVM}4QDyVd3Sdt6=Dn#ki(sCjm1pS;gURYLjnY^C??;t>Jnawbz~cLB?lo%t zeSH7s7lT&4H!v~~BlV0oF{>8C+1SO1{1=hpF#1I!%Ymulc^Jug+CmX1DOCH`Cj`o4 zvo;GRXm5o;@eChn9GGR^QJqE-NBm@s3J zc~L0ajV3-HL`%te38WlcDk*B_f0rBiz463jfpVmyV^rfX7zGOBMV^WjNuU${;*K zB?7>iM9*(ks44Yr>-(lgU_f<7ipR!(Kh~z0kS_rLKLEf~K}gEjq_hkImCM+nB5fWX z`xqf;^~|8eHirR_Yb?c{Sn#uj7rN9n z%jPc$D5~OnzUk_YvRo=1m*4^EzJasjglCF-Nk}vXri;I;J6sFZh6Ya0Ger-E-vj&& zV|CC>nB|&F2ec5^DRvk($_>3cQl;>Ef@ppHEobYHsF5xjxAi#`mKScWi?I&07l;7^ zE>phK&h6}$#qET4M0y=Kz;xaA zmA)7b3!SY(FZ=E7yb$Fx_|CiO>>Q4}^Iq2LV=}>Td$8Tn$vc%OdXCXC-o-W=KofSh!SV{i}((Nuw%tM9hFyKQBHBjzD3~e`7;_2GmNkkJ41OaW*AkXOpmZN>uew+JT z_wkpYzPMgBnu_(|4)L|dXh)xI1XZA!FR}>#o<4QMLJ5Ad;u~{ÚO2CALbwA1~l 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" 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!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 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=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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-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 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" 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 check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508102002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508102002-Diff-Config.rsc new file mode 100644 index 0000000..f25a2f7 --- /dev/null +++ b/MikroMaster/history/20260508/20260508102002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0