From 513ea7762fc2ef9274545cfcedef9725ab8aed80 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 06:40:16 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 06:40:16. --- .../20260510/20260510064001-Binary.backup | Bin 0 -> 302173 bytes .../20260510/20260510064001-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510064001-Diff-Config.rsc | 20 + 3 files changed, 4667 insertions(+) create mode 100644 MikroMaster/20260510/20260510064001-Binary.backup create mode 100644 MikroMaster/20260510/20260510064001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510064001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510064001-Binary.backup b/MikroMaster/20260510/20260510064001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cb90ec7c2ebaf4f9ad86d8ecd8fde79030fa8b68 GIT binary patch literal 302173 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

9~V*=rI&pwm~)yOCkv+V}= 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[eTK3Xph`!AcK3{NC-F}8O5-@e0 zv7g~S#Uet|ZMj&f+z4ckXMXbKMVx@!Pc7+YVqY(J=A+YQiY%;8PEx`nbZG}s7#z;~ z{+9=y?S+ag@foVM1JFM#4Nmq~qze_sGT(K`soS%YWT|77z0~9QXbzOE=KicL)_2bW zSZycd+`C&e)G}Nzm9&ihChvq5rj7VtK`#z=5ie}*LjN%ntbFdtY&B3?uL`L&;%_0h1Sr_+uN7`N^Mjl zeTH0{jXXApXgUsqD}xCsmU2eG5cc?8aBlD!&*EjCRpoPC;j7P?`kr0Ys)koCd2V%~ z10-%MkYtfseuO$Pp4b1t_8lhBZ+Zb4W=)`7P`X;$;tz72DU{rg(aI^Wa}jbvB7PEg zA7{)1yHG#5Fyh>*2o&C$c7&iHL%vZ(gfulUi# z2(_)nV;(La{U-9NUPT=aBvW&#ib=2i=FEbQ1*RtV&oJxh|?ZWBv#;iK^Cx=U{UVGea^ zrQI^JK7_;9+Y$okl0_DpL2R(h(DA}{SxAu`do4tx^=7$_x++ma#i?BYNox6KIk|He zEx>dNY!+Y*j>1gUtfDb==C{|=cqpDm8hgqp99J}B7;hLqzXeLR7kiQq7<(leTPi~> ztj3(A$8Ot@gLpIT$~Zo#5GP~Gb-`gY&oIDCcSht+1*UnVsuZ$E%)jV&k^L_lZbSEf z95Ts_0vjjg@=@Ru<&&1F`>pnCuG%!^Cjwd`cWQYiJm`#mk5Pwj@>KF9^hb(~0X*sf z*PqE9=)uchlG&AZuX?Id?xCQZXMk3WMbLic1LRBmN61NR+)mGlayTrXkB`~w%$5l3 zI*9jy24&}u)PK@&vP}03t!#zs!}#zoQeJD?!%wy0JP%p!VBmn^s>DZqc^gZ@m;7|3 ziT@`GDw^GfwYlHY!9x4wsE3q{S;!0U|5R2^F}Q=1*!BK7CxzFKo!zr=E96( zo5r*sGX=f6isN#SINRUYkPGj7G8({pRbzFj^Q@SDA)q;(vm{3f15nqf+a4g(UOx*G zTR(A^jGiq3yRe0_k(8yCT19NG^b+ZP0Mzf6?LIVb162+46?o7W8vmEZg! zOb#o5j>W#>P;^%aLuHUdEZn5X!NSG19f&7 zRU5MoaVu~`3H1J8j37hx=xAa+J?w{T8-3(@>GDIOo!6k`JWuO}$vxhQYW>bR>|7$F zNTwM?By~Zt!Ci!mUr1p~5MJ&qRmUVN`cXIu6>1DAXU!PiJr753X3Jyc7A6dm8^Fso zeqTOep}CK%{RWRJ^QJi5RbdQYQM1x)Eh1cXYsCyP!YGVcZ4; z9qy&d3-zwWlWZ=;vRk};fE6#(Cf#ox-i(x2o^0I0)x%!IO)b!63#hiEg3sKV0Aw9V zit)boY73MWPRKIAgk5|1q9L6oo4sf63h49<2|xu%R8VOQ#}qys^equflQ5f9CrkA9 z-tAw=E(3#T)lze+v{Vz_NwLbDCh5oy=Y9~$fVF}G;BjZ|I32EgHb=LYBYx4sI^Y-z zO~f?YL#OJ|N=wp+IVQhm8{O<55i(ZN#(u@L^V*j;Tjm)3g>lrnD9H#_Fb*@Vyj}u0 zAV`-(H~$4-CoY^7mKEf&=Qdqk&BShF4A8$c9r0A(tz7CV-;`YUG;p|`zy(P((?ka5 z(44UKCktn3OmD1LBR{e{>zm3HDUd^t;@PQH67!jpg%-Z{uJ#F(i|?)>*T;v-q3|Rd z_&fk+Qx@g>RB0=eQJh2j-eg|-f;{RGOqfTi*B4Rej_vy{2k6NFi~|8n8uqblgc3oc zR&Jy@0nzj)XHr|2vh*X^31y-{y>^qNZKtBoTWB@SM7#Dc@r0QteU_HtQ;=?f=MOEV zyx;2v98i#Du=tJdC_I+6ezc|(c{D47yJjXKBzFU=T_`~(CFdT|+$P6oYDrWP(C1Md@h7wLyi;@E@M zH^1j<<51CNdSJvmE|WDxJhf@t5RJgi&4M&+5{N+=dhXU{-)?wUea;9Q4Zjv0w@_st zk)G{?c~h@}d3MJbNq}YbuK=Dkhq9P`pto_Z-CkI){uhy&-CC;U%Tue}dTq}E9-2!S205cvdQH`QMwy+@Cxx23CWhi9n_TA|~ zK$5jBURSXJa$hFrbdlOkn*77B+cIqD?X;9eAzjmnN>%MKqJ$iwfP+&dAxyF}-oYAJ z%sA%{d+OU_4}+d4cu>*eI%pG^*R9`*hD`-p=V31jl!SJJgQD=vOttQ({62~c=%lfm zWNCgk;HSCt4AFkF-cm3fPS%wA`S+mZWOBsDieOmWkRH;Zd|6mIMXqQ>r4<}X%MTbz zLv`FZ%)rl3D<{(zj{U{1wVQf0ep901e*SEQ{ha?|ZIUmP{w!Qh*Z}|J8U08tv2gV1 z>wy-1AL~C*-GhD#36~Go1j@M_T#{sH+6#pjsP!sE>I{Lw<1x+*Lof$d*_LqhymIhj zWQHlM^w%5~p;j<>eev@6F5xr6*))1BoCJA?@m-JqsDYuLClDYfi&Ka{$hr%D@WUPc zp(dFSDBBz&Gn(NAc~3i>^$~1E9|G#~X;%RO9b)@G)CPQHq}4A`deutaE9{HWgsd;) z-2n#zv(LlZU{GrXz9JuQuW1AhcrM7j`?RI4n`fLi9(uX9rv#PQ##+$%1m5aC2cs@g ze#`MZ9y4qy+Rv*bp$(^GvygW#*s%Iu&@JXcg!5A4_NqMEHZ4phqYj0r7j%s_E#_MA z@Kyo;H6xI>a}ec-FoxG#WbT`|=pp@GT|NUo8|v?9v-7CJ&Z_T+Y8}B~$5k>Ypy~~t z(frNS>`*aWPFNzR4}@P}rqCzUN@7|AZc>OyKp?FK}O=qX;#*qcsf2=uaU{uGh2ac1&{w(=&lolRu9Y6GR+^qIZkLO{WGqz*tuV6}$y_F1pFw#E(e z?vP>T5A^nkqC0$s)wOqJv{VF!|A^NmG>Kx<;(#_Fq^!nQxx9xpikT_QxlXFlGG)lk zOb2l^OE-AuJN%s|o5d?i)(o%3Lh-c`ZZub!f-ozS#C;uVBt3XP+eE+UbB=V>hYQ^` zpq}n&uJhO{{w6CuG37GDGc>XRbr8ZMk4QBAjmJ<`Qf#|V(%JH1_AEwrM9!kAP+B#1 ztV*}dg-aNvf&2wrElxJH3{IpWoyL$MEGx1tpRQ(qy?m%F8djlO?5j*{TPaa4&C4q0 zEkODM%H{f~Y5ZyY;h8lhvU#oTjG@8f)r{l-E2Ps~;BI=fD=rS=#viPtPsW=DGlilP zhP^w;R{hNfTnIV}f+}1WXwwdk;xy*qjtjCTF=F z?Uw1EMGQ`P!a#fqGoK}~VZTPR7~BV-&Lhe;fl!U1$i&~`2#IlpTz=4#%2Pau3sTKD zG!~9k+tr={a`$Ml9S*=qhB=d5lvDPnQ!M6iPEemh{gu}_CK|yLMsF_z*VSH>9Z&KL1LIFMHb97 z2a0b=B(^bwmd+}9eSuP&nHFNb9gl$5tmV{lD=bS#nLUGFNE&|&jhL>K$IaB^bTtua zfv6S?VO@Q2vF3Y1DIn2_k@SVXG=}l6<{pkx9?kA1`d4Wsa8rKx&$SaXG=9$xUM+d5 z;U6u_=&e=mwdfW&omW@~hkG{tET7L7^XN33nwqeWp?Gi{Zh-dJff{Td;dn=~InpFW zEDn>B7?MOsdWr=L9x9Tn=WQZ@x@BLqdxvh1BN*c9H=|l1*#L~}#@E5g6~4_9H1?<5 zKv1VIlsPgON5FzNBa8mJB;{6T|KCLrN|C68rn1M%d*g-|h{2dwtBD54t7{;;48VP$wT7v`L@wo9EQpv+ zwbyD5IIPBT6+vbgrGTts7U~kp4ECgPmZuV5)^qBywu)vL1_NhxNwk6mbHJ!;XXo&s za?B(5#}pqM$#l5Y&VnX09t{@IxS)3hzumwYt!8FX1WEXa+qjk8YCo+d^HPdp7*5(n z4LW}NEh$_el0bhkJuD9c=U1yI=fqK}AN1I!u&tXXaHJ{z zFHyeujlGxUr8#xV{~U}Dfr$Zj02EC6E@w#klK9~FV~;o!MA3W^xF8>)M;&K;M?X^> zH|zHb_RAw;K6zz%#~4YZ>s7S79ht&mf0MADfE>h+jqQ@N%@g%Y>oJuAfW--Yn)9exo8&6+Fw=*7Tr-Qo#4E3zM`&-QuW zkNC9g%-`MnsVGY48DiF>?;)-ljcC;IErzRN?Gc7;$6;Smt|!t^)-^@;tmyZr5Svp2 zcUM)H9cTzrYp19ex)g1e)9`_y)?V$G#A)Ekq}(ycTTNzRA6GWM6+6#+BMQCmo6H)6% z*EekS8D_@4wf5RUboV`+vmfvDGy5vvJm2|g{JvU*6violz$q+#e2T(r@>8GVFw3B( zs95e!?LvJQG;VdRl^IaxccN1%0l^Qd;vsVM?4du`?DeE#6A+sx2?E?$xZ+QL8detI z6>fmBUW0$B&rnGc8!$``D+(yG#=ixOl zBS5CbN|qu8t6OzqS*`9}AC^e@VrF*U;7SKn#|^FPxyZL02W^?NO6WwNObZrr63;ZQ zVToDgNRPJY&k~jT*Kq3UN(*{Aq3*KBRPi@DY$cL@j;HxZLx|_MX9wtz@_(r^e~R=V ziYNfzS_XL*!L`bnCd^WtyZXIvDff5SX-#~5h)0GsCguXc{3CqOTaEj06=ao zkfxi`NRlFk4e+U^tyRveH{(t`8I2yB(QC@-Uy1I=DB^sRDNNgIWk+Q*UbF1avtP1f zt!Wzs2OB>;K}v;(odGR0P?*^;LazP{)y8E4006lqd4PmDlf#s3cx=klJBdRTg(b_` z^=ZR0PL0Q9-Fa~%47?*1q=(?nO9stnT0#V`E}YrPUXh6o5Lcj@f5|dXb<#6H$#gDD zl+gb~24?HyQ%I((IdnkqB5$7B;okx;cvzH{K*!Xu^JfUG4BA(07v_04`A~1gL>Mxz z%j?1iD!VeE^T7T)f=xINXSX`bsZOA5Y@{^NKqV7^4Zgfv;Tjmx;KrIh0STIQKUs80 zJ-HLC_goJWCnwcpD%RE;yh}Dc8eZN^j-T#f63{yK(P8*c6X{Psd3vLAQT>esdpwTSS`GcaV{{aaiG`-xKfXUy^8p8W#JFU-^j%g5rSet7rgKYF=EH$T+N}tAbfwL%2+tU2O(|Pf z1x_MlJ=E)cI^gVVC`VUkh12LFz{^W_;2R^eKl-$44$FO>Km?20n(x z4w+@p(J75_BNK-`X+)ja;w5wMz18NQ!0CajcJT0!VtyxE2-E%MX+}p9fY#^nSz5w4 zHc;;5;Woo10HuY7##4m8<3cNi)E8P_&i%CKK>rM!5A&WtEa)uav4mT%sgky?k`>OY zavm(pcFZzkX02>Hy1tT)8m4+n+(OX+8c~Fpntbxi?h~fDPaCFIX)Zg7pCuLSnZyy&zyztVrsqi{!aHQ} zhsYGEqm5wQCVe1$>J#erZReSq#8{pR>wYG!o9aDYR$VIA#;;cNOEA5VeIJ`!IsdB= z7*=)q{~7QE?1G8#EW`fNUaI(bQclkdOt+!6?`|(Gxq9!gfw$B?wUn^DE-&+#Q4mLv zuE{dn7}2`-FVYtt7oIfiilOvL%I1C1Ynn?|!aQM4(}uxV!QqWJ{ct^unbvr?3j--z z2$%i5_ZVPrbN`UL+x|qS6C5&gbPQ1R>SF6sADBD{UBZ0OSx< zP~Jw0F$p02D*%7$*5m$e)E}^`!;(C27BAIxM_kbzH;TTmnSLkFjlfEFzE4TpTo@(R=ugLCq1){!W01 zjS-ly-S{G=k28l_AQiZ;`GkpJu$HiM7XI-IB-LCDjG$+|1CI^lLj?7Zw~yx8rSXe&Wb$@vGH+9~95wiy{f) zTGRUCsC9B8_(ov;;w_ZhkdwypBiLUkH3Doo)=?ltw0*FMP?_5w^p$L|@P2}oOJHd z3|+C3#i|xH`yn4fFliqKWc_NUeQXynCyRf22=UEA^ynoWV5(SOxNE$%%kMUHJ3|f8 z*S$yYGifmDWV)|;r%|9&cw3%?vA6jk3-<2vHQ^S|7W`e%?*`1=G0Rl;3{t1u#m*ev zjGxzv`;OW~9Mr3P>AppZL)~FOF9TN1V=Y#yCAF!k>q(CQ&SO8$tYsC3OS>oZ)#Onx z1CFyJe{$E>VBP=YRuNHtCco ziY=^^SURn_s=~i_*=Vq#`>WL8LviNE6?)&N@ciSBXBpCrZAHtNVA}|J>mDoNp(%F- zOell>DAElh1)@hVHA5^h>Y{WAN@Z|Sc zNS7lDew6qKJ-(>vX1E{EFx*Yyk9zJvV&;fY*ow zoM}*P+A-=nn*+Ddn;w!3)i=Fp=_$cD>s^F$z*ZtK4Vt}&I#zD4z&WT31MZ(270j@L zo_NeDG*1>OuehN;pBJBb!XLIjeRxkrHQyoI8`J{efc8kSyKi(TC9pQ!f_feL48T|? z=Lr62Cko5S1^$e~jCY!~<~(XCrtVvcBN>If5t!l@msh4>F4*Qwq~Z+7&b0{CqQ2F( zqM{7cnF4mU-11DL0xZ9@1-+aK(|ea~5bP;YvK5Fywa&`RZ5_=&;}dk=OI|+f6ID3B ze4vvO3RX>e8;y5QBoVVc=Ej2{=9L3V43FsLMeY({rlT-pIj;k75Rx)F%K6P0k&Nta zEIL##K*AR7PG5U`Oe!q9ipW08q&U7R+dyyzsG@C5<~zPqAeYT5Uevym{nCeCInW+K z_Gj12t&gM>Xrh98pL?xIqlVM>?_N}Pa<*w?6QzYd_@>nM9hHJ{*pC{*fD3uafvY3* zUlU-@qvW>AnzkZe|0udTQE7!H)-MR$$;|z3^B8f}6^r`h?R_Cc%IpAAt2=&pZir#i zX2hV>HLa$Mnq(q<$6HA#3QFoiuV|9#8MdNL`f#BK>JrQwsd#Bopb*4T`fYgbj#gv* z17cDl$?uu!2FPaIPxVWx8|AOTr(;=wIza5nqCWn96gs=B=TRGO4hE#tzlMz`J4$;| z(4Fo@{s&~087W*+CmIYd5j}=sjD)X>i!*uJF6AbpBEYGPKbuj|M~Vdyj`WMNy>p;d zH}F1Imj)@kFC({P$*)epOM34U;akGg+`wNKvVvp>e2wncJ7nEQv=G>d70m?$<=G`^ zBzB}NvAO^anH)Pw=SMkY^ByL4-HQWJryV}bsbRWe^1g^p$yD@xdP&^ya-_gT?Gw0d z4Nr%k&?spYn?&+MnQ}==@l`HK{D}Nj0KTuR2x#=e5D^%O&*u}SNH-?|kw&QkJf%*i zCJW}Z^;zU0%21`AzE5^k6 zlBlF_(+4-o}pI5ib>a4yqJ1#2LUvW)5yxSfryJ#hmvsP zaFezEDPHEeqmzHIuF3GDWv&|YvG{l*pj73-x=%vxV(1&$K)S1ZA;6#~A3kXn&F%5! z9-ErNBiVI^(^ImonYL_UqFoC05@)3a`2w#uX!Ks*XG-V%ZNTMbhyi1)NIOi01J zOt+u#8J8eQn^|<#&=)+)Y$O*)$6GjL6tdaI4=XvRpEGEN15(ZbnM+}X%L`S)s6$b8 zFAVcm6Nx4!;;Z3P6XFfwckt<^4gzarDVt1QeICD0Rs}o zSn4F8Ly?9>0-AO;LeRM3(u4buHER&33r*0hYFwyqbPsOEjT14xYpybK?OWbL*0g4eGDyC<&JkxBcomj+5p#Jwu2Dk^QyO|veSPz{rG%$;0q$gteL>cCBm=uh& z{DQNgoPST~Xtq5i#h^9a!wSP(UcPaxX-xOe&LK1Sw^$#2pjW>?OziP^1jcDet_VZkP9VW+Ti8M9_U}QwP>^R{#3OC_ObM$xIB&2Z5C2P}uA> zY{X|`_rdGqs1kVs5>5nl9nJZv1{Cehd`>%6Rz}a~*sB~sF-qm22@JAc^;kzEcSjE! zX;p;i8BI%^I>0DRNbGE(DO60)%8pV)K2^`+M=`VA;ksXD)`Rw3VZdez)df#S)7k6i z87C7!!4h2YM2&s1?x}(2gU-trRtNO&+QQ!j0lN$tEQBa~l6US%*9mcFSpj3>=_Q(| z4?Z=jl;w^OM2yQddDkcMAx(_nn@^U$qT$75wZBA1Ccryu2M=Q;uRZC!?(sw;p0H9O zkK7}j;jklVgUg~$HR!3(^hXDj)%|NOv=Bzx{=|88*7euHkjP4aZzd<-3xA7W`|D*s zk==DLLAyE^mtVyT>w&-n8Deh5lrSwwOj~*Ke2Er&?F?4+NB4`ONJww;V5%Wu&$ggRzf*;nwfKKC^r%KDgxoYT?-&meTW zR##4W0dlz-To%xluBp9I+NAx*;dMLIOjfjex3V5Xwp; zWCN*FOE5w21WQHK`CR+rnMb@zK+zT5+*y|FrSCtWdSkJ>)IOJ{U(hZz#gK z8D|Up0gelBCEWJMufP*S?Ip&~1oBng0T6`^c+C6c!|4NW-}7)@qFDS*@DO$AI8kd4@w_B< z=0?}jt1o$VCyDOTU}+8%RgC_q;ts{7_q~e`Xh*bJzNf38_rcS)YlI-Dh4#A08!Ld! zq;0_gLXr4p)A-R7qsyWQ6da6b2up3WYU?Qu1pIAGGuOy0kDZ-ZloJ~C94g8p$%Om;jYUE&Cx04%?Cm7YMd!kH|FEyXSBL+U#VGnC^BMw~F6^m$ z6P(TCpZC~{bt8M|gKqVzt>~P|@_x_npH2JR;oq&7l-1(YFvK=JOwbnJ(VVDMptLP- z)-11OT@=h8Uv6gPQWI+*f^GSGUWXKGjgZB+%wcHkysuWI34j2@|KI3S?H}}TA9nSo zlYBpwGfnfpgjOF3GIibRTJ#(_z!_s9IUdjC&b0B;AU`Tvb%PzBMu%8m4X@9zn|k0F zOzLa^hG_F@qkfe|{$D_)>yE)rOv4L5E6%A#jjXBTGSjGvIJKod1 z6lY(<$=Li`f9#2vPmAF`h8_pI3^mW05Qn+bAWH03$k_H7LwjKA9`-9**+LQ$Fx=5u zwG(l9G1izQ5MNvhlz-?qKi<*nFHS<2qQBs3D)X?kjR&McZ6U<8c~kBynED831b$Y9 zeFdUywLwgcPtfK=*dvXo`XcM`7JFFlig-b z5>LK@W99kUx-7zrNW{KISGuVM-pn=&_V$NYu+lf-;L90|4iLWBRw5OA{=S%*j-&rb z$Bqn=VFqMAz7-N7b!-1pRx{;O_7u73t6oLQ0bX9EM@6lkoT5hB)Vm2{7apqR66PDD5DfwdNw`zQzp z|I4%mK2OGE8x{;5|0@QzXI!g+#6{96V45u-mIX#~XcZ#V=4b3Ho)tVF*AQ{_l;ri@ z81Rnpz2{ioOJmpaese>jugGtByS{tW%7f|S$TSuG_O%_v!NKz)OLRsOB@V~&RxPFD zb>g(=5@E7*038P$7A4%}*R0lygtjFJ{%e)~A29I!Rm>`z`KuB; ztxm(D2VW%}3?*3m+8JHl{?93P-mO1Q2Bl7caNh~h`0`W408jV4e7Z(%pKyTKyRxVd z(w|3veQ+=z*4r8^RVfL)wq<8V7mBXdQUemp{7@jZGX2bVNz`DX{?O{;wyR5&3;6v= z!|u|XRF{vHG@who)Z$R;5kI>x9Xk!Dm=^N3 z9?Ggb=eDKMXli5SMpl5*4a=K)#F>yQWjHMGa2$2<4o>MZL;F!>ck94R&Al=HPhPvH zk()=D%!6C`CV`s3b>iyHHGt-plxl_?D3?@J^Gs8 zs#K(+L0272rF6PH=PT^uUq*XNtu;*x#6$VDooay?Sg&E`Xt{yqbTHpxcw9_C_byz7 zT_~`#3l0@5%-doHANEh7c7d6V%SSK6f;1om-A}@HBA?V$pCE_TxItq3e{K4Feq1g7 z<=ChXF*t8HHWhFNG@?Q&AUaRo8m}{Oc{q}@01&C6ASxAFJ8v~~GcX&i^ z;Gd9dMEukx*;p6mPR2sFVtf>0e?I;~rdHdF`@~4rqtQ*D`aJg54M^7Xn?gm>NE5nB z?`F1)Ic$qvkk+r`D0zNlc{{1+=&H;;aRVOW4Z`_aztsCg>;m6b|MWUf?FN>S@^-k%k5(s{mpdE!sbI-;E0v!wji*B zJ>B;Bp!FVJoU*9sb3z+3t)e<}p#Mvk8N5&Bf$O~_pzAI&&bZ4j_$cbs(M5*!^h9bD z;!Co@h||+dbJMkIg=Xv7IejJ{8cD~V>~^y#e)w#bGj<sj>9!(X<K)cd;XYpqc4sY)ED8=HvwRbOHSu6Uqv>AlpGj_@UJ{3Iyk_h_L zUR2y66H_>XsKrZLHQ)IcUD&2(A6i0b_6(}a<8AjB!(q8Z6fyixDv8mGOC6b z#dn|Yz<$nRi{2C=rQRAk0uLE6TOiLqovv(8n80N@h1i~-8h;ArqR&fo-|?agBN>>huLz69;xCiAQ<3Y{qCTcxaM%REj(Y?8+}+>s zU1L$^nimE%@Dgv96BM%qW+s1&1A6cbS?SXqKFB!J}tRXC=rjMB(&JRb*S%|JyP6>EG zIXu}-oaI@2Du?^kNu870i~>yyJiENzO;LU8I};e>hhaJ5`cBZ5Eb4WfDP-FsG1}@l zJ3{%g3ppAgv+9XNiX;jI)&6LWT9(CwUimD?EqHS|1jkQ4tlW$i8uror7wKp_05Oot z{lx7=p4T&Pnq;Mx?8YF|nN4(%PKN4Dp`2pqprLsN8c*oO>Oj;>S|QcHV5oX7BRh1N zYyZ6qMmhARFcr7{qd-y#34X62Nls%(<6mFk@mexLj{#AJDB{66CX8DYOJ{HAvVocd6S`3qMe@VyW$R39#^tUi&u0Hlk7 zr6^fqN&bmwZlM06s#HTae;ca3xyb!g@tZ=E$RyHc*GP5aMC=SKtP&7@gS zU?Mw*rq@DnsO}Uy!{)}3y0VsVVRxzeCXO2QIb@E%*wa^kYSFB2%(^kvItF z>(;G>RV{JkTnRS>TM&`{Y#tKqqkqsAFs&QN!FMd5M)Oce!@U7Zkng>Y{|NdB@E&|W zL(DU3eteR1kPZ}ue2HN4Osf>N>Dj!JI|f^9vouP%7&KS4gOTnrnTS530Hzq?14VoD zn?Z9Yk;{rAVmNy%duU0om=q73nci(nqMz(~RRsWsQ}hDkfa-)13eaEjxlJ>~4oVNWk@#iFzLw<8)?2dWl4U1sT)3d9p-vSBlItO3!m?+kXms(1bB7oOr_uj{0o( zWzVNYgRRLI_^hG1$@Q2}!+Qc?!JFDulTD%+%HL-1p@P;CcQ!5!FeX3UDEFE%Yzr#{TOb&g-zi#0wd~sTu2UpFGr&-FLEb2I^GO22W)AXVrT{|T!($A)HRE?o$_@B3;9VGbiX z&nX!&;f~JFKe)TT(p?@0!pRvFFLsf}75c{vGo`||@tN3>sjf)9;~<%EeH;Mk=KNt( zI;_PRi!`)<-X7K{Zf=T?-!XdYBbe6UFDR-`A&xYIDya*bhm)sNvhXQapdd$}tw0VmIg@jmLV zZl*VlRXFpZgRJL1A{G%PdumV8FdFYa4c@hZC1AK(UG`=^7#ix{mJrJ=0tXT8yn(5= zRZSKhA6m{#dxNkA&MYLR(fmT;a4NFX&r(_C1AI1hL8F}wz zf-Kr7NPkV1vAZThp~5FU8MQ&?jm}IeK(gQ;p;Rff9?8f7taL5kDJS)5wNol(-1fr! z0u16Xcz+#mWe1lvv-(%omjl;!Z_e`93Kw7_x&@dk; zkCZa;CQm>NjH^g7>g3?I9OOm;DV>fIC;&fh+F6fDuflOpLbiweDak?f8r!00oRQ|C zX_GU$z@c{^I=*e66MN8D&nRi%5OST04Kau!Q>5GuUU400E5B1tMNJB<;jz|#Ma~B< zTWAXi{L@~A3y`UK6)H@J+xoPf_i0nU-=$y4G1FO;Q&d*L+r^p3MPzwHr3Yy7cp!+% z(LzBan=LHp^j(CIM3+E^7nvVSn+&aSZ1m`Cmx zihEZhBRBXa-iyrMncu(N6yXd%@r^K+!yhg2T!{!KU#K9yUb<+1y zc$B_*Ntj;KeT8H#r&lT2V`=I?>pW)b=dN^zj87AK1859iSAKxfV-mz>^YYaoGjcH1 zwD+oGwZY(qU9$lZ3CkJ2?rl1fU!|@yqUoV;R!{xn`-g;2swQ)Y!?zBey~BE)qYc_c zM?ox_IctdD*q{$~)Khzs)YPOE|8Z43S@1>#)=0tb=+0+~I!@MxEhHAA2O5m@S#%l{ zLX%Fbp-PcSE^lG{y%jBku@E$BfR!sBXpX_zl6!Wv#Nfd1GWTu1+8REbp6;e(*TQWyA>k4na5 zd)UvpL-q^tE77@8l2T4ioCWG*Q2=}ymB}=VRCHcxUw4dr;MfQDM~Yf2po&X29SR^h zYEZRjz!y^=+elw8AGKpW{$|T>m}GEIGhhEMn}{&K`-%KRnxKWt)_vIgN0CAUw#{7)-&kRRiO&WmJ#rYckK$lG*gciBfZQ^x;ILyni}FfBu9 zq7*zwv=doI{Ta54a|Em2J3E@U#osm()0rNnx((*l6`=VnRGjsXZ2b&hNrU6J7{K!Z zR2OOXHNl0ovri$6A-V3ZdZGQNET28}qWWQD;9NKQa?`nx&+e`*A!QVF6h3VWYyoNx z3t`UD!iZ6Yf6xF;*Q;a=JM1YI2Zk-KB};@v62A-@4uad^f}gsva%|sOubFXkWNStV zBw@cn?X@U6o)21FS%dkBj48Bky;x)kAD#mlqi1Co@;ks-#zNQ~e_sW!$K9#ODTH^v zdSjQrm>&l>ynqFUjPNyzt(wDn8d&qZBea6c6{v>N4Wx1$fA<%DAL=;Ga627W6g|WK zA#VrS5$1k`QLV$0kzNH-I1K z$$SxR!_zWMp6=?@rKJog{NG3xh(udOx(ZLOBB0RQ_%5{78DB6d7b!Nrz~#r;%Dct# zdnRKfLq*4e`l_l3c1dIZHZ^%UuNrLshuqXwXHF1L7Bweq`nCrKDsWQS3IzxQPWz3K zS*Y{~&rXwCt{fqPQUzpD=-S}w({6OC=)Rh(D=*Sn>l7P`=d-Mt9&I@6(TQl-YGXhI6x<@3nbojJ7!2PK!^n{b)sy5gg#qN zv~H%_rIK%-FOV`7@2ay$X;TOvhYg-OJcg0W3Ci9s<)!{?PWTbVtoi*;4b9ZY8L5Mi zRe)G_>Hd@1RDbDx!s1L(B6xVbS%J#F#F8Xy!>jwHAoBAd=i+7>{uXSQpcu+&#@U<% zg%ui~as8b#3q2+qvfBOL>Ml^>)w1nt*pg@x^8ZgNM(VX80*3%a^AlxuuW`cPWkP?s z>Xpry-EUc>kNCytVe@!B^pD7wQQc?tIg2YNpo^^6L!53%94D6lR3LN%XE}7}#O;In z-_O%X?oc;f(7%Duf|o*ddtX_p;J@?Z@D}%K=#{m!K*Vy4gkh0IuI1~-MIL;H;}Hn% z8C5q2ajMw~;yih8R>$$o1yP+<1pl#<9SRLqqzcxRc~q)(W=ilm+F?5T(x08v7#knE zu9a>={R6T2?McO2HI>0A%|ZXW&3>QB42Ph@9}bY3a_D2xSB&-+x-8_ZaOSlcHOdrl zlXUb}-aI5mbB|sD1yK-qw6n(ztROw4{IYu4(gr^;CDfm+dOWUcmJqs&GJ8>z2hg#b z`*14YGX{AP$Jc8kcu($Qhh4JwziFC9BhHm!KuMmqiZXDvgi1U)+Eek09FA$LuxOhR zzJaU7cJmiXsUxNsOeSHN2&51hWlC>ZV%Q44pD}_(M%a9A65M>hlid~xdY);BZ~76k zrBv~lp4Ma<=se<{hR(X_Pb~x(>8lvc$jDy*U!VnEFW-`TnrmR;BP8ritUhVLM8Pjt zkzgV;{({XHwLiA5D@9=wK_QEF&V_5MeZ?MYkHUN5(jI(T+u% zP(Ji}cm~jgs3xqXV7vwf;dzWes#w#gN!wQSdFhquF?=0`9vExmH!JEsf%+al7v!&j z03qBxu}cWJ4S6=XgtpsNSlP(FCr`5d%uuNwE0heh+tn0N2ep{2nx*0%v5KvZ+USen z%E4E6s_>qT9;V}X^F@SrVzfMEmM8NHMlNv$&GRT1(qrzP^EXYG-tJoq#9LVzT^DZK ztxRHA_~n{*5|vg9l%N>`OlUWJve5r)a!I~pZ}!BVus|{fJ1&?eG^jBEU~iI4aKf|Y z{GTHcxu(0|5`3dr-++bF7tPeu6R$^TzWBmtetRl&=8c){Aw|4~Q%E1!AcQzw54R zC0?v3xqKj@YWVf@9Ft$|VX~imz^}N-!K1v}#wReuhmQ3OSfkc^dGWA6)=a{AxR9MM z0JbY|i>Nl)Fh(C9BOK7Lpz#?wti8uj_!g+FVg=W@u`XT$Ez*!^m(j%hT{;P?};4#|gC{UFe`9Ict z6N~IINR7ZdE%A!mdUB-nJweCDrOlki(D!(?QoL+Ylcr?TR8?%l>Hg<~RpI~6qNIP} zSL5@?*2#oD>aXAtwDhg!Jez=1#k_Wt9i_4DC$91ET=ej0`+`8aI-XGz;Z?!(qz!ah z(3le*DAn1LeqP|RtJq3~!bT7Lz$UYNLG8e1qRG<(Argg-P2(i32pTuTE?(Le{WzSj zGHh+@aK6F2^7hhibc7>%a68aD$UGn^Vva*hxgISS6))V8M92}{PSoGKtTm7i@1N3x zD2SZlRg9->&r$2i7#QETL`#QIuP8*P-@mh8QNQS!=x$Q3q68h5lCmgg8^Lm6qj3viV{^r; zaokZBofmd$s#jDG3Ea<&7OEb)>as+oMXOtBTUa<)j}*u>B3es8-bS8dpdHGHDCSc^ zi2QT=7s|ys9PHWIi=fdWfQy}=)5PF8|zMWr_p%5XzFHA>dKgUU{ zIHVG<{;>AVxiMgk{x8wL*cV3DN@jj10L-jF#>?ZRz%B%j`f0UkzOTJ^yQL z)dCbChj*qN>@FpxDi$gfe~ZuN+ZF8dLOzrY{h@sw$y0koR#|Qyy#T_jXA*VQw*COh1M#lqb}3xjvRb;xjVJBz0gz_dToG~zB)QKk>UQO zUnf|;qLHGhN<`)51d>8}G*IZ%gk7#4gu&2OcObTuV#fiUWx^6@!aHG1^JE6=ZT@m{ z2fnT^n(bA|Emp@j+WE*O6FQ^Z*9+;Q!rfBANBGBkoqZ4`irOG6O7~Cbz}1K= z=QaG{7_7^KJ!RxdIUPxv+%l z=j86|mUg*<>}v*lTcv&NKa^FH`xk9zFy4mmmW&L7&&#jg`RQGcs+4$FAS|u7QGGv~Df~kIf=1sM-hb2k z^72c_h7P_8lt1LfdELT=Q08e`?S|8n#JIT;=y2Rab_2hb)hcQJy& zZtVO2?>#GM-LNHA z%EeZ{FxC@L*jDN{hp1aA90@SkCwH_1kz%0b2(CsPGCjYJua>;QSSudN$X^wgh71e9 z4Z0>~`g4&-wtrxhny6V9_KA{MFIB3HENJO%HV4~O^Vu9#6U*wKz~V;na2tDEAFh3{ zL^HCR2**`apAmA`3~RYV(X^`yZ8yL%vvR7wlI6ksjuX4xzOlqZM7KY z4NdlutzkHbR_z)stE2=nZ!@^?4VjL7lwsSyMX_(#N>$0j#QMcVJ+-f7Sl>0$0mN1q zi(=1Gpa-(F{&^hbn{+IU}yu7FBsPtNR8BeSS%!>7 zG7)a`Yc+vaXdSub@KS=5K=TR+;0lBIQgpBMm~B%aF2-y@rF1cm>a_@>v)x(3B*Las zRq9|J5C`rAkepHK!>Qu3JNeafR8)uiZyPy&!bxr4or-6K%NF`AQQ?5=WZHR3_^6tf z$X%ntnP^N$*v6U5l^YK2av_bfcJP(=*3MY1>juwUHnU+#Up0B}K9r5L(J$;L!y5Wn zX+)vndyKQR<@r7P+B@3>PYMLtj{78Y9`Sd*w&S5%yoD44x( z2H<^{&0-7{9;Copt%-#>m0PtHnC!%9;^t_nx?5~{S=tM(6UEQ<2u~XB2{{;bsSt-2 z5S;v6y~j}zgrpr>maFLst>VFN5DLEH4N7ZReHbWhF(72m2|LwXw+_N@A}ZV1*-EJv z?k@%?$|phK(jSfxZ$NhvvQqnM1v_C`<0|o*!HN{{_Z5g^o;$c6Jx?X?9YvOP86W5t zCs3YEqBND+^dO*wsSq={fC}{tukvxKZ`z~w*~&$Sm#q(*;V$LrDH|cL+ik-=jMVDB z2LZurYdUTvk>odz)~XtuFs`*&{!Mg4=kD{Y;AA;=sfzC7;qE1Zu#%sNPk-iy&S{(jODBnk+y!l?cL+KTV|g;^98h%@&2>=}{i z7o7e1AO?^+=cOn5+T0I@+e!MmipL1$;f?8zTb^zpc9xQv#CokdxPz&b3ghD3dn}8s z*=LM}G=`U}gfaL0Z#2MD4tEB3;1iX|KdI!HERT{p^VIjE5sOji_#JIQ8T;eH>)hji zOi|$NbTay_b90VzSkK+)M%U9!ERw4>PqIxPnIe%XR~al%iXK~VRMW2t-Bk!Mizes- z%Lw;uj0I`Ylut(w{}dy%je0r6#2W2c6_9Ugu}AZT>cVu(Zrc59KbhoF9MIzIHA?VA zO~XL&vD$md$wWXi&8v$)U{bS#{InYA1LwDeG$P{)%oA|Uv{{2q=DBZ{CktyHU&;vN zzfJ3*hLv47GKB{|8H}7ksm7d;fR9Qrl2|~v`gc>N+18%MmL$a5+%P!xad(hTI4J8} zY2h+0*a`pwK>fdmE4%2-$qBV0WFio*ogSb4Bzu4ec=Mz}!B7+q79;@IFi$D)tEYUZ zoGO6~gfdj#sFX2rbYoY+V2WGTW3|3CndvWA*6>j)pU#=6@s?oLt~8JGRidjqBo(b? zqHXHv;tcd?JmiQxuZd>+U#ywELA1MQElQSkVSO~sQdK-W97{fVuJyMPVgdRig6JFnK=F5AfFZo53el$Y_#%8ov|D!&`_Wuogn@+=(m5 zFKA8B45?~S%@;vuNs#!)bhpO*-6b~H_FYzrDh0wSp^z?KHOQMj@CRsm5am>Katf`R z)I>+yeiPEcDmsT*q6(Cz!LZmkiBaK>h=K&{r2c{l+?j$8?4frV!d(xG9QU?Xhtd~% z%eZx_5(B5dih$!~;u5{%FKJU6%Ph8=E!-MA-wH=_B%OD61|gumtZjZdERTyUl9-W? zWa2sUZREzPw0N@@1jbc6;MB*3hLTuL3B!{G?*%i?&4xjpCoi=jjLqvKNW+G}kM=#s zv}sT#*CS$2knh5f9{B9j-q+zim{ai=^)>hbGJ_PlL{7;p%g7+m9TYTg$A9Kugxy@2 z66N`;HSk5tTTH-`(Ird!6iKC3wF+7fCd)I6a>t*n11f>7!We?QZ5((-n=6-fUH)~7 z;`tCJMa}f+NoH0conT;&YYpv*wP60iNR<(vp)0z{kMKMUzi7@zcj9iH$@z6}Er|}K z|DG6#@({XkH>(yPY=UWWG~)x7(znbJFk;4ty3lXvV7jtj z_S0!4pyikpG(|Kz&okH=TPMUTPP#T|erAhuE*4;SeK|$R$371(xeqd#LqDW4AzpgQ z96$Y3QWN%zlaNkNnJ`Iqb5%%*wI)fOw^qIo$-rYa3ilR)sF%D=t@lIXMQ4?T@sgvr zu>C_@69g}A4~=qcDkA1|B!{D8+Q2wcSFGsL#hU(M~l00w0iQ z5yMC6CZr_lWVS8%*Pq*mh~Ev5&fg~?S#q1kh%}kb0$<9E4VDi#gm%1Gr!Vo73~XUyTJF<&Wfv-l3yrDFBn-TP`LN>KbTuqX#g zU4x{mpp&0>M_kuVh-AP$0SwxbS?s~WCWu`t649;P&>4;hIMxh|LPPHetuRoFTXGfP ze|MPV=5rv8PXmii6Oj08ciyR-Wc*Ud3Xs)R zNBI*Pm_7Uhh?bJly}?q~(LL0U2_Suj#(g79GY-nK4FC#h0)GD)@C262iYz(!D~1=% zdL%;)JKEZ3Hl23<-VIXN+JK#%mn?-CEE5 z#-CkNE|w*9H`UiiZpGMRg$q5-3woyj+qEHBYX!g&vdyA4z7a9{nkaOkFoP8sg~xsO zF03H{O32D=&nZiK4`K+%={3}8I)kmef(s?ahIt@bqtivc!WbK1e@@G6-1|6CA9*Cg z_cuU3p$o_HHaZk#mnc^k{B$%Fg}GB*QncmF?~w0Y@SZQELV1}5l#A^C<&nER0^t(4 zPD)mpkrnRi9*~i42ha(|#Zm%J`Jn21ad-$^K6bb{E#3WCU~6Jn*FX)Y9K{(OGEV?A zFqJl)jd3NHt8sonG1#2s>kkuLjK6SM;I}m!Y+s;EVsfLAV9L1MNVH#SK zFzQ4aIlPk2Ho8(TXOimKdwJ6y19a5m&~`qT!xCZN3i@O)ol4U&@&NFW#U=i z6Bcs6A@T5J1TE0r*}JmOIppdRD||Cx(OWlB-*}v`h{wwSeZw(mwiLz@xAA$m_zJ$m zV3(NZ<^F{YP5aBkDH&fAGr^Km2nFV#s*l?{Z~r($eVDm(y@DPICg-ZyxrXm3=!o_b zn=ykVFo%hB!t1_%W9^ajy%p!S5RZRS}4G_ku=Mh zAHn7|I`V1+`^VKPw1!?3l&IQ%BpgXu*;mBspqKSExz+RlnJ zck*#|MYA)*=a2M-HBdX9jSbSO7oq=W3yiUH-4j!%2;5FgYjJJAIfBlZCd?5VbN!R+ z>Ngs*fd_76FU-R$mWjRUcl5#IxcJrAPP4WD`V5+%K;HJ3Jsn}J{*2iHOk~5b%1q_e zS!SnuyMtG84%^+vnHo8bt~xdb*`wC9%%m}6_T2L;MizG?8rgb%|!Qy$4aMz+Pg`H z5$ZNt{4O^WrG4#qV_GvN$~3601@JfZ`3V3&4k={V9u#IpCewkM`5b#7Td>4TjJJxS zQR&^7h>o4R*`^QayzLhuU6l`ocgc`u6|MqYbGW0sRiFqj$M+G;F5A!cIBLyoT`%U6 z5kq+Z2`2=C?nVfZCN@>5T8TS2u~YMjcfE}AZ?1z)#5(Z`1+*0akq%J??$kZ4(|v@4 zkkA>r7;vE?Y1ZEio?pN&-9d|%u{u#^#kVT9zi$5m0ba2-If*K0?27iDQuuEP*BKQi zuz-*Y#jqE4=a9GI{Ku6>H`z4_oK_icFU#ceR@SD}u}dXT%^dQ{+kY+eY9I7+*5mCy zs7_4NdYy4~(zML&4;DdbhQI})&GGD{$?sLiB3)-l_SE3<^o|;(59|1JO;Iez0eL%f z4K*Z1TRfSIjLS@%<$rU5NE@Yj z%_;l%8b+C?oMp7&Y7*GMkhq4?;zLmft9lz=_FKML2&HWEy2b=~%<+#p)4&IRUY>r$ zzm^9sh`Pne=W1bIO`!T~n)*6dnR8YuZ9QK_InZnG#@p1LB*1vj_kieW(>(I$B#m0Dje9)9!ox6wr{}+8S}&u2 zZlnd@9u*=+{<*!dEo3ALN`TBSr~-ycfhdQC6~v_V)i{`f>9s+0aQ2&DK<>Y=M^NEj zlzB5?VvhrWc$p(c(%xsUxNZT2+kPrH1xf1a6Inm&L(spuOwiP=V&)0DUq54|_L8;{ z=P5AtA{IA0)t${mY&SQ^(PXzm2UO}PI{~SBXa$GM(@`ay!IYyno27y0_;==Mr5vig$Nnlrd$zo&pN_Su_QrOt0XqIO#OPr`d`ZdeXg;7AABh7bDa z7II9lf^2N#>BhGKZ)|u+1e|azM{(gUPt1G&Ym83q}SSM z%$vOm=TWl@RR5*6vZVr5OZ`l&97-rA8{8zbTD=!TZLr4VM=|-RUw5S4ObGp;N>GC# zQJI(c`aGCVcmwFAwFZV3erXF^UY}g;X3enxTvyr(Nb8#(6q#Hv(kBQsf?qxcXS)%r zuK>aZZov%FVnjM~%(%HGBmAUKX<=?~L~%=~MLX0CkccJ$8Gl0HzB9rXGk z>f4eQ45Ra7hg-Ro`Suxl2bBOj8yc!k(b}=gBCl9W_&o=ycYd+5Ol=;6(1QIL6p10c zO=CTGn6*hOBR(7(L(zNqeqkzJr#nKrGnX{5i@Mm%35c0?TuSeS6+N}{SAa2A(D{;h z@Y9S{{ms&Y8vXLOOXnuX9(OjzHt(DI((|G$_P*iG%@U0QRFqLqFJMFy&xK9}z@I06 zvp?sQ0sb+e=7+@N%EJ)HYsR}H>X?zhzItl>VkB&&rLETaJmD{9vA3L=mO8mJ%4p?>kpJ3w76{|E#Cy@71mW_l1UWLK`JlS2 zDbn5c-PRUWg+j0-dS(E=Q<*6vEQcK{Cxh4?ip3Z0vv7Uzbx7kTrxQDFUt2dQgy)Pj zr1xApQH*bA`RG~t|J_U(-nCE&r#HC(LQHCz6v#ir1!#=zyHdRAR7xCmj z&(Ta&XQ|UF&`czZN#!JvFQGzg3#J+{pIKE*vlzJ)S~ zpONv?{>A1cu%evB2>Cp(!DW#~o-A!~nTaO19u|i1x7&~AqAGLHngDv_C(v@h-8$G} z59}142mw{Kwa*q*B`ixwvvaQnQzKmx1>iYaDTH`%YnRnS zdwGw&CAw^MP0};Sc;3dT2ljYU5NrwAtQ|^_ka}Js7jsr7{v96d<#G7<8SvO4%5U(~ zNEIaallL`^jI21EDy$+s;zxK?U8g6*MCW-$qB_zR4`M(f^n>!O0|#In{npb!oZl>{ zXn{Y_Vdar*(8Xj^z#{s9GOupI>DMiM;?x3MGjm{=;?UN(91?4lO6tlF+%_+zCp~v_ z8ET5W1HeZPG?;cur-D2W-pTGc8IQEP`2oc(z-Wv^s)ovm%|i4ACL3+-{h8gCXm-L< zU5zKbp%qJ#=wUo zjjIC#5=XvHDRNP#KEqwF+XVQM0^hLlp4NvsO|+5 z>-F;l*D6ywYWr8(TrhEn$$3uU=SUi-c?Hz76YA@FSZFt}maR~~9SRGdU=$i$9S|?{ z5}HL$WnmClOVL7TcVA@=LwiBn&oNyL>yAymS%eIPH07&NmweQ;KM<#EOtz-eb*uS% z=82|cCOs)`?u@}M0CY2I>~1J6F2Ns9Me0aWeD{_fO}Y3$iLt!MPZRCa zF9_cIN6LM2ly;y}Yzv)jh%csiP68+EtEh8++*x$A;)s&z4wKr^QxlC&M`2!sFin%n zbvs%Pe1q5NMoBh7^fN1;!^=W9Tmi(hcX&ftyPa|bM|kxZ*5bvA=#H~CVK`IyFeV9} z3}X{TCJ;f?(?%j1bL}MG1z_S>8V@FRD!Dk25@w3k+2bwBzQmR zHB6MPJ%pQ(v~kJw#gCfT-i8vFb~{T2q$zCG0g7C=_t{is%1TJ41NrshE7~Vt6ZfT#^aL$XIpTPnO2FN6s;UcbW0E}2;bjAmX(O0r%~wax;U!|8ky;S%P@filV% z8X<Bx7z*8565ip|28>6VjcPokEk!3`g*Oo!RlvZB!&Bga-wF0M#c4O zdW%(3yYZa3ouF)v-v52E$4<2X?BOgl4s5^uI^SAO+50Y)^q(f1%if;RVt1Xnl4&-R zAdu;?<`7ERw^3A4YsIvXud2m6(C*Hzz*?d~v&xeay=kh7fjlv3SGj21?Bv_X-;`~C zC7@nSA#D24cq@p_BP-u_t^nU!m40lK;9B}o$8^C^k{g4m09IFp=tuuetFh`3?sF&t zuADd|=_EEPx1b69)<0!2yZ<_rQjHC$A=}T98?N(4k~s4|7_S7x^$B!sAwQKe*n8=> zxF99|`~>n-%dzM|o0+@s->yt#w~d%0J7@jd9i1?sFnRHab1;`QL8n_DUd~5W&932F z+(8!&OOZL39`KeY-?nbmmM_qg>pd*(SH#XP3#TWq#}yKojYx9>5arP@g7^^U%f+aI zfn0;pKFc!fhJ9l%UTb3hGi~e>x`j^^r~3$EI^)U~ zBac-VPP)nR+XW)G^hGFpN{=@?IL>B3vvI5XJL&#BI1)4Nq1jFIFQnCAI&LEr+RL=P zfm?)(x{Ve3WjKaxGMV7(YC@Nb)9?j28m`DLy2=#s9<`YH>TDZ+^x(>If8bVRm}vmD ztI{NCnb*kPqJ^lirqdLXwnk{A_4|jH!g%xeUj@7cd21^D3^41y)MA>kIjNMk0QHPn z!GeoQhs)k6bcyizG*}>tl-rU!!s%{L0+zmgW4~X*=s7Xzfc37s+n!?M-#zj&IlIIW zC7|Q>GHTFYYRIqPL6)R|QIJzg22gUms>jHzHBRDBSB1PvRei{QYG~y*767&muD>pzMjhmrZJ%RmEW(L_iUtMN$wfX*B*xS=)8HL(O~1jL9xNd1nES!t&>Py zKIKduJ(7-iavg>S;A4Xv&JDr^aTyWu`gZen;T`>x0%bFGI*jh5{+&N;i%%orM0BXt zhmYA|2O)2db71x01zr+cdg3r_wjh34pG|BTB#kF7-bsNPS-F{I9p*Q0G+aG7{&hd9<+NrJhaM=)(s?I3a=t#Ay_;Iqa91%mPWIoID2s6%?x| zO0%x^VSM-T2?OPpC_GOQzxM)W3)Rp56o66IR2jN`Z+>>I(YHN|OyK(lUXBAS(H*^0 zxEBhMV(eV1E+YR6nZMXMrjb1rTk1lpEKGh|TF`^&l@hN=)^IH1hW)$~Sj#0dPNHHV@>cSFJFn8tWsWs0la=fK`Nx47co6NVISp6^^9kMPynLkW0lvP;z~bitA_R)g2-=BJu|;W($MZ-X$Y}#!!78WjfiB&?77f zwtm~Cfz5>Gk1I^=zjnnd3O`B6(YsJPHbRp!@UoN1Gj`VF^rH~LuR0iTqeie%W_vYL ztEjL>JW2W&%p3X=Y5Q*+eIrPzBTTsEH6KDfLzK3s+=i?vT4 z1Lz|Z^{4c1NSk(#`U-I-ZIXwg-%quXD(_UU<0F_-mf`s`&_)Def1XN60<5KK?Jg;&L#VBGdf*m+xY*6-$MuIP2D9f zfaD`oAS==aL+~KS(*%y}%!u+Q=5FE`uTfTZTymM0{~E*S(A(6$#+f_IQ)RU-_*W;n ziwbF_!qpa0l>u8YNGnq=c`yy>k)7OO;aXMzh9LC1jm}Gefx70uNGtUE03XLd;l zenWE*|97e-g!BU0bgj96%Hg{E*_FUSkI#X+h#9C#? z-3J0A#mz5E0T3q^_CgIHw$Z6CWbW;_hJE6*+dML_k>pFaHQR24V*CPel`@62dm_^c zu1_a{EmfE=ALwEja0W`L^}vD~oW#^M%ObD2ih8~Qo6uA@I_VvTjAGqw@d&hwW-T4f zW~aXe@XA8(!k!bba?THYmo`?^ofv5A{!T^)%Gy%-|Hs2Yj__@P;`2vP_$gZ!UJwaL zV(RX%=HDbGTef_62j}k>u)4eFcDRI zQi*;2=i-`ZUQXYU87JP7$|Vs`)70GtfBUxACxlgzFAn=HqtY=TUL}%55T0qf#$cI+ zQK!0xB!NypGD&JX?j37doKSoKZF@_;p(kIH-49|;fR~F3%g#Vrdv|1kkHR)+z%tfW zm`jP&yW7p0>_@Ecvf=oSCYc}5W%@|Jl`jf!KRw4_Yp12PtS$Q{EsXK?nVgUwfZ&~l z-DaN@EvCqKG*8w0o;59AYjH~ZyV_NAIadI56R@`q7Y74$P~~ChAa%bljFelvL(TA|%n#@IrC_RpIgj_e)?U=~YIRyj z0|C@wpttA`7jwM5pl4@Bk6gJ`Yq{koc2h~eX3Jq&&HcXOZL5IHk6gJCx3`6k?@C@( zyO#~!!&le{h_$E!O}Gh-Cr%~Igr0-5qT0xqyPg=Fo{mxqIAKYM`xI+x7Ps3MdJ_6J zs1whDLpXCwHGSs1w+rM|-m}P(;P0j@aj3r1?c;-bK#XitmT%K=M9Lj%dp1P$0b%sr zcy*U@daSJ?@ozcTod!9UkzqI0iRm=;ffE8-W;U23FN2m*R0zS2p74@~I>RmW0LPjK ztcJo8qf87MK5cz|3ZXYpj878>LRoHn(h0^%ad)T7>K(b4jRq-Sv^o~Lv2)Yh4}v0Z zX=+{p&;8dUwh(byptQ!Vwn(71tX*oh0ZGR5gq+BZ|J!_ovGbaWCCM5sh_NManzTWo#CW}MF|l}3BK8%Jh&6rHa82wgEBN{@aPai~u77rWVLz@g zI4<b*_<;rHI89D)FZIUO?iR#l9E*e16wRte3pK3q^+u*L@fK0zhJ=1?_po zZzpmp6~#7;j+B=7ETNameUi#F_AukabVn~i$}-(kDT;Cy>1Ny7+xE2TJ|Pjf1UEyF zbr{1yv`+fo<~@=7J*}bgj}#A8c1-Pb>9gGp0T&iLxhyk``R6ZR69yUMaSeWR+X7h~ zQ2o`D2dr9?NmTk70E7o#IBfuJBmN1IiyGbtw2Ki=*@sJ z^wCJu3=wat@FJw2L|`OOhP9bMlW0^a@SY@otQ>r}0g>CWz~d_B=H1s?v(e=E5?WFY z$k@e_X@l=>LNHYUk4O|+Ng#dF%s-8ub_*yoQXkR&5w>5!)|b242R-0N0+-}#^eXBu zctyJbIJUqSK)a`c@px62vlQ6!-z<||>PaXHjEyoRA51*JQ7K+?^uQaOj>{6hSgG!q z4|8B0{tPyp>gKmjpvl2~kx!CwWY;u>p|N+q*J4?C%`xYj2pSJ#dAN`O=T=wWVtesu zpMuZ$=L-$`g%dSpAbk7WSrFtK2;}P(Ce2_95Xkappw^@2;6ohPS1{kt9?MayFWbgG zro56ioJQ+{%eQ)0Tm(>JJbz_B17OyGqsVLqg zbOd`ZX@h@p3*UqUKeqfTLi!Y#wf%|N&a8drtmB*wm_rTYf0qZn+e3C((@NIQDwIJp zu$rP$NXqBp*l#i9?kpbEmrO^S&0CMdVgI^h)yMqh%0~VEX z!FA2|c14%_;U}g7!=|9ixow4AR($NJ?}ZFYZ`H-z&(eMs`K}@@2M&knaN`ctSN4h{ zM0{jNZZ{xt?kf3xpp}O0!Gn0RHsgwm&O;E<26y)Tv_y=A2ma*8LlRf5w;T=onn}AU zQlOhjE^Y6<5)3-FB1dcp7KX^;>6S!a+1cAab8XPyY1esP087jDu{xZ~I_*3(>XdkS zjU8*coR#YEj|47~z~8oM1|fT)Aj@3FX&iT7?8{J7Y+f`wk-WzAR}~1X{)0ry^i7P) z1GE@+$ZQZXm5TE%e=U5tui_dCB%F^ueel@uXlL9hD~k>0!^)y zAV~%WMIQVJOpHx>*$EM`^A^fwmVuVCfQquma1Y<=!GOm<)rJI_!OD|P9>X9DHgC_N z&>42=qr{Y^XtkI^kROf;Dbg}H$tv{eim-Xk@fe%#|1A@3_xRX~lJ7JXv^f7ba>8JKk!*lOhjle);UZU1Ah6_XcW zC;7Ecmdefu+e)ALZ>%rujVe>Oa~M5@qi0@?R?VRgk_bd6WzKB3tSs}fz?eoMDfx2? zgQl-$an9)SCkTm*lWuEIQ4FZ83bV%I))WTg3pF#2P~Q2?431M2BKNrv^i?-Qcc|!^ zy%c&dkTQ;=*AIIQy9?a7+GP;1V(WpKg7Spgx?E)%c z!1)F>T-P0X!o|&}^$7~s2wg&a!7sJGZ;3R4LFhWGJ$PDQjufpu_Gt9<){AfN9=9^8 z9=_yml@8WXW^WP4^4w;c@*TY5iEu*vD;&STA}-uH*~+@pL!A@aXzNOr8p9W zT)#}Qgcv<`s@d0@#M`JM9KAIAVLo#H;JGm0j`MGaR`>)e)UPd$_d|Sc)WOPptUSnt*OO3 zKEnJC*q`f4n7goiY^jiCmT}u1(xXPvA$$3j_;>duW3pYexVnWs6m+$A z!EdBvQhzu7_fUR*M0pU*sMe(Di@W@NyIg`_$yy_|458asx3^V361IvxrooT$)3+`oXPtw_Aoeys#hJ2o6s!rY6 z#8t}HkRwXw_5iWS*MhS{Bo9#obaH$;;4z5XB|g+{&6+XHOvksTpCNwmbcvGn5r4f! z#K(?hM6@|QJ1-iFFw#O}#*QG?n4XfdzpX%Uu$N@lbJh?sutOoM1j)$Z)@5&$imlsH zYblv?Kwin~$Pljz$sOo7Q8`uH&>t8oL0AEPeLRw`aX29PULZ41E2$w&pI>G5Jgo`VY=YPdd?0^XgfNMlS$@% zWkrhUhJg6gn8PKDA^=jivSzmGuj7K z*)eV%6$d-rzjhx+Nb&LpM^0pI^-E?BEk*%nnO6PBz(me5KX`_hLQj$a097PNT4Q7e zB5xC?jL!Nsw`+UAvkG##D1{p|l6~G6si2;SwU;k9N1mH1cOv@cRPDnDz*HLa%qEL3~fYO?o ztOJbuY9)>_auVeMbSZ?9a}~s(!_2IkdbsdBL^rkWXdy5KtLl1RdMkHiJRt~v?Y&86 zYcBXq7z@AAkh9(uT4>hhwD->+TKM6F<~CPX$gsduL1#*AkhdT6<9_)rGixYm+DFfP zg9{a3hJCS0T${47u|pmMlHyoe8#$Etuz}Z&(K?xMaEze@G*a?8V+S(EB2;EdDI}X} zdBf-*og6;~5E=+PmbB3W)^MT%G4q-T)`RW+y|SEc4{Yn9coO20MGjL8_>7#sp((cT60B#hThRTv%tpOwQG+ipMu8%nn_4>b-xqH2z3?38nR8$>WoDw z^TS1`*dB5&{`QhHB$|6ysA89S^T(ge@oq*7`wRFDdFrg+)bLssCTXNModQm3bsW;{&A#?U}=}>*7C0?jpphBa_*o0+p zfA|TkGlhh6ASDgeO=9nHdC9@YBIjqypl`bUeWkufuj+}3uC;Tu`8IJ~+hk{sTi21e zIlU9(jMJ0T_ofN_%TlVjpZOu5e+>yXs-f@Tf9vy;E!BsY!v*g1>!Oe%Z#iN-EZN!- zg=a&;?`1tpGJ!(dj4hVH8^t8w=$Z2PG$rnoNKJk#QS0rGqM|cE&AOY%Gy(6!|9bTf zuynZm;`Oq$**;_Hh>_L5pdZM(_i@5_Z8?rLnU4&kc}J!!dQvQ!BQ1c}`>N}5W|858 z+L>)R-NkJoHp?nNWJViw36zFb)=+;0i%NqmlXqKAev$mRP!HFDH?Wym#!V3if*! z!Z;u|osX|TP_}gHDpxd1`^iGYx=pQiJ{JFDIDxBTQ9q)0=3pU7pnv|Ccm|b6ndW7L ztIk)D?px%;dsrxO0qa$xhG3^=kU*B(4^v&R z4Ppi;#&(@zct$d&y?wUtZQy3B=siZ(`V1AD3b{U!UzmgSP0|wA)BkY(}BMPUS3r{7gSINi6NE#K}y_?!UJ5QhJF&!IhUTff#A* zGfck=lPeh;O=I4p7(d#4dE3Iv|FiM^QwoMgVEpk?+)xBcCfp7A;V5UaCNWGs7wBn zb1h~$&~l>Q8&F;4f?*U~IVI@}G&0c(CzV&nW3l?emBrvGi!sHU_@%1zGhyZ#9`I0X zS6yxcBx^<>&X)?9#0V@!JVQ`}Jha!)ymbsoz!_@NzY_a~L9_rhXGQmYm@csPm+HAw zcn|iex{%>%V2~lO9LrwQHva$23OoW&4EQl%_gxnqg?p<7vT5wrl zhZJytW-R?H@`}RdSBg4vYutCnn8oB%6;RnDc0qeufybfz@A3 zmyrx=)C4&cl^rQ7`2modgdjhQx0zSn^Tye*sq=Xta;bgtSr~vpse=cT6O_{*=EO2) zZX9UbW#S@appl+vdS>=VVp5`5cudyQ@}oR zA(Nd^*u(DHtrIU_&?CwFBDT;K>$#U}bs`1V{znX|3{2x~2b{g3>a=+39E3n|>xs0n*3)IH1nWNDAzsft9V~$W#}x z%8>Q!P^?BW`ba@jsgep)BKP=Omh6qj0rG4P-hhr-spWQ=laCldKl3n4YoC$@3U|EAPTV_$rDjjD~p! z^wt}y-+zqbppkI0X<^ztmxO@Sza|OH_vw;_3lRezQ<)c%GE{9Qo-K)w!kZZ z<4qA(sPXKI9{vWOtP+-S%wx1z&5YY`A8010j%i}(;(tWqEYK;-Zp&9b^OB|7n?Pg9 zrklTVF@HdNj7$tiz%Hi|^CTFde@9lz*v}3O6s+!pESbqpTG(<7@L}Bwck?5^l=C`& zKAmPS*4Y&b_Dj!8s_bzHI^H>mu1alDt|=EF3C{zw3}IF)!$Nu?f+Q{ zN!RkUata)z$mm`h>u)SpHCau?cdx4u2o>18~`_1t3I5 z&j};)sJT||L^WZJVT>z;UB2tfuOD-MzI_P>8@0Wx8*R5hHEx=`N)L?twrJ1Mb7eTy zfZpGVLW;Vbul69a9uQHt`3P0K*-Xbd4Atb+X(UOBqW)Ygfv^i!BcQ@v;M1&yck46x z#DrvZ^YY((lT;!$06Og0YE(6OSbOJIWk919=Go6|RVN~Mhh3pup0xouvIYciag|hh4--3w2-ion0)QFT z_7X|CStn!Frn-uO+`jPZU2ACF7>cngXRJBz$jSzsbYOfm6X9r3Xs>CE+aATwQ*M?2 zO1EM6ZmMY>{i5mBY(bb`<^+;TfEN6x3GAJ#QNcv?gJ?GYJk%#upmJ@4ZHg z{E@$_Gn=7@y8s zuBHiObYz4>hBjD8Nb3mE`X}KF#^DepP`?NW)h^|Fw7@yYD9P8-E(yIID2BUT?@r(^dr@N7txf6E44?!%=PB=mdd4X29y;o-T<{x5+bA4fnQ9bj{T=1# zH*JTwLPhZ$D_Ene`xIrs>Hd3_z1L|7^#PPw$WPcF0K(Icoeo5X5=RyYdo4%jvfl7Y z^^1;B72hmvU8ap0a6){~WKl9$`uks=LRj5gIY8{@F$~I|?*ZM9v%#hM2dP4Y-e{l` z_Ec9ZUKS9>t*KGL;BC#tE#yw=iPPb@unMY&7vO9`_ielaHzndF*W%AIjcBrLF&gme z&s_K~sePkex?>8=93eVFra;nqu!{wKUH9}&n^K=XPXyC})K8B-1jrPO;0Cn{rm1mR zTDR%Rru6WWagH;vIDLA*15NlWlJQ+$KC(t(;yz9kHFPEeLWM)H0?eDEI+ zvxA@^YWl(r{~Z#XX2K=%u74|j53mVMlPHW)*Q!4|!;K9`6w^XJwA~5xkE{tr&2;G&GXdAsuHUVxJ5BIEhsetTF3r$ajOa z;`{Pn22}FPb$jF}k!$%pD;`i9EV*w^vNb1!UfGRDpL_6tF$gp49EKhwoII2&y$3vH z76|C>o09u%5eQ)dhVX#hmpGI3M+2j|mR!aB!iLyqVP{0zPFjlz>(=^{5r8Tu5)Y}G zz9$#1a3O+)$CNWNhihWkQm;k%RS73$I%dfW5#0gcXlk!p;obWzcEK z4mhQRzu=NaCxD2PR|!D*^W9=s_f)#y%5~P6Z~e7=@UQC4LUl2bCEm_aDz)`-NA7O) zjdrq#{?FGjZSGN`*30oZ^`m$)8yi!P4PzKuPnS?&7NMT_<`1vE-v~{}?h~NGm)B9T zo>4nJR+vOA-O`^GH*wXGG1Ci}sxO4<+ibOnf)0z7suj zhx1y0)W)~A%|#V29-VekmYfN1)O28f_sB9^vC#W=yWh^6>-5}0om1|cOs9$2#c;jL zQ*T6mrs~HQm^(xZZwG`$eWT@%q0>2j^Gryhi-(@o$q;DVb}E$qe6nIRplx?pM- zQ>Ks&e88!THCl&h-^GRRthO{3Pz_RO@g6GZZyzUB1y%wp;^wpLNqTu*U{*B0Z(@YRLJi`%c5iO-b(X?&c-4bh?e=Uwe?}4i7}GX>6myXsesMHm7BJVq zx>9AS*RfV2OZwQ0m`q7V903160Kn&ms5l7BP^*P|s5Vfru;pf=?`#$9ugQMa78X_> zDR&vB3g`bE+ZGvKUl5e$8=}qHX$_8%5_GoZ&xPoYN|WusHb#W1J(^yn!;>Ru;RvGH zPatF#4meZJ%D%^GS&UqUoYF>Be6;cc#k%+std#6!bhl#ba7u(!KwaX-=D#R13vu6K z%>m>);9TPFUO?;NTZG6Fy_4O9IoKtn*sYgle=V37b-w8zS)<2EJ>XvaC-pn8-%g(M|}dJe+S55Gs}N+`>x@lLx}G0PJfgthd<3LEY7 z$W5B##WBI~EAnfM=nVp$e#fq=t(Qm89=v4>N)nnLO-hiU{+5^ckWmq*v-pOgL7grQ zQTgZO&Kp~R67Dlz-^=8bK1)l{1sL{4tjV!a^w_*AyxnrfyHC!uy#@Y7u zo&t{WXD&+W(Nh+X>AFJKh2Ok;I)9gra0Mefqx~BEIWMDrV zyHda7>DC15hV&Bpaj|0ovmMPV-l9Mi_E3~!7Q%;LW#=2pu&Aryq(_x4nI(bUXBmV zr@8QXeOz8dv&D7F2+_F5l%g1G8o8~+s7TqGIq8y{B%~aFo41CL;bFQ8A02n+C&N{0 zOP+--BDD6cbMtYs;89RYPF+p&SJ|J+)!vvjj$LqRzH|7q4DOt+8<3|}rCX$V>W*aqizdj!SGO{2B0`-jfAK*e+Sw>Td?R~j! zHW`vww?wTg`M;+!?;qny65FIPHXG!(9b21nBP%HXLBuN|>B>;u$si9aL8p6Y2T!cz zjHct=(9BZ2>Gd#pvQQ%$dWjMql{AHzJG0-6;q!@sV|CPSsuTND4g<-6Rx6n!9G zVO;uBt!jC3X4;kaYob6#_a~k7ha^yG?2MRhoo4MU3z;R1Q9z(+z=gkZ-a;et!SHG5 zYV}(=A1*KVmecqQt|&~3@r$4vYE7fGx>3-C5&3e*a;Z7|;@QB`@0_v@IYL1iSa+{s z5YtSTop2XFdB-)>T`GHRlo@I~GYGPfyX56Qd@+G&A$*nk5S*mntv95u@|{a!73 z#bfvc9qRWlL7$JC&)BpjV=F17kesURX@Q>}-s25X3c11q7KA9h3gA$g1 z&LbW&yuJ5k=dU=jY?Qif2=y>#wlm`1Tjlt-%K3^j2epk-V0bk7rL&3zjJU*hc)(2a zUnxR5-w{oGS7%~N24BzN_Mo4B{&#&#`5d$P6i8Xj(XX1@;s5JF4_ID!5pQ6Fpw*n& zkDOE}L0H!j2zo9}n2!5rHa$|QawY#KsZX!{YuN=&&YTyO>P`Be z9+nfjhY1jdZXfP^$5h6E9@i{LM1Ysn26KzYUy;RgOG<8|1@amz=?XT_IO24f2Btm~ z{eLhbbIK64dpiLK?m?p*$UMQYUFE-StFCeZ`FzVS8<&IF{47EqPJY}P4vg!%^`Z}z zhEu?UxRH!Bt>?Rqh2O3-;Ui|82KPGiYUW&#)Ys?`B-l|8xp{-~5VV)COHv74YXAJX+6 z6km;qQ%7M&iL(`kTY?%X3ZbFaakKIo-6W*;o!)OjA|9QyK{(L)kG|QY0{*Ez0tKIs zinh@Ecr=X*#tevDi}zY@rJY;0(@1;dU^MO=;=&%I=tC>QdoafnVa8hqsfm|AhdyJn z(ghWfY>o`6x(E8jOqKwQhUDKLacoICj0eRykGO<46xykU{FP$h#D{8Ta4y0RL!y58 zj)!3tv)mZS+N=zn!Mm|7Vp9UmWq%ixe5Bv1UVJ{-97-QJ<4QRudXph8m6a&QG0`vr zW;;E=af2w`wO&}qu)f4U$?Og!()xVJq9L4x_o9!K9TXM`W4JP|f5?Qf;`x52jS@se zE|ee@HpZ`^_ew*@+{qidq95^t!ZAl29`^f2dC|a3kq~U>uPv6F*kPXNJj6f5*#|$j zyU-^i`gz1O!q()cd-?pT&9rKSU8;$#Lj|;?UC8VT)%R~K8||hx9q{X`F>kc{Zlt0> zqs4&gJe8TR{AV;B3jF*|4JaP~?DFzyMf|}~g15(la{$y}D^(8V{84iCB4wAn=>2?S za*9?Y46g4%Ri!`LjU78X>q4C`&$*?M`&gPR4f#Hf7>OjKuPUNo^s7(-ncWe-j;-H5 zDg5Y}aHjxV^jPPAt%+_s^2E+H#!F=eE`|yWL8RtjyKI*nj2f-EAa;ZXsvwu~ty*p= z#XQOOxpE(9J{%ul;w%s3=EIWPiJv6(+g?^)SMRNL;yB-;0K5p|cyYgfpeU?Mg-62nS_9qi4H6}BzQTG^oOuNIxzAip4_8ZcM z@T{p`B0xl80x&CSI#=EV1Q%*hyjCnoMj@kOp-f-a&t^(DHFplXa9^x{V&}_ z8+`5X`|yC|0#`+N?;~Pg({*m5n{4TlCx}S?${u_o&fu%RD2Ar|IzS!Um)_eqA3-(4 z`J+Y#er{UVOoE}n1eMBiGr-My3#y@KS6?Nol%uyd(aaWQLv!VK>75$CS!H=>;KvQi z%!N^3<@B1hs>R#KnX<1%O?hL_k?k_nO#nP1UB(FikqyYlx6?n_LEsZp5VGhf(-WhJ z5>v-90{}n|q$zAR#1lT@QVe3(KR=njnnTDw<(Byludt>|N?gBcB7N5FfbE{sk}j(~ zNqR{EGFT^|xYbCv#=Mg(p{k2Wxdj5M{@uXM>6rctm2i*y2m>Z7NCljO1ou<%nP51e z#QZ)G@@0g~2^2nD76<`u@>hjHw6-_Nc7Dl|X|!W#;Ey46qG5FQU+u0M0s#t%N{8-A z*(Obb!27fQR3VGtI&Tx~%+xL@83)}0*X83sj3r^|k9u)8nLxk`i)&@9>mki+B+??J zPGLHA07Mw8jZj+wQ?U*b8kHdkt8B7r!i|S3{rdu!H(qQRD57I|^(?5|gye!Bm1lcv zniv^BE3jP4^gcH2j>>Wuo=XImbCZZ&5#CR@&7nctm7K)KtK6?HhN}i>DdS-iw1CXO zVQTYbB+nmjA|mzoA(YmBHi%Q!AnP272s(k+S32V}m}|ASz!?pFCR?lLrI0nOqP*|| zj8^2(AmJYh|9tWCzC6&A+VD4mP=?ET6kc{xzfKxkgaNZ;3``3%n`?nV&^yGZ8X6%YU`pzAcvk7K=$^Gw~W;h@SnN={baHG#m zWGD68AFL7ZD~+cO(zrs&?N*E#KzJf~quO9GMSBBlNQi(h^-r{qauVSurlX3+A;rJB zN=z0lh0MuAk2OfdC34@;tAmUHZAa@p7?1fgIPtH7_`-s0ETpXQpqgGcD)^Bw z5P+^P4uKr5e9ztKs4Z=dU@#Q8oH|Jy@@t)hT@&uK7_+k-+}~7PInLVG*J%*+01?w) z7hj_8>|Mh{1`oNRbsQvuOO8p;=jV3xx(&Ol4N=P;Q(yZ8AM-R9aN9v#TfY%iu)}ku z=Ymz^%AKv1+N6GgFG=O3$hDB?^_XH^IPjv?Rn`~FP*b5q@>q=dGVO#_RM)(=32pu5 z{hBJf6T;$@OqI7+{(85RtGl_&8lahj8+F96u!muthUE+&f#3BZ@9hQ4irBbenwcy9@h5&;rD@ue4 zgf!o1QDZH%rS_nJPyE*1m7qjZGGibOukejrfyi&z}DK+%oZpM(r@oKvYVMZ&lJOmlf~dmgw9q%D@=& z=sAV=|NDT?6E8DL$NU4{IAtU9E*fDeE@~Sp#}}Mqba-3cjBfR=`y6GWjJbOa9S+P4 zocM^5%1`INgH3}ccK-FCs=JhIK?Mwl#MrPtAvturnFx^w*9YYl?OvA&hO$8&;X^9D zcuz%WWgx7vh7Ufs{LULz)Y&CMvS`~39rH`!Y5!5ydNW zBN~CWoEEt(8y+_5jMNdPa<@?|(o91G2u%_HLZuzPP=mLmuO;ze=+u)t?C0Fj zQl-vo#)mNMh2PJBj(K;wDH$^v&Ey~7P{qrSweM`U)mwGQT!8D z4m?fI$DsNNduYaEdfm#Tw?5!k{e*35q!Fml3D2~_|7piijurN$e#X6 zE}j!RMK6ds8J0F|CGNxeqwwVr-b;Ljkfi1F;pwT4 zyC;n2zk?yzTpyOCET{M^zI0Z!(W(jw%j!TkBH84pl{0VGW5`>Hk#Lt1`q7^nHnzY!y%8dr{JQ1^`0>{7e1y+$<) z4rvKl1O^v^uhZ)SgT0>eKM`9)f^0*E==AIbzZtrqij>I~z0;dr19iU~G-Gebs%Z&f zl9!^MUaV=p#H{#7bh#42p4d_|a}@xxPjvj)14CU=mImhTAOc@y#Vr^Y%x%Ck_fj-0{dofM^-F7DiXT2=0>$(KLfxTchYI-|8yb^s15bJITi zuv3MSd<(|j<~Qo1q^;5+L4X>8-D~?O|1PQW=D~0Pz>pBCs6cM-4c9^4nfvdl%HCEe zFH!(SR4=bHbc%oBULQbZ1m=WbQE5y~E;0vPQU>f5so@!;O(lN$GyQCqG6kVN9YZW0 zC_O*IFg>N($NLgVSd{B8-?06uXE| zbm!xO-}MUWP?1s9GqcelI8}onKYK^muJuQAL}x`0v?_Y&f~JY^z;5$xST`GQI6rVs zypckjk3?-sx%!pcWzLo=KOXQtJK`U$UnIKt70G7o!ckB+AVY0tF)k#*^X4?LCiHE| zX{^{G;r3|Bs35f62fc{HdQE&1pz{USs(-f|e~X_J_sKmsunGN1o-IrjT%gnQE4)1s z3#zfg3+G3odLMRnJN2-yf}{o9KpgQx-wA&?y1EQE^eux<5`IE;1BxH=SDL4vqez-K zGq(8=j{w@Sw-Fy(4>Bv8RO{Y^T2BA0@ ztq&eNrTIC#@^?S_4%r0B@ZKP7uQ9x2nK5+iLvz_~U@*ab(L@QnXx|RkM31%Co9-w1>oE~AMLiYF>ZNI?qpkO^d z?jNShqFOwQl7PvOUfW?zeV~je7%|C!AmT@cS?Wt*qWL*%q#hW(b%lYE6<~>QI z3<`RB`6=X=gk`aDbiQpArdf4!OmpRaRA?XWvwM4DmU&}l$z#DPl>4qzv_8}0J~ z5H^bir^@bWhX9zsszpZnCP7VH&{PB-8s**o5VTGzBIR@l zN;Ac$MPmD5!Yt>LCIR)ij$>AX{9`f9`0dIdc7tK>ivn^e^D;ME>G%%EnWqH|!8l!B zw>R_VZ;gmZ0W04tm&xBm2;7@=RNB&`jxN4PF;#XWqBHzCfXK09>mjBeuvtL3(RO{E zPwWss(*)bt8P@j@t8pli%Wt8JiPg+v1#~$&)TqdWzda$-z zhPHWj&L>4S#dU|_P#`mpRO3j8vS^?abOA6}hn4BB2s!jSC)~qWG$?~<8gGY5J&o&_ z9y_#449h;YYN!NTi?|l01aw>BN2XOneqVBe^IY(_|I3APFfK+1vHT@SkC$y0)#v!4 z8^+O+#&hOiC2|9RnJTvD2&yc=phlZ&1DV$CRk;{KEA0v@lE{$WNj)9a3kZ*=FoKmj zyq?3c>rJPyb}{VVMQm(|?+gpT_TY9RaK8#qz6t&vkMCeSWYbNLV8X0Gchho|lT z9TN7OohDM^b2l24V=ym0ERcqwJZ;|Sqr8W!i)H3bf{bJ<$p!L?b^*(mQq3t)ODNgH zH4!W$FPdr}5@H3|aneEU1~A638RrcNFi|JTl*pE)?1M;HW?EgV=HA~3*DS9E|51gm zCE`ShmN_v+Xgo}!_(AffndI<`rejCSAQmRRWMw!Pt1GR%i7qXVo%@}u^9AQ#l1~Rl zx6+8B$7?H8op7WA*y9@ae+|gt@{~RN%O@#P%d&B3fsFFaLS<7@;7S|YV1`J{Bef1r z7X{(IR5l!14rd6NkdIefx@OD$DV=_)F5T>z9tTCuu0(W;lLx_zqnvraZQ5nVD4MdA zMKFjN33*Vxh{c-(lB%HmfbuMt8u`hP-fs~WoFf;kPzdk>FsxU{sT2wnpxfvS4?f0(D`4t zqItmRth7Y$^_m_so*+(OJ2isgJ^UleTHmQa=DWn2@-HS$tYxuXb(68mj~;l29LRN<=L2)8nG zLijEM?`-Zd7@vO)1pRGC%15YdQh(_X)~yLCoRq1br@LC>Cy)jo`*>|-`D1QwwFK(0 z7g;zhj=d@fqA}G9a$l&jn8l@($vOfs&fqQIW~#zi>e=$92r+`@)U|#OIE4wkbfN@C zZ0hDih#@Zwed~V951N!V)cs zWHe7St3=}8@5SWk4x?FS$c!5T*C};0jt?LsZm`x`F>3r@v6M&8-)5`ll|nw;@ z$>%U0A>0+YY@jx=ah$3=?V}9$yxy}b`bs$-SrQ8*=+%xz79La(L*;FvO=elE{&1-hj%tIlX2i*BPCGEGQ(ZKlD z9TE*Qu$9{jVLIlGvRIbvju*dK5(z`6Sqh`^Y_2z6mQH3u3dh`wOepMm7r7R?1k1nb zk+9N~OMleZ<%#cwKtd75JJd8Y^;&Ghpre!sWj>LNL;U%|jp8P(T)&tNh*r^b|4x)* z3);nRGp{Qr5(q?H>}sIcTbbU)WciG>J3H?J=Zj^73~x7{RYFo=<=1o9_#7*(z_p5X zPV32U4a|P48yK+Pl%>9A>|>ZaCwxiiBF?1h5%s{CQTQ@UO;jRYpMBRko9(7c9^L$2 zLMFO3XKBM=W5z)4Ei>}|{epMz$;W>}4-1D&1rSxA)*jy%NjebkLZsX2wX8d#UH7G2 zaIz+^BrFPkqT8uL8WrLFDng8BZD29@cP}zouf_(R1?!myt4p;Bhk{> z->IpLtWRmc0^ijt6M7IlcK$p}F7JV4a^UXW_@$VU10MHD!S*abBrBCt^PhvxhYEz` zmIdf_xoWjWdkG-^UGZjdrMRF=ypF!*kGgK}H=!6s4YI64=8hLZOdMwXH1wPYe6(x zFNf(Rj}!s4nXu4VN(X5G?9~QN811)m+KmmSaHo*5G3)^JknpGf_-j88sRbR3cayTy zz^yFm7;jZj{wka(;ba zMBpyJZk`tQ+cfvynXY%LJNh?Q`KD5XyD!wj)_9l&++n+)I{t!hj>Y?Jx@b8|{de$?vrjwU-`iN?l zDyBL?y4El~rbNO9yqp6*OBEj9LrfV~6K4;6Z_VrcsVXxUV#dzCkUW0hCKvU15Ga(A zp-4v8cLZk&skOu&g>+HiSb=G->6X&jc`H=yW=sQ-T#f}Y`i%7l_>OxCHi25AmbiTF z;L}aYqSlBvB6ww*D#ukV6!93c4>=Edc<2PMxS;8`6xrkEgN-hF}A$hjG=*987q5DBs?` zyF(gx+qVK?p5Al7vm7dLa`zTpdk;nO#&CL((HCfH7#pcg$Rv?iSP$!w;I5wA)j^V}I}tus703E8I2GKMVNwHc zIg;HBEq{k;lOg<)>z+8bN|R`Q9H%9nzh?!cOJDJw)c7wb zq^&!=eVZ`x#4$m+--dgtygr7gB=R=yysQe2;fk=nUV|DwyFO-#1n<2X1bnEzrngGe zTcKc@+Ke2zj5zXUt!OL;7XoL>`jA_r^}})ErR?3%Y9sFcj%2$S7Xa)95;*qZJl;OQ zwHVFz=|E(?TsXSi8$b2b;3i#ShM`+TXM1)o49C;D<%T#k19=ONynt?Kx6ZKVH4z>R zJsdDY0}-3xgSOZg#(#idf;r%-?wR*82&(zE;bqh{t-GRzgS@BZ-u6KnrN-L$Q_X3r z;nxc^Eotpw>lRuEuY?5V4eBxe5@C=`T$f`asMR2tmP0#}Mfok=F$Us1B?b#09F3CP zR*_s|nYQRAZSJr)!&FM4#L6O*B5pc~&y!LJ^ib=NcNSlkM?>yc6m!W*@)ev(XAY<` zSM^dRU_pg-p*V^KHHYdi3q=Omrgy1qIoIHidbfp>C=&rCSWbbQ_m34pu=JId{^IG~ zepPKh)_n)?vAV(FgmaTb<~Z}1TQLS}OlWvH(F)FLLf`zKUv7B^pz zgs|!i5Rlac-qYO+6|iW`)PMI>mbA#Fey}Pw1@fM+Jr2fFy_QzOoD98?nP44 zOuCZ$A91nwRgxJ|+R6>^UPX+as;kfs;}2us3*%WGh?TGJZ(f31NUtPE4#1ss2CM?7 z-GA4ZutMW1^kKeM;%O+nvU(G^h^5`M*#yT#x>HzZNWMW4`wCeLQELkqffTQtwCv-B zRe`g@4=XB~Mp%8CTR%n=u&IGAC_Q<>Bu;T(KE2UT{+T2+NQ$y9;;!u)CC}7mnKoh) z&48?hA{05tOtD+da)LIYOWGeTD}R@$tUsifx{IoyyzzzkPwfEDkNXOHbqitsd|8b4 zlyQ?uRWtt?M#tt1%CvhozPwU_IGyZx~I9 z%nbYs<#1RY^gN)K)$Cc5Eu3H4Z-Gv0E;zA6C%o$K4Dt~V;$-T-^{6MeQryR3m_Z|0 z&p~%{#6eUfU{50px}!;mI>Dw5jfsPau)viw^9NaSC>sN9FB!vjFW;z;R%3wivvnSJk5I+ zrxH|ZfPmc@^or=-8y>B@3ar7pD`7tALf=;|Pz(Fkg7q{G!c>;rn(w1($?=(OqEf$D zEDWqO(c%l#EPNo4?spw&8QciPM9BbYfjvDX;T1dvzqejeUqvds-hTf|Fv zBVmBFx?PlqBB%qjQiZ#5mc>PH`;kb3v(BHxNb&;5*f9i?r2Pb-cff9#Q10w|2|%B z?+N~NilxSL*1R`CM=^urq+~;~{(AxQig5lf+!Q9+6;b_HUl|YYsR1gm=qe#6LBp7` z%a`SrscZS3szTI`tKiM`A=wTf>YevbBm#_AX9nXFK(>B7iYz&~#5PaOdQH_ry!5}< z^;1jtdL$9=^)hpoafoYF2UXcUcPpZxPr@suH0X(S@H~5K;CwunXJ%^ND$dv}f6HIk zagV1z)@Q{RjHFW=sk};U^1Eto(9%|FQHUzW6r}&~o9VHs3VUZM1)CS0fSM!boU)Uo z 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 z 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�M;{j#!mlk_8N&OGKy%zItCD5N(;3n78E`kO1vaSMF6dHW1gEq)Ij?56AIi<0_@ zqYOC{hUQfmf4YQwYl>Hg1Yl+RXkR{R100f97}a6Q_UF5yc%Ei??A4jACWQ>|_K4XO zOhQV*`gAn{7#p&O2@kw~cNVV5v>ml>s02(g!%I@QOW|%(vH(x>Jq#2Fs(PrNT{PD-*_+SSV-_! zmVuC_nH&qzZWmhXjyb3kn@4TC$rK@nj-rO%EKQV-T~wiighuax4z1*hZ1M8?W`}TP z@g6VyR%X^>QfhB^3NvT^DO2r4rgJG_90olYHaYJA&Ir=k>7q?nk2_DTYOF73<260< zr3Ib*jbL3ONWva*2i+){IQ9zIWbTbWcC?Kwz&VV{tqCcejg3|7yufib$eFNW>SQ#( zR{BXj{PDQy!5!LI`X+=Hypw9Y(ZLUEa$Q6HaFQR%2LtSl*lmqc1)+3dSM)f!e?aNXAa7Azd@`zqT6otrP(7GAa@P2$sm1tTQ9W zfav&_x`^5_%lwmU)o^v?3IjU}VuI7dbAU>Igfcpczy}ez`~a1bjQRKoSt0@AG{4wx z7Ek^3FyzerjF_)S);f8*rbBf%P$@MUHC_OeE2~|{$lX)~K33oc#^nb$39cRQGo{Fw ztKONwAB!l#dz>)4P=NwYXAmS55@ch)h%FRDA2rU|#~E5(79Im;Re79$g8Z?invXOi072tOK=H^^_T=XAP7vCGUcrL7ZaCxkqj)T5u3(qYni-=cVjqKL|>HKEJE z8mwOO*^85BeDh17K*}&6z;T5Q1&!i#hK+zYmLM=u#%~2MS3Vd|JW)Bv?5nicGJGt6lN= zKE)e?=`bJnEKn~OF1wj1t}ysBok-%U`CcEadHhwT+6*fCeTLXq$t?Y*#xjM7!mOwF z*3^toju&TQGN+S+AAk&w8RBq{=GIkV5k%{Lc%7v{2`jF~qG8(6PXTW*^XAty(fIr} zJR(C8ZwN05)j_06&yx1lE-c|+eP%@+2QUixv(3|pEnS-itPr76LkjFv_E4cmK~s#$ zR3ER2Q?guM@-uq!+|h-(BDwHC{i4-cicQjpV5QXH6+D8kNk}Cd!T92m@AW@$_~$^EQ+Vd)^tUGUUMi~wd@}l#8jO%(_{)MK|uMT!@doqA4d?S zxI?`E7zB(q_?mUoT8cTV_bB9?F!qUo->u5hv)B@;0si5CGs!GkijI2oaVC{~tfahg z0yfnjvT(rMuL5tVeu7MiMv9!bB!j0w7!Z)dz_14PY#V8^vzlwuP{AVxKBP)=yAf%b zVC}{j**0wQ!hz@d2!^KMXo|k44}yhAe&;M1eg;siwEFP()X7U~tvbq~%zgjZq8ie~ z>MWAX%}KO!rQaADeKlsn4nW$&7;n#?o|dg@FZCOx@KQUe!q>ztIdgbGTgqqqn(IfC z?0oYHuoF3nnW#NLjQzxCJY`9?h{#tPv8XqYC)~7h?!=m(KUemRNOk1RoAAggH$a*V zDy>AspCaf%bXTfi%4Z_3gH8YP+;pJv{1ycke{LJ;o?T(#hcNWZ)b}FP~MM4 zY?QZ#CtTkQK-&chD@MTnxjJ3v#`|ScHgEk$QWm!h@8k^d@2M8(UO9y*-}+au+O3hy zO?ya+eq4;H4BZ@&Q#<#+8FYbk?y5Ryx5yh?DUass1un4&X^AEje5kuLr%U!aCn>0l z5tW$tQ@DWvPk*R%N0P|xJ(LF_MkOJY7IPxF+6Ruw;Gt0KQQ%I$VC1S~`K(s*(0<17 zKR57y7Q$vPW^)8V$3HpZUM%2+Z*qob{q9ak+z7jZra}g!!XjoVrJ8E%FYuW?L6%mh zu2Zx64}wi?+vEfJ{ZA*6YjfZCsngI;#sU1PAwDGH>F(Q83r96x74)r_Ac=v2cttVu zz9h4AKA@mld%WcAR+0h~Sz!-Az342^dT7TbbREAT&t}gdWv{GOEHvvu5etiqfMXMN zl}`av{?p;sCe|86R^T&@t3HZ8Jzp?@TN8B^-kfeyf$>Dq+3J~{n>N_a1?3^Dqf_2k zm@+r@=;Q_yNfE+yK6Vmsh_`tK$X6?Kt-I+ew(ZsTI59#`yU_pj>r6583-0gfm$?zW zm|QT8c3rXFuon?l8>wx7!I~Ep4&<@xc)k_HV4_cQA1Cr{O{e(dGs_Y<`hPCOdx_%% zu_Lh`H)i}963D=DvQ%+VJBeh>vxJ~1E1uRTdgtG>)>YExE9WqPjm*z|cM;VM;TQqp zp@a$L_%3W!t{Da2B)4>GlNUK0Gg_^*fWu9n=j-I6dR#D7K)-Xts}vS5%6)3|T$Iiv zZb3|3s_>L{plj**#$+lFp3p56^GRfB1-w^k??U!3qjay}P8kCgn$*%Hu;2V6=qcK` z^X;UzRdhwqS6{$j#WXg%JveyrMfdo#vmeP6l`yxpS}uo^4^jKj@9R<8 z#FI0e;42&pIf^*hjM8|?O69R@txN}r&(iEYpYa`+FxZGu`=K=^6ZDQovBYC@j;rHP zt-=_h$+g=?du53N=+7Nqp-w}wD%@^iMQO6@fga?Kam|O|yz#pmj3$RlBy!97)fRZo zR(beQZjov`IsILm7=cI)!gcl=Ge<-dq}J-_E*}P&@ni#!STx_97QaL=whb%&FL}*( zacy9mA1vj~q73rA4sCQxTOSc7PKe{7QpRjFdXV3VC1B8@pC(vXeQzHs3Jedu&MWU7 zo*dp<#ZN!DY~OYk2fRtFV6g*6hSPn7dKh4DFgp|XG=yl zck0?1-aIL9Q3u6D_eM#=|30`GqWfO@+>F8vmVtEpri$-ep~hclS9>(P?=}O(b_#>nYW$)PQbhSZ;;jW!OcntYdJkGHj3FFJ0=riy!O)_>RVc$jF|xdE!c3BB$)`+a}cWfICl? z6@F$Vz&rNCCk2QL+6^I6D4}a3q(Hm1v6=_2ofSe0luV_J?m9@pkk73ZRSouaAWx_h zAImVFJ8%E+eXu#Z2@|Wp`y-h$XSHN^L#t6rd})>wlAlTr)?cfKO)6(%h2)^ji3PHG zDQ-7Nx~Sp<&xs?x4)`nQh28K)E=y_tvsXCat)oC@E{7MqYt_Jn8p`2B>)(OilW{#m zr_DA!Sj4(5(dverOGH)Lh zazxW*rlGqR(*w_@L8?r~r`rvFFCWrWzY`Az}5_~13D9xtGw!0AcuKO-Ieu3y9v zyY(x(YjvQ$kU~n0(p42tu6dFO9f65{FrnUh?(fL#R5{+3q|ujQ3Ege*GG9>TbJp&c z$f~=gY?J6KUj6KkqdNFtKv7N|Kk`8lqoh(D3*`q1rWcg zA4^&u7X?$1e_FK_I2gFeI)%azxptH)(ifXNr^M9D=V(n{|<4f0=-SUc={NhIf)7C7k7h|*&yj8|)sm6MEmpg|GsGm3c#xB485 zYM65(t3eD$KRF@~8~b+WZ`&C9D>wtjnplLzSDGFQ<$!f;?_O5!KgK#K)qLgnUrW%y z?&6=IdPo*i{CM8QEX+mRPPd3#AzWz`Lr&0#XTPpy?4KAe|GT58;LB-c`j)CrdQ)c` zwux;}PZ|azpUvT>#o=|rJ-Up|>1xCI!}sh=O)1M`rS=1P@x5;{8t!i~r1668T9+v~ z+jE|Gp3>F*6vH1g21_$DQd@+_!K!qs94d+NgRzLNt-q#m5R-_NLroaD}MT$`$D_GeU zxnyyU-$&>@$p7r!<>ru|c7@45(+)(?%PBR7l`=h#u0RB>JwXRoF)A+VO|I!&G^q(%4S54m-I;R z$!RBK&}@Hfy=kuO zGu>!W{Rk0N{`;XNy64=VaIij|(Brx)%T>uF_J~__C=9B{5mCJ_6(c|eq;I*ZDhF%g z)8I>Pgo;q!KcyGl*AVNTJR%$6Rs4sp#}$wV^5k>k>oZtq4?rG@4q3Ti8O#Dy=Kh zKm3zDmRs^m$BqMA&3x_HrQT5P6O!=EFo4scn1}qmaSc(v-02&PrOKE1c1(H>7{cdQ zWRt>v@n=j*;y_e&W^7YTx}3~t21pg&q-iPsP&we??K$dRE?JZ;VSJ#RYlkm}_;-+3 zcpl*QJo9^H$e`AXnoPiHlSD<|D)Oyc_fL_>BQ;*>9oMMQw!-PsM1Q7W?e5~maNfw( z$8&PbSse-L*Ep4*j}QS@9H`^&zX6ZrcG$y64?bMB@c6LsC)$i5{V_E2eE>>3`XBEF zt_LLzjAiL0(XF4{6lmRZ_I@OqS3-rgr^S&BtZOd*iy$U}XLUuT$GnUOQ*;;ueV_l$ z#aLhA$_rtcp(NGhWYfcx+2xWI}ipS3f_)mX{&AnZNE)2j!`>waIpAw}@I z1Sd+;T&yEwBQ>Izn?_~GNdQ_MC8>ewBY>WM#v7AcK%q9KK%oOJsQEc;dk8ZCpeV1> z{R6A7_Ugu^GKVai;Mk~nv#_{N^R}x2wcP-5e2o9B?7{b-fI~Ry?ioTQa;K>NSrO{( z?N@)ItkAHciLkz}vF{W9cPL({@er73p7OHEE-%(a%7o&?(L10b`Sp1O!ko%3rCF|E`)w7uedsD#c6>DyH@bceC>EEhA{_S9>eZWh z8PH%{E#ij&BpV#_HUnTHQ1xu~_@F)+qaL3;;caEF(}CN3BRJxy4c7H03=)g* zDZ{R56Dx7v;?>VPdCqRo#Mgag!QiG0g!6>^QZIAOgkSu0j_0asDaTvs<{XdYY>tjD z0;c3#figZgW!7_qu8j}cp}T11R@0n%0yZrZ6&kPEP}|h~x~oX@I##V?M7_30Q0hPd zUh_+#$qx;MFG$2|md%s1lv`q&w%i@274GNsqfQW|iB(tSLp@Tj&@(1dMA(u4be8N) zBe_Qnn*l~HFl3^{7nu$9!!Je-qCR?}Wn|pa4Z0~gEcW$;Xe8aq4xQ{YOi*$7Dv-j9 z!I|^|j*{jyEbvbggTv0b>q^1=oP8w!N$xLOfYS#+?9irgj;TgsoZztGpZV`gP4oI3 zAC{?m51cYN33IeaD(yUjN};;3xlQ0Ac`L%A)~={XjEsLS>txyF8^coSnp%N+)uCz9 zs9fOD>tbGvhwTZD=;N=e9mf=(tjj@gI@X;O=`oOz?}a~k94u+H1Mb`gA%k_PMv_k~ z?3mlYC8hOpn&(GJUOQ;|xm!TaHASbX==Vn9x`jjdY3QOJ?B*Tf3kht)_Hgf}$hW;a z&lKZpHKoWgNc_65G1HEN{%$wXPL0?nGtD&M|8`>EmK7K8lemHRrSw;XgQCpK1Rk1+ zAv(#3$IXwWjMuR>_+3<}H*^V*G7)q8(>HE@=}A0FK#$>>Hag1cRD?u^z`J*9Kn~gF zVB;*TVk-waJ4a}Z_Hh&!FrO%nTMBrQq8^8y%WAB|Ide`HVkilzvDcWZh3f4|U|0$7_w^>(*cp?1k&O2Moyu zcjsv*ciyNJj9_kDQTNr;t0vdX{KsDWAK5C3LFa!{N7OnQ#cTW zvB`1iJL*&H!trJ!1k67X;#Ua6I;LnGy>O=Al#Sl`Kc~c#C4cKJ*Ppd2*)0uN1zbx% z!Gat<>GIWl5(i@8({ARDn)Q87IB3bkRw>DmcYtb-yxq(MxDK%-&Cp!jJw3Wm8lc>A z(5|RaSb=k^RPG!ZT8r-G5Aw4eSDv-`F{}#Q4mvDAO>)9FZ%xG2$;a-A@_8UtHp*rf z0rD|wC9zGPs}+E=*o&Z$Y3Bp2mo`?5nnLO_1Qh__$lFjD!^-5WE|B(_&D|Uw4Jg3f ziqT-wt`cTlXn{p!nSl5g?7%6Tu@e?Hbos>Qj3lg={7$;9m zRv}bC>a!mQvLYBh4Mdv)+8>di%^Y>4j(qi=t;CV(r-Zj87YL1HuFdT9x>jCQKYTcB znGwTZujfu}N67DsF*Tr$O$i0So(YK>d|A?PAP#G5fwTxSR|zmyf1n{_*w$jeWRSV9 zn{)9E?{mD^;!vUI_umt|7mYa>LiNgOECZb1hR(?mujg(uZm#!R0UCC2RKJm^9II2e27cZ5}I4DLn zWI-~7&WD>$-AULbJ_7XNqB~V`z$X4JY|!`eqH2n_sl#QA!-$Ef*3xM}wqSZ}T*B(k zLGiSKIwHgHBo&Rf`O{!Ji*18~BQV~pSSMisT@TG_)U>0_o zq^7Dj#?)}FT0{^zlf(l_iZmbl&cvl$?J;nMh@PHkG>=KD`7DBzq}N)avHzYu2>3<( zm@AkK+}TIvU7mDvP`t;7_4&~cVi#`7R7|eE7O+kAt8-p$d}#L(#NOPG{Z-uP=ZpyG z2lt$!TpZwUS&+Ond4Z^5{m}}^SgNEn!%{`k2_!z6Qb&0d!%^pbtmaxiNY6@~;!|`AiP*Wl&I*g< z&>2ypAzkRG{qi$`eSfB1XdU#3kQ|RESRy#u`p860;-}J)p?5w_ralXg zQ{ArJ3%#*W`pun#)YX(qJh=&;gXCOxs30G{2R1p5Gt>`PkxseQwb+Z#j|Qa=N=mRd z2zxFC!H~{z({K&u3PCaNwDuDxl2Utb*k~MU_n~W%6g$ z{m_?eDK=kPkSy*splP4iAwZR|?c9y)`#ur+R=s{2eUvW^B?H?(N3)O5G_q!}>FtD3nmvtYqRG@ippMu~U1(N1tWa~JnKJfs_O&V?; z?ep5<@eeLc?|*I2hp?!vRbW#~_)M+kK2uFr1WD(Q0wI!#Nevw+ub2FavUx#H8rC(# zSdtc?GP#~M7yIPd<5uJE)oUv5Gl-Gv)AMtUIt_odEl>jUdSGPj#Q`WQLhcX2^S#dJ zXnUZ`3%lnA#(#WPeMeHa2vxZV{EZgxCdxwWCqZlzCA*@1c>--!`J|q+AeZY}u|F#A zfnj$FVX|=o@*_rGq=f^W*X%#W@OuI@&Q}Zz!6F;40p9GgorD7Sniz;Q zb@LB#5G#|DJX_9F`~MTESx<5leifacBDdl|RH_a7D(M5mpfyB7bhzdw5eG1{&E&&@ zN*JNjaiB@ACj}u*Xbl4VXqIj$vC8uz$IFuk3#fiVyZ%==ARcvcfB-kQ)?iKry_hIo zDVl)p<^)Udf=4xte8-zC*6Y3vto0})h!fAS_GdhDQ%G}ihKfhnWz|)gQGC9s#7b`U ztR1EO#p90skzmg-m=aH=e$AB8yc8gV8&y07Q>_MMebd_dG z&)?}u#uJY*eJhrZdTsy9Ca2h%#N*^Hi{@^akW))~AlpTCZ+&O0dTXpRG`kmQ9ZuT$ z=W}q+`o1d z{oo?P6g%dvEbz8?yRJ}Zk)AP0MkUj&wp+yp5#5!g(G?l5aun03=2wvv8usW4646mq z*|6qMc$J+8wz^#Jn*K`?^U;W)%xQI50q9g>yo9>~2fanu17*T#m~A}K7!3_-qs!5a zdZgEdsb%Oil7p2|7yz#7ya(!z{`JZ=o~ODCzT}_GTlB zRythk8AcKr!d9S5^yMa%sPFNK_*pg{R4`>@fc-J}v9M z)0g4YGw_(%QF)zN=t4G;J_q~U#sUHl%|Qeki65rX4P>r^mO1j@Bj#`#jVU&83?R&SD3G*}=G$yUmon{uhgBNF%mSwE6&z4jIL*&=JxXxJ?<|A%T0O=W$t8x*z0c_490(nzXN&@YA9yTi%Dd0(Ev)l zvXy1nlAQ0ustW><@^kCW(~liZHW35f?!P#(fADKh-=#hVQvK7xc3DtCQcG1p?rgKN zn)g?MHO(<{4E)PJq5u;U^dmzAfE0VrlLFIB7zIYCbIKTvYbvRNE$~kLjmOsZ%Qk=V z4_e8n3zZNjD?wUowlJ6$N_jiHf-@p&$iD@`a?B52Fan028@Hr_Gu^KArZIu1-m1za zPNF1x-!Gl`mS4XPN}4um{k3xI4CWE--KF1Z$joCb`@j@U;ozTEh^3pI8TLvlFl$HA zafW+!R1>$-)(JX48EtV2S}s$q0Yj=bckXlxW5h6c+-TJ5?aZyqOGjwCS8KWv(}dFY zbg)hjy}`Q|Z(C+SGoA8F6^DylZmuq%)BE+UCZeZL!CKUuGpXJ(AVveOrI)i+0UBan zh@0Q+kulWhS#UF(qN^PELxvP_FA9`TAWgchLm>H%!qk+~f961W;Z}xQfa)XihcNqS zsXIL)iarN;^_Y=#mD!I(Df<(ABA6V8fP-QoHQsM%$PS*m>Lbyn{Gj}8I3RV^@$*O6 z^-3HJ|3r35|Ni8`Hu1K%qW4&yZZ@Quy5Jmz0NvR)*snAc@88Z~F!po)OGpG>MB9R` zoV}lt)+W#z255A1oI3OCW$#8`sZ=aktgI0OvE+-PYEzc#NHG}Szn5mZK=F}aU_T%X zagwS5N)MKiZmEAmhFAH?a)pE`+A_K3D!Cs4L6Grz_3Cv9k4#C>`fOMF%H=GJgJ{cc zp~|>(?JPyU*l|l&majYMEYVoR4ym3%|A;(D%OO47V$6J1nFuuE)7-m^7R#(9S47ct zCo3LH5pXg)Qv zcNr6I$-o4!UXV8!I;kRejW!LY+2>Ojvx|8f`J#yvOOO`%Hyf7s1pTYKs&lm@B)lFO z1_E!c6HECb^?-{U_3d;TT?-R-TpOscl%}tY_rz#$_U2U}UAIn)b$RlOZR?+B(|hWA zQz>%iQrfUe)u}5!g~smYiHJyVsiwY2_Gu^EU|wF37aW`*@6SC2uypZQ9qM$j+7>c& zY2fzn#$q1Lm}a*JcmRc=r$d?nAX2R`_N(T!M6v_{GmepTZrMA7SmQuN8G4p|V~tJB z`#AsMYC~cV3C8+ku!o3KK^?s=W_)4D3g3464G6~+>%A5F&{mRV@?zpyP8#V5lUog) zO1VV7d{BgeOY*?#9b(&UVkyTQG~xKb02bEi#bTeqIKbH$^s&i|L4hfWVB@=3X+uP# zIFm8&Pdjy@{ulENe|br1pae{5E?l12sT=lPOKDC++NYlBKb{4R>;zs5v7zN1ob%r1 z0R=a+l?|PLMlMRt6|*s!ARQ(?F_pk+e$y*ZOQuQ3BUbY$hV%4GeIc1TK17?SRV#gX8jwOudAiLHho%! zXO_kECgk?iZv|#wa5ywr@J!5bqfVE-B^KGM<-h?7QLB{1rHvZ!x;{XwS8hY}~ZF;yQ|b z6Fsrip0xP#f%J)3+53$;j!kj&ysJ?Vq&?B$(Dr(x`+R6V{IM@XZn-5h{{4< zuMDn*^Z|!3Gob=GLAV7f)@NP?nV`p-B%K{eILT1=Fwt{XRZA;nc6Z59sU?pWvl=Rd zmZ2?Fw9XKJq@m@yF2L}R;Yk8_zI7BL0n6J>?Mt$>6RnI!!n7BZvGxh7w_ggp68*Bpb*=o1N?B|v2=QZ>_-$wUQ zo1;1gT|FOJuSq7i^Xa5xZP}r|n@Wulha2eRhS843kOZTdu9*WAW!W0o(5oH?u{4aQ z<5oGb-m+@59QsIu;45X6q+jt4rCY<>G6lMY?A!^g^tHswJq6+3yr}d`EZS`2O z^fni|sqw;O@1Iyg4}QyKZ(yMsg1+iVHx)Cs85WWNBJMk7mBT?u=u12_+H*4kcG)<4 zpPg8H zg{s~f&bTjwBmf27F{h0VZ+~FoYJaF<$ASl3qh3M4&=wJIQbq?%yx%k#m%oHY@IRD} zyM9l{dA4+%x`pB(&P+GR{N+Yl3@i7#K)urhE{-|GBP;VNIrGV>iOhqTmvs}cc(bZQ zzHlzcX*I*hqi9~A=$n+CmSdy`2`O4utqxVJJ)E@J&W8p_+whKom ziBM;CJ^bzXIs?7zx;v!wcaQa@39*FZ#g_~lfJJ77)v!$`Kd@vW)a~1gX;lvXwZAm3 zVBD7(a|e66>^a7<>k}egCSW{f_F4{to$ti_!8? z9;_Ht_;*s=TYAt5c99l0QPz_2jJ4MwSf)i8cSI`BT;dfU)xMYVY;`ZfJyMNPBV?Ku zG12I0j#qdba02MXA_U00%Lzr6>y=Wflbfs*rft9lB^KxHg9v}QP?B1p|At_ajVF#~|;e*HY>v@ zoEUneOXIEEbZ*&P=I)>%Z}hiAnU9vm1u(lKU#A#)^|(S6Q-6Y{fZ^)F_5P(lW;%oP zuQazQizDT?=MMOF!6rS2=7bfWlh-%0a1t5C^J>$?W^~>J$6b>`+$Np z2Mv2LU2@mhAahSI%5m!=*^!g|1{Dxtx=(9+>f838XtszVHt(N=i-Z5h>aUjKzm_`5 z-5WF_Q9y46k)(AA+c|WETT7O4>5)(T#$#oKZswWKB)@BWNAzFj1EgYdl3t`AUx=-_ z96~*{6-dyTdbBNyRq^{J2P9KGc>EkPjGsLkIRfxd!4WcTgl`fRNR%W9!l;QqW2vvg x&5fu#r*^H?EgX9=^9AJiXqDIeyk5LX;^3ju+-^>0M31tX4mm$Y3yI\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510064001-Diff-Config.rsc b/MikroMaster/history/20260510/20260510064001-Diff-Config.rsc new file mode 100644 index 0000000..646e2cf --- /dev/null +++ b/MikroMaster/history/20260510/20260510064001-Diff-Config.rsc @@ -0,0 +1,20 @@ +4295d4294 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4299c4298 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300a4300 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4302d4301 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4303a4303 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307d4306 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4308a4308 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0