From 1cd196ec7350bb2210a951910869adf5480264d3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 25 May 2026 02:20:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 25 02:20:38. --- .../20260525/20260525022001-Binary.backup | Bin 0 -> 256782 bytes .../20260525/20260525022001-Config.rsc | 3459 +++++++++++++++++ .../20260525/20260525022001-Diff-Config.rsc | 4 + 3 files changed, 3463 insertions(+) create mode 100644 MikroMaster/20260525/20260525022001-Binary.backup create mode 100644 MikroMaster/20260525/20260525022001-Config.rsc create mode 100644 MikroMaster/history/20260525/20260525022001-Diff-Config.rsc diff --git a/MikroMaster/20260525/20260525022001-Binary.backup b/MikroMaster/20260525/20260525022001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e250354b38248f70abdf18bd9b5208fa9dd0ecc6 GIT binary patch literal 256782 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

7KYic?Ytb>sWO)&h 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≥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%0A~1$eCj79igiW5+xY}Mt)O*MK@u-# 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�_6}^+6DNUutFRHBeSmr13IPA7-C)@RQ9NOUo%+>Q)Z2{tUP~AHndT3& zJ*!pX0u!NN>yaPvs|#l%_kBh4#Lwe9z5y#P%dE07uEs(~Hv1CjmxCaxE9kl=Px#S_ zryHc6;un{r8z6-{u<)@!!Xm(cpADccxTnb9jugqo&13WQvd>uwg6CPn{_z2YWA7}Z z{x$=PJ@{a-hMbe%!x7g=bCvq!ug zpk^;P=<_OBXsdur7(3b5M@;~+q!7Q-7SMw!_us2o&OaG0N-!qZVyTS7(EqGc?$X{O z%rGCHdBy`<(9!<4UVgBoXS7HO=&z96{0MkLkdP18%R`9Fz;mVyC>i$l((4CYu-?LF z^TUe2=1;q%Mxw#JP9k!2wxsS8Hq=Q9K*mqn1%hY9`gPS9N!FAvlw2MgJE;27+%kcFkTY_|E+ z>!z}TM@R3NzqhadfE6Y``NRM&FT|eH%&iiVIlwW5I2jBxqGX@_zlAbgig{3v8qG~}(yvjD3n#Ymm7J)vR%g9A-j5C}%j|OZw<}g_ntUKGxBO$C z?SA)F<}5W!18In$thTvz*DGF3yN?`aM*a%Rn8~GBmNOg;6SPUO3P{1Ik~Ud!6NqFa zMiv={8Cx<4UfgR; ze}AlP%}x22v8RdQ0K!g;keZLU~a4({8L zqjyA&yj!6lhT(;QRxdEy8FIF@myJy(@2isym zj0StFKeA`~01?2fEBpN4$GJPpgSYZ`fc>oO;3rBm5Kt@-N2be*gqF+7*{nveP5E!}Qf<(Z$!Ax(ph5!IZn0kIm z97xKmzg72NY7$XJI~fkRzg~%v7qnO4ibnodX?(d^{wUD%y9Ny5{2GvAn=bciU&LhV z2$Bqv2Fq`m26L?`^{_&gDtx@vqM1n@k3z}E=|Cujf5wW`VL4A zrYc^PX7?a+Y-}VUBHS>y`qDi;Ly6&MqxvI z#~P$ozRc4rQqS5CPqI!u?|xvOpfx7tFjv7}^XpY8h2^uoS$jXu2=~`u})Jcq5_g$ZwVg8AmVibEu9Oh=dqF1Z^cdz(yQr0WFA>ymqjs)Qj`sIxMw2V4J);X->LaS)F5aj`MT! z$Of`MEOVB$OkU!EHrDw3Tf$7ZjsJuBSX(H%TP=WWut)4UsH5n|Q9y+C^9o#h2?2cH zJlLp7;ynWWD#%}4zQv%n5mTyoFxN%lqi@BOhGAl;Y^e0x>mbe3N4jTlqk_-?)E_hL zt7+2lTZpB0{sX_5$Ry}2Ww0fwg@_Rv$s+`xO7R3kVut9{+Z{fr^pjq{U3#Vqsp!lv{e;KcOCXm>h@3 z3px+V6krUJ=UQZ7>C8PG6?J!^8=BMM8vYR+pECtrFVyo@jMNB1cmwP^Aiuyof$)1B zg+-9z{NjLsrgRa2<(oL3jHmg&WPY?GmCUd(bGnrM14q_vn)HD zG*{R`JwL`5 zL0*8KZV-8pjrj*Ex)3m;Z3GdK6y3zAY)u0OK`hS0(lSdvz(CCFW0M5DxeNo-3o+T-8% zkmJh=dpIaIXv309cZ%kbJ0Y4L>j69EU~rk>*In)rxf~Urol0vcntTa15usT}*cbY{ zSf>Qt%Qg|`s{ug~bD3}?W-g9_Qm~Fe$tJWwK8c!1dRu?sT)1Wztt?JG}>~u zQ;-uB+J!hr5Q{V~6A0f0;|=!MX{(}2H*8Uo>;T=0!964B;UkPoWz-3SM0C9EMGVOj7wFvCgh zEBH0dn<}xca)W;Sbt_U`C+AuU(*)x#kQtoXDMwCe?zx{cp3a=bgf<{kUdGmexGVX^ zG*GctI$TzhG8RH)uGia@5LatezF72QsM~t!5uGep@Q%zPo(PG(=Xzpou>aq#o}0!F zrKtAFK+7AUbsC`yyn-SBsL>z2aBP?bpTOvR7Sb_YKl&>4yiCF1bB)+mj%bP;sVbbE z%M%Xp;DADdQsj)Wse6F(~D=J&a*th-;PnHHW$(m4&?< zU351uGb?@!$$XjcC)6-d?{o?;75p)4E*L2?NwLf`b;2o;47AX!RS9P z55rd7!Vp^VJWl)Za}{<1Jok_&;JIyGNR8)uX$O&1R;b>mD4Kcf!3MmS^T?X`vKB2>&*7_u zhbPCZsDV<$M{g%SDRwoPidW(M`u0`3+l~^ic~sq2F1GdTvmzegg#;4F7oOlg51Zn1 z?mLc9c*cH^?dEYS0n|cE`Vd?-ZS;vn<|Ao0@a6k~9NrjbAfTe=eNaC9jycCg5*fymhKc_z0i=vGSbKCvWPszh;YHEKG z3FScFd6`PPYX!Fkgm5i0b;=QE_bV&G5~s^6^qoPF&!U)`F~5en5^%`6`WklXjw+ z()@SVNWa%$PdTad867oL@g?ZapG{Xl_3Z=u@TE!gM%3aD#rua)tEDnCL-Njyq$Flw zLl}&s>Ggy!lP*w|X_>Czb1Lea%g4hA1?FVo6cv^yuZ#7t=O5%|%ca|pQ3C_{M{vq^ zl4(TFrQL4kr14~;CyB!Db||NIYJT_K58zXC9z>$y=nE(gTZk-Kn#`{g} zacZ_%9UII@*~~zD#ox7%VlRjEyfAA3vyjvWi>Z(Y)N-&d;>?P~%6$XfK$< zA0`AzNhis>cFYx~F*xiQ%#@BzM4`tvC+v+?6}%C*;D$EGp}WeSC$&hZ+F-O56sF!P z2@bbJ?4dV(D!=xHI;3I>u*YZ4AKc6wTolH6NrJIsj_%HU|ba(M+1o82rG!{ zgmC^No1gRDIOyuat^+1i!VD4ge77PJAn7jSeScM82QXaPZSE?0p&Lml?Wy`Fajy>Q zcdQ3C_#u`h4t{{6N-L%WzwaUW_BX=hLz>HP=W(cS<||=o92Q~=dpl$P_`S9!Zk~H* zYF<75S6@Q#pPBF)m=7OBxdnJ{B!o@$6m7#kjPRjLf)SyHjq z!IIq_BIz@4K{_wz1#)j8o67Nt_>M#kIdtyB|evPUXDqXcsbk0L$!W0#0GH3 zPc1Ul>l2kSfNtFAJ)%(VR_rs6$aVa5K*A{W(b*UM?IaAE*O2Wvox`K?ze;Zv=tJ@< z_9a>)x%;14NxAfNp^hisI#T=^@1Lti)GJQJW=S-w(J(tVB18A&8?OWh1!AAM$2r{g zuj=|abIK*-_9W3wRlr>LVtx+z)qA5mmhNC`$_{+8Qon$JTKapi2~wwgnSo2BCM8;tT~VwR znMSX{d`14v;BwgZu=@4H@8f)vVQAlx0gmADmD%l@piNZOzgW|~KzI%?UhW)cCRaPA z+vod+s3lpjVPZa%@M!!(!LuP;{7FCqUbVj)+yMqk$DN}k^(=}{H!_+Vl#e`98ruxdjhl&ZnBzr449Fn%pk39|O|4&uo?F%DPNM>`UY%gJ&9pauS?e+@ z{K*(iPR}&S!w79R?VsAE9={#f5py60A(`&PKkYQBz%Yw12GCW>v@9Hhjbr1_pU$6s z$Pfc|qEPzGt)iY^$PE>VEg_57uZ{#RcnY@FR0^@q)wOonf&e*BAwo#C)w!R z3OYZGLA5aHsZv^s z?!qM0ekcufB$Hj1BW7 zP}_BWn(97l6RUIaP=Ds4rHPZdm#L&HsLHj%va!Ll^={^b@6tBMl+8thCIY@o1%-|8>peLQ-1a2-V-8q=*aeW&)p) zB<(SZy8AQQ(~1h=vP-7n#$1GxXV2+h2G1-g17*sc%&1Yrg$w360ZOq+vR9FQaGtxh#Fd{5%4-MOh#EK81eg_Jq)y6VC)EF2B8 zvBLL?9(wGSrJg#(yU5T;Zg=H$4?lIx80Td>SFb=}f(KM*q&6{g|Nn3=`;J|hGMGX$ zz26MFeVkFBLJ+D%#X9HHx2A;2FM@ouad!{M`!Ffx1rRHi&DknaLb~UM+ptAn(HX4- zL(YQec;6M{u4uXe!T6H@*O zeS^U4CTFa6f+n{DJasiF`;rx)xW}9hytcY-<6LIJLg`?a*Z#sK;2Dyv8F04_2)$HF zc6s%Dv^M1%LusceYMLFPgFCYJ#2mLEJpU@*c=E@_#2@S+-JD!LJ6%VECQZIXKD@Px+yD*(gdaA)c)M!9x6o3cD6yIUm8`W4 zw`?Tv^|l2opKZvO474RN^@oanz)3(919M8FokgtbDvr#Zp^a^C$l1=|mc_xY7Z?Fg zq`;7kJaT3P506+Ds~V%j5BGn|S)Ax??rJD7tftC@{xp11@i>z7QXXhA03q~>7|Fp# zK%;*%-MG86A3KpowhMqVe7*xoqB!y-EVU&|r9WTax)YE0Jg06YJ2nRCY8}*NKt0O8 zlrmR@J#-IS)L-6kp3s8=fUzjGO&sx)sMWq!}YU{U)?Z-y$y*j)&WdR#wL8K;(L!@e3id2}&UO!$pM zvZc(^7I;RkTY}WbW~NN*Z*0~?QV2)rswsG6Kobw>n`ClF9}tGjM6l=R6XY6f-&t<4A8dOimQfL^Oh_hqA?Ld(GRYs{=# zH+Z=UwQgxE+nM4#1uWo)n&i#bW!(By%$qVUp<8G*)cKUVxKR@k9Um^k0%Y(poB-ew zDJo|5afB*jZ=9kiA&SwSiAmfL<=L)>_7aa?rZq7?C7isOQWdVm`;>CdVTT_URr0d{ zslfYN@K2ip<~d@epj@+c1lZ=gURLlpbsANnTc@fZUsEh7hENmzm>oL2c|%?@6S0R$ zxmT@JblIC=um#*6nM4!Qg|@1Y@H5L{5tZLgS|m}p!#PrQ-qIG^wJ4!>V|WG)hXLK) zn!j0Pw6hp36&=%g#|!ntvxu2Sl2(pW*iIeI&wtd-DhBWHBtC%(ic7PUVq1`zeKy7KK|NV-<+V++u+G zr4vbL!||M5=lv_|K#u?|%)C=zT&$SIy-lR1%>I1j(}_~Xe!lJTD;xuSaIEa%u}kXs zxBi{Ha;Ir9Hf;$CPIKzQg-<#qG`y!UyZ``-QlZ-aTM3M zwhg=P4XIPifB;l(wh?-d_b;;jB@xP>nJTTz^9bJLiwYJ}+R-qQ)iZCk8a3MU&hTc9d6PWX=7P}T+}53{cv#Gv$1=j zBR&diLTGqa1IZ{m&ZC6QL5U%2FuEYm;i^*N?bVEdqmfD#;2K zj6#ah_B*a;xT)%t@B=4O9Lw}0XuK3jgKvA) z3%9Dl$jE0;Zx;;IbU3HkiI!&qz$XbC1sb?1vcU3p3+m75fh_^%&K?~$1|U(v)y)*a zyD$KsN%9Rh3y4HjVDw_}bKB~LM}erU(_ua!8p-yG5Q@9>)ZskXrr;1Q?@9xo0VJMx zof1dsL84)HmYj_(7aQOG$M(K}Fd}@JV@vb#qkN;^+6pqrtOlP0JIrX@-mPs!j@Y2vt|X-=T#!}X6!19r?Enj%$v|vL1{V924W5ZeyOvr5ZXJ}wh>i>jXxhXcg*%tcn`c9v{H+_I93?`IG!J;l&DU(u~wp+GaN~aD;(TU zTJyZZi(q{2Udr=cM%BzC7((ab(NVLZWZg4(iOq>+w%?)vO317Tj`+P>K$w_RkT?34 z)Tzvv4|d;qJYf$hOsTlI-fj$xT)O*y*t!^!n^Y69GrGRHT()*fyn3~=?(@4a&)2I- zfQiM>jC8xOzVfGyUR?Vz%&JRv#z88)U6mOi?ywVe)bvqhW@8=O zHFg-RSUz{BM(OJu_{}LdHdbV5!#PZ?JY&>2bHBJWcRA_b2RhP#+4~4kbjBhS5vQk% zAG8o;kZu-aRQ4a2LzXwcj5V=hF#Z74$p@erRia4hoqW)nA3Ri{lQx6_j2{B;T2h~*nM~6omOy`aV$6dTNP{f!FEF#&cD~u^_W%D5Xqt>zAKYybc(!QyNe0Lix&zVI1!D zWbomzMk75kT@sS}vOh%{4- z?9<4d>eGGSC>Bgpz+E&8!~S@B6oHnDPod`-GxqcnTk*)0)8w zhy#`z_J=VkEj_FVeyfNFe8C$*u9)(-+iRca42u}&4rAJuXPLcS99w%twp~~PD>rf^ zCz)D!oibHPOx}SFyvOU#)WY+F1H7_-z^-#F1L6>h{_&QGiS?=INWBNH546e@q=Lp zG>hyKMpA+Tsj+m2daM$8y%(ahb`Hn@q+=FkuTxz`DERQ!*F+rqa>nJVOw(r{#|8y*#@=CPM|nS>5nb>>fwjU)$>+K`BVeHY^(xhZk1i zXR|5yx;(m%s3g=_@{l69t+0&i1?@${RA6jG*w^XK9NQ}AO@qf3u@GH@Rv3H^d zcuvL67wp!@2g-gzrd?P*3hx#B_TNQuD~=WpbF<# zSaMNfcmiGI(wgVfJ4m`MV^03UZGK|Lh2-gj6!QAf;;9TKNNmZryK^5s@ejY`#31B0 zMBZep3M(S+0c}l4wu(aaWi`p7X`}iePg$ND*?g;!9Yg`0XG#F zz3x23L8xl5B};wC)@p=Ed08A-qU<#tQX5-fI3PH)ViP%bGdn-WRNhnj^#!-mZ^&x@ zN`py|EYHT622|BNiG66bf2@&Jrir9{8R_~8d>1ZH2I-lTfw1(?L;h_6bVVmU`im-+ z`*PvKWQU{04_K?k)>U)2!v6p$-BC~=(tA13ZrkU`AKiR`;uzVyA1%R@LIgSm@-qnJESlG zQOaP#&sB-L+7G22_AZiP?uO`eY_@7<25Ki^)K7{Kx`)p8?c@f@jHM@99^@%Z8ALqI zxhDmSMgLkr^ECopb09euHe3uqsa}pj1FP_POJjuJG-pX+zm+> z#n`L+Z+qP*xJ7U@a^ag~Vi*_iI-W3@k3Y}LUUnq1KzEnbv>g=iY*L3y- zLmw*i>70Ua5u$tu^z5?zX0SpkA6Y=Ln7zHFUc}%`N8pKHkqNMX>Ah&~$0n1n@;e;G zpW1c%;f_k`n}z$|%bJB@FUs1X%Yz#JKhHyz0ev|^F+qOIvzO3^R%dIlmV0Fxz$*mf zP4lc>wH9feb8S>&s^Ba9>iyL%o=&g%l)ntUlL!w*p-8CM>E)Z)oRIRD9l+&vlUY`V z0UXR3p?N|s9p9u7h*>t>{M>Zg$olOV1K%yp^JN=57T$s)X3Ip)U7JpkLI z%I*Mh6j%p%oPVEHlaC(pu?pl7S;B@X%%>- zRVOKJ>(zhwqF79p>`+(o-iqvVmV=8JSCuS29I~1x?7Nfq1X$v@Syu#z|JyIDoZNgA zVp9^1s1WrPI=WYl(c{ayBo}k9T&J727`%LVy1l?=Q2Swnhk!QwNeLwBt8Oe9@qJ(* zhmfQaK<<_Yqvkd~{+bWFUn3&{qbG?Nqi4;&dI;CE_FBD}44bra|MCexzYD!NSQ{z<){^(SG%or;pChw^U3sd?)b%895vvwfCwA81 zt%~*wyU@P_3A#u-?qT)=)KPZDEt3C{S{=0%-W3DjSq8&E$!oZEDB$l2t8^v<&HM|u2Y8WhMsmTN zJoUo_5rU$ew#h)Qt=B9%<>p^2154etkN#&#tB3h(v&8Xrv2cQq!N0wD$;W&x)7yo{ zew5iBs_&^CG4LdSVn zs3#|>>&e9Zjx7Xhx`Hw*eR9jNC8K%h=Ha|)GTa#ShNCfyBt7A1g4?6?X z;B^58BJfxrrx0C{4N)PNUPt$av4U_9WSJg&_cK5ibql>wZb_RoUEE`5|3_r?ee?U5 z%b2?j*Q6i)#HG1rro}Zk7qKLC%4%>GC{zE{_nvy(2DAcuP0DyJ-&Uv6_p)5)r>d71 zz!VRj8Px;F&qUm)Qm+;wSe#Z@2->J=woK0*S`p5ifp0*Y;x}0eV04+unL&IK{6D`f zhmQ}NQ=5V)0|hHMz`?b9)Q|=z3J_Kn4gb0KTT!5+eWojimsn3OD9aZ}G2z1LIJ&CX zta6UKA^9!VKihv>z9Dt8n}z`SsnM%a=964mKf`~0u6#Scf)EmWmwi%W{LV`n$C(*) z`%m0R?fI&Ro1yLO(vRR^CWCI}e+xnE?mAhL)y_>_o7);U&GWEY1^@*v^@yM;&ELe` zoR_E_{|SOGe}bkl41B~VD2Os##bRE5B9nz-0tX7Vw>(s5(`!cI%2Y;J8~7Kf?(xMi z<|>rUR99BEgJ(*Vv!Vk!?qtnrQagoq_D;b>`SU2Sa8} z+$`pt@q4c8&A*Y`8!79-mm8({RLpFClXa2dYuDQ+CaOM+Z=I8NhKc&PGx9e%{wY=N zlc#viwkhZSYNGypz*=ats4z*S=4;*$-gKj%YIcJ$U^jJR`j4vkLE~ZG_cPUjL{+0g z0mE2xT1-3~Hw~PLo%U3R<890=!gYKZbh_V!wI)n_&3Cn4;rhLoucz$IANl3!Aluxk&0+p*TN*{vNSt&{q-@w z7K&CfTdFF5KA5kR$%NgWqBZwuoN`<{Y!xqCW}34fZqILzfJMuDlc5GCBot3fAJLn@ zPf)>?r?X;7`P1y-4D&|)oA@QPOaopcmkQ0zHV@BA^KW|_vRk$ViS zi0(RTsBssmjdHGr5SOy`uIx@H96<&3`Lf3tD-j060#yJwn5N}k+Tev9yGxd}K<-v| zG*>(94V#>jEzH8bmrm>9=LV${e7YD zbC`McQx>VJQeXzV90|fp^VmRY5^!1Z^ZDtox+@^~7BzGYmvxj@Bl)wr^ENJ>6jCK% zNP;!}L+%P<#0>z)um0bbcW-yEUGPJ?736d&kiCDfdj2fQBDG$_TojT#;Mab*AAt}) zWw>Gzb_WUe%@GR@1B^MD0i!?JW{JM7CGyP%?lF9z^-Hz5pn#1N+3dr4!-v(FcZ@)^qalxMHw{@dW)9t>Dg3FqSPL^4&UN8+b!Z z+Xv_NSw;9-f^aQ^nl6ZGB}?Gaa7&+q`U0F0j6$UAXEzUa!$(v>QUdVGh3>S~=vw4z zss6V)kdYOsFNv1^aDLjmIa2=M{tHGcJ3H1p8U3lGcVjmoDi`ZNN`zC0X(dN%PysdZ zItvGDz|{NY3@0kkheVGZ6vb>^I7L<=cfSiJ>y-Kmb->fQn#vuNuhA20BRUKNk3E(7 zf!4r@@%w9R!>#vi4WlrWa;P@D7mMZ31?QTH0)DD$pBZ1&saFu>nd!Gx9(>0eQc>;& z>R=px1s1S%yZ;cj?pxrfp0ysRAOdu1^wGwT2$Q3FoiAch+YhmFUEl*@Z|BB2KeO0n zvp~j8P8s}!uMw1a25Y`hZ2bG_qDye?V*wR5O@`$Yf&6h8d%FEx_s`-}E1xrI;cq`h zxhZ!S0uvt^=ut=qX%UY>jfEjCt~Ri*bK1UpzR)`kOLexc1T=8D4<QI<@A?6GQoU64=lV1>$}{`W}1G+dytO^Kr+SI(5Z zGmaQlXWSWQ2O)l9B_DG%uxH;i9{qC6MXSQjo4+<%zbt7pVF7Uo7AbyMyXEps z#r)AwW1y#bE$~jqiONIU~V~SedG6!)(6Ix zT1Q%E{ZPF=6lKn{1_GkzE9c;ytU)$>$*9lN*E^e_PcIf!qi&xB*WxrhI=^ti0Cla< zV2iMx&menB`$wN%^&NE>(3Z{BE&;?uJ0yUty7RlmY9hXz0lfnlGYN3;*F#Qtt^8Zd zQb_mT9-!Yc)rJXnUs$i-WlpEG_w^OjiK2ZzgFB`4fAmY<3fKNEfR)8&$zDI=xUcNs|Yk(&*a}qsD1+N6MZ0!&+e{b_B zixwr(Dt0Mk+qU*`dRK+#fK*a|3`5biKxRgkBnZbQYPdUpoZ&zt}>48N1v%@W8q2-Fj5G#SfrJ65(C8 z;qq!Pkgx&iMc*+-nUI=2a1K&A*`4DX-k`AvTeG>W0bN<-wJlFN@`_P@E@D|u6?s9H zAPbf;kMF{YWo%U;jm)jtZGm#~Q!XjpWxIDd%v;x6tW9Ey-UlR+;rJg?|1koHgg1|n z4I>)to(!FCb%}a%%?^mswXII@NVThu=CD^d&x9<#n7ukedmSenV<-re>27Kj?{ zYNeaoP<~iN)ac&(sk9&FQgR#_pn=d%ZKFG!9WabP94w;tc)rr5tOD%48D)O(KbDj0 zVu=ZbkEcSRQ!6nb^0_bKf}H-i&N-wmNsX`pXL0i@NeBktwF`#G)LHza-`XFyknGr# zVddXCIoNzMU*ZJHIdFDG($W-C%!Wj%YI}p8EoY41tJJ|cgK`Pc0x8uGH44jljp{IK z#Id`q|K>)a3lZ0cLh7O{U(+-OXbwA=mz*Yei@SbFCR<1hUr6nNZI%+BttM;6nl~=s z&QTl^{Sq^*iZA_R?wo~RG+cueG`TX*$0(sUJkKCr2%R{cW41(6mk=a5+(M5Ops$?K z7_)2oF4?oFDA(@nmEAQe|5~JeZOgMpSR$dUhex_tXMTBHoJrK%eTn?(>6mu<3I+!X z5rnFm(l*rQJ!NA&+v+V@;h*-SeF$cxe_e?Sh7q7yMA6A#9KcIpM%Z3IkynD!KsQEF zdNj~WZOTxf-5%O{1#ZRDE}fU9An+Qkhn(KTGBNH?%pC)8y7I=?B{QW4R>ix!+eQ{c z4dmL5bpkxS4rTM9=2{#T#_AyiRjvd zZ>+cM@zy&t1puXMa&AE&i>mW8;TPgjw<@lk4)@=j)7+@Yu0y>Q+OJ4cfQO3hurfFj zu7x2h@xdN+ff2@2b)`lgEcblRw2%ADy2|Kw5%bICZSKzPOx=)a!P4Vy$HM@1G@!;7 zz~6ZbdVA6pin#bCm}bb-hFy{;IM+-|lXad)SJYevbJ0s6U{4y3pngd4O{g}F8$Lt1 zY49!|I}~PzWZXYPVwd9Q)-F4)nq9pL)@?kSJ9`HiQG{hx3ORIn?#U1q+hL`H%~Og6 zDj3i=&6dR*+1L_ule?cAuQ>S%W`18&DG?<}XnZmDCJ~e>CH#Q1nyaBV7?hp<1AtH- zI!NHod*hRcTtb)5#kzOqz|j(M>Jeo%HX&DaTykKt+JcKMGY;I;%coFTmVnbM=_t`(7R8IQ6PrpP~qd;E(d*+N@^sXm{nlbRP)B;YNpJn_UC$UDkE#pMW#^Kr$cJ@e*3+^a7l3 z`B;r@Pk%Gn1pYnTZ(tgD<~i6bxrTO7Gd)7b+-jivq8OW&E59c#y5aoDkzohabOk^- zpTs-`5To*5o(^y8z*NU-B_?@T6aapws~oMI99E}gVgDl!kYLl73t*IWWQ{XlhOb$Y zB`mX6>$b0ZB@(E?0uR7-s%lW2n)lE!Cw~aPx&^u@Ji$%drxH^6beX3KX@(c6VixTN zmTLFf^Qj|HQC>i~o-PtVY^xxz3UWaNR|N5X>>qwzBZ>(VP%(5}RrnR~xvNe-jlB9f z23W4jUWj`66JmL(DFM+|v)xAUx7x2rQIFQNol4VHrdE5T{=x{P@Yc|{1v={R}Or==N$ALk{#LpNRtk~PR4>vW%GR==)B(Xa@T*9{B5$op7Xfb?1O2^e{He)6%79*ssaNKGz`mh>| z1V&O`r?w}3-iDP7S5|Git}lA|QiDa3RX!d2dAmqy+p%rB@V_TAc{2FQiHG)v^YsIV z-Pb_zI$NTu#%lRw5dDFH2Uz6zUa09r3M{#3@v0^NI2v~F>B6@V(GUbalzjs%q0QhE zWY@9fdaCde3Q@&>!fs2OuoTVBA5F0Sm&%BCx%A4T9x?(ctx1R;aH%D@*U|L;Wu!KW z=-DuL*;IOGF`~3Q>3kek*iotsLu*Nbuc~eda|AzI_-R={>r+n#VGw4DsxFvj8F9_x zJ|UfLRS@UnLO{jRCNeVq`G&@V79_rR!_JXnyrA1DOKMFH9eWmL5^rBNaV)cz+%qBG>yS}~i?ame9UEarxekSZ?7?7;fQ zdT@0%j&*w$s$bV=kAZ(I6S5z6_^aPQ;+*cps_PzA9( zjv!4+ai^bDfTAk=jJeEz`JlwCP^Is+Qx^g(G4LDU+n=eF5X3d@uU zqR2F`2!fWf*9k3+gzCqlD9X-4TNIba(EF@0z(t-+hu?11i90-in*GBb&v}M1NTy|= zhDL&Fl$A3ISaG}u`fX+cTs8OEHpT~8F>!;rvnmx14~d=IgKsqnrK&rMc7b2Gl-HZ} z-6w`1UL$POgwq+B#cx-P=Vk;s?Qm2MsO(r5hly6!lkBkiAR)x9RfbUqhk$IaH6gJE zmT7kzAYF~yFEyetAG^fx@8;8HLi?1U4bssEYWY8mu@!q{xg~v8;Y1> z%!i97!IRIWRbFNmJWf5**x8pA6LAI!m}_->`i|EC$XJs^vMh$QU43Qbs zdg0R_<8BvK0T_3U@Fp$RQLU%a?3e9fk@*s}mS<0s82UICRoL1m876`%l$`VZ|6a1v zY=q?oWEsK)$O#G;WJrEPt|1ZE4xi#H(=fBK-k!hhYY|g@kRoYiMX%oZ;F9O#Ecxx` z3-UQjFmow}*8rEXn;B>lXL+{*C8IG$v#vBC5Nq&|U*;RW$?nGv2X$2!wkKX$J+n^lGY>XA@OUBRsWT zo%wgUB?Shl8;KuQ=sf;KhmiD>_1;deH#-IEzpKBvy>_0%hby6#xJKXq=qaeyt-dp? zZ-!7ygenS_tb<)h{7`yXmDH2XyvFQ2piJxW48%>z%5(xJI)E%RM>FW0Mq?>QYTJ9pE~%{F4r5)7OMu7$vkjDsGaXarMUu*BdP&VVE2s6)L@IZ9gzWwa zGj+B${EeTk1s+3;LBNup73}i-3`(-?P&rF2OqrYUfr^!2UVgvA<9D zL|Q})UgUL5Bop(jFeJ?-Vwg|_6w8e#icZI#KvaGw|7DjyI$Lg{ptSS-3{zsZ>DZaz z=u6(u2BG5}x_W_a;EK>$p!<^4*P<-Js+4|2;abp%U9c2xoNM}k4>(P?FHvLf?`Z^}5zB&y9SPWg$*xdOSO?*%$>DiY$_#EmNXad$k^6?Bb)|3axKHSbMRLSV4ErXV z>*p`BV~~ISsBSjJ-9ExrU2T@cF24Rco;LCA{Iemh zdo<8lSMB0_bZWKOfbM1$V`qx~Q%b#NUt9v8=-V<@qoEhsg0d~tbw!(d8G+&TO8;kC z&Z(%q>>R}YxbAF{e^vl5@hgl$o|91v3Gu#`wgcwJtMHV$g28b^63sj=@q=lG)LP!8 zp-4!3UcFxG7JRrl0FaJ%#!h^y`GgKZ*)>AOA)R8>Oc7$iow58`nnm;r${dWJEi=;} zbHW<5slv~_5Cm+xe{^%w~ z)#|eLjiBlheN?)0PsE;m5;x&ATJp_YB}K?FqPbFI8`-(<$7m@RzJ#yFJP_t?)FP8lU^v3Zp) z0wuW6;CZxf*3Pxph)(TYxa{loX@APd(ldOZPNNLr=fJ@cl(86_DGmOm%_s<)u- zX-8dX8%yIwH@}vWPVU}iT5;jirT_A2He|G-su|xk?DG9@=BEE5_>@I}EK_MDZqw!t zJ=k_Wn_H42vG=VWqMwvcV4u^cOZntB2noUdB)$*U&#B^uX^as;EJyMJ4e1+HeiEyS z(yxH{nwBgpj8ZG&q} zhJC`$gMm+Z>OX;1D@wo-g5ra9{EM>-v(v530Q`CAHw#V!_EDA~{N$s`3c~B9&;ndi zsZ^~UKw4W^rW`%Z|5yU7CpJi|34k`!w7bm$=l#zPMcYucNj84T=A!{dn5&P4qKv*v zJyLk@M?Ww^VeT+tltFmY;9IC?vbs(j$8}4B7cA0X*tweepLk}?l67707{|lJ{Sp!o zt_7Jw=f>JHFGWmiHiNrsM|Ivdoy#wtCo{&?>Z%T2PMGAm8Ez#5ATqG&h3_zn8H`7!;bMp-qL&|b>hf!7s319n2(nDJF}9g=vkL!} zWcvSAz;?4Ha?JYZS&Avdzc6gzq4K;3$0p!O_`9BBua786p7p6^Z9E3kVWHun(kO(o5I* zAf%&K?7UgT&!77so=sBI(T>1&iiTOFe>Ws5{wn(ltmfaUcA|MgVvojFS%g* zZ+vLQ8Lzq_T4>QlNe;mq`Ag#>PYy%gWGL(TMvT|ro%TcSq11Z#{ED?JxFO>yQq11m zP$b!FepNFEzoN=;(@EMKd2Vq}EAZ66Ez~D7H;AjiWTl;D%Y_&c>KXqb0;SN)`QuS} zv1swpJUuS!F;s|%SP?+&+o^Rk6zLV6Z}L)O@tAg&w$6-`{_UC-n zJ`uujofE8%w6WKQ5xG$dFl%hXo=rJseLgJFRf$<2TsnbyVa@ElsT2bPA8fM z2b|GN0c^WQslJxJ-y{qYlIormtl_4T>F}MA>m``#mScM;WuG;dr)F{%g;k4P0D8yr zY?jNk=wRgKK-(!UBils@gB^E+WPZXy#WWdxqqQ`m-N>6m3x?scLJ?)=XlQBP^5adK z>eyNBMHTow4OZCUjNrj}gPv01T3F3lW}oP_xiP2PQRdi;Nm_^F*m1S52SO+$imlX| z{it6AcpZs(On6N@qsQv1NSW}b7k|fyO2XsZRDnow>u}EBMZI(xsN?|!(4M?2wcjy{ zgRs}uFxIoYc+7rFLV=95q5rAIo3v7A!Yhs3VcX);?(OEvBbQfq26@}wBm$-GNA@*gTh$-D3t>Eyf%3Yu7_t^Q zj)j(neP_iiWK#QUf+zh@25Yj2yS4aFteFgUJ{oNQ z7#m;?JMlfe>H(6!khkN3^t4FMpRG}&YqA7{4@pjFW+D};C5A$lXd+Lo7zIRhwG$Z? z#zLU}YFHo?qE(Ov_*d9&qwGs8CNu63t}o;IS8#fdyvwU#PNq#v56Uz>C?zX)o*L7k zDcZo!Y9zqnq@Ezb9hIUl8bf*VN2e9_Zal_iZBLKB8c}hT=v{SG!ad+mBIP261B!F` z6k2Qk4(L6K)mi~FMYeYcs}HrhDTv((&!EZ}HoY4%L?xz3WU?-;tiVJPkfYFoKN>HC zQ(XRML>}n(+ErEQK89(j%*2Hbf|B>%KcG+~;cipi z=*R>a4)Vd>xtPwlRtBrqLhJ4q1VT`z3J!^efp~OG8%(CQ=?-LUj40n!s$lHO3`2Kn zEZCpLtIBpy7-t0Y+)*#CVF@IasbdP{><^UVZrjWb*&3RP?r_TvM|)iu=j}2jZF~__ zemBG}X-pSG&q!&m(D|g|0HNz9Njs3hDIT*a@xqEjlX-j7-ks!37xzU-pv!jQ{OC2Q zYLV-y-ug~+E8{!DBX^phd&MzRqj{h9k9VJy;3zpATN0>irM?(n;@8L*9%ImkKvzXDxJ6bry_g8lIX|Xj)dTEs7>GTNCOv$AYOAr^Nq1z z7{G|?R4&zK#dMeqa@lPe!w2W>WW8L8^ekRkNqM?=!f?Wg72Kxk9MCu$N%ruRTaIF8 zlqJH{lahfW-7(r@bguIy(Og8JhZ!<=vkansZkQC0$&+|{NHcvD^NcJ*@4V0F6s)6_ z0vkQs$S71PSV#;f_xgTFaD8@ z)7!z%$xLRojyustdaV?MXO=YbB+yi3-+!Af_5&%g6Hc>mX(bMx0ai{41*qA|fU4)7 zFAHJtHs55%s3ya8R9f&B=pCJ0%oA0j^j?O>FgDf?D1y3I458SREe!MN9d)3%3rx^5-a zqcU*f1e3>er#SFCT_TwkFuuXWtz`vt7`I?Z=cgmADp4)LR6%zbbnFz!jl!mg4=mVf z_#*OR@to&a=FG`CrPb_?q?mH`EDD5f2oG5!n0-nmS6C2IuYDK-J^3Is*xUh&*-qat_rQ-=1!+IO zh4HXrXZQ6Rt(&A#A0-Lw2rg@raxz!bfg_iLx@M{wbNyp41>b?YPGXd{!T4TEH%6S| z!o+lvBR5scfl2T`VS(=&#X^Pd3jDHKHnrtD=kpo*eyx4;SK&Q|pz`%bfC(D0ia5gx zF1#CsbH4)=MAevGVQ}q0f18^|x0oLsMEn$LMUm-NqyUFjcEhtE$j~ z9)=AN8c*k^8Wrx44RtmBSX^uNyGG%ZhpXy2Io)vsQ&5B^vA^OZPSgnhqf#)Qyb>*H z5jy`bTe_=_)c6^Vz&{o=KB~##$DO>4hpr-YtvA-;FoVh(hg4*B+Q_kmU*pgnNC2d;lnQHcx)Nn1L$VlyORav zFpMw^fefQ7gywfZI-?8&z`{iG2Hoy$X_8dMKVIr7%qP{zl)BxfH1mTqCoRG34#B8| z9PGyTQgX8NQ?zQU+99ooe@NG29a$fi-~j(W0Kf=TI(irrrDPezRgq|rh{oL(scUcT zWvfqeqvoPXD#qke!>w4UcnFk>0z&p z=&=EIP|pH?K&959tWmyBF9HL8?mlbVGN>S^D{0o(r%Z&pK&iB|Ze8`pfsgp&UjPCk#w%6~OoBk%{3nSFqn_ z8bPZtt;8a!DBv@E*9tay!BpuOusw)*J@^@Z=KW`pj`7l=3~j|jy=?Amrw;Qo3iBjTC^D* z9?BR9kRKaFk7Qs5a>Q7;jw}E6B@NFFGhm{a9##6|8-)vZjI5_8C{k-P4&Y!ourGHK z1wb&;GPZHf0tc6f2hfO7a)i3B`81e9ttlUV?r6)oK&9+V?Fzl=4s6DMvNCTc0>LZa|JU3zp|1=JTOtOx!UVn%2Kf<1DMY6551NsN!=~$bxLpVxt zsW)XY!=YGGD<$$oNa@O{c`VahUx}xg_{NyTckq}ae!fz>1A9dZ5P&Fj>ww(ODpC8j_v5q72Td<{<@0bsRRQq$8iy+$u%P-Rml<*Z4EDjei# zlB4E8nz7cky>u?fp&;%RMsR;iNoJpOtpB}PsY8{)<{iRq<#ITmwB&e=bDHM;JrtBS z%XDa&!7<&lB(aCh4#F%ZEqi){7*NR)CLKhQp1-FJtnvnxh?gdSC{h_bUIRG6!L!H- z2iQiw+%OBQCG7u@h60W35;k;k@>m7$;U)KeF~ej?_keZ2 zri;(Or{PU!eFQPvMfj;F-(iJp|(my{%?O z`Q&J8NL*kLEs4aaT^e8z6g~G3BAHwMG4kuG!TT%8wiirLs(DKev5~n@BXW@wZcIJp zz5mIuV;`hVku&hIO0I6&lD5Xi$x%H>W@SFuWYN7@z-9*pwzoVzXra4SkOyhdTKRGw z-$?6wk@`d;B2g(B9~jYnB$#}|x#j`tK+Hg$GfyksX?9@Go!+Xg+xd`{sOUmUQ_cwh zWA{5$!9Ljp`ilfXTa_(@zfhx64Q&h5xi_OuesDZ)b^ex-B|gSsbK=tGDVS_pH2tDe zHcaCV*mp66jf@_YD)%l)C&-W~@nTRV(4T-hk!KRFEAeFngSTJa)fZK2fPIT-*J|;J z1AG!YN7U+738s&FWI=~F400%(7;DE8dPk?;jzz>1kU}~wQTGyj7_CSC1MatH3s$V1 z`BK3eMqjO6K>UXtkjyIhG(<$b$>39RtmN!4hTK;GDTPu_s!y7pPB8Ai1AB~a@$~}> z*j4#456lc%@cD7BlE6;sVaZ?cBC7YZiQ?|<`O`XedPJvXxk}r^nG3s~)X4jbPA57v zo7VTL>#f}GrtE{bf>^2j;Bd(s`yS8(t`3UVHx81kBBdTPiMw1D_!MQf92g=X6{_Bh zciE8tMY{+(6FbF=#CyEZ2Xq7BZLi27M{{KEYFy)aL^)_!htEHgtCmumpn?2HF?UAA zd#Y-@57|nk_D)={gnLlH%CTjQfsla2}MyHN^Jet6` zvabGeq~H2L;vTY{78TQa(<5jCTNY7@Yk=%uzVa+DWC%Xp>aDi-H!Z@Eke8*CN}Z`kjU8>4jYWQDKrYxRomK=gtE8 z-=*@#XF!hruXHN=C+^uJr%RBnxrUQ4{P8hO8HhVa_FmOtZ$#&~tatL*$qrj$!9|2) zwQZv4D9!ihQ^a7g$E`C8DPeo$zT;D+GPKZKDx2x)V@2eYPp!q@mwdO7cbh&!nAa9M z`W^?_s0COHTHv!@+wF{laL5)KioK?M$P|T^F$aI0Wbg=emo$dFn#c?y9~79oLbftS zihE-%;*<^K$N40|b!*ArNt#(;Pm!TPqrReU3U4<|5RMQv84QmrV{t+cX z<3SG+4%xasmuj@UW1hSCqt#iLaQI67-^SOJ+Hms%l^figVSrfBT(LPG+xu(r2HZUm zcHWJvyW!?T5(Z}nPv@y<<{do1q_cZfEZnXaj~PeJk-Bdir=DTi^U4kxV(?c0cN!+= zVX`CCvy9ek{y!)oWtK;96#g|j@vjsJ)DPJlRNKmq0wA7M><=6C1y?r01IBTlNgykj z1TCQS$VnQk(2Pj=U)Fa3;{_{*+GZ0(*G;mwx@PoX86Mt`{3_WeIJ+&=lPoKAv4zR- zn5PAaW;x{`Y-$<={RHmxH!%y6_DB>~k>hX^R2+(@5?G6Xgm3JTAwHa$AwYidh8;RD zD_W;3Dch~F#blG2sE>?z&e~h3w5*z&Dp-9Y@$1@7x(Oq#@|4A8jgF0h*3&d{%A9iB z1)qO11;2xa$?(~)L`eBkMnD+bG+>kIRhq^x&ob7BJ<8iXwc#i@KbXZS+>D6Y2!X$B4^p$CoZyiK`R@bf(kb!hx-rs0i1x~V_goX8gfme z8azO0eF7p`olW%xvyN`Np1|%5LYx-pnF+ptshZ=A0w}QRdb84!Lxr@p||*-=`ZBzkbeY zd@jim*Jq_Y{*z6t)TKMWa|n9KoEhHj1+;yeE`=Gg8A7Yg#%!y~RXFSI0Pg|J@^0i9>|q@`0OWL5O9 zCKU+t)Mf#?>mll!EM$2fYkrp_T+`5x4<=REa{e4BRHfOFO?0ks5$wy^xhWrD~xG zPgG{$yLoU`r=MxFM7n5%qHSjegz}YpNIH5Y<}h1*;nv~+P|GZ2MWP+Yl?EIq$hPpE zm_5e5 zc(oDoQxy38t4sX*zabZNLX1u=b=LRVAsk}nIR#C^DKLPHOBTRypAh7)z&s)xGL2qv zyD%c|!`sIxXm=ls*mv>E4Z%}1!01(5FyRSYgn!6T@M&83wq|h~8wDyp`eCI1w3V{q zl}q00mjU44W(NzFk7kmntHyDOacT|Wx1MechZp+SNaQ;o0IH}=a2mtr@U0&~jTr|% z*X^=sFsAwgO9J6%((L?bOV;njZXSXlzo3>S7aEN6#{_G8g0feTbEe1yBDQNP6GzlT z2tN*eBV*6l)=PxBX1O)kSQ>HAC*M@&QPbb&Ig9p%JoDe!K-IR<)a6q=ZDd4;yXa)2 zHnc?v@9Yuw|7>BW2>?;esZ&>G3mxot36T5X8dHpBaWBD6%`(}`MP6^ zIrEPr?TXmG(aAvhx#ucXqT$KF;-dTP!4bQB7v{S6)Yb7R<X1i)Nh5c4+_9%i|Y;ei*g({w`3IXqghZAt$p!t#Mg zU?4%fUY@5;n6-LHW&mTV;lYrRPjcvfK zX7N5l3(ZNGe5yj4OSRn?;HHDgyAQt|Z0R1LHeD%aDvYe}taDqH#X(B|%ca&=N0ZLb zZArKmkZF)*u>X%|-5J+~w(eQrai~ z;6cKhKktJ32FR{%hKF3fbKrzQ{ApgC0X+s&+O2xX4e zHz2NLsGLHz1y=lIrOTg%|Ym_DW#%$6@n z*1-Uw<-);H1!5V-m*>2}w^oyibV7^EPIl0P-W`6ce%<60TVr@dGlB3<@F?;U>@js2 zI>;$Q*a$9yA$q5pAw9{+FMt&OJ2IhJr9+UdMhCdG^ZeTar%&6PEUpz8d&US1-z*y% z)nR%N$lLt#$mmL*ixW*A5h{%WcGl*T#V{U_PiB>CTKWRd2C&`0hIWv>Kv>8s3fLZ! z7%sM_v?`wDz;8%v&7p;3E$$$Xh<Y~7wF9n71IFeu9?;;quW@)ctg7VzkXz4NhU2O9TM-{dub0_B zaOGHfYE@3(Vqc-gXZz~17*`DGT^_i}+3N?ROfLk1Kw}Z+2o@j%Zz*3s<@0MS`IduJ=oI_UGT#8v3(%_-2 z9Qt)jfm(?IB3QZgCW~xq2+56)hl1A8rcWuwTEUM6j2*nmKgQv9YMuXBKSzgeezpag zr)z5HfW)xp17;#QGXf(Y2+2&^kRHe&w`G*~ibm8b0$}!nKn?0toe*a{;3UW&rW`ST zc86w~D*avQ&Yz4-2XvN@zSEqi=9&L&*qxPy;@93ueAd(!{6*?q3mLFVe%&h+9jG9lh$ z1Dx-N8n^UUXBPu5BiRVSy9rGDKO1=1o2ZzjNmyU9dsxZpLYS?p)6u#ZoTISE@7Fumi;cZbDS z@puKjR_0lyW(LYXudf6F<~2qJa=h0V$iq~IM9GyqbgaL4Rzp)ti;%_`{mLa_wX2-C zCj+%RcmOj?Ik!~{s0L|tAwYtm!Fy5w`0vE|cg}UN35Ar83Kd*Zp=PR(#qj(U{?`3| z<`i%-6P|59YnB)Fyrjr0HQK8Z)rseZ*_PtkP&5yj+l_TXVo|xk8F!Uo>JzK4VPNV> z7-Ts~%srOiOVDRf%v9^hpxMs6v|gv=bY%YZxI%T- zxl6Bwpf}x+CIN{?2pHnvWj&W?%&r z*4t``%u$ae^EzuaN$vPIJKMUaCZ+BgutN(OB~6q*g&e% z-6596mgR&s9m2dP#r!7XAU{rKN>PA*t5|F?X(#`OynpyPz~K>IMpSKCL!(J`A-24O zbD9?W#U58z!cTuLL{N@lcbc3Sm|rHsK2}1AvN*W5LusP1CHY%v0exq-xVmNN{k44g)-gUH|M!Tby3{!3S55=*vK?WVw7|s3tCBsBnk{xF-P% zCe3gDabm(7OqCi}Osd z6-C5ywWWXT-$8*C`ePL&Qc8V_aE^`Qm@wD&x43{j6o60iG|SE~2-`w`LlRiseuGOW`u}nZ9F!aFuUcM-UM*5rr)$jK!VQwD8ldOo zhc5*3-|#YKo?g0CQm-1bL|9c?8Cyo#jRxgaV(Cx~I~PVyN0l@~pw4 zBVP@0k%qJL5bPZM`-LYDy#&@?CHS+CaoFRLo9fD`?j#yp;u&M~*46x_G`Zue$3? zI)ducQ=AUn!2dKoKGDUgxz~P=3tOS#YF$gT=wyCxw4p~u6hoPHbb~t0;22E1!E&$g zfV(_^^m5jhr{qs-s;u+#g{!ErE$1LTQmX>i=1qlT z4NvWBGk-wmWlPyZ?~?;ToK3T$$J0~%!CSW1@i1)TjMqPNRa$&K^-vXEZ<>o?uWIXY zLk8nW)fY>Og=V*k+yzvjp=|Ei9A4BgVR?TxhbxNZLmzBOiK6`gJDRV@M@DINdD{`ze>CDa8)xP#|S57gaWvz+~9qoBt-8uz|WXfrG(BZUnA--Z9}!`5|23?eKB=;S>f z@fZ$J#CB3g>gUde8v~B^<~<(x+&??T6mM2AHjGvnHNh51jMrAVJU!uXo=Y$;aiuTv z;G6w2PNz|@2phWDOACL1T>BLTXiWndB~aVr{?C(8+Yo3SjkDUFxGndd)Y#fpVaC(CY)Y5kR`;=fUQ z>&cn)74WyJ_-?wXrPp+UgAmIEjt4Q9ou@k6g*hQTEsc>sn!oc^6G2;W!h1J-kiV=? zLA}!D=5i!&x#pB-lzwdT2~e~vO{7`Qk(%=yxd%dh!$?9SAQ zhB_Ebyl%Y@iwrMli{BVU(anZ)Wp1@A>u;dvtS@g> zcqmFq?Q_>j23wYwE0$X^sOzH1f+@=eJWn~n)6Yas8q9gA=aHYP z?4l~Ix^Ux|J2#1_8xFqyquPk)wu-nfQ$h2Ymz!1_ieV!@ES(-ExX0N)!I7Gebc1FL@{6#&iJuUaf(o8}z5q8gtQo z*ktt`72W58V^yIz1A^NaaAjGL)&`adt`(Q|Ls2EL9e7Yz>vI7(gQGugog1=^+$RYKFNbz8J-5X&?aOp>`@boN$Z3U zmM~J^7>E1NQh~^Aa!Wd|ObW&-{K^aOEX@(zuj?Ei`-PswQWUp3lUZb@>$7mdB^XqL zt63g$-mv7ErJ8JZFDeixL}Dr>p1zX7~E7D z>4<2#O492~y_rcj!g!p~TwbE&+oRR9v-?8W`<6}`peqJNK@K z?b`kD2_Ah%^CPtF=KsvjQDs1D>Q|j57jb2SHUK$0foOOJ4S1{MCm~BTy2vb{Tv&%^ z&aeOraTB=cI0B#i;j<7FN4ay)o<0Edyt*{xohwn2h;)LC!`?F-pRsgtqiVi|X>q7I z$hESM=g^)D(6Dwpf62&7&r+=5j_eZwFGIX#SyejO{1g-m409T&C0^K}xLr%W>_6HD zY)gd0hX?Hb0;;niEx>L+C1~}&gDArXyvr8$r;}YJgX6#7ImYLjwt%5Zt~#_*W#NIr zd(vzB27Y7dP<=6%ed2BAj6_v7Uy|^Q`{MkfPfPGd1B)1KLOP``1aacsZiS$HRPI` zpYnB)8m@IyB}it20bgyp29~GB4!k97S)fqCG#l)4cYWI0o~$Klb{9#EUjy0!V0!Nv zZ2n6pMDR%=`9^7DWO1Ju#UDksp%|Rd^}iJG>e2h1@!s3G_vy+u0^|*bbEFjBBZ^c_ zjSSw@5CE%?+Ovb(s_%1~0bxG8It%&GZW0U-Y)y(=T{)s#)HTo1W@cT-vlKPlNQWO! zQY)d)G@hVk!Qe<+`gDzo_DtV);a;^E;gwdG5Z=zmSR50mu-5@m1fy;V0M8PsppvpO z0HpaT7!gMn2(xOc(u%xfAicv(J~w`JT;bqJ2ITMafI~up&kKc;rqTh7eOmTGk+H7l zB*Sp2n!6c_9Ga;$BVi4t>(q+8XrZHI^~9~BkF2peTgJ z`(y+l=X94e5T~S}h2P)wD{7b5p4Xb23W4x^U)M6<0n>@wl}{1j$k`-5v6+uNRcHsa zv~Qzqr6QzVps$@3uwg*fn3mz?)093@gN3esR;w?=e(RH2WwFKacre&7HjTQ#m!Ac% z9B_53i&{zX9Kl9fC|uIe^(Q1(ef+yhG{@7`qPr4F=4Drf zt;|O|7PPSEM zktd5`!+UyRdLk-r?%Ec(Q|yQ#xj&XQtG3~!yzGl!PWOm%P#=jyiMpl2cBzXobqoaB zP@OuKys-J=Tsfp>=1Dn=kL`Hc0i(N5KlwTjtMi#QcMIxS;*sF4p-o^A+v->{!pdWp zzuDE8qMy6qD1blEm&^T!PtEtYtVl0I;*yIQMGn!-g4g86c=#b4+FpPMLt-loaF+4_ zI9qGfv=BFP{a8eNgRkck`tA{jBJZ-V8aFTx1jDV1DV$J|b!UN{-{2mJ@o@eiMVuUW z-A8}gqN;-iFA74Q&i>3)2ws3KBo&t@*u%)<0V*p*61u-XAr(BgH8bbru}|VaaSVIT zJ(#C1@|O0o3hEt3%_-GQ+M8V(37{2|po@PHtIoX$KHK6zC^Fp>lh?~y{p`%Unak&|okbA%=i-nbD#5WZ6a9|JI_pAaQ=mUdwGSM}E0B*TAbs-RPR|t*MQEnE@ zy&Q`%Z@Q8SZeCGAGG;#-89)m0)JYGN4tab9*4yuI4+i#96`4!;I)+gM zKL%(j-#?34BkDkB8O3zF5JpH;6p)p3FnTOf~6_JJ$E790zl$P^`(9rU?R8-ca#KZ9O4I$U((?k@9{)qw6QMUD5YZC zZ>(8dzmN~WsQ-Q5)EZ$)!d24o6JCTku+nVgOeA2+?xUKx2oc z8*wozAppon1?>Rnoo*~&MPqsZW2UW2&w0H80EJc`8G{A&@pLX2v;VNofrY{6e+tKC zD-?-$m8PiAHj7#Kax48ki01Sp`JI}!50X;Dk$MKT#RBzl5b~v} zp@&Jq#dT6@RL-Dw96+zdh(GNFniN8R@DbgT? zT4t}!JfvYzVV+R+%3>v(LV=t|0hm>;!UPiN2?fwlX(K5=5g9>m>r2Bf0-}Jmrw7y*^V*Vb#9o> z=*(?M*|aoW5av}qUQpMpr#fibn!~vzW10e9C%s@Tvj}Bv6OQEAS)(S$_t!$ZvIvkP zInAU5+WxmxYxsYR^NJLuyGIp*l*L1XF!9t*wq+hfgg)*#A`h4A+X|GP{U0!I1GO&Y zg{;g=vU#FJzR}44ZRVlYn~i8a?K#7q;Le6>9bJL64*$5NVN0=oN`OfYk#p@zvIwXy zk8A_Bk+m?l>tuAfjT|`>g1;V#G+b)!t*FRQLrPBlF{O;+HO?evEm>iM1922@VAD#j zqLi7&Gxoi;DRBX1aw`Q=6YV|C6n7@Tp{J>vZOY`b?WTyGwdS2%hLCEqBch^_-xVQ$ zV%?Z34(|nL??Lu?u&inab@U>59T>E@lP`U0#3=MI@6f#z*lkK-IpV%^kioDEUM&%a z_Kz|^r)9Uloqi(k19FtILtyW1Sh?~uwV9-whm#amo9R2^;u(QN!uIf>!D(30sa|Lqnfx=FfY+7>{!U598LcfpJfY| zN-fCNahi7+7QSqft!sZi;_EmOX_yO;3_ra2oOK=I)x`YOV^=iZk5*3VX+Am4!b=tklXn zy#;rs-;Cz|lQ1gb5GGc zchkwE0qT*fD;GB*XRKYs^1Ux!8xhxTIuFDdnu>5f2O`3){o{M)_66cf1{!$3J%-@K zVlJAZ#dWFi`#(y!{$9oZ7sKAy&~s3=;S8Q#l-5X@31f}$kP|~|ed}vZqGw|Y;IhNTklS5KbsL~&gzZ)(M}?R(vFSeeBlr|n-EnbWLD}Ts ztJ?=N;DV=PEpIH~7Sh-P(g)O#Qy0>buk}@ZKO)JW|FY8s*@jOmCGfP!y^P~E%t0NG zoAuEnNhP6^%1)rP(<;^JbJgDO;Ly=dc*-vbfHlfXeQY=0FbZln+rl~@Vr4NER18o@y05Sub?`2eA=Ms=cVO2~x5Q*st-M z)5E>oXdSrL|LOgoi_ENjq63h)$kOjHJsrisC$)8imj42ih5h_y=IS_-{0D>Qn=ZhT z>{(2?>V8=Gu;DnY!Ljul{5H=0iNdZvf1!>}_$vw9{fugpn1; zGie8C=a3&7M=95>!NGsAN-v7^w^_&lMn+rf;pJ_ZTKw~dz_NG({}UxqmSe!A!?u5l zrNC02VFt8;CWh|T;t+)Og$)?C8DX5&BF z2&)1feOfre0BWH2)5O{XXSgBtP?97mKYmQ$FXGD9k2)7xu$G>E@O-kh*&O&}4>F_M z8e@RxV~XRYCi)dYSQgu1T=@ONRl4s=SWZDZyjQM~?IK*kqS}>5pw~MR%!QpVuWQEz zMpA=VATGw2MwR`xc$=;%U6cJQ7O6|)DEWV1GyoMFW%v~K@M*^&+L zgkDXySkw!5&w-agHhjpKpq%T!M=~pmw-1iyfe*>60oI4eyRSB?$>awC5Q%CVM7Ou< zsZo;&H%EP}ucu>-_j!z3(yLxe!g~wWT8|9M?s{!Ba&SX$-64N0CQ(BCgJ_X)w>)EA z>8?e24AQMnM{hy0SLqeOrBzJ^?mXj@mz-IrZ|$c!lm?=MEBkCW82kd`ytn@y zmzoZ17ehc%C1pP{ zX``)xe9;USZb0#|`M;p}3Hbsz3T2ZRZb}PlCjCA4j<3=d#c9Jd*waKs6bw59&DjY_ zr0~!K)d>_=VunKv=nwtv21{Spz|s%697D}BIekE0F()nbHxzHOSCw(2eBcatc1qcL#S?;QeL>lan3KU;- zyvUZQyQEC9L^NXPzvw8D5na1?>Oa)vCx#zanU3kk(`bhD$_vcYMp8o4y=7D)3s1V2 zH(WgMdT6^FRH;ZX6lmloUBhma&@MWRXORVG8ZYM12>Hy4Mp08??c zKHtwT?<1ccUO@raFATq;v>F_A4m7Z_*$sVY6jRWcUT_g*E$&f;3V^XbXhSAuDcTL2 zLu$|GT(79i;XFY8Haty9yZZ&}FJm@H%9Glb7K%xy&8rxiaA#A*^ZbjVF_(I zgLlolhQ-TqKiHcGuVOaT@$d|bwKYMWx2RZQ0cX$rZOvbFA~2%1z37vMfNTzyxqRC1$QA zDf@< zwM;Bd%~s(li-*%~voD`pYZuQ5M6`MS9>M@dYMro0b}K~RoL#6?5Zaxcpv=QWde=)2 zd$e5j@9V92)Ax){&_#C$_mPrx^Bngd%#uk}UmD1j1r>#gOIa3G^X)izbQ@GsMj|Nl zFI>-(XtY*C{%NRmniB4LW>#C5J2bu8cU^Lyl16+3c2wLnR~C!yjK0c6YN+S{gm~$f z@f#99b%?pc4p2EQn3zd~lxYLe7^|o&S_AF8tS$L4@$x{Iq00Lx#4Bu^9oMiQltO5n zddF*~szK$b6W%dnq^^|;oJxiWKi2H(96jvHfM=(6nxeVLkFqrlpoiw>If2`0zB|hW zZ5$mms~{8m-3@P$p=d{qn1zoXjJ327;9S+VoD1P@9ubXV>O?$N4(%w0EK8npn+gaK zv6B(w^Es)9vfqTa#p5EwA7xk%T~bJ@N^DCi3F4WG4hyeivNYwG{lTO`0-%oS!BFT+ zPg?!*t_{GD_U*p^sezie{vwY?XTi718p^Ekhv$L~P+bRz0|gZ-rdqk@kVNb-Hs5Zz z&kW!C17xo0XyfE7oH@9k5OZQg6*O23$NvOnm-^XW`Y~@oD4zZlpiTfFs2OY3M_FVD z2+Jf;%&U`NouhP0JwGgNUH=)HS?fR0x#lqrj&5zYJWwRdaT)K~LkYt)oKq+Bh)FDS zp)PnjO}X;8&AWxT89?p^IX=e;8bP4_j<$g8;U8CywO5Ik4T*+pG{>~F*$PhYrgO0# zh{;0i`A>0tL9McXCFgjIMd_%}oX=XM!N!oEBR9qhJM5f}-aS6mNEx15!d>X8h2o|} zIZsYNP*hGnuD+ezI|VfpYh1a;suA;>?60xjyMByA1!1Ab9agMxD1Ml>g{Gge94B>< zBA=8eWhqVjsjtvA`5uIN6BIByf5l+g>2n4amdP=Xunn8eI=bgZ#5UhEb+b{wu_fIU z7w_q$&z%^AQD)lU-aN)?05|c0Si)mSILA>$e7S@C-nJAC_XfZ#wMm}_@yE}PA^msd}ewA&5K^csWJcSD+MMh${|=NZ>(Gx zCky$6aTT_yyU&e0rx@B%%6nhH4eC3?vc5OJCUe^-n+k`z1PO86%k052tYha&;MUv! zYjld++zD^>=Tu&<8y>-^3IWr@T5PEH!QjG<2NfS~qGC5DFN6ESaZ zoGq`fCo)g;mc+DWg=wP@xPz29_}Vc%T{l0o?^7~XOxqdmSvS*?ALQNB?I z!YNU6T^BLn$#;KY%WhasZsIs+k`Tn+nkxJvy5wa0BwLvh% zNeyYVzirD?7e6NMv5tpF@CI&T`7aUg2BLqBKTR_-!3B(~F^{X6T%iW~GZbkF=gdH| zj|aR**7LR>{NDlFJ431Jn=0oXHI%az@IaumpU+_`SIKjDQt;hPfwG?{lT*V|(O3%9 zz0zF0*h{TvicrqOmy8=i6({DVWvs5~Fq-`b^kO?$GxtaAE+-5@5JLvJEo#P{N{^Ve zc~{wuIjzGJWoLc-7Jcd(Ee&DRpilZk<+P{9T7ZmauFpt=8#9hw;P?TzlDS{*JJN&D zo#kdBRPvL51)aCS^2sOB*Jw73mQe%mT6?b+TWf<4@kw4>$;(LinW0U#La%&J7 zybqihcda4t&`^T?)^P;0v9MGmVh$}B<_O2kSK^Wp$J14?jwRa>>BMvU2}IG#-}ORf zSVOy$0q_wA3je#p(G8q>@nClI_AmWdUu-Q&*IBmWui0=ufA9c)2!G|%5^` zlLEaZ=H`C9nk&!luL@J&^0a7XwZk^E8iRjdzVKoF`5RC1PjAP}M@sqpBKTG9s;*aN z^fa|5<$lkHqStO-)9u^LGzwYItIq5xH6oR(N1R6Z1VyWc2Y?VnWl;lpDxzaDVB+`g z=`H3#Q=6^K%E~}vE9WC%OJ_*$(Na+N!sI4#?Tznd^c{pbQkCacZ0SdU!=(m#65V5{ zBW!nqa)c>>?19VXC$3{Ea2{w=wDIs1I5nUyk0a{HTEY?li|>hD*9)KU5P$xc}ol zoAq@)y-fqNV&l80Ip1614Qr>rm|}xiZZ{m;>jd9jtC;Lw^+J+oaMPDDBqT z8>g`4;?Z{0J+)EBI8ZD~kq!wc6fZA|w^cSpcwDLDjpf?)U|iu9V&ABh>$^Y99XZFi zV0_r`7h#MzqshI97!Lt}(39x9kTH{EcG2Apr3}0*O}k}*6m~OFuH4DiCpUz|H{fO# zNh_%4A|YUyi;$q)z&Nr1we|TmlNSHFY{ID6eU4FRZPw_&Oa$;D?^)*H_&NON9nGpl zJr~sF{zlcPL;``IB?xg|&PeB5bKua=O(P}DoIS4P$zia#t0FqBB0(LNvr7#z-(Ge1 z(5@s$l-k&e+xWqVQ}I+F(4A}JF0r|A`~eOt@zluvoKHQ-R5AC+c=#GQ zSd%TLs7J29Mi_X~)FmTgi52h$xFrwpSeczIWQy-`Iq^Y8rYQ1=pz1#O-g5v1$*FynHDw+ zI(8G)B2Q;v zOJ&UYuF=6vuYoYO`l&XtI!qtn4b9m51v#coA6VickoYIElQL}zaAh~<$#n$x_CT_!Gb0YH zM3EY{_r*%ROXOp7>1a5sDz{X;wdL@Q>s|r>xq}hGQyel~PA67OH)tJg@q`A#Q$0?I z1Yqx;s?rT*Uinkg&CgK;SHd-N_+A6P@_1E$shn9V=^_<7Q@Zn4Bm@u2wZK+wisQ%2 z!tdx)=ZJUVTBQv{JVMzcbp4x2&6#k;)bTsb?V!?jd#Hkl+-i! zYMIZIj|9_^vD}}Ox7ZU(dfKry7Spm|`@9Pa)(}%Xw8Kw!Sp8>3a>4gvu8yB;{o1KLuy%$f`g(!hV#{SS8xn3;sqT z0XJJUP?$R~ohDCMCobC!fMsbwvI&ySQuh07I$lB+c;I7> zU0aL3V0su6Ng>SrQind8oPB|&q6Tp3i)MO9SzoP7aE>6S>D*(Q}71~i=h-E%Z z(H_PVNQ?-oA}br_kEsfOyfL=(Y(?t71ocAG5qkJuw6125@tyU*D@y#$Cp{^BrBSA& z+ce7|FN7~LaPQ*=J3c3gL!s4FwH{9#VBJdF=?{(o5a&uO4KVhH`Dfg(WOVUsU?1`1 zS#XccT;RQ$q-2D6nGW(z9sh6zqo6t`=p~JlP|36a+5Pn?RIL|5@N2O%y;h-7mkI#V_%r ze>vSUo|imyn(vTB6RZkFq!xMvXgK5Q5Pz)L5Qk_<ZlilguuUJ_>j5|K^%UPVx=8 z4ZzpNhAMJ4G%@v=7UP9@`ZffhSU>-#T?A7h`oGDS;W%%NGYxN*q&T3u007z@@7)ea zv$gSZ!b9LzmX!%-QfLc=lyC2^FtH}CX#9FVF=_Onxg}+%U>PskYe__8qCm(|+Xaeh z$ITgxRIQw8>VsHJV&e-fZ*dHUr;}0a{8-RkRcA}N??eOl+Z#927x(3N|2*5j1y1?Jo!$_( zBQL`ji1Iy#sux`~24=g_?t!$7B$<@Di77()r4|+^B1SALpnDMDpKNd@x-@Wu;2+lJ zYD=s0!&6)HXsCr&hI8L@rrnC(@C6_N6>~)Ml&mAUvi~t)gevWCiD$#7PRQ7guzq6I zc7q`$DvBlBrT{^_ReZc+6A*|-{!G6-yo-1tc795Qg%S_S<*w-&6WU-qyIvYNaGvAW@TLpyYSnYGl?_;uUiiX{i78U+@_(Q{8n=N?!J_tZioHmq(@q$rwolDyUK5;En`^ z@d%d#Wymtu=uv*E=n+oH({~o8ul`ubCZ6FIQQA^KC`18zE)DdX96BHsD5NdV&BU`Yz-@UYT(IdTqk0v2rtsb7tr z4_fVno4Kz~0@@}!M$BMbc3u{ce@BP5TyNuq&c(Nqq~bsbu`=9bE{2$79VeWm3vIdt zLKQ#&aWpSoew|ffuF`g$5j8S=3skTnPm3$q367b{W?>G7^j(~0+v2wnjGc~GN?CWOG(c(`{y+`7Eyz<$Yt6EFXlz{F= zq92KB%s*W~pu)IMvD1d>y8Cm1s)PySDQf81Xkn~vl_#)Fr8|?%AvKe|NyRA5A_>9O z2sxSW^nSalj9S9-m;Ir{bW{L_e?FUbeoCWVXVzU1r*<5w*H~8kdtq(Xf~1susmju`RsxymdhaP64XP)b-cghvN|tn zkV*RhB$bFl2EMbwh2sA|P*Ibh@L~Rz&Jdu^a_*j?=2|+I#*<_LG*=GZ z`MF5IgD4z>ZF&2hR!>y?dLXH>hHwA?#GNgXnXl%h6r@@%PQ#CJ*&P_&QW{k;5JI(S z%U%Y|yat(rIimmz(39@V4%|o<>5-8jq?#@ZKFY7@Yz`~G?X5x|cg&JP>lH2UX99R; z5fv_`8CIq^{L_U|syn4{f($<{(s%?aDn$=-zjUzba}%u=8nsX;$iK`mN*1tkC+ZDM zAD{uS7w04p2q(*av`%r1ZuGRTyQp$c7k}ADt!(3f=v`sbV3(?vZ^3ug4=Xf16Q9Bi z_}E_^PX~`%ZC*h+mpg$nY%CR9RDUY`^o09ydPmrx7@5gQ25z5Xc0FlgLlI zzevhGjg10P_m*wSK^UKbt(a{!vZ?#zgRmi6RmJRiPLt&2T2Un-oI@?#2P6^WsUS^^ zFo_buY7koQ`4&|;A|x*f4M{^qZQhvz8GJEs=%_<5{;Cvw)C#if4mlhrBS0^AaIa%V zqIB6x85~``Go8;4uAR>=M7U>t6>>2eFG(pCIRhH^5?J92B>XiaxIscfvNPqU~eOJS=%pq?H@vXgv~rG-RT#A3&IC z*<0LU1HJ_{g!ld`h0#+{Q2a;kW-%b$M#L?z7r-rTzp||%9d=Rp!y%JO-1?ApTcAc8 zF9&t1z~h_a1)+GuFe=@LNfHnr!)dP#(n!F@zGgEEkU!n0cr`w2SvHoY$%7$I zL1~;JnEnyAyXISgbWbomwzTE`sh{U`Talp5m%PuompBh*O`zav06d7u&DNdNixf!wfhQ?5*u z30g`dIG7H&cG`vP*leP({EysGVe9#dXtKPO*4ylzJ{WfV#Ghu-6XCxE3*sKc>lsU| z$(B`w#6ln<|IrNL%@`%9W59G&=5jt}p%)}r3{)YjkBb-gCG&We^3y1cF@WyVd z>*1VB|9MJL+Dq*c0K?UVQ4_2(V`-gNuB|P7t4#JEWJmDfnM-WBYIdt2P>Lksl1w}k zYE>EI+R$?b0G?LXdPs@>Uu0##w#;bN(`WyYY@_Q!x#E8FU>k+e14uwzR+1ZxN7}nL zCpE8&MlY!~#NMlBrK-OxH1+pN`&^g&b0vF=bRA-z7kH%Me7!|VLuN(PX}^fbFXopy z0COE5Tl+D0F9jh=;-92IaVn;%oCM!W=pJ7R=5=L*M z?hWBWHGwQw2EKB#{3Ro{X^WrKR&N5M+&#I%aFQW~7ug8~;9AYlz(?{=Ldw#Uf?kJ8 zs#e)fa*rXlyz{P*7N9AI{Qk=wjD58@2uOc=jqk}AgH!bpaznDLC>*ZFV0yhGuFt!t zuPJjhPKa#wZOS8A6+>I6+}M3y@4;S?13JT5i?h9lgJ7=!*+#3$T1Sz+N~=(sBeD{!c`UKGSYTGGSSSB;uvF!!I|b9>END zgtWWO2S3G&Rgh$IX4Mlxb8Fs&J9j>9<@KFE}ip`yND``RK5hud%W7Z&snGlm( z)fnjVvqMqQEka1hH?ASutbv$++(9K3wl}4s?g^&rzjuBwRi?5iE<*bFh22rDwfB$Y zLeEK7l~{UijJI z4EB%fi+1+>Ve>SS5-b@M3G2E6;*X9)fN>PxXMsX%_xocBhh!kyv#Qx7t#LLIe+*~!M&81fLh|g>{PuV-zDg!` z$VzIG)e0iGMf+08#~+egAe`zB=pFyrRLu-4x}rm4vFCGzq`_IP-T}rhi>0;D4*v3@ z?m?{BxI5~NS|`e)xxLAGgzPB=m=ntHsHpqV=eYbj6%Ua}@CfPzHB{vg1$*Ahj6gJ8dJsvpvmzP~99>UaLPMv9lOWp)DUscKr?4AG*Y}0ge9V+}|{i4Er zRFk^0Fru6xx`3C=*T_f zx~lkk@0i1y`~XMT9276-#56L^R16B$7(3i3w;^xLbKPf>{J0{hGnU(9tOhIx-?00e z$Kle;?`QmXu>~Xe7qT0T*6syr>eoBmJOy`vqU|8X9Rwn!Apx+XU{1V zKQ^nFRyeUs#CO9Yw>kO$po?D~H z|8{(IeHKexdu!}8VDk)H&+qiUb~k_?Ll&`lWwjb7mc;K%mY_D|;j5DR znL0GkCndbY26mM@GY2av2XhL}mMy3YLv>&@SeE)G#&}sGEGG2ns;w*t)%B00u9=*w zULA1~#s!B;sT7M67gh*Y`SO4hdcRu3MZeAk?<%nyt zfCm39URLo*k^@VK23F@YQA%}v^~H5FB)RHlg?K}em^mrcJ};0u#^Y7ny@iS3Fk^>e zVwrBZ4X$QQW*C-dxSUH;RDTAVZ33Lxq%L8d!46aZ@g{1}mnsXv&v_wZ_Hg2J#@X}V zV_Wl{v@$C?eYCWvZ>Tnt-N?g0#Coc;;@KOSG3BFm4v?YVzd3@%lqo)SfY7Dm0DvIz zz_Zidg&|Ypf+IhIDU@`8Lb*k;QJn;$n8Q;L6?ga&rgI|4hKuQ+Z|7S8ir65^hgXlT zrcN=zgdzfwg(C)+5HWycRB^q~vbh(rzM0zhLFY-BHa3S5mO)znk9YNm7D7EX%v(tM z*YU~SFg^1E&%|vpZC?%bNB^J5+YfoQu;(pb{J!vZq5x6I5rrfK073Ww9LPAUR>q8(a z5Kc@f+ee(`Y8Xi8_wcWv)f70(U7{Ixj28zj0qKx#P*~rU{BxdkeSFyoh2k5JjNbsr zGBYfRsY!RxgG1Y-vvrh;NhQ9yjLM?mZua+2zA)9y)CH?NcO*F7Us$(sGwt!^kQy~% zRjQH%Im@Shx`V9@hp8{*>44gAbapx&_pe~yNkr2pFWXo7N-WTDvKiXpB8-tBS&&Vv z>Q2fikzEE_Wd;dc^X&`nrWVuN@KOlr-AU;5Ynp zjHh;eRQp%&4?uxMZTAJ^6i3cQ4iSFRdL6sN?bj;gh)}UehS4S35bEyjm??_+s17@d z&W$Ca)bNNf-+J=B{=;t94LeWN1dck$zKik0USb^F^y)wU03>>w=;ti#i$A4neCWIb zb4PyZNz;MNF{a^>eM+^wPSd^HXe^rlMdVTJ)xT&JJTNZMLg_XVIyl}=b8ks}9*B8qDa4*{w2E)R1Hk&3 zU(Lu}#dn{<70g(gf{f1@iL+QOHVcUgsl(e)X!%-3H<4e%!i3vPQ@OuLwsV<|Hx5nV z!^f)()L>c;42N!Tduw)~)(67qA-F&E2jb;t_9dYJPVt*&RXOOFHa!_|xFt@Lc> zv+FZspWT$s=v*gx4M`!LsyvQs!9=R|*|e@FsJpbI1lr($KJYRmxbS%(%nbH6tM`I2 zjxdqz{*?xV9Da&iEb&V~rKc)^|D2tyi|&7%Q`=i^4^{fmc>~0TpCo66ltbOkl+AyR z^-us9N}$VFp0`a?<#oFWMQQ!GL~*~(@~qaonTb%l@p@I`*|VFXaPs~K`8hEpX@AIZ za^c$83**Vvw1u3hO3q`XTEWu<$2rXe=<5!}oo$!JRa zl=!?`oB0^qC90;!``-oY>hUG9Irbn=W@UN6bXk-;!PV_;o>3*f3_f45aI-zzp%h%}n25+G0rtjyAGv=4A z5WfD2F}pG8(06!!xiWI$8emY?C4{w>x+xC3wHhiJ9kJHp$lD5U=nVWeyGU4aIFD9L zF7d&6(kHC3LeT&UrksU3-P!kfD106koL1apI8(c$y&RD}emuGb-a)TK+na2%>~C+6 z_%cJnALxmAB}#ZJX@;9g&X09$$Y77r0Imu8ty)7yLO%&C&c5?UPTs}MCmx+E&KATRXq>ewD6kgMSA@}_+5rF_i8P9gO?K)Midg}jk0HHaX28~>+I!YiDF_T z=`|FnwhBSHTZITB>nPj)^FE~8nl2<3G62)#jm*xEi$x_l(3|~_v-6m0ibo;qjEG=3 zFLNp+I8T+Eqh1zaCE)fKHBc3!NHbM<*~LJp-gDx%+a%)If=xNDcn3HAScdPT`&v^7 znbf4+JjI>}RP~6`nuQk}aKWQp~>FPMT z?SF_sRA75uhH0>p(CZM7lM@prAMP6vA+N?W2Tv9b-v^?nd|m}w=Fz)EfbA65KCIVk zPRo>Iyo>+Kz5L6=1X%qVL%7Kl@$LN#1S!@*%ZPv%xgd?)e23i6#ld*e?`c>S{CV94tOy; z)3B-cIY(f-(z5IcZX#6#jO~W?H5o1KY4;t3n>2~6z{bP$e$f&N_So!g5wvRGzZHtg zvC(~7skzVhSg{(kzvl2_^Q$rHVxf-V(1#O`50qxF=8sMrqVN3Gi<(d1UMlJk9w^)R zrN@HuluwiX(d}h6&j#pHl=s!?5vO02?NHg!J>g|C0X3md>S$Y)CGGd8aOvh4DDIMT+)+!9oZE|X%5J*kTgUM0uQYy zj)ORWLL8QC(uI%!FO^-f4T0En8=OJ{)}M~hY+k?7!`jPcVLud<~C+CxHWERAo}@~%L*&Al=9iEI`Oe*2`&pL zs3Scr*i$q(Cm-k)*+zwSE`<3jL8K*4i3@3KxerN-^+vwdoT*VbF?bJ7Lzf0P%iJih zCBLVsVSEyN@OF8@A!su(#;sI9rF?Q<;k!+cc6`${``<|eJP_v1lzDXs;+k}STm-E# z{MR0F%7-&x!`SCQ?L;e@HdSc(2u@tTgZ5y>OQo7PXTA*OA?a^rF(o|pzC&k1Aw z&7CdEqEkzsZ-`7D>Kg9UvK=86@=4!|#THXeLY-z1)dM|`J}KVumpO)(g}VL(LZd|Q zGhO4@Tx#;RN1O39o=!CU94yYg(Q(74QeAV1gsWpIx7-i2GH{DSuZ%W1DJ6!Gc^Y_i zH@r)w7Q(rYC9~jSfJbGMCYyFOIvjnBSb|>fP~a)UXGN`{*$Mw=K%ygKRVMLp&K(Tj z0GJd>?`_%}nUmnCuDf`tYBl48*T0)98+IQ*-PvA+FCzDBtb>1E zc$#yC-?w_k+#zVLR{4L_81w34x&PiBG%}$$?FM_ojw@PqFW%*$i#Z5HkP8v-crTFi zu2t6bDHa!up$<{JrU)#6mU_5NUFZt&iK+}o3AO#Wcu2~qSX&^? zK|2E!6kug(5TTP4G&3SsM>>`iJ=xoW+4c?Cv$P6}@;%xoJ!J}S&x-5zxL^s+)|S#! zNVE9D%sx{pDP}94RySD{*nh+M5p#87l8?QG${@WQB#`glD1N+-CN>suRZegN%N@;; z+~QEd)_RAXI9d?I@kEl2l9MNeEbCv%baXx&S zA4Ze07}3X{#uz0Df$qILi(MXlDBx6jfHsKTqr#3zvDU@9e(x)ebuu5g0RCB}s4MuO zamnJYf-BhT*HS`JoGDvub1`E5pHz^9obj&m1C9Hty_<%X z|EV%;POu&7qnO)Sf!tKxy4{Y*Byk!3W$J#8YcfQ5DsK957&qUWllVgbI7N3mV=3Hw z7?3ARL;grC<)QQ$Q=gX;*s{A4TD#dUJC=HWsnDbX#7GEXaV!__8tQor#TU7z;tx}4 z>;;DFYJMp$dwzmX4n6NecmHXOIQy_wOK$WCxqaV1kznFXYcoTW(-{E|h~V=WzSRGQ zsXx0=OnZUKsJXLY9yY(6g5M5aj@p=A3C`XUV#6ngNQR*1wPv~eLNRMnXXEs01}j)~ ze>d(yohurpj9OQmYzT-cUyd2}{k~_JOX?IWEG9c{H%N5N_!r5<(7n7{Xrtie@9NnNQ_;j=%CxUGNjSx~zk{%As+&ws~ol z>)00~h#L<$JNj-Kgw1JB!kd7>L7R@?S{D7q9p~JooT~7Q>x<-jA2oEgL}(Ux{0+Kd zV)7)g$)Sg4fN%s4!Ai{m$gu%te!=Pf0`vY5Gn1b)tZulpZ6KL*Leh*X+KcITtM7F{ zr)PFeAs0WYp~kRd!Y{8sIYA42*`0bj7Sb|vhfW%_3w`7);puj$JE3gMk$sqsh~T@1 z(ic9VgDh36fvk^UpJ5v=S5PyX9&m_o!GVX2Cc@u`SEw@v{$}$C>1b7ZQau;CLBj%u zz~LsD0!ugf$085pbFVg_Dzk1 z8}=*H4@#^ro8xx|Jo5w3fyGvr!7N{(%`g`_Wp*dICSh4*!hV|y?LKC}-Gu`V?yC$P zB^(L{q&23$v*+2JI&TVIPNh!MgErA53p#T-(@5M&#_hgWJA)*cvt9?79S;X3IbVyE;v=inBsmP(;wSr@65l#fdI+eUtC~EZC`}$R2 z`;v)xwn&Z=alCCe8zf=?5VDf*Z^^U1kw&Y4qzy5CO!BmM#r-0zwpruXy8WWXatKyW zB?1VWHT#)1J#XU!@;-%=?N|vI2|b$jXv|*4rDHrBgS`MQza}p-K_FLs=_A@N0~~wk z$LRdC@qnR_GlI*hs+vzswU?7#A}(vgR^Q=5+Q{0U&FC;N%-3}eN0v=U932^uDeg8& zgMCgm*H-0j&TF26RW3T~r>25C52nyz+Z$5K%{M;W4wpXb5syOcB9HkQyir2!3b_#e zh-v<)G(6#nIDa1Ssj40FhZMcMF2T&~7~N5At5sC`v^uKsI;c2kcj?IzldZWzrUXJ`Rc-QGcL#=fbQyrYX44h;4Kj0o)@y;2~ylnTsvMa-f@N z_rE_*%JDd+Brm#=&=zghXuvs8pWu|`QU@JU7X0RY^x@@9RGlI-pU| zyFlaANtZ#cDl}f`835PsPn{}VlkLZ%57lL0A-nRfsDs38WpdUlmchLn)U6ml9tP7S zzlvcj*63gUZzP7=3I~upsdWdnVPa#W&)qQk+b$_skpanrcc6a`N!LCnbE1&HVy?GD1}T!R1qlsl&WVE z0BaY26x`RaKb{^XN)XagxbH~$!Il?T=rzezcyYTd)8UX7Dh4;Vm5}|ffULb(FOOdE z3<7S~Z{d@Yln{N zixhKP9)!7)n7V(x%`DK6#H>4pIbwnM=2e8CfR`+u@bk}jk7*CiI%6DQGbmT{&Hit z$}GM%r)pqT;BuSUAL=HLf3OzCDX}#xcK${9gb|p!Xy#Tp)rMfvcSnt4(f&mZX4Kml z8wW6%xpQPiP{;DhE~|aOGP(O|*CZ*SAtL~p#@i(=n?nIDx4F1tQ?mEhE!xE74<{QR zY>ZBNXgL12u^S~Lb4?)GToXFt#5gGFCQF@HUm%mBlHiVAc4$0B?3XTzTGJeIW(6{@ z{Vxe+q0-mj%8~0$tUyY&F;AlsmH-%2Q*+*`(a`ZjHVyQ2 nT>;o|#I3A!lbzj{2RPMx5rDO@8_`(3BJSU)DjIHMBli-k*|Pl) literal 0 HcmV?d00001 diff --git a/MikroMaster/20260525/20260525022001-Config.rsc b/MikroMaster/20260525/20260525022001-Config.rsc new file mode 100644 index 0000000..fcfd4b1 --- /dev/null +++ b/MikroMaster/20260525/20260525022001-Config.rsc @@ -0,0 +1,3459 @@ +# 2026-05-25 02:20:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=39736 mtu=1280 name=AWG +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip 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 smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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 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=\ + "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 \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\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 :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\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 :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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:30: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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/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=\ + "zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +add allowed-address=0.0.0.0/0 client-allowed-address=10.9.0.2/24 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=51820 interface=AWG name=\ + Amnezia-wg persistent-keepalive=21s 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=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.9.0.2/24 disabled=yes interface=AWG network=10.9.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS 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 +/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=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=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!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +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!!!" 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=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/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-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-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-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" \ + disabled=yes 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" dst-port=123 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 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" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes 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" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=VPN_No_FastTrack src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP 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=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + 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="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +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=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +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=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/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 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 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main 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 certificate=Root-YE 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 disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="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" disabled=yes 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="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260525/20260525022001-Diff-Config.rsc b/MikroMaster/history/20260525/20260525022001-Diff-Config.rsc new file mode 100644 index 0000000..56e39e1 --- /dev/null +++ b/MikroMaster/history/20260525/20260525022001-Diff-Config.rsc @@ -0,0 +1,4 @@ +2452c2452 +< "zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +--- +> "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" -- 2.52.0