From eafea059d905c6fa2a59f1f8992f0dcbccd7b983 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 20:00:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 20:00:51. --- .../20260508/20260508200002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508200002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508200002-Diff-Config.rsc | 4 + 3 files changed, 4644 insertions(+) create mode 100644 MikroMaster/20260508/20260508200002-Binary.backup create mode 100644 MikroMaster/20260508/20260508200002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508200002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508200002-Binary.backup b/MikroMaster/20260508/20260508200002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5265d16e188c57a64f0313383c22fa416b943357 GIT binary patch literal 298264 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�WLU*bLKbpq>nk)JT8B4t(K8;;oZ8Vw%8&~D0UqLVxDWOX&tkmC zQ%GO`65*oeisHCxE3c*GINVQ=7hX^MI0m;)UMdh^3xSUe!9(Q+ZF)dkXc@gg5ynZi$c#1#`l3 zxD!F&aIu(7_3A}wYEjwapL`s!v=m?{?<%O(K`Lgdv_#||8_{$=Jdap4en}>Vk?%tS z7eR*SiSi>Jk_0T{HfQh zi%&n0uk0~t1VDr=EsY8TA}E+Ti8>b@6l^buS030 z9uw`TyjTBp2Z}6P`Z@ZHxpYruSm(oF+Y-0)n>3nY^ydTLHfj8!Epjy!S?Ik^9Mn6J^gd^k!t8<-;io?548xtpb92I&N4BN5txI2XjN-{>m z?5wDzy0O%!z$uBqJOD?;-fkJ?a%Hw_qsr1YxFz{9Kt9bES-d!sE27O{Uhu4t`8gH8 z`2y}0ybN%d5NZ50%bBeqkzS%RpvDp$&84e7I9y9xSP)`k4)QbAAR3Y1CxU52(zEGN zq~Pr9Fd-=o@2&Lo;{c+rA;iuCMi6vhp_eKz71hWH0S^u$z%|~J8Cs2uX+PvNUq!Cs z@phJxEQ&PAxH?t)~QXqk#)r?v$) z-sb~_x(vnz&^byHNt6s}w5;2)BEWz~g%^9asty<4c^Z6jUVq$2WoHiA8?W(DB47l^ zUD^{N8lEq!;AlHa*s5{tD*TlKfzXDD3mu&z6m!eQCN2vpv@$$K zOLL!z!-`k(i=@#a=0YX#Q_Ty8JW}R5p+en|WQQv1q8wdo&o5X<&tRa6ReFzI+}J{mHHm1?KZ_ll1jI)BNXS2nVl z$5@Xw@Fvk-8(9vzH0cfu3hvUi#CD?R8cibS{}m1-S4Z#-4WG!f_P_s{x$v1X_%?F1 z@#B~r7hqBz03SfY&Bu)xP(hpQc$T5wqkhhZK=A814PF}T48sifY2*Y6>S#DetysFk z&|D`Jl5r@!CXK4s=eraGTZ^kaKTD*wSH)%!KDS}qPwRe@T{wJay~OU`D(lK6WJI|i z!g|5{Q$VnJ-`mw^F|n|Ip~YS&0gHJJKZxpkV)CYM1IvIxUKn!e7(q?%O;ORQu*UW3xodQR|A%YPBp zKunK+i}z0v4u_zyj1krHlZ+|j#2kUu{|vXVs|M}dR4V-nJI_QSD|3#S?FuUo*fV}Z zwoqo_RVbw+aP8)NDkpv(IlEY$h@6iXB;}4s?FI{aZX^#^PJ;r*3e+B4`iF*I_{uBb zN!JSgGWvA*Q^KhD5=^t1PMy|xD?C7eZ4sRYA(B<^;lySRmjQ41PXe+^axGo)a@{wI zpFR>C{Q5I<5u*m>PT!*RTS`{}{~aN=?tx54HfRK6s~-;S>L))6CtefBDsjn?4Ab4; zp)w0)<7_roAh%M;=;Z+yrDnA=J(Qp_1uRp?hdQ;2C+qqCE``tOX!HLJ3%tB=nSd=T zmRi|k5rcVp@_P|e2I(zvdzJy^IuD7r8O-s2t=P? zoDCVQ{ac6VlD;)rZ)H%ci3W!XreL{&s>nrf88N_QSQtc4Oc7-5+FVwuMxXNx-0r7BjS3eaVyVOK&iWqsy;?!6ODdr z*zWMaE1was&?jIppYHuU4so>jkQt~mL9gUi92Y zX>%sq`Wo{Zys77tCH2L4b&8l$FMzqfPRul?w&Flmvjc7O z3LBpUPLR1N6CSgjHbCLk|HGXHYyifW`Jr6(;`Vdp2IbFjlxYDPWm?or28fRL5iie~ z(K*Bx#;wYsz87S2Pv|lq5mEOiQY(yemJ}HTYJ(o%&VkH8M(X-e#f>4k{Sm!C?0+}N z-L|rDBT}`;6v|)r&?+uhktQmwJirI>^pXYF4Q}K$#kI%L%A~-E$jrC>27QG?$zwa&dWsoG&y&gDNbaA;IS{g4DFa3$oY!vsD=xBHU@}@%(k- z@hLKJ|L3mJxg7RwAM&foncQPF11bEHva{j>J&5`p1Y*vELc#{btdyfmFn<@F4E~w* z!&M1^&o8@ovU@fw{lG)RaI0ON{NbQ&;ChfN0chPbWRF1?@T- zmPt{iYs!gMWC4BX{m!?ix7IkLCNaFo9cVP))fkP<3T2Ht`MoNO5L{;Jjxp037^{Tj zR2*s3sSW*!h*X-~8nK8jBM{da8*!7C(0|2CsOWCi=FmwSZwHCnFH4DS_pAjkP|7SR z^!IN6#!m8RHqS3Cwn%|vSia3ue z;D*jETwpIMw?zEb*}heFry2f&OW4&ZsDfmeYvv!|M!xRJB^BYfu4w711mEWk>)Y=t z?_RmW6l~;ja9aIJ)YA%`D=S+EnsSBEng?677$m(<7axc~qs5P`68-*|;yR+8nkl*` zD$QGWD$f^3pQN;XDtmip`kdPvu#8yt<%wtVaO>z9HNNy*e~&nPPc;+HeJyhgXG6TfL&`ggJ0I$6??$K+)pX_t|K$N3=+~&P_+( zps?#=(I#=V3JIFq;2d3^4?YdHgh+MV&PT#y^W~u{atABXw?`ZaA)F z_SZi8vwk{#n1n;^{O6CChirYOxg>a1NxT}3qpJwNV97h-pR?mf@lfx_c?~J&n3oI= z%wYQdh;j`B6QY)mQtRKE(%&Gv%N&43DOVqCOdfrE&NchxaqS-VnsZ$3?w{MLyxlwR zi-b<3yaKGjiY7LV*b~%nnYkfXN{1RYwApUIB&CZ@m(p+Go8@jAnXwxmmGjy%2Z1V@ zcA>?TD?mbsTMj#kep7`J<;Hxrjq%VFvPj#Yi0QlVf^7!Cw7T*r1Wud|Sl#%MenOg4 z+K=hH(yDR!9+3fz1P{|n!qzcS7a*fx>yHqsg-BZJT3TrB05QUzPtsw(C5(%dz_^ia zi?Rqze(8*wt#0m8Oo35t6!7eFxhYZvf$n2T&PvU4GaFa)7e>x*Un9ZZ4qdWI@B)q| zpa&wHya6$V^a<{#Bh1E(aEng@BFts`H@=2u5;kj__|$C14DFi08zl1iwVEs{wqUNc zK8@+5l#ar2v4WSw#Ss>MXr-@Bw=Da*4*ZQRS}Jm=ed8W5Y)@D{5ANx{>Uknfe5wzI z*e}`dxNqR~BPO?b;I2Vg)Ks>_O>Qix0$~j3nB%p#whsVOiF&+V**^C~ohj*FeOe+3 zghi;bAXAhkMYQ0JZ;dYlgN_obNlRk(3=qENb3-@=Fi$l!!fVZcjbq7o)r5^B&!(^& z=%z34jK6ltoEMb76SuyenlEsi#^T0gu4#Sl=MMo8l@rJ*i8+MQwjBqopT8@6%Y4@l z6>@kL#V^wO63pxNuZk(x#P8JnHp58}Er$EbE_)9hIu*8xQKS1HI;(jxp?BbMDKfq8 zE}~p`@u?z+&F|q`@&1hTIE<}J91KW4N#PJ^y%`leP(iEcy+TTH zDy}=4gNitp++mP2La5@-S>mLsxli(y*vZ&#;EVBzad;(7e{}!2NOMv8s}WN`xA&kl zoa1dvvaKwhbRAwFX{0Q5AHPJNwRv5F#}WUI|{1uUM$skv-+$)Ni)`HbER=A zCQICAUL(p|EF3LulLN=}!aPiY*H}a{l^NkZLFEVPjBe$#3bmbo+Ci3L?7FVKsZ-5` z@Y}pylj`8M1b^Y=yNURuZC@NZx5FQBO4&A;0%`)GOGYf>qSV4&wSace* z8)AjpopUE}rb*^NhUY96GY)EBV0YD}ZVX94-B;piS!~tcUbeVB`!%1FH$lx?xdZ$k zbMJ8*`4fE3U;&m%2+JNCT-jVibDzTX2x6fH9_`QXvpH^){EHjc7mZU<;UPdkN**~0 zJl6xty&-tjE{VT&pBUj(#ztnQ!0f$+8g)&;vnUO4Mk{cz(gFALa2hg1TXhG)aAj)6JS0kJVt(B}Whv$oW8dRBa8pgv>lZ{< z)zTloFzX@Aga8Qev%%k&HM%Q9oMToks9Zd%*Q0ew4T{&fMKLQ%veW?Za8$l*qEZk0 zrPptT4q;9&MrH0U{$z5!;>dB=?iNknX1PMfXL<;8*>$HvAKaqS32@2F8>GCWXe51B ztnBY(A%e9S5g@81ZaI&?m1WS1vfs=yUeZKfUn*e zTbxEM?GGvum@OekM)se)a!=q(t(%JBCLBdOq9IsrK|=@BY9Z?A$4g;4 zzR}gY=>7h`)OR3=>8aEmg`=<@Hizxh5HVRyD+wE*iZ_3_Sdo7EBK@nJoR#lc;{+0q0@mDbM5e&zh!-()ch;87EMFE zFk#_1YA@V}h>m>J+bpP{Ni6(d49%`Y8pq1LcxLRmGxT7wc! zMZHCW)$;XlEat(6{&X@8e+P+mpD3(!jBI;~jrifdNTFwt^($~{Q!GD`NuUB44$Md$Awr+1rZPePPjAU5N$(JT zyA~&bZW&*RL#O>R^Ho4q@o9F2lGRaP2snH1wLX;X!&;ICJN`sE#N~v4=#&1d3Uyn^x&2&nE@p5e)Oo$ zyj3hv(GNy2lEhzw;ewU2ZX*aOqPpzm?^3`aOl;!9g90R*y2Dyll;wfIMh~)rNjYe3 zE*A(&^DEXMhKnkF5rd`jYFKA|9E6q&UM^oS#f+VeEmB?Xy%dUji8#6~W;}q=rkDNA z!Hz;559}~Sf_A~^Ff$oYn8p;H`pZ6$^X9wNY$y(U%&TYaQD!-)iJw`lV^(LR^gK@` znY#r*V!jB%5Y4lQ%jZQl zQ0W|ynz51KR;fnW3F!ClG%a9*{!9YD9*%!PQJrLFxKDFya#u7{I(_riKb##B}l+V@#z z)nm0$5qaT3e4)~fI`1U6)q4_bdrT_DgR`rj@VJt5d+;FS>re#>1@Y)JhV=y>A5miV zh_U-KG6Rhr!dpNOCzY<0QuCw`L{P#;ab5N8;~w1yqaI2O@Ol^46(GUlI4-%UOG;=< z6ElvW>ZeiO-zi#4&vQLIqjk<8X5fSrp@Eg}&4T`o5OCo}5U0Lgx6P;R0`{)n$+~Tn z!XrXG$4xi~{tVuPdK&ebg9zjf@kz%a7?fITcb69>4Y&w{!wP7q!yzz(%-!aZTj7~( z%byFxlSlt9Sv9nQ-kV6o37e2jM}2OCaFBUWOE34J-P% zEHv)xfv6CoPN}gP>1$Ouu{ZT1#DeF%>fRJMGlw1vBwhFEl4H&P4c$vJydpSlM;*?_ zjkJ;eutX&3R4+YuD9>T$Isb#{qoHC%5$#nD^Rj@;U06T4G4+d=B6J2UMD6=+-{iJp z@(;ETP!Rr?t}>^qgQ8=D6c`pUba1q$cj^T5#P4jEMXFYjmM})0XZ7Yf3FLl1I?>sZ z7$zAjUc5fcUrGXsJOcH}>3vnN48U&AeKafgVX<#qFEdrI;@W8utXxXLUo^;R*+1!R z9OIAp%mw+ zX8zM~xwl;SoGVG!3veIZImwkB4ZY1i4H0C%W@7y+a>W{7T15@*^2t;i)SAH5s4Il| z=~nrUhxtH#!Fu&pGjEM$z1TlKK`{{dJ5YW$kH)aP@NtY4Gemyq^H$^$kK^wXZTO~7 zuTFT%Jy*z(_Nft5YSePUtBA+j?*r;66ho~-eA`ozShjWd3YG>r=2y&{5@@OO=T$%7 zKze;rGNB0`%Tq`|C)D%X3A~Dt4ol#8nJr(ZO-jv+L!M`lh+S8ZW2vvS1)y-TnD0X_b%5Lr2gG3=bV>loP}AyFM!ox0S0<6#(;o!Hu6`l5wkq zfxQv(mf8p-xPq!ZCv=QmODqLCzg-DvC~>a?{ZI@fxLl|`Wdd+`e1O@*Hk%Vkr> zp&KV~13JMRMDo8>T+E|U+&SXrswm*L4Y;k0zaKB|Xp$jG|77?@Erak)nv*lOwogen zGlPjk@h9Yt2qB1hHiOU;fj~wbL4L{+F+7rbK*T}wRyi0U$;H%lvM_;3aq`6`ya49N zXJ5obwt4WkN#s+b$!h6CWSmb3^WPqz{q#U8$EpcMht>7yLirh{p9tP#C2Hmkd247u zW13-|ma{%#1PGDA`LS@j(LG+x1gT%x(6xT5_!^pm6#{ z`eyQ9d#&ZC(TF{ioIcbfVAWJ0Wi5Y@N7zuMp79)|i+9R7oUf|i-)lbP@$Y1r{yYM0 z7xu*qh#4+!i2(}1a;3`O{72zyl981=2Y;Emja4JXlu5Yuek=`dX=@;6ToPe4{uhKI z8W-g>l!gPjn7795MN>hVosE!n3?rlHKLau1&BJoi;y!{ryo*j)`X)u87H+%XKv%F} zF5EJK>k|3RTr1*AkK2!mNUGoA66>e;GN6Sos^yYj2xGnUA7oI6Wj$~^6%pQ-KWnL? z^Zegl_M&UZ%47H~by_t;J)D$<6M~x|+JOnIXH!xi+EGq7eGH{uV5R$6_R3?(k&HMc zb7-i2_f>3fKy7;c(nebr0rZ~?Gjvj}vT`X8N<8Klq|c#B{>4HcjRkGC(EX-XH9nHm zDzUMY|0J*mE+rIA&q9s>-RfQ|4FN0u_;P~5sp_DJ!qrt&Oni!^;c%d$As|ZacUFg~ z(2mo)zgpa`v=p+b!ou$}^WR~de=%0^LOxno8r?|c@^d<2mLs7O+^~D)!cu)5?U4=m zsfiJMfG|mpPl5GWUkQ!t*H6`7PM{-aFxW#vNm+me7&(B%C}wl`?}xPyp}`P7pyIPW zvXshEMM+f5e*OfrSl|TKF#;T4TuEvVoSaOgn?N~={{?>~wItzwXh*GA|Q%NNeq)?BZ*)Rg}os4^}tnLt(uAnhS z(jyXSsyp4+rJH!ttJ_pPcaiYE*%bP)cGRrj;B5OflgXVa*20}muvg@`3w#U+h^Zg0 z-evJ0$k%rTHR(1awrmHE-hZH^*mQ-pEz=Crrl>X7>AvC@?-du6&PPd9|pr3;)G>nt_O*w*YmK;g@bLX&UfZWmB)X` z#S;k%54&V71VP+QymTX0X%;LIwEFC@&rs+u z4(XAEt!#qxgLx1xec!xzKb5T7mD%F)4-+W>h2LRd_H^^xl!fasr4*k#t0ytD(I7KJ zBinPK9{5fUOU?p{&#_-E^Fl;>;8V`%0BMcotW0V1iqxu24=X#b1EyoKZJWS;By6*TyPawN=Hx-Hf39gI)44^II+G0R%wi#3YyTJGdOns!Dk4R9k-Qs!4? z1|Vx`o12y0>D_^RcN=;HI}d6K<{;!GUQ4|}80*2@azimj{r|Ue_K0%@IKmMhuvZkK z)KkRJmRrw2oVR}3eP1tM%a}@w!!u6+K`#qwV{sG$+s|bO#WGtk`e}z+Gh<=I3N&F3 zOk)t%Am$$EP41eSgs<&gFFHtJ-9sHTcqt8TPX7Ttdp!cA6J*>(b$EZj;TIrQ zVChQJF_;07u}gy~Ui#8%{*lvuksXWAC|b(Tj<~X(B#VqDZluvB@i;vCaN;em1kLlN zljcR@JB0S`@5usy1#j=eHGJCP=UT${l%@RsOK}a@mHY1vi>*`cgDVtV1PVJ6Ara?1 z`a9$lrc?dPle5s0*KogSVAD3D1P`zwtzyiDFT*jVeYAm>y{2O%w4grc4SX0XIzJ zV7EAu0VldUc0&<@F)zKH)`+h&JV5lqb9@{Smi}P{V8+k;i55o8ANR2!bE`3`PfisW zKeOz%x~nbGS2VtqU;GU2%0mLCjF1}ZZ=Z8E%|-8OXbQFa%C|m5N?z~P(1YHiW-@D| zU-vT+I`PKlycMZ6+qxT$xGd3B14>XFRAk}2SzuD-v~n11cOG6xq>Y=!Ge0+iD4E9c zs599QX#?i+a!V9Z9f0ydjBI_af0*1jqW7HOnlZ~(6x=1XY&bFyFJf+Vj)c_t?7f>n za`{MCsJw7kx>F!r`zkLR)Two&EvSh}iwIY-?ad&AK;Vz~w}-j`f6~8tFUI!X${-9c z&ppp@$udZunLVB({S2^y!)6(9eZ4go7K5Z_g5>GQ)rg+_G3q^uQohzk_lHf#xng8O z$gwc9y2Soh^Bu6X-bEOuRVKYzeG0=Y`Sze_{rgSY<0GFas@E3m$~V@nGI*M7@f=Yy z9jogtmwV*J`;^I(!B{M+9@8vV{L# zj0ukx|H4kLY-Fe16l`iq#oLx1xW8s6UVF|{?BD?9&n#&Mxib3_t5_7m&1KTWd_yaZmk9Oyy$G+RR9y zA8NA?&HOU_q-Dd4mN!MH%)8&(*Ot(z;|5sPWvb6bHp( zK)qrfr3|q|>esZ9hMzexC}WAzzv4>?tRi|QLy!#&bOCnQEuRGxoU$PK$2LQhmBK9@ zu!lqe$9t7D1~+H@yLvMLx5=Jm;*1^HaW^qenwNQOjkG&@xj)NGpa!bngA-xNpaH8& zE}C2xy#kukdF^;%re`{8IWDLdAP(kLosS8?G8a`Exqc6}>NBeM<UF3tyw$fA^M8MuIcC?F{o^?~ z2gE@L32-f*Cqeb#;v8#sdlIU0s$Nk)*`x5J+TsfZqF#<=D1xXmIXk{$%rYEn6HC!^ zz`fhCw3_+^-O81$7{iG4cR9hZWp&bSWHAPWWto4EbGz zP$HvT#-O6ufpB7;`6gWk&L-B<#9qMNxt-Z5ppIt1-hNDWj5l`Z5XnYE# zX9xWJ&ldihp^%Pw^f+nvcv9HWBYY`qRiYm&UNG&wLNR8`>(6ZK+uqvM{`kb&q4IDI z{z(`klQ$)pBz_fBc)Zj<+1;9d@l#u>9t%mEuTCn{gws$qFF$-Ca2*~(JXe>hBlK#i zo2m3M(h}g<31JO^;PzsL7Llgo0d8%u{k#6q7qy#iyJOz zG=1*df(s`K2c}BP?EyZSp%_YTtbe@OP})zpFc%!5!Zz6HOgnXt~QvfX5q4P0-ffT*k%e^k} z!=-58t&lC*K=zPrS{6+6RpyH1;O!m6!|8N?ksB5;WnDs<{!0DZD_3@t^o&fA?fEv@nphB0CIEc~~~q(`}T#Xf2O(ljV%B}7!V%PFS=+xha% zAlPqWXW5p431<|{qoEQ~<4L!Jz6cg~{dL$%daIi0pGbSKtuTc{X4qH57Bd1GIAJg| zDp&6)gN&5_b|VI;!NtTqGFynwHE#VVUUXve%+l7e9qUq<2B1+M;7Iskh zx0G+)gd1eN-|J8$3hmSlX?YtpHwb1BC4~ph!YUsJ7ey8xex!&A$XW{RNWRs$dp(_P zcB*Q+Z2lq^zrt!XwrVPXb-$gB!{9yD*mKN7CTlmOAq67T;wyj~<*{oIK*L;1r%L~3 zkZ#7iJb1j~{{mNwU(qmex(kBZx&(bRRy8x5_o=_E4vS=efani4)7|adTsZ#16a={$ zEqYPcwE&F54eDMxM=|9813t?u#6-7Wm>7Fa72`ixW8oPrXeTJ4_+`pCx^z zF0SgX_{XI;>7g{l7&BwoRymk)rT#hZ$78SRwL|FrlQW*l+{$C)J-<{~Q&mp)NtJ}I zx*1|ZwW^|)s!ly2&bcd6JFWOx+|x4oGAlPr&FXr=PX|2e6ZDknfg9IiSPEO}=WKS4 zY+X0Eq}>dQvV<-hfxBOf_+mWJd4{Or#Hh1I<{OepKE}Th{5I$!%X7Ga@8_50g+Bab z7e=-O8n(@~^3=uSzv{C{mj^X9Tf!SJsp~|Da|whDbichD+ZD zz7g>7_!gDkRI3GwRgeE3kv|VMx5UJ8pwuB5+~LCgs}-!#F$j$-bPswlAOFjIjZVU zo&r{Xe(8;)iR{Ir>xi{PYe>8|kVKV+Z=#Hs{AI$aKI~hpucK;M(|?dT6`JH|B95=H zukDi986wUq`Jq3OV|XOOtW|TUzgfoqA1^X^0L4|f({Q%b!-|)ZFtwT!A|MrVxBY!y zDL>(_1rxROG6n;#p)NU56!R>inW!g}ebyQJ9n6i98GqRgcmh4(gG|hSGdJZn4m3dWNYQfA!bl}+ZQ#BmoJx9Rkjo{n-u>^R_W1mz&?UQ5m~LpvFZte( z_%K7no2M8_d5e1d?M&^f9O=e`iO?#E^UW_DxJN+Q33)aH@7CEFD#2Mkvlg} z!q2~0Fw1r8ED<`;f|fCd+QDC#znYySK)bmyQNEJOX}}uBdvu(FKbsDfheRkPbZAcbh^d z8p>?~Xa0&uvH;I<2PnW4Dzla%{=m0J?t9wK z>!&YTB-p)Q8G%W%DU8CCKjDc|M+K5rO8Kd^IlE~+b=eCj1krPvR?{)~0YTwj>G8W7 zsVd#|KOh;0|M@suJ9W%AB&DYF4l6I4R6*5ggS`dwiE2k&e`(>K;nYD6Z0@@pJJmvTip5-epIb{8-CA+-6dVG zh&Moo>8zGNVN2o`CIQ7yG~ZY>>;Y(+}K=S0|B|L7Xv4itx5I|STsz1>3>qpC6pjozt zYB;3SeV}e?l`^B=I2(53sp^cRAish3*-!hLC6q=#(!`9=1;!(iO1KU=ggEg!xC7`I zgjlfu#eM{jDKk2VdUuLE%_kIaV#K-ozDmvTb_&jC_IVo9!+|(9w?t1y59`houI3i? zf+Mr|cIdc=qWId0Ff(d@J-BHlz&04XAL|-D9OQKTVT<&nDyCW~UcQQj_%oODs8&c9 zoX^QyX@$*{EJx?{{#H&lf$ZNZ5~Rs|Iy<*f8GrGB{=ge&^sqz>a!gh*QtGQOmHTbv zm=+TC|?;5%^mjuQGN2@vA^=vgU^MVD2c6fb(~4?B+nuA0;Us5V1S1> zOlGIyj7Ix{D#%QEp?*7EEXn{w=G28sZOqYrBV4nz0qRQZp*Sm2kn|;#^tu&{_}4+#SO4jv+`6?Y+hRUViyMg^|l( z-nR+G^{N1+dUu0+Mx5}?12Ai5_5*|yMM5kAbb$4rA7w4vef+?2gty^ihB*s9H&KZn zgt~N00%g2)!a9Nc2n5}mS!Y6`eg!&Zv+!+c86rz}PR@tpOi*|*n5@osyk4Y~jeq$| z#ruu-N&WS)s7=iURx^-WPv>ruh=IfxD;`Z(XOZbnx$_@&BJWtmW-C;A*IKedOkc{6 z61B)550_@wH5U)})$TRz<*uLj3O{>71n0?TBm4CS4%tA6W)>YY3-SJXO#qt?bY_H2 zKmw8bC3rSD;a&jR_bR}!PV{r|JUzUV)I!&K1he#8&@3L3N6!{Lqxz8WyLG0xQoA>R zm&heVj__|r!)%sspbp}XZpc@0sSJVqMvYAHD*rWc+sc&mIJEWSd)_yAceZ?mwgQ7j zjF4IujkUhVnMdYNaWJu*k@K?mrSE)J@~L+3q5m?fY{?ZHLp176rU0G{HQfIW=4P;6 zr!U#4C{z7olnF9RBDj38t~kTw5JD9RmUMsSHhe2lRj~Vz*J}?k1}Q|A)41|>_BQ?h zUF^%0NN1p-D3riOb%Q6+Zql|%)*l?_&uXr0JF=!xib#kfBDY5+%A zQNXhEk>DAYdpHlTn?V&Zh+sAg$8ly^9DNVM_hyH(6Aco`2k6RJcx0?&Cyx$}ayQ6{ zAj!?<-})z@yIE9Ow(%uI&xeLJ*;f*VA`m-Pr!cBYzeO#tu{QdZ$D)4ktDlRRAdl}h zFa!Mo!xQ3Daipz1SE;x+ycvFr3%5)|pl7aVx}jd(i3LHTmtHMecs(jqS!;a*OMm`A z446Lw2D9af!$x?>5}hgd`H86|yNsaH(QQ^w=o}#|EaK1jJr{@{LO9FM?s+ zdDx}I;$kkQZg}dN#diGAJzdQuS~xNoc~%o69M!m$@74eb z;K_*Xh?(7TdoA%usX2w}33mQ8@Y?)Yl7s^jW5^ic4BtjWv_&>F(@z?$u#0 zPsIV`nV(VVsM?OrRS|7M;|jg0rurn8Y4z#)8m?ZinkhRx4hI6~v<p2$S_Y;J+Zd z?)zJ;DEjzs;(UxXuT^S~-T6$d!1jl|y!%lNoXSpm$reD>#t-Nnl%sH3W%6$Tm=FQ+Ty$I>Xb4U9W9F=n5433RrZ`=bd-HVwapnd|3q z@r5;74G-~P+Pl^5Z)G^UJC;4pyt{m=`gTIBSNY*M%;ZFXTmrMb$JvqWt0_Ty0Jb%< zAlXd?wgS^DuOA2rD+|WB2R>S|EQNs%qfT~+d2@-71MxNvrr*J~+g0ZQIjNs{a)Tu3 z8cFkzqquG;w0j%0){71uuaBgIPOi3B3XR<}uh?^4mJEZ|L7-f6v*y{?8J+=)INjC* zy>sz4W$X6dpd30RDDu|+ouIfINb)%zJGIkP#@_@{;6!$Ii;pI@6Njsx!g8E+{w+U+ zW>*X(^BkDU67{(7;%nv)%dmepKugu+H*jyqJ;YFgf_a*eXO0X_MsLuMPG#OkgwLXXe-!qpyxFzu7~%GbWp zhE{kA40Fm3VPQ=wZ6_=ebJE>l*3B%?++?EIP@ch6Dfj# zW*Z%IoM$zWR2HY%+yg03DPX7j-}R*@kMOI{hsZ`Kp?d$>OkuWajf;{mnBb;)-2i!M zT00?LfvUaM#OL20<*2-G*Ud7!psm4=Dd+m|?S&#qn2B5rBkrh+*{5tbr!{E7yLP6# zR8$g>8k}kdQoG!w zd>=W(Rn_=HZ0>2sqMvgE;ke-<&55vV4e^Il?lExlK*Np1gB@3pv)2pHEYF!_*ZK2`KK@pTheazm>CCM8JKoRm zB3=j4RsC*txLl;=mhuVj_OJctnfTcm+Z*by?1^Y)))jFG3=WZI!cgo$gg!JJx&@A1 z7k%-5-pN7wrrrURXj7jymj^b4iS*iGID3ec;a2_;ek&T8+SiCaA+5!R{q56Oj$P4v zQx{^xX?(ciUI4X)WxT;`1I+L|sgijW8((Wv7)44@rZ%Cct(^L8=PnOefZ)PFGpRfN z^`}z2Png72wE5QG`ztlip4cv2HNFoozh$;*vbotppMBIOHjY^^!ZkFEy|pWVmf2t; zBTsjg`B`D(E?=J?L!6jVz-g)P)3l&`BjkSN^0I?%8YAd~8x0cJhr$#*;kbnmKAu$v z_di;QNaI_Db`LUo!QlZkH86;<5R02A=Km6G5ZxL6yFh%9WE{8^wiv;O82V1whG1zB zU^pdhuYxi^N6@-3OUofthIATv`<_@ga#@f&rD477jIb6oJo4>-U7dQ1sF2FIQX%ucc{w3% zgs!*&>`HrHnhluDzU7|sLn`NvYvt$w(|ER26*Fx#)vF<-joA+zf?f5yloGl7ZyG@) zQLd;5a_~7R=ffk}8kCD%t};H1=XC#SEPtwzu2rK{<+_O@@mcW4>UECwtAvLMhgfbr zbpfv%V9%ZvEA19&vl7bg7(5QFTv>6r7$3Hpep$S-(K#p zIy(XbL>C7TH2aL&_fY^?uA}Eiit(}DYenRUwJjVBQ96=$S~X8xd(nt5_6aQL+HlO3 zfv;RL?LkQ;j*&39zcQzk{0I1jGfK~qEGBegGk%r+ z)j9owbC}>P(-us&dU4)jS$-~hXN6U?JgZTbSuV#rsC znZLxwJ`XM=1X$3#*H?h*_^M~7K_q4oq!_luGrK<$KG3n}UVM*(>f8?|K&#IbkpmNu z7z*2DQP{@_+`y`J0>9$3Rhov--Bq-Ivdf16rldcRIyR!VRHhH)ie=APq<4nlVW3TG z=out7U*rw$JJm9z5st*mFx_lEA_OOJ)_WgpY75AZOak58B|l$+g-Pj!yl^)Yj8~zy z!l5`AW{z-9;((QI%!CR}A)E11j(Mf=#ce1S&~^BUUUiB}cS}f#YcI#rU^!OImQ}I&*M#mGC8wH}N-S&31F8sW3zGF{^37 zpzk`yjIN(=u6iR{x*dy)Z?1lt5XSQFv|-r2SLvhTYX+A>JpdNWYNc^w*8sDm`chB`n0#8^4~%(e}0geIZ9EJiYg>_f_cC& zcmTzD0+*cpxX=M;F-bfx(b96!h`>8@{S-$RUvZ;{1_yQ!48}2on~b5I3dT^Sbb&H& zG6&Jt=Alpg#68Im@QKKU`i@jIcN#NJ=;iOHOtzP>+h5x@H64mrxML7b5ZJ_n29=)N zbR2Fpdll^*2;HsI?HhkQCh>_0LItl~>o~(9p3u?m-w%jie#@$7aE|EbJgAjbmFacJ zYwBROV<8p-c~9H3iAx#yw_6+lwD;h<6OlM+%2I%&I#$3k>WcxZt$raE>ArN^fx{8R zn4)N=F#{EGn5XwDnV0o63+6uBZ+bC?1hFObOPrDu3QYraJvDAI>LbrA2`kb#SSWc| zK8K&E%`KYj?a0&~ZQaApQr`ill;57$sB`;iS%)ua_>zI1q2GyX5 z>or>=4^Vk>G7Ze9n+f@v?hX{MG{fBS?f<=BO!qi<3G?vw7Hyp{8*4TG=U~SL!E~T zV|}UA+cq=r40whf3N>m_qoW8I0;B{{AMVVvYsDMm)0hh~oI6)uPAtPN1c9&3y(HSVml6q8dK;G5I!8RZaf&l3=RM{X*Q29j6`{4F_%8kl}TF~{DRSuz^(IP zKzvogoZMr@*}GkATmv&TRm1xTeB5uv*3e98!||5Tpa}epfqiwAyXSsoGS&P?oc(#f z3wpjR2$24L)92SA44EWHjfR5D&-*uNGYx_jM|z+wAkg6RRgNIOWiQAAFtzvzD#li9^|le`7Q5`VJx1K!;_$Jh5%HQRRT#SgZtYg zXudg7yu!?yBK7Oxcw}sZw`vVg6nV)_gGN#am{hV67XSh*x55EZfm6-VfLuq@AGpZW+50ZeaHnbU$ zq}$YU5k&@kW?-iZGkmz*IM86@f&TBYy4ng@e?CZ<=Iax0I^U`N?9AB{kWPZqSfoKp z(cfHW(BC9?6oAptJ~nfrmy8O}j9jRblMXhk)DE6oh;kvm%#6to85W6;Q4dNOk68~y zMs!$|t}*}WchBIEl7dfgx0!n0^c$OJhk4lE6{reTnIO`Dio;X zi;)pt1rwV^mTnTnx~XO1orCAeW=ub&lY#>z#qW0;@oSu`JQu&gF%2ETnDN{fe?O?% zQKkhAc_H9qmK;$Ez&clfvu+YWO|oKm4vt9}>1x=rW!yr@MuhOeLiscPuVoaZbE@8+ z$SlwL2@S%?{{EX6iy0Z`<#&Ld!vq}=R7#GXA8Vi&NYP?6{*p7aTmhTitCxT*5df%1&gupR+ahd9;#N(Y1DEe`PYORn1q+zn5`cn8WD9c znTK4nA(9ft%pg*_AOHEVRbb6s! zIcwlGDl73HlgXZkM)r8Hwg!GaQsWTO5HZdb|VS7Ynd|9xfPBJT+n)s#%7NOUUFSG^P2z=3XZjjlH6PI0+*LDJ-Q{PD7Sb?mvSnE2QAAgr4+Z=>+?nZa~ns>X}sH6KQ$riO-HCLaWur zVwO;oBbxq_=H)0ByhO$88<^g*rS2f0mi6j*PS+c zPogV{bmfFC1+Qnx*VjME8f8AH{=}3fS8Li!s^&sb_tmf7sFj+6O%@0s@Uw-W_VgkV zh0UR+u>o?bt#5W6cEcl}kYDEzxQ4S4w|Vhu?$q!$FU~no+D0^HBp6QQ2;aP8OX=jv zfK5r_eqa*g1txegm2w&H?~}lP$9cC#|0OqX6hrjvv>S(8G+YA6J?XHRMzpAa(Pu_I z*lMHFS0)JSk<~yjJ&spOvA-<6B}n;3E#3-nd_ZXG%mw7_H1VBPzUT(=U)lR7MAYgzRK{Avu-$dUh;28O?r~qD($50 z6C8>vj^AKNOsMB239z11M(?{cu=|aTZK3eBO8m_>=2Gb`IIXT~O;*W0hf1oX+}H|H+R#o5~xT9n&{|24~Y(hzBA1p~^)N0ckQ~ zJvS}AeEG&wX>fba)L_=<=pme&gyc?ds_r3SSyneK&h5xKek1^;=JK#DdoQ&E*tnSM zRopwe`ot^ea|yq!B*11C?0e_D*}8g5&#;lPj^~~ZYzlYFdLa)}?q>1iEpVN~ zhEXH}Jfs>7H^$WT8-KMFuzfJXRQhSzRhLFaRC%YO0G8R7&7BxR=+nAK?VxKdtZc>y z%8yf=*Q_`_#K@F>PuE~fX+;`7DlKnQhuG`461zHenlG%#CB~m1&)qmA{WI1jAO|!? z5w!RleAJ&XuU8wDO2Jt^}2x?&j{S zY#6T4ouGh>%)RcG8fl=O6C7!gf}m=_`nacM)g3z8od%_ImfO*u;Y-LQD$d#gY}&Gdn=%mlVRGZwBG~E4H0{ zQq!lSoJw9r2;|s!L)RC1aHY}U|LyF(W=4p8i=?K*J=|h#yN5Zl_muGT5sQ*G$O37L zbC$7aw9NCKsFX7>e7|_G{eRu8KZ&>!t)4IUa8*>OpV9y<;s8 z@x*-f;#>U05KL~UyCJ#fuJOzUO7MQO&t6NxaydPuJ*>!LcLoSLI5g`SNBsKk8jAJ} zV@pbr|IJtPI|C$DU7ft*C0X0rVW%uVN|~edgVCexlEa~+jg?x#!y5B~ppiPsj~ZT# zCfXGxsaCi$vs?ko8WBqS_s2Uj5eOsv?rlYA$QW8z^-ydl$cFIW=sNO5KNXEs7}s|J z23Gpq2EI`J=g2F10XOC?N0754&*IV1eo3D7pncSu^DuNa$Nh9OKuLnVmVjRig;5jj zAI5pW{N`G{{>lZYsF38g6WW8Ka5NCr*UqjOTY`8SMCcdxBnO%&LMkUnr{3lcjYs8& z&dLZRt z$$GYCx6KO?WeYmUg}tHBSs;Th!qXhCJHRjNTqv1_Um5*nc?w{}VB^aAnzXr$_wh=tP0{in3&W|1A$hY&KjZ9LfKEd!o9r zTohrJNDVt&?_3wyiEi#>wwC;5uEnGLzqGejoKdNjKUFVfH4w-#VH-@qy(t1sFT8qv zVG;E?Ih*AjC2Ta>6R^YbbQy}tU}dD5vIx}q_Jw7x! zfVB;JpfGa@k;fR4C353g(yp+-k$1+jSkQ|Rl~~A%R`&8w)g_41T;3y&#C4SQ1&=BV zPq72zi%|j>;=se*_grKq3B^<{26ETS0?=p!{ z)-HV~*c)^I!(F;)_=D2BLsn+qyNA^jiOIT7w=f?*JAmY}O8>dWRHT`A-ije_QvmEM z>78(F|I=^Z6v%#(na1^npA~Xi!7u%%!lntigsDP;df~@;Hv}1cIIV(f{i5oNiDP5f zvZRvdIU*C{q`H3Umfp<@27i*AHMdGxR|D(Zk>wQ*iQqpPY@ySaSoA#X|Ha+H=oy3) zS0f+Og0%+|Eof>Bds$i%j0iT?x!WZ$rroVIZ+;k zXBimvS#VB4Z6H&m!S?iMcrlhP^uCHs;y>7XTh!lANn4dNsUoKSixRIEc90+wU{}{V zI+FnyLY*=)4Q>$f5?OA2T5_>A@Mg-bbB!GroQU2k%i>EA$y5lB!#hx4e%od<9Z_#6 zpom)=688pk^ITshsPMWKo#;<2x|FgIuaX@uHvmcXe=#CdUKGlHLe{+RNMb+pf3WhaPFC1$k#dZeXHEmGdFJxDDBppqZKk z;m-yz5_705cj&Zb>W;A7NRz2@kwq4S8RRTM*V4)1B-0t0NKJOErdj$!QRAHBV}N^R zS#crUP;J(~ZDKy$Blw}zHOCU@pJaihjUf$>nQiHT{3s41#Op|*j#`E@diVk{oiwe+ zU}x1eGmJh3;)Yat{dRds;G`kvEkqjmMJbA_TYv;zR#%ZZ2PtO-9e^_VUh8iv5Y=HZ z8WqyTgUZ%+R6-z4z}YbIVE$YS`F6l*q=@G{Z+qH>tLwz0a#~Ob(H!Nx9W36p9N;z* zsrVGs&Z5t5$1w1@yxmsrxDT~A>19rWraP0@1=fyvaDy|A#{*G~gjjk|drtWV0- zCvV}_E70`m*~idd)N$a7u(Ly<`mow$hU6qTz*WfUNQ=9o^3~@OUOnX0bCo-v<8a`F z8W_QV3jx+B=4Hr8MD?%Bv!}K*Ra|AbxT8)Ar1gtJf+slFByZJCE+y8#$A;a!;k08p z6{1OXi)_m=eyRxG`M+kf3=5B;dE{Rw%9 z`8&!ZHl_)_exRnBz&ae5URb+HxLWH_l0HF6&WAemgbCK@ zww^Q(w;RP4i(ToPNnbp8J1BWVxK$$O4fjyz&F(hP8A4e1#$S5MIKWcXS-bpQ?2muL zoX&T4#L;bK70yXVF>+@F>P+YJbdolflC0IjjXb@akHa!qU&J+Q_wQlD?MNFkxD8&& z9g5?J5>(;OW7KcP7l5N+Jf4x@ZMAMCsG6(wg_LB+MS>`En{SJmsCh!3Q-*VMI>6=o zz~|8L99*;J?z!bh#<6#B6iWdZK{d78fNMi);HMWoG|r?ig#>LP#nn$3Aka9GL36(v z2E{fVmKl)?j1Vpu>1GGGARkJ+Ok(RHd$95Z816k*kolI*lwM}F8UU?toz!F>F42eXx4%tm zsS`?J(v>7`TN9)CDAbjFPlsQxr0=^8A5|tWd5S}`;TfuiXw(eRUHetXung0)`}d9$ zEH{-QTi=MWWWZi?P_-g_RAJPlP(>G#YDJB;_~&(I$ixrbOH!Uqkw1?* zNnZ!?D*JLum5r<5NBj4=$0Qqy0=Ig0OoG z{>yFyz|p7g!+Y|pd_N9n)5l0s=S2i4>nNs} zr=R(`35ut?phRaAnxnSmMk*j<6;4AGf*!GV~>N7BkUjj|!I zB>-ft+*js|l(>{|p5klH6JR{652Oh4qD|XjlPA+s0eW4)6s+s-O{!m5ACpceW#{qX z#p0pvvMsJ=R`#cK^{DP~_JyN1*P7n~r_ImAK>+o|c|X7600$%w^;Yue6Bq0~gtbiP z)>eFbP>j4^Dm~LC*u$K>`yxtTtKz-zbG_omD_+7@lva(LB?nl&OKo5Kht3ldEtF?S z-2AUd+6IkqhX;jn)`e#|yMV3&3vQTE9Y=E%6;cJj?&^>J8e-W_5WV}1|8$I6quSs1 zA-+P)n_15a!{-4)8%uJaz1>0a%cw-mP}@HQ^vMQme4=S;7IgUXnCV?1?`Ll5 zH^v}fDv=Gl%`?}8JwfwT$G&{@k913a9961N?Hns;qy9-lYk0AF}v$z|ulP>D~wJ1h2 zzQ^M3LnIWGCg{RwlQ&^;?1Nv1*1do6(N_ceOal;4pzQ76*Y5AwS43+H1GfR3%DOSg zSCB?HYp9N9(ki&$KSAVm{=t6g8ru`6{sWCgBcU+e-Z#d%awIX)oi3;>A&N{clbv4NZ-#RnB@LS}i|2 zZ8|CW?nWjSrWi9dG%eh>qF^5mZD(4%b_4War@X!chCO3LLxs$o_;C4JNDFY5(VKu* zms1=tbTZa8j*b&|{xa)$X?QIWdl0+Nu(SpM_vF!MrF2H6S9pfB&Sr^uDhi+Y7OM__N5sryVH32sq3yyHGN=i5mU~SqNcpu{tW8qh%Zl?Xi0Re*%XRU z4-a<@pHR@79JYY@!XgdarY2Kn7>{}6c`d-PP|H8VH^U-N4DbL=6AW;Fb2Fmvggk}t zDk$EmJPlo0nsh(ZSeYm(?wuyojn3dP&N`|=+8XU%sje8lTg!6Eg(Sg>{_C4@lm$B=}dG zfm%1e3Wz(fzbMw>XIS-xVOJ|CU{&zZeX_*0kGp@!UlTz21u=ar1-ezfI)^0S6@9&q zmXD)+MybE(%*`*N*h5FKfhY3(>;enS(6=+~ICb2nTLZ@(mkgNFD^4zKrXd&zm29Y7 zkusfgN@=|tBi={P7A1{7xP%{P6;BwL=!;~}b3w@N3erBdf5r~jwsFi-@@HaxWtq8`pDL_6 z6|Oj4T%1Wf+tt6vc67u4m6i70|M1}KO=}?iF3ksQ{OHycN>_F+Y398OvocgrB(zus z@p>t)cnl%ElAJX$(Qe3WgRh%kBz!G`hNC|iL9o%-NY9XR9+kCH^gvpB_L<%|)^9Y-t}p1xkLPY z1{!WwJ)r|%8m*XwoTjE%03)}m+tk0@rDpu&^ZQ`6TVNTgCpPkgh;VcqFJ3R|T+$)& zP0&3STP4wGg)!Ku#y`rgSJ>%EVcjUEFnX2y{@M-qkdAe|O(Br?P)Eh!_fPnrnA~D zAg{8MEt6O|Ug%f1GNU*W)7=r<+=|p!`Vn7y!V@TMO40{P-SlQn0HG4zEWdUR{5c!7 zCQii6C}J_qgWVUDt%tl7x=@{eSN;fMhbZne$o%fWcY)67PNDN7fW5!6LQURbpxi(f z6-}QfPG@B98ypo#0`%y`@zAn13+?Ff6!e*1x5&-#glm_<4~sqZBwQdsS9+A!38^d> z1g|)9qE%r8OORzeJ>lyz_QFwOPz{A_Znsr^?A2&6J?^>LFXS@aRn>T)_ zxjLFSu-qdAw{?0&OXf9t{*OIJ51&X^-Ay=D(Nq`M*-w0rdsPhf-AAFCQ#4XO{Z^~W9wnu&U6@o|e_9bKm| z^{F44cH{O*kkuGD=pkz-CUYrwlC$XbAZ1dNB7=GslmcIbD}lv7rCq>3b0y%oBdnUm~c(`X8u`NUs4D zEo&dgS11N(3t87$xbY+c)AWyu@Ta32L_JL|mt9t6X{IqB;UJYr@g3CY z#yYXhi@Vo#-@08nhUtRDqS!t>JCV-i!}6zxqU+BiZrHsE0|@wtQLd$;I?(t4*~Z4f z6PqdH4`nO8T5(?$#%hIcjeo%(B9c>SQ1l!b_<|3YAkzG~tLLKQAB=Kt%a0DmmvP&| zS3l0LH{ZAAQZ$C_90QQdn;9TS{}Eq}`rb9Fc`;lfB-&cHp^t+;`oxWR$3_o@ZEG9D z=+stW$s3l#n5klim?a|i;G2w~h?PlG1H?*KM<}^6L8d;jHLsuM5061ql69yVJSwcr zIJ&qw5jKoDsWS^n#!;jYa;}D_x#}c ziUP_0jDVImeFp({44_(Eg9*Q)y%P1l?14VMD?rcDbxFljCkKK|GC{2CSu`Y)v-G(Z z<6q|^9EFkz9niboPuOa*BL^j3>p3DN8F~J)3T4()}uP$ws9PVzgdO?{wia zQ?m?K)dk#one@vUZe3D)>Fg&u9WLiFYy8h;xFPg@Fd*AFy6Ln!(W1_H9S@F$$j`O> zjxSs4lH<2eh0~O2;$>GS6v&JTEozo*X-Bh^1D70rq}XYUTlUVZ2+rgs3Kn;4s|4PVFHcdnE z1?}a7+|G|X8#W>;+kMDr`W(E%F6mW}AV(h~Xxz@*2-d^RoS^SX`+_vj4x!wT(U3el zg~*Bv-LKJV*1PY2LUOwt1d18F$}_L*NY;vrw}$bB<811*qgka3XYvL)jtR0|)-s8$ zXszc-=f~KtspaN$Ul3(RxHX_6egAATO82)Rx_xh)4yY97NE>z(A{sYtzrt!6PCc(N zD#bHQ)sWSHSbXm(0Zqu>j}6)0=$WpSMs9xwQ6SbGYF8ece3I-__0CqZ8jNUu5}nC& zFgfD#>61tFk(h<+#HS6DAV95OJe<|8se;=Ri?wRKz~3H%C-725U2)KIyagNoz}9pm z8VhyTyD2PFFqBdqw=nAH&CrpQIDfj?MO0a69u(hv8n;lB<-FL$Mzjc5S9PXvCidC{?`}1R8rgzU)zTj$?Cc7>RmcO0M~XTh zc9$Wa=l&q*?-Z=qt#gro*hpRTHgozLQu9jtAP|_j*DAhU5v0Q7VWnws2Mu6AfB8es zWFOp?a@+D`*z=L>e6D{&>-iTOQYY+;M72L$%qEt+Vv-l!z@d;8LU|O+Kp$hI6NO$Z z%DT6NmYw-x$EPlvZ`ix(sxL6k zFe)Y(AwR@~n~ld0p?eKMaF|*_&+Fh^l3|FiZt=7nR0V-o)U0D{V$d!9Af_+E1yze7 z0-`kGJ-qZF6XB=$v!q;rr7vteqi)#iMLO)0pqQm*W<)e?L&mO1VJ+&LE}V zMDTfsFUdqg61E?l(s)JZaDOY5zzsN2Bz}n}s`c1?@oydkVLGmmQtU*1!+|8c_~ki1 z)6_^`Sq_2^2Z7j16C^Z_)Rrj$h{>?Zg@CrJiuWl!`Ldv^j&9Ye>2^b2I|=wZw?v@D zc01CJEf@&G))2-lC8(t}=82$;>iT<_XerXy;xtEd2qwD3v_*z;-q+(}bA!|?fbv6B z+N_k3qH6SVg1tIn_TGnYn%h-uy-=nywbxcweMLeAAH9S(x!}EOd5Fk>XVl(>K7){_ z>Eey1Ku+AQGQmZ&zZgSI5lJ|SOt8y*!4gelf1a11kMlHUs3M2Ydd)H4>^vXB0bEdR z0!?V^UA$E8BURe4hwmmBg)x1Gu|Bi1bS7M6O0&-Fkakm;wQ_UNtTLXciCT+Mb2vC^ z&3GabebB_E{P}UEy+jf=U^JlpTV1snDM^#4=H|9>BT0(CN!4Jh3^#2Hy%f_(GC#fI z_Bm49`(yQOs-JhDi4$+nNhabzkWC{PcE;VA<{za*DxO!J2J>7vEe8o^>M`ec5>s=c zSnWCbBZJ9j>bsGu!pR7fe<8FD;2JCd>;MhX>lQBS4_GMtsm#XXMj#`=)0gio19v>x ztm3mt4v*+B0nnN#+fbwsvt8;PeQrm?9Cqd+9(SP$Bam@`3+Z=L5S|H#@g}eG*MA28 zSQY3vvb5NoKTNMfdZ~u3as7+!cUofj5<5);j06)2B)eQ25`=Q2(SUt*>=FqRL_V7?P84ykmeSc>7q@uV4qM^+Fr2Q#2#B{ZV^(9DUE{n@g}6&?nE&7 zpU)KGx7rm^JA+qgj!8u=1s7&e-2Lmx1mc0=a+5J^I@*Ip04u3L=5E@#rqPQ z=0?bXJq&2(T)+1GVS-kI^ZrCdrU9gxAA#bpA&4ilhDphEj}#3XtE&DXF5L&iX#Ayk z^|P{QwNL60B?7n9-do*0K?v}6oz~r# z?`4Uow7)Se4dzA{AuZ*sC3;ZXciF64Rr9J!0wb;23R(( zu0%l^x(NK)S(Q|rop)c=&y49TvcbAi_EDn-f-?4leug3PE3alLJ6;1=SM4b?1HB;9 zbdf_kZ;YIqK<`ik587-hKV3xgQIYy9Xoo{w%g^a>t7gQ(X9;2bZ0epW?|a0(r?gD3 zLSnXE>lk3t*C6fN5>!p_BQy2g?yAorkD)iaR6!l`L_qkFWJmnmx}In_WEf$6M+C+O zFmA)2EmGU)+h&j=}(+oA_#cRLHI#9qWuV2oJ1z3ZZJ22uT;+nIJG;|PA7_;m*cBf? zmSoCZT6+UF(=3oSQe|aG0eQJ`! z!T3>tWt0&8i$LF>85LBMz?Kb*JEA$mynoH@qH)R&?X0X$E?~I*n?hs}Pzs>C+dpVt zcc!<)j?TRc>9#XEz`&waoeCg+O3|W2PTeJ)!`U95`{jALqnj+H$fseR5wDwN53$*g%FF?#PjP4O+Z;D^ESq;D0XMg7{lzt= zDT|Yf_|nxO?Hi5e;Bxjwqca^8McH(AD$a17LmRT7F@$2ahb^nlT9ERCBcqj`~ok7l9#Lke7+espb{u=9K_E*7^( zDF~;?&v##~hKe_}(pdkF?dEpLj=A)9kJ&(h@leNc7H-R@C&vL zV#fwl@48~KuMFrmaH1@QOAMc;P2t<%@E-NX5jzO`;NEIA98lou z5HaT!9pAuEOEq= z@sTq|DgZDAEST~&+fW93+g1#vBM7i_V7#B(G+XW$LXB&opU3TX!Gwz!4AI7(8m*6k zL5V~N@h!rB-naR_KW#j0^ugKcl$!^cJNp<&f?Bwy(?cCGG~d-wq9FxQcSsu`vS*0J z#97?5b2Mu2xp0cjo{?6dPPg7G@u$xrO6`9IdeqAb66`M0^ka%2GJ){tYw}LLS zN$E{InHWqt+%7+UK1?Q2n64gf?}qBUlZuGaX=S=zL@FSU*LOFi=ZeMR{v5Tu43Z+w z2Z$6imA%^Dd$vV!AT_u$xbosL?fTH-w>*<}?euu3eoki(@`|X;57+cWrV1Cwm0Pc>P@9k!e4(j zQEZOxR*mNzUS~EU=W+iO8KgXb-uVzw8cpDA$dj}!(^7^}g73M|)V?5}wyjVN*zPqp6QM& z*^>v;Or?^7hB!f7**ky+LCreYu1SyfkWRuvXtJRV;j!+QPXJHX zFPK=CB|3cbZvsL>gWF4nCWgwBQpzLRxGJuKDC$J-n5^7}yT_Mc5|z)!@#q~byo&%( zAaFZrqG@e5{9OZ7=Y)o)E(Amtd1hoOP;6=6{vbJCIhI&D2+ZT!_sqxBfv~l6Qk?C^ z&TQYqP$D~xv}G81b@e2wB_g&0GH>=!k_329tVzlF9@s~!oi0UUADat6W)^M$cDeD@ zbDum{M@5q6mf`4PXp}KPUN6zBxF`FOd=Zcw7w!HmO;jeCrEn&}2#&ba;p9-*qsc+= zpyd#CMyAz4^43JJ0Ac&TfR&wP9ES<=bgwudxG@N~z9WZJ6AKxh?R0zv3n)xB}I$!Oy0+~g{*s@m>0z9Rznj}gNE+m7ti1$nw%6|t(?oj)*%z1 z>LRQt)2ViZ=1=3jTS6ZOose7h>Xfm^;xp~9*=B3{n(6rD*QzFt1^^3(o6q+~OBiy2 ze59T&YDknDRQ17H=`j5|+utqlL{vQiIO(H6l$)dQU`u4m6z&0PcRC#d94zO46P6IG zv)8+8b1C49RJ* zB)bVmGMNmwDI#g3P}3Chf!2S@2%Foy4@bhs3Pk99Y~X|wvIPJ8F7@C{uHv3Y9TTM{ zctBQJ$V2|J#?KqLyh$r1X}x4!gJtT)BBPK&F+2s_|47oU>}eCY4hEEg6IpK z&!ZZg^rV`R5=rPMYUXQ?2_k>*VrGWQ+QFPqrWqMFxUD(K{PB7z8o(~$3p%q;kP7;u z?1U8q)Rwy!wL`;%X~j$y%8Q*D6f86+?$gLX4%V=0rBn3mZ;$J(Om4dZ*HfmcsaGf; zO~7xwAsv`!aTuC=Y-g`0m}s(xR(kN=ke;}L#dX~J|0)WHnIUdf%>h;y8fpu8?^cG0 zC_ijXj^UNhDpux~%X9OKL7wQhB~UQ91;kqBkS_Nc>ar(&S)*)h-<0znW9NthlP?8_ zTMkw(_j}*n^>DCUWl~yXnA=A?I9sLz5j(u5#{bfCh?JdP1y6}qD1$^YV+ULS>f39j z7oQ)!$!u_^BiO-P~Dj~~L6lxUIUSyo~S9STI8+>RT^=F|=CevI3r~@l#4HV(1 z#(t&?#V>?p{_Icq`f52LA+q+cO}mat^W*rwQmNBIRfn>-K+$VG%SJ5Vpi5?3ja&t& zT}mYc)o6$#x!NyMbA>ZfJRvSQ7Eq2;;Nh&O5sWRH;Hgp74W)T1x(cbjlsZxvVGE$lS^JNrRL z>fk{Q1C}4|JZe$Wzo9?VTWq8EeGXgVhX)BDR)@LV%$q#C^#KphwTu+B7Xc2uGp#p{JV5#EG>@wpT;-ih^GhjBGpqFZ*L%>@^MBG8*c=mT%c-8m$a2uUlE}#sLX!ZT8L4neCO?_io0T@U zB`LsRW2<=z znA!}T@&b9lpA4(I8iW3hYyK{+uIR^7*;6W-ZM5Sf>Ku3uaxBeM)KGYbyYF3x?TT{$ zmp}mwL~WHn4n_T*veqplB-J+Rp5(Rm7(=?2)g2;QaT84*(8B>hA%EAWhU3kyv11UxVBCejbw_(VMX{Qo6Bm#(jffpR%+Sot+# z_)?bujey{ok(B4mh1T`J9cDNk$LKQM2e;%>xM6dhF{6yz;sv@BJYi7LaIVX+6V^@) zbX3w2?(WO~k~}j|CLB@Bt0p+V8z8TmIm=;~VAcZ2ys3y%n%@i2D9MRl)$Zk{@HisB zhIjaghN`(`sh2Up-qT*@>GNab7}1tvuER5un^7TM?91)qEw#J6qFeS41OHZf+~&@Q zjOtebiHi-*$IWcGqsZg-YzwQxYDPIj>3fJ62-BS8AtpV!4o6{_WR@gK zAF^R*=xtmuqGn-G*juZlBnd%5m5JjN1i1ND)_bsD^w^C4ChoR5q3M3P>@&e`7skB5 z@sN-)N5%7|ks^^j1qYIYIqw4uJo&LWp5%>~n6N7TNcTz`rNlb-=HW(@nLMCJNq=W}-e}+CkMY|$M z;8A6yu!V=B71|cD@ipC6j1VtsAVB|=KQ_S)Dzn0f)L6x_vl z$|*nkm=YQs3Pd^CgTp>XWaJNHPh;(;R0iS&&(e((TAMF)e1I9JaUMz40)C+0Um;n1 zeN6VxjT(_>AN>JKXlVlBk%-N{h`)?6VzBy8k^^CEg2#w_2XL)YvG3O0Z8AbMt{_(2 zFDXeLU96^>Qd7Q2EC8Xc1e(0vq#mAY<-dmFEhoc>40iZb5;KZ8Ecn5Te5~T4d&l#4rBN0#C_b948L#EpwG(-#iVO8@mRrXlW!E7C@BDOPHH+e3bVd0$t%&q&L(aa3|e{0c0z)4~c z@^=JwJbvS-FtZ1N?_bQrx^y`8aZ#$SyrASZl2CRZC0KA}cJ@~Ns}KH}nHCa^%@?N% zUwzVZ`0p+Jn;*65anrRNTkLQufJQi+)xIWtG3(N+1T#KO2angg>mCz?jtij(_G`wn z2{bo7TZ!9tl{2Rk4X0e*ulD&VS1cKQx`6cTJ- zuJL!=G5M+$GnWN?ZodvrRXzC`Fa_?Ms^)xU`WrzzgPw7K@KsQfM9y%%f4lQlyTsKi z&KQK8wI9X?kVt-Bqd<(oaLjl4AOoWNKqL* z9w}xe2D~K8thl44;MIBh@q-$ zXsWTw&me*efwYnoc5qGvVHbbQJOt4BXkrmR7k`^jmNxh4;fk;cJbOQq`?Yul>d}H< zKR|Gy%TIoyHJhxEI47r5-k|O;0lhI}+kusrh^B~1e%i5gqhRgiP&}}DzUcJHE&gDA zdhlD!UN39n>`#gNyZ=}$tSv5jT3-jfa`Q!tOnbF$)%q0@vw{C;2kJoLP`LhLs316s z&7(SRx@+2I@HKxj`H=GZ7XVn6*Qwz?zc)>7uSo~#t=@8j?8BrI8s|5WOat^1ilL|Kb4ZcShc zIs`7{N|xopt0wonNdfpTj0|v@4T|F{ZuE)B-hppFg&-m>f2@7E@r9Z$&dB3{exu>X zfSh4)(*1}BIl&(^mp8Jb^dPID0jY5B&Cq;?qe~uH8Gv%3%h||mUfX=-DeQHJFC1BH z1{y{FiU$d>W2J8MENX(mcEb#>Wp*TWTODbnPg;?JaJv+{$lCHVD?eUZ#jtHp69$|J zU8tSZFv&lu3IEvI1G4qF2i95R>#TAB{bb!mQqGs0*lQagMZ+VfcjU7o?ePY&eI>5y zx#l|`Bm8##m{CT?VfVK0S~5HU!iy!=L0)9@*Gqr6bCt_zhIg8h)WC$udceXT zcyRp;1e*yUPBpP!^tkP%29f9H7C+z!k#2mn=s-b6XHkddO_wu- zbHXxmNFl{8R`~$vX4~183(H!V{RR;p3txW%yI}pKx|p1W*ZgjOKhYPRD z{7m(r>*5mAav2wI)I~hFR>AO?o-RLi4K6ds2EHeFVk-S@IG;8R#ZWf|Z<~u$yj5Gd zRi?}d&6s;NS+vZ>R*{!eJZuQEk=g-lUC7y6oeSzp;je)>PS+=;+{He->XCX&Fjy`V z{N(p4ABEZk`}O7K3e;%~!l&)YgI0$t*?90i`!g_MjyO`m`**umTw#0PR1X(@CVCPA zxM^!;!2@o>-hVCHy|u)`>j#n}L?ln}4(J2GK|QOb1immVfk^)oUfA|kzDe2}9&^c9 z{+t{)7#_=Qa4!IW6l-{MkfaJncAG7!eyAFEFR>x5I+u>`QV-M=#^k?{=SEh^OssRn z!v`}Gc1kiRAuxcjog2@1hPYHGVgg%}!r0vjbzkZm0#6P!&7CV_O|@W#2r=8c(@0@imYem$DlD=-x_H{d^Zkg6+}DDcW?3m ztPK^LP_;|Ut!SY5O!0}jw{EYh7RR{MTfpL?!@%)C`53TEti~t9+gjqQ{W}X?iv#kC zH&2$|W0x_l1Km2|p=zTmsye*V-R&URhcdmWNN?&y`bJBPQMR}%5DE?6u0^3%89I6` z`Ct-U8$A@?*Hkbn&`y@ULSEDyQZ~d%P1`iqq-uWiy_$=jxcz`Ewn;p0-)evkKKo_Z zQ%*rmpUd~wO$-Z&G2)$9B!K#G;Wg*s5t5XgQR}*#rQ<-5pw^bQw|VP-uK~Hhy&syZ zDU@l9;;<%mnecl2#UfIM`Hul1l^EG|dXihJWi~IjML)WHZhfO|ei&YvtULDo*7 zJ1-*{X;;@kztt6^ZrI#6U5;eQz?c2BepNptI6(t0C*p>))-|=xca6D`P1)X?&;@n& z$h(Rj$b6Av)mFpw-Sj^yzZlawuqUQfm`S#~K1$367bCApX627P`(0 zp@vVW#f~!x<6O?uO_YTOrwuB9T}DB$sEe48ICfIR`Tw&N#M&VFu9%geRrB{HJLvVN z?O0 zoG7~K=(4$s;O5SdUler-d}VvTV`$}sKn^0fq$e6Ne<0?;axsC4nz$!EFNy|tq7lE& zELszMHIYP;aUaOQF(cU8L6WYN-hZLsUWf`p8 zU2Y@p?h8=>Vx6woD0RC%7Y1`^Wf{nJ>e2oZA)7bpiRZ80d)s&~^8Y$Qw5_C1ERxmC zz1gC}EEW@)UDBZCHF>p?(ZtnsT&2vu5=58&CNJE$pj~v&e6L4x)MH|OoUj(^ zY@$>)L%n$k8cqm(p!4F|`^x^F(N6(?xR2Bo$H5C6bDki-d;!hRbTS|2qa4~K>}v40 ztnHhdni%5(IQWj52bGx*++_zjhs%@hf*K2V zb)BzhKdfR5%yzusR0R1TVKRb-ARW1sD}p0kL?X)c>(H^~8u}s=ww1l=P(r!O!CPJf z_E!xGWWiF@=o<_aa?Ge{(yHAI%z16R9B0oP#TlK)<-Vmci) zKa=aBNLuy8KYo=fWX32b{O<-u?1}@+&~G;0*l)SaNw$Kk+*Y)6?r>{>_VM|6nz$JV z&X1>1#fO#A#v5Uj6%OWQjVU)|i=im@3fTK<%n=i_8Tc1I)El4BUX$WHlk?n_Mv%IM zXTI* zsFk|hWmZ?wd%N&R!PaKy($%fCsd)GMoh^T|r#HWpjc#BXI5W=o6-+ugH#(=nxeI41SerBQj7Aqpx3< z`B|nam#ap;6mJ_*zwt^ zMPCK{i0uMe`-b9 z1ZZ39GI3r$YWd)L(T3j71LVeaec#(`=u?~EGA2oNjvSpB_1zMS(+(WEQR{u}J8x38 zNz^st)|S;ga=lr5=aUeth^Po4w{aln56NP2zsR$B^W#Zn542M_tGdmxumNNmuMFsm zW9*`845$nX(s|z>laMwY3|``JM*^?LkNX+hq$o`C(Wb`1BK;DB+)1VU4Yxlt@;mh$ z4g5XN1&(=SHJMj%G|v`mjZ~4Dhp5mWZ>0V6ov;4cmDKPI?JH9VvWYcrGS7jl#VIed*02Z8Qw`SCCc?x)44_7Sf(Q5hL{1d2~1(+|7fX0o-O) zUVV?uwW}6SXRl%KrE2<^#Q>Icq3UMwO?1Ifr*n_Gm(XF6`{Gjp`LQ=rZ%SN25|@!Y zeHF{b!#Sh19agm~NbDauMMHj#6gaRdRs4MaB#ODk{qCv z{ts?K3tvQfct#H$_U4jb`+&}1$qyS<5S0aihCAXCcSa-#1_5Nkgvf{9Uw0Zs`Pb3J zv1PPI-8*R;UjMOh`db3-lL~R>@(d?#P3JC)P0qHCMGVxEkeTbuFA={cd zB<3ccE9663d@sAuc!`h@cz~l##fMc&8de6EO%3HAE^mFruvw@M3k%wvatnluS2ejZ zS8YjDAT~!O-Xb0xG`5$cRkabPOW%u`h}TWNs;lSy!Dd4mnOcCaaBtrvf!5qpK|;Ai zB{%z*8J1mtR)F_Pc&d~TJX!ZH`*+w;qCUDx_tY8^1(Oh;9C6&ksySN~RjMa|yw$WU z4Mco~QS-jOvIGW-Sz^V`mptdbr~{g9^O zFLM0Gkg*9>!-Vb@zL(scK!Zm?NdVv1o_01ekJ`gZu6p*?&1B6Rk=)KZBiCayg@pn~ z)SynDE>9aexx00BC=<)O|Fq(bnquAgYxTlbY`_$EnLRTu zN{>Fo%6a3u&X#*wNH&H>wNpt8h${fdoUEb60@B(LJGR}cX;eZ{gc^-@oeMg@Q%}$0 z_iHV3O0+qkPm?p7JCPRsk@fnHOm7EP?$^il7vsB>axkZX=cBvxv&m9nxVZ%aA~mid zH7v?sbff`y^fNo}R`&9vkqXz|j4b_ECoZH1<+&EF|75MUf`&DZ+@zM3E*;n@ix|dp zf>R~?(g#LrUFT126Vb&fE1^u&barZ5-Rv6T0ZI{VGthKx5n}yb(v|K5UmLD{G{`7V zR(=tL+2ohn8~X;iP<|sMphwK6uL5l7bc0pWsPZkS`pt0U2X_~Yoxcf%J>`_8Fm-Mb zYE4yblKZNkq!!N&#`S+%DXj-t@zbl0P4}{kfh+G*tdZ_TjRukVd#+e&w-={V^*%3% zUD&y$w)|aH^mwi1+^6Xju-u3twLy!!y{v;lO)dl5BM`%=I9%TKdi^%-Bx*fh?>;(f zjq)Z;z($9vB))rJ*H05YXU(w}bNpRO_^WcWzw#=8b$)HgB?cuJvl$h6Sme&fcnfk% zn8aJ#mbTFyDGUmjUvUOjQq<<<0^B`z1?n6kQcY=!4`D4t2GooC?@M5x*GiSq;sUVF z==BsOk(j=JkP~ri=}HpG*P+%K&uEZ6cw)P|<47Tmi1335iiy&4avLXh-6cuIR@y2~!wwYvwTrACESJ+MTIkc1ir z$ZI1={`tRBo)W)Rs9b*4(^gS@GT?fhw@+puNOR_nvRISn%`FLd`=H_UOUz4MnnQ+L zXjI9QC1Kr(M`k5*%bZL&OKkX}-g=DXs;sl+>ckM?d&r3?vnBtz$}Udx$TJ6_*u0Ha zIqsbpp@>cN$)x^jK5rBQbN9GIIGQonBu(HV$gWGl(P##1YPaJW%9G_FzEixQ5$&ox zb&s{khv2OTP?mn0x9al095pVOC8eD@s0oz(XZwz^J=i7_nN6iasvX0Bnz8;eLGKKX zrHEp->d*g{vkab!@*RGN=<{$}G?I1jm!X}1aV z9KiuKON$c!DRdw?@EeY^Rev&9iX|F^Dr)yflK~CUnD)(+QyEMq;ku8@1@JuRbPS;^ zg#iYl25ZA+JRdPse%T}*(#HiY0c2zK#tV>By$GY@=TpB05PUx_FGf*H3SK;{Oey;? zFa#|h6JBV?{ii)&2O`jOarSgG9iI9w*#yi1G=^+8dwcyq1!=?w! zqxwlL1G95eV_zLEvI8l*wpWDf1JG*1$g42DcP9rhHlFfWgjF||d0P2X(_8t$;89Ia zw!BtIPWxqQP`V~ggGx>6B9XG|ffVr$Y>9__`g;J9w3{D{o*J~JWjO-!asUU0wv_3S zhY-LnQiSmvDLE%kq- z-B@m?jLWup=Vt57cjy9VgBa=gn~PPrIJvWvPmxzW1m3|7t(%qowzC^A=SGF0g5z#Q z6p}(55G)w6kV4@^;K==g1R>N`V)r}GOuF&>9)J%#QBPZ*K}0}pBuhj-e8Z3oo8ihk zaXfv_9|hFosk^mPxB|*(v7I;q|CUIw09qJFTZf^fiF_e=)?`wZQC6|t_Ha%t{H`ge zs(-nxovk5%3-s z?5oRZ5E4%es+Vyjj`d7D5kl_o2Y}K-rv8<~ggd9MJ@4F<0_h*XC;>`C=7NZ*cC?aw z^Qn;YKel(RR14n54BFM>38%#!)oFMlQ=`ty7X935!0U~k&Gv- z_Y4ouO-^KkH7hV>)d6!0A@-YRX+5hs=ke^zn}a&g1u-j2l+l@L)uwanWyvyrZJTM6if{zy+-YY_mg(5Xe_2K&O@RkpQ6jC?cVF@|TAKRyEdXq;zZ+g_a7W5}yWPtM+ z$|>M(MmJ#82y}2~+P=IBbC;JNWqtqu*eCN%c5y~*M$!L#;~$@W{&u-x6umLD(Pz;~ zs;gQU!(DM)%AN!(|0@XRfFCijmTMeB4TpRDy-%~;PB^hyJ37-EZAkaAN@Zi^D>GWj z?W)pXY_nu*vsSk3hRzCMxLO)puSW%96M0EMU%q&V2yc?Mg{Q!u>VZt6KZi_1-S#VC zncl8EnC=vjRe-N#ft?_v{}Ih$*ghhcqF?TkIUpVkjch|g4(_#J$-PW9r0^SNql<;*d~gxXI+ zuaVoMJ5*P8NQ<+`jP2MuopiJKyR}Pooa8hs zZz9sy_&tg+n^20I)aF-L4pzOPU}nebjH>hMP3v>d)^*8oz34?6<89z(qBw=Wq7sFU z%HA=qfh4r1r#gE_B{DV#)+nLNjR0*|4$?B zNBxKWOI*Q6<=HWk8;WG5Ya#wjcR9z8)?l*9m-mqnIxdbGMW^`oXerZ{)Y1@Vs5mcx ziL7mXwy1fMvgPj2W9^!!23I9~#r7wN`J;;>-R4h^M3b-7uNs}1USUdvXk|(UrwiXIG zeF>rl7!6qOiFrPPe}zz@(hI#raWFEh=jXy=s!q!egzXXc`^Mr=02OI9U{c+~*b;II zmU&nJd6ij!MH7tgp0)HH=@uk)6N_wSkIH1yv0E)R$O@f{jD$ev29fmo<|*g*5Ogs% z!8Q5zdrQFbAluk7dJBlMAIqKWZ!N5c7&u^T0*FJ4PMz)&7SYBwa$UK8!Ek~ur9)yApCh^*OFu)=gC7!1p_boYj z#SqiX)y17jQ!c*iv%=`iS$CxYae*Lin$*wm11M7f;&|NeBM}w|1MOmY$mJVCrXS>P zC5`%Q%;bN|4=Y#|s(ptoCVPoq*;i8HDW4!J?u#Y=^XtqX^OeVgXm~fwlhQ2$EhOm;=%y`KLEhIGv$1>XHHJVh3Fb)4YsH7 z!Fbv>5p=-Y!;5GDT!cQ;&A^ailwO)iis~fWDoHzPPj>hh^{jhNw4OQyH;0>y8gg!Dku~zFyda~CHt#y zrwVJga9iBd7dNsY*Ha9%A7sB6*07eO#+Ky?nDY|9N`wADEFRbrB#A~S4=L+ScuvwW zEH3j<$Y1p9j_;M?gZY;(8^b#}!k-5R%SR3n53xnT!3bIPvU(cWvO#DW8Y8)tjx@t8 zT5|~TEcl=YVeH?Bu(gueIf2$-9zVtia1g|q!#dp8sU*IA%TDQbUI6U$ML#I!C&|U= z+tlZ~Bh2u9tlB`OQ`3Uvs#-K@Hf z$6(eo#!6WMyY2)>SDllm^%9Xo150FWZB=!dCKO@hFrev8cNztY8o#*6@LM=yf$3|b|{vt4==>ue5AwtqBdzNEfjpp8EV?noo|AKC^ zlt_4~d}a#~+~P@NaZ|jpK&oXgRC``%^}`!m0KL{8f>A5)VIyo^G!weVnnK(soTO^6 zd>mPGj&`vZ0C6Lt?VeBw7F-zUxCQ6i>ARJOdFDTU{DxGT`jbGTU<1tYWn! z+u~Xns1D|5^lo3-en*)H6bX52=IL0(O5JVD zFmxOlBpVg^U>5^j=WvwhnaHl;N6IW7j;Q>=pj|2n5-!RO7(Xc=Bh~6(H~LGEYS@L=`^efh&Nw|-CI5O1sVVvv z2=TO3_s?elmqscu%L2H`_c7S))p3=Kvd$3+!o@U!qPu?2b0o+>9EJ}KsGry7i-^Eg z!PBZY>fPg%WT})i>Bru=%C9m271S#^pccr1RQFO<(C2gP48!n^b@NX&p2~gu%WFA- z-(jZ^T_7&6R8uZqZb_q8#1hD|?p-Q3{pFgDNS;NP2_kpV1@eGcM6Lw!6p6s}65zzy4kA$9{glNP<%6z~5@nFh8uL z-WB^bFFzMK%!jcSQeAo1h2NsV@XkIGNRfDH9vN)#O+5znn?ty_a6jNgTB&<=LE9rs z!L7~5b%b-G;xhBe>7dRrjjZKBc4a8k7iAz>_tYTRNlMaPtULaImE}5iWyueIDrC4r zlX@NF(ZGUS)k!FXJcPG#{@HltO=T)PipIy$ z>W9AWG)%7t{=qXhp~V~_XTzJDvz~;AOW)Ufvq2(Skwg$`A+$hqAAK|}ky)T(s zpzSqY5nKm{daVRFEOSnNFD2kCX>yU&)gf;zB{T37I0A$!Jbpd(WzdZuXr=kMBlU6J zQ+LduZM1%rNOB!>OXt(9a}aa24&&c783im6BUmkg9#y&hXd=_7cA<)~FYe%K?t@A^ zl-<}gZvK)9!*b?H;q-`+lzAK(gBDIFd^VLN%pbQ7+d|}z9Au4Jcp&^Fh3hRO$aPJ} zWtRRaa<6fCB=g`Vj4tvP1 z0iTk=NFPtSDS6}%eS2$gi&$s<>&ZP%Ejiw7H5OhiByg4;;*_6Nymd4v-8kU156yFT zRbNp&(N6nf5)CH)#HA%1uo7)Lc;|Oy`&GPIYK(cTGBV{}FTUVfHsjZUe8b^9F4dcT6*lph7~SV)Q-I5C;px2b0igJFMzG3Z2%u&tr1WK11dWtBleaOW691o z>>DiQu!6C-Fu(?JBC69k4HNfu@#F}-;?A&l(W;=jB7DwMyQ|$xflnFu8Z0*AYxm&B z;%mmVf^PiSdw{oaUomVoC`>(&fRyf454S5vL^ACT5D{7<#BDtFQ;?^;rtf35Z2Kqv zI%HH9(g`Ei?ePj~W6SOM5gmpiVv$9;N4wv6~CSiheuR=O4RWXQ# z5+>B!&mrOeMIhssjab++zE0$z?gCJ9+5k!-Ad1^-z8ghL`Kl|RhCRTS>MG<+67s}w zim-?L_g;`9YGzrZwQL`+#wRARik})=?1($A_C+E2p2M<|;-2FoQy7hyA=Tn*g{~** zWIgo;+GVIE_3G>h_`m?>6Iba~kLwtC)iHaVZhxTceRw91QGzQ?^TTL;-ZWE2Js8qO z>(f|G-7+R8>q%R)#wqzjMjqkZ{2o%Y36M!J*T za^JUE^77mY49jMD$KdC9#Z?Tewifa&dV9-qrBKofS+}es0>m(prbDMxQVf2MurMh{ z4q8Q{rT6)lVEyW6wr((r9G=*Yv}5TgaZh(ZYIdhmfuw}yXg9ZzTp%m068Lbm*f>q{(La670W6PQX%CW z%3CiJX~)3?#$v_HcTl;UW$87NJUp;&^F&=&Db z8H<0h7;$F7 zg|}E3#brEBoA`7)mC7GPA;*RUpvE-X$aqypF}%aCb$O)ycO;)h*XgvFL@GnG?yt?8XGL2N<_9kq?-&e~Xm!=Zvu`bp zIVl)9c$&gS+Hw1IoGRq<$dt_(;!FL_8uC$%>cC#0z?D-&__jyaL z^;3GjC`%=K)OuDyg6-Lc0Jy*v5h3N`bHOv=(!rJOY|XQsm-GiRh?W2SQKGFt2%Ow zZjatnhLJC}{(ky$QfjTwmHh=YRl%Cn_K|K#I$r(bp-t8ievg%! zE1v}`g!mO8=P2^%#@S9z_o60q;32)nb@KCTbQF3->$07fX9+l<|LW-j4qlE8?j4^Z z45P8&;ku9lZ{wWh`{#e>AOPbw9^+hV9QwnlHmpAxgkDPFHwyi8^(o^=oEi@d=wXf- z2edP~JgDq3tr#yw*K&MA0!!K`d!p>kvFw6FySK{MSQIp}wxdv|GuD&M@%_Z^sI-s+ zEJTP9TG~O;9MR`45s^7xJu^*bfW*1^EY;^+X}OFApj?~J6@Be2X;q#7@6|xOHa)Wk zCN?V&JJeb}Ovk``T%@z;FEx2(Gj52U0osb`Toy?&{$W-t3q{+X#6G+7??zpRhltU9 zF$+N*9P06RdO;I(<}U;yyCq%LnU%|f59t+;GulE zGAMkyX8U|$3ER!E_Fqc4`n%h!uYXtI{kNW*Lzb1AC*zv^uCyWNPiRnQBI#xb=l{yC z5`Gj}wukS+(#nQ;X9!}{=KxP3!YBAVkK4q`Q+z^COZ2gx%R%2^SY9J*6%A!GY}j;E z$D)Umj%;aRrv~5bv($ZJ$pk>$ zi#m;#!704lL<`F9#yx`!#_S&9GtCI!!PzYjSup_R;taYy5p-$j(JFH6`b0S|PQD*# ze!7Ju!%q29_w|Z3oB|vU4t{lXCd<>bCprz#R~&VWW!BK%BaqvET(|6Ngd9PAR{AgG zyESx9csj|MpryC&f1InD@2=fF2FS<<1Rth(#p|K<9IIdrZM8U3(BE1oq7bjM5!bcb z2F|^yna5DeVT+ceduD6(>`LQkmK@6yT_%_g7DltT4mH3Cyo}|I5VXc(C6m3RH)Qp*_zw*JV^L~0 zIOeYROo9%C9Z$XLo-&m8@t+}Q%dM=yM{WiFYs1ZBUg($ZhU95n0h(>5y?76N> zd3Iist;!N{f}!Tl9)vr(`Z=d_(3 zUPMg?N(M99Vu%heKI*R>u`QeqH92hdr_vA8{;m&Ve_L6`LEb`<-0+briOJ_qJFSUV z=0?ipk1*rlxOuYJ$Ot#~iTpdFzopClB^PCl6jnW{OIq@xQiY}|vI~U%8u?^5X}yLH z@58!P+LKR!_Y3)`-OK6s?L-)aO7GUB6191qSc+(ZJeHg_MUbCTOe*kE;4oACbn>@V z_=)V3GO61@@2qYFpnfhtkC$~a-`*qXftu!zTZ-Q%qE-95Z)@=FeW{T(sUHv*gaEqR z&hRSF05=#o``0)z%y!lL`8s6T;4B$D$gHoYMPiNR;nzLGfvm-<_SR*4OTaw#tPAr2kl__kb%&%Z7}ej7+({%Zs7a;cGpwvHtOMs1XM-bD?E zK#!0Z3nl(8OlzHuHC+$vMn_6#+j<6QHt$nld#zSqpy6U7YB=-?CfA(xaRpyO-a*BD z!AkZlwo^|Y-%0#8JGV*YSNIE%+KWsMMrCVBwqr=Cv@WW!*{8KEt!tUPRJHqPnH`OV z$5PMr)o1+36B^nzr#zk4<)boLJ%-ZdS6436^mFz;kWfe$y`>@E=$;FFy0EMFGH)Pm zA%Os!c9wE^jWP!e9<&jsiiV2lm|y#l@8%vz1rX{~w=hbL&UYLwh@cWPC=#Ss2499l z?D;Yo`v-Hnp~Ao{eHE$L1Y?Dslg}P<-CJCZ<`OYo0aE}B`64+atdh}wq+QEDSnF)_ zIpjat>#hlZ%S02CXo8*#M>MB$&Esn^2~}3P43CNPkk@*Z#`eY8naxJ{Cd#fE99&R^ z;Nf_(0MUXfb_y-c*}i1YZSM$2l?eqt#iAn`@c>;I1R;;MSj@a~am;wAT6eSp5`7PH zu|l2JTx}4Z@6)(?(A;%lZE7>_&t0TAPv}(we1tYgB|^1-toy@@4w%Vb zNn{w=ip(Bh&O@LEQ{+SqC4nDl!Lf75by*ejstUxpvi-=1m!Ns_{7MT%;Mq1pF`KIH z^VdwQIbmsayUnZ?$##AUS=2r&a580(eH-xcw<+nLYqF)n&g>f@pZXLj zGV$p{F(NdlA5B_Buu)13Vt9ciY&7EsX%Qf1Yzsxj1Aq`Cy~>nXV)wmC{j0M(PqL8X z&V)@W%b+k0%n0%2H(I1|+IlWl6Jm6#aNQ)Nzw)^=6SpxS2Y5;eRM-}`B;s~Z4$ttF z+QvmnjLsf$YyDV+;#?S*{fR<`?~N)5f8wd38cb%w(&^Yz(P`3*M|9$*`A>I^L;qS{ z&;;=~tlk%_pyq&5h0j3+NF&PkWQjdxMp7>4@+vImNgRB2&yd9;f~$o_c#>K8&P25l z^@UHF+4T)AP!O2^uYxDfjG4%3w&h|*Qplz%cL*86V zfo9qF;Ivq`(oo=+2&ee4VoT-R@NKv8E`Q$ne(!c~ZYfAa4XUR}qWj@U)C?qTT3IQW z6S~qL)t5k3j!NP~c?6pyb2DS6f1C*cKtX9oW%{l)1#?F!;p9gmsbP9R0!6UDsM5I znDm9F(DipAgd5$8#~)W6pDt`MR6xq)O< zzj_|bfRF?1r-Z^sP9_YEC=dUy|#$km3f=E zjj@Yk$Svd30l{^d3^MIvFt_kEDeI>ip;1TULpQD+$udR{a7RUvh%^7L?CM@+Qq_P= zboKM{+!9qzX|gjmy(Lb<9k^6p2amj7VMwbITx_Ykf{&D3bSBBI71Xsi6y{^uDG5soZ?dW6+%`(0t-5h94CsBJ*jYh@q zy8X5%AnQ#0q#_Cq0fEOVeTqtw7v#Hm;`6E?r;WkrJ#z}ZtrE){Pc?kUP9l;{=Q0XWb6Sg!UH-W)x)rXH1 z>S{uAViaZkwT`!4-Lue=P9gTZ2-P)<04U9_<}lR{cn2)JYt%WA9moXvtXD};_$pPn z7$c+vzHRul#DMu|R>bLHHkHcEFzdG@A0LNS)45iJSCzUGWv5szBYX9CE`Z*R6~N%V zX^}t?K!;ZxzL&Lv6W%Rwzr5^4e9bLH{3Z2nhmx@E-zcLN+2a@#gWk+lt;;3i&WYyv zs4S?AAN-(t`234;rcY)~R>&{=;B!mnKKIYVRA6|@Sh|nFA0MYDb~jC-Iuxs+=2}&2 zm0Xjy$;MreZXxT}5Scr2hF~=-=sI%n%r~(&7ed9)JL`xIPG91-;h_8^hY}J(;C^$w zKG1x${Anu=W3`X(CzzT^sHZJ_ScOQ6$2T1=TSl$>gc0}W_vYl&$ljh0q<`l32=#` zq+E=LyDzmhQDJVh0#B$=8wTE&E!>;X9;Buc^LY8^QCf=qhh&VS1>#x}?2m97KTbW2 z=woqpjaAGU7^v1^8b}BXCM%Re!&5W7j&`UC$FiMz1%sS57y)(ObQMY#mn2(+!JK4o zpqT(>i`ugPgc&ZT4D)zRzNGxeQ**LobPxd(ZsCTfMzvloQL{N$FHD%W?;zUi4zfcb zQdVBu_-TA_+DwJG2tD9b5Rvt66S7^?1qIm6R+fdK#XZ~0EGV+vi#7xuC{6M{H@VHC z=_b+mf;lrNPe|=uP`&|3mRwdc??1`TgdF6)`;+rl#wV-N~IEqt@z0i)C4y6ky#?w+|eTC`Yc%jPJew+ z$Iru*jCU#BjughR#8Xg2Xl5#UBTPrUp7o^f5AF&yoXu0S;^)6Pgqw=k`l-m2m;)k2CIL5V**30KjM?L}S9|%g{in z2)tLE8Bj>h*m|UENhqF0wlJbKFO5>IuVj+0+41esO|*EkZW%`WN;xNdG*OPzwFv_R zhO5)w=k>^S(t5XC2h-83_|iXlSnX{#$G02F{Hm(rVcHct(lh8+COA(!BAjV&ascW0 zjK3p3X_V@ig1N9DTFn){zN_3o$pRN1s6~r)YeXv!MWn_sCm%4oQ-cqAmUNJ=qO=&7 z29|MupYP`xAM>cgHLw2Szx7FvTy=^nxkglrf?*gmTG)tGMO_^J>Dizu6MxW3`IT)P zp7<}w--K+$h%-m%N8TK$2%(TYWam%buQ%_Zte=5RPK&X2f%^#`@mpbvjgF{HB zH~{oah4Sb4t|GnBw3|J)5`9_+o?k$%c^1KNXma_oa;vy;wXoHq%2EG>AIG5({dPd? z_Z2^+z%H1v)xDjxZePV~cF6og`LS^GnA@RyOq*jV6d4J|d>!CUFHoVzVu>Ak+ue$~F4(Qk^@AOEkhdY*i*F@iHdGKs7A(b0#~b zdFU&K74Pw!z(o{M+gB7y?ruVyNQM||V!Xe~e3s2Vg>I&B27MocY&O=<#wgie4I9n^ zfJp}~zJbQI?OuEQ!?XVVKAcR=f2-hovS+dqXrqYy{V5U1H{})k0p(kGuA3mFVrAb8 z8#0cttMXLtg_vOs1bE~)`-Wkn6H?KS$jjt8{ky2wr^XF|G~MIvX1O+;+doc~2f;kW zU(MDl`98*Cv=QLWxGro4_MIkO{;$Cunsk;$DEcwRnv-jiU;OeJUhc4EwC*qW^Z`kS+treJHc7nTow zT(aoUhVd3uDq;=0T0ozw`@?(b)H&13r<>T$KePbvX2*LP1$}b(PNB5kUb3g~rF_KA zfnYf6XC@=}o_axE3Wqe!O6yRlJO`p1dAwY%Y}dwL+`ZAc;~MB}x8i1B+GrYsq?lFW z^MRW~5UUGY=t&xI z+BhrRd+OQbTa%OCW$Hg3n7*JaNa%%V)tw&CdjOD+ebp_I>C^&WpjIG7mLySlnf^Hh z&usP?>CpRs?lF5rZn0AV-(V>{EZ&Y>>?Cr`jybG&Cxug&@JdYYcPuTUt6tBp=1#M| z{;pGKKCW8}R!I=kx65BE7T_76cdHN`71#h&Os#cZca$N$H>TacK)Q5+z(gZ<+B<4# zq(VzuF~C(1AP95Yc0z?gM0^CZmFk?2Qd1PFoOLl@M+C?A0!AT~Q7TH`7GjepDP6@l z5ANkyO8V0M7c&I=hQ2;k!8a>Mj@I2OFf9b6S=G>rVmOtI^2hU^A^z7s1L{)~@u5qk zEIhMDTiXB1*=~Ekg^?^0+-6qe`=Yw{G39I&kzS)_tkOdo5GBy+>RSIrUM`2*xyH1zHtu-Uq2?0CZ-Ee@W8IwMv#R0yLh} zzlQ5k;1A^R85S50zhEKe6^-t&HR}5)>QXe0L9UHXENF~5zA4vkYSV;nvZ4SLP3KZ| z>?cn!SC$A==uFP_$yv~}L%;hVZ@4MmZV1?N1h}G>#_g=VW)WfwZFU+IMFD#*mK_it z33aj~^zuwsLnAQ^Jon@w_5%P`b5X>Acmp2F+G`vV;wSv6QQJc+f2UV16s z!h8CcYQA%zWS3F!Sd1b{RFN<1^uI|hC+^v!H+klwLFv@VBpw!ZAr?x7p6fL(#G*!( zw}vYoC*CK1P6v)k5f>xFIO?DDYc=m`g3p}{97D%+TJs3Ab{>nsV@+MEl8{}iEZrKS zHj-6$qjgJDzbIQtW+a>EZPkn$cA3W`WRoU`jkvHQDm>$h4b1vG%Y-~lah3=O`jnNS z=Q0p?lZyGKWZyQ6K9EUU*lPL?Yhp#yu7=6kabL5cR<>M#DgwE9#mXyq58= zkrodxmC9y+s(Eu4z~rJVK_+j4&n^tP8TH_NPsYIO2aY|i@Ouh$X7&_VRbYQNyHT@< z0}(&4T|_x1g-wHKALS1I7%9h0qjUe;vGrW}eoh)sXKa6IhiI3*N99Xqqf(_IqXyPD zzlze6zrr>7;@IMOBIo3{WHK9G!j~+p@~brZOq7!COQ-0#XeFCVX5}ZQA}nO zuEGukY`{7g$a^@R_KL8DEiHQco0IR{)UyWo(aqh~2fnT}$!X%mb5@mi6U&f6d@!LJx>(MOH^3<{hDB2=)mN5l%OU}zkOP=UNt>7lX(-z`~ZJ4Jol)*A9 zLxf1iDC<03(ImAGaKHRmvx23Nk-`aVVju^ZNMr?HLjmFAYBi7bpMe=<{aM?g)gN_m3HfuoCkXbrb^f_ zL?K2P3amN>Qle#hPj4W0N+kRISAk)C%0m|5P))yoAEpf_+_^)rZb^ zsL_jRpl8KXcg*2(f)0bT6CiA9MMeAf_n&m(g-glNsfC0ydj85=J_w`APio|wQE&}q z!-jCk9D9b8T08altMskhI8RT~`e5CaTJjK2OYck8i-52#7--Dr8e#}gy^#FTcbxOG zfx(N_B#z8VL9wCv|JF>k9Ne1hN_uLg*!;*G1ScXIO&aWJU3t2Q1#$va2Q$$g%MB7_ zYs<+lghNa=Kn5m#t_s4xc=d!}`ZLSl zo;B4Qarzop>w)!~Q5T;0mS!SY7F@LDxvcCeE;z?7_J1^sZ70D^H=e{~O!A+f#dOg& zQPRM*Puk6Fc0E4VL^c*_#l(><(}C`k|`jcKZ=uEgbD53LDORFh+hN`)5R6%js41N%=J`0lPEPu=XoNJs-PoaEIw^5*rka5wrZWSRPtpRA_%WgA zXl5L<{E~;Xi1R(HfB94&xwi08Uv)~T0Rse+#+9DCZQu7>3eQ&*C|cCP#)JBLM2z=k ztLS@syIivaaBV0y3NlI;3v7+n^%Y#*0p8L)v>CbaNM#$;d{aJ%+uRG#K8;?3!xhSjiLCx|u^1r}PSL?F&^LPWzsfpru*u zoC_%m-yfiJE`ZNO08>j@bw|TL9K|Od?NusgAnQbhDLt>M;QeZsm`f%ecla>bABnYl*|>{Aic132 zR(oekZ{+}jJ;%zqgb)Dc+*1-#SKByo*f1Ueid^)Xb;IF(TFUnO{x$+4QiGD@(W$m& z)^AtWI+G~qrQnrs&AxSL-HupY0$&zKQXj4-4tDZ591eac46mSU?g#9uw7jR)B;%F( z-Csjd7_d-t5%$uy=PBNrUg6Yfphk|T( zo7vwdU^8_@X#mbg`usp?QbO86LCIoz4DO>ya2$9Rb51$R;l^p+|JSJ6A{rG?P;Sy_ z7u*rio;`vBLL4MH@P;OSemVh)s&>@Hg>15Shc!pS^9l-e&iQ+?fvGOm8qkn&}_?yLRl zW9^gqrdZ*`-OzS0qv`=keL%{nD=fGmKA zaMk6UoXDa}acOkNwGt{;ic^VC2%5Z>%hQ5$pARN4;`!`^K&*sk$=Ae=PB!MM>E+;@ zv9odMd-qDYq?Wv(0Ou&ZG0 z(-s-Iu3Z6OK?w*(jd3!4OBFV)-%8$K=k}`hvh{|6K6)$Xbj9IKdi%(?NZM5e}7h-=xY#X*_#2;J>Dv1fRTEPRfw zCFK&DTX|+>3JwIcLUG5p2Ts{D*R*0i$PHtYWyO>{LZ62ez&}K`adZeBLw^}vagr!{ z%p}~K-OQ=n`>D#fv=Q1Waa?jXe=G)8>LbN5@;Jc z#oG89o`09&k7l$GJJel@rnzK2K+*ak$E{itbnX+Z=33V(enq+@;bZhm{al|n@~ZVi zeDlW^c(ll7Ixc-~E=;K4SD++RupgjB9g*rS@@~O<$vB`POQr4kXg4Ir6a-_3&_wkZLtR zEigO<8sQi}xQ6(T%~#Og2?dc=uP92oURF@?1Afxw=sIn`tTbVDt1~;E_6_IwKIW86 z;Z)H2NIITIF;(Zg$a{e=O`+y$uynJXQA>HPjJ&yZ&#N0#>|3KjIK|l8Jg|{`1OtsS z%WC%%Q~Xk}FKp6s9jmb?Layhii#|X==kR7+IRhS8!>^6cL?}*ju!q~cpqKO0f|ksQ zwDQp70p^(Wm@lnxAx;aF5kh-@_=qS6V{{kJ{FJ&vK{gWJ#-lyV)4vF!?V%G{!+8HI zA-vU)2lA+~O1W zI|k`W!dGgG<5nm~{t^P?$6NQMb+UOUkgffK1&1s>qfFgak|`3yCOHe|nzH0TA#7@ttil=4evOcgHNkAOJdXUAnRTIM^H7}1Ob zWPUgz(7$CdzK#!xH(YF#-In>VunE7_cTjC=AiPGhcN3=GkR9&A7x) zEx;(rh_npVJwSx+bG}00(!4*VFq8}2a>YxdU+&cLNZGzg7XSwgXWPvkfuMQH z_M^!xPYI+yiWt_m0ztwv(BSkJWJEN&9RuNXFm-b{3HaQ77Y0^{K&k67c*V>kyFhP9|7F3RIdvuCC@}{cH9fL7O96CJ>Eont@TN7d7C!!wh%4*6*@Cj&5a@sfPcRl+eY{Ju zCQUwt;2>!V&tz#4njfQd9bNz5cKYtp{R~t5vR^$MX+-D9y>VkpSA@7K>Qo#jgx(6E z=|i`)F(2Z8Ht3kRQ=$)b<2S1Si($Ow!!V!G;%53s6GcH;=Erw#8D6E~;hVj7syQuG z#d1{~!Ly`t$|lX5?Rd@y-D|UDUw<+LSpWIl)db(ft|RefZKR1I0vWxAx-VqQ-@=Pp zmw_)gz?FFF5c^NMXp_ZdF8wg&!?0fHc1Y&t)Sepd&gQj&`PTOhzrUiC}mH>{- zRJ=9rOFuBC`(0F4g~2^s#W4=l7vtEBrfjt=;<}(6>iGHq8DyEJ{fX?ROpMBAlMM4n zN?n2R;)n2_CpQpdQvV9!NGBI}~9#;ne~c_HqZ9A!i6; zbQR!0p@s?LVQYuyyLlvXnjqnh9P z!wY0+QvSz_077b^#?M^SgdR0F$SAB)=jUjVYmAAKD4b@HE*}%G&U4K>MNWH+;mXa= zf?qy0e%RAP%Pl+IWk+MdY&mNC8dtt<>no(Rv#((|#2w{1mR2$Rh~UM%(}y>aHbn8P zub}1!A5}d|@#8El8IoJgefp{B5Tf+P>!UrFs3fyAEcRXmNI#G78eajt*Wr#uhA^g& z#Iz&P4NmLVEQtzyt(dVp2tlSoB%DAflaaiwPzv7bH~wQr1;5Nq@4PsX*Qg zYHo!c3dWWiukm6bJ;hujxF@{0vbs3KG1>C6lnUEaqm^V?l``pwpBkzdyTsNiZ5{wxq9Xx!- z#ZvxcTbrt};OSg)MrN^}Dm%5o;j_WEUFqI1@x8&Rv&Ar4R0*o42@!x}-2b+}aW%;w z1&|cr4**?3UNK7^DU4aEfQ8t36o(sF*^6t%Z~$8~#kj?weu&+Zjd*=TzMG>~P}KGo zx*Rkzz(p?Lnkv6vy}&uM-)f9N32JAyZQd@_I4YoMTgh*q z0e6)P^-Cv}gffbvx6HwM3=0qzME7O<=Up)8=9Qat-C*J?xY=of8fd$p|)TAR<>oMj)_f(-NRa4?y`wjnF z6hGMs{YHemvYIX=Z_3sExwUy;&Sn9P$GHNflCm8v7a>PqrR70c3bik}#7p%abZh;U z!{u{zfLG@>zWQ{oc9mWX6@A;#CX+z}{16!R;j3Up>7yGKEu(81eG{s?npxk7#;M)1 z3VC1p$oi#LJJ#F)swAc1wp$d3B*V!?Uq&79a^cAqj5pm;jH(_T)m~cF33rG+O9J$N zyC4Jlfb81vL>49=X8>QVD2Y>T)0zL8ehcz6a1j|-&Yi)l*g!L&2{?Z3TWWZz$Ds5> z_f1z9ehLG>GFPLuo>e!>@s~0wp)?i?{8`776F7`1>x>-W3L&|V(Q>gO5r2}e19je( zyTa*x?Sy0ty9;dp#Yequ>D-hKnAos?+MiXoVOCKHXB2i6Pr6%VBiRiTg|_WXz9|-O zXx)#2{cmSJ7XFDIOk_iaN!O(V21&gMC6UPDnRX45-ke%c7G^K9D*_(VQ81tNZ8N5- z_GnpIbjs?GtP?>=yqvm6y1de1AU!9OW{XQ=&GHB>GN{t{t|Ecsb0)1|N$jBAG5L#w zlvnB=FR~jZRPf9Nygd-~S}@oO%$;}7%SmTJKjffvLBuiOn7K?t+<%NM9g)iTOQIhN z(Xs@OckgoIteJw%?XO1hsqYPrfJ;fGPX1hu$ON|jc5G5Q=lc}7Bs|HKC0w~(lbe`Q z3Udq!Jmm^`sj&nxJ=N^U5R173M&MUk_&6KLJzzcE9otRpLk@GnuuORQv7uA95knd9 zWlCBn_Wu+ra9ZUaoAY>Vn~3j;i+OnguM>+sU!-=bs+yD}B`ozE`?e_0*)Hyh5vOby zH8vhYeFn=$bab{uCTa=+Gc?@v+KvE=WJcW7(j)jY;DG>2IyKZYT(T(N4DXEbN}tTK z_^?~u@K>BoHZTcrCj#&bQrdQyA<#9A0-e>6O5o;(N^d?$2o_vME#78;YGuS9zOFOBfa~Q9g zT|XtvlcJnZPu1|?=S9@E>ByejZ3!t16qW(X0i!>G@MLn?&S-+@AAG-V!OVeyKZCt=#i7 zEHh5d^5V~gxl*rkEksRRxoF{V!ZaVLbR6d1$iSG=v-}i_YGh7s3!5D0NuTd7P}Bkr z(lQ4}Cd``~hrNH~W&RqtZUTjgLyx0+3(4mekXV;maoMUnWW^k@H zz=iPxAL~7`moDV*wady75jTz)=?{xa!8n?m9O(ZD%hmAtE=<^GjU__CBOf(Hx^;$!fxyRXeAoXr zWD;M8F)SLJa{j7|@X3LNrUDd+#Go*?lWo`U(}Dla>|a^f^D+3+tXo9mYOV;8wV2QM z@PXd%HbkRDv>GE z++SLsR4DPGU>sjerfJth*-o=2ubhNAXK^bQE>?HbzitbNO@{N=zX3f6LNFWC$Qk|u z5Nm+lSR5MDCLdob8b_O-D|D!avST1YtrD4yEW6`GS)(m)KjQu21qHiRmuedKhult^z+b2=1zCV2n*qS% zGJK1^=1;dsD$C?#hy_8!x;>4-!we(ROZW#XWGLyW1u4W|l#z926suPes*+-)S z8jc34-O>ZDAa2jq_h>!JBhMqXEHO8-7?y2DQ8d|eNsyV!;t4XVCC*|P@jU!=6vL1& zG-a|4Gj#o9;Q49$@{fZ7jM~@bqp;F9uDr|$W&*)$B!~#dZ#ag+y50QIMy4YU z#Y<_Pb_lt)`IrJ!jyIUFPw^=oMhxHKAWDqiTWEtl@}O=lgH!hwY5bSOOZQ^2m$aS z0e4;|gl4KxW3cAp3{@YjqGDUhpi{}w=Kw+Fs8XB?d1Yb;J8uls{l{iju3F&wzV0Nd zw-|DD7Jy+MH5csB{DQl|dHuAx#hEa@05kyCX)YYW!g7;PnpDTBf3yHhtb=8Qo1`>m z{^wQfMaRIms2fV?Z~lyuEf8EsklQj=a95UKXwLz~aH2UBrT~n^-MnXiQKN2?<>xCy z+BL6}PK#z|S2=faaS5m2vz`SObAfs^T4)ODv}al|EOq7*#~GUY3M=BuRouA)IO{GR zRK(^gp`)xPsw%$xeXTH*CH-FI`x2tyM1bVxpJr35?uMnKOrJjWC=}2S6_-CQIk>Dp zPMA|_&tK{NZGR!|c~6T6G{HI!+AiGQ>s2>l4SK61Ng4@JO0C7 z+}lsrAF1G`H;nda7z?Rg()IqRO9}oBJF>cPv3G*7eUN1*|6+7SX(WpGTY46TxEnQg z+&o!0Q`|BqL-3O+3y@aWOV0Cx>FYlVmWQ&f-65QQCjg-qKFcYiE7RogK9=ooEDT)K zL{)7Aj1i$G=vpS8uR&e7(EmgqATdiDZv!0KUzx}FfVHF=$5XjTb3{@dfJ*@G5bx;V zxBi&X-#vknYaYs8TKvxY9pEUxN{EM!BHmczf#$c{#`FAfgWQ=>mkG5I4eRuV;9-B| z(k18>L`qxl6$T_e>zbyWj~|(+o0VWRa}dmw-$g>??qugHZ#s-PFUy^Eh9n(G^g4A? zq7Ar1g@52sUs*#+N@f-x1*2xLMS0oW9Bkz1-y{aRDM$-B@i<_MMlCvnuXTp-cLP&{ zhH2=68jan*=57{XFw)ofc1t~{ci3#`k(pIv`ci0O&pVgZ(dtc-Jg!O8U<`*5p z>yz4li;Hl!_wIh{xe7BZk?ed)F-6?nx(9#K(hy}GTAa| z<-EvvCbyn-L7IryV6h7J7|NT+tRoq$%GZ*VDV)*kE{0c&aMhu2QH+kR#>g;$yHJ8v z2=SYxrWknrqC|gyM|lu%NUN8^j3A8Mtt@?SEW6f*g=r=R7tQqO=b8hwXAejAfE)ZD ztc@Uh*5e(u!GeA~2uIH#Cu%37WoUbYLX-Y)v-Vz^=;gr-Qfg!a{RCTsGtvvIt) zYqFy;$KuO0;yJoU1+^-Lx0@`H{5H^zAaZUoOCrG)g~LkdT0>rKY}CV&g&(%yP)B8r z(zlTeq1XW&AmCU|7v^cNtYuaCQ4}v;zGz1XZiurDjHXpjk!4(8#`gD@qa8xlb`Sp& zVtv9j?TD)S`i;rqy)*{^OdR!^hTO3uJ3{OAs+J7P=yeF;WP(6bnh{hqj*XEtopf_< z)gv;6UhqQLII*d;F^@X@y1ik(y2P(Wlddtq$q?uj#O_1*Jizlu;|5HRG}=8iKg6ZInP|h_+wA= zKAH@rUic8&fe4Lmb-f=t+*I2&u2#`0Z;k*Of75g^qI&Co>VyJ{$A~9WGHj5>G4Lwb zd^!F)zm<#o_9v$Yi{7=4A<)7w(N^)PlgE7KVn+d!Eb^i?hOYcb8Bbq&UFuaqW9`qG z57OVP&vl*1yO#$&Jem@ zk4lxL40XkI%7@ir1ZF{deBS4uGW(KiG2l1g&Ah>3`aD<(KwCrohIkfr>2PvEg-+l; zK%6W$&9IesmfbC?DziLp2GlEGqjDH^a?zS))zj&1qa_zM0;FwEmA-HbnshPH@m(z$b;jDCm^iY!F@q|1OOuOec zEfgWjOs*^VAuLYv_O}D~AqgP=ws=ig24dGT)sq`=c2EzPSsFBgNLP<6QWMK=i$mbK zxv5`Ba)GhvpJnUmGWZo#9p|65%EoNR@MOeTWDAA*$YADn9|XG;YCs-*=J`chX=k48 zxUqj@cZ1`b3#R2znbkI=$iB%o1dW9I37x0a2IO2$Gyrg)BByJ*DS9F5xB|19^Q8v4 zJen)PM8%GKb$aUHx_57gmA5ul&wUmm3L2In_gykf9tRi-d2p5wxgMOh(!oyduwuFV zh|X(R3fINj2>2LZc7e_pox|pMa&4$M1R=+g-pLO*}jwW30c_CX+SNHkMLZZ`sz`blBfa|L0|mfMrDAAEGJt- zgr+2Y?+uH=q;R0;Gk)=vhp46G`5<96f$XBIx51fgME08z6(M3%(fW5fng+WIsNu!% zXh!tjY8J-KFB*&3=sKh7sn2p(eA6KKi8Tuf-u1++?}E*pA5=&0Hcg*@hAPOS=PjF_ ziIL{jTVb2`=@AM9R(#&?bz6s?5Uh6xb)*v_5bYCU@64Hg<6y*MPO ziq`^++#L0xCKQf10HcLD0XDS0S1w|7%i4|@F*B#BlmgnEY|{m?V-%v181s(hr1}n* zFRk-~1^c`hbOFvQj1oZX4cX|4-4%^Qh@T0yc~?=M8a0oC?SJ8~kN3xtm|mf5@-(4F zeDsyy4|-RMn28UH*ce7)y^cVE&^M}=pzBYh;s7vI(yk(IMXHkw;L0%7dbGBp4p=Us zr1kV4y2$G-gsRd?Ey0o^^ZJ?1IaVye+qeAhqqgZbBA-R3(lZDyL0J9yP2(Gaf+szxL{&Ne*JfpDQM?%N9H!?R%Zn3N14bR$})xgBG=hk4-HPk_6Hiz)2}C^)WCv!E5y|zQ>%(KhA3cqVai>?If+^J3gMKC`b_L}=L31wgxowYTAd3{ChSHT# z?5y|&jF}p#rNo|W9ULkakHp!eFdwXH|B){7>G1hRtk?GvLLN9=uaoc_N33H9|JOk6Hm>2-)3*{(t~Kpod767m zt7rdv%`>S$S3xEY_qOM`iyxZ-O=}(@?Ary!@t~@j{v4t-k9p&d6s;<**fITRw!Zw` z5G_?eS;Qc4=r0zl7r&K*m)M%xx{x*DHXXY*uT$hw?Q@jsB<1$n95dm~P{~6q1(?3S z$T3S|EDgTc;jGNtqULPvDdySYk1#b!^%NORIYSH7XjIk~m>4nHfWHhlx*qRFDwD9D zw+Pk?3EX}%5@^y6Mx~9#vlQ~Y%a`S&+%UoL6NCi}Uj4T_2orjS5@vRVjTKGwS1T5K zE>uz@iPEUVJDWcA4hn4G^A|QKoKSck{VJLtRg*f7&nxgEaqe131G;*Vn|c&OL&N$v?O<`3|m>93?Mo^Y8cDF)1|70uo3GI93+3o8%C|CM^I9umbjO z3AMkUNLpBh-5Yg!9$3Kr?Pvag*?Bg+p2%xZj3=7Tm*BOWcAjZ_J2%R2@ZVbS@z}z< z(xjU}F0E*M04d#zyljF}EvWIucVCxG978*3s%s)bS(_4-DTLboc`+oYKau(yZp1%K zy#%0Lkj1u@HZZG|E@bjz>0%O@0?(fBfbKsNh3vb*9U0o6w$ZP z(is%ljdXvg3^18cI9=mD2%xim^bt(Rip)rpvSW&*Mb~w_11V*pTwl7q z=Um`oU)r3)1$_A8)QH$3(HSnu6EkQ}-E=3kdM-k- z5lm9_odkZyUaC-!!%OdjS?K}8ktkaRD&_x-t|=vxaxwBbI2@z)^0(D5=#)|UA!sbs7g+#r5(_T_{Hy3u#hHp_LiA5$-SWoLHaYz6-JRLt#3EcW&E4#`o{bo6pRzF2hTiq33Rfm7eLcV&rz|f}XhZ&psi zjc(II`R{;@obeK_VNZVXA%RVS>?Z92B2h;IYC}}qqaz4I)Zr*ky~+A#{C!s-scTb2 z7$${>A2GyepSdx~*sOg#Jttt@g8&VT(mj*VEhSFVs(18ujp!HjdHgorn?X%=ovzc9&;wMrof739N`pcp;JSf!7fC*a|;(2pP6j* zRX(Lv`1*&SOXoi%o3wf+3~=(NvvzH7@=u?))Fv2W3l&psm@5ee%hdGr^ZMP#cZRzzSlZ*@}Fs~mzwX^@9y3wu#+#?fHO9mjq zqpf1cx~-jaBKbq$+u2f~lZjO8uQRYe%842WgYIoP89Go4e89_0Wfn5KdM;lKoJA1u zsdaYHnstL^48=Nkom3uR8^VAlgj=qbfE`Uw1GVKeYJ5Ct5=xW_=E6+YaQ=uW8%S^l z730AvO??3ajE{Vv*HOWx@5O4b&4fp4p`CP5eP`~y=sC(BA9<_rNBBpqoM0rM>#`LR zt{Ekfmw3j%m$GT7InQ$w#a7f&<{oA+hyCW^*#edUgXb^(yO4iqXO4Wm(FP=H0Q4QB z5%GVu69{kZr}(!?mY;V>tM%NDt+EA_f_7{sLrX%X@k29-88`{FfG1wJj4zBJP!mTeJ*uw<$;E(v)yNJ?u$!pG=tA4M4NJwddO z(jt`_E7(-$uxoyr@de`(c~j^WXrTJBXZ2!)NzM}ngHXk4 zhp2vbq3Z<(xjXuUa_D|SNGWHMU!C_DtQ0{H)G3riADmq7)yi*~%jlotuE|JRqAt)1h5+yjucyULk&%g(E)_CCy@D=96;^>dJsavDBymR^vAn z_HR4`^_~<&UlqfOmO{(L=gJ#v$mt8PCwk|8b5m=gTq;7{DM_wv5Kl$%!efLI?Z3~6 zI>?Nk(3UJl*DDx)B?4R-r~c^Bx#h1CD`iRM|*fTv>6)BzLF*J6SCr< z4C@435u5MbnMZ>*{4+V^LJ!och^GaVCr}it2`{kVHNmy7!Uo00aBE9&hK_ZrjUnqN?X6-2=9M~=`4 z7S)RF!31Dwl_faJ;RbpqmGPD!w|Bs;^mfTs(9IIFBFrjH+JG|YF8}MBx)&1*{Kl?4 z%s%)P#8RbcJK~;+MdNbwPF)S{YuHUAnD>$|b>gQbeVi=+F+9b&wVDCoO+nk`&kAib zJ?JMRG-^I4fxQ_==NWtsr7DAc{-@ZY1#1WrP$f$=UI7RyoJk(YNql@+Q=4jVF3$RDkJ|jv+KTde* zzpn$k-$OZt1DKAw3+{chJ(_oAG~a|IJZn>M-+lLdQc{#*3r|p;@e;plQ%PCe(1fU>OnNZ=r^}dan`7-Q-5BA>ho=eWMk}xwVx=$D zo^*9Txop9h4uEF?(=+Z+SG zR6Sm|ZD1R+T%XojB2GlcM*vuV@Mps!rzWM3mH!gL1Z2N*Uj?7aE7!3jA3NVtWh|tA zbpvihK>GNMHj0h|#pBL?aN~*5tfRJ>2t{38s)d%ITd(=q9?n zqTTx)yp<`>v9f0z`aslpd1Bz;(x-!KSOtH_QNTySk~Boc$A;8s9tAsu<9YY;HR%DJ z$-4ZUKy$|yt|1j4m1))|@jy1I%p0L}jIw>t1Vs66;d=M+45uDjY)F;p<9`X0Cj@6c zy6S|jYuIE! z@O)qPZavf2Hnt!^rgOR#ev77cM4IX%#bHyn4=M&5<-M{7OPM?htpr3E8V6HqydQ86 zCJONVEB-5@fv1H<7Xq#@U~+LcCG8JpK`&h4)O%T-=iKCj zCng5@2Ot#V(gba|aUJz3>|202*8q7OR)8G*N7j1Kp8rs9{A_~GvvuE5+F`do4l<2G8Yu59j`Q2w-lsUmz7l= zN_Yw$nd=dPqRfd~U;p-+zeU}g;xl9of2_Se0BM3QpZtU+Fv-b4SZmG%>brY)T^r&W~NM*nimlT zAm^S4NS5=hUpxL0G#8f&+2X454rv=+3v;ZuMFX7Q^%UcYBp930;*th=jTm^`^iZk@ z^T9v{7YcEo`k1S3vv>FANf^!_HMYt3B$wyHbZB!siMd9Rdu%BwTk8;$_jUs--EC*q zZty%MKc+BLK3oBlU$C5IqhT4bp@f4h9p7VdpZhFURSgc)0`xxgi7-g&C_>dKC{aFW z5QPJHD}Gw!z6tEzjWXrzKECF>woq}BOh7KdX4XQpaVXImEqdB%VAP20vQCp)L z%^VIwLnY*xl^oT;h<+KHXVk#;qH7JUO()m)9CE0U!jWjZc3!s>B`w@Zhzmkt>olW@(xN^l@k0J{mYm ze8Zq%d>I7Tr@gOS1X2cZZNOG^6s0IEXD>40EEvu0H)!0ZN%~Ctx7JwRv_B7=fLkN3 zfS1-7it96e3@SBu-da7d=xAX;#<6c^9pCMaQsL;T#*#RefE?p_)?=}V5!xPA!JH=p*iO5p*=@e`mVTVK zSz_j082Z7s?>l45v?2WW%kv_wf5>n1hUC*IEYV8qyyZIKW}qBmfpiY2Bra`R144$z z=GU26=B5Q2#kUi9dz&HxM{uv4X=U4&RP|aJ_KROIM$0j3u^JU_?0@?Y8sf)gwlRQ& zp)pZ8YB%`oT*V`C^~=$T$)2+wT|XIoTF*HdBU;H4*Ou8EQWqYHL$N35VfDp1=D(pv z^Sm3to9)2#`ojoE8dX=^O?RHdt%=)cc;;otp7xu;`bg!s0692>U33WtzGCDrv-rKf zwgB6WjO+zI+eoy+s3L!YFufCCXg!SelXz17qq|Zn`6C|*%GizuqcN=lvaTZzm}+7a0Q4Of=xS23N^&DQ{dGoYzDqb z@yh~>iO8$tR39S(dVnaFesaz8txsSeNQc{T{!yK?)J21%qqgguw6_XM_RW)%kglMq+GO2T-kR5`1_tAU4d}-7YYml~LNa8Q z3LT;2e8O0?K!O|Lr;O>Fl=Q?pf6D@jkHuZx*gE$;5E7(@|2N=)Cgli5hqceTkH1B` zH_$1v@9qeHB=(#QA&_di*@K4C1T|v=qnzp=-am7Yp|d>uZD6P_ͱH&v9HGKRdc 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 z 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≺4hTSvn|WTvQ^+q@X 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508200002-Config.rsc b/MikroMaster/20260508/20260508200002-Config.rsc new file mode 100644 index 0000000..22c0502 --- /dev/null +++ b/MikroMaster/20260508/20260508200002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 20:00:05 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508200002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508200002-Diff-Config.rsc new file mode 100644 index 0000000..e67d167 --- /dev/null +++ b/MikroMaster/history/20260508/20260508200002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0