From d8e354260bf2cfe5b56eb98fc386ef65032ebcfe Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 21:00:50 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 21:00:50. --- .../20260508/20260508210001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508210001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508210001-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508210001-Binary.backup create mode 100644 MikroMaster/20260508/20260508210001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508210001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508210001-Binary.backup b/MikroMaster/20260508/20260508210001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..765709012655370803be648fa325f2167c87d481 GIT binary patch literal 298264 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 AUoa$z#ppGqQsuc*c@{@6-JLUW5ID+?vP%S`C(# zD?iFwDLU`0O}Lx!BbSG{-3J}b@QqIH!`T6RzuPmT_`LK?$04$2^GSn`Zbt}3ruVmh z+xlEt8GpuwA4a_1l@FI1WTy&Tk2AEz( z=_A#6OQKY>k7saD+L0f1wlR>QAMD)vxd8=KARaW^9Zwq9;Q{!#KS2~xm&&Je#1cl^ z|LKXp9E_+G(sB@MI}E(( zdXTz#78x`i`dG#ciIcn>7@AvSV5Oe_C3Oy5eW1;tK zk1jAZ6yd+ROl8s-0H(e{7oJ1F{8J`4#x76dDo*rK+Pw7?tC2f)zE=t;SiF3tZsLJ~ zEwwOwO&fpQau2hJXF?!4H=s`rH|{3Su}y&m2T5Jtm}BDGp9z0)h2N@Ff2zybzH}wm z$S!WXPpO&=d;e|Rxxy9sUZODVLyX5OM5$*VJon%f)DFUfx&$<>3rF^m^8bliNg9cH zJ%#Y0_nC9SXpKbZst{E_j@R9u_ofzzUZ9jQ@KS_kzZ}-H9RJjrBnk-Vg~7Xu^BZb(&Y%ZUHueAjvRHeQI#MpdPrZ4JA08YD*HbeL93;{vvTUNyNF(pA3z{{l!kvtuTxn%Dy1J zk}{mB0Fk!JV2Mq6Sq>EM0hoB#@h{nF z%sxF89-qY=p_?)~T@u9L3qrkC89Z|2=AcGQLQ*WOlS%W?R{51|HvHX2|clgUwRQO`ez2HC&(vOU) zD&GXvQ8*G+bDu}xN!t%1uG35iH1^TxZin|~WH>~?2BnRG1E9cbrh`3Pkv`R9e*GVM z`F}4?21p(qg2Uk@4snd3j-9U7NG{g=YICYW1p3dQMSPkb!bx_{;wco< z`guI4V|u02CaVE;-;IE|E7an+4I2yHSC_I73=|3;ecx4Ce;hshyVOE$y2YddocRi=e zeeKp;n~*yt{a^;NKpqQ|4^WZ_p13r;9fGj(MY?HZo!|z!FxI))Sa}#GA$wX8qzK6n zS)zij+3g>6Rt%he_fud9=ZyIYBW7Lw{EXj5^)TN)_tI8JBg*>Genn^Zk@lV^KoKJ~uzis|lr`wVWu^@(;&- z#!#oWd&*)UcQ^>WEd%IN2dSDp^zfa038N&+&aM=V1BUO_>*aBJQp_npBvfhIm#-w048emlNq~SE zS`UF|*+$n&WcA%FTtJK2XxeRTO=XXwr$Y9GLl}eC4i4uYY83Wd8*cApJx+vv-4XIi zdv=ATS#z-*tYb3JZB6TT`$gmG*y|3mjnCs!tuk5gbBAC9L=k?i76GFdf%p_=afj?t z(ox9dn97+q4{8WEM8>6)TB~Vjx?mA!s%!dqM&DvGUZzW)>mKWPLS0%%Al^YE7Ly;+ zQGBDle%<kZX0;fLbC*OIJ>xW#uJs4236$ zzK3v(`iIo;lbX2L^^ztz`BcZKxSrKG@gwk?7)lz6c{iBBdcArISq`|mPwqZOwy;NO zCkfD3;PneY(&woh{(U7^tV54QQ)ETEYAjo_tm2=BFiL-5?Rkr_FN31`fPGBbhgwwiL*^ zxpgUL$whCq&D>^B&z>6o^N~ z{jvxD7ZO7=pBN5~RDyAkM9IVG$3*bYx8bI>VroG3i3{Q-B(K+qN$1E2Dr4lq(3+Jn-<$63h=*W>zgzAFgQQP63mKC*ufy?4^B zH3YJ1z_%eZrLDT_5D%bF>sqLqc;+rxVoV1hI^yJ$$gHid$1&v0L!t4%95g<=qan%# zP6F)@vqKC2fk%(#7)hEeWa_yV+OJvPwM87tIqQkz+K$iJPF36a9E^XW0rFV8zl{9& zfl3vrheyc=sY{J8IGMd~b8M|9;sGIZmP99!O5P)tjgcWR6Y#Pye^s-FUJ0uE9JYGdUk0!ZWwD7+WCAwL4GE$;D5@0{R|7k`%lkAb zITCXUsi5_+dxeaAv2G(h3UT#QfZ_&rDGpLpV8-I)yoKPAJlysBLdzAgKM^HKJ6YHgnucSzWJ&hreGxjYyX@&Kck^L02`U&{^6VwtUD>7gsHU81}RGVSDNPL*4ghJ zJ5EL=8!P;A?;+X#LH6jM3~wqo^94d#ByOhqR~48T+{26xpr%9tZqiaZ%ezxw>Fu8m zPm{jnIv^+RRcb{`w#&>4{Nk#!!=cGNq$eUPxZb05Zl@lt1^A_jDg$zB7mLaq*}D@h z;QSEC640(vfVZVWFVMfh^fz+llv(WTc1H$z={*kozYYx8?_BBnMyHvqj8^okY%<)o zkVKaD4}?_MDo1z#HnV|LV)t+D{K)AD=vqd2Y%D{dF9k+yp0N{wQhM7uuR_gmVS$mo z&~lnt;F7Cv3*=PT3)^uc@i_WKJ&(cDo*Vj5yv|~~XB*xGv`bHLrSR2n%E{GS@((sH z!ZC+cQPeg+qZT^}#Py!WnQ9?MSTFn{BWXAgc`7^_K$a_y^8)Zip(KL^ILs}bnlBw@ zV-~{H=@t)jw(KoVi$tgT{}l&!*wpBA6>8iz9?G|F7e#65E=+_!3Z*Y zx6F7H79hC=iYN)*+ZgyRk1pU#%zcZ>Ic0OQtKR!% zAK63^PEguER%(MkP~3F;T^$o3A9O(ROnY-PR-F!DpDX8h!16NI?2$83LSc!vzvZ}O z-aoRvd?I~Xrvfw1c}seS zv6)^^akWiSPstNsu?M8hSG#jnJq4V`km&~Q;>X^D7ZSAOy4?1RKjn|{$1+NQ|$D9|<4_E=2st(qD#aEhv*(;hF+ z>9!sKX~{)jp1O|*Fc9tj?6!yjOOerEP$ExpN;T!6Vcn`i$+3$ z!Il4MOR>nXa$Ag8W3hGzAU4MxLR0G!z|PuMTc^-0hIQ$q^rDM(~?*iO??(<2(a$yJKAuX!y1R7j1~|A ziLTeXuug1 z{dtaHbiLdfH_qr6K=?f*Ln#vwN&HyO@$SQ2lE!d5O4QFWt32O}ekdNI= zF+^qO4;~cxDe;j2brvpd2sIjjPZ@9}pv3wlIg?#LL{ek_^q?RN?K*wjh^xit;tVT= zpshp3-=YhXeoR$d^n%(lFWK;UdK3FT=_=?h6nZmwGls)hFnU;g&Q|0TX|?>H2XvLI zT9Go2Y!nP(PLTzrFnbdNF$tEqH*>-}ubVK#3>s}jGLee&C5x9p@8$8O(fegxd`Cf| z9+;^JfEYmL6tcjXvs#3G2}u7-BzDkJ{zV7bxQ<5ZxrOqnPKL+KS|F5H6L?vQpYxCcp(yHXg^w(QAY~Q z)Q^1H#yTJR=*!K)^b}BT4SFEd`mW0bGV#;+kESh!(9&|$ZoDnoW}ug;XP?_Duysu$-H>duPC_pYMqyC zw~^$%*^mE0@8!9FcmgpG1-E)&xXHWH=dm0W17&<16h~3tdR5 zOfZAu-P?*ci-LDJ^&0g42=P>jiLa>lf_ch!BMojy)#HqF@aGF z!QQ0W06Z0>aXJb8OW6a6CprCJ$yzDkvg*XzQovGg7YnSjoU>`B9tbu9lygcD`gTx1 zjs(H_gg!1Tvj^o7{{`0I*OE*1r9~aORcW7M5?*W_N&ar;JgrDeWtSdbk0`O59%HcBLXZd9{;wO`kR?KuZ3N-ZFWPd77Gdaxys3}~8kw=a6 zxZtX@QbS$eAuYCLXdZn`ITDtA$)e*wo@*Kh)sb{%+d~~V-VQcmu}Z5U&HFwNtVWBoup?wX^WmV8fyA1)FQ$g1zOL~#SwDTxp45Psq$zwKIR5~aKL2QO|1bZf#qnPSQR^U~|X7csCW!V{jHZ{tqt z345K0)Bkh=r}uoNm*9}On#Z(?oyTR9IgO+7axsY5;*mrDV0A99LBYL}v}i1P;wvNX z#GnG}ei}NqlaCON0n{DYOfjmRyprzniU`N-H}{lOWdJQMIbW!)+2=@mT>I#{nd?bo za~XH}`K(KWswO1DJ!=POc*|(ezd1gBL9M;Viq`^Vc}5>B@*ewyg%fF zbN=*{Viv(0YHp;XA4`1Gw7@=fkjI2>bfHI1#UN4iE3#kL4wbQxJJ z1uGy_krC0m(R;iSh7Dk&qotnWQAs5wxiEO5wAIErd1(W{6^6!X8FRx!S`=RjyK z0)&J?TRlJ-JZjeDj$3&`DzjiaFEt(7=SJry=W2tzfO`vLVg{O2ko@E zFQVfe|Yw9?*0dz@a$FGH8c$PVK3Z>shp=Gs8)fM2pEX?9gf2B1~>RKl*h4l0{ z>0!Htv0merQ&w)UPK_=sYU#(%|3B?W7~2VFHgx7f>!_{tBIP5m70ZCA1lA;{6nB-R z;yK|3Cgs0v+v4P!G~H~Tc&{Wo;8LoaR~>{;Fr%og6D@+B=HwzRIDY#h!DLyAximYN zUUhnb>xh07qehf63Gvr(8kWOyQz_L15CNqdk7<9iFF|#z);Il&MH}iOf=ryw1Z0B5 za5yrwSmYzJ7bI~t?C<(YfCk${vJ9UD?G6R5MJ?L6Xx?-1HRJbCM~zI!Y$WT37reM7 zViCu9kS!fMFbq}C+@2wKsYomxwoEO6$T8 z!!Sig*(iW{AeuPvhl5oC-W-~t7vt3i+Gn1JN!Hvlm+4foqm5Z&lzUcm zAL{0L2X@|hej%cCYVSL_*=6vf-vkTBh%HAAK`9mlj^?lgdzIeSid|?GdmxA;a95!- zCi(VDUTMCE;sB!RxD-{=v>IZ^-L_mx4bn8EJNe`ajkBQLkMvdYHO6N4%570|mX7Al zR`Y8?#hmVxGJJlM`=rxlFAN$D!2Qd6w?GtqWY(YBi5ata@0u?{dH*Wg8;_XjILd^U zLSJk_P)z-Rjclvt;t1*BCJG|3ipwqpKn9${+G6ydYop6&_^MzUiCQ)yPL{bBh#p2K zU^oJ{yoX`lRP=8Dx5Q!dA|una_dnz3`~K=grpyf7eRXflTOqGee3~v#KGIRJmWx z)@;mR>NTh#NOcjhr#ys03bHul%WVbjSFL}=pHPY$l=;ppl1_agtzfkN>ft6g*7IiP zooZo?fj*7hYWT{Pq_Vr}t*<(*Y&`c>X9#UpMP|kLaZR~%9JS;M{(YaWg!y5lIu#3k zL46DPPJ!gnJ_^Q>&(>!p%y;@iv2@RB%4fsTx+jnPtAw8F~2Ua!`W0MskKQAIA#xPhu;C$p;{4u6v9lvHm zsVQPV5;W$>V-Ad>93n@#5uZFaY--uGVv}FtI5}w`UNRu+0gOo1&wXjAR%$ZKg5(Y4 zIkuv`D6Kdcxp-#HCEO*M4C{KTC_jyc(A2t)%;&8LtUiiVJ;j9zJP177z1 zv*17qfWxC8NSXcyc^pj)UiBw&!>}v97VsuE)bg4PDP^t0kPb!-o&yEZyZ&g1(9{Vu z-_yNmyePq}l?3wqy!E-SCv)**y7r5L)FI8iX*;52`P*5YSeZPE{CU#o*2gptpuq4T zz5$K>@xpZ1k*W#x`9+l^iv)ZT^*Y~yQ+n>#6dqvEw~rFlD3R%n<=j7fKEuk|WyG+4 z@XT5s#onSJ%^%%Nh=o)H$Y=_3Nz@+Am%?NNaf1$Pad`CvAXdTe01KdWrQ-agc#-pN z<&SX@V?*t^Ffoy|VE{W$Nc!XfxY0vJMjZ({J4RU-4>t0s=f=YYMrm?yAw8?BkOeY+ z#`W@&?~Enz^s84)1xXa6TG)Jjng!RbGQxCTf27cRNiIRwh?bwxY+j{9ta)^*Lpr4+ zHS;Bop5e`vU1Qel+bxqU5CenjdgbWWC#I+WI5{H&^d9PcPjWj@`dNF2g5A5XL{c zDm#EHpQ(;aTGiy6cipgtQJ3Q$xSh4m45b{toNZPEFSgh&;{Jb;{oZjlyoDvCYfCGO zPlj_sHzop6h2?h<|GC+B49tYJ$Ta1ee7&p2& zfV~01=~%2tYOvk4nv|5x;gPw8xuZhda)N*iXt>Z1UB0) zT{-^#Ag4Ac!w!WURfuvz@XF+YY?_iPHiJq87q>|SmH3a#A#hsh?{{`#q?<6i=-+ug zXVIZXf{e<)NAAnQ;wd_}(_-`ywW4;2n>kZvg=T3Dygu)5R|RC27a@Cy?(jtXw`?ZQ zez*)`(_Y7Sxi9%YUe^eLi=(zV2P6jJ5%9i{hF1=-M}7&_^E+GR4-{U)=7^~b_MEUc zS>%#AkO9}pJZ>LZ7eNFau^s0vVkb6uvS2Kb+`N%VWi!>ni4oA=b=11Zgh0yK=-k}+ zB}(UD3JB@bzrtDGZ5*1cRUV@GM=u5)g)Krqzfk;*$QlzK0oU?_R_g^l9`+RFw zlE*oZ3#Nu1^S%Z5*2tQ+RmGxhNB}x;rGWgZ=^2?J#g4ZUJW@l5alksc8v62x7uCW% zSsMuSx?4k#Xc~Q)1l({oO1cuH!&dTa%s<%+1fGiPqcGAl;M?>1JmuH!C{o85OyV&b!NiL$#p&u;_2i~T5?7?5nVx95r6&03 z#N)N+_6SIb1wY?pLGZA_f8nlG=Ri~F6> zGHRmK53_YJ?lxoSm&I%?9|~3t3?DzC8{7K@h7?!Z-udpV$0{VF>mDK;U|V}hcy&g7 z|GSRw{+8Nvz9($%?4T!=#?UAwEv>3h>_R0?Y~W?XEER97}GD6o5F1$i0D;Au|@ zZHk8sK_>c%m%oGJ0A6=Uh4oNNR2A>TPhyjm3|WPqhkUTy%qCHYZv&uIh(*6Unz8ae zkrm@UNDp(92)CBJ1Fn|V`&55akLb2kco=UMA-x=u9Q1qCweQ!|08 zGVOu|Ar@bp9r|^`FIw3_Ybr4slbVXJh z#4Teh&5<_p(}i+#uqXrd$WC)W(tN0x-}x*STGztpyb}i&VqFz%#54Tz2oLnyYt&}gi2KaHH9+E)u`7l4e?Be4fF`N;ExUPJx)f$PF zgNU4wj>2=Q=l$Jf(iEQdVI(0->3b6<74D(l(*I`w1-acNxYe{tmS5_ewr`>qAk4!0 zxk-Iy9b!gbXAan)d9Wj5T`7&p$2swFY<;`d)zxRRKwa8&aA2X#P+U8Q78My-B6~~` zf$4dr_-E$RkSAFTrp=vea;e4zA8%?#L81aWr=vh0evjpp*yYx`jS?8=%D60-OvD!M z9=}e?7Q00lYa6jm%@_3hZT3X7?5q@N(ca^npnY3M78{oDa^c>u(!?>?#)wXKIJVx# zLn0MVOjC?2E;7Cih!+hPX!T+;)ZG9Bkw&K@0LqddePT|V7|3zvK~4nX`86v2ANIb4 zu!Rb8^ahM$w2bo(%{C^qQfk$|PeRN*CvT+2g!nBqsj&XlyY~KAnx?shRCDHf2ChDf} z0!>f>zC<7$Hclu)-+yS)4K4X|tX+Kp2^tNKziw`1S`t9CYEXuymnn7Dn}KoCCh;hh zX`d<59H{0HX9>J9p}g$cniC8AF3aOexju*7JFT_Gb#}hmaPsEN#>5Sv986Ra)h8>x zI*R^lx&@)g?G+R@jU5p-ir@~ZBw2lBgwhj-!%i%AA4XW$>i}B?02Mf>sg0Rzhzkv- zx~oK^+hlKD_+vShvteS=u@3#9<6y)f-7wEVneS|o>P3NIr718D_F2MNMH_k-eHiIHJ40O& z6n)(rkj;PbZSGgh2$$%Tf3A=G^EH9lHk)20S6{I4;M;mNc&BohlC5HEkes6nKr{!f z0!|;pVZ`o}_y-E=?`JiYhGAso^6&*EMUyv)7l?9U{w?PjEOo+4V_9$U3 z<0GfSS!&jo-vy{}o>+~dAE2|eA2v^$dU5)f{NNp*B(Fb1R2ziZ+3v@sd9}i40W{Ez zePJBkSd_XDE_3$z1t-w%{LF7m!5Z7-FMhFMr*Ic?`?NINQS&_c5Y8X!PO)xTFFqKZ z*^hDWsZ$5og|yF>r$29RkaLPCh%jZTT1G}~Vq8~;Wu@M>t9h+nuZ%!9hz3~UjgR0z zD-A(!ZrJX>`N$TTW9^{TP$U32sosdvqmcRKk?B*xP-tUFGYCVwo{e5 z6;px;v$hx$1MOQ#KonV|_(cxXVi}L6X*z$xo5JWi0Q#}Z~V5%M?H9N5@;20~jhkh9SZ#Zh!+t9M`z-16(V&vIo9b|)h|gl%t# zr(n&MgH(0)e$-7}HkC>BV6xKVZT-g3E{!qZ`q24?MF$5kqs9raFM}6PY}steZKmy3 zqgHne`eiz*Gft68=pSNIDq_xAl98)?Uti^uuTq0wdZ?x;mP}(ub}9cwhNEr zR&gV5b#~>ekPZy89#j{+dcpAPKbyHnefUJC(WRVU(6GNlHmAmI5GcIu#)t{c}ZL8!GbSFS4D zAWi&QDvowvCQ8cc$i7iq$f|l~G|q8MO12Lc45GmmN=UhSL4VbSQh)9TMxBUW4Npbj zfnXgUC3z?)XBY+Y6&ebT?gNJGCKPn8k~eRhOl%#ZB8L65f)Pmb=)~G*X0J|Sc$q;e z4tJ(5VeeATMOfybPd9ZG=w8!Hb=nFj-c2HUnp3A{% zb)~}sj8h(*u^!gL6AS9FGAbwyu z8yReE zx+0p0BbNNb!U-<#U19svro10HRTeiNw5HU-i*M{*LZHJank0JkB`F8aV0ZEufB33r zQaAi6RH{tJK?T=fmMDS?v_g4d#G7_&^)L~8a3TZ@G^R1P#?fL_+v(z7`EBe5{4pIQm z1mLYK1)x|*rPRm`vs}$UUd;E>B`7E*vNzY*F4e0>;Y>VcSa!#;MBC1Sg_p$@SN$PO zhtA#@X#S8*7x?KOPE~5N2iVrWHt&KYR7(>z178QOiyd^kEg+L_kWJZ9H>5(&!dx!z z0IUsW?Q#h~n3kEwffn_l8R_tVx|=g~XWZguZD)5&z{qP4hEwnkhDH@^PONMsnpkQ= zO>c2N(rYS`N2NK~7N1tr+&VzZ9!Zi?>mev8ytG*XK#=@duf-+nUq$`lY>?h?P(BA{ zK_HT3^h#bY5GfxvY;Ay3LAom#1xTqhgAyMC^tS<g3Iv*rSDjcog0krzmfg(=XP zO1F6tY}=VhEYAd^nM7Zma$px=yR!=Ie~7CPYLzCj&Vl|01TXFPrlUDGXW&SEt;}xL z^u;ZK>UyCp-zipTOujb#2nuRc)JW3Ea)IN}XDkyn$@$>cR11vm9u&QfOh8swdx@l@ z1?J$_I=^mFKj$7A=DyehZR$B9*U)?6SI+~{)5+$$EnpuhKLJgAiz6HBk zMz&ZL!;Y@`0-cI%tFPV@$d;I-v|Q*F_?@vHKtZi^(}y$+W3gMk{L{!TCqGm^Vl);M z96Lr{&w0TFdz&TRh`hy7X;>VRZ^kqisA^KI7d3l_KDiTQaimzrnyW34m#f(Qdax)|yCsC%xz~-OaqXEIALX0O~@N8!GDa zln=kPNuUgf`@vQ;tawVPZib$RRhmR+CHw95W#gSoo9bi_w8m0OPS5e)I-T0YpB~c1&TU8Wqe_I zq*ciz?8w$~D&7<@zS11?M!S0SL?+p^h@=+-*BsOXAQ|#g|&e3Tbo&<3H(@CDx2Ke%l72Mw$ur~c{!N>nRa$h8&yL!iw zRf&RaVN@}ius1>Ogg>QBUwc1Tr0^&!rl2-_4Lj6YQEGZUX3bJWMlUWf<5|cmhOE5% zD!I#)?si@pKh|hu+&Qj;k{V1@0uP>U;H67N6683VcdlQ54Z&?VJEaA&<=!t{yT+W# zjd0{2+gE7f4q@u>{s>*h9XbGitKAf8^USEkSy-`^?~NL9w+y(og7F|GJ95*}3`e2n z@&5EE{gmaG>Uw8KRQ$zM1JSjaSPl8-gIxHXxgE4b)R0w{T-1s}UKoW3aZ-P0o_!6* zc8Gy~@SR)PIjPefC`y2${&Lt`Xd~g?p&tzgh^0yn*gGgT*$d0ATh*uRBHZ$UAfx5A zGyU5`=H);Nekf#FHmxgH+$OZOGe~|mcQTerwo5R-GuMm^W+MfyaZnv_ z5!yuGZf;qyUth3>)cW`ZMU@-u+iHvw30hw*)WR`F))y3*ZOi>7YE_3JtPdR2{l|R7 zup9GmP%k@^FBsA{$yCALc#0M;^kHC<6sAWGBhGU#u%42AU1a#>6R@C8JaP|+#lvtn z`9Jw#c6Up~3L|m>hmlhvTIf^q6^>NBd?b|)EKAG&q3&&x>H9k~Hq`QZneW2Z!>{4` zU86rbbx4CCLc1lrzt2^#U(DlJ3csJhw!q<@tu6>kil$Il8UFZl)}jJGw$va62m8I1 zp*wm$4D$hEqU{H{R@X8hgX@JbAJjs=O5b7MQpf8}Z-wG-@%oA86fC{2M<|}#Yz)TY zQ|XzcI1h}<5M>5mB07XFi|Z$}jB*mQ?ov(?B=b-$0Xm~HN=ZZ!YA$t7oNnBFofNri z;l;R@jrT3|tyPFFoF)qUkNi?>Wa_xAbd2a5)($i7{Uc@c5RC{kP-&>-L=GOxdMLN* zizG1IC2$cNcD&7}r;Yj`S?I(+UNZa=S!lA=p&s&ZQ;?oDtmK7ceNtWk77wwhZ&PzP zvt6*H#y3f8h3vXS)b?el_H^^ZY3Bbg%3J*hME>E*l&Gq86w+=HiZ8qeve@l)%wRd4 zH5BMd$8SZQ)9TQ?9oEfqI-qqGamdsQ()Q(lYw5lZL5}|T4WWQ41`}g3#)lb1g-z|~ zZ1jqh-3!V)Ovnuko^s)0=>)65(AviD=C`jT-TJ|x;MTT$1h04@{1hA%A(m znpk3sbf9@C53y;A54h|MVBmd3^L6`O?i1a#m^6fUr4_FnLjcfJT!ySm-P1xpTXDzW z?$B*h3W_{YWBPc)Ca!|vlcUeq#S~V64&SsL?obQvt_-URuTx)w__`O_CewZ@#HSPS z{IqTcEaW^hP-JEla=g(sbDBMcE8r%hPE4Y+4|u5BtTqO2?WC=1kFM<;F{W684|&pr zvVcz{kc);tK5dbZ7No_2cNN}954GD)uo)a?3ztBNYxv011y0asJI)bcW21Not%=#oQBtPH34QH1Bo3W*7Ou8 z1o6_`kH94Vc;vii0_W!bR`Gcc-1Y;wY`iB*e9H$E1s-BD-_0<#Y@=-EE+2p0KL?O|x`r3Qa6AhewB zH@IuV(KmB6qhN~k1?4lk*a>NGMB8DRCTAG}NlA*ip@MVoea~xgK#kOfz?$*8Z~sG2 z6kuhrt$&sc7WTYH9-`&{k?QH-+DIY?13!^W=WhUOD&y_`Dn>PqR8X)tpO)un107iN zjo93Vs(?vuTUSrxHb`Cx=kKxQdy82qb@$ZwSGvTy_Xi6sazHwSvs~=nbZ7J8;!|DQ z`$_vZCt8gk=o{G*+6S1{ZFA;Um_n2$<(o?bt~ju95$f3Tg~9qLvj$LCKwR$9m|D8% z+2ETk)=g;7i%ccM-E{|!>gkf{I2$@`FyFd>gYqtdkI@itbg*{j&s-b(RSwxZ9-F02 z)|$b~-VuF#@&n0<8jLD}>8|5DAe0LA|EC10+q1^p6_Srj3Z=oIC>FT(^9xSu^$~B4 zIj~&ru9q!l$@1iI|L9;>h9kV5S1kqW(qfYK)B9(%_@Klal(L9Q%>RIdX8Gg24B9)! z;9*2S2k(&ORr->^J+-8hZTv;S( zLnb}LuGzI&C!Vy}3|sCF7k67lE(QJc7wYanzCDGZTJt^+ z>j?K0V`@;W<+qFKnj;q&OA_;YgN9k-tBCk3eRNGS`%OrTIzItpvU|(f8x2kbS64ds zFmOuiyK0E&J{l_OB-^uQr_x1}tvP{)$3Ns2+;>v;oB4r%z2x8__uMyO#k!}wQ3Vgj zp>!Vc*B2J#gJ1xCs!#joN|2~`foIq`SU)Ey@Zue{y1qpzl#v+@$w3<+ba;zh0* zZ3lZ9dzYQ??k7hcC*)Mp)`tW_l?^AGQEj7HvqQ-)bv@E5P4y4bIt+rP5L|4!iz=%^ zu~zfIVTL0hxO8}`=IO$2BSp3YL_kU;fYxbEVgN#vpucbxr6#6k%U=k zM_a}Sa8A`KE|xizSnSTYii^)VrpGn0f0Q;HEmD4a3&1GUpra>PI)HPi5Bw!+jcte* zxiw@v>uYY6L|gcp)5)8d5)vE886V98XVFGqWRxJEQc5zUOvMIriT@8)NK1kwOpX7a z#+cEZ(lTbLa=ERtkK0}Q7Luf>Sv)$hIMdOlO_DIv(a971P2XN_K%~>fI-Gr}mS)3^ zOU^oAOYSmEX;`M;)d-8Hdd2qh2u)!w7AzE8$65YDP)kmLMDljK6A@B7X63}6>PgYA z(jbAYbm+OeRcxPu5AupZHR|9VLJJIC^FEPDwAnxC9?MB&anUm?k9k@FL`;{(d8S{R z61D3cjcRw1CQ=scH1*=3&LA9cPy4(A>srA>xiBjP`nD+-V)6ig^;vGwr*tAoIdJ6J z)Szi$FcLYOeE$U=a*g}TU+K%YO2a=$zZ=Put_(gvDim=>gkBLi2Gb%S?u4np#dZ8+ zu7`}o3e}|Zw?ddMApWUE)h>Y0wQt-r2SPsT+SD`vqRU4)dd(dRtTcBmz-K86GfLLz z@-x^6m6In%qgMdDznrsood%OYG-d zqPxD{<#9+pk4NmoP;l(25OzWD9Qu;k9+sgw#NZDMRrJQ0j!4+#@9caPASoM_hej)E zSkcx|PDaK=*yi(<$M=KCRK$D-mN-MUiX{+kfR$))iwI{|-N(NwMbiKmc7FZRGvH|Y zawt7R(0lKnPII8uks&4*M1`t%(+p!rfZ}aLYR>U&mRNX5#J;@(=61HkvaY^7)`+{( zFJN*3l4^VX`Mf^wyobd8CdS4W<6QzMJazi-_E3&&4*kyT?ywT zZ&aqS{HYEN$R`v2m$?Tb0T$IKf#obc{XtIgkJI(dk4ti6umdp=`&4T-r0I<906TdQ zf{a7@h>x?_YOnLgesQA*%1vD`SKq^ZsJca~HoW2UhE{Q$t_C(S$w2ZiCs0B{e#8J< zWrkl&Jc$MxxOPO#TnWiPi1<|j}N&x6JkWfUBXH< z|F}84vG_ySrrWS`O3lYc%I2QOH{q^rlyxa-bwiYZARk(`$2ya&pq+Gr4-wIcb|xwEvAMk$e}1`G z1{LGZ4F3#!QyP9|D;t+-z~$@H!PH(ivtp5q&}PjzFSax_NJ4<7iO1{^><>{k{EjKa z)5fL{VqUV>&f$IKUno3&H&ZgY!k3CP9=@*}P^Zf%@m!DMEH;;sL$Xei zW9P_oj7u|Q!<>%(oKr@2{ry1m(h>A3ywW?BWWP6qLU0Si>Vj!Z z_Z0*7C0a*PVibVDnv5aqQ2f+2B*@hTNZt4FVDA(Ple5n0!N*XUY-91=V6KbI^4loD zm8WraYl{nIp; z5pJOXBq3iCduO{xhuhsD(jwXnI^DdhFIFH%3{fATIhtTVhmT^v=#F>%Gb<^T@wON` zFcJN%#w3@JWia9B4~tff+as>T%VtILW5;yho>n7I6At2_vvxj;25mGtbD#=N=WzuP z^xphT+D98t}5hkuOCSD^fcKmjtV7MtfU_nZ#{l; zs96;&s0OLZ(q&QukgaXuN5y$hdmzt!HO_|Nw#?gu>w6^*hgNgKxF)p3;Zvu0BM#=qwjB05851(5B99kmW}vRl zClH8v{Yy(9prx8P+Aj9|gjd0X*01LB%AT%^`~6PPq%RqP2Eld*B{cF&^ky&PZ(plx z_Nx_Jq>|T5S6ZEWOZ5!fE_`ytxG;f+V|UW=4(u?+kK}9d{W=Kg^^Z)b?B%Lg2Bu-L z*eOLDgp}cqd&2omzhxJY|w4q%%<&EfJL^Zdn6YFV}*t43@Wo=h6fayD;RRZ_+I&>sgA+}X( z9JGd?a5rZ4JXLAU=I)=*Wsb_|t1n*64**YUPopLA?zuKGS~d+U8)SxnFXvrvvdL@n z37-j8Y_|%o{-lB4kV~Z#?Fhywu zP_7%fl%VO!G!7u*n&6xkb;UZOG7?hgs)e`UX--(`dm3EN%Zl6sosbR^6e~_Azgqg% zXtjx7ldNLlGgoS^Ng3b3V&;x)s)JgPP_z)v3Wve}%Cw0PLlyk9s*O2lNR_h`IL%n? zQIlf|ne0C#oGAD~1f>x~o?5iGg=(TGTn(_+3qlp7HC)({BM&N$igjpMpH}u({$ZC> zaI(!|X$N#_=zM?kRJ9&8Jd;thXSZkEqpz=J&po9=Hj$rGbYfBfY#v9NiT9e9Uiuuf z?^KbN_K)sltlnCaFdx3cQBjWk!#9^#WP`z=&%@dqz5KHsQX0seGqp1j z_f&U5X4*f4=n4q6Z%m`l%z4z8t5~#8d;dWW10@gJ2}5XN1elpB((@vNAulvR6_&mS z_XyfLuVjJ@-$+6yI;urA!e-oBP@1gW+eyWbA)!=1fRUeWV%+&UiTKhfj=`w=?ummCUVx(+}i+9bV}+fKK?+m5X_`jc>Qbk zh6tFF2Ni7&EA*`Idef(^S$&o5;qi%#<7R1rmEah$!pUFm!Uz)p5VS;bxhbCiY36Z& zD$-*qPEmxSNY%l^AKK1#JNSbZg<3gV5b|a->^xXB#S)k8)DF7_+|Qr2p@73C)IsHh zzq->QQTU4N5ZoHiz3{MseQ1#WgA!Sh`+l#o4+ti(gv=1h`5%}-v8~muQbnR%oHse2 zT=(&%{|Y~U}*)KQBA>FVyFs>ZIpy^vyL&?r3!B4pYrf0IufZJEJAEw+M9;W|U~rmRE} zZB>sr!CrokoIj%vjtfqyU>IsoDnEV2&_36yf)q_5Xb=hG(R|iF0*`dj&@@$Yn*9epB_M+ru`3X zQW^FJS^|L3p`q1mQqV~1L`>mEhL+rO{!<~e3?KvEJcfWA8q8x&s~j=gz-oj3;8FCv z(RDXcnW1B~<2Atu;5C*ljpSNe^NH&VI7PW8*O6L4raDH>LNiSSlbT)QaII9k+2+;| z6UWat$%4o2e(NH5$UwH7S6)~jU+?yuPq7K7EL1b4sU2H!aYK)pV+4dREfzrHGw}p4Z-9@J4!q^L5-w3cK zSJ;s30;w;E3WO(%8xICq5M4zWOzoso$W3)C;^MuoA-}UP;cExJVN3OY^~`m0l)&JpT6Y(ysW}pU5l!__dR_qhZ1&Fu81&8Hk40n zq0kcv%-lwWL;a8FIgX|o9DjSj$uLi;4zApjoZZoD=fx!wb^YaFP)XhV9eR@qabEGv ziB|8os@+LSsAbLs%CLuO$*S8)hO_TyHaBec+WmRh7@kl(>B`Nso2bKQox5BpL&LG3 z-uz1HI|g8!9F1@)SGk>*JKs#8$T_n%a8#T|^Yz03TjZfQyyDu?1(HoIJL@DtI?+c3 zs*CC#M#puAp@RLm4dF<(Dc6W#r1slj5vpn!X4dKY($?IB4+5;mB%sC z)!d40l{Avhgu+SgmsCrYV>i~5*n8c`8|wdbm@2kb+2}OIw^<}s1I}Pq+9xxX*K*e=pDO~ARO^~Nv=Us`3jkwI7Z_g8x<&r~V0wy{ zJYxx8Mbk8IJnEsxM6-gdx1W{pBYabaHI2_+))f~x^%JJ}G80RK-Xhk#vsW1_J7?X79BI1N_!AxqE-CF&qA8(bI&K0@!bBgS<9)%Fa*+6{0T({!agak@))V`oA zNpxX&r?O@CCI*j{33_?pgbC2w4af+`$EeHux0i>R0rf%gD)P2~_ORt)!blB!1ov}@ zu?yQ9>rZ-oUuu5n>vD0P5Z^bGpZr&Q{V^zw!2F&X)}KB|k?d@t0fsBdycnLd9t=zB z0TQ4=1L4Q`vCtDhoBt8)Rn(n*@?Naqv+KDhgq+qMf;eFvDWiw zm(YBB>hSXIQz-hi4p32~?)Q*xZvqQnJHVTXH?wc~R>l7a$HE;e3%HL6`$=b6DZ)pw zKm})U)1+e>3?_d#Ih*WhJkg%lfVrc5SwxdctZf5s+(=}-*Rk?yYAEgUh7r+oSvQWjDLb?^`h47j!g+=6f< ziS17C=3*W`z4fA35C#P2+=s~$JsnAVb?^Y~%x@y^vBtFBBR0ji4k@$%1DE~tlv^i} zZ+)x}?)=+VWo)_5@`h4CR!Byc*V(Ua@O69wgexA>U~j=WWp?xn4dy%%WNqksZ7|J> zG-zDU$>|=9wMsq1TpUVI;r7YJm(T<_b&!5DuHM%yiGD^geHFzy+&V zkK=XlJf?gFnCiMv?Vt7tLGyVE2k7!b{hAqgd41<)SaZD^mCxy5^;3;KAq&eYEu+qA zwti9s-p2M2MnFyD`f$Ojhq%F%&{Z4=RifvcMMYB6HXvA+pHMEJ!N`6tsg*2urrZ9L z)dbPWEzs|d9WdC5HY9MkL^9zn3Dx;O9{7lqPn?N!Z0b@}-ZKb^KZfi6Srv1-b2_-Q zM|-Vg+Nr`tIY25^TMk3BXiC#Ox-oLdkdi45G~Lo|h52Zb%HMQR*yx$>f#<9}h|I9F z-u8OS194wulb_1;CkVTWCx!G@t%8gP^CQ%DnE3w7;7#$Q#=4d3_h$*cn*YYO{$gd4 zXm;d4KCnyezaxEKKi8TS&%14Z{37q!9U0Wj#A4b*?0|bUgujnhS_#5(Zwh*tO{y`? z9Xx0!HC=xMLL3(oKeN5L`@hB187dNWir7fb3A<`=?WjUF@ColB| z6qD0)?aL$)BVN*6x3yKvWqIshj8FuwY}p9}dByUU8`B&?5cV}aElN#r&`+i&LDS&r zvp;7c?@Ktvg?YMjjpQuwk|uVDbk;50#H?tbpoi$ZDIj6nEJ+I{`M55Wk&peF9yPDq zllP@Hn#j+mb7yyko9X-fxRm|xzG!>G3wzAsT5!0}nn!;6T*pd>Tjd~(|7L-`FiacT zO_ZDIZmsz?9hC=A$TJi+kIJ-B@mQeh7nn-31ZM=qloya_9DX%gJR7;=8{OMjfR9`lWF*_sT%Gg8s*1S4j_+4uEx7!efqntVb?G^uXnOZTF}% zY%N!2H4$?PM8sf+SAmDd>$siLQ@0%v0KdUv&+tBHga&FRkbLx`rrOL!k+28c$I}56 zk$2C{8HPT=vj-a{pEEpXq13~W2|>)SK65PTe~Z*O6ddx(h&fB|H0)2LT-{==m}iDg z8FlG{UEVz^i0;&2{gdf6zPB!^&s0L6`$i^j(rDF$wFzl$?zxtb>s`<&A6kCx_G;A7 zcnUgIABOsYzSFcr>O^Rl6x!fW9*(Yoi}E@bVN1>rUD97|uGcv{mwhB8u?by{`r8Nl z{FMN}1Zr!8_uJ=9N!i)~mEBV+DD=sz%~Z9UN0bRCIW8|(Fb17cH+c+G<@NZCCS3D* zV+>=KqJN0GNqCW1Wyz+1CjJOl-*GW|(Qo*ol5^K}%Q2birr2R5h_?!Yt4VbL?I`&} z$tCdZ5LD2t^I+mvBFmSMxAZID5nQqePN3GWrGM=3! zjC$@*bM`D`AP!E5q`-|)1;QrA+qeK%RL4P1Z(sBzwT*zruS?F%VJ{s(U*J^O%289d ztQWZBHLE0cDsIz7TQCUr{>OKZ<^S}Czb-qAZO4n;+F`1N1|v!bJL@>R-U2)0{#bfi zR4!?m$fUMB&juH6$&xv(Ou@G+LXKql7uW4T7-UX%a@pqw*2f_BNR4S-K|12S*6xvf z4*u_snGeMH&*1$XpBk{g2ArLcOv(&b`O~iXvwn;#wGsSIOT3C(r6KXNQm`?STA-{C z#F*|g@7nLNCk8qW+xjvb4OR1Oc896ZPRP?QOU0=%nG7ocjAP{m-G}vJApV0HWRnm%X!VAx7N- zf+vm|ai(`WZb)49dWc#%C{lRNGHX5qe-VPKfx&CA<+)SQ6X-dkk@L!o-Z+XkrD}HZuAErP5#rW-%;?1H-c&F*P zu)O#bpp7azgE=PmNtym=b3g<|Px8QrUErr*2T>{yTkXe9c5N3Tq%SWiDb^8H~|83Zc1dat*#P?;Pq}<)|Sg6 zbXSrtzTi@~Kt$V1==l7t%%;8BsyNo67pkn; zwCwVMm@z#}(J7rckrK-6Cc2zFY(8th&D_k?epc$P=3^8Gr2sNs!2EV-Uig#V!eCvU z|Hm(%H*k{0=YkZmx&mEEj>4XhPw{wEJbZ~_cOosaJ;k`sqG{)u96^dqoxOUNd)vSU z$k!Jf;$j-+8G`!#?XtEEdUmVa@gl4<>*2lJ&&Z$e`C8;G-x2!`Qm-Fl&$zM<+FOt9 zh+nk7)fJ<^&?L|d*tNHB(S8DEsG^)DsvtHha%VEEKo3V-xc-N!i?tNYW&0Xv1)(3@ zS(cZDSOUts|2R_{nqb>IDO4sjv$1PNhNdzN@2WlNx;SBiq#*7GY*Wx>(fBQlB`+g?kKGC3 zIHz7d!=MvQS$!HDz7Ms#tL>N$Av^^Rgs*3{-Ar3DR}M|xq#;?$jNmr%2tz(LL?8;- z8TW;{*WhXDXB?{=i{NEbeDcqxOUt*3!_oM{?Ph=2I_47$zr>kD-v1Y{XUejaH z7Yq(w;4%C(YIQ1}kZ+Wb$k?GS9e{~yu!;2qIsbt_jK-3Hn3E7~tX)hIyhvL%`>0!2 zBB=7B{aK&V3y=4zjc2FXASSe7g0n|{_lXuzQ_lHhRS6^%Gja$$pv(*_nN!S4u^-%H z_;#VYcuZs-GYtU|KNL2-Bm=Y)ar$f4ex76nd1*Gul<=Z(vu%#itno2(@ys!7y6^36 z3V=ON3=pl;Bo7plATu3zEY&b05Y+*DexWQa7_{0ijV(4q9Le%}gnq*k7p1&8bL9I~ zLJmXU6R_A@TY#vC(0mWx)31pn{e|lK>O+RjMZI+V3F~PhW)B>*j;a}$&KsNEvjj-Z z&y5HSgA6-*QFx>LB-$U;qt4~QV_T_4Wrl@?3>L4ULUT$Z-yg_MbYo2qP?Ub9iK~5? zJRzE1xE)S5`Dq#rN#~~s*f0CIR<+&U+AlHWq2`gI5VO{ho6{|bxgS83x2K!M(V!zb zwRDv{1`X)^dcDQBOX@V{X9_fL4*6s!$w+Ef;xEJXr8|}-J@=$yp*8}7dH{dA4p=b$ z@oszmTrvTi5Ut-PAZSp~1QaZ}oPqJy3X3vEh4Yu-a#v~*x3{tgb~?CwPB-L$sG#y5 z_8vX)t_Tb5GRjUQS#(<$nh7(x{1gc$3)sHgcfwwDGVeTrJdF0Ny!w~M-x@&`mIfVZ zz%SsreGXrG6)B>Xw5A2JfF~MW zj5$=S!#3!6#;LXi0W%cWZy{|w(-0Ap_>qKFO}jz_%-=owa^U;mWm7A_k}&9=A$P43Ju(-5Qq(?zv%!ILxs7~n&m=)Wp-5Ie*og-n#I-diZqC$*; z#Xz%Lg7(5hKR&YsbB>x^EC#A)^XyspKJB8#)luF?DHrsXK!JCq0?WZ=#6rnursySR zOYCews78SV$Psn8QPKc$1>JC$#tUn2sJ;O+n%!dy0{k}luPsZYG@-7l$nJmn!R6aS z3FBtJhc}m4G=h}-1Dke_j&GvxmQN|4j?ueaH1YXZXj*sDHUz|wKW!VN3R~SEo)N+J zK#d&HbP|F9XP^k@I9k2_K-~eyK98!?Y2bY_1_~gLN#Ok2`>v}bzSONoN?&-x&9Nx| zy4aAsOWIMO4(0pyx+wtK4}(^sY=s7OE*R2e-{nphS+}noW-69jRI%{QM8Z!3;v4kB zO}GVlfe7K>bIit+G%E_r98BUD@}t+*+hXebg;ek;&(N0 z+(=I~6L&36C~~UA(A~z-j@6ftUBLs*@5$0!>i@d6Ll8JfO^GJ6kyN8sGdG)?!!ey?V((T+_QSu)+Y^Nx~z*{2`{2p3{V zR7SU5_S(ONF$8`r!<#X;N~iNk@Q%-ORR`kJ%HVx;e^*Rbqdo;|Jv17TOg^T;sn-4rX!EGaBMuJ4aPQCSRmm}FwW_1Tttf2G8prGQ_3I0AtL$Nxvkm|hk6k`gj z2t}P$muY+_qs($gdF&AHA2OP`**+?=hDsI(oGy}s^-``spoW#Mt^EEt)th+lznZ!m z=%>^P_YIlMwl*1TT7kv>&{6q|_iYiOsqTwxmZSKzM#itbo+uN&rDYHBIWR9!X;bN+1NscA=IXNezs0`*AuXKlxFpXz&e zLjWc%$`{m?VV+PZQCDS%tgjQJ{g5;E;VojEvC}hsia@2Oa{R>Q8VGVAO z;E>{9;l(8v-IceMpK@-AfE@t;KLEfgB@pJE<0HfG3Bhy|Jzt@+0Pfi!BOt$!%+D}z zwEK#27r$Hp=?sVK8R+i?oJ2c%OQS^J)4irl`RxmRJ5z8f- z&xAt79pA|eQJ-fi!Z&I4;(JS>P=4{XAgO(phPp}PoHH~7 zu6s+#I43*I{h|adPs~Nf2v7Z&;t^C!Tr+kmHV}s+af05O0VAg8ZwJ%o88Q?RXah1i zp@y*{vhL<_2eJ_Jufc$;wjbZcMhmdbU9_oWv__}`x6OUbZG)@*Jfeb;eX^8#L>{5U z`emUZX;v>?^hFi8AMh|Mq$B6+CfV@zap;v`x6gw`n8?7CA5Xntm)8oEo<2p_ zks+)VBLbp5A3QgA3l{$?@Fmp+7qGP5D_;p&D81VzFsJNc{s=W-UH0%{Uu6fd7V+Dr z^gDD*W7Vd^+A~+h;iQM`AI?_70K<1f?Ix-f{hx5&h;m0 zW^4QOHnbJZO)l-=5!Cz(+BMCRl2bc#DiXN==olSBc7z;UieTUN5rE=;2tKgZZX;In z`v-|%)kt7Ga7k2!4ci@XBI)h~!+&^|3PUC;pc=~5@g4#+6KL=vba@lNPLZS)YJy?a zNH6**4bl6Q0S$F9O*YG^1R(_x;61O!`OyjkNb^G@UrPCVpT%y9%^`e3!s}V?(rx^P z7pX!=d<)HgLPlHjC@Q=8kH$c0kl&EQ<<%{5D+8sen~Gb@xJ8rRra=v-KNsoWR<;UL zFe2R6wJ=Ti`>%L!+~Z&jJl=<|F&o$>>5=?>()r#9Sv0E zd{Py^!h9zH_w6>XCmH0mW!Afk?VO7Lp$#ThhThamh6mCzK;&8&K3-@|4xLl}bXmmZ zhc^$?sJz>cda0E21`@6v@O6t<#KX-^h0DET_{cd>4Ft|dj;|kZR4AvV%Ri}SU0i}t z$f9O<0DS)Q4f5|5u1?kRGS(I&6kh*fQnnowwoOUTk`;*h|2?cKVYUb@$P|c8y^L&4K?FnZ$lXI#oH6L1!^U)`Z@aTwWglSn+Uh9fD07Vlr8#QwS&k z?t=D3oyh*2mYu?$Uv4zT6Tk?M43i?^p*B8}9k;cNgsPcesptuGQDFvs=xmytBkCq| z&9DUuNb|A6fm>M~?wqXN3iZAjP6Z_|L@Dsfo`)EcJ+KylB-hAS$bw&cCFG?hZujq`ga>*UrJAp3pKmlt;g|ul&nI35M=BiT zJ7yI5hU~g$MXY0?w$GeJo=pBT$Yk0hGf=z4w<5|IWBiZhF5S5=nga5w9&|3}E!EtD z!jmNoI09CBg+`vouq>vVqzEkq=$gI#s4oi_PdPSXr6G^{_czP(KZxLY98tUZBwy+( zf6!_p{Wj?Z=Wn!fk#?m9b6IX9gJdxC#!s_NzOAO?Fu^YZA_Dp&(#Hzy%3US8CTyK< zqU*mBIL!Q+2DN$BULD0(i5%o9dkiutW}5duBS$(z!7HymN%||60gX5?!H6y^DBveo z5Jtz=1VzG*?s%mwC3GmhaU9LlFIjE<4F*>xNONUOCGvAU+I$WhmZY@RJjVM2F%v_W zlZ@j!N{n%UiLSj5&!>ASnOq6wURV1X_SjomqbQ6cmje;Xg|%f>91@J87(1zwb|N zKJ6y?UN#Qu-#~&7JC(=il|i-)xTnG-t^(uF0^2=<-U34-IKx?Utw&ESuw?|qxl6J zLc}9u&tK5)0gM1u4>~jv@RlT9H``vNE*H77)LuY(Bf1LAh|FAf8U|zByej%61_%KG zvsdL!Z(2`2C1;S>kS^5T)&j}$xbB~Io7M^0PRBkt4Ppo=hQu>gyx z2X$EsR?Td*cp80&7_%hDQ7P`?`3Pkqrx{JMfTum_KwlMQAti`kBr9ANI8A1lZ#K3H zfE3%W!x4~|`qDU%YyJ56UKJxA!MdM0BtZDHoO|PR9#hPS9Y;4R)HM57ODAGQl;v!QD{HjF#=5so#7qy^w}86}2*(u+X& zmxn?M^}$Tx9KyD>ylak2NI>Xlhapi^wO*WyULmYq5-ItP-j#+8sIL1NwkH#8k9g?6 zKh2DJT{TEnLm2EFXbALbg{9`)dGtF_V!2>Y*WRx6ywgiZj2MiciCuPeLVE$hOxWO- zs-^MaoDvx|>wKZvnaF`VneWP-tufBY;&q*Qyg6^%U;>P;EoCH!M<1!qGSVjE^!RYoR@ zWIZRd*)BU>1^BPV{M^5ZuW`*M0?wOUR%~uUdC2(%5sC2;JzZ|EC=zD&vB1X4udJZu z?)+0-C=sB`yHhqIinw+5aYGnsr2yv?46}=kIfq}f;E<~2>vs|T=Yov2_5|ht!^%MT zt7LQa^$(s;t}Z{B8i-j`)WvCxa_9KPYym+>ckA1x3>H5o0)FCYnI9|jwDZ@mpnqF>_z!y{D?t%GNoTX(djAo?DE^Fx!s;$_A;^V2$>f`f2P(xe(#M_Ywq>thJf~Oed8XV|vY#+c8-?}NbYx1fy@#6-~6J;+$Yu=<=cw^_6dkVPE@6ArU#>x+3|)XkI+EusXj2DpYS_wBw^03a4G!YKLWh@3d@g(A zOAh~t7?493>x}>`t=o8j!W*@AnJSqP5fqrOk$*n*+H>Br@#X$IU$y9}RC`uoX7Ow2dr<4I_ppBC_d%&yeQiITnUcy5|RWE()8Rpj1L4 z%*25$a@+4{yQv}}D$x%AW6JPOYy{$|LxM10-=2FR%*`<03m*ISE1GOm++(ia^@hXFKVuO?#T6#}bJc_Exw1Wlo@ zn_Ig5QWz@yt;FaHvp3&#@?erxH`wb$j)-j^+>Kk1nT9ee|M85+r#wp%Vel3c311~E z&?w*(jkObx-eT0^8IfW0p);)>yxxwHg43KaUW3AuidhOYf8A>p%hy`}8#8xZ;t$M= z=_S|Q3HrVn4o3g)qwO@Mb)b8Cnf&Cso=30S8Lqt@aq9NmGra2GcmC<}eo)%1%UVEZ z5X>W-s&5a;m=FOi1sr?Vi#lI{F-Px4ki!D1gj((c0=N(4{cS_c&ofjL)-FAP!B2>I z=qj*ZCI$*N&>!!GQa(!Q>}OfxT17(Z!PSz9mKaz=1kO+GBxK^;f=M8w2ybcaonoK< zYl?NJ)6PKhtLxVY{2@2DR4V#^13zilF+8z4Pqu={@+n6-RTfWmwv#a#{}!7StUC*Y z6N*mdhCg_tsn`W9>U}NJ%5BHfhapSpG5=MBrWx%9{H*5b%x|-38e?PNt^M@8oCU}S z+7-}5Gf6jxFmUW9j?KbaI6zb0IYQaGY8zXAO2M8;W2F{{Hn|$smIV2Y8El42aXvwA z^fVQ1K|>5xsoD^QFmM0zJYB+*_By$Pf@uK;rYj{3^$`FX-rF0&R&U}iNa%BgNRtbOO|DRf74Rp_MJy{Pfz#YjA9USNTSC7I|v)J zL8BmOPW@nS#!Xnncd?H}W{{?8qo!p;LLD$thsQi_;}Ci1EXo%>wBAK2Ts{7uSgb<( z4{8dv|Eye2F4Q`@t&{zwKt#qyL4C8_U(0Xbm;)PgSDLU-LjY#(L2>9(Ajc)5pUQTz zgPa8**UdqXSN#%_2iiXzQ*DGVqMUD3lR*l!<#UmTp-%>b)1yYs2i@ym`uyG(X<(V1 zvUKj0A;{yNZ&?7%r#wF$H-ged*)#};GjT-E&a>UR5M>G<-6yp=@3r}s1l`fQgBMm- z1{V3Y?0Zi-E#2k%i*rvD#b5+TTEbr(avN3#6x1>8tUZ*&45@4@v-rZ_6+)a7!lgm%*sh*#6`#^qKUP*d0+}G69F0J z8+zctj`t^TKjC#+g?W~t!+iz$H~qbVoJ>168?0G9ce?o*^4LJ!DFv~!+7LbY@UU#b zUZUIBvd5KYPb&?y0$cYjgbE5f87WGnb9eg^teB0yZ$hrY-(E@Kz8GOUA;|y6@&3`E z$PLhyak*HxWp7kUx3NVUvj>%v#Ghv&Rqp&cZE7R3J4itpQZPhC#N*h$C4A}zB@1c6 zUjQP(qW{YMN##iUYW^;LfkQ3S}{)&@0JFFA1pr>ajtE1DyDj6V8QjbL25Z4p6ovZGw6zt6d z4kW-1%*jli+_S`o$`MN1#QS#*$L$N_v;;U4#0OAkf-%BuHZ^JQz{p5dVD&0r%*;>m z4c-FX3Wa2+anhLHS6u-jT~PCU;1ohMZd&VFx*;NiwLR31uUN^c21AF|I;n42S|^^x zq2uq*Lkl5`QKqfQ2Es-VOXpLKjZ}&RU)+rES=jNJ{X*>?WFHl#u*~`8dz9qs+bNnO zLAQ}9lqI>2zyBJtA|pDLmGS^00ca7Xd<2}Me)EENye8Q`}Sam|J* z-VdhPSSYc;)XJiYAz?XcNkeCK!6eE& zYLw@G;PPobR{^1_Guh6HL;^#FMW;}*5s7=EFT%}Jz)i z&MyD#rK^(GSPLz>VSah2d#NavO{({tM(9>`JrP>_t#Wk@3FaQKdhV4DPDsv zwDiOOXdpLks_VNf!1`m_b1abF=U!L7sRaCG+Bc3S`Kbn0!juPA*PAXoC{Qb)q2w$# zvzdOykFp#oX*t_U-NOz@5yjkJ(j>MFic@bp%vf0(u?LgRS}ULUx|{wCi7?n` zvsLx!uX|~}LGM3=PL}(xFMqBdXb{F;I(VSP)e8#KR^lIOKJc%xy|r#-&fX(_v_)Ye zi0ewB_8o@doN3yaNYojDBzvv4>B5rJzQ?EjI+l~gL%%?fDfcKX-qDFU{DxVmShO** zK=&3=TXDnsKU!^NI+tD@)a7<;h&4&xb7NWK3ZJpAb)0FIg&vd;) z;*!L};eggg&ePQaXX*r9=NEi460U}pBtdsY$RCc`BXG>!J6S5+2kpA3_ehXUhCA%c zNQ1UcD_mM z^5YLf?>z%(_ZnO!oRHDTCb-FN(huli>P|2S#*IEW`hkX!e7HHLZlsz|zO%C>8hB7XsG>>_Y~3S9 zrv<}Y`bt0{C*#(Qdqq% zZ+hvS8_?u^*wIv9N`UBISWuO+a05(?iN50D6H$gwudxza>sHVKM|Y_jdfLVDG0wcX zPSL?>=YaEZJ_{ge`L^Y$_0eH`DWm~sWYMRn)*+4#2}k?9zv(3D&^FtFb&M2N%&yyl zc^;iz3G`5DS5Rd;6XWqXcr_Z-alwa{41s#kzC6Y-l5ym{E6f4*w2y#Gr!3P2^;GKJ zg`8jDDR}MU`SY{)lL{X?t~xWPuw{2zwk49l)Pp~oA+5O5 z8j|A=$I2eCcwx$aLT3dpyevvhDyOq71-M;v`fhhV{*>S3Y@8HZ@K zOqqvoisr%pLjBkGo19EvE9rZ8uXt^XXP5K-Kl+WxDWb@+2FWu-Ql*CP8YIX!ldu`9 z+u&@)^!~as&iSGyYdb#9o-2}X_if*-jhN1uqPAq2l3qwTr^ANoLUXbey5igI%xi}N z*J#T~o!7PuwQ>+fK80@9HjB#t1{b7*h9-die@J5?aI8EH`~+4(CvGJElut=nE`omU z*%Z1s20*15;W(8MqY~47Ui7czA;m1qh8$0c96W~+I{cOA6|;q>8QZvT#7g!h(+-{k z;+bI7#=Jr8m`-9|NwPMBynbnsKw}o3*M=ADB1hk={-WZ(ZXth~#5RDR#+mlsBnSx< zyuauJR(f$9Jgze&AWG|&wP9LdZ?Y&rw;$E857r;v)Y|}ZB_od*GJ3QN_Yg`x!Sq&H z3qipI74eSz-G8Vzqn_vM%d!-Osgg{3lMc|0q?m>3!r2!iIG*8D09O5#L$j@mauZ-} zT_G?jea#>VC6Vrtlc4ST;*X{R%*wla7jBB%fTj6~Mr7o4#qdU3FCETd7SO85kDzsr zo>gCimI@nMBtDOrwn=tAk!yuThi9fC;lhWES9w1V-ab^mfQ)?D zN6-&;U8~wApc0t^=2H@Lq1ZI#1ffCKqj5vIGXc7 zng3s@Q=u6alr?^2^p~<%AqEiva?1-&_7tczm&8AuLJJ>G<@Y!elWT)wt`WWxSU859 zg(=B5ZmPh0D_zo=Oc34bPP08|e$bAi7;ZGqu!l91bEoSd^iaWc#1-t1?>` zCYR2$_#Rj<9*x9b^R@UfllXXeW3Ggm3};$^2WN!Edexb(ZYc!m-Ar#y{vseW=to`2 z$pKfR8ntcAYxUfSAHV^>o-JYrqD*%fO0Ij+uxaVv)2~s8qwARsb2QzF<4*CIEwQ#4 ze$9ecRC}34$&iVd7-D_!81TN`LOQV1Ar+m2mB7y0JqS+tMxnhb6e0sBBz(JM7ftUe zX7YzX!0aTb{v2wj0BmTgH)=eTAuS_v#YoNPN+D-Za|d)I>0qr+<~KI*A1hr6`@2;G z6T9lY&4*9bX12;A8%r(of*L>w2 zbC`1Ykg^g2I$%e`$>wW$HG<3e^ZOfCt15$ERQP@jSU*w+_0T(lg#VdVwRO zYZx1AWl3DbgA;MNMY5vj)QV}1w#SA^mQeeb|-)S9PbvLw$`1*#xZZ-Y;UJ7-&cEG$acl47%#z(b--#E2Tf_f^QoBC6&lNk&Q?NPnI?VI3yil zx&_*EktSc_Rm5QodJRgJB~&)6dGazNg-gHO!ib)-cMeEiAp-Yw`@JhK;I2*!S#BH^ z)$^<^5m9J|W%?2|I@i~L9ZF)~i($m4n=1ANeD!)98kVpg;>hliQZq(28bVb($d;_E z6W|_R(2pE_>YyQy7sHafyiT2zq6@c+PSAwG=HU7!kg8X6vD!8>vVBnwPkK(1e5Rsy1pQFT2Wm!wZ0QH`Y z!G~Zx4J3iA4sE)j6H*6;<6fzAbi?kEM}NFQ0(M**sNOVpnY4GB1Eodl` zpxJ5oqV@u&kFC+J;Y*{xy#9(($=$>;Ut!5QUSZM%uxkAH5jG~F4*L#u)-tq@F+}|p zuv{Wgo#Y?oUe+uKTUdq4)wYWxRAp&(2-)(SQ+SVbbrL}7(6;>NEnCErBnfD(lbi2- zKItlH5Kdf>S@Qo1o!=!Bi2so=@rTX#yz|<(A)Wn{jtUpZgRC424CjH_eQXBD3gz70cXM|YqNyy-qZ$=p`Vy&A}r zIX`y=kn$D{kkzTPg$(wMOgph2fXUm;(g3*M_1XPUe&h6W!?6#?ObkkG7!j)Gf8Z~E zt{N(Pr|3t7zD|_zUh_5jf{mH#?rUdAOstud>AuCR73N#qyDa|q_9h-ZZU-waB2{f+y z;O4;*!rc<(*34~?(>ThmlMKmpTSY$(P5xv9i%`9)BZS4@F{ZV+LuNJD350M72L)x_ z(yNl1gD0L8q_6A^xtUKV{KpebB=oSsvW8QbqT$KN`@=ZPG02s62V}s_st7DlRz=Jy zJGz+)fVKbzc^5L~EdS_farK}IFiE=-(I^*2@+VVImu(pWZR9~4!%fUa#jApo-R$d^ zPN1yp(xrH5Ze(xQ1i+b9R_#0X8HwwtNz)9^-|?&iRC|vySN@r*?D*KU{2|vICwka< zBZKAK8!pqCYi}LG^A%%hPC~=Gp`x0IeUp0>`Qz#%YvJ1ck5l5~B!~h*7qj(5juO4y z93sU4>!W1T)#)%_`sMyvS;pv=D+NMPrl& zZiPqw*{z2^g<2?T+Mjwyj%Lox^tY~dmdPu&D8;2ZzWxS<7t{ogXZz=OKL9-x%Hhzg zEnZI!xY*ZEAlvjN-v-jM2W^jxmB1G|Q7(Rqm&9MyGgQDhrnxqol<-b0X@mtR?35Q+ z{8K=x+2bD!0xb&?nB=A>tMn5aaNT3)iof-?Hf1o(9e-PN@>dU2bgp6E@+^;p+^@q9@eu4y^whgZrHrL@?uA_TgGtj zl$VuAP2aQl_@|Z{p06NYmB}#u93Y|zko;WJ46eR>27K9kQ?*y~O~L{)m#I5CStBr+ z0k6YLa$`j}#d?Qg-n?E|qPHyLi50-Y7dihDtSyO^K%8Y(*YP?5-OL|T{sgVuiQkdK zkIt_OP}KAH*T;@oVPIRXJO_(v_|YhV{}V5%6b(es%eZYlc`AT2(oo56MuGHCeZz5t ztgf9mX|!@DL|8z*fG_OHEQ1giWw$J(eR9qVo=or0giq){LL(& z4%BX=DyB;hq5A|f6eSP!z1-WgmZ${bsV~-;?fy1 z$Fjd;d8MUc0w6pv%)h@}M0TUe$l>*`&4L{!T@J|dql?4oYPe9f2|efroULYiZa`AK z5#7!j`|OIBUAJErs<&0#KyXz5>*+v}1&suj;}j>j;SBE^!(z5|a^(z^eqh?l!h$3n ze+~$+%55c}GZEeL5{o8M?~&*yBNO#4ux@mXZ+ldh4^=aHj40;J+6>FfPZhawCFiL& zvd&gam^Tz>(%4m0-my&{W9+jcQu*&Efp{+R<1fSFQ*G@9oTsx`jfK-X2o!ihTuZk} zS4oz5?Nw=h;eKvWLX|h7}mH zLD-8zlJsi$Tpg8x)NY@BxygRQ%g(c6gZ*yNGaslRoHgdgp8k8)1@pse^9ZWh39Bpf z0BwOArF!rQ{TAz1PW8f3{LJtBUNc$HJaiLp3xfgR-M)>^xEi+V^2T zn%EKRBy(Xzim46{cHeK| zelA?eLxZNng+)?_$?xz@@yl68X?|Mcw^Vdk(%pWyeCetc2NO^|8e zSNAWm<@Iw3>{8$E$MsU{FY+jusU9X49H1e9e=QnHccCGl0HkA2p*@kl&CNUmzMI}j zS(2gy?7s;BY^{mT^Pa^O?LoaMWqs~5xzSPWdF*ul0P8{2TP%>o(~R+(g9YS=wnmS4 z&gjw2wIVt^`s|U^G}+tnG&}m9$|!nx6^64t>$2=+aRIkC zR?aqdH0Xy|ykgYO)?dfS{EV&w%7dqmUl8=Z@_r@nv4xrNK(9K9GjRtRXL|hFDh_{_ z(j#I64ge@-nn2|CaBn*W&M*0R;co`;nu9rYQM;;7Hv4gzp%u*4Ac2pC_+#au%fF2L z6Frs}kYTag*aWpc>Eb(Y_-wfvq4+Sb&9J~)A_Y$1RoAj2wM%?UbL1jB3ttO7Mj{hV zT5jf&UQ)+CdiL$DE=30KtYd0{ad<~Ip<$K@?i;LI&;;GXM3LD0G9%0jThLVE(e*`| zGB#hd?z8P#xk18F9!_L)Thd`Mc(G$}e^-JwyEG3AZd)Q`8B9$T2i7vT%6)n|yv4m^ zV7D4)7o%yFoM})#qZ;`&d9}PlZj$h|X1-w9Ybz_$#H*R;-4n3Mt8{J&#k1=A5h(N2 z?Nj!SdwO&?NP~zLbL!_Ov$BW?xp`3eA8(Ks7>6-l0EIP)N zT*G}2F=1wGRpWV2tVN<7WO+f=9Nc#^+duXVv4l&|Zm7~+r zj&GW>gT?H{c8LbK{=0qJj%>owSu8Qvf9P;8r711XP@ok)>!ivncFUd+lU(LF%cW!L zMkn(H8Kii<1DKK_fAEDmNi<+dEXR(Z(@CS=3A_N{*`{4GiW!mdsTi;0R^)^bz0)e( zhfu*)FBd6-X_ByCx;sOgJwosM@U!@}r__&%8AT`>C-O2lzU{2I;y9?NF>BkJ9G<~L-%wP~g#IhGQpeeA=K={x8?nPv~+2_oe`mE00$_~e9Q#*LE zzvZe>(*IeB`Zn$vBY)-0z!;KXtOG?2ZB=%rzbE8|z+5;OwYgi9E6Om8}cc-qQ2;(Ca6lYb!!g;K53x~p zs&60=es5TD)UvyE*n)dkj$`y&C1a z>NIJC%}tC(R`l!FGa$Gz8QLAqs;MuXVd!R#L1d;$ndFW_-Ir??F5YsqiE;2)a0sZD zRZ!X*iW?)0CO9Ign|t1-yw7-+sk*dE4UReHbMJ>EIZ$@m&EB9CRw_3O?)JmmUNw7_ z0->d%a1nm%8be9}1t$8E&IB^P6j6rkSdUF&Q?UA|n(#0wr}b0m^nJI2^$&OYCC&@# zH(JO*VNNAmJBjSBTsLIl#%))81wLg{dKul?tz;LWtkcU`_Em=D*iJBvDC4)k1AoYt zlmx4YSH&hdi)x&eenG}YJ*{hTotTFQnr0&m@?=Weyb}Q%iy7WB-c3nWw3D+r8GTDm z6Jq$;h^pp|N&VB4+uAB2SVv%zqgX5C5&5j8Zr8dbgGEJEt^I7|+_b{t(}pr^r}gKJ z$%QR6L)mQJh0=%b;Iiu;{l)tCG}cu8yyoe!b?P0UF5Gd4JNl?N=XJHpzVD(!v&M0yzowFeT_qRWGsZ*L&Dd| zQl~En^6`B%&RQ!00T5VM*un7&{{y@R0|I;KYy7-6{kxuK$78DG#)$m(r<;G;XP~?& zP6q`dKX$QhE{kEgNmQRL4=BB z`%t~lz0dU@4|xAaj6B{Uvyv7&#bpfkQi%x1B%_iJiVzLH8MC=-OMoe2^HWNCU{%Sd0tvIxfQ>T91+#GvrDk?f8yZREQ|D~Fsh5+I3o-+)-sTu<&dF=!msq|a zDlF!kTVoc|`-DyL8Hj!(rS1V0C&m00UXEjD&pf#NCRFJ)nLzspY(TnodrvXX*7k}$ z8Crn}fniF!#3Gy&9RZ+hs(_ipuz(6}v1=-XvPMFJO!DmJz?QZ~rZ3U)^$OPAJku<# zMLn8J1bzbq`zg1jV>2VYdk0hrOsB@VO#~$TTtS*|PlrFT@ez4Z0sn#T6Y)|2cRv_{ zU#d(0&k;7lqPWtD5N=vh*p@pFB&RMDQVC(2HTKZ)bArg0C|gYmXpFi&)AFlI3pGL>r~uUzmQp(KR1F9ya>=-^URvnZRhRq)d4$nxr{T=C!F* zHA>TM%$3^lYo)e*8haQt3j9Nn8?Z}%#VI!cz1u;0rIz<@HIGTY3jM#M_q#v!n?$)f z-hm8>{XT9Hdmy<`2ZEyIuONEh;;U2_>xdQeDFsD z2Or2qQ6r(NFfKvAz;WSx6hsX`qvyyoEtQx&n_7qWTUpF(ldlOt04Wrv-iwXHcw~`@ zR}4MM?JaXq){|itHEkWKD4ue5_lD4zRm_R*2%DR-piHd%_9Ivr|IIpIbnCw!lMc;% zI0is{w*53$hRw5-qYd=Dy%>lRXbk;?4AvKVwm_6j!3b7rmfWQ9rVs&|?r#y-%2C0C zeFmQM({(>!My~2eMCib|x{a3DGjM}9lf_>K#(rXO^wZrs6QYcZ$xDN@6l&Y)CnJOK zh1;Y5Wb^XH)}!FucYfK#<*Mg^JGvP6M@( z(@GT{4rR+DT;mV9lQco)GQ-9jPNc3HNW-A0MvxrIZ_&>T{TnSSY< zjPH@`D*@=%G(Gdxp>K}p@zFpR(IzoISC+rbzY&Z24~y*NZsr-37n0-HyZ4I_y^9U; zBOuwrAjbhBuZI0@3|z(Sm$4H!V@t@9(u6mK^G6oxWSK@^Zaq`pqUD;zAI=Cfdcx=9 z3^OA)n|Y3)JORrFND<`0Atr5fE05s#;KAu|1Wtn|o!B#5b&~@A2A1U$rS?ZCg?hHH z?jM66nm?d*fdBb;0$^*X$z0)6RemtF{BS%;o??M?s00|rppb!N{EZUC>*FXk5(xj? z=f>W%vAeP&Gum;LLpe6{T} zxCDP7hPq*#D1o}I&JCd7a(p(TMh9<(4iji%_$_my_P-+)vIQB5+6tp8Qx2rFA$~y5 z%wl;`F@c&Rg0|NTl`jr4iduAT8zI`RiPjkq_BZ%CLUVwwCso_~nkvv7M7DRww)5Qu z`8jwYg1HwJfn9l#x6V#?4ZU}|b)$Ye5m{VBn3LwptKxu~&KbxSqSeJ&w#SrU<{!be zss2NG0VB(_Is8w5QOYB>yvEZvjV4F%O~7^P<5A-@XADn%VNDp8axPRSBTzO-XQkfX ztdsH#j}Tpgmh3&3BAn{DOn!OuBU;=pmuX6F8*@NJ3kZSBsJ`vAZM3&IAvTRtfM|u? z9HU-mdIF+w8Zrp6&lk(ZMlD`fRYduy_mx{1oKD=?x|L(_@`Ndltq_#wSvvTyYtD#I z+#PoX&zS!;a#wj%#r-i;5|LOv1U~XDXD7(BwKti-w4#S=bq}hZD4niEnQQJn9DBw; zd`6p3ulvy7g~McjMTc#miW^O@9LB@P$O_)U-+ICN!jr9K6aJ-)1vWJtBGq4DBeEXF zYpy!d_GBu1lhxst6~z9^Apqha2vn}$?2J_TtL{{3TQrtJ@XKPkI`j!of~5{$fE`P{ zB~Fk^60$^5!Z`6)F&0dAU2OV3l8(!31AAQ>~)0 zr`Xu&;h`_4NAioGvjxod0cL%sP=S%l8-C0BFP^{P|9TYeRwr&ppl8eqrZu6A%K10= z=3EWv+h1L&X3Bm392YoTpDDPU=}NMFY+n;(Kyqvdjoz5h2S?;l@!?xU;EQu%0Q#XH z53oAs;~>5TU@r1k!Z#kw-^THKh7+`=_Vdz84FYnnJCz=Q#2(Z}II8+ZpbE8#G{mM& zs$4CIRnPvI`V#f1N(WPHwh}VAc^A-CeU(n{e;h6G+nVKCOYITgK+-VKZ`zDj=bEG#gjs2N=WFi7@7hv#pb@(VUiEfP|`Jl*-%cAlN;#g;z6$PR|Ul zfYR=e6#sq_v}ftwf~QB{M;Ooc5tFk?j5+0r)zryy(r-{=Ns_1c)J|9P2r#0i^>j{+ znrUqF%$onCw{yM7CgB0B#2}qjXWBc_>5h3m=;)b{q{_@Ppu-!iEjkcP(B3efZOV6R z0HC~-$TKGnmSwQ#CSoiDv+=36BsSXUL8X!LqLFs8d&E_T9*gfCBezc(-cuP-GJp(?h4oOP* zaR+1&|A{VA2~@a|5XOGGNhu`mZ($LF(_7}+7{C`Jn!2HPKN5rY0Qso@ zfoNt=-!2&d3NmQIj>f%z!;FfALLtPAoPg(quN104TRC|qjLyJHjo6IXqN#{27YULx zO0e9@BeL3fUFumCOBxt|!T+i&cEy%&ff++pKQyPOutQlDn0>G(-^FzU=}`GNBXKz7 zhh)Lb87IS}m`@4|M*dEyW|aDCypJ+LNCk|h3*sjy0%@(&n=Oh2C;t-0M@$IGM4=OE zrms)TR)`UXP<9HurwkLtwz+Wte+aiml$og$+FUcQ{UaFqfa~!~@WvSclxjaA`SPbW zAaiVf|9#flVo=)-%1P_QvaL_a$4%VqwTzGDi_WyUk-PN zLK(I0R@}|?Y~}DaBn7O9hZ?iI-5*t!h|c!YFllD^yazl4!%!$IM0?ue+E>*-qAbR< zP0>0Rp)#ASZ;oxrzNQ4GpR?#0lqHO7&B)JexQmbvj6@yhU*htxOLH;!zqX4jK*&lN zYji#fVm!J?Rl$r*N7ptg3)eOF;5D{fe0CYV4d|_}F|1IH0n(9i*Eb~V_oVpfR+m-7 z0cd#*Vxq5XnVrgwrU@QLECBB6DVvJTGG_qX_IBbT$#&UT;Gy=$WS2=|WgWPR=r$wr z_Bp74#_bWJEpA>id*OB}rytyb*p*@>S$FpD$CLpZwU|L^7bMisVWnRU0^JfEcIUTJ zDLyFexiAOD`1LHN4xc?GY)?XRX{9chj}LoQBxY|UyBw24CeLcC@W0UY?pYreUW&~PC^;D!-K=QGhvxs!uO&ks7PLo@5JaA7^ z$KV)4XK{6T)u2>JhzgC;^>Y>73p!hKsr_Y2T&6wqymDIkCCbZqtao7T*F zf?;=0io{^PfQL5j39!5f9)Lt`80||phYl|s9u|xJ?qY;wPv~?gf;g%^U=E^L4@~F+ zBHH@c=>=1Ad#J;ua!%k;)cZK3I|a?MXoVaWY_^vk9M{Mae1EUPF-Wu3zcVBiUo~5q z#}gp=28!}HeA+*IEI(-iMX z6H@YYmHUWabQ4PohY#}3%+|<{iPxSCU_^@==vW^wi&Bfou#Ui$Nrpi^PdR(0@WehC z!9c%eaG#Q6Ly|7j`kJcEzgL*I`j3KBRHQqKU)sm(&*9w_7@~xSH{m%XvPgXYWeo>u zG4mR^C{M$($AsrcC{TMZxf4UygK1ApIT$VqdEZpKLEfzi=Y!!0*e&OGO)dR9w?SynMC6< z4*OXfF>vpCEzyj?Q;&GU4puQ_P#G!-K6X4s*5+M%A^nO7t9tz^g9Olh9q_(k@f)3rUZj|Gi~XZMHy0a3%|~LmHA7 zVfDHWq~R@$h&7>(9ac9YNtbMhE0O0N6bowptREr)(i||lqHY*by>>+@7vSfxxsx_2f9oNEyONlS5X+`%b-;ES-CHGBWAM zcJ=Qs7;n&-&+jFJzCu^LG7EGVb!;k@JTi3DJyJ?Rr)oIf+sqXSH#OuSQLs7?Y*rK* z+r~CR>TGcOu#DxPJ{f`B$=BXNPf+SURL}@@#P(U`9jIU;!s6P$Rez)DVO>BP5d0QT zPr|=l$eGxs@e$Om7{R)UPJ@qk`)Sk=VSk^??|Lcl?(%Kb)&4W`@DDz#t$uGF`*2% z0l0)sB>dgxn443DRbN-d(hR#1{x@?J8S|XwXWB|MN$}}%;*A(5*NmpGBid}~&;TmE_?TEPH>Vi(zfJSTE9G9NNyF+jodE1!TT^%5(`M$j~Y=K=D)}i z+^pKG=2cjx72OjY>?5)Kj`RS|FG_-;N)zJE|MIVMl>RfwRjFpf@Xs3j6c-0}$%ba< z42m#^^r4>s>nEh|;q=D$tf#!v9eOabG7+I0)c3hdLS$D;k`vcl6hcW{uc4$DiSX-1 zJ!^(lG7vHTGx)YJH}uL>Q%<)V5fA9lm_1ubv1(q-64G*WB)IxQx?M_!5MeHT-BbJj zCN|6{(-`x!^c)QHxXxsE^?Br~3o< zaOBXI+(`?giL4jJsA8oZc4@Ib*h$)Bit_%vTZZ8Jw6$P`L_TvC(mJghVGNL`MTvw$ zCO_CBio@AFdTnoRH@8B#B%m)!2z1FOhVw&Qi^F53oQfvoEPS2r79#{U214gAq2i+1 zU}MBha)t~{!5s*%Z zbfl4#0B4&zs2}JA#S65hRTfmPEhma)5u)c8*=H-loMqrJnonIwn1)9%xSC z(T0hMT0_yGDLdPMBa(4pl@EDv49r0gMg85dW%H^#QwOB5R24*Iket7y;3RHodr*HE zOenZCaO$EshMFo^NH|u|E*ae#h+Uo&Yb@xcbdeqASB&R7ifnypN2}W*Ojt98TNqoi zzlS+kT8b0Tew4m^HJyUUAug_eAf6E#GW9*gh%{6c(SG0oxO$klGXt<{Z zgmVW-`u}9KfEn`ilIL`gKmD%{hT&yO?u0$(y&;GQIWl^ggTGGlCp^%$HWBbp8e>wXNk5sa3jd?T8cj{S0eO2%92M#WH zAf>Xu#Pq4&(y%jD;$O6p-@bZ|?>ncqsx!$8sAbQi?`r@)B7LTvwt zF92QX7rJq%tNamEA-tkW(KTb6ld`=TOE0I?F?4GG(KC)oxP8U$E6t|0b+;$E_soGf ziiz{1TyC(~Q%f6?TnSsPxTe9;>VBo9F3 zxk&=VZnGxSM+$mg6Tp_cRkEP|U7>VgIZ+Q#jn_~&at7MrVw_Z&dB@y>X-a=q03%tdZ{QQqQlYkdk~~jE5>6- z^nz@51r*gWbYCho`rDq6e=!EKdeIQ*w(i6h|YlS!LMKl!Sk zNhyV3p@QIjcZ(8iOJDM~HeY5gbEE@g-PjU_fSsXCB!!T=03}&X6k@4N1k?mY8Ix!x zDO7!&dK%y>YcFc48*P?N*3~)p+gOK^Ns{~X;woTVm^@!yeR;spm#owbLoZH8xvxsc zu7*X&mFIO-2V58X2Tb8`MkfT^2LuzHU;+nRh992ieW{)!dT6ll_{_D#xm7lSw@Lwrp36^Reo4DrIn&P&c&y%2PG>o#9rk` z)ct=MfZd`fX!n!&DbW9wpz-t4pMc)~aPuc**&YCAA=i={!EV3fK|44)wW#ooRIy2X zLznuI^+jWe?4|2W2Ghn!+&CZ$cR-z^Bt^U${`QlVEECdNucm#Wl~#C%xm>Q!#^2$M zQ3)#}rpUs862-hbEc~FpttD{O`n5IJ5BVlb9Wyq^`T)|;{c;mS*>LVBmHuQx`yMlF zU(O|(2q#CWLt;Na`QF~!n4)LIU3hxu+H|8yNCILGph8u{4!Au!?iNfv;h`%uSM^em z!6)g^!MZ@%>B=umiNHw=SW$U>p2G|^)4#7;<;C-4@zQ|}y6j~p^j ze9!ydhV13Z0jTt*ON%&qFYi{Y&93!dY4J}F6(pZ{rA)fms)_X^!+UMIbL*jHQjwK$ z8g_^u&A~EH=*3{vR<5n=`Rrh^P;aZLnG9!M9>*(7gOzw|I>O&rL;;!9>)rfmmXTOR zsN0(_1E}tg)~e8A7=+4m=w%2K`}IX{**y0tuMPPE8_Qgu;eHs!AZGA!!4*4^h8+uD z=%FuYUx7IH$OQi;ajLU}9>2SZGIPvw(05(ZFA}JwCru|xtW*AjQ^||^g=6V*DJeZ!L zbBK2m*I;ViS%)wfy=uJk#lO~WRc2eMTZxbe(_Gd|cN@2&-2_GXD5F?_G}io!vr&Qe zd^&Be4Suy%=c+vWMd^5(;M_WX5!NLnC4K8jdb>`xt_Nhv1_mNJTo74i z+e#4|47_V$F;#4PMYR)iOxYgYvnx4Zawi@?ZEehv2wC7-(Zj}pr6ljq6KhPlnnvzY zVTA&NsvDb8l%|Y2->v*sxmXK&Jnjv5d9JJ0WDe=Swdk%f<;D6W;vO-U;H<4|`qUqG zul5H-T;TvydN76v=byyC83&F%yVgS-sc*f{52GHmg9)x(`Lu#p?kceD$nCv>9^RCJ z&IW886e0{K9Reh=M0N|qz}@6e(0(3(!{#7@x60c_~-}Kq9C+m!g@#~LdQS$AI*WoUd(6rk0j0=2O;DgE@%(B-J zgWV;w{#{P~ma2Pe?-;O>*$L5#-miATVfAvwHo{(3*ryBxV+6zvF|lk%b}vASQRSuj z<%xGnGD?e;-`O-HL^nys*6n)t%BKmTrL}ZC91CZ5lt`~nsAj*-pQnR4^8@+9sI@)N9EXXKRixq(Rt|X!CT*SXJL}&EVotlh*Iy(f zX-gB1F8~Cr7rN~JWUA4UcM>Sgl3}93Zw9Oy7$Z*G72i8L3^Xl|JN->f$su z$XT)5wqNuxam{9Xg!H4A@H?UR9aFJiDKQ%Y#Px9^3hphg+2yr28c_k~QPB%{3K9!^ z!tq!fwx2~UM!S!qBbJ(H=%JT8Rc2q#4qg>xzt^s4{&osH{M`Y?WU0DBMSi_8io1g2 z;J=$y{Lv`UZU{I~@#8#Blt=(Lf%6i3700P1nfV7X&N@nQ0$|>kuux_M!GrP$K3Z?IYoS8#si=}DI*ay87R4v zqly2J|5q8^e9wLs@>i#kB@P2AHk{mAK0ViH(QAGQdd&F|ILFlsI)S2GQ7&(OMzkMz zB(LW@^UG$vX8cr*3n++xd+-20g)$#mA#K=Yi1Li;8ILNVN*s4 z&4|wZT7`By=oG?XeA+dN_`wgx;1vOWh5!Qh~Qsi zK8?V0vV?B*jOClB!phJl;5P}x=?-eXM2v~*KHYP(IJ}4rW^^8P#e$*~LY8rm~bqX4tquZ$Do^8X@DuA5FvVQk7b||Vi&l>X6>`8Jl zGpa|uhXCWq3cG6tZ$M*NTs?vc1l@}%bT*5Bk0VP}C=&$^eUN6|&Ubw8bh}Xoz-^oC zvayQp8EIDdd+@tQ5kSbhUIBr)6V0P@;5MQVn9v}&me=$F!zYhICed@%67#TC0M7j_axWs=)-9uOz4#27_`)I|(fmU;742HVyNhi> zMZfc-#cml0JU3b|Vb>1K^URtWHu!9s6#qSa1V!LKQJxU(ArqC8eN-yJo#YU8?7O3hZ&g=hcU;!&&FiGst zvB9MHsO_yg2A0+(npD%bD`jk1Aj%Y^Fzij?g`eVNuJ#&J zMv(_COC&tduc@5F;X<6)Q-EEo(QGnCrH)iVOei&T{8o(O^kQ?44!;O2o65Z~3_eT` zqp-Ztk1~@&Ga#x?Tn6<$U_a8zL6B5-%BMY_jDvF^p-5~^Q!{{WZOThL^aMKNX&Cov zBdev)uL!E3?ehFYUL5YXt$I-ktx%GUnq8{rMmnl~tvc}ZP-kji;xLk(_-*}u$JU=$ z`sqA!1%b1zZqoOWHW7{s;Gw)aiU$pr%pao>hMIOTPHw?KMnj~GMsBxyhUoF+T&Mq# zpU~`&u5&~)?+t(6aH{?c^`M#*GuL$j42=76*FS-;gd#lmP84;i@BxfeFd{(CF~dT$ zSvdTt_Mi61Vi3ZAp%?$dQn^b^xjAyV=T2`3&eEt$3Tf}Nmu&F*h}6m>d8R5 zP@x1f@ZjO{=+Bv)HzRGOIB&(_fS^0LBI?t0=ztfKZ1X%xhm?kcCIZ@)byUdKZ|A!89TomQF&E(7!LQe*2ak4V3}ko!rMsv8bS_-DA;{njn5Js0qQ5TxDQYO?$Z zkIbr?O5HLVkWp%MIhvU65Wt3mQP6&7Xsx;DTZc{TG-1qTR-mbU_zRhg5XPHj{OjQg zeV8`#`a6%oF_$@z=uwdr=_mzfQWXOhc`A@UtWG}IUWtRl`A zHPz@$5RX1JlH%D@z!LwWFBzRZ8*&vdAW;xlM);5{5W*(6A zfI4zz!~okVND5{tRa&m5qVCw=-cu$f45zzJ;G;h{%&^rd2N00Z^xBIXB1s>7 zdD}^x4hVb{xUP1nxT)3MHin@X<+y$ho+MSF&gq#-2=pVOL-Cu!7U(YQako1#K}?BQ zpro7i@qAzZILAZsasI9lzRRr?SG44ntbF#Q1DZgSmCtN0nt3+}2G3i~`qq=K^2#;O zxx6oz$38u6<7OjGTYm_uHzytA?*F;UukkP4a6TU21cS0^`IE%Y%&qnwh-Hx3t#}HX zS$w9t*UL~K96Y1Dr_gD{pNH;K!Tl*2a$&S^Et&ujY)g;^c5gvd=SdGSdf~r;zm{)P z1@P8fS?uXwjZ;fD#>CBG*FI3y#=muCVv2H3N*Hk5ag((FNyZ=e96dA&HiJg&CJB9U zQ-pWdX!zg{XJ<;{z03rs>J)Rtb*SStexu4qe@4`UwE**vfeBqNm;=>uE9@QI^|DLJ z-W>14)u|6HUi*PJO5j{1+L^QYE6M#x1p;HHK`n{n)SEw-;+~Lkbte9jvS90^1kVb6 z%Z(T<(+?Pdw|oQrd`ZJmijsWd?Ne_Kz@V^ebRXTaBs@H?9{Ct?>{{{}1ia#5o3~Z@$V40oEqB$#2&d)ArG>?JW5dJc=1N zNihTiqm4?AyS-5U1?>ExwZm2xxnq;*Y?#s*N@6R0(R(RVtsb$kdq-NC^*1a(Pubd) zWjz(eDf8iJJbQB|*=7nO7s|KL*0d{a0|g|#f@iKMjQgRtJ4lUP>&jCPCTMZQs;feO&qT~d^I=}1-{hE8*_Bmrc9BC zGdf>{!A6$3|0v@6u&GLNcO{II9X&t?{A4lYjqJwrU799O2Qjyba=JMIo9&4p)=Fwb(CM<#%zO`taFWfG zN?t7Bc}T|fS7~rwp#p?j1+)|{)FIb@m(~$T<9o&rqu06IXLt$OCET_H$)=oenBRrP zcYo4i!G$fXs-C)k(R%>go#bWO6X+-4$xO87!Y6%kdbH9(LSHQCg+UKdt}}4zrye6$ zULu1A%V$D~gu!&Gs43Y=F#g0iY8Wubp}&NpLTU%ip3w2$x|%>1DXezgorgFZbZjIx zA&G#40q!JTG)k=2b`>?M{nl%nBkQm_qlJGxKPOL;rNQo1-B-yGE+_SsYRtQ`uF&{g ze=sTi|6&v?a36K~9=Y@6+)^A&Gx~s@Y!qH4HwnS83zUGYjqOzMe8$6jJ(40%E4HSQ zNf@BSZcKtr(2t9}D(>&?cAkLe;x(TnOItu`xMc4w|jcpXFl*@(V+K%a~d8ki4q z3n_n}$Y4RzdQgQ+qPT)|F;w@BdX~*cgxSaxbDv(~j7DnVGLU$9)xn@4tGJ-e_i_Sc zxf3=X`d8RvM?UGBESqv4nFrA1FP+$M>unALrB?priA0z0WP9+^=S(U9=B&EBs)wuk z_FFoSCuk+2xf-qlGb(G+JRwyRatu?e+)n-|4HB3CKt){j)p>C^-QZ?3;@bSe*y5-$ zKpD3ko}y7zM(PL==2k6vMX1b67$trJ&it`pHf*%*PV7y<)J~feNTI@#+;i%Igk4;% z$t#uO4J*$O!NCSfBcZ(swAJ+SePlkHf)y$8GR`Mp*`v3abZJF_=HiEr*Tvf~0Pm_$ z;>uGE=8xgA?g`rhXyaaAi)jh?Q=C@2kjMHFO?}an^?bC!j6A{n3f2ZNyJuD~(@?u! zS)%BKd%xLU#CR$9$}OkD_~V1v(z-TVh3^lDy%`Gz1I(IUv)PbIQ4yQ)_&J2j(xxnL z8>uCKm^cJ&O)gek-@Pt@_mW*FV_vB5b-h|3D;lTzffp2}S>;5d2bcz&Qf1Z7(+PVE zns11|jg|A;E3B8KVf8XXEWCW&I;3I$An2>;*O3j1f1gCQQXX3)PK>Z17L+#WH*~&^ z@!?S(D85>o03%}xe=3g}VHB*hhQ48S&S3RA+@#Y3UR=xR9;P85G#|W{@^iJQS$~21 zCp3lDgyDv3Skb?ja827Yh6+l!=hvsTmjf2XsLKM1=DyL57(%bN6ralLp95ooMz226 zU0bC%LqKOP%eo}n#1pE_&=|zh&4{Lv;xRB47BQJA$9VTCRwK0TK_c(6N>Cr^ydl#b z;2J=6;I=9`$*_YYsdTOEJUI4z!YFVM3mdc>FsRc6LA%X-tSx_QR z38*+X6UFRC%X9@j^wRNoysxaw6JBUa_cff-B;x8z~CDc1>$6k8-5O3vq z*U_rp0CGZ6jk3?;EZ`!ZkRW*JtdAPcnNabTeR}rCItWHdTV+VzJ%ov`hqt`@o74lBaT&d~9Na z#a7k@9;d|3f#7g8LAyn)vpF;8|Kj0KF@)jAp;)-v$hUv;Oz!8SVv7nQKglBgG^o7B ziuf6-x78WeI$Y09$|;#~?1cKtl7fD8wt#PT<{62NGs|%*=ONm`o1ykp<}}P4>U_NLnUxc0f#ku6rG8?8!0uH?+z0?KH0kki9LVik3kMTLr3 z)^@g!(JM!qUT{R`bwGDVm2bn=5|bbEJ~*8yi*q?i^5QolpilYZ5f+ad<)RXT!L39% zeQq-qE8!WPvCOJnlPB{SwpVK$!XZXyc9kFVKkEX?(VY$~v2Lw#)!{5VO>QmeGwXFq z*cL1W!$UJoV1<0K8;BAxK*7$w7(6a$D}>^oxrvHKVwQ0jW; z0}YAE9jf2g&%Q1N;2p4~?L)S4Li2&n6rC+{Fzz}4Dk2lt?IKH1R!}M0VQb1V$rvDz z$fa^JZz}IB9?`aE#};0HEb5$#K1$)wij8V2t`Vo?6Q-;J04Q%^|}n z1u4qYZ|18ILuQsTU2KW9db@Ef+o^rCb3n^|s5p$znkb%xE%nUo$h3g2(b@5=5E7L+ zGNEu*^qYg!WuMT$go`2kwUNRCmLp#L;`PE&6qQcJiRoM90bf^gF?_$i6;sB7bSE+b z+S!?ek)O>TVGBXYtB2cdo(nEIzn#4$ig4P|1I3M{!MOR!eKgd~%-tWdR)*^5FhOqf^KdzVz9&rvFcfseYv&Y2dl`=> z$1Osw_knj@6=s83QxSRM>kLfL{V_=hY5|w&31TX*KpYk77$iq`88rPf;x`9P)%4ThFdNp@&-GZ`A zSLWan^Nh|!Ndk$XE9xK7lA#6Q_yJerG$xUOfm(lw4`ByIfOzgn(xR59W6OaPYf-sD z=k^_~GaSECs$4nW;D(qKL&S&1huQUb6TM62DSKgt#Q!5t=AN@2+`w<*~YlwD}?zB@)WrH_>J;^Zt#|7F3pgxjIj$1TDAKHty`FXeB-T zzI@!A_VU`@fLrB$bf5E+|FK0;E>40OEZE>-B2fs6?Hlcd;6@){C<@f&OyAkY!-!pL z_1l2YeUh@y8CMq6SDp_WQS zrU_r7&7JR3ztB<~U)A^(7aEK^=cOOFnMu1-1$M}bR;}1_k}94)uQoz4q0bWs9Pun` zye!Fj>@cQ}qDWqS_?Nw`)fMQ(?gg4K`%>JhZcg67aqwC5UIktD{jLiTl$CRV9}BoF zI^MYlV!3T`&vdn%&cI=pQXaNktPO-lJ5<1Jnk{6ez8V(b<1qGHESb3ZH@Ubb2021 z=_?he*KSnf7Ud|`qxULo+hhfu3zqMC0=(l>>P2y~qg`uyuK8#b){AzRV=^raLZQHs zS8QAJsK*>$nR461FV`v@3-nv>+6LQ%i#Gz*^x=LW*nu8zs85sB1OTsd(P5sZ(=4$V zpm`$=M+U(vZ|_zIC~lZaYfZW4u#^BNm{w|thbhxMfMhRMhg3n}0m}Z_`nW;PZEm6% zdvQjrdjDu!Pt;}Ol_ zSTU47#BkkTzbMiG>H@@z6te#jEK#6SR4>mNvrT?n*Yvn&NzZxw%1z6M6Ec~yY?qy} zc6Pg51)x|$?P^o%JzFWHK5L_)hx+v;aXXN|G*=1H?xpKw)Gu_NWB7~+Cep!AXi_$n z3g6QkO>H?mLHi7O=1Fv?m;grZ95Ebu24#edIlck3`hX@kF@=f!63-e)$P8SL=D5%~ z(Yb zjM|NTby8y1GIhxn`J^B~CZZ$$%A_{KLu$ZJz=EHYHwNN=xLp3QPUmSziTsTfBF$;G z3BD%^(Ct1(G|+B=R;s}aOfiCWZ?lv+XZ^jqBfhga={bUR!XN%zh%q5uzSNI*;~s;S zWJL$4W0FRcu}`g%Gm-3kPrNFMWkoN`|G}UQoUyuD?sFmfRz2&UC%qG<8dt{wW?sa} z!o#KtTf}{A)qEF@ETWG+o%-3#83w(7Bu9>5VEj-8Aly@15eB3|dZMEAJdKeliCv~i z%b?$2^C^+k2XU~2AUh)+KY$>Ihdw+}#H~AdiH!w4T_Li6yM1Y?iL^HZ9t@-g$W!yn z9>1|TFhJ0T1J8>;(yLY;|1H`35l-t@m)M)4AA1^#yN&9FsZV&ItQNA511q9DVEiOK z&owp)(2eZf0j$7)c&=<$iV>By+=_*!N`tr5lLtusBLQ6a*v$O!&GEJL8br`BboEha zUDM?b;>|kuT6}6QsP<&r$>xxUbzSSZQQ8RRy`B5N$p|h+(#@u$cF}{qx9p&i_k$0l zd@oJX4lh+lxmyM`y?qOFY-_*~Dr2Cymvj* z@>DBla+`HzML<=I!gfVWBfG(Win`tm zws%D_pP=YXDRG6O6YTS1FL*XF$3SiWI+d*TSj4P{H_Pv16n87l1m;00$1N2Q;jl)y1=AkTudK}YB?D=;oW_k2 zeif4F{f^s5Ax-wUb?F|^Xn2Y+>;8Zyu4*r1?w!-b40BC`p10)mJuN^yI-fccoH#j7ZOf{`Z{?-*01uLmhJo*GnLymwnb8= zicLsr^1^c`Sgj+wYiC2f@P%r^t2I7drNKW%%RT}#&?;B5Mm&q3Ha~4(&u|o5>>h6U zL4qaUt|i|653Tr0%LQzXz_a}npXnjb@6)|pA{1zvYl#KrQuIodKFJB4A1LeAEsbWY zZp21|&f7z5e1n&i@bE1*z+RX4udj?fn$O7w+y(r^TN67)_=n!VQV`~N8E$&cUM;iR zww!;>$Z|Zd;!GM0YEMGA@Dqbf@qrXywCi~l{%UIav?;JrJ$YDg>!DAtw?Y&k0AQ+g za-54DC9Chpo=9Unf|gD(#1&4ziUU3?!*gWMsPijG_|1U2tbrmu^8)8GM0E@hB5S(h z!pa>El8~3@qaD$2)S-*Wl6Ui@+G7kl@@Xqp=;ap;=!6c z##|M>$a(_SkE;n?>0o3b8YuC7zI21RdIm>IS>t~uV~)!J4Iw5 z_G>q8Nu%VZba)6ZDH%d}U8Pk;?^NECfg;#&u2%-wOqwC3x(kxIAK14E9<7!ucN0vn zzicuTUVrd(r1_MqOB22%q0@l;W(3EXy#~G!LD7}2)EcfrAc*tw)vMouSdY9_^oqrX zWPM1Wo9%Fx{m8P;_cdD|*@+!%sx9M@E88fp8o07!;B!GP^?y((h&<{%Li;#L>YCrw z5r%v|naV8YTE0Cj?W;DDKzyZ0fU%cAhNlHOsJ+@i2j=ET`#&LZpJJAa0LZ^2Ls^yP zbvD>1QyhM&)jiI0>hL+M;`R>{LIA?iy#ds6dl-YPYIs;$oSET)8YI%#>k>eyQt5e= z$_#qdK{g#b0n;UK^2Y*(6{<6l9j63s7A{7BoI`1PCcDXohJ~EDvuJ(~x+fxgnkn-~ zbk=LLyqU-2XgBHegn`@!1Ta$mX0XccILT5B2ARS(Z|piyao{6p3=6UFi&dhPl3VP_ z{rEONbn6P2Is%b8-%!$o3Tzalc&wMiNe7%%&$U$tms+t*&atQ5lF91#LH+`dH$5;|ubWiKqS31qs5khFax=S4c52 z*1mupo~r+G-$o~8_gdIVbOozGzp)Yc>CZo;P)eqZS`12Tjw{H=up|yNC5eTmJmBPm!4k|t@=gJBqonx-h?j7P7l_-?z;IxA3seFjn7~Eg-FLY47-V$N(^f*7sBJb018yEFNtF!9v%6+k9SjMLUP8 z?luVJZoo2<916i(ltPhdb!;ghnQ-Q)AZ?{_6$VXEsJ`SqNZpN3#ilP|!$p2mgojf0 zsceW0^kULF4l~we`n1}(rcO?bf2TS1>yqh=JUTK8t3n66G?VzE)neh>ku$`EI~FXA z&{79-FuNx}asBtFz;=R?0xroUxzLHoE)&)8O{|21CjbpK@|^LY)+(YR9MJ^WuFY-) zf(Q~N2|=}_sJS413BKQ5tfrx%{wgl)JR}LxWX3e7bXf_ky`po-Y>`&2B>ow!g4Apg%_dEs+<{==L2W_8GZz zQeZ~?iX$4$ECpQOfcj7mP76ZQpCHTdMhCye6wLT<@4D7dTA&9R@^7KjPxsat24zym zbb{7BGn|ZcSfd}Tw2WG;M?G}LW_ey^$mJG;D141Ho|ww&7XQirLLEKp^wNc#V%_bT zT2dozi}vzXh#3lo@NsuCqKgqMbI?x%0Qo-GiVMaWKz{5@;4Lj_j- zP}HE64?AFo%wEC#4;Re9=LDF_U~XWPLG0pj_y>WC`Ie4$&#u6SS(jy(CQGokf`V6e z%sUd_2;|54t2rpTWW;Vr3rUI7$!>%^Ucb&I$!}s zH8Ya;tg}l)oAhw8#%zKi3ypRd)z;)OzfN(cJ$&xOp`*@_%x(4dJ5zMuau!D(@d~7f zqW~!Ya`iRPKyw|9$fJ|YF^3FHTB$x8oAcllzSAw0p5#1Pe|h%P7f=Y}sO_)SVQ`jw z3kfw9d=dAo>R8BwzhYogs{lccqrcL+%&ilGfFG!YV6Sohwy`RL{p&YaqIw-Yv=P4e zSmnNjrdg9R*XL0XzpupDz=_A-Bq1o(Yiq=F&_Q96xJ9J+tS5lp5}F3&f5%OI^V*hUt$3*s|F(`K9ws=J7J-N{c=^Qc+(&pMZHQrK9DX@qkonvSCc$|CRsIWri zB4<%mF_v6i;wnyVWx~VXhmNf}Q~mG_&+jwqCvd0Qak)zqLLh1c=D`S9@=SbA2+YsJ zS}w4H)kL#Dp1HtO7Kcgk-*t<}>Gh_=VdVLT1ruMFrCZJke8u5;|57{1kHoIfUZ;aF zI~kr6MfpNXKDx_oa)<>a{(j$p7$I|{xOfl`6jXeKjFua$j_w3y-f6v(bmxO4T@HC{ zRQeslZ>OQrVOD-Byn#D;kS~NeaTmC^cSP3B-Ou-!6bEJC92w6@2ZcYer&>8Ro>N=4 zI_9D`M|5#in}((GK-xMCtRtvBv1~ey2ClOaaAD6$##Y92>pcwnK>^+Tk2TBZ7*cA2-bi@W+-vspKAv)S zcb%M*5-Mju3^-mNeaY7RZ>e7&i`!J!0{pd8sP=+YJM4vR@2f#I%{4$FlF;MAx?ju z2f)u#mP9M3d8N+E$le={z@n`v2MO#cDCPWZzu%ng>cTYA#!NO%I9`8PiBd@!9)%u?ib|9`+8rQY`Ms83}UyUT& zs2aI;xrl?+4@*ReyEY5*r`_RTqIUJYbf@eh9bCL+_v3zSuY@Q)R{0-h&uwUAjbw{{ z=*NZDP`LOLEo>!x$^eN1hBcO%N>}p*m${Tnw5%!foynf^{Bd6uSAnBd$Avp5lt-=nR@I+$iBs-{o|$Yq`uuOL!!o z#mt@iU?_0Yhz&pY1yj$~Z-hop(%^??bL5&yodw^hZHLYC5Pf2lD6;f0VA;D-48p@Ki*fGow6?CLv-J0KPV^LA{kkO$)jQrA9% zQQ@)gEl0fZOF30WH*+sz0lx?)@p1=j#LhAE=bNb$zhNbUKIoQi}hFJ~Zc^_%XW-$(%d zDr%;LPk-~B-z>$KGtIaQ#>*4a%d8@SfKw31Zd(QtLX&+{C!g4yA^knVdRGRfqld9T zGmy$kH@{EMI%{(9zcRZ&NOL>JtQ>=O4Z=X3wQLV z3(&=@aF}HPIx=LJ_ao=GC7hC^#c0|rIHa})A9ktJ_kog6#cc=IPCD6yRE&K*gPqS< zc7ahuiz!D|yMjE?&o`uWM{MDbnScGFQVk`b64+@h*BNg*-db6~Tg)8sNTS`E_YG+^EDD*@`Kg->^mF?ooP) zjF(fL3FvMo_5f*3GeODkQVWrWX>$S=k)8m_(gD_I&ezRj3nr8(QNB)UvjCR`%rUYU zB@W!RYLbDzru?X3eK=5C91)ti0Boe462=1oBTY8wvBK|oC=p8vZCy_w$<8#Y#VQ?6 ztT?EjRhAO}cC(P7RQZ_ix%lWuBzp=RIPuK66sWBTgm7nO*){9D8Ae}+>J~t}%ubCJ znw=1%RKY!ScZeRFFYKRb2qOQ~9UMCH2w(D4QuBxx=GY4yYH6o*6H`7?W;F$Oo?b1S z_Bw@MtGX1;jp}H8)OpK0uy*}Nu(2rl3k<~u;ON-4TP8i|N!gEYE1Qg5+}aa?7T2ZX z=lk?YAB>U+we(ZQuCB})z$-MvIvjuly0?_Sj(gf0*mDgwY3%o&lpfy{K&iZ{e2JD1 zVOQ50TLJcQp>=MLh9#*0Lt#=NWnYk=!1xW}m$swF?=OPp%Gf@;JQx&8RW>ui()69$ zlxkA3UL6WzM3-x+fM7Q}X&pN6A9N?*`-wf8te2_}rU2(esv0KN^m6U8f>(UQ?cT?qyq8dQeT18DHU!T8!-NC@I@KMLpgd?A)EB!z3 zX!fj7FD%-{ko#Kkr1I7@sA04x`-T_D0pC~xu-_$F3CrYex*hF?G{NVoQ!vN@2HP0s zeDeP-CfwcO6Wk!o$s!P}6p*y=ZY}MrZ^O11q?KGO#XM~e4w4P7nGOi)D4C=eyk$J( z5A{xU{96vMKwTp>@?8cY7G)$5NpQJ1IZ~WqF9^!)t%sdOXT70CeH)C^)Z?Qv4pw`J zQ6fW7F)~emUe(K^T#x%U?v`pc4F`{^EOH{#?`4*|LJ*tSYPAd*i2dwP`x9Z-72b7F zC4g|~TfWVTDEq8zm(LBW%PwOVHS`uL=F;LxRejW+6t_K`lnZ2V&N3S)TO==iTk1EE z`su9Te>`$}w(T7|&VvnH|Ffqapyu(6*u|qs4R^lm_ayG70@QGepGHq&mh!_L5KdaEZi7VHIaKrB_ABvLXuo4NO~uHPw)8* zKN`?L1xi`)skWHWKlHyO^wdc4!erHfj4{#bOJZV9CS*of8&k^6SmGN|L~ZeieRM?w z_lu>)?BAmSvuu6cvXnH`SJqPK_Ks+PW{mQp-!s*~$jOKB1@_!MQu@eo2cgcf3@#^Z z&p=gy5IW)wpkz_v4u?Z}p|LvzL_aJ8DADJBlQW#XadCuBZYY6J!S%rpzF8-(d3yHU zw^5=yeRl`2brvoUD`HvYqw$5%iVghplpU$W#4z5Ru@#r6LP@YjMl#s<(Bfh=*1#F{ zuU|2Br0;Pv0hpU)^YOD`kC#8;YAugQfWfNF!;&3^|6*VtK94L@D4aP?Gl;S4Fm&v> zfP>b%nOs_EZE>qKytRU(F)%~%PcAjOCE z-%-U zvLjAoG=;_+vnlngt~ptVSO9mkNrR4I)*n}Gml-T^af3Ij{*cS+pki4duj|dlc&na1 zUycqJ88)l*$F|*pTUmk34aMo1$><8%L2Sk`$5mw`RZ{Mj*}A5{*c!< zNq`qFZaB{%r|f%a8IEY8;6_>7*q6DuM_PzpJk)xzb+*9S_zFLgJpV3j@ zC)Vofe|Vygg(F63)7ow(|0+y(lv=c9V>jt?Hm6Weew=XNn4mAhcXSC14$Wy*apD{+ z5|Faly$)qG?b&KN&bkqX1N2RRY3nJ3ZU%D0MyBQuis@kfZUMWjpZeIlVyEkq9{QY| zVmwS*kkquDcXwcV_6RgD>GpQs5*+R^GaW2R7L(E1FX_aX^@Y;TMO|j<8~9sGfJ?>gAPUFfJ{caLRW~3eF^6x$E`{HjAB zYq8j0Hb34-m6aqh4gA!Ic0RxYk#9`<44N%yV5GWQkZCUZ-$DnM2Zaf?zd+^{#7UYS zvXE)T+4S$@>d8PtC8_9>m;dd^xAxsue}rg4MHmkmiv%EFBi6EGoDH>l-|VH5~OXCeK@vpJl$1!^iGm`KPvd+Bwfs$fgh>$8s?*{ z96sAX!tm$$0ruvg?&A{M#@1sz;bw8%`*Bpt5x>F_iESFQK1Ipap@#A?VmvkJU%GtJ zgJX+Tu$QS#0Au-~0afd9DTPUkO|yGzNyi(@LUzWMNHdc7#UJ8R;2E0#_g!0Rc8?Y( z1p&VKGuO-qYb*<-C;SpAcYM`q)*Ql#eo7YmBFdTH?=sAO*IUSlBnf)|2(G1i)IByM zR9zhvyJ}4NId!mhK&LKo${J1O8H~BRB!SsQq_Si!XpeM#q>#Lh&Z{3h5QLz;#!` zUJ+8y>(4C;f64!8(1YCX?xt)>E?d28a&0Wm6vK7S6Vg8Wyh6L+Joh==u1jY7W|r;FzL%-mJV`EC9<1q%+%`epZVSesr~jKX;TV@{~?$59T`3VMFaqPO}W zm~6I*&Y*v6RA|`hY~>`_;&y&sL&ck>{Eb+M5fz-*YI1nj!dJU(m#s866$7AIMiTd*KP;hDZSH%XmIcK8uBM#Izd09Y$-#u6|D8N25~6 zx787FTwdmIhJJpnX+d=t7mbi!gWl;QzIG%EA}pNN^RR5lU)h_pds*OMAwV=_lyCo&c&o0n1-YKFRQsBA-^jj>5DsqwM}!&@`1(wD580Ds5M;s+dGe)Rfrnj!c#5=i2yb>b9{!H_=89( z=(?J3H`9jD=^syI_sIrYDhOT#fr)F9%CuddfY7LXPSQvNFt4IWWSyEVv z5>-l;NWRDzj<}eI6*`MGr##RSbB-BhZ$f5@)=tzPn$o5+48Vo>X!&fx)^d_|rjxV%mZvV6T~{RoRXkh&bF3w0?<-}Kni!xKbzFu&48XQLrgmT`ffMQxq)^sdg`OoXi~=jV$9XuFE)5!yA_1MKaPBht}#O?9yRJp zE`JWa3B>9Ub0Wk~i=TG`FgQZJ_$gc?E6<&X}XMgT$25Ep**Cx4fI*>?6d; z9}NQ1x#a5ieMFgB5gvW;IIR|@yScJ<=^3>0M4@R_DhwTX!7v*xwN5uYNMi}cF_~u6 zRKgl|Er`TS5k(?yo}TbS#EP*{#UPb!GPzCI6)@>I5#&i1C+-tpBs}E|wR4AVU#; z@Ql`~V6GfnQZ1_@+eGOdOo$j;kx|(yK+m9pK+Za((sv8}FSWq-wFZWw-9_xR=nHYH zeD2=_O-HexH`;sYDE zH>iA(=IL7=>-7Hf{}YG1nb7r|^3DHQI$y@_&R!3p%F)8QU2pYi`*!KAwwoD*(1AEr zK!2P~F%HbI(b0M~V#8skj$JjpIvCzE)r=IzcVE1m_m#5iW{5*TkvbBNOv`(5SQ)IH z`Of!qGt+|0W{Y6Ff1UH`S-v&v~Sy--t0+ zma9BpreaVT`{ndv6nQ_i%IfM9l(x_SME?^F^OZsw8>p1U?}HGcW1yG^n2kUL_%h;N z7n{^=yrxR$dcQWDvV`K4&sy+He`zW9$YpSTAKDLMeg(c2H5OcXsfNVV!9L9tuqwRN zy10p}g!S9|>u?%8$aPq0tsfOq*8f$rJujppJ;$7z{=Z2#$@UnpZY~{rogA#SksQzD z#IN@m3%ZHaFE3au-WvinQeV(ifRQ+l@oHnJB&u!h6=@Y9Gta(&NU(<*+%nI!6d$Z6 zu?C22eVh&Db{ff@s|A(wc8yUzaYzyCd9QzlZboaBJec|mT-o*1F>hu{E8s-wy2j1WS4?K zDadImF65W>!^}i&+W6AN{Yhp~Md$XypkYY&d>`k{B}c@U^PeYE(81l4bpQLR%V;1P zy?(A@w_)#V*216w9|5UN7eG7rVvhMvFI%2FW#*?dMRkZqRq{`=Ym(=HNIBbbB7xJ2 zuuO%@zJ#P>oQORPd4PK_OKf+L3}l|@IX<4|-sT9r$C2y*aJjskbk%f&>dV5&<{fZg z)^`O(ask9!@j`Tsh^T9jB@|Ep{)GKU^BZSWXQ_(oz(+Xzij`lFW$dKb@3o+lUr;C< zO|aH2`sRN-6=Im7nhOfY%#%JTt%scRKVChS@}W6OYq#qs+hC8b#v)TVf3W^Zv(?@2iz9E?MbEg_^O zWW^*MOWmhtKJf@Iv$k^RcpFIqlJh0>GApIdR^`2;u#V=%QDyM&8geRy*UHjKC^4COq zt`st4c)r=R83yXX#&i}n=#Da?ioQ9I$&jTBFd5bT+0?P(S;j}l#|TtN6wr)fWB4O4 z*c5_6Tcy-@l?^^RqVRm0F_4e3B!45sFln-u<*(L%W&2o<9BEFoO5sk|J#BdJ_y;4` ztjXDWXXY`1nPNmaYw|>gFe0%~%6=9IXa)(sCg3AVA)>%tz*>ha5upIzHEzfHSR)FzP2t+{Fw`8fwa4WgIJ;AIC+;gt_%yD%~)H0i3_k?V^d8N zv{I_D*dHbor?MpfvzBaw=iqqv!N9s>`hTYtgUKc~5LyVIT{xZMiq&1nj~reeggMGN z$=<=?*-<`9@>vkFuvjvUVPOfQ|6`A2*wc!3)i88vk2pU8`CId#AOyuLqf%t_x>}488q##(1IATPkd^yC0$JBZ0&)P#Io1gmO`J?$$%QR5=Kuy_S6F$sxNAZ;gb1y$Q&^k z|4I~&LJ=EnJxyW_qDw*d=DX-b85F*(4NZxEiRVuGl@`}E9d(7otEku>sok+Sn!56< zSZ6R+>-z%HzU59wTr0VPjO;E)-4#0paxJ2E%me`@{-%QSMPas1oGJ&^I7*o3@XHnAMkV+-pgp+jw~m_8VGsy@^%- zG(qs!ooWwQ7&N}hre8N<<6Gy1HCg0(?en8nbeoF}1Ra%bpV(^KofuTX)wa^l) zwOa}-LIOe~db>9jU8-{`@maa~O?dvRvaBn9lhYdz@I)-&$-RV>vo0spGn2HsNxy#) zZn(!{eVjr@DWPqIpGcOA=^=L(by{hB@%h}|LCv;hwuBn~trz3FDkZYYSR7Blcc};e zOO#_H&QJP#8=6e-ehJ?FczBHdre&=$o~t^dO&;wNAly^LND$aEWslf%BI`agajZg^ z%U)%V`_z}5A87$lVSk%GA@#5p*O6!#Cs7vh&+Bx3Ja#6Hncu}4Cm=qX*FZ)E#nkKY zX9L7+jLr|88|?yyjU4{A%1pvzJ_AvPjOhpzvck7xI;{@#dS$P(^yJoZ8RP)^>^{e> z_bd6qvJ~%9uw&Dh8#8IQyG(Z~o|=GhZIlF8^yO|(lc`FdbK-T(9LDhwfA+^xJHAs$N~ zpkrC36YU>DjxfofT@eR^a~yB6x{6z`35#~J0HI%aEct+qu9o8Z-56w4_}8|zY|S!1 z_iQ%W6vSk720AbeaMN77#ZzU*r5&WIdS}!FeJp8w(-`moR{EI%k$PVmWE8PQhp4yKLdKspGGpK>s+X@H zVWWj@LFFmo#MtK6azxN~9qmnhOUcm1PluifuTGIau*=3lltdNs@e9N$Jt$mE&B5lD z-K}IP9fu0l9EDc_+wtU%$~7Gah|MG|E(YqDXTufly3vt#L_t`Uw8YXCj#{xm>2F5R zwR%kjV-#>uTbxz06wmlPi~6fy7b3a_` z%k%Z5&h!OWJsMM#G{bwxIczd>J8|>kig_zy-BL>~oTW|}`cAZDPKU0R$3K6sZSnm0 z1!h_~k3k(8!Izz`jaDVr}kj>sb;>Y-?+Hjpnih0O+ zg5G9Fg0^1n@QMV<_^vJ_=-dKo|tjSw- z^Z}wi#Up){<*NbK|6`1vXQ7Z`nP}FfJqKSqDy}I+!p8^=dez@ty4y*!=LHnHXI@DM zk@oY|Z1Cb9s3i|%l7sN3G2|Y@&iaj znjh>OI zI5L8S6bEjNSLIUM1+GzV(m0x+MtlGOuqh=5ZtFkAYV8E1UyCUS zXKP?SyR`sn10V@C@gXyk`KIA12*sro-;9f!^VdnHXWF0vP|cvSy8i*s3aQBiwxKKG zGNGNbZHQpb3F<1H(CvEAVvJRz7Ic;c?xRQLNoku+5=ij@7}pj-!?d?6x-0I^H;&@| za2{SgM*Gyu{6@=*Y{k)L_M`As%n+#{gvZ-x<4j$K=@S;;!*h`oCUvuVTK@5?`PbkO5_ zzm_pZIIUf(wW0ZV7yr8OP7#638SqLUAi&$33A1Y*~@4qJ>1vu0O?o~bfDo5DwM$=MoOx^w*tX-p1g1SC3-GaImfxC>Hj z&*~IgWJMlzLDSz*`n#(ul?VG_Oo{${V!V#&G(#FbMMhv_bkWv25Gb>ar$!yOvavQLx$-1y&9}(D>r%v@KAc?GcHMUglIgExYscG#$PQYT85QmdUOFTh>z7 zI<-Vm2e!ZG{}U|}eO=*b5nPtvbyXx3ee|ui5F3Q~d{))@YZS?-IN|IZ+&kdeEiWE9 zA%w1OS0hR=sg$+7&tj)jnBnKdlr{D3yDa;u>+VT)*Se+IYuDxX-W#qgki~W5QTj7G zrnwNJiPN|lFwrfQ$`>J*Kj$9Z@nmI}JD5k1P;gA;MY`wz3FqehEW^~ox#3z=2k}Yy zBGM|dxj~I&qtT$s_&LL)@|m25v`XZCr9ZE4`W;NUh(yl#N9Lnsl=^7F>`+ znF&x?1jj&mkbnUMNR9(OPl!TdjgZwj(>MP1zF>Wz3GF4usv&3Wttcmlw#8`8NfA2Qz-E49#$Dl-pk}r%)TTsq zccA2sp-g~tP4=6V0H1zPwVcB}oreAT=y_rRk9{z?d<8&@!_OqrW-05`11x+@RV;~O zbbm6YhtlAowzrwyXZFXLdYp}}EtY6lmvA+AUB~2FNPov59icmcpFZ>A=a2z1=DJhK zpO76~^2pmfF^SzVFDK6=()Z&S2M+b{0Yx}CWHEva3OO_M$@uyrnmQ`=dv)c^y!EDmX|L2>qV2*YFG0=WphScc<%v%5 zTS6`q7||lcr(cnSq zbD<96SAEDC5Gho1B#u`}sYv$w)PvpiLWQp2ZImjdSX++p0WQ;bxeUtCHG^rjFCcP0 zvyp-rY@@+&#}1c7TcJBgx^>F`w_;^UFRocC2+LXpI0Y}*JB~gEzw<;mmi(M9pi}XQ zu%5kBMF4e`6?HgEk?-8pSB_EMHJ5`#Q?0w&U`HuOpf?7!uI4u80olE!`c*3Io778C z50mV~iwW7k2;GuZpEabS|4;mt0E4_kh#s}3V3KUi=HZ-oXDK_Ac~nQUX>&PAw21yV zIE`6~J!x0Ode!`yF=mNrISxZuiuA-zO^F4klR|}Hsf&*}mbat^#h!iVNOqy_Knu2y z?UUMOb%C`P-#E(sz6eP-`Fp1kYw_z*UN82R`!Xc-R0_5pH0x5$t}M(NPcS0PH@-MJ zpOsBzVcTp|>A#H2Si2yn3dy_(R{9Qv-E|zhlY~A{Zo{yd98U4qCr)E9jEr*HM`CkN z;(jO>k%OF*7_wBS1$B8va*l`x{Pfakf8kX7(k-(zyAfhkpgSg

~T5e<#$bk?!BC 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 >2L~DrA4qix8N4? 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 oFcme{^l)\"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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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/20260508210001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508210001-Diff-Config.rsc new file mode 100644 index 0000000..edd15c7 --- /dev/null +++ b/MikroMaster/history/20260508/20260508210001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4291d4290 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4292a4292 +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0