From acde3a873ec1b9597264adc7a023fab6890c2561 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 04:40:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 04:40:35. --- .../20260505/20260505044001-Binary.backup | Bin 0 -> 270263 bytes .../20260505/20260505044001-Config.rsc | 4501 +++++++++++++++++ .../20260505/20260505044001-Diff-Config.rsc | 28 + 3 files changed, 4529 insertions(+) create mode 100644 MikroMaster/20260505/20260505044001-Binary.backup create mode 100644 MikroMaster/20260505/20260505044001-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505044001-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505044001-Binary.backup b/MikroMaster/20260505/20260505044001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8a05c80c833972149370e960eafc7961b16efbaf GIT binary patch literal 270263 zcmV+aKLEh*sF8EG9|QnnftZvSI4yz@ey-Y0MZdfN000O80004Z`T(2&Lur`u7#E)N ztNdXe<^1^Qx|N8|bx>ycuL)DRx&Y1oE*CNQBaljcjTT}(KK|hW(>SSXaba*~0**WHK_X5KeSEVo#4!8Ic3Dj+0rR zgl8~BAYH^b8s;hUu}Huv4pwLVTjpv&S%Qm5A-f9@Lq}dp+7uPM$Kf1y`GOY^I(mEC z?_8(&nIFa<==w}gLWVQ}+?K-QI=E`18Z#UiCdR^WM$mo90S3EKD5DYRWKD7Id4D^^ z3>RCnnIZ{-CU0PmNmc8mo=@@eIQD_PyIOQ6_uzUf14@xIjY*|-K3K#oAZZXt!cgVS zG4qWWFip><3;U3lQXTeB5^G5>n3iMEo+}alaKS*Rhg-Qw+s`{MBaq)$STIcgKzHyP}<@D zvU1NO*nXLhp$Y`IM%toC-y+BE?+zamcNb)COF~H5HpX{g1l)h74LioLy-igQDVdJgJzD__;UrKFBT*O{Q$r&-0vu_B6sER&mrxMxNxlK-WA)J z^5!b+p615I$dnqe$xPm=#bo)qH+mYAy5CVkNJMU`)jcW#RKn<^{Qg^w>~RZ+=xQ=^ z%2}3e2>481m>C=(U$H5!h_OpDaPKK59(u(|TqKI4qtWdTHvuF&>1t4(I(=~|*=(Cr z6biBdk`sKgw*;!2C5+)JmSUbv8-$x46^HsMI`fH=FUsA6%Dk8K!;#efpKTkR_G zkgI%!H5NQp)@-1~43gXewXlgs$5zqQ?fao9T4i-**EBo*wT$|qA-Yg6&w;Ze3Op6% zj}siV%n9J3YRz*dLp4r?Xmqwjt#s5RtytQWIbp~Pa<8z%ZdYso$O8Jh5`;a7P;9GT zd(!qf9w`B8JtVp z{sF@^(tL48Q+<+}X$Ezh?FtP=Ml;v~sW}jV=7oja=Jg5+iFQC020%Y(x8Y)#edP$<$0 zx|5a6UUs-Q^7ulU{x`EPHw_<562h~J0Ocfqm4)Vy5LsjOn4qm?qDfS_gV3yS-&+IB zB@;tAP%)Ew>c`k%kISD4>lV}+MRj3+8<^IEk(Cz)5(4%C%N1SWMZ-6r&Q{7qxp0|F zY`)b-%-d}booCxD60}%R0lWWSkYd=oLh6e(@v(($8jc%tc38YoyZddhCY#m#*^zzLQ)2A5#; zv%?aGmukGZrbM|AQHbqkx*I4MK&k70=NaAU{*78u!sR95%F72WUxR`CRv~EbIQq(Z z%6I$J#t$F`;Crl^DsYid_PnuOE-Dl$c|{WhGS3Dn)!oE+_cZLRsCwj{G^}U zvCkdAUWyUBag5YvP3R96P2-IVw6N|@K`IK*=WacFJ0vsQILB%BpVz=RKKb~0e&7d! zKRM-6zNLXSX1TGjpI`}gddBZtypA~l4-~yGmsGF#sa(31SrH+xUXtISV@Qo%^MkAM( zN4oa!k`5>s1cujVo4PUzoAhzKZ7RO|+Bh}W=xBWT9n@f1)4;#v%$EAX$qKq?yk+-& zfjJ8WqoR1`T(c9w zmNe>xm)5Xydu-zlg*VpkC8j{PE<`@vHlLmC#xV54g&8>g!7JX*U~EbhG6=dN7b?OA zNJ0q64a~h5`EeCWuk_QKox{8adU5hJj=_vjAT9FR&o!N2iVIoZqAwtS0jCtxH#A9g zJQ&6R4#V>$Vc6*!8i+psb1~H9j5R0eN~x-XyPNeOG{Xr%hrJj^W-ue*Wi{XTK=9vN z9=%7eg>rbi?<(~xP_t<1mT1U}lpXuP)|bj$n&?1!%Rt-tR=fu%OrAc;KRJR1%BY=H zI*!+JEJs}j+w+)f6u z>${}r-IVd*SFD@%mw~2F?>6ttlFpH@^!iSZZ*=UEGf?HZ*hoA2K$#t+tUd{0kFX4r zN6~ZWqjtAZt!lZ|#yIX2`kiTAwaBEJjVgAO7z~{A2oW7Z9Z}MggtQzbq?qjDt5K?O z5+7oT--NGDMu$I=CfOX{)MW7^%vwxOAFB8rCvT{ysPl#suqE*I*^3b%>yxzw)Q-?W z8&BAw)OsiCJNn9CsC!WZs_Vrx1cZ1}A*}m`3BAz!lvyzxHIEn$v$4TeSJG`g7*1`S zeA3gY1t{jQPN+coZTS=Ra>>?bj&9lO?LtykjqV78B5HJ;Elg;Mze0ZmP*vbTp0vu9 zm(L>*VF(Rv2S+-0_kNo3zmtic>PG&{iZOugR)5@n7RKv;gdbhNp;hoxz*gdQ%VcfE zb9=J6CGuG&{T2=eGaAhsPkmPM9+apN8o^DuUx9&s31Zn#hRCKNMjQ04`|SBJyvPwn zNfInn;+3JRQC@o5jwpkyKZSGuGG3}ERs4=bhsC%5Wy;=3Cl@SgSXwMmb#|a1rb?!v_G~FQXOu}pf?n#iC67@ z#i|vRI;xu1r!~lr#*U_=@7(gsF|BO0Ry?E;@5TlgkJi-q=hNsH4jcd}HtML=OkXp3 z4i1WOQ7qhUvqeyBPhd;+95He^EcvI)tYs~$UmD@q4YqaRSHMjnhDe5mVg7BJry#Sk zQRgH9N}h$0^y84&ZWYCuqc6Kr;1^`3E3pu3zi%6_@9&Pm*)G* z{bpIxey3$)rk$$I@uC3iZLP^KjydMa;txVK*gh!_RHMBVb56NY4e#^NR=C;JeZ`d^lwZ!^4#ap6$h;s}IKH-D@=Lh9qB)RPWITnmGT zL!CHSXANK@NA5=(sT$H@#?9oQ%?Z>o88}@55lr|%|d*k zVRrD=kXF0+)2BA!5H_LgL8V`7ROd95-43|q-c*>ARe|$dI;>tC8nF*kKV@xCX|q_D zBR%_r7_1%r+-PLXDBRgZ9UH4y{{{d;b_Hut2!|_&WpDWIbUXK)vi*gW zc+)s;@QV}QIfDtG^ok#SasRez4tCEsIs;Vy@YEGEV=WA2N0WhzLj)P;>UHwRAif#1 z2fQDe$naHwu%P!B36Z04vJ8v!0P6a$KJUk?f|@C5+~?y>PRPp%)@*MyR}PRrXOc0l zK`Z;5n!f0);=hj6mBpa1o}{bf8-L3tO)m>a$%9lLDgNa}Z$yMv2}thw!42MUk{4Fl zM}RUzVu?gKkP|T~{L;!~RU=E^2Q&15O&MdjoH^^%YB^doOe?oe>_Cb2qNYNp!&VLw zY-fB-<~oe3S;p%i5fHfX*X#U!#zL-KmglV1Di{!Fv58$C4Jo7Jex*r_fw>vNVQ`8I z6Q=L@_8hv*XtxEtm`fu*o6|sG!j)Jd*!&k=k{MaE&`DARVIGpHt2YbGUuAl2^(|09 zNO&`j* z{S1oBLzI!5&A@4l=n>_Zy@D)crSt15G5d>mX1(oB4yVzlO3wldfzW~mV{YUt?n#C# zDX0$T(i$QKj)~b?Z@#EqdOjLG`_-8i^w(b4Nfexe4}W543>p~Z0am+dp%J{t2_`!; zmTj(d$&@LLvapvUTfPz^Ea$$`JX;&*RI~|rrHy|B-GZQx3w9S?`Aw18=y9Yx^Df}t4 zd)~(3Hs#P4X>;Qz*j7i$p3|24^Ni?w6nHlN@4FX>2v%nEo3yFq0*K zsDS}ptnsJF634s4E-M(|PeNI1hYdOglwNWqfUnei67YPm#N{^&n{fbU;&6vF%8zy|Emz1W(W*&!k=AP)kr5#Yky0hIa zLtt%Q%7PV8aCyaG8I)yId>Uf>p7;N~TJ+CLYF=4^55VpgM4a5lE*B^7jQpyc;t*Th z2OO-?(tdMf@R35{vT_HJoY1*h6bM)%@xRsUX-F$39T4atrVxqPb(ob3boA&z<$E^i;m1V!QWzB}X%HL*knw!*poqn8dR41Hz6J9t zwCoLVavJ~+RN8yhJRF0YML}6dUOCB$-%0JePG4 zq-ATGfeck3<5`=eK#4aE+p%-1e*;mDQrs!h>7a77ZRlcze%{_du2GOPt4D7G(RL+{ zeb;wYaLJx8n-Lr85$`B87;wE)`2=N%)hkq9e?t4Qz&)=S;~EP6(bx(^oWE>WZJM~_ z#JWg`1yG4R`<;4X?)X55Qs)`7JQ}&;3)9K|F@{KGg%QTOT|5FPr4yQd?F{Qh@-+i> zUo(s*fUl6yM;6*A9UsEmpX8O*uoN(BwE_++)DU!ba->;xU|rE^j31CBP~?%12=@{2 z#(fHPob$^mBjPe24%Ix$`&bi1DC|Z3%90k#hGpqgX9b%8)^rfdwnj7H!)?hO+L%15_dp1<5bE(JP29`k%l7?t-TSr#^Ukw$ zB4?=B2KVA+>G}H68j};;Qw2dLQoLphM9nVJ(g{NFKl}+EgB4V{aKVKjfwJYgw>V_= zh@|m2$Xczfmf3tsYVAgn%I_F0>I20*KB`5kQsz0K)~lqeEm5N~+@S!<#kOhmquW;4 zlDJ9T8=usv6=yeAn`fN`T?e_HP3(%^dsi-`yj|f+S(Lit$JxYWqUY{W8;EyX6h_Vp zHrUqWjy*-RFJ(|kV{02^W&wKQdkDmKB8YRAM5;Gb-&n`dF1+}MdXi5tF%$V*duhHd$nNU<@x z>L3gbp`BTP)+g20BG96DI*8(ac6q@ZbsD_i!s8fAlPzyA=SnKtsi2w*mOupEPV|sG zGjPGpBU5AcEG5C!7K)#@*`)*iHoTMbEF0vV@hpx!)~5>au$m`qCE77e$tr3vS!Hy7 zkNIjR20zn|!Z60NNu*{XaR&3$S=;Od1s^X05z-X3-T z%cgT8Pa@Hm^7sjY9z2Z?5QH0kVERcI&&Og|fXh)yOVg4{AzZ8M+v69O4 zcRM~H?r=`bGUnV@0{mkW{#b_M5OAZGJucYH^Hoq6COxg%D2wCKUm@Bh-b?(Y`V2=9 zAZ)K59vRT7w09XkhfGt;a|P@l-iE8@+I-rr$#Rwc9H_FdwmxB7F+6y}JHx_*B0ljq zuzutn`{QXcdFBMXV~hzjb^8V>Qh31$3&oOZ!1^XI>XBF*JW_1xs{%=_rDES z{`HV0&tH*kXTHGMWHcW?4ivdh8uACBOUU9_*Y4e0}5< z6T&yfM!GNYRGhJSX(7)G_5u|7<~dUiczu0r+7&r3QGX)7Y0DxGG4g5O^{MVP z1|Bd=r>&=lgoK()@s@WQCae~fw@S+$iF=*3fA0Ao1nGEu|JO805|13i22EiyiwrI8t*!+JX|SSWv>2Ta8(V2Zsz(rR#;=}> zEBWA3|Np#5{&nLDt8H@0E~1QzH0NGc!b4P03(ixwWhIl%l#mvNI`fc}nALJ`O*;qe zypL@FY)<7?4s5|9cx4c1N=O`d10$+aUYH*$mvsbA#yXHE?sMi@bv^(b*mU~7N6tMA zzEDXL3=a9kE>J4G|MYw3xWaOa7?iuVa$iR7cj!^c{oG$g(C@ceG}JAtx2Kz)N6y|! zh*xQ=bEr8`5kms#X$GRp0=oiCZDlHtUOe32HZE&c+1*?`W?LpT{IuwdOPi!dvpbxd zr76y6Jba-mcE#E$+--TZRv~!v898(z1OEa3=((Xk@9+h({w`>Mm$+%j(X1&pPi`=3 zv*@rF$+E+e)|N*m2`NuR*a}%8<3(z3Dco#*-I72Yi2NLebEL=po?tdB$g1CCGBCdq z@h*2;txeIj)%GRxrU{LmJG#ePrD_B5h=nxbR}`|!+;-J1$Jux+)5XRR>%kf|LJg~+ zx(zrENcX-S1-UJGcK@hi`5&CE->VB(7Wmvs>QV5RfE$jqEPcIHr>j!CeRb6N1dmDY znnnh804#k=-1?qgjG-O&7si2egN12NTjv#96*e71-^m6m{!e`k%LoZ4{Dw2wO)ubU z_tB_NYSw^+CYrg-a|oV=!9M})W*ioFPTC-yqN<$~+tFvCzcx#8QtA;k+0O5@o>mj$!=rzhhT4Oaj}G$2{@UZ# zZ9IVPHCPFMht)&Zxz-x7}kKu}u??@f*bcn7+ zpUQWp`XL**P+JK=%U^4)vMR7Gmo#X4tcP|gVF_o{gO=|kdj!g$iX zucGo<4My^jWV$tSIclL1(c;ucHUIa^H$8OE&i#;jkn?2jw4q8&cYjXR)lmgZJM`KQ zZnds!=#>7hZTg~Xe;2JpCM2V8AR_JwYhJsRnPfY?obhtt>^+W>;X)^D@)Z!uL&O=W zAIF$_SfQ18>{E%pq_C^-v>WT~Ll+*&89iV45)43*{0!FgQl}#6Pj1oGydB%SSdArX zIzB&`mflEJQ(qH*#2q>G9MJ$@SPhT{BomP!)==(r{Js77;}Nr_{OG{xRw??-M&n8o zOt2vz$za@|Qg{d-Y`6fnw99SC>$;BEjKh|sAf{I|?v$wCjN>V9zoHy{g)Kadg3+|d zk$-lV`kTyNMb*hkA<^RXbLeoOU4p7bj6pxFacf56JsYq4t zG$bE*sDSLx`8E)Gc75xwM7KZEr8Q?NT*e1OOshgrnYXaaj;XGc4M4M3BWjkSEW*DR+UlvV4W~OJXM{KftPBAw0tIPbyim*kj zP-Mpoy;A_NX6s9o7hZ)jWB2|-`NW|i2YzQ1-$}z;`INo26p!A(aa<{%74ui`{h-t@h#mT0opA0Gy-s* zUCnIHj#R&umOq1{2X&3Wt6E@#XIyXL=V_H_^X;097-$!U)?_SLI!oGaXOLcT8QozC ziK`23m^)V*Rn)PILJ&lO!*V8|5x7uz$rpHvjQc-sIBfy$V_VwlHmdtb#78lW z=rP%ilS>+z>%(5R?_zyVZXWHENR5!yBZw?84+xfM*yV_ZFV)ia3^jqZ zJ_>rg=~#e5$dnuhbZoL;i?_L4zlq)tKbtO7u?VKf>f{@$t{-zq(z=yVQ%obJ*2Dpd z2kiU!Ttcali?TzhLVXvRz$BY)LfIh0?nyJ{T20mKh*VBly2?2Ace%=a8|}4FVJtn7 z;Qpvvl_dIB%esD(dgS*Xeij9e_Wt2xB@~yFMfQVCdC(FJ@at=&AN!+yM^!zT5?T?$ z$0vk&w;#=-nqeo5K^@E!(m1W*6{dYuq8_a>mYV|!V);>Vq;Vgp_Mq9-6{L#eOD5~4 zoNCR(?c6vYl)GH9v>J)OqNV833_*(IIVI;PhL_=~(w`Ewi^hw&Z>%bH($`1P@F1eM zNxc5%fydtm^xw`9Ffb8A34yU1@2GVpqsO`tzfG#rQmpNE!keEj28$aqh&Y?WR5TsN_9tKN37h`=@J27^0~ANdOZ%SvD)K$N8h_j zEZQo(={Epm%PJnWli)!a0(Caoa#p^mHnnr|T__7&Xw)3Ah-wB~>%SP-1~muST($u6 z+reu>dT~xuNSfb7SDSxodLB?&Ny%XH5&!~zd$1r1xcgc9RdQ0z`N9v|7t|uyvU8-3 zn2OL~QMXxUb!{|MRQIu#^=N^Ya_PuRgLgs{LMXLX;pU<-*=+ie1vaw6;UnOw?sn$> z8gXELUlvfRO*!$@2)**-_s_;t0|SuSTE*P3gO9H?_=Ia)xXNF>JR78i( z;lBIX+qgAg^(ctnN=z>3vOE7x|8|6OGPh9J_{a3H)R*W+-#$bo5w12TGe-1PO5BVh z$FhZG%#qnlJVkA@EGXD*`x{IC)e%}6?%tgS zAYkXqkb~9_2-oQ>(jG^c^B@NMoMSE~+)V*Urx;hS7+Jxn(cL8}lJrboBEbni6M|UI zJ$&cnEY|Xce&BslDy+!_p78RFIRmLcnu-Sm*oGZlr`A{f#dvOOMkh)9Mk;zOZ@Gb?Z22wbno7BnnRl&}C9?vBu=j=#%HHll?n8?nZr3A&bR$BQLla@+ie zd&2Tj4VVE&>zX<|tfi8P{(6v^=|(UQ1)I%~)0s|rjFyp0^919_B1$bB%w06Lf1K%w zuMb#lJX=t|-WOBd%z0TG^ReXRgB3py)RQQXw%Dq#XoH!<%m9iDetc~Wedx8QFQjJJ z-k>}K4+Q;fj@s4r7!f^{=#>0N5N>J6Vki3S#4VH52O^2G!NAh;aQD8D{n=Mm%Ky5 zgLi+>{=PhXfV9HXh^LP3=>g04Fw>978se^lFe5X;5>OvvB~y$1QSr8keXhL4{_P~T zvpH!+10}5f7kx$bH4(=IMQ=hYu89BI^3gzC{S9DWVt!bVl(35Bby?|Tqr62>92GQM zwe8NQ{{_eJ;1c!{CXrpaR-5OG1QUgQvRigpZ~V?~E5@zWLpnCFxF(92IF;}qYsVtr z2u}Z6_l+7XTZ?F;K#`FkrlbY}X%l|&wQNDt zot76moG|Gl9tmSC8V8e5*NT{31tywK(iW6+H+$2B$IUh9rdoMrR&))uIOWsgftFYP zl$(}%JztNG5AU~f%PsS{GlQ`oXC)77w!e8NafC}E| zx$bOmubq0V5hjuqpZn>&XT5Sb{V-q@N(MmT(@cr=s}-=naU5avLp z&O2Oq)TYG5ereAR zV{V+mi1ost&S5Os1>qf{f0&Gc0ylG1?=?8fuDd?BfAW5S6}O}Bl-1J;>f>!bjjrKN z*$}U}ANr-#g+&a4^9+3EJ1(WDsIRr(i5vT<6}Q35scI&)&wksao|HYKV%S$G~@8{tiq5u@m4T9`)CwJYxwtXBkF3O4Nz<|prI zh;)LAT``h?aM)Dfzp9v%q3l|W9KLcQ6=md)I7b;^!6{HpaKcD@aBqudO(eg`C);1hgxhy*VUYSaW>WsnGVNH^|w8 z!*v)jjD_Ss4{DBGwDVCKGzq<23&UUN43q6LkW!V~8lZ|IOY~;+zH}Udg!8_y%v1*h z^6Rx>HFK$tLh^LmSpt;;ZXow1*w99&j4ou$L@}$ZbrYRhz)m%RBmLX7nRLSYlN%F$ z@jEvtfiH44nBx0aHs^7yicmvQf~@rrelMQ0Iz7bO(o&^{1aju659~BQiNOB+$cB7IJV#mH#?0x=0mJXqebk|Xnbtrw zxB?yh_;FCQ++dN)IlVjyf`B;HzLFi}DO`+dj@S_ODRftp?T7{WiogF>A0jiB*X}Lk zB@@}ikE&@Q!;Smdo!Cs$sTVbs@oaezd>S^$`UrPC0=OEnQv$TcQ8^QH3iVtN1PO>K zT#Uf5&O8f=5ij=m3i9g=Or$J!$yR9A^NXkVbGtXXIJ|npP5x61ZHBBjgTB=1ZnLA? zCh+{Z?{L8GDCjRDGybJrrSB7&OVmE$6<3Z^BMA#6s0&in3wdbvCdD zP5Qr|kq+&e{)RErdi#1+yXD>;go}PE&$-Zx@yaGrdy-L(linccjLzww> zG2((D4pc(5TJY{+)U?OgYQ7sBl1Id|bGy))Rr|Yj{7nIuTbuW@WYr+koy$0tTjLz1 zeP?$Y)>wx&jG}UOCe@;}>fk&L0P8Cgiw;b9iap(l>3HJQPx^8l=@GU*N)fuS?%;c@uP@0Q5*o~}dMv17`$PFE76azSWxGe`fvsD%z{GG%@d z4r@_4Eu_;ECn=_=&e99`G|ir1FfCp^Ob*PIj+Wu)w&aLb8uVwbwR&i~3sOJ$sUbvG zgA~Y-9W>TbSU@-zEBOe(FcoK{LliHa!;_-u7wrFtr$x?j@qet~Bo}-EYOw8Musodk zsLaNI(!n}4JOnXEK6LwHNwyGth&ArXky`cOq!&y~%Cfo!?Et3)Ngy;b_>E8B+{ro# z)WVe_0Z|?w&#~Nb%e5srGOg+?p;gY&m>gG>6T(m--ad}VE=h%5V)PRVKwvK?9x$ki zV}Cg*eY)3CL^z?7jS-6Rlo7$#dT^hh?^%LY`+juR5r)8i;4Mj2O%>2G=6RnPO0|4c zYXGhqEK$`%z#?X!LDM4mfoz%ju= zA@*|zBn0E7lHw&U0?K$)EDWSF)2wsox`2h@{oka!`7d zw~yl5sWMyj`>Eug{9v%Ey1paf{{KyyZR@zL@c((Wu&^+`g`Z?!xR%P|fLGknk6p~_ zlts%D^hvd8U0hOt5N)-nj90HGsudg50B-u;8Z=RzWbk}H*`iQE(u9_P_dGnCCn z(@^us?gZ=KCZwJTE(Ggm9(u_yER#4`wm};uv`mCkg-Tna-jot}DGX^6SH6}F>J@edDha(q6lRpdI$B zcZ3Dz>8ya0U#c63c+W zq;l;V-8EtO#7?lHjZpOzNfQZ^OF+~xF~(0K5v9clkjEHCNWT{S5ZysN>314hu|o0% zN;PK5xsmN&J=x#{f?0>1wk}$31BFN4L4kI$SGf2?aJC zTmfZ)n@Z*Eu_lOpR6z4An=IYjomz?6v%Hjyh~CQKJq_`hjUtw9-UoG7#dbzVF0(@{ z$Z$Ml5!K#|HE*uirg5fys>fJFHJ)gNdVqTMV~!DSxJ?7@fdysnKyAY4-reLKDbJqj z=9*Jon?R&xn=tnzIOR%LnL~k%dDA`tQU@& zyy}c zXA~ij(?^#xO@EZVtT!(ULYndY+l%GH^dHJ50lj#=TCFtBZezc^#XJW#b1eYAxxfPE ze$fy{!WjTWoRv9nN*7Ey2 zs`@M;u`xMNJ?D1M`qelXNh773sJ^mpe_)LLz*wiqZG)(=H_~ask?d-nksK6lUd@ZkvH-8`Vt@EB{Ug;g=v%7mCw*}I_oI@Q2aAQ-_%J3inc_< zR$vkU=joLb@4V$81-G`Dd3rj|c6mOP@Hj>PZ1leq?>x!G#F_>XJnc1UYe~0K$*y_} zm3?~qjGi^~tddw38XjniYpK*|jrY54oU-I>JMqtq$2ol>`5?2PZUNlFtNyejS(0^X z&K8>VXYF9Dj?jLFJNWk``+86ToJyXP2DNfq z_#&QWdy8BOB-m3#l|)Tn^J@hcoJyQX;$)kV7fFGkx<2ECeSb38^;$(>^&Oy7xjeFX z(-TpB@L>qH0(!Qi*$%H}rPI?x6>YMj|K+;JBe(uN;kFBuz1VgHFs`{t9jdvXKfCX)D|Q*KZe+PxUT zRaoVAxV-!A_lPZ9lr1pAc2RZoe00YBjJMaxA|aBmiGfd*sg0BNXq7G_ht1w;SJZB+ z#$#(&@HVm^YEl|vBjE5B$6_g7w4=o!s)7)L%nO__rc4(1U%5mH!>X4j=WWdRL2#Og43d@}k=@(kVw{Ngi zHvSwD;Cs$aSGXl#&wk+vV%Z4+A8>;nyVo_jddOsrX z98D^3@t&kovM_jJ&twk3hS_<56-$5e2#kSO>ik@N~_ec84Dbc}t8x)vdm9V#@jVU5IF~}4H$0FUd zE{R7Q%s;aEqE9AfL0E`E*t4oZLsyM+(6a;;x}HxaiD6{$F(LEkccA_Bi4Lr5vqk2E zXJsR_A0c)xzDEAtQozQ0#lm+4s%f9Nf@{4frPBsD8$P&MVv_!jT1hfRKFFW{pm z_8)Cjs)oVUeVxjo5Is^6v_>%m-^(<;DC&dLfP@-IBzq&#a?4^qiK~3>M?~bw)<0W6 z55T2c8?w`>f{Xhh8kyLh+>g5Kc>P8`n;OE~y?ll@ukBW$qZgWlc(04i(c!YI7bL5K zeA~C%2H_x@-Zo?Sx#xgcOxj9k&wq*=!mS7{Ss?Mr=6usOLJ3F0&F*&373XO7`Yu9z zrG9A2hMvdyiu(IytpUJr3v#;z@fmMVY+lw59B#DXbq*?HWdNtHxMl!#O?#VE^R zK5KXw@lXLkHmn4tuJv~l?{Pofjx>jp#)GUZ^7oK1rjdZ4psJ^wDvo7i?ZcIPpR1gnn}a5JDLutjfh zj~GFtpe@-M`->-l!9^I^HGo<0&kzTkO5KZdR0Vu_#i!Onr6vb$tvM89&t_d-_oQ~7 zAT>8jYeelKt(~6l|blDVjUA)uO z&e=&(z8${`k`0jM2(02a5_72r)Q`P|I@x{`h+wsA3+o>rplpVT+{t7th4$(wPGKdx z*apmzCpeFNDZWz}P^lm3+#QUw59&^rwT_JTj;9Qi+;=1DbBe4sj%w+Om?DKm&TqbY zO7d9n{2oTWI#(pQ+WmYc#fHyfc7-7;oRezI$0v*?0?a}xpEsrc|6qeBd^EW=CMgn1 zD|aL!Z{A&cvLgud0KjG}hS{J5_2`&c?*C9?nEa6dy@dcmJlAnMV4X3CB45AA?}EJn z49DG*4#C95snU$xQrSo9#Rt1nUxAGd@M^CSXeB9^A$C9+&mw) zZsSqjpYZ^D6G7(gdb0RZm+9PxI+ufI4Lv>({9dOW?P9SJkA%= zUjQK$+NIL@-F?>PB@F3 zTB3(ioy7YqNYq)y!BeR3=c+LA&Ti;qy-fdj@)~$dY;pByAr9SBQ_sPgqo+U!j;tCL zeH9BFNJ7@G7C1;KFK}^f1d{_AwblF!@q%u=JX;vH*9@u+ z{c>GN=~?ac8}xWmLFX~*5!pxBwJj~deln*O*$Z0G+qVUyhI4a*~B#Z}!EAY>e&Z?lSJ^d}6KSX(GdYd#O z=(Ef<"Hy+sbUuG~nzHi{T2;fGOt$7q8A5vnNq&}&k`g~Ck`d5RNSs9D;5)B%rQ z)O%8Q)!U0_SRAem5H$kg>a|Q)d9i2cfvT|JvmSR=-NL5_loM&TlXK$a`MI`^xF@*c zKTHnODS?Xr6b23`yRxm}RT>jIB8qu!1i==Zp+C39fCRJ@6L1OdO>`N5@s0+t4L+2L z`$5mYW(KpAai(p6eRZ5lqLT94qR0}#22WHJ0Yb4ZHJ6NDa}pN01E@nZE&wfiu<)+E zykk;8>2ump5&60tr>4sRw_)O9SJb3HNR&UJ^yJ&Yy8)?Z5+}mmqmcH2xWbt8B#O^B zq$Rq93Q{g24-c&l%^oBfA^4J@jJkCT&qfcP?WGZC169SUBm->#V76Me4C*YmzM$%d z-61vn0(OagS150t^5D@PscF#&H@9u!Njo0%z6Yj5&&s))SZ*+GQMdsxJ^U6rO`PsN zrXx!bDl*{ku5dB~nA_ZyxCeny|_!sjiC0XO7FdyEC#%P&{Ee_hzGTw)nZ-7Gf>+&WYGQxebX+cq(jZxK>WeMD!w?*H<|(&YB_{B#xG^>@yV}8Qy*Z<*Q&8L0|g);HNxG zKW0p+GLte|Kj1G}iI*h%wT;SBVW|Getl{*db;P#;XV5yr8-cyMm!Yiih=gF47xVLg zkS8KvURSODal4L8+^}TT?_xBm#+r7*A~jGcdX}Bxr;cR6CTLuk7dLur))oV#D3Iy+ zP0+R++{l}&z%YNr0GRosh~f?r(#g^pEMDl>%NMWfQQ_0?mIO-wArl1vSGh9jor5rN zGiffXqRw0g*?i0KlPef(lRSSt<|v`#Q+mI#2Q2XI8&;^Tg@I>B&i=yBu+LY;dXrF$ zJr-)KgmfQ!$FGKBmil~GtfgC~(LPKnr%g>LWm|4yYORrYi7pS`w5$T-z0$sVl)@@WRVt@o;^!-`A1XOLy+KlQ%FDkJpt7qpEw(r;P3jVOe&tti zmdqoa7}?pF%acSud1+uh_tyzEoIXNck9N)yNfZ?~7(tGP;PvCGTrFF7bHsxgZnhxt$cimlAJmc0 zR5&~VKD}>h%t_L6H4!Cn_)vk7`d1%C{E}vnZ9@4%1jV!}<&m?Xg6cLjo#v)bdl;g; z(C*q2|CjEMD1k?3*CTh@Z3ARFLHoQOi7w^9zivcNyJOh9?Tm=m8NdZ|BPVYo3q42U zDD#B5EZ5;WA^*t6W2)%FslXfQzKB`N9wNTDZicSPrwd$h&OX+Wf>9}i9>$^xN7?iH_#6N&tk z+FL$%gP=XLO=_mM8P)Vi%90YV1R_?;poW?E%uIJ;A9TA+TG(d!a!@o`N+9Jt&7h3o zUvVdbAe<|ky5R*pmft5|uBqSt)AtB;u(3RTiX}^6GC$13+(&woxLMvI)8TYm=eApN zh-BJykZ}z>V34?3DLxLGhq895o6rYd<=#)`c?e47YjsLG?WJQFLP7(SMt|E^DrStg z$I)f_xGv2E%IB%LGEw5gacJ9l4=ZpBYKEkcG6Bfq9Bw>Rz5Z70=Kapm<4 z6(e(ryLmf?VV_f{w$kNShy0-I6*z=!mq;BE`nBI=-u_EV<5!=2D zosnVoz_LN91(LHTG}X(SWgG++lTBby$$c1%Pj?#G)O|sDb2QwXxL|DPK|qv3Y*kUy zpb8`QcN}>W4x_=n!*Mx#O{;vM$s5N*@_u4K2Da1{j_ChhK2EzeS9$|C2~4Feh2|la zX}r9tt~PW)O0>x>5Kpw^;+=MWuVJF}IUAqirKX^=of^SDMz|eJ)Pn6!l7dS>|LeUG zB-tRWoM-!2v{P>;uuv%*kHSl7;s{aLY*c4#-Nvj5HG_Eo{10~$ z_Y^G*Ll&RH4-oypf+`-PrX>5D6cHw4@{HGMStjwx4bH3X&T{MA;b8fP^~QYR_q2-jWf z$`d#IYA}c{96}k&HkP3*Oc(&|s4}s&$<~`kcnef01+$9!p;phz;O8BEZRsvn_^=~# zvov!i8MXQ3mZle&y`ga)CF=@@0junx4S7Hs)X(3=v`D|kx9jOCvGI4?S0mVT)ca$n z+U4aShYfcIsGlBks0PSOS&>lXmEYAd4KO)XCqYOJ|LfGqEYXaIF64fZCm3RA)v;np z4(=(Rdlh*$H+Q8b$%(mI&co!kfxpOqN^Ngv%#TGDyp!7+X|_-Or{E@?b>%hUaa^_- zqGIN0)&;Tq5Sx%M^2a>o0=(|jtJFMnMF?KsmBMXkVBK|KP)yO`&{`~Uld$*>mFFVxNxt07 z4f5)!rZ$ZUO&+3hQYy0FTb z>7j*SOU&LR2agUr1ii^krLpknzu$RVBOB;a*7wF}kXlY)AJ4D$OuMv*QbDQnuGTuu8U6d_lyZKAG4 zrD#|RG(kPlj7rH2RI3J&VuVuvi$6q3!ob8*N|=etUT_vL7S*$OzQ`!5kuAu)n|$|} zT#$;*{khUC8zL=`A`Wp6wVUDiiTB-^hHr@ctCBl@m2Gk~OS5cZIzrInQ zm9++C)&;4w+AxZeFqne%I&>GH_)J^)QHyHdimk|}1LlP6WYwRAE1GHPtHtIT#ZG%? zi-*IMguiDKqcjJOjpYOfcpGu!-cuKsZ}QN|kv%QJJ-+P%mrj3Z_I_tu!h+$#;}7oM z6QK-zK}yiQNwOM3nTfpLHgo2^*fdMkpW6A%H2YSt+iitt)5ipfU0P&;w-Z#XuI=pR zU3hj2D?WgJ`5R~jD`3ij2EAlkco-+iX6X4*4!p-N(!TKXU6N@nb#9UFKZ(ZfdF-_) zNQEUp=KRsm1o4|_*5H3-oekKB`qDBbI}eV2-vM$I9^hZA$cKIASs-EM1s!v^*CUdx ztk4jErhq{qm;)B5n;lH2Shgf}47f-^7((wqKGumvhRpOSPbQ=;IP?}4!2dI>6Qac~Tp~h$cU~#g4b{+)v1|{%UyRIDpV`=d%Azc+ zI4=Dq`xDGEvrfAej0EnGMBcES7|pwpQ!YP4?#W`S39ET9cf51=v+$Eg*5nQ^$qF{I zF^t@h@^H2Fep^sB>z0uF_SMBar}zC+u-%~mAdTmbvaV>w`U4XxU;;Ai4oJ!~cg6k( zmaFOm!P+@WdRj%kGupo7PK29&sLqmL+d~x;60i*yzOO3SQ)#WR`^Rv7acknC@vits z&J*(gcyT|A2VJhf^)eau}++?244?siy058;%P6mradvQu|1uS0%?3-x=zjG&Q zM%|jvqSFG!H~2(O%$m@7uWeA)@2u1?&XSQ@w2|1#`vNocj&epf#02Yli;GCEsy6LT z8LOtS9iH=jNcE|{H$a*6#LCWY-GCW9G_eMn175-E&OwiHgwGrR9x+DbGVk7Mkev6y zLR3>H8+*dhi)d#$>nNff7g>B5y0?Z=;T<@e)bxl(n;7o%TV+s9r^KdMI{0&F7KqLP zn7IP<>zFW|$_0jQfWjs9p+XZ+H{(kkPT;@ZlU$1B?ahk`gS4j97mknnXXyuACU{K> zL4Bv?aJ8dRYZWz~zH8SrgG|gfR)ysTC(HL;s%$OZRMJCLkc8#uf$N&a`TuDJx<@_I zJRkfiOH9%*eXN6>!oa==88-5>b#A;EXQ@ADi(e^jnhFnRGn>E1Ok>+YY^XVdI(tj5 zM7mytWn0~?U&>?KdH8e`L!KxnT1m=>{1Pwrtg}1p1buW@{k`lm;z<&FcNO(t0*~z`5XKI%#N_ufiL|X3~(#8fY-hbqUUG0+40R z4yPzGP|BsLKd7N>P{n);J`~T>LKP!6GbAX^T-T=@kBvitDcS!JZd9`rQF^RfQoepb zQ;(bS`VGARd8o!9u*a`Q<}=UoBt(A<0D7C_NSpZlV)$bkr%Yi(i;yVq7E77d2{Md1 z{4rMoW<=n8%P_H;?mDvxmo!ff!%AH*zyAei=ngbuN!uIYu_^;cHd90Y?ZnSAnuzx} zCc}4KNzXO+cQj=gtxHGL#`{+Bg=I?X|8AqsNM-274~$3I_ZWSFz_^cX`sXTUBt?Ph zlNF=SekS zF&0a8Vhl?;0j;`xJyF^D8>vou)SI}yy;p3xL_i`U7y)Hk13;yy5svoq#&XAteb(RP z0jsICQupe@B)x8iRjPnWBevryKisoz@=zgv1?>1A(_qv>N9u~uLWoSO2AhSsSQ8w6 z5%1^(8``66{nLD}SOoRpdr5W6VR1o-V5Z?{QdVd~U;ZY;WZSJe4C|k*uW)j1STNfu zcsFAT%N2pY_nv#G9k&t{U;ju)k-hUw$RF2At>0>b$hu zyvmH*4va#0!NO+8&t2AJ>ASPsHT^`puF{kycV{sI2q>RBxj|ies--*^u zWnpE%p1p(_XkqdHv=++nK?G3oGqq++PTwdX!`&OW@ep^%iu9Ly;ywtDfLhv zij%KX`VY%bDW9N{*tezaHq*>@A{The$ZzMI`DRGu;O%(m!t|qC-UWHGO!x5%sK27z!$m6Nx&@X-8fT^PRpp(=tS(LoUxvdgS0}iaH=Z1YO zVZgUJ=R9rtL~)_liV0oO=By@t=GT1Sr2G-(K^b)r)3Jc}qrQeOKhYvR(VRUB<@=f} zDgH-q2+7`w0_=4d)&3jz~(+Uw$lr3$Zd5M>FYR72*Bh8IX*+(=)Mm$XnGoLsNg0Nd0yvl^}+L6=^4Do1IlIl0An9WRwEmN!@x_x zX;qE<sQZzX97HK1V0*^JZeRD3Zdvgw6>k*xMkm& z?=A1i2nT}Y<>lI9gwq&_?od*UAvVj`+2qKt*R{7 z+*Gw0Y-e+Qldl#wNN_)|nnxsNFV<`SwZsXdXCPQXaW!dut> zo#`+@3Y>?6=pxnbxrYo}A5de(VHrHAt$X9%-~V?Y=m5Pby1mC`k8{AJk(cb*A*Asl z?{{Bko+$^}1bVF%5-Hp-80DonQSD55y1qwSSIZqaWWaJtCITj!W7)8H_i-x?)O}ha zv88xqFb|tjtIeYdzIf`|cB~4OfHJ!AUU0=6zUQgXvj#H_25M}(kK1ZBBtlon&>(v9 zDos*fL0R=ZbU8k?`GPl?e+-N%IW`P8!VsjH!fV~R*cMRP9-VGaE(%{OeG(x~AA?;B z^peHohiSt1Ikz2 zDsD(`qO*yDN&nNr>)sviwd-!rJA^VudX_Xe+G&W%<)Q}m*4n9V0lt^C$+yV``Ziw$ zE$6Pb@xYgX1GsPrD=0I08-kbo7+Btld&<7SDE2$CBp?(nHOJhileHwg^H3j8s$DDM z3WzT!AlVK7-PCJu@}q!-CWmVOp1_wwBfu09ms?FeJ@oFv_CF-D%KNmF#n*D^F%C8L zZ7G9ldneP{@%+sXd#&Aq7Mr1|^ygILJH;LH56JhZTRhjgxaT2z*at3-YSXhik5{W$ zT|c2}(+4NfH3>*|%I54=pa4?H+wJ-8_~G==%_l;Nj!MCRpN}0qs;qo@%7ozZeUzu) zxAIUEmLY}k_Y72Ed@Tld5pcF2k`scNu6XSwYJJyRxl z{J1#s7Gf`fCIco1Z%CE7%Vc2HNl*0gN+tJuQj{R7{tBjyeDZWjNLZw@08jj+`Qhqz z_EyH#pvR3Sl`V7GxTUd0ddUkka*8X>tNCz36r8Tw@J1!gE=@uqe=7U^w0qYT&K347 zJ=c4yj4*I!*ljm!BSx7`aq6iE+!?H*V_<(hf+}Sq`hEay>H^e8h_o|IYud=C4l%eZ zf@;zL+p|7F6-IX~J4k1x{t7u!KVynkj##z)Oa+QFX3cX#b{kR~VN&_u5HpvG;HmY~ro39zg z#{31`H@1yQPz?Zz7tJdU%bmZy;8P)(6T1L8ro3B|fMCd{&mNgRBE(ABijHa6`a)Qk zt0A{53pqjx_X>E4;f1C;C_!W4#Z%lnpgeHaQfrgOsL-|^X7M98H769 z%L&Bv1H{zdl)N3O@E?!WDr`d_4hsBkTkcsJ_7mCdi%Xr~5Fa?4@zUD~3!y=b@tadP3CT zs0}=^?ap@9^grCx9;{~t##WlA=Ll>#I%Ey^s?shoFry}YzuSm`l$@n3G6TjR|5o+*eM!wGUf`II4}Sfx`2Z)! zfS?NFqvGZ+lj+1y=VVnvy>1_e9Bj6AK+`RsDFNtCW^K5QfVRjR&xrJ+eVD}(`ltU@ z+1!=YmBg#zT&UZ9;+#zKH(N9of@QkXS~m#GV542O$k0AWL)v}SBs#$zT@NPRis2TzS#W_xNy3PM0Y<#sd z7qW-eiC5cl?t~DT1x3AHO&Z!z+t6M1%EmI%PU65KGYIfh5A3M)e}H9^o&>|2<^d(D zzAW0iBqkemS;Ygq@80))z*`y!+2gpnv-3HejZwhX@5!8nxg>*kQ-8@6sMxPs#c^S0pYW&MESx z!!sNhm432-+_gSx`djdMr=7d^oIt@Qu=Rm8&AH5VS4|_v`Y3&Z){|KNTDSdkZVzrS=p@Yh1PiHL8Yhgj zzz7*|Uy6J3sOlhK-S#+H55e4DrLu6VPy){n>k1RB(YeyxQJ-HL^~$!w1zxk^Z+*F% z)W6Bv!)Q|bUyzRL%A;*617?my#*9UJtpzgdnvR<<{!?`1o*quonn=?fU|}^|aC4b$ z5)J=m{_}VrDWACQU-y8gpPW?y_-L5>lfxFGLQ;WcFvBesOy~&rKB31bL8a6)Sh^1- zSICjj95!5e5V40^jDPO&EqUqur0vu{5fsBnpnJarxXL#1Rd~%K5LX%p_py=+T;^(J zorYzoxEc2%$Sz{A1I5D#SOK;W8;J2%P;3`_Ay_E3+#kErNWCpYAWNNG&72g(#N%|m@uE2$C#cEch`fd-%!6gvQM|T8@ zp@t7~iv+|n453!`%`Z1b>*HJ8B%e8iLO^`z`E4lJSouD)olr;&USrc%Y|^V%`v0ke zQI4viwhZ)&WIPR8dRTW2Qa8hxcPdkD4EJb1svCvU-nfD|?O2>bxh&vr+u_!?c zB4lCwjLQ+olwgI((7H0Xm)ZXh6EnzLOdyg^?CBI5pnvJFv(O;FuCthg3X_o7kiNZw zrssQ7TC6~xPahXJhBPW2K?lEmtB=fpiD)Z5(B3x0xas?`NyInOx_=J1o8-6foRI?LLiM-t|8_}P0~Mp zBEuQuvoYkj+pGhcfmVW{FajEpCi^wZoMN4N%Z^=Qbq$FGqXrvNHZ67DV(?O?2 zl?V_K(6_wrCCnMdP|2G@P`fG5o2Rs+OX}4Xx{9j%mg5fbMq*aQ!nD5?euQP6jss-K zv;i$ck{m30smY|gF0P9wwdn2w&RSS12-{5D?>YQ)+}Pb0V*r|IJ?T}B=_TmDxvpXQ zfZ4xL-|2-`o_o;Vb+j>pr}_1Nu>CvI;d_V;EGFwnJ71IZO3YRe>yE7i@YG)||6t7i z-L(9KeWdE;Y1wDgSm<^qKdzFc%nF?Nt@26ugL``HPi>P4wc_Mc8jRcHZHHWu^^U=l zFLC0Xx~Avkgf~wJN56xmbG3X71M;n^-%!`tVA!&0rK<@#$|-hu*|P{8KxhhQk4H1v z_4wgOk-xeUK`aJs8^dX*;L2}Uh~B=58n~Y0qBJebCFY9qtLl|CBTE)}9KXm=URGde z-O;sjfXv&)*Yu91g<=N4xw6|VMb>@TSobCNZ2bHeNmJ#Aic;S&EZ!KxtVt$2MJKUw zwy?RvzVSMtUCA49xx9-h?#V5duDZ zVEY5s~%lC>&HqXvgm&Omz!LWLlnjSgtIrqo zP|DO^`c(&tN6o{!(h)EBKPqV@?#j2h6%HV2q{>sOGqEECi)2!NmVE5uYKhoSU|N+S z?`}BYTQ>UgUa42OwTJn-^|(`V7?^lak;K@d_|>#$)h{!n|8%;`m*nLy02jm;Y8@r` zZCN5Mof9{+uVjkF^oC%Rm>`LSVzmJE08Z}F0*|ZX={zVnt)YG9$WIUObtGl?{4oAd z(zu|^tR4t;5+aG`dZ)7-a#P>xqB6G}6K! zPJo;LFtrKnoKcjN`;C7bmtRK~Bw-FZv<2q6;#2vs0AM^HQCx6|x3J!8@ApOk<~2*2}{L`=%O2}|2tXbWQ zVtXePC3(KmRtuiLS6-2us)_@LDA#j`#uzdGx7gzFQG%W0Y^lc&w3AmMKrf*Ktm6^qkQzb=rD^<$_jmkvc~zjJRR(_~+D74GE|!E7BkAX&o{ z#o&?<&~AMQ*0bJ_F+!ki6M%zvSZ(+^`~6%v)&Un~?>{8SAe;EQ!VH6iM)d>+7PUMU zZso8krd3K7$`JC({E> zH$-y#LNJaWZ#DpQlLDgKV$;Lq4M0T9L68ba z-I`;i(1AuGJnHv$d?UD-la-0<4p}>A&ypg`y~!GPg`+bM76F_cK}ZX|Y%&Q^;0rE1 zF@i`2Q2Nl-c{-xMz`J>IrV}Y$nHd-H)ZO3bUqYWz0+_lwG_7 zyg(*!9yP@OP8MUODw7PZ7Y?O%UXa++yH5P1ze-9YA|@%R?)Xal$|X*$z@cjSN90It zf}aq&S7MkZ_%dz$kRNlGiLXHXpy4FC3O026`It$6?JK@=Svi>O4UwWV4?C-fJtsWX zr6wIQXY`wLPZ^Ik4-3&W3>S$LQ&AH5P6IxW>hxAvQoFK?U7g>03pv)&vxFvV2kWk% z7Uq`up(q1k34MS}`BGb&OCA}h^1j1X5`5}p9{nmiq{jiG9WTkdNK4(N6PJua=a*;U zhv)?+Txji&0Qd1zi2_iABEb`9Z3Ibhs&V!S;p~9cl0DtcQB4?Hocj>IN z7U5VIK{0mYieDunsX);PC`jYPmxQ4~>H9V)7(3h3hnX!fH;73L zB<0a!gdC1Uq=!2IG8yV{>8AiQX%`e`cWq%+UZ#wJ&Q)?6mmtR!XS}ox>UdG#{!ExA zd}mq?Y10B0JGt-0xLMgo(MP9$ddEEo54l3qx^|7 zxZd+gdk(Xi2kqgpPV z**ZNrvw`%?wfUO}05g(``|g7;nVQJqzh^Y8HIMs4*KLD1EWn$n$N!TuYW3&s>tt8m-TuN3jS2?vD7LL9m@al$;HX8la@C^dfYJUzk1FKcFY zXYi2GdaJ4AdC?1gv^g8DB%dC```1ybjPfI#)ZONE6(PDrBDg0$n$ez+uAtQqW<<6kI@Y+?7b;C;k8`qSMVu(`&5(6OF{`L* z_6Ll@-MbSfs6(M(-e!+vLVYKyaNneA)xvtltDXH#;pj#_hxvsl0y<1Vl;@2I5^9P` znr02SKw~oP8p%GVU}P|%Z zFvo~jFWy3jw@01ME>Ea96QRde%sqNcFywTYUOY#t0v_*xYNpvVLfa0$n1Wc&N zyvGiS#r6U%{t^d&!lt7XOB8M{gTkC|00sdSIvzl#dBj~bps7tZQD_&_bz4x&dUyv@ zX`G*IK2sl6JqymV5TTxtjdwR)DQ2fbZILg^s|xhrQcnMQFyG9@Ahdk4e^TB5tkVm|xl6tRC;Azl@ zNtuv*<$SduUEHHOKy}&U)DCH37(_47e$U$NmL<3g^rtByEH#9Dg9qM7gO9oFY@3Xm zcF0U`N6;hM0+Jc?@#?bhy9A#{&f>ysjzO;vGy?Po<8os~eaQ(ePHUb19*}ep#{3^{ zRDE*^FUAr5I8|}ZTyn8>5B7ca<-OO;#n=eamHfiWs}TY3p>(IEf*Ix!-fT*o>qBd* zLPN>+u9|kV!l#q+O%j2B;+Hodh zZZg3CNquP?qN(F>NSl?c(jc@BtAf3yQ zf(|U`42S{xR8dkVYl|Zwyk_*_WdJMlYr5D_v6p4IVza`wQIjh zBSLc0r4eutsl9Tm8(Hcm%}I5G}CS2~ApI^MmX zZq;a5{LLFDad{xQ8w>B64^-iP=lwEF+-g$JfpKP3Zzg9w1r)F$zSP! z1lKRy*D~XP84nrHJhWm!=)?);dzi$ma0xqZ9~MZTKZ%=mXD8vc&|V zf>6+nM>F+Gwk8?b%*oNSK=Y_i`ZFhIH}6*W>fnjidCgxv5-AGZgLh-^E^~mEyWjO0 zP00MQdnTz6vuD6as@EmRkQkHf9?>36jhT~!R9MwCVhxI2eGors^a0vMiHir2t5FD&5f{9zgV;nkk56+a7!s1? z!GSJ)ZW>^u6Z#UBR2>|#%i@%Dt~p+B%(dqj?Iacgh03I*c8rvy>)R;iwv-|5yj|C9 zs9M62Ayf7;-_C#q;&HZbCDZt#p`NdqkQH_Zl-;xzhbN;%upUYZV&YXA=h0S2wa{A` za5zKI@DTGSP{e*SUEp}E#Xy5}U`dO1(m)bm`w9#w+m8}PjsMW3A$H76Tte%-`LPq^ z4aUp7P(*I#q&6Qn9(u`I1_nO>?00XV4PZzl!PeFVM@kxx+?cZsgfp$Fz}%B{UekY6 z1~=lxvT&w@xIk3qm24SRoFQ{dTPO4FsluNoCdd0sm`mUP(>Zgb0`yWuq=unuOK__S zR*jqi`K#`Mvo8z7DPocDv}yqSo{nAarq=i{ekYKGuMbRCUZBww@ceygy%P&Tj;or6 z53;PRw)=f(;A00+v3(Og(wqtUVOJwGm-D#ck~M9U(?&75ccrKV^gQqU0X*7>B;4-| z->DSnkYO^l!Pwor=)p%WyWz2euYb9HHsY(aO!T}`TB>($A=Hr@HtyX}>h*7$B?&zZ z11R)#)dkGBJyW2&8;1!u6hn{``?F@oaljFmlin}c)2`dJY`nfQ8J(YP1_Y8jy7!a~_y<4RA>b9-YL8N= zF~=Ejsc7%2Zf#?aJuwiV$uCykBiQXhQkF3>-vW1OS0K&_HSPiMkxSyJO|zYhar7^3 zs=(nLl9xu*o2+WbSD2P)>?cl6kcI*Eph)a%`KopQkLy;qWMNK3K9c_vU9<~uwTk}{ zjhBaAhZs3Tu2O%BOXdR!l_V|Qj`E9K2&Fg`uJxi|f&TJYymtR?-8p1NqRG-gLVs=d zKUQmDI@ti14pz|M^j*&(jHnoqgEORNJ}lQ0aK%8`#1gJ5imhelBqC1AJyUT+j44T$ zz6J>(xb79bP>yb^vnbZp=iQSTQ>5>1#*M z60W~^Kp1I>2EzY;FJT@4eYOV(K6p&0t#gXR-|bM{3UVqvOSaVN)g><4Phn)qj!$*J z&<#qOj#N_$uhUzmDV=nd1Jy1zqpl@GTKynK;u(2Lz*Vazh(s-}fP~3zgcyF&7xfzl zp5`NSB9#R`{MEU4z3qzC4*!^6S-!w837pk8@l;(@IFO%StRNw$9(ah`tlQ?jl`V9)_fU0&IBI`G2o648^J}!)mL&e$96&A4x!s!ogyg#siQx%4&j9-q zjRHOBuf^ocDp94^WNl!My+g|^q7)BY-eA14K-c+VY|{-E&EuvHtXNr&Ex#hoxoA`@ zhxC%fy_;^v%O3|RRI~4rc5ZXftQ*!b**iha zSH0Kx5Z}M>c)99x(n6FIh<7tFNuyHr0_!8qPrzFx7k?q{S>9qzg8JAxgWsT~X;06{ z997No4Y#J0bF`VaoAJ;A+G4#2q_^G88GlrlV~QUka1dPphB|r4?&EZfa>@BM*|(KR zXlSXHS>`;{uBI{xNAWCBP_Wg{K~JTJ^M+t9^u1m!GSf-JLn8E&BW>v`=OcO$DFWuh z)l$!ZE8%=IZB^|B?oJQA<`+XgHBp|9vLv4qV#(mPF@jEyQwYB%yH+KPCf6H0CHH-q zf2&hn*T3yft9CGkys~oEt(ZU#I{N$iMiEut{NqII;ifQH)-CRBfQuRV44t;5D$jQ8 zK-p$p$^Iis1?gH>S}e82aq)&%8IoQ;>=KZk&J6C+dGP%emwdH1vmL8Yn)T6Zg}VcM zDIxi7kd=9=w#kaYA1JO$9&Zmn&mF~+cYK($HI^xKD=rznkO^#5iWp@AY5<-8v3-16 zTg1PLT98&sNbd6VgFF)>0b3fgByEUcRHWM#>lKLfM4@XElV?Hdzk#c|IoDA-!G-NV z6CbB1GVkS#kY9`njnnZ>g6L#VE#>=!Ly0kvWoxcVC|3obsdDYzUKG*wcFSB?lbI+z zTLnAfcYC2A8Z48ljv;nheAx}DAx0EQXxfS!^rd!3acR`FcoJvE1{5iKhk2JgR5`w53EmJ-hXf40?kwxKS~-q&Vrm@(dWqrXLlq~k3&0-2ax_$u9@GL z0rj}r+@YviF>4H@#2e2=@X#PIL0vveooPh6#1bEMBB;(ny1J$4S0$Llx3LNs?iu}} z5|~dB`a!V1*((sj*B8WtIX!v?KRNyrV}Qt3Kk3rUuXm;BJGy_o-8cp35RxMcK%ftG zpfPunK>Ct^PA>8dNUZ#B6sAzyU(wq(0D?F>CEI37pDqxBYo5IS5#)6w>YDl3ohPi# z6ZY#4XPIBWeRic~dJ-K0dyvlnRI?!GmwaYeyye>3m2P)GHuWrZ>W~5uyK~!lVxiVR zfmr?bn0svCU(&Lggc|`2Y=hj5*`i3d`O0RhOblV_Sid{&HW#F34l=u(yaI;`VJ92t zettXCGxd_1JqS}D=Y|uM00IB)XTdbjnmQa7E2N1^_Ev(*=E6F-@inOCdC(8u!+&3F zk13GrtdSbTj`*Ni2ns@;b7is8V(td$mF|Y1*NenU>KieMdcHOgQaz7PE&1b6>!o3_ z&S?LbJruRaJ3K^SN`&Ub(xjVH-%?LVDhXThd%gu|eZV92m=R^kqO}%F5O< z4yE9!KY+D)kZzMyCKo5%N4bpuDvaUFD((Ig?SIVW6ZB zCr2NvXN(k{hlc!Uo8mOT|8O%xl;fSA7R3JEi`2nP5=d0c*2vf}D&g@+t^?DL?a{{- zHF=bYCu4PQ;x$J~+)cD%htwezZ){y+b)@0`w_}Vsk3c6gag?XafJ%=9cl{6IF7PqH z?to1BuQWfReJ>0y&4`$M*)(H$E=omc=mTTTgwEnbe>3`F@IQ~QwXC>h4dM#78%V7V zpJ=(!qb(C_{Tzuj#jPQKag+|7LS237g?~W^QDj?*yj)qVtL_SCyxZD9?ra90fHh+A zuW{``ld4SSn3}`C5E@Pw=1*m=Xvl#33`rN5 zi{L4ta{4(<>d2k|H)Z-mllqcTuT?N*3V-*u3hQve{nWV|ua6!@Z4m+UP=zNZOo7xi(ax^GE{ja^TJ;-zxpk&He_FYEo6+uJ zvXuTuUL>A^Iq$qhf$l+yG?WRjIb?=>Z77 z<`5ueP$^!QI-lBah9V>5m}gGA*}4znd^kxL0%hJaV(Ail=F(*-SaRbxAMU$6Y3m*9 zc%s^IKINm(UEQR5zy@HeiSNKL=!E^eWK8ii0foR)0}K$A~NEQx$P+Cc+6GIvRP#${(9$tWXF8iBgvLC+vm{{m-2WZg`GVF`;0(vS0lO_nyb2R z?v^zVo_rW6m4k-4A0VxZ$w9|vuYGGCJK10x;;>=XGc{C$XV}Q4 z3tr*j{rgzs1|(MA?Sahp$k5Lnp>VPz!%{p$vFBR@-0MYRkc#1dtd1-34kwa_Vht>0 ztweR2W5N}&bxXr8+mf+4Kp-1)(@5oOG>KTteX0E%J~f{vCfbn|~w6DJ=3_ zmQ7o|BEYUW{RY`RbV1RqE=8sqmjMMW-2W@|YY>)>jcDO;cSFNw(d|hdY?$fgGe2+Q z;1&K|N72dar)9{F32d7WM&d<_>R)a-QXnrOFDPc~Ll>bn32j%9NhrdYb!dmrzYRCs zRYHAq;%upS8bm_5_VFF)4shCFtpcD1DYZsX@2ga0sw~}c7C5JjUHzn4ZNVy;2AHFB zkgW8|w-bHJ#?PHx{{t-D(q#dP)9{|QhM@59;hjZARSNg55w9?Ic{L47cFEpAEj_P5F%|9XsnuSCcn~$|6_JhIF{4;eMu(udvGSL z85TuSGM_9Nwdj*kwi!}yC-TH48?6$-VBV=SdI8GSg>46vyJE||qUuve$5wIj?(bff z<>{Q#&qMMm4j_w@kr$VJt~g%F&b8`oC?6`x$j~gwT0E7Sf{m4*>3WQidf#wDLG$C% z*_&#fgBe;>+0k#u=Pa8`e+*hinPKGW#keaS;VzQNeRZ1Xr&##^BmS9*_U^sH0&rG- zdEVXgAkk{a^lQP64He!)vU^+2N%5|99(3R0eLc*SNq}%uM3eYh#2jQ$!SpxxeD@)p z7Y6USbBmE(`X@IYw}<@pHd+y!iFR@P%zmSW|I$SXcN*p-RYoqDu&_WE5N z_j%x;7ED^07K$0GR{1Gk!m!NuEf;{YOY~h6W|9|ZF&;frK!?+7Uwz|lR)VkVjki7>$7Yrhxxscb3M*Vr z6-s=Pn&^DydzLKYDb!;U#UnVjr6FGI2=~xZ;}H9tFljQ+4~0D3?l*tXQezRgYzI{N z7gN-R6l>Tcl@|>N8CSv!<1&De%DTK%KOuWC`|KN^Kbv>$L7ltB!W9c1zty~1gTRDp zAY>M}Z-Qj(r6lxjmi5soCaD_CjoHZgh~89+#zXKb-h80$LhUs;G}`*P=5H^D18F;2 zk^mAwqdfF{kiDjVGT^+y%@}PDSfD%em-|ftf9&+x%CTJSw5LLnljj;qbxt?ypNcb( z@XLg&=Q4bNBlgg@wANzl{3%2KENCnQ66>>hP$$d{(H zA^Kw-%nnMy2{WiM;a>|zMBo!sAK+>U1XNuhA_w--rSuK_Kd7k}e#FKB22|b-F~TB&xI4JU zcZs&vFu(&g!Y-hNSpj2$*2*7akM9a54aE=#ZwyTvw=i zO5EVBc`5Rt@-Nm#o0^H5aM$e!5sF-cwV*Z)?9uso76m2}j&U5GR}jQ%sS~yEjOOdZ ziba)BW-cYnl)2Xj`7!!(IyL+d%{gHkM2Ap627odHL!ekJdBrd>DYiEab^Z3%!4Sqj zT=Po-_1;3y4xNh{5^z^gDh%a@kg666%4xJdg;C0TN)X1m@ts+%DQ?!2v@Hkk86uJz zn($>*hhegvZPrzl`l&HPC19qH$O<&8Jd3ZYpRZH+WO*HvvVXdq9Dhlx~_aV`VnjV-Q1D zvdr6&I+gkuv&F`o2f2rZFOAG2x~nn{dm~&r%yTj~HDFS=z7JFwqT;f)C4H)uz`GW8 zua)4ZWKj($}1*1-cPD!nVewzU|GJPm1it{EQuiV9^nBqCw9 zZbl^1auaZ1B=p-x(jv~H-bf6N!PDogY4v2Y4>&?@UGta^k75z$xS=v#pt-0izN8SU z5)13xlfp5;oiTUU)0n|u3ZlW9MWZw0(4IE$n-C+Rpwx^a{kx+iWYTO;64 zjr=OaR;0Vwo2>?~-KuKmzi?hX)rv`@3%%A^8@c^Eqwk6PPAs|OFDYhN3{!Xrfxq_` zUSWcz(rl?>#HT^V=`qU1sg4f}k-Mysd5hWwiM1v)&BVG3R!HJUP>8ptxacID6NBx* z&5m}J9S4&iR>--`oW_pI9fh2^(bUZm0F;g2eZQ3~a+*Ej=|_{@Jd0X)Q7y9P-pD!M zZz3UmWtK)G1c=RKpYpz4hU*MF0|`tI?kpLIRPOWmH4tq+DH&ufg7Y?Z1J}W9mkQ(< zHK4`x4JlGry_Rn@-!^;&EcbWE5~3n!W{{s)MjE8DzlrW7ewDu1flbT{*8F`Pw~N!z z0CI_RDS>))KZIH1EzlW({toMY()OKwI9sXbTS2ECr#M^~41ZeCm}!#kvm8s>5pYoa zbWGdzo2}em5HqyrB4WHU+a>ixD**nO&bmpvC|)kQk3-7KK!IU<8#*p>f0-*;oz0@9 ze>(tgF>XC4_7{#6PA0EvUv#At`VJiLrGvA~pU-%{i_6jl@PPnrmZW&h6^7;g2im#8 zx=E}mD*jAuruM51(QXHjrVhmV6;Fgk*8*-C#7q#|pP;~B4@V1wi-6uR$D|Sw|tu%HQ)@ED% zuw!bT)%MQ(1!l3;hxaS^6!qBxoHsDJwV&Vr&b+Bw*RYP@;rmR?=+tjhtEyKw%Oasn(?fx&A2n-$Z%%NBKdPz|)aL3n7{9ZzV?a`PH6VW|uk|?R`E!rz-U_&n< zi)AeBS}u*$H^ASGBg$0r+FdUC!Z>1ou=W|Q`a-IHmT{k?aWoiVgd%Z!URMgbE13?? zXLPq~5@LF4K5Fy4m;~O@uqqac3Q2a*$h1bIdvk|K4aQ*dpMi6r2wa99c~3 zYBFkG{^4%%Gxk!UROVM-q!;pEYIsW7wuwsk{EEGxRXM1;GBTlTwDxces(tL z)B8ixAeN?_-1?dYmte!M77SB6qYDZxsOxKNai-q`b;sng9>_5fTd~Y82F$GHb7{wp zfmrJ%c|l@M$4)|gNtl6~)eDl8<{{#(1kMlytoUiRp3&pPG--@Zt)}!J@J`2o@@gjh znZD{}zpPmk{-@U_8<(9HA{hhcWooWxjSmgmFB@6Epr2qpin|X(ywyAKwVE5ES6XCo z6RyvA09gizN~(+oDeA>^<~9(}Xg%?^sm438qlMRAxm1ynr*bHaDipeHG6lB`RmL#D zf2yh0UYUBdei{_G&w&sZH_f};7V2GYGZ1#fC*yd{iP4ypgAi?D_l7Pf2$~{)Y0&djmwd;<|Pz>KQ%G)j0PI1i_PUi~uRzB!#2qf(kJk|d>faB!L`($+$oriEplh4#i6dB zfQwX^0<^mUt_blsumWAATa^x&2+DD2w{jwLMy{6lJGf=^QJCcM@*kvdljdLu?A)PU zNMpml4yH!0yD%!An7oPh%C-l7Xp|H9u?MT1wHu82)PPEqodCZ-E-(MZ+#&?)xVgb0 zx+xa(#Wn_JVgy6-N~Dfm0doRvz|?`(1+)T<~N^1-Z8)dS|IvuT@iIx9p z?@I9$j4DmsZCtw7$5~vuElSXxY_sk{Hd&)V&hKUfeCto40Pqz!3Nrm9DG@)m(T3m+ zgZLjGGl8kgoCl7KP8Q_JS3#}&6xZ^Ib55x(6w>0#I#seQlSIxhZ!TckbD+YV0>7Eo zE1gWymTPu8e34xWx*~hQS+N`qH|}9u)gJ&Tvl)(I;x0 z{K1_3cAx_?=k)H|koE65d0#_r&Sn+YX?=b1w*Vn_1UcCSnueCj(!dF~mr+Y`yqY`# zJHOHkxg^h0ip#ipY9Oz`K!s(d3+r_MzFG7gI7-FJ;-KB-6buc~D|M_wzv^l2dsKOw zPZW%s!(`$+Vb4?RjB5=7c*I1+1$!WbR(Wq*ZEsFfB|b*YKMH|SEvOH5$ej??PJ#JL zrHG~h(gy_4a9Pfn)kY$2U2xTuo~lre4x_2}&t~|V7`N7Z610kr--rA_3ww9Uwc6i>~AMI4*<+C-_|&MoK%c{*Sr;8mK_s#h{`kQSMy@P*g6ej|5Kj zz4+|_Eqphp=Ys6mP9fkB!&QP85KN9MgfOprQsREAIGF>n5&ErIgcNieZr};j5I$p< zQ=xKs`GxD~LZm{A0B0svB;TeIjv^(@y9~`1sUEExM{%!{W*P_iiOL^(#-qTxLktjC zCj0$RP#f_j^ij{w?yNsUzm*R2_Gn3)@^=O(@#UT(Uqh<{QSW{al;^1RX#lw?5c>Y( zS4m<68WVXs8K!Lm)R0lmfc9PBiiZ~>Ul54s%N;SXrwUA|z}Tr-DiQkCOhH^uCysid z*ZugM30HOR4De@<6ya(bssS1INHTtm5qTVbY^eG`VjYSyKBW;OdRM~h75FSIpBK>!Y4M`ontazgX@UkghkuymB(xw z%fS~ei^3adM^7IaPKHo7{LQG#BSAvhXT_W;X_2qxt%6QTT}c)f6#K&8sSa{`uB`RI zB7SG#Af;1^u4-OYiplyN;$ds<;n9uwuP?VP^6h3g;SG2 zGX*~2GNki+in4K`i^;6wxVZCJ^U!B;2Udr|I&h=;H5FYH{wD0g zU*io6k2!9n>y1*ZzKjERSL3Y9$-kR{ap;m?CmsA;^IM?Y4FFT>n-0ybVD*$9&x+2Z z#Jx~dpV}w?)>nz!`E-{ey#GsR8~e)d3U_!Al?65k;wZEA>|JyKou!E+s#8#k)1BB{ z{(Uv$${$hmY(GNd+C`avmv@t&@V;Nl3u1pON-xRupXs>P>r}$)r>OeCM z4jKARVY1IVdL0>$_^#Hur`IdR?&I14u|FP{3>I?&&XO^RV>>g8Vv~88!(|%}#WB{E z`i@HZrT?s(KXC7)@mj)jA_`TVD$u5Wd6nelp|;sRGLy+wZ+(cubA^3ohO&0|*N7@z zkoiia9R{Fn{=#bTM_dv}^Cg|bDfBycy5y+e@TjKpuir`-51<2Gwsp58p%&fBAe>JU$-m)eZ|sJ{W3LwTq2o@9sx}2EiFmY>W65Zza(P3B+N)X{Q_ZMS zl3_4aVNqjamNjk4WwD+JHi&K$gaKcpoY66?IBSTOwX$swg%ROpx?(RELE0;i9E=39#5FCpbG!n{%mj`@l5s zkJqgVOdYgqN@25rJvvZ!&u5YS8xanR5!$zbL%eIkJeRQVAr1Tn97RGBo4YPVtsk(V ziBj&z00upbGV=Y;4*{*?81YoYxmJx!A?pX6OFn-&S}$WD2@Bls-WHS4UqcOLS6q2a zp!OufUyTjl2lkQy1%S22(lBF_Eocl z47ec~wN*#|x%Pf#P451CYY%uSjPh-|hqLx_Kq%Sa@Eso)J>OM^KE<6S^D-g>I$5PU zBG+()j8HSZB^AEruK{)^FIn9(Y9Tt4nn}_0fhG}ZVa&E771aD+&f|{5GOxCEqd8BF z3|ikBCIS$fl!!FhtF13Fu^0fI5+o43cU8kZwqE@NU+0QWaSkscK_*a0vm`PWGXj_B zMxd1?hXd3K5W)*mGuQ-I#&DgwyS!Pmj#+|j%leSm7QBuIdcHo?e(@?W*n|9Qv*j7! zKnMeYq$6Fe(5jA3IW(D8Tzsq@%gth?@*8>elcUw<{yInYKqnpFn_J zP0*744+MI+Kh@t2oVZ{#OL4sDCKPeh-@upUMsnRlSj%SIl;OH zVD;fT+~04XrZ!3}pMz2FfISDb8AAId^|;4l3e5@d(BwPlqZ>LwCiIY^_ch%;zxXmI zv+bMeby%w;`X048w1vbkd+!vYY|a{$7#pxIrSy8_-Lz5Jmp%MDe$yd1*sPb+7vlF` zO~6Z8{gMZb!G_JeRI#cSZmbifgGx>BPdfHD4YxS}n~aIjHaCRIAAp+~aX}<$nW$;2 zQt|l;EMZki^#^L^qIDP_i83}J*qBU#9WG;#Y0s@U?r!=KEcq9Fuao<(NfK@yZ>cONMYG#1K^1hkWt@bs`> zrgsXl!)sM?H;l3f*=j#LQJZrxxz55isq`sEH%nxL5u|1~27YonJm-Ae-M?69G!u zu168Lr%QVrd$<3}Q)zu{Nz*sLvYH4fO0#M1RLo3f@;G5CJLg0mt{Z};oSID}Len;T zZx2?-0z4Y4=AzRXRSG;spFe$R-Gln)BizBC46#1A0Q@RU3iSM{N(EO~nvQO0RH|9B z87)8LgF6VHHn~J8VA-cT7d4DtvTkL0Io)^lE9{0p2z^D+@VBP2%f<2e%A#}Kwk}LP zv4uv3O=Wv^?g*(Dfdw(%Xat28Iw_+YC;I}Cnc{N53GiY4fOKM4F#sA;h|paEAHue9 z@Cfzsv657R>X&F3IPLW%rX<|#^!?5?@%zFApKlWK4i9m@9_EOjGXZ1+WL|ts^DpPS zXU#X3sL>80ptjv+(m1IjVuR(a^i+(R0l>a1R=00cCYiiE7<0)P*tx>{+9l954#=S8 zTVu;aF40O138WmcQWnE#k?!I^0z+2B;H{e}ftE4Jgk-B5chReWDCJVL-9<|`x!eyM zDh(52n61`4xRtC_Y#I?RSI)R64ZUQIAuS`A{3=3f;AsZX(7Z9c!()A#KBFmNWuh(5 z_FN6n068LuPlWJNRWPr)cpP4x(;0IH&1Z6zdg4`ov=8P?pLRMSyrP$dw{w6fOc|`x zXr3sa6(*1|hF1FK9c&~n)=WT2wQCeFiT4tR;!8!nWS0KRkn_ymWT9tEnwqM|BX>1D zb}WR{V0Ur;b7kr?V~$q7I(MV!&jT%>-q7T~Xl^x4+1$$LDqv|0%{wYnG?9di!~fRx zjgJ|{`Cu?ZOwxo4pe>eRP+XOXWBSodau!V)qW5qDF14}5pPWy7%)_k1Dx&`a@IX^LWcHDq)U;9rU3E27xmgOs+dkmUqpgiy{Vh?&OIMoYM zYg1rA<4vN4025dba+tlYJ-VePBjQ*JE)s1RiBWTqNx;+W1d6!EP-EYovRGCbAQ*e( zKsud*xfLA`RwbVLrTK=kA-)+be!s+=^UTi%NXnJ<0B3nVSZS5pogI! ze4a92fPxr@$R1GWQ%G8oglzgdPZ2AjSK+Z+>08#SmPTb-B3|SnqYzY!cOj>K|JyxU ztIV}vz_K>xpmp1jyi#Cl5{cxi)zO|&6;W+6>^Yc^gOzD5T>wT^Ct!GU^5)ZR!uIIZ zW&hRK+-vk3LoTRF;biu96cby}6SpREUGW#`fpjM6i+7z_QI5}PrrZ?*na~Ew(YthifD8iGOOY}?2nlA3`Zyy=xf`o?2i(Ru44vGJkO!;aGn!T-!pHm~3+uC5$_W$2b;2iLj(_E3sTF>&;s949e%_2U6-R~X zGR!pw-xnP0LuknlXksDqDY!k9hB`>G8w(g$arVeWA{Z?OeVtXV{++AF` z?8T!hv?3s!z-SQXi*^Lv%A`NeW-F-#ibYBh6+sbJZGea%YqWbk`KiD~^eQBV0}m2f z-R9wX`_@w%3{BXx`H2nhi5)L2aLpD^GkU6Aez3=a?hAzVfyC>I09>sTL-6TGZ8 zwU0U4GWXb7KWtl(6h0-woU7_Ajj(480 z)3ddD&tdfSOPI`+jms)+-ZdK_2~(JRM$l zx!E9zany;YIloLiUCrxqIkeT=<5p)QvM=kIRkCm|{;_he_Ee;RO#}6%14rhwCOi99 zCnj3I5SRApmvLj%M`HWL6Om9F_9QaZhx&SH+Fx-`YV4Nt-Ip>Mhs-=Ml^KDI#Na+P zt%O%*58wIzvyieFSo*pWl&?|6E~+xdfX z8_A(!6_btDKzo`q=!TW-8zip|wtkz^g2+~ncPuPCULUv(`jA0wbf5rl)tZi=bK(P_ zaokM^(6)n#ipe-*NTQ2GZNh2gf$X!TehN$ql|WogKcf6z9#vIP2R5xV$Ql5f5Eb?8 z=iJTmV4?^Z=;W+jJbc)hUVx2oE|A6q#QbV4}V`@)hj5qU2 ztjqI5o=O~H%hv+L^6WWIN5m9OdVO}}G&irI)Ojrq=~C(;^|n-^%FjzJ_c*Lc zZUZAp)H0t^0I>z!;{z5?jKn`Wiqv?B;2Kou`;3v|cza1&U&8?6jE)~WaXM*iC&-6R z1x~(yM9rnnA9hc(@=qqtLed{LlONI2pp}TEZ>ru?3&JZ5bCH_;A)1QB`b@5dX@$`g z0N&}Kby{Nb7TN=}&{In1M*t~iyfP1{@Ek|yH|jcCC>hsV!x8ca&t;{c;RO$|jN{?A ziWVFhjh^gS`TRmkxB&EeGbw30tAJrpX)%gZirur65fkP2(VjjG9G6ch0Edk~y=Y&k z42oM#Ly-CbVl$T+6c0|pOMJ!6?}=v1h}USRi~c%9#<=zUwEb!Kns7RDSd0CU?qBvp z%A&#hJ5mtl3j{el)Dr#H`oq`w!ZBLZsf%3onqLu#ARlE{RG2eBV^lQOS$ZKHPGK4lnZu~6{T3~3 zV1<8^&l#^jYZ!T5>@i#thae`Rmks!abn{q30;h|uTQR2#V8j-<#s8LW>#A$CwgNm>6}v1?16O%2ijR!o>5G&Z>(d^E6@ zZS7TNvFKd&7H$0ZZ77uVg&gPvhU=|ueX@JR25Li>zKKL&n<}VlKs^Vzr&2DT*(bJ1PwEMgT$;`61x3vxGurY?^UsTNKET+xau3!Y zS!V?JBd{VW_nLbnN6!qNJ6A!P$^gNlTW4n~mXbU*{LAw9UE;#*QT6C{sh9xzpD_vP z2l@1K4;<*Tep~1HqT4MUw&6w35#5?5QHIy_)Hynu^Lf!gmIupE*&zGnpu=UF;^u3w zj+V~Dg2KE3hXI4AwVvC^I;G_R=L8Gcb0Z9aW!+e~7GG53^7RCG6#O+US#hzcstWoE zzsJu)tkl=TX}l-!{r*LO6Pr#L9^ed5teMsS1rVG?h6~U~abgkY^a?wfx$K&?U%gfR zFDxFe)fwMmc@eO@n#)bGd$9btKuzDGpK+(kiqZX+s!ktq>=oh;7bmspJ(^Ax+0TZC zwU}}qL(+ZWG{Y(AA?-w!hl2tm2t;C^N_u19V-`P@wJGOX_dbW0SGYUr`CE%72Z*~ghbd=Ye*|3)3G>tcyYG`M79MwLTBNPVRdFNH(a9FK# z>&Pc+hG*z5TJPB9T4_WaAPu0N?H+>Lc&(B|TbF8-2R^_M)h2+wJA6qBLf|c)8T@#A zSvSoT%l(G&R$;IA%G%5KlIx^*7>YC(>wHH14>2_iBij#RdFyav@PcrprkV%ScE`Ws6P9C#DS4%PSwRRg$!LUJ@n?0HeWY4 zrz==Thlyn?9oUEj>wvwLnFgqoLNmkAWZAOL#gBV#);hQ%H^cbvvw!c>*IKkO^x1T;ySz>SCaPgc0Z^L3}ZXY7WC=_=6Tdb&91Y)AA6Bo?tdZ z8@7stp;Wg_*HK|!)p04FR{>exrk%Bj5Q;8C!v~HNu!%V7ByuP~>}Gj5ghLV$Tu9{( zrKb#qo)0+lf`j(AiTC-JYtL-$?R=eE)BA{xQ4iHDAGhI&lzvLJ6oGw{YK!lY`+wdb z6H!D{9U}JpSxDIJL_)STiJ_svKPgRNLkTxO8S@7qD-4N#{Er^gS@tEDX_G^2-N%0L}7T$aH%6 z7X^zmPXDp7Fi;Nj6R_4&LI11jAy$Qh94M#8Vc6VH$7V9x!ye74%U4fw)x%x<@onpv zWNPXOK`EScGI7=qFQ$ASf1Q-FDE^gA-_5(DY$`>**OD$bxHLS!+9)071f%YW@)k{d>uPg-e5DZ)$Je#`{?+*|4`s~gmZ2pn*0?jIWMRZ25=Djrxf`R@{tdKEx7nSuV~7TBuFMnR zy|(!}gWXCrqF@vJp4$kO9+&7OaSGb{5&keJwxITfmT|edK6Ff*VW~-Aczw2El*0B; zZ)kHuzom(%j&mU`+mH?N`lnCXa#s6rT`L?2p4FjNT^S#93FEzQ^nA|$7)T})%Pp5X z@Jl%aR`v}>Ww12i4_pNeKyb!72HxCB#HC^UC&eRKDX%L7i;wKylQi7damNm$9*pTu zFjbWcL{@5r({Y>IjK5!KT&4Wt*T~Q`Mj;ZiGW2-@-^3YsX9Qc910I@oX#i-{Z5Jwh znDHXha-@5V`NSnIY+UtiS;+4shI-qgl@9$3$>E+e$74re+ z^%@p*nv%|iLwX^Pjr$0p5TMm5rqH<)c*NTxy9{hbabN0rNh*3bGp_QZPwn6Te970< z4y{?;UL$U zc5ngR{)PdM7Fwtjv5#qlh+lE6I-dmU3Nv#1-({(X=GF_rh9Qq1FbIJo4QAy&?F$Cu z=I|Q?P+S}q9GvSVWhqE?#KTGI?zJi>bS*!5BmkdZ!nnTSdWIo`~5Y{GON2d$5^CjFYg{0SY8L<{AHQ7g%KjaKi+Gy&q+wsCdZdL7geqv9Ob1TVFk(00luBX
qcWcBghS75~}tNB3S;^5r%wg@rb62 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%0A%L~1}sswOP5 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

b^93zM3=D~LN*mea(; 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 F\"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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\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 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 :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 } else={\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 (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\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\" } 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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/614/a7992fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 01:00: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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\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-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" 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# :log error (\$RunName . \" 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=3\ + 2768 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## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\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 :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\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 debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :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" +/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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +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 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +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 +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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=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.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=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 +/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 list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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=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 log=yes +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +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 graphs-plain=no rest-plain=no webfig-plain=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 +/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 ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260505/20260505044001-Diff-Config.rsc b/MikroMaster/history/20260505/20260505044001-Diff-Config.rsc new file mode 100644 index 0000000..0c5d9d9 --- /dev/null +++ b/MikroMaster/history/20260505/20260505044001-Diff-Config.rsc @@ -0,0 +1,28 @@ +3355c3355 +< # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +--- +> # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +3369c3369 +< # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +--- +> # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +4165d4164 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4167c4166 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4169c4168 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4171c4170 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4172a4172 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4177d4176 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4178a4178 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0