From 8eec1475480c673046473ceb360afbd4ea793e36 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 18:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 18:00:19. --- .../20260510/20260510180003-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510180003-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510180003-Diff-Config.rsc | 17 + 3 files changed, 4670 insertions(+) create mode 100644 MikroMaster/20260510/20260510180003-Binary.backup create mode 100644 MikroMaster/20260510/20260510180003-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510180003-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510180003-Binary.backup b/MikroMaster/20260510/20260510180003-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..51629b4832e4b72fa1512034b64d9b6d0464277a GIT binary patch literal 302363 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μxS$aj?=FOh+&^Vz4n8q!ew(hl`No5_PhPz37q)>@g> zTaw?(a;xFdgu!5o9qyZAb0j=Mdojo8ClNHRNg|>zt}dea`L8U9jbHo98l>LU52D z#LyY)(NLaE^(Mhe;Gvji!qP{d@046Cq!NBwe=9N4KQaJ!I$7wNQ_)XH+TXA{iGH|k zQ>=wJ>FvE;_W#mL@j|0Xm8_DqmmZDaLhw7r z9>T_9WyrJihduj*1A+53|a2DE%POb4Wsg_z4CkDXjdH(c6NMUQOZ2D2p#H_H1x9N*a# zA^`tYLnmch-1MtaUV2u$Rr9Ppy3@6^`AJt=DR+c*tfm74HaqH1KE-W*dP$Gtdzv6? zWRQj{h(fIqCTx4a0Kb-)SWSBnfVH}7YlLzo3h~63N&OSX*1#zJ^0ipxT8Ecs$pH+lRkrv$E-pZ&(t#ek!H#p}CIB%iX`4q`1oY1yGd6JzMJk zSX9L}1ED@NU~Wm2Ktg8~#)8BZVax+}1@AFKgKk@FjQK+7TlS*CpB|q2<|u~yfG1=G z6;!C4=$J%F=ACT&AYnU(Vm*wIhW_4mg!8NB;RfX85gjfw2gLpsqXiJ`>@=?p*dA6F zth6zYWUSEIJn4`YKM`t$TXc>X86@XxwiiJiJuwZDl)b5a{K9MMS%*fD6gwmPp8G&# zN!%xe3H+jiMtlPx2F*jnx0)X{DvLJ%7SzgwaV_oa#w-yl@%man-|!;%8aKUK1);IdZIa+(Cw9nEqNjx zD*hhi@WeL(^pQ*g@D28A;BebEJmwU4bZRa!Gdh!y zLcQTIpqteSwwFaACo;WMy#NsNRO?xFV638rlpn^Oqsqa|awJ zdt#zu&cPPR>$LBMiiLWzFpO|u0&|TFuQ%gNNlU35(R*4?JVG<5LKt3tx(`8WCn$T3 zQ%HtxiKDQjP&r1ro{$JBs&6@u5nYb&3{gxNZj?VE2?@timu^mIlW?Sa$Ro8&ud|{8 zbcd4HObD*Pp$uPZI*QC)vNb5I*SP7Ml5h#TkyyAs98H;nEtizj>Cmz5iQwB8eTvwx zJv&H!rx!?dVgjxprL~uAv2wp(vV>@T97?EY?~n8_r7K-PhvUP(toX0WtP-TzyP$wc zmY1z~o@GmxMDeio5nT)X;yp#Rdr{Wpoq=Hq1J|3`d7{KLcQ{!vdHEAa z!>NE0xM!R5D%KCYb)&iK-y!zYk5~{FWA2jdF$YHPx!%V zxlhac)NlMxLZK?3xEZfV;s%)LHQ+p)ROE=rr2mG9HAXTdU!`<6eIvgr5$Z0y*|k66 zEjtk(>rSVJm{k>|2pQEoyMna{GM}+@N|JXclZJ1e0#sKV0Q*xb$D^Pnfn+ssONVu} zP9nC0`|mUtjiHlS@|s$6NnQiORFh(YRkt~L)pgsz393#o5+#Kj9{FA>Ye9Q>*HQjR z1i@>%hhk2MX27MED~%U<`W-ycGkri181$3_k}Oi4&|d;we~CkGNx%fmwYtRKVO=zOb@XeK1z3oWbjZcqG8&8kq4{UN(5Td$v&q`iI$t~=rY*yaklffr@KthT$E zXQq$~{agT>ZW}c)@=bZ`GUJr_VRhlvb?#%L68M|^B$DYSxgc_v%s`MYXTR31d^B?m zA%KijFsP;g2292}1)O+aVXfr)_@t1%j9CFsCSS+y{ZiAqS*0 zsfdMWz-S1?&Z{kvvpz}05b`(>Q57w&tBzj ztlW0;4s*zLXqtQ1;b|gN?~u8+5W~|7t7km+$2Hta{2x4=1En~X;E2X?#@%lB8hQr)&>>M zZsFHX8=ui)cahPnPx8A@kmkl*$vR@}Y?gu6go0Yc6wb4(C!x8^f$bCYO;ab@<_c>M zm)EF65zv_)3R@o8DWEiV&e+p3b~K;?j++Lrk{t%WR_Up9!Qr9N&HB_vuh)`AgTv?8 z&BwR2JpZ`5C$7%xlT+@l{3jv!>mjnN-W!MQp_LJ$Zidy12-xNBf=vI@{b$@I4GfGV zK*>QtBb@u%xK+sfD>ZdbAM@b7N_Uc=U$v(CMjNBbzTOy=K-35ss&BUmPkKV<$vG?M zNa#0B=cO5}TRR>#+Bo@zQ7Nx89oiFi-Jh-vy}^|6F#naL^Wm^xs0&E}6gzXJ&FOg( zX-lz)Q9w%zH{)b1s7K(ILlVFQ6^A(;s*u$ooiDiIpSXAObAn1@+xjEL@YYzIw|Aq7 zx?ww`NfnM8eCEStdYpDSv5XC~#zr-8nZPQ!SN!bY64}5q`0L%fRmtXM>KJrDrHQH= zSqH?Gp?qRnGP#Yk@L z&@&etV3j`$6YN=DGkZ*D_td}kX~mD&h^wVny3YrF7CQ{UME9~TxLmcw1jsn5f+iBE zURCfe1>)NEfiCacM4sQJgeX+bDbzknLedMHxV*gyBNI?sboQ@I;>2p1R?dE-hT+JI z18lkLNGh7NYMt*Bye(K%6E&XG4Zd88m{p(PA(|nWx1hx;YUL>43T(6=8$@*I6n~L@ZpCIM_%%S72{(K1NHVHh>I|{M2`KFaSSaVSn7JucJqnXT` zWp*U+f>59%$j}#fVY$boRN*D`{p+|8d{3ac^qJ-{j|}ust7}Ny%lEjD@Pk&Kv+Xbn zDet%GPg+S#M|35}OI2;{?-qj!vgDY7#%blUI6< zWaI^3)Gm?2-0eq>$FZmi&qKtQ&nLtkf<_o35@k5*^{qiw-bJ)$1?JzcnQz*suuFI9 z1%P)|dP4i}_K5w$fxqdi#|G*0s&XuyEX#Ip$YdpAU8WRH(CA~6k)okSpN3-4lF)#?$dl1+1myt~2z5c(b~SDgzk=cM@8^p|z$%= z>F^uJNA3{%mH?F9o^i?7h?Glw49vxoowcnegP>L34h_l#jxHR+TPE_jf`qFLV6#I{4wD;U;reK?8dN7CsG`B{-boV|#Y%+E}O7l>Azdklw; zmI%yUmi?gm9DQ{y$)yy~Ymmv^+; zRL0Vc18nkBzx}PYz)KO$&1}G={fo!>zc!=D`kdfC;RiAGr4;~`%ViVtoEN9r3U8|6 zTgeM6PgM4D@7%~Yn{Riq*QAk&=x1l}!_0srb3F7IN6JKWGS|2OYck}fN3Eu%Ox8S) z;x(z|mVb8L`~G%djR=>Mpi&JsxFIs+rTaosRaCR#bQvh4-$aAK!5)Xy5|33zF{RoE z($#9EnA!>jjgZ7HB68CUpJtI`lZ&#=OJf}#5{v2>#Fifdxv)$!R~Kuo7FN?^tuHa?E>E%8!KJ*Z78?;@2Bq49^VG9hB2`3xsL=>BgCy26 zJcuO1DtqE&A)@F2t?1UjweO(7k$jw66>`lE(zCPifDK7Fk(l8ne=dj-KY;m##5vN` zeJfgVqOP?Q(#e~g`E1lWKnw^EJ#Qzf&81VYFmI(gv1_bOC$MJHCb-7CNr~UgrM)FAb05P_#if z{V|GZ|7!q64J8nylAX7%=~SmHcf^M;0O8jC@!f#7$l%#eH6=&HlCSsw3k)rZX;o2c zlr<8n;S^DelDz59m{eru_NtY7SiEGzY~6S0F2n_Bu_EQyFx&j~)IgCCMHL0bS=!ng zI!4b1!*nsFL=$Y?NW&?SX^Lw>1=x;F*tDmjR@0xl6UnWLsx9VPa&iJP97P#HC;3~? zI!zv)i(n&pM*o#je1hRE`-kj;N$yazO^Z%-r?yQ!pe0>QhD!h^@@W%M(6>-xQa9%% zy^rTJ<+#PjeoVOo%y%tuz>7f2?e{J{ISnX|3Md-&>nuBj#)V9*U-F>Ye!Mln_#Jjc z1F_zP19A>i;C2XL zBO&dE3$FM#=%#i#t=9AlPy$BHM+F#m}I-A9SeyxbF&%&$MNXJ?C*>Dwkn-xl-qu_gqorO&Gr+9myYrv-;o z3%If*``Id&D7DDX;qS?(xRTvMbB~FPMKMC^~QV(rc6iYhd2K*q@02%cj(b6X2;EKS3Rem3aeK#O$XojF1 zZIt7S8$gKG_!ikb2NLVNmY|ZNgKH_MCS?E=N7G7*F~vdiU7^qvq2f-Z%9p%CW`Rna zSDp8JD(y7Qa5v8yUM!QQ>V>vRQyX}sOEb}?@{T;_^y}^MzxoY95RW$}yeR_fr=aDE z<+;mtnVCRV&1zVQ^udJ>ABG(^LdTg+)9=SFVY2M0GMq)V=8amxVZ8fFb55+d^yC@~&9rUez?ABUVkzV0G@HK*V(o z+mA2Q)EGU$W~Y*YzFhk^IpjW7Zu515L6EGU@P1)*ghyHbKjQ$@Lv%|G!#?!czZd;; zyvN82vyeh9VbN&`W8Z}SH%K+XwL2qJWLmZC^PSEbs(+u5)(&-g+C7QtKMLtt5WFwY zG}awbi9}9fGNRj}Etp`_yG78=Eq6&#JuNv}F0hpH(EP7aM{!09J)8WA+^xmQYyfhU zDy1X;{7X{KsD?wj`z=+RBzxd+0g9HAX!8(wQ*phi2wo!_e=Tr{1JB;}mB05jIr;ry zcYKC|WQi(MXK6uSUQ|aF^U=^&ts?i|IDy96*x`x=<`?1Al#Ob7!@c|7;oxY-@QR;} zdPECyKZI$){>J7Flz5o46_MT)W~XY13PW$Y;ca0*J{pM!rO_2K*=zv+$=*H77fiiE z>!R{06l2z$;C)ML5FGNYOCzr#*w_n#4M@z=9s2?u*0qz+^Ft~=ZJn=frtC^ultfcj z6i>NP#Sq}jbIHz;u8$w;^}~Kva2b~C2K*7L(#hqFf0WKTz%S`1B?kgzF<*^DBTE2I zmb=1(&0mPrCojNVoo7uO0QB3)A9t+ntlq4{Jsk7T))QY^*pe)0Fki|9yKL4B*_P6; zm?1kdaq*M0+4u8}pQ@FnTX{AHL@TU_qx`pDJ;(==22h_=Q(>)Y5|v~KqE$t@5IYMh z6Jq4oa`Pp*8nm2XXjcxoDcH%sks3liymm1tZAv|Dl%7Q z@V3XUne7AFQzbA5_SvYnIb&_5W79~rhecz0fqpB?2NM3@p31Xu}Ybi7a8p581=zS6yA(CUJBJ1UhGLO;24Dbp( z|I&wE|HuLCcLn|47B>rk%*&Viy~vHdIb{yr3VPs$1a*>9D%~6vvy2_@4cQKHlik1U z0of*6Uh1~vitSB1~TIP!mOz&ici|8U^pyl;nG21y2aZek#4$?6|a^Bi|Ox-m7 zHlV2i+BYH?i~?Kp5ZhBgsOnw3!DCO|JO2ZJ^j0}yNIIDU4XE?h&Jfq~OCm{^9kcMZ zv}G_{!co=Oi&Y;w;=6DaWHdL2r)33R^#}B!DHXWHOa}@I5sqk1&VFNTVmZZ7c=?xM zJw1N$DFd$E;7+yfDU{BNVSD@K!qNXa&KwiCCJ-Q2lFs-h&0Y6BSoyn z3c(R2Em)S9yz*m%8_6Ypr>CI=D(hF_&;_l-`5t=rf(hBqG&&u!`-@IvZB0KbcFE%IW*=kOkDx~6WgywqcvnsWSb0bG_hK1gPpX=sY;`Jn z_gxseLPbOY*-N}3aB_G>gc&w{S91w^)rwlmt!vtdq4(kohVB}cCUO>>PL5`K$BXCHF(MUo(|J?16+-dEhusPZpOYZ1S z(=q%FDvIL%ujkPVd+g0x6HziOWWXblq}8~PTHi#F$EL^6!Wvl}F+(|G)CObF*Yy%n zm<(u`HowmX8#k}RT}u9pXiBc1irbAmHhgL$(jL1!YLe?^eC#3pLPR`lg)SWvgz)z%{rL# z*hiqFf?NY((6jR<&?+Sl@yW1XGs4ojhbF2q)L4L<?P)yf^2Dx!BQfMQroG94XiKrND*Bmz{T?Zs9=P$kSi?rnXoU~sQE2G z{EN<4@n(y)XotYG-EkBVsU1?SN2Nky+{Qu5(2JWs>6S9+4g*O#8SBJkrqO#)55Un> zOUxa>d^auW`L=Ez_a19M?k_*8TFvA;xDfXe^_r9A>^QuA{r_n)_Y|)i{?Xpa%t7f4 zM9U^bGpFzsr49!YK?>o02Mo8v+B>4>OM&HI_%34#_PD=+L0X4$|{n+R2 zCt78+-j%uA2z)i+0@0kd{vTaOU&SsDcXc%4N^gX1WE=|rPPd;;voyC&C2|@sL%^!| zX1W}qW8iUIMEI||{P8Foio#8hdtIj%;Lr)o-QUBj%4Lshk52pG=hOiGk?h(OeCF-Op-=Fj%!!2p` zfrWuwW-q8)giQr7uIjEjY_nld7&+l#37J^kP;Cf4HxW6&@t6`M#^eQuQK9=eTzjqO zNzDj+ChdAeX6M7)_}pt4By+$M`#` zc_=Cc*vs&Lb7KJx1!)J#F<6CRIV2&$3q=pQw(jr5_jbDh@|IB z%w?2)FpG|MkKX?K`)+ILerNJfC9204*L~a7tA|s=L`?%`t!-3YeALgt4`E_ znxjH|7aSc-2a~}Ivue6 z1PjCQukcd}+M}3BdDlB$+2|FEb%4IYFQ7%0XmA zWBc^8N$R~ev!Wf2Cu`>xzoFwMx#e-53OpwjGS;Q@9FneNOVPj}V zib??}BJi*ESfF_GYmLeHYR#PI(*MDGkc0YhmoA*TVuXQ8Pl}kArb=I`s@qi=7m0lz zwM$`0*a8r&f=vd_7e2D$XneTan1Gz)Q``xb59rKmZOR!Aucos_LLtY9BXONV?eDPB zDmN($8S593E6jp}jqBzHBce@j@M7X2q6pqe`;*PbrN%OiW;9`!o-*?+r?+oCCtT!j zRa=BhF%$&A=+gZTa`0j}HHr`-g=Dx>jJLf>yxTcfn_dGK%N!Mx7;w@z{#?VKknN1;$?7N3G?v zW-O6i+*{KqH<#8a&awi)ga&iIbG@Ge?FQl|NFCA^Rb49_aeWFLA@UuZq!N7dO}qKf zMhQ#W$IfORRHwp?hPt1*m<^6FY{VFl7<@f0W8=2i@Gl>Yx-C`f39JP~NnqtpZWO+} zxI5Cl?;T^eB&(jtKzRHTSpa0|sh#z|J-@a_TZag zSPSXQ*a;V!r$KE8PLg*cs$4-p-_*~laq>7dW4ip0@2vK5SC3Ara#s(|R;W{NX$=*T z>ceY{YPepoKFWIL3h-U6_fFP-GP+x+E_gnr^SO4F6tmo)tszd<JG{d+f@&n)r?T!I_NC$^{&2lhWeVx_r(kN3` zwr*q}j|mxt=+4>0S^aoOmk0uvQ(w5xVo!-WhvUt7STvqGld>EM=KnN$tt~kP#3yT+KzWK^C;Jn%8#S5q@Q&gR4B92xu-fJH3_L z;fCHNkP*FaFAGTS>(VZ8J6wrCaUpP3U~FhKXX{m(4J45j)G7J`U>T&U@k`&Xqe@gq zlf*wTpHsTiIvc^G6|SB*`*$@}Q&N&@c!u3-4HIP@nq%P?41jbhl?vDNd( zY!((pHpK)iwZX;zl=C3hpXD zdA?h5Cdo@bn6}^J`r^G{Coa*Sbypn^wTL>wb!rfnhEInCL3B?J)b4xAQo6k2rQbjA z!>;_;bC>lcd2?^jj{6a(rpZ;JT5wCV-!PgsQ!X@XZ(Hl;4ln}WZ|RG*oHbh_Kr*>M z`mrIQ+6q~lc`y)f#hg~h0-p-uuPN*r*#3rwP^=EzYLPJdnpj;TCpbf+Ek8yc@eN(D z&b+`}t2-g!R#K?oPu1B4+NW$+0PjCc>VCqmNmBtP5HR$RW-N_z=~+`g76GRW4P@5O zOoh(B58zh-u^nnzw7R<15X|fo`nmzL)@GB<1$mdyVN93wXlDt7YKs)z1X3gA+dC&( zN0K$r+UVfYbX)v55pIapQ@-?(R#Psbwg`51Zcw9+)KMN!o4z}6*7x~MD2+o_Bx1sN zMVpo*8GvZ4joFn@hEC+#12FHZ>KyDp_$8kC&^Ic;V0cf~x->w1;I)TGSKpwwFWM3F zaWIb9q4w|b6|s1m7a~&gKr6KwCyE-(qlusAR*7$z8KLDMbvKHj*rt-H^j&*D z@!S=2QT~@611%Jnh(?FWpiHlCvqPQqG#-c7N_g*~(sU6?0?d@VD657UX^QJHd^L2Z z2_?8cB#16qmbnHyD^3QyN3O>k7Z-u->w{)J#*f~ElKBre1$!OKq@?odijLrOM)`TQ zw>GCB3{Y0TVY`$atJ**O1{2ED`h@Yv(n<5n#9mYCbT}L<=<2foK?yv7qrlS@pAe6Km8V=0r1t8WBoc2mY#8Zo#% zid%S$D!zYw*kgR9CabS{=~_ZsdM#Xe$iW^DPOp}Z)E=yDJwwz2rIbAg?(xxAVdl^? zpo8pdf6S=~$&S9S-CA~SKexc7i%y$kTzSH1N|4wYkkJ9lrVZmJOxJ(McIg3w?B~#mT4p;FgXsej12^Q*sH*I}NvD3&Q^;_B zv>_%B_Ph%5t=n3!10v!dvU9*A^qS?D4Z|*jA5XmeI-~Kw8XYXT+j&`%uqkdK>O>U? z@|5)4oxNL|TF@}{@SCl}sjgz^!4&|LFwS*YktWQ6T}M&wgHbihvhniB(k3Ob>Gz6w zQ$_t}?X_(OmQj%y2T#exUb06}Ct#HdyTJh#&}iFLg6ULMdhy+9BF0o?m_ECKy)X$~ zH3pkwCHoU}QOI>%tJ)C;7D@^>m!&(r7F`U$U$g)#O!kPrc)P*xOOQEnn~$Xtbp#Nw zqL_U7B$}6)*I%V@i1eEacCp0Hq4K-pk(!>$*1uwk+6REt2GP!VLQHYAmf}WhNh;pI z>Shh=p1k8n9z#f8!_%D>OM0rM!RwNXjkn8>z8iFo-0NiUkb}eOed+sMW!Y;?M=cH9e z0DH=~-VR_R8&MALOI(~91ENP@g#)5K;~AE^h|3V4A>LBZOn-o&Tx)ced7lZR!$yGG z)J059k01OI1w})g(QXI%&a~Piu|&A8{7e&|RT7>LeQP|WQsro2c^Gc`z)5w?m+So! zvKGSad^G$aMQ(ChzvMmFe= z4m0MkpVNZ>q+ebYwKYFlvJ9ZPJiaJ$mm{C1$2M2W&`T%b{;Ro9VftJknM$Up`oDRm ztSXAa=#ED68MatEgON-m$b||rh0FP*8n-%th}KUUT`;}a8(*|?c_~N=4`YsHrynYm zQpG2ZL{%*TRY8}+fn&B3#C%L-%paFJDWHQBEAt*OKtMosAq61y8+aB%s)OC^&Z}-d zVO(I6VS4Ji=uIO33i!$heQh+-#k-pABYSrVQ_+MiEhkuF|BxC!W7H^iAQ#BsWF3Ly z;=RC{j}T3eVX5%NzZwc$>i*vd+wLO~z4LIFU*TKNC=5>IEe_$CS{~$4RKR?LTXNQN z^EA0&=WlA7pVJU#+&D*T^+IAH3K&(@jTxCqs1~|dK3dA@JAAm-UMUQwaX?v)z_uf( zJ3>?QOL|ecY>_+HXs%z;zp|)3aEAuA6GNcH?w3d%H)_c8p09`6NcF>G@QQ3Z(*6db zl|ChWH#M@iLidWbWJoxm0?b|?Gw+dDHqQ^8Fu3aTUH8;GHnV;y3I5VSGL$02a5T-) z`g-!h+o7b9RB%`~>9G$i`9T*M7OCwAp|ksj+H}Z9?fWpv2!I-%O6Y_TfFppXkW+GzvrCer+iWVY=Mda7F#gC7I3R5@l++C|RvkL)YbJ z(r;`{?uk7;s)UG%pNc`Z1C587yxZp9GiK+${ zAPijycif+bRsl#;&nA$^wTtS`*0~H97n-8V_cn=X@vT#jK1 z@CHtyL2)qN7&cG`NSY9tdq3Ef?&qplCgQ%A8zC|s>jG2^#ZGtqB)fhgaVB#7W_>!U ziaG+NlBShW2gXVz0<>XpV3#p@Kj#@hn#xqEN0&Qa@{z1w;0ZUl)ci~~BjB?$g*0o+ zoj`$h+==q&!I&?s?y^tQpZ=`k^<@%=YwQ4aZzjmHC-+v%*)Ec|`YtS5-f-aTz=13! zoRxcUu?n9=C`Jj`B@~MCPhdxPkd_Ho!zd{XlyFU}jvI55=tAjl%N-)WRp)=oW~-z@ zV6pCpi+qK|Ay3bvK`y8Q&L!4ut87tIhJsN^%-yf{E3{=Z$%~m5(}%;pYg;Pr!QI{N zM6gxGHU_0+-}nZwqw}ke_h&+QY@z{NUZ1If%WqXCzueFr0n6@XvwuJiaTC3KQK{G(WaRq!ZZFES-NP8O@+fxaH7h|htxUf&s=cYuIh#{F zP6uT@;>9`I4~=;ACp=Ts_AEg#3OoaeJMp%yK_E%*12X_ct<(|>hG2=onyDnAu6@al zQ5o!WWnqst&Ca}75AGO~EsB)e){6B#-v@BVY3H|n#1#ZW+eF&?{{=f~7F-$zbm#Ru zP_TH=S8_4+8yX!>7Byt`#hDI&AF>Dmbm1X)j5{pIxFA3|ROBUDQ`{x9c<5Bh3A9AuX+o6J;kBq@oLD!LIA2y@78$&yua|Ta1l;am4IlnHe)V4=hMdu+^87ZOn#w8iniJ1hFn-yv0tcO8BfT@}cN;*t7T|j5=&zFwFw3fL zpLv+9atx)PG7fM7;7|7u7&me)qp{|O33c25HR5ZUE`Bkilfwuss!9J|9XGE%=rus_ zsCSXCUweA!)ezTAS&F*zj=n}yJLxG#S{2wB_(lQ0&?7x#2-O3Y(O~tqfyEf7j%pB; zh~sC_#z1M2OQu2#et-zs#2BkLml8B*?oUd$*;V$HV|0Yv&S(uNEfUGAGN+{_P#@zy zeh6rJuf4kwwX900R3)oH4)L#AlY=4!yxZ?sOD zvwMt0D2{ce5%$G*Ard|5-^qtlAlr^yY9YP^lz7ov-k}M${f<$ z^D-TXytKK1+6H)KWb!Bs$jG=e5VZxWwNC8Q(|!!UmdSR&Mc!5NYmgW>QA`?&U7CCB z#|i!O=O*~ZUgvMW7)Eji+|A{c(_vHHV#Mv(@qWwdH?Qgv<~QtkAnHXzm>CIIp}yeapRSDgxq_!S_PjMVxtGR5F(Ph3 z<6`1toPXVNE7uu*2At(u2Mdgoc2s!Txs^F=G3d|oYgFTM5V|w`e}#dt?(cosFjkwM zF6ntU@E*y1wfiLCv#IrTZ{m&KBcbr~>`3|0vyI2W`?PZg<%d z>lD^O2qX$mC4D4AagG7Sh?w8a%#XmgKh4&jfw3!f%(Jb;-^>(JOGU!{`?QnltkEZU zaV*oKaT1{?Ji-;Xw=%RNP2W7EReGxSjEeyZyeoNsW^Eozaqhu#G^qlw=)u*#Yw*Nb z#M-IvCJIQiJ2j3^thsgm=OKz3;(KJ%M%O*uyD(`hHT3`M!(A6>dr^@C-SPpV?y(OR z0}CE7i|0Tn-GW@wEcbsEJY5io)dmeT-Z9?}oEff=466nwLpdHC~eo^4+{Uw3~PHY6XmuU_?QZ2#D9Pthyku z9ULY@9TP?Qs7U^rnR=&6nf+*bEB_u-Wa=p|S6K*$LLue9m64RnZkpsK!!J#+S!ba* z@~M!gMdpw64EpeUAC6K{VVIn7?6piAfV6`&6?@1}@4xrPgquBS>I0|CPoQj`b+YEDGp{+gX)Nen94O(95`3wg@}Lf`J!F@9#E2RC-M_#( zfDLS9u8yDm2}5D_?Nt++)3Dk4Y=u;N~z2Xl@R0``{{U7ul+=gs~Xh!a247VfR#~TsrA;rSATkd@?IqC*t+8$=Mfr) z-vN;fLLZRi?v^gB8O2g&ORmaTZA3Uqv7nysee!?>Nh$24L?_>=2zT{U zS-{o+{`x^eL8Sk@SVwb*suswNn`;Dt#Sz&vbb3Su-q&N*X~ry_vd~h(N1MV3X|A_A zs)!sr5|1`)>&xsS`M?~ST(?yOM$lhiqHkI8;$Hw;U*~Gff#!#G8H;!j<3O^C^C(5u zGKYE?KpPk_of0dqPIA!7+vc|cZ*0{3Zy}T*eL--TC<69ms0cyCugJ;c-7hdukN-GS zlX=;-*8~F`gloOj3_b}Z`>1cLko8pIo<^%d%j$s>ub1&LV4+!nUmD=G{;>omqZRrJ z4{Tq`%>f1yW-O`y=)TNn(X~1F9IbPMsp0OE8Z(|XZjIucFY?d6Js8`J`2A}%E(T_{ z1tzE^z?GMyQ$yi2limOY%tbHJtzl7}us9ixz#%*Fs<=$NITB;?F@R5F7lKQi^NR#u^`NNIvnbR4D`)Sk@}*s1G$Av}e&RzJ=q2G6 zK7aC`qYI8v>{INRw3I2O0TAHKIN)X48~PbYR=q?)vibPDAR%!`LZ?KJp~NglzY55t zYN?ZW)j;`9IH)@8zqymd$(~j~A=?(?-)fboJ|=vU)Z+5$TFxIR+Csc!N8elA`>O@sBO4p*IHnS8222zctwuVa90bty{@IoBGAX{5 zK`K1(x&A}EBs+6^@f8S@fh4wU~k`*@|u zlYb;d&p=#vKHQp|RbU3#LwZx*G)*muyAW|oW>Cayykq!R^4u>8zi$8d#IVjA_kXEx zO;L&z82Ap;gRT+AZ>qB>0K@}~Ixy5-*gwynSZ32k5@>2 z`fJCxF-iww8tAuk>l-BRO-?jfQpsvYPEJfsm|DnUCd9^6rRkb17^lIHhiP4;U9~dl`9cu8}=Kq zDt&ttU)K*Zftyl#w7@9wG90;_vi7I`TB0#fZj&+*Eg4K)(Fb6R8xlIOyo&v3C&U;n zz$>Ot;A|aO{xk+BMDs_W>G=;C9$=FoxNnk>%90JIM~iD^9u*h%&)Of)90Vz6*IxzR zD@TEv_84XRCckgmKd#KsQN;8RN3`7XHtY&m*^cH9Xl3ynUqE7<$B#;BRl0U5glSF# zvlpsvPtIT%R>c~KF_M}5y?DeJLmlYzGbMnc$+KQqyduGFHR2E)emN8iT7C}Sj+gyn z$kQ$Xsq{Kr=o3RM2Xf*&9>n~%nX<4xS=(?dB=I#+R=ONsS7=2N1(bvo^_!dl0Tj6P z0tRX#e#W^$GYY)u1v1T7-T(M&GwXM`tCMg0Dp!lSqnWJX-09t?4EO?nm9}LEY@qfd zqf>$^#!j^vccSte7;|>ciM2XtA{%9)y%h41; zDh_@5m;WtKGEW)?`z@~ z469dF)exvM`YB~`2Q~JlgidSNF2wfkm@tn6R6#<j(hcerDX+b) zo}$8G@MHO!j{l{y#-rN}eF1lO=)_uSu2YJQXe?Jc`vkZ4Enn^j0|jhrBv<%FOtk=_ zi-gnOd8{4bE7ayT9q}r`$k>Z=P(iqfXbWh=P#`U_G(%W#)TiG&>c1QroW$C5nT#B* z|JG}G;CffbpMMc>)9OFD7>8F+m}xwu?wfZa|}FZ{ll3$Kc3(+%98R zEQ_-L=2G1EvTb36#6|?A8ZgQIHR3d;u#?Wd#=96${a0+QfifP4DyB4Lerjlp+9|9W zH&#s|cT-!h&hw&!;@eyDsOn0hYwvzv5ayUQSUSO8I#rfgzu<-;T4>%{kp}DXu8xM3J!P$>S2Bh^L;;62C;p5i^GKHyv&?U)0_1 z@XBtBwL-*-gu1}?h7aL+k4>FtzZkavU87x5Q@i|xe>WZTuFb8%i0EsgOvd0lB^_k- zo`;3}AUs7{Kw`k?8#y+bOCjsd9ely}b!EiTX637PdYt++rr)bSQFolNkE{rUnH`AY zL~pZ_uKJz?;R?xTXjXu@Irw*i$;#)7G49Q9SI^v?%dpLh0v+Zq3M;Uh0B;;u+h8bO zIs8UbIo(>8(-Mn2hW*dh;V|Knti%tgU{Apa)pA`6!p3~l#^}I^OeVBkdQw`l1>zB# zt4ofqhc<%I#a{!nngQ^sxTg_bu8wi2`*92VcxJL>D2B zz4W=_!gixFV6>y_o+vu6Gc%OD4l>|Nuv zg-nYi)v=Q+4L~I53e@{FE#uJL8NV$yh)8# zT+*dFVUTm&z%4-X^;^Cp&f}sx3IqT91>!wu6!KH`41MTk?nYOImg{Th;%Nr62@#nB zj|{dRz8$dicI8Gfa4JU0@hFtXC5UZhscQ zACDLMxn8|$bZHqt{{j!rEiph1$PNeR@m=(aNZnNTp@_lp_s~8-qru85==LiMe!~!%H$xCd><3Pv$A#I`w!|9Mm^9U z_}{QQ5Y_BI0WiqhEilDyLm|ClX+12M+I*TB_n3~)%Cm4*!;8(1mw|(h6wGs!YMxE7 zSUOQn5ASgp#px*G#aG9}+Y_ivgPQpi22(1#K8Hshd%!sIIlO{CdUc_e&C%&INd2aK z^(5!M$%)Xk-M_tEN-{H}l$%vu+(H(r4hn&Zh%%Yzo< z;iZ|_Z&JPW%=7N{ZP_P?PwcCGd7uGb`t=!7Dt{M2w;=I+tyEaR_9u4SFg@Hea#HHH zE3g1TOzyyBGWaHrsYx?MD*u>LU>H&!Mv;gBAX=2yc(_I)_NQdIddTSVE*uRidAz=x zvGhXDL*MmWhJ4G<*a!5^R$%ChR#^4hoaP?bQ05zYPQ&JBM?R9J@dr(!jON0sNhLI7 zA*$50T=Z_PT@0kKtd6tEDL<@c$vFhf=NuspHcqjwFmB(W^oqNprwfJ9#Qb}7BUG~D zQ?JKR>+B+3+m7jeFlL!|wyyLHcY!vdY`YJ8l;ImNG^3L@ibvQRLB~xc+Y*KrC9FcJ zUhTu`3Ai(;al+`gqkEC}X252(iCcdu>4SOBxqf`$(KlaqWuTired(!niiL4x*91Un znBEEOInw<$316=u=CtvV%RS)$sM=C%ThKBze3n5uMu)@yw(~t`zU5?Be(eVO7$_}H z=vkg|qHehZS7&}5Q(lOKoTwus39H!m^MmDstU%;aHS)^toAF87k8o)aZ5ewuK+GB)sa{V+LOKN3{K*N2jv ztNi)viLf_f1d`-2QgX+;`14GmvG!6LhSiwf2Vmz5tj4A;mJOCjyd}J%PMeS(B{{%G zB1p(Z6|Ck7G;hj7s|TEu3^_Stcxr5c%S^jn)XeHzo)DsH zEbi>57`IpWIj|Oaqn{3RuypK~>N`*X+G3DB)@Y6KW#!?R;_uK ziLYM*nihONow+*7_qUG-}f+xwr9?#QWuRBw7<8o?wJE3VsIr(0yqlraMFSke$3 zYq2T{ws$jCOk>neej1r&f90eF38Aeb4tU29eJG>sM1~wFZwvLifeNRplX)5%hqh(@$WOdlaqXV7i?0PgXr!)LA zwk=Xv=gC3D6%w?vs+@aVEexCo0%23efPXm*=+@GfTW<=@UDV8gjZgO~^zV4^oElu$ zbFTc!7LE{Rdlktxg!Ao#gJLK=tr#;cU8@rcRb1_`tpuOatCnQAj+$1U?T*rv*QF?R zcZw@i*XOkAR|mvPP0Xq%;&TWPSiXe#9r>CfOfUYuQ_*PwH3JqH4)lKGRo_OQh1L0X49Q86 zV(}UaCEPoaHsWe1ow7gU=5u2U1EWw=!K+pkEdA>J+pE)fPoGf?j_9nAolaUf zx|=K(wakw#e@%DCt6sIBIQlWR<+{}lV^#LiUe>wn%PY>co!7`MoLTg9awyFI_q>Q3 zhx5aYEr=G2_-EiHCSO^NxvKM@3a{D!lv}9N>$oA^b#ZHiiy+eXnlv9wS(k%5=DlXW zLLdrMmkDyMP7$PnGSgixipYFz@$PpUGK7MYkQwWcSr+8nodci@^2NB$R&y*GQw)Ff z*I!-Cdd(%AS9N4T1RgvSmUyOZZ_l9L{@q-38e7H`+EGgdZ!ojIL#sY7bYhK~S+y3% zE(!(xS&tLnPf*U!D>?L#ffHr)VecXJzo|v%3}BjI3!0Ya-{6yE0X3H9zG-WD>tPiw z3_YJFfSIR{LZ*^z$moD?@N@2)sV~F*-fOy5v!*^nB){4UcI~$`(F>zCz0$EkxY|L{ zj)50~MF83*wwU_ARa-=pkX_D%(uLmYM!QRW=N4&|`>R*UHOrfb-+bOG0; z)(4(Fof|^~jGgjp4+TLMjel(LBinvX`ZM!L97rdti1CenbeU z(`hR(Y)DJ*)&XKAc*%yAsh)T-(P!0bf!kl2%8mTRwH_zEAKZy@4@$5hM{Xzx?*lvJ zfyK--O1GJUI`5tXk( zy;=lE+$oKrU;O*<9o*@rPE=0hSs)GP8xOdF-sIWQe{x-qV>x1~c0Zqh&*I+J$Y1?x zWD!ezUyyS~0~P&YV;n_x1924{k6!@_@%M`>cfOwq-TyfvGD}4zB8FzF{yYI^Ts1cd zg3Is`K#r|6Tkd64kXWPs7y_G5HAl4gf%5fJul~aap{oyEJx3Z4P&>2qRN{N6@A7nE zqwSL*_3wsWT~oZ&9WKe?U4=>Pjsp1I5aSlI#+Cu8AYvrz)>D^2EcF~W!= z!!k4}YfENLdxK{IYh}^N(n_+3I^*Xzj9K(cPMdAT!iA+V>8W1x285n(ZxuS!gw{wyq~I#H{YbS38wD4kR0I1lj}ZHIVH{rH*swjuw!oo6d z3HoVAw8okZD%ExQ{IMZdOTry^8cr%}%dP-YMEoLLmRp?XmGNVug}Fwamh?^g-M(TA zBf5Qufrq63dx%?PhARe&0DdG$irPEla_c@DVnMZfb;1CIEUr0c9u&b)yG&7@Ibh3p z6*PIhuJw})aqENgq7hhDR!~nQydVr=_a+0ORyNa49sJ}cjdTb*-HFi>R7qkn(m4AV z%7kZpd-bKZ$a3fZB-7A?sI>HKbGr+RrM1{1Ku`sPprn;h;>EWAFfTcqFFTga;(0O9 z!dT!cBf2kz;%h6%b~?>ZWz1ykQx!`)?m(4(&R#7#A&dJ)4q4v`V%|VPIa68sD z1KOL&n@T7y%DZJ@k~kg~mH_ifuup`m+(c zQig&iP<}4Ojecq`vdyma*jkW6boID5CAMnI%3sRt=6=5!MZJHN z2Ik(uRPseDyQ7z0Bz|-G#{B}~F>4kL0>9~rcB~uE1W>n0GOxD>P4K-_WkUca?0zB#A^V3 z1hAd?9MQ`dq%ylB+X4%Xx4Z$q9N8ICP#QVE+z!O%q8b$GZ{cTlg_}P!*|+ITlp?Y8 z%%U9!3DpKl+1efW*B2y6xOV5726QfkiK?!xhF0oG0Gn~a5lW&OWuE+YDxc{~d`Yu_ zFY%ug$kYuVwC9P5n4%r&IJ5x&KLEf%jvuy1X+QyWtFqAry=64D<-AgAJxA^J0PebE z=-Jl#7xbg29m-!k(RpklsO$bA8}u?I^Z~?T)8EeLB-3>sGH(;GLIK8@iFc)1BtA>e z_ec6j!UkJ(hrmQ^oBiQ2aKtvQso*v7aG1K*&d6WmBwST`y{-{ot)a{vTvpmB1SHK?+X=pRre`CZF7p&rG298Y#A>WA|lFnDXjd2SX zC0GGO&x}coNmI9w*?R|SgC6yLxaGZfUM}4LP6Y9ZxNa_J&<2&gsxQ}{BWlKvayD+2 z8O$3&vP)J?{+cr&b^S84a*dFQP`O5&j*aIosNM9oOja(#Lv%Mo&n@sauybLjYE?XB%YmpBS}&z`8~p?aDFx)tUX3nNv^lm?vjuw#3Okil2xBGX(g?Vcf(WK^FHzc7odNG>ucIcj z1LyY57E2VfSo~7o*fo=it981P-+TF&GUAJ8d$(9ziwwYZN(J5FpJuw3=?N$0xs&Bq zhd|8S$|i`c{Be52P*7<5N7OYb30UrF4vw-SM!zqXWj!vSc|tQhiAd6 zwj$SF`WoYY3$YM}6}cM&}n07{Ta)!3o>9>kdx;Hhd_|Eh8zd zGvRG&R}ZL$?`9^)Q#_Ns+Hnv={)bD6hp93X+CLlFQwx@X$)Wu&a{5jnhM7m6L-F?- zi@Ruo!p41$XKvA}^o?Xc-hsricp=-n~ZvN_Kj&IZy;5 z^*{Bl=Oz|n^q`hV=OQ*prAPS0yIjqA(&#Doqb@ZxVgTi}6N=%B0Rt@WDjeWO4r{yy zJXSov3vSE;2#xOgSIdA{{Je8KIIe z2iUXiZ?u$AdkGyW=2!^!j$-5S-so4O`q-ruzrj*!!{7-J zJ$dJcNPo=)nu@D@~i7Og&l5H!La^n3~uv zWvb2yFPr94ujM6G6hut$@Oi~Rv66wHw_YUXr&57jMY*#&W#wO9EIXj$E=1fH6!**# zQ$#|qE$VzG6QCVCif^#6qjWhn-a#UDxBQL@>w{eQph)aUolv1YwOg-`1R&CPocE;F zYW`USyTI#L{p6K&9QZjjAO3Vb0Zi0|metF}+r8KHh9ry&?qFw+QdPb!m6oGNandlb zOCWE>V7r3{K0FX8**(pK8?UbpMJ+zZ5dS8dOYztXANAraaMfZMlW5k&8Nf-iffsaF zoh62&tZuns2w0I4^dfE~*S;$95;ye70Bf`^kP#p0?G)>Ywkr21NMEwHUGxFD7vw2L z>;oB`A>JZ8mKM$Y|Ekw-foDsIgvgQ0>eX|lQKU&d8I=d7K=Xn>-V7#2_Cc-xIV$@#&S zqc)#y065~56Q=P(z)0=NWjeUL22hpZJ7i&^5w3o)Yv&^z?7|7w6a4J|y#S&Cg@#;& zr9@i`a!aPT(hk0vhsZP0eiAaQ)Q+{ww$i_ce1C`1*df$lkff?RvYHS3Acrah+WrP+ zX+zv5X*PBZs4_f9OU~F6IOsod5Q0bw1Q6kuw^yTtbg8Dw(fW0zOmzo1Hc%#d5WHGAM}4ek{j30Mesd+r2`D&Qby93DFd0EH$)ooK4)ZsbfD?*Fhw|FVa-{P_nqI z5*aP+s)R~)WaEo2D^#hwSuNpRdi6dxNhXFLg)Kp}Umv6yb#7WPczb*7IIOx9h1tSF z6)Yt>JXc}3{H4q23-#hTFokcaPxf(%lWfsCFp^-)c09yu4T(95v~+;1Bz=uhtvdTl z%Np)vEu@medV2v(E%7~i3nrBETU{%*rPUuCh6^gYD1RGoZl7srhv7#zSOH7LOKnU8 zjF4Zw@9A1FywB%gf8wjd2ZA1Oz#{xTi_-`U8 z%r`5VCQ!5CH`e(W%Wr%09b%~ob}?NKPQuJk{QwMPfx_tChD!_cA=R5`Z8vgQpUYT= zFoT8-+(wLuCv-Qjl5jwn5i7Y25h#U@fA>JD@RtOk&)g}# zqXq9D)Gb5Sv(5O}E*Z2_KL%D70RSEmK31Prp#E(W#83cqmM3$0Fk2ynnoBMc#vX9CiN3_>=;zfD!7S$*c~}m*uk63s-<`~GU@utyh#jy zvd!G~iCoXhU@VKWG!@^%`S&<5Uoo(L(zVscw*Jld9mst+s@vj*K#vx43XZq@PL=mi zk~!kV!4*Mv%YxSvg!Ep4FqXb;EL+OSUo2!YlS*2+qTy25Zmrv`@*pDw_VIAFsW_If z^QSlvo9>2OI6-*Fy3FC}luh6&hbSep-}ax0NIdDN)gZRAj^&r1Tj|_3ZJP^Of zNwWx@l$~_5$9O1DMUJaMkf|CzIfJ%in*>eW1D~R#J_PFhLGVz-6)~svH_}m?4`HEF zTEg_8!)Wcd0Jo&#v9kxQAbWgU5Dl?P{MR0l4Pxc!u54m{x&;iOn0=du*{FJiYW^Sn zVe{LfbB+w2woNMm5Y2;g1nU=P#^WyID;@DSyv_q`=G1iynk_DhSH@eH{6KU&$uSCz z-tYLo=vqy)u28N-tfw{$meYwY*C=~9W=fO4K@U)Z)>h12PR#!I{x$hr%)(uv!L#Co&|0^SE0J!aEo2hs2 z_rgve%~WA+Mw+oVX_88b%H5uwm8};q1L`w-+gMng$8_J{m1vK{&*353z+k-U{3P*; zs%QJ##&)Cn6s*_j^3-KkNkg6|z|26XzSRn*QEgf!Hg@zJVnw(kRfX7AM|J5kh3Sh9 zl4>D)eMZfqr1h2fPJR!+=_ViACeZMusFmBR`6sc`eEA)w^r}bT20(GMyJ6dUJMOu% zaXp${v)ji;Kxnfhul4uO89hZg;>%H#j-9Av9I0qdlCtJBpnhz5fPP2bFYMdxk5mh* zq&1ncY6y85pfEXh{0h7S_QSH=hCvliBQXn;-b}b$Bvt6Z9Jb(%S5qM<*Uc)RA5lfl zptL3>Y1~EofUl2#%sCbdA;sjQ*aaW{4mT(urlT_Y>*99D$G_g!qwZtM^Il|j79aS&5> zgK#|MwEu*>&4RA>`_lEsUVV?CRA(O@e)AmgbN`9QQ9NwN10e3iOuVmgiza+VdG`Gb za$GEV>??9Y);2S1oi#z|6QM4xEn-sF_YlAW6&r_IzO>*W9}2ZMwmISzBc@;IN<(~+ z#HR?=x^p9bQ~6V{EV3Ju3v836F9ZnCI|XT@Ud+~&Ep3Ef2r4Bed5lXRR!%Vq*a5iQ zdWrNSj`?nVO!I%EYV25TyIBAhjrg&Li9Nspv(8bfe&uUb;?wHGlZJ~n!$Qs`lqWbX9>GLh z+ymrLq5_Ma5fXB#URpl`bbBG_Vh2JUG(JLk=_id>9tZc54;EtD>(t(7F zk)+#_0V zaGA;QV8nj(4)TwIc6Qt(Z%L)`uc+}agY~Ua;-|ix?yu4@kj^`?MCc9`*N}JSJ}-ZS z_rW#SB8?-;Ez+4N5_OWiSZVLSoAymcYs@HBwX19!X3|JKwSM6Mv{hSJ0tnFiOSnhk zY_fqcT4{Cql*8B{+XKbpL|O&0zCDmK96~hDo;$>_`zsD;SzxoVm3X^F3W?nF@X_M| z%nTy$M`#M%n^R&R;oJA_9vVs#j2>7Hox+YbHFaHdhw0|Ot?_!|FCsyC4qg@@D-aKP zOgicW(~+)!`gMu6%Es1&wuQ+(Dwo?&(PQ?<1hhjp7yvaWpu=pNH+OSez@DRv&!Q*77CWqZrhC&}WkyGf*0x6C zgReiY;_wP8qV9W46y=V>1u`WLC(MCDND^P4fX1w^&&vKFjLXMj?U`p~pbu?%1T4Y7 zWBvs7UJd&g^7T+0TK|>~OhCdsIu@2U6(7i;OgN2>piY9D6O=l@D~|2As4ZzDgj`)I zUpK__qgSm@-R%bRJ_oCn*)@!We-Lzi<&0S*(N#bG^0j4C75Zei*mufN`Pd$LOdpBB zKaq=7<}CKky|vV((t)JOX8%35#M7N;e26ekRPkvM6K`BO&dCzr5$G3x;~Lt85G50VH>x!eekdi#))X;P=RjZT00Hss+RnGxHcKR=r~&P_mc9e@XGaG+alh3(+-Vv!3B$Dp*MR{8 z=aYF+LV$Pfvhg)0(N?`2kHh>tBo#-Pc%v*TE|7GhJrt^RxR`J@$ACNHm=;l+=2{Ea zeI3xiFuRvrtcEYpcfs#YmNZ%<8(d~?3INpA|2$kSWfqpdoMY^>4v zw~zE;!HhP3*}4c) zr!h#jU%KW_LaxI}^pH-hIB=VaJuB zw~p-!rU)t-1TPidq2O;KrRGldtH+$1Jjy6CD#>(N2z*>Wg`RI7Z0>WV&_b=I8ohy ztNuk=F*wF>Q@uY7gpYptJiE(YpqMeQa>-zIXZMd9pWL*@U`z{zUxZSA2@$L;4Qr>s zl?~}f|MDldxVN^fTu7G$Zf?_9WFRV9D6)>Cx%Fc@^Lu;KSk}x%n`UA%eW0nCuacrf zjwQc!?O$9+B_!u}@fx&rZ@aVX;n@I~Hn?y^wtSu!z$MwTMhDrdX7UHMvW$AC&}r~c zG{hyDP{^arncbLN2b>3+H7HA5mcz^gN322M-bD7pVFWk=l|nKntF-S0uKWb957pPR ztpx}XB&snCoyg+`Kbqq|y4kKf16|ogxv4-$(fBsF@`7i%TqYT;dfVdd7KsJL1QPLK zyp{a5Rcw_PAmOeqV|kw&ABVzA!+t(%8wk+TmVJcdF^zmw(!EB-w*u2(G6fL?dM;3{ z<)VeTCU9*5&?-lSoHRd}>SF)SO3Fkm^@l{YszenGR^0N&U3HRQ7)a!$w_WH2>ml!uL65y%j{Q72q|d$)e<>upv>YGA0Afb?ttBqIysK;v<#0$;QCk8IaX#PPA?~O6&m^v%ONo`As+qPDW6~aloUF|jk>sW zd`tn~Zxvh0RRV8-_>ALm-$SfPQJV_gbCd{+0E1UBB~qmf2R|zuf<@a3v%F!VwIvyNRKO6&E?Wt>w2MJl; zG$@za^fgB~?}nb8@&pY}+&BefFD#t$16XHox;y(qzgXt}L>5eU~B0)tH?>;VSkh z%wz^|17j)-5Klsqb>Yhn@K-VnCLj=x2}@gDO)`K?lqbT)&X-Rst9wq`*j!jG6q+(8 zrjlM+DUqq^qV{S=rl`Uj2ucP#0x0d^Xm@V^2tuTkPrEWzAS(U){~l2;zt@ra7&h5q zEc;R1ZV+wd-jE#^gM!x%ueO|W_v)Q)q6gxLzyFx^wVCXlM}Vc~9nuSOL~Z~Y=er9U zvQF1+oJNA}r#~cuJ7gN{Cho@(7c=B0(4w5lFHxqiZNjvQcUNJ;tTLRjqVeD`qz zBg(nMi^l@C%+`%kCU%@q^FZPipR?X8<`NAI(x_aVjkr|zhf4BQX1>+w27E#;t^Z~` zT}?HlM3j@pXSllkq!lMnFX=i6|2RC3?RB;0Yue!Nmy`@As)lr)yGZSTxSfS3V8FPY zGKR`2N$G9MLi6WWfK)n`OgjbSkmD0Ik}Yl+r^xLB8Yi^ool8mjvUGexKd zt;||Wy?oo1WVfzZ(*R_Z^YO?rI2sd@Hrx)O_APr^ww{ruK+bR8A@G8sgTrcUyVVS^ z`rzCPgMo79MYiKJ_xM&RLub@zhX;pnZ#eL9Xt<1)>saD#Kl_+FD(J%r%^O>O7TUK4 z>sr27{@X)kccmYjhr%uaeEFqqy?J+DyyfwA9{wcTpc9vX3gDG`fLGfMW(we-)_Ww} z=9MA+i>pTe_T}$ql+ij4A;#<;%?^qH2-FJ5OG?`J!n&jMP8z**Tz#>+fF8Fdy$O^r zaJH8b$|hEP&$5NHiUCI~;=cgNu6NY!Z4~t-({1Pk5ut|)f^FGap;=UV@_@JGQEaUX zW++}#9-^u8apZ%`Wj56;Do-$T6Kuk6_tyZG1jX@s5d^9HB1i2j+V6~|jZ8alTT$HI zYM^s6aMbZ?)J@?)Za54qUl-jkk1y|TnK z!3NTtiK}?4SNGzN zLH@wjb%B!dU2aaEN+sQ7Ix4|Gpt65i&d2|k-rf6xb>erhiY@`;*Nje&2!paNNQnxoKE zyZHFA@eKagev?NzDGL6! z;V==S;y@9dI;PYEvc4+l8!{M479xE_M7Cn|sQXU4vXf=3kc80IS-1Uf5_1O_K-o)x zK!+NxJ;4qba#C(Z=WwRC0cE6l?ht1pyCcbXn5T+a=qefFU|P)SeYwJEfhA>w+*}_n ztp|Tm=xvuuVr#G7)-Dms3NRH|V9@OI4e#~AVgw<>>&gK%0ux8M(v+l0f_&%WB@``+x3v$GzKOcZpifaI}CHTD(y$e7@++b(Vza9joZcC)$RJ zD>oCf7-=7A8?d<-9YY1F^PG!27wX}hy)l$LBC!R>AO9hi8}DrU?0o|tGblMfws@zw z%RIu5@MB0e;oN)^v#Dupz?t%oUW@YPOI2M%6P+KBXp&F!(-6sQ!H~=L+|WE28Rs}( z3bxImbi&lq(!+$ysefv$d8xBG-PbK4oI`PyecN+`6-p94c_^jOgij0$HY)?SrBpc^ zRqofqE+?LLEEzae5vh#Qva9i)iIzNp%vCtASan( zOag@O>ItwPPLH1TWzy5n-=5$nPwJ!2+4tZH$1xt99@)djRqO`x4h9mFR{dUJN2{by z)HmVIu+JwjDQULaWD5T*>>F?Du+#YHB93Yg}8jSgWq|@3Ha;6_K*OAEYOUpDn=wA|->kw;64hm%m zQ}YU<^BXI>jvd4=!d`XR@`RmBQ1tGx>-VCKVP7?FwB0yc(>O}ogHieKMv%w3Cl;J& zT1}DB>-BAQtyf^dPqiL{?;zu%E49GLjyz5^?UNgE`w0JZoq4RwLt$bHE&vtu6j4#C zuES1rSL^1?X#~xk${VZ|UqYk8g=>!UX1hHT504NOH;eK1ST{Q-`R2@f{=qV`yjj(y zP1T$l<`VO`^D`lPTxP!&`_((J#{8dyF6bSa6agqK{%SjnJ1O70cijzKd#iuwdq5F( zxn|p(GooB#_trz;wZ%#)WW;q0+PZx7X0p{>)}Vk%Fz#|IdjN`)IU#I0P)2M4{WV{n zb+i66w@p0O7(tZCEhB6mRgvG|X0vAb*V}Q;Vvq2oTMul}YDMjC*A)u`#cCaF#=9UN z1GDECQ%e^rE9USHqHN2Z07^OJyxQe$yg{2*d`LV?f^G(*%=Fs(kj+AR-?HNfy&oIL zqB@8#;t;`D^Jcc@uT$`WOYx`+UbXE|*u@`UQj;#}7r+s3NHTY;^$kjbwE=;sGK5ve1i^ai-?4eD3J;!hL=q zpvel)H*kE5WJGc`J_977}iut-x66&-ta(w>}EWdc~G zG{*OlgSMgh6K*^i&%>2)FSK>&F1i(WQS(BYS7@$F;LEodx!TsmB4;^nRsd21s*!k!Q~c^jUPMS2M5)+4jhzvNt4P zYe_gqXHa5;_%R6S?eOVuqCZ}G%oDNEx;Ose86N^Mtd z)}3g=z0Qocaf~mnUkJRKe3qZ8xGa%J6pA1LMAlr=z9yS8GrCL8nk{N%`pgs-q02&g znu1$Z-5KwcUQo1R&&w)wEng9$)fAS>nU%tb6!J6%1TjrMu*wGL&*4Wb6y zzWHSG(u%uOzv4IrRTkxILa?|^n=3ho5j8ZXT6HE~8Zm^|YKzM^p}j&qO7VCt5YR_Irz)1;wNuiByoRf1qCQT##PJiXN{9I>XbDMQ5f$x(RGduG)qK%cJrr zHkh&BZ5FP-W2`^5%-8!tgN;=ouwz5)O^E+b=gbU(FtsI~5PF)Zl|sJtEG{wH<_SHP zvsV?GaI0?TW|p_Ak9hk|kOBa4JrtYO)H|n8Ug*U57iW;~>`UZyhg)t>lw7x#S$m3H z&9SJ2 z31uKmuV0BgZP{VTJkr{CMZJ`B-?BW5rP4TKuwSG=r>{tujN;|g)8ox7YM7jP21LjhlL_uGi z3$NEG9{~GiSMA)<$ zqceyf3E{Llm!PqF)ld<}B^D^cp(Ca6iC}?hN0%(&q$NCzEke#P9yS-li#ONE1qzBb zm8}`~niIM3uLr0nBzhUAm$~R3woVjEfR8#|Hn`UW% z-{!%);X!RnhBL}icU1jd{lL;F&B;BsDT*~qs7k?Yh0?n#T`ef=KutZQU=}eF`?Uxg zz{mNnv6?%OiUDNqHM1Ly&6ui129Pr=R)L{eg`*10^C|Rm;uz})j=WAI|K%BAF>`8P z;BkVDiR&74UBpOjQqn64n~!s_#;)!Z1V|{cJ9a5E-atDLvg#_MV#Hw(f#n`4CTBnQ z?)aPT*Wrk4P|yS?EOKyL9YUaIa&bBTh}fIpNPR?cwv`~Mfce02L?g?N)(jPz7%yI7 z5pRWsrp~rNbW}jBJyim*rWu$8TD3~b zW{t^l$Y>VLp{b&_Tr9GKE~4GUsM(dbMJ%EQ-}9Rw$2{qAa*4oSBmb^!u8sw^&Lu#~ zeD=l7-bn)NH02CW?`=6hPeyfbE1?XbMxY8N0wmQOT6?kWS21od+QK)e7$=P$WHI8l zm&-|_Thyq4W!}Ri)(?=ZxuMz3bcmjWScMfPok_;tx)cNxI$B5kRlG88&W-)4ve#MO zoe!H3t283O&W(IOz3*!aZLKx|MUQ5)nZVB!>@R%5+&&y%FZ}H7 z8H!m{NMtMBj&AK;6ShfaXLa*~h&ffnXyWzi4*Y;@#T%T9shR?$6PfOb9wxzroCEQZ zf7H-|d(gJ)**ThN`e**QRA@xYQD{h3dWEZ!r;}}|3MuEk&h;RZq~KOR$eQgGLoD40M!o7Om{uwM?DmQ3ZW9y)5!RBG|J3SEdLk^G>`fRx!e^pCB`lLAs2tqm z^)bXyaM{%_K>t)jW};2(C>)&6n`~KECRLtM+>xO%;iUsKwi!8q>r@f;KoMHz0;<6W zTJ?OWREvVeUc+_|samdyr&(~}mCM-nzV^?}vImCUwXrL8&Hn4MFJ{c{OP*|?7toiU zcC@%{RZVhT>|R(PZzj)^aqu8^)KSVz?ZNN-RII@iWmVpcXWk8bU1&h>TaCyP9Hy9- z&{v^NtOz0j22|OQ+Q)IO{I6F=6Y3&WyB|&R90*dR9~PdfJENgA=2r$DTE87WQ_Z$l5s1AU!h__xco6~gE#y?e?0l>0v; zD+EcCy>onYQbO(#hq|}RXLRWv$!%Z)Ph?#*ES~`f?(xpV(Nk87vmhg-$!zj6 z=717TTcckF$Sg>mg+{txK;T{}Hb%;m6VRe`q0V=@zL{Mo_t=+>(3`ijtENP!1@t`5 z1P6pQ$@ANT2-%^2pn!19PxP|(Rg$H+tQi1|R9FY}?Q=jc#{ltKA51SGWkaLZ4OKlA z8T8@EJx`-b^!m6F_X!7_Afud}NrrZ}z}MZt#_5-^8U5bql!rcHyk%D1i@m$y@TMXj z?Z5O#M}pC^%2C*l&rg;?U`-6hq$AuBbu?JV-5Q;bn?1!lkQvB~scTBbMD%7rhQ}+h z87moa7*I6vKgHOvZ)4smi%lT}H+mALLlRu{~lr zoeL-MN9wVXDM_hI&$q~U&5(odl}qytFCR!K=gEb&3x*e{KMA2CS@dlSry4bX$qs@M z>0{Wq;Mm-2JM@0ONCs8{XhztfOW49pr{U4SXyzL9&1h>UpaOOAC+h<^O);1-f+PaO z)##eX_BGG6p8?*_QVtztyZJNGlo@WshdITtjAGor8bnAI6QnDN1FdjDnu<6(nfH!) zXr+Mqck(Z~c%~6Mj^${QT56jk-@)bV40I6FMt*Bq^On8Xlk68HYTAcUzbk zWN|!dNJ;?~=4>urV!C!BKwd{>@+c|nGol8$S?n+~L}`VkoR-mEf+SN@D!uqghQwRJ zLI=sax27O%-@-uc$-#yhJ@pc7b2uOOvy9%UdiY0e`1tkj@K z;ynCRtj@10Mo7UGedi+98cr}L$VD?-6<*rWNu1Pj)hzY9SQt9*7{BxcrPdX*fBw;< zqf^gIGPo|L#+~@fJlea~-HxCxMBqV1qBwgI2?D}z*)XQL^?zsZ%{*S=Rww#y2&=eq zPS-XtKAcAkrVg@F5Wa_XfKt27Y2II_ih{U=wEx?;={Ob#XbtY1}s~@Q=FYxnnwXh!*%ro0M7&k%r zZLcmoY>>#5)=#vT4Y!9y*?0YEv(oVq7-vV+9RHJ-6BtdK=K~0G&wvK#e)5(T)Pr2B zWw`A#DEb<+QpV;Gd&+7-ZHg;e!Xrlsj44&lvDAd5E?5 zN^`G5p}L{^A{m8X)asWGwCb2ZgDxt-z{31?NF|&68ac=A-OU38&LZeTSi7Ze{43{P zr|k4yt|cS?;{r9aB_8BvoL+)&qLuQ{<5rx0?elL(u;u!fKXWVeGPqn_xOvcchXhciBsVnl)(MS zIBMuVzbh|g>NqDR5B1%aD8Y^U#C*NHqBc+LyO@T3&0q(p_V4+!)4Ny zezR!#&_e;c(k&^-3U5|h)NFI3d43E0S?ooCXpD+$uMx6<_<<;puEXNoQ{jttrh_fP!a7t^p7eoS()>&H5$F9A_J( ze;=S!BDD}-x#Miobh2M{5|(jICiU0IjwP5Bx-J(d=mjBZZcwb*tYEah?9r3K?-dY6 z#@5z7BtE-T*Gkm{QOd`4+tv`fTFEyXIOtx647&Nnx#3lmj-P51Wa9Z)`3ZcQ^ATM1 z=+Su5#$pR33(_HlFUOJGBVwIYW9WGF(&Cg8gnzeXvdfl0BNnD%#fV1s6J2pmqp`$2ERxH z-Z<&jzQS^4Ocx78%fd6gQqfd>3Tqri_R&6*h|G3rCupQ3-q!07e{dj3BP@I}ZPUw4$i}NRljOB;1`C|k#s)%wo&BUbaP;>hXbLqQfV@8KFJ<*!D zCGgJeOWDi-^E;4KAU^AG);C(e?h`>@BH0;O1+s#Q)`&VTFs7~ae>(B8KPPdOPLdGnAi2mXbTP^Ogq(dJf+4x_m`Bsdh z@F$LYy$ea3{SxdX*C0D03=_oC1eT zA%|=yGVm3%xPvzc6Y$2;nKhGnrs|l`k1|&D1l5ZdDFO{$3&i_h6WduA{W~Wn&`CsP z5=R~mIc(6=q1PixVw}m~kR2Z&C1$D2zU0aWqGM|10pv&UtPQn4b#;FqjoW<~-d;>u z2`a%WK>`_Edf1_C=|ZQ`_@10A=ke^d@mPQnrfAHok#pX|cm5U?c&C61V5x4h714IL z6uT4tSBAUpF(24ec*j#~DH;l$eu0Px7<`4${>TD7aVAXWqL8luUo=HoDL5Vm=8>}j z$x{qHtJ>l_x8uBjGf=6zKZm&~pxBjKU}|(tJ*3yHTOcCWoHn(QDh65-{q*2BR&B^B3e$)lNRbQPScuYD$z5c`wY26j7HUquBcNL z0a&-5@RkiqI3&Ly2`(Cv57cuD0}c?A6Rgbn~C86F?#6Vxv+GfHjeO4g3j z1cV%CzYVx-oO7D#yx%yLwgz&eMjp$_uN;yc&%H-cru>HSRYVma{jxa(gtf}r+v7RI zdQ~hTjdBqJk%mFEIMdvmZ`x23#wyh)i(lsuV+PmQV1q@=AZXPE(YjNNRTm%L=johp zKOO&-8;VL^&JGF!w6A#^SEm;kL^6(u-dtnls$K+zj{Q0vMBvimKtP=VKLulf{8iFQ zE4LNf6@SoI|MO}Z_rrSU$f^a4EakJR`n-Ta>{3@?YkjWqh^lV2?43?uqvmB%uz-or zm!M+ghCd$7`adoRw?#rmn=j6m-kiFH^kQnP9tgRQ+$J?ia=hpa>9H3VDF;}f3uUb$ zGGIX|YEhIaUCFys!3r1fUJUjoh6#vnsJM=c)tRQ=AY?C_kBa`6=*6a2I<$~;u-350 zUI8yy;Jtkuoyz}FZNwg8Eg6&4vMwD<4|!Va`gium`i)--8su!g1i)D}G-06D^RdT} z;7n;_WMf6DAKO+i1w6jl12inI@$HV7^ULYIa-c;28N|B zB-^onccA#f;-FAM)Gbsis#P-|?A?1*@u4D}5M6*#KPm{7hfsXUakN;QJ0Sh-%kLDO zq)#ao)FpE2j|mgvGvIro9Q#1(@?o0g(fG)23uvS`x|tv4?KJcw;eKrs#p)~B21VIM1c9>vr zi^*wUPS}j(eqkjyYph0&jP2T3{Ag{SZi^z28gZ~6^ayte=yu!9?Oj!ohGVb!;;`}`d}sms5`lFol?85~=9MoXyUK6yNw@;6 zE>G`s!Uzb8&TIywZ;aT~diHAQ*<}`qfq33HI!M-N2^66v{>NKRdwIdgxX)(Fy9{C zV_)5v*v-hV$BA@s;&Tz82G%s$#rAiGr_Yk>)tli=`Fc0W`hrG@ur`5@h+V?@z@R`f zl$_Irkks*@+(FLZqTXwqct`>_7=SMpo=pB1F&=X^%#C_ahR@5T;y12!c>1>^&0lZ_ z1Qf<`eYHzK);hmA+Hj<-X6Gd!@J|rV(Jy7bI&R&h=#eN_j-TZ42hk$|Fe897aGV&| zy8tf<9@*b-AD1P~VyqiSejkpe$Bf|NtFz!fRfd*F+jA!3lOT{*nCmoE-EC-Is7P(H zK4oBP&LKEv8z$|x5%c^yEN_-8hS8LTt`mchRNH1B?U$SUD9_@^lc7(r z?!sam0o9l=Q~k3@aml=PQzhn7(srf{{M`)s(^bbPA0kIz-&Q73 z^Yt|#;iUj`Pq(;K$P0^X2}_yP_-Qs}Xeb~eZI4Fp988G-hKR?Z=VF>T`syu-h=V1B zufF}!qZE5dJ1!Z|uGTxHq?BbVa+orZ4I%jPS7D5gg*$e!`2en=60Yw1i!M zRndRT@FYR7k4BRy0$Qi|ulPcsh=3Ci-TrC=PcVnX$)W;A2c;iisUc;+6W7eZ2ZAV%pN=t`PK-Fzy;&kYn_T{eY;)au^ z)=m`TJ!TRi5RY4bcgREIOc>$MK+t|(sRF-E`4)DlV8`}~>w!j%qYziF zYrK?%M=euN8l-NRjp z0;$~n#{FF;S@h4Be0f-@;A_`c7lkMH#45Vt-dK9z zEndFcf-+o7ak>zM!YQ{to@I6^*j8qYV)NL2Y3*jN=E z^9GVp7mE8m@@1VVbbY2$^LzTkF)wG3O0Nc?AFdW+xD<X}iRbZ=^1<^~enbM~x{P63t3?D7lZ7Jpk?pHAJ80TmClSw}}Uxl&cW z#PT8U8j&Yr3@OfgieH*z#!C^tV~VbF(l1Lyspfk8&!lvP(&{#1lH=%$kAEO{ zI!as}Vo!_%4O0(}I+h*V!7De>9w|?OmAIi%g3mGCggMdB)|yd89)^HrG=yG_uaO9T z&)tyjNjM44BO@A9`L};YZ`4yS^+>pAvVdb@GeIPU@&P=YTor)6B)TJL4r zm`zRmYs$D_I&FT8s^Dv3jkC_PRK)tm%TKD)B#b)m=Z~OvT)~f#G*y3B#C2~B(rd=7 z`w?RFx!(R&i`JxkwT)uGrm+~qen64gm_ zOcFXf?R*;+aG>}sUQ67we@Y9m9)$iwl>gysrfGrPi%c4++VpFMrL9ac_X}y2&N7)w zz^!w+No#95wRS~ex60I=meOh5lprpDY}JCto@8M?nd>Bhm} z@$*-l0TlX(;A;>MGweQWmTPkCk2LNYi5>e*a_&P?Kq0-r^R+fx&!uWGqXFR=C+H{Q z`CTOJbeB%$IqV$V1cY&Y1zUi(F?emcsYvtsH@W_28}#-GTXiYVqPxq~r1F%`3veoA zNkBR4=Cs8H6lF+~MmXbYs*q9T%ohPs0Q%3@81Z*)hfPZ|-lD17pIVobc{*4cQ24KC z3CY^DF$T&Yx-}uSQnWFuyJx{ZIl! zw*D#fxyh%{5sV6PGKe_jrHG{%0c{?rg}*$ejBCyn*oYopWNs&uCtpcwE^*DjqaY6x z*PS z$pl*MD+CpDH#dp%v~#V=7wM>nlA7bW>L{QBll|S*`Sdj$3^|Qa8C0D8ZEY_H6aU@q z7`+7Mm|+TyTG1)d`7hV2aR5uBbGI$cOd~uhg9MAzs+O$Ca*;%g`AAi|!tT;;a);(k zk1HIoLAE*hrd+L8VP|#8TQcuUR3KC{Ub|5PtC6f&B}i0=8LI5s?_q)O^P#o6J)p(9 zp2(i_|It)I)P;bXWUK=5=#=i|*R4$H?sZg;?Rl|xxzqD0zNneL{o}4Oo16F3Y}^p? zUI!nrOJ%(w&u|Ig_I3*>azv`SEDKcBc!|`_BEd3}siwQ{R7c@T##Czgv+55Fk`MW( z_&#+8xvH>s-Oui14aTp~%-qT&JefDFtkdW)v&8Ickj!@+Px0P(0PdSgCLzOFyAaVT zv;}Q!cS_@`|9Yb31pluce$E+248dc!ML!pGDV#&lD3B{N!xeA`;qT!eee00|afev` zqL><^=Y3YW2tTY_qr`LHh1>@0-WV3V$IL!_uq8HykFvyy*}FBum86-@CX7WCx0*2j z;EnrMsaNeFPIpc=&HQ`}EpMxY>_LlU>JMVNbJN&3lJxF9I*tsUPstpN(GOmUd~fCD zogI7|+SWe#-lT0l7pU=Yza+8nNO({GfE2j$~N!d3oc{U+}y{wVWQcFQ zPk+esyNF^ll*qPAor31!jRQS4$5})}R7RmY96OM7sS$H0(6di)DVsLtQa08#j%NzxRA zuO&ysNwiIM6N!n3G7rMnLQa9c2VL=on3mWD@yOf2hrg^Fls}G5%NV+O<(9^RZ>2sS zO_^{2q3j0EW#Qt2^&;=|>x2viWH#nwIIVz~mJwT(XMe0OzNJu6mqXNmrOUg(vc-ZR zoYWG94EExDO&e7|5#FmYaMMAqVLF%!qj2!1l@1zV-gJvLxGJf)hLtQdf&Wz+P>p@y zl1LzyyM|8W#~RZ388Srzc&66E9GbS}7F3`^P&XMPJ=k0C>K)Kt4djDWI3IYnUBsl& z_?3AH!oNDmp<-g)Go7I$oc4#&#Sk(nW{XthBz>UB*A>Yr#aW6lN|PH{e4JOHA0N}8 zQOI5Ck+kEkIoBgV@>+`UR)=(U1x`g`_?M^K0RGLj#Rbl8&su+Qd>_d{Rd~Dh0em8a zUv|#(7l|(gz^Gylr#R-fBl7sm6}Hq<#o4d6@eX|Sdt)m=XHKPZtN_K~=>kA>w3J*} z^H|)}CHhe(kkPLn$S4#s{q_TMo5GM;p9IuvYRfbEvE@hN&Lxl%vzsUZvjaF?9dHdC zt-&z4k{Brm06Qt4{&G0|itf?8A^(&$?Fwo1Ck6cc$Wl=_t`67(b0;*pqVLW};Yhtg z^Ujh50D0#)IA1hV;n)MBUe3}hvo$=>6IYC3?YSk)xX|bw$DCm62FjG{tY@hB-`#nG zw3$P;8al+<8BW&?8K<+G!u~c<9502oqtE8h|biu*~l6n4% zy0I2w6Rmf0$p1~K@J4nX+NtG|5eJXf#`AN2Vm>5ln7Pcwj=G>5Y+7oyd-mvS@<_@< zJXSZodj$w$jg>4OZ(Ms6@$9^~un#QpF8wm;T^r2^zQS;CqgA+K^yGt9%{Uv3RNY?f zjPI??u1$+`;~L1(?+A_NCVbA&CkGqj zA{yFmfV==dMv;85lefg*KK^YpS#<+yS?fX63ewG^mUE;j-d5xOkuB38oa?ZXG{RjSH( zN(%uHhr~0W{!fw&pM8QavW67p9wzW$q%G$WxW{L)|)Pk(T6=lKaP?5%HnFO=-_)^__%sk68fUSNIJ|7lW46| zDT!fd?Bv=Sf>CsusM_{{{2Z2pw2SfZnXStzsadlsonI$bXcToGVm4FqL^NT$B{E$o z0Qbn2e(OHeCf5{5j>0Wt+LnlWV z3Zl)S;yC>4$Zv@VAuU;+&E5@<7c3Ne@KS!UM2X?2n$pga2Q>zCiEHR|Pi~d|FT88T zN9x8ll=9XtG4BUQ2_9yk@ps0T^6}kvR{c5y@M`5WQ7&1i9|<9vl9OJm+#%)60gwF5 zZ>qSnZp$Yb83X`wge2qiQ$13|;lXWV*Vl*;9aZ*s(CmiPo4X4lbLmZgUb6#D`AWG` zuto~e?etaK2sn>Ky~C%>`n~;LM5$oIJ3LPiOlG4^VYeNizSPy^e^(SvKaZQChNHkR z26VYG0S*(!>9T0Z67%N{t}&BqH3Denpgu9fs-VI)1=I@y;@CP<#=+rruRTn3C3AxV zc9?oxKWHVsDDrwfsC`a}^W%UT-o+E?u(f)c@N!Ya339isyk%%BHu3nHEc%kZfGu5Kyh%{5vqe~n~}0C+?@BET2^2;Y~DY_PCS4bidpl+8F-s`7iDFikx%vGxS)HdK~w%-Cbap-zauOE=24014fm2udV$Bm<&CqB7;QUxHgt#c=~3lxOhiK^);Z8KbdrK-bi%-Th{6M!;*L zs%#h25)aN9grAofZ5}(&<-zt3|T=Eq!g7&06GiO<7(YI^6rg>fH@dcWO z4B?q_nZov&=r~JUaCQ~frTzhM-+UEp<>r@_c3>dBq<6AAs7Pu{Sr9usV3_9dL*#^( z7=XagKDw@Q+#tN*)O(3wE>{w48x5UomF7P_N{^ha_5zqOI0e&n)jxg|F9cweA)OKe z1+teb5E|DXjckr15~#mt7bC3WM7xfo^tt%37!bY&`h-I2f9zxKuC-XOxEvKROc(e_IDzWr|W6d z|D+UDqA`q=6r9^?YWCwJNx2R?l>#$s(xz!uS4_}-5Kq~rKShj3r|SlFE?<$#80C>K z3Wa1@RM6Ep^~k5ppftjLy?G>H)k7mQ4*jf8(!` zDRTB$PrLOVwhLT>SiC5|aOD(cwmSHH)CZ~nZvh&A+!H5QbPQ@A$lw7ld#9mzl7AcF z5=(DNJi$%s?%S>T{%zzb3B^LxCy3ls^ndpZnbWovAi_Or^oTAf_Z4#kwoEv7UyBQd z$+m)6@BLB0RzJA3kjo76f3LpHB6-OuUW@2kV0{85*UjpUMC{S|FsF1kiCBUF%j(;n zE7hW37nV>7%BvC6NM9JcSkTa}CZ;lF_l(D-*uQ$0zleV1jX4pMO2JUX`*n($!XA0N zT*&KPP>Tz}EO1n*4f_iIHs-@>^CUxCGP+$8FF-Hybpd5Zh^$enSSr~QhU+!?!05qD zH?7>*{gg*t8a^OSu z8V>K(Z5c!LsRV!e3yTwOqOox0%QjnpD6B@RJZxZ{*%8#4`vy{Gu_kk#U1_8=<>8F! zi!x zq2{OD5@40kSJbZ9PAj%obcunyBbf99abehhvcLpt#G2X-u}0(ybC$qZfP%58x%m#@ z54#zE`MC|;GeSji%;{~M5vKfZI2N|#D#T`jUCw=NvCeT<{f^JmbK7RXt-s+DYLB7oN^G9;gxIhK> zSYXBkPpDL4Q6_$yA=vTjKSs@A*bF-b7TaKe1999vIyyMteIG*Mnqhl|Z-M}6-&!Bn zi?Kyvf`Y?|YY28=*cMdS??YvEflhP-ZX<_SHuSRV892V&+|Nc#l&a!Y2?FK$O5=Iqzt2!0TVh# z@8`}&xv51P>MIQz4_8*6$|pK80Ek6SdkQ7{rO4$zx&mLA%1q`p7K%#KqRDD3G*uC4 z%vv|~c7GXF_b7(5rLm0HZ9wP+RJSJNWC@;9^hKn%Fo8A+LII?*rhwA%=&liMCmF0{ zsvbWU({BO*dtwtlLy+5$|5vagO^V5o1B3y+&6kkG4*6{Q+OV$8FR`{8fy>7jrDu zA|UkqY2lyS)vPITFzL_y17N7wfbF_Dgboi)@n5ZC2VHQ50}Q%m3r{EAq|Z6AWJ|6h z*Jd%Q`9qST;s=@2Ad%wOH>-&^N;B59ml19M*KlRz8B<9JkgYpMVP2JMQsNXVa#@+P z|4lYjrUWgz8q)awZlO0Uo>Udr^#S&Y4Rkve@aqhqABJIr@eCvx93`^K(^9M*bl|Hb z@9b{&k8t#UES55BPNl!wQdbV`yVf?qRYX=YKY(WiiD22tm#^zrmyH)=bQJmMz#gWb zfOJHefwuWJdqBBPGz*8!DOn=VS%CIg@V?Dd5i}Y0pqFiVzv4S>AL(vI_McoxhW-Y_ z5cahhZt2uX4lXdoTZ!qmzVB&+iEQL8oKQbV*G?A7b8kYOHJNs0z}r`tb@G7WtkF~6 zNC?rcv1A&%sc`8%{zwP-Pu_3MSnON#mE$gbgn7T79|L2)wG%JkJHwjj|D@xLPT&aVlB*` zQY#>%>KV4pX#znl9K{1v2(n0vjb#tGNv?d zpMMR}$uIj-Tcui3%h?~oo_0AAc`Rcnu)Ksd2CsV> z(@g$$Ik19`KcpFo%554ACsRgT*8QTP9DqU>tB~2&=_X!9w6@<5r`~6>|1X$y1&#Yk z{V8)SdD>G{rEZgL?bv}>mk6u?S`~u>%Kkrom!a@ooQu5veab|yUOC%7eKO`K4C7@P(WD3$&>ZX16-9m(*(!p55vgb zZ%`b36Xw%0LPXkyKbd87DB~RM1O_HeS~XWDaxE@b9Vfol`9~wM2k09-Zp}L>7@On^ z$p8@v;N9=I%jzm25j)_Sl|w@j^y(3+ErV7P2Kr;ne$&V`>(?w|Z*Lw5G~qtN6M|h5 zd!hV%XZarG5~t%uXB&4axx=nfd-`2_C&V*S*|pJuR(6GZ!&N3%Gn52r2WMAtV=K1S`8^KyULs{hRLJQ zmVLRxU(J%Ak%jJn9%dLN{?8EMw475@*bB&=HHji%!RkOsdQJ$TUMRsvbOSeeSf(M7 zBk-!;TS}yEli}?BDHO+;dpz*Fqb(CQBUSIPaU)2Y;-tSZ=2RH1xWN##`qqQ_?k9(e z^jQ8p)?;e?EZS)?)s)`Sw?KuQio4H-N0$~EDd||n7RusN+uJl5JB-zr*C<0ng@=m< z;sW#YL_+?fTW-VhC3vZ5BUmubL~TjbGMqfo1CuUK#6HxI4~HnI=FEW|KmYoU!%RH) zA=Fv~L+`b8RV2`Uw9_vcHiGYe*sCAONoC(yZh{x#o&9_B8T=JPsc-w1JvVDs-E!Yw zEH5r~zZLi~A*}jGyFR}s8X91D;nPgidi+`zmISSaABLlz?Ti>5m40C(@m^Y9M_^hs zY!*x*`|4>1@JBAu{J`@Y_#Qtr=_)s9&u_);0a4AqO~iJawdX@vE*6+So)Di`)ezIe z;Czg)4;}k$J{n1tm3ZaL;1R9a4TgH@fr^aPBxE3=Xbj(VIA8hus6ZJVGfm$oH@4u1 zTu7wb1D+6+^cy+@}JJZ)xdeQ1(0I|YdbsKBw<^6Gzd3}nSSyas+-;+M)j-$afE#; zGA z@lGv(kJFOhsUl+|{p7V&5~tqF>VmABzK)m)M=5+{8$)$qq9L@Bl7z^^jbd3|^4?3M zsNv~Wi?UT$Cup+g+p52RAOB`2H!t9-le%aBlS}CI43k`N4JlWrxbBplE&uW8`|?Aw z*NYo>o+3H}^TC0zz9O0&E>iGUq-d}0K}cY0(o2CntthvQ17tibXy1GLODa}2%B2Tn zF=rOz*YOF%asBnEw?LuZS4(=i2NSkQPTu2&y|Sy55`I#_H!%dlpS!{6UZ+wC&`suI z^t2Kqpp*X94LS!V2$|?19`lqQpaOMntdL`}n!LCrllS!UOdF^zBB4}_V^@-6Fh{H` zJLUGOLayinMZp^93EV@6oUh=4?+{^eKMi2)A zCLMJ|SZ}OQOnbRtEN@+9UJ^Y^HeO;$gA*1Qt+71fwhmarVY80}POcSP(TlVDx0O6d zZA^t*C!6jgUvL@dlK8&@nSt>GA0JWH;rc!5Zml>hGw?nci#EWdD;a& zk)^7fp4A5{smu~P$=)gC2;1v%A`mOp%9H=Xwzs)%&=Njr_-0reD%L-Cs5ND3pG~l%9-L-p zgP6<9LJ9HeWrb{oj7&EI*z>ujuItA8RuhYR;sAq+b~3tdjeTvh2NOuPp7>`GU&uXC zti>fkg#o*|6YtJn+~1j9Rz4N=^mN)#(P!+6=E`hm9Xza|!|x`;8*@G?3j$*@iBLU7 z^WEQ`A^NVf=olKv&u|*?kYD*fX)QO|n~x4I1Mkp}G&p@^_S)im+ht(Jp_~RqdF9sj z)Kt8Ussu84{49fz*|^QTZ+58kn$5p2Xnw+12qsDuj3pL)HDBG2L$e}nOVvL`y_Pnb zFSss09m-~q7066CdTuRANv5SFV?4m$uW`*PV-> zcD9RtssY*hAV%dkfs;}FixbzOe>1xBY=OVbkp%Meyav0C;yoj<7LsZV7sr^8fA>(>U}*(RwSmZCT}E5F75SwZw`lF^(m9bZ;R7O} zRn2b!da*zu#(TLFblAsvj4fpedIE2edxz4NVh9+Kpq!iXP+7B`@gCGu?B!>+OqnobiN=peQXIwRNPYB zk}8@4TQ@ghAov7&u-~-*kO2N=a?}he?EOLo6$R7gh3x53Xw)Tr%c@yJyG^X|L2ejNouSp~IGkL^vkDdoY)3k-u%dLvox? zK<7)z5Qh@*05M5|ABRk`@9$pP=&^aEk`=7j)-hc~n>dM+>o7OwbCqy+b^@13%7UO_ zl|A~a+aq2_FivL#>_5DUqKJOcB&lMVmUt;FPQv;^Y>P(cPLIpiK#^5$1~i^MJ_1@6 zBdmZO;Ho5jQI8)d*wL4)WP0ZUy%m5Lduo#y%o5d1@!KxTf%0)v^p!3)VewaiZ2yWs zfM=6J7XT@!0C3;FfE9Y2jN>Wy&A>-M z!z^KuP(Sn+WNb-{D^Zl;DfF?AxgKQ(bekpeSPH%D!sF?*))TV_G@%J3U*7Y_#w)Jd z0K!PfSQq(t&rBAYK-&LUX0_KxP&=tQgaCU?g_-bt^Gtcbqq!RJOv@BSw)glhs2DjL z3iHlL&x2}Bst!pyw`VOg?}&3K-X`WyOc(+~Pwnf&GX7;rOoS!!KjIn$XW1g&Q&R1i z;VCL~bMuhZsJou1F>beDF6^QA=8Xz=Q3=JQ*Q}9aAeJ}+Ax0(aaZBCV+FEs+hn2~>Jw)#pbhECmZ&Gsn~pYJ;j1-nr_ko5xS^pq6$uu~K^yyAV%08nfh0>_=id2wm~^VDS;-$ttvRJiyV32;(6kD3E5 zNq%X7jmkQsgKL)WoiUVX{&?ebu9qW|8R=5^fZhO#jz5wP6K?iKWd+? zMTm;j%?1|j7BP_EPSY~mTzUc7L{XakmS5$zOij3|@4e|3Hi2OA0e#c-$J~x*OrsV$Wq#6-N=x=lW@itqC z!eFwJBRJ!qz#2`O0golS850X@V3RNH?r092|62Q<{7MN%`CMXJJ&0dwu-GPIwq*3h z!qndb?B>K!o6bUXj;h6{aLipBK$Zh;o%GEQ2Pba{ZBqu0lP+9}_XYjh?IIXJn zeR3<-mLdHoY2|S9hA^WB^f-3XdXEGY$k$_A)8l3UBUW5Bk;L)Oyzq9(LfX0OPLCAF zz=~BnvQoXN8;w8&tXjp43dw_bcP^_3!e*2339oTYFCy&P1b9faRIq=9kih?_%SZ0; zf3;#y#0yo-(q7FAoZW2|i}Cm}1xy)`g%Q;I5zqpfR%8?+E&pAnS%Qleqn54;YD#y= zw?30(7+ibE$7HFRT>q zg5_ur{mqgxat-bw(*w6z1vK5+VT7fh{V}ecIrcR`iVVCSp6{Z6`QL=w*PrOv^6Brv z8ZA#)(XuqC(*|pEdAPfTSru;{?)ZURER1ZW|xT_a@(`g{leWh z^Pdm{jZ9c&-he;F!~LWNN0eewx08vTE%4;zD?OenyLUt!5H)Qm~&A0lD zrS?RgUx$YWVD6s2GZPY=k#K#>795 zWc%pbyEN0PMc=A8smQm;bNk&Mw}?`inhlXWdm^j}P+LWLql;6*w} zmQ7u|x)1U@yc`u*$y2=DeyJ}sZR<(AZkD06IP-~oR}vz*)E2H)JL*1W;Hmq#3bdvH zCSfM@Am!p5kol;O0F#3a_8w}D6~C^w%?AhOaY}F)aUP;01eS+tg=YhYzPzNjQC+i z=#^x|Rqqs(Or(Dw9rF@?#)A)A6Covqc^_0oHz~_Q8~wOa^(`?1NB`R13ZXK>k-;lvU2z|jiMxH^MY z4VOrcyD==7s@Iiv!|R%WEPn}=)#cLXhtpmkB6)cVCz}VnB=nQigh3uIQ$E@(mEqyp z53&m8*mxk?ci@njK)VB)sq<~VveUK3e0iFKpnDZt1t8yVKx&mBdA~Z%#VS(HZX?z~ z62+19$*Q@s5wH0ILV4=FnPQ{fU>-Ay%|K1EBbqBJQ>t!cqyEr7!Y)+{n~Z;7 zW;L}2G`&g5y}ZNEy{Ze&i$=$8MNyTX+E^jgeEVM5g6+VArcQRiTOTTx7LO8LLJ|+c za-Dr*?`K^1BV+G|mfYZGal>Pi)t52s=Ihy?VER)#wF6(HfjGJo5l`HMQzks=RcXn+ z!Iw@3x{+K)Q16pBkNxeIB{oCea8In2%#&)HEEOvB2LXrL4hT!JR+Fl6j}@i#k6{4J z7@XXdE)F@m{kHBVXzIda<7o*{|DAstTdtUpbDhkWi8kK{ip5$t@8p&jVrE=~7rFF3 z|3xTrQo{18|GL>=sh=bNhbQxN@S$I5YS;|uOb>{2`f}h+^@E%$>9dlaQh=1vD#QPk zPQJ|Q#FX)z3p-VVZek6N@UO#i}c*ZxJ=w++O z9<0&^&y@^raHv~6kO&T1Eye|QDoW_)L+?AIzLQcjs~$zVY#BoHs>fi3cqKgM-{PXG zO-goyndF{h^nV9QBCqD}$cWyG)@=j?zT&ZOa0D&H_l|~qwZyg;5^M+IO_$4E z&rK#&1PO?0VU7i=I5=ZCGVQg7$Wxxfyi(X9dIjRNk+grc_9(`+$fFvz9!^1(i^Mr} z<9A^sp#J&jOVh^^q((J?ZWpx~`6H=}5+}3L!pKza8@jS1fs0CBy82nzK7`40(6IZQ zu%UE++)!|0YuG;zCBpRdve4B8;UrTh{*ezGN>N7dg5`-e>*DA?f?(_oi4E-xJ*8>K z$9->S3HRMkk*`KK6v493#R_V-pdIqf4rG-MPccuQTLWA`IB14KX zp6iw&CM!2Y8@4K%47G&hubF;qHS~{sxol`6ni5JXXMelH~ zJuWa6LF|xY91sapfkkabC7yy?8A9p-zDH?^G?n$z291pK$Qg78xAH1L0DYVbReWrI z43@&jW_t^s)f|2D&cmt3!PP!~rIk7LZh1|cRunXTQ2Tfrl%aVhAn&(J6zEgOI6E~r zBLsR9Mc`$IcGRCA-*YoZeaw&&05sOmRp}m$=3`QQ>le5kDLP@5ZaI*y{z-7yELAG? zuKxh)62{ES7Bt>wix^y^X3=MxLReFre6DE@G@NZlm&KpS323@FXC^Cl_f={<-pS|L zNs|j(|9XO)Jh3P20eQLAoKWS0^rhMsqX4WiQuRUeL93Cut2j{7tTC<#ZA}BHxE?gF za1de&h|A+@kABhGD$Bp$gvsho%cwC29oQBc!W=L%2iX#vp|-Kle1tE)rx-Dc#f!9U zl}MljgjTzQzC4C#(T28hqxT-ia($ei+ zq4*-|;ijU%r+%RCknCEN=lZ0~>}f*53&(F;Y#9G#d8H+JV|c_Ba2n3@n>XP}VHiVj zS5S{MC7@zz_Gr@Ty#~(LC0kbNXPdD;5ib6La+pCl-tvH=LT(d>{qIlCk?jC-mb>uHe+&FAp70iQ}YiIo@ z<&OMsZT=DrLF%F#zY!xAwFYkx>D;j8t|WZ#FO94GPEvjxuH9siy7;KbY!ami!4Uyf zRJ{K_F>)>>IFl)X(uRFOtl0?POHT0+?DJ%%wL5@alZiYJI z$eh62{lt%nyAR4ai9U0bTGm}Di;(W0xuyajitxz~*!aI@n2fN-rxW!$uOR;&`jLIJ zAQ$M7bJKFGO1a$|$$C&Y@TCr=a{@l~Xx3J{9oAzlaFa~m&HND-=`48|$2CT7W)2q6 zF|2(k_ayI$<*|)5I0O^serfe~;8&m~%hHr_8dTI)Lkdc^@V;H7_)4z8j2y)<_Id&K zv$3}5oqxxwM-YsET;SY-I`+jfpc0w-yWUHwtA12{P&K@a?JI&dKRv)8VdHcDYJsCa zm>*eh4@lEZOQ|AY6bsz`)bo{WHUYI5IGC!kT&Yowyu}jS7&Y?7g~aSIoBQ|V@9n-5 z&1Q0u=J`ojwMYGM1f}{DVAxCK2NxQ8`=HID67ggY#owX@xt{9E(j5|%+DV%Xmqsk^ z+bGP|nsYLtXtB-G3zZK%gC5r>6F-61=QG- z`umDa{~ZmGZ>{rBtw5d|dP6^mUVcwPaKI30{WgM_ZFKN$uXR{3iF`}4ZRq(M6<;3O zC8bK4J=q17F*)xa9*ozN;F!{p8)vk4#xG_Ld{O=YXGD_U&@V;; z0gt{vTC+}(RnNy$lp_E9J@CLrs>1{@Usk~OKB z6eU}QbPaclOzX8c8rUw3eq4h2LZ)ygY#z$1>%X!{Nyx03!uAX?6*rzk6{ec~TU)1n zhl{ZWJZ+ELhi|?Lx?frOw%uEv-0YSB$`LfRL>I@qo+U)(A0+&|_=uOhWUL_eSfmhH zz9N=Yu@F+cRzrjej10Vl?1zFXlh*6nonDAVYej6?txDl)W-Mh~K+X7Hok}?QTbK2JKjUF?8m`SwvFp-Eor) z#bX`Iq#~TZxZ!=Wr1v<(EtJS;l^Zig0RrNC4Gm264!Rt*=wJtJJWo~IRh60TqUL(G zU+*wjqtWvS%IaOmq~p9Cqk9F~q9kc*eliO=nNAV43tJM^E*BoN&G9IU@d)z0+B);L4*fy z8v5=VYdeJXiYEz$L8{}BpSa(y@_BZ{BS29(@hSt`>+iGeT~a;o3dsf=@3f2`$5CK$?F z;1kWWNDM^rfMQl3>^Yw?;r0mmkGsN^ZcDcHa(&FmKM-o3E~lQ|_76P8%%VX)S>Ryw zP$|LS!`=OHy)g$O=rnKRRBX|%k^m!8`|YbRR4$M3XeX)mmvC9qP|gCSBCDnno?;cn z6j@D%TelpM3iu0PSHarPj7{}m$iwx!zE6MVusSS9AKusXg#(j46 zfgbwVSGE7-+`&Ir4`}x165-7}ckluo8sd>9C{M%mNz=P3-EKoL|Hn1MFK97Qhg1?f z$3OM%#-_McYN#hLX9&qj*XtsSC(8Vo>YV+yb_a>M873x_oiwd~v|USg1YxW@np?_) zLjrOUq1x?o)~M*N{|-_Iw1UzWrkV8RWc-rxRa9?4deb`-sA3FtI@hmYnaTiHA(U_g zNYrav-x|(4$aN;x(Q;JAEZNO%D zL6Z#kHM3encVR-@&e~!|Lq7i8?KaG*JF_`F&Kov8FM#w##87@TE#ia$ANkw%h03$# zI`()P=7mKr{iW_&jxg|9?Ja!MDuS7K7K0hr?NLWL`db)p)C=|_HH>521Um9J9JVx% zjg?gKOhfdgdr|n?=0tVVa!hQ~r7kQbvLt^Q2c+!R>2bJ+SZXViExtHk0<2=QlVO0U zuPDC}q?T47k)Ihm=8J>$!qi0!MA-g=HyS0HEv{u+yj^yGC(J+GX z08ZI7JvFZpOC_F(2f3r4Xy>OG^PHQ@Cq#+_y#-oI3xiHTWt>T$!)V*#6pV{fXKzh{ zsf){y3@Hs?HA*$xMyUJ33k79)Kl`?tF!A6J;WG51_cl+;Z6{poU%NkP%m+60JNvl3 zUcgCtZqU^z0oh&J8sxkR+J6k@$Dtw=s&ns~or-TuzEJ9}DW51B!`?Og?UdaMz1Sd#p!S34P*6DU7;^0T}&`$7%_uAC?>6eQKVd=~k zK&;zEPqUvzlvd;%4V5~9-AZ#&iYw?NyxJa|pS+8vK1&WV`w+^=W_yM0p_lHAl{6A8 zu%s~|_LdL`D_3jQ`D|}Gd|BRzReic%xnK@^(QtvAj&S^YS)gGsDRmjnpV?@d=3=^! z^Hqz|e~%8Gp8AcN{7ykp0*oot0m@a6qAvor)qdnimPgQ6$0dyGN@{GUnb8ya|F*|^{-i1<&rY9h$DlZe-AxVLr-IM z(1RakwstWxc?y0v6{fJuT1$oVI+xizTJ=)q)9=HyttydoV)Q>Q)oBLIro125Fs^d+ zV8GOqCA?`^HS#@qw5u=FyT_NE828E8Y-V{~QFZM^{0C1Qz74lsYLMA1=7zJmIMW$`3DRVc_kL zjdx17Rhij3Xa+aVjl5=((7d4?vyAh!MERESoEyQ8@6Oo@3;kW4VorUsCrU&nwI#9# zV4@|x>I0=Prw|SsvM+|*aHPsw`lFDkoBM=`qJ2!7UdS{S<6X}Sy{jo=KmRkb?Ci~~ z79S#1Jq9>kb4o`Ub6n?=Z?v;Tu0?<9BO6@3M50lQ6eFT1Cd#s9BnnV;ESF=(wng_WpLWYCs0pU*{%TNZ9)u`mYnl!8s%W)=_m7qQ7IxrA_pk;$g8yj2=Pf zQxf@Nt3llw^sr5mta#$W}GKPZGwt=KU0xyeOrZ9u^2lPOboH0|_Skhai1N zh|$y7O`Dfk{4=kb0@)$Wxd=F0K6!t@whM*qoJkKrF|`2yKLEg%oxVjh9&ck{BTlY} zuIfGZ+;PI?f17DN(-YHsN}#-cQmT|A9#5s7Hpr3*S?T6rDiXB8ms>oPRx!smP$+c0 zF@f8-UmA(#(@Wt%=zZqmcc4ZF#S|Ank%m?>9fkLGM7EJH!KMFd8%^zcEU{#nzf*^8 zNge;J#+xKUI0gMnG1vT?pa5o9aQ$o!cUK|e^__#yDZF2sU4pM8?c`79#<6U^0>z0* z-{x!D)#jJ$PBnWkXu1cHk@ zfzGuJDqQQez0TTRivp~#iB4|*&8LzvQW-5MU0YN7|68VrP1S1s7bPM9gWsG3Q(R*b zzVIeSI=SUZJXF4GZy|e9i#=9fQGnQF9K>x2h2}Kb=o3D@oGT*(S9mBf=yylW2>0v? zw*!ehb9x}Si2oZrjfrdhp?xm)0NO@TBsEj~(8s0Tqzhdfp|+QrB5y~!iU&pF3b)&v zUmIem){JVSMqc8Zna-pYs6xY{HMq1kONfCdM|uwYMV-G13qRA4Ai%%VGfb;dQ~29J zSCy4`?SxyQUm?nVFlS6w1kWZpQfsJjyHGjx18Vy)HU1mr#6&0>CX&kYr`H{rC)Avo zmgAK@Kyiv_>VK+3(dv>3 z(mTL_Vw4PxjsppcN_=Om$Vu7BqSpok!;V5pmaTb<8hy#NlTEl-XCm zyC%PK8$uJJQc3AxopSEUKIT{(A;QK%8Sp z>UPXUX!h~F5Z~d5LkCy@cY?H@o7%vQ6g{Of+D3cr^SA(ie}#E8;cZ*6zgRzc zJkjUJK-=4tp|{a=ny)sfV=YXl=~8a(G+t|uTHxdHh|eUg9<$0oYVaGW)ohAgZQ&Uq zFs7iWH@!eN>aCo9G7SXDqZk^n8tD^rUgwx$1tQzGJs zrDT%Q$FHUvgpmH)V3yR|nO{ISQZa%YCvQ;p^9=;`6$^f$MiJwDp7tEX99_Wq)_=mx zLu-6sSo7+7_P$yQCb3T=-4Mm3)#|r;<{p(emk8&lSp%0mS@`a@DnEc!W|XMzi0WUc zh%;YfXUsTTa*><+Z0v$pZ@gGKy5Tgoj;QK&qFopCb^QjfgjfT5-;D;-r1AugF!kaI z+MY{WsnE3wESqhAbh~wNuJD<^o_F5pC*${`889VPn@@vaglkVrzK>tX!JFaoAfJqp zX%ul(-(t~O3-A7IIP1#{M*}J4g}%+(ww2;?dvyZP*jNQ)9qaw2LyOK6B}@#grl8q{ zX1t+J6B|~I2M{DJ3ho2kbr9YoEx2J_k*+_|T{XVsRC`R@{b)W9>mF|bj($d9U&i(h z`(}C=v`Xch#+y*?0SYZ=PFMi$gU3cP(zDg`2Z!Mt5>9Y~i0)c58lR%MrNEG;4x~reRyJ$@v&?A8DIgmBO zpiA#%Iy>v_d=pOh0CK)-=Ywu}RBRE(`X)mR)S`G1#nArE7GGs4*D%Sz^kN6KD8wyt zKuOt@=YtE3Mq04u3i{0Xizk$ah*wc7R77e7ndsqVZcsT8kxR1HtBx(|ksshih0ZCYKP?B)3*Ti5BOTC^1jx-ayqxKUPuGW!s z07gy7zte^Fp~sQ5-J>xiUT-dkbSCPO-H}rIUiy`SImiJvEHe__w4!am#TOx~I=w2= zUp2ik=%rn4vOTfuwWauaM$!?{)WI4VOo!~vf}caW5-tw?!-w%1jjKmKlWMgV^xrN; zb=mr89FU*@S^0t<24g*>fl89*jx90$CqDqlXM<|Pc;<$4N_fTLmpVKtbr*e$Hx?yD zegItlv511<8Zfh_Z*~CiN!e0h(W9h+1`7yei;Cc1n?m1WQgGCUFmo@mlMS>93`~@I z?u(AJ5-JX;1T3}HHLqT4h-#Wzu2>Q^iW}dNBXLylN<&q7Yh*rTkC=CYcLMO1Wadhk z;Fa9ZnOnO0p$83^bS=n2P@Yw>b<$=NLJ}$JVTx+reIpQxk9MAs5nF6<8I&ZBD6ah+ zMbZFavsDRiYF)3qyJ!Ew-Y6IknxNho;c<&{cSRnfQflg=#Mb9a4qlHAby~PaR|@s& z0PkDa6e;O(!j=55C|}E*!l*JVqw|Q?KgOt%YUGaJbqSGq$6Bybv5FG#7bi5;V9M4- zT{A{^PJ`91`*R7`Fe#$t-n;{D;l>eUc!uO}m}OhMTm%VBP$8sUV=&JNG$R9dzf8{K zw^NtA+~0Ccqy_*GgV24M7Cu2d)ErbWG3sz`DOPxsigg_)Qmg}e?ju}}a>sY9S3d_% zNZ=IiMeZ=r;jc7m%(KmIS%LGM1t1=(?`s&%g~gz>PJ5aGQtkJ#t#tBlu?r9;W;&q|%>K z9It`W+MGd=^8P6fGwS9EftcKwRn5m7)+u@sF4EN=VO=o)&}W+19|X(*gl$?rDmL(E za#v(W>L4c60GNN2#j-)T`zHs(A!G_L<>&_R602sQUy`-yUb%s zk&r&9k?ykuO~RvRbPHy^!cwwZuIYJR^pjyi`dAi-a^Lf%iuR+AupF8GqDlFiLacxzwQm$Dt1s=Oyi?vD?VkBMn^K552S$YHC@t_X4 z7*S(W%{heFU_OuRTcG>%G z3^80!_tHo6EgbxD5}NvOPn{qfKYdn+Sgw-P>HAQ6SP_dhGN>j8`EOZ)6(mUGZ{|Rp zQT9}fB9T~bJ<(12bZ5RS@o*YU!cf3@cbcZTG7#|kT5(AeXQNuxlP((_lTAI{1{Q;d z5ZK%=T|6wP*^P7TIn$J%I^YDe?=r_GbJ@}W4{kTr!4}NLQ3Z3T)7A88%E4h`Z0m!Aw)5za9y-ryPqC z7LKM$I=9I`Q=;p(Qs<5X@`M~cMuK@M1)&Aq>CZj}lOyskfcT@lgnDE1&-&cfXeaE) zccv1f7JPS{MxSp27v79!T-(=AMPke$GQjH~)b5qZ9JI?5Avq~JOm~dUnz*!saOhM* zc9}E(C5JClhmXPhpPDw*m#Bj{F#@LyJo)J0)Q zR{iwLEQxJvLTpGHR&!<)XDT9taCYE7WfN&4y+MIAqh>7qmK~86B25&jnspqD_7}W@ z8`sTjEn$5XoL5o|g-}Vtgg)8gV&En|%Q3A>%VU0XnkIEU?nYib++>sEMWv=cklpi! z&{xw6YN-Q#w0wgUbC@Na`&|WSrvcE+CENbZftS=7qa4=YvLN0%`e9IfNVh#ie2_2x zhU!||2spJjUPz39iO91mHUD6&YwC3L=hqn&TU+s>Tm#0?9ej9k`{hR&|1t{F*1w}d zyLtx4?BubGPuk;4^`h74#;nL=x&Uzs{iX!3*jx*Fl29NEAOboiIII3j@c(+~Ji_oD zV&kG?5J~TJJw(hfCWo}fH&36`mb1+Q^W3n3%IYDfu;X_4XVr!~;^BHL&Ia&p9l>5$ z>&nl!1Fae}m4H0<)HvCt=%pDIZQL-^QLV?aFf*$t&h|Z4X-oK)bZ)A(;Ik2y+|#|` zLIWs#(OWxfaMCNmB6oV`c;vH^n;*GIIZWiW6_mYxzXZ_8Qv3hIsJqm)O?pU;?LK<{80i3Q zST1@?2nl|SSL9{SWpqb38Ai;Gd(pX}AC;(r6GSpeVvAUh{%o!XYm0HG z+#10bBNGXX(i`v{4CMStjv<)~PRHMYk03|gO&35(is%iR+l{bFLWDDkM2M@$k-88g zS6YRFz3M)uKsrQ?(73&p~uB{V9---!vfvjNd)W<&_DjGpOj|CaT;@b9+ zfuom2NwA2N%75|t1|}t1vF3?YItu#3`+idUNYqUe2cJf({N@@!;|4{$h`hw*e?@Kw zQa0_sySV6K$-W z;4@-45CK?TqQQ{6-Om~$etzpC70R7h-``m(@DR5dsj@ zmiaF5$ptBUp5u?JTr=N{tCOC1vsS4-I zP8`+FBwQ`ymdPVK_H1z+dB7I3d|YT3*gI_loH^i(+!1~~Q8sht?YiX~{<|CS&GGOB zq}Mb3`e6rVoW4|ckL_znsFP$KMjgnzWmq%kMF&aI>^rhXa*8;{Ng(U8L1Qj78D;XS zB%X!a^mGicZ-LAzt_~mFc~i9)dXp=>I?1V`5w1|@c6tCc1^fK!@3w8Y>?<~%@_iP7 z7%k|4;@{8<#yNcP^Vipi^cj=N9p#k~5g2gDC|nziQDnO{%*1XEf!ckbntxfm#8!f% zroqmihL6bW#%0Z;H-4{0FdoD><$FpTvaoRcvI*U_`7yiHKY3{@cm7Bd^x@5LK!mdn7c29}VI1aF&+LD_;~MAA9I!W4fStJuAHS3} z<#LCA)K`-JTgkX`0#|!w18bhs#{)q8t)KkE=2wrmBVyqnGzewQUxIqTnLXXklN~-=q`)rP8|C^Tk zj5Z%a^|=`agWDu+t|or;-%TjlfB`#Ddx--a+ZesS zA4`-C|MQr2C1Ox}BDt7$ij?d)Lr(nK#r2yD0nM%*bN_1*$z( zyA_$lj8rjfPWktecHHD%lLE1oo9%z5eXX}tI92i7cI^GoKcJA54)#2@S{lSy(1`p# z&%D2U#e=CDzAW>D7dPCd>wrAw6iu~heFw>^pTxO?FDlV4M!@y^f2k%PdroE{5b_^d z9DSD^G=`23zn`!soSO)=*w!w(7QWZpy?MIaR6)CB`h@6MMueeq3D17~f-aF6CQ=3| z01g$F#Ue=h$%9Wp^!7ZDKve6A`$*~g1^}rz-;Ez?f0nah3X;aMg@`Rl*mYa2JxHBm-i%57MI|JKrzor_gJf^srqIlHJP{ z56#t$j;<#ohy{juco#h2b_ey6`GJXY;@*u#OvKZCkS{^A4XcGv%KVwZ^zTv6`o7b% z*#`nD7y1o^5f!dF!nF}5ZowWOqmST_ZLZCdioJLMdMsasl1fE-O|`ta4tVC$`{IwZ zpS5K=@j5oY_4kEeCX?$l+yAL`m85Q<@9KqZt^G949O^bGDV>B2WO84NwYcKlJMtTK z4Wr}mgf}gnQY9aH(y8%#D9?SGH6he`&eotM6+a{}>1xEFzDGOore|9u*^RS~T+W*P zt^n1MxNh|%kB7O{#)=-~<{r6tx(Uc`P`XqkT=pG+;jei7Y5@D`Z;17?s8FgH#T3yb zZeF=}{znVjS;t&^Qh3@6#wAghVfg%KYB9ZNTO!oRjgO6r+Lw|eOE9;;83<$m&I5!s zSn}g#;n$GWm|lGIxNAme^?6+w?q1L|0`~0^P<7*2GfM66rCNtl#_0YXO}0NW64nu3 zoA`n|@jP-=h{#oG$3L&_BO_v$aq%SSx8J57p^I8xtG^1b)g^L#U!;+EyO7EDBQh4bIo zD;!+0ZrOlpITj67vL?8h8LuSM9-kK=coF4dK~m|}8~&yj4yaWIKEZA!2Ou*57Pr*b z^R0KeP9>=aL9^dEnWZWzr*_9z&m-}Wd2fZspmdVD)61YHIbbNXhi8O_DwH3X{%u@P ztQ!m5K&@ag8l!YfDMMUT0^lzX_S zw6`B~_Ev+Prez&_${W~*)^L@{Q+S_$&f?kZ*%D3}Cc?mOlR`B3zZea(u3nsccV4D} z6cD5K3;&aujsFbuu9F`|Jtq6tWg0i2mqkfg`+>qAhDOsG?}C+%NerG){EG^L8A2Ub zMg3T;lffsH_q)pd>+;M_Sizr>+P<$>t5V8i;XsDEZ*k>(z;!$f`$?fqS>WGQ#5e#> z%=G((H``MEXBB&;kWy#L{5VTahH}aa2T7Ai8oj@VKHiuxM}jY#awqQ<;a-tct@ci4 z9fDL(RE|q6r@x~NEgelevoM;OV80Pw482!5C=#Ec@jk+;^qffr zzG`gqf_}t-u<3}kO8m?-3#OCHaV;)!|fYA%hbRs_#@}5 z?3)ZE{KVn3Q%tG{NAFD2-}Uw&ShW6l*#n@aOl6!q5i~Q_YqnI57H*STB<`Q{`E1qp zInKr?ITI7blK|+}iB#NMxR=`;sWG6hFB?*GMq2_QMlNGK^d#vIBVKHbJFT2)bq<_@ zgi=xI?*0<7Kq%g4 z#`@*FLgBdITc&u)NcfOVt++T)LV0SzK8omsVDxeI6iUE*f(it4*F9!Zw`TPwQ^19P^z@`g}qwNb|yb^|9XHiWK0k`;zfO0-O#}a~no8sJdMy4_mUs;(&(xEXgRq zdswzA%o~h{mxQNZ>7y^?^8P<6F({|NnG{PTcm7IqK4e<1aa23ePv1>R#rAx@60x!+ zN2|UWQ(>`{GgoU?)T@y^2~-$M55gwx)nr;jR4&k0(w^J=D+dS9`PsYI^xj*OyO=h{ zJ(B|1Iv!CWFBeAc9BN9pC{?-|(zUz+dt?4beHzFdsGfhfW=cmiIy(BWrstI`4emf za9b@WH#Sijvw=|tNB}2tuSqK%oq4rOw7Bn$WR?|^z08qp_))TO^Z@FEGWk{|{uOWK zBXt+LS4Nw+%I3VM|I=m|?EvvTW}tG6K|KhcOKyrDCzcv{AdmLQ6P7$YhSCW%A4B65 zF~LnD{u^U>n0&8zf%B`=+Xv%n?CJEt*PhWGmzhKrwqf*x?4m1p^~$_GNQj#CnhZ@{ z1~^_dYB7<8Is_q!xs7e$vFSScMqLg>lt&*Hrj!&h3=D|_?axuShInBd+dnsKZ)UgT zRA8!ie+u*=6*ZVtJuxJ#6r3~rck~-c1>B}(#WunVnO_P6ob2FFd-e33nM7qDuoa33 z`*nrmszaS+xsPix=I&{Xb?>vB}N~ihu;){TR=j-3TopB@yF9Cl-Z+{ z%iPvVm8!vu;j^8Jr+;4Yo^EOVh|dEXUoAgaP-~+;R<=~~=l4B=9}TJhSb*xk;w-v# zs$YTkiK*IjY+rk?_f}p9M7l_FrE@q19iiS-{tY`(Yg(WFV@XdfkWqePu)Rx|gn`gX z|9;VI*<}dZkM>lF5#+WmFcJ{Jy&0t9j*1bA6D~benF%#U(*~n*HBL9UY~JA(d%+-H zlK~Ied^dR3w(m>8N1zN%Zt85W;?y{GfY>M!cnv3vo2et*@NA1U$0$t)L_e2d#&Uume_;$r%2BiEB3;<6ZPyQGdZ~SMY)qf!>pT$uHZY^0 zUnp9Kyoxo%<0hyQq8lTy6OE?Rn7NNT>Bhi9_YX0&Ia(t)DCid&fH0$z$tY1+)(>mX z5mght!~OvPneyaY*B>R`luh zykB+uSo^l){+uM(IgLh1+Z%_)Ws1dg*Iv z|NGfSr$kB0A$K}F-UZ2TI7P6ghXT++B6~ps^wGSvtlQp0Av|YO3bDVCzA^Jg2AM&G z#nS%CojkKRC1omXNe9@0G|~0Duh)yHC+01h-m)shXqDnQh^yS#TmemnD}}m)_E))S zQ=^}UMll$jY5qdE3Dyjz%RPi-kGyT0!2#Kw;Cd#*{w^YozzmMSXfL6GEn#sWZ7}#s4^M++kIsKsC-q^b#Y}jWP z#nLh}H$x}N*BF`uNu=-I)7<#YcC(w4X&gxd(tUPWD~hR|e;l zoYa8td*7OC$cv)QYf~9N6`wgt$26~Otkv?W1m66BZS~FO>*R#l^kI@mm@){9nWCg z#2;HX;0%9rAvzm7P20c$aD}v=laCi=^@3X%?aXvw?v3ea?%NbdC)G*n&JNxfGdEV%o8BbZ41xUEgyg)wCFv1 zS!})#jb5^$H3S%tMM}%fVe1~@gze^CJoy`^<_h%aJcMzImRc{Y!zgWISZX@*6y=`t z_Ai8zlGZ5^#$9#=2Z_4yp9MM-8*qCAevzX;R7Fs>cBefHgx0|&>(utjb5#H_!7pbudHJo=8=E;BmaA}MLJmg%yB0!I z(RVko_?xa--^)nTD#kk4#%@&z!h#&4em=2-($X0bnqD6Ui@T{FiJ!7}^gbEO&S;(E z4C0Pifah3w8?3f#t2bQWFeK~Bgp>yX8zeV@bnND8drwju$QJ@Q;%+T~fSh-O*@E%a zK=Y+togW`syJz11dz8>Bm{)LTMg%Y-228|(k3PlapQl(;3lnxY0Id1{*EZVq+uA+q zVYvnY?;lZ8Sx&v0O89i1acIQ~hFbt%Xl*h|bwh` zIQlJ&m@&5Jsg`kB4L7lV%4NX@gf)=QenXw!rjvl2PAbX|!Vw7Gdu$#r1m}ei4w_Jp@wMu-dE(zGuML80U~9mMRthVW(d<+q6w~5Eh#TBp=biAoMhPZb z2RB3HdmBEy3bmb0(YyJe@LDyRk0Q0OLNA>GsbnKn95aW|RjDtNy(9vGEZ`Rq5Ci$O zfl=&8_bwEj43`}S)86Z1Y)K)faaJXDm_+?Ivn?c}V^LV`3JS&?8D`!1!wIlN-bZ63 zGm+}ZB|H{ZO!yf*R@uoVYe7MvukXP2Q}5)RS}I-7)5$?nlM0C2jC1{XxTW_;O?Nug zkeBbiKkRjXmMi{&b2{uTZYt5lhmbb$G0snqqQrVrtVDJ9L_6tfi0(f~N@`+TZspNq zs@p^1TN=FV6%7y>WTKQ!pcnLTO@e-G#0Y6&V>YgDlHv>ZQwRTO6nClZ1YaICq-O;{ z!+9>G1JM};6?vJPd|NY@`z5Vs_%t4g5*;=0BNGg8_U*>S;O=+|x#?nDwT7HX5ssoJ zCW!jO+iL(pu`)TjARYUcfOeU z>5#O|814r&OQk#~j=;1eCo~ADQT9t=oL+fRuJPxNt*x|4xK6K($3+zvYaM(Uu~BYy z76g@Fw`ROkQ{ZHBHHAX9XasIlz~&AT!~vXkCxwe5YavuAU|DZ~Ib?9CS~yeT<)Lbn z{akR4Q@)^(YlI#Lf~!QfMYTozLg25epgZU=VH8^umHf+Zz>BKKh&2khe`3e~-u0Wl zJHu;^f)QDu3bXmn+{uk~)D5&zR%jgu^Y>0VbnY0;LT%p|qy>pDhfBR9SeJ;53Ux#; zJ`7EqKlsoMe}uv0!R7V?BaT|FOhRJ zAhe>3_tNMIt?I&Ut<>Qr`|N;|0duJ5mtI{yIcPg1%z-O1w6q96os7-EgnsMdPNBi- zt!!ih8f?^>-VqTUVySd<_~<1)_t*3x(er;~FE%*9>=}%CsGUXjHXV8dE>WzJ)FR}9 zF$7g1ws^j5ckjV`2K;Ucl7qR+`CC=!D3kqdl~wX!%=&HBFhr?5rOaZ$>6=mD878ee zZJIUPan7t3OMjV^KG~E+I~$0o()E_4N)qV>@jCw2{=n-7}X2ji_Y$A zsl5PMroWo2qmW-9=dQmm*Yz8-yYdxDoC5EfwOdrt>}X+s?fT%;r{pxol(T6N1K@jb ziJGz}p8uP)CD$vTIn=zHo%Tb^L|KIVv3;zsTVZw?Ye1hg<3MtzSGYhx4cxQNSu~k8N<XY(a&AS+Q=B(&AWxzO-ak9qbH}=~T_GE=I z4^ufjYj0v@LoF@5m*!8A7qPi@f>TkU@1cPUN^82k5BPyD&Tg!WWt~khwBUF*55VlP zJM!iAU%wWVj!7n&C^H}1Uf4UEV|5QPIH#~vk|iMv{q0Mg$cOI}A+sWf;H~++bGKb| z9MURQ7A*4=;YT+Dgq`}BE)I%(o4$9RndmX&BV44fTiy?J?)uQ(+wp#+E=cX2fnlZ| zBJ2}#v3E3#=Zs%meZwhyzl_qmi23?WcB?yO@Z8RBX+e6y6eVT?eV_sUJflqLUs7$C$g&r@Eoxzb}TvJGqT87#k|JZ+?i%L*a1QQfs(mn3LZ9rR$q@ z96_lm3!9C$tt^|Ih_sLoQ6F5Xah=Lk8lUocO1(cv^_dN!AARae-ch-*#+Y#tFWXy@ zZ58yw&HfU=pQUZ*J~2v$EY+1(ndl*ingrh~*H?)G3-s58!a#KiB+!v;I^U7X#D$q`BZ~Sw>@%E@I8{y>XO9k5I|}C2fk!ujw3Sb%=DR zQ-Zk{+3Q|FoEYL$Hd^=<_cl4oQ4*ia58i`T$uF!mJv4 zBbYpmeHLlb(zK&-R~o|vS$%a+q&#>2bfBKGBIUmvC(A5+4w?Kuu*O~A3h>Nl7J0Gb zqJn9Si}$e5Pr=#Am5HTKCQ)vrju0lWcQLON(Qc?{AESk$AUtZmD;tLp8;Ox=LYxj# zP(r}!bC_XhE|r50mH2|zaG|fFIa;38^=+!Q%!$iMb}@^oI|LtDX1pu`^3_(yu7`>ZN`bN!yIF z6Zr5th`(%x02d%Mr=l%0r57ZU5+6kMoUdWaxQ?9i2uW5B>VS!Ol3{Ssg>h)L85z9h zUKPQ6{kBHd^YSG$&msm~^cl3B@;ia?*_!&11zyT1e+6*O33`kzc~g`*L*MYV7DOrZ-{k3b)rlscx0s6lv=H=JXwRVZsz71bkL4Bw0?RrH`O zBlC8T^xb}!#iG4>wyY}nQiKqh#rJpSs3DIQJS*>Dg9!|l^-fa0H{(%;up3EB(Rqfn zxpV(@)%atTbOPvGPrPV}09gQLQHzCKoLGlSxY(Jb!A z;K>kV_tyndv);C*=HlFib`i$ZbJp z0nj0ke)I>l3X-~6@ixa#e8tUM^dUqx>xU_BxIJdHij0&?j5|=@Q@D}GNxOs!oWvA% z(#NK3(O(jxGFdeLPS4@T=+AB<4u&l?sp$Xe=*;?~N8>9T@PplhPR+EJ`A81Jiw}4c zJMmCyA?c6cFoekwax{Qe;Vn(=!T1rBs*V|M0|QXOlUYu~)?`Ft)R^QLsfWjg3~ioN zz$xD6H##79c@G7WS*oHXSXG@h!^GV|)u!D}rosu>Hp>;xrKi#?%!)g;uPj zaBscwa0fPZ-ZO&t@-@Iy@IXaGBAR{<(7o!Q$xZryoj;O!J4m(?AT)7 z`kuyr#&#h~TA1aj_-m7d_^{-8kdfNr!)*trFIWW9Z^)Ez+`D|{sDV!I4llDKrJ1-dAHd% zJQE;P`n|eq@vo#ktmZ2Lq(3n#EjUFrALLZ@oE@D;4kwNFed9H}Cr6@W4YeWIkEMbR z`&ruy2erRcRJ)5=atSu((82-?7C?_ccG(UEOntfN)P(0P53<}M6F1|)#~8&CH4ArtBbUxV`uCd<8~-~r&tRm6-XB@)Lrag_h_&7AwMZ$uv7(jzzh@v#YyyRCn&iD zWHQM(T2Z+!XXIpgoo0ofxXA}T4DTH%N!~7&9F(7Hff{hBr@c0N%xz8$L>Bs!pi+5x z^KT=01R;(L=um-+)*i!hzX^|)mQ0%2s%yZK4LB=kh{O^^5pD)fEUq1J7h@5G7y;qh zK0~omw3yMvC2Fi^F!!ZI)M-u%RNK)sCsot#<19(5H-=XX5OX-DH~VOJa~g#rClX0n zf*)TJ8_b*Ki<@r$a$YZx7xgF|$!DfTF?Qy!ZNPjmiy!mSrC(n2m+4Co$u$oEdhdr$#!n;5C_+v75B+lSw=TPk)D zz@s1+vdO5;b%ofpIq=y#e9&9}oB=6W>zc@?qq`x=XKRM%qV@mLuaqqA2<$f)^_Rdvuz69mt zay{zsk#=y#g6 z>047$f&~b%T?wqvzc5w?zxNv4=PzXwF0NXQbWxEe+RhhSOi`!>$XeYgNlM5~6FRAH z-u@7Eo4c-oh1XDDd;dIJCzh~9I7RXD-^Cg?q8;c^MxDlyVXE2X5Ot?= z-D~_h9PSa@n#9O1^m1}%F$`DWK?9S4A5Ixhjd%jlR2WcQyzCBpNeT-@+I|Ufl<7k` zlOedr0W*u+2tOVh=A^o=Q(Z^Ba{ z)$Xt+oVN3O0=OQHswD%APVS2Q>o4Ocjg=0$utOq`Wblj`J{Yrd$Ogwx9gamI+{pwK z4;h6DHPQu6O|=QGx!X6nGPN(Cw;|m=M>>aA9K7sP2M(s$i+QQqes);Vnmms+FAH;nBAf zW)ywTG)X)C%uLf@y>d#Er$o(g%UbYnDT_z2`J?mWgW)ZrQvV)3Zu!1C?>0z*R6YCB z-524Q?f+q3imae1!YZreH|m$qsM%N^P%^Lh)uA7Yk-)hU3%&$JURncJ^o2C=sF8Fw zI_$U*H9@S3dOcZz?UovbcBC$V!(YadjBX!Q=h&U^r>?#pJjp1 z2wI3a#uN6nc>v=l{hcX6a9@YM3_BO6arUV_72Iq&r@4UAx0SLX80rmy$dcdXe z11|>9q-FIrwe%*%oAys3q^!(iid&xjWnpLBTT{)C_!+pxq@ zK?c($q6+}|TEW}|Lpf%@#A-+J*egNpK-UP@D}M3&xMrwyRGL{hWSdF2PHUe-*43SZ zLB9&iTnRsbAZgvcAqv%6g%}&^g39kgdFtvIOS-SmIJn5tM<@KcgKtuVU%25Eosf{j zOz}l}D3S=ITP3M}rEz9a>`*~)3iKfL70(uEFTooAoIRg_Qe;|S!c8CY0eyI>kGpp> zKzZjoGA`0pO(v3tU5{(`OJ=M~i2NHblOgB*H+P!2BbtZnJC?J8DP4 zQpSOfIDcKPD{ba+OU}CH!Pke0Yqibd zX4Y)HUQR-yjOn-?kZA8jZ-3m)kn0spWn;Y_navN+TT|0yZjqoFp=S$QYaX-p*&@Q` z;5QP&&A|Fc;XU1gZO}6E10e(mBTbHH%@#E41eJ6WUjKhHq{yEMFh645tV)!pnfv5_Uk3(*?ZTG5-;1jW$WeIczEHO82zFmdU-$#QDZLB^W%k5 z^`NOYE)HN+PA~zOSCL4Un63yN`Vw8>$ooD=7h_>lfxYn1zn06d(qJQ)(FDk`%rWWkT^behPCeo~OQv1wZ0JJkZfmXdeP1NrTurzo?X0*)>bX;r=Lcg~sP5pM?PN49=}Apx*t;yjAsw4J%&;Ue_(Z; zwY`Zv%u}yt6l$K)Std+l2^vijXDP`3fuQvgXiI8+B9Pvhj-t9XIs+G!H%(QZtq4!o zHn*Ea$z86KhKU{DaYLO~2WYbo6$diP$AXKTrJo?Psh4zw`z7CvVz%>qH8@359_?L` zcV#W^g?5RdN0SV_J$)WB(?+Fxfg9DBxFKefrL2%bpc&S61C1R7Vhqj0*6TpmT4RD2 z8PN5Cl_m~lSU30jCH+;a1`1!F2NU3W_D-5serDl0MmV2>m*N{kl%w|1F2hA)0Oq5c zAzbU&`60vjvdKb^eHw{dL|CG%0b}JG34%6B^XGDLR6l$8)qBk zDc7X6b`C2hxq_j%wEtC26sG1x@Y)+eW}VE zJ=O^C9@-5AmjfK^5{vFs0eF3Z&UzoZ@y_d$^Zflv(6Aotqu%oW;_brcnn2$$Ij_R= zAJQJ$tXftMbgOba*Lz`nUCxw2u|Xlb);<&^87$aSc>4^6$v5S3^Ea8m9`Y*&x1^0V z@QrCKkG%}{a0SFGPfNv~Yn`&kYNyia|NB*(7~E^1-lWI7L-BYRz!iD0MS=+?u&Gi> zGtowkTQf2CeEe8VV+EA$t$MUiDYjhK9sx6dvuO*p=rmYq*Q?$lzF9L|?9$I8X`;zpfAbG`WwCrt{CryHW z@yl0AT&azCvHVU|yc1(^GF%{X$4;x09bMT^$Kr1m9QjG&rcT@P`~RT;6Ib zjFQ^N^&Y@>yDUVz&LbyroWe)LWN*S8&kgAG)~$ud3FGDNY!7Ere4LuS0`u~x1Ra|K zL}jkOZ);5n>lcfBQUcI)+=b!h;RwR*S-0^YIk@}!E^15DN1~U+`oze4IS)J+>Zpw6 z^cP8&s{4L@i4{FyL!;Mt0WX-2vIvjY^VzsTR0<$dHnjv@soc3VJ0T=^q z2oD@Ky{l^+y~3b%aLmi{{W*OZn2xf-mdQ_nKofr(v&K>9jt-1u0;c*gm$5||>{8_v z3eb%T48F{cM#HpPCe+c#|& z|E0yjEo16hh-`SV z``>%2JH$G)f>BJp^B>A#do1ilhTlBZaSv?j6L&sEF#O(6>|SPbIKeGeLdpa9H#X;f zz&!Sz+cW(9xjg)6>6?ge?G8Q$7}@Yg@≶@T}7{yHFZkF!eXEf5ez*4p;+6paKLEgpFKh;~ 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
    n4p)QPs1hA`|EF9ZOD(d-j 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

    bUoP7X24YZ2hSu3?=u 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

    } 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

    bUCw$SIi&}5+k&tp@vpjYt>XRdPn;| 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510180003-Config.rsc b/MikroMaster/20260510/20260510180003-Config.rsc new file mode 100644 index 0000000..f2579ad --- /dev/null +++ b/MikroMaster/20260510/20260510180003-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-10 18:00:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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 passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510180003-Diff-Config.rsc b/MikroMaster/history/20260510/20260510180003-Diff-Config.rsc new file mode 100644 index 0000000..0c7aa9b --- /dev/null +++ b/MikroMaster/history/20260510/20260510180003-Diff-Config.rsc @@ -0,0 +1,17 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4298a4298 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4301d4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4309d4308 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4311,4314c4310 +< 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 +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0