From bead9d59e626ecc6aec7fedc6ad98862bc175a15 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 17:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 17:40:18. --- .../20260510/20260510174002-Binary.backup | Bin 0 -> 301965 bytes .../20260510/20260510174002-Config.rsc | 4649 +++++++++++++++++ .../20260510/20260510174002-Diff-Config.rsc | 15 + 3 files changed, 4664 insertions(+) create mode 100644 MikroMaster/20260510/20260510174002-Binary.backup create mode 100644 MikroMaster/20260510/20260510174002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510174002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510174002-Binary.backup b/MikroMaster/20260510/20260510174002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e10597989ab697cdb39663e9f85c2e5bd7fd60b4 GIT binary patch literal 301965 zcmV+aKLEh*sF8Dxn*;z35KQc72fdm<2A=yORw)_)000O80004Z`SAPzLud%*?D|I6 z8MS}Lg5MQ1cDz z$=aw2?#=x6@%{@n{ioy3*V_na7UJ!DaSKPdvUpAu;|_+T&U1wMKQqh*VA^w4bDcv` zvOPgtI#~aAca#Fh&0S9l9)w#>O-`0Iy3q0nAL5KLDi4smHs}BS2$@J0W`*$WPr}_-w$){7ak3b%^|U}5*}Vo^jy>e;dk39f zlvL#qCj0A&IH{o_y4-bEgL-kG=1X#Ovit1>mpy9no#KusQ%1FhH!PO_>En}VF7#Ba zp0|3SvBCp{;JJNB87AO^Xf^)C&r&Z(O!IB+@_^ydg5T0sL#IH&j_2b+(lOFy-+&a>EKj{p7efaIu{X$*z-El)`nt%2m30aJ84Jn9~PXpWX9qBJFvZQr|Or^m#Td z=U6Gd=t0`o(~~L4+C8GX?x^<|_DdCJ<5&qagxBMW6A!L%irLvo!S}dLRe|;xLavP% zWonhx)fu|{i7YSjnUu1;7q4}!j38pnAb26y0zhFaY@Y8LbtbkYx=4q64t79r@-%r! zyj`4H5v@_MRP17I=7nk$6kmmF`{JPE;RkqoncJpStN*DGpV@}z(4vYR>f1fvHDDp) zP%^~Cf)h1T8=$#3gk{YnL|({6h}%5n3{$f;2R$qEn+C_s%&9UQU!}?L{`Xb3<2p|} zF?uq|iYYO4MV-tX3_JJQyQ)GAHc05$|~`rV^2U4MeL%nNFLanZ)L4Um}w`hqU|XShj}qY!U%9uk(+eW z#?nR0u?zj`efmnWrTzgy8&!#CvY5~(`v4J_f_aOin#JqD z>q`;+^pLLYG;1SlSO*ObQTX4-75FD1Z&I_>7iNuqV6_Z3mtNXN;`LBcTqNx+IK#bF za@<@lj;$DYC806XmzS?W&HBhZTzZd@{WfQ?+Ba|WPJ0B_coNS8&wv+d%II;U*TpuE z?IWB=?oZaTF_~dt{{@{~W`2Y{7;kWrfXCwk`PUU5SN~vYJO`Z&?3s@xf`!{131mZg zUeb|yhE(k%7NHJx56K~IdT)k%jq*KO{RNPRklMz63UTJ3_W3Js1!e%8mpOHHLtr?3 zz$cWv_(wf|jyBr$aAHJ~+()$dz1Cf)i((ecAMAt{@pFh|ud#1&=7}i$7G_i!Yc@{f z-%zs?2?CA=*a_H$#dFFXl3tnou7M(94eJc8me)c6y-+iwD7yx_Y=@Q}NQ`$UnztdQ znFR5$UTnI~SsDM@=SOGw7zCH2!K7we#Z6H=U-v;a`w0q-fnW5K`|`LTJyoI|eZnHf zf}tM7T_{siNb+Lcm4pJ|MX2z*(7Do!u>y^NmRH$X#r@O$mZa>#NmT-;Yb5nEGwbrJEr(h*&>^$SeSPN#j$7oOlK z$lN7a{Q~4P%W|T-!Q|M=seWVVtfYy6=E@l2c9zbFIrmn&8;^#)Rt1DTlI2)TMD+Tj zKOEMHkI<>3HDvtuJ{#Cmm^GgWwngnYoj%X_TpFtu!$UI!WFSi!94YIp6FkmlOe-wyYHj>zZP4@#@h) z3V~YT(QCPHgVIN_E{v~YjTcEu$QmlXSuqBYh`CputN3veO=shMKd+owKq4<3PDoFuXClX#V zqp72!@E~NRe?%jn#4YudY-QZQ)*j?mlo^axceVjny^SyH#8t144B*6BlOrfzd>wti7DN){xUTFi-v(zY1jV$&(Q|DKty%!0Vbd(BJr)@<=esL& zNSq}tLuMs&SSa~wU+Y-*GLlw0Mvj3x3q@xXWERbyzwy6cMMIctVQLf<+m=%$tBOpP zL5(J*v@ShIJUa%jG0rT@bx%>~4eB!P1UV5%F&3vICl1bpmgYmmhlKaYTAB=@GC9VSjf^qj!3N+`dabxT;J`h#Ocoxer!aKz=ccEnZ#y* zr!P-8mROWWEl2%72Ma)u!vCw{m9yzgtEtvWTYqc%0B*=GTY3PW(Z*`?J?>J>`8Zjd z!{MzzCqeE0*NRlLh^WQu9ox#wVIt)P3bJWYV(Nj9V}%dwG43C0jLE^SrW-Ehg?HXu zjk$6kL_0FgqfZU>8RFg&sCE88cvO`v;diW?v8^^;08a(W$BmXKWSp%TCWr^WKNrmDhQNb=G3N}Y!D$Cg^7 zAA2$JAMg9xyDg3JLfNbJa=Ux5CLsC}+wYJar3{i_@0z=RLaEuXDg=JRym83;rVn5f zN58m%2cY-wx43N>B4&Mek+cWsWsJ}K)&x8&UQxrog+bk-NQEGD8Rrml=|K*~LwniL zgSZd-Y%=PmVfE5ZQOZ!*nrKsU|2dslv~;+8iI}(_S?P_rc!4jjZSm(Bo+~i;-pg%D z6t#V-XEL~%)UhF1&^#n;TV+K0VR;_g*KYB8RzYLz+U^&vBBEMsqw}qASoA?tkOZ<_ z^^o$Sp<6weczCDJe?3QFw4OB9)C#({a(Ql;&Y_=cQw6wlEx$6-qaIvhdto~8S- za-2LZb|7YBe(jqb16;b29t!vA>hvynl_;5I$A^{5zDo(K|EpEI$HZD2LSW6Y0vFK# zRpiiCWee!%1Jj{%mqLGg4j!>d@nbgk?}XEJ1s;R)IY!5qEPJU1b4Jl?r8W? z_Ifj1%F4)rB0i%6I|~Zl(Ds06Sebs*rX+t8xJWfTXN6q=U^XOE%-i8<7ei-9n7qEvsbk`>+gsoxl4AuSdy~klXlF4@PNvzB7iZX-emsJ~QLLRs4v_ zM2}jD`1vWYRnHb<5yg?kPa7ByLszuDr_R;!f>`A?-FZx5-{Azz%gvSX;Tl(I-n@EF z_Fn08F`8L;aG=HOD?_2EY_baB!Axsqd|r7pBMgud4+b8G!2@<9W&UKT8mq~x8`P3{ z#9=qrqyPGIgS*9$6Vac?N)Tk6Bd+>H{?#s!F6LrEuT~Dwlgf9Xv^^f~JmziWFPO?T z>=VW2pd8VGt*Gn0{7EH{PLkiG7tRRUk826R0u0(5@j??-=$ZL3&x#R8>SY-@2Aml9 zUHQ{;fmuZJl;YAWDN&`#Huq)pTp!)t2O3i+vk>`S=Im#kmI*f5FVKulP(h1BZ#+ciCnSZJM-dMuoTbs)3Hs_rW@Ityh-qjUgdrE?ne$j}BPnD%+G?_&lY)*|V%tP2q_aj|MFU^Vk7Y&&Zwn|YV))YEa&zC%%7GLldr zSd8stB%}%MVg8&r4x@*CIAz=eZ_0TF*i*jvTKec%93;YZM33AUXbHRES{f=p7!+Q07mYsBYejS%JvI-1KXsuzaCX)9!XBKf>3RI_7|9pf}C8PO`v5ciq;=sud^SB*s}|+VGD{0X7Ya@j&O1 z==YZk1Gc(4L`97xm0pKH1Y3?YRiVLbz1DsWUQaZR%z|$R1(jBH^Qz!}yU74_v6fx4 z1pt%qz2dK>Tr)$XPzA}o*(jmZGhG}%W=xTjuSr@H|YQ9uvBQbA#iTH@y|06h&1hbmu1J*n~L-L)0LmjE)qfLX} zl4UWm+pe6%>I0F1^KBOm$&6((7h<~Ni%Xz#QU&dwdw|w8NMD6$glx&uC8(!Pp9Bi1 zHs;|ILtx76iN{8mi^t5{) z%I@t-D1emwsndPR-3u=dK3{Co^~+>)@9YDzB+|0iNQ7TfL&!VUl<>s#-ZJCdP3rou zkh7uDUZ86tSAC#V7()S)L5x0;-(tOnf3b6wu#F-g5G{*MNtBF)iqpd%8}@!v$6(>5 zBtrO6z^2|7%qFGGZ<4&PFOL8si5=b%bR!#MjGz+6;Gq{}n36p?mo*l=9OL2t?S(xA z>@}(_6tvcgxYDhyfk9;#6EUA&=$HBtnrlN`se*u{=B^F#4$uR*74Oj+T~o_f(QUP; z&T{<6WN8-(2weB1OEd1VmN}?hs~!5bAY?q_7!a#`$`s~dUYFaY(tY15gW%^X$Zati zWR{d_V6>~WYEpfnW3e|OI;S_TPNr-+y?lU?dZA6WK`?G`AV@#LC`b?vXF$H~jdc%v z5sF=IgTQM+V)DRodwn_?=LYh|B`tgu_MCzD_VOMVir^6=GG(*c_6JEE4LuiQdAN4r zyGmfJsI8B=>ay#QPBV2TRGKf_oXAr2{_P)A968*0iJX-tgH5-C!rjNN12t! zEr75=Ejx2HT+j*&INXFDf-Y#G(&?`ZP|_*9xy6za|M%;?-ArIeQKs?AHbHkyM+yZ0 zP{gj#nz^s>QO2uqkT@qB!Wn7VV3e$HWWi2sGSX=e@gHMYp}i_Ve9j-m9X3RAJYMB> zmwpVCbD|0LY|@0j(s3$kzT4nGnm^ zXaqX0Hb*5z4FCtYO)C}3Gc{;Ki~+T6H4B*ydXSN;>Y-W?(>Nkm&Y5Bs;g}a|*`JGy z;O<*xFJ$X$h-fvKP$)T|x8q{QZgD4|S_@H~3cA(I8G@;KW`+-)iYl5jFtrcj*LVVx zX_oaf^#WJaKe2cV@j;`Ii<`wGfg(BNgL-|kzPX%eOt?hEZEMfA5Pr6vSaIRLf?7L}GpP$xwBAmxl6WHpwH7waq!ARJu*zV-;1FZA+zl z-|z^L0S+U>v>`;8K#Y;MmpL{nkbS#J0N2^TJEt+QUj_t6`QDP-=&4;E67_XJE1+&p%aZu^?QbZ{l zUkaNN=EARlfQ;u)NL2oxzojWTbmPfF;)!txS-y$CeBfaA#r;aZ^#gvWt)SVNHrXMb z76~(vONm8|W)u)nwL@~CFBL;>OD=NC&iT4y6F7&;RC4HWQhv`XMi*k^ZN}qSgh#-t zNRw*Pb)B_ECz>n#{6>$93S&j%ljnQ<1L|}KXe3!1Kpj^;0wyF;Mr=E8h_S~;>Mkj^C$_8nt&M0vVj@=JwGMvtwUJ8^QJrM(FVa|^ zvC*XY?k<&#enEk}F;~2{X2ZUY0s5_R(Xei@tadm9bIc9!Q_0sKZC66zf2`WACWJRm z>HiKB*IEQ%^TJ*``D06GqDu5Q49VfjQX`wlP`bv!UR%2{v7gAr0tZxxswWgnISX&P zwC2u4c5jQ!V!0+D$V#4L@0%-A^{m~3LD?A_5WS{n5}E%5P5<(d#3)=y<`PjYj$i2v zwZg$Izg<*}u+ho?Nza5ej5$c$U=i#27-?68Hheru$cg<8q(#%7U5uj70+UN4()^*p z>t;tpP^nNw6gQk@fd+pQ^Po&FV)+hqqw@@+kBrzAYSF`4cT{%=iLipHyA#t!@HbA` z7e|&h8V`0cb@O#$GQp9&7$kx(JgkmoS`PP`7^Jtt4z**WNwyuOxUDQbURuYe~S zh7L+EM6>US$zA#DIk6X!t27i@ho#CSH6?#aNRhUD*HfYPbB!A93~y32h+ov1L5nzV zc#+Gu#{fd1Yw~KY)~F+HQ*4#ETyx-+e3sryO(VA?U}^TM1M-xEjlf;Rb^eoSy7@Sc zwt$+EL3y>{#bl#|;N*WZY%PQNpnSM}f1sIyUjs6GYlaB8XDA6`*B?bXgwW0_)~1S2 z1{8{d0O1BEF&Kwk*Up0g22RCQW<3ziSf-Up&Pqtr^dZO*FMUR)VgPtfIEULgep>wEpTW;fIns0z59x!%6t;? z)?SFPG;{H9uRGO`AcA9ng%z1$uh-#qUv;F;KcD~NyK!)w;ihopH)J&2)j-cW=s-Cd zc$<}HIS>jpdP_S}lsoI4T$QPuU4lAuzD2Mt!V2%ib}PkxQs-!7E>E1-55EAnS3-wEW@*N-($1XyKm4p%``D1~eg-_tZmzNf_v(=aC_mn;BQRY3 zFYUQZO<3i{FC{bghK@5=Zjnb_IaFZcCn%^sbQP)@+;+s_XJ~C@83uR(s=`5Ad%Ne_ zda1G6x(1jR&~nD?@;s~j!za)DolN!6Ag4-VH-Wqlqjxv33IJJPsl-A&K-7 zEn>FK@9rqYSx#o06GJ`foZ8U*9&c>Ie}rM9BQf(8^>}{@^n$44&kjo!^&yNKhCy= z?JJa8&E`I1NV$hJy|)p*@{(Lkq+@*uqjjq#xU%aCBrq%20tHV#XdWyOyL_%HJ2YM0 zw!%DEV{QteriN6t`nXiDX|G_-2eitm8=uUWzUn_iS0&cnS1n3O(--6~pA9D`D?}1C znfqThbPB44Lve(@){(!VhJzO;0>gY$RkF?KdFnRXJg4-HmnI()lAJ^6J^v80dzT3IsnF1k&DNB2{1nPwp5Y zxj}g?+e%LIBTuGo$`1!H5J#zRO-P=4 z6mD_vZ+iFGM2^k;*M#YZER12ee1pU-1-PvpiwmfT(J!%&0;UMRLM#%GS59^1bhN&j zat$EIDWlf}*B};*;88{|k{r z3|g1y16XLmD@q6|hF$7Oq7`G$t9#<4?df1eKKZ)rS-bO_I$9r%4!dISr#qUu=J~ie z`AaT)9`tvY{a=};GLqYEsa&eX9wn(!TH^L8YZ*~En^HSQne)0ym>D=N5*8KIO_-7| z^Ysd3(&AsaU>9MXPGc;TZ{!A*=tMvR0?XE|#!&1sY-KKa%P!Ie1L<*Wft5&)EvkF& zeCjdw!Li661})|aUKW@-hI!b@fmdI`2b#OKqdAg!cUnd@{Bb~4zmVEukMSG1B#Fp$=> zMQssXm8)UjzA|TzBvN~&hmL`Y0l6~;ncyEyiH_Jo-JivuWEVt$uMEhj;t|YtHrpl@ zz_L8Wbk_v6aVR;n?ju!!V-1tVnD+Jf-;)$0pMKND9e+oT&*7s;5m<;0;?^@RMQTvO z_tw;w%}9=zXWxr8jW#&9>d|p-+YJ7jHy;Mg`a0w2lU;|Cr8swE&;*r!O+kwl5du}Y zy!HgOH`fk!?ugP-@6C09;rl(fl7c1Ne-gz{@dELE!Y|Tu)zG9Q7)|LK1R-+v{Mk}O z*=w@W?%S(0hC9h6?Pu%!W<5G^Kc7fzx!yR(!T6b8qE!)HC8K{_z}&5NYlF2V3G?Na zi>9#-f5XC|bRb?60=+1K4o7}SA`y&+(a@wWXkz>?6VjX*i8U3|nNQm~gJ?^^V*#EF zpmiOvoW@YhAHsz49^&uMcBs&@o_Vwpe)Vrp$TOB?t0WWF3!{lx>iRBRUwH!!Vyjt_rq@1ZXA$~^K8@l#wV0nvAc1sXbCZK%b>~7 zRemuxEH)-z?US=x!J60}1^x5r?89xG(Otj2yQZQ1#M#< zqHdt}4n|Vwc%}8UPAs3Gr|vxc4Kl2diSI$VJeYsPR2Sav^$rvF}yDRjq7k1Z#b|Uljcx zIqBGCPieE3?`l zNtfEVB@6OF7?x#M#;GpQBd$QfXyJzuyL%=wsEyY%{04BGfV@-UXXfCgHsrFZ>6zj4~Ole2dbd)5A$K97$HTxR6qB5!YQz zkF?+bke%8~m@sdfAH#+=^Re5YtZ0o~otY4V&RRYtRZn7r z)l!>A=fOzyPbMhcq8z#}7{4&{<_k zLXSSRv4Qdq?uh>45d-yX>77yf9ldC<9lh;TKSFfZ5=Sa}FE+dZCy%r|p+u6gwDklC z(-StWKp_roc~DT`)T1)74;J8Fa-|FYluf)5m= zTQO3%x5IM{qUiqS%lkEDWMwG_>Ryvtw`Ld7|wu( zb_&HsC3hFaITp0Mh}EwC%+vTFYx9o+Fauap10!@5$~mrP-=90FOFRu|fDXyZU;RbJ zP<>#Cx}|?@)AhK?nv8P%-f3y=sS6>!pp&xE1)_y%vGQAM-K~E)jV+(c&7iQuaIK2W z4#+Vbm?40{(EGVC8ot6vRjSC!a*&(#O}-A0lX-=8#TR>ik|{>}M&PX8Y*A>g=`Tq! z>gEiaRr$2fCfJ-1qCM!q9Z(>u))Ow(T=7x0_Cqv9#fdlK*1gaj62+>=1hiz>+1*#e zWw85~{~;|=4#)pcqyx_`28#qVb5dNNsuH>2{1s~-Km>xi(jt{CZY|xYCLaEjWt*jU zfP7kqoP?G6lAK{UYqP^Ikkis5-CduF{R&aF)>>*R{Z>SSY zRHITnKJBjb^WfecGQjv5JRn10$(EoA@Iafsp=7eE&;hVJZ4y3@h3XX=yr!8XfFqhHyrfN8HD}TU;)beKJw8r-Lz94&3#u{0mxXqmVj&T$~$dou=hBQlX?~W zrqW)g_}Q~8k6ttw)wkfKHYqb#ehN1fkb4KT`6 z0wpp{U}VFfjk7glW721})W=;nR@ewrn^Z!sLwRqlaB<*G^@L*iF?zl_bZQVN_924B z4I3|{)NZb)#tb=6Sn-gJ(yP`8Unjg;(7du81dv1r85x|EdRCt!n_s9oYL<_&;%T%q%Pfu+L3t5 z#OaVcDp}}=>v-wvyIlKwLci(bj*4Vq7&%`o)8zYj=YC%V|JX5f2((ECI*PZSl&HqcvsDkS0 z-xSR87NHsiJ><~fDa>q?E@LiiNorjw-Rwbn>#&%Gm5(v=3W7(+hMJga^1BgXj_d1Us%3U-To`utl-!#xw-0t#&U=NSpu`#IBs^s zuR>Gf49<#T75IJ-tqHZ~P7&)}4R23*CC9C39n@qV4rY*}=xmCJ-p?O!o~xGan9H+8 z`8z-?*QXRut^889HRXeywlHR0%eXi^k?S>;Am(5Nuv2(03F`#l2+1}!12VgF(QbOA z-niiW7jp?=H%)ouAZTdjqG*G8mNM=lLCLoacdl&P+C8O;AeS<2_NLe4--kfTWGEuO>VK0*yD6nxQ)vW7-r)YPZaRvk z`*7Lwd<2&;<^bRZ*@&-?`fJk8Ep`|($?&xSWSV@4=ViG0Iw4yg>>Kr|IcR2PZO5(H z$bwJTvL?<3?L%$c*Wd=Cp{UI)Gpo1m=D^`;C(w;1Zz8DVIs*MP=MB@mQQ@&2ZyVxH zWcs=3jd|uJW5C%r6uj^Ynoro{tB9Z+$MA1Az?`xzb0|j}do2sBlw;yvHe8Lp^lZ}i z%Yxbo=p%bAds}rZ>`5yrI*+wW5TOCCF?`8RgRX@Bsba`$nz(?xzCTs6_8^q;nm)b0{N4wn2xQK^+{j%FAJd%tko5AbIUIA5GN3q zuJ6@tfM5BU(6(~_88b8K68ru@h{VDQ1kZonI#1Fece2#OL~wIyeYSfqABeI3X?ovR zIv$|r_an}Gu9>K05nY{!E9KQs-5jSy-Fku^zB@L{WS8otNNWeG6dt7GK(Kc~y9Q@~ zkbw_b+%JNZ5(d!Y>}nQ`^Vvw(4EY3flA}=EN}nQMKn$8cdd9qd^Xx-b<|z600Fid~ z9&|&qAa>j+sR6`cgIm>#FEB@#zXcaDgIZkG!ur=pZ?f-tk}(U9$wHIqiRUmbVZjJ;sWd zB+JC8*w{09XwTXXc0Rt1#j+pZ3Wj}5wL=CDzsl+pTN*bSQyd0mFhYgX@tECvTLI4%(vQi%bI*qZg zlD>(Y{6>=Q9ZzulV|fysi-JZo{k9GAA!~j^-eyg< zoc#siENw12H_R1R?CpHn&m=JnDy-TdyZ90;_E*??!gBe;5uz?qfZldHVeN)S1ro3mLtoDK|nSGZ;8$U?mb zhdZ*9h@U5yO5W(yXa^Jco;UF&T9fVcI>J^t*{l}WwON}|mQPBV%{bcU=5!XEfzz*A z3ZlU_E(g0azcwy+r1IyL@TcJR#0{yYFEb5xD(EZG@{G2!4P_{sP7CET=#9FK?Iqof z*(!Rx#7cq>4-m0Q4zrgzfOCNf1t@<-eTls0T$ZkoFGjV#7Rf{rk^qoI*$Gn`sgh?* z|FVszAG+DTEIhVlXcpJ&++ETNdwY!wSyT|_Z3$H=U6cMWD9SjRpIVfLk`*W^_}RL~ zt&yom@A1 z=yR)!LC2ZZE%(kgcP;9><^UlND=I1Eq8xZbWP8o7`4ODi-J;a8NWS&OCzt@JfQ#a( zNUa_*)X)=Cd%5$)+&UT4+%JQ`5rKBk?(U}hj5K{VnT!*U7wW$QJ{b_afR@xgZ&Dl{ zI+jA3DReu#`1*CE1Oe*wYX4qy@gri7)_`g=dv6lY|8gmtX#@XUjE4wN*U=PW_6hpM zPCpdwq2bOM@g@a%T20xjE4TQp0?ELcKqTU}=0UrYN|P9cSm*4#`#*+_K6#A~UPlrh z!s&Cif`$^;=&9pm&l1`^l|vMSog)^y3FDU9HRE)}YQZ%Bow|)+I$OGM}8re*DfkxI%p$MZ89;*vKb%ZeO$_a9ubFk~+ z+A4R$(1vI2a8x}kx$wSoUr1E=8WR1fF_k$bV@XFt`eD7>p<%$T&m5=$EvFAVJx1!%gY+x@;N+ZR*eLNdcH-p}$(tB>B^~x_QG+qgXif5z zK_)M}(-YrCR>Q*)cJ4_A^ASE9nKzb6ybi-PUDP<~AcfRfux&x$y+5AjtPm=WhnN4s zY1v2bTaeU5dRK{03VTU6txCtsV2@&5jMV?)@C7>J*t>ZL;)0Ul&m|O_ff_A4@E)CV z$s6(aj34gja3Y16(nC65m3MNt@mp8=nob#$3AXG8mT_rtF)0`&OOK-l9=nOS? zVXJ9E-Hu>^NGp1>5W9<6I+y)g<06y_y7STH+^3?T*moBL%0iosF zzdzIRYsq~-KPorkL13|O6+ttU)rY}LfvXlSKuDj@oi_AHE9m(_EfKONU$N5O2KGkQ za&9oWz?;xCcDQ#x;hsv-&~rTXRyUCx>=7={zD0;`50?liC#2FFRaO*2D)ofc@wqn) z4tBm=ER^n}X(``d6|Yz-edGbqv|(d~0bt|cHxf~n-~5(F6m8VS#StQihG3gI2@H}q zGAu5LF^wO-^;}9x|JyyxW65PI9r=$dzTgu2r=#fG?6_V%Hup?=A>Dc6*VWyq==e=( z1xx_eM>_vsAY3`Z*4bH1kHYzq3rh!Xcc=}|JF4CWmx7S;}Q;pSE%VCi>x)y>o{tdhIH~GjqqO&ig4!WoWrzWbp1iO;SeD2AR&mq zYoHV5i9|6XBD*Mp1zFNExAV13F)&rHc!0r;3k`-SOZ|+f8~Zx{$C)|N=;$z`qw=B% z+JeE@0=WN(Sd9%~4-S$PyC=3IXa{%C9pap5SGg5s0?`KztXptJ6Kv^FIS!YT00nJ~ zA@77G1VZM2-$kg{F5>gLSjN(KeNFw*Xf@5${vxmA)Wc)cJQ1}tHxE;0j3FlH`?X<0 zU`oZRF6#TK%&@WS;rUACc1j@#y1zK#z^35IUAasmFuo-Kj>rTYIZ@k|6PbP8?L7*D z5hZ-cVD<6lu^(z|FvXKt5;bknZqAX=7UWomv^i@{+qJAHPhdhEOVj3kYfnI+3gtlH zv*;RV+tTU+CdDHv0%DhUmTP7n{Ucz*Do8XqiWG86TOhy0V^Z8rcctIDht=-aDl9&{ zjw>wsC&9CZ8Yf`tcB{_}|L!1tMcG_Wr73XT4P;b$;4ulvmcKvq{?Vybr`C>E{1nDz zMt2WNYL$^(h*h=+W4Xpl!Qh@XNYHPB8MSs|%PLg<_y`0afu}H-VP-#fJqUOrVi9hM zcmCS1&TQ0IHbH?V8<>pXHJVMFr4ByS{P`63wfi|cP%-#_2Bh|(lA>!KplRnI0b0Ws zqHzczMd82V*m%FO#?4##B6$n92L{7aRfU^<2=|Np0hKkrp?u#tUpQeRI5C4m>_2y~ zR&gsX2lbJ64P{I@;i25{+~%5{{Rl&|0>h0_WUSTETyIQ(on;iy{E^bOMnip=xnBxE zJw7i1!YqCOJVz&O^&w|;?Rs8;d2l_D5x2XF!(^O)6P?>5EqxHds(KiWUl^pQYlrBn zU%R4kA?FS(OfcDQgdjWrfyM~5`@+#cLo+mj}QGxcW`Gc{4n^nNQfTkrV@DG z;tNM?bsNCl=$yAdQqd=%Xv%ya_&y>H3#p-z*H^*m5@CXeo`dzG!K@S9TtisojJSj> zcTlbdF0xMla)5q#gg+Ob?;aN3&g8!#iP95ZL;P9!g;DVTXv*NG86oYqG;2K%WzVyM zM`JerDT~GN@Kz_l9CO(kOL|Rj>DI(rhAw|mfu)h2b6_|P=0g&eBI6g=9Is**>9&i) z=-3U(=al!Mk*pRCQ0rR^dm-uVI|)0!+K_4vN%mD?6V6bHvio-*JRC{J_l0fDFfPa# zXq6;)7;qh%FocxOd}Msk>UQ+fnp9hh2XjUq?50}hGb01KBsc0y-Jn5rp=hi$bbd-} zu&n#sFI5#bNaT>|oPudTi%6n|5Yu*?sGIfoE(&@)wPPVbaG7$8VN2E7rb6gSLKWeq zEF^-lu^NxFz5pCb6(ITQAR!MQO&w(JLMzWZR;OVe`xw z$-2Qf;6kV3dRV!7aeOWIVTOn5@oeqv>j0Uh{)vP$%*&Ooyqg(>9laN33Ex$d7(@Rf zxAX`^iLH!F1}K@97?)iN4Ehp97`v=Dc^Lx*n<#u96)X%~r;l+QX6Hi8#qho*fRM7EC zp2ovE{q#9DC<&SIRyctnD(}M^tGEk6eNO^}>#NAzUCmt*cKL#VfUaH(l6z-%P1(2| ztAHYnDLgcjV?1zyPFZC!%r;mIm`=XIPUAX8ZEbXyc_Z<(P~w(`Uokchv#StdqeJMJ z(5&VHYUoyk3wu~rKi!D+Md;<*C#W3^S!zt7Hwe56e+qeX4$HA%s?4-ZNzhm^YnR_> z%wp9dF^BVF4&mxA8OJqRV5GSQ8@6eGwrr z5O0%ec*k*`X^gWF*yG6x)0UC$Z&8q{s7R}i>5So9%+?vokhIA>cE(hA8lc}!J89ys z1}Mw44FSRBaII=u>AA4iftU*(Sh_8Q^@G2?i zuBR@lD$@b6wX|QkgH)@w<|>FjI}?0^X47%ACfuoFkYQzq#pY@oji41}9@1HFLtJPj z;aFdPtWLF;UWb{tvia$?UkD2p-KIkAzNADqnrrPyV|k1)gOMjk1yfvUNv69CM`Ru;R(3tLaKM20`ideaStkP(%-hBv#HDfJLj=m(Kwy;TB;-3n z4Wh<<0SoswkHR)BYhMVzQI{mQFur_RAIzo`I++SATG-8rbNsT70 z8u~@GegTw?LF;iA=mjIcLeq1@RM7uHpYttkMTQDZZRr8~oRjM+WmS27(6nv_E?7E_ z_jaN#I(YOX^{gftP^cjKTFrz-?+i2oT)Q~ulcshVGiN*+3k`C3e+HRuvXal_j(@;Og%-&@mCDYS|oD3yJ$S$@Jp*(3%m zQK&8OS$p79Y3i3msOfkPTsrgute40aA7ShWB#!RQG_MQqG>v!r*svK5;fdFTa$X!a z6z={Zon_p9GgEl>N5A>xb70l7N*$q2nZyXa?Ys0A`JZOe==>~j^M=nDWVW*a5$|Em z*^!iNfv?vAU+;8WanHT+k!4$FKQsc(5oetWGCr!~ycIM|-ncro=x6S>Rcb+F!U-#ZORn6yr^}A$*keg}T2mUfK1c`U3 z;V9(|K+_@5zMy5Kka?LoFjHO1fhk1R8-l&wHZRu;1X-LpU1WKI$5>h0(pt0qym%V; zNeUZb>fA5sV8!9qPP2cjqBYdRBg+8)KLEfcXz{;7?kqvD8?9!e&rhT`YVi8@&(_K1tJ-`4|E|Z>(VXoz z!;zuwuXM;$gN*BHF7=@nNMQO`OL^rI>e7Ino7`VMb5dKvg$G7k!F_7|B=vchIk|(e z`+hVn%DHY7ZS)gcQmOA6<*VX58CaDPyx~2P;TXR`$Fer5N@sP#$i05_B3vZSL8?tt zUu)sdf;A$yrihdfz%yOyJC6D)b5?tIfu8oEDLM_T+mUuN3^W#mg^Q@&hDK!Cl9dS6 z6-2p$4QDJ?V^RRpK)r7*Dpye>?|6#p4NqL7Q(eZqm1az9T1%w>0Ac$PM4lf{u%x4t z>{=LAVz_A?W-YnfT0Wxk3^(P_40Wyqq_Q)~CpL!#_+7Sdw*&%poE23wr6}0Lfaenq zVGhxpug=fRv8YWRDZkTaK11u6njFPr(eIvn+1`h{>h)Zyyz)PaNuAx6=y(2{T)^nRS1!qK=G?VTSW zzQS4yz{bZ%w7lA>ED{*%G1wfAeRCb7eMJ)Ce;X7Nu=%yI%LqLn5!lQTIJvgV7Bj~y zjf)@zQZklq3Vf6-3NymueD*Z<{8nN70yJ%GxOMfy`XD6Zz-f8UW4TsE!Vi~lX`*Wx zyC1GT9Lvse%-MHC(-BaA7d-sg`Db>CNLdC;=>A)jw1>03cR8uWTj%V{o*5wmyOykF zVgt-oNUcJhcBTyDa^l>{dD4)xX&Py5y1u204euq`IC-`;I_0(E8@CvYrI7=R(%51A$d}hVD3F z-(~%;06>#a%N-vUXQ;98k>~f4kXO^IS^~cCy#o1Dv}avP&G|q-R{q0DFnb4`<@>Id zP--R~hcXQ_$I2(BE1$g6YX||i&{596S69-=rzz>K08(Hu2$3~QjX3NQU=bjqPZVRd zX+8@e*nac)pHzVP7!f*O%p(GqYHhCUBHJI#WfiC32o4nWAU8i29HTYeQC6<$*}`^~ zrowQ_+o}-U$^2Y5D6b8|Ok_SBdd$@d;LbPh0d&WP<+YTEl>eSO@RlFjOMbnO!V}jm>ixQzCO27_3-*P8^ zw|p2-MFmV*zzF9SOAtiYU&);GT~xT|GH30n$_-r}9eO(Z2{SSr>IY5kF>8?RV+EY3 zxq~wKEprMH!o9xc{Jsdw(%DdWLh`COO@@DJtHRpn%s#2KrEn)|zvZ zL&EB2g3~TTZaV&-;2C4)q^$5{)+KVS5XZT3nzt<-i~R-e*gZZ`S3s|mdMD{XlWvfH z?`ib^dorG^D#sRG%*pWVd;3-=a}HrM43fB3)WZ2+Rv6+}kcAj6fUDwz0Z_zwf7Rrb zd=4XZ5bItb%@|MVl1FhFHh4v;Kwgwf`tK_Z#0(s4Ooq0xm$k~PeaNga_vr%{6CAJo z`qM@dwiCrWICP@%lVxQCabKQwIh5n`*nn=imH+w%+?5&6{~yI5qO2jmfRPS$e~;QW z1k{%c%dc5~JImaz8>+(x$T#E#exe}&o#8H6SQp`55ZI6UqqIlsk%bbR8TTvtZ6u{Z z&61EL;@Nq7MpMbm%0`mf_3WDGyQMjRzp}aRpV$ZJU7Tg-KUKutdcIvLP5X{cJlw-B zSe2SX=rAp!B!Xf3o5i3g>t*qC0j=iNji4ck6j@*lG0)hC6y|iGslKam<)F@R)Fed- zR}Xkk_;}2vSwUV?k*YX)uurgJ&!+kVOn+8bM%|8Gt9HEJhLzm z3@!x1&C!@h1NMm|e})nJ6Rx==lSi^3Ppw!%sL~b@?sEoVgAqdDB>c9@gU!i&ecH<( zu==uArZjl!F>b{W5ZRs@Ad~)}uEBIg2fWMX1*tQ{VBi;FAnmUq08Z_cnU|_x5g^e>7BR!KQ8@PG2R#8#5DR_R&gQAosg~bC z(#opf5k|o8RuNsQb#lyVtNDCOfYjin6{^K4nkPmN*(7#P`a*VgK_!In&b~VJ(1F^1w&s>Ob8%yWX ztk7Bc-!p>eDrf&Tfi+kGpVLfi{V4cVR?R6pn8Tgvjjh_+)4oWGn9Z%F;Z9&TNKQ0A zNJ~&b_5t2&ulM?>yx2Rx3p)E^{FJ1JCeH!fkIu@my}q;QWm$G7;%hluN}mr)>#Wt( zX*zb7VZT#T+Wo+ccuEoFM}y~^G#zc@*h6F#W9nXo={Zi)(fQJXu+8CPJZvj#1zEm~ zYbpF+GIg~+MOsLoKq+;HYDE?x8kS!pO4H@sSxw8x+Yo+6FYE|&Xi9CfDEQ@fYM%!y z(2!*%86M>2n1ud1z5PB7RKHU$R$^*^m||tzjB?MBJ&^Y?V$Ksaht+vep|;7L*<3AO zG}pyMOz_}vI?!zcH>KPSGOAdg;7ahd=~|={`N5hwL6;D1840UD{&1krdHylN&lG?t zbWW4DUny;+POi`R3|Q5Exn`hfs*{EUb}M(yVQ-Q)QsuAgMD1As8yxYkC5z}KzWn8R-{LM7rb%{0nl_{86_0`WjW6T9Kj^9o;9`7=~K z@0TS+9$`?tawh~^nwV@?2i6x>lEwERw9-(60^|8+A-p8H=e;h(#hkp_jBiL8!f#m` z3Yh-sk(BkUC}OWc92K2&6j}qA>5WcUy zCb7o=jDs0_B5QxjM|Dlj$DFVp3e-{X>;sp&&VIYun0<7K(OiJBsH`&P_k9HpJzx(1 zPfn0PfgDVmZ(I-<{Wm`MQsE$4g&D;C9XcC`#6=G|-ZAJ#esVy&*NRXejwP_V747-w zA^i+j+4aV4GnE2arJkrVmzuslnFc-# zzxMGy(oD~PWLfeFlefCkl9A2uzqCAAfFPYfZTs7O=;X}7p26*ELQoNWBvk_QHbPtF zGrrfQ)TnKmvr?Z+O&Xox0yXe+HOcP%48TtiBKzu?9amg2)0w@T3j(zR zmv)abP|+nH3r=LFEYU;Z#4|}(cS?61Bz55pZ(MPvoPlJ)p~J5n_BMcVtXz-yldcSylFz2m&!v;YH3-t7fM z<(iS0i-)!%G$a&fbjrU%Z4UBB*`&h==jd%(fz?08u$&a3Z9Y)Eo7gylmpm!ScdgJk z*H3KpJduHK4N|xTi79Gu=UM6shAg0TQf^BDX^;W@hvH1XlR#9|;*f%|g3`raMlk{* zeWbHxXkd~>EEOZ_ZL3t?fv4af$tu1UEbPqHXEDs1r_TTP4=^YYsL00WMBho+IE)rw zW+%{0vA#Sh@V8BtZs;h-NA-57CFlf~w6_tr(;kyA$0n4lin|ag>^QwKHVo|a?)-`3 z_SYvRYpzEHrx{CN+e*1wfc{HRsrz)&Oj5yy8a0wO52w(PVq1Gd6s#%m>I<7Ke(8`V zhHl%%>*)G&N%(b%tzn*q5euLwHwo6}fzFqxSp|ANOtP1lUNTt4nhb2x?5X`wNzw3I zJ&a$tFY--iJ{$z*MPl>nkz8At#U4zn6oXEQ>Wi$rm`XPBjq`(MMZ_pAK%xMKV(Ka7 z=zVCY$BMoH$dA!4#=%SU{p-%+XBUjcrM}6Vf|@k%t?`ua%6p%`vTxCXCo}CBZ|7~Y zQUi=eJaBx2vEZ!`ARx?!!CsLzR^>uUn^4YTEbiIfChvdw4j@xOr@+^Oe!w{I=wfsO zKb=apTCJL~zkV4*y1}GYuOeQS;XxL2f%W=4kj=oqW7~WA0On2PPsh0%p;7e?5I`vtlJVe#C=y>4kN$M^I3C2Lq& z?seOT^cuUwf#$>l=vGG2PD3-Ag^wbVWgt8umX zfPiNFk+c>Hw@Vnt!ENWDL{W1M-l7Jfqu(ppMm!C(!I0M%USokQ;>?OtDTj@J~TOs zoqNVM^cBmNvlK_>QOoQo-^lH~a3MI2KB{hmKaV02Xz2`>Zq9>DX7hno{Ah;5-3Hr! zDSCX{ep^&!nO~Icf|v6Uk1wca0o8?uZ&W&=+^x%+?B$p?!fA*T>sW}ZVqbTu?_aNZ zjD>k4CL!Ij;~Dt7>oKYisRg(49t^g-Hd%Su!XXW+JU*fT4G9?>d0X!6^+ICh&UAL24i zs9q}0E~SCp6`HTi(scPpgr;UFSQJ50g{e9My_y=c696pdfk@7B*;A#}YV0s9^0a|i zSj&4;3_Rljo#RH2MZ&_7hh=A+Jfjv_ObmQpq#gKnxBi3iD;y)}B*+Ut^h-66%3^Gq zs%F{~g5$xK58l}qJY`Hei7Yk`fsTC&Hq~{~G8IW{LpKRQI2xi;V*6}*e|V30Ji#Xn zh^s5lZ&2XXol8XT6zrNK$}vSs&DIsGv(C>UZVn(2jez3qdTn6F$hcxeZOk5@GD>-0 z47yQHcZX1kTWx70#uYjz#mGrYzB49Vp)5JWXhFXE2OUj@*&G}jgOPbU(Em!*lI3hc z!`14~5Chyz3Lpu#=;*Fl8jGR@!g8I|{0?CAW(J)H07W?zCo}PU^ikxfsoTJ^HQp&r z3VFPz1%n@BxKfTB$y0&TbSD^x|BE>G^hv|<8zOkEK~pp$M?aW9=KD9xBfhlkE{AKV z*~e^ghzJ-|+!7~P7W7JTd!^j`oK9V*&L~C;IK=5K>Ky58Mit#VfqQu9)%4gokpZrE zSHX68eg73>6aQgl`3YY~?-YWk7_>Xv*WIy^-)6NSah?|e5YLUL2+sqO%DwL&s5U>3 zF?I6O6QF9>v|#~w>eZ2$t^}}JimAHU(bf_Z_(OE#o?a2Q>A>S#D`>mS;AM`GJ~cN- zZc1BFtXa0o(rl?BfFK6noGM)Op=zKIBya}+G=hK^t=v5{sR8|}CljOX^?Lk#XN<4~ z*G$j?<5q9VIri$YS#A!J4@8k(B+Ej&!Z%ttCJ>9(ZJA|{#Z;pwe7V7wZbB`F3;)ik ze~-@)mKEE=)23h-%-C9Dq0ViUsyX#)&k~W=T4&Q^bYvVgYH8S&qX709%v!A8+gHq( zu%gw>o=@!YY9Uwm83mLy9@SG}x~IKiYb^TmqK1fpHRULt4*_<{&(I^MG2sN@+*?vb zf!d`LNptJWB%V=@E`qlVYh@EKLaSC!o$7DnbONm3U2OhflY=0k@#QhVq=8fP0qvLl z+ki^Lwh>Ss+KvY=!aSxy(?Czw7V#8zVu&Si1>r;OGVSD6#IKT!M((m|> z>d6G&L1V!n$L>~2vFq_D;}9=G>Js11IJ2u-mV~=X;R;< zs@##wf9O{QY2pB+4L!A?L6fKD=*6iOz%i_c7ECHchN*&{vBP~tCu15<{<5Pg8zZNl z(bDT;i^XkPR&VsnR12I{Oxud6GU4Yz4Qi&yKL0H*iAG^sb9ws?MJlkrhnd>Vet(o| zm&3CPU_=)Ic-4!BjG^5kaZ871?V=^I4N4HAQDQP)p4QA2{~heQY z9ntS45>%w_Ei~%dGa!8gwZgU2L!uv`TzU!je=}K6d+t7U|7m`BO`zN|YWi+(f{gtk zr7Tu>5OpMfT3dj-rGg5wOR`eepka?zr3W%ug0Wy@RazKwif03VSKU=#CNw0H8NoWw zo?B%om2aA?-dr?6qkUXw>~*AuJa2a_zf<;pdK{>TS>WGHTJf!D~EK07x~TE=sP0F;(5SqVQ!Rt|Ca z)TE(kqdWj$1-wH2b44=BLt9t}cEuYI^1~mlePhvLIn4!vegMZ<0>G{+{M59z?g8*x zIOp+FM3UgN7Wry=b!;W3+X5q+5Z7+RI@xztEpX`Nz}fwfkxi#*gF}=32*(V@LQ0Uj z5flho?)WfRhEK1nb$nG428>(U46qMCX6&w9c>t2QlgcV$OCE zOQ1}f=i*5Xesui?4~TyIM5x7u>tXE6No!DF11HqMbp#wZGI2Oh-94_6sxvxEnxUw< zKk-N!Wa=s|&r^SlOiY+OX6{XE8ue>PT#W@7RL&a#2&nuXW)L~bJ0CmS6Yg{p`%Anu zJhiH`?sX5$_8;QbvX{Hx$5*F}{jar%1N2+1%eXfAX*n@BVxQAULm%}ON9p!AW@D2B zvOqEX<%or@rOwoEkLC}IE=f8wKM6u9z#lS#Jv57oPGzaE4}l5$CAz6 zF~Ac&A?1%IDAp$InuAa4bWs6;-cEJ;7%G(Z4UwLbKB2E86*Q30_s=I0Zox0qxvb4{ zxhTXHFD`SyACj(CDutaqyzHV}qv3SPnz_mTu6MZg|1y+d72O!?wAbyLXOQ;z$YB9m zXJ}LLV>6zuUiGtt6!F^BgATge67oO2-#+3JaJH>Yx4fk)9%IvkaNvxhNHR_7Q9+F$tj9KDbl91tQGBxKm=FF)ALpStO1Qk>il2%_rinCoj0XIHa zhqCzdsrd#S#G5??_(j^x1Hq$2fG_#|O#fFQnDt(H%~n3Fgx*@)8vA0{%6Qo>oW;h5 z^`IPHu0(tFm9|1wS@_?>R~Z7Spe{-E+!b|k%sonmc!W%vbYnb1h9sr2x>vPQS)n>7 zg1fMjuh-XyfFY4()pnKbAPuk5z7kS%IeEnply^8qMO}w5A98@ zHgn0jyapz9LlE8N<`v*)gWuB)|Epux0oR9JI)RpXFc-n+VucqZ9c*C!WNn39=mPot z=#{z)N0`(Gb1$|0E))|oKu45hVAUX~9_e7kHMG0kdv**&hZujlU_gA9#8DqSF-Qc< zoqn*iUOoT(0kc6QAx#ZSl)H>&{Xe-PxVKj9)8uCn;WbBGtbhg2A{{2wo$5uNg%E5%sMu+`)tplllOP8Z(?_X!rdZ9y@rMyU^o zqYaeciv8~`(N4XSitEmzA|zYwVkX8V^Uk#xuJj7shWzqu1dQadjJs+GysBxiWuuQs zLH^dc!TD}YW%<1vr;SB()}|EIgBL`Lyre9iqcm%Yv9!klRK8y0;wHC7Se|MDB`6)t z6}u~U3n)d^KwJ%bKDTb?by_r;ifL*-Qkb+9Me z>(>-L)G82_1UPWO$qb6y&%#)LZDuT|=DvlrTiK{U2lPCChBu&T`NIvV;^mBLiNoSQ z$(1wD_Jqhnv+2<>$kDA&A-m;JIDJj2z!q$BeXYekd~{f2oQ)IjBvqN=6GT$OK(o=5 zS^K*uJ5n*aHOrLDf?c`tX8F-60m+?N%y*=UpGJ|!+N+=1fjFu{3^;VA+p{X4kt=XhoOEwfSJ+*kO4cC?EMU$sx?g|FydwCp?LtAdZ?elqcr;M9 z;Q@gWi_?H|Q{?qg%zp;j?nYA3wMTxYyBpH^C;aW!<`Jq5NUrNen*?;sn}Jd>f8l-3 zl@@PxX6*FM4G@EBFLj*<^zJrTV=^uV_zoaM3W@7s2qyp|_93NU;AJyplHOLp?PE_d zYh;~HQM1K;YHJeEm+9oK7iEc(JxgIpnF7FDDmN016aneAjd+TxhHF7Q{43O~n{&1S zg-L>I&I^E6PEWyr58>LNzqGwTBA#I_zkjpuk*KMuHM|^G)0A#f!`1#vVzBCkw@@cA zR}2|OTiyDa|GfY*#13qpF%Xq_R;rw~!wUB1e=DX<6V$aWLE&4E2}=Gvtvu#5GgKsC z{6prd01nXN@Dy*F?Old4M&l}GmGRWE zs4rkpfnD>a5%5Vf%f7j3M8Vl=xm$q(iC`Qfj!#7zg}7RH?tJFi3O1jT%-~=o-=Hi; zZ||v-G(_|xVzvL?Nx;HcsYcr&SN_YhCl}Ec<(?fl&gh2!g4PSnx(lu6)279%?uG|{ z;ux!C=QpJ2@*QejDt4#O(!(u#+m^bYNKYo(CF~(E9t&W>ma|c7V)~bHX$2wUjv;2^ zQ8-mhb5i~yQ2G~MrOi$wSB;e)7|@H}Xf3UnnXZ{pe=Wi2r4y4z%)>CjhprJ=G+`}q z(gm5GOFP^*Q)Fj9aA50(c>a@_kXJiYG?#LT6BS+VAp=|R#zS8qkD!1e3Wrf$bW@eZ zJ+0vG`*kLo!Qf|a^hG5kEWl&}rq*O06y7$qPU@R52`2DI5OnKI7fu#=#9VB%-CTdj zxOn>UPw+0hMt1TcjQkFdIwpO04i?zCkBKl64^7j2)wGIkSh_VWUFYxzlgAiTiKC70 zeIH~*^$sroz2-8+KlZOa!aAa9RqNrl5W6P1A!yF8k454CDi0b=9Bv1i*zbly*= z(0d@8|6pJi7cB?M1H}S{zYg0&&k$<@mU|i^h{v&jSo+`+Xs3~p=XSChaF%H|MY~|Vqb}Aelj3vrYEoc_{0;~)6W6PR4+dF$M%m=ilB2wkku3^ z+;7wGUu`6xkT6Pnz+Vjc_>j1~gPrRK*L^2+ilmWGI;VG7{YkGEe?9aRq2&yG^-?b7 zmhDS^h-o5T%|!x-=w|*|Egd;CjZkzN;ttPQ;Tk4~gHJeQ)rwXa00MfmCUEsDQxqo8 z^-cxJ1kV<}_4(5U0#Im%razT5UN7nnA_82L(qhH#rXe z_Aj+EAF#1jh)5(fs|sr~6NY(B(k}R!1*XgjKI1@DFhsI0X;nVw*#8eLbvU_0A%{S7 z2xbo9av)1K-cN9gADW}bNx+-DMaD_t?T52La)P03UogJ}H7y{vojvB~WzcxWeAA5& zU*wDOH!W6m0wIj1LT#>G8pBjd#W|s`0C8@3s1y7zETI%AU(1PwZp@VYXtDqtyKl*< z&Bzs&qy$@c^(FFSW%HIRhWU5g#Ofo=L9WP5axawYd8D>*Ii8f|>dpxv7$a0oBLJPA z2{9?dD;!70m~=8)1WILIx^_^uqzbp%X>GHDDxa+{lSI->LO?TuXMd3i4m*wdP6^po zj>p(5_7YlLUxp0Uq-#o^sK@!H?}E}Mt^L5{GVBtkiVUx-=?%JitkjbjwGZ%08;p)A zkYGqSw5!Fji}su3gOQf+HpWk8hayGDdm;1dnhwble`?QszRfbI+B$x!vY-D(a*i%L zl%3vnqi9+VvS;m>k?aE&;BS=yj6Ggx(S#$_t1Omv(3A-h-fnzV#b?Ll`?2xV#*}B) zb;wlY!!J3%y41x4!R0cm$DyItr*}`H`84 zbGk{(+KpvgSvT<^+IVi8=R5p#5ZoDV`Wg`l6TO$j0puLwc;^D>C)MA#U9~@HTdj^U zv~l$Mn1)LjM|5qKZHc7*qh$DavfTG@^Z>oQ8Gl1BcmvEa87-JOE z#=6sdh)#o-pz365awWgFc6OOY%xlFnHN3Qx^bAqQV%ZpL-p#ePCXjK%X+%)bg~NJ`oszZ zp!1WJW*77^RMf%>R#%&Lv#9!>-P^!&lqiBZp!7uf6;mo7My-5vzv+55u0NAWRD%Ks zrUW9Y3=o}CiCUuYC11!`#4hMn`>&k7u)HBCUfi$jsMhKz7vi6`bD?Z; z^=uyhd#lP+W_d}PabVGVb4tQ;vj30JpDQq(Ai>pxR?p34^}v=luT@s#4|h*bRT+_v z=UN{thKgH)S6|MB1RY2b;)grHZkEij_EKlj2#H#epPgCS_=(xU#$UKaRhf|JyfSD@ zU?i|y0Hfp2SCsQZ0wwkLV~#G~3%T?=X=uzTeIot2ic>=@6cxORmvHF!AmBEgAV9@~ z+L`*nle>nb?8rd-`z{lTPP@mFqXz?M44Te3WoKLAWKT-gV@>hRSo!<_5)CcYo82({ zLx{QHI!Hto2~v@5@2>D5Y^xMrjre02HmgA~4Ag}irrX*!ZvLDWj#WL~Bt^D?I;NZCC zFtr8#xxEf3>4+)$uOh!x=gSawXv(@?m7zk*a>T{eNIZ}yK=2%bE zB$zX$v}&ZztRP5p_rzO!0P7vtpMO@7J*admpDn^u<)>TQNOywl~vd}<+Ex{Ty>cK763L0QBMDBz)-sljWIQ@^NuAgR0 z<;&&MN{YTatM}jP4hJi7Xay{9b5?x<9NI=&t3sdtTW|=il>{9J zOkncKU&nJ$L=lcMU>)JPE(a#3z_sPXetkP0;|Pu8m9M2ex85GDGJxE#!sq&%uTKV1 z(YZUV25}@Pxg3-x;9ejFmg5 zEc)H-c0;D5h@GE(W+@4Kg3?tm+O1@11i5n|(~Qn#A=^`G--(Pp^_07Pj+A-Rh^q%=TBF&Ye*XeviPw1xgn~>*1RG+m6m+cd4lYTh{B+RFDnEX0q<9S{!23G1HmLAU za~q<`Inz0^6;I?%x203_p+yDmFQJMKUS7YrX>KzAwU>TOkEci_aF6F=>``~E(=hge zFgBo`$}eV$We9^uXqjbeytV-A3dJup${b#GXWjEL5lGwpUXLLOx8n4Fph}(sPX2l7 zpC^+beXhCUMs5=o8U%P)FPXSer(ya@FD_IuJbS~LQW(1N6p99NUoyAUAc35osIY3l zXm9@i5koilSAbwt$NRuLe1(yM6oj+XY(~qQdytjN-au}L*u2b?iV^5UW6#LsRc&o_ zfi0X4)WEGt@?%XO)PCCaj?)lAbXF{3lVfA8azS+d{9k<`YJ?(DGwUGfH9R^F0+D^Ld)9gXJ}|6YGgDed6Vbnqry4D2z!)mB!974iz^+D1lqbf|N@F&h_n?dK>K^gp z1iOJ_ZH}KLj@%_j>yE5ga?u7qJPEJD-tg&7zdD+O1omR~{^3jBfsH_=RQs&qRHJqJ z2Nor^4oMEx3m3ial`BDN&zp8Tesjr}MZ+aTo0;u+vQ<#O^JmilH=@rzs~qfnAw`>& zC(#?V^E_~h9#aNXVKPW?0$l%acfA3g5FqAPRxad6Wp9csB~Tg?2>o5Sv`88;ksR5f zK}8Vb-9eo2&(-@qAVTeHey1X9FAc0q_Avt>^Ll_acX&e zB%`K!(ZsZFYl#95$w20CUa5Oy7|)p3vJX0a^cCluL^5J+&LDV=Td<>82Ybkcb8A^d zd`jztL>$;M2uWAnk`ksSX_hj!Ht(%KpTcQAv%K)xpv^(~F`I3bB^pwo1<8n5;{hEY zB^)|M8Bo}@(Dyg{8rTS4GR%ewFSlW`1IJbtFqdkQ(3ci}O9|IZ(Qmg5;?wb|31$S_ z+!fRV+<;EIZ&-CL0vWzW+G_l}fTZjcbOnhMKDSK)gQcuK@Ix(U_0? z0ava=Xu~uxWIS^fwzlK!eYe(?Xb))5;vR+;;KwHN&ip0Qdb0KEXLKJ*!{zqB7IXL6 zxKJQIr3;=5f1K{{_y3j@5G;mbG(L*Kk?Z$uVjsJzh}_|^V00yIXR&AxPRfG}30TRG z4cN;;2S&KVD3@`MDNWZ0h>7%s8&7qpB&?(=YfL&xPT{O-AHEis`8NYcbqFJqa@Nbt zTPf)r(#Xjt-bjAqnBvq&QzH7C(0V&#;=JwYqc`Ic>9qGj+_yZr5R z%7Ou%$65$&{sIY!;E9zAbF@<$d$2y^$%+E*(C@TmkT>fxrnd;cp6A1I=%Z!y*Olh= zkAHinbG#YWcJ6Z-mq-&MMA)&mI&_C1EKaCMIfX*{1BjjOhwqhQ$=UxZ#U6y{(A7d$ z2!L{@9by`8;Xxmy7JZBTbG9zuGO=Nc|KfqE%(U#wz7k--Y-uBR^%YkqM{%^M8p-4M!puVl^;1a&4Zv`WU(V41 zQQU@ANLGhL!i8ewjVgepHYw5MK6*a`6;ci$!O*AJb8+c!FG^>~_LFfKs$#Y4y!x#oj{|qqF!NNImaYm?6+KUJ(2JCWI27^z4_5r8?^?iwfe$V7gyx%)=T>HlifK zK6-FcB%PoIERsHbzH7gq`Oku&2Ll55#Vp00O`o#HioK`nsd2sAaOtm4AAJghMuHYD zHb3iTbIcm%8ibeU?EfVuPCHSE)BDq?gBfRZv0 zliZ)k={Fb{`RYSCjsLsrOzrNY()Ic?=}m1sWH;feeH77$&~SWMWeV{wFIRrK%H8x- z9%)RAJwuUAmwuPrRCL7;r`&jf!tbmF>L1j9_WiB0fj(F>Qi!6}X4wg8IPBVAHHn_} zNto?L1_>gpNWl-_Bck%Z!$5pOPoFh}H!+0L57gJ8k`H=S9W1N3a8gHVvAxtzY+${=Fw_e}`AxP|B7UFeVjt z@k}Jj25l|_cY&nAZAUu>H^RAvF6a~GUWKD&<>mOp?Zi62fehJ`3_>>6XacY0i9hXD z@OWzXGktk?KKn{)^%%Tl5D3ZED0#x4H?DZe)1|nzD>E%<# zdm~=(3|M%pY(IZQ_7$%g<(ZopeC^D=#1F6+c`RIS-u7fbHgUOTv-C+Yhw*t5joLW( zi@_i7u zSA!{5sZK`HPs{G$={v@rTJV46RAgZIw2>T^XpQ@iL$vaAh^|K62c(42YB~$p&1Jd< zeaC&RAc|tK*2OkSrml`zR-M-=eiFTiWce2 zfww*OZ#RH$yWhoT^v(d2+wLqO#NwWli^`D&A?A-N=exR8H$M$X|Bf}HAA2eC)<){B zorHP|RD*9c9q`QdDZBorb|3R;tXL_Zc~6J~M66RG*stmn(1rLx^cQ#BHD_>L90Emf z58O(TrRh$KhU*E#3dyThsdO{o?i}Y~)4eIyVLrq-x&@^S^a1K~nH=h$xjI{fo!4~{ zNElTiOP^oXpp?bYd4n9_Aco~f=`*$k)E4{dEt--UWje!G>Uo{`HlfLTnFCvN{EOP= zTJ`rpz=@#+B3w|Vmvrxju;m5}*}|JBwA)tlG}T?ER;S%)TcoVzpWon204hOg5?UZQ zej_vy7U2k2Zg7%QAVFw{Ne%q@ekWz6mGfI!jqMrS9wuZ;W7PW{mr(F}#a#3focV2_ z+s!Yn{*U9`+KkZI^hjMRTX;cY-Iz+Qw}nht9+}b~4`=wfTXa2RT==x;5M|qwn!`8t z&^y|pUQMSx7)&g0V&Z4t5406jA9x_91JP8J6Ml8{hl89CB-gGYLh3-4RmCb0>dBiQ zEM$4AKw$`Zudc5EN+z%SbfY-;D-6-ST2`-o_<*?u{af;nB7@g%)AyNx3wIrv)85NOGWg%65V zQ*SIBbp}Fn28UCL$yV>~@GZQvsKsyQP8;UqKo&)bN(t*($X&c$6>|^nZ6xs1+v$NT zZtSxlOVs#u-XuwWt;(@}B6>P(y90`-m2iGL&K-ZKm0W3Y_d?$k<;1tc;zQEKV!^@+ z8;e>lr?nDd0SMFWn~r{@*`6u8EvITXBR;Qlo;*j8kMJG@QY|~zjrz!n!m?554WH9Z zA9;{=YVz%SX!#o$wRW3@Dm!Vq5~4TE#ti#R_!~ckvtsuNgk38U{nuSYt}u2fV%aPd zF;w(R84^RvMUb_pm1g9BlJXZ}C5nQDeC2T0MHOs7h=(+!yZyGS!8H6;-? zPvptN{K@3Uewv@S!wj5X7QwIHN8R!je}|yoywh=2m$y;Hc24A^{G1|7U#Pll>dy`uml3J8tKg=(y4Z zktKwHGXOEraqQ!{XY^$KA7iQyL!V?K;E#HKRnHnH!6S1&i=b+u(d&P*+MHghty^o{ zgWTKo8gVl*WwErKmT<(Nd{ObS-quD1{?naT#B+}H&C$h+E&9+L^~TI046X=7TZ zMQ23_Zbb%Rhd+??+LwCMvY#gpSVdxjOL+hUgJDa#ZRt|WMAh;v9Yp#X^h?0G&mqW< z;huX{sPfv(Kyk-CniydkjO~eWR4F;33R52nuGC;E}SF0 zAjrnfbD0oid^0H>rew`EvZ7c>JM6r`v*YtZwfZJms(Zj)(?8bj_H*RkWJbnFBPbt8 z?@iNdPW1ENl2=e3W^?QA+0KOOm&C?lnNsA8duYaTA>Ptqm5COGgWsZZyeplJV>*mn zt#*fuN%EjNEjS_bKkz3<$plH}i^bY7uY(p!5)&*b)g|1IjS3T%32YDS_oUM~I{446 z8q(QL0}Tqb^J*Oisi#YTjXl|F6Xu(oU>U(|*YYtb(@?>|J}uz;Bo2 zvuFkoZU&^}gJ2XNE?L)Re}>6r31h@;QiRH-)_lTc}LapPM1a40)>ncd5KbnBWBKvEYB4{ZFd>T*d}>al<;DDkDiJh0Aw(`X64pM+>nQscx{aW$$e8 zg8i{@1ThUC{Lga8oyg=d1z5USFLz=xj?rURts8r$ABsgMPLFx6^6j!4mn-)vMcp zq+Bh%-%w5XlPC$L!e-iSUC9t>iCx9JI)(Z0&|Ltzroyvw9Uh}+9PkP2n9zp8qKo3m z9+nTDkn7S^s~3VgaOfuM4#fcfKLEf@_SMv3Y4*fh$9sDNzwViS1Lu#W5Pwr*^}wJA z>htUJmmP-0DuV<|Sk?s0{%2x$5t85t*YYz&V95r)s81W~4YP9U*e{*K{N;rvl)j&I zU9w&I0X9VWiD(wU#CFe{Ar+K(g&$o#)!A+wZ2E{f6y^&vM3zyclmUqZ znH8gjv={2&4N>HBz)7loBcQ$-(cAT3=R3yc9Ltcvw79vfS924)yte~O1KcD0K<8UN z>g5xp^^Nls^1G$#Ep@3inEs1B)kUPK(w)`Lw?iZW7j!y&)U?SV{8&|Q-G9|nS6}5 zVF@L*Iqa;9uV%%-1q@5%qi3c<#k{;Bg~}*uk|~lXkR(#<0C@@XGxsRWoKq)Dg}E7` z)2c2|-a7HVBE6MWtP-0_qMVl_6w7=Ky~#_Y{FoP?`o(Y0WS+c;R=w7!wZfL+Uu=P# zb3i&qlC*lxu#1jXD)bNh%z8F9(S~voi-3fCGVBFpU!L=XdYgSSpuZ|Jyg(z&uzDQ< zAug(onuxLco2n3PVd&Xuk%tXe-OnvI_x(nhim~!wlLjX|kL}j4$$WxolGFXdImF!j zi;`}rm63YZU)p(C?x`hGB5dSZH<@JS*W?SKTy``{COdH?N!BD>bW`ANG&Uxp&5V${ zHguWky8h*n%2`-XB%VH6MHLAM9OCa9EtdCMaA+u&xPYmV_E<3G) z8-3E~xS-)kCgc(Y5uavhmu(QTy8^*SnF@Z*AGELm&N7A8m7&<@H(&rxZVuF^@1zai zFP2U6CwLdcwrJ0h_M(h@j)HR9aPW-V*Nq|t1xA(FvJku%2T0bmfE1Yu4e?!5r&(as z5HW<|6}-i1BGk6#PaI4ppQ6n3aV|aWO#|Mo**N1e3iQ=BGQ*leB76ly)j(Qi96Nd- zNsL~@PomgfM&WlE)2n9X*QIE%J&0i|FX^N+!jB(u?16haOA4;~igi=jFnAND?I^GR zM5Szv=Ma)JG*q@Qp<4foO`%mB0i9)jv{s}tfgbI-$ zniKlH)gOrOfkP-es^Ad7mTN?y<~@3C??G$HX|_Mh@*bl`HV)6J(S5_{tHmPzG`}{p zO-{;1%19c`xAVK$uGjNCI*FO7$#~$0D|^CT+nUIJzDcNUe;B$TN=WLD33>`fEc()H zE22>U$^Gsx=~Y|w8*z(oPB`=1mviD|Syk%kijIB_8Xeb!H)jm`valLCso*hj*Gk@& z9{acf2up%J4@v*!GLr{DDXN;hM#RD8r#dzWw8YRnw*00=US6_;NKPmKOMH#!6=;|e zye?X}gk^nnuG26(h#e`>+Y7?~R2JB&Wz5&tY1|o~E>8-_ltQUba3KZ4m(2ECm(eMgKVqVTbcNCR zA6T$4EFh$S+HQ=5_vk?n?-IGOAjs#q57TDbqM$Vh3Si3*+NB`wCCq14HYkSwR%;q_ z##f^WSHcI#{nXH*d6sWRx}%&BVyXI(x&+RBC3{z$f-tXUi z+x8(Cz$ahH`uZkZeFy1Tyt0GF5jWFA2g!pbLE2qF)t>??HG!oLp%BzY z$jzi%@~s;%oR7G3Q@{|2fgU(I+)_iQ@&>8k*ST`&2_2G@xo88qpNK@DHyDYR@?^XI zGuVgE_nSAsP(EqQ6rLg@4o_~h?g6Q9KF6<0s5DkTfn9y66UsVaTh+;BDA?pWW_mHJ z>%x~VQ;SCRavF!LrzZPbqzaPqpt4AePi7}skfo>_^CPCmPlW;tK`M%`NX8CW4lVpW zFN%EGh1Ko&s`^^pOfT6;%Uy$>_7t%04!H8wB8d;Sql6#e+5&uoar&4*mgm*U{Wn7h zrQ4dM@&Y>eyjV)%be80mIqZWkg;x7?PInhOcj4HWz|_tLs^a(o{`s!oxJxCQGim+Y$F$lJEpGEAPk zASB$SgJj(SS)fYgr5XMuki6=_oLglrS(G$!%?@@~C63Ed8{RC!bsib52rQ?}XyH8I zBuwi=A5m?pEch-(9N0kUfmLWggl7-zjomBAu_6+!q-dC}R>V;mDn|dzc?kN6C|~(J zQ?ed4VzJt=#5lT^|NM1jj>?lIB3X#C7>gv$k$C+%UXJD29TV+!(IIWKRv^bpn>ZZ) zNVehwKv6O-IJ%Lr+A&<0nYvvj83d6qMK;~6-??@>@uolLE=|G*A0+&nJZGm2ARd8K zMojVKjpb0WFpPrHavpb|-NZAi7Sr zpE=OFW=7+e@ZG-%3Q80=RaIg)kw1EXHS^$wvWf^r%f+8OQKj2UYC?vLug<_)I^p!~?@lgv!u$>)tEUO;f${Vq~S(D={yIbzw?Db@<%a`hJa=J0b@{6#9QBAg9jLTJ0juJ7c@5mh{o>Ma_K<~^7GV@8ys$r4-Q|_3p|pC z?Xj9Nky_#o+$2+{MxE(mnDAonI;T*hHO_U#O;Us(N|1w=4$#B;1af3whQD70lx#vB zV&^I2T=CJ^4t~1;Hq7x^5&mIhFo%wpusm#OLk%Q5@^*oHw^uY%`gmx>?^+MEi{N!$ zGW&ijo7LNcz28%vwg5y?lFjH1LpS~6&`9lu3io}yLnUHml#HemAPI>;vl5LMR;&-w z$V>gjyG*^r8NAqnUc!sf>Lf1wuTeBXstE+c8bD)0wtB|;da0k z55HwTcca)QaLRg+MBYxyCQDs0j(4|leCV}}{JN(ZZ@Umx*xZzt|4eVEct7CDhy__nqHS%; zg1!luN=@1@bB=ruMkg}J=Y`SReDw8kC$ASxbZ@z5?9)ya0Q^DVlChY=mqr`z05Ej( zmZZqn|ML3Pz;@fJMnaGnifb3jX3E?w_;@nx_#y~C56-ei_fGez(Ux)J0phFRT|=gH*t(QN76w|Ai_s;9M+3(K>dvo6Je$-xOSf-A=<80qKczG1w=slW3N2!x z9cwQ)*i0%tky%ZqZYDs6|I}TzHO7dF?&zrd{NyLq2$L1o!Vp-%0_v+G+L$3fy+u1d z_QZ@ebKUqLeD&$C6MfJ^!HeT3m%7hQzOxWL*7i&e4%)L9;D{ujjBHLtGMA_dEvAJh zRMwMPs`Lt)G9UA-x*0QrQ6pCywxArE#_6A^T#2e@2#E?he*3$#gyAYW8vZNe59~t+ z+b0n~wWST~W#q+r8+Ho!N49Xlhd-UX_rm$T6oyL87YY+;jgI;d$E_Yqmh3#NaNgsVO{{`AE>+;g!RDA zKho%q8$+q8cQ;p1O1HEU)QJ1_8RaR}DAZzln}pGy+pPYhb=GI=w%(@gABV``Gt0XK zQ#O}XzZae`Aq)xD&{qwJYjP%|_Av7i2%;k-sp|p4wMhN!KHWOu+Ov}86mTH2^B-lT z!Xc$Sj?Z;tw4~mCbh$6A(8vt^E9SK$z!~?|8HbWXrFWb1d@w9Ws@2}YTpx8&)lW-w+RiyYbJm? z&|!2u`_7Wnz>Z9HTxP1k2Y?4Pt9MrvKAhppR{hJ=t>B)fsMcLGa7-;au3{mRQDnB) zT;T-UGS_K+!-!Db0L3RCp%T4$R5ATk0SJ&^fZPFuQ@ZG%4!O~xsdVorSbS%J*dz^n zKr!xY2>Hj%squBPG(%40E4H03?~KA##4@6PK4l4=y(dbnis(Y@xdzd!%PgG@BvNTUB=Q+#45mQO2+9Cf!Ham08E)i&mOCVIt*ZRQ%Wo41SHCpzHDaY6TxeY~ z6lmOr>1Lc-gD#9u4R^P~Fqbuhi0~pqlc&-N^UB)MyQ6$iHwh0Y2Lcuy$RaNj&-VBX`De=={thi5{=mVbiqRf15ebe}mkNaaErN)1e-Mxl# z<1XuO&UxGRZqItbp#G~2{BSpS!ncG$W2&T$4a1kf!d&aCia|FTTPoZs^? zi`0giG%{BZ-rW6NTXEBDT(Y`-draC!`aTL{J>9QI<9I!$Tn68};JVtPc@sM^j{ze* zdmcVMj*WDd25ix>02d?VP?UBuwj}S+#u#Z09vR)HVE2a16#&I(aHEyisA<%_b84{b z?j%&0?8FlFCwYMtr5D;}ED74*D(d00$hl8NeO&vEgNuPfa*)PcF0A{yyW~sA;VUT8 zxgL(|!Nw%f5QMe4?mcs93XP>X0sX4ChVwN}kl9EVqZ>7U1V zm1hOtnJL8@tD6u(Ta49$s{DhujEKGXj-%fC$7Ai z${*_OD-YVdp5}7Tsq_D6p+Tkcj=NzK^prn7csyDfC_p7S==&G_0E7H8NFf@1E0|+9 z297_Sst(rg5H_HHTESnx1elbl2>AfJ79_MzD6SZk%3F+Ues3nMdEdQz{lwOtER)}| z+gQxIBv_Y2VJ`o20~gBdFxRMlfW-kC_HTG#elR@B2d%MJ6aG9x(72h!n-`B6xoR< z9@5eqN*bc95R;n!%WGRxcewXs{|Cku)!ywWGfYOG42V#)o>O5-1P1p9g_7+2ZdNya z3|`Z4*(peKO2@^hFg(NW_CXa)&*ObnMz}x#^nv57*HOv*r+(qu(zmNzYZwF%AeJM* zy9MJ0s(eaMYO)g-3+oxT^UiNVVqJO8yHuk)Z|3Tgkf$;Ar+Eb&y$?T3>wm7o&syE_ zhTpT3U92ouSa4WN;Z_qT0K(Oy(MB7KLKy8t4TRo!{y6122-(wq2lGip*0NxMk-mjq zz#>;LefLiO+12K`0qK`F?Tc)c zUVQ=JO$6*Lyub>K1#+GLVB7=U=3`qL3~5@ILRor!^c5xmoHaq-(z0F7r6VlnNcHW* zybCGbpMI4B3rbDesBSf1&OEsSK*vfxy#Pqd&sbKP`4(PE@k4wWphwTVZ>?Q3JMkVn z2A;)i<$4U9?U5vgx+8g$TfZ79M@h7~S4UHJ1B1PtsU_oN6?Ey7fFKvizMlA}`Bw@E zrifNu5KtBKE4ZJ_&IH_@U_;yE_$pg?mPrz6vJ!O5^Vb{n4AfDou<1>9};EZX-GE(Gkc{tBw_)B20C6h%FX|)uz{^t6hxWBP2DIt7GC+ZOGZ2%FA(IfCEj?x}CZm9hL6#wPe}LMipUyXJB#M+Gl)k zy=AL3=?}(pD+G>-X<>5AlXJEkL`BB}M9lv>+>@Jx)tNczvui^p*N?J{iAgJ!9djDX zhfTa`XYUTJz`GF`7x9!eM~K2h;Y-zSPvLcHIOy`h0e|p{`Hk^lt@_`bjIkf+DeMt9 zf^^xTcgxi64R^aqK-#}>TF@q5(oUl<`NU&pz-#w`jasvxXd{d}d8e2`&W8j=oOt>2 z^bFiS|LHzI+a8=#=gJX$HAQPCgJ|Fq43#>*;$ZyQ`c(lk2@J-V;S0({MD%SeH3%UEPF@Kh9%?NI=t88B%mE-*qA>310 zdH3IxTN|t$EK}0};1pVeUb-|*Qp5DL9m+x#3*BEpp<4V+$3L6sQboAaB@Y#8S}Q5cCzs{}!K3<#4&=r!DVlYgW)6_w+2 z5Ou`Zzp>_E5sqQN8ef**nA>7k(V?~_L+y19A0+gW>|-~AH1tcr9qg&SQsuC>*ncsa z_}{4S{~UpwMSe_)_c6rNR!wI9&)91E8>jb#q>(y8)@V`B7hzEQ%!KWeN~ihvH9PWh z@j@2C@j&L~k!qkI$G>{PT$$&MyxLo;AarkZV4PEUxV{Xs;?kFUw7sZa-8m+d`sY^C zvo2gvqa+2Ytq+JWV7PeL)m3rmJMpzI&*Zvng%Sz@M$L!zH}H|Q+K4ePPmfLIz3yVN zAAZhD0u4b{g^IH9?JBYr*r?D>tyNp2FH?m{2kx zMZJ`f!VNutij#bTj$o}}iIz8*=4fIpNA}&Xk6Su(y%%lcalxxTUgjEyMd_%s&gxeR ztj&=1#G`h?*~|Lj=J8#YIHr>LD$fFm^xbzya%D3MyLnOILOi44{7C&!)eBAlZuZHZ zTEggRy1K(}q9eKA$n>ngr$Mcxsm^Da`?c+h#_zlX%}6!jlPMo7)O zEX{qoNVoGa^yLhA2gMz*&5$2l|4%sBFWLtzThI1JdS5S(l?90;J(=T;?h8PWwD2Km zwVY5A?g25PFn}edELhC-HWY4zjpiQTa?Zfz)5#o3fZxQE?$ONgn+=t8wD_a2vp-TM z8ER`r64t%$O#g-hPpLJ3C3L*F5H}D`O4DNGl&G(FuK#i5_@8j3V&SxP4$hEVQw8rZ zAS_&f-*h2`m;Iv+05;Y@_DH&kojpUXI@SG45K>&tM6>Je?dag^Oz52!`*<6=xf-K- zg&1vBm~vbX?QOu`UYh)AB-CD~GOWw5z5PoMX0&kY# zg4fz^ho_oJ>`Ww}iFDsfy^%+1aTD9SBH4B9q&JI`9Fxvs3%AkB7>f;e8BC&emZ#58?y7||}hZ99BKQ*r`vRJ@_ zNp0PK8`=Cw$?#M^K6G>)aXE%uP|&QDS(%}Zh zHAh6|8B*vmM4#+?FnIJW>D{x}hVV9aF4_(qlPRn06k8i<=yM%$aO^*4MmUvu6t~c! zFEL3KM4({w4mubKrmPsRtBMXQ-ZzS5cvDsP2P08>H$PYvS^_;cQ9_C5?o)Wc@n;wp1HX6m(*xG7*5{`+m>+k z3I1%#K!EIbA=z6+{%667^_WIQnwhSX3!d@+zgh{R4};fRUM94`m$Z0*u{wz;FELHW z>o@|Ep}`(;RR}|Ey={>goVqqj9ort{dE)@kv=QBkxcp|&H?W%c!LCFuvufhik~aLik$^|!;!WT;!rx>|GkDDuRsEMgIfll<2UV~Pg4P`& zd4WiyFEj~Qv8zzq%I2ShxSpV0$@P* z>L@cgSg3RN>48rLYh(5h&#gzcL6MS{_jwrKNtx>3hx6-bN&)2bypVT!s*3U4kD(zw zep~^RqUQqo-L*wS?;d_79ThUZq54Dwzaq@h=98o&Ice*;ERd@5Q+N~a+;Q#9Gcvty zrAm>Jjo}X^l=-V>o8~t|k_XbnMZ@jMLxlJIc?Dwv)Kuhp%@$d~sCeiq7mOAl3W(@Ke?g zFI*8P)ExHB0WVE_UeF=5MX8kX>0&ieE-b)5;6}_alR8~|zUobLCnllD19yjzfe8qKf&(1>~e9aQC3o@Mub2b3yBS6lqRA^8+1iz3|B{ZB9fR8VX|_!`|e=J z3(z3)STlJAt9i|s2(|C~1aXS3UCAcJb~+pDv-lS6j>zGmcJ{%Vo@lp+&}H?;2E#@i z3r;4_NrPQ~0WbT|PI$BGX`qc2sx6rp+tzGDTubGiA%#S6{gox}kCJPw{xP?BcrwincliOgu$q2S?-a7g zy>5>-WeH(o?qmyotfQMpC6b}b<0bmxaJgTsn02%%0J0au1e^H)j6oh!4m zII2!TI3YoC-K~=MK<9k`hRmv`1*{*B1oUVfERUzG4~zp4KaeF?V`RF^mNRVNB&~Ga zh0J+;4+EY!*N^2BLe6`cPL0MK*_zk804gF5ye@lvvQk(O^$N9m+LzAS)uP- ze7Z*fPne{NOwXs25|oN{jamuDQc9=RQ2}eWlTiVx969Z65Uj1y>h5hl8K~a~!P_k# z*?Hs>mCWu}<4xE8bFji5-+F8ruIc+zA9YxJU&?IS5?f1y0=AS2P3;9r82N2`cCnIv z#g&jqv@%TanB3~u1)X4%%nniwkrd0MCO`|j*IgkTm1p=GDc@_$_9X03%lmr|3Mrfj zxCJOHELk84f}6DGKwl>Ja4(A-vTK)V$xbzeG)=+eK{AX}AAhX}3-PVXrF zr%*I-bSYHVpfB!bT|}}iGh=&UImQ=Jxnl8at|AOC^jUx#&-m_4Y&%lYAx0_5qttwh zDC&qjyNyvMlJPc|p?)wS!x)A6(hRc)S}0d1ZRYGW_3+ZnP8=l^js~`KqbO7;X8wIH zd}Q?p%Zsx5ktIP4{UJC_ZdfI0H82Z7XYb&sKdGh;G3AXHbAPHuP=Ahe+UV?*OnKAy z6;hAfQemNOCyRiert!jiBJ3pc7=2er!SKJEpf=-B)i?OrR!e)62ATO5M^B`QO1=!T zzim+GR1k3~0v05;J2;!$T%6CM#58TM)*pM86V5FO z_Mld-GJu?}JGAEs6?PHmT;|Mn*vg*(v7$p=BXG;aTvacuJ1>-n$`wOq+bjy-q`}5| zK3Vs)n!=3IaEb_Ek5vVj1Y|eR_>e*z#Qce@X*iS5bva;JqDm27w(K1TRDx~*{7fSw z+JFHfbxx(n6Z9%Y(jO-&9}ua%TAU7AyG9rhB%12A z7KY=77SQJmLvX@Mx?^#|eV^CZFEm&od2M&Y8_sg$;AY(S9UN8t>zFQt=5M?n?Y|f5mmNG7 zm0?oS_;fQ-$<^mPWL;OE!jcO7ca2CF6@sRFf%T6G)Zn7}>gV4c2=H6k7763A%n`x> z^H*6xQvSO8(s9CJxylCz>5btxNdnr%nF6v)vdo!ENf>nDLA#Q}E5#Z$!H^g~%W+_; zbK2MSiHcm=kN7-s77j>P?_W>G#QAhWfh>|1eywhN1s6IX%1%GC0Gu8GaI-XQtJ8<< z8@js0g)NPWxcKw5+#lnEXAQEs|HC8)(sxKz__AEO+A+N_ltf%LGVd#iM6?zzl^%Z$SrV zI(W~C^}mnmF68e+^g0fLM1Bg>>oU|sL~^?2v0<3A#h}O=Ana)w!`8E&rnqxoNC)jS z0&O)&5$GIK@DsAN%AoXNpc89R__${yBP@A>Tdb8#G-xu7o!Za=NVkx%Nw0zzS1e>* zv#2Cs%5$@%IB}bJPxpuYwal1_F7B+z5OXAD+?f`8LqS85&B-SXhe2#L_ln|BvReItjd)heyU?KN)asxQDf%@L z?I+KUQdZePunM-a`?t%5SXt$vfB-aE6~E0-%aH2ev;l;Q4s6=}-_| zL*0Z32Rm#Dv92#wL4_$!q(814FdgdGO5yb!Bzb|>u_@%kxHjE-LU`1Ha`iVf_DrJ;(8bzzF=E$G{a|sBD)I#LUEXQ1CLh- z&;DNOn0y-{dLKSUnX0N*;(3Vp2D%@Z8j~BwvS}p(5luaiZ0UgO{N}zX93?>NHE{>d z$so0iibs8X8`N6-E>p-X-s=B@wtq$PQY%;g4V9Dooq6`Gn0IKI80*dU zn5kDpno{1X8Hh*k!G^zcvoBNgHNAee2}BQ46DsbgEBb~b7xxiYx=cW8WUEphu4Q*z zhv3kxbekUsTmAO8TVW&$R@CtD+%0W5#?*;z8f!$#W1cHW@6W0Q0pVngNvS?n(SJ| ziB;F4UYdB0Z2yAc>=PE;w;YlVDO#OST9m{RrJ;BJS@9tl0D_^fh>%1ae)Oo^y>fnX zz&`yAmOS_ZF{mA5m)Vx z*-)*kYY+xMywLUovrI|^LOL`0Z6^H9+{^Ph3d@gTE7}s%rwxOgn*q|zpCBuypqo&} z(W~wmjgda{-szqZFpa~HIj^QtO3!&2qV351ODjMEuq9w#ACyf^e}e3UW*Ab68b_g1ObjluA+`;)WsFNu{?CZZaMZ7=#2v-4Dg(|o)I~!R>Z`#PhzQBMT zKs}J%9;_C7Je*T6LYZ0kGRnu=;=_S_(cpHb>r)s$YZ*g_!i-&mcC2_&@-E6%n3|1r zNPNos+&=aoZqNE{6i&?U`r6jx4y|4UFrrv<-|y?!h`b&LlSi^~}L#$hm29JSO^G6<$20PJW;UAn}hIhzmX14Rc)=nCu4toOT zZ^>A5c4T#sgKul3T%n&&t+Xv4)(D}6ie=+_&#KU&=Lm1-DgC12F^H{>orlpK+s1J5 zq{$J(D^w`(xApZilOFf{M|FA@u$L*#=_0a@qAB}HH5`GVVa#xauo|%LJVbFqj7F7J zY{QoGZvY<~ix#I}+Fc@!Xrx<*cN_yl%cpNMz;N1@E z``q;bhLd%HgDUODa}MZE$x8^S#}nO0oqf8546CCEr7qld(_-`swF@wuTdUQb3?!`w zH^iWeKM!JC*SC00aC%7SlQU~86DRMcv}3x~yK|j2qZ2S-!~KdvRs;I|{dy|Co?6jFn$RNEb%wB>GUbbnq8*pYI+Cr!e80_-YL z^iGaOhjaj8PLHX%BE-F3b35Mh9@1vdYAu=$4DpOi`Ab+1>wweGD^~~XPvrvzr5jCi zXKx!PxUxBJ%7}z68uI}HF1k9#ZgNEz^Cz3=%R3sB zt6c{8E2#qQ61gb`We~d@sb&`1#`-!K`7^YwW5Q$bbbYM5$%t%tCuCx41b^;EBk4cM ztOt(5cJShhL2@i#S}WJJb%mm@ey|V-IY=NFI=ffSu#Q1P&@6v8WQP&KoFz(!?)@uVZG&bXPBwj=fJr3X7x}j z&RB~)kI7lJVYnNY$oBAT;~OrC!S@y)B7nPG03$kmllOyXz-W_L+L)u}MAW^U>iNxu zz8=VC4` zW1oh)*44JvXurk5Bz`W{4D$tG=*?a_w5N}zNwNdi@86h+AUvGT3|>73SnL+O-e!bC zSwSlGji)KmD)-oi$WYSq!%;|S1g}z?L$rNqlT7LXL9+gCBgSvjspbW3C~SjM9IA=hm_zYbw8|v)oZ= z2sJu{Ncu&UNSxF+U5_+R<<ghC2PLbOh+ ztn;s*60i#YWSYvQK}=;;^ZEt&AVa%u0TSpYlfIb9Jf5G^JuPPwf8D z(k-{>ScF6t_)<)O0*%E_e%ahQ@%I^_#GpKE;jZ4@dE14~-~$2G02)!~pD9;M@8rRR z`hT1+CgXR5YFG>id(9I>)xLq)rZI_alYyLa?yOu;)}DEXN2|i-avB8l@+gnB{!Q$G z2H)}^oelKo005&;@y{&|CETD+gFp!XhAg45&0JUd$&srnE-v}SBv?(qPG1;+@wJZ3_9f$~&Z9`O9UJ1cxY zfULv{uM8{eHM&^@x)~Ekw9HHnqWaPOVWYL<~~pk8TG#yEIl>xq@Bz*6icPX^42X z1me!d0K#_BjyTR{{%LU~^pfPMzx8(N;t-VNJ}H*icQvY$`N?~-#I6rRU3c+wM&-_)&}fslvpFc08H&2D1LPuS7vN0HK!cngsGINSDk2d}Mk?+qusjMnRI=WS7~=U$m#&k9_QzzN`tBU(i6+wEHAIn z9WDd9K7MuDjl~dy1#j2w*&5S>32H@3AIHJ{E=rH96bWn<*2DtbL{!4{GooR}W;3(N zm1h44`4(Gj71_NX0a)3itQ(T__MA%_RGdt35h+z#hQI6UTQV!md1p(i@zj5Kbi!0f zf|b!PSaY!gzinQUdpp&3pdM(jyKio0#wR#3oSgtdtUePkd*6~zrDnNBq~fe3T*%pl z7o^Rt2sf&~{^iPWbGfnjLode)#pe8b6bul{GoZ$a_a+Pj69rqXeu08f(D1^4k<8Br z{gPcRr_fgvAwx5oVj9TK^93$e#!fXfs>0f)@LespehZq~s%oXEm=OCfg26KhF}!!4 zP43#oo%0|RYPtSz9|D#P$-1#|B{QMU@k7pIDq3usdHmDF#t){TsI{)3U@K4?hu{wI zKru9@C4H{*7rltU6axgS-NJOxo^t`|QNj;*JR5IMk4Ed<2=%(b{db8xSZ!?ubh_KN z7`)EO>=d=Lz6DX&IJ=GOr;~Phk7K=NvHyN6lI!}C5YPv0IG15f>5p*UOtnsX?O023 zk_v;;n;y!ON&nhdd)#y+Q!~ATf)+8qiX0SRL zk>+gQ;z+Um9?d&Z9izK>u5Zkk;1#`@ZKLBz`>)yFiI2nu;CG8`-z)bKzf>N55Ntxh zB-qqh@N-Et8r}S~cdKB14)umiiZf1b`rmVyGnilsTc+zmkq!jZX>}KR@h5Qx(pti| zK@*B=3Uo^+Ul+VK;4&`r|Ab36#GGg76v!Pgbt{(aN!%S%$Ork=AqSiOwY9Oi_+1s_ zv-3O4y_Gu##}?VuJcBX8t0#l8CXXEIkvff{xG1rsRo$KtBOwN+%uA3)rC$cgjM(WG z7gNqul9zDebFjlFXAF&k*q^J_PFHXDJFQzi%VaEy+aA}PZQs_E#g(nrvmIto3y%c7 z1`hyM#~ZZ45-WQ7ZkRIDXEyZR6R4L4T74EgeJna453CLBoj`EHQE)AJkQW5A z?djHSouiy|VzBx2eSlRwx!u%zZRib`Hwd>a3F9KI9V-vdNn~J^a{(VQiei$v<8Nal zJ68We*RQmp?vj;w$djkbw)(3g*ypwI6biYaAbn6#@d-Ut1K>lRro;q*J|LZs|d3<#vOGN72{*8N)CxpYnNk4PJs|aGF zIjkjny%?d`g2y4Gq5ZmhKc|II7?BDTgA4~-@a-A3p@ zEvJZW-e3(W@*%#`GU4%0bE#i#6Io;kj!n1nId-<=&Fk_6Y!|l( zQ6}08V&T#vZ;Vrz$@pwI3(^oUi*b_67Q?h_Ac_srdd)6lgFKGp2G+1Z8483z^s)cD zRor@qumWM$7WDD85&CD#Ze_OC87fOFzQ3t%gS48C4(E+*lK;cYbffFEL;o`R?e~&b zCz$n$|GHD?a?QieBo}0v3~X|9CoQ|a1$a&kTPq<*Hyyc`1;EbN=92xexO>vjdjLV5 z<~3x9;C3QcnKKr1gAfjKGQ-bT>T#Y%W+J$JeeUGVun{`DN^S(ev^QI;~yO7}MpE zAZS3teUei$Ud8z@i7PxiRE_#!UgIR{@-pU^^A;QCmhG3!=ZuLQH1a0DTxB9O!&Q=; z{93ZD02;un&WA)~ylKJc6~O%~ROEUZgTGfNHu=4-Q_k({X%3Vqw12Fs#N*s2ldfOn ze?ET{&ppiR&-sKU=R{lI?&TvUqzAWLRCd&KGz-b354h{|nOJ@9Spl8zF|ordvxx5k z`BypfCb>GaS{nti3bdyE8X=1=qN){PcDxqODHL#SUHSIA(qS{6N4{;@^brl8YPt5y zJ&))=yjoL&`?S`}BFKlIdSlJk(=-81s!+PHJJb`=BPGBv!P=L9{9hlb2T4>SBkdo7 z{EMJhWl46N#A%xzW4Bot9iIxrwew8|^=wU2$(^t$irP*pusVnKkx>&zHik&>XwB>; z_aB#=G=UsF^{83Dyr)8iMraRaa%Nbz+5AGH_=ch-n0ts}P!A2)`DCC$vXi1xFF9+c zqG&)S!XCM+qrs!4pDxGg!J=iwx~0Ap@z+sZp48sDI@1FU_?QHk>7Z&jppfD5=wNhU!!*sj>GLQYu!ho=*3H*e&@g!x_RvB=Aq%Ep3uV*V2gK7p+wx@t za_T*7XLM^YtM_)HI^M`^On`#VyI)5|k%SwMU_<8T}_3o!|eiTLvfQ9 zs6=C054B)5(IEa};Snli7nze!LRf5-5{F8NgRuU8R~RzFoVFNBvjMn8H{knVEyCoa zi0Q$8A5vLLZj6 z>#uzn0^dMLgWN(XVa&kZ)LiC(q%%E#;8s)=Z}%Jw28}2ua1&KH+P#4{wKkGX`>$^s z4w@H?3Q5e7>hgn=v|)!4fIk&{q*20_Xj_gV@hY^udXwDag}AADJ0!~9)ZfMo9y*2mgVk=p*|8m(hUHqEuWK`>&u*ap zY?sx^t37vRsBq80>Pnq?rK01{|F%Q3=vi%!NPXvT;7{LT;!AM_WozqzW^!g=yZiOy z@vlamOO@cNfGxS1Z*0X6H~fn!{=Y=nu737h1+ClahBKF;eJJ4~E`F{iR$OcEJUU&* zEG;d$?wcpZrMgaz;Eqbgh%dkD5uSsVAf>UxJ8ucSE=I}G2f8Lweax+ADc&d_?Y$dR zQW=C!bim0Z_(7f$@0MQ{*QYA3B|9sX&)H}bt| z?AIu$SZ6dbMHRYVJckcva}6+@CPS4`HGcsAKLEgqBD!{5k+f;pwT(Eh148q9tF)V3 z!)JHCQq!3mwz}|UE#p|5aM=2ZC7bfsNcu+IXegN^JxRH$KnXKnU{-FWq)2$M z@<-SUoNZe5M;GFHT&l|{?##%Uir;ex(#HvA3B#*HFbTt)R%jczztG@g??^D=F=CTA z6WDkqDtyXUR-l%h>?_2vXc=Ni--Bulx}35-<6jZZ0S)coC?SZ0f-n#D`8{5W=j*&7 zBruA=;9*wPe7q(FOi`)4vKWhu6Gg;KI~C-r!Z5j%mQ`Cx zy;*P>uMNV}5t$+_J||__CGk&VyUU$@Ya+aM5z|wk|Nc0&ZwUzryb#$$L5#%$O3m5H z3i#lsHO?(^o;L-gZq3@PwjHP}1H7?a&|@@UuNxqE;IKIIMY+#%Fbv&OU#c8byI8i%xLg_#pVN;^QuCy*Yp7Z0BFY zfs=zzJT0(-+}~Ri*r?}Lu&Y4HUX}U;UoL_f5H_U)9i|`6&|(HxX{-n4-AgjiA8{BU z5~aofE0$W4_Dz6_E^Y;NV$xJF_$)s17dTY~SFlDUAUp-h;F`WG`Rioz1){whv^X01 zvPpN`(hyC3{<44$T*$3O9d<6>3wl#Reuw4hfL%cg*^nvE$8I7=@D8Y&35y4v{D(%A zU+Geo6-^Cmf{TT9h1ohMQ^kKaJ28A|3q0kbYu`C(Kok)`!`%`WmsbUADs7wo=!QAK zn44yW^Gw899#ZLgp1a`Is;g4&mqGxL3v7W8q2ET2|PUb5SJ|R|a%p$>a z6JHk)7-kIwMTCg=1%{9&8sU_*eiqgkCh>B*)Y(vK$gak|TkF1_#lh^=X?p2_H`e`O zEo~C@7^)mp>d%TJd*dC8LYxru=Rgi&(1r6AoYM%rUBi%#l~dN2wo{bBBT?+NGJA$k zSB-$i{)ulIygiMBu8;WaC*Y8jfhn4Pa2Cga1{>s5zi-K zhLrc!pAy~YeHj6|EEmwKB%C*T8O|dISH2^weKR<4Uazv2Dx}`g>#KeosCD3!or5gl z>-Cp*!_dJE?m9T9=L4-Daia==F9$W(EeB9BMxgf)AnWZBDqG!8yZ!kUCNA5-lTZ;j zsD(SMs)fV6=nWAuDBKAne}3~2Ra2E1Cc{ql0855OcACU;#^c#Dkxo#muJC6)T;=jh z+@w6rS?tSwOk(HW_kF$<*9wGH>>`0yKi`eay>sKCopp$IzO%g`5=4rMaH#r zaNo~0hsai*1r+dQ$$03()MlB#1m+YbIS9qpa?Eqr?$~ZGQOcFoF>Bq+J=P`DJ4#b> zIl5R4Ksr=6tF&o&H99Lh>d{2K=K4tnW{<%+Xb~279Jecm*c#l$@*MVyYb>cEw$koQ zGuhu-g_&dOJou>gZ?yS?C}zTmYFR%pkpDy2OzazVTHwY2A(3YC{6ok_0u&x}@qw!(NEw%NPN$x+2LDXg zSITiKn30JDoqVMAPP5x zzuG`DyX5P1JTAJG`&|~F689PP#!PegBv->Cw{C+)UUXy5ev0SE6!75StSw*` zZVDKovjLO}lo7|hS@u&5C48v}jT;m!|0NIXQ?ef%*ReN?TXtF*Qa|6(kvE`Tp+3;C zDnNt`&=dwFo!WdPKlNG2yr=9Z1Xai!P=CwW&psl1fApc1n&6GvXv5tEr)!)1v{T|f z_!nvR6i3DUI`EXXa(78nZJK{c9iOz!3HD~zGXXraj*JhBLZ zz0}42Cm*nI8?Thp%BUWY*Sd$DgP_7Y#3zR{N1KRPyoG&8ZO*6bb!^!5K zkJx#YdSh`cYo)mVf{vkg)73|TX`4=#a!j(xy9&OZHdxOjkjvhD!t&cAyUhrdBLx9S zeQ3A8lD`$+75Q)&q?(c?7Q#@06Gm=QQ>W1shglhtqpCCY*;2OCG;tW)Ls&I{dDj9> z@VpgE1orMD$-X6Z=feJOU8eQ=`?OE=n^bP{GzWnU)td8!n{Ub!cD(zR35U6A%KYZC-rZ8Ko7B1dqo9Ty@|%> zKjqQ=7QeA%5b&9?B0kwb-DBF80wHiFCu!NIVkK+V90b|XfOrx zm>zZ;vwvFPqN{Col*Sd39Xt}*q!7eS!bo-&S==+@VzD8^8$3e{N)SevM3b+?Q#rMB z*?G%!s3_u!MMYUol#6lOYqrBr^89XGQ=IJjuhT~Xu4oWDr)FSgn?mWgi<`BqLO8x= zSC(s`{;P<1L$sJBI2$;frbkfB1&fv6B$949hvvQA7^>-#uBayl^q6^`vn(@Tf46lMddW{AYu$vc`9WgPQu8E3&PAwK{EnJWN(Q=4khtsBglof}c=8dg68 zc1O3*Q(q6NRRPNVB(su&O34Tq)9~d7)fiLIR@x2t`aBge4Sx{GJ{g4MQ!gpUtK7bf z)}WwVU>#Wbb5n=wH-G%B0eWxCto4XwKk3t1GXU85?khZPf%p>qL6E@+#kpp#l41ku zlEgwr^6M&KOe}V0VF>%poc%I|7Fiyecz)viq5S7$*13zQW3!HWe`kLmdn)9^pj3-+ zfcfZlakK`??n55TQUj2m|gnWpDcdep05judNIdJ@zGDh80Yamfo(WCY%f z=jQNKb%7C2nr7mVS>k6cHC2o~)u5l&KouKjXc;9b_caC8#Bc!X)D08j;Z?_->)>eApRg{-LZp^WcY8A>009xdE zbYe8E3S&4-7qq{snS}Z-!qE1Z*e0%5v()LbCUKvliXT?0?~Yu;KqKR;7bWbWtR#WNCuJe7$RpKo z=@Kd`nrm=tYwYwftnShB`F=QOaL?SnI{_CC5&Sr*7r4e+w$M}aF=Y&UYKP-T)okHn zUL5fGmfgsSeNk-Mzp0U>W1*b9BeDMSB8{dQQW62GHJQ$rg=&ByX*!E}QlD07SP-}2 zM|3aY6Jt1F$NWRpsDj7$LTobqpu>2d zVxpjjadxQ0-&Rdz=XYXg5l=NxVr7`a7is@QURqG6U*&J6_;n;-In`VAs*-#DEUA!s zYAC-7he%FxSmOI;`1}=EwpV3+HiCK}4#8%}^y4-bMBKE&RKNC>> z7oz%g@NDuj$y5@xSMZk5Y}4hi$?1S|*{b$FqiWCyI>n=m{)9rOn~dk! zMDH$k2qJeG>d$mUi*5}Q&;YjUT*Nx0Xj^46Vm{=#!jkKlT~3Z0pYu5+s1JuLqd2rh z+x1uSOYNq})b7qHT73lagH10Rf8R2wKFQY+1qQ?H$+Dl5&y7HOI)Lv$x^kScdw|(z zi`|~g`Q|^Yv|+;adeB1Y2EZ$Mcg5CR;!OW9r3<&CnTv0)edjfP6l}A@O?;v^kZV}% zFG2tjjhXNHjO=!PD5(D^g;Bk?EQ&utdJ$kP2EZ-~JQ847 zY|v!H5nnlt;3a1Yo*S>C+g+zj($nX`&IIfxJOco^%|`NU7L-tMqihZesZ`i zxlG-SS#Xm-ExyknfSPiYSMkzY;l(cHt_EX$e~p25>}}8+9(pc3;0^Fa@JovRroie| zq9Gp;A9yzpZziALb<7L5oWe+Z-u&$8j8-4Bh z07qSO&(0ISHajC)Of6a(FI1!uPxUlm2T2qisg*Yonj7@}=A`I8FslYtxlLKXjd3?A&iA3Bphz=svS zT)wNl(&mR{VVeEPKwVwBB||&RxFIW2-6>Rq#F}$VnySIjZ(wkgZbR$N%!BiuJTe$m zyXT^J%k;;a^%AWr-MR|&^|{6OnewjYj=AC_?g!zAwcyO&@jnPqU+_hl+yLrYPrSIe zq%NhC>3bYpG_>g>uSMjEX7Evtqy)r?^O<$DY~lAtQscL5%;21xgwmzrnL6yGfmFTON_8X?1hQO-Mb=v04I#idML`IQ4mteQJLLocBK4J#`G0^G`PxoT-w2P_kJ|sv3n+7P)Bx5*s(dxbKkSg z`xMdMY6F*Le5YYgFV2wyA6JvkLh7a}exn?O%zo$^erl@=GHhn!7WO zq7n-4OA+3dM`F!#mg$Ya^S6+$6h=L?AEiKcV$abVc>ZrY8SMRuy)pF9!@7RqwJww3Xd-b3WcW4z!MAh9|M-;*$?9 zXNhl%S5nsK44j~8uFDgkd~ZA6w1=hmgjbvPf3=%$;%-$7B~aVfZ*|Ol39ysZa$LWSM;fpkATE{e9 z>{y)uf?L#wE`{7(jLE~o=-LSlY-24a5Vln?mFH9_&=Hn*0Kx|IO=N}g!2i_}4lUYi zYCzP}S&X4?*>~BeA8e)9^jQZB#IVilz1o51^UOVA^vby8Nbk*CPsONB$$NmX46pSI zomh*79%t%%A?hi0YXY%0aWtv1tquXkkVP`gcLQ^bK9`r*fKz0SZyBUPPGj$d`{D^nG41bTHJe4 z464tq>-$)x*&l71UkRP3I^N3!GpgGVYw$iznS1Kw8NHoUOJ-zzkZ|ThMm{J6PcI2o zU0Y2MYI|JZbXVMNYODg!c3!49YM24=_9(@be=fQ|vyQkrQy->gaXXb_>+~K)&!06^ z0;JpM`I#1__m@0cP_9Eux=$9FJMc=@Unk(qI z9L%E%5J#=0>6o*@&niS>z-&=>X`VDD(ZcN_`MadT-GM}(pjJ$Jy7i&x1PsWCV3vH5 z6JETUQLj*;Lj+kjLuMIJ{Tvx_e>aGe@IHc=MB9lI!}S+RNw6z}?)zb#aip=D?1A5| zYomi~jPG1N))+LJ6+LB_z=m@Ox9%7B-2=EaJuBN)y`fKIrpc(qHQ@}UrHHvqjXA~~ zT{L@Qml4V1Lz%(WqO-zRN>W^EsU*tbUF+i3^;vZ7Y|r=GK*!Gw3e_b{Jn zJE0+V%L8pn({}CSq6DCZ+H>7x%&l17t8E@ICSuF`x=g>lJ8L=s+(&9hI6OS{2@s9K7Y&Nv{$i*Eey8&&WznS~R zYUF$j*|!Qdwp3H!i~RpnnAeTQcV_1${Bd}g0o$1`tapiJW01$OWFU2?M*tEGvp1-W zJv#kqt%x^o&m~eXSUYr&BL$ z3-)BxO8$blj}g}gUiTWO)Dd}wB z-1vC-m9`*~5LGF>B43XcvjZju+0J)H)B7ui{(pX32b-@7hk>a*uYO5T0?vSi$a%EW z>gsj3qFKQ%WIHmSBLh|v#0l>@CE8KydseE8Bw5kIsGZ1=6|W-9ugW8sAt0Z{lJA;d zBpAQXyGx&@KPSu-{_`B#ijmc`!8mbqbXHs7d7H*{RWqbS_8@Q(gLOs~>)#U0Z1_>$ z;vp;Lj$bZWfpc4V1{Uv~qI_;$x7yu(Q?%Qg2g5?I*=3P?dF(QQv?n{!DQ29Q%V#9l z0%8Itq*TqFzvj+?y=wfDlPi#}R(b&X9kv1j+e~~yz{UL=$Ayyow39WWq@Nil%!r!f#_Es7vBb@dt{M(Iu zKm&rc@!bWn+Usw&74t52F@@Dw>SwhK^=2R?g5AD`Ai}?ONKQm~nvC64-B64gEw)9` zWhS%e5{4Q&e&z8HW{BQXwz8ajwaUaYGNP6ITE$}uC?w@Pw4gmuryw8| zZdu)4a@8rT5e5`kv_c>?2<|xRV^#oy6F6?bH_~1N@OgCV93JR~f|q~7Nv5eaD^7wL zh13>Jjumw)kzBDak#3;S2Qp)aPlrHK#5zl)9JI)hpI78lC%UpX3dHmMs$Q1G-X^@Z z99fqsGY3rr&RMl%m&rf3)O7_>I2GDlz1*A(69QS+Htwy3(jBj*8Nd%4EacvBBl#N! zfjqKB^0TLk%wdn~5ibmcOQ|c1+vrq(Ff4KIx}5X!`WswVfApzlUdI$Nra4Ss^0YLR^?rvk2X7diD>Z*95x=gef~Mb$EfgujxISa5$D8n5d43!STCqtE7r zE>5~>q%U$EW+f`48A=AswKV~%R&Ce&-J<&0dhJp*PfOFja4FfV)d6J9!A=wj<8IAI z0KJ8`n_jCxI0{x<|KhA%vfM&=+AG^Q2U~x5nUzatUPz8+^vM+v_7~44^ctWCO&V_A z2!rKiA$4V<3$(B)=Hgrg+|gup9!j0fiIcV9D$hzwXL4XFI%7zETd{SM`))5B&*e^# zCI$#$bj9WUC${o;C#?ZTLL)aw+XIyni}UfMwe%#j!bYdduF9wT$qH+eav-d02+$%& z>g7GTnX+=@>h}1uV?I;%JGG4N8~vGe-po?XHb!4|;@?wH`xs0H@0V%GBradCk$HhE zC(gxf+bLE$@~;65FE`EnbvP+>*8av#5me#8_d5j}ir*GvhcOyA3JAa@YW(oUM+!xI zwh6@ORL>IC2iKXprPaC}7yIRgpVxtpV^j{?T*lwd;~MQpfQQdi#p8yE$Ki>p1va{f zDDq#oI^}Tj zP)@q!oYtHI^R4Fr5G9mp6sVWMzEn|Hp-NZ=G-8H%kq`tHYPomc=xXQv0PhxiOjb!g0IRnM*)gbBVAn`D}sP+0ZJs>{PcVikva*~vi01f7q4>eWx*>Q;M^Cp{x2o?^Qk41G$xn*=xZZ;jn{sk1T+eY_xh)kj0QlC2D1;i(H1o*h4>OIfDp(!$=vs@< z&c$h@&q_o{WJkg-1-HOHp=WZWD-+^MW1!QOLL_@CM@I>n2t-?J&4RyPLib#%^N)xZ zDI3;0fB#WxT5RiUtd`T ztPPaO)@$vb`NaaX;8j|Tywp@uI+poS|80VSA8{5*x?!tCf)RI}cf+6D-wtL-I@K{^ z?m{^E`F`1@~ar*zbcw(kuQdRU2LK}!+J%fk>5u=|h3Yd~IF)OF7 zkxM2o$hQdmg~Ze1gnmVTY87M?@|gY=ge^pWuiTmHCVT0p>juMgLdn$2a?pH^=wN!Y z0-aso9{zk?(7YF+o5E1w7%1=CHk80nw$C2h%kV~*TN+9N`H_c+`vYGK_6(`vfA%MR zs;d*eY+b$(@+o!<8V0fg#ysIrX*%YVVK5&rK6O93g0(Sxt(y9On~I32fZDs00TTl; z$!T!y$aAn6;zR3MSo4z@pQVyIAu47}HQ~=Q1itBe%nGZ28f^R!!RFMDv+jracU1p> z$r8c1aTS{nQF9?xn>_zB=6(zals5(Z?3DkCNyzKHXNec<;UR;HqLW1Ne2fCt6>h1i z2idIjH{(7>;qbXiig}PAkpLmMWSLu!6@4NS=*ll%WTiK{qAH|ly&&3cQvP*KwVD5! zWa{g2=~jpzIWha+Sti`+LP<+yCQhcIy$xG8#98&NPdQBkftyUqAW=ALT-LGp1 z)B#PL)eGj1&uNv@0b?@;prlo~jpCJGUSjGnn2)(|*lS&Iw z28G}zrb`)ytGu#>yX`EMGG!p9Aif+`y3=*(#jk~5OOo&4s$N-Cy%Le^Qb@cC!`@lF zk&FFHYcvb;oZRW7lTZXxl28T$HU?M>*XQ8}W+5Wu$sK{31omT`IFd?O%H1qd4St0I z9a^bh=CC5LIC*N`ESP3w!7KzPCem~E5*w%Q7-87bPMlr7QwGmFhE{hEb&z1Dl{uAv zfrpNn}*_F%!I zCW%l3Lowh&pJ;+V_jyJApXO%oJMN(I(SlN~AI@$33D^E)0v-}W8SQB?wCy*DLYvR( zkJVMnV9t8jhXFHV46Qb+o%3?AI5934kn`7jq&^dGLG!_Bw@XnN7oyRtW?lL9W1(aQ zEn0zIMbDSFqHzU}j#h|x7n`MV3|(~LhPit%^^FQl7&woCr@dV*Z85Qu>hkmjK~*nS z#t30q)86Ul?DAseg@)*V&2Oo`*|-_tt6dCW#^nj86=dgP=M31_CDDu0N6E>#nHa2V z>8U*BHo&g0P29sKOVKaF zJW1atHYKJ@x@;JV*Ne|y@B1P@-u5%+oLd@X>i)u%&P-A?9_3P~86iYjAhvDWZGSeZ zzNX`^f@ifozcV`@Cb(N%Yq$RrW0B$OPu%#%vv9vTJr&Yo)GdVN=(sfe3)+o&*RmJV z*i@R2@-8v?8vEY+P39M@doY@o-G+h=hP%{u+*aaLO)#*HNSGjhJbaiQj?KYLutZD6 zEHV}zlO4uGo(|U;!?Xd=x?=y8)<;m=)_1Q>1@Y?= zGX8AJxE-)?rXeTX5s1hu*_mBiq)B9j=NnwLjGOqJ1*taF-o*B1a7fmRbd(u1pY+BQ z)Mb=d=aZ1e8U!87)N$b&s6Qe$@I>R?AePf-BHRv4Aa{2ajHYngkhd+60WZ_$-Mn>+ zM>YU}qzJezJmHo~uVK+%1fD-3X*UjrmzYwgpDcgu3^&cUehi5{fD=7EzXF9@lenXp z*sekpagVq1hWMTR-!ozu=0*nj?~yjMLv?f(<=(91iSa{dU8{!-{My&a2Fe+|AYZah z*6uzcHiWGgb@Cdlw|f>Kpd{Al#Amt;dgvR(%mo)Tr07Om34z~fa@v`MeUNO--U(xB zIe2bR9tpOKJ%9zx6ujo6yvxBG3pc~C$0AKPha{|t;+c(USjuVS*3_*uKK|mQb={}< z!OF@9Ef%+IuE^~Mk*V|4X_qlK#57y@Otb3{0iZH1@ME=H?FM~6>oNEmy{4ya_5G5} z9qQk(V6=vLx?2r)R_!y+r@8c-11FDS)to-jB7FY8u` z-39@9uB=9WuKrLpm)Lm=nU{1@m)~|vk>$Q^R!+rY#F?ZZYX(_!pR~QAJoEHl542YN z@ge#=4SYb6E{{ZPTub5hHE-Yv`;rSrr6s7Vg;Nc5`lu4si?qJuj1Tl0nc4qf*8rk# zxtYy@Q541jLb{R-DNFfrHGOKUSNOdCA^~c)GeFk-F_~ zgUIxunJ`a`&Abps*Cl{%znw0tngU{&+3C%yJ*Ol!toba{?a70tJ>tyPs4?egXHVHy zgXBL~n*j8)l;h)Y*fBPBNvN;w*#ydT2dzOpWm6;ZmQ_T=+Kx1j7D0uaNomBLDP#FS;O=-g%J$(y$v~ogDI%*7V-n0Ua=KrDt*0Wc*N9ETx_LAFMl$4 z6VW~yOO$H>S)RH>_xu|6bP+|{c4j%FYBy*zE<_GHUQmBcxB|D$G$gBATJ#lcg<`No zN}Gw3d%|Q9Ontb2CWpV`YX)l7Et|WPee?j;gA$2va_s>h5(vDiCLWIV-*ZGm8>`Ob z9UwkKF0?VgvV@yp?h9QE@N70)O5=7x8lo93DMUaGN|q0Shw*i6Fdb?wzQ_-zl!?CB z-L)m@J~#{2YOhXGR?wLer ziO}EXj~tHtv<+9G7LsVxb8_o8PCVM7bbWPBa5w9^p)~r7k$o*P4!gBPR*LAKNx4Q` zFF5jS_6v5)0?)45{>%j+S07iyTZ*Adk#4(Bd|iWChDgProR+2tSzP29QpK|?MOu|Q zxdVoAk5UXq2Riu7LH9Gft;_`M#cXUF}!! za@Z$8)hoPhQ-WjvA`IQFf)OG%!iv5a@9%_;F;f zi=HRttrmY;TKI-%XG(+4I_8*f1@86tUZ|jiGpyucdLFSVJIESoE>QF?R$l?yafTQ( zf?Pi8A7dei;Ayd$%Uqg1ezHLOyn2nEjnmFcK3I-%wFFbWU?`+OmI23s)P0U?@O?$`JrY);O}1NLx1di~=xGR$;#X3WXBP&nNd zx3#Mlnkm)-{3#l!$mq2up!vxLZQWOhJqfWE^V4nJ z)>UILA-6Ii1@GqxflY*p4W7sc@AIGsjR3>=w>BIJxiRD0EHmDF=2e-M^ zNQA7X!tr1s`v+Tsunt&-ytTms7?ZZ079IypXt*;o^ekfl<-i?v7}WY|vE+fZnw^@g zvgJY@p+MSW`RU(zT-g)LVXxtna8>C|IT`!nOS$%`Thdev$~}OnFH7BapniwE5jNz4 zfe4%}yc~}HkcffFE#~cmE`;Oi5D}3$Fo0D*8RrI_3Cyf`>e6Y})p?jjX$oK#6p4Yo zlA7Or8OJ4kQ8v@b2NSpo`5yCx49Kp0Q<9RIl7k$xS7xDnh6qXrACf`Ioe1p60{LF*Wy!EInDg==vE(q^Z&4R`K+r5d&GUN$&~kwQgm|yfO`T zH~Luv?(T3hVYySXFj8oDDN5Z{j{=b0y}l0FNN+f<+_zaX(=Nm1(>%C;_Z4_!vcz)a z+0XD|<)6L~0Zky?-p?RQUObQ5S1kuv*cM}1H>hj7DVk2VmN->VN?VD$01ag9P%9$F z!DG#yHTXJd{TSgd2C{KR6fz~Pi@G4%AOJ{J;bKGS(U;x5_|q8kb4%LcX5`3~7GBYe z5)PE+gPsGA3K!!zp$4&13bo0%iK}^%+pWS*m9gc@2@~D9wPCq^kEjf!XO2oJ-mKpv z0!K?hS5`Ps9J&15J^(h=rL6ANut4c}E)RoBqZNceluKvXu^M&@>JSHh5cb8Tjsh^f z44`$$2W^w_hXzxu_+~*A?tGXfMRM*RQso?Vf3=_@AkSXxj@Mkf?{k-=3ZjkL&I!{G z{Cqw;tV`>c4+I)YchvSPaMmeXCri3BF}`@M@N!ofT|v#<9Hl=U69mJ)j|N1n0{u|n zhp?acXu<_GucjIj9VO0akdxVcY_QP_L+!Bj%+nzSVaD_SC!p4slcT3L|0O;&! zJRLW(QABayNN1ypT4=k4x$n2v+7e_xb|M*{O}&lYBd@U8-q#xRY#?_VS^CFmpZc^Y zD$e`SDP?H9KDsqydnMKtZKn3!y$RiREUKTlT;lh3_b7ZoQ1HLN_?0d3AA?i+r9bHN zo1UHUHq%{G83n7#3tlgb7(L4#U3{IHR+iSCoXU;ZN=aaijF)D*XuEpj9si&9Kg6GMU^NBBb+o>6nIMc-I1;^TrM>Jx zw|KdJEFohx?nRc>k7;!jWY}?501Kywu zJVMkH>)CrY;!Vu|=zRLwAAyZ!gMMjHR@323TV$AmmG}pa>Tn+yaA`WZnZ zv;auaxbG&MPMJnSbvO6EA@XIX%f{)b?-rPRz*_XC+dopUfj&+4rQjbb`)6WiFVZ&_ z_?{qj&eA+Uv7`^j4$ACF|BT7>UvX)teP3Rm=Xn7ns&HvC%$wrl1bzl6Eh)->K^SFU zeS0r}XK%MX+&1gMhNzQBmNML-mZ@5!YOmT*@EgoVA2l7n+ci$;GOdRzQWs`~rgsQH zbagSATasr^lO-tK6J!zzW5Cr#j4drxqbUpVUDvU-!CVuN7yd^oi9U1T;#J%8IZ{k@ zr=ifd$1O9_s)a?mzOE)|U+vlL7BHv1UzPSK80>d@H^`+PzYuYk!abol5@d^%Z;T@E zAT7(yQ^gxE8lk8Ir^+j?gLV24%Gqk;x#op4QORAVfS9bZ-Aj2)B*45S!sPvLEHt3CK4eb}ksc4OfG_LvyG^98m7*VL@A_pw;-s6s*2S_LwSa5eUZ8K|$a zZH4NUAsd`Has&uHTq3j{-#j@lG&^A=@zP@);4;V$g~exLx|AyA{>&-I0(Q@UN6)G@ zQ@eLq9fOd;1M`bzx;yVp#W4NkOWc| zf4yR9#)GZ(b5#h-i6RB0MOv%FDFCo*bS<8kw9}F~58%@WNJ02z4XrbiusPCZ3=KOh zlCJ8tww9u~rs4*xIFc3gn;BBdJn1|J76Xl%(yc11Q}DM}ZzCfj`_OjtC@s~(S6~D? zy6tlsOoN$#LVDQbZh3-ijI*th}r=&B+ei!G7% zzqfv=uU+}%7Fe|LcM*bq(THTPL{YpV^>;Qx4mIX7Ye)e9KLEhZJGSLiK|u%s>7%@- zH(Ejf&7WQ+*w4eEuS5{|Jw27X8s+w>r*N!BmBH6%+iIR4mDT4@WDblt@F2uNA4DVf zz`&q%X3CCQO`h{qc-MFwr)xN6fJ#I#J^D4-V->;QowByRv?hJI2QQxao6;sg6`5M< z6#vvYm)L}IRmwsrlF7~}Dc}1$_-GX(U1VaO z#2BNb;ILx;GAO9$u6kaWe?B!ZVIGvugRtfA$9Vf()IOQB?59Gixk-d9T#Wz1 zJJaEdn`3r`;79cs=}-QkoH2D5W$ZlP0wu8C%a`O$1`78}XAf0+Wm^tXQX1uPoTP29 zws#3Ptu&WFi@Z`VyB}M>44aVr@QVFS^zQQO;W&iJ~4xt~W9HeHhbsA3^bi6Na|bWjSb(`d0RF|>8ov9dHj1owFx5pYwJ4s5|n{hCkN zJpSOhdLGcf7ZCcSgKr{(;%ezWu3W&`j4RSkQm5fAqfN;t4esXvY9)X(sj7`v)moFH z=s_j6shtggh1iD0|Qh~JTz;v<143)*~hqk8nk#sq1ScXOHYLQfE z7R!}SLWZ#WHeY#H7MgyJ}zn_l6>$bs&+vyy0drPM#L*y2A*VH>V|GX0|n9Y#{L~OZ1X8fBr!&=|QpsT~#5YNTem1 zu;P~O;gdd!V!S3EhWReMZuOHq+-S?$)z2%YEdx|gR0gre$#-d|a`>U&B8^YJp&()I z2WyOMGLK!#)WE+ZF2h3H_C16Qf02NcQ{Mo|yD!q#Lu9=+qRI*`Z~F}?W)&#p znP5(_P8sbxdS7L}PJ}q&D5(LtD3xS$#(WqO?*n{3{#ASjr0oFFOV#&}59*g~JbrhP zM3~&R?n?Xh7&VuZ;$W_%?J`_ghB&U5Rhc9#KIBtLQ=MQF6R>V`7JWcs_RlRmM6wbz zhC&VYCQpimEBg_RJ#0Kb{Ne8YT;XXyC0`tt0*U$~Tc9QVxSH|eWWsjI8A8EZg z`bI*4={}$zw8!~e-kucBvpQ7O-W>ZXDf>S=X}DYTf8WB zC@=)PW&!k)%kbvEw~(1JFd$_^6Fx!=lYzv~{l~@e>(e4X`+CSoYtmE9WJ_oE+i_St zK20MV_8`$MU8&fwpW@Sl&4d~qfOvv(1H1=!%Y&W$+-neX!+161;-`&!46||rhO27E zMIj=kk2>69Bw4@8t)IuVD&JI&c~HGoe#|rd_y&0Lv#%62SHCw+#|CkljHl@*!d=HG zl|-XwXk6nWzj!NV+@dGwfFh0f>$x8yN92 zLXhZBtkSiyl8UbQfn=?V!Ney38F>R4FNj$p!iUbX=tWc~7tNa}w3f$aBU<4b!XhHu zol-g&Jvl^*|IZ{r%JLOJ(ci=QxZ;&G2ENYUQmX*7)|BoX%HiXMWY*b9Xp8lKBkoJ}L&pa4ZScb}@eQ zzqw@RYV^jQqFQh!NVr!OY^}iUS?oM=Z{|!AaStl9{ga%Ji0RRz#W+;5%Q(cb*Y6ZG zp3rSA0C+5%k5lm&;!RXkCi5W_0tO6EcnF@z`l@lhSJht+Cf+CcN$S^xUnkOOky z#Xw+%-^{ofZ=qHEV`LF{9hoO8!&gwN?YB zRY$xc3h`QygU~L7U|f9oUabOE`w5Ip*Gk8&HfJ~XrhE-rie_A3DoN4>4j6ZNO}c&B z5t9L<{C(pE#+nilWUlDmMwiVf41%J!AYt~t{`RNI6$8*Wyhn%eIZMs|BAgbAgA+?w z2!#uXkH~cY^g!A2lkj-<9~MQ*Io8Bt9Esq8N>g42t_(2vW|4a$(srja4JIixSBF<^vWUz$_xo(dL#xoiON#08 zu@#D4(I)5Yuy|-Lujt87blJ zeBs+ZC@8jn9ubmX+0PBKV+y`!DRsD|RXz1-eWA+ES|4}782zV)ktxwi^#!%#S~CWF z@fyRzwAC3iy-ecqA`<0PsrR}?uc_6rKD z^s(97`TrZcUPhmtQlLB}uQ0(Iexo1_|4ZHQz(4Si)O0zWwpEo;Q*MpqZS-P+YN%}L z!mod%`i?)>qqQJCF;GMeL%A*o#vIoy(`lo0UG`wrI1QjoRb|aYtz;QO+g^4k>M~O+ z$1!n0quNYIDZ12&S^@3_gyiues&fG2Tv^gALs(E576tN%pT6gse*S2w*k4M!sjV!x z0+bniytov?Qk!K1-sCl9Aa|3UfXWlFuJ@dqf!| zC%knu?86@vGf0sJNf2+^xoNvz=7JZhXdJfDHrDl*_T3p=xH`a4oZXQV!@2;rD;h_w zhUEb%+`M93SmI-#@%@FPq7~KhuZG?M27HGbdV0kp9@e;fPIjhEq;96;!U4B(44x=V zs8*6YoUQzdxVN3)a>Mqt_9;Dx1CLx_5UY)3O3h1i#tmJvcBw9oI=(ry$Hzp@D4O+! z50ov~xVX3vLVeF0bO^kYzViaV`7l{EG=5@LGhBAHbnL!*V{2@EIv?yQaIl_)9#fs8 zhMl2Vln*fHYY+ID8rCLw*RK_(v~B4HPOCYb$lQlceSHX$pcHiQd71pw zRcy5JA$JaCre>fE9;@34@xR5TE_UsbnUlsUHciG8rIj% zQo-Y>{hG`#G@cGa3uKUf-J*nPM{H2RJ}xD#8W_(9H6*+Nlc`X5LA&fclZ#xl9p_z4 zho;h%M;rJ6sh^?_f+bo2I_e;N5W>`>?<@DDlNienpR!Nplx_5@@o;PCBJtsz{Uc)Y z$)?|eA)p4oBL&oLcVxENf3fi@4lW=(3pP?S%fWa|{j!-htP(R&o!8F1Wr6clhKdOp z4dH*=8n#`s+XtCU2mG6+K9K8~rU$^(i45!8S}-b3YLw-IQ6zbo`I+|4pS|pYJ)KruC7)^vW$27>UQM+3#G6&EMX1Zv>b9ZxK5w9j^6Ap1! zkA0hCQ~eKXW59mGU_pfY`z)f4sLtIva9Ys1XETmD;tc$( zF)DzOvfPpQv{Gt13X{zf$@&ep(FKRd)0TTzA_-$Q2AxXK;ZA4i=*8~ZY}_Z+Xy5uAz;$Cym*Y`3G0g zF1gxaXhAl!c^}QbVDeok5{G_$m(fK8Ceu218%@{~Oo4ao>L3fm=TO(QoeHPuy7u1b zA+tS`?)5>z3Ml(=gfrY~vW(jY2w)^-Gp9r(d$o@~b!nMR)Wqx)sf~hRS-Y`k5V|z3 zSP0>HY__vN^@*+O^)h@LPufx+Ts?C#&gKs1Z)#YBPKdCYmlCLjvjx@2Tj?V=)ugx6 zyv)uB(Vb~UQa;m8v)Eo%bz2Wsqh%xwQ9;D}m$0fq5;>fYsa79Twjh*9tbP3M-(P_K zo&`GL*Zwow_REJx^UPMTsZOw+%vTz1;XPo+)}J`w)ufqM+xr zv4qwiPiio2VwxooP{CY=(vGDp-LtFwcW=Z*J-8x>E-W2L;R1=acWv3XEgGXx z33D__O8#$=^*%@CxLE>^C+9X%Mb;%~`>@25`8#~vk&!|tn6;(N^jdKRYO3DS#NSEPhyzKM-# zZKVn`g9C+b^zV(?+ztfoGB4Ip=%k3y@&pa%^}THmq(}jvFrG(5;+Km)G2E!qoBfqQ zp8D+EGQ*LGsJ&gGt^M6vmd8Kmk`9xknKkn_M zXpUwmw5^j^Yo6|_B$gTz_nsPe#94$VH2q&##@}gcDl>&4i4~q&L!>S(gaY>AN?{Wj z>2>$wgZs!qcxRl9EL%Aox{>QJIeb^dw?f`zy~br|8e2~#VNnosi78banZc+H`9vgf zXlbQ(39A~B3l~c<$ZYebTL*ixK^4gSUwH}rYrr9+WdU>o5e@`xB=TipXH z%Uh0|ijc-S=mk%Ra9<_YQnQ`muy|a78?sx_TuE@<<7}hah*b0C|9fnZDHF?8&mi>p z-~Z*X1d-2lVv1h@6zB@@zuJKW_Z>kDANgfButlBxD>_Xk4AXi09A(eWj~Vxo;x0Sn zD$`xr1SoFlMtE0&XcZeOtFvGPfbfuUcVJbo4;|_|Mt`-I z&UG;Z5SqdOV;t8l8|BaQwJ^xgo!&gphDi{EKWc@RvVN{sZwJI2;;%12O=J1tG;u;L8e|0hmiz`8W{1hNhszHBNn4036}UV)ZE zJ_OzUbnhMES-_aF8S?Vh*0tPC<-iYA=9}gP38gWtp~)dSr#d|%hahlglie*1nFFQf zFSbC~7ce)WAmjdx`U5Xq9dN$-5Z}u6V9Pz$Cz;r1m27&Xm%riXGQ3g;_#9)`s1zF? zEP46Td~uME^H@5H(a*f4(>IYFfW!zxBeRuZ&RVc!N@uF-E|2ELYXpxs%Fi#u`b~7S z08))7*u^;gBVHw)4;{SlZPbtXB}Lag7~)`^bwPM~wde7l3#&eFWlG`TXgE-vwtpg` z2dAJpz_9l!_Xf?@?fU`ahEcXtBuD=d4?E=2b)a@v>*E{bm38rR%Jlar zEVv&~w>GWL!m(a)pd&Rnq8Mf$(cPuHx5*H{Hj#e~YA|!0yd@^D*)y=0;EXzB;eS zFd)2gV1VJGmS2(bv^CJ+_D)#ll1buvq5fPkiH?Z9^wT=~!12zot2e+JCWiOG)_JqUsCZ2xs3*%YviYZljYTAJq%y*- zhZwRzVr%yGNOG^J>O`LFEKpEz2=~=p!NFwd#0G>!6B}hJY11--$6Y{Yb}iybhNfQa z#|Zh--!N^+Pg~eWk1%!6&Oi4B*%W ziB?3h{rB-R$)A&Dlw0qPEe0zVS%(EmR0Km!@OGb(1alNEO2j87*oY%eK(Z2$5;IWo z#Ta1Ltdk*b7*1AYy*fY?lpd*HlE@*}Px-S@ksvV9P!=CKPu=Wqwf@g8Mw+seo)NDK z7j-=fTom|DVdIVG;*vGVlQF5R!lO;l^$`+-LPj>ko-i3%WDNIwFJgMcC$AK)`%^Nd zE-xD~qJTN;(W>FA1p0!r7W@9t%MeB%Fv);`@$p%#U#O~nQ(f>=r(H#mVT+`ML146Z z0VxqY>{*FBA05fV&&-4zeHKp?` z`nCZZeH~Qq%#or(XW&sTb70gf$KB!;kwIZ#%7TRY_gUYS#xS_O13@~wSVlm~X1jVZ z)O@|yz0OSfM+gW3tM4$FYMnC}fVYk%`aJ~ZDUg!=G+TakGSfn`7wMXLjg8qoY;9tcgpa`X(8o%g z-`}opPga|P&L{%aOlb%(v;`ImOB_^@v{EHf!u_ljf+N(E3k6G8l5m6^?CCCkLZx1! zVwI8h9SG}Djt%|q1}qc<-l7BeF?ztT`mZ1I=yFobpsgm?VjQQmo~izu9Aj87U%O~l z_*~JTEkUGMY{B}&&O!cp?S@;?EUhr$Rk+iPvTsLRFbE;rOT9pp!;s(qI*}LoRC8dqWtF)UG zwR(H#l*{$ROCz1hHuXEPK~sUr?*_)mbxT3DGPdq6Nz_5*9+dvfry2}>#;<)QTG_v2 z)rvUHKECRjgTiP03BpL1_i*wwBGN$$x|kB$l^aH!B5k?N;NsKH-9s;BEGdt}vWDaO zCs2kR26G8WpY)djI!t0;c`0facr~s0PJbTqAMcC51^h?q>4{%M+|qn)ht^ZkDyAng ztU0ydHXQziIpm)m(`SRo|NZ?j+);+$K1 zdZlM{4m`HQ+GsKabWCB~+c+D&)I`0HO>4*)6S!Mc9zgi1dT{9kl0srEx-(t7$6(+- z#K`A9iRNSE5b#KfNv7ISDAo67~Fby5^EjJ&WByM{!Bnx00C`&2cTwedjuxQqrftRgZ1!iG`?p_L7n}N6FlDTRIj2cHKJqNcRe|(@U+bp<@?BcIuM9@hcdo{DRNJ?4Fv zK9G-y(+q%g~SC51Rinj{rm3)l7^Ye@-TKLKmN*dQj1&7jN+ctJepieog z)i3l8Dg``muGm~tKW><>5e8zwAa7Ye+x*&S!m?fL!bs17vO#r%PA5QfJei+l)2;cY2GAWm}uSpW2wKt*Iu8}#4RQt_Q_s+0X2j6MRgVT2&l z2{^Sh>#M0vr#Nhep7S;AwdzdV1?7zU`u?kcikpEC)pU+IfeCjC=2}~1z6e5xq8n|x zYlOd`g3ttJ3>oRyzE1va%1sG?YDban|2?bohxyT^o84VG=P%>k>cXTDLjIkGh$HAZ zhFc)(*to9%tjK-@Z|#pfVj*+wi^6=n>qeUN9h=X#Ufi2xpql&d0W2+m30Toc8#u z{i^O^ez*MW=ew2JE32gj7~EEK?(8$?0RAH~MgD{9=xs2_IP_NRFXdDsf&}}nD3iun z238yNSp7O&r2+$NhOaio__Wk#9;cem>@unJ+bGXHSN6^Se)~Ig2cCY4m>_n%>MnRu zRiCb)(DG=J7qwIl_T!ASMViE>nG~pY4LyS|JwM8`N{u)9Ad%|I1b>rHTFkbL3lnHyBO(9_ zoJO%~G?&bFb&&)aHC;XWjbbAoY{Qs5HXSuuNe*B-C>HBtBNO~JcF}>0eP@DxuPf>)41vD=Lk+L)Clo1os3UzXs4W`Q*T?_#{q} zJ8I9Y6Lta4=95<9K92iGIh*omICh<6V=C>9i5eIthmR9qPN|f;*5qzEjiZ-rDFD)? zZu4u!f8KPOtrV_135bK-td0Hc*jV+%`}3;PAAEh7Hw=}-FLg45+yC&) zIxe@266k*p@|!6Y5@U<75VK`eYl7AeVK>cE59>BDTHNGXPD`zGi*)l9(Ay|rO zZ9^SL)LC-wu?!NDGgF~NZ*|9lRimy}01XH7vR51EKQZak(qn#~zVD^rp>@3hhW} zSya_2!($NUY}JE|(?O*3m9VwMin#GhqiYjSp~F`^{378p2}fn$d~{ej$MVK zNFZuvgf$}j%@iv4^p}(@Ug=taWr0cN5rbQ}foo)x;U72x2a_P4yzRr3gx$gXJ3Q3@ zz6P938(Ozb3^E{by6QUO(Ub!+h#B^D59ffU%kb!V)W{_Ip^lsjQwL+_y|B0}3JTLK zjTqPAAW~$f8RvQ^IT@ihn*5txmUt3#)O=R-(9bc|NW*WCdBA~CUJ)uW%Df} zCJB^XcL|XebvA`bR6FDPZ!?1)o);`hxL$PPh+3S%TS%8Lj5|!F zw(1_Y8Yv0kDsTy*^JBh#V;>_y7O?|svg*^XBwLLOrvpFv@)qx}xTrvGzkmZ2+pp*+ z?@zF`!%J0Z(AYM82I{hHR%+A6mw-wZ-Kem%5`JKEjrX%PK%-Dv!VtpGP`Z)2UiElQ zrM5~d|6sj&TM~ZV=>xE86hKC{ZcP96KkFJkg7Mdton7>_3zDx~v{lpfz1NB8lC0P6 zU;>4rtIqm4{a({=0{}O%WT&<&4Y=04$q~3~gXSk|g9q%_eN|1!m!? z36Z>fKKM#Ef=(yuNvr@q{;h^xopR;gry|z{Hs+eV^gWpW9?ol2ItzW;)u9@JRYt%iQ7bdiFGA5PI+YoL$=$0w!W0=bObcFVxZSwruRI_mk{oDjTH6 z&FX}V#DLJ@-l{=pe6x@<8DzI^pbPsg%yrLd9;NsExB-|4yGa%3cmXud?{5Eg?wo0N z=N>|hDW>7WP1pWs3gyt9YJ)8s5nVANWGWra4)Xl&p`oh`kPu|mCU5`txcN1&l@BbT z-v6!GBs~`dLB*?ON!wYDCQ=i%I&xeoKwQXvUQJmUrnY{;ctHeHBpT=sc)3YEm)L0eq_ z4#)zdpBit*HuZGFrP(sQyRFCFx`kyig5RFIpP*GwbcPsu&ABn~S`-n+n+Y~p*M;!2 zXOL;Oj7W^vH%!LJxu`TkC|dRP&8EoOizxdCFd*};r+cTqwC|DyozcJ0|0e>K71wKR zZ#s-99(d5!3D~&8z*iu*{vnz$ZRHY-&skL#4m$2Nwtsy$J$KT!Y>pu`R z#wZ*dhc&8vG9Vd`*q_mMv7aT8OvM5hNRu`FM$P~^{VK4_eY~O08>_s~@y!68Ros_3 z_vTeh?yF=@KpItJM6Ycm@z&7TlITseKIPD+29SwwCMmg9QcCEwQ{WKv=HrUt{gd}}AXAPj#x%(jR~G`SC93 z`a%tXPSbv$f4VY1YZY(XDRRaBDpG`zet#i@Z}hl~0hrwiRgE=k)iCXN+dgPCDm%WD zMoV5hbR0}#+2|Ü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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510174002-Config.rsc b/MikroMaster/20260510/20260510174002-Config.rsc new file mode 100644 index 0000000..ce68acb --- /dev/null +++ b/MikroMaster/20260510/20260510174002-Config.rsc @@ -0,0 +1,4649 @@ +# 2026-05-10 17:40:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.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 +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510174002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510174002-Diff-Config.rsc new file mode 100644 index 0000000..c55747b --- /dev/null +++ b/MikroMaster/history/20260510/20260510174002-Diff-Config.rsc @@ -0,0 +1,15 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4306,4307c4306,4307 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +--- +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +4310a4311,4314 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +> add address=149.154.167.99 comment=telegram.org list=FuckRKN +> add address=149.154.166.110 comment=api.telegram.org list=FuckRKN -- 2.52.0