From 16aa58bf688f513da13083b835b184e930ffd0dc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 04:20:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 04:20:17. --- .../20260510/20260510042002-Binary.backup | Bin 0 -> 302173 bytes .../20260510/20260510042002-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510042002-Diff-Config.rsc | 22 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260510/20260510042002-Binary.backup create mode 100644 MikroMaster/20260510/20260510042002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510042002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510042002-Binary.backup b/MikroMaster/20260510/20260510042002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1d2ff411db9c48aeb7a89aa11c6134b02c1e901a GIT binary patch literal 302173 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%0AiBax_>>a;QSfnCbd1sOLa=$fr+Y)ZGE=7rsXi^ zD8r=Fgtv>AH|W|S+#8!Nmk@N^EFRKY(HVm6Chj)EoNG# z!>yB7cN*$(z_y3kb>{sA+Er0>1Q)MY6!KI0P3BhD;6^aS7?lWL`);eKV>30C&{By; zc|}5s0L_*p!q>0!#3-|~N2Ye~CRwd)QS}r-u-g$eE9k|$E!d^K0h}}&jJ(rPu!H+? z{To`_u4$`tm}8nNz0}>vX)(WzB<+>UndClhcsD2cu%Bjc-d&iUr7uXhcG0kou=F0*{*nX=pfJelt~WNzV2DkX$-^jb0=>JQ?Eo z=imYJR?%WdN5aU=FE$1<3F9UK75^t*jJyq>I)nG`HtgY&*3s?PvJ=$V1#b(kBgG37 za0R{xjE304`neTK)EHs#fnN-*ef>Q;E zg;D9SGq+|dGgyRdxOfU$9aLAjlJ#H;moPGP$_yo#k&xFMa?}Z+mo6?snj$gx(qE^w z`>X6`V}w`0A&9mBTaK|~*>byoWV@3mgNy%bv;ZNcD4pVU0&%oK3&YsYxbJ7ri7a%_7;uY{sXxQ=3mrIFajtY|fNN zDJQdD<&SM+B}Nz!@Wo83XLD{xn|<7G$`r;5=~+fTReHm4VrjNg6mbuviR;Pf$GgDy z3C`EAK7=4`Lkyj^Jelg%_;~U_=pzO)remZ#-Zryvb|7$xJmgq>X|9LNAvG_371x@6 z{>QCcBl9rzc4rtd3i7@=ZYAA+yn;i9RY#aUz6)3p-WJUuNR(QQA~Yc&_O&Lrs-db* z6+ejXqP|seERof+`h^nyjLX>j^pzU8-Y^1EbRXHBPpt;Vu<=?M?v3C=v*7AOk+biU z+90w_l!0CsuAS^uYbb9?=OG%}E9V)MmNIZk6HEcrE?23kQt@lzkNrcxEDwb0x!Aih z4S?;OhNx1qp(Tw;IkUSUT>kOfzh|Js3}N+m1>fpo(X75;)8n56-@%W9P5wv2O^g8( zPR@n`aRmnYTI|t1IoaV|qh-)*yYW^;gS$g1r4Um~y7qP6^TlUQiNR5@K>qgv;g1~qF)lUTBpF4A5 zXVvo)BtYiF0-%!?n6@1+a;oo)Q`;o0VUw1b%)M{bb;?9?aq@fYP(f{21Ua|sW*MbX zYRxT`$GgUh@lZYqe=p%d<4>gGE@@haoXv^3rxTv)C?~xHIh#Un#dWe?ic2==*57OPWVJe4ar4%ez&kj#Tfu0 zc|UFy$j@Oi7;OT3eC~Mbq*Kj)ONw%9>dhGmYze9t0T&YvOS;n0nmhg%sbiZWvS5`Q zao2i8w&|Ldb5GisCfBvJY&Zz})ee;=kzMLw7EVv>G*P_MM+$k*^1h)R?7(38{Ek1Y zNW@JsMmv>>m>48vz7q&Wr0MzR6MKi}rsXUZ!lgcUPDNrs*OmM56DbH-;y}j?h|SdZ zjwnE4p)&MH`dute5ec_>4?&(MaAR-|+6Hh;03S{Ogp5TLH)vGOM(xSo(t2y0Xvm&E z{0tk-r(s}A8(9v+qEopxlsqM=R+wW$LY>fM^~VgYT`Vx_T6)HnYq=t~90dVRXB=EC zc!&MwMJtUvFz1d(Iq}nE_h;Uyh^3Qm-d_lrI?iXzxuT@cqAcGgQD-vE?Y=_)oBe0K zgjIbvSHHX)^6`A&ZvuVvC>p?LvYLzcEQ9^Fj>z6lm^6G7pGR5C{$ZK={fjEyBTAX8 z(8-i#udcVu!&3Q5RcjNmooG0)Dug(@t@;^8`OfnNW#O_t;Ai8*!wK3R#%`AOKspGK zE|@4|Fe_?NB(~&6>R#zm;M-CicD@b(^_W`J+#KdHSZjH{nqK3iC}W5M zXq~By;NQ$hnr;l!+MmCedw$_;DrPegdbG%$nAZ#amLr_Vpm^nL*#VUX(4Qo*Ro%_n zfI31jHmZ}XZ%!_u;KiV4fya=9D5h-w{R;1m1NmF0Y|!)5zu!}WEd-?!fru>-{HLgn zOt^x{OsPyG5}&uuUn_=+`Cc0cT>FVN^@J26^b0Y{Rj5 zEWLd8y0bU0oU%fBK*xz1MhX)ulo6yY#mDzTAn-Y$u^y{zFi+J30*vWe1eWBY0XaOA zqi6SD^bVbVx6)Ieiw3sYS7U;I>@q+l+dD=GXipcNr+e_@VmL{FUJ{G#|WQ5 z+jPxV^&|If2v#hqV3R2=03vxNSXb_F<@-DAMS9|rA7h-?&^dHA+Q|MH&(Cy`3WzL8 zdRD*TFz6-JfxW>67cZ(P3Gz?megUvZzXCRY$gN$uFu^b|FpDI>kpGng^b7U=Qh>dm|bZ)O{NxYKw%3c`|@P1t9rfCV#?9!PHXHT?;Eiu8+24>jVnLq zM)x1?NRXgKa{T|8E_e?%5QPVMFuX}VlRCrUn-yS0*=a*DL8Xql9BI+eqrk_~yR##} zwmLyBS23k3WK0_mE0C@EAv*7~j*}e0GjNe*cOe z?b-1mv%5^ts%Q9`SfFzZtk_ps*XP+K!z3-02{~kJxe6Td0^@{6mH4ZY3+9gFgos?v z8mSEKST7uzwAMRg=TRzp>3u2j@1eoeXz911l#>MKH%fZe@?(KJI{;*GsZZmgO8%-I zFl6DfldfG)olJ2^Ji$>zHEE(&W9Xx;aJ0fOuk>1gRdp--`gQ`|l1mP+NVoK9wbcKC zP7nQ44f$wcGoT%s#Nu>Z%L`8}-B~~Q5G~l6-&P&yVU{SPW_LP&qvnxxZ!4QJt5%YY zHDRly^3Y23k||R04Zr+U-9ltqe=UyG@XZ!GPI!EOt3qslOR(J*RE`<7*QbNvHZj{w zb6^XHg{D~wO3GZ?$V9gM$d(&)50~<$`$nnL+{eftwi;Gofdd7%5O8FRq0v>7;hDzU zCPRBc1P1JUz$PYzpKOyd2K+Vx?BWFtuD=X{<>~pnH8V^Shl=YUd}O)4b~qaNWfd~sWl7mwN2a>s^Pdw{x_#=}(-)lh zSKhkJCY&_Yk**a6@x&?O^j300+`@}JhQE5b}VG^mr z4gW9p%Z_PiC8JWXJewP?8;=~p_FCyRiqB9Y<3*J(jZMEdH2xd_#ksMttNPAE!>R~+ z2~bM-j%zBr*M(E9B9`EbkJ@0oU3Cv-HQrt{GW_wGkQ!6cXJuA&^@=ipSPdQdEwYWm z3FiM<@l&S@GT!Nm$10jQpcgI^Rn~BOTHK&`OGo?ee?yz)tgufYQQ;o!zsNxjY%GF@ zs`6`kJm^05Etw5uVCbo51L~IxVDGjbGQ$wA>LdEnJ^5~>2U?R`*tDfZPL~W<-nw!F z3SgP5HU;j73NZiv2+r`^R*K7TpnQ-HWI+O^c5Y94M5t6XULyC&Wo7cOd1JMc{Cu!D zw%2v7(YS`^OyioRreYh!_@Nu-fQU?-p%!3g9T?tP_x0TSj1&=ZHO>3|>8(_C>orG7 zD1`u&RFB|gonM%@t(#0oj8VK!Q!u#!Kj7{4W1QUM_vhCKy9>@bf%URC+H*9V*4?fP zSPu)ey7?FuV3lNx#;Q>8M9w5DYuWM8X;30f|-Pauwl@e;11;_`d^QJpHkI z47Zm!7oK{^9J<)K#Yh?^79>uS#&6qhV1X&XU{e8(d&7zuEc9cYS!iVTo35KEoX9NE zyW`G$)g)v*LuV8K0srOgO=NAZ)LI;REV-vxgcFUI(qf)2qJ;W)14dhg z@qcFhLD$Hg+f@#ry5s^}Af|~}Tdfrr6;wBKG~A^~5TW;SZ51B|;edgGyrJ$N#X~{* z>vLuahU_^`^%$xkyV~2|VT*i6WHTmVspQ^P(wpIN@15_OZM5*N3%p4xgizd5age zdpIFq`w7uKmHu5{&a4qzRM6sA4xBST&6_OzXHPMN7=Yw8JQO<5U*plg^ejzMlW3|@ zojnY1;+c4TCt9w(s`)wnh}S}{JT)z?nY$)ohZs$OyQY{Eqxk z>LCFa>K8_xfI6s)kI2<`|6s%Q2XPXK)`}^JK4Bc^G_J{*uFW+oe@LGtJfm(-l%JXm zMe-R@`^db0MFt3&_Q1S<9|WqZz#bi(LKLi^>b2EbG5_31h+YeHA%HX46oHLeWvMEs zg#F^!{_|e>#hfeA-njbux;8K<@lBTH#9`gRuc#W{LnVSQFJ;-GoDxD&8OrSq@9@5B z6@|@{30 zhCOKtD!q_=e`fZrBxT}F3Ix>XIeCkPRpq(qm#RK2)WQ53 z9F=z}Id5o;pc%8R&HlkeyIQIizoWF0#Wav!vLFK*U@l6Pi6aD`&^0vGPH5fgVg(E% zl&c)MPG&-*5aUKOh7N1@=<`6gE{)|Fpy=O|aocNX1cVezNv7O8SrDds4atLcm7!C$ zG*h{+FYz6fngr%N2#(l*Qy>i=L!JQHnQ5TLNZf&3^X*-$3{Y?o2z|(#W;NKazH?T2 zQpOU|d{8@`I{U*e?r<%Gme|OX?ZRrl`Uem>3U6-R7|#!0M!hp^KRx~=n@QQ92C0OG z_8RwE5>JkON#bw0+g!oS0AcY&e}U+Yx5nhYuN}7#p__p2wyznEF?3XawG-2cRAYp! z-nXvfeTs_+wYnD7AqBKjSY>0Xk17E%GQ@$dpqzFrS^(uD$f75l%jYbu)AU}-i>@6>(o zU;nhLZQ^dTKt8@I;q^Tovt_R_A^9$E#bqFM2iOn`%s^4XiqxxeF=E+tsSw1Ewr{#CacU;J2n$WK(n;NA7*|!nai!%qv z`h?>K+w?l1xo24qQQKk63}KJ;+(Jg90bmOJ=&0c6LGiFa(7+FaL3_gO(d0D|+1^c6 z08UEfI6!NZ+IT6YIjvOV@>>&a(&h@H#?UgGWRSuhvqA`D{%4T#S#m(2{5I66FETW? zp2br{#ak%S4ZY8$7C9eYFuCsXke@w+QDk(e5zqhfeA#Y%v@_dz=2BK%u~&@d?dGa} z$+6ag)nhJrX3T_7fwBn+pD6UW8tqa1MfU5JL}hmLn5`@|*I070ZB@;l*}&VDYIZveWka)UW`;;z=e(2C!Aze|QmLXm ziLLQSIlXcbmFFtgm8S>-#3nd;^o8!02|Dz@aDQHoIZ9fE;W8Ix`SbDj^@mmed*q?(RMlJF!+S5s@`RRR(&O8E ziBjFM7q%fS3&KjlIC>xE?Q1?y!~oTGQpn@|0?G*E)g#6}wl|`t{kgle;6*J2D2SL{ zZcr%cd>p(oRy_?>gEcVBu}`z4p3Q6O-xk68=a8&8Z1R$9>x5X7b=v=_&aj_RQ0pTAiL(u4CEGN8}Sr!3|N-0B#@Gp_xb%KF|rc zLD|P|fzQvGvUkey5ySfs;ZNoW(I8R;VuzT*t}dU@Wu6R<^2qUNEnx7CA5iy28-G21 z(;v1e{ep;Uhw)b)SvxC6WkNShj-S_#W6yC@^spD)OVNI80|j6sAz`q0#vMBEKcxx8 zf9Gi1Y;Bhoke08o6Nt1H2r(kO{{Sl0!cWq(Z`2)*cooR_Q0k$Gfp@u;&`k#3$(gJm zbZ9+HQ4c76DB6Z_kcbT^0gjv|N5t+Kq?AfK`i&d7 z>0GV94MNrxBvEcOP-y{PRq^spd;{Qkq|zKg z_cG(^3OrPG9Eh&BH-xfv76!pBt_ccIV)A*@|Bj&E=6BHcS1nGz9Caz%9b~N?xuljA zphc9)po`@0?K035jn9|84CHoj&|f*B)h2%|)=AQD zQ~pV<)9YfYDSXQC?(fH;5U!?c#*Q*s4HMB z^f|aT9WZcmzS=ETXXG5$jV+Xm`K0oyXwa$rh7TsxycUKhBHg7z^!w`+n*G2ZI0?@y zE_71jx1!}0OuFqQutD$kR!7iAN_i1!f1o43G+UNblj&IO=S|fUpV5-(Y zMiJ!{V_jH5kt5*Z9T|9Vj7|L<&b#G|mdt=aQzFk%;j=#tW_5S8I^Jj|T{-@Ut%FDB za&T?|`&5<6T}^2n@o}VFb(?J(z?N~X!>ljvnt&ub$4&0bQ`msT-SBphZ{OgzV|dz$ zFywY#`JH1~u#fk!IQgRuvN7*n>h=np$i_3g-?5u*(|#nXRJJy8CtaKCE@t1DFrNZ* zP%w)Q*9~6|R6t>x6o`oRYkyYl(I8J?rpzs8%Ko`!Ul-Yzm4nak^99MY^Y-;S$*HW z;IFSTT_M8z+S?(wIR~Lu35dOAen@0*S)(}|{7=|^D{Xa7mr=ZTU^?Y2SF$Lb!wjhT zAlYbj@;y|5k68-vzkhc^9x{Rr!qK9El0fT`!?()}!;+k0;b)1VJ#OT>C@Sfr8;Tk# zC-2}llCq9UO!*iZvX>jnD|efQj#|qo3GU_%+=INkfz7bI881C@u1+zxk3Vv07Ul~b zGn)gqgs1OimQ#+Q%eMxm(dLhiUcs@+kPr@Mw@GdOuJjGy^P%;naP=tx)d2>*sp*S> z3NWZ-K`dSLa)t{lQXAdnso#t+kq^45NrxgzJ)w#CU15T|1Uma5?`j`#8CgwwGd8PApyj$n$`#n!88gAGb0-hp5P8bb7A zI1Q(T&?A-jr|7_w^APNKm!th>4PQ3&-LpVTT)Df$GVKT^c|WiD9TF$eT&rPAVO^{g zHlXTj-ksWpR6T!=Zr(BeZ2K(qY^yk1{5tiyVV=2lJ*E#T}W$wjW5;? z=STOn(FA&79IM!$;?d5Rw$u|~t4r7@Z`blJTuuss;i6KQ{+)#pwFaiM#fKPznKWBh z%*I`C;})b2#)6gYir0CZ)CK$`YZ-<-TL|--RF|}6;UP{=QI2wVJioB?mSgroM71jF z&gJ0)W=h8<$3(#}d>pQ)2lef5{Z9UdJP=fTF~(izb?W zw!0=i?$m0hHgb$us8feQd+N=QV>$)h!i!G_-qJOZfPn?*SWN$hTd|JY>1tq&XHjF* znF2q(p=pa<>>D5=pTz-sQ+mGO=Fh^2RaJc~+{(~;e&};ltomKqENWqoY~;@vDH?_* zks4FFz>WZ;v|(`b#4*Y!FRlGum-2UtG$MWD0*s)4o*Xw$bhpo|<58zA2j)^%t%rN6 z+0kLhMZO*GDDS0QDt{`8mK8S4X0?{MlS0;$u-;rTPWy;ExDcZz$fXGucJ zv@mh0a}pG}_-tB@7DohE_x4#TblwG5UmR-n=g8gCz@_NP`pJN7T9du)y=c40J}zIg z<4m?qaE=(sh-W~W-G1#ie6W@wYYMG{N;b1Ii`RO&;xyFKYX*cSpSTnzBw1a>8!h1K z_vBuBMQf2H-hX$cF&?y;3yX8Io{BD4KIlwtR%!;=>+kHAkKQ#}c;>PK1=}p+szMGW zQw$9n=1$>L(&XsR8)19c>vGWc4tC@4Rj8mWx0+SU%5$TiJU1PX*j2t3qs5mdw1KD6;}C_!GnA{8O3egS=Qk@jl@Ny|wy2XAoDB`g ztnfg!K<1?gN<`s8pouL^hjs10w%oD38rkR!_Sv%+^&!pX#C~@fc4)N{>SGmKcTqSlu&$5Atb>Qe3-y-ohua3J!I0PgXowIn$n!ib1DyqEh~yDp+L?v?o)0$Xj! z1G2I*49L&a34!s6TWeVH4xSb_`?=osz=s%x4kLC_Qr#dV5nh;R*=Ph1ustRsiRhP|E*?sQCUXj|eOk(ztT2%7qEPV>6_5V_5su z;M+NU+je0sifxxz?HS04z&Qqd5Ir0@^`kj)kPEJxN9(cTHzAD-SWO79%1B_31PdAb zosagXC`20g3)snAua1rvD4Clu4&fFk(u0u4>fi+Uyu~=E6j@|U#;!!j-=RaYcTK||I(nWb2rTg2dZ_3~p%=6)xA zBDa;^cN5W&_qBS0GDli=(C2Q?V%-05;>!(Rx`lG$b{=i};9R?B{kFSJCs1w-Y{~&)a<8$sPxn$#o zoWU(v{-8q~=W)qa?jD_ALX(LK>qSF?mQru-X3dwZx*Qy4H8AGBZ9SyrSHC(BjoR>n zoa+IJf?`Aegnr9gjj9fyen0?NBCW(iH#zfgLe#D`xK;J};*x-gJCB1ifjsM(&NW>i zzXFyiBEQ|5P<|ssa&+~kd1c#1MwQq#wk8hh7@Rn}vhP`p*bPmN1=Iy8&R-9o-4o}9 zl$|u|pGk47hk=E}8bU8wdLhruh67Xb?{$mYV2d7SeULo2>2W%XLu1k{MR6!f&(H~@ zREiT1Lc6b2BPSItWbIMG^cAtG1v4=}KEr1I8u`vr{!{>)tUMO`ikm zrg9%2Aj4e??PQT78oQiyI2VcH3;1s25?AD20a=Uan*m&tf(rw(8s?au00S!u#yiuA zGUjc_Km{etmpy`->sqtfywd=Pb=5Lzmo!xs-dqC}w3S`~#sz;4CA1zrM<>q(24}?P z13jA#PfHsYB77Cd+rJx{DMz=!=KE*$ZFS`M<%isVgHp!=sE+Y7FxzP83eP70FMqA6 z4~dt&e%4G^ng-<9R%qczxDY>|tU-~Gafrys2EZ;IJYTP=^OSZl73>i0vxA6)T0i0~RU zposiGL^F|>3(R-pf-Co%V81a)^cBX2wPIqsZRN&AN5sbolf;>f_zkE~GHBS59~nyi@mSDm+sa9YFi+;oz;MF2xTq|e?-zVp%+>|ln*eMh4O2kfi#zz zfbFf5WYZi(dnaL}RNTi8jT8lwW#%B^JY8+7d_pbjI2^R$=7nl}`;NbM4hc%n8MJyD zy!n^p0Ex4?V+-s1K3+s)9H4#Eir>@Irf+E*za5la;2dntqxxWPbgw--#Vv3;fEa2- z9j7Z~WFrv0w&grL%TdJTlKMuATBJZ(oodfLu4R9wH!Ua)`F0<4t1`NbVQlSD3wcMV z<0XA=vz5yVC8%e<1$Wt^V~yO*v8ptu>7B_Tt9ZZ;DOCc%wqN zA{cgSgcJf!~S7HLHip!VL*;h#8 zu!&wZow-V@ay5=a0pA96$N)4`^)pg8;s6rwuvYbew>=%}vN>q10TvMYs#T%)}pNkc_p}!xv8Qzg+u8x=3uCk7JTx#MgALz<%b1M!@by z^Rpq?F@$tc9>}1t@%*a90<31d-ET|9bEl!0vtOx$@YFW_%|nYzvBV}AJ7grYaFD|4 zTW#Y0%)VopiWgqX>j1q;szrDOIz*^vkC(W@dSUiBU>73H#1suG!eLBofBm=tKS>E< zX<==PBY(HVKxSq`JURvuvjkimkt#mfNSrRHk@D4@gZK`l7|vtNM^Y}b+;}$VYfUwk#F>8(n#r)h>jEbO zR(|Nyt38L0%L&n)^vHF&*@|j0Z)tFfQtx>e*ySwUi4p3P(pSwzb zyyYzDsS09X@1eKLn)F498RdxyG1On*wpkS_gWHk+e{XN|);_Cq5@;4sId!4wYbl&$ z)S)ffU(DDxTSl{EuFkobiZgn~vMY8)Yv1wjlVXrfw$xS#7!&-bW@U$?-Ph#dv;I;1 zq{UHVE{ba|9Ixz9dm|A-k2zYWh~Pf)M8goaA%E#gl3oVL|K@A|eKjwJLgkiE31j1w zwC`8WW^dV2G0QY#q0L|-8%AB;ZWc`8d?CWR!cbTt4F)o#Bc*I5mZVoS0&YKOoQD## zkAI07@P|p{Io5=gt3AU%_^$94I?1W;7vRz^jij_} zsH6|+9&Y~71Q02`{DvJZ{OT2c9`oL%FT8BKe@1OSSh<@otfeMOVUeKcYJkG`i#iVa z#4xfvhAg07D&Jn2}d>WA-{@8!-Xz(PG&cCq^SfibUl#^M0b z7hPBx88Sg;MBC@vmi?k=_W4qwJS?8050u4{ZYQI;>6mG(=HU1r1*?y93}0~?r_XA( zumq$f!eo6-TAD- zHyhq&883+*PL$QKqQ|DosE$MOFH;<)uGCbNK#D2)4jA)HjsHcRXyx$o`88e79=E!w zcYK|aJKliQ% z98P$?|&tKhvU}~;*;V@hz-;j(gIEa?Fg9fHU%U;%|(gnEHA_gJp6iF!!2i{I1Ym1nU zG(fSAC8yiSXc*vhj)e|1SmP+<+R9HZ;6*{O>wmy8C$m}|WQc){eB$C^U^!f6l zxAb7yVh1+Gf~QV5h033Z^LwWRD^K{^!bMbrcHhwYg^?nwx-4cq9&02Pa&=HHaTffH z34a#ZdZrNO&xo8-ZudOReH5;>WDY~4TF^#y2kzVaSOI`2ZTctQTb1pAO_`jKfBxU! zaiDBQB_tx#uF8WglcdBeP>7^jDEqbeI)l`MjQWnJQ6xE#6N309cd{|+&@$o-fhB*WJi-rzS)mnXm80Ug#7X4KjGfZ0#vC0LKf%^j6MTTF?o>22Jqu) zs9tfc3WG&}D4e)zWqa?C#8-3-wH=$^Z<(a21w^3$Vqe5KXr8SSGMGk9xSx^J6Y}rL z*Eu*Gho5XzJt^EU-O$3S$a%B(Dvwyu81cE~Zv~Uvt67H5(O?ItDpKPiZ5G1H+{U)y zI4p)*bZNy;F6yJc6c84+U0Xc6z75McIeA^p0PbQEXMT#S%gI=xE|1uE0tDE*y08Y= zV-3z8$v@b8(02ZG*icJS zpCuoOKXl~{MyZ%mW@lyt!DBIrtO{g`1f_%zs{{qiB}%*6O`L3|w(=Xp$0lE~T3Q+EOEhF-J@MNJ&nT1qp#$^C?V z2_FG|+>@i$WD#W_M5-duil;dYNn0wGg4l3sfe-e@^T~aN}hnCVR+Qy=7Rh6n%2{L;r|dOc)0c5Oci2qc&fO3^olySMDjWuUEv!k=OdSC)o=H1HnMmOX2MoLUA8 ziAxAY_6!Y+SfKX+j0c;hin0!>)k&wRCLvHz!#Ky>z!0{bXS4ONw(5VnTq+B=2Q8ek zI&`}bUIb8PsbI&}3TVm#+Nxc};pgq~ zCXF7`K49OQA*{^nsz2pB{u_(6Y{NIID?p1@mj@km!b(?#e41PgA9y!2d4T0+4#Rj& zCl*OHyKzWq+Fk+Uism`QoUJuhVfdgQ>VYYNVW-x4Eq!r~TG$=7D@r8nzKQ8$rQO{#yU-x$lA+v=?0uM$?I{xKOoxHvY*dD1MM)pbK+wnBv_wpa*&!~m zA{6cgBw)A<@OGoq;6HA=>%kr!slr*oj%iG@$ZL6!(Agf<=Wp=gpjSqRBpTqP<{R9!;13;h76+-KyToClX%tMKI zfp?32Ft104d1ZlKW=i%dKV_o1&QN>T!$n)HMUrRmh@w<{7NnQ*`DbdB3a-sMc!<>E zlQp219)g~^V)2%`B9T$|$w8Px^lzHO55dBVLrk}rnnP(8x`A;KcRoZRc^xPGV-AV;gi0 zF3=-sdtO_p*k@d$k6~8dy>)N6AFgNYiB~}XBaGB@T2s<6CIb6lu^2g;!pQ|?jK-cI z&jFh@Q9dI}-lq%2Q(j~aAO)SNOz#J@>dm{5D~AL)_8~auQK|&k(}_DXWq_0Y;rmG7 zGlh(EopVY=);O&ZIVAx9KLEh=_%!Y*aWUS(T);J#d(hR*gk-Z3>nj9)u;hmhbhp2d zegX=HDJTaNNAs$(Wc2c)%BlJKOu*%23lZ+O8}CF=0XQdaSozbFk$-5$G=GZj^eN*{!+2%x2EmB-K87bt);dpOOjvUD^C1Wy$4vON{5M|AEY^B`pi z>lIn65*-F(HOaTewh9E+EjHtdhV;MSmeCxdeR#yeE@q1Hq}RqoTgZ{{JXMTL&{aww zTyJ{HOW|`~e9IuQ{ID&|x*$t3p>uSCk)>U1vmK(DkS34@&djm=)2rvnS9n~QJ4Zv9 z{KA~7z385uRUxwKPUwV{8(INrkwF6OdDYW0O{0zlp`W`SD0Jd;rMO=yyQP?jx(iD% z1J z`67+atmtIm19u4n&z7XYo8JME-8okRiU;fe-v9?&H}pl2*jjr@w450PaSYy2B%c^| zo2)>FjQ|YF{yWtBMIB`fbRaQ=o_WKT!m0GM8R5TxK+I2hId}ABhmEpDmWNsv|L01T zZM<(1TF8p|)ztt&dpx=5;2|4Jt$!Eb1B{@jK0T3dLiD_;icL-4c*6Vt9{}BL+Er|4 zE<#C4$nUm*z$LX8^n<$tYcpRSinUh1;ql2nN*3n*y|D+l^-@U*x^O*5OIX016 z+UOghNZND>QlCCm9?L*fsPU;iM1fxK+Vus4d5QY_&_uJK%8mP0Pg^kAkrlw|F1_wWyPWu+UOL&rGfy*sdMp%;l#>27sa0cOei-gj7u(PoD5f zogb!Fd`aNGjZ;S}S`E+TJBy%`(mos48?Xj_v!BA8;BlAtbLwOS=Wa4LM0@J=aS7BJJ9epo1qJnK;&AgoM);%u9JDZ!)eSw;&3M!X?dnHz&em(i}^vFXdZaiqxnG8WhX!`=eof0Sc)31!KI@ zqBkLt7&+oRu7ZFT$gG@TyAhL?MBB`bSuSdxKwh8BK3A;wP23I01E1*rem>8UoNcaF z_N6<^yZJ^SVpqv6w{R|8y%HAQSdowAI;Xy5lDD5(w(d5w%Se}VW>p^QAeMF3 zf`3wotdY zWM9@cSExH*OBCPBC*!-VLvJ1;_F$c4?FxiLiF<+q8EGF^tP9}&#!=50Efd$sc0G+E zvV0IQz%%r;R+DmuFiqvTL0=$*R(genZ8g8#5lNC6OXV9P(>|YfS0C^*0M67*CZ-J! zhrxi4f26X$->GmePNk-UoolziH)N;Bm*lLm!1|vDv9tPRn*3^{do*JwBRJg%{IZe79L-N1(SY|Q}9+qcK zTHEdW<^6J<+yV9|%ruJE2YJNwZ_sFh2&v?Waiy0>yLZmM-JYv?ma5!uSszz%KU|D) z-gJTU(P}K7^czi!M-@fT6vahIv0`c4)K=fr!&>mmhKkx%We5%x~CpCxNGzJ$}_lWTgy4mex$GWZ*2R9bPvGVw&$%S?|-s zAk10ZR>?Q2mqi(h)4I`i(BjZ_c5L)~n7H%$GBIl*LQBde|H&g(Z zohXJY8xO}Iy!Ej0!54B~N_tf2Y?ra=wdcj}ht~c6{u2tJalgys%9v+&qF(`g3~ni{ z`(zyGC@TOV%r6y^{{Q3*Aj&>ch3LP++s=AqylnAMZ%Rw>^p>^e*zThpf9s?jkfS}B zuJtKAS)jdqXy&f*vWlkKZnG4im8SZfhU*6dD(j7U7Bd$W{RAHUh_@Z<5P!EE>(Q|p z=-wt>OF94Q5LWp=S2mcAxTArJ4iWU>3-y*F2P+Xq{ou&hwUXD%;adWXQ@o|gbut6) z=KN3n{OT^}q*db-ah%K*vx^>;!#ks8vB}gLj-6 zVcn*99H-zKjU-xw*O|VDK-jP4SNbKWx|zlgGUbKwNnr|u*&NX;IMK|Ezl?LrY`}p*c18WgMRRY?`!|zgo~V*};WbVS@OQaP2E$QNRo+-an+J+X75zW4M$! zDK`=7JAxYpYY_&-nc{`&m;LW@S7Qm!Yjz$2k$oWBF0l>CS<7#SJfI$xLM~U;d#`I2HV~n_9(%|*%Vk;Lp^B7@B0xb z2oo~Ri&Mm3`%jhtRo?>kJq1C z5P2zd4Hw8b!oHZxDsi>S5CBOT*#Ru1A!n5xkyh-9fonE!4Ey59hNFrI9B0uuJV*f< z#4055?*xlBNE9Iv;-kW0z)yc!suu|`zmB;K{)8=>0j~LOnW1pys)7SBTrny@a0PpC zlJC@XnW^X?Y5_jYHALOg;Jgg6-gxDA?lbT* zw+mu_Mz!006H}yh>|!I!GyrMG_Nzy(<)2QivvNQ=6)@z8rk=$gLV#%iSrW2dLr|Nf zH7HAj_gn|L|Db&VUh`K2PL?DHiXA5Yb&CeSyQ=p(GhuS$ws$4j~aI`J!y~* zIQ-u9gj|;Zjq#4RgH|g@^f46cc#6i(r#726HW=xfFBF?R?}qT~B!D<@w6$W48}W$*Y(rbq@kMWCpSIzdx!zWVFAjO-iuiA6BJgY|0$EI{yrO=WTj1GJl2a^o0BHm#0`8y`FXG%ans6;n~AnPgc$u_#p z#`gEuQEZW*s3EzC5ItgK>WXWEes>2^@24n?(^W{@^_yQbq=87pJS+32RPW86*oH0P zhjqqv1#hY^^y5$<{ph+rzCh0ya`u%2dFyQg zm_~p8;~0>Jw`uN_a3=vVpd~Q-q8Oc4OW5l;503|dEV47U^85$4de5VyVuW9Gy7JyZ z0t>CrS_8vGK9Sg8IUr7s$NCCGQYPY=6N{3lebUPU#pI0>q6_fB(%2v{vKa(ej-^c) z;{?U-k-@+%)){;D+?4N8ashyObbEMN6lN@`BWr!;%W`o$5S;~S1PVb7DfZ~$foV;3 z?!K#PVnz4hxPA78E)u9C5|ostp~uP?De~5x13(Wwhdfg>DkqoDb{Q*f9sEu0MPxHZ zM4=85YeP-iG~1N+WtXp(Tpy*FIE_*C+K441y)MJE19UR$u)mtU!jOu8%mak1&)YDh z@Y~0Wm487L?kmUwwRAzKrnl+an7{>`yI=5IY!4s_rs*H;vGpnJpWd4Ge6t{hWU?DH z!JzU+$93chwRINV^$&ig0)n88G2-E`3;;%xCkoa7i19{K3ixFvjdri z`YcVH`z1U#&6|LUjbCNnTVDXZ4qSQ}A^bpKd`$Fw>VdG{;KmTbbXXgI5o}|HF-L*7 zo--EH$Q2Zg*HQkIrACN~yY6dLS9=cdEo9^o)A~yHBKe8o6|?RR)O61iGnrlKRSL+{ zCBwtMc?vGGKV+?Q3$^k`)HDrFiVDM_talQ>-U-MutBmk>87uB5GDir$Kc8|2R(UB`|}gm zT*4&L-Z~QY-KKZNCQ}oE*)1+Y zTQY$?$ZYPO!t$5l9i?!8Nu!_Ho+nRY?Sy&4QRlUkb)V$(*aB0twandoSnP{rvcF+@ z&#*RHS%sh>2xKcZwy7_9kc$p*40-SP^;v*jATJ+k%WSLTkds^Go7q21S$|Nur0DmIZsSxRc&LIIpap!0#P9yqPri1_tW7B*YYV{X z>Y1%~5HCtdNS4*TOEIV}%KG6?VBK(Rr1v3F8iK>ir>iye-Q~kaBH*hM2_^nzOp$YM zCunHlHFOREbub+STS#W*9MuQ_9Uq_e1byKIyK1VS9Ub7m{>b#2!)RQa-KBQ83Ty?4 zhX58|rp@CN6EChlf-KRTAqDR`6$7;Mm9+M%TQiC&KVgf48$d>+O0Y2zVs3b1{TjbC z0N#dD2N*|!0J=#r{8Ea1=Ue7=T#U5FS_!eLRfui{jmC(8E4zD7dno1hOW&>*7=O!U zJ+o&l>cRjVh#tM36|wh@5<)!WC|a5j);}a`{@lT{dzL(mKX(#V5tUPQ%myk9r3UjR zjnzPlA#lP#D@{=E6tV|T&Zb$TST5~OxzwK@tjvKtUX`M`?lhlNsdNNJOFN#$kqj(? z`ECYWFLI~bvC4r`%n^dJ+Wupm6aVPz&t}v_)G6QtDW`xY!6$6*iS1D*K{<;CGDf=s zdJzpmD0TSnGC|a;(f2JsA?o~b*v;`@QbpwvqMwqKDztvsR~QQ5+tH4#(YiKqB6>P` z;z7n4URL+P7{xAZG9USsl(nqBZjFaB@s-+|oLb`>f7d{}H}-(!a2SjS74x4r;ffT) zBuAN8JsN2`-AAvY3^|=!bTWqoHCe)C1M3ohNOB}AI;!(Hw}!Ba9cgzHs)}U4^rUFgeaiG26>)5NhtDv zA013Q7>Rv;QcfvQj$Te}gD0{xz}%tLr4thBd$M7LVDKDs05&H>;&_ald-X}*0lF%R z#=?K`byH$EYCAgsotyw-=$7V_Nw54v>vLHQ12i@eb9}@}93kl3nN|3#Z}s`9pvOCg z^t`WD`V`TNAB6cCliZ#pr8&~V$t8k4{a<-&WBUF9B#HTcqM$6zjdtIqOWap;@L-7C zHl^P^axZf+;AhYd+s6*Supk01M!v|E|64bDW$YiUW3bh)4r zaAfLpAzd3kNFrj^7&L5Lp|?5Y~KLzpHXCP5CUBmc74| zG%XuGhAU8%k`vcJMU8JkbE`C4D6KL7!q>*#R=EkqPI%ketl#%tq$#8t!I$XO)ShAZ z!Ec|wV(g4m0Nf$$Dt$(OuT8ym&<(ypn)oLni&~st24S^=R#b3R{`x*Z_r^XphOs8I z2?RY@Eq~NPF5`>=r#zuT6>}BR{|0aM1}Gu|jVo_y_P}D?j|ZwT|NRE%Jw)pjV~iM1 z{(19=CmU+58NjH9{#PBkmd92R~tL(=ycwqIv;?Y}`#!2r z;c)zog3iGis`58a(#D2jz|C7P)B3@JjHQDu&sD;6Muz%WPi#|&ncowNzuzE?^k$L` zvv5WKyq>s3@HZ^3hin`%(KLDCu;- z98mk%>_p{#KoSXVu=Tcnp0Amj(U;6kX5J1(ld{new^_Nh-KPw$&&DnilSO2(h$1A@ zNo@M6>4O}Lp{o1VM@F!qzlF!*06OTwTJyOzt0K8@maihS?y(aC`4#b(WQidZMZj8< z%2CJx1rKJV4N;fa*;`5SR7eD#O|CEH0LLKr8_d?}93-G(22Or+=FqRx>{Up=|ph*<|v*ZsZNW1Xern&s=6P;8j`hm93AoT55ZOhGN z*;($@-d6>2#7pL#k{EWv;;_Z#DVg&F^z{#M-nnx(GagWOGzMv>Tm5pAm$w93>f9C-sl#YMR3HG34(1p0pxJ6e0dTIGx~Yv6 z+M6a?K&sgRQ-<;#BRaB?s_8bY+{M}3h^QxqHATb@_y!tw=c zJa1ZKS0A^coCIqno@GV6n}?O5aLDB1Y~__+5TZ@!iv4TJ9H z0oAv_7l~aBAz?p_+{g-<7X$gvcfZ_(Be((D0K@|UPI%hd`{R&akMLIDdV2%~=gCNRjA!m_2CeomYRSj!Zjl z#;!W6tGF@7fBr-~Z$Se}s}aVYh>Lk+CJ*nj-j2E793G)&`%9JoedstZwV<;dVXqQS zH}Cvw+$`kGS5Pa1KvwMc5@uK6LXG$<1X6=_!lT3o6N-RXK$M6F&QN|OeQ@4HRhua^ zpFirKs(9wA@qA!+M9{b{M;qmsBjPRRA>~y8s9*Hq#;43vAJ&aV-@jCCSQm{v``e2c zHMTDdebTJg&dex&in=iHaaV4y17c7-8d#0q~yb zQRiiECZ^MxNpQoZ-Ma=;Yn$?I@9m%1roYc>2kIw;857w4_nF2{1zAVVl7|lkW?A@aSD`mXv z*}<&4^(r-r?z~7jmZ{)=>82}w-YrWvA1=Ggo#RnVEpMsQaPIza5KGlN!5&_)x%k#5p76BGqP*~Qz-oSEKu6=Vy2z@nhxqc-cj${ zJCfsqOvK|cK&*>bZjnu)2Dyo_En&ph;{zp_D+mp`mE_6&k?k<-x8uJACzAc_^7Wa6v-bRd-Qru0TL$!&=;N(%J1*)DbGKpkixGJY zA6uerqts%}9SLRh9w+~UO25K!Y!;ZEnmSp|KF%tE8=oOl3Z%?2=LVelrByEqptH}G z7p@i4?sgS;>OZ>H&Vg90DcsTudv@A|uQ37{Y-JGS%tc{R5_4cL-CkFenDCQMY&ACt=z?{a#~lrRnX|A*qT4hF0F1XooPipj zOug7d`Sr$R5^$Beb(@zTS1;K{4f9!KqBSY`ZJ_^@koNEtNIrYsWU?|{@1BkC4FwcN zK84mmZ1W6#lVN|Z%RmU8s?j*_Y-#@u8MljRhoDO|czgC&_s~Jfk64|B;nBU4FH4ps z)w7M?$g>YjZWoa9=W6fhZ`Zi#u`7)>jX`gse|8(3OR)A%h55IVj@p5pYUj*Nv0*Nd zznZ9gq!|@1szduIaDWe6Y;u6MoLx{uRCf0SQcozR85(kk2OQ-*7Qo1`U3AVF)|n$G zJ4~ydpmWe!jl8xi$$cTOOj!o`|8VH|*NYCyEk!RcFM!lBYkyr~@uU?m`5y=f<3>XQnVunY(Z@~`t0?V30E@>i#MjRiaqbms~gS2vtRl% z$*~?Js_SaqU-%;>cVIqgXSf%ce})1MPo!mbzSpO8a(@%k8MY(OHBo&FC1moZ=3VdV zz#(GJYAbj2*x+Wg4BEb+VXRnF!H&-gqE~rnl`#&~Vrm$f9{qob0l*nMXv_6LRX7lK z|8pr(fc#-i%|p=vpR}o{$=eY>VKfVyIBuV0qS=(LUmzt3Z#Z2Uw&KkgIsDuw_p5I< zp9@}Sh%~#D736=An&Wmb>h@e?4;}Mi_zXjNMo9R;ky@|Q_REnIj>2SZE)Pr9^EBFX&i;s{WrzsCYn(6ws|obx1z_E_ zO|klLHNo{9G8O)he}0q_e_ywM@@w8AvhDF(wBxcea1X=2+JK1qEn-co6Co|v|vQkJhecvQSP<^^{?2sp9nIKQc(OMY=<75XVMxs4$~iOid(M)$wc zgG{C-?}@Ub?x4cQM3M?<_<___bdnbj>aFq?@{P1AWSe~46GxJOCD5>4(7&G+MMS!7 zX4p=f+nZ6WUX|M-$8S!uAZpSNLY8cZ-jft8CkalAbvIrZT8dtoJ8Qit1Ag;f2w`gh z`zdta2;qWO-fW+6J@LwF9$sLC<0=7W$0BiV;&qStJO=0ifxx0X%q4R-$HulQ+>~Rl zk$wO5&GJej?}TI}siSph`~Q3*VWHKQ?Tj z!^5YJsseTH&I%%FKM>V^Zck=1#^_^n2TQN}!X+Wp$n_C}IPX zKLT*PQqXKliqlG>Y91|tZ6bWuh>_ri7xchCUkvJDZH}d&W-&H)?c{(M`np%lp*~_w z6~#}lum2ku*ZU3dk|ey0nloKR-N^?urpB5k*dvT!+r6`JPEmLC3ncn$Q=bG+dx|1H|tD&Y=BznhO9=C=8mk{f?!g%_nQ0>MF&WNjADxbU{2=gXpIvr zk`W|;N+;*3`WfM89wYYHxp^b3tBb73_^EwY9E3pA3+Yao4hw4(>JiXZk~gvkM`gmz zAG!|=Uu|CODB80wuqT%?QMINA>36?Mv^bCc!+Rn2!_Zo8R^E|(+(Yd~S)qvYthe&l z=b;1+wzF^^q2#eC#lSG)Dx}Mw+T`t^T*w~w;0S4Vq*wY`m;)qx%5hoVN{0j`>+O6S z{8uf}`3!YL`vFOU37^sX0`;KD>&l_>zaWdw;Wj1g+ zv`(i~tQvpG*{JQ-HThkqZ6Ffna;;>s;e_wEMp=yz#Dsy3Y2t103}Y>ZC^i#?3S>}{8(~IHnaAMi zV52%3jT`wAyF6UEn|Up?k_yZNXhd7K@Eg`|B-Q140_FD?XB8^o6SppcH7L`BEW>b6 zOz_f5-MH28!jWt?HwO8_N4CKZTx)<+$8ld#XfkMPA2YIMs_w<0UdSzMvxo#6E$p1X zm#`)#RB-DSBg4Z(xx?t^!i5I*$+`vDf$xK@)G!TaBAujwzxEhoMtlI)lTh-Kcu(KD zOJU8DU{v2p;z0_VOi?~+RC5)@=kJKa=zDK}Bwfk}q4L*naoqNjEK%c1FH^T+y{Q*L zX3)fu?`I@x!;DxVPX#FNvlDuS1JZk}vcgqbJ%t5cIy{o;*`tl*K%g&}auEWV*6!l= z=3Z<{Rh}t}R#33J5<-ypcM&rAR&gE&U|N!^5M4Ara&2?mm*43Oi=KgkIXr2y^J$lE z%+DuDQzcL@%txn~{vs`|ibwW&z9k)DJ`ixay0v%bVmC1vt@Sy-4^LZfj5t<}JpK@}_Gt;-d zS0T7R0}CzLteM z_{C9Vd*|;m`ayzN&-!b-PFpZhTdP0goCHF+u-|lhEZO^*OWFzA>(T_H6j8cn$_h92Q#HTqV!|%7RkEou(jWQ8?fn;37<#l8CqxsuY!o}=rh(*Fq)jg)@nT= z9LM+H9V0Ea{WZR%PDvwv4H)ydDh>7%YxA{0gK|~M_g#;XCNv6Gu4bb`{Rlw+oht}@ z|4%g&%QgFLxgffZPctapngsi-YEqB;U@J2U4T=}N0Dv({R*@KzZYXalt|TK>Bu;TP z^Hv$pj94d#o2-sQw;1q_kiwbUm(?ILu}3)xy)SyH83{Ff<5mMR)H|%>x=%O-j5YJC zww3x1hBW58F-R-)%tnauT4EvC>`Jw-eA#Tu;RLxF;tz(&Pa}VUotGq}BDS4Qn(?jT|9RI)Ney3DmkvfsD~0$NExg{@;j z5(Shb2_Ja^wI;s~dI@N5I%zXio*2{#x?%^LaLvU-J=(}m#z=HY#K}7K5OyRXauGfH z7cilIhL9)C75H>{RCa@AGnWS2AmS51LII53HjN~0y$kyHvfR!$#E$vjWBpzVUm{SRZ+Jd^U4v5y-!K5UVeYjAbgum)Q6lj>D8HiBSFnbRGpm*%AmxRu zZW|IwqNE*>p#H1841zYu9U2@*Exvu^PHvs4fbyuGe6?yA zIHjo)=01G;aM!pF&ktUC5rCZ|YN(WT8&mKlrU527!2c;peELS6iDzH`blmUyXlA#? z0>BD-K-@*Xdy$K~xa|f^M_Va`9pUS&H}w&3ksCq*?qj@6v|S{TXAaM)Lyhz-&QA_I z6AVa+oU+3XvZWRhEfRXx9VYEYZfT)XOg2lxl&s0JriF`^t3QE5ak-c6TcKh`^;z0v zqis={+;m`FSb?4gnm6y3AJATmqR}ROFRallV zy`_vb+PnFsP(1<)lq-{-)j>Bkp=!n=RE)&de}5vIR!`!^XY!B!Er)v1R!Hv6D!@H`*TWhrx^CGsqY6omhr~QSF3R5qvFk1>d6Y zzDh6{A-pr}bJzFuBT%!mgw*lHM84%1V3^!#JuOZny3JuOul%)n{T%3yw=EQ*H*#vf ztPA-$m;oDChWjB(O5)p#TLrYe_)T0bC_Z~hjJZD4V7H!wpgtRbt(9HPaxtjP;Ding z0)e8)-OX{#;hs=#rG<)i`VQ1uA|gnG!cRq=Kynr~5jY4RwO50-_R3ohB=Ak9L>WgT;6&$(KYDVcwVAEQ{^F`n>@DN+PZYWh3oC>yA8N zQ%l)2w^;Gy5JSsVsm|VwZrg`HP{PFV0|J2#5tv_pBxaV8L7$rBp0crc@8aLmz6L zk-lph_`!9ahR?MAt~Yflg4~N&=1Aic@XqlPx67RKud|-xP#~ zjA!R;hO2wnFC0l%ga^k>Z0(URG6rqQjPRe?e_3qUlT|RuUH)5`!tJ)HIA(8k|3|Nh z@Dhq+^g;?6(on8*2I73Q;gk&8%fZ_slblg2aAHB2GhV%hM3y%#7I>uIT1O(8 zgqgrPr1)~LpMm)_q;&{-^w1(Z?B@FskL5NrzTAg*0WUy#Xrk%{eLjcsTBLbMu4e{e zQEaNFwOiGZ6yFwmLcqZUmw%1DKbKg{{!XX`Uj!c{2i3hi+vnUq_ETSyD$vE;Zadi4 z4Su|h{@#ej`mUeVPbMLCnI0FcstCN|$uT(ku2dgd=a^eSMa#+8@7|QChqS;7ZPEh& zZ|y-_HHs9A;mwiHc_i}B(A$HV76!%g)Ipa?s6jrpr!K%wZMG9QgV(mxTItA^eID(m z3a-Z^a{$(#@kAs1t}beb%#Wa(cjn?_G)WzN`9N$K;s*ht`X;GQ87OtIOp(?=rYWg4 zhBer+YvsrEI{JZ527wXRW()-CLZ8k7-mADE(0K z!4tEb6%4NI`sEF;7P-5lx3pn9J=r~)5>mJJ$7HN@9|zpk{Rux#@(oZW%4;&)O@o(P zcC@->u|LRSU|=lO;EDkujvM+aR;21Cj;iB0psjD`i4NL|+TK4y%ZUppAW-SYU!6#Dj zSJ-{|^eVV$6i#n6^N?}*cyf?XEL&Tdxj0XQ$mw{WKh zfyfE^&v>>0?bwNzYKW9ojjJ}#HWQ+PE~!K2uC<7V+qT1oQ6t;Ec-T!ks4DvWo2$zE zP8R;Z2>Cu#$PGFE5E+}W(q0H`%R%rROfF>A*v%WShC}?7V@EVn`aM6wU>Wz{+p$MBwea!9~AABU&OORpG@by^j=0lURz`pK%FK6E~uuY9DFezt;T&%`{q!_e6YQDjvHc`1!G`smSA zNVdY{k6t?EI9+i=@H@hqRHFYar|aMLbrv(^Hx7o3l4iryl;&$Y9@ySyt|fN3;mDW4 z=@Pp?a?(ofBf?=TV@VGIw5F#CG4bY`u?$UjR#|K3D+ok%g^*anEksMVW(xbf>k?q0 z=9t@}y+7+Gp(7L~XeBmf-~16b0BuWMByY+8P&Pbm!MX@gJqwXY7NZ(+<9$uq0&-F&OUy zXqzya($0}gk_7iB{OV~bf4?VzcD{&GuGL@W(W63I!CQb{65TXm-h;aeB%mrCIZ)l5 zt#HpswGLw0U_I9^4-cRvY;Su4-3uSSNgzX1Qg(LCY)#N<0U~}qaurKD&}(}y6O*WY zBk8hS9=Yc;P_$-7nZeNks=ko0EBOk8hg2XBQ zCSPtAh+%B`7Q>=mIhKWTNi2Ur1Wk|bx`sX{7cX=&oI8_KT|3~+-{8yOtKYpVJ?H0v zkp#=bn^g*10z3JJD9ht70M}65nwO#{==p_nfCdfm8=1h{W_*1O6^?#T%en4jmXT5$7D3quDdm{+yaQgycA|R24h2Bcn<%o29|ghTQG`dkbS1G0fU9? z$KKgNm^1(Zp__4@U!ybZ*ZcIj0lAELU&(MNp|hz5m-?OdRe<=5$3@<;0=Q+rYIgU8 zgz&{716fuh*9r-=$44)K3)|fOgW_WP`S24i_RVMcw&{?n>Y|IxZF%dRjAun19<7LD zo=I)92y0~?mpGNxFjY`trrYS$h}W=kCZq&`clk_lSApN2n&Pd{p&Kb+%|&hm9aF#D zw~*d3HSn`g8QoY66FK`%4)^-Rmqm=P_I1Yduq))^0Vz3adb@39t(8D3+rb=<_lPff zoVAS&V~ep2_jgNElKsvEkXZC^#M6x&mks|<=IGx85JOMF4FwGiFt-jnSFawAFUhA# z&1ogHTWjNUT!yfI(P&aF$Ftth-Pi7zDb4_VmK<+@az? z;aS&-v2avZ!jh96y5YXA#elMP5=-~5VucU_jB~*~sw=~dSlv9y!=crFTZ%mE8WEGY zwoMLKGq8ljn}Z*{xBZN;hbQ7*X8VDpFjU1Zp#>U7X*L+poHu*lc`B1%xU0C1b7lBU z*}p?IfJu^rAme7@ZktmE#bq`3e8I7dplD-cGf++(=hy?-PlPAgO-@$hRYR2;ka zpw0(7o91trEqH}RzhNSYvbRlgwkw)M7Pt%Ahr-O>`5ve==k)R9Lu)PE!|seTNJvcGli|E}+B9rcp(M!tp#BoO09cS^d?wFNULl7K&|TjtYZk96KV zn&lT&lyn z1>|_)fEErXE(Bqd)fEA-AtT)4kIhZ0Q2VZF7-U+B~dHCpI=|sI`Noh0u6qR0dHq(?uSwm+krAnBuXzO=?uVsN+4u!&3SyekB`Ym7i`rO6a z7Jq5gaf?HDiWJHJ^{7o5j0THEAj1z4dWPxAxc$0bl)ygz$ zbSKf?y^likc(s}_emZY>2#8fz+X#wd%cGl_M!*R+j7_k17|Ak$F?oEBzjSN^VewI^ z{}NegtSJq21%Jit#}ZjbY=N_u61xOw=Q@idetb=JIB-E0lcj&59vnI87u%b9tHgMe z9p?8=$<%bt7K>VI;Od{|?$N>3#Y`X^Lxda4YtI*-^0(#4aKA8q8PS-)|BnckPuzFN zHuIt?KNI6f0$uSHxB)$rd}>l(ph0qFN|L@}qO*#R^?B1#!~~X-L!w(y?A-Ba5o*^k z{L~x#Cm~2h0F?=Zun!+CXTq_dB%wcZnq%Vxay@FhR%o`SrWE8+$OdO~=lt;RC@_nk zzRfRCy6lz=ch=ZaGp(n{!?}9KVDU^t&}Xj~Fn&+*)EU3$@d6^Cp%X8v2JZ!MWM+vw zOP5Q3bD4((z(8vdtEn=%8g0{IN6xCUEjCOz2H7$#0w8pmozPoa^eD2tO|sctOAO=} zo}W%dh|56t#9t1linB!kO7yY%IrKge=4_{vuNk@34Qjp|f(;8hciBl#A!1*n9q<2rB8N@36+6O|hPj+2<6z%+V|%tf2JIhXDouyH9X z8Zlavd<`jYKrFW+h^%Vq21a5*eew%lMKvx)06fALiCo(r6)HCi-Q(DW@CvMys=82CK;$%f86QNSqf9(0QVPY16;D zmkVbI6V-VM_Q)A{F1aI-@vuQ>F9w`c>KQ9jB8ya4*hlT*pgJ1heJ3XY8-x?^jipHD zKybjeH#j)OOK!2{*BUo8Ls-?&3z-|8Bpu_~>N#W1!U@X8I50_>NxvA-PC(=M!CLJ1 ziL^A+(Aw}DbaOZ5v={UFirZ4ZjdqZel-vyn>4{gCJqs6 zBAhoMU#d)9XggEkFAUANqY#v{Nj5>@t6pgRZ{CDe{AjFBCc+;U>NEyOoAF`~;gojP z<3XuM1dZGYStG_OdtrB3LPjGNK4P^F(kP zSw&u2HYsree>U-sNtn73Xf`yZ)Z*a~G)JpWKl4oi@smT=C6lRj;9n33;0}A$pn()k zR_?g6?oVaL%wg?guBKjbk7(FXm;Ob0Lq^Z0`U530MMWmx$z?B8bWmpD9Uty8h$Bn# z2iB3RoxJvn+$<3jGK6iM&3YigST(SmeQLv($;+SuGw(<`2=0iZDd2PX=dK2JNX_7yj^ zj!1oONdLND>{473R&dnm)r)0fA<0@#3g$L2az(Rz(Z@l z=gBQO%)4S-b|$~ovW`n|243nVo+esy2n4B+WUX=GDjJbNOOf|lws9YyfulFHLZ7iB zTvnrZQJP-7{{$0Z0&(M#0_}c^N+Ndx)ZResbgj$Ho1=HTvy#mo_@W-76 z(0*+rapA@I^-ze&zEtr}1Li14_T=q$nKvY7XK<92pQUnAReSXdp{_`yjm^5uG*#HN zf_-4p7-KU>P8Ky(o}*9yaD3T;4b$%5>F$en5>O2pQRM5?+iq9|MlXk=pzqL9XHCVa zQRQl3o*ym?QVMscT!pxYmM)FkLX(U;VwyL#*aMhdaHTnswX%j3VE#c@&x=9>oKd~n z$PnSLHVX53+)8l(kwBkviBM*CT)mI{c%K#4+;s!yNH3Kj189i7rldmBn^_tkZ(nB{ zA1+lCpAIZ8(ZRN!Z-1b1_FhP>L#L;DJ#rFP^}Iws7-{f{?v@kdP~A(kughNVO|CQU z8DE$~v|Z-cIgZW!&xzL|C7Mg})!6*Sn($Nvnh_EMUaYFyp6#e1dMCPCRiL=t+7F}1 z(uIr+MZbw#s|+{xLUY1$A^MIA6wv_xKLEh+i5$LUJvd2gx%`#?8%wcf>EbweDar9| zG@GnT3XTvf!W#w1Az1p{P&SirNAq6GeRYe5Ht}Y?f_x;G`e`TncNoQ<78TF0lm{jI zh|p@JFs0k+$EOidGPaptGT#ZPAQafQ?osSkMm-7Ec4S{Lu|@HzyO6+d5oB+xiwUHM zT9M`DzdA37ifezR^%f~^!$D-Y|6vYXhiKwBHP3?lMz%+fU8ZEHkpSdL;Pbi@2dGx6 zA<1Z@HStvbbqlQG@8ZpLU^HW7;vJ7YyjX)u4Ud*~7w@BEGINglbn5UDUUOfRP>tHo4RrQ=vq|!3Sa|faqmF2CC8=;T~WkYT9Df)#8hx99ifBdsvpwqyt-0#;bVr zCM0!8owbrKV|%t*gU>9`QqU?)K=>!pFo#i9n3vUhCAH6@qE(H|sNi8g=kq4dgL6%S z{Yo!dq}@}cj&E4Trh)=d|ifm@VF#?Sk z!1am#E^?`>6b4!>zim!RGYD}0dB7TUW zt3j!WRDc>6qt6>y~Hc}FUo7x&wstwW!ZvRH6= z55|ae8RcyU+!YGTvINP>l7#+wl!;J?uK5U=&3bNVQ{i@PYqbiM2!rI9K~vJS$ue`$ zYLFIHO>W)=MSn+ZF+&H~|<3SZx#k#)?H8ABu zA{};Lz~BR7Ug~Cn>*3)aSv)+ci82Lw3ahdq#}CEEog=^I<;DvbCG>CP9#DD8xbz@EGhw)3x}%e#^TKZN?bEmag1!MpMR9}jU-B3VDPM97ES@?0 z(Hb30SYizhf7S|FcN{{*EMn&C>2N-HMlb3g5*>NYHLF)<1>=+Z#X_9tb;e&9@%Z^< zJ`$32v&TFJ`Oqi=P`4yiJ}Gt} zcK4Y`G-*2qrQHc9Sdj$^bJwjNYjE;qy-k5Zsyd$6;l2hSDsLv%?38KOtdaXtL?Q&4 zoLuMnD`e>xT1)@=5!xB_zI^)<8Afv5`JffDvCkyj#KL}UzO$8{PvtK_9ixG9(hMcX zA|32h4@-V*8&|ECJ~t!1szfz&XE#>l_R_X3Vo^;j9E7Gu$EBz|SDe)hOqFXRfBewl}>TWQ|IHIN^`x(p^}^Cf}H4d6Ef)wjeU5-Le*h^2YDu% z0G$+b*YSh8G;f)$Vi#JgfNv_5)gKa=1G`)XFJW_NDmX9EW~05+ZYSmnxcnudyTV-Y z!Jq#pdTm-+*`4bwhg~p2sdf^7)`FECd!SGO_}M}u0m0s0$Ktxh;8`HWj6(1eGq$;5?~X&q0q(6 z+-Hy#LU_gnOuuvTJJJm{lApza?q)kj+eEzO#yEr`i0fpK_yYF;w6N2lNQF6agG8E` zzr4|t(=`)u!Gg|d556AMa}~a<@{l;s&{TyK zEgs&%c1@=JGI*+9x-r|*WSZHi$8#CsCGP4;(HCI3`|H(o!2(s9ks*3wOW`9ZfT^41Anaw-P#&-?QL6ZyOh$mZ(=u${Xd>0;*6 zxqIn2V7fz+Sp#BG^Srk6>YdVu~sG|&$M+3864%siKXDjyeDoiRbK37HIo zB$%wMOp>yIOccg!c~EYjg^1_b*ax?3x*AscsA$(f>wLgSW z6_aYrd1jVef$kWmn>Iy*E;NPky*IK3|G2z&8$-K5$mHKb!Si9UK?C zovZf5hhY*(@-ckfWqP8R2rX;XJD&iq5(=-KOQDh#4lDd9s zhXN87ZJl;UI2TWp$WYN*NvL=1dqC?Y+v7;^@#u;FWt_2|>;B#9A#{#|?C-~~?cT1F zU#X~ELpD^(B_d%Sq9+y$O<3;nSp5fdE(@6be8j?8R91@-#f@Ef44>}_}#3V27^Faya5lBxM>U9MB z%?od7$ZFiS4(goNI$!-#J~K=oClW&^?AiBzp6??jNOR-UYER<1Na zVZYZ}w?xF;>OvTa>k9&wi2!S}=Jv&AXz;QZt%I{rXmo%ZDoDSHm1`rf7J&adNV}uS zdD06Q8R#DJRK%^l)?_gS%}5POE1v5$Jn0Xq8M1!M3XEkL-^2$GT{xvM5Tk7-;O0wm z=JgYqcwQ`;A#Gd8V8M2Sud#43GxJNob-){U^YUTM?+{owp?jDw=|__N{L=nlkq0y)ZRX)30IcYDycytOvN2 z0HQpcpZhs<#fSm90m`}E869F%u`$HXD1KL_S@~_-b}5j;G8&?d9|@c|f>}HV_9VC4 zplOhcl%)385ggYnr|L4Lg;vKvum--55QpY+h>W8>dCb5j9c8c(p@VPs z?es_#g+8U^4b0E%arcN+-FK2b0lB4oj#s|bDJ&T7F-4$lhMl+`URZjhYp8lAPH3lHf<#ZLz>9<%2 z^PEyfnwj-@_heSVo6=sV>;G=yBx4A3)4sA8DjVODJ-)37)mFEUp=`AYJwJbASK+2N z>^aOrs-!*5LX?p2%XKO?*zp) zwQYfo0gzLg3Bbl@=v|viY-J4T@?-wNx!CDHCAirZs=f6l2HGCB>F+N^WfZMX;m)-7 zGp83FB@o~)Ocx?P;4CF2L(7Wg6+>lSq1~pV~JKp0|Jf|5f4#~ z&TH|TNcg|jfXxZtlV65o|0wRJ!-)2U8c+j2|7@{N;St=={lm6{pSKRAzv-t)cuB!!4h0=>OY!$Y3AB zUH$409r|&9yHByX9ub~|>^~QM`+K50K)dCWATp#H?fl%(xT@h`M-fSbbHldH3k?v_ zs)-&|nN1{EhTLacIU;+dLZZQ$4T!{``xj9_fFQ3YZ$%BM>h&^N=)N^TvQHo4hAV^! zaH7zHdDnhSU32ccpe4=9<*^X(nOn%o^(75ZMs+2mX6JE(2R@GbI=$YM`|4#eHfx;) zEPfU0i+zAED9fGO0|4PnSg`F!r@I>#NQul#UXA@vuYiTen)~n2PC|~Qn-jo>O43rP zcXDTNGLDTi@Itd>$$bGfTcjs?>Ys*G4-2d-=B#J+!VXiHu!%^71s6M3PC6+UU+ zWJ1o+2obAg0JYZ@4Ig^;1-*Nrk~b)$@g>{JQBeTI6^7zYyjc?5Kko!iE)S2O;NZD4 zH{y;M=p`S(|K#TmNj4{?F{e%{qQ(Ag_KukqYUX4ahqMxvL#A65VCRQ0zZ!gCO;~EO z``{iQR-P@&n6JdQ6yZGJG{}5Ay!Shg--z7x-ehn!l--3-!?EXIO7e;k>4m*t!U$nC z-r&oyoSxO)S2A(&C&IKWa?Cx`7msPXtqK~Y`CmTVT^}%O2!U{DIQPI`5-I+tXRkCG77{1D z4QC!GQ(YO(EOLtsUhaUZaf#|1B?p~ih8Gb%?Q@;PywVr)#7zG_`WA#XGTm-Gd`AW- z+Pq@2ZvM$*@}*d%Hn&>cxCdY2V!|XluxLeKY99li*h1U(4VHRC>}XSKNN>(>y>vGP z@N!4&!e-v|CO2*f)mZNzh&NG>>#RAl^tUGh?!j%Y+Aj}F9m(SuM)54dYr8#)@4>Ja zM;G}mpvsH-AF-suU!fda#CHAYqgYROxqF;Fd(n2bluaFM7a@{mZ|Q~ z()L97+J}P!v1I+T)FwX=8$4K#vq}l10{MIu=&(5%$Q`?VOmkEqp4Vr z9PR{0FaFboNjlAfbTv&k&<4h{@81~?Rfp<1yDNonv(@9FQ-**2=Nb+k%GU_R+;~qK zbo;hm9933i>Dz9p#j5r(^+G8yG{c+yF)oBGI-Ih_W0nij+T#pQ^yM&An( zlBJDKiaqI1{*5GHeL-56UxPP&r(+)QxIT~+FBm4Q8XuiLn6=(5SPN6tFKlEiXUd^U zTKclKDhWix{%H3E%bKAyXcCVTHbxIywU`vgkf`uL9tpg52W;_gjD)QJmHuSW?G{f!Pr5n{}5-p zaJ2NBUq&CxqEzB{wRRz6zL4sN4l#y3r!ohjoj<7Eucp4vs|QVAGe(?k&Yp~}1|99v z$;{fJjTS6aV=1iW@W-%w^l5`^>9eS)>L zG-2UVg8XlH>xCn2HzJ}mZlVvBQ!6%As+qiYQX z=KgG_UuiP<$sX`%S)vN~{bmY@LPxJkwH~?0z#J!Fmzr<_JcA!I z{uhq-w=x^b=eJAe&|Z$ZuuXNWA%bQ-U8Ht(dHcfvR1<}zXGfAS!}x()Q>7Sr3j+@F z(1v->P#y4x{5i6(7V>xC!4o2`E!VsCk|jBO=Ld=t1@|nbmR@5V1nEcDfu2|XMIB-8 z@F73l!xg)hRBN565e)W%8?<}oezRJpXkJVh7$n0~-2P`c28d^;9_StH%zaCC0{Q+t z&8nKHa)n+k<5hV$bikX87WYqiMH*|8b)`lccAMX!v=GMzJTD_nUN2vVMAK54gB2CN zYuan=5$4#?9d)Q1k$rX0>GK@xYshOLJbgOG?ud#5Z7Zw2EEz#>5D}0Xjec9?Hq!nc ztjd8v+M*E45{y9#rYRjx{I9Zh>d49IMeEEYGk}(@Ec&FWZ#B}eZhix0 z>zWlGQYj$eY!e$SidB>jCtYCbzP7_Lh=9CVsdl@MfSOaRG zA0Mc5S$gJwQ^Vn~UrE1p9vMN#h%O@Y*ULc7GCU?RzGa=dnJ5=N)aepPdJh_EXGxQF zUaFvuijY4$=lkhq4I5lNaaF(bF{Zt>UAB^q^CLGfI<&QEZC7kY#azoV|Wv@ z;@ggcg_^U|+}uKh?Ly7$xwQ(Deo)DVoW3ZG)OB(nhpK24PEx(W1(FWvIxh z>%n{ZIRj+IiYZuITT%s3Beu;pyDq~J(D1Xvgwpoib9r&oW9|%x05jCg!v2^yXrV_A z)LfwPuPv+ek7|aTBRJ@p<{VWcV}+yee9UYIl3uKgaZ9ONfYe3kY3E^TIA(X`$S(y+ z0h?K_id;(D!@OF-3hGpZ#H^E}^DYWuL)L=h;z%f@BcIBk;IH zDdWS=iAcI*T{W7UVYk8>SJ-FxlBio%^F|RW5pB z@abQalMKLiPE*~O55~xrIJXcXF0YT)bs#fr&(4nI1BKyn|M9$4GGYaklg0m%Uh zqeH2rYdvSA4)T0+lQYiKuSq4ctVZ{4`>d~$ z?OXPe%OGTOZDNOpcZrYc+ypc}&h>4PEhbu#x^OEetgT;9iyaF-z1-+%qQk#U|4 zhZKrOI(3+X77>k2bUiyQ1K`PVpZ#l0rV4cb;<~tYq}tlS4kAL6%KgY;N6_)J&T<6c zkS~D*g{1}DFF4tT8kVIwUWFCzeelhi<3AVtu=KP~W;Sg>YUmUtv66f8^!>3FyaDIS z^%%sWgXN{Pn@7GTq@$7UfG98s4*nX$n?!y``TL(0kY|(wE`p`(E7PZZwpY};OsRq= z(X?7XvQFy@hya+;Cb)v%T;G^)ly;^xzQYWg%h(Ke*Eb7oh$3#DM zHgx5^SB(dVf4@t~mBigeN+D87+KG=4`#)!4!wdyI5P;9gZyP!c2`1$+jZb^PI_Rff z)l19qkSQ%M54l56mvYY0ZM+P*oN?yF3r@K>gl`IdE@Zbv|NA{8Y6;`p9eUSB!bm;q zFHGH|55cys!;f)jP3L9|l62K)Tm(2}i_**N=?AWT$mj0)(CIY`F7QZwduUkkvO@E+|HF@qP){ zPwdLZ$~uW{^;O!FtGKecI2)}3vn+UR->2a%$5vRpwXFx|?biyI{vU zP^mJ0gr)=jd!&K-v1SgqJqtdVhVOBzZ~VX$#%RUtLX;>C*9*HFvPtNJQkOkHLkYZ0 z)zntF7iq(&SRW<17f0&MD_H_8UILs->_e*15u58i57Aznn*YBjgqjFnE zN6hqRt7JvgBqF7tzwfF+;cLrd*ghBb@t!Z)&!QzB7n9cH#`!#d2uW@%%W*ATIZ+5_ zEf|nmt|kg#wfA6@!?8A#kJUDqf!1jFVbdi&$WZ7(;M^FR@vK>E##jZ;82S6K==5YI z7ILk-uE4^5j_dN3r}Ln=VH(AY=tSum36f?RQzAWsS8U&ddrEbkm(ZTD5@Z^Oe(_Vw zs+jlfV>jHZB8S-)y^)iQWDr9 zA4^}7J>-!niYqeKi0TdBv0IH*T>mhdpDp{U2B;-YhbouTuV1BHl|Q0Q!F-Kq$cN2t#4BZI$wg6gUOX%-KCYQsWDCKggKVTIhy!{$adG( zKU`q>&fjbslpk`G_Cm_>-d_zZHRval60LF#x@jFMNja}Kg!N{^ZO!Gw2UZ4-&1PQD z%0&icxQy9#%~KXW=bL{^pFi2vv}L6^EsMO9^~8Rrt?kS*J>_7LHg@t*oe0Wn#LIFA z;$##ID6G~J#vH;(8FlJA$(?3M$wuCLxz2D|Cuj8LU<*_*?IsVN&F;$HO+rODI~&{)n(6HSH)&*uEp@%@ zhA$%RqQwi}D!n5!vSU(@Gg=gJxTTpUg8?Ow{7FmOKj_nPk))%-OURCuFn4!b1s;LW z>{Z-V&X@Usl1yn89s<+g4KseL7IAK@JpO+Ph-{Y$G;AeSY#18^WPzsSLu8R@`6Lin z|ByXjjD6MJ0t6rWxXF}`c@!_z-=*ELDwTvaQnQ2{!hKSk_Yt5re{Yx7&Zxvl*VEu5 z+BfPboO2WB`Mp%;jH#5AJIV&g%RFMBH-1d=IrP-TpiS{rl(gL2J(0+>Rp@bAN_|AyWifc2xANgU9j3Of_2@CW@9ZDvKEV(5H*~ z+_Y#FP2pX&KPL%WxchL~HAf5rdm>E!0Nm{Rzs_^}(w_l^VoG>z)Z7M;%eb7)ExIjM z?V&6LWpU;vG0pyqB6qN7DT5y<2B2aev@_N^U+te^HNSeAiDCK}!qxqT6i=ZgXto7K ztFUxgt5__FK_z#!pgZNYX-QXsN}!_; zuTN7s?dr8gDI1pDE1nR<-zw|EL8I=`!9w}Pnz<$fDK-rT_hGfmOYb(k^N>y#OV%|6 zo6dj;>p%J$cC}-AMIriMaG*2((z3`EO*lX}dW6$oWMCJ0f-^smwhta8DF}46sU=7s z49xnY#}0sSqMVMzJb#)0Cdbou28}LXnh+G%PWfJ4i&Db)Bz8khyI+@3jQ%9;#=rwbb`t;uu%NXEb z&B3Q(*IGqh)GQ)m{0HltIIn^1mKTb4snQABK{b~734p%%JjWq92px9O%Ya9%-$Jgm zuiq7`!2lKqPtG0}t08&Q_*dGR>(x*!70y>Fdabev^%e?@4(VQm*gvzXxNnpV^|%-} zY+v|m;=&XbW!N^YUS%K0K2;Vt2;l(SGMrf5hytOq>Do#q4|yE; zavxG|&^J+3^D-*gR9e&a!Pa@r*|S!lUq`l{WDS`;zB3#WX)rja$DX=yJUG-L>$mA|}!F zrMpoGff*R9tEPHn;7xeQsn`ck$?%rS&#=cX&7W=;u02N=)Sg3=;e~>GMiaS0D{6_S zX4H4o6Lqc~Z81S#p%iQvd=L5F;&5zg`~-SpMH>jjqW4W-u){6v(+tx*oTRk?x1jz+ z`!x99SD0MYouG?$?>!9_XjL##Jt48JMxHoQI;6*YcRky8rD>nt_u^tfws7uVh`LV8 z5L9AxFa><@^0o^>zQ1uWy>-;St!b90OR5JLNoaUI^sQfs2A^Oe**oB)L{m5<`5l~M z^an}$E!i5n9p?QW7dcv_)pD~Rel_EAR?~B#AW}>`lG$h5wz4w+XQn@RCtCae+h@d# zA^(GU+R}HZI@U{lNl<>sC6#FWmUoQ&niA6mk>i`m4{NT<=l>p9<2s zJ!*8_;t9v~LwyFRSQlH$##Lc)*kI|{IJZ9pwsG!NzKt|fR*{cD;`?(|Oo2Gm?NbDt zOd2e7wH%!3U11#G_ndpgLPl+2=~uzs!RCtT6n0qU(%RWMlCeSD&Yd;@Fgxjxr8FrM zWiSpmeL7$%xJrOxyH78vPk4)7M4o(+QaF+bEj{`UX=)#i=;L@G+nh*jS-w6^lp73) zETm_ULK-btGH=&ak zlG@>K>Lon&mviNVguwNB*}0r3!^L`vACP5|oOc`sh>1skg3WEF~H$=SD zH?>y&Xe;-AQu(hU*Fn>of4+S_J-{$IDDsKTl<6S2kthd3DleF1c)cca6k1@zs$f_T zr~Dy9>f9A&X}f=rK&cq|?boq5&QT=<@!@Ms`Xz&X_L*Pr>sGn7OGI0qW_V65JBb8U zL7@6o{cd{NRGr9mulz0ygdvo;jIlHq{bKDT(-V`k3e4<0+Dx!q7wji5!cNE=cft<* zmRu3u^cT7vadl`A)&-GiHhA93iKm=-&aMs0B#xf06Ph}iT!Sl+<1y)|_O0!b3*zjm zMut>P;g_lHl(rmgojxA^q_X;T1EKV zXEoK9%>H|q6GCVuR;FnFHLB&~!f|9tuk&!XH|?Zp(2zW-cr?Pl|Q!+zr&t!R46fnPvI zH#-!Tht1_0AE$Kf{z21!xASZv45SK^vBs(P+at8mP(_QdGckU>qu{Tr^7+W{_eYb> z8jpormx3<$ja!PEAiv7T*7}r`?>IAfbLi)>TZ>Nk{jUM8|LYTWx)M_J^iJVl{QDK` zdNiN;_Aa*_>#!9~Ja0PW#5tOIF{u6f38x#MrS115v>kVng}+#IR$Ojh*VyI~6wlnW zJd_Y9(AokPj6l5Oy@C`HlqZR6>wF7k{E_W`q;Z4*qB|D)7a$10y712OTG%Q<1Pic; z23wVu^8nVwcn*%cP1FaPoe;Rj!<(&tAh|(+qvp)zh{7yPbT%&m8YuQm02ed*xw1pp zAGqtH)mPXO6;`n^2{cZExsa5y;NGKc9}J_%(}6<`MWyC*7GF!i>K_3`BMcfl7B*fa z`q)H}rlTakdAx7i_%-IDu@f1pFrzUuC;)~8@fB~S&f*ZH63hF7@3cXeGKa|f=E>GK z6YL5;*-lZXlX-pa+W;X0x|!N4Q8K`WY3OaEP(QgcqO)Nh3lp1wb@#fNxj*tDlg&cp zKrwzjs)GLXf8R%F)or9Dy={ppjyF^>_lljCvZx$l$Isuk?TdiK$)seynq8?19=z9P@~^0eG#!JC5A-o{K!paMcVJnyIqrFl)MYmnl5=!6F`F)`?c~m`~kUy zWVzCQX!~B2qM6?VPgM(-O*?g&UrW>bn)-1T(4oSO2<~q$Hm!@07sKG5pqctIwQ}>i zzJMe7>m&Lg&1+zlzJ-VNiN9C&UzW8<1heTrXoTVC2oF5~UYGh8fsFA($zoFFu_s+& zA(=lG^9UM+J?;O`6<<>dlAhgF6lubhGN~R9UG(=wlS1dZ92H55s672Uf2tdlHJaeEB9(SAl+b zgIbm~BN9!ugNAN8_AN>b3qrI*U5{zrwB%jrXxs2jjgk(xB+%xUH(fEZTV5+|LGjuQ z7wjd$On)!+^Q)Ic+f35}#|j0pR1K0B%lpV4mB8;m#D(WL?9{09nKUmsc~tsfH$^L6 zzFR0o?oa-W$w0{D$yXt&*k?AneO_Vv3PU4an@z9p ztQxC&s@)a#*`Bi=uEQ5u$W3vB(5@M<|4-lT&?Y8&(YT?E2W=AKW$DY4U=;h)hE`mE zFbsau-Jn_R*PcInK1HF(nqZTHoNx{{afVo8L(8+G%aKfI@ykp`nVVGZNCaF{4P!Fn zzP7}gSiX0z0y-nJxXF8By*9fT8F${wgK0h=E-w80A9)*9uYfHkeM&?5d}Fvg3cI_& z2F~M#?EJU=Y$Et8F~7J^k4hVREiO+WSo37YkOk3~MS$y5RX8`oUQxN&>j}mMR(;Q* zUsQgWQ$`o3a5g}LsErhY8IRv*bT z`xoNkV_3qLvY;4+?&yFCEIY=v)pR^uLA9TQeZJ;op3Xs~2{}#Uo9)9FZD9Q{XhRLC zjhr2o>k4vL9e%A(X`tv1e-I;$%f$Fy;$o@WHx#MX&l9SxG``~Jg?PDkfBFrZ5CF2c zmnZK$nx{wDisOV%Xiy8E@RF2SZs0o4{s3co!#ehj`R+?>bC5v7#Hp!pl+xp+Qz52` zUUur7{5OuX$9l+X43|!M>G0u#`-ZUS)ya<+9%LkuTrVk{C8Ra*V z5DICA*?0Wv7I546Pwf_Xw=Ih7NrLM4vak zf{V+S5|ZdTon&|BhI6ZF^u%L#Yo-meo5~@bpuBS$2$j2&rg|IpX<2K%BWZRh4x649q$=*0$XPCiYnMw+_|aDX6W?N`o+!^xaD9kGwx=e_T@r(2pXuky|6=wm{2Rf_hn zC+3E2-l3c0w!FKX=hB7`9fNtR_cC?W6kt^6#SxhD-*d<$%Rp%%>mqm9{4e$lJ9=(E zpzH+L;k@$}wN}STwbAQf z0}_7Ci1ctwlt_=Ro*AN(fBa{|z|i7y?TxEU!lE-^sAYE(yzpyXEy!(gUE1<@i+rKt zv_283b{Yn9U0G@T_lKS|Lm9tbQ&wBTA_ng zEH@TSd@z7}uuGl+9!z4BTJcHW!d!d8r7Qv@n^1&{S)ywu>7V zBvqc$@JU^Qgr1PcI0rFI{@ZqN%A!v2ci3ctH(s*!gJhmn-K<5_p&+|8$w%ywGWmJb<`<_z#tY-bwsupGyD~gX5zq-WsDlE*j`q3&i!1StG5Ou@ROI7w{9a^x z2;@#v?VujRjj4kVAM8!cxT_qrp8ENx>s45$4{ihn z^{96bhPV-5R3jt7&c+2!SJPL7ygN&v&x!3sy3&m2_I!g6Ue#hT4B zJC2C&7l>yI=yjS0-E1C?>D6v~jMs%jx5)@{?;7G(D@GcKr7Mu=NGrT&)CZ_+|IBIU z`=7>V`686!W*~czmP=7r`zzieSP!s+$qmPxf6c7QK>pq`N}|tYi4$io@VrbRIzvx3 zKZRXuM#u|twsJa2B>=Z~jgP0%ke->1u{br8y>pPzLo^nm(q1*Sisy@0)z!K+}E@%MH+Qe>ak2uJ8leC&~<|5pOp@UIh7 zSH;^@9PcsoWdJ7Q;|x>$U|$;Rd)*b$+SfOYz}ofvmO&rYQaq!XPMAee{zi znGA;kuc`E`_qRuMLzw0`oA<+lrcRKOaf253N?A!;qt;PqU*)E&V(^hhhUL%DX0)y? zL`nicT!=%@l{q^~xYV+IhJimN5tsqFN%cxRYUogKxREczoLLl4$_oFR)4ah{apNZk zK{jyFs7cbUz$#&#jIKcrEjXXqhcb;_#C_BBiv6grH})86=hwGA?}O_8^`xoAM)u8S zlgnk9;L^=kKVO1obtBoVDcX^(#7@J@GSZdk747pS0%ez09d!Y11BArt&ybqnflLLf z%D=!JH%kh{XiKcqfE=s9lXiUEO%!SW9XbvJ9UW&yC>XkVo=!jyxLTN~(w7f@OA4~W zhqHuAtFvH%}Bhxc8=pK29SCY zRpJTy1-}7<8CSn5hXn8->HSNYsq?V!f)e1fo-4Sngj%9;r}M&I`#e$Ytcb)xtjV_- ztJTt-st~-xhB;;^mezKkuaxHH!O2qqWiogCi7{QyOO;&>rMG@!H;h8=6@f=Dq=!Xh z2jBfqYqu>9RB9oEUgLX;wRBd1?Nvi24vgA5W7&j`{vjcEG#@d5b{1b9t;!Ov&nTfc z<%sQ3viFjOlY2}4mnn^YCIp3pL2es{P1uYsNYQc3p^Id(Jo<6(!U@e_52&Cx&uP#t zkk6vCYE@$)sL6aU-nu6)yKzkfJKZbkjWsDWbAHIcR08VUJ*7U;dR^AkjLDz3#af)? zL9MEzZ@k%(8@PL~6jCRCyuubu5jMKwZ*Qz}Ehr##M~$~;6MRtlP~ZI&?Vge5IyE3m zQbV|J7DTt+Ed=22DoPG^8b+@)96dX<)?LF4W_mU_>nl7)PnR$fo9>Me^S`LH#VKOZDx%SKlkNi_T?&@xSQ;b)M*MgnaOc#tnG| z5nGJcW;rZkr_E8-mx9B0rfblvl>C03FT5faQ3JyN?`6sKQMfp^0a?p-Zj73?&+l+f zF9*(Y>w@HYAc?qFUV2dyEYh&zARgbcZSd|Z*c3i1U-aV`-%>o;B=rw9a86Al0Qcgk z-vEjJL@Qb+xA!LImpB;$7@cmH7riPE?q=H)h_!S`8PJhAH;k(5ua^zc;q{>!t@;CO zkWvSofg*ZACz$hAW&pNiOzt`6Noahj@~J-+rTS;3tav5$90hJIyASql5Gig}7j)I9 zlYl^#jngZcA28}rzE)&f9qtf7S{?uobu&zmimzl%r|PXI6St*QF~^3YC;wu2kHkuQ ziVFhD1i_3x@ctq0F#dPz4gPTK;Q4`vGV(FHx5nU^b^rmF=W3sxSy=FqzX4O@;Q`mU@Wt z{xChCU+-)Q3aV|pvuU9RAWmYh8HLv~m7Q)<8*Q^FY~X zQlfGnDg}swidMN64d|OiXGQxJU-oN!RI8~xY+UG|F{CqsQ|j?ks??Wi-1ZLg$53V3 zg@y95`CreUIHA36s#wa`0oi-1-i=qK5Zd~Jl+*d}%#d7_#VltVf^44`$Z}xw0!cCw zA=%3ch^jye$@ZlooaX(Ap5QeVURf$Il>WI#unbKF3FjZ2p+otPN@u;}^|QqR_w@R! zD(-Iq!)6Yqg@cDi{aNtb29p($+7}vlW=Yk%*~sIj>N09UprtQb2f$7vB7TV)D9242 zTQY*n1N=5-IkRjzF^>t-CT#V|QzPD(Y2;fZWDVKQqlul@X(%v#@k|wk+S^-4OE>iZ z%LHKN#zJh}(g}B`I^B&-!G`;V`ZDM+&BPxVJ{~>q-~I_+FKx3Hh_Ugs-1`{LqGwV( z*s&i;B+~Tv6?<2)DvdthRAHw#mo|uqdO1xzLOl!@PygmXmup8*8S%q`}Ou}WEBnEsRM&=43qJa$2b1xn$Q}Q0>InAk zi}A##w+~TcW&%<%@1F0#+tlFWm8PQ;%|PX2!Ts>@o&by)l_ec|OaJ?_fE&sR4FS-IjXK=2dLC15bl35lRQ zJiE2$&Uoa%rzczx?xdd`^_Kx*%t~9A;#BfkKEr>o#x#wE8;pEgT^+Y zYnk|(v4u&7^)K;8Btj~vb}1!6^(A?K zN7?VY{V(nT%Gz8?^3|LM4qNY*@2z9C3q3`6G$ymB0WoL{&fwZ!ibY5|*Ea<^#HI2N zu!|GRhJ352vGXwp(>up&(*Kcbm_4yeWK<)0?EmJ15A69lSn_SqJ_o%tVa`wUe_@p5 zYBh8$bmg|th_^$Y*Q)+Rm`HSvi>X+Wa1}WHX2Ft2iE78vz#zQZ``noT#MWE~n{0e_)Z6gA^QL5|Z5%+Bq&=4CR` zIps*gl^t;Yk=DST7I*?E>|nV8eVMH z%1HGdzk`v2%Zzv0II2qbY)^!%@BJw%RoeJ;h1qisetnT`XyiJ51v~sWqSq ztUz~5P7EW=uyNK#|gO{m0(Bht2*&#zW{vN5x>Q29IF8TKLEg^%D)k!XjiAs`F~I~#mZS@ z&E9Gu-Oq;uK&YF)Xudf%*xOGZr9l)&kB(+eK8rdKltfV=V(psd#rR)nvfPkhl931; zLR1m-)~X3pf+PU%@k1R0jQJHQyW!-K; zekDvJ_w5NhLQ1SLzBx_}jL9YdX7d)wHAOc1;Y;LhR!QH#eY4qo&5%9Sz*GQK^2$tnV*`%9#Wc z)qpxRWKAX=8WrBjDG!RYuh?Bwt6(!X~MN|z9Ttks$XSH|;A5DQ8=fi6PIDpzMU$ z{wm=9?PCxCUWt5@pp7gB|MMv+(Z8h z^KMQSZl8e8jJO@I(41i~avpd9X&}9Z6yPX->ovj2{1$K6sGcD@g{x z8=S=yg+E zz5C&O?tNv>sfGI!LQ@zB<7H(r?g#Tj|Kw&fW*+#S93NFbSBZdH=83N@T=h(MOGP9^ zd~g0qKOvuiCyV!2MXkEgJ^KY?3PS6jh{zLpv8p%!zubD2TlU0`wYlw*gmt?vU#_r&$ zS5qPzb@o=0OVtn4Hn}{xt_;UoLxW>rZpyrp@R#o)e7`8}OGRGI*<0b@_{=kZW{BL= z^D(6}T;u+WRM)XtoYPvhInDIs_XEs7>U6DqD!Ln=hrbZsAxsnr^ZniquLFR}S zKbk1}#z54Yt%s-z7o~$`S-O`Ref%NmR&s&L2^#~TIZ=;3mhtJSzMzF_$q*2w>_6+j z)QU|%V2e6pXTNVv7*kaE&^AHDb-?n_PUB7(@Zf_gE*}eBI$SER|M9fjA&K}XTP*9F z=>4kk=)JK3%AO3}grA=5eSqxSnqT}bf@WpbYPel+LmLY5o~aVexApmw25pibvsHuq z75)Ly%-N(qxXyqK-B~vbp6;)UF;j0EbtarsFHQS7a|9$$ zs(&(F3tOMC%Px30@*AkuVt5_<@BwoQ20B9MjxG43g~`8AVl#fg!~Q+S^nbncR#Gbq z!{QhdTgWv__X?vo6WuSs8NHh9)xy!@jcGq$bMs|O@Ndt9*<3qv_&WHZmHh#~r6vdm zFK{m_AQGU;`@B?U#tY8E-0IUwv{oLyN zg4Pn#p`dJ;e~~D`WNqR5QE`RI9R%KGgg>&q^0V~e;J)dxn0?=pF09aE( zmmyEkO2xEDT!TU#v$yh-KwGHH%T6_*{zWuHvPY>?>3;o}xC2kTyor_pGVOm=zN*3k z!OlDO3C>tROgfF3fSx&XYk4>d?`wf=e6nFI?W0a9VrkJZkvL8gi$JaMiW+JBbo+#7 zl!>WjS&F^p<9Fk+RbZl==ChQ^RU_ZA@ax+G(jf)ID~ysf1R}v~Z+JT<=?BdiS?UHZ zj3v1qz9a{YCMk~3ZwCe~siG?5vs6P7)e8OLG~V5K_qZ%(_s&j$LRxAFGU)Bgm?%rG7p{3;h;|HTl(ESnBt z^%4A8L8&G~N}xp9^-^XRF+KY@a}om+^vIEZfY@wz(18DVD77SUBJ2Ev(9h-v8d2`! zyl)9+mw}=kJKM8U6Dtm(?ZEcwg!D{#rX=oZ0A#8VJ~@1?i24ZxA-~(5+a#V2chQ9n zapcaqY@0|OZxn#~*_UOf%0zDQ;^TC(`OmwNs{|)ab6nO6rf1=+_ky3R$90ESzX0_UI{iS zS#p(T5pFJvL8P_d=H(WESR_=r8gNoM@dJ5*t)EcDy~Io=T0RWB7;$|w#~m)#8b}bb z7)BGUR)1fu|Gx^g5PFaTIy&h|qZCFHN?%FLY^8FF-_nXK(45gGQ`B|aux#ZWnNntW zhsbDG{dLisZaR#yof(F@?Ppo^Qp8vLIP)ANvQJ|8#L}M0;Xn;q!U|?M^2$v-%?)krY%X^`Yh-Uu5Jy9eU&zOPDj_ zmBd;D-c(FMFOwZPVoZ|HmbkcwWq`O_cdIwvorHq(FKJ#X`+Z5>t%tz*1+6H;&~gO^ zzs&y!sA!~*%Dppw&a0g2vV71^Fl%=4AN%q%YkEROp?_KsdfprYADs+|frQJEnP$ca zcv`(~sDwd9v9Z7QBWsF_#nSy($H?kf_Eb>8cyE8}j-!jIA1g6dOxT24dhO zOvJ`oW-WT;b+8Xx6?+i-clM9k8m0U#paKqWP>@WhkVN*5=ojZh&NA74h+!KhdxDk5 zcGF?9H7ILIOE2~i8!jnuoIZTdAB3UgpXca_S(?H=CBrDvbn-Bzi|-L!xREG2ja-r{5PDjzmA>%RUWiFW# zf(9dvh4FBEcb#CK{4ycSy^a$j2I{9YgGL~lgzRE)Q&YEuh=_5LK@Uw&?tuJUY1!S9 zarwk`82=U!UShjToK{XtPawd)8sWN+*LzL$8hgs)W#3K{a$cXb@<&C-M03zpwT}L$ z9~Y>W;+ffN^gmYYx3T#=wX8)bDAciQQA_H*OGRBcWwc3B1&Z?gxc#bv4xoLbLB~&i**V<|%dki8^ZIIT7C-*IHxP#yR?8t$(S>kl`4Q61B(ssIK$Xc`FM7pyyLv*A{6sk`tb=Ga1Yd|~gbl)rfG3WSMf1Y>apTB1aRWybUPRhDnF zeRd_aCsPoe2cq46T4HL-}u_3tDGU;M?y*9}pf1@;*XzPPAOm6~CX1UF!B z3DcI+PSqB3F9=}i0K2KQepH3qD!idJrCg1 zrYFX(|EPbbq7V~3u4m!6Fj6VdaaC4_C5K*T3VB>G>4?v)7Cp<*83sHo^E}`*WGj@% zMhhDD+>yrH#;}MWpatvLtUh~8qV1yOC!_@e0zpm2*?B(BGXX4J?q4D<4x^Pkap4RU1;ej{X zyH*=+BqV_6?x;_>P@GCa4rDoaMhVJ?BOV$6dax{raZx9Di>UkqByfb?hV$O=4zHqI zK#4UIGV$@P={85sf)8k$Ci^PlLfK*1eaKKXIgml6YR#gR=Yr%626ojYtH zO_G3F9mI_NeUT@7OLAu7k*!q_w;j6Ses~(?R7wHO%h=;?43{g~*pnITWA)j;l zHsSb$ zZGmZ)o{dYi;oZ*-G66;p6LAQQ9>V^*$ln!IC)=C<1VisFohdeWYzQsC|=tzy|M>>R8>99i-1{aT?Bqtj9Qk4otpu@1o5 zvCe?zN|-v9HQ@A(SLsr=PGLaLHcq)N%tWu}%=~d-GJ)Av;)y__prru!jWQI@u`5>H zJk2sXghgT$f{@aM1Bi28*0D6P8xTR#$Aft3QGKQ^yc# zei#S-5MHfYkC%H(ICCVUD?@?#9{P`EPAI4nhwIBc4Fi#J{p~zL7OE1Mk9A6jiV+@s z;zD-Pvf7sHS(@$RFJMEy(A93z2@(SH=-^*n0LYTvmY)52nXXK&8YHo}bFt|E*zSkE zfe02sc{aB+?JViTUAkt!w$cua-7HMbruxXrF8rv9+O5$=w&&X0wSv49tKxfhss7O5 zk1em;N0!D~AdndTY6v%e1pp$$?AVMXA@&} znAH}yeW4XUwyKCQnFxSC05ug+d$oiCO2IOG`fEpt;>5uv;*{cue5}#5G5Zo(^s~t- zi$`rfHg0ea+OA*^h6beT>%3I_xr%~JDmNnoLsF9 zmjqvGF+oRu6VoCuz^|*cn#|m9!s!-Swrv(26oz+NLkDj=x(dXCKCgNw^jx0>yob-+ zmdG4Yb`9uLPM7Z`I`on_8ZRgwPhMy8JbdxD@qn)_=ovw0yLBTF=h^Tb9aO6y-T%CH zM5rHRr4;;YwY*GiKpeZoL6=PU5onoMLIRxL7q8T3CQMn8To!lNpex3VZf=Q1bym4` zQ2pn0nF_d+$lD3_%W}=`@08@}hd{DO%Ll9`y$@W--LPD4$v$tHeofU2Uc68{4&73S zDs@CNGIqX9duDpT%OQVo2e6emyW1g2YBw{!ry}hsd{XPv?olf}OtAHn_a4B{m9Bwp z8kXD!0?A-rbr}I@SW2cLvtUi5UWDJ;a_!45k8dx3S+aK;cVnDx1>0@ht`y2@f6~bK z9d%gc`H3qjl*YJEC%o=GpUz+okmKI(HnJdau}dfKelfr3>k6Vg1`Q++l^1*YI0x62 z({!|ih6Dt87*dZjTns@-wH-X@O+bz~UK-!W!NI3?2N%3yfH%?>>B(eN z5H>TST=q98z{@Xdwr!KacFZND3AwvL7lq%3GPj7}+;x$e6remF5zYWT&-l`HgLZ-0 zEhh>#Z*b5P4v2UzznM(P1QV*v22+4gl#Ez^^#hUkyv_x0mHbGe--m4>#)sgeq6DB2<}>>B{_R4LCLlxAR7sMp?Op-SJhl)QY6ZGsTH#6kCAl zTWDzI!dmoS)tXsuDu00u0Hchd`Rs2dD#dYa-2$Bi*goU@eY6y!@)jk50lN6J>z$8< zF_RNp#vVom2QjdM>7q(Rx$DGlrM_JW=YzWJ_2Gt-0u{Iy4PjXtpU{338`Bsu$j)w% zay_2++DWrww!WaAamgqR47P3CR!Mo$6%&;$IcP$RO%N0svFQxsQNz?bBmyT+$nO;y*x@B)djCfFUV=u?HFuB;&(oB3}ngU7g zJC+Z1P+T~TP4!FrX9s!HY>fJ?jFx}Qa0Xd}n|&iFE68erN1(31LJ~TxEN3|OY5IQZ z<^R^F>%g`iXUBe^|F#T^x~>H)`=pzO83CD6*200^gR?F zOOnT``e(fJowB~2b)oi4Zt)a^d{506F{&AASQx!b9G%Uklo*3a}LGFP(I?w?b2;J@T!j;;q zz0;$8_~?+vAi9I9up7`gyuuwaJzqLt4ro`HxKNw993-j(FqAoCQwR0H*C_egvjnmr z#dP^N8^sy)Gi{hO`K8cbsUPw{)u}E>d_UWT3)-i4M5ITHi9q;GHtw} zBT7x~&R%@QGS#d3%RK3vg#32P(zZ8=3`R9(+ehZ)1qH|=DX<7(6QjnaEfc8&?5#?V zPb%!wh>K-Zj^XtjBX}^n`?D?W0G-A_EoZZnwUQ=zZp1b1&c~~?`BxOp)onm37|vuy zk~A!|6!C^~nIMoeB)PraAIF6=sZe97<1ftXZU7J1vle&wS7IvIPvSKD1<5tfp!G{6}|r)Ic7IjLI5TY^o_?D)``-iI6I5 z{9ReqH5)maX5u(I3JUj|TmlVh&F$nb#CHv&S+`hI5T`hgQe6c}-MUW2?G zK99;BtD7VZ^jw^yg&Tfx1Q>=hSE8LR*u(G}I0LF$>k>;ILxd?2q#WD@Qed4>n~G|d z+uV!GCEi|aRkAHP$4e;G0ytZ>g>AyD?*c_Sd4cA07Oo8*aQ(WnGLQLwL(HvrwSzHLmM8J8vkJP!=gibt{qFrk(E;4~NMUw12`pBs77EHz! zzhA(^BOZ+-Kt>=1?;!U$+j5xI+`C;yT#xgLOypOdBF&P~Vi#f!R%9kaRHaN1e=xYqB9G47I4#{b^I_d9gEM0Hlp8K`}b+ z2<$Dq?-E3I2r7nbHpMr{K+9tYXjaF=P`nRY%HBixy;L0;xPDNJTb+{qAl=lP)kXJQ z@}77<;FDb8gP}PE);sY>DK%Y}!(=hP<%hnOp9Ie1421Xokx~@?r=^QTa`5^85?Tzb z%KqQd+@(}^X-f4qdQ^8E03W|{+$0=jtJRQTL>qHl6DWBvyU?rx`^jaaVG8|fF7_)Y zDE7{%At%WO4}=BinTR}ZFn>WfZtoe@I6U%+V{4Wz1qhsh6oM9Yl?LowyixApAQ*nOD6n<~Wav=x^Jm-l!fIP-nzF~X1uMTYBd{XcXG*n26q zn_YKXK8}>R|40$P$fLK}>h$@P3+)R12$*~|%~EcE2`Yli{md}KJrf9<2r@A8QJ5~y z@yT)L9_3W15^>}e+5$3p3FbTWGWqArUBNn>VfxbEP7O9!G)_)+U8Pkn?FIFA0;yBU zNb~P5Kn2xE=wU|i|KsrJA4X8nA7lk9b)UlZb3^j~`^M9So8@`~-RdZOT-4(~&W0ZM zhoeL~skY803%C7Nu6XchGglT!T`8?;gV%x*K?&Pu8p9O8K~Aq8n?Sl6-?BL0?#Z(b zlVLSC#^dx44q%~`&OL_NDpahj?QK~^qZ1FCq zsTNw4p)2z)j#lL%5}7o$bL6V;~`(W(RZ25t0?3`3n2*6y`~b~LyULH5OXerioa zh+C+{AU#Wn^T^LtY{YR+!-izmllEA+DK3Ew{-u zlW8jMRJ<_JaIyTz7|)j~HgPxnVPuzb@FB~*YK-)i@r)Fz*APqh{zc^my95c%+&x5*pI7{38$O-i-sChs z$q*uW<}f(=@jnzuKBGnppo~!lD9Y4_jw<0^UE&T=NdZga`*hx@ZY3uXS5!RgR>OY> zoN^JvGxd=nza^)hr6|?LpN+-335HC9H8qS`^b1PA?L+3kZIF8FxP97SyCr-Xwh&km zRV#E`>mUXkV_yqbEvK=_yU&~NFNlMIFUJKajD85`#o|%Gw_QIyGmXdXq{hU8k>hgg zyp4NNKOv#ik{j|!?BCN&t}|yvzMo*k;9CWklCar}sh;g9@O2<3SQK?ATI`1_1@pLw zqn7*5w@z6?RGxr>)qMSCW}!ia=BH^VkE74xmR0V!L!QRR*wMCwC^exFqj73#{+QyM zVSRPfe{|UHXWT2#sa-?>WM!S`XA~J^r?n2Q@b=hd!mIWFN<9%&@2j>i8K_9*e{M)5WwP1@0bht1VWD1(fLE zb*-e56TC%E7~~af(k9wtW~}82Za&6zxOHqO@TX8{2jqe@?JYmwqeo`BlJ%_=#=P;p zB{^Bu*ta$~6y8sEX*+C_!=`^b)hcpnem7GwmT5ifuLi-%%-=Ct)rR%xPj-}AU(W^T zM6N)0{f#o5PLV(7G(K-vV9=lsv=b9v0VjuMoWzClX7p=7Fz-DHmB3xw??d>4(%P9w zJmCNuk}lvQ7vRsk2n7de^s<^4T6(T_#41`xS1R(?hpcz<)})By*yO?Y^WnLz{A(Qz(-!g@8dd{06}8Xv^MfZ``v zjYnL9cUjj&hRWQ>c&c*7E)!o=ErK!p-D@%)eKkM5B;#;Dyc}$g)`?ZiM=mQo*IlwW zC%ZWEOc4&i_hIqplW{F~yL)}2cJa+dhd#T*!@tz-!*FP5D52J(bQ>I|dO)HdMT7V1 zr<=9^*>&5<&E&Gsr1a&IfNEKuwEKVr=GbxNjrm0M=GZrk*0@YEX^9orN&)n_vW5Z> z7ss2l&MoN*1>&I)dB=OqsZggukmZ?9Qh-|l92>PU^B~<@4;NH{LU|Xt)yJA(boSQe&nH!v@i9`)cEDv_ zDmaf>I=K=r!01{U*2-1pUEDRiY^vV&Og-6iY&xR~bYlVs^t0yLVi3gm^z)Pn`%TuU zfp>@duJ#Rk3UP!4?L?H^08Zl?%)R*@-r@#LwC&ozO2UqKM|nOYnb_xp1I~5rJ;CrZ zwgp{vP{O7Q!@>yW4Krq>FUFqN^ z?Vhd|%xHnFzR5{>G)$3Fjx$&anqi%wu}~h!a|$KwYQE zFloN%pqz;~(-F{ z#MGuL#$h5c_8nLm&ZzhmSCXsM>_bMkNWflW`jFv2g`tnbWY0gFs;H)pN}5M&Aq=%4 z$W3TB?CzYIV4|ZQ9TCdl`6N5LuMFaoP2wg3!lDhT#gq1P6}b8-i9sb7wh1g#`D9m+ z)pS8n^tD&xztJ4e4w6H5)g{k%;R8C2!1LB@7W6Ylu%xaj0BqpyORQQLOQcG_9Cc-G zQ+;v8Fh)$HGljs7J}hU>m&QEZy}(bHTvn+xoR1wxlW7p= zHvCleOowhbS^y3Y6vXLijrHSBu0AFmKGtLqH>X|Is02Yeuba*{iCOS;@X{w%;O%gQ@zYk2}` zTtrhy1o4iL|DwG4I$yqm8f#GzwoA|PPTB(>5($yND7UA~uFg%+Fh=7LNB?Xry+W1z zgsYMmiMHF6Un~)_k)lsL^<4CTTXf8RQnC-N^#-nW=woJ!EfT@5Q4rxWm^&3PQ3kioA>HUWQuOy5vR`&4+i-DLQXQ z(JFVb_ynsO{_Y>6L$tjT>RJ|2rHv-r@D0Pc$2GX%`rlL35h2}N2Uk~?Tt}#;KdtnJ zDx2!9PGmzTob z>+GmRogvOu8`3t>Ac!s?0Fl>==W2dz{kb?l0<92|VBEOxRsf?*V3GHRxaee9E4A@* z6Si_!RpQuA)>xA$i|}m;iHBIEY^o+c*yZU6LG6Wqx|yB z*4QDCV}wkWfWk*Pv6SkXdTB^UkX5RCArIef8=p-= z*u9ld0TXPNm}W{xpte2jgE@K*eHhPbma4Z~#Ynf7L117NIvJ_kekg8-xK!fB#7eJd z%#H@-x-QNy`uTsX$}E;(S6s!Zvl$e~ID~&x`o5{od!XvE=DiEmuHFL71&x>`wVSTq z8n$5etP$u1nIp7p1*-#LMulju_2d;9O$u@T+Wka*(IS&^yX8Z{#%l3F=|ElEk$}qf zHpXMxv=m_wmMwa!*I0gkL^2w1z6B8TlyIW?M!~xV56MAF$2c&fNX><%I@W?Z6(rcmM%sxGMvX71<^D){;V zJoveFE<6$6Dvpz28QMfw8K5SrJ#iv)r9tjAZd7KHMlz~!Qbz8tMtU}G{dK1z(~U^W z%piNmb+b}pM6()V;x#W4-_d1 zQz!XVMM^S(@Z04noFadE7o*(uwzaPY+;-hHj1e3FC17ObnR7VNE>h~w$<%vQyPK0| z7WGz!-5u6XhZ#Km5vsR3l(=d$A^ickawO0<->0tr6BiYGe*1_1fu+gD;X;rFrdzqk zf*!|oz0G&%MVYGts@r-47g$vru&0hjgv2k#HT<+IcLMCD)fysDBXb8Jl zJNO<@46k<5C-Q9f`+Xv%Z++VC>2KWqLrQ;fb;)|!N5_i2K66a%Ll?telTf4_3#6By z;Ss25*T1TFPpm9Ef)mg}_3Qcn@h*5lw(I(QqZS5@B|Y|TbM*i|W`wQwgyF%cGf1vd zps>XJ^4F;OZGqn=d7--#ROAkEhdlI}2hRXzIBF3Q{b@*?LKhm-&b3MTVZj0G*4{p& zUM@#!cUM~UkgF=MI{YXDi5iJpSzOLea-GDxY|8?20!nG0g96fZ=qsr`1=wWJR^jg_ z$7B*jBoS^JA3~0Q%m>;rF+qE(qF<9&WiX2@2M}MgxN+VHgH?aporfbt{NBq{+~ajk z_WxfZj)w<4LN8{ZD2_(9A^*x5Gjx7J6pfCU#J@xY(_&Fb_pu7AetR|qm9?Vz26Rx` z5}&Sm@Qo09tAwoQt_~N@ zOSxH3y*?OQ(n+^%JR~u6+)zYt`qDi1Lj_8CKQHN;l&M^&0fN5|D>}jCXP=`Ga+H(_ zyD6HT3q(hiuEk3UntV|g7l35J767pt=-dGfwon;4=?Lfh=Wh^3h2IA;f)G54pm*u` zFSbtV*#TmtoZj?Jpm|x%@tP=4C0$gn{eA;yI*DI2sp)QN>qPOLen<@~`kqRZXBy4* z{RF#HG_@n9Ogvyu!s9wArys+@Fa|b=1^tynl+dsldMZg9Gx`!y)y=69OGn~tR{+6r z7JttSu-AU!rz()1;FxErS4d@{`SvHj9#38D`LURz<&(<9E6APd0iE+HCq~ukw{QD( zPrx-H(LJeK`}hck-^%KFT3nb2DVa^2Ciy75Tu5z37#2GJRJb&ISq{A`U zLxQ9vJDGoZR{&dw-01!t3&o@i2M$n)OfS3fV6gTdfKm-)-lzb52-FQ!t?WMsJ`3)(-N?_nkQr7hOA{etaDoP0=LN+U0z%jEMOB+pKb{Qo;j53lvoui}N zXe3QZe(2S#a&mnRur1G=3#F_|;OlNm2aCD&%&qa4vV)yT4lJ*F7K^Gk89G4kx|z}~ z1zmEidF4+9gXeig+7V6o<2Po_B{7Gu2?6Q+s$rJWFVo_QNWbQD((c+=2J}O0l z!v{SQa*{>>=;6PK-ixo+OQ>{4ot74Y`VKgzs8U`R&W}p?^dkdQC)w)5!Zm9y*w?ZN z_RUwV_m3!@X_@nBdIWJ8=(9J10`+gAlxA=62le#8jyiM#@gWEX?+EOt!`D=N`p-uZ zW;-d9|F%ZgV{mHmup734&V=5N6+{{1)oC#EZ>SfknzMFb^%YiLR>V+?zW9df=-U_( z6f9*yE*;MC0(c0>$(bREu3sJA&aZ#)K!nz&deD{aNu(8%=Lr!>oxvA(bcaZ)6TbkQ zB&X2QB3RF@v-_5S-6bFn!Y;sgXwO+%N}tdT6n(acMeeX}Sl=_;-1WJuJ_T*L`vxeW zP#^30ZVj({U6|Aso*XXL!)f&EO4=aS5M#KfSIC*id{Pyhvw+?Xykj;2gXf}P|9|O8 zgua{^4qU`iy6BJe<~FgOYq0Toy<;-}0n8a3fpcqIS{h1Oq-buJsM)T`7J-fh--!sj z{*PZFC%5Y_DEJ;bqH7+LW}o*|6~!M>Mw1Mr$Xr~k%m~ktMwfD7uppoaMV8$mm9!i} zD=8jqWHHpW8~Ke^@4EZD`^V+tV@f*qvQjf#dum0>!lYfvNKdr4=1*$-c+6c&_LuBX zM?Ob7#zWx~tyZ{@qK5hBI*|Blcr`Sn7}NPB$!ZfanX}*Uo5lDjpoX%71wPam&%0L$dMz&I_~rGbK^d$rN|CRc=VX(JCvg%=XrI z*7AGT7Dn4y#xs?`p#-k1`HrUN?wc@tEVPl*vWx-9X)FForN~)W1t_zAJ^ZP+$YAg} zCWIHbbB7Y~_=c(yzC{V7#W6LTRwtTov$uxKus@%WVoC`5w;uGsp3-Q-+5Z3S-v5qG3;D3)pBH)m*LCap+weH0lZ#A!7<}( z^@h#+xL?8rnT}041+Q4G{Y&{HIaPYe)%qd|jc_zBSsCzyF{EX)m-G;;v`4#$8~Qc7 zAo27G>U!eu>C!qn?4F&I(!LPkS_GF8PXW|Zw86bSL$UE{`F6+)s7LBB?BVC#Uhw5@y7h<0fZ0NiU0#PnZZYJq)zA)GQJdVMw zRbUylwSdg?TN1BeU)1n^5jz&DTeINY7ta+BV+LAXbNL|n%PtWYbE#Mj5JLPmrEA`c zzK@6?s|cNiJb!I6v;!XwOc1&01{uYEf$=T#;c_98X9EYRBDl4$h`!qg&dA=Xd5-Qy zpicb+yu_jw16lT&kM&&r??W8p+S8B`iLg@0PH%SXi``KA;W}|V z61>JelN!~fk5iT^TbZu%=-_yLGGv685!U}upjp#8&^icv0&#a9MAsq5%2??qK|F<^?)RGM$3OG=_SZyi=nGfH7|8DbPyFu@j{ zw;0Ul7sAhYsjYqxs}CU+a~2x>Vilg-olH+Nbc}m}q|J&0%5tY^YIWqj;nbYpPuMX1 zzJCBzwBWY*@@#$2Y{(38e|__Mw6Yj2Asu^zToV={GxV~C?7*=qy@f7Cyjq7OeWdcO z(~YWNe%)s*+X}&COZQ4NLFfdQ)gI-c!}*1xAQc@+4NcrgTvPZ;SGHvd7R&PhxmH>( zQcar^ev#EyN8F(Brhz)jEoz@kqbI21$sf&NnfuH(bd;OzBV^(rkEbDGRdAGB4K#{M zL8qwy@G#aEn?h zAIuDk2&x$ofMDD1Hw}WNYqCZNSi>1pP2A{Y#D-XwZOC@~9G^IE|ec zyQq;Ebv$zQXUb8~8v|7X_C{Q2!(7=kX~cWP49m5WHN8HwU_`PG*-hj!xEkuY;kbMA zjE*0V#E^(;xEr8{0mZ6IFXPb)Kjw+=i1mIh*+I$#q8k1{YYkLqdsU(&ER)(7 z#>VtBj)Pgt3tVqJs-zA(E_QDPe-3(>RMUk_C>T_M(aYUwej;`Liob!I|6zlEmRv&m zL=4MHAu%2lo0j!T^>yL491cH2m2Gr8vWt`N)J9Xlvxd)nHJ*uJQevWn5Qt>_&>5k3 zvxDr-#~@j`k@P*Vc~nJ?JN9szCHZwuH{uhamPMo;aRezjDdPm<}M zLaei6eoHeH*9~6X7Ya?=DKc*pi%e=KR`r7s%J+Zw)tGCgD$Yb)paaErzXFnvrJKAo z;r&QX#s*yc+P?37DlVf&wG1j7+u?ezlG$+sE2eel1*s|j(W61VjQAWQxl_$9Qc&GD z&ScuU7kHYDN7?YPIp%P7^&NxkXCmy!u+Wa+2b)AD9A+2DWMAdbFuvg@bbmC^K zf49h-^r9xItW*rL*r-Hu8_lQ!7P9C9dfd2T?j#h=KWXWvRj{qU+Y1)sL6$DY$SHLh z^e6c6GI@%0R-bs)W_f%`$ce1?=F8h(PmT*G%Je|NN|Mlxx*zk}>TdJy3hHiZFoVrP zq02MYV(oVJJ?`R19WHr9&Ug+x!A6XX-2a%V+1y-R6x?WCIEL@;0Vdo8y*HS2H2@O8 z+J>D?^&i1VIty$~&Ru^B_9|;yz(L5Lq}@2c!x_S3tjzk}CyTryp(w|KWBzZ}$?KIX zN%W0KcwvpNoFr6dM(ix_Xt&MRJ@a1t!p+RYO*=R5Gf!fjaL}kk*#MD=B@rDR{*irb zR#t#`i9?NIdY#G7kaD*$iP49*KF@24gRQ_BI@pfmb0IHi=W9~m!!7)(95E({fW4zI z>Jlm@;*UoPjLTHhG&%cXc42#9GJ*1K8HG@gHzD~M*D+3;w#A~bt7F1jb?&11bq@%z zOI1=-XvnLP??@NL(@^_~9b#y_`D-j_Y|V|sIvtY54gNa{!PLoQZAb%(PW)ei52#_57BP?I77;= zB}86G}|9{}{>qd@&j3_T&0M7bqg{sXRx@jhK8RYApu~a{c}T zpQ7aP>~lf`A0)pMSin0rmp`48jS4%iP>`tb0`_vUkWOJD^I zx)|U6Fgma5#{I^QvQk7f0}M5~>oNEhhs?;mS zh@+00+O+~UD<`*vR`E>kV4);GtT_O4LO){j(LYR*!6Wl{JP3qwH!iK&zh+B+IeD%} z9usPKi`UcaTs?6cVB%%Co->O_qj>fazjY}6)Sv?Vv;h~=h6o}@>%~HsvidM!Y10;ko@DkvCpWj7#zg59G zUO#moQ2Xym3iMYKp)I3#V)#+@_%o@-eD8;L!6r7Cki&?&VJ?i)CFO+WR;B z)FMy=0G*osI}V)6sk+aSAwwxoyB94kED;lP0k}VzuCWyVFJ#Fq$!Z5JdqQ;(4GTY> zUsHBfF?(e}EwY}CR5293jS<^=hA@+b3^p{*YnQF_fxJO1F7;j%=43lV$vg_T!ViDZ z7%@#6+$W}$M5_ByB;lw$Qo@>sn@8zH6A!V!{TdF&>HOt+66$o%%S27)ZQWv;De4Rt z%*s={)nm9Z&1FW~rfnBB8tsuMdHZ~^(o&6+QTrfw zJF}hgA;{vGexs#ww?wT+-+c=eI_D;ZRDwFE2M_6Yy48OrmUrKaW8JJ@7rqtA$M;Jf zDJdVxpa#H~Cz}vQXH+uKMCjR`V2BbbfD`DtYp2wD&%0^=VT#qVdmJvPjA0GQ*k#02 zp8Y6$k6BJpcp3QjPNf~gkV9OtE~y{c9?A5zcO*D zclLde=1g-=``D(E5>Q4Yz)2UaOS#czDw`k@zY6H4{jfbzp@$}FLpn|*<@;D|VWx$= z;DOtNnttMCzUU(X5O$X`5nc}tNfN6gKvcw78qoS2B8RbPIl3=*`eu4-MEmBp7HbL`LSL}m&~MNt}t?xfv^z(X)r;m z+_0HyBZ-|d?(R)_kpoa(3ZoiTih4*L^s7x_4{sOb{+9Lz#6fsjF|_y@#^ zmqCOi+%D*Tz`rp$oQrD?d-*Z7@9A?t7>h?xa0n4qxPo)< zc@`BY^|$BvSg5fq5uMy<>c5MIig{c31)P^Lz${9MTM0NG?l#?zZ$tRFE|VD*48}=W zEi0!vtrE_j=yI?E`qaVhnL!nxu>aiMuUux9G*Wp%@<}ewj@*SF5s?xsjj+m>X!6-1 zqE$}f@k-XAH44#j!o;cp&g}cp)=!71$ zkko5|V%{7)!ntkARQiIZ`&vWsLu*q-c>3 zPR$xCp$?RDZBmj8FdbsqZk5drs>{u~`?)Csf&{@!x0%<72?tR~@1fP981$FfPHe+h zO+#I<@TzbECn<(tcH%ZXl~8beaE6=zkY+YU?jA>eoNy%z2GP=jEmZ+f=@!zdQNW5QRz#klEN#0F)U<%4c2`Gk~mz6HxY zTfncpAJ~v97Szp z;L}&!MTwkNmA^;rbu5$`w$HFe>1Uf-v3)VG)*;_7vL=evgLk&jt}G z$&eda8r~6j=j|+-;MhKGB>f)R$BB1$Mfk%mj~||VCMci%QG4~6J``R*TfZ!dRHM!R zW)fRe zpd||Dw1m3Je?2$~FRR1@$MC1Vm+&M#s+W;0M|cv7_+U1BDYn<}?k!&YH5(Digitbp zVbENB99#T?P6TiuICwP;Ot$7hp|T_}Yi=)}6{xil-s6f}p{HvDvU^rJkrBKvyyvtq zQ!Y19<|t7q9ep8ylYo&w@(w2_X0uEf&c!EkND69I84{!AoAvV)iYSw4sB=HBWA@!M z@(GapFZo}70DT!l_wZ&=^|CqaVWuW!VD-Z}Q$2@Y@DbPC20w&oI>Ecj|LY{Ifif8b z7j&TW@zD^HqQ_v6HCA?MA6+rlrj0>A%0X%1q5WB&=DeD6JB-mK320MuVX<@We`R^a z<<}zu$?pd`&mq}M!hv*cAU*uS=<;UEE&0KjOj`c6le&r427%4;EMi{iu`FoNtsq zUwphE)B$gwE1QUp;Ww>4l6#4=cKp`E_R4$&7jC*Q5;oEFNm3qv)NCK~9t3G`Eix)` z%_bqql@;ao<$1|3E>=YlEzD}v*#E&;Owgcyy63}Ak3Lnk?Mhkq*I4)KPXp3^9?XO2 z)AJ>1K72<#B%$zU`ILvjUms4@HsQl*Et+;=aaV|2MiBbUs9{(_q0de2>RC3@07Wb9 zw<&xIWVvNezNo&bZelZZak1DH8*4Wlo%4~0(5f&GxBt%H=K&N-l z)O>JExRa1*p)_dv>$Dz?ZZkfErD;_Ej2_T>nW-s?IQb5T3*X4ltvpm{UzefiK5v|33nz>P`3A!znuifJjm1X4msjHO%7djHq! zFBH60fo1hmAZ)zn^=}*=<&*yXLDwmfmSmVFj#|e2AKr}cD}f!-0^6i_&*RlSj#T@E zxP!S60O58A+!^UN_T;gKtC|h$(!sTA#Dn)so8K06Bgiv~KCEz{gM(RjuIoz^4 zzwAZS=w&5{jHv%-1`R`A_h0c~_#^GIGq&f5=W?<)OTL^?Fsy79}&gz8M7 z`lyt+%=qfK`7u~ukQvVyWdH5*wHq@kn_@tNq6wuOnHS>T&s?-j?lp^I)|;rrIlytQ zsClZnac7mnWEWICg%h~(C|Xn#j>O$5+k^j3do;d#*d-JZ1Jy$C!ajd_F3p-rXTO$Y zbPbko%4Bt-KLBIaGeI8>rU)K~T87zF#i1#()s?jn4o`EfWscLr#PJD`mWt*svkON5 z4ab?!rmSbWFWke4Aal!-5J$ugc>)>y=)hF%??rt$^)g~|v#t9({AxZPGEGiu?&fx9>^*wxEd!xx z2$f{sLV|G<^q$eS(u~s}wqdl|kTsVz9eAe0HPC1k&d<$R`t*#vk=D8xqTjV#OO~!{ zTeP@w^BmT?&8t1*ZNwq%fT_SlI~G8V$wkQbi4xsyl-*2;J9+IAsF$9AP=mc!}9}D!`mAGR#_pCEDDlydp%#EyS3!B$hBp z`FOJ5R!1Tm&%@XRb)^#Vddd_OlS-NJe7$?*BQ(;&Z+yHP)uFNo1u+8FV{JWQTK#B?DaDutF+e6dV(5dmwbox$&bm$Rpu#eE$I=` zqkb5a!!VkLUt|7VoYz2TF1)8__u}s=1qyK!u8t^r1*0s?mm`4 z2kFZO#YpKLI4(Pa`N$H|1^v(j;;&C+yaqYeS3&ZN>REN!HNi}r{d!)swuj%!)h(?oL=Uf zc0<`!OaHQnURaUU5b7e#Xq)v7BQ3k;7_Q`F5ef-7 z)tfF%)r!j4Xj0;-x-(Wy$|(*+tS>+Pz1gw$mW91OZw zi0BqgI8q^pxF04vSv9qloCy1;a{le>o8)+VtRl~yG^wL0R8uY?{W~MjTeqYbq8lyF zWHHat_-8N-);j}1b_Su_<= zMWh^J8~`E^%}`jZ$Ew~kW*X%8%c=Ei#dkUB!545x8Iq|tiC;BoYhi3ULu4VcOCPLu z&Y%x4sxKL5sYZ-$_4ix4k)%G%c)S-7*AwZvR)G#FMH32iv6ey|?!28o)b5L)IpeJ= z`hm@TJlIu~(TA4n5evnB!O}+@fK0xo=5AVC^S%I$>frxDI6SL5_al0VM2qnHIW&KW zgJ_2Ie?&oKEEr|f7048?zo2uzV1b^XFJ#y=rS3!zCK<6882k6Acl88*xgZ!pu7>*+?VyjcRFb&}oR>U1 zaR_y?rcFb?m^-#u+|j&^#i5#J;W-m-7=haoUxVw!UhLW`^#Nzp^5mo=B1%92s@wOCF3(fZ&k$BjDcJi4wXfymGpAxi`IxsJfMt;G2F1^tWXrf zZG5e3uh*xO988V*D`Vf2RXcc(tWOSwggi61O7DW{{JY@RJVRX)5*F3qnxWJgaOjxA zLO?P)8_*A=h5u8MK$~`(_C@a-I1S;GKUc$=VQFjWQm7`1vAy^g6hUyX==sgsAtW+e zGXItpLv92f=@rv4y>wuRjHfp^IT+_sxl{k7`u9((j_3E6QT#K8HN6G-)b5g*9S>6Nk@)fr z_bA2nVVO5P<1suyeFC&IXivv$|CM+7TnTT)b)s2nC1+;n*Xw~*7PPjbo*7%H{briE zs_=1%7bbo$ZK3BM(s#c-F83b{tdp&US6@r@decFM=b+`aHstSPPW-pSjN98TMeq*L ztYY%3bf4XXz^rn9zr^n~GW?GH_SC5nd-Y6#U+bn(BcO6H<9VH;5uR~MN@_I;H)H=s zod!c%jnWf?l%nn?Mt55$onXl+-DTY+AEvLL>wH;^CLq<+d>BTfWM>gZ6!GFgP!Mjt z(H{B)m_vY33O6+L;`E6A)Fi@IxK6W@HSv>-tM$yaJmFHp}6-TCQQtgQtrct&hQX70WiO= z*#&?e@<{zwpT9CXaC{_5{2*0$9$c=$o|&57iIgfU9y^R2QZvSlc?#a&M++o)=RQkH zq~mPOl^e#oViuBIjJ8xv!(}WTJD|gwr5|e?p9A=78(ol}^!7}mmW)_vnV8`1WjT9q zf4r{0lk=Uz!lmOWB+a8o^LYurObKyxnhR>J`ffyf(X>-%EH_>e}Ke&(uR zlI3P;{AUu_jHAL_E;tTR91u#-A(>V0yM~;Vt?RZ}hhAWE7SY7svjikkZ2S+@NgV5p zt~RSesv6xjGp_|czI5Lvt{DEq1w|S&?)3Y}BAspSiVL-+{q#08`FC_iFEV~Gdft+N zbQecY#^U@3q;z6Z(weVZw5sj6D`ZD`Aor#APyUS$<5HuG>Y`9hgl(!?TP2KLq$-V=A`FOE0EoUwF$#;y&}=4R;hq zlb?cTw7fzPrzyN=&rqqKV6{FIqCeUzA4$t>ZsA`vn_y2cL}%Cc{VpG+1&CS=^P{35 z0D~9Z@8DM+P?eUSw9lx~#%Ru^(z&w|#2b*Z}>#gT?2D0F@H`)>lVO zeR26CS%kd8MHXl{1?;|>2LEEvAP7jM0L`me?+_=hoE3GxKT35n#W~=jHIBMZ;E1xN zOVEINFJ8q(2F)G6-RK^Ob$kp8hL5tmn5~HHeNGsSf}UE^m!W^$iNS~9GOp~XeIV`q zrg~cJ5JNQRMqC3uhd*Zkhfs?a9)v6cvs6la5f!v~cdO38C;o~d(5ip? z;Jmb8D~Fq_3D7)|LM;Xl_QY6fCf!g?R!b9gSeox57GP_^`;&TcG2O9X`g`$J6SO5;4V z@$W$1FhrwXS2@CfG`GjGSc&L#I8K8)ugJeDR-z?-=7hiH5;-c_s1WHVb}5-Rx(>Ad zfIss4+ld_3C-6>zX7Q1!7|@O%{``H@9im=1je!}fF~i_XbO<1+Z9(93T)U~b^RWWZ z%7GsE@Jq83I@{Fu$2e8Cm_!Xa534n`v^+~C@I!0ab+CXvSkiXQwXyeiv&?nZ zr72|LW68&=yVuFkJx)+1-?t2xLd{3bVL13sAy@B9i#tI*lt`R2i<` zI>K7EpHOh)FkE>`Ogpl?h(G-=U?iTU8O_>D`c}iaVx?elIK6~at;afR@b^8^?Q1zo zpEN;H;mymK+53t-I(EyQm>0o;D6 zK=jSNH{FY$PH1Z{C8+-)#R?y+)LcQ4uDDRqQBCngq!ra#3<53^sX|uE2)595|8diK z#YfdUuCP|s7kZRoKmu^hVry)Rv{V8SN7y2I50km;$DC)2DcqKT)Gyl&p#5sk;RN5&@Z$)z@vQkzl zuA}e|LU|fskA51mWtlVli=6kW=c5~9K@FT|uIaq0K=SV zV(Z1fYr`l{Q{fRT=juyM(Whqomj400!LBwop_3O2_}a0M_c41VF^~u&1VPtzDZWq0 zH4DvCGN`aQ3DG8--i)V=PPOVw=z4+_C>wL9XOni;goisvm+`>c8I=N5t}*imh~9;x zVO*n1IXACEThbHKvgKJM!u537#PXlEKrSD?7o7xk_M`Qh^ZO6SmCR;n7itk=Ek2S$ zbY4eYxG_I=K(~aZykT};I1{mwl-*q2}U;Eum0T{{$9QxJBC8)+Q=e&{vwrG5#wM1 z6b)H(D5zdXi;fCF$}w5g`ddP50KxNPCDX?e%~E~he<-@WrqEA zu|;>(OCEki3;E|^uA}!Un;&Gt$x~SX0)Z_ywgE9IE4}_Nz&@f15?;z~ozO}#(E0ym zD?1!a{56)WDZ^N0^Wuj)G5KaNmRK~twdz4TZ;q{2`Fm9j*F?uF98qNPPHh3o39x~i zRVx&WlCuG8g)ENZ9F#hsk-0dEEv6H3Ndw9XdY@nsp{x}ie{H4o4XIm9;Skaj>^i_F9||FPG}p!5-KwFT)^hgr!Qa_d zf3o2Lx7Fmcf)3_X7XPeKt%U+cutwM1%#|%3gWl*eSdWDD!e@C{8mVSY#=;n}98(yr z>cI(Vd9-n#sB(uqQoqg0K#gCjH^L8*6rXdcKh#B9LAB)64LgU=NxB+K-zvO_Xq4~f z>R?j#)GQxx2W2T8vWeS~&l0pWs`ynz^WkqlOYeecuqoDbBW8YWa9vmYTy1^XlA$Q0 z9Nwk&F%sHtg2#*bI^CB(P+LxoBMM=Pv8+m1_IBA!=~PqUF7ZJ`UOa-Ek0{(<5ag!5 z1N(hTl~;=|lt9#TEE7FXvwm>H-|AzW=kD)2ZP(>PSyR#YQs? zx(5yfG**;8sZ0AlC1^=@<}UzD^*63)800_MFnsAU#n zdBa%9tR99@RNLv2o&EQ*CaZxj1fdncbVAmH>_}uUg(aHU`hqjvtwDh4$)9Di{^n$H zY1N~r*TJ(CKVgS*6o`J5ELamiEd!EqO^t{|Max^=o`GL0N*Axy`oE#CL{0o-k5<=R z>Uvnyn;0VBYth;fpll2*EY>yjFS zOmJI&$n_#gINEV zv6D2fq$QE#@=Wqv|70Xn0~f$KNXpk{5n0nI3I!?sG)_euAS@Ne1RopC(T)Cdj;g-y z8b|N$JVUiW4S6VAJ{a`G!^!G36Gwg4dFzqRXvs8+9cr=2eWJbs4)ie$sDnW>0OAN@ zM*{Qf3GSJprVQZesLS;JHXa(dA4i;TIP?-hq-}JND-vh|Z6hmft%p;4&2+^HnM!bC z^I7rKsm0IOPW$zH;~XtOLs|EB3zOij^_PE46%t|cm$1jt6GqSYlc?koXLL5Nf@JfP znE()SS=ln}K}LbUZ>wXC^Y)|E+gz5lv60YaPi?gSVVVv5FBcL-hu$q+nKtIfUn2oB zyTraOMBhK*mIb#bp#$8YU{``CN=~)Hx@g(nM|^Q?nGG5DJ#mQ_r=2rl) zNzs9QS_K9VP*>t9LmOgjkE9<&V5DXiB4jrv3ZT+&fxxwL^zAt?CdSo&MEOxosk$$R zkz*qEQm<#3F1SvM$^B-HK*mR}N@EG<3hy^N2k4RX$k^SdDi0#Z3NEX+CgKI=o(~gD zCqW~KU0x5=u#qz}@F2;M(So+um(7V8$V*8l?J=kc^Iv2h-vupzJ;Xz@avXtK`HJ{2 zwlz!YwWkGIU2?n_m=lyMG_L_49^mXS7;(}jgAIaf%L{!VYgvx}0WcY8#E3og@kno> zW`N;nxJ>(6Cf`cj2`x75!>gsK(A3StpjLppnB&H;&D=ojKDMBbuetkY#!2k?%J?Tt zB-o!2DX)NgR6#w;n3MF?+h3YfQK+qr!E)T?I+)D5i30SN)t-sgu~l6}Qb9`_ld|mt z*%{NUzH9EgWxLiP2bilZc5~IE;*Q-`xRF!oLNjb~{i6vR{bq)hQ4BR_7!#;f;}10H zW+bXYe%=6Z;yhZ-G^4OgQS8O6sO!W7Yudm$#g0qa!=XTOzY1o8Nm{Y+lh9g9&5AgR zW$qYl0x-WNptIoLs!FiIKlnfZz4W$3fz+_!UWJg&W58~3?OZ&w^ZSQi0;m<5({QQiHE5NpS{$PK)b6;zv^E>XPDX&!{PQe9a(eU)k)6x z>@;;pPb<*LmQsM5EicF)1?d_#T-WGisl#q%F_aPpIPbm9`JGDaF7N-$dW^xLNiWW4 zxG8C+AY2s4&;Z*Mq*_Jr_nX(u{4HgdgCpL>)puYKV4ps5C6UXECRkhy+#pUnrX90p z1i4J|%@Y>nvT&#U(ZT`+xxhDwZ5Q>5C5$`9^QK-q4H&oY9IdIpk!0WK5;cO287%i@ zd`#g*7W=Z_1+ti0Aq{i_trBw77OKCfUq_FGD}xz?i`iBheS$oX zuNdYLL)50tzKaS)RX<4l{%K^@YpWQXNa-@91zd-g1Lhei9E1%3=z8ob@}!|gtlcL0 z7bbJHJbBL;b^9|XNn6;6?06F}H;}AsC`GFz{Rqv+08Fh&=sU9nA06Dg2-V>rP@%D2vNGrkpjyWei!>SkH4^!wVan-I9)tsyPQ5ZV1Nnqx>J6E%CK;#9B>v{JVrFlfy9`yZwX>fGW%3r%b zWdFFMRMu?tS_c9kMsJmxi>uXX5Vj`!=UH}r;2rh-f0zLfp^KR}0y*EjWDSVlI^rk= z`@qxL7-+ZAO-j0K8YRq!_i9Hh4KrFT0ppR(_Qsg!1zf!!#MJvv_oviYK+#V?J>mP_3k!#?wPOf* zKu@ZT^;tDq%I5HgX(mbv-|fGK7WD9?8)W!XoDK={bv z5ggOEKd$=1SZmwdGF+h=k*-J0ge9DTZ|OJ2Tq{pzXwY{fP@%p0(m7~Nu=0<~m_n^r zgS7F;#b^K;8rK*Wm|Hf}Y;i+kpdy&^-$a}~gHBxrd=Zm5vf=KbtUP)8)ViDa(P+CU zMKh=9hRrmf0! zA8-?EiuFm%;Wc0&)&hq~p~nx*Ss0W14?fL8VqoQWw9w$}Xqx3)lwdjo=#eW|S7pZR z2;KT1HBVWWAZ5M*HZ{Jb%2pX3Z-1sO>6j+E;^@}1>cU%hZy5c`YDNASVc~_F-MdbA)qXenH023`v^<5 zgJ5z)3mJm140Jmv3?f!+Q4@b$n*3>!kMp$Osd2D3Re({rO>)d8cE-W@u?3S-}ZvX+; z1#>6lg)2nQ9V-aX1f0!>j>=3NfTBlQ@>t<@9lTV4mHpd5JfKELAY~P7KhyoSiQiKp zas@b`-?${jextK=oea`}WpK@C z-B@1ZWz{D)-WOYgZ`l;}cM;Rc*%eyyGXQcRsY&1YhzE`dB34N%nsy_d@EeTW27ac~ zQf|@)Sh`H|U0Uf?zl@7HGV9eajMTNvf#V`(`7pw9{t`Z_pK=6`u!=Mh*5uMIJj~b| zPB`gD&#LD`UVP0XecA%?R>k^20)DWlven~)m$VtBgI&A%fJ5)rIVn-Xh z$4SUyS8uIy)tHlW-|D1>JEaVPTdT(CFK?)01`*UBQQb?Fh-KHoBQqPj2Df8IXcSIfns(CBecI2wdrZtuI+Q9S zC5EO-0$p%d#`72wlI9rCU`+6~l@bOJbQ+v=1fJC>dL_J*90Ed(1hTuW+%>o9{T#Zo z-x#ZZSHDM2tLjL{#dnU zE=c)H@M!~>_ZV&56(Q$itim$HMN;?fVfaP#@0H9w7GU(eR(fQSs+eh81nN zEEn5c&7|9}7OnAct+Xti zeY6ud@r%mQ5*<-PrPh%qP`cz%U7tf`@wA#?CN+b1==b$Kx;> zsllO=DY9j19T)L2vADtHA&`$EKBNw28gif4$ADg^`b_2=<5rx&Uf0n(K`FWoJA_sl z=XMZY!lYgOK{j=sDiBliza+IP{Mp!M(n3f zUsvIHgi69Ic9kIM^sCi=5bE#9@F8v_E~Y^JW=phJ;oJifkMeF%^E0UKDT0waqh0z; zRR%%&6jgvJL_uCGmZ@T0EYr|bDV}o7QyjB174SkwI)FsV!1TSSdPim2K19Lr>8Cuq z3SuyyDyRoHB^=CVy0(Q@)?zFYb8i8w>4LH-qz}eRsgU=MJ++j;&0VQ2!iz%1ya$^P` zFGH?6;Y1}ykS>6ytyBn9$&Ki|=-7i2rxGoKhbBy%P_i7y!Z#FwM7+l>eL>Xs9mTZ? z=$?n-omc)&aYM;aiZ_Nv`C{l+KYse0m<54;uV=yu251m}?({{hYL;mh;Cps!f}L8- z+?-B88$RNmvOpzIpL8|vg4WM%Y>+o@YaCR=37anj zk9ev2ntdDX?>srtIhs%;ceY4T%W^rk@+fQX^NR@QJhU!!nR1Ie%*&0Om!`qEE>|a4 zvMz8aNv0$~ih`pA%0r5i0eC4LxeMZE@{siLP|BVh{mk-(F$ zW9a~J;Poh3)}y;XJ@DHb8+q)qe!7`0*TH>Ffm}~WiMP%s2T5GPY82&WI}p+&Xzom> zvF6T|uYdoW>HCwV5f8gCsA6-~Yg~HkV-1FppUKAU7fQ6)lz3xKj0zvoLe*&032a9oy z71DOR>DNtxy}~b91VS5M_w|j1U{AEKxscjIAKfC_OPgWi>{gylgbh##xU6!5L55W& z--X(u!~UfjdOzpG6FQg{I<3CfHsi-};k$AP7GjGN7U+s0p2!3&>NmJ@7Ii5sfq@9S z*Nb~{*kZK`biUeKz9;BMkk!U_g69@d^qM9Wi3Lrn?LezhP;S-cu994#+l#A&Ry!{Q z?9@?}!YRFF49K zuG5qH9n!w2E=4q}TDZ_A?QZLbbc}W`6Lx@GBUQzBQNnbX05U9wNL!8??XQJ;3rdX6 z4jA0}q5d!GrT9VgI(9qqNtDW8;R_yFlM|cl8^Dc%I<`>nCZu)(l;b)Os_F0vUBQnL zK#j9d0leOz)dBacQq`pi&8+$q@|nH>M%N!EU~A|i`4MQ&erPa&ry&w~sw-sTCY@5S z#L{}!*iNSh$qy4u>)7IZ5Ws+Fx%C)JCZf#jbR@g@`%JWSMpBpY4ksM9RCv=UK(>Yc z0%5{q3s3P!RqQrTLo81lc9_ZVfR4Vgmd^^!++IM?-E69}CRx&G?=W2p#UGz2kWY^h z7qAZ#=lL3b>yANyU2RVvatO^N>QlG$Vh7t2y77(9Yet`!8g2J~g1rJQz?bvCIghOb z3c#DHWxWc{K{ml~*9ZMY_59zeo;+9WCrDXXroM8OAql{@fv`Og`TRkX`YdSNlbI&S zG&rNWYFZ1Xaip0E|M|MqjRyi&kqAbqBq>RSejmPFKS77jCP0wVy1*1OlNKg;b>`l> zLnGA|+Cd19$x4u&xMc(CQGe&`VCk83*#}E1@vsQ*4IVqrv?_(FPY@pyv5?gAi6wxc z!df?&KyCMtF;mWF;nIanx|O$L+t44hxmwAlxPxmdS7(s+Z(BXMZFfjOYoAFjqo4y@ z=vI!YzqCgD$3qXHvab2jm7^P}3bpV!`x{YaurIpR<}4IkGTQ#FffZzLi(*WV0eqMK z6y&;56SR8fVmLSRW=DFE!#KE?u6Ke2kl~aX^7zDTrM6dhX`DhXH0jBX!O8@@PNB&q zWJ!Q;d0Km)%+24Qv@Zw_t!*Hag)C!0Xd){XmDn}zPngU0U*!Qm$#s0=1$|kJ&n`xp z6Q?0e5sp@Wvxb)gk%nU*#MSYcM_Wm8(%bO;%83}Zyr?O1Wax0;1Sr}q-F$(Ld%} zXEkq4r-OL-v~itwkc=8m21K%4JS!yYIhR&D6iLR6B8Mi%BFKmtCb~hl{WhSA^aH(9 zDDEt7LlkW8X}dnJO~R^jhb~A}h`~S&d|Hd~0Vx!4f$_-0Zy6xLw3UtVCQo=NF?J{C%K+<2Ts}-pv+Odiq{>{SMso=YNAsR1o zCg~F=k6DyZ*u$O>X7)2z&bbAXT)J^e^j>Pk0BfJE#lANH~L`{j1j2gf@1hrJ7M_6wd<>;4$#zvV7=t4TGnIQg-0^c!G+Lt zCMG2~gcru@2_OyjTh>GyMaA;tx9r{qUU$;BT{Q}c65s1FbwJ~ux93vbzunt>``Uy! zc(5NKW4Y(l#9elZ*~Q5*7abXxVP7!ZkYGsquCYQ)>iGJ8?>&15|EsOl_N6-6yqoqZmrn`Rfm&Tv1KmKZL6aErVV zu3~Ah$eumY?f_wdYw*(Rv7qYs)Wg-3;U!&Ell7;!HV&_1v^sVV1Pe_clM?ZAvp!1) zQzF^leA1ZLFErw`*mT&gJNPBdX7_s2T^w~EHS@8TW3K30QRr*tCpILWc$j~2g=Ynr zI2UWLmxu5paKBcZH+SsM=x}eVS05#EXHPI|2=47U5+6O(Uco8p}Vg_it3lNO;r7_AJ6t) zGg%j5Jx^(JqP#$`xnu#JP36F5Xecx9{ik{~5akov{-5#j{{u-)#e(5tk!>3_h5oFR z&dvc%Da%R*DpU>tD<+)}n7_VLi;>=;u>MaM6ws?URYA{-}*$v8@Wm z#6~!qL|1K%VM1TtZx?KVaegXsz^0>#&^fS|rx9_TOg>mJGMDP& zBBT}t^seHUkE#n+Hk3-rw;3t$f*<~p&DCt5gpjo`Dj|lKV-HEct3j}kmhpjBz4bMS z@lGFCH3?*Cd!r%K*pS%}C^fVjdPj{29WK6Ui0{$P(IRo)l@kh-`lx52j704+>TXci zk6C~XYX}deWNtZKHVYx!=X*-SDFM>Mnd^rogT-CKCOfeI_UO`m&S)~Q03{i_(qzm* zk`u?}1Zw@KDmbE)K~n(HCs<$#3HHn)!@Z23X@Ni?Ft>MiD>gZ-Lj!3Ng>Xd9!cMHf zcY`8qM;xRyfh?@T925-!phFLn`NkR=r9we&d-`g%oPSL%Dpy`1x;(j@it3jh&P;9q4skks;D42dA1C5lSabLIOh zQY%h<{-yIbh>e}oty#6FpEfmju`NOWut><6kx=NIPdM?K=g!qebHCqUsY?+B#2(#|r)?O&^V&N-fKY)L|98#^FzM;X zcjE8TG4!88F5v;kH#A3s{i?vB%f_@VE@!Jz_5Pw|LkBow#O*k~#k(yu0@4D|i}dM)kwdgAWD@Wo-=s+99d9<^Mpn_bQ0;gE zpv(G)M=1)nU0VqDf#0V&V}^RrbeIZ-cm00V#NtC5q@L)~l9nl8>&*rP$A=$m{OaNp z91+@bS5J7rj-THt`eE30BL&6uvMg;Q$~+75Q`T8ZzPEW11;z~*7QEVb*OfVD}%pHx_f6>H&t3D0zMvG^P-T+$zGa zXNgu}xb($@g4QEGpy0F>{-~v40I02&oQ*1tMLBE7E-WMDv*MJvZV#HIdyDG@1+4J_ znE6f0VcIWl_F^UPQZiO7keajU2Sc#g?E?FAs6COgNY!cXxS^I-lSsKlPYX_6g(@ce z6tdeV{phG~7EBW!BmNC~=WZ8)8R~GudEk|Gw(gP&Pxf2xT@Jlw`dbAdB6<$fi*lHo zqBUsfcjrDP$(qe%A~hrmzm;0^EJKMs1qe1q@@PE7F~vL-Vaf6Om{|m2R9lc^enb|I z`Urmg+{|pd>h2q;n=LjFs5L_CuEn7#-VX1C3~?d54J)6#CjfkaCR_@>3qLJ?>4-hK zyqcr&;p0TtVxqZB)SNt+Diqlt2#s33Lc4H8#Z|)5qWQb!{@Y8>ZjsV-)UEn{hO-26 z9_2)wi+^##dc`+8y2VMY03)1`2>bVBS$Dt^!y|Zjn~{Q~PrV0EEu}i<+n5j3tOT8p zVLy(u^c4v)z1@)<^v`1@{01jvEVS-7*kYHw=0E=fVN79G_YcgvZnS2)?N5@LgHAV#0pEpDImMP4Gmk5-a#!5e)HE7v>WDbt;q{U#6&HZ)Y7Mb! zypluXG{{$wp^X4%iUk;rEF;a7toLde``vHDka_f=1ATor(D&Q->3wZ$X(3Q(S@dw0?2~`xjA&VrQx|XIsg?icY;++m zQn#ai;mh`cRF!JmsFHZ(ezk!|8~99_xCAUp4{JcHV=`aN3DL;gOyWN%6(YsPIxMKr zkS8nUztG2o3!ps(aDWwyC#8HV^tK#AxMS5{b$c&HR|Z_Gg+M<9C3mV=x2UPL(BE$T z=#wdlb#1gXmq^7BY{%CBn6F|%IYi9K;&7qw&>p^o(5B_dUV-I_zB=dF8~WvyBM6!|3dO z92do7^#1D{Jc{+fgLB6=+`scmmx))y=vtBcBu|_ay#=3eDEt++qN>t&L`h7?D7XB zAUj%;WYa)*!RUcklb|?~vyVeO%*ooGv(4bbWc<256EsL3Hp|T-?XYLmx-X&wl%B_& zl4bi0@@r@Gl)gx~dx7R&$-Sx`iEyvzB)P!pJi(%3LkK2c8e-Er{aNdbe=pWE2Gz@M z%bA0g9F^bdPu}kTCWA@*!M>KcsRq+Wr_fQ%%jzS?+g-v~^g~4AP$l#S)be&GPHC_dXl~IFIf?D+Dm^*~b#1EDq$9-5$AfjxTYk$t z1+kF%#nZNN-EYluQ0-~52Gaik6B(M)rW`^CKn|=WPBW`%5)<(Sfd>z&5bC9JhCkDX zXwx5HcERmROEdE}cK+P6O!b(rUG(4gZe2>%*dA-ZN!*Bk>rs<$uZHc5h1F++Nwhq$ zENn($fLiQ7XReq)LY=ho>V5?_+^kUKI7PI3Vv*C&HW>A(RSI(2(m9=V?JcPAki;%tko!%KkR=y42Q5Y0SRo2} zX9@3}BC(`R>;>*6%E1Tlbs9B^%eTqM{Rxz*@e+8G&n#;H8?I6zv37jhra0;#5Uref z()4-wy%|m^{?j>DXBity&oRFzml_n|!uvIQsZ-zmUk@hT6#;yOqiFtNx}wvXu9rp5 z)d3mH24!*od>^)7NQS)f!c}3ZQebC~g}=~RFQ)*I(D4EmmM6?~Yt=(B2sC)Qr#%i` zkpbr_k#>$sikk4UEdrr?YXD&vw6_GbK(m3Q*;IF?OSd-SIieB4l$$;C=LAVAuIl`(PVgmIm#nJwFv zRD3sH>Cbj>M=+3g3}=dz>lE7x6}HMr{_Tu!ETODvLX-}LRJL!XKeJ<=c6OQmgh}%N zOm=_JCuNLrI2;5rr%)FQgO8PH;%zmkJak_}NN34L9RK&VA5VcB8($(iIgw#S2wh25 zEuT3gsmiZnb~mZW4t5WJ6&-i*a@RE3*}Q8%*;hTgXvKzxOpP$8P+^kGdQC~o!U0kp$9a3TJ0~GYhjf}_ zseU~Vl|$gTtkvzC7_K9t09bS&TjGF@fzdZ=FPh(S10g~>y4Jvu0MHC%giu%V+3XDl zp=IyCvH87}8Wzxo+r?}S9YW_0Ld!ebMcvegP$-yM-x11s2*FeYN7ZkO8c?cx3Ekcg zIj`Wa0wEzBW&?n01OB%L3~wk~Zp6NmA_Qe@Q#) zUU^89iYD2dQxA08YUiqda{+72LF>w8O{n6ZYwz$SxK6bxVrBnU35Ay(>JGy_aA1tf zl+BkQFqv|W**2N-;) zCKoj#(<#)A%U-nrfm9DyPQ-pE1h9o}_suGYv?)@(7U#^fbFp3nuU;B7aY^i}Fa<#D zOq}nl6oMzA&=*-$J3?h79d4`?-yJn>g?$k38S2@YlE%Xl?fl z-V=`15px&7wpB3R{ukC?^AaAP6HCxqXqR?3gkk>FB7v90U3JKg|7zUQqzp*%Nau~g zxm;^`G_?`24+Av1(b0n$kPmV92=H%>gsH|K6{ETf7Hu=wJ|oFmTE~NEDpP|E{gPyERhMr<2+Mkr?jYo6MCh1UWsKb2lms*r+Dh zVp|;}R41xMWW@LS=0;Th?YXjy{OW&uosN;p2R+Hul!e*dVh%HWvS4#w6l{oZX^eIh zCv}Vz$@@V<{h^c>cci9r8&FCB1+yFL*~HcMWBrj^cY?2>etXZUEwq@IO(VKQoy!CI zVVf$&8p7TbB-cE4h0PQ$!JEzWy~ibtqB2I_0~{k^S=3(nZul5$j!D}lE$It>b|!;S zQvUJ-CN5AoZDeVGW-$5veGU+qLf}%KDc{>B*n;e|7MS^Mh$FLEJEJ5I=;qk7WHVRs z$0Xr|!ZxMUva13i3ADIlP(CqLmxrL967g;Rh76)Mzl_RZdxe#cq31j;6D8oZSo4?W zV3zC6e+tQeXPQm&e?S+{OAS6ChC8B6J(Reu6a#?mgn>K`FQ4Ez{F9C_ibezlk=P5# zwAZ<#_YvGf?7dI4IEI;OK_Z~gcl7omkNmXUp#v))S>2Kk_+ZEMCpzLy40q=2> zIbm6i_o2pblomA#H`nDU9J_?~`@Iq?LE!`(A5*vf5hPU+ z`%av^S_Q$`g!~M)r{&eehDdVw=JRsU2a6I%arUr~{icuhKPU0d^TfbtS*e_7zokDX zf;(f}YkqX6Crv2;aO^0OI((9fQwVg|pN)MP?2sF1nb9DpFHH8nN`w}~>u(&0wddM) zbtNmk)VAp_kq(IXnFsk4GXlT2ga5+41B$MV_(oo1ki3EuDlx0*0{FZ(CSk`n>{zcU z1uz>Tp^Y;gJs|}D%IU}mp*Zx@Ra@IR<0UJd0_=K=Wm|ml0CX>%Km|MAopaP*;AQp+<}j7N?QV- znv3n-#RGTWf;6A;b&)*F0ejsS9E6B>#e;Xt#$Dp6VKa?C_;$2x$8OA580w;Jz&;=) zx)b?)^9S0*tZkvweUGqCfMfPE1Nrxy-?^fGoXnbb798vMw$01m{TPs14-ngarlTio zL1G=gn;k3ItlgHiAAPKyncy&5E@BB2H0o4Ld11DIZ(esvgh0s1S}u4~%>ret0Hw06 z_*IF_a+pj|7jrRXt2dG=nlpdGrM&Q{d)asmdt5%N%TbUHQPF*PFkj&#eu%kcTeMDnM)+)nVI+_qkUEsoRK9~^48m6?d(MIcp2 zBF}fU+J9<#$8tUp?>_6mj;ZfO!8W!suTUcaxkJPHPEtH@LNUtIfEAM4Q`pT$0k7H- zAnQ60v|yy@uQAPowb|yTceCTRRl8z)w+Vq8B9xUIBr<+OI7f9jE`0%o$JZWv}TAq$J%K-zE0%Gm2WM^dNB$ z7aH#}C7P%Ihfi@$yVP4;cM|ne>72zjg%cx+es+ZW|lZRmL~8`VALN2#dj|)Ff4`c%R4xCOYTKo6lB1hmc$178-D2)F1+sdT${I zIFy=s5w6Ga`#ZRz9wXaHsVGMs?VxvX^ImaHZaX?xkr%y9h2;>dy0mJi_OXib92up@d8GKp1hyow`pB6 z7#fwa%JMH$M;>Zt78*S;#@%;r874~e?x~2HY?p9k&J7pCm*Mdl_xbVwWM z9iW8_P5g_**TUoA#JxqXF+I4L%`$)C^ir?5r@pMPO9y@3esqRvRvsDRxE0fXJH?oWdDBM zs9p%{NSlC~wTY55ReZldOry{&;>}kG&@Dk75|~`M=npa$r|hA(stYbG2&%Xr0;UYM zaNGE%U5Hqq#S;clddq`T&XICqr4PhGDnduS-|()MrVA8*|B&~ z2_LJw+H)>)qSc8&N&T9dY5RP}7JAbTcAoMpuHzzjd6&~SY+OOF#>oKma|^7O4(2^7O>fs}89I%<5zarKA*d>X1TUv}3^k+>~&iuG{_5tnmmI2Ve*R;Gb1! z;@Or=-E0suCE{ZdJ}%Q%mM)Q2Or~L(+?f)~Be)m*%Fr8Yj6H{kj~8g5 zzsc3+j(beE6b7jeT?hqrg+$K19KgVCBsn0t@Aut^1^5cYY)K_#xNe_f7Qif)*ZHkO znm02d?c92)_@g~xUYvtbWe#_^ws7R%%6+SgfzR~md!Qt>qpfFWcL$4L)A$(!3mQvM z8iON}B8M-zR6Z5}5}XSq1U7j`27n^gmFS*uEA90IlP{~UOvuC-F56QB`Kim*>aQ~a z-LhRYH)1JqDy_2MxWGyZLxb^lV@vnSc~)*sD%9dqKG!Z!Q1=wSvwVOje7>Co!UVTM zKF@-^NR&u6H>*Sx_&SHU_icyyn66+$8j}}%`4E4v0bok|JMHZo-UqbflF!W~rc*io zEroiY!y~L|`}F}(Y`V>UDmL8~{J?p#myz}&tm}_Fccn+{Hy`d>>ja=HxL1W)K3qzb zBd8uC0627Z3m^as+FwV+b-#7v^Gve84kUBHobIwLUV1}6beO@W1%%+*mn9R{g}56^ z&p8}{>aYj$Xqg>zeg?WK#}6XSW%G zdAv|M0n3XtH(S@|c*sQ{jh1(^tzcm7TWx(1;G@X3PR^M_0qaY}+6c#lj_W!;O=*wz zv}Z`8j=FpTi-{krEOUNwQ<+u47JIu5Z-z>!j{-P(sPY>{c3S@5He!y08;YAvui*=E zp0}cVaoQmB(bvP+BaKbrEVW9sdAN>BZ9fXAjr_n}_$Su>lpHH=`m;#6SXosX#EjyO zZA1ym`MRp?aB8Hk0pxFATY$H|$|E#g7?2&>gCV~hy5CgjE6z;aq{v?*$BXLoj zu6xl;Nm$+0I?78hL^i;UsS%m*+Yfc+ft@V{zlSO>qv}Z1Ub*5gCNR&fML|tTzl{~@V=SSn46gLO9N8Qg17tv-O z(<*`hMuUnd<%Bh!f_TiL-J#0P^m8n#`2eql2i)KfKQ4y=-fbj2wNU842bsRY6fC1Z z-BVXBGeWkpgRbx6QqU<4Q$c9x~ZF8rAIY%S0mRo>ZpKe>XQiunOMso&E*KuPaIZ!>&J1Oq_%g6K3{C6@-(kuok>L}ElbKB~FCRkNUu|Ah9w|4kTC zv0G@Em*x9Xu}+4UYXQ$k`7L~p^4>snim=GDOl_M18rD6gQ5pRbn}+iTc^-yZlmNGc z!X#{KHxF=vAlxYlX0O2hlf3@*M!cY~)P4E8V=1Z;A{8_qo>iB&n(I}LIZT+h(6rZ4;)sn4I#EtE5Iv&Zj6~IIM&ZBj3Rcel#vo1Rl-1}ywt$!HF$ijKV zHts8^g75Oc7YV(!vN0%qai<(Y3C`Y)vCbS}5=d!f7xXee?np{@xri-3pLS2$1b#oP zs?y1?k3-JcmXjnkVC!cB+-w^Ll^g` zAP@O98kwN$)Nl8|EOcC8%*kJRx2~EDAO1frw_q4KQ2`Rgc~uA+Ozd|ht>xC|h<{xx zX89C=Hq>&>G?;a#@W-!R<^XF0jNPTht>CQ?(7K-|aAH|mOg!%@DrKs+o?$!RM#!9enH|YBa183}7ono%e7QM)zye(T#|Lgj7mW;Jm$SLm}U8ZC{ zFrEEvxBDLx_{Wn*spC+uW$^&RE#p}gj3k5muLq&ZV61J@r&xK800MYc`(szu4` zUVRne`UG$m2wDiGnD}?gNbmH!T^nr!fwg)ml;94m$GiMPB3KP%7ofM8^&C$24OV(+ z@i7S!`#R7SuDII3O_9_KlVi)c5m{Z#;nk4!;c$4at;$p?DM_e97RHir!@Jx=^~S^M zOfmKZC%Da;ZUygdMY6Xlmzs6K zIFiW@&PQnVW2Aect1cr|a1fvuu@&bq`^I-Dp$~%H4Zx_aF@RV%Pr)w%Q*exnQd-W= zJ#li7y7qgAhJL`%t!9c8DesaXF3l~o3W;*kc)^^T3!hb|r?>J{*!g0qc>B1wb1dwO z0U=JT>g$TpWF(v`R`}S~L*aV4WXZ7{^zp0W+)=_qaW$AmHl+}vrIAJWL&REZe#Ij_ z3!a4X2B8)g$$qN**7Sc|Ao0%13;7V`df!Bb`)1ptcfjM;gPEd5RcYgVDCbjEu)|Ff z;)*(cKZdpgBmkhVc2>J3ir~q1i-n}yefH{RI5@?x>O09n)Be> zel_4sVPj%!z`x_j55M6-V6LdtOB>`$aX77!@vy=Y&&OF%kbW_fum}d5xbeOoUrC9! zJKMuP^<|px6xBTQ9O1rkDCY*KG{iGRoFnUo7Zv$4+1pCjR#V~vF+#AitJt8a9+XMq z*$}u^R;=X0R(p zO^NhEWQT>6*#LQ(@Mp$}70+4?4a8RI))Heoe*cJc@NlBdTK-REqm8=>eHSY~nzDZF zSh2I+8UO#_d$Lg*RX3D}93%W%R+L43yw`QF3)W6sc{cUIeDjvb1Awr9NGY+4C`OEO z5j5^aq*Jrd89V+|d96(}jc6A1G3?xcHlvmG^X2Ng2P?tLd_Vb%Ht`$@en$_RS=%~k zI6Frl?K}gJeww0e&&V^XN$3JltA&}!&lr2B6R2UI6O$fD|D|e9*_+x!Pb`j>>;?CU z9}Z9k{2kT+_vRhoakho(dW}0Vn!dRPGrOy9LmR&S!&8S8IS^1tHH$q{b@qh_@i>|5 z`_pS?3G{pPo(&>sdcyXoTS}y7Bjl91lPdYhhZ0{n0cvva6fA55sMo93imhJg(PGLZ zr{#$|M7VT#90kWBO9H*lrd{PlSVI*k&B5tZlxX~Z%wi3f@k&S5`rsxmcQQ++E#KZ} z#Abxa0q-QM-_w35d3Vfp%GA^j+)v%`+Q^zPots~-@2n8M$a)T@B#L;`xyo+w((`DY z`LFe2Fp77LqBmkf^}eQHOJ5^o3;MfC=qz_}e&})f--LSAnbAb>GTDxdH=51(;^ z#zIT+LF4hx_8&QRCt=-Y5ewf;FZ2=Lj#lrelw4YD`^;KF+~qp-*7Q2s6gL_#$oJLb z`I4Us&$OxPh+BBUmT~)zGOPJ?RnQtW;YjJb(VQOD<oQE-D@jFgs{o*$xa@@ZcJG>Nrpx5dB;12D5fLA2oyQG29ZHU`4XBgEI>e^H zWcp!3RAQ~Md)fIvqA$ygWk)>m^*Go@={!IQv{}lXME-DqpjwTQWr(U~=6UR?OL*6F1|6ZxO%oNEWc^ZS>N&n;nOCE8R ztyH@I721Qa)q%!p1r>|$PX=R_*O)ZUNol^WM7$Q=I&9UECTna2pF?IhzKc6a3Za9*@&z*PC_U{_iJm8=nUf(fGDvl1ZqfB4 zAV6cM2Gu|gilt=lN4Q|$`3j$~Qgo#qkb1j|tm?u>Qk9>kV=1~YgNsQ7AF4g^coK;Z zcd`YF=RO14?>1Jn=M8x5pXoSAX}>yxT$3ojhC%xnL{JxEeEb*5xsbl`ZGm~^TG z0mkKGmyGxf2~Ixkhwi{GjE`iO>9#<5=||=om=sZCs#ph!#aFt=a)fLG#lkVkc|sAy z3=A1`2fRfSv;iTJU;Z4_s+;R;+rko!I&A1NmV+?dy-jfm?T*Vcf$+;4&*98S)Hc`8 z-w95SBT`K#FP*R%>RsB2gcLoU)LU2b`6Jhc1Ib^tBu}CjD@!#&kq1tX665+m#<&L+ z$R0Drf~0|;qK+KGcste2ctrH+`$K}?LPsxm8<21DkpN|^Xo^9M_l?{Rxx*$fJDyf^ z$Zjo2AA#pRi~xl)Cf(9qRB@18Iosyn1^%4jZX=?(?POizFzwcM3PE*6!ZHD&39jvB zi{%Pvspf2Fuohai_(Gn&)_i{B714AXiSD?DL#4`#`^gh4>3f5SQ#bU|MrITM0>T@_ z7fs|a!yq4&{o3pWO5BW=a7iAVIqfMWfV-4H!iTX1?=r7o?SmZ{h%kK9H9RQY0*Z>< z>^W)N^pTvMvz>&L_~<(80N8MA=m)3(i`9o%bvl=vftRDa6FK4kV5`Z_=t`$lqBqit z^B|Sk?mqeSsKXZ&<<^nP3=_gPZd`cCUg%4%*8|*6?Z*$p?I?LV#!F9(4zzwPa2|PW z&lNsOz&!%jI7vGlC@7%tS6-b57V&mT@Q6Sm5Qf$e6GHi9zDZ();H6rP3$>-D$n{d=_mv~nRKjgkS1*QB7DA#P! zkgXIP9%0k%EynF%IFvx7^Vm~AN1|@ZtzITEzN#r&8!0-VIn}ZI1SwUh%M$Ceq*6_C zs7+sl6jY+8xfr>5bCj#1Tj-(nntvu!ojqdocnY2iymiUtN@H!=S`3AXHid#fK#%?|X2xgVawA&C+I!m99<-#sKkaG6GlJPS4{Q>iOydAg)xXN4`(;xXJq z4Uml`u1hnz8rhwmENlAzc|dwCo$fzOIua;kXr{+jgo~@R#Fyf1C>y z+U0|+C$iE|(zdZkC!G|}Uz?%#a&VaVFoaf7C%vkz)?-~;n16?YK0%M#l83cIfy!Q> zEM~=i|E-U$gJqhbt*?LqF`EswYHrbi?SDHXF%e>*vj;JyI{47%B~ZEe%AX4EJ_d6u0_SDLG<`d9Rl$&EeQ;A9AeTs9hxqhGcmc?82F=>DD0C_H%$qmiWp zi#ScBZFvSfD+%^cVW3z`Uuw)UW|p*dq1qz#bf-F1&c!qz*^exCb;%U3dFBB+z<$6W z&M^3S34YY-?jJJTdzIDr{fMBgqwP5r>o2#SmOO~d#cpwnu=BOB*LluIh5Klm?AlCB zq}8lyHCM&n)K?pvK?L2@>gvUa7+(zdIDb$r0Bp$CWW}SByxDJ$1)flXDf=K?)&CGr zMQD5-`NzGBsH=s{j-}1B^uFfNNd@_Gu;h%f`BeD zv`Np(IPQsHSZ~IZuDME@H`*35Y^$U5uf23U+GS6Xjqwd9Dyfzji!IWvoFOouo1aZW zf;d~#M%3))a9<2I5F~6NxQZed4;HBt%Vz_E2oclP!UkMRhKg^f`3~pb#ffW9)ZAIw zcw^0<<&IW0w4%z9Z`l%>PQ3F4^d3g^Bv6N&bJcSfYLzcrX5HiQhbfO<5$F*Cm#YGJ zl`?p-7~Cy*GYBNV*aZ|;C`-k5;-Ib3~ zdwq)uj)Dn;Y|tsbIB6N!?;0CP?d@g*H^hw4%aiGoi8rRU)rKdeB{n3^V;w^+z#(N+m;4^n9T)C27#v zD+JcK2;Jt?T$coR9K@s1)*3>OF#nF4TL}zx+;xH~3~pPy2|c^F)rpjc9t1qtSrW)y zy4f!4u6gSaZaN;bugL-WauEZb8L#9Md@>QD28YB}GFvBie~G-Cv{LRDo`gJNh{~&P zG+^zI+4Km(v6)N^@;u=KXd%PTH%1wZ1~;7t3fSXFLj%W>26H5MTsE^JUJe0EQj6)%+C5-!iEurIuRRo>Mc_$7u4&H787cAJv}@+ zkAt2_7#D5C;Uv@2N&;S~Nu~qrBuUf*fUy$zi8W?XAU0wrMB! zoKunZnf}Z`Cv}%x#BDEW3aXNp4R0h2js)2Bzyw=3P0@Z%0v`Vs5uKhuCvB`Hu^$7;;s zs$XrT92aOL<2%5z&Y8UDMg&b%ZxWX3o|gP&LLq&! zcZ|?35GyVvE+Z&As+ayqh{#M)=NY{4o&}Q7GY@7(3a_)bk`wde+hJFjteVQ2*r2K zk_+avNm1kSGvyzA&hgbv%?h?D3AIzJ>CEw`8S2zR{2p9qac!9T=y6#4!RwS zZG>ZW^8V+cx1-_(n{>60YWUp=Ar66HBedLcRT4Wv#-nQC+QaRq*ZY;4sWiyZo&R=$ z#rfVUBk=AgTw+dSu^aPxsD4}XzHRpuZ+5Cu|80(12Lt2P)9*v}$xg;xRckPxE}8YZ z!lvSZGc-lfh`#_adX5PLW>aKM{mk2m2w2S^e|=+MI>L9BU_P2g%JEvXa9(>EDOB<1 zN`?I5(UUFl-uc#=W$DCEr=dN>!=m{w`xtUBLb~ydjn4unb)glZSyqNjVQ7p_$*@pB zssA(TP;g`o@f6mF^KdpO?;d=Ss{KB{HOtA&{Kf0V9Zrq}WKL>r-Jw8;-nPE4L++3iPf z3*}iyrn=oOrwH1V;=XL|-~8Rww`%#bn2V*#WBsS;K_a-PSp-jNJL_Klt&hn4OU)S_ zbsa zM44_H-^w@a?MGilb|L@e#31L&EBPnX$P}gu)59VM^}T7`p8v`WhQ4Am^f!kN&atxS zQR!DrC?9$lmFqUEL72jnTLSsIDMdwgpjZ@lNB=NvOjvM?z9Z~ay@{$Z69I;7*M9FK zMU_p!?K5fdW;(*aof!f23wCecKhjP9$rPmD!PGrF>(MmJxLwiIhvqae9Nd0tAp4$7 zCFO}q{NO28rpyzf-d-$8nx;_cstT&W^8M3=sNCcBz^k8jkt-ql`s7helpUwvgIUD> zljHptayiFt*aRK&Qqvg1c&)gpsq$dYYpoy*n;&rOz}2+E3;VLWz z<0gU4w-pKH13S8mF5KE|IJqpOI0{<&XAzkJ7bKBanBa;j1UL7uPIRX(dMJa!)1yXs zHi}rugo%|EAHZK{4*?Ia#OZvFVMULuJ|)HI7M`7#BzCM<;IBpI^9t@i6=?N#dOZXr zsOh(<{3gmwq(REY!AMEk6|A~jnTXA0Wf96B>BAn}v|!o}Duy6O2~xGsac9s}I9SF+ zrs$l)*KYHANR@`v&o&a$6yjRPdAKG|o?hdgKN2T5%$Be;=CO@2haHdl?0$#elIQs_ z14DS)^}n*0NQ(9x#7S#jU(cV*n2X~gOubvRlAW3Y0vv}wp7nb^-E*^>2VSV&G!Qn9y3J&MaL=%mE?xIGY_pz3X-Jhq5h zoSK5dC{hoZBFGmmvp1Mo;*7x>YccbiE^YE}T&RfD!B?b@KIg_4)wjS<&i%|4E~}U` z^LkBSrND}cT+7PGHDj160B2&ITpb6;M&-$iaZ}?>&PQSz4$%)H4t6bVaJZGFov|@< z++q58Qu;RNRu7vo$fKxU!wG(Pvidi5AL{Fu>)j=s5Z{q+U8lASL@s>e5b%F#OFn4C zs0+C$uolFmWd_4bk0`Jx4BFP5?(kp-0_l1Unmp5RtYwY|4cWw|s>iw73$~1+5Abl4 z*5!lw?TuPdbOVPu#cfqxg<0ztE0(&>y_T5q8dKSPGMJLqW*f;q*$=`MYRSLWBH7FP zWy|654!|jlGMOTH@FN+H+p`Y3)Or83%`G8~svA_LrbdF~wGzZts!{|dp(6{LWS`+-orFhSmuQ$ z3+bsAnCEU0xS#C;Bxai^@;jw^Mu%qUA2Xq{0{|g*Rcd(T3Ne@k4kCYEhgR!^_0^IiNFh%WDB02`i7sdc45tE6>)-y^ zN5W=%)CsyKPUC#vyKlF|o4F=T-@iGO2Wl6m6quEq11^ZTBB_mtg9}Yc_^;=w34PzH z{6I>>DGh?^RSla#$)j@1-C4F$q?=b?9P@C|enhGa_ao24nlpPE@M_PQ9OOjWG?-@) zy2>#&Vv`M3O*3#vlg983)W$bY8MlCtZV@$4>mRuQL}L;am(EOAw+j5NhN7S=7@eZ1 zUX=I!JN>e6i-&1L=^F)CTAuSdUpwqAA)9+3*PiBb8N6=FQPa=R$Vpag!QOoO!+S&h z!8$i7$2xkEM|qxxSU;8Xep+{ViN|R#dQm_%%6zQiDS~X}!$L5Uzyk@Gh`chbp7KC$ z(BWm0#|noyPnYi|<5!}?OVrV|3I+;j5znPw?uxn~h$w`wJbiIJM%*E7E@w@7X2-{K z*c~ihYMV#A4f@;@m1q)vH;Qj%6UYRy!5II8IhXbBV_NlBiVcw7blM z#~(SAF?xeW4$l}J>X~>Ykg%2tYYAu+U*@sooX;b~0HRhG0*yVs;Q-PSO~anGh|lwr z=$`s?tf#I~+)6!5jRY-w^8Bj{jd4TS_e0lN2EE)H34F_uD`|q+ zS4T+8m`fz!5{QzYPxZ{ zgvInjYyu#nNtLAkHl$fCt_m0G#IY_CFo6VT8NWS_tnRq%GHu9vKhbQ!YU{J>(=J!O z=jLYNI0%)>64GErsw`0Y<&6$|{7P3aJ@exW_({41ST7bLhh9j*40w@W!sWCg<>$JP zeTAH<83nbKAbcIYF3}(q8YuwZSEoX{JBuRTZM&X6>}#N#L^&-UBzg}JC^d<82rf1y zsES}C20?#2(o9jDAU_y?%QPVQ38~`2k5PajarK^_6HdPOtq-nDkn~DhCENI4-qd$} z>3it@t!jId;(7b7Dga4|aP2Y=fwM?4Aw{8u#rMnEjeuG#%*AUk-JHTyNL30R4tz7x zk$>c~IXIiT8Z*>h@9pg0+vNO?E^EDKEIQRd0(Rb$GeDCrs2}9#nQehH6)lxF4$GL3E>c_o@R&g!2BjfL=q7AD;Td4lkP$8q zVE}`T&Z>JPl13?rx(JSUi5IY+qGMeauiA4W7CePMuwpVzUf!Qvlrj2MtOp~c~YC~F%sld~Ty=p;C0y$2>Lsjr}p$7Mf&t>sGX?#%SqG8w{6UtSwB_9p|6c5;uGcwUP6OfLt*sZk763H;|?QkD6k?S zIH%aLha?>W3B>t*G){%pKpzts7@Az~EWI;4WVG8)3JtqfC=CD^M=|oS~I^HsC37Jn-kvD9w+M=j0gz3ZR?R>0?qg|;--sI z@L?laq?alEm}EpKu&DpY?7-_0h6bXDskuvPh#xN^+uL=iWMK~0*DaXQ+Ky+Wq5vr9 zPXMv$a>QJE8x%EDuz&adj;Ej=VN{9(Gv?W+Ww}Se%UygM78W0fg1s3_<`2ui@a*ue zsjcvwX;O4Jx4S@IB{aDVA;+jdt+@=Yd4)|-7uEi23;QXWtj8dO_;6r)>{4(cj95jR zMK+cAb6w^*uI75~&XbnRWHO5nPtn5jEzL_rd@XY;o~1d_kry3j-DcrLrsJ+py<1W# zWyvy!V*39DaxA6x@TDDDucW5lI{4B^e_t1iuE^;y3qPq^LHhdVJN%wT9{SK;>8wa8 zx8hHTg_tcP4XMZP)(U-6gzEk?Z^}TGh@N2;+{6iCmWp)bXM{6ZA9N$+F3tcK$OZQQ1&3y6Sn=8!1>40k&-yhf@T+lYL|TlPE8X@ zS`rTM#R6n0v(=p_zx5r!&?HGWT923@jdW$GwyMP``X<>A zLi6<*0gfc$mC6+f)SHw`rRrX_a;Ar^0>9NhWJ}U%_yiA~5qH-wt8Q?W=U>c4TR3@j zQl$$Q$0h$!@}$aKe$}H5=k$r&+PrF~PHrQp7cs^2J$m$lG?rEFhv8Bq9JJX0<_gD~ z{U`8_kG|a0M&Yb~v7;?+d6+M00^&X?W|gjo0tkM8$!GLHvWGyYS`$s26|=k8$n~Qi znKO7wW6vj7SV4~^O;rQ2HubxmB0;RrH9hUF0JVe^9|MMwcr$=S)Vbm%gPu!5ZP2jn zGUz6b4XyAB__OjOUK4M3()Yp}y52RV1c%Pb?Jtc4PZAs1wp!?yWY1vGi8xB6&B*_R zoK(2YnaQff4!XLLcZ5|#8r{Y{T%`yHRiQ|~J+5Wr#>5=9A{l3+z9A;OrzVGVC;z~! zwQl+k;VWF91qt#MB9@z*M zFa9*}F4Tu86m0q;cd~^j7*)5tDQkXzppo%WjT$L|2~vVK)5W_;HNGKG#|NYtDK#~lD5M)$=k zZ{j7jXxVEIHCGqBuID=-zo(2L??GA9HHt~X8xv)N7Ql@w{ArJoW*?XNVz7!beje-xn)dl#J-qy_o&+=5S*2kA{R)6sZrX{ zuH|DK=u(j#$PQmt*0grW5N+yKd0_Fp^oLp zuyAX6LI|tvs!vuZMTbWSJIcuKwIsS4Hvh=x55Wm4>VYa*0icO9#?^M`#T(4m5kMJC zDT+wROfvUHc#Tbs!hH)a<#*6e9`mFsCIAN2hD8lF2dWCe_VygN=G4KEri!OgyaIVrGfjeyd_A9n;eT&H~~{9TpLgIU}rUr z>{{NElK+OCB=AW3qZwysi3kNt@MugXT*^e4KdY|G!M{>4t}*XAz2fq}#aoDN)3%#BsBstF{_ru+{}%x6a+WF-yQ-cSia_ocvJ4-b4^q>;=(rS$U{$Hek(uGI6?H9mj3Lcgw$lTO7uy$z= zrFS?++lirq6*`#c#ipf@ZsHX=+nd*&w(2-V$~;a-;D5&-`uoqB;>f+opN^yHg=3<0 zSVQo{FfNf?Pu_Iscf_3IeM$K#wxlu&6Wxe#_9;q5_L>G`OEzmBxfP{9^Cy2=5prS~ zp6>&JtYxGWnsaTwZ{x@{(lh7 z_`;7vXjloOu#Xj}B8UTI;)5JHv@WyZie6{Ff$fj!OOR6}l-my3h<2==Q^Y5EFaolf z$2+}fOoQs!U3E+^Fglx{0cAQ1AG0LWz|tW>>=%y2iOW{2|AG!xIKu+QXNzg=()eLZ z9ZOw(rpQ-w^Q3Cw|2eR)l*gAN>#9>?y%7T(j^5~Y?h*)2tCS}psxo&(!+vIb@m z&6v*70ASY(&e%JdTw-2?ETQ(OEV1Bd&1Ya*xc2B_@!99UYGPPlA*xbTK!=0GQ^rul z1Ufl6CKGMz755CCdOC(`dgrzF6p2ySOEaMsmA|Qlv;-wR9?~vahIhu&Ezq4b?+>h= zK^*Bdbz;vV8^&sNQ+9CFRRW1}aP>r~_eZ#dEK*FAgw$sdHG%!hc22onLH0LzkVclZ zBO6d7TfQmu36kaCQJ!s2&x`Y#h&GO68&57u%R(am!KrogikIW=Xi(my4G$LKuIR~E zFRK6`qI2A*IKC9+E(b4QD6S?sulR&x8UAW1t}O8(KTF=Ixh{9k+bNnwq&b~k77JJ1G7eYLufdoW}0?-2j~<&$N|KTGNE*7 ze6JIM0AYdLm&)tOng#bsq6I#8qVg6}%}!NDY3Ro){8=id;djGno-eF${zcx%G|T+& zUT304X-dm8Yb_XsmV;n&A+O;lzSnuGl^tWxnAE}(oitwDM?R@oAeuuuR+ZrghsSIP ztYoXU0V_@bP*EK0DCKY-_7a@x<*f?bqb8O~8BJXqS2jF)Dss;*Kj)8XolL`X>2|QE z#^9QD;92`|K+bnWFoGILqARj-9y>MsW2FzlA9^6a0KN-YVdC1|4Ilo_S; za7Z9rjBR~Mt8^Xh;vgMmbD>Q5;&&{QxKyjo&yS!yCKOy&r~&`y@El?^(vuI*?*W>7 z*^N*cduIW-(?iZzWVbs+|~275l(j0%1*jGn7XcKNref?4ukpuV<;1Y*_Gg z4QOOP)LfA&Ull5Jb<8%G&x*B&&%L&WipJUbn}X;~#oMdtyXwv*4qqob4oZ5%Lpwhs>fVBbt*^rxNajcDnD=2*+9?V9Vld7a5R(n|1Fk%pZWY0erX0ymyg$XtahQE0N zqR}v^eEw9%-ErwlT7#@x;-5JWT#ksMQZ`;~s-rdopcipJNI zp3LXRg}Y>K4n?y3%2=;UuXv~G8+A;82A{IQxsTU8%R^1h)G{?Vue*Icu3pCN51Y=x z)VdFimSWS->=kfQ`vf2}yVe z_E|#W$!X`$c|xPY{`5HiJ?;Ogykz^EX$>Uh>@=<`c0nIgo+c z40Pt(u8m56Tj5u-{Sht|xE0Lz3npy#6dtj+(M=QU`CI+1Iu#_5T%05T>)m15G$>

S0RVmadySWy9^oI=q-ZBsL2IT6Y92A`UB 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%0Ai@#_;=*X=$ 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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 +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.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=172.66.164.200 comment=dou.ua list=FuckRKN +add address=104.20.28.254 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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510042002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510042002-Diff-Config.rsc new file mode 100644 index 0000000..13d31ba --- /dev/null +++ b/MikroMaster/history/20260510/20260510042002-Diff-Config.rsc @@ -0,0 +1,22 @@ +4293d4292 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4295c4294 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4297c4296 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4299c4298 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300a4300 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4302,4303c4302,4303 +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +--- +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0