From 98b502ece8b0c01b5a1a2371bdfc0ba1e528d8a9 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 05:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 05:00:19. --- .../20260512/20260512050002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512050002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512050002-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260512/20260512050002-Binary.backup create mode 100644 MikroMaster/20260512/20260512050002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512050002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512050002-Binary.backup b/MikroMaster/20260512/20260512050002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5b4355e7ef97a4db863742a65a5243fa375b6e5c GIT binary patch literal 302647 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 z zflUeeW6}b{3U2Z;d48D_#yLC|F$CZP%F@_c!C134^8-IZ)AYc)6SKn9p~?U^m`voY z4w3AEAq|`;{!z25}FH@GqDTsmi-AvZMM_8tNz&h6E zs-G8wHp zqEO9>=Lg)^@=Qn;^bFVH+B5W4O#%LZS*R9F(8&5yjiFqKk(jxh^WrEC>x&T4J)r`0 z9+yA=SCfu>rhr*CIQwQ5RD&e9hya-S=m`885b^Pmak>&!4v(E##e>lpQ2*=Uxq;79 z{Dzpr`2(-79MlX>g|vp_Z+uoIq}{9WiTsR)qKilj#LEk|cJGzH{it)D5P7p>Z}cs0 zmoDdg_(Ga><}LNKmKNXl|J+RjZ%AiE%PvXyK|;HeCL)~d)@k^wQI7;48wiidVV8hC zP&l%{L|qBq=c`iekhr>=F&41P?qcPB{DsS`h*XPW&j$E5kDiZK?j8bayZ%r`=y<#92g`4xw)2DHW=8*P*>4aO~CNvUJQM94TpW3P0u zEiDTCjcE#7mo=zQiy}aBy=EFj69*FEy%_Hb9v(x8JVP6x>Uc_@#$Af(B(s;B^fKI; zSB^G}Qpz6cEvc6)j%3pb?-0+PBZ=x{gJW#lMo-53HQt~x+mEGZ%kv1?bwHEY4>9H* zen6tKiJQ5(+KtGX^!nwEiZ=GMvWP~%_7(Ovo+tBv7k;cA42mTV$5Y}JUEU+E$(d{OhEgPkKu++`z&Tx13>s28scoy?4w3tMbW2R?#n

QWKp#Av}g0#y*M=Ry@29d|7q^3Ki0*1 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�+Mc-v~954pR-m(k#S% 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

u?5SCT`lOXj02&L&th6zkX zrX&E&B0JaCpby6fo?DxO^sQ{8o9j@idfOvo79dO1^i_l6MOH>m_Y(vcAk~@DUq@ob zu|HIl8k;>_+oda-aRoW=F%Je8HS1j6*q5%_<>UzT>7CAgw90q9so=)}wNYLX&acv& z(o?76%>UB~dxH#%69_j1J}L_@#XrsoOu>w@{SBj#a!y{`fRIGNTFlC^1n?6GbYk~) z5xxDQuQiXLSqMm~Xkx3+XuWh8@eUlWkvehd?Cw9^=T6T%z?H_=PwUg!*GB0934B=u zHhT{-EQCI#+diZT^DkNRs++#aJHOG%)~wD%8cX%L1ZW$DCpLOm!$1OKC3|Ej&q(qt zWbA%(n9k_Tfcb`i|5sx=Lk(#TT(?lW=it`Gk_0_Hd#-S?4;kuS!UmXXF+&HspU}72 zO}tZWM~HgUgPblcvzQ3OZ;X94#gWxdKaNA!!Yp&_TFpc937TF-O`{KojRwl|W0L1Q zMF|=jRWj+Pv@_a_XjEHd^ClyJuEHFQ5u-ut4AQeJ$Qm%j3%eFm;(&TmBT0SXHXe_YM%k%E?H z;vJJ8j_oFvz_@I;oJm|UluS(krTSf7Eq`iGIEzveu>3{7N}rt8+4y^}$b$P;7yoxs zib7v?6F>i*st*$NKMbsV#=NAN3C)+0jmD=(0+V)Ec8NR{G7Sfew9P88E8=isx6M4t4bE_$24rYd=? z!V_%m!zX3B$oX%R$q8lVn2i`KQkH!*VR6m*q;)|FmnNuz4cpNF&%W$7kpJm^Yit4k z>-?F95N>EKDpKu5o+g^Ha*8QjtyV{z%ixL$D`}ed+^DVY`9K%b4zP_{OQT}0ZBbsg zcng%9XPW}LNfi8u354o-zH z^BXU6M7xHjp_;D_^l*F*<0`900S?iwM`pI@jonl$E298z3-==_m2@VpxA}RE${66C z8yp%_Rhm?#XnF4u-+#AiuJKto6WxU^K#@dB9Uj9_E8HXs@T7C+a%(i|?=MY(>5 ze_a2-{gUk^3AxF4fNt=(PyqcYm?EXSDE2%q0)4f;E^uS@gzECy!=ljWvdF38b<(o$ zsYeY9*r0Bs;1qnx5MmT{dP{p#ZBwxDT3V}VeSP}74NuO=z^zt8dl%XnwqS7!Kd6p?)#Img2CIvNur!!>vjQG`tNqWGw^~$d(IOGxIzJ08H(F=^h`Q}4GdH* zK~9B&1u?X$no0AR3e`7%v}yKUQTu-mz~gK8BPr$Gd)F)-`tPm{G?WHQ~%JL#G3URNdFcEu;YQV&xL93(J>^mpv#Er zAMEQzz3}2?2Cu`nWOlb(_@t?5U`mfzhmKbv_bB$6SJZ{6S2 z>tlIn1vvi!kkla`cz)_*jmh$2E8x6nLWFKwG>0qWe=u%=cs_|3kg2jOHD^Kh6*-?V z#9jm^88%%q)j>x{hT78z(JruL2HK(*#B$mKl#IA2YqfgcZlRPIz@^QJP<^r8$7z~i z1uI;L3Gde?53NC)P9Cq)Rg+7@Z*%K?-5}r)OY71{GPKfyNP5>*JS~t4-V;B6lsRN@ zR~;c!Q*#x#5w5)U*Zr&OI|_4TJLBbqCf8w!XIeZ$ixgg-!)lh|r6MtX2A$LIem?>c zVQ&b&O^*>r1sQRUs=;y`G8=0xwx0@u*FGG-X)~PDdp;cRP^v$mT)1lHpMu$ctXC?~ zFf7GW_z?p`sR~ZYZwKKQ6N82R!S461ak7f4m5)P4c(6il#3NG%?O%FOKUpEw-R3ud zpsWex9vk(Hn7k-#E3axr3y%2g{WTTf#EX=I%35>cCy6c~Ky>ZrOKUBnG#J`Qg6`(s zlYhr6#vQCfBYW_ zu^|tmO*92D?Ho|#12KFuyatI1252MX@bFnCleJ$W1!#Fb0ZLz|wjHnouRqGKQa){- zDDr@}(-$b@1ffIZF(4DrS+jwNP6h5Lu1_y*>QHgi=Vjkp!OO;(-Dey391 z?bZG0B5_orKh63-s?fx_VXNXU`+-h4$teC1;|W4MqNjP!M+I6GjFH{)p}USDm(>t$ zT3F!E7+=|W_d!q;s+r@eq?**80cclx8jsv@A1Mu+8dG+-1g|+TdOC`1(*hdQ(~{E5 z9QCY^Yp8g9Am`11kj=@djRJy&IV`N%l|t`A$gZyS;#W0iKPs8T!@dFqf7Hk89HenYY$WjNXgsy{?!oMX|)J^M? zU47C3_Tf}U~H|ztS8XkU(h}AE8(TWTzd)Y2lVwZ%1R$^}z+NB2n__ zx~5#5jc?Gx2mO=dd^3HQ*GU=dk=NU(j@*NU@}308rcY0$DR z#;*0A(()lLoDb^MkkScF^l=@PB@!u#S0$i4?cIS&B0q{3?$k5_DYN(Z@v^Xg2iu;N zx-62<(zmyb*IMd!sz*aao_3`b?DlRUIrQ%bKxOV=#@g$pe_?j(+rJXb6plZnPwCnC zmuh75aE8p%q@SD0!`s9K`-L15>j6oB|3%Uihqi^S3bN-~-IcU_o@eQ>)Jvhr8 z?D_vD%?`OxJ!Z#CZ&rBq(M4`6?2$Z`Zmi64A$bqjO`+1v&xg_wJ0t!V!fbR`5P|X1-q>3)X6V z32{akVgn)eKEJRdBk(bNt>KHAxxq^IBn_qap`Gj;w%Wk5R7$H!#z7w~#O%T7DvmXP zq6Y4*{~lHF*Bz=n4DPkMI}yW7`iWjSU9dW#3z*iKh|zAHQTBVD*vQ8O2@%PPi9o4j z2Jwb!u3alFFDel{LP--sm^?v}GRy5#(cbGap1pO*UHe@@1C!H>{~&9@H7+(fmHhH} zoLT*q^CHiQ%(mZHCf99;9z6SS-pO(MmcbZ4fYwu5FT#I7*=&FS_<)0j4-PSR(UQrV zrUfwhJL;B{SqHv}n!=d@(sPpnYVb~phF|!@?P~d%-byr%u#=s*jU&d3q20*xTw3_Q zaW%)do7zQIHSYfx*=$`X>M*Y)$PYeLp*wekQ3HAk%++&RAz)5sS*1U+zkIxIBaX+B z0GHFnF~P>!)CY4t=o=Z22YokJKhKY$3#k%SR;HHgz8JBBh@}(#c1!dIPhkgZWXYU4 zdC0w+9zfPZa_wAzS%YcisW4J0tUZ+LtP=NKX*UEpw3T60PXzn@`*&nCB$osowixNB z5E*Hu^f{|V8Wp^omjj(e6Zqxw@^^{wL_5Y z6<4m(BNU-0t_W6Gbw=^fOqATnHX9(-@I!%_i}?71h-%JATGmgv;Pc!(v8;$;@j zbhjDm1jY7{9>gpq5#tj@(N7l14>sh%!J8~x4|-Tl6GlUCsuR-29UnT7`s386*)O+h zzjOX1%AvX_=^(T==!0`B-k2^Cs~OL8PzIIv*9OcfCbAWSgl1)y`|@W?-S)hS?0s3J z4rHQhFJBsi6g!Sg4g?4lJH)ntWHuu&iJ;Fl+Y{!XtvQwpSr5=^pkT0tBjU_+m*8Z8<728bzUbEP zavw7RAse>>+sAszs`V@ux4z~(fee@g+N%tGmx~j0plQ)|iolSPw_>h>yV&6@pO0W0 zubDe%-lnA6oN0nY;r5c;y*52Cn>Mphp?ndALul4uWmmpDwV$lGvHx@nNEU2gCF;V3lFqxn-Qtt>s5^|sQhcb>vWfL%(@kLt zFu@Ymu$C!i6v&bGGY{)fH-r;9F`3oK@BrhIf!l{WE|yk90@R)DgR_BtJpjiP0PQc& zk@G4ZhBwE0#pwYdEG}(^`Xf2#_Ab}HAPFPdV{P44?ZGZi%rQLG#7>3uxs}lpSXq8Q z4(M2{X7FWiprtuU@G!K;DQ-ZJl^IilcPOAR4*J0NBPy=M_$}0LSKPbcw7q!?x`3ur zPuf>Akf342LAQ*?+q-up0lT9}Emo&{Mge@4IWks|)a~H$wk(4%C~AA+@@5yJ7rjvR z;?x{`u0YFqKROrr(D58Z+;@;gJj=joGJ-T>G=KAD>NMIH57&bZ28dG^o{H|VRv=_2 z(wK)2KGGO^aEe_vkc(GbOXiN80THzznb33;!QPcT`Jns^&(}&NWMI#em)K~-(w$6y zqW0;0XM!_)OsI01)Ap2F{{06#zu#K z1sw}yCPmGHYS|#ROEqsU)j-{^88G?n)~S)caKRN6$0qE>n>Ea;1>~Jjb{+~NyGV)m zn7amltt>o-$AjaD8X8A#$qz&HlmWUCo=x&?RD2n1=S{I3MdB!-`?q~x0ebtB0niIznj`mo;v<{hLaY~gR;7DK9jbe`w4er^g&BZ8TM2{+6fPk` zwdD)q*WP(!WMcwM8}dABl09sIgChH=xU$QC-aeh*FZ?MZ(9~eH*=^L8_>SKIFD>vnLVuEekJSbT%t*_QCMb37}I zS;iESw^$(XcgpGQ-!L3J6W8OISEh{(Z3jl$SDd#o2TIO=%|5Wn(Q_7%Ha%zC3Y+Pv zmFwB-j}Wz<31|$AX;5m}2hvwxh5l{FlhW>hK3W;|9T%skGS%EzHF(#iCREn`xCd!u zO1RE;z>FWOR5WqhzCCH^HG^KeG$r*9yhwv4?;+m$ggO2?AX%o(d+tbTb2;nl%6N^FduWMh2=C|zV5Tt!!?LLu(rImTY_D7 zYwrE>N9#Izf7D0wAkT8%GYl*?(Vj@`6!@v%;&sW2?=k6K^M-XE0HaZDWR^E1ld3Bu z?jfk|VV?QcoO92u?uX+at$xt~2bW8z#m3oed)mfD=8bgHR2J0UZc8ao%$EVGKUaBsz%1*ktkUW` zEYkhe&G=MY^WKR&==bLzj2}LmK?MTL_gA4N{Nj8#rB&Lx9u!V4kA}Jfs~ja}zi^wa zJwMy(QxeGsbI9<)pN_~t$fJg<+xWxgN!El&lnOYfRjzn8)k;2K%RvxzBP6Bv-_!j} zFUm4XMugUnt{_Rxw9y#+iEX|zBGbJ#^towy68$8o2P_*T*%O8)|1bwFh^q zICV8k9nd^19_<*jrcClB7${3KJ*v1i4(yVG65oDRvb*4NKFW?w^QNj}Tc9`=Y60G! zd#lx_`X^|`hsikwk0wp=YjewpT+|NQde4V22PX&neoPyLSB;EdX4^{57wB7!L@lpqlRFaf0|80^NMiBVQ?mM6xk>KfR-k_Re)QLjz)0BX52oDY zVV?^s??cEwY(Op4XtZ9LGNThOm+hRXX;D0e&x5t)KYtgORc%OEGrQbtOXD(7CSMJ;dncojJC2GDkbIgG^`))QzZ|K8MhE%*q>Smv>)P+6KO>7l z7ZX|a=WJ2Lz4vwRi!oF2U+@G^VbKTi|XXW>es1T6aE&B^xy(n)Tp59Z=JQA_P1m?MLiaq&9wRDfh zF~PZmx}+p1egbLm^Xc#c2b%HMclS0KP$cDblYFbjrh3{t0QTs^8F9-3oy3#32NA+q zRmIez7DDu^@wW4S`x!YFA?LiIfxRuwuVm4!MC6xQc`g?XKHtNK)s)2GFuD0XR@0;| zxhnVZ6qkJHba=pZl?184OHR_7mShXYsr`+gJn`(Zx?TbM*IcYv9_KfqPatEmyWjr* z22Mk1gg`dHF17}NKjrSHd+F8ATylbJ z1kibD`dEja)WnFo*id+vY51RdYx>Orax{OqCt%HYE8^#dp+Tz`F6VgXkkyF^^lXE- zys)$~MnLSfwPr03JA)eoe#pykXM3(#L!T`^pwt@Ac|wCTntKxzgGmbCN~D+c{c_%( zl$Ssr*-=2-v!AWD*qFK3knWF=_t#}j5hz4(befB=RbD!!5`jvvWLb0C?DW^*$ZWnv z9E1(cXD(;-Rq|?+Hf$B1tziKFKLEgC__=}Mzt!X-Q|sGlk}cD7WuTwkl36HBrLA5o zuZSrIFJ1!F-U3hzrza?hG@RkJ8tM?ikv9sz4j|_VX=&2T3no9u13? z;bJBijJr%-#>$AqCbJ0w=i{uhP~u?(ZHNb4qaN)j`k$fUhn;0jg}G5~@~;|mqcUvo z){M@MaZoOHn?{P>Knq8s9n!g^#zb7SVJ^lVEkj5`|EMu|+OoJWWoeo4Fhj2mX&%E*?w27vJdt5g>7 zZ{i>U_f%_VyQy`_;Ya2WQZZeijR54Z8$OrN&~^{*Qqx-seA{DE|9t;=&Sb8U0s=yr zarQnQ2PruqsBv5rsTV?iihP?hy5~qvv-cS*Jflu~Ww-=btn#FNS3aSt)zGz%prX!$_j(Tk%h7Jq-L%J70Z$s=FRjvH$X^ zOQ0*I#4VqWr_6TQzE+1S%my`b3>qADWlmmbG!eJb=#p18rf^3t`bEo6bjx%LZ^7#m zRhBd*-^;FI>Ug~vaak^mUrG#(n9$7ErWP)iw>Q^AC9LVmEggSxaU}wQVt>Xdf#piY zMSV@uA5888jxeofk+-`&<0Ac$BzIAQ49)$VCmLihYjZ8V3EV;y@7eOiQKZcNNHI>U zFUi?oYLecUm*CsOM5~Hj5+~J*$UvX-@n;0$ER1t z*hmxU;n&kIZ#PWqR3nZX}U;7)a8V7>)U-}k9vZNU=>Rl-JS;RB7FgH=W?qB3N zRn876ars#9m7#AZjBAE{-dA=1q~|J0+pzbnJ#5)?HwbZRUP&x51UNVeKC#}b+-NI9 zFN5Ml=oJOupy5gtHsFxRXA-hyg~^yhWSg!s{DbRMrq5S7A0|AMf_EAb2rR_Bu0A-x zA(-{5YQOE4XS@a1P!8w<+DhQkj63_yLST_WnZ^$)9xXnhe51G^fegM&x09XL9zX_8 zG7REQsJT7j^)1K<7d{wTWAjO9a%57(*5%-6>gA8sTsQR4YPWn!!eN}K>3gnh|NWjc zYdG+b?_v(GGu!2bAv);zP`A z@e+Y(n^p9O==LUovl@~P3hTnc88~7~vAyfktufR{;Z`+jUz)t^1tVYyIQgy5pStL6 z?BUxycQ-@NR76IyYFVu*OLoKY){s35RQqEVxDGYtEjDQhhUaYN=~VJSC786eTC5|ITgIN(N5iE$QzC4Q8Ixbn_T}lIK)*i29dm0BUtQ$uL#l zR*CU(nD6kL!`~-lVO>R9B?_A4DaALA9_Tj+m3E3YbwvD|MRC!=?FFm~- z$mf#-6c*B5s%t2YV2bY}&gU}5LW+OtbGIUb*X7@KG(Z~a&vyn(t3q4&fqj>bnUA>2 zVRb3TnTAmoNYt|O2=d~w{EZPbXcfP?YMs8&O5R-oh8121@?kz%zhib)2+p{y$l`*) zf9s0M|H397XtRLO`Uck$c84=iG$Ey-Xq{3X;O1XWNa^j5rXzRk1~$GFJ7d&E z2t6g8cIV(w0<_D1+bSG$o>ptO_yEk)a(nzujY^6_?I`|*c{l_U8JV-1@vnlVCD4op zhz{-;;^WWCWJ6|3MzkqAFzcscCnPiEki@D|VQ#oh$Y~T%5Zz13o=-21PY-Br{62ytcnCsr1yii=+ozRn zT~{@6tInwiv0%AlnC87mVcPnplc+qT0E3_*u5t?Y90VhWJ8sKLmzixmtnQA@9-pCu z#%Pv1Kvp%_#v#cZ-yd&O%U}aNUk3?B!U&{ErSB^9v*6BjizoZv%&{MEKa%gGYk687 z{Gp&QbnsfDW&QQ?hNfWE-1gFV(g7@6G1bF41TW%WL%-(;}?dK66Mi zb2pjwB!PnWr$#p~8~z0sM8^$D7^aapP4sN% z+UiJ!T3DOklP;bwh(n=$ouP6m;e{9=oo`Q!rI)jKv08M-Db;dUJ{Bt`SF85YQMTo& zrYruR`}%#Fg`2#Vb!ZTErc@_0%@hV&AZdKQoqRT{nB}69thj$+X&bW>kG98I|>}djl{q zW}C{J&f@C~<4=Wx8lvgO?@T1WP2ko21vQ~~IVR!}Jre^FNDWv9R8!-|4z5{e&P9W` zvsI}Dw%8`;6IX}Q#tYTXlFZ#nDj&rEp)8niWV-y;RHE~9u-k7Sc6 z+ZFgzu#$zwV7^8gqx$AASJcoRKhTRsDE7N~^GM?&W;8uw=yoyakK2E>JNe%fnN3aJ zB7H%E)%bkQBz~RnM+@nN=tTYaT!;~IN$zfqwRQ+;@@V&>HW=;Hikg2LIF4b=xWP6PTjUGPj zhvI=!^VA|)KTe~>0bpVok@GkJR|&I1^RqtBF9|W?(qo+8e<$x%X!-XcK3{!IY~fwA z%dI_YOu&?)0H8(*p#0AM)yoo1oE8n=o$2N!&Py~5+cBLbO#u~UKNc0I?}lBmDtIO| zW#}{73mr>>3oo#pquXqQ_(0OOH>A#v*)O*cC}%QW4zgn~Wve`d!k(k)y3(%+otJ|SiX*cUn~wFX;h4i_UumQw3D`O)WGW@6Tt?(donS(f(CRS#N>&%s|RX zOU_%BZDwBxanEpuN_vn7Hf##3cW9hy4}S}^-d?p4NnLhwxZax(8G|0bxgJ5SI+@wf zE_r}k^f=esWDsw;{E^ic7)a_07OBA_w9Wqbuy{VsPZH3;yPU;VX<2|2Sn8>rpNJ!S z0zYt9YAq&mh~W@J?USwjdtoj*;?djEw{u1evba{j1;SoZkMhR=+M!}al^}7Oyiv~8 zEGnDdKk6$v9Ckv@SDEd2X^SM$#eR>+(uRFSEa-S@@K(xg*jACh|~Ly=P!Ra=hXy|y*YfWE(0#Ix)^X2O{hWykEXP-Tb8n|cFDtKXktUF(NCZ;Ql%V=s6auIBe5dzljT!$ zg2+NJ59?y+(lv3I1LkXhNP-2V-?^59Z3OqF_8UtNIw&(q2w2oK3s`|~_#sl$3`F1+ z2;($zfN6p6aq=Vx7EXHU?};7l0K2Sf*a9J>!1MbQ1#p8}&H5_ZKhoyy;kP~j zYa}7M;&~1BN0|^+n2cFe8d?R44W$$(_LajkoYcK_Qer1RiuT`K--gdi93Bd%)2Mu| zX(~VzJpnmfm@F2_SEXLGXIBMko53L5Xxk45h+ejx6Z&R#)JZIo79(XyglqO9ymRSzD0 zB1h9Gxvfo1<3G-2_7FKACqWtN>lFmhq;XbxYLXZji0|kUT>iNEcTX|j6#d;+!L3nH z#;gtp%7Qdf8Tm!)gD0`Tw8*UA3xF2%Z|G`ct5&^OLAfa_wCy2N!N-qHkUCN%>?i;N zwAKayRl!F>!Mrrq5*~2vs=h25$*;x~qL};Ng( zdRp%CsB87Iwn%yX^H`5U4cT98akA~lKcG?U=WS@ZL>E#xIZVDCGAP2_=&ogE{{JU^-3nZG#K~|20Sg8&B5->! z^y55t>uNT|`Y@th`sN&sCTmx3@s!hy_`SRGB9H^VN+8tP7=ma>c`rb%;B8;B9ZzzN zU{jlM5-nJ0_L3(4Kl&~!p6ZIffd-v+Dbc-aiH}G-DM!_RZ?%*t*oY0;K8RXDb-9a!5}#{B;J*K1E2+=EyzIn&~{=Dy=G7S?YJ!@lO$)e zgyD|{R{iZLfc)ojY0Ksubw;*-5Ssq^1>>>@O-~GS+tNE)pG=Bkc~bDEKr@c@0JQ~T z>>DwWQll4r)vPcX1K5yS-PE@Gc_R_O56kHEt-r%&xYUbjp&$373+jFR=9hRD9jxug zPtsYbl)fG!HTv4@tqVPWPq?)#u-}}|6~8N7^MC-mxuT^t-%c5Be(5-w6VhkS2R~sj z5?g7g0S~4zHAP$WKZT>|0>RfjE=2V7FzSRudf22kpe!f#`Vn+Y>Jjxd$bg4l7Y@cO zfdlqI3AWP_G^;^B7(2S_*clA&;P(#6{LuOZAf9LO3Yv}c`kHHAyte7SYN#_ET(e4T z@i~wWWauYQiXMu^sT8x#yVOV|b8PzuA!~(jv!3LEolKM3h5Z9Q_ogzsxY-PtEe&VMyq>NLn2MEP7++l6p~MM^ArxeRW(HgN-s3f1Yz%kK z4!Z`<)h62bdRtd8m#mACx<@|#Aw~iBugYX(U`$Swjf;D4>w4`vaAHlo8qYsK+{U9# z+gex-9UlDP6OZ1&<$f<9CjmbZ9aIO;0F!#qrPfPU^}M}L0zs<~A@$=wx;)^lO}znv z&c9%5Ng?xTz*S*32ja z$UX(k4pnuwc$7f4^9lA5DBk^2sxxVnT~}2>=Ge)ZATc$O**~l;|HgzjE}}cn30-uZ z9fe3Rv9W>!f9~wFrN+WQkaw~UFb-?FnN$T(CR$60NMyxL*&xB#X$`O(%Vx{;)xWq> zgIh@f`^W8TYOQsqeBNT+(Uu86wiYNuMD)J}V3S1pc85Y>d1PB;WuJrey0$3Wx2$L{ ziolIGrX+%BYmtfxj2>lIb4mVZuP_H1k9!#Y^zwah8-4~)beDlgPwbDG4gs8BdsCB~TZ3p{_hME? z9e3T*Yhq<^28)hkva6>t^7~saYhG!lOZORnRtj=8do8Vh)8Q=?nb%SE#Di>JF?ttf z9##c0vB4xc4S>#CKSD$zn40Gqdpov7!&$J~j*C)X_+hwqqTgv3;xXw3ro{MQLC)Sm zO#dY2{(qxD~o$ z0mdO{+A`=vj+SvVem^h&wgNvenErpeBgdI3CTbkJY5RC{Y^Ol$n6~ZOakFea>dNV= z)!CRFUJ3*`*J@zSCq_EKnR_9`+-xeAMN3T1Z5<;RX*@YU6`C417_F68VQV$`z0F4W z+2M*x6xwGWZ27GU-wAP8+7L0bz*suAJ++};eg%YUE%2S~AC+)VZ}H5T3v{G5Odyet z+(xcBg;`*A>`Gke58|b7d|2J?^7B;IpOfNp8+1ZuV4hRuq%|gB;fs)?2+Gv{PWWN< zb$gXOO4xO_M4JVA4&!(Tedaq!=IYSHqv;6PUD%vo@Z=j~Bv@}AAioo&nA5*`+Pf}9 zW4!ZLr4iPGZwNCRMq zN3_eQv|DDVvxyIOJ)?I=KpCLz7L$S_)X;b}BrCiRBAi^%P;iN{jD9HRTm*I1TDM8ga9bDDQFD~y1QFDQo5>+PaeAdP0F9%c}Aj>I$%#NE6IAa zY&SC^A-0fP{X9@AlU)qGk+KSpsIig$nW&ZtCEeI!c1-zlmO{+~-P%#&~KSOKEc7{j4-oP6qt|Qh)z6+5T6;+3EInf0(?4 z?-W&IZ51o(5R{O6M^Da#u0_xk>ri#--vBd*Q4!6=rW!iTZraToxK%G(#N0kCwmCIH z2C%6!FHpJd>EC#sk(KSCVHK!&u^Hlvuu^AS7bMQHSs`9#yFdyiYN6Ic0TklV8 zbDUrJf=2pBk*ujpuzeaRzEi<^kdYtwU&KKC_{+txE9#AD>dPI z7V=|J>-+(rOt^`^8SK&>lryZR7hR-Z>h^eNDy)^~n*QXY{b*0ZHN#DJz-;6J1?@a4 zJIHh+f-?9zXS^4KINaVOSpcSLl(2TZxuEPre{&nRlPih5GnPU;(b_-YzqUp^)=Kb& z1r}r&UjL_v!GeV&@y5F^6%{p>_1Q*7#C+}>{?|+n7JM>s@PzjiDqHIpE7EgD8?k2k z;4Pd>pu1eby?^ISWpem8D? zbfm#$r{po&)aw~=AS;=6JCoCuQH}%w{Bk!jyF&ITWokpzJ)O1g==$*mF3XBrWM^wCSk=Hm<@nf#4O=~sG2bQ%L57DZ1s7$))XGt?{$Wt^lrx@p zPhX55%c@`0-$kRttO}?+Ry6>1T328;IuVZZjo_Ni*XxCqepSnLLUDH$f2WiUslpiz z8eT9iC3+o&^U)Iteuz^^X+por6z9ih0a+gYHVNRqku6aso3M(T{onhCrN&d*R=A8* zPfBCKqNBtt&Tf?IQ9Y&AIGMrj%+B+u?FY~!=VU}v79T-;_6!(KYKa*ij5qd;#py6H z(yU#-kcO@Vpi%~KSQ2l5vN$&2QKt@)n9<}uy+ z^9LTbyqiP>XI;5*6I|8n_q&mcrxtWatx#HmH>$Cd>Qy0zR7>c=5K1^+cmcyzYlXIm zeHIRN>1L4Se?(|{+Uv2OjUK<`2m?KlKuSL($XZdU$%c})*rYoH(D$MxY>Z}=x|dko zzX!zNan9;$JzYxma0W=q5#Ruyd^D+IT-$qgSQ=$cm!{m=ig}&IpM4_Vi*SuV3L>Wg zc+@Tob>unZY$JndH(c3##o%pmxf)CFiGH*tP3`MJ;n&Mgq{QM-x_{3amW|C8C}jhK zac;{-4rRMQ5}W(5jyo6Myx_tp1EHlb5d~(S7+?%Q*3FI|@6K;ls2+S@mW-$m_bonn z!s(9OdPzj+#iK1=WgjUG^FRW>on@1b4LYd+ASx3X{9LtOvCA{o7u0@~V;P8KDa^p| zxN00B-$0@7Cdy#Wx7H(rPK$*Fho;xjEDB6XGyQYKOf_TmPNCM=4Z)GC*RwPaV5qSh zf41TZSv|*PEpk|sx@)z`-1J$3&R^snTXK#Kl%7q>PuV^GPXF86N;>-beXf7t@ZoLj z?yFSFc8w5KlmSjWW)oHx4*h9M;*v%r;BFtx8=<|)8o^v{*JPHyA(S#qgPmRLyZ}50 zB9gB-5z3%R@vViLPk~!c}wlkOtj9z(e*jON1+^-aaC$*f-vB@k#Dw^l4(Deq{bOnz@nXalTlHV9q8UT z>?A>7jf1SA>@>B9fWN#0X@xW7(>iRejw#8tpDb&^e0**^OErjYhfNhzqT)a?u`)E= znTN3m=@F8l`53btWS@xOjs%VTf|-75>3&Czn}R7jD1{K%FiBpQQinvs=y64j=pprS z*dK)G3xS9GLnoHei+pRNt@D~uX73*flApm+@wV0rc(h>BD{{A!q?zB-Hk{?||F_lg+!uh(~J|H2h{EUczD)uQUXVm3FCOD|hBf zg_{+xKWxzh>#Twmx`aIuxd-Io67Rsa9nCyB25T-#Hm(n&H(EgG@;oCYpQXLci62Y- zC%W*I*ic%rm4ircb@19n7!n_s#JWiB?ug_@!|k`XF=d-#Uj5;9CJN%Lv%F~a;#DgYcCpoHmoVEGB>RB6aG z=`KTGMm|^?F@MY0_7XN+t+SUn-YUwIvNdC5B7ch6S)%Zbph~sNb+4IWU9J)yQ~1Zd zZ1nSrmg2{L7`$Bn@-_G^E=fM!(nja1`f{!28O13F#EoD7CcgB^!d0NG~}** zH>0nQ>)2AlExkk%n`ev-Ip;kb=XSi0G;34k7<+o3RE6}UV=FumBaSg;dQQ4#GhPxou&Wsbev9Dnp@5MR3=B;M%iN8w7 zaH2TaS+k!*W>ARp@!HlI$7$dOr`z|bA;N%fbg!;mjd1J>O_3kdEK*f@eB+uzhmJgjQ7$PEX%A{cuU_oF>vvxvW9UVCA$YXUT#h_DVfj3LZhm|Q>>xKhPZseR2d zd;yXC97tb900Dgc*SHGR!!DQ_=ai;S=j^RTP0TJuIf;o%$Vfo@%{Mc{U-n2+}W*0#f`{qAn@>upae3j5 zlp6Z*TKO(213(~{vt{z?bXbY$Xq};Qy0>q6mei)RDkes~YFzx^!?%sNjA!F`ZrH4|0Kqr0v3G=@6RBX^yX=rK%-7b#+OeFxdHKnX-m{n{3 zs))~SThm1oHI@WMBszqn*iAuark)uZlI6zC$II{+^jq(+@AXKnsSy@fh#x9M-zCrv z4MRXZ1skRS8LOgyyNc$>gP;E2(f=?ipCvgELXGlNP&m+3bp#v?e#)YFJ5$>c>T+TRryoYvH_O1UB~d^9}C!_rg-;}`V%XvEAf-~UqdZQE^zo$(eh74 zNyP5jZr8li%!c=06F3`-L1pq7hinC99ov05MAX_h*&_}U*H|D8h--9g8?s3_zw0qb z)$BE`02S-ae3CBOAv9Zp%8Ghd4S{EhN0a%B2Ke&$%FO9>7JB6|?SVT=Axbt`bn?n2 ziaZ0EwO0>O7lRNJk7J=cSNzKX^Qo`WPOyKg$(*Ab6BKhV^0cw>*xRfv=P?tQmk%mAcDaCBt0T-5iFVeez8;)!he_lwp}k(SwG zrK36f*RD1^{Q@sT4=%Dz%+qg?KZ~UhSh;@q={4!t50#g#g8dx%qs!6qod!3NRUQ$otnS z-OP60|(^%Fnr#yDLm@vt&dn05!TA^;)epp z(|rl5NVn7ksCN&E<2)K5S+53Ic-JB{@VOu&yn^MfIt(ury6aSVO$mY0=3Oz>AE!OU*IS<43|*jB zSeN3_-`~iD;o~HP(Vac{NOi%NY zSum=5P`U!lO^<{4hnv+)`?mNfF&@qvN)Y)$|3nrfxrYz;>r;s>!GK1=UV0a9F2-M9 zROfrJDupx3rFgx&Q(;J}5!2=C29vhB_ z8bW%?R8TM@)#FM;UB%y6R-YH1Tc5vx1NVKm?|KSM(tQipg|-Vx`be-$wIC znHsmY##XWh{X}?CoUei~D=kyJWfjzZUn-*e4U74!5qxTrJ-tq>+(fXgn9&KHXtxXy zuUqcR%Qr^N?dAPhJFPEuW%x~-;)uq`($3U3lVCXsg$j7V%&jt@hth|@kLs~%S zYfkP}VOOvYaL9_sqrAp5fpF10;wHy@-D4WM;PL=V){6qur-?BRdrXx@wAMD6Qhk zL`GmDFVfyu)17RvV)eL)|0G)Ht45HP4>{O{#pV6UZ#T$!o|{KEm-q$ z(Vz{m|Mz14JgDUle8smW%dpOJ>d7S`OrUwAiqTu71)*f;8>y~iQq7A;)SSb{ui{Bp zzk(z`hwu+_xKOl-JS!r!^rw(E$?NDLD!LwZ;JDofJGRe%d(pPRtd_p70Ssk1_u3`* zK)Q3DK`Z^1>Gm}ll2SA&IyAeGOC)v;D*SiNJk37+{Lv8s@U+Jtrz3`L0J(KkS+h zo!L)9-{ci|=&*8eP?3f)n|PEV%;6!ag(-mke&t7&J{niQ6@Ep$7h8PKNV@OWRqa1*DRJ}Dqv0C~Fgia{hc zUeMqF%iPX@W$kp6t_-_?YF(2d5nnW!5)#xWLnJ31UJI?PtT08iUs89kSc4|~O|apZ z+hHA$Gi@u!CgixSYh@Qy4*^Y-&-7K3`&OLMkhBgt_^(yOyGkAZ(XZ@K*E~~pq;Xy z@Z{OcjBd3KGCDE3RjZX9N^Pc1bfraSWJ#8-By?xpG3Am-?LA_q1(zjyJUWIMDok6p zuB3c-;e2D1CS&nQ0~{A~unF2NjOYvB)&FAYLro1cGUc!%WlgH`%Sd2l$DpFj;UD9m z{)kM#UWQ?+O0z)3nHp#>LUQ4o$zDdA^-fneTdtP-4x6h>`E5~6FD77?CJsoUppmo~ zgc*4L^9yk7o-zWe(?JgaPOkS-5Ep?%qUQ^D(Zsv@wadZu5}|DQ4DMV8dfn^K9=Ss- z>;chcvIr5bPJW}b8dYi+TSKLb<=NQLDA9bMNDVooT~gFr7le~1h@674j9Zl8IdKm6 z%`<|%CYEEieBQ+>2E9)Jw%m7~GxR^on=$$=G*+6*K_;HTAiryNp%vUQh%lUR0qjSb z4WimV!@(nH&l*yg8(|XIf!JvCX-+h6hLtIHCn0;A5+yg!8vtTPLq~7e{!JkBtOPzT*P9#I9l5#3?)@mNJ zotQj|)^~%8uF07?tBR^4MxX;X@OogV5;sm`g(M}lM2PeBjXG>E_htq06qX4s^2g1y zbAUZiTrz;dNy*`KLj0>@dMAbP+5E2%`m;rb9N~gq7(CbnRz@2b*w*Xkl)d#=UM?Mc z+&qmHYu4I~w*fk16MOX#X8sK)6TLaczLnMp29*LsppTfpYz!2Ya@TSVoU<(^2U4~@ zJZ%@&ndv-{Slc>6lB`XU9XV)0q3V8a=ottk8zYqNmfzl^X8~w8o(aLpprjyyI3HPf znk_=2^lCV?QFnuXyKn|1-KRbjTBTP&ki#;V4N|+FRkO&wB&Osw=gD$}Yu%;q`VLD(nk2i06qoD@75fjp85=BZ6L#}Sf?-#U z`ryGT8KxSsETG9&to8re$TM=Y&oH^$xS)=CuJyp~Sye9u*9wLD1`&+{;{ydOLE(>j z$H2w8u=!)Pm)ucefMLeHNyy{%-0BQ{yh;4SD{pp9PV7dugKv|g0sVPe2JBwG=0y5E zUd5H>y+=45At5uc4MLEv}i|fqpYMXUmFUcZ~>&F4#WX+bcSxt&I@Q<$I+j`G7 z%OY&cBs^?X122SfH7g4BHej-KT|+Ah8Z(ilIpZ~55xw}40FdVb-?#I!q4}G;shRTY zU!qU+V)>N;$ZPetssm>C;qr4Hc{=MH`8fbJ3e21SAjnBOOSd# zXeeG&?@~HX&#@&#x|_#_rl9h!>%1d=doSDfWHO|CHkotO4=LKc?&c zh1zF($Cu)KqAbOxcoq3^T{XF=#1Uud;|wTop+x#=lp4Fwqt{SB4485C^(E4_x7s`K zLUTN*X#pVcfe!{jMEI#{OftBTBCj{CnO{M)F~_tO_~a85!@HsRXP5>h3*9)QK)EBP zPR=le$L{W2fDU!UOOcr@{d-msn`_FxAi$@s=jW++J(;**a`VnJK-5HNe-zx~%~ z`q?uL3aAOSS6s9*c6r`2eL3##0(v2{>OViq{d_&Qbf0LQ0m!r@6{r*Ua@KG}dFe0G z;Lx$>#}f;&+Qa^2IpXlrlE5S#`BQ*X69_1!Yw%a5qG3sc6pblfCnQE3-Vb-OsVZ?y z@M+@*BA^StkWU|lg8E`WA7d!8->DA&WB2b;(sgae$kI%d?*1@FE5Y0tA5ZH8Q9A*b!7v#?3m3nq?vGa}usfbCKCPUVE!RD#7_*oQH? zoZ7+OO@coZgU7*jq!!wR1gx^2CH4%<^^87)E$$kmH0@jb0-mSY5hGIh_w*s{>5#a% z1;5~oyU?oZnra9w#UbA)Ky&5apBA@V9~fJ34|nFbI#!aq&8TouVCGCh^}bk0H@T_n zDCH`stsDb1tQrcLi6gb6ff-B-VwanEHh(68%O+3ImJ>nZE5!&15v9tIpb=UHc;;?H zL##CP6c$Im*D_Sf2tOP@}WyIT|^(eBQ6 zD}$Th+gs4k9o0U+`TkO1?ZFmMU}0~Iecb#gn)!b7T7pB~NgMMXqzzcv{9N2dCYhCMh72_Wsg)hKD;|e*3CVC~?urr~Qa@VLpn35=6hU_fMTP%# zJUCaWxNT8Ipi(kF==Ay+hTLci<5!l#*0~s-sY=9cn|+vROK>B^IMES?|M;OpQcBFp zZIXfa-oA>do?738BNFWeFum2phz8uaPLfFCMZNz)uIC-l=Em_&gV*Q)yoXUr03br+ zio;_?hXd#uD&3L&!poWXoS;4tqjfaJL;OhL^}v5SWl;#Kwklvt9ho+f2ih9oF|Hjz zL)>5tSQw#ggdPyKR=U6{2_GvjpwhoP8A+%bU;sd~f2|8)-XQ(s+8N&(LK7DLnseo= zzANNqZR0_AD+KUtIVX2QpIX*d4~*b?j8#X12DY4p*Ss>VondfBR8F;Ni*rIIBJ}n5 z4VALmU?W^!c8SH%12SW~e8#?Y{gip=#GjK!T@rXN7fK6bD?f<@2CAY&v0dZlZzGch znGIu>4;kY1Q|g0(5E1`ZLXy>X+q|O5Z3#2Ay=DC+KP3Z}5&&~kAy8Ony$qTt^NM4N z0ePEnf4Rq?RMf)mKL#Y$wj1wb>W7!QFl(c-Wubon*6g9{eJ%MR3K3S$&rv0{EtqHn zDAPcNv4^zb3~Gla1&FlsDURm*6M5Dm!-8Ur(m}+#j5r@Z6<#U>x-Sqn$Pop^%X)fV zvho?-gc$2VZrGb&C*1EtqT!A!aWrDU$o4{bwH?0`MMDjGz#NkRp{!a$VlW#$rl1QP zVH{iFhsS2%6Dt(A`7sbpQr{#q2S}6Z22zcAvJqYCts}({>xwX**gifKOkw}kaeuEd z^Ien~e*@c$^_ENmA{a~1n=&$$0C3I&=$FDbUU?O~b?44dc#fu3Y1S)1?8(IDX@0d> z+R52&RCTwZm_mHa8k|2zEsIf}NjJ`^AWV{6RYG4}C{=7=3+*XFwDNC5x649Md%l#R zt)#aV9-at_7gSHoom7S^n7KWk5!G;mD^DUzmWhVr1%}!eTzb-FTxDV_zU+z$K6;(} z=p?r@g=ZqChJ)wbl`jy|a!}DX#qo;Eh>zUC%KU-hb1FPwi_=+$Lg35m-6EDQM?zri z<|3)tdqxj?_ss?x_{NGgmv)qD{UkT6TVz|AxJiouGI5jh(ltMVdpjD9?eHuC;S;zC zvFX_Akq4RM28O;DT`PRY`Y_T)RmmziySj@g-|riK8)PVrRLRdYNn)uE zz5$no0RK5ZTBkOTg(O(U*Selw{9_Ee+lNlV8Nt6!c1K0|xx~WAq>2o^3;TT-+1&$d z5CNZYZ7?^UR#j4-M;(-~3@Cd|TJtyTW3rlx%UW|B{#5S8$mbRKt#abzrFEgk;s|hH zY329Pk2~G%91^c6w~KN6o@o?`qt< zU%%D=SHdAm@_bE}t=KF6xn`ShQg4x)yfw6M@hv9$&NY~q%2tbyNGhL5K(|6rvnx!) zV}#SO8tm!p)?DvIDfL$I_`86=Cn~UX^<{Ck@2`v2G%eoQ4-FT^5o$&KpwsE@Zhn-l z$7pp^B9lAc>XU7&MF|TAfK+yiEgRt~WrUy`E+X+?476hk*3pyG+pxwUMY6}hwsr_O zi0$~1`_N8(1{p$SAmYXa&yO%oRP~gdY7y*998Se4P#bfhWml1D_? zsJLeVB;b-ltbLhL1Lv5|WcYxw?@@w&(+uE z=*|%Q+Ll0r?gmPaejsaORXl zn_eXIqKmC21E@fF657@Ym*aa7IZBN}g!?D(20 zoXiCW)ENV36O|51+(33PW1mk4<@}{mhJtzrDYtc$ZIQ)>2T(q9zSJ`eZJs3+xD{(n z&ZI#&TxnDN84quTc>+dFk3KC3LgOkK(@Ld#yN_-fJA5dxu4bSVGqXMi!d9|t*};LhJE(EvXo#9`bG((_9*kdN5aS|gtV&0AV&6qQSp zZKlz+KzY^jWkGuSxK)LSl6m5=mj=YoHvO-a4 z!it1z+rHd+$SH7CP%J$@q)S7PjAu*#z+bc~4e49WTgF)SWKcd~_N zgTH-i;o4Te7vuXXrgV6xDj@ESi(~Ty89xJI2b>uY9#37FZyJ*9ZL%;dJVY*1L?zxC z%1cG-TsuXC$2p@r#k*Y;_|dsSMIPZJ+%5XH8rMF52VlIrm`-sSsZhbaFWwtbOf&Q& zD1<33INO@qWTFUP8|5A(%_qKPAqau(~e9OoJX1woUPbx*@I8 z4GN22Zq>LH@5M-TJ@`vehT-j-OKu!9_}6qcjgK_Wfgjm{mP-h){FR6MI+)r#mJwzfLIRKk8-Gmcm zpka+M2x{kp`azUkPJFcEsjiqYM<$tD>WO^#LJ#S8gtaPnpqgxA#AqvLZ1NPqeN1ty z?LFxftV#H9El(*EI?;`g=6V&G*~PQ-UnJHAZDh5ar(?#8?oq5?4y<%{4UUA$#|!7tOMKz=@B!P%H5)MsAZ96#?fpV@6}|E{r7xQE0tAXPJN4t=p{ z+7IrOrKNT6L|RKD+P}F2 zq*fJc$CzL(r*{?Ew}-eLHQHZw+*E~Y(<-u}YzzrzICyDP*dfMx_~rBD9z9u=kBF49 z1|V15$Rj6f3?qx6+*8 zVoT&ieB)mF@4AshDaHT7*~-9Li33r#po96w-QEYC%Bg$A59uw5*JCuZ6SW^u?9CsI zLyPK!RRrUoy158xS|X<;G4Z$UXb9Vg^m+F+b$_UQwy@|Xb^zCTkaKqAG~z)xv?Y4| zySyBUq5f%z`4Zmzp}nHF_EO~Rq=^&QZMKnlX&Fo(ygvJi3x9hJ7xNlqc9N5 z09BMY;-_RDHT;xa>rM|OW8(2cZAc5E|0p?2?K3=wGP_vYxO?$Qff{BJoK3WOpmwrE z(Us%FjNvIWxytuc55$<9S4m^6XGbd&ZQ;_eW=v&)mk%jaCKS2K`U|muO>#kt&4pig z$>=ePg6`lm!|4ZkVr@}1ej%L2k{AKIenqbTwR!lMy-2B=`nYBm-KA=#simmB`mQS% z%yr;l;)CFgxtiH8XiE?bPk&#RR?Ob)H7M&B$xV5utL0u;!WAC%@HIwiod~d7a0^~jqTO8n6GYm0h}P~!Y+cq9>0~k#?17F{ zoT0hp3W?~0Fz%j$r@(}R?U|-_ou#M=UEu)#KLEh4^@@isYxCbCqv-4=w9J~WTv^%< z96TD^oD};73qkQJLhWqp&weh>f`Aqw89v>qxtUZD71rHmWX4yBRpW5{;#&oIL;i>b zb1Od^EhzeiU$f_?Q~!`DO=I_6=}Vg_GXyz3qz(!oI4?d5i{`sD8=yyOD&ll`H5X zlf6o-#ZEqHnY4gGy6g@%0rU-&p`0UaSSh!~1r^aQBMX zf@>_wU2K{b$DJkHStmGAHDST1>YdoSZ~ISE@%lLRH@v|QH1Qn@t@4>?*B6G>xh19x z^w(ju!AZg`rZaq{VzfY5{`g9vX6=5eA6BWq>9|eW^@y6`2|#%xS|x{`;|l{O65W06 zt3WSj%eu=5=b2ev#oS4V;LFC7jM~fmqa*YFtarr!8|hg%j3yRv``#*Xa^vc>#UIzC zikki*33~!_$V|U+kpzovv%R{7tD`dsf8(d~0scIOsDfbnclXKS#0iFtJnm_6Aw{Qb zr#xS4u1UPwHYQjJLI|fPIuwrOK@s;%KOSgmR5I;)i;G(btDH4v7@I(Ez)`whE;tg2 zf_ojHGG3!_!9wz!QkbIGPlVVOMFOxaQ2R>v#$U8X3*(y^flbY9e zb8T`QpZ0e-A+^``#^6oZMNmEvBy$}61CY#Q?x{BS$fxJ!oL+|Cvv#W=Cj_*(5@M+G z%~)-l_BOr)UBj5f(H|W}0Go5q`G+7EEY^HgoQ&3wKcDC2c2E(TJuX{$mrRpp`;DRd z#w=P*C0$KSA24G?TSnl?vHau3sMApgBL`;8D7_}#h9EOa7?k;t&xlt758RXukA}f6 zyw8w&%1&RXce@&!ePr5Z7aRw$QKU|U;t`SiG+M5hLvMS3P%)fE9 z8u&Pk-?vvBK`xt(t5?)2CRM&iklCNagB_wKQrZIG96_q=l$y%w? zP<%-kA^(MMtchZ(!$o(-duEy8&ot>1B#ZFrueIFHq=%vcs9L?_5ar8XLD!mBC6 z6ez?Rn6ky4^$AKF^ENk#VpT>YQ{**z+Wdjp^!w!OGS7g;o+#eF;fKo+zSA5go0!~| z@tNbQltzi~Hr~ZMC+P+?3ghqo=gtSGSPsFJ_<&FGP*!@3V42{TD^DoXE!|7uVad=g?QgAFF~&U_8EN zU?V13&@Io7ieKi{aOjEfn^&azN|r7ViCRDC!5{$8JD775azRHW$wQ7KG?1p}m;CF;ieUZ%l|!$2(_+3sDyyhr^O5mCjB0^ zdy3ny!4mxoL&uW)27z2>!8t{F>LcgNDS&Y~ap~7app=sPDA30P)*?U*^Y$Ds0dWR_Lajmyq^sibE0D3 zcV%4&;(Ii+9)7?DMQutK!_$h(A&HpF*rkC8EaZ<`b(Q#lpu195-K2SuEaQ-)QvJg9 zzB2yu_iuz{VCH9=m`&eq$agbkt$9m18E3CF!rqD6@bnBhU=MGI_a7tx_V!ZW(=box zSnTwrJ6!myk{UYC)HfyQ7F049c~Dg@h>2F)Qc6<1#7zN#Oquc3r(2uEl2mNKocB=F zLoR)Y23mpD>5vT>-C(I77ge9UHlfMwtsJB)fBgB zL@_v`em@9IR*2g0UEvJj!0U_Te>p2Z3_>-$Bb}A7>cpDU@X&1%W|tJEeZuHzw0#=; z_i(QCt)`IOmkW>)$}6>I_d8ppME(z#}t=8Bp*iAc*8 zAD*)naze{=i6}~3LO$6-d}(0n9U=uMhEp+$jI>Y&&#I5r<+J<*?m3PH_5O6N2R?DS zTUAP0rRvlX#jSJq)P91Z=sy+@V(+3^S{-|wli}aKftu3f zi~3n8Eahbz_cY$!#FctR}VRB>b)zobJr(j%`8Bdx+I7 z#o*w6rUX>%=Y#!nhDnA99A9bZc!V^WJ33Gkx>yOtP3+^A`PjWqn`f-2i_H@f@chC%K@+?m)5xuyIXD114L2< zJjG!XNS*{VwQJ`$Z=We4fn_+aiZq0TA+(Jt=3oa4rc}Y& zz>WB61}bAHk+Mz?ejT&9NiGhmM5PG|FHO>%xAq}RF(agmZZ-OMSd*cAhbEv^FHH1+ zM?QnO&bzoM!ZCjzGdm`KJqmKCHhQ;Aa`M`cwtwy<%2A+xWKx^lSQ!mDt65rWZUL)6 zoUQZ@8~wMFOT`2H|D{DzA-zoqgI3R$)>BX_^0j467cDUF-jBy+CQ_3}|7(U))F*y+iu3*fns`niES;fDaz4j-78 zYiX#2MZ~dt&q(@$si6LNk91QLYkbS|1+eJ~&={hTkhMwbb`^nDEnWBSbO?!PN)UTP zmx8+MI7Y5pRABNvh~=7g1bkLTqk^t6M69yahqPcl>#$1s2dHIKgALi1wiy8LU{&;t z|7ex|!eh!o^DLm#@j8d%xRmCbj_!TYSBpY#TBB}yILax{rc5O3#;oJtW)CGZ$+sKK zUc`8;aJhD~A+m|PI^NwXBeh^lrjMS${q7lK*81@6hqyXsv0jZ*v}q{V1D z)s)*n?z9#~sWwt}^gbUb~|E zBoh;*a(&AK7Ve$S|BZFXgWoCQx8}C7t#3r`<}SQ7T9>xFLI+raTkY`|DpQc2RA9PN z)j{<}2{1IEd{D)VYiN2;QaCXGj=)?UEOX(P^sj!!LF?A71r3OnA;eGYjRWdiy2zEp z>5fz?9#h|{|LjAFRs?*Kuqn^Z?w83k&`U%|p-so@|2dZ?-n@*bg&|U7VvEsdv0P7a z{~*%kHRpvCoEq+{;=~_G7zw_Xl6_o_rr}@B|FiT-K8cXo|LcC491GC$iGzRR;oB}v z8cY5)oayHF{{?)jfDZZ8hS&A7o9F=5WYF&ckDX?#%Rl;U%5}6XixeQf6DT6jkaonj z&q$Ry$>#l7_%atzR9Y)m<|dYSOP^@zXB%eiSn~2WmH$J)^yJm0SZ=O?lD*8XC3~+F z73my;R6EBjHl`1rc%LV0-xbQMHNikrg9~*BP3#Rofs4R2RT{O?;Th6A;BzvD$=fiz6y8iA!Vr_ix z?gmTFj2pBYjuaZ5M?OVUgPy-ZuHMD-!&JfL?V+q*nLe_*<=J$^{Z{5d)SIA4>yk>? zV4!7wFU?*)#2K39ID5UzebgW{p1d;j(#vB9#7>WPr!QqP{+jBdDaopX!{pnKn7XMv z>Q5vEU)WAWW+J*+T3AOo51z2U7H~Bk(!(Qx55Pq4;#goN;g*{2B6{qz{200?8RV#z z4lJpT4Tl<6Px$?;%wOB}u(Pmrz0$NAE4aG)--9m0wGWDBpaKi%8?#A5cPbueVX2CZ z4-6lqx-l&f2H!t0=bD5upfXy0c&Z_EDF!8cXj~p)maNt(MTUEHZM{HLyKOp}1S<&j zL=0upJRTzAvA>s}ZOYWM;hbAmLJhpZYqAjkg_v@uB4GVUnvPT)pzn)rB-};z#Z~%a z{%qeYE;@L>@y4a=97dI;Sezj_P!p-3uZeq8NfsPi;XpmIh51ui^WmOL46r9my<_p4 zZdH>89?yC9YQVc|AchRefzz-tikd+Lh8&~zAc(t*MsNH}F6#@V-@KVEIw6UmI04pMQ#BDtgBkrVVRISG_&q9h3*RHd4=}GJC zpR4G{o95{*fFe>Mf97uu5z6wNk4!@56W;Gn})RSc(;TW&Y>^v|E3jkNWo~k(1(Y zu^HI5eqY@S0L{S&QAA;_jyY4XL?T?h{jt)dx@_*bMJh=OY0JQr83nz!2*l#axd(fP z%7;TFUlEB!{MX+IO(P}^v?*w{*p!Fuu)Lj?E||EsFR3jIfJ4|{&4tzv(N<4ToCFrv z?jG6#`*vG2b7Es*kTcqJ<`@UP$_F47l{qU*g|Op;%wv z>GT}gRIK}!@F;hAeSVW?H`i|>_ZFf1dJ%xq`0HL@fOFjKvConRZQ0algJ5vAw8`T= zJqb-z^itR8X~zBuKODF)G>rnt?-J%;?vs*xtW)&>J;UMB59?TNiKFY^f-GfXN>d#x zbOR~^(F*RL$y*1qo#en?4$VHH>j7?W@qqHtr5%-I?U`{BkcgD0r?$P|=*MPer^NRDJ1RDU&a4y%#9_PR~Y$5qAr+{G5AfGm3{cRF^l0 zWW8eU4;?zr)v!vZ3fF9wAv_P*%e0Ohy~(hyW>B6^hbBM?aiD_X$z+OsW8rykKdc*8 z6%IUXBZE4n)pAX*V%0&n-hx`69Z`*v>GgF^_s)42mBmU#S>$ys5lN2_si%E3ZoGen zX%0&yF+9oW=I=XdH%k4EAnIGV*GcaiYtk?vRhJFPlJAfJ?ghkL{tuJ;tG#E&ZMhQ5 zz!qW*BAJN$F+2-Gh)KEJm#%JhAFB^*>urWap4+MI#s9O@M2>Iv8>;KQUBnUU#mZv; zGF0ZC5u(Y=J)M7YXlBlBJt3~fFHHpWwgJf&qY_Up#FkRR)3WNFUPNT>_Nx=v)+2Gi z|7z&Z2eCp%bR$(LZJn;ICw;S?xWO5s(%qWy3e(SU!xK*Xncr=*K>*=oV14sCEJq!B z?@y-$^Yrn5lpuZ6Bt4?_Nqx_OfO~YZ*8|XOW`g`P7VF_58_M!$Yl23zK4i&7*yU)} zC5R#HcLv~}%Fn(zk-xsB#B>0ffN?}&mPH)zDgBYhBKWp^z9zF_V$Mm=fZK*@l2 zSBEez{r34n{)2%>% z1qx8sj0qTXbHhPb!3Itl)smoOs6D)h1JM>FY*e52byx3?+CZgxb^puG<4jxPB~I3= z&3Qn;6L>TxgnAwf5%URrJB@QjLJ9ZbIfxL`T?EfMf2pOe49(1mQA#qEAp_5PBzLtC zmDwQ1%YvQNU=9i@na=H5OX?Q2m;5+MFjb_@9jrNfr16}ii>t6tlOF&AAW7!N1o$w6 z2}q|L3jPI!$2wAdkvx4A918`xz3c;QD{0YY1(B_PsmDh3d7 zb|(Vt9NZGS{#%U*sY&D=uLH!w`xA+V1x*5c$ zb07dHS*Ed(%t=W(H7T(0MN{E!fn3(M?Xi2b^G)VDh=-3g`t971*V>#V$@q;&+Y5v? zl#kNiXNY0|{8Z4(zp1aBNNPr1=_yyq8A-rj_gtinu7uk)P-86d?-1hsPEM z31@qQ{f$~#SNSFdd+*}Sse??&5Kas8j^tDgW3@6T{vL1QLd9dc20Jo&?suU&WWr5j zx>*<1gkG{l88>fC@!FSSpK^6pqexW*3~;2LTVaXV@uCcraAuQ^Ek}f{&z#4bV$|5q zwDgUgWWd7JChUf&BvjylCRbs#)kE!Dk?^Q=aas1y&2KSk4miq0Qx@VV=}V2iQ;PWb z7w>xrMXrVRpKgQ<(%Ih0JN3C{HuP|QgyK0Z1r)n>HLqq%nZs&j+(ghTg?P#n&#F~Z zY-1z;%Rt$pyF!=ApB6!IK4=K3^+vr@OnGk|3f`F>tPf~qvis<@wWE}0S0-N}T+~o< zfE@7|%}^NGNfGu*U7DTU$S+#lUHD!fGJk7t9fhk6%hHT%*a?chra@F#$2k5p%#+|H zOp{!qlu%l{+Q31;@cJh*;?&vc@6-e4PiZr$V<3lx=G+9?ICdfBjaO7+y{u`PC;NfF za4MKgL-XjBu|b1On3RkOp^hkjeZ1jW;tiF;UMI%olDiI-MiWIOub17Fc8YK>5~EaA z6+HbfPlnXdWx~BrCE6r z$!gGx88-Rlu5{%XzEs@K`as{PBw6}-_3B1qM9C8`xVhvXBA^qmI7f2y;SvM4#1D6i zq*p{k!=<-9W`gp5S3Tpf!c+FhQAgMC33@4*gS?==Q%)OW*_lKmIp)(^fIsdX=Xc9% zRUZ#?j%%dL@hJ@I5%%@l)iHK4as57MY$uvRI>qZ}o>vQlY(Mxj>kuP{#tw@wy%j*& zh5C!fRR+sA;Vei0RU1sh{0eVD3FM4~!4!`nu?fflrUes?V9e~NVG+D;Q+BqHlNcwM zMW$^On{1fb6wRQD#v#JWW0V?V->9VI zI&03fqKAK%bAsMDjyPMOr2Bw%>L+?&gP09UHt?vH*rDOGhh~`&XXj z+E_3NyY{@sD-l1h;+M(HOpmy7z;WkiB5#kmqZ33!<%~L?7_LiDk>|HqN8LjQrc^-x zi>ZOT+LFzP3+FqzP&DpZ{~$KgkOjhuhD5 zkeI0mZ@I^310JmIu3b40FrzRzw4PI_`)*)S=BVU9n5B2ubuXti(Q>Ki5k}#A;-MXW zXSv%VmzK<~J;WRiFx8nAv&OhF`)wZYxjzkZkF7ZfeaF%kZC3H~{v7w)7kKCH%(~k^ z7F$DiiFG-!9BNr=7LX(Ta&$I1y~;);U@a>`1=%s^-#)EtiyD5+R64{S&*^Tle1H#? zYt=3P!kXvQM76GzEJFBP=fV39)@&1)t&wbTO8r4!J~;EM5@v6`@`x*FKASwy9&u@( z=gDpSo1Wh=0^cs?jb>pjU7TZ+OwUBmTvdB(hq)>*mPku)A|O7p0D> zW)33SZ+R7%_mzOEZ0LoR$*-Z4{LnHKh}zC|WY7+f@VXIr#>RbZU+Fwr0K<;43=mkHAbx$4Q-Z*0ndvvGf}AWG#Uo!L zOsK@MF9c_tlrkYzTcCC-I!D%u0sH@8cDw?i_TxuN?#CuQ{ftRl4RtN>GR^%`MxF{B zRu6%qMedU!L;LNp`6e(b6H3V*#uw~Vu;t773}j{mjy>6Wo>?4&$L5o-4p^wvU;-** zJ{wWCwGR@iqK;7;-=jvybx-iqpt44RF%Jg^2oDsmKL13bqNVZrWmUSZ@^~L?3%Pdv zX-<9t1fLTPF~n8~DV|M4rE660n>cqU?ztE7TCW@d$i?DUUtuDsribCtTmeZJTQcC+ zMZu*^1O6B0a~Gc4D_br+MHi+$hlEF9Fj635^|FUPwRbu+>Jo<9S%&zRQRT2zm^2o15iu1z|02DLi;fxX zUQsm7cHxIQ=ITqsp5~Vw2Y4-dm+3}Mxvqyi=_nSEY>03PCt%GR21(suLEDYsMrL@H zHrZkZ3&?=}k(yZ#a!&?<;u#FNb?JJJZ!q=iE(tUU(1pV8*hhC+K`+YowFuWW5^J5q zE0I7bsg0@s)3N#)pRqn(jhysO z+`cekJ9O&c*I;(a6dU!eExf8-sKQ-M)x6;lJ@A!=-os&-3(+BozCCe!E{L&69G~G# z4^rz*op=JxHZ@&|SkXEF!Dtry5noLKY*lH182Y1w^x5PFU)gDdTZH-fZaZZ^uq=z9 zqO_;f9(7g7_03~UY2IRk6bAN$3Nv7eo3AY)U%F*iQApFT=lAv#8)*X>zXD1Clmn;r z*81`j;@-lM0Et7z%$D+M0STq8zwhsQCy4W2p!( zF@qaa4v4%G*jdjid)~J0CGim27y`6atx@9E6`{p?$AE_e(!SfB0nj$pwh9&vaspV& zXwy~9J`Zka>fvI*nPBq7l}C+a_4q?uTA%NT$of)kFC{H^4@Z3JVGtb%p`;=Exz7l0 zBX-_%(&&Mg318)x@|)#>S^DEldTt)z+-3-IvVg#gE16kgRu9s_F&qn&5u~)$JMWBn1`A1ylxV@SMm`nB40#|uXqr5pw z2XX7wUx=(!c1~|lbjIlm_fWM|nP2%WcRtF}nN;x}TD1)H7A8KhlpDegeIQP4hg?*6 z^F#+Xg4Z0l``tCB1%#12&Bc@_Kg#GSr&5fsv}^8{CzG2M?FkzEHRi^jV_MzV%78(q zUXI2X!gA85$6o_NLXmP%l$oaMz5;;4qJ0mF#gtZXBS&`J!Rdy7TZ?yTr+7MCQgxt=DD{2;1qD^8fjRN^N3X#)3}k6;=5nXIK(w*(p3biG zp1#0-ND$kW ziT-|nk$Ft+iI`zD^S)Bi&Q{e&N*Xv8m`4+f&z(DKvN&B!Hs{@b-nNHMY)2`lz^c?K zrCu?hV`ZkhFfyc>`6Z#fsf|salK16+!$T50Zi8oq86=; zO`lv?w5__IYL6skY%UE=PCLeW^r>@JSFv^nEGMS|!kX(DEYGDhZ2yxOZv$0;KNDRu z3m++R#vQZfou{fq1u-C+szMTXxZ{m+mMFxp0&kYIk~y9N6TMr9SQd&j+l9X?I2P&X z=0uI?ZdAED&GvXjftfTly0cHU| zv!dR$Yj4?|aSDPjd|f}L5>V!vwEDTpjY%6@#0}V$kOp2F(8Xm%hG(Dj@j}R zx=XW^Dh-33ehl7k^RQxmCZFb8QgHu9QPCFL7JmMXo~#dS*tJ?D&Yyw93=Yc~f5<9EhXa45 zRuLL0``RKn>WbU>K4%b-0=_BNR1uwnQj12%MDk`RKVeWaEReRnJxLpiENSGSc}a49 z4#VeIoLuoDr{6#6wGXnD<25Roq=lf_-$)Zb-}A7S*e)siswAk-CBucY8-Q70p25)v z%U7cPbq!XHlWV*%8C9r9Ve}2zX;O`S3I}RvAown;c~P%pXS2jgO<=1`qMe(MIX+e) zmstom$!ZL+O>jY3$&gmw!pOK=FGskmpBYz&&LQ z^2H#j#O2$gnI7AF07;@6+E0yf8dBZISz+zD6FH^w7Q>z_k161y86Ik@DgqKi0+=8j zv7V%)b^cJx+APjnV%K|ysARfTAdVQP2=tvZAF?bYXzUmYo0l381U+$3r7=Ea8TFdwVb zIZId*e4MY>vkoFWWRw1{(H}6KN!*E+2ja~EZ+Co6B^$N!o)2O?1Girw%ZsKQxig1 zQiE0a_Gg~?`~>@6FqM&<7f+lMYnP18=5u2mI|3la^#A0{So=I$U#)a-&fV~fZMcPEH#h5 z7Ce?mCKOr^k>AcA_G^B^7d)ln9f{jv6JOhOHJD^#)FLNCx zHYxZS&W1W|@Szf@geB&pFFpOlsoJ4io*rF90{S0^ z+=v*Efrp&fY%RwPkoo ztyzadU2qD|!FO{m=VRWoWc#wmrxddoaY(tMgx+X$(n^#c`alU)@zxuAwuI@=7vtMK zhO^|6k(%=Bphu}0VF&Pwq8I8PAbG}Lsbdtft^&LHXy-(O((_f!jOaQfUy9aU78hPf zqs9vwcw2FH@j?-)fTh)fiCry1z@O2N#3v;IUr zb{nRr%XH}9r`q%F)0YpKwRg)v###2p34Rb>1oiN0U5qdfNgwPzs;>~Y4qJ=}xRIi` zA*Dq8ta&dt$k)-ZhV3qQxNf#0=bpcYvBlXgXz9~O@~5Vf&fl1hp_~irmnVYSjII}? z0JG!D1(07Iw@v3=W5-CW{kMOT)CAP6CkdJxfdkvRjAMp}NO&BG_2&hAn+~A-N`*Ti z@cl=WjX}8qm1}k1DXS2<)+-_hrcvrpeU_d&Un@>o%Wm51imwbJ?cyU^Z63BCFvLX! zBR=7DfU;p~`)ECrwYs3C;5YY#CDxH+zJR$YTxLQLP*4FLHYA-$w!**IOT)?A9>V6V`hN^&`b9zMHt-E-i2aTRbppNo;!6^U|s`QQtHoD=>)kAK1eg-mmS0wEkj z4c6|^_Y5q4(qHQzHv-3Am=XVAcPGz#hjui*9p4Q_=m_hZYj*eLx8FjR@$IP{v{XD&E80`|O7Zgc2c3{*=3IT+yuC z2mQW)Sj08_x(5)_{byL zzPc>d?-^gDOa*q}Uk_84434JBcH#L|)2}ZVjXMm@iTfwb zM#47j7lz&sY|OgZd^NxHwMm|qVqKC}bI4byi(m}ZS4IR;U$r!p2Aou~UI-heR0QpK zjp*%(vw4@##MkDgC8V7Lt362`?bhB0g}nYLEYuw=c3wbuK^r~pqS7wHCN=N}syVQu zAoi4mXfdZ@TAEeCJkZnksQ=Pn@9Hk5sH!FAh<9B;!ff|4>JZWUNfdhjxo0JFBjfl6e8En!tjOdyxVh z6`y89soaRdm$5^~u#!%6$ZKem{Hu|y(_uwi^^t;;Yg(wgq3pe^`pcIu@Ud>*c3V9m z|FYslmzkR^hzH?Gm@{DpzUYoGGR%pALBb-&Mh)8!7_+d^55bz4k0~0Y{rlaGb)4LE zU8uH|?R9+`woIK-rU>m?pZIAgkHqc;7q}BFZB4sgL;JyJ2Z181%!SYoqJmGhK$13( zS?Uij)=sBsqkvq4D%fbl*q~ThlrR)fCZjE;Hk)2%-bszQbNQkA(-C6*k?oD=0pMJj zqpYOG4-WkOyI=(dxM#DrM_p5*|{}f6qv=LgxOLIK0q??dCR5i)tc$$t3Xuox1;5k7H$_tFFcawj0=QwD0zRS>I%9~2M z3=R!2W2in{O}d#2Mz2y7U>d!YB5igArDI%tQ85w;V3T}hBV``9J6mX^9S_H(S$6|a zACB}wcUeXmE|zlupg`bcIMGl%-f2i4yoXqhd=yq)iq)=|n4a`{)sMhub+sf0@F+k| zNqnZzrKIy2l^k_U4Fafh)+GZ!8-Cw;tc!%P!*P0#9+Swr(o19Sic1%5c*5DH1`ugZ z6F0!6Rb+c}k=)#ON9$h{2G!3ETPfG*ArjpcB}trzvQfFI*856}-uYJ=lbSUw2WDx= z^$f0FkMmb9X#6|Qx$H+Pu}sz>ng;fxO!M=4d1!ce1Z?=t_}I9iPDZ;u2P`tw>_GCOlZn$$=Cgi5`rg>cf)dRO3SV+7I( zpQ0YO?b@2|NK(`RdFX2Wp474ttX4w^URi`m8Wcj3l9O*-q7#tsV=lGZ04s1A4O=bN zj5n3~!kUA2A?}U9`_V^WM5#SmBK~Rs$OB{&2HwOZv|q)e>lw&c#wtrROSrO`;lb*N z8P%$m1j^F>?#>WtK37|#g2aW?31^JXs=`uD4w>M}_0~#+Tpst?-NLZCfTe(Qz6N`* zS3VEYh*8y2$a6dSxgz9jwCyacJ*xV^!5EqmBeL-zMYQ`Xe-Qw}gYl9EF61`}^R7x5 zkuYFa5scJ#O5DrSliLxMHaevZlVPRfeD?y3SIvq?;pWLBaxg^bRcgw(vWd1tC(DN&6L%Dl-0C ztpv*!YnZ-EfiB8F+v>mv*sVGVD<&otosPW8ws{v`? za9x18G6myDY)PdCmKLk*yo9(^tW;7eeGP|;(wtto$GK-B7hz@sZwc*i1by`MeXfLf zEmI`XqUk^0cVMzy+4DnVPOA~lvZ)7gdk+zL;YmNmo+%7!7f9VURKMyxq~;?;$qU?g zsK4o+tVe#|{~BP4I!4}OAZ8>jNH%LcGfVW-L>`2S+MFs|I>Icjdgsoa@moR~Q;0u7 zqZaLJjo1RhHUElnEeiL5i{!hti0JIbNyWXBKy|=Yob5 zz1QGqS6McU1nDWpGW78s=Y=V5+{OT?6h8 zzoqG-`OfDQ##&D$Uh@2k7?mR~Ljz#@{}AA-c{KwF#V>!=4YGWP=u}R~Y_#X5k~WD1 zMojNzH0LI((!E&M0>yO7>+jyH8WxajO1Z_?o zR3%N#bYu)_PkJ(Z!fBI|}dv6h#p5>eNr(>%9v zjukq>HqjEO35qR38sEbnY)W{vj~I)v=jc^v=u$yK_k$|f-V}+F66+cCHZB0$yYWyk z))8N#1mlRT3nzZN@~j&D33hlI{`^$jjc{}4C~UC$ zaAj1R5u@LnCL*dDMsXLrOI4?~WQjlY8hI%cw64Vj`->T2B9gEChwMBMU|;3pCQF3= z?>_jzNKlQCE?Y=uTRB%D7wKSl_}O9EFON!3i*oaN46MSPrJU@tO`HTK1hmIX=8|U5 zPBv0)2De`7?U%x}rHaEptLeqTZ8uN92x|P~Kt}OpYjIv9r=zwd&_&c0*e;~T*HRIN z=MVThtk8vsQ^FYp29V7~31UH1QbreH@-tja&hZ2C>FWYUnL%9S8JAf}Hoh7Uq!2RX zmC8)o+he}hCT0#{REgwCGVV7kX%Ra*EdJYZD6Y9Uv#wFb>r+J$b+lRTN)qX0MB zRYBxDOk*5J{m`>mN&Rb-yW59ECKA~UkYh~J%3j)dLcCUZ&`p(YyJ5e3>T!9#H1@~B zN)TATY&HG)1pu>JI|?5)@fHkJCEXNG3D69))MYD=A9^W2t~M?fFAcf$7Ec1HdAz?8 ztu{AaDHV51wyOX0ho-23r#k;L7o@h!b=(h9eE(GJdp`Y0!9dqh!Gvq!Hf2=tqjC$l zO9Lw%dsDO|mD>5V^a-DW{3H)NxhlV+CQ*u9=+=wu80eS_ch4vyWLyh?paasD8|zkBaN> zKvK4d@V@)n6I0hv_A=+lnVCtGF75}ma+*lreLN*ZH3+S^RgCHONLuXBb;DKBKjj7A zBB$8_?v3$#c7GQ*w<4L=AFP>X;c=ioCIKR>e|9yh@-^T{(+1FcMwL_yoa{GNAqjyn zY<3LfaQLZ(b5(+PBkU)_NMeaDV z#}#gCe#%DI6Yeo`MRO z^s_<+CCBZkjrH;>wz!b$y#33a&AFKakhGD41)hi^yG?-WwhNO6;M|W&R8xU>?TDB2 zw&#>jOC1Jlb?BqXsF<;ZG$JK6v{1-dkh82X$zHp|28eah_DEZ3S9A2;GfdFe!Kt;g z5MR^?72yS7tbDf7Z;*j<^*mks>1%P3)# z7C|bCzz^?-WDD_8u{-q;m;w%&Evb6*>#KP^kh9fAXMy#f*|diVI}vXqeH3?~0YM4! z7jBobQHCjO;Kf0!W9>5)?%^Pv6?Qc7B||`mM@_F}(6rMZl$|WDuCj9#KusQcTF|&% z{lp8CR;F^yZ)DT>{?PEdf{M%h*f=EkT1Ub%CuX0vwDHk^TzDvhcG8%h6(-hz>X+@{ zQvKN7CG?Cg>|_nBVP#-iF!diilAoB;=KEy*4D1t5F=cS>zU6^>c2rYpO#NzWCASt( zss-+|iJjj6=XnJNHDHMXXYM_yBEgkJ1BSf?kbQHF-uOC?ebk_kI7nyDebfWubj^%V zDDkb@!2#~0eaQ}&YY_5g1uXx-*2W=MhJs7j8^_ldIOW1jf=*_4?)Z7baLXkTT4Kxt zB$uSEjLX{=dS+s=@?u+n#=^A#<#l-a9qYv=K!jLO<|-}lLWlK%;7HONOU{Smm$*s1 z9>=8vP5y5kN+h8$j#qzBw$dI;;5x}eH%zN+9%_QDrnHH2`E-OJ)bqsZt-cJE)(sy7 zH7s`6v;f(Vk317i-z8LmG^ZWX)e^(}B!{gr;eUFJ=~B9r0T>{J2b4)qt6nMb8`>C2 z_%3m;)_%@p5jkvn5=5;`5~#(P&-#Zvh>(N2(!l^wbpZDpj71X|4sxV?d~Sddz;$`t zYhf}rJ_22wsmH+C676IIT*|%oM%24275t1=;3Qwn>HzZ!{}I#%k~;P$_9X#^`{|XL zI9z+SrnJZ%Q3-rhgq4iW?jUasmCy%ZX(Q5BM4X-kadMe@gQwL^NJDr<0G-*nUd%ta ziV(qN_wJGTOoNQx$CK}|1RTf4(w(IQ{WW-jWlE?LanbcsgVD<$`XHIS;Q25{H~fCxul5rd8jsx+cz7gfd{g zt^3GnWOsf@09W9j;QkmZZPB5r&tlz;?jMLyKqf2MqTm4kKLEhOsYjp6x!s)+ulHM0 z)2!)zikxT;DNsh26UTN_vtc7snmYn_?6GHCS;QftuD5#+k|g7#M3%q{qf{`K&|sis zdiLZBVYlholgLEOvLL;ur~#gc1OL^I%T{Z)f;2ma)odO0em5E)xo`wLiy|N4;kCD9u+S3CuNXGj~aYRXT zZH4orgM-AhSpLtit32Mop1K#gWR*%;DJE;58Xq)U3c-kB9)TvK^5CRb;C4aK{uEF4 zK(!gWTrgaUJw%4I#$t|b`XLYG-hun5G)8VzPWEvEi>VQx8f8?E7YZ1g= z`vU+Or>K&gfT^g7D13&UPIQAEKq5f$WNzHZv!xsq% ze8H;qf!2sb0qBemJ#SR)J)-rK>*Fu>`|jeu$2rcV)9#;bE>Hc>`M;`yXuulAQ8D!H zm(#Qas!f2k%dl(=IMNT+mxWr{L zcPbikot|o0*7k#e?9A_b3pZ9j9~BR{3zVZqO_j0Qm!|Gl zPx2E@FB#cw#%!%^_Z2ajP$!UwIlw7-rrx&bqlI}%(ummH%r{I`Wb(OkTeWWe*jnoT zK*?rq-Gz9C!V{X6zBWt*KZUTPJ91{+HU~*!S#+_hO3Kx&+Wc&0#0@~vqr*EG7qnqT zJ}O8uQXNcgTfLn$4qry4Y8hz?|BNC_LCED^{Efio-bsKKY!n{5dyS+1BFq(|!zclv z(P2L)B=N%cF#bBwmOgEX-bLsCTF4B5lVmDc5O`fAU~KR*o#Zd?M&||hd7dtWq|#Eg zpFoge-DgqAFky$qn)!PlXRl0$+a;boz&r%pY2R;C#iO)Bs7S?|+>1O#x%R2#**)?W zQE9W_BZnf?wwE?Zy}WeBjh{29H%OEtawi`iekO7*@=5#ACBvMjtEK@pfH4dUPCHL!@&*%TSNO^{Qz?bhign-T43J2&Ne^*ornZZm~h zXIER8TDWEqn1A&PCM(D9l7)TkQw$q0X`<^fz%XD#5~8Az@3HcG476#TneU_;t(Vw% zt=*vy>(tURdgSk~b*js(dv92G>yelT+c1rp#P^h1+y;KHn3m0%T6fwQ=7I{lYjR;z z7-hz?aJVKMlCVY7aG5I zB6K)EHKrV7Y3uN9wzv~#y3+n@VTKjZVFaasgOV3QE5U$jiRn7}f_t2p&<14Z0JfcO zcQBHjtxL_&g#QQCht!Ee#7WR9aC4VL$;|~g(54F;r)%-vI#x$MZPeX4YR-d|c5>%Y zn2`je<0tjk(26Bv-veZ(E+A_9Gz3O>GdNM_EoQAnYHO~AqD5qau zL#*TJ2NoC`W^##Os3rp%^s1lTlvG%x7ru%-6yfPgJk2mG^z?Z3dqlU5RzB5i}g ziR$odN?d5FlLC+Sj&-KQl3+3$<0Fvdy)*vMdzK`Ft#qk-m0H;;iJPhH6cz!`f8_H! zK21wvkT7j6JgJ6PR~U)h~0sDgC407&u^zrn~6q)Tut96}-~Oqr*be z1!p#YV3+M`fg7k+yxG+aRWj5C{y4BB@fy%~V6_c0|0A(A+21_g@FN>9tQFP--=c?)@EH&ix*MCX+<8#YKN|TDx zaL-fR6`WeWxOP{-i*AK4Vk#D)73GQPgTV{C^)xb$)PfQ3_Tj)WdlSc^`05=NRF2s& z7xe(;_qZ%4CiRNm^1Rlp>1?Zk>XwLHaGb3n156I6%eFS9uPy)l%e%7X(a`L0CO47X z+S2#~)ifDZY3$%yMxf>ObzC444zYX%e!4Lu zKttPX(8w|Rr+mEwu`1Bc^IP!lHJdT?-QTxHH`iSTfg*57MrxE}cQ(%o7#k`hYvy1+`g}aE<(y?Jp;vyd4lmPpRNXg93nF7x3ogRghwR!|Z?Xs1p>vu- zb0At#Sz6**71**W|THyy~AF`v(8k;mRPoz<;y;g)aE&?6U_W3 ze&?ETW>&cPy?*se!gD@>W)GkY!5Xx=4>??Xf0@o`+raN0l*|S58$hWem$G}E*N`l% zIff{Y0^_9ONzsij?e|4iorY(S>(9spnT^~0`@_E{?GzJHB8xGQ)oly+KEEG8oQGrM z;ONCI*+djM7oD2PEXkkE#C|fl*vM!&Ye2ot(Bc(PWypOf?S>jLfVWJ$B8?>QOHtbP z{aIv2db_S1;Jmeu(JRrNxUgATy=5Q;nLK^*4Nm6oYyj_;K5pi zgNzIWWNW!7@e8&=@0Tu*Op{_Zm*a#IAj9l;bv4Oi-Qw}i%zMp?;1&O0aC%pGFg4Qs zPISd9bY6|UKa{Np{E<#OC%wy&Bv9Wo?UU}5Lo63ErwAs?F;R#a?A3f=Qj5(P^<>8m zt56FuDM!b2mmNj{t~*eW*>o(CXr&t+c+54A!%g*TQhJ=jMsiT}WH|63xo#2aV^x7D zx~>pplhFFKH!H#l=kNIqT_!~1;@w<+5k@gHbno@l^K$RFzI+7Q(kS&NCDCd)7 zk|t}Cot)qsp*5S@a z7Rt69w7@u)&)|Z$J!dVWdyM4nKPt0CkQ(SI`HsZU6H~E@FK64KsKvm_(r2L&ii0i( z5!!Vo4R{OfX-^t(WaDu2*i^DAn-AY`)k(!ODMm2p2XSPp^9aflG8DF)DCkoC+RHd{ zw1uIBSsD^+aF}9pCE6dZho&?KwuZyeADGutLhOi5rX#K4!&Lt?V;sv3+GB47#(RXa zMrvDeLRZIY`(V@kwfmR%he_D82p~9Hbfp5@sUpd7YiC2x^<%Dz7^&$xfXw)bD-E=1 zb-cra2kouZCn(v|E=y4u&H?Kyn z=a0y8mF3Ah+2q7!E&WWJ?R|xjH`4E$2W%W%tY|$BGoMEG1bi$jCjTMRuJI$hfoav8 z%!a^YwpBXfqt%XYh9DMp9Biiy(={$?5*`=R9y-2D$CtipUJSDT?-L^tqWMma$X`a1 z8$JCQeRtA_3h;KWr^$vUZs*j%H7+g6`iA&DVGyVxhzrY_iYTRN+o~aNnEPAx<3=5k z=3H3(giFa;0Vd153n1#~-rNl-a}+I7`E>OIWJYeL*(%>g{u{7Kn8&Rn zaN%j1AeJ+Od^r&-dhUh%KJ{4LA#>t=vp-AO|+RT zfsWrBAnluJOqOX?F<7?>)_s3ted5M>TZ#wqf?&T{r@dV6kNoRFJYe#Xjvo^&B9@Yf zj%U2#Lg-9LeOEOATz6mnoEB^x-cz_%5_HKXe+R7u19oTYic9l9vnUakhdn!`XG=!u zvD2shiFs5M{N6p^Z16i1b9_!3ps}kb|GX6zM$IMs{zk-r*X%}!+Dkj<<%@t{rEryp zDeAkR0;#|IOX-Z85X=LZex@Dt#~o4cALSNY8L^MjOg)UncSRfCLH8YIg^D=;*$F-8 zXaQ&mOu13bE?jlqvay-QUU7KAjHY>P>A8@#|2pe!b$~_u845CG{EsNFKXHc6->=oF?~}VtLT8|t5TV){*TEJs zbR~Mu7EPO|64o{#5&s^Kbq(og4FU+U8y6arelB*DF3`{By&^nF?OH|*1Lmybm9dFY zmH8D09-iU`y!z(g!;iE55xkjfQF3y!CY5oVZGyU|3$`k0x6W(u-4;{SL{@=6np6Ag zHH5zEyS!*Dm5v&DcwtrdvU|HNVHL)9U>E9vZj@DkB?Tya<@y*vnH>3rUOZYfzv^QT z%*O|if2?6@*g+_bO^>AmV?r?ZL~94u`pD806~(9}G|pa*oKd28vm&@&RHj5|U2PPS zX+DR%cf)SLrz%Je_VUu@s?@mKj}T0k@siV)aUC$$yusgi1^72T)=ekjt!DKAI+wDH zE~jcE>|{Jr0@x+h_DtPMk(=b^elz)FNw+@W`LAnz!DogUa&|EDzdgp@pJ zxAHxLTAiHHCd5H;ILI1v_oB_MNxjO~LIs|Jce=rGk+HG!w0#*d|tUAdrK^ zKj+dliUofDE&LPhx@VH{Jo?w6;dJ)<#a*Bs=@%{grKij%m3;GPFG&~Fx)Fh329dw0 zxAFY<%hB6wDxhuw>Z)d(kaGWQ?1-1 z;-Rw&=ZARYfKzOIPAQ_qf>cN06BcvK*p8K?mwo_}bYcMtoaX@vd9F@BCc}I?C#xcE z1?JtdBmpBEMP^5PNhalGjseL#D1#07FeA^_425>#5%@&(}E98(p#ii zP%wbCde12c9K!~gMi_V2j_P*nJWNUNEe!cu3M~vDRe0FdX?Dh^j^;OOiGA(^?k&>X&4>ca-u z#t!Y5@VT|mPY!R22{4XtI{Ye&D5Ld*t#Hb`MZrmlp}BEi?7T^@yv=@Y$yP5{u~o_z zu9WOkKIZ1nrP=!j5=h81xOo^)12q4DTID^$8~Te-ReF?EpdB+6Tchk=*>>6z^=>n{ zJK>BrOe#Y|PV_DE0{LRbrZ_kCjXiSS44>aYEIK z?d&T#cap5DaHxS&*dTQ%9e2&yk+O}?^WlK{bOha%{R41%py`0Rtcz z%cD_ICP=LG8e#Y+#^S4}*3mpmT%6M`xk!8syfkAG7hc0PE0(Vgm%PX^IF&lm07p@N zVdZ`HWYtUsKV@rUyM3BHA=WhUVW&+an`dwnRC>8Qx9-|A)@xJiSiCM+-<5!yZ-R!CxpSGi*CX72S zFslh@+s-JJ*^G1G&U@T}A4W4rP)>lYFd`565ufMtN)=YA4)}ebmbFw6m5svcM{eY% z4yS~9u5-;$-X~Kht>a2X!rM2*WT6lRXdZ-_g!18J!khmI+8(c{aMrQW`P%c%)rRY^pU(J}1|(EopP#x{c1TER zK?#Ym%$*1!F1R(rw2%1Z*<{pUvM@pNBsdlD*(x(OwdvEkl9eonh>}}@?px(;DG(+C zd1(57b$3cKXmsYYdw{O^p#kvn%Ag;4;lq8fBLWmEEvHolvkrXAr%^Iz*^}x~!aoxE zrxw0g3H%oxSLEV)d#FH+`7nuxTbIq$K7sqc(jYJFEHk`B#PvI1FX%jW06z5aq&z4v z=;`5yI!Wnd-K8*nS95u~whnF|4{fK}pm4Fia+o47nnQ+MBWp25{AHGTzr2fMPfWI@ zbB5Pn+<(T**xmtY9r2kpnYc?mkx$hiihtT^j=;Mr1N{=0unsqYzbq(+nNJ!a7VPXE zs5_T&A^`Ufgrg}o&!4=lga|Apq~(0`*52{mxb1Wh&cYq+cexWmVuy}Dm&`y#e>y^T(WpGc zBV#zu;hnfcrGk;t7!3G%$v;A?Xswj;t{Gld=Is;$Cq~Y+%tV-H*DD>ZL*hl^&9Q77sX$XYx1gUC--eqLo5y~a zSk3a7pfR<}Xa2ii7d5%;kN~H^BH_*&?^lHq2mrcHJ zc^J5EZpXnteV{CyTd1X7M^=wAiPkQ=hO^QDq$zdU&FCr{m8A-Eq|$VGF$r&{&I&5$ zuoeP{Gz-&zgSN(g&uVF+l>PIN^+)P|6zY7ZBI}SN@XYbJGPtomQmhNIAz>37-62;WX1NaM+`U4g- zMCcE1(4MH&D;a+W<|Z?!OT%K?yRPAhntQP*BGc@n)1}McyU;N$EBK+Qxq4Y6R|gOG zY>g=ntsABIEXVY&TSpPxkPyG$f8Q#5Ll&y-V^+9trT0$eDbpFuHeOeC|6iOOiJ~G! zx3kG;XWbtgOM7-jW|j&6IzJoWH6%p_&{;o{iMDaEd4OdGMu0O$V}C|T_R|sHdYbiZ z$5dbo8J?!mBll%t>ntikXK0_{S)Jz^M(EOvGEf0XV+_S!$@v3|r4IIb>amruFtDj`BhNxXkKxI495Zy_AC^S8HUuqB z9TTX;M@f?e5OT0rN%NO@6Bi=YTGyJlYOmdrR`Ju6uy~eWqEa-hCgTZ2s|z{DeQbIG zeWV;d^%XEdN_PL}3>wm5U|i6z`)NJ}DoZ@pB`Fsm@o%ygzOUEdwQ+lsmJ6o;(|py$ zh-cDG8ZIQ~b`e?IX+@O&3{Wh`hfVZ!=%N3wT9JHXz+Ao_YY}^FMqm6bGp^6iOpJ-J z@Yqv{rlduZ#$-MV1#dG1<>q0dHRyp5bWKX^&M4Knm}!H`@RCqO`V63AQ!2l)jVfVd zYwmSP(z(ipgYE!2*~q-rIuS?OGjh&9FgFMauxLH5-Yim`7}U68x6%aFtF<5F9w0Qw zEbNKpSfsA0k*Z6v>sR0{LV1mRF-$>0wG-t9!wWuE;g~0x27piDk(^cT0@|O z^-c$|5UCR55l*wt{Qm0|@apT(Q|v^LS0M$GFLeJX{mDZ>?bG4t>FmD0flKy)I37lL zA9t~nSgH_yqA&FaUmwk0)+VGOUhHy+MoU=FFDS4?v18oWT14l3aFTf9cjR6=MF?BBvcATXmO z*gm#FL^tgCTXM(!0!Lwo;qK%bKQihp*5z#oNn%fpR!zbvS?FWes)zdC05+`Ce~>w14rjZWo48kEJcFSJ$f=OiP<|I- zwsA*RTjR)Je=ScHj8rsfBfus|7CVU8y;(jE{w{p!s-^BUXzKhgXP>`51`FpYM_cWJ zTh13*K`!k*FfN~=zPiw40@(g9-31fOZMLxoask_ciP5vR++}n1PLN)!l80Rw`^%$k zLfvDudZ@W($BOe)E7OOZPV9~#iWy-Q{uU0%+IRbYV5SDKFYqJ?L}5z zS{hJ@wUz+myMgRy(de}#_qZ{n&~4ZIc3VU4oZ_D7bdZA_f3l6%NAYp|24JsBDEMH* zI(zPJ>83|dI|i){bp0=VEB1qw@DAV_y_gkiw4D<&^hH=|DoJffv6-xWDmz}GzR%|` z@uy}$4#m!k8=%BW%TM3(@L67Hm}gDeGJsO=HgAAyMs);&DdTgpwPGL6sukYMr;Y(3 z+2ut|iy7@6yP)-BrkuVp2!R2rf9wI75dyp$-K7?&MA+(btCQz|8(^ujpDLylC(-Ug z5~}6<2R+-Uu@9mSS4w%getO%J2fwDF`PRE25p@Af_NTy$Os0<6m6%@>pOFRB!aU~0 z9;}$Cq>M3}*kYprEcO}WrAC$#;SF_gwPS5XNy$FnBfA&p&U|7=?oRql9e~6F4$}=A zte%eZk*Ill$_DzC!G9vlNa?7E&>1=(ser>O1-0)%N5~bT@b4*te9;Gygx_35=#TQ1mWJ~2M!n1l2;(tLkMr9t`(FnRGbWWz3o zHT@nbyB5Q&454E~t|UNYabWPpgjc-?@X0*u6+@agSO`nZn`f$D0%LL|;r-tqMvvV{ z#)Fm9W%eSb<72WG18!NRsgQ3S*$>rClI*0619-^AQ&OZ~$q-}Y zPazCuHIn_g7VTLSK~gyyEvMdi60#+k2RloMxiG(~jDX^-uOI@jPkXESfiNJn*DC6< zV>PmjMq^!#B9X@xlUCVG0WVIZw|~?K|1*zefv$?sPF6XYin|Y)xJS(S(=SnGKjk!!6#?Aw0YK$?q`& zCYF!l-<6RA*S$e{U7h2c4Cv)zjF@8YR5J4WWK&L1eEk4A6Mo^mnQ4OXmg6o`6Gqt}Jd#z4<;!*6qIrcxpTDyeWYlS2N8Qgb4lg zrK%7BQ5~tAfH@9h*(G!UO0d~^u)^WYqDRQM80a-_K;pntJafQAjd^N>H_(%W0}b&E zwSN{z#GhWz0q3IA8W`OP>&k1n)9)cxv(YDl4J9Kk<+;mV4aAtjwfg?XwjVPe61rCm zW^e^yPE#V|?O0Xw9^UNUdz9X=Uw~c6Q@zKY*_^>*${)V3yY|jL$zVLjLZ8Z z<7$_;9@&Vdaoj1G1-L6w1+7b2Us} z60ZXCZkK-HVSzBm>Ra9?`!AaYb{3K&>fV-9IA0AP7zQzTd}%>0wo~gYfRe=6k$M@Cdc%gW6pgxZy5-GC0k{D!66{A;1==i0Tm)tkCDbZ9ID&|pP1kzBcF@D_@`6Xj`im? zW){W@XI1&9-`Y|LToQ06#r$@sfnE^|z)vG4lcAE|^UJ@JMpbAED($PE=F>+3pY;>p zCr6^uax+uLU3tEX=j5a}lij`S5(csjm(nQf?;Eb5FEk{&h~I}w>GlYGs;%?QxA)B0 zdT$|Ym3=hDqqlqvf5^*7zfm%wWHfiel|I~s7L{{LZZ+^mEpd0hI9))~DkPh5k)p^4vWI#0 z&C0*Qt}*|Tk@@GWXAYkwH6#Sc|B`5HZnHSuq(w-43@olZ0VTD8#@F~K^a4TxQaiQL zIJ;V%=_@9x2lYc<>I(iUG5LmjYCV;J7$<#M!9BQRqlJ3zC<0MB@|7zUlNpJnD&{Os z6HG^Y)SiiPFO@jCy0we^GGSmTAd|Z}hsPXFyUy7px>6Ua4RUa_0TEffohYC>LKBpY z1-hPyjQq3Zve&*kA3ie8IhQT_k*1t`Wpvj7#u_2X?l_Pbq*Hzyqv$E`NwZ?Ta|{Emj#FK z7wH&;tt3ke(n`=PHU}?@OcF4jd3+txYJE3GhGsP9LJqLGT|1c z?`euiMW7g;9%kl2;SL$DFq+x?`>XQF>~he#P$X8x56n9pvyg3*2)=aYiHXn32`m#- zCtvShRp)(EG{cKm z_(8!u#3vOy&|6_xM8kWX!6FuE19I1GC|t_j^z*;R*3<9Ac37{d@RG8^)#0wn#_oV_ zqf!~M;M)_0Zs+`OO!?V> z;PWEZ=uLjs&L<#cc57vf%C(gC(-luGT6h<_*zyt0wu2u&$R@zAFTIM_!cB?#OnB;9;d5rZnSq3ruerppoM<^Mks)pN2x zRf8(0&3jwzwp*Q!g`}NH;5Zqc;`*jIwed!@nxKi?T-Fg_cKdnd&7_K|C3k?o^&N4a zM~*zt1Q6YsIkX{$T09d2GA;LeKxOR7mXQ-zqjRSHg)_H2Q=>mBY-t%8_LmQ`-W2P> zEtT^<7p0T+n9xRG=(H{$Wyfrl4YEPlw=kXPEz;}8^xE5V_4Fs)wGN`qGy@o$A(gRj z;3pXr3|*Y!Ij@4*_!6jOM|{FkdT*6@pY0CDO}I}8Ln#eG-C%`zdb|Sn)+GjK)K`<* zg9>2^-re!0NHadaOG;(^?$)lT6j8revF>MSoOtqEFhi+wFautb@8}u?O^WBCkQ7{A z&>!;9A3~!O*TuIc3d^tyr(suICw@PPAer-OY(Sa3^spJF+P{H)2zRLA2oUhM&;ko zx`>p(Ipl%X5$dX){~bYG3sny$!|`~T6LzSlxT#h^!o4%FV)m}vhMlz*ZRZ7s)ZI8- z+?*t-UzLlUulsE0AxGwD<{^lUc7pynDV@suw}1=~@C^t_U%N&Wu=|2;@kP9&L?fA! z8=*I1xNswXjk#^Sj?sv=El)I)1vNRB64iJ6Cd{|14L|?z1m1sr9hKI~b+N;QUp8C( zHB%GT7zIItUv#>9C}QE{aZ}=prin>F_&1Nc<=T9eB>WVDZ{HgTy&}`+xBUDc|wZr`lzu3Ju4AKrh+VRC)#uWAX%UJ;S7Rmjay)d zo>$tQBzu3A{dko2W2}nt7$pA|Y`P6v#Cnj`XjkcFFk=XvAy+?q z65lE3ZnXZoRdE0?hek5EKo=2*$_>ZqwqpewVCK+)v}kLLx1YD;q0w&r22-x`R^j5q4 z#XuN;XKh5R8*TJN*gEBC>g8a)qv$W zGV4`W7y=l?B;1)5%0Q2W(5lhenv=BW|ErP0iM2WU~?* zh+x}vC98b-4JCLH@rSy7Q52};u?aP{Q4+rZNx1D6h=@COk}Y^cZiJZMz{42h==H89 zO#hIa$%s2DNF4YCCvfE!0yY)p%5$`Ni;yFjTFZtry!0@18t`O2MmrFZc*+Sa{pIAl z8@>Le{r0T*`Bpzzscqq&8)0C_GkkwEE)z{LV{0){0y-!YHi{v!Zic~KMhJ@ocpQ{2 zTUIEKglEup#BG-9gRyxuHY6$3>%gEIsfiLN|+fEd}Z|44EP*lf*30tPPYHc4;faVK@ z87<%>CT9O906iw-_RU(01XZ*dv!>r&%_=X%i{cw)zC>XM6plaz-LaC${xO1Lpb(@Y zsP5W2jiYHj34gALBO@dD6Pj6cT0QGjUE>Y#@da^0WG&!Xm$I<(VehGZ7JqlIyxNI| zr_Jz)Dl-z_)B`TFz>@RWbe6iZOe{To1kQQ0o~d&CSN(T&gN zVPpC^me81tj`W{jaPy%}#8ah>P9#LpIe<4(Gw@%lS%yT#{isnkkcXDu2Ai|{86j9SGY=c~Nzqr#l3n7TkM(+)+f2{nX{ZM}mQz8QWY_TW43;+vI! z*}IdcPGFG$M^kd-Tm&8oL8)~`55YvZtu-SnOmMW7LXc>iX*=^3u}eGfK5c0AZ_$@Wb@|3gcPX_djEm}U0_Zxg2b^22uKhAc^IjD6}_h_Fw zc)*;2RyYsd(WkUN0{!Leg4%pR7byL``(a*3oSPv&NTdx`wQ|v@=(nOo}JwbbqBNTnIBLYf9!BP7nYQ10#X+(#3Hc zHk*v3i3M$W*0Wn&z3*(y9CQ0*b&fxs(qS4=5Q-!;5gaxwgvTG25Chay>9VcqPb+p} z2_~1#{+XuPKE!G5fBg0(>(JY6aH$0Fg@__*Aj{bo-?$A2a$3G!|Eg zIl=(0h!Hmj9Q!8x1JRMPvG^uFFL#^cr8II1Z=`#31lDC~%sP_dCGJSNy!T0W1c27k zL;46)*m`*uXc0wEKgxQA6soqPha@WT#YE-(3L{Q0uHW{8u}V2lmr$Cr#Yq4n<`bM; zPLL2L?DtgNjk%5kpODMmML^T_?FlBRWsJ?o^znqEp>PSF^*;X|v1+!i?oBU;*}&1i z5>YT&l7gYIV?Te@`uPt&X?kjLP59qBQ~%8RId*oWm>=hnGISaQ#k7DRUaAj^W+bKL zE4@@HycX64h>w0$k@BjS!*#G*tP=$UR5KD_k(o#)6#f|=Ni#srPi|y7Yrm};@ID9^u5yt%g;%-G6Zvr- zQltUquXJN5?-75>qxTTw*gQ|WV8KE2Tvpw-KIo~rLXN{|;_~H=N0ZKYUVA`o8e}-N z&WTcmrX%0g1Ik6H)@$;h)Ts+8{(+Lo%$c*^Zd*f1)_869K5Lrx{#3iH;iCOi$W%H~ zy8-)q!H@ypP;?Ar&gk**+o^BtAk0F$(=J@!MHuh#7IRZACQiG^xhv^XKCVeLyQiDim+*9lYa$iBtp~LPpFj#fzL%Kxo1Wue+Yy;wtM|>f~X7+8Og> z0_Cq^qb3%jFaF-s>J5?KpOYV=6$6^buO?C+YTCyg5j_du3L{^Z6-4|J1^iD&8m}MX z338IslnpWu8I<2!XShYuQ`x{t4{hn@fM4%X;=?!0t=ovVH>z-5?oYg*K5p# zIiPeh<^7YsJa`qD;$tg+N~_15$A(7&g0Vu;5l(9dEBt8>sI_L}M-Chhy5u^t=lzV3 z-00akQI6~(EI4gcX*HFH`EQNN=%6{qhIy0@f`}F^)l}4J(&6wjWG&6H$c!X`Jymu@ z7Xm1B7C+*K{B$zzPODALgGx3c93vLAH#E^AAV74yA`->Bw(cqN{Su$_W>`0q4_GCP zVS&Y2EI<~$;kE1z&K{TNn9|Z-`(TW7`^?&LMdO$yj9Y+vZ{s%Ke4V_Xx9==sNUhzB zyOm5{u|ZRlCuSYl!(bb*Lc?vF_52Rp2F%HY4-btj%F2oU=h5?KY(0~6rcN+&3Tqn9 zZfC&Xfck!>cfl?-_z-~a9o)$W2$a+yO|8nYig%)sL^mR_UIun*raDz@tZQkbpFyZc za5*YB(Y4EN&iK!L72g6!(U_Tl{=sF{y`z1^I1jwAUnZS0MYZEAHWZq}4PO)Qh+?r# zzkkx>R&kh^kJO{hp$bNED=S`x?nn?7=(p;)~_0XNji4wpZ z<;LbV1(!ff-p6ga6H5hw;P`l6gm?1j$^s+*&eA~ANU|E=)6rQxo1nB!`#fn#Tp(=e zP0VUI=A6#9+v+M9k6cA$X;2jnVDyv~)xJOIyA10_eCXt@u;c2TSWI8d>Y~FkKyl0V zpD4IYY+IrEx0MZ)3D@zxh~uzE)DUcIc;+~a^qBtBlF@c+b0bW3dYR;^fb{48pHHE% z)L|s4sCvKHDieekP^^c%1ULyU1V6mmnsp~#42LD0PXFh;KIK0|d{VMzOVzT!&6Vzv zVrS2&0w~0r9B0vRyPxo3z=gqzZeb~?B|+k2kk}$h!B-*j7r^@$Ig*I6(VlxbCv(Q* zTe8sy0bK7#6A2qY zW1ArZo{){tFZ$&W?KI~b4{-^iC2X}*^uDFT6Rm277^YW4tx%zZc8-SEP0%z-@5pR| zBuXSAJcb1U1Hw$v+7!CX;FUaZgG<{c;)jEecjwm8Xm64n^sI)uTd?(>2J zy}&gNch85&iK&}xR+HZKABrfT9_{eWRX9B#EuE|;lsKH)bM{`EZq|KVn--rH`y*x+ zO7e>d;`uxI1PtKZ+bjX%?WQe2kt4NjRoVA(cw(D-9ugdv&?+mwtjg z)4Bd%lk)MqUd-Ica`*1aWHUt4l9=72?H+%8l zxTB>v&nVU@NJ(2B7}Y6Isf)+A@C7Mluk1-NcM;dI{X1!%*`?YvL)>tWz%s*~)(_#; z@t|-HvYHh$|Bwe6RZD2R;ewJ`r9RrIfyh^+;)MP`=`N7R@M`)1DXK!8d7%=oyMM;> z>9(G)lX*bf7jq!>nAq|e?M+uSC}juyC-A(l9JNFxPhr_&jZm1tFaQZN2*MX;>h7}{ z#>Wu`#xKFCSZQ`vw$eUuL^7|=s?vh?`DNUyK7EC@KOFjroCI~pxRQr)X6}u@7B0Xw z(n{PQfVBn27*Ko00~B{`V4yF|rAsq^_zvo&i;628$Rbv?gj}^NZkEa$wtQwX0`mmc z8!6r9)5w5)*+7up9Ge8yNDz7a-8}ONfLV7#@rgKv_Z49j9Tuc}lNzls)dGHtrae#l z)be(oMh=t`C7@nv<>b;H4RX6EjZujUKN19CIvD>uH?hy2;W^{NB;i?sCPon|YxL_# zDKGq!rwzr4fb#;Eo7`^)O(Di+X^muo0a8UmBXuAr3d3}gL7%K%GIN^VNwiX`n~SF> zFx%2AjPX2v%kHyqV>7fUfpkq|y%P+%(d502%r)zMG>jp|dh7MRX%Y}sjnX0gE6v%~ zi2n7rxQ z7I?=18{YHhPDJFBz}qf7yOxA-UqPL;mM){20zO6iZomr(rHn0c-l$0P)oezrR6}9d zY@^?#Pg?%V(E@OOmncgcEG5CgjXW9LC?8i|Az`yS5`#arXOR1U8&HhGwW+S%u*B*> zFkT^cBf70U+2S;iNh1-$fP_jE?t~Mf`4NdVnEj{WEY^F>|HNirKa?vZqXy`xv|BD9uBzs$V=ISjy9ISfD@c{Xl? zaYKS%+yI>-N=RKbRb%>#5?196%PEy^L>~4Qc)k3@cvik|!e@Td2%|Ijq#`vuSy2Z6i7uo5f^s<%i}$!~%R4TRaaGk17- z*_8Y=FlUpe=0I#XACPrL?=fGW`&4lT{jO2Oz$M!+{oVI9umY@wV!WKU+YV31n-6m1 z@$XK3`X7;SR}X?IOW29Fwo#!nwF7JXqVQMq@Y4NOE)k$shagVCBDs@D$~B(Dq8A=4 zX>Y|H{x0WcGCclgv-TDbI}sEVAak{VjIH+DVovx|9^BKlr>Mhj`<`)m;?<_#2JeI2 zQ@86>5_kLxPT}X>hsvdxs3hld>WF&8WPbsC z@08x;2HpW~*n;rvDS+!(uy`h!C1*smH1}<7POd(s9``c$dP3+%h#DUgJblC~_V^+h z1%EU2UK~xYkR0LjOd=pJ@uFoP$03k&GL64<1~&JVFqKB^K?9 zN6Ctz2Aa7O$!U2+Cd zC5u!bn+b7(7$WIT^|fhoDsxSYK@aDWw#6mRiGj>AGgR!R_*SPmux;MkW*97v`mus{ zw$yq7IUjC( zyKOI;@=9sY-<{dDJ`(6c|5SsCu5rjpw~g(@#|a$-8QF;k=7X80H1{JM^fdXOC_~dB z?qydR0T}hYnHvD z{D&b>D~>|X{>6v%_(;WJ=~x{e_mW#|N&V2}B+od)>Kfim7esWfMjw$Y?LvNiQzmWl zLCoTIEzS0x2_&{UK*FkMBS%Pc0dB2yNnsWchQ@jVVD&3vlb78|q25QvK{2y2aDMtB zKMcvgbtj@ozd?8HUCmLq^nI!ZK6lz+#ADIHBtlE3IGCvAruy!Pa=V>Ph}dasS$6eT zA{nNPte{VgGNuTxg@SRn!9aWLaylf<&Wqs9*}0q5x;d)Do9hQmpC5SEpVkwSl=L|^ zC`gfE4)(_=GTDV7kA|`nUW^$5BQgUET6}5fT2MuxO1DD{IG64vX0M>1a&=Ev)?mX_ zv`yWfEUmfn<|Tbi0w01ih-C+L8#5+3fz@seU6@>En>E4DQ_Krt(%>fN1em2r2opRK zB=;hs#V?^D1j+P}XvHHGCAMFTR!}8##_%=}2sAh((VfI>&`T1S z<9(B%RavhGN6cAFTLMI?IKX^jeLA4Kzg)K#m2EyRxZ}xcX&FO1Fy!a9lF0!cTQhFq;Ig<$83U>yIb)>47+k3yKqW< zvC;S?Dczra3YSH7B*_kM<=s1!LEl2pyV3+uyW3p*$k9`#V;Xcu+86i};{~BcYc)U= z8S*9bhSm=bA-eBLF!yU>i_Qo|;hmUOBL*hOQH8(`Kq#hZqi8t}@zQrt)f02S<@FzB z7F4+1StX++oM5>oQaQqNqHRlby9Q5z$h)e7Fh{GFO`iqcysIZ^j?B)8e8(dI4}(qf z^lhL5t_8TP!Uu;ldOcE6J@Z`?oQLTwRj~a(3#W2t-Wo56uf*-B17_DC?%bk=f=a%> z6ZmWC33%nb>y+j$OuFd|1=7Z7yjNLnD8BKcs6%^Z<4UlWi2+t4CcDVdewPH{vr$23 z0)%>3s*j~fH$U;?7Tfsm4CH{1Piak167-f#nhX5(?qMSvm*gs7+RA9)2qP3V$b4M0 z@h)n`EAljW%k|Qvk{tCj!6S{fLLvSy24>n0*_eKX6isO2Y^?{jWyGb^6Qr!u(xCAp z3RW5krspLB0!?WTncv2mXcc`kHo=UqxWRt1W-v~?rUa5-DLgf2yQnHdxwhIAe=ImK zT)>IfozlEd)BWf{RYxawgE-YGcdJBNa7gxGXC0HZW7XyKph{&;^Tl~MD2ImXh4>|N?v03W zUGb~iRs8Yvl^FVujnJ?DZi&N6XXgAt@>(bVRvzc6KKQbm{?v~9as&I4SH;QZW(#w^lMz6cw$K~hkD@MP+ZT}%CJvo z&Q`JeNC4nyOPe1Lmepj?s4E}X+jYpsia^QBJTMqXD8o#~_J60*)T;iTneug=pdB*% zzT2Cscwoi>4RsT_Scrhz! z9qRBESmX;i1BFX-Wzc8s3|c>Fs)}k}J<6LM>a;sG&YO_JF^Dv?Dn7o0LSULF%hp0< zne1{Wp3CFAXEBk<*bA$JB<|aYJ2r;PhT1)YT9-B7lnPyY&4|S*#?#pbr3fwJa^R+> znuVH=^sahMLn@#L8S--@&4PAF`iuf01P80kYzJ{o%>(js=##+I z>Rx7pF4txy(I~$VZZr&B6Y(vwRkLLzN;ajpNKoU2rxtFQXR+GWB8i_rr$lKqyA=`va#KK!-`OiQoB0K4zOu=q@a`GxL}oOs%Gr z4&7M|tqJQBZ0_7k;;NpBT`&)eg=M^oQuug2m3?jwe)DwZzZ6wtF}UN?)A8=p&P#16 z?nIFbf%U!ou{d$Ifcs9-Qr2xACv=9b$xC{(n?cyxJDLO zY}2w@WzY#=fZN*U&+xTc+aWEncvw)yr!A7v{~uO=+=qC8IOR-45{{FJ`9SOSO+KeO ziuuEa^2R<-Wk9b-l5b?6?2odMllm$Gouqkf?h1%>HZ+w-;m?|00)N_g%xs>X8$k`D z&BLyw7;P!#G79Tj->Qq&K*@UAJVY38+Z~PuS8(n5ZHUD6N1C|l=|K6rDa0bk0q7Es zBzzCA`nZPoD0vA$U>(wQkRdYIxktq$jCsrzdj?6X05(i6ZQ?*30*{T96yMB`jb($TssWZ5C|a0?LAV zvXEGOf3txd;L;Uj9Wk6Up+H)r+u)QkObv!+YOp2I=sECJf~H%2h)2H$4*W{*7=ak3 zWT-7lMpBSH_bMzUh8VM#t|TrlZD}7{%v24?eAOm(x3J|hWQ(3$=SeJ*t_>RxFL*5a zq=VJW*CPv0QoW0q!6tPCSxh{ZKGb$Mqdajs zwnuc&6Dv?k_lS<~M;uVwrAcE)Pc;d7h<;wuh5Ksi%+DLXlaINPa7rjoUP%=9rH%P=pW{{A#A*>N- zcjPM;wO~!}>LoDHfgOfUr3pCe3U!q6dU?P&SoeGmW*bpVbmQ@up__fobJ0~8v!*{{ z!%!V0SWH>4c@vHdNr2+tN-m^~c2?_k0u}xs?B55$@9XbibE+O>ZbaK~C^#0<=*gl1 z*uOKo1T){9aHWj4Jafs?sGY*O#EjNE)rB( zdD~~IH^j6u%YNW?K)(F0W>?i{LfqX=!Bp_mZFkW=vJA|9x(0fUH%8EXTro&kNJ!H3 z#WeVRS2zQK^;+M#r4^f4YIZwy{m8eCMHtcG$cch}jVM-z+4UTtaZ%g%eyCmZ4L_PW zv#dA0rSmN^ktjhF3gVtDpJ|Ru*7Y0-8MOODB0?w5aU53NzjKZsxpyvPr=lQel4$hu zx71Mal}Q5VCxVm|QjAXaO|@nkm1%+9Mj=3Ak6$I~=is<3)8>0nxR(nPT|&w1;AYmo z=92F%SmTk?uh6l~Rp}VGIzSi$^Xyz1-5%t*Z6gt_X3+fq&SHIq^->FB=zD-0Gu@dX zFsagOy$_I0XK%)BLKg|Qc-bNoSVU@h+jKH?JmCf>-E-m5PJ3Yt;x%2ndH+7oi1NJ= zB&B8PH6kn5Db$2+)}IftmeDU5i=a4Ke)i;JwIUBddz?}-&S3|($$Q>&u*%E^R00LN zqXi4zZy?|E3=<5pP=jCP(7FdQMsasJ>lonWo}UF?$NfnH45D9$$5x0z!eG@MHM!|| zfM-M=k&A3CO6D(-?&Uh4bc|STA!vD~Bc)F%sk} zXEkN3w0Hl+z{ga^7X%5!>?t4@obAGLX>bjOwP7X(?1AHK3`o-9#=L&}w ztDg%?FPPU%`PepUzz*mE6Qot|7eQ@!!xfSt9y8a8SrPFJFwMH@>7?RFn`U?@J75gYNuI`3mzWdg_JdLj@MOT%?dC&{dh`Z3zqD4(>0mAm0LZ?cG*Oc1Vwp9 z?q7YM=Dubk2xXJdu{{F17%{l9I1g2P$p5*8QLw1IC-ZT;BwPmf9^t5HqIt%C&B4JM z_100Au<4RsQl=@?T!;^;Nrt&Sq zUsVnd*-sDMe$XoO0jWAv^x znBeE3_!_FQ8#-XF8=>hmp`GPr-?`v$>q^6W^d5Oe*%QrACW(dNS8s3?QN9>-Q$fk% z-LpiP18Sh4L_R-b)Yz(a;7nGw57qu0W?>T&x0818 zJ#CzjOm%;bDiRSTEEu;BNI|;gM5>dFP71@&;;01Y&?qZgVgmJkHWs7`j z%jC&`VCQ&ERrSL}cE!nK-v|VOfUs|Io7;c4??95;IX}MR0h3Ba`mu#Pp!sX-aYb4c zcExh93gDxI6*EC97Qb&|4bl`ql*hY|96DdT% z*vQ8B-Bg~loC|>|D12?Xkh@$)_@$*Y0&sJ1n#!tDp5=@RMFt{B%?%l42INv9c~26b z>7ki$Qw;vpUur|pE_WUEd~F&!+D#+d)%brlVoeX`IVWF_MG9&XFty5V^=9xaKYj3%}5Elo< z*xrs9>ee{4cNH^F_4RjYC~v<4vW%yIW|si#+qS`t_i=j{Z71|aTrgBB-lo$ zb>o{R-agfDxLI%ZS5~1DNhbDM*1F`qcX5Br@hq{){Vn%f(hDtLjhiZJH!w6|hI7eC zH?acZn%~L@)67wqaUt|#=QIp)Q!V|NBa7FZdD5G3jFJ+q-f{VYL?ZMfn+eoA7h)Jz z0;a6gP?bL`BH6Qu;5n;pAmMsscdh%^I5`(fasN;uWtm0CM_;fLOVD76>O6_&tCR*# z;1<2T-^U1uNBC9|_2g2S-|PRXjMVMxp6Qq#73%HxYXxN%ykL4GW<=P6L0xCJs3%MDfRs zPvP$qSVwGHebr11K!t?l!GAxHhBX&VELhz%A0JI4SgDYFg!8kN=S~jKf3z38f|+K6 z$ynpr6hLcc(Vw_qUoko}<-)xnu4%(8Y`xz_x;PYT9j&rSL#m&|t*rHhW4V|j_b)7V z{7<6Ue)!h3T*o-iKG4g%c8I59=0@cAFfolfvaa%up+_SRXw~xMLRNL1r`93XF<^RL zJidz-Xb3+?f}(g?4xOkz`aEKf@8WUFW#!gsjAJD@8 zS>fjoK`APg&{9R<=%OdzWo7pcO?%Oege_(fw9y6vTIz>FyT06ktW{y|SVAzMA&yp3 z44=nppM0GJoiRNkeT7(uyPi^Y{o5oKd-+?JHEi7y_qGGk7#U>-DF7vX+G zwFaT04FkExcncf5WLg>Zqm9tfkn&|7#lka+0t~vSzd+G5yx%MD;NDcERa-h%)sYAL zpMeaaVZZe%%&jN2l|L_Md7=IEZ_6P->?D1u7 za!A1h<;po$mRpL{V1Swz@Sk=o1?A{T>d|nmJjQxFy;yme;C@eLtgn%-!*IZ&K\"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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512050002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512050002-Diff-Config.rsc new file mode 100644 index 0000000..5dfe759 --- /dev/null +++ b/MikroMaster/history/20260512/20260512050002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4309d4308 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4311c4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0