From 088affd2b4b254edd42cb9a1779004d5c31d479b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 15:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 15:40:18. --- .../20260511/20260511154002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511154002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511154002-Diff-Config.rsc | 4 + 3 files changed, 4657 insertions(+) create mode 100644 MikroMaster/20260511/20260511154002-Binary.backup create mode 100644 MikroMaster/20260511/20260511154002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511154002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511154002-Binary.backup b/MikroMaster/20260511/20260511154002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..07031f9222447ed9aacdf12add0b3e9f9decc195 GIT binary patch literal 302647 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
    YS>Ds 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�-OzZW?fC0nof<0@Et_q< z0Tw?{B2>T-S&!c*YvCvu1U z+r$=nH~z`k2xY`V;Y^m2Aew0TN-W~_+?AoE2zKG;qdX!1?c{5K6VWH#^I(YiJZyKF zrRd|}aMxK3CMs6oWs`{WE(sL2M$k79w4EwZbkC#88m^cPL@!@} zjrIzo`V``uuoqSH3^%I(t(($*hNVzM->KEJtGH}4*DV-oP6#Bt1K+W~NMz05i=Wnn zvu0YJpK6d<5Vy2xmVCQ2W;uJW!3C_0XF(xqNpbZ16nd*y{BHIp*Jo8DbnONyU#6B9 z#UMX!3QZfx0?SPs5g?AfN4}fizNMVy3cG*W-nXZ3k0e8Sr}^>XF#BV&VCOp?PiQXY63VN{PNp zeyuUf1fJ`c%rW#MoK(%+WZpgLHVAGX*$`Dt2-AvJqQb7ct!;8zADuFgBQn~NNzL1u z5tE(_TzgnsofP33Kbtvdngo?(b!dgwsgz@7c{8y=%`0s9-sCX4E!n)BW|IsIwH{F{ zJKO->Ksy(+8D4kzGEZeG*7f)hg#f!;qfZq?3!ENI%z$g7i^Q=0ILnsk#~K#QF>8rC znC>-QKQQGrXmG@d2I@5?iD8Q=#?zxhs4knSdki1#x-BP;+H}&8!p_R36;_`uOgGO5 z#-i4rfd7a$*@BF4+<;iUug|$!Hb~(brTD2zidZ-R~n+YA(ttPkZME_yRJwg6S1Lrw6 zvN|UDAj<|NEvyw+PH&yUDS_#pUfq<fdsyF6WOJ9DW6+FFH{Z4ZOi}3;kb$Sy$G$O_`{|2tC!Vw!Ffntzy6@S1k z3{vRojSEEpxwP#+C<2m8B5z5bd0Isnk9IGxgpk~yS{p}jWA)&U4Tb5f#XR>4SC#J{ z6kF@COhXCp40Dpz%{2lTwnK%T12e8Rz((u|HX#W?nk7Bs3q`jGFE7o= za#L933CTAsOUx8dSaf$u?wO)ntj|A@)7FAY9_V!xDai@+!$!Bc+1rBu?zn5I;IgQs zRQ{Cdc(Limh+^^Q5uesA!n9ZcKvDSe<>V*PRP-)1u^dy1py~R>;e z{(zZEiA3f+BRTg&cMB)mWR{KP^8`O2Vx{`TKPY(8_i*z|;X?^BB-rwCf`fxGPvVUn z)n+)11X?N?BvcmBFqTQaC7su(6qoyb3j20F{^y_CXlYv)JBXs#yL|1zLow@(sZgX7 z!-*?i-_#J&MGaKtxa9j)T$f3zN$9_}-Sil4sxr^Bp|U_=6F%q~9wr7b+^S*Fg(;*o z#WAq)o4VNxnv^q5Zw86r))ce_V2o#^8E)bZ22M8z_8y$ytNUGNy@++|1kF15TpS}1 z2SP>iI*!@$Xg;Wsi%Dh$a}=l)njprK z#g7@tsGi;;k^8L2xS~jiGiQiQv6sj|dno7=$9`oK50Wl2XTc#^9F$jbHCGSM=VZ4z z@nSu$j%MewEeO7XbP8HpzMXxr}&6VgWb3GzID*Cg){q+ zU^Ny1XxO60YXER1h2C?Og|-kK((P#DE#C6D>gh2qq!kzURacy|<_Z+vV(fJXTxk%_Aw=%@LlB9L z?<2f=EUqT`Ml=MuE_&ex)6R1?{EUcmK_gm7WW>ouN>Y7#MYo2>>%MLPzw!3fDb)#C z;7bqTvmm#w;7mr@3=fT0`*Th}6LV~s-5!)L>|I+npE=37H%uK#=(ho;8$=`!TX&A? z|H8QT7vk%ci%QY0Gt5vjJ%Imft_BWu4EV;XihneS6Z8_WCe4dk+OBnQInDUKnk)Td z9OKtea@pl?iQwIBmz)>FFv&wcgWR{O1QuM5)WoBLQsrd~EdTmQnKY-dpcsrlBA=mG z`K}ApbhC3+7iZ7WGmH)UVMLRbPHF}36M@tQ)<}CupXrbtq69pTYjWVcc0`sri|loS zhj%R_-Ny|qp=WtyUtbxVsif(I_sv$XW4WuUtYC4^i6#w2&I_fx{X~$Ddl)qZ(A1K% z9K#s!o%X4LY9}2g0|>z7g>xOSvG|o^ff3|ajjyH zdd{VzOmvS}gRNw+EXTU#TjPw7uA3e~M2ThaEmx*>+i1k*CnZ(>0RlDX%*U;_rRUb|l*+ z3~^ze-DD!q2-r(N6H*K5f@YyEu$%^UlC#4O>&JDnouR(pHLCs+fj$&i%szdosz-Fd z6(O-bIN39iAJIb9yI<)RwHO(n-!E#=9X#QCV?kvrJoK|(Ye5HXo$qo)@)s9x@mCe{ zc*W#I?o|WCUkn}O#+oQfWHJon6{BwlyVDkc?ES*yhq7fo-bIJ>E=gi0KaTl?&eBxe z?XN#jRV)(@<4!R>DFv4j$H6k1sxZ@0Ip8wy1Z*dvSptP%Cx^J@B9ReFK^dtk3oAq@ zjSIj?83Ir2nSGo_^<+9$S5vvp!SuwrJ853SI%Ptq;L+xdRBB*s>T3Tsn%-3c4`hQm zx_tE@-(EfIcuXOtDHiR9P=S_?p2roMSHOe^irbecwl%j-{t^4ZS8vJ^^%&GVD5X0! zBY)l|2>jp2>LK67mYv$!fl9r&su+hHdBWKc>X3-L_jZ#`Ye3DK_rA$2qWiBJ0uJ;H zv9?DZ^nX1;Y&Upr8oxZ96v+&fI_Tfn2nC(Kl@;i}RhmHc39w6PTnYpc$E8z&S|bVb z3=1SLC)JW!C8W`?ylPUrP`fHw#Af7Hj=lLy*D&Fa2Y8nLxS{iQxa85)xg^6kwbpt9 zZ-H;pRPXA{0bSQk8U^PJgSxx4wc#w{QvAJ>?2}nz(<_kCLZZ3KE%s{>O?YI%j?#WY z48rzQmdP1pxV?tg&p+l_@5d=nDlC4&Etu1VxrVg(FxpYoq}NKc$8Q*ji+9yvHB2%0 zJ7`~nC>sWfv0OVFzw}qtc-yyI49gt^i&2fg%Q+zJ?xYQ|t(!%YN`Z~N+}CJw2o60aCUTf@Yk4Ep zIN2|FlA7 z`L%wm%T!S6p)7%-`o8yLdl9{d+w1@O`U~^G_9>DmVoRJQ&Sg*@t4TM`x$N62d(uKD z6}*t~Qh6Is7_rXZ{)m~GYYaX$&&y6g4coD_oNbIhn<}v6HpZ~kdlXnRVAJd(m#8WE zMZ*D<$5lm%tdaW0*P+tgwt~gFrvC%&X6xFVqL$I8+^dmZq${u+s3vPfb|(WCYT)h0 z%+Ly^Ep;!919Tdyy^?LUy2L^UFMo^}8qB2n{;vG~pyYpO)M=QzD|2}yf~a{hb*sVN z4y!v2ESH$|}jJ_*K-a>(?f^i$k z|7`M6ZXDH?@Up0)&f>%xc@R-R3Y%blJrCU92&ktl(g@IU7% zYPH35DQv2U7uttY8R}1uUdn{7!_T_tQcU!IuO8wvd{b1{Oa3eVG1T1`w(6xhfG67M zMm{~vR`n;~EkUbN{sKa8ISsb%&zTdD>k`f9SyCG`rTKhZC%8tlh+xN#Go-(Ss!Hx` zFCB@rlr4h+6b#J1+f5c@5UheFff@gF{JRHoB2`L>n$onn!`hZG(v0Ocb*(tgvF($h z2kn=L{2dR&d9b_d?Li4flpYPI3*_9ojURhF!|NuR+`_40`ux=tQ8O#1?ceimLy zh3b8wtDI|9_whp=m#Jx708Nuioc&bPj`W0Fc;YF~1Q7>U zlWe7yi;v*dYgz#4ejDK3unkkynA)hg+2P%tFkRt(#UrUr6eolZ?y&fLaIH5-R05$9q5V@?N?q1@R2yD=cGRb*oV_@mYaYHb#W;MexDk^`u11X%Ld>!=tO8K!5 zxGAYi0vKmSsM8`KLHtES&;UK<=8zB30m<4#x8-eu5(fk5(Wfh;!&CXW$=hZacIvzR zsH0~E1~4L=2uL)wWJDSv*K_B^_azUFK0X^2i|WYvZH7;Zf^94-q4fp5pUiwT%UQ{G z&$n|gvUhh=KUHzvDbcvdx&$NUX$W2VG93QhgyBk~T3kpY2RWYfOa>cGH;`I^A2B== zQ(BYfcb7%my5$T>UVgh5zQUwn59_iEo4#hXy8=F*mU~ZORLg5-Lyk4jO!ofyn*-5X z%Q=M~IRDs2liJb3-0vP^%`PAQAsJU5b%HRRYUTJmZsWZnVPRWyiho`|FYZ!-7?|It z+FD;#VBc_zj;l|75k?Pk$d7aF*jVAGI8C6nc|7w-l4PNOb^vPm?nC<9J^H}2oyP`dXKM={At?!Q1bf}A^ zSzMUnP^!FjAIL>DVzk35-wDW6`9jzj*~c9sgJ!2l6OJ>`$=yuEA?fZ%p@#!h$#GE_ z=d`k)8Xtzj;5rwQJ@~at8k+_ggHC5oQLNk=%QID|MQd4quu-6-r@%~jtldpOxAC%P zGR#beKuh6sIzqK!AI>tRIJZI`kx0S;r*9nUDRYToknL8)b#oJbR>7Du#9gQWJWaD$UXblw{=C(a3H z3ROdHCU?G0ux-phq@u3EZW!VM)WC_C5uY`)4<{`^r_H3pknWn^6fTj7c2TH^zvrr(@4c}%e*AYfYu(#sgv%U*k)M; zDK2{DUd4e7hE=)9BaZ8~yT3a3_P&DlUR%Yzlo+Pc*TSNX{4BpkAb-EfwiRvgJ^F`|923304us7(C ze5910n>B9n!@1Trh{UU@kV@!yVQ(Ps&of{dzG7-4&2*Z)?gZ1juyR#4w)W9ZC7Qj zN$5y1TNi8bu>C*q^`cuR!8seK_e=2CA62Fo9zY-FrUA z+V4YeQ4W|MI>0of5k26_LlQHDQmW}$objAgGaQ4}Yu=JfyNVmTF5i?(l4{KJ=C+a> zy4)Y?^dSwARsaO{H`1c&o`5^Nn+l_8f@uT{jF9ynOjDAWFGg=VIW%R9GM5;=a}%wX zNsW+Hw9PsVo>9_AQk zeXY^^(BOqh>VBtU#7~NcPu`fqHx3h)Ld6|Np*~=yN*)^LC!yer{xkYxVh^H~3w7cn zMq-U>o-YW;YN0tmsFH6{twtSD-(9N@x7?J2PvM;&q1JEKJsp5=a_16uEC<(z#rIF@ zsqXo#sUeb&UG+f3*7bU*F^XY?N%Q5w}z6i|9+a zcvoL|vwYpPHA%4ry&+}BeUO{U1pIg5oLhenkn(CC?J~*}r8(A(DJiWPD^$x-IPY5K z;bHFNXZCFl5UXGI!C_jg0i`TAQ7K zgf4InYxUjw-|9#L@tVR4w`TMEm+x&@M!e{=YFOm=GQ1b>)C(k!a~%CLAr%f3!oOQ8 z1@rx6+SDV1pKsp!i6?*MOLOz-=xPcT89n3R*1N!m^FP4aq+bx>a(IshbWI&=ZVvo+ z8HTVcYTNJ)r^p||l8E%_fgFGxv_C^Y7>b%kN~WmFl6n-7utq9NK>;$*PCZ}F6xQb z^1;KTmS_{5PU}=3*OslWzQ*dOd6iO#WwchMc@}XuoZ*hCmF}c`5Rlziw$;U@w^wx~ z6xI@k1Ns$QW$~{0D@HWQ+0JZfVz}dHw~Emu_#KNj;g?UBWq}BkkNc}UCE7|N|3$1O z2*g^}$7^^r0QPL$K@+t!Fsrs+C`mSToBXe%E)mtSM#2edGa}K@u8OH2pJ5ApoV=Dg zBpvkInOprkaYF{Ji>B=BC}x|Mb1#5p;gIE%mrQsO*%zaG;XCM2d1~b24x@5`m5o&7 z&_mU2YO|U~19-$hPKChK0TlPaWB9}8PVIPsgJjI;IEnEnixyhM^zdK(?Z=^f?Y$Z( zf2z~arB{L*PsuK}CU-UQBF$XR>CB*5TFHExHEO^JM}yrC7m%g-+AP48?>XK$ESd#N(E4L@B?S{7c0ss)SSqar(B}Eyux0jGj=1>-+c&rglq?G-5YtEA}=)+^9X zB-#~4dE9}mQP?4`vo^`RMbH`IGZGUFNm7BS{(UvrC-;dv1{?z7H}MR8k00seY`TRGr7CEZw?3fxpix5`r(W{WTCDPcVa3 zW}yK)=hHL(Ju_?$Y_!>Bu_weU|HNc{`<3EA1$j&31tZZa>x+B$3&vpS>$Rbj`hgm~ z=u1a0BXD9Ku*+!%3eGXm5@KwQaDY^y-8b`KkVv*Kq)H3ePG}__#@#X4 z=q@%>TkfBw1iNy`UtQJ^+_+kKArnm%s5f8l8;YaWF&LdG4F$>Lzdi9_^|RyFU#O}f9>CeQHI+y05v0#bvTUeS%iiJLAPG1bThURw*Ia(FJV z>CwOjm^T_<0vq@kGp? zVu!K##({D)EnN{h6&mkrO3sUd2L#Wsrh4+#j&x>Z(8cW@Z2d-TUVnO&D6r@ZbC6mY zqK>2uVKOLt^)UJ|y|8gBo77rC;&c-EYxq`JnkCe)Nm1bbq4@UN^DeF_gCln%+4%#C z1edl~SZ&^{pa-Q7VYO#@4{~msBzYqM{0$5O$4jUDt<2k$oMMcWg7jJ z)PNwJViWZ1s&^PDd@5UOcjdbn9DJ9lA~|tvnkq0(c^AZ=2})JiK@)q&rP0S_#t+OU zWs(7E>OpYkH-fqOB{`2<%_RLn4CGtQOSrjwNpP|SD#qmF{By;uxvJWB^m9X3+X(DPR7WTCU@L#F^|3FPVsMz~u2onTmdUsnHb5HsuAfl=+LK{tE|(is4N}X* zDJF~r*JtC1t1KS_?y-1WaprPWcOJTO=aWXY-{4^XV?Mj%rY_Zz+aLNG)UN&Q`O9e{ zk}^g;qCK?QKUHn$_40Y#qBmmR?q_Z7UntKwYV76HGfbmZQdX5h;Zph_-yRJqirgvj zbMoJitPsS;7KpU%o(3M~o}=!CIWq#XXb3Ct>o7s>5U;!DcER#&%axiH@%y5`cyO0T zFcclG8>3IgjqTgAcMiL>H@s%2WhN|Fvsua+f0D~ zYGSgmv$p|^503e({F~D2&3C7dze`ILzx@0l*H@z8%b5BX%*^g8020=ceHW>$I{C$T zEU=6sBWLv23nQB+9N8dUOPZSYjsA*9=EcPDSWimd41~h0vIUHT(*cS*bK|T=NhErx z6Z}eHYr67sg8Uk))+HVSTkV*Oz@KA}C?m$Ei?UKYXQKiWPaJ$vP1foBSXMQ3M#)XH z!0GMEvZy2p`H}o+Drlz2!@#J}=#}WgN|wx$3)sy&<=?$)w6a+E)0df<-HX&5zl=>J z4bvYZH(ZeIwAnnPhH!6(VT^6lOV>XB#-g%_=Gg^hn;Zy!Tv*5dI-Qoj?UPD6W3>qPBeJ-d;9kq;l@4})w>ZpuZ6U#$^LK(!<}l}?IMf^_)B!fw z;C|+Nix1SH%elZ)VBmP6(djjkU;UbZ?He0i%Pktpo-d$ae~ewX8CT6JgZ{Mr!$s{M zu$+*$A5xJ>9r$ZZ^#75T)zvYS)U(!^mY8p4!k0B;M41fLPO89o;@PZqhlVwRWov+1 z#kkQ))mJAKOvKDv%1CEomxlo|r4uD<4@}P}Qpc1^G!tpDA80xGjW1{?mz9WJ>~A%V zu1%SO4dX_)K)KO*)06CN4E5=!yV@OmXZ+f|ElZc)HzGa6ox9clNcKyVRRK7T zOKdX(#fG!3DjoRgf7ILifOHSCW>L%$g!%ztbRy{y_0EQYPK z`)2{Nu@*lT3e|<@13H3x3Xy2`G#aYk(GB!DW!gMCAIR&mWMR%4+Z^@a{at&nEALcO zunyaPz=)S(JoU~V=V>KD^iKoYp!ahAC0Hgwy+#$ptSU|cLRji6@+peGTlD^Yef0|{ zj)YnTvZ7V2w+JSjYUuqW%}U~iRKhLTwV6vbKDr6D&9tUE6P^N2@ACgxe3!kt6rEvyQDgDGPtRn$;E?IV)wzH%Z68YHFF9NkfiXd#L=;yvI3ii^$Zew zEqCDK{-=dpb&}NQ5Tb z(ZzOjD?rLQ1H9rGjEL6_7+ z^Te5lPG<}Z7}*fC`p|lE96iU;3bxchid^RhqXi3Ck{K0UWpe=N!M@yaeSy>I_)u4h zxjK=bX)nJ+Zi_=yA{T->`Z6f^or!N8|pu+i_iq!CvDOGF*a`$T6S<^Zg7B$dF- zMB4*1Uc&^O)3i@%+};Kn!i^=nLA~)uRX=b`qQ)<1uv!kUGG$O_n>gj;%S772y}d90 zFznlsO0p78MW|fT+Bb28fUWR@3`!;3Q_Wymp&KS63sdJqUOGPbnNEZ{iwVdGA|Ez8viPRmjIQ=m0{ zQll4nOvKz%>FUU&7AxufJ49nVG-@%%^{a}l9PV0g7I3p$yxCnF0r4xor7m^e;nRtN z)Hx#SCR5~^wyx0X-q+l z_a|%5htk#fF&_lS2N*8AlYP5Nx{?!Hb`rJ@l1x%)F4T3wn{rDlY`09yM{Hg_yvlY^ z0{w7zuyg zs?@TDzKz&Y2}w{l{|zdK@}_KppH!#OyIW{Z8koa;r(Nsy-c-tzU|JoXhJoE?1p)Bs zs#}zZluRz}W@2223O;oHir8O!tyD~tX&Y2WFu?Y1tbjyezGvIg9J(`43?wuRaweokvvzijlO+X`l0x#*v0CHom zB0kIPybU^FgDbE;WFC)NAvII&%&{`AMnZF`>ptsk3pRF&nSTx*`4PC|aPfL>7S_t6-1N;cLQN{=vn(0t#Kx!br zvA?&$WhqD^q1x=@N8ukLSaDXTlOw9by6YA`v9kCV4QY_jT6I9zlDfiGCnEW!1vjA5 zG~b~~o+*Pj8<}HP+h{I@B>cGUuOa@Wl;&vHw&@}B&_wL?8v)aZM{4qZ+Bh8e&%-P zkod~iIi;XA=RGp8ORvGIWd>w`1bp?XrhdUc%@PP$d)!z8QX&U3z?yg(|mJb{YUsx{EC-PRUh;Zeb{dAH4Ng)e2TcPgnYkBK7A?)zD`uLTvTb zwbLYl<#fr3ktrX5{>% zWT?1`-2W-dFReU~K;qsXGd5ay(ZAErNM_;#9jbzh^R^!*Y|N7aT*;nvsfz+<=L!v- z!@C0w=cEf|@yLl|$DWf^pu}l2LRdoH0^xw4Zi&8~S6Z7|{3(5xSi&V=7x?`#8)BWV zpO74mEBDaq|3;u+wAsN(hC*mp{d=|V4$t%z`a+c^&1!5cPy+VLbXc8sM394Be16#eJ= zP3kpNXb=o&9kuqAd^`Z(#)s$SpAl6IOc>W`yu71ND717IxHbLt?@r!jepi?O0NCdv_%a+f|{ybuhd zhfy*g;=9z7Qe)+6pEe-W{cssTG5Y4+{!)NH3uHp=J4?`N3g=}&gLS95O~}EDT8iPw z53r$1P|^mA7#UruYvE#V@`;nS(QJM)Gib7;N0P<&*3k~I70|I3Zjc3(SYEn#%(mMd z$$&ps(Tt~sZXAXD^Um0!Z)&HS)kQ>{LM5*!X|Oe&GV8ztv)&}9&XBAI?daR05qO!H zI)F}ro1uxcCP@wDsKlGCG6>wGekAGjRBYDg*AeHkH8U?@JCkFjL43Fo|J**|JO(VD zoY%-W8dTk=@Hn$GT&QS!mCR~-F)+5H^7vJXXdkz}AQZNYq1LZh`YMr5YaJk%*b=vq z#yjYJUI`af0x3@-4U$cfOQ1$a-fs;9`f=~aREC8~hB`^5nQP!|r<$4V4^{Cx96|X6 zW5bZ?xuRV{R&>#i`gqDsxZcZ@^{meQ&0x)rTce2ZWbeC$0KVH*@4(gDs6JW1Q1V#G z)mrYA@qe$tOR z>t(aC_~y7ud{9KIvTOY8BM-i~XP}ZYate*D;!|6L>RByBtX_@z%bS@&z+4kU#=gT1 zC*Ue)XrQ^I#r)hRTuh9+`rm)}F2afAlcqdEraipD;^ZbCrzzMM2@tNx7Kb8l3i2eA@9V}HWp~US@(1GtG^y*_^RFCIkL-LOFyMCUXOsO>D z2g#cu7Kfzl{8<~@|D&^(sG`9ML7%^o=zWh^Z=fu+;5!o#y0Qt)D?sAZ zQ$wOr0MYv1E@AOn-Bv}I&bvW$fiuC9ufprc;-={;hnlX;5&)=>=|t#Uw0%)MOikW) zL%I;k#t2ocVn-pdVcd1(jj)6qStF_2dMe)B5 z4wL%WRJ1AWdG&fPR@u|;FsWUK0{B)n=*7dU{yW&|V!_g$9PoadqCV_F1-+vbFR_7H z&CbrBv91-@+~p@)VveH6v7(?h`s?)9YLL->8t)+XT^f2j@1>2XH@J|MBHl2@My+LZ z8J|uWr%+2`UPJ^D(?f@CdKPZ`X}J0C_1et*efnRFi$<-@zh+UKD&LN+xyC2v}6&I$|9do-G^5!BUV^<$82>Mq1L^TqT@VifE z(N-oreK;yulOW5Zr>HDyg^k-CSZgmney`WZqp+T)8mFvX3iC!Qqm>s^z#5#Qd+DjM zXsdC&Fj2}Tn5AH>{zCwT0^_*03C+%<{ho|kX5Q;6ozyD{x>|>IID+au=r-*SR!}X- zc;~kfLqlChmP}%`ob#)$;Qu?>M@hg5QXA3YFjxqy)zC*^cnozKQH}ii!Idn5I1O5n ztylOy1%`bKH4Mi97fJhWm-yx9z|k_=mm)Sn>G~JmE$(ytfT_f#M682ysy-bVdV3P^ z>86PS*Z`wYqP$%>DE&6&$kt;*Yd%j!k_p8HzUO&A)p5;(X_hNpiU!Cl5f29zfGZ(X zXkYa<7lw#JbdY!4*>se1Ls&CEu@uPy?s<^m*ck%&^k_yIn5jC;Qlac$mUC|BxtQH( z(~y`Ojjb;MF1?%6w;)^+l+b+iew(826LO=@Xhu%pbJKib%d_)&p(K8_5;{66E&IjD z47Xyw_T=5arz9M0TI91d#W(d)E$<5`CzVqllHGlRrZd57CtJ`{nE!};@d_Q}Oepd1 zTX!`NLFSi4b|f)@v0{~yqF&FrRYii%QggH;Kg}}RVt7B7H~UuHA;J>&B}F&L^Z?|$ z4L2Oa^J%fK<(ZykB8By`0i`@$$6tXWx8=kQJ&iHOTz7~SWIp$HoE?Je2)Tq0qIERB z{{eeWFRk1mM@r*aF%$sa8De$?#EwLlKxJ>RInw&oGmD#UF;_@?K;fSnIx+}x_*)rT zTeeptZo+gA10gxme4ElXHCcFbxIc|NA2You6yTC@E$bL(nJQ8ENR}OHX45@3U(wc< z^pEsbf9%)Xp!_6IcJt1qTc%YX-Tk16K@Q%g)9aO{DrjQ0YmueJojiPrIjAG)u>i;Z z9;w~VsImw(>kRt15vJlca9hx>KK_{-X?AqLHavL-mb zxLv7;5#US78ftUXT`2iyTa^Sr2A3C1Oiy->167uo8hGq51g|=n%I?z7|12sLW1>U; z3o$$A)5l|lBVU{NRbCcmYXbI9Vj0*s#?JKxOahX<(I@n?x)G$+y)x81;@aL8XeEd4k_uMUk5iNZlK;@ws?L_gD zkz}gdIO2ZcHI|=@3kFD>@w(xJf8}-d$032CJ%#-7xSXIZgIh0KhA#%$!A@JLM<$UM zosfroD!YhDw9vG74;ErAyI;`O2}30}SWf+{51#N+73#Z2t{Kz2!v>ma>UgXr9|U$+$_+mwW~zsn^F}v(3=!l%Mwh_rp9WMd+H=ss;mHne&gbVN zhGLKdffeA|`&Q8QPT5smTeCaeok$|$e_u04GRA{%u5kruX;UD6o5&Q2Exn}CQfOC+ zL%E<)yHCyfs{jmOc!N(`Y8KS*I#oLvQIM~taXKdQa1d|2vfizCG1bMuj2N2ML6 z-Nh&>%ox2SWtu|xq!+wu%Rgm=XmS+Ru}36<)5tO8mciS7Eic56nR_*TL#>b(el|ga zK9F0l1sVh4Ksj8p!sQ^U0s!Z5w9v1gA`F@Jo9Wstenl#>fN02*weuyilfnxjH$mn~ zPe25Ijh~FnAobeb&~bTpVSQqStN#O;|T6LLXl(IlR_ScoI_YmZn+njAVy8fML73 zdfEuxuFKa+TKjkfn=cry1&`cImrl#3#A*DGzsF<-yTFmT+qEf=Ak#J&K#?NsD*rGP zZIWH>(huRO4lP>%G<-dOjT?g3YeS|X^vOGvG)}6*nBa{2`mgEJuiJ@_!}kcHa5SZa zhH@OOho3|EeHHmhf24$y9=Y0uffeXqSjF-bGQ8@71|oTQLji=fmsBm=8zDj&6rp5X zV1r?oXal(Fq6Ub--2bfj)z(WH2JU2lD_U=*uQ}8p@TGQAd~ki9ZZjHG@sWQ*^1+PW z?I7id4hGWi)#V9bk;Qy@ThYI50sFD(di((Kt8>SL>&Q4Y09|JScjF2$d!oYJ|QEfLUVL~WP1V;xvw?EQgCa;^UTxF=a#Iw<{gH zZe=QfQxmx$>w%Yjo*jIp`bgRacAj8Gq`$j=ce;>^^TtGLP2gZYnOVch&e5#555tEG zvfjL{=IYx_cK}tpC$C(KIIGRN3Tt$gk>6+wEzw1@aYoLXW-X|1VT6 zXS+qVh~%FE-_~&R@YZ2qZSkEF(21XpKYpI!1QVc|V1@SqG{v>{L4@v!U72xQRCfqC)DwX9(UEO$>=GbiP13H zFy=WLj#IxvS~#-m+iSA7%zEYaL+?widyty{@baWD+r#d9jDys3FV8W=%v78M%$xRb z(UoqNU%+;2+fVY9F5!bQ82)W)tI>>{A#urWP%51iUrRNiH*qr|9Kuly$Z~fNyww%0Ztx35i8gbXyHk z_FB!6L!sDNO(JPJrYr^jzTkBGR6b`{9}ILTvRz!v$MZ}3BIXSkGP{CT#)hg7zs!`T z`H!n2JBD$j#J0q2hBB&9T#t2(c^hwTWDH1;_}K%vNZ;H?M0!XF{bkvBtC3dho{!%$ z+v;Uj<68)e3i?lY%}Ln+V`ZbeYfS8UsSry6fGmQP*YTb=Knt1w#d_Ujhy{TNSiPqb+k;A{r^VPp^cMkJ|!k31+T5cmM(XsEk>n06DKsSsK;^ zv_C!}WPtS%^yys$Ac|6%CtZMp?#eO@QZ9p#f zeUEQnJORRkDsYdtRKN(-rHU;cg7NV5^uEuOGT&+7wKth!do#wDv&wfOGow^h-e-QH z;$b7;AadeFbaZw?!}xFZNf#^AFbDB2uCoosYxsm5v~TaI=UIab-(B{RG)~vZKNc$* z6icUkD?b4LKLEhDD6nzhob^E2Yqr9pMD?;eje35L-nfK%!lTUD)3x`#sgDimiERtn z5Rt=31TcPuAeoTzMi6*|J9<0o0s-|HMu&w$U=f0db$qMtAc1(UUR9Q&%mzs#o5TQxkBLUI(HMXvzKK@~IAEYVzn`XaS+3|sPgst8 z<-KYz3=C2wc3p&t<8A#9lBwrzpOOw0SBdbMB+?j>c+)2&-dMzYqDs15CY zWle8u15A!7V%=8t#;%iepasyFnn5J-`7#)l9HuKV_2{~?p{s)cuz$fCKujd-F`5s; z8Ue%5+*y=+vg>j;=xoHh_b*cpylMMm^=lUlEjRyKaHagO8k=dL*7tM~LgQKdHZOu5 zYiGp|!1+M}dSc~QLo?OD-1DL(M*s&LLSsMy4AMRY9G}r#?EIG<`U1x&SB!zeEI9*4 zDUaR*C|k?_B}4=sDefV**Qtq0PEX7DPOIK_LwLJ zVxr3y#p(o}ov@5#-z?a`fB_a;*RkD)xa zFTr_4a(K%M!?fDS=z7=qUb^lK;u%9A)otKPE+wL#p! z1iy=3!5h19#N1?OzGSp|L#jd#hUV+BWo{P*HYoy(_LE-?Z!&+~h$+9oN-P1uJDueO zVrMtM7RPH#Htop=ZZQRLIFJB_lN1_&}9bxkXN_S?+AH?pg;p*=B1LwqDB zH2SidUhD+5M@u#gDknjfCufy@7*T3* zm7fA!GT)|K!e{Pdz_92|EtEKZz$X_^wyx2pB=}=G-J}Kox64TNi8O{QWbr_c@k0k+ z69lm4^_0z+>5Gqj5R!B~xh)pX&!l8SBBGGpg<)chR-VteWnYl*sar+nu6B{pfB-&o zcHm40f>Nh^DFa2UPT_Y(^T6mas}WWeVN|uhrT{jEHex5KPm~fdt>W5lH=c4nc$_F*$vh-x)SXsZcq_ZFBmNw?;&l%|JD>#&$Q%r2Pv6_;E;Ax`TWL2B8XGHauVt2xw30eU4#>9!HYQwkc0n7S(dM!} zuk13x?snI6Dn^Dj;ObpY)nN@KZ&C+Z>=&?ww~f1-DOF4wo`i3 zzZ^acmv06Y!=no7#KvjBjf5<9aMkgDj3InNeK6*fC>5(BtI9p*!V}*W__68sO$J^O zc(NODJCs1k%y0Z^`09EHHVq*m{;-k(82DVOhgz@b4aD`Rg+dttx#-O|UqZ_b_@SJVBoq}uwhiy$V+|O)b&m9u11M4m!0C!2x*iGjL_os$8xUzYZ zXwo$DuJHXRgO2gBjbUXw{NlP2H=R3}5){c{ZiW^Eues<-fnF1IYq$~3MffOc)}0F2ttz3|4S zf_cv5n3IR~)x-SR!vNsp6HwaDt7re-^CT6U;}9E~B^29Efv=j`9MRiQOCer4%d%QF z1hGfB!qYgvR48SNBqWfSXtQc=jqj&dmtEGBP83{y?k7y(`xT{;}Fdcx@DAE(a5 z{0heYh?v%#qU(OeU`K0&;hMYQ4s37kyw!g)53_+Mt<`%ET20|P+uAJ-d=Pg^R+7)X z4DkreLhy{(00Sdy*X+NbX!(Y zW<{^7K-O$cRIO;p`u8LF+RuoHe5lIuJ;JcS*S-v{9YkIW#k=rZOI4D z3fUJ=4)TeLW0_)MMgFiz7rtF4MaaJsMp{rs76_@-qA$+Qwwd6I0i-p5uOM^g(@zla z`sM+XFxZL{bOF2>t%nxwR5u|^sb}HtL(bOP2xzoHB}HySCC(^ZoOAL&M->y1;XBI5 zCnF(7zjdy#B-MtEp7o%WZ)a{?t;~p8=A0Y)UM}3W>4nibNjT~0d?-BV$3BI(T=ADf zQETx#4X1!=fD)t*1AMwws%%(MCfPV%xy1ivzx@QQNUS_4NTTzeFOOrc6MQ=T59F0a zDgm+(Dx@38=ue&K2Hqo0+!aecC>{YiKiUZ+Vo1VoW;(*IR-bP+ZY0EO;Aijy#W#}e zCu7OD=O#c!;aLFlyt2EjE;N_>b>?eGw(0)NQyP7Ksc%*{a>KHB$pOgi zb0;xKPTb}{@Ky>}mb7aAv!z9e5%#WWUi&xhjqg*AcrMBQw%PbO=LK1Jd&N6^t5wEJ(4b%6i#jWoWQ zz=MP-w|Ej?*-@IyN$!cB_NHGAC0{*~7||0y63)r!!-R1^wXi-*;!HQRpoMT=?e@!8 zx?9cSg0*DDI4zYju(LB*q<})inh%Fu3_t$R5HJ;Ig8oB?@PJ)@DU3tT_0@>sC>oxa zN0N0v(&B%(7!;xup!803!Gbe+kG7{u_|G5t1rmLinJRTT)XVT1&^$_BM21yL}JD~9b!yq0Fvucdeb<}i9qRL(Ioq) zq=FK=!Wz|VE3ATTjiZd}WD9kQ;6`9#>PHp$M%%thJ>TzH2d3AUe!L!fbC;N!xe1bm zD4#0QVs@CVPbcCt%kT7>6BFP%snN|~t4!7rbSz==rICC6-9qt%BjPs16|liPH~-Mu z;f9!sq})Qa3JiO4;%KG}`MW%Ifj-=!kQGvkQlh}hSwZ#K`5kDa*W20oiLyl>LaEW= zv2|NqnEL7M6>Cj*_heF!Z>96gcLz~0;d>?>3sZr5?Fo%*Qv6!Wb^FKuw8o=rYrb#z zk;Ps>Odx7xCuB_rEd8{SKSZETi01GWIq_CGl372J6LgZ8LrOl%_f?%xHEd1sijg|@ ztUaG)sQ+aA3nr6y6;9S{9yvKHa==`yWCkVktrvM?&K1l1T=zsF4%i}PwkV+Y*g@8E#RdeYAz6WC3+$q&~SJA(H|)=M%5|{DT)ch)&ZI-=*C5k z#Y+~Z1ADO+I4@=(clR~C6PBNUfK_Q*6Hwp%#S$Q`Lf(b>3U&dvI8R*Y<%-IzuQ>6? z;tDx|kc;(qd90IGGqtQ4vw947|Gu&2Lki3EoUnwu?HLchX~3EYvL?TJhirAfHY!di zpA*Q>FsFpe4zkcye6%3e*O+=^o;kpMQof6?pEWGC!sz2w>4AQHKgt!48CByRB=ze; zmh8w}ZI}pA_{33{UGYIHtF!1^WJ=Z#b9<|56I&y!Ftwfa01mBxUm$wHUEi4(Ts!{R zzFfSRayzq%%OmJ1FRWs}cp@3a8Bq~iNs@k1%zg-w_X6uf{`Q>Q`uEQN5f0&}uhBcF z7j3?;hu+(30G(-=oSZ`K#|*p~Q6`=MkXhA6)1VQipik!=$#i5x z`I>ER-A~8!{ZMXI{LH+e)afVZ`BYjkT|RR84>>_(AMc?q(Y+hyeD`lX49U&(2883% z**&f$gF3v53q24-ZJiZmHpi-qlOtM0Yjbm{T1L!IwN=m=qc2fOj6XJqjwBz*p4r_9 zB5-HYR4pSmfJb8Ah2U)^XhY6dOpfE>9TB{rb)f}z^c5dEVbj(Y(|>J-$4NHS|GF+p ztfilhZb$9+IJ_(oc$iNR@lj=BPiH0(F3B~L#rmh{gx|%4Z#Rxr0=0lnBml0H4^#sP zDRlILBNE=t1|8s=338XfUVj7K?qB@2;h^6>YLp_g%@IU1tLXwR8Mvdfs2Oae$1p-` z%3@$wP5O2K2kQt21qoE@5P1!j6W7trBvuwX3n<>2L_rc1re-P5jjj!g>yXjV{$nNAM?+lSO3 z^ma<(xtvdQBa_s@+M3B`4KiHP;lFA$BUA5Kt@OQ3S_HtqZ~!rZA{TD+lNDx5zAT|C z16i7qXE4hXa|c&8>g&+<&BV0xAEU%w>Mrv-a?2}rmxam+7p|A+?u1p<5Bo^s31bU|}$Mg|MzZ~E#2bV}M zg64FJmwOuM5yEx8jaDE;k;VUJiY+WJKgdITXx^2`Xa}dw=i)w6A3e`}4vV5~Lmt5& zZJ?79M`!IVlf7R9xVDPClu6?A=!*|4D?kQXxI6#nYg*~GFQaD6XP@yuvK<+oo0umH zXiWQ`_x`8Fy*0vMYJA@H=@jQ3N-hpq?9+^J2SOAtYyE)&X{t0fySNNRX{%$|ac((q zB)*3K+*7BK`-=EWYDmy62aA}Yy0)Bld&du|7Y}IvOfs8(33WF6U3fGROnr#36)wwH zSLw@lC1o{HFxispK4L-y%+E2e$`@Mp+N#Y}<+C4jR-@g>j}%zHRVchj2)N9ERJ@CW~CEY*qbR9{3l`93N%8ei%+_1@P!qR1DP30 zf>pqa5zR9_UtsI4x;ePTff49<+qQeoJODBGKv0&hF^AFSK~AR`H-0c@MB1Z88OB0` z4M1S`#~7q8*Z^q89dhG)bC6okh|+(-)=Ft~QMiB1kxRu|fa*)PH&CkfR4=p{6~X)1 zInq-CaKJ*vX+afVi4tr+4vl78r7MMvR}j&?aPRr`Of3C;=YQk*Pn%@M3Aq^#g!g?GMU$ljMMc58*W4i6!e;KfTCFGXAOj8w$sIh9t zAm0S|5T{{Z1@MJ>b4l|s1+-czr?;}qXx}YY-d)2Er7ga|laRFMSg9S7EY3Juo2CdF zb~3tPx*oYvmSj5U)si_Q%n3`mmwQm?b1~aF!fm>cm$UdC-4j$Rgvl(b3nLd(guw0| zNEw2G854}kIV4m6o_27|s2t)`L$rN8%6D1_w+sK)oS*8^eolEtaTnFaHGUZC_-h5f z;g3phQF@}UUve#hz`f1>Njde)K)A!S4O{R*SG@x?CMff3Eh-a>;SE}pE!nwjPHFQ8 zW&)Q?u{5yXLHne^!xRV!6`pR;i!X1bWAEeRp0o*Gq*IORqTJX&MpqV~B9*hwUWQ5% zV9$doBq-0(QC3R4{ebp8i#ntL$jLQntznajlemW~{l;46S5#OZ-_^7(%o7Q+}@SkX*JVXau*A%*H)RgK#+3^_7{wRwX?=3HB zAa*@?78-xpDRgt52F&Us+HIM}=yY7+}7`v1qPD12w`VSV2QqM#?WHk$!LOvw86g0eH_wX6U?_ zGi$Alxf`xj(lbH#+~H81NbVQ*!7to8CaV6rOL^ z>Hw6Vr|*?&6cb4TObnN<@s1*LWYS3MPM0o!E9PSUr#2i);PDtMFL#h&;nf?`4T)_y zj_00v%R53#a{Nl|$A)Tx>e59x4Mn;Ld>M915q-Xs-mt?0BH$4KT&Z9Z9aCZvt}~;l zX8!r6eaaY?9%4u43;Mk%##|G@WjtYiPzd*r*T5ZQPweT0LxvE|jJXpP)j9=3FAmRO zv;|^*J!Efd8Y^>C2dGnAh{rr>!@IQ**FHV8@EkSY~aGpz!`Ykg@YXgqlV}n zv~;W861S#qi@sXB&6lWxYjeRjjEdWx)yvT^Ym{fdi7+z9>T5vq)}co zU+&x?^{x+b(eA5xeHx`bj#J7&3;wj{VKAN?y!aMTg+?;Rf|r=9wrctyGv|^)=#764 z1paz!ffxc#oAk1JNMA9SX=*)W-3tzOh7?0`R~wi<5T;U11Fb@Ejp35mGr({3!-eh< zfiBXhOY)qa?b@~-VE5o!)yu114xN@E^>85=-$ePdi@Xc6s^lhw@~9xdu&*kv`xrT{ zU~|Uv8}lcPPfi=VMi4>~F$uLChY`ZUs`0h3;x;ddQkQIkJKFDSs6~*^wFFD29*tI8 zSj}uLE}jqJNu={!DFynK7Dt@x1u1L*$g2U}LDMLkm9$IG*pN1cW)%)Lk`QafcvVqT zHz?d|7fSY&lfM8EIwb%3DeXa&Ef1@8uT7lP5uC3#IVEKj<3{Qe_)s$>=hb0^4 z1~3I%+$)(wqmJ{97Of-)M6%;YVKF9DBof#;K_eNa;`TxbBfp2+yvR22@t0F-W&)XJ zkt5x!*^paRuquwEz>fSZTS?|_n{wBe9G}jvQ`6HSKPl;PlY`ahrM}I#WAj)+$GcM&LvUy31Ba!a@@3qs5fGgIDe9(ZZ z*J9%zId3?i#5p!9U}{9gN!Va30g1rb&Wd@ZCHu|LC?BBwGi$0WyOTqOz!|qwf;=yV z7qZNfSZtl()3xqR5#tNcvGDh^y7=*bXr9YJasInA^I7~FZ_+>l*eD=cw+%B$7| zSPfB-f$OD6@AKY=HIZXd`t(?)tEEFLT(07$hJ_CHvL~8dT$8TuBiU(rXXDVsOxKFz zx3=B0*!Pr{CWdCnfl4v_HTe}lz5?I!n_#5_{pQS@{uI*e)M=}OY3Gv=O%`_sCoeNz z(eNK>P~qI1594~Nm7~^WkV$rK`GrjAXT)QMRcgNsb9n|1E@~_N1P-)drB|i-M3xW? zQNzcZ5wu=%E=8UM4~e^?=NQwujIeFe!yVEgjq>wqB*rKnb>;74pV|{0`t37RVj35) z|HK&+RN6B!OhY|0wCS&wN9c99k8h;=Ju)`6` z-qq)OlTZBSYgh?%t4gM{?FQWCF*TzM%o>otYp?07^k7pR0x6)IdQK8#+F>YsYTVjR z|4$aXFVp9okET&8KwIpXQuecyfvsPml|kNYkjK){B;%&O@Xy#+>@0FmmGVM;z3*b` zkz0g5o?><3#+kv#s~zCW|N25xGCexyT&w}<=@)-^o(TPv&q9ARWvqp;D%EkGI=~Ujh#58r~fG zJk`ERLA-F&EmbpQV12EJPt^Gv^Xf7lzQ~EhP0P0Oyc+~>bSvJp7cRA}qeXLxsmzFZ zdGUI)HQYu;ScW^+6`}k><19buD$Oq35m}0)PCs6(hiOdDvA5Cv=1R3VBcx!(4W73m zNr0)fxs{o;<((dv(2>&=Y4t>Id$_{3zoUn(4a!^bD?VT)C9vvPgU-!T#u-PGd34o) zBnvq#v!In0seu?pydn79R;Q-mWp0U&NAf#^ZSqv6CCJA*s&?1%>=&+6``>>G3pHzss?Y;zS9f>cfpNLZqcyUV|XcKAW=%&bHhRSKhO>%Xs^Z*H+SyUp=~MzBD2m zg}^2bT33N*947*}13#tpvdaL9G&;wbfjvc(pl^@5cr=ljt21^5Naur@;&GNJ z02XL=f*Y5i^bh39ws^2WNs{(B6xBV_1~dLJ2WHX2>VWK$%&RSN^rjn`YrySCy-E`Z z%NZngO&^MaH&}F$F?{f6Lq+e&mo@x1n=sjs7FXF?NV)Qy{`Lb-##3q+@Tnhz#D`v# z=|rHBB-38wJgqQ8;x+yo{Am$huG?ALCm>Zo5tG--zySvn1_YxUhXugw&CVV=IOImW zg=pmk5#A#=Jc6J~|NLQeNA|;bYa|Qp4XYuyoFBb$-ZYikQ@33TjU*~&v7nxnX|et0 zV3E}mVFQAi)tnMkc^PKtxq&-6_)x-;ZxWf-V>~wbd*dp%T$Y+);Rj`SPbl%z&6ojN z50J)4Yp}xEq6foM03FLSZeCPO$OMwBOP>(#kBBaxJgJj@FunbJai(8QcT!8er|)Pe9ghM zmB%e5uI_WWrvAI1c&)f^Dgf4x(H(97SdmSP6B6jUlm-Rj<|AWK)CNflenVUdBvdXs zU`hWAI8I7u|16#PGSSoqkhH~O7tn(JNj*a)s=RF+7_W$DR9nw1j)#+kOX|i^(UDEr z=Jt992Rj?Si0eh~DOp@JkNoV*+Jg1U7g{c45ugI|)_k>-hN z_O-h`J#M2Oz%@R(d6mlp&byDlml%2x`p2_45}oFp3b)Dg8A7wEAkyX~?eGz+H~m5%@Rh>9|2O>RIMzm3I@V5Mg6_veFNM&GF_o`h5>VC)>< zpxA$jSm0;v4`n*PAGs?5a6%gr&N=vHIJ0{$%rx|8_iA(};;g*!7~%kBW`hbdFf-@S z%#@y`F|{81gdOmW&_8|KRsml5oP2}jj3D`%54@hge3JD^b2OP^M@i_(+?O>5#B!33 z53;bauNvFFn0hORbFtx%VMc~1-&`?K9mq&}_C_^8H;`-U2-?JFugWxWb($uT@U|mn z!-mj|T{8cFHZsDWf0eVC$XZ7Y=@~Ff!l&8JYqM@aucxA*6p>e0+D1@YAf><|1^Chb z%CYKuZs=kJ_v|vAyLpWSZkm2x2UN~TDVG7jqz!*jlMkA3IX4NyF z`W~*ld90+`;L83sS;|(aS`W-<$Kw~M0`v3#!AJcnW+w{P_coZiAzqVFY&O?`R4)W>Zh0P(!Wmv&EK^p}n)BbY9D=t?~q%WA00y#`C>0D+ts~4jQP_w{pQHaB#`- zNa)blj}DWs!nLW{@?XB|YNKcGce-V*3{6P??vR)eQj5qIR`WF{WFtPoX5ym}F1!M? zI5-(EQghZCwW^rMSdkZ;Zvf|%KIdM+!Db1sJ(bWYe(`~XtaTLJL=f<;c~t5*nZr1(Yy##I_I~hYXl1o4JBmZoA1V2K!|1Z`sY&ck!yMb7W zGdfM*(=)OUypgd&&qw&l(N*!7ILtzod1Yd&BID05&8pnc1$>laA%J6n6^6R;51LWp zH{*bBvpK@`qB*5%ZU0>%H^%$U{%H`eJo{0A#=2|-aM^ZKvAI@pK;j2p-+Xk)<{vfX zS<5S_TthmRAFWY{f23uCs=w|~cr^n6;(sui@ahldm!#tTnpeY)|8e}-o#q!5CN7rO5SUV4xQdfWY~+N$ZKlxG%F zoDf4+om-RDWC43b(y#!*YQ^QI2e1=$K$*-YZ&w2IQx?OG*Fl|Sc(0tI&Ka&Q##-HhyaJhTRLI0}nVM$ox zHC=LgpUGn{GcoUIQn+qE{vYN7SNm0Dgst3#Ke`E`MZg==oSly!XM3C$3dN;#JW!l$zjslWxXL z|19~ zV=zsa8r-Oz<1!TgQ$9TlyrdB20xCE-r$U6bHKnCKVcB^1=`2%`uLJP;q#6p%?ai+_ zZbd9XNL7*@bPQs=R zt~OXD2O{Z%W;`#v0heGs!SH$3fmvhO*Li^?n^3CJnUrC78`mhl{@x#c-9uY ztlB?HV5)o~G~70P^_FZjSZb8EGIvuQKm}Xa=IYIRvf^-FmdgS%OS_jn*`L2MQEICK>|V#+vyHcA+t>>Z#8`ozs_Ru8i`ZU= zG~dU%=j`(*8H>Wie+>WIr)H8-YPYhmP;d4zx@Wr55VX7X5ubSvyd3^P4FFfnU1aKp zs^gjZZ+wosil|P?Ij_8IyjUl{Kf-2A4UpeA-UZc-HN226N?TLmyv&0X2?V+iEsCV8FeOIMxJq*~y`yW7Wd zRDMEI@au+pa$&C#ul6&7MHZyIexe+~!M&if9yJDAb#6D3?_<#+T2G;Zwz8gdC6f8a zSm_ryjEhHQ1qtpmq#W|CMU___j`3wbAdB*7N#%5qrJ_UWi7x}t7A`Z)&6U9G@ajwn@_AUqnx6g|yaY;eJ z=x$}$XmJCdz}W<)6P-m6^ihLHkm1O{#-4HPVlp<42-E@M(R)3}0KYdlx0>Fl%VblM~I2!9|7Wjl#t95tR^a22st&b1ggDR7H4o0u8+~=#9R#1$+V+FV@Ypml^{m@#7hhpzV?M^UJFQ!kO2B zrM{IE9N2uj3p}?G>Nh-zewy~r==+qoN(LgQ|QE?e!Qr-qO!n3 zT)*y$Dhf9p<@5d{pF&g%gI(TLA-Cxg(}7yv@NHGFG}LL~g79=d+@;Qvn&k%Cab0O9 z%<0LpJ*Ul(cmfObkZpkQP=6H=ZIk)t-izH?hedr{C6RKFc(aaUJ3%;m+m+X^qf=8MeGiAi}k>C1IaS8;_F6btpC*3`_h87 zaRFAnOCjrfS#;5LcmHtyWP2HnZgy6NhA^m?g1yGcU%#Xk3D5l3B;j!blNxu_RVYnTD$0>&r=F6LTf40)ofU7`Z$gd;*j+en&^R~HFLeQ># z(5i1aL1cqIyQED&XJc{s?K#8xC~A28(*L%iPJ+pZCAAT;5nPNnkjOJ43` zbs92PQ?7_Zvoy7}-36216s-{Kbl=+FFT~K1enGK8Ecr$)TOREYSI}Y@v}mMvH@HpX zwoQJCiJ-$J2bxz2ICAx9o0uhEfw^2b)HweEh4DTL%yq)WRB8ed2@7^+YlLJW8q2hg zmX}02ME=baF1_q88=enZ;|-DIe0k5nb3Dt0Q@n8&`N-DTju z4?1sn8hN~XJe|j9_R?`t$2C)QC&R$E9xv>hDBVfp3xZo*0N8+Mnos2^f=$<5mq|YH zy<8U-sZ>S*buEABZ0 zA@b097)X&}I8)x&_}?Pz?=LTKa++n&G^LL@c@%Ma%`)j-cMUPfrq_o@AN&c)wXN8z zP57fuQrpgAIX^80nVr50!tvfBpy|lyjZg+2s|He}5XK^d=)o9)oWhiwm=HaKP{a;K z!dPHvuzQ(*BTzemvsN)_Jqbl0yoV4M8m*7o8XhB=Yu(i?JOFp-_>DMbI8^!5I5mWW zgSs>~!{l%|WH`+zNP`OoGPy4LZ(wl}N7(!Tyo6>=9ye6sW4aMgNmvLK^5s@Omv9|L zk}dycBVAu5gQeZOYUoJX(!Kz$n*5;-jzL$qaWuON{G$06wu8vI>Vm^;y3BfUlM=~T z39{z78#R=82`mBmH_5RKzTB5Np`8eUo=8Ez^LqtwY2yczP@+eMEU`bnPp; zK&4A$43zmUP$HMfX53fQ=5b(!RJ*WwL^b0HjM`b6%Y*iDlanM&)GY%;u&)GcDd!3& z@`O=#gts49;~k{Qz>S+&ZCHPuC07?tS&Sb`e4pei#~%wM`0AmbaV9GDod3P$(F@Iq z0-H7ZAdEh5Arr7xI%2?MNS_T9jVa`0LlHw+K)yWF=$i2+cJ348_{2Q1y1=DnGg~jx zG6VY6GE@H_Zco$&2EeuA$}X29Kb`+cu&`@vI=v?bvcW$&@=HBW(aFq#P?NHnFma9u zaXRTdIo4~^_NZya4U==IsOaa|)1o16+$wWtVdFSCYqXSor{$d#+H#KPVX@4C;eZsV zlNzvkT2g8yrxecw7~9N7(*|pIJ{xnZeL_pk6GhM3=+R{Lbl^e5ME$EbxfMgcCYit4 zH@n*x>2AW#wIT^I692_1Q*G=U{>xT-=xz$bJ!<^K~uHI9xFV6G!& zgCR}5dW_A4bYV4U4m5m?1npH-SMNJD7H$8YAFmwWK-Iqpe0Te%>jLqSoJ$>WSl=*D zrct_e*c|F_gg7JEeA`fhA9*4ZU9mk>?1-Vs?s>RxvKshiMdA`6cCF^AS<~A93RDr(s~~+?pp_Z)cZS9yQ^o2gc#V- zjcW7`o6AHI;kLf$9h%6`46%LDl3S&c`KtW7sf`pfATf{WGboG;>7mXIYD~i_7=xZh zC}D^SkLYTD5B#0!6)?3V=h~s(d@Xj$D(s@9Dkce#-d4-e)o3fSgCfSqTTVg9EQA{6*uMhSE=%*{6E0oH4gq1Sr}?wb>w7;T{LQPRCO06FyohMQ4% zgR_Hb=bOm9<<@a_@itF*@I|}#xwm)hWc@&1Xc&!ACRK>G$9WG!^aUGNZgR<Kr8!<9ok;$*3k8Tey>-|FhmG_ z2FBTM#Rf;CT|*AGXye0xh6YKB5-(K?`*DcAdtX3Cj4SBu@qax;b@BqW-wZ&z(uWW{ zB2Vy$lHiq^6SpaS9zQ0^%Ig_aj4ZDZ*)fP#h%2 zrY=X>`=OaQZ*H>z7NMS}>-%$d6G@)vs7Z~Z@t$|qht@@Wrw4~KO?uV{&TWT#Z1Pq5 zDv_Y6oU2w{10euwgv7LK=Rs~Q5`848)Tr-m@J9HsYWMfoceQJ!w`h9CE*+Vrd@e-j zjtEAb7H0;qVftsQZ~z>><^0LS5$ed$_5zDH%k33@^D{2Uo;YoF1-zZ_%jt@0nS>T= zcD9smfO)zcg5M${tMu>p<`>W z)6Bc}J%ttUs%9h2igmcpZ>PYW>dXYZs61~qbgMsk6~M+WHDJazu8aYpW90<`~hr)htf4RkT`e>nSt#ay{0+I&tajEYSlS%lxmCMm0+-MJt9a!N3qb!NcbH_l*Z2! z$?>|k{XIRo>q}aVeU#(gV!+0qSu_jieGt1#Kf8?cdSe~-fj$u8w|-<1d`{t>oxFP;aZnhztpO z#-!9dyTu*JmPv;0cto!OIaEw=I`hY)a0$ z7%=&n%5~G!t2Ptz+^hsBL#|e*@OH9vb(rm7z~M6_K)J>Y9h5kI#| zu}W{+10N9}@g@;{Br>52TC8P@boyQ__t3l;;_rixLfYN^ft@SZ7A<>@Ce9e!NVC(3 zNxnTsPj_G#yl8a~PKYKWU5wQ3@M9AW|e?3^1-hy2||KeZbvO)hg*ni7j^n1KD2r>!@90{rfD!7*bv;783!O($SrL z9O$begpzL2Ys=B)9nvcxY9xj|{Sv&8hsHh9$3*%u2b$7xIR!#e z!F`v)b9*1=0|zFRHonL@LPS6${2>RAb@!k8FNN4iS%d0wVEEZpq*$WL)zD#JbTjs6 z@kU&WN#n^>!v0DO;rKZ*cl84L&|Kw}FkjiZfkkCDcZ|Cb(oDCyR^M(WchnMF&Sb5> zY4yUrfouCAFif*QAfG(5&)g(xI;Z%9ow*Wfwhj!NUmt<#W0mWT!F5|(Ei{hRt8o=S zpqtKw^ZCNDAiggP2aiTJAW3Fs5j4vXE&)jMviQD<}gP0}dspg_^8=9Yg_`>-T2@9s4QV%Sz>Q9nW!&qr0J@KM~@1X3rj zY1D)ua9)l}9Z66(Wy%WAEOvXM)zKO48jyrl@LFB^97d9q#}gx;-cl%35wySXluD6j z*9n{HU8R`q0s^QW#$ebcOV*t#GeAE52fz;%u6fZaP4v_MG96IpANV#2ACZr=b_EV5 z`r3d;o(`;(o+f=>^XL=&jhY{f`4f+9)F}@g=4r@!j6YBa@O8f*gY*E+l|*x#53e=~ z&tu=g(<&!@?_4itWSWKUMpjmGRM!gGhs~1tnD?k=NGmI`>&Yc_o&CMIhrV6AIG$`9 z;JPzt+SeOl5CzGMui>x*JFwaVdMX#5*UZZ};bec^ZU#HzNH}Y52%fe3e6+1l&b7|; zmUZB?YDbTg+ak7|C$~EmwO607@lV18Qi~`bHh|6$7P2%N2b(H^B!sO7!?FJZn^qS|-!@(&GqC&z=?Zw?T5p zoL4jvLhZd~20ojr9gL9;0lCmP_SfXmqq@Go>%mJZzO`!TwqLrIUg|+;!D>uNMHps6 z5GE{Rt0`=Ktf!lHVGXfD=FI`zLFXMm;*Du%vdz{YOdz{GkY%qiy1-Ps=CPzBp-_QD z*GF2@`kLD2g}{viVnH-*j@!p6(L#Qg8c$Z-XM1$43el|?Db-s3A2-zupz}D?&e9d( ziD{wg(LCmT7`v4r;9LOzKLEg?viQ5%a|ao_Nm&kEUSg+RdhUAUpTExc zd!?T6?W1<}xgD1}*m;6OYItFRn);Z0q5g|>DSIcaXa|opUvA;^pb%DATt;3KYju_} z@iA@l!c{ zZ`#oY1_Or@(q~F`nGQ#J`lM_}CeMB1G^*B&j55`30KNmoteOkwa%G%UNdKgS>bweP251_+WRvPy9*9<7l{9!SEw!F9+ z>R=?6?NER@SToP{Z+1LmL)8$qjDa$u3jj=@>P9ME4I6q**wu2l(G>Awc!dh-mj zbb3?)HkC9$z7DYR>~Fg2uP@A>1%yy_@2r&G#r^ONq*p7p>kyCu zGTF5Z2NM0QIY1HxFHfc!!+j!_#Q+b#wdyC1e=gl8#^ZROE75(8>u`_~?X1iq7PJV&xnZk+ zHEN{X8mhZ#`nqtTs*SvAIh3biT$(2P*3t-JLp6SJDQdxJ#o=<@?)z5Gt7|NV(w3;2 z9o|qhz5Vi;8_rB-C_XCNET-i_c9nw;W&@8NAykw6OUIy6$`#=}k~Wo`oVCP=Fs!$J zRWyiWsiA6wd-gZ|`-kwJz(z3Oo+<^P<)s{dr%V#~dd)b-=|y=$|9kwYH0F$E#Kz5; zzS!8l-^uV{9UqSj91;jWvk29!+wzBHRxxQA;6kN+zKb94BUtv$%LL5N;AKSyV>(iJ zKX%Mprz&Ugq0g_k$klZTD#3SrU(jt&^oddOo(Q9AP3dOl0V3&`CY!_S)VIOOLS{W= z{pa82XBIKNPjsuri4S(y!gXm@lp3Z3cv8zQE%Y$GOVsh^SnI+c{9GAbt*MM&G});C)QFX+eKz((+Xi5foYf;+|U{N|M-W;?kfj+of1E?szy4eqh7nZ2VV^2u0 z*~F%?^Yrn-{UdigOLr<`-me)hwS%T0vHuGy`akBpQz^Ra!Emc3)AM3!yH>c+&S-!& z@%vZCpDoNX6S~!?*Q2A3aX$tnMA(A_|0Vg$3>!rURtu|Oq{3~!B&ABoG*(_#AikRy zLKlDHj0Z_AIi7Nh#$TZ%iGdpNdQjPt6SxAumcmWCFAG_J=06LjTXXU0O7>^ zHOY)|?Sdd}-LJs|BQZxDT6Sp)GbNyh=C51J>`k<}oQ}d`#vd0E?gNO3DV-r{x+hy~ zZVC6cffsk>+hwyK;(fXG286(upd=UaB&de3>yfRxXmAhC_K+4>XGuh66Dv#F0Eit; z;ZH1UsWGqYI9`dv38&MSzXM$Z4@K#LV}a7}jV1871e>9zg_0~a0;b07ab9yIi?(6l zj;5FcvKZB%B-1Aqc`~GCcaojJOFW9NO28BJ6Zu-C98m!Zbp%=|!XPDT!RZ$?Bajz|9=sC%Z(DQf2&@>YS8Bz`9qEeuS%! z{VNj0(4$T`8;mz)t#|bV)Ns7KTG#G^J9g5NDsd(E#ZltUmGW`=-><9aUk6vC7v9bh z#b{lrM~pq#VQo^}NI9m?v`#N&`B~T_61@cAqc1JuP&nh2I5;=9srT(tyDuA2m)F)fPyY%dF1@z!V6 zD&T=dp)@}nQru-_14q8k<}xB3gNalR*j$CxOerH&2+CR=8+?X7yIhiDD}(mN{Ni`p8#Tk zU3Me2mO$U0IQxCXcvGA-)A2yIb%~_eHl>(N|0WV!-3qdQt|amV5wkXe30Wm!)2NEH z|FC}S_e^Cn)~zd)#+7zn^=fcl(V>9H<5&e&F<2FOcD@S{Z7g*a)NzW0_$f>I$IS+p<@Xa_NPe#YY@$ zFKGXQrFR|Va6`+A_(V(rK)wllI-2ZOGlPTz2CE#GU|5l4=YX?41ZUK!H+pO{IuBzT5E<=-71h?=$2n z8M3b9sAgSAq1PXj9Zj*xB*9O80$B+Bbuof8QsA8^hR#_Y`7zp1tCR1TFX-K<d0natQMT*w5^x_L^;3a0K>K3V3h(#2BxZPb%URtzZR$_T!^_=vQ_hTXQwZlJI1sdsxrxmVTim!b?~s# zA@D*PrgOog7q$}Z25e>fjfHm%ET4uMmR_nNIG?L9rP;h3g(Lp(C^kd?D3wP37;wz4 z?sL#K*@)9$VYl*Jeu6e2MCE@GM|+c5ni97)Sdu4jxOQ!E*yt>y&_^j{$w?3+ zvbBj64gQhWsy?R5z5p@YRDagm-D+y_BiQgWe)EJ*DCMAKwah}aW`pY|)yh*DA!T{q zoJNh5;*C;UfgU4XkXlIot3;|Se{mwT?MyY)kUMWVw#p?g62ri_(OFbn%v_i3YZ=@P zT{z0Xn$*1^JJ*Rq9U9MC0*MLF*Dd>9Z$z?+={|u#ap;la>ch;j4e^-Q45V1qU*Jz^ z9wlg_BsSnBqbJC}Y#1JCR`9`?=L)fw>PQJegI1UJg>1c{&d_AXnt{X)(>v&6puTlXDdaau51T8jfop(7 zAgWRZKJ3HK{ksJk5LerKD|er$SHY7%emY!DcacfzHM3bSLnn}>6wZX_9Mn>}TXVm} zGwp0r5aPDA+y%GTryWxz;@mxBdWAi9mn^Z?2O`}YY&zxpa{7!h9pCAE`RMUcnrI_|*j2sg%Szm~%0!xvZ}+n+ z_m95@IC_=n8s+QHeP6evWedAI@Ut*}zCdm$1VhzbSH9CXPR|maJ{)9Q(1X>=H zI*z}laYt{rI9{d)lG)zHwI*QIbz_TX&;UA~sa#PiBv`^pUU8VdBAaW?tm*9sJ)Kc&X_5v1`Ai4} zf$z!t>1c(>%&oLaF=xC2AGjqW_d3AkGbDp(t^Eogw=SIu=H)mvo0Sh}j|SN_5%d{u zl5A${<+0Cyo+irZP2_AHjZ8U3-5IRRc85n>_7)K&ON<$kH$aAQ7XhXiF&qbN&32pG z4CY^6L4ll%%g;c#UI~8Hz3&avQE-!Xh#unf7AM+|6Y6U^`Rpx&FWvEV(X$t_U=DW-^sBG@?YdqR;{p^WHJD2g9*q5So{aB`sKTu(DvxNhSro!Ug!v-Z(shaB90=1eTH#Vru@Eq`W@EE!3ogRYsLPP zQVt*J-c#{Ucj-p-D5?W6mYQV0Q?^izCG?(L$0Mg%dojhG_rMZE62$N1`#!axIV8;4 zTwL&BlUaRFlmU!(b;0I0hM1<}X=XT)f7OKqolygrH;3ckR{?LN0!|xLdf2;<<=OX8 z&x>}A@(s7(KZ!AQ=qJ|9+;`#E!Fk%o8*#>3De3BA!vldPxVP^h^Lb zHnmK7eiBo3EPSA|Sp|h)L=LT>&QcH&rlL^uc{xoc^+Uefhw9ZY`k>4Fow>pe{2*8P zR(7hEIX4NxS)^CF!a#?@?QBpDsQ5vx7|fw#yr~VW^YQq>nIeTw%QWq8 zbJ_#ODq3n2qyiZ)>mF{uf})O3^ibW8%gE(4RmaxpW||P}Kh~JS@!fQO>Y_AmWbUh; z4qtjZSE2>kU*;hJw~WK6i1pM-mb{Bh&I#u}SwEda`u1FM8!SmmnKm0&@$?|z+%_sw z@a*lQ&DR)mw<1YU+GgB~LI$@R0E2_`QJ;7&Y+6$%fs6Um!`UeN_P6k2)nOhNm4l~7Z)|q<&r``4-`hFZlGAY^miZG3WDJ>mI6Wx3zp-U!= z%+gV5+H*^WU5{ew&x4zb~GL*uwW(}Osp3SutPUoEVE>bA( z8L&v{+%Glrd9thuwZk^P4-EaTjO_b8=_%MnnJZsKUq$6?jL@56_POt@x(jTvJaOqh zc8J*vrs4DOuNAUj-sdex@egwdlc`SQ@1D2C79g$<;PzVZcI19mE>+LAhj9R2S_WEm zbDBsJ+*M^fX`HhDlM;sQMZozglT|$@X&|_2qFq*DQLY-B_S1fU#6LOa;%80uIiRp< zvI()M-?n~DNwJ^ddyyTT=}mF~rqv^L@3?+Lg(7;R7fYx%)QjPNI*HPS}yC^qZEMeF_o7g+-HL1JWkrug)1SG$@AJ{60=8cur9JqQ;C8Q9bt<}TC0B@ zP`JIoF2XX2@RAL7rV5UI`$z~^9#=gd>&V!`AvGFfw=xoF%2~e6u=!`z7+3NMJrt$l zxRu*(c+zp#2il&LwlS*TL|<==%-l(-$L{&(4e<6#k?D_!+!VyY4q@VWpjy)GKj^4o z0Mtoy{+&Hbnt7y>VNrAa>+X~W^-`OehYXTwz7fW?(Z?Xppmm&PXE~gdlI0m1EcWYT zqz6n3*nK9Oa}8TdVEZMk?kBflK&e7`w=EZO_(;-#Fl5t$+efq?5(rm3{np~N{6p{5 zJC{!_J#TkGsA)3Qmqs5b(6*FPMklPp4$fBYw2uzdC-OA$&kO|J6&#S;}gT9A%tkQ*twX zq?*{uMZARh4IV-anTBG|jgoPV%`xPDrzI*36)vH;9|JS`|E6Uu(JaR`H&vW}tM ze#R;f7TN#HKMpjo=SW+qC>p{d7A6JXaZn_3zyRnI()&+bJ_NPv;m zCtZlkl=jBCsfeAKrD#w-MJN8t!88m&FZTHo+ECDYXfTm`9*P=X4-z(Jqc#g%pL_9^ z(jmSf#wE~XfyY)3kz>V?DjORm>NMk{XwT6-tzF6jGsw8T5j|aSl(M7#-d#T-dcV*j z0a=i5d0!#H2O~G?kK$H*OqCSV2SW)uY*Oiu^+Uz{)Xjr zmZ2B($0s&FmGQ~NAVJk)Ieru!SrP6^!qU$|NSS!v`2xCyesj{(mxOQiKo)#}^^; zXrK`9qba^3i8Dk^J2erKePaJRa8hSa#@_5vTKzX2|IhqYhI;ih%P$rZMPHi)3I1Sj zDa~1WW#3)7k%oX)S#%nckWhR6BJT}39F`XY-!QxK*cn1N)z)zDh9*}hh}5sxJvilh z-G_n_oX`l=w?wzn=fOtk5$QY@BG*z}KL=RtE49i0Y)oO4&|6>!TC?c1;~)qczwFc} z&~usiV%cBr#lgC8+P@;iaYWl-h#&8Eo#Ry5SmHM!$o`tTi;i1Fugt4!G~x^;n$iwH z8wLfu)V@R#8c8xa!FeY#CPyU>&+q?$~cOEP6|-_)*!EOB90r1u>lGd9b3}rdC>k`Pn&BW0z%GMN_h4A zr20-prFYc~Vp{}7gPypIfq&DgN81OOa#pED6#U&td%usL?hRdPn9PnEIbbj9R(6n< z*v_twXuFq<`Mvu}3VJgwCYCOju`~s~0^I=3=af;rP2@obp$hA%GE;-BrG{)TW%-c* ztZS-6+p3gut`IxUgl>%+HXt962#6zENWiM_uMVvRkH0_*+2AOU#k<2|ZB_&ODYCUp zFl1)R?I8e+z&s@A_n0LJ`#YyOEXJ^dd# z0XDB**g7S{gwmL0$6*${8C$A&c`yj|8rCUMgG{0$0&5jGdpIm z?*T?8<|CDIbs#!3MdVJ`UoMcumZm|G>G#4@PPA0CV-1Qx2in*pjIg_OTwHO5t!*?* zJXwRx;}+?2_ZD~=X<(spOY7ARWITS>5}%1v*EcR3)>KMj2%^EmPN;d{XhAWZ3y0$|&WZt~aKcJCXtlqU#|Z zp!KDV>`uF25QT}T!h2F5qzG8}LfN$<4rfvLSn&?1B?p~PdN41W0;4^jtzc0}6hw@@ zvp`r9%4{t{fREDGQf}h$SwCO(eNE;j|1~omf6^a>ug>!q zR^I)PJJ^}U+Ibd&PZ(^TyQQyU zA_|)M>y>pmz3}KQS?ZT5=6i$7=3~yD3(*i4e9_RCWBj-{r$usUn6}fYoBwCnO;^73 zhkC+DX_|g8d)nPS<90k8^5g|W+3EGTJXAUof(oigQju0KI(m8suMX^l+Z|m>BW+;Ge;e58SiTV4`Q<0I1C0+6cxJ2x5fDjBH^__3$@T`ZaO%;fPmp(6nGjq zy>qrn9nZN%bXn#({3>~N`9U~)A76n68(6R0cx~}#kK=%IpkqyIi^p40oI=-E2>lUK zZm2-$(?~TBdPXfB-xIQP)VyP45TEwyLGHeXNbTchN#SgWj0e~&(PT4O;!OlD5N7rb z)>-pL7>%7;ISi-_v@Q!xYs|9+8?2d1zD5=EEO-XOG~1vKVd}|WmRn^eye5r$+PDk5 zND|PjmRlgIz2BdfzJe{|RDYbWJ^+I92XApe>m*OmS)aT0Ss!riE5=kti<4-X2Mp;v ztiE-vJ~Hbg8)(fO|AlKExsvD@6;Et}ql}3d z!XhLCv*hQJUM&ogjwrNrp%A)@L?x_#uaIMg@pGsHklRjDzKviP?AmDaJZJPFyaSsK z{`E`uacmISJs#VjG!J-Xq~~}OtB-e)a1Zhcv#&a5AE2wcH~G7hHPIS^ZdwAKH_aAv zNbzoXCo>;iV&I5v#CVn?(fxOmW8UGd8eN@*P0>67L++%LQF+m7Rdb^KJbE_Q*D<*@ zpp9LGI7PU%P?`iAq4?2c@N-0A%!h`<LiD`X>jVR50SCZ z&_<&G>$7TMe!NGJW!2WK#pM~cV|<3daq7J#lgNQA=i4P-)H=QU`JxQVp}06kuRIY~ z_6a;{Lw(DwK%5Iyz5z7JW+2FNIMlFqwoH;&YkW7ViVfzzd@4*TlL8Q)#4F9G;uW}? z@*G5EA@<7kV%-7z14|OBq$@*3_gToOO#5_j(>b@@*y8pIUayj=u!b}^gILlbb-Edu zS&|FLZQv;ntftfpGJD5$0eC;JU@Z%UWulN9Xjw&If{JWNU(MaPoUi&u^>oBiSWA=a zY;+DTf$5%Hhyyow_yB>*MDTn7$Q(m`;Bqen_E(2CU|UCO*aP;7RXMvqjSVophC>Cu zx*Fol!)sS{`>6|}QnE5T23kXBUo5rnOaBqF#sm@8uh~n>fMclb%~$x~%k75J_cGH$ zN)zuKb5(J|8@nO!AguR^hRaxl5KXB6Hh__7Z1(h}KJNE-kJ%uj#*LL=9@}Qel09~! z*G~{<1hbp=l)HjGcG0lx_Cx314W#B!9QEnV<5(POa1(OgSP`OedMu7vM)Udj%Tv7= z20Q@BBOR*B(lf1#CPL|>`3F90vm>4^-;B!sTLJ3h4dHQI*S%|j*4iC-Korm!xfeJ>b=SS#s%qzWx zwWT|jePuxkp-Di_`e}7A97jt#2;1NaZ#t}~pY&eDG2}j--}%vHzl!$)e*En!&#>kt z_?#+>9=$XQKzfZE^%yQBLzSzTi~YypCxv*dD|#qic1{?Md$5JHBIv%D8)jw38HT`A zb+6#EPZ6wKx0-^**!3C0y^-52IzZJ)IWFz?*fPxdE9Oy@aeUe6)j|giDh($LEK)yb zrn$S@H_0Dpa?k}3Vt4>wG6%wo_dMJ<2yrqfKDO*)@z^T2kiR!;541(g8|E9vXsn z>q_26l^^8ZxthYhd(m+-SNEcD7nF8cjS%uLuecn$c}5Mcr%l=i1B=Nca# zar6h8XQ?i7>O=&6G%#7Rc2J`sc}%CPk7k$~Qt85U=}_w}ZVXzUJ2XV)$s%O8)JKkd z=xL-H$4A~ZVla|st+wMk_~_yF>FM zjWNlgzm!;QH5f$~J`MgTRlA4>PL>#%!}+NqzT1f^6cmuGU$2@jhSHp*L~N=);KU+W z2+4_Vk?g8g3-}7z%+o(9}+UrVjvaww|awazN$cninC6u zJ|6e8JquH+Iqgv`1^BYQ5YI~+OGF^sqwW%$7l~VoJTt- z+)AuzZqF77x(9uF<{z47XvdUxWHeJFpHN_$%Nm)4K-1Ei(%gXTJK}Bq!ftYuD!*o! zdCndhC%V)CLD})SauU6fp@YVoz?zFCy%fSuGUYw&Ue_LrY|rCZND&V>?KpNO(RGsD zu@HmjlnYJZvH_&E{k&F0M+}ld7Vx~SpP|}}OHDs}{C&4)eZ!PWDp1}HbkfHzX*IfL z@zWiyTO_c3{5;sq#3R;G2*?gtxHIwpps=VHvYt7@($_F-P-G3 zGh{l|%mYkhL(F3>5yk9E?g8BQu!gnI*-;@#QPt+2;I^x0wj8tXB*#TyZTm~AnNslm zcMi$^J1coASA=2M{;Xc$-BqNE4id4qCRD3xHuTHoDd z78+~m(w_V$S7eIUP!(g2x|N*HPr6j~4-p?V`KB4%m{x`~%i7Fr$Iq#1guaic^>GJC zCCqHUgO*h1Cf8;GCr-wxPQyBjO&z)CXEoa%2DvyGp`<2!AX|wX2s+vYMCtwDF-vZ{ z%Gc>7(MwT?!3lFt2Dx1&3SX*qpF6U=c6ocQN*2Z!cWhY?U+RdgrH}&Kh>jk92>Y37 zhW)WdOujD~=hR}+x$ZD#-?auF7=EHE-NB1LVzB-B5%vaynPASzuLeuCYSb)czR*3g zKmj|wYgMr-Z}}R53TSeI6ON9QgLG?R>ck&ni zvGDoJO8JGts~{VPaOV3yUhy>b&SFEOk{0Ys9WL-qmbDxfec68;XiIm(5vqk6s}??(*k`(at0n~kO2&AEDW%H~g0 z|NCL5d~%~B-9%}A(t1q~MSk7aIlWiQq;5J_Xk((`4L*Ed@3PfSvIB(Pyji+B805bEQKibwX=*=B?Po=C}|Vpp)YREvT!f@p8sOC z`ETBs(r=>DXw;!eKUlcg;bPG4K@k)~pja6|`s2LWGNd0NBccJ2o1UFVzyhT8hr9F5 z#g>jgC!p0=`@VQU8$0>Bc97#CWqAbR^U~!Z#3tF>G$UrN=KXwfrh=A{C&R6c3-41k znKiJ#OELDMEr0n~sz{gt3|H51;l<15uBz;laYv(tqfJgt$Q2WB!Y_w)4J#{+^cL${ zP-WtPXaH;BkDh$C@>R5t+ z?qLn7NJFe53MyRD;(0ZF4pQeWUWMlZ-;Vq8F$RyLr}*uVHbt+}rD|+tYUV*#l^ahD zV=)@Ao-c~vxa_X+?a+Aq&zg-;0)f)Ch7=Gk;;o1ai{ohDxod95qlFJhmR)DZ8IYVW zQbk?tFQ4rrK{TJFFfn`0noI}vaWTu*H%1KZL>RmUVa2gA8`fd*-CUa%T8r@ zPrdvo0tY8$+=Rl3(dIcnn9aMv8##=LUi7b}-90{MYexCUW`VHweyT}7s4t#Fp6mH6@4I4f0ShcplF2PGGG)!+Xwo{3&){IOUqMY zH2-+E#{fXDdn>e`eduFQqpLzb(9W#ayS6T}3l=CH>_;p-jI@KKXQ?k*K0P&n@bE1SQPN5g8*##0!od zS^2T2`O*fDMX0R#o5xE5Mr)xeni}!x&27J=7pg_tCa>O447ct}!zGZkv2oKLde-0# z%D*VW*DC=q@>d1LzppbX6n~ty_9@D4*%7m>(fjFrV>0yy4+mG5;p90;OsCYd>fjBf zB5X;!`5~ii&+>-~{*D=4t;V(%q+=RsfeU~S@+Vy$^aFn~=1K9#JUf+|wWAucGjq1C zsEStFmLklj&-L?f-G9=%6D2#Ymh&F!6*mkCcQyb!NAr(wU9slLQ8(LOB!sb};Fqb# zhBN$5Cb;3nfdu>Xy|^_C8pPeWm)tsao}j`*s+` zc0a6xvyZL#ZRHDqHC@YR6*@~}E}=RvnDZvT#uCLjiTPeXqF*%{FTBKx&=usl*iSl0v$u{@#kcXKN(( zS1fXb*jX#Mlt^sE$;NgKXVPBMakD|-5=G}kA1n|fTnEZ|-+43S!GmoF^t;Y<4Gdy? z7cv-ngzIUq8P%D_Dss76yb)$R7Pgl2q`geJE*C0V=BPqvho>?Y(=#Sg3^)m}^Zo_$`LF z+GplZIN-E{(BXt6DZnnAoDEE$MRmt+<}R*iQ3li+D{?|bS;?^&-b;T|B?6p3uV}^l z{?|Pt*6W?-8LD0THDzAGW`e(e2p+CtJ3EgFaQK8EPYsx)P5CIj+jb7r?hSq&bfPx) zvt2%P7BfnZiGbgZWpDz8{UbDx>NJi_%(%i;0}}IX5?vcW=2fr+yr*TD2xd4FlrSwp zTg3E29X)z8_!W*ZCsZNXt1I4%T{5!ei`;x@LNY@S7FyQy@`W3eQYr8Nj=Cv<2aBSY zgnWwG0r{_qD24j-b{=NQ-EMSY=*ZB*HM;0u+s*TBc#k9%ZFzy5coVSa?T z;JVr@KemdTTVdwr>TRBLSwVm-IeAO@eBQrwnNmLB(>&dkZ~|4$0`l63jIfGjj&D#2 z?*Q~0qDi8KS&6V4?_@|$>A&*}W7_FR6J9#*ld*QB%f|@Nzl9*mLY;qCoN3pr02rC4oN;I=X@)N2g2qtb? zK;SPBa_M{eXtlOJ+P4YPs?Qjpwo~sI{UU=TV>M2wAqXOD`T)(zGbRd59h>eSUbyja=FJWXa18HR%Zc2R9&| zuDTPpZ4NYfK&N|aS$1>FbT;KrVkhq4+=MI#SC5JbeZiAbr5o$vq5v9#v?VyiY~Luig}R?t=2@ zyU^31Fs>0FW)zRa#Pk7>Ie%Fp329x0g~yWkGVGt~5M|4%v<@z@vU6)Kp`yVqz%vR9 z(%_rG9T&;1@1x+IurRJ?ea~1uU{xZRF0p@f%>$mja3pEEADp_0|J=j_rH=c)vc9$O zl&DMUqeJ+ZFfMf(u?>;yOd`Wx_pT}P+=Kzn(yi9TTcKN6ZRV6eXuu);s+_VaHxs-( zi7TSy_;xPD4A0QCk;CiIE=k4_bT@2Bhz@m^*5L=a zlbHOg3cF0YW>jji8bRWNva& zvt7ADoz%E_O{+-|4x6UM?&Q^s`Bye?!s5(MONVa12-^<;eVizT!?d~+SlsQ#L(oF4 z>$vklghyN`tTFPhU9U5;x3j466rcqMW3zuv(wi|3M>is_2h-utH}%s|jR4gkXeWk~ zRit!^Yt4s+!j_Jp$?R~AqoyQQWo!SO%(b^g6=%!k%-J=wJ+*WAQ|i4UG?Lm+dY_ zL^zlVtmP_{@Q=`m8)7XzgeV@8+$e>^*60R3Wk6^2u=Q86HfY+jGDa!P2HnMa00DAd zd;JW8e7_$@-RPqj4vKMnJLGB1zEdd#5n}Y;NP;shFh;BH9b5Z?N7>4@0X*remkJUx zY`iC82j7fQtaw(sl1@Hxz%FY&9_{#pJZp}DSBc=>AuboHkqPJEOxrYublf^<4QrTO zRif&=W{Kk~1y`2wf zWwkT+bLV_)xKD>YcxBy+F$Shrh#rZ;TV%`JJ^o7kC+QuygCIOFjX)a8fuh3P>el(F z&%TKjwf+mQ3&|c2(ce z(H3C6oEVKZWRIX_@gs=+QzYn_senW=&8drSF?Oj?lB8;H#H3pzdZgKo(t#j^h~>Eo z!GGJ*4H=47b3~YH(#`)LMG0`kWtBEd3ADNj=Z?&Tdh}Nh@*rYNXnCkf#qhz*XF}3r zy=WMsrVk;qyITiW;|rQ*d|ZMbcd_f!c2hx8mmZ1w4dg$K=%81^m@Ik6)+ z2XYQJRXeu0V;DtAzTHN8K)6Cyh>jK*^yKcq#F~=ZuO;Q?bvLdH#7AB=%Y!0clxEEK zxO*_9tH~=$g84(`-M!FZ;V)v$!5darv3urtvSvu_a^9KMvHH1{4cd$2ao!F(2X!7_ z;rFg`2AxRZ*y~ZXuna`FXPzN858m6ERMt?4;JczMXjCORen(E=jXy+k&pLuv1G4CD zuRsYE)@s%=`^9i=V;3Gp-p)AMAuy)qozFF8c?B0w&wOhfF`)x~8UKr!Pn&?=yiE82Qk$|BJ;$OTH4UE8eW_rRXhD3 z$3*?;g_-ir%zLjW1=h+mkUMUu4XXpu8K_2eNH8!DLYC^}i@V2-lp zZ(<~{+jfbEiXObeCI_r~{WlU}Y^l56D3+X%c1Lx(`Kz%5E4oIhYW8WT9(^<199O2P zph(x{;2MfDpH6QW=cEGDUDDLg`K)!yLUk4$cZ0C`S|r7b!7rHsSKaw4CL1;Skr?Mq z%h$SU$sEKR_JG+QZx%H0)PZpH@^aOK3OH2nW-`d&lPH>Ew>H62c3Jq+k(i)T+oqR6 zW#Mf=1$QlzhE<$VLr2_yWGGD_#>_%%XtiNRVpQ7$ZJXX1JKEo9GKuB;lEimB)(U}$ zxaOO-Yd%cFp?qr36oH^e7G_M9~1YatZfWJ4MtKvzEw ze>9V@MZd}cmdc}y^%VA0C}FVk7{}ZE-LGBR*nFHqwe$=JVp!NQ5vI}dO`7VgVPx}` zGE<6RRx(V=a!_X{bw!!~`iQZ!-GUV5iCltG+3#adr1tRb$qw3kH{eabr6;T@2ttdE z2i6SXh)m14uX`jnfKc}bQDmU19!JP3^mYyZQ-_7@MG*TkUqG2_S9w5_Pi#&)`xdrq z#staq{g_3{^r1#qRFUsyVohdeYw%?_n8u;)fw8YX*Q`7PUki5$DuMcg5l&c`oI9#3 zCurj?PI?mOKf@rNZzgc+Z8l1SM2XlN=2kzj()D?*qF$k5{9K{LvFr-&%z zx1kAl2gxLzjBvzhsr2i zikHF#JERgVS8X^C7JnpO-fpyfuew+kge(HrG^8I`q_eTS>_ZSBdDX?{b5nqZ%dwAM zfA~1jmb4qDpI#82;LhP+#v10xg_?F6OI;R}A^I-p&85;ja3lSCm?b&bW1hJhZDAK~ zo!9j%?EN85N3#OK((Fgux+eXP|@eAfzER3qKJqJVtH(bVta>ZWW2l!H%)bRL49u zJ91>;WB+6`aQHWkwW70`?$6yaSe)u`iv#kePA?S0h`0mPkdBmBR9N_%9qX!l2vjpM zuIRYOoWLO2^FRX{9p$()^x8|6z<axDP=KLEgsXkiG8NWL1Co-!3z9wO=Mvy8RiO9R*P zhbAo=69(&v8@F{UeQe+!ZI*b(S^GC%RSRhLHxqYYz^Qd0U@w?0+aiPpmfGy_oy ze{h*D&I(N!d$zWj6vN{Q<9=L53(g`LM1qP=10HK`V9M~Z1cShdCjj&$yk~H#&i-7~ z@&d2gY_n5gVXh&-;r7JMLnmUJL7G}GX&~qkF@rTPp;%a`p)LT5SgwNY32Zq-oGH;* zsfl=86aV576d8;1yn}8YI1{y{pd!b|>KH0QtL!5OPg-bDcwdF(&=ZgrS@gq@r@_DX zLfN5D#jLQrOxKfAQLIKJg1cE6N-zyCA$a#szIXjRopuiTY@s~LhtA4S2fSZ%lcxa3c;$$~ZBi#1LK*{2HZb3v!oi zmPn%tw+6RT0vAfT#|U-*PiT5T#mW?&MDkH|mGK)19%wVUJrdC{q!sr(*oNpEsD{7Bz@5Y?PjK(ZbZR^4{WAkGo$ zL>yrRSzUj^Hnn^0lUS@|6^UNx8X zM^2>Kto@P;d)3kXMk7ES4dm)dgI%~Nq7&1oK?eW!Ysmt49L$v|v0G}8kW6^ZIf`3y z!IKYliNOnqG&|~uiBi{AVX?zu7Cp7JAKl504Nvjx8P3j$&fNgfD=OQy+mZ|F4DN8` zs)xc#2L{tIv321Lm?f}+$-fZiAJQqRyA*$eFLatKJHqo!knk;hyX?M1H^7gi|FPQ* z6z9jmHo$RV4*d-@nL*(pKY+ow&%smL0|YE0!VnYho-aLnIAcbu-ICn)nSrabgNNUW z>vn1zR8mi|va?0T@oMnLQ6?@pP&dr@=STF2+rdK+`qBTFAW-N+Xs>qsj~1%pcQW0n zQb?F+$fjZ|guvB*4a01JA0u+703B~7WO+H8OrKbU%Ef1Pd#7+M;OgAEIw&MU?vQk| z5i@z_*(c3X>}el$JZ201^E;TY$jZwDlY-}iYGM6&DJQ`sr)jriN*t4t@w8BE+!+<; zUDMNf)rO}Ju|N!X@!2&Xc}j?^1yZFl#9IdDaAI-|qJxKN@+>DuvU^dsJbi&Q*WD@j zq=*D@jl@a77xYBq$Qx*xz~!FosPcmN*<5v)HihyChRSWsoNuXu%d(HWaukBmwFp2pW&a)xFFksy-~S)GgEX!btfq)SdMz24 z-Lp+&W;qbA0fz=Zxsk%<)iWg^6TyQXh5*Y$W&dFm!)prSYl4hdkaD^8U%b&CF^C|I z*BB$t0VdewPFqD%x<>{v5)wOi!k~zB>wM;t zpq}%K8{q*+i!$!D0b$@yuG8uU$eP1`N-+rT`g#>lLrgD-w3g!Xd*3S*V4y?*;c?Cu zh8su6eoB@PR6uU4=&D@KOCdwap7v+dU{X#{gE&XJ)(R6$Z-P5AOO_?vsOb$?m_u20 zkTCJG(~fOu+#@CFISzx8zIMnV!Dr^Rd8rSUqfnaiHw4~NxtQeVa*TydW>hHJ zm-D)xa23meTt`%TgrCd(I@szN3JZ22crsKp8LvNSY!C)PiTo;6sJ6$ zL51VeWV^W&Bk-{ip?|?HK$u%pC#+eRd3f6t6HppL<%=(m0`j|93-XR7nMLdxVZ(FO zTbUqMPF7Nf%g)oq)M^AaKI>)eVqFwGX|U-qKNja}ohI{z**b6}r=lH%G(9Z9pHFfV8q4EhbJx5ZM=ZCSJly??CZ8I~M_!-!8>WvnS)u20h{x#jc{Ca`` z9$A5(enM<(Y-)u30{ESrE=-In1dQwKRV7l=C!+A!&gd{gQ#A>g`6 z(6E1#3`d8dwm>tfM@G>0k(BlkZ+98$hDze?trL|VXcnymz+(%s$>lnMpdz)AJLjIF zQvyIp;cznHxV(0?4!-85feEa~(`OOTB;N0NtRtrEwTEw;YlY^r)wJmsNEkqX5TgAjAPLPH&cNtvt*8Yr9udv zKa5hRgobj{5h4j>hkb~&zo2(dVxpYZUG7=arpsND`f??U`6?SJD&{pHY?ipE6rm+FjpG5px&BzLlprd^cmzrnqt z`jjOZzqBk0u>=*FuIv}EEn~H|eugv=aUwDuwe!SC=7OvrG> zx^*Cl`d#Um`iuZuFe7UaXw7hAMebm&9b{8%Qa4N*B!K$-Gz~92nMSHz7taHPkA~+i zjAsr%5lQ@dW$T1hPetK)3e@Nm8$5H9*EJLK%m?+QB@2nr?2 z#&RXI5p_`um%d;BT8zCbg=ukHHvm#Bi!LH+aQMl4cEEr`a{Do5d?~5Go%8h3C2|;zv_3A*nhm{5|5b-ane}!J|WILk3L3 zs-OH8iC+9cpz=)m{3Lk}CYvT8NB(I46r!}kF3}v^@MdYTT&tkeLI4DCD2|=o&Ggwy zMM;3vm0#+=^E@Cr;JDH z|H5q=sp)T&5Vsw5QP9`&n*!EjiDEy;RfZx)h0rYy~~g(7&;tx1{U(NtfS zJeud*|GOT7m>O;+yS|x+U7s@<&&ZSgllbP5f_3`LXhlh98qA=Z_Pwg-zGQQ$Q?E|i zSkr**dyk<-<}n+Y`930Qp~wz?t3;_P1fEhz*K~EM{Q!yLLzH%K0?3rcjRYCdae zGd-m8C>?5;(Tt;7Avm~d5ficCyh>Xm$St!S-09dZU-gHSXA-1&-gSPY_c6xax*Kx7 zm!8MUsUmowfIA5^lMd+LlF$JGl!4fTdaE_*D$GwZcQ^XT(x1hFVzi z;vTsTNoyGmEq{>LghPR-N{C&KFh{Mru-|kr=57Lg_M^rA{+3j8loMa_72==maO{Ak z6+QG?h?AT`_ACf$?fy8*OHR%u^;WQ0lc&?LVzH)v)S;l1D_{ zpI3Rt03Ya#+A6JscRO*= z4bQ2-L%9=0b692z{@CHLpKCmc{N9DoN$E;&!R$fnpja0$GObk)Op)D_m?M?~mYPoP z{YPvM@9-9rjTey#-OA?6p%HHd{i+`Xo#rq@-Kl)doh^rgLIh{rE8>e4uNtKA1#hd= zm_xmnG9N65w*0|ClP@nc+v418qN1nxt@YoI7i-m70+LOa3cdq&i4NQvH=B?SWp7tZ zF%cNUNBl|=5hp1kc(3KS*MP_{-^MHjb=<3-p}_^^UyOp?Be2fNBDQ-PI`hU<*L11s zXjCs{&^qynOPmI_C`%26U(c^}o`~627_gJ@$@vIAzz!WF6@fzxUF9pIl2;113=T9s6lFrC% zT_C!!SMEO-I!se!8Fp4XJ#Ic6zn*tI+MlNrx-5v(DPlAKOoX(SjxuYUh3mTmx05M6fxBn3xi2fqcmVZ)8hro2Q!^)7iJ>bb z@>;B=%nwi2Bxc$*5NNJz0Sz5@1GG>qeK2$x=BMN+Wpgc0+LULarbZs4Nk=!N=>9s! z<^8D>YsfQNGOZH;SoxQ|w!~)>WBS)jrg42r!(l%7h-RY3TSEcnqqeKQ7#F3jc=!4O zWKx$=eFn7Wr7CQ^-KXk=KK&?ekaI1Bfax*gj7ApQ6Tn?lD2%`6-1%(b{tlohjVS0L z>S-%TGQ)fgdFX7^UFHb^tL|zq-KARJ8V@jdlU%X3H>kzw)~Hms}#{P-wyZ>(@jR}{$6G@tl2sn2r)J}Gin zCOmBpxiJu%oK|Kr4a55{#9hAvv#v#2Wb)Qa4#MSL+cUiwb=KU4a+{HaPefVfbd&o( zcc_G#_n?^Hpdy&&^5FPP4Utptshe-k6iAqT9wJ`8X~zbj-c1fFm6RAs&~ypQ)my>!6YQl~AzuAcB;s!3iCVAEViJZl&xqA!o4( zblf6!d)1qpKo9W#@yZ)g&RP6m+UZD4N0oX~6u=hnw`Z>Q{{{&*rZCIZ9MXQH_vz>n zt3v4(9me)!1Ma6MIVc}5Ml6Cr|MXXY2(#2S*kwzpPbu&Caf2&J+u3a1>s5Zk9fPcS z-IqSO@I@6@H0RO$#HflLp2Um!M3N8ZnB;r>ybch?T`MwgLao=hvF1B|VS56y5rhJf z2%0DXv5-P@pik!#t{*??ux#m*&~$~*{x5num2Ax_I*jwZdMsEk!{a@VcGO?Shs#ru zqu0j%q`7`f3I@LBthAr{P3>Jcge4++i;*0lD!(j;>pkpsF;{rqvN4_)U z7E=2(BxwaEx-zcdA`=wi;)Zf%oMBvsm1@LG2JIp$9)SJ@IxdHl{? zY~Y2M5{l*FM!TswS?Bbi_`f}i4#mT|crb6{HN2R|djl?~~Jw)6#J# z=+@iZ3~_G!JI-ViFJPpN3*MauRA5<3&FtY>nrXGe#8oM}?(~!9Z52vkbPg z@b}t~yKq`%!Qr?y^k9B*Vw9CU{*$e3I78ah_R&qVD{%uR=zLD0sDRlGD-ocRt(Z-! z!t?n{0_46~rtOkETpR0S-;k-~F=R%gu2Co@@F!ll&8cWWscc&@pv%t`f=~463XB<4 zrZ-_*y^-c*Eu59Xri^Cb%%zyWmPA~A5*IQ=s|lIW$JGorXrb;q0?-I%q9UF#6nAL7 zoL*`Swr%MGynGP70q^!UuH6t7@IEK?`|2Kxrrx&4XYc!ZT``OW2E-ll^ruT}m(zT( zg1C~0ipG;DsSl)^oynU`2Qd1Dh98pVuOL_4K?g}g6SfT(Am zeJZv;dz9PSq#|c_tx!fVn?1(_JvjF#xn4lG2CJ$)vNfa0_{jK&g#q*VpOQOb`zAPx ze<4j0;8OBX3#{?Xa(ND=vLJ z%FWE1c8)y=Cq6Waij3;9K$h#*nNHFk7jayVZKBVWIR{Jsi-uN_O>9n0ujKX6;$d$0 zTusa@1dTIVUCm{9hdqK*9z%k#bwc*7P;lmvK0n{Wkp;X z-g95O_BIf;Z2(T4nqKKjLmv5DN2y?Zfd6=?Zdi7yz3H_c@Z;E7`kh|;@7nNUd{M2$ zE8z`2YE@a|n6|NmDHH_ObP5foEH*p2YjdS~v(xm&%i#(M@bF9>3(4#4!uA5CT>Dw} z!m$l$l=B|0qGCgyO{s*kq}xbjcwAQS^4d&DL;4gQFCkX5`FL$PIydYajVG1*GV4?zIG&zvTPR{A@8|j}X9iwyg65(F&9s!J zB_`Eqj5|3r@1njr^lsFe#%zv&pJM+|=5saAT6mNaq>VyK`Pv%mPN+ia(%(|R$1Z+0 zmt&qK6J2zzUj{+9j4|S7n;@GY+lzA;fcGp%J; zz;wvL+6*YTDz=Dj3Snh}lsl!SF^*sVNhE@C(@?y+TgQEy1Q83J{|^7$+pc1>GhAP9{#rs~t+S{X8G z)^s17)-dT0Uxotv!%I{6e6|Hl>n5a`2ztWg4|E6PE>0jDEFCf>(Mqe;QvtiRcHcaT zW+c(b{sI54+i&aZY{X*SSWFF`7nb{5Yff5Fd-A0tJu{*AQV|n5xrO5v(pbNeBy44Q zoCyIvCP_1Jdz6*qeUT6B1Vh8p572EJ%t+e_m`Y*CpAcjCw}V_9V8NP~l_-lUNuSf_`vjyV z_4#%_r z-sB@q8;xK@ka%xsmd@uvWkz1uEwpzLMiqS>{9EfHPLlOBSWVbR+o}40NCwcDwo|Xx zvf9kkR!PH_`0X$(^g{dH;=es{5m!Rkv?YGIv}vspdQu>4R$5{MlS|jL*SH7dJy6#)q#vDWvlbrkj;%8K@oTT_qve+~V1R*aLT&;kw zzKW60o%1j=q!(Rxp7WP5GjnMGg~qkg#Pe+aVPzFdN1x zBoRWu039ZoicX(NF2*5)YQHW@{t$!FqlVA)l`T*8zOdiwiDKtH2J5Fr^pRHq`2%U= zaX05CP=jmhrSbnRVSZv*=L4ri95&8CpCT{zxtGg$*U6*r_n;iQi}#XQr<@ld7OTd# z@qgH6&nz0DqR5+hK(I*f6;HJ5dQ&4^YJAV#xI%^}LZ7>~s{yyTaLFfQKm^izJhO(BbFwP#50UHA#clZ>}7R1GeI7A`n zMctU>w@!PukVzUwdfgK&<~T1B+tp;qwW(Va%q$`dV50ng{xV-i8JBzppx@C)7L=P> zN09GGzJ=N)y3Sqkz4l}>yCAFih%D$%0a~uS48zuI7kJYOAhV`0&GN`p(?gp@^wFL# zCG3*3nINI5V``-QSQ<+B^u~DCO^)W8#u{96P$N*4cm12`UWKO~!&PtGNPZM^!#NMd zD~+U-Shpe=9o{7W<_6=APt|MWdgj0_sWn1Jkk7)mhZSzOx{7gLh~XUNb$=p zcc~thYK#|;L%lNsUrkZl3@)bdFAJ`71&L}!)*1p)4V1ZzWMIx zBq=u&8?*75COss(-C~KD9w!Oe4=GbGi;=)LIj(VH`^R8o;?o9{I+PHbIh4Wu)i~sL z)-ttYCn;)fmAFD)e@c+VpP~Ne{k;rgw2ExyXLfqHDa-s-|0iNBZuC7Fdqkyv!(E;l6eCghA;AZN} zqaVOO#_VwF^U~LI*F(CeJR$DJnu05Er~B3iKOos<54hRC;1!^j$VO}IY$1$5t(s-( z#YaA@tiV6~XXe22u~}lpqs@UC0vos!L2BmcG#E`i2yv={ZAfy zav2>ZAkA$Lx&B72_-CfKzN4`;Rn~rNoIywngQOMo&0bhQcHi-ga2|SV{ZdSj{aluj z{6(-LmG{3{ieFbE&|fB3 z_%2tu^vuE(A#7#zwh)11TxYyjQ!#WIEb!^QPQ0AGl&?dJFCyuhn1#G-|J*nwY+nUQ zTcIU?i~JDxOg4S0PICO|Yba^1a8FR_D$Kegbv|p-BCNt0F66x!4^wFgTCzxsOMep^ z15X+6kuYBEh(WfJidS$6P$Ta5CBn0q?|)qqY)z4z8pR zlo*CyMkQPMHYi(0FhZ^Ykgg17hIAG@g+`Y*K?D^k796A9y0~I}*0?AMsg17j_Y+by zxZ91v7Ex~I%2M;KN51V@8XdhgR zj#2aU`pte3^z?jaw!r;F_KlWBM zjS+}gQ>=Xaj&tpug%uiJ3v7oUu{OiOBXDQ<8uvK06^$GpsFijn#xta}NDZ?R*{r$% zk*$}FxX{Q^yXUR-OH8p33Ho7;sNWs-;n^(*N>NL*Q>t>RZ8}Cb!V_Zo*jMhcNn6pJ z1Fq9giU*!mB7=5$1C`K=45mS)HpV_#ymsJ6fktkv)(}0=2MPmgW=qh$0kPsU+bepx z>8{lHb2JqRcO~?zgN>Rs{Fdu;COF-O?2mNEkXMfAtLZxX%6V`cVdzWJ*O|uf@$G=z zf2s6u_;*X=*T2b`bzKYJCke1c4 zdfQ_)>EMsJ`XFQEN|;5W6bZ)p0APuSI^7g;`BD{7FH3zr1Q#Q>CaHI;{>sc&Br}5L z$y`Se(kh1%8rb8Dj%2scDvuo4yq|mggSYYhaX~rGf$Lib_(C-VD}TmC(nT#UHW)jv z${FT=;gl8yu;CsUIe9kAsng4sTg@fq{G5`%M;?ZI^Y#j4i{$Vr8Kurq zOJ;Bd{$a%<>w=4jubut2@J30)C&1Pj?eKndo-zaLElX+Wc{w=l^RUXlWIW{LCCcES42&E1bYKp8vB#yNeIdD!FFqB;#93qgh!(xMOI`a& zdJ5EiE7YV!^yPbMw=OS(rP{&~ish{YbtPc&j{0SL#t3Z!&{F`*$pcse`J9az(qqS& zc_>ELW50T{iXuPoy;{dg7^%CK2xFfN&pc<%rc&*zvUIRE18S-3PVhF?E?G=(7-Y27 z(HV%&CjKmsOUiP-23W0g7e;%6Ogtn_s5l*4-ik7d)GmQQ!?9y%J0(zYHwnE$Z-L#c zGz%Lw5YC`GlK6^1Kff@x4I05K@B(V5<{Q4sTA0z1mLTmf%$gGlLatO*epu(@ps6d$ zOYC06w!Y*aI*M)WlkFHE+BfY$mUqoUatkO&dm_xz0gB?2Nyf;+x}pXMo^4hh3SL0oWc*qFKtumr&oT)u zU23I_RYf8(n*ye1$~J|tvhOZE5)WwEdOUy{I|i^B6oBmnYTUV<2z-+NLk}OzbR?d9 zZ5@=+1boxLmwYYD^fDIgXnvTxgWGn}01V#m$Ls$BOUrz|pbLPef=O|6_%i}R+*_m} zq#J8Y5DFK0i*LcfyuoA>awGbf{w?+&W?};~xW?nxDM4Rr!7oU|b`i_PN)7$YXe0Gy za#9>n+VG;Na3y&pOLEy0G>TcJiOgk+gwmN-MwK7A=1$R+{S5>NTJ^2d_QMn*SdNQh z(>(B7xgUiB{IQnEgDGJUTgzULDDRVvDGz!M|4zusx1f zO0?DK(9$SddBYfk1Vx%2tsl#HYq3{C+;qtY)YFifaEly_&&wobY>e;3O zIzWZ!hsbff{$=A0z~H+P0|6m<908F04;Zeka!9s0{NaM#K-|`kQ+?pd(cl5j5l>6t zo;X+VUSOGig~0!Ix+>8jAq5XB;jd%3oQx{{a`txGFV?~G{nB{lF{fCy9ci8;(p*@v z*ysI7ZMweuyD${CkL*)Yqv1uddU~p{0H>zjc!s0y%|KFgmH3TEp!ZH*c}~N4R+m{Zts|a{u^s?5Y5U8I#B`9()0j zKgJ3%GHd?}9CVF%I_dpsEx_doO z|Cn#IwZFkfEe+pISp)DSw6e%d$@bYJ*pKp`184cuhzI5N{vu5X)|Y-;=Rv0ex3`X* zf+X0bhp+s9vbu3NZ=kbcfxl@ZCdQmE5LnCXh7mb!`@sZc-yKWX#B?D$1i@Y2?GN%G zX{=+cMP+gt7Gy{-^Cv*%tRq4lzf&O*pR1sp`04!;lw78+Z+*%u^`8erFYCk6ex<&na|$QGn&2i+;6?nJ`gc`r)E}1xTal- zkn&b7d${8N13^wnPmF{tC*QVL*T2#!om6C;*J8gu7;rW@Zo%{*RGt5Bb4q5Fny;r% zr87$&`0nq<$=Oi8PCnL_%Db>PI)?+cMHNJ3z3D~n#FZ3|+$KH2*4{OLbE<#GlFrj1 zVEF@&e{?U_8*m&1fM<+=e;I(5Cnrow6Sc5t{XC&3%{F6}%pnerrY3G$nMNMfEq>$! zmy%0LT$i8&-+&U>%R5EK(&mw_C-K4GqrV8Ew)v>;9wJ?bPBh+*EN|f{z6g3|XQOG&#tz&_>IXxkzvVr}Q9069j zlfPYGE1!BzrqJnrknNe>TC6rh63(?uql_Vve+W9}a5GBxM7pnWX8Z6hc+2Y!#covD zSx~8lL#ovHf4JZoA%LEl^`XKL)*xc*Q%)$*4iZ6>IbXo~(Wes8m^==~)iTbjkwPR@ z2`FdVR-OQ$afY@>Qki%18V3XEOmD!vo9C}TRO5_&A{ohxW^v3Py3^2hXzb@NC0^fU zUUoTr9USb>8m{`SJt%w75f?IwvE3H!TI8PufYTFc7dhFQ?#6liHaD{k>(+ zT>W-b{4v~7cUiP~xYIpUFP8w9W8|$P;uew7m z@iLmrhc|KJ1ZV$2M<&&ySg%6QUD7or1CBiy0LFoxKdSna8b{0`wQlX1SaL}Yem44< z0s%*)h|u&UX9$Z>1%&&k-yVnq{R7tcPK_{)4a}~BVXY?#nF9#D75luT_!lH(hSOET zkL{Sk=8~s`jI;A>5#(;vNV4Iq#lT!*;o-yFGHU`f-e3zZs@%&gw`sBu0`U|Er_nt zN(y#2f=jV5)2T5U3bN&0XlevdbE!QUT9=`q)MU!y_wWg$o z@4nLs1qaAB+ExbQFbF|v&%1|#cgG&MiN#lzt)pGUPa1 zj%{;T?Avc)H(_&Kz@&qR?uyIY+BVXrQU{qkt!+ zY;4A8gU1lNPElbsHiqsrqKjIiA0O7gJ+eE^8c@^F<3ZQPd~4t~D<@(x=X)w@S3R>k zG0+Ly`G$nx2>3S*R0$HPnHlHVn_{SM~e4`H= z9ozEo@Kvf;XG{G(X)$+W?)0m2w9PgwB;{*g2X4Opr=FH=n2kmP5z;5jU+0E7u_ECY z1xn+qWpCoHa=$j_l73hOJ2m^aWGF7J0@cECeMX3do@_$*3f#jF;u=$Yv=!tq6` zXy#XP08e`5f-)kM7e|eTF`Z!U^*?aS$D~AhXitky zCGme^GYEICf;^S^8SZn!veR8FhWw{;80pdI|RKWqR3#fnGM5TiJe}gVM2nu=%P5A?_A>K6I zUV_Efg^Hz+;u}A7wdqBYO#S07YRIesH4Z|H?*oFsp6P6$+;a$U-m$ergp%7NV7);B z;mGAQ%5v4&rf6qKywKqn$*hzF!t2g&;pT`=4ls-~c{EM=ThMqW@vfB)s=cxbiXW_v zy|p*Z2>@78=UFktDq>TYrDIIF^2SeQLzZY*soO~vj`biLy%{E1w=Tj_rG~S*Ymb5a z&GL$}kK{!vy_~}9;qor&1!xq2YsZ+RxmwN5b>sr@><5VY$*~t13o7uTkMEj&ibemIijDCZ zoF(_&Va)fV`_lT35_(X*|4@dWZV)_7Bg3`qiNI9d&xTFsmzE4wWLrtMFDqY0b{rc} zOTv;C97c`HFwfCe-GK(84c!6=N5KzqupOud(aTKb-(|?TI6Zz7@(z@ZGvJ%0EM(t` zXflL3YJyC@vLy0MesVXIG3)+zTvk_dHB88`=6*$UL%2KB#vz3vXGUt z2>Ns`)MW{ocqaJh^T0p1IyN`Z^CFLGnbqAnGxbB@8%;G^gQl6e1+?WZpkmau3lc4; z3{IniYoN6Gz>LQy%z|lWAD+)bMky{s2(Yfjme4Wm-x5Rq-|V35fIS6{$~laeu9+u9 zp7=!=hJfz&3?WpC5jzLA9MNTUVK%AS{ZJG-?MhR~nfApV8OkIBLqS9O^4OxUPYqi+ zNm`G^lPQuTjF-gl6-3&M6hz1V(8HsLX5bDE_m2&!0<~9;1W}!*XYWB4IKV8I*O+8m zKD)vfoelAIjn{}z%GZ+w+hlmZ5>-%b0S7zd@MSFr!Dz;uc}723{epiCqDMpwE0cSn$&ERgU4SXZ|S(fm{O<5BBkGB9+pGKLwu}GByal0KV;&BWkiro^j}=2 zIQ-zw0-Rf?Vfh95gXuE;Cl|rN02064+(sN4VKM0Vah;aZx#Rf z?oq=O{Sii7Rn`03`Q4N1z?OBox%Ve2c&_T>1rXo||5=;2inGY-1hs_wg9TRrW01Wa zlygDspVlFim@>Om^qF4hN;Am{C+rq8Ou?P7nu_S1V@#U?^Z@)a6VxAnDa+xAPXFlK zB`-aKvv7S;_*6Og+hyBC0j;Ff@+6^vI40@-!}7)5in81-_~Op&RUm!>hQw6E11C%xBy!tL8%=g`zK1~XKT`)3-EvvuK`H#ekmat9yvEhSY z%&-f6tgma0p^JTR+1)-Bx{rjm1KQjUN1am$IUkH>is~l#Bc7sObJwerj{>v_IU%v} zdZ-LYF5DZA)WMx4$n;%~>@w>{Do?3)k}Y6;oMdqPZki}`C}gMHsn`N3+c>KybxeKt z;KJ$XsI6W``iF||m4?+A?O&TD{=3z8+(0W2#Os{-RsH9<_74RA>E~cpMaqo>R(K?w zQ5W10uCNqj2qY&`T1V;<%Q@2f63{`A)WU%AjmqOLJIV-3E<#VpEQ$!M*zo-aCiYY!+)&GXAQK}VFoe}MkMjg~nv$`G z3=(4fTm>V1_<{$>sQX_W<8hAMUr)>rsHK;tg3*XQQtVS@$w0&uHaqgc23~k><#4)3 z108l}{I>Q^46kGiVH7Y1FYb4y`O&uIib!)M+yr{|O^8AKVF8K`LQN65Lcv-f;Yh1) zjOYE#nl)Y{jG8?dLw8Im`f5yktVgL*v`mK*iR1wPKLEhnQy5PI+1C|EWUT&MGo{h< zYu{72Hx8GA%hWP!MPQBc=r`mnA*=7`+r^vPz!W(rb;h`!m!SUeStUgn)Y74H& zKfFUbs{7xcqXq7mr5Iie7iCt>yEX`(e@Sj~DAEp}x1!lGOi07r_xzt00k7$ZQ63 z$+mwM&l;zU5#b)0hM>R#f8UI8{8)Dg-t31asklH^6aDPU_+`&nsM^(*E_)=`W!)b2 ztCpAwQYQ)HgmF5^-n9T1!P!mD{C)d@v9fV8pGb0O|p%N&zT;Kh%Gjj zhmV$CVj}m~R&X87COC~KuYwz*Gw8sF zaWQjk`{XL3Th1R~DnhPlQcxXbbm7V)YA_v1etbReJ5e~mr&%6FK{Ug}H5Gzd>_f>Y zC2oWb=%cw`_shWBCj+|*nnsjfH4JVaH7l;7V3FV<)tTVn0vDKSS!(c(9IAAG<_u$+ z;KOnV{pU|j7UY!O3-GC9t}d7g_vM%TjQ#lxH2%eFv2E=Am*koMy?`cdK`-dt3G3Cq7g&$-V^I(C@fEvIKVLWb6bIJ=+@Tb zMBWQ1T6d@g0s%+LoqGOsQ_Pe_{IsOC2XYYINe7y=rCc;s%S^Si+oa6|^#I_AYXaWC z=X435Z+d7i;lgNXfRU$L7`Ia5cnN1)Rz^^a){?1 z{xxdA+`J^ctFyi@hIQAhm)_H$etE}ed*kMi=Rfqr@;CmRO1fQP(i{cw#;mA;M_uCu=NpErwcKqJuFuzNFr|_^qCLSJyc8U`y)h-0DK~( z0}F|~`K1>$Dhk#WjdD>*8Q3+H&`4`iWjle!Lo=K>Xm5e_Nu`o7JsJgaXDl4|d9KO$ z4OUtC`~~PMQJ3*7qP73P{t{72Z&bSAJan;xex(F(@LTz8ge1Tc&sw=uw&oVJY(ReU z{uJ@51YIuD%osWKG_|?s38hejf)F-F z$zDNmoYU|&`N>M-SL$kv$$xw@a-h9#54+MEJy>5>cilizn>HgC!gHvIaebG&<#a^L z2u)@d-=if?hwHz1CgruTUP>QFiJ#?goSIU{$1e;}TpOKA$Mm!^xxfcMWO1>Fy)_09 zl)>Q^nj8%=+GHagy&RoI+WBpm5^_dh9roSo$QaX0&ymbU2Gpj<7(c?ubkv< ziszH|$lb21eew||a#GQpWD>l>pzt9TDw#?^4vZBVdjf@Z_ekUS&ob;)*-r^U?Mu4} zxsF39?_(ci{82SO+#?pxzm^;IVS&_J1q2&9TAdG}dLjL@YE^r*!Y>c+u}1>a0(Rb^ zQLy?^A$2vXNXFt3JG4gE1N64`tns?ZwPnW@z#>Ax>^}WEg_hw zkW+bEtkM4f4ezK1Vbe@M2W=v?(E!h@A!9{og2cL6CirkDxQ%#U<20N((CJ0n?ZdxW zhO9tCYC18GrcKE@x~YMip#1q67(A8w;4A#=)@kSXk((UMfE3PYw@%-!8uOoIYN;at zI7XVb6t#ng8_A({xVio4`2F@8P;m;=#cXazmgvz_2g?Y3peos~qx&wMzS)E6P20t@ zQy)1Y-!ZybbKXqAey<{1%+13*>Db_jH4tDe(7m}dfisevkxJ%z7usQd*sHf0J3IVI zij;95Lg=A*Y^OhsmrnD$VMmBDMe<>Q^xLbr*jY`857iCcZiB=8TBi723Ix8z2rPyW z5sP&q7IiJhSzJ7>QAo)e=pgqga|sx)w1tn)zKw$-Yc5Shvu`d72&s`paeuR_M--o^ z@?F%^a}Olq&mLs`(15on=oXo4bE2v$lJA-?_)cVCYLI^C7!&`|2E1Ps@PjZLmGBs= zN!_^dWsNXXAlQJ#Si(XqHa4)jewmT4@)XAO+%oolYF>GPc0}{r<2|=v3qlnfrSK!9s*7o~#1&Ghu@tWBDQ+b^(@w`$pY+SEI2iBfI}_C|1LJGqd} zn}KCAQ9h%4esDyd-{I+?Z(%4dy%}02je`+g>#duI^SaY|TwuSEB?QHvKQAwwRoaLq zW(~nhDuVhU<92Gsfu^Km{fF@*j-b+-Fb){$CV*4@J%>PC>c{V(ivJ1jel*|}-dcm2 zU%F0Jlp2Tg4c8%EgG5sFyzo};X%Dd)=e_=oDjwzNHJBqJ3%>-vJH;mTkc%l;-Sp7l z>^tz{)rhNfJ)g_Hs?n%cJ4xEXkoQ^w+ENBcU&;$#kSTedjh}6Og7l?2-I=q5m?C2d z3P^@3Bp=Ov0k8luXKmC37{Vz5=_K&Bhl0{PJx+2{dBKEM)02cMr}R>u)R%xq_IKq;feC+h<0hzgX}tUlDRQb@nd zN-k4bVO|-x)8FHwqtb#DhS*bCKFqgLnU*>QF{rG3Xg}NL!MB7+F}&`IH37)4Xz3A9 z5=HuR2sW$u-jW_Z4q7Bn+C^}^pwt+DhZSFQNkX1Sy--|zzKkQ4B%(`{0rw0sTt{b+ zQcb94(fo16+MA47dksMwW+g!UUjeUCGXT-%m%Glxz!SvPk6!$Mc@31mt!`frR1)e6~ z!<-^n;Kb!8>Y}1NH@7`ENid=9JnS1eoG<4z;W?oZX*BSd|71ui=&$r%lM_ZncADOO)=wU`?X$>*87D4#a&LUbRSkwP6Vct!L*-45?U6!cir zAkDyK4hk{N*;=Ob7dhx(fNc1Lrb~V^uWTS>KUUMI0)ld0x*DPar6$z)q5T372U>Wq z9H|Q?5amu@PqWU9%#2`QN|#~Xd@g)cYd5cy;_h5Q5VR>$Cnyc1bTX01t2B6oyPg9V z1JX;1TEM#^-9Gj`)>s2jYF*{^cKy8{hUkGDe(~G#cYlHwXV8{YB5owg?0WSHJMtYk zT%Ba!a`M2%a|NJQx>G$3iPV@Lq=-gqIU_k8<4o}ojCYlP+L?Q;jotIFqV$5x65GY6$wi@ z2>DLO%5@|TctL-|CT;Zl1c)ptR2hx+voTi$yIiKu;DpiLk^Y!E3N45u)z*Am_rsdz zUVphgiB)0{vCh42Mx7M|a#bXXVD?w;=!F0uDGTdH9HMV*9=*IC%tL^+JjDcRE0lyy z%BGHnNKlbJ6 z^^kiqJY|o@A3{S|u5q5(%Olt~ml8UJ<8*?v5RHr^$h-Kk_t8O7{fO%GJ%9OOx3}gw z5}r}UGeq5^8OrVHAL_i2yCqh!`fDNo$9%&+x2d8?9100Y|E~gOh|gy*=VY@MbY%s- zKG38j)yIrUD2Ns*kMLE+zc7gDw7F|}o3E6nmd(hFifp*l&c(Wa^P=cztI20|Eo4Gf zLZtrU;jU38J@tYaXr+WJFm#>Rsvg#GsF66CcF}+GChSN*WJO3u7DivUo0-?9cq&Kp&u&LP$eS}ETNmMS2=bHm6d0$Pp!obr(_GiXC*T6 zsRR}oSJh!PG$VdNM)!UqH~NRLLz$eB?|N>JEjCaqhc56h-$L_9D|bw|dg!q8U0}3j z=QJ+bqtW2}>lbl&kRUX@%E5rHhy5Oirp7P*AgN4lyI7;J;_^&bS4lV!q`nmv0l(`E z7$;=jK?AWD^VPfE87cW9psZ2_7{)hkWa?$t9R;=l3K&6@lPIib6;?lV$}Op=qs89! zLAC?vssOfb6${-x4ZqP0am&2w#b#h^ zrCDPC98NYqhT#3fZv>f7QM=O)GNn*49wFOV!reY!zr0V>pAIZ(&_>Eqwmw62z$E0s z_|3fm+115S2OSF-gvhy-LB+zSfKMzYgxi##?oKzt(h+9N_tCctJL^Jih!hG{1$MV? zze(Qkd@1>}-S>X1AlH2`s0Xy)W0;N#z_L(`{gqN|8l>Me+5Sz4Y(t+?JNJqlLF`g< z_7xns^q0TEw&X( zW?t@OPd;cw9~c15EEqID^Ri^Y_-|6C2B)WLh5kMivq#kCkV?j_7!ItQdmvXgKMOYw z&9)5&J5@5u$zavEt0ueIgVnM;TTRAKsuaQjs~u-`@{=J5F`raQVM(~gp_|TI(_=0# z$M%k_C0p<9yVXt=Q#9o~t`vlI2i6z!mVLx~^(;)w(zT1$6kwl4j;I5&iK3YDsuI#j z`}^u*G!*Fc3+dH1Oj5&pq+)n%PK2xo*ty$2sby$j1^#J>OC4z8Y#Ms)*X?f45%-xF z-g6zCANgsjAIN`Z;K~b|n|g|%E29-F}uJ2@o>^227T!O9xx zL>r@UVSK5_Utp)0m)4Yy9ydF)!=7^8Y6(db(!9-?Gf4Gj3S&R-hh9lr`8v1)BuK!) zatQuJ)Lq|+&GodSs9YNX8^=?1hwY-`uQ-y`7R5Ad3cjHzz_0I46n+qPI9(0kA0!|^ zGk)T0R`VqZIyHd-yMny=SC*js&>%$-$uB+&f8~|0#Z0&V7y1PiQmvyI{3RSO2Y$sTNWRJL`8GrR|oNnu zn|j_gyY-&meHetyX!*yO9ygXM?+r-*ao*C zTh-rQ8S*bOHGur|cZ&gA@RLD13eLVPdD&}VX2U0>uMvBOoaD;K@2i70d`eWshp(af zFh_p-6tQWM2{e08HJAo=Yr2{mDRmyY$;ymdHuR~UFGwPdFvlX=)lAcR)d%V)wMUarK`F{T@H_$FI#eNl8Jh+rJfPd57%0gQ%gj3X91N`S7b{6?~=|9TZJI`mSesYf(!N{AOSY% z@LvATjg*CSDZF`jxrLhx!q-jFTq`%%6$Q)t3|C`<*Dn==Fqb@tlzKGwI>tr|UR-0w zK9M=I%6Qx+yeaTHTMSUEmJnr<0AthdxWIj@WmEvtI~x_n2XxSLN<6T;Uhlo%FnP^SQ`CtmQELCX>&`z4OAS0az;`)X-0^Ok7i zrD9l(<4PiFR}sGfQh@8MtihVVe<|`j5)|(smDhgLY`W7Tt$a!O;#KYzlcL_YcSFc3s76P>7Ke_JIvsD zFIg?Skkn0u^46B}rqWi#Ad6%~)oV5r_o}KYjn)(m1tore$X6ou^x{gD0w_m|$rcnVDJmHCad=22r6LDMZ!}Q;4^r!H z8+A=HwM&aI6$*=#cu77>G?55)%l75!ZrKwXwfgm24*gUh2A;QPs*DP+KNg^4hA`0)^;$& zyULjfpT%bx{}5-la0F7wq3W^ z6~-m@mVNqjj{h^txwNR0c(8L?iei$_l8$x9uq=Tw4x`W(6H)kVeg*?u3w*{VdKm{t zwZTlJM!aL5DSPhn4sXej3IOBE@^t&8HT)|>p5;j?P?1Crj|l~!+*vqR@ou6q7>W%m zaYJ*b{FYaZa8Leh=$n)NXW;pgs<81K=KU*la+F!7A@gz}zk{>=i|< zm;zqU=g5SsHUU9^dtDbZIVd%}cn*cvZMPR{RPfZ%s!3YPZ~KK;mDk4t#ZH%?NBk2h*h}tfl-L?8J-S$Qotp$ZKRWv;2xbT!c`)Ho~X7tp70jz9L zWx7bhQap-;X_*fCZXhDV3QVAIIE^&6kaLZC8&+l&q(IF($nXm$MJD(!d znS-!)s&1Tgvt_@DV4D`@EatB@*NX+3{a*_j6ONXC#KEJ-pzEVLxj?JPI;KlSUmo%a z;soV~c6ny})Hodu%xT&1ke=V_!*9WUD51qYaA`!-Me|L zkx71MItW+m4o9JPkv?ByAP{X?FUay=1f9EG)>IY0K25Pty7YL7d!|}~p*Jlb!On33 zck-2R&a9c@!T1vpq!a7o8fjEuCVw4LvdQG4I5Cw*T+$7_ee&G`ebSpIKy0s>TJg_)X`+r+*v|@dmZUb;g;<+TvQaZ^ovmy!3QS z=SqyJJ&tV>ZE#3`i*=_k+eeQ6LYlUzTFB{O*$`?nzIi_7(HIGgh!u^wPunR6ZNLua zl}jKkaI7EzcA!`UWA07M!qDF2q+Ojk zziEz6jfSO^sdFC(0~D(|26`cV{XclAfR%+I!?Z4WJ+~6VkIkEBG`Xp00YuL=l9DT^ z-oMlr|KxC^h)Z`6929d3g0Eum!LqyUbH`>eiS8+q9!Uo+*)58Q!ce$pJlLSEZiSq3 z8uA2Z{W+mJC+$60v)3kVIe&%F(fBhKgl(?_U+g+xk{dWU(JHuKD4booD(&ho))rsl zJrCUS&16I95x++LC@J)G=>Y?`63s?m*Xb)1x>U$J#bT(90eZw>?T=o9x3 zi$h|WhpN~llJvlIj4;frhSO|M84K7(h?2*-l;d2=UF{oL-L(6t(3LdZ{LME3Hn8)p zk7n2wnY^cnIx}#Mux06OhqIHOw5;c^Xg_p=o+e0AYR83G?ailKCUWTOyhhVaiczVYWM25u z=Vvx<#QMMU7{n--cgsa%MwpQ@h@p{xu^|i!huvHNv=6qmKi=qk5QS}FqgL(XMT6S+ ziu`Wjw9uolMA(ETTmL9}7TLayxL)_TYf~$aasW-xq$P1KeQY4*Azf8@*(IF2&D3u6 zLBNn^3@=+xn<%pDq9_S62 znD|`xh&|+Fy4^(ZcD#LG{Av<>=2A7SltKu)VwrMvB=s$DUbPU7bpr2}z8p>0eQRoT<6eNMLj{4cv`>0w#3@h7^WS!2VByhUYb0 zm^uHu7BDMPgqi?zHg|p)qm6*PxCk?yTAcw{UHTAl(ttFEw4rxricNDz_XpN?lm*nv9o z+?kc&0X5ads2SPbbV8#iw zh&z2vE3Gwb0cx#klPWid9=;2OPtad5MCU~$zc_BCKgS&7A|d78ME&^Rp&0{_-81)S zP$L%%llz&2C2*)xlg2l9mG)AwVeK9O2hIpN^(zWHT)hvG62S0z5dHrCi@$Mj@2wk| zTCP{65wQ7rPCj?*U9r5a0hpB=_G@cQLB7=Ck9BANSShbh8U^?4fnDC4ki3KW)ADK- zIyY};H~LO*2Eq;29YckgpuaKa1DItX6=B}t~(g(#_2;+ogW+{F?b5-YJZB zFIxdjbjqU1YPx1Q2fLDUim&CUy^Xw4y$W|*6F7*aaI%8FjIUFy^DDl`XyK=*Lz6UT zM-h1@70w_5CBT=x_kOx{w9Z5=TwFc3;D;t~vHmSqXU&JGAyNH1i(m=D#0PFPFGZQ) z=`lFtV36D3o1)uNmQpYOO9EsQl;S^-I9J6@pEz)Q?~-7;mqP=>iVhEEO8jRRF(P~4 zs7_a|?9@Y?j(mhyLF&D*zbw^E)@0;M4fXo?>kj&PvVHo9gxri*zCLpT=S+Xgq4DD} z1>*}NUUj>85}M8xW-C$WbC_=85Fl)EwZYjO_XZK=qCcd}qAg{ZeZH=DQ_}xE0xxC( zs0_Vpi)0IV$N%N4{20Uy6n#{wzH(y&C9-K~tsGoGvCHtM29KKps#R!zoaPPRem3}0 z*;FkbdF_`(CmvWk0(6d^E>rcGjS&J!p*tou1^g00wBEenMHPH1`R#T%n-W^uXVZ>% zLw7jA+~%v)CwetvRM@P!YNsjbnU2KZN7vZOnd%cq>W&x{lze>_vC3*h(>1(L-c`;% zH8Bwy%!%=3aUMXOeI9dv{y<1)5$jsA<;k4cWkX`dCmv8X3Z)+sT#s{Ch5b0Sp2C=^ z)Z_=ZRjsOvX+IaRpe5_e#w77tPMF2z8%hRwu?Xro{t?j%WQ5`m!ei{yC+D1^+pW0+ zZL|NN?x}3+ykvSm8|M9sm?BI1AY`0o@e#Qbop?q)O+2BrWv~-vy1rfao~^P3 z!5>QBzQkg1#NHm_3^gp^=&3)lrXv-dTcm4(q!42*iH$Qs($NV2oFA`g1TXn)~ejE$=r))_kf7g8^=hg4~;;7F`R zc4l;zk}>vCqyV+a^2hL+q#wW}#P`?k1=ybu-Af)Kz20$q@84NBMji1|@-TXTR(S4! zxbv%6W0izL-52~5@iKRdfmXuUm2D=p{e88&0cRkTzw#`vi>>=Rl*vZID+%P%mLN@%wzu{7>!Z%#YI5iAVZnD^*h9F&f^^P7(q0Vj(4l6mV%z zp9*MT1(O7AEo5KhoByH*$Ea^#SKE%>`KxIMT_~q*TW?lbMz$50JeEgaEv@#B$}^Vy z)a!$LH#4z3TCo&K$pKdnX!84ZdV&$iyBpe?F@V-h&j#YOI1^QyFh{%9d zFSmxoBQ}C3?V%#bZbuDfsFVD7^jCbmJG091MF&6kvP$@^ci3k&6b2Wqu)c*{2Y%i3 z>)<`1O-n$7!K~feft0lpiy}XxTT;Mze3|rbnNdX0XX_25l0&!Ssv@@u7YIT=b5KB0 zwvx`$L=~*~CLmL23Rx${Oy%(e(~|VUiL4KWvXLjz&8^SlLn7IQ3$kZT4JkbzSE)3e zhik$wq@SJ2`TvSyWw+DKHkjsuj3a5CS)3D#L6eiD!G+Cnt2J4uA^mbxeQ=0&^J!*s z?88oiTq7BTFuQ<=lL04BU`1oht0Nb;IW=6m_;_N|M-*9LWlJWF;wDC3 zc~v5T7A(-rg8kg{kYCqY2dPK4Hg_{zHjUd<4o9A9>g&j{nB&-ciRv8TT}q0*+Cj@* zInSDC6tBkN+Q1(YB`zUeY4H-qFwJ}Bd$BXe#1Fk`!HuB%>TTIe(&~7R7jDOyTxKq} z+VGq&2?cox1TZ_E>dTmTbG_HL5Uqan2o!bt9O%613<+z2g=!+?2D+EKLSpxmbx`*c z-fSCFEur}#KRli!THXdn53>_(2W6$Xrhq+aKB={?iN4kOh2~ z#aaL+l9O|}_S3^rgXYCgNL&-^pQsh)hqAZMzDq!RK`ccf8I6@Hnf)pXQhg@tE?$v; zDrLsvP^KoNao3y#e@5U~%kt||QWVxft9U~z#JLfxo4VMeGIE7@al_HY`&c57r#E^+ zp6x?zlNu%V^~47GjceLT4x`H#?MGkEtFTRYvQKU#ZIQT^u*xnR0xphgM;l(oyLw0qZ6s-XNP>C~V&GjEVTEem7p- zgKF#kl+bi3mDS@Tgq{bKlshP(e!W!ce;=d6jLy@#o}F&dcYS4Rft8OZe4JSQ7(I52 zREMEev-LGW$BJ4~LPcs?{lz?&g$>`|cx<-!+A@ciZgWYtULl*F7ytV zkicdyD&2);`YRH;n&A#Zi?ZN%`3Uo)pn<(aWl|7SY3=WcTJm4Bk?7sAIQ z(&WH}Oey?q7)(O3bhq}9N*KxI{+6Hk4s<26gMg6+sePo(h$S#r~Z7W-_6?aJ2bkzP2i{x5JC15IVLta0iYH(11$BNf74V|B;; zTf7heGiJ4enz&mAL_Wqp4=&mTU9$o#GI^U*HpM@wr{2{PB?_F8MvcJ7I18?RP^A39 zeohZ2Dfc~XfW`Y+OWKT@aQv){*l{@sve z68@L?bN7($G9A7DRIAFNQ1nYr5#`c!N$E{j0Mj+gAOql$ggQbO>0C?|%%w;+aE92Y zBj~>a0ZbmE5pOsZLMG+#))}b4R}`H16;JcM>nF;w@VgF-+M$91&)D|0VgA#&)@OS?6swi(j|DJdB5$Ovibmh}YwTkQnL$yEmysJC_N53usgmh#_mV zOd8+dndU0S?NL0bJ(Ch6jgEybdOCiLn=tiBH{Di8*2ChI#RCQ3d!x9#`|4H^Wg4S@(rck%9D4}L=0fnIsTS19O4`4z@7Ahh7R-G;Bc#f z7-dcdg$zgvC}QC<^ALY}(vf=oqS(teln!SkRApd+SVhz63U28|@66x37W#sFINH5~ zhF+%Yc?&r)q;RFT&=Gsg?}K{!lM`V$-E1BbLnw*+YVT;dImMq)LvCAMX9kf)g1}V1 zGc)=Y2%<&TCq9nhZzKTco1}93Y`8F6S1w4pe21(aS=5onhdT``= z7sIQ*uwJg?vq*XhbE;L8h~LYUTE6u8d8*#pYQ8u5`^|3FRcW&o41;EH;*cFH@m$Mr zgCT}kuVPDkyql?725Vc4x6QguUZeKWwzn}jA|S(Lp@ce3?e;6S2S-1+s=E{d5v}Hd zQsJ#!gDs|r1*y1WV(89*ui3i4R`v>$D>2ytL)QR=#%j1NY`VW{ zU#d@dFpM^cx3Lgn;F)owf;GDxxT&vsYj<`Adc=}1S#INb;Tap0tgG<}z3G?S`$5?b7LvEq65)PU5D zY7gJk&FS6GPnj~Ed%XkI5}ybPbWJLdFKmA(xqu&rQQMruHJ4T)wyB&(xKvkkdLYEj zF-cF<@1zax&QTnj^b*H_NU3Lx{OBrH4rCjB*2sXqME)e`CX-P>0!bL6)u~1Z=0~jH z6FpSr&B{BZ6}u!rp5?i})QL+z8E>`#X-(0Y9McrighmtF3J(Be2u%#U%#AQS zz&SH)mR@p^+(kF+0ng7{_(67zxL&S$D=23XXQk6{ruCepJ+IqSs|D)#j{GQMG6Co! z%IM8nA^5;=8I^Mf&@NqObLPWAFT^wY@f~KKv1VC9WE>He>~xAg$zcinlqCD_{C}FH zVQ{+BrlRBbj2y8a2SRT!Y0>AHl>Ug|>9!m*<6g`ps1u=M$ft*KqQ8pW@rJ%pq&u4z zSQa5%h6!1G5V~VV7}_+)Lgy+m5dd*7swknpl*NpSiZaUqg#|KpDhV*7R#&PJFGVJW zJyl^leGo(K{^!bedpuB6h`@X*K*wiS;Ekw3uQ~O+Rng7NbxA=0Du0FovEwWjU+*SMLhsa!rR(HyeJm&8!@Y~)||1L3W$cl^0%b+1Z`)k#cwl)&Y+eO83iMAKzONBL7 z6D*BA#-V`dGC9my+}x$CrC_27r-m;#I`LzNm`A!j1i|bmkMlV%zRg*ZB4S1At(;|g zPC}v|@gv*%LdxCU|HoM$01lWxIy_Iex^x`jNBg=B(Lz)2aFR~3B;iU_+5&gIs1bF2 zihOA?4eHyoMp(^>y$`(X@8f+J-*4NspvT#?FX9pKR5qn54(0;=+ZEUAbG@Bn5g^Qh=!u3-!?s!4G&|p04)2|Rp6DJZ`E2o*Nl{uR4ZuA0sRr-+bTfM5gm2{xnke9!&*z9Um-povFa z0F&m~6)8m8bvR@l`AI4nvHDG5VJBrKSij?}x_{k7n> zWn1Kfs{wg4)}2TV1;m%M3tW!0kbQw;?QwTm+)hzvrw=rjgsrF$v6Ue$G#BXk-~dcZ zb&ZjPX2UDysXCd}7t4pNz~r2l>n;!ot`yT2L1J9jX!I zNbtBp6(i}BY{|`8+pKJej)22RKyxm(uDe{o3uv%WF*|HaHJNEJ{U3Af>W~x- zJkz*7zH3na;kS>kS=I+i?rZjSr@EJ^f%+NCoQa99@e_YLiz6}(Yr>Tz4JB#%bG>{* zO=MYEFBf}3cG%4Kj}UV@x*+sq(gR==GLrm-@yg``I&5M*kZ6k!sb!&Rl_nunwe8#O zzaRFdJY?@`sNZSs!ui1ffe4J->;2g)=TVjt_Hx77+_YaN(~#`NvpGIRc$|lTRvG-4 zku0nK?XBlc1&J+r8jOo6jy=cA8i3Bus(+?(i0ooz5n9zIl(-+C)!$NM>IrYvie7C< zwqAMp>i^$=?_*CfUJqqn_GW}-GnLn)?Zj{m4`J3Ki+%V{C^zGxix%;)MY?97!R}i^ z1Uj(dx8!OFt`>Kd4<`e(F_ehTiZT0XcdUx*Q6k%6vN&sex-QtJ#ns=>>ZuU}CKrPO zoN=;Hy?CbAT9utk*=((>(T^`Uz7B0?1x@j1EHB&Y`9MLM?xtQO1|_xGOpkGk5+P|^?i4v^h0 z@dSGNw0u0zD7Jf#&N@Ji?JVdpsAf@|juw5?P3By4M4bHe$-*KPVIq>p`wE<4Ukn6%{T3O_zh`QA`GJthg)ZSd>9bNR|g_ zm~ynnFJG;#4TT%3T}jt}$>I3FW*3+TUdy1>eI->R<7H}Qw^laA{=az!7-;DS%RA5 zk|cv9l0bKbE7KV|UR7Gbfwo2y;u=YVZ|Bx7C>bTzTfgTg0SqfH+%_HqDt(^OPq)5F z%Yek>-?%+V%#$tI6Qdln<#9I9mlk|8x36_oX5zT8C!pcB9T4eR}S7m1Fj-SJo7D{VE7U`dg3yes=Aa~Lx9J{d-;BeuYOeYgr(C5`e!vCd6uv=N%OO zGkn8i_2q>Ce4j`UmDk>aLRla!H38Xk3mPG9!UO)E-WtCH;{GQIV>miHr==KP~Zr(OG;tkVIN1W=#;f1v(vGAysW^Y0!jL z_`b(*$Eaca;R`qkbdCXLX|dG+y_7d;zg`=;BtVxte6 zM|i+Js{eU2Zpz?shs|Bv@#P@dPhT!Gj5o{vC_0dHU7ew*Yu%m{lqML75=&NZmJH|F zd$ky=h8UeC5|8CldH^$ekIe1-?|m`~UW$s@=+V8{^rq6V`GUbBic@{Y(>-vUiafD9 z+h#l;3L~npGTE6y#6Suvt{ei#US&8v(mpWGY_T!?hAzi(o-06Hc?mE?s6^kO!Q{@2 zs%2NF4p%m5w-xU!+MUGN%u%`1o$oI0F}zbzu*NZpN<9~2QkXqLV-Iy@U@^Xt<0Xi^ z(c+)DyNCm!<+;QS+c_6qd*)sqTd`Ejd^K&@teJ|>TDPbEGphjqKLEf-hJ4$RNYP~` zRF;vJI0h@es`*LRUoQMvX*BLBykTob)qT0^j{Cbkl=o-t6sQ=dKBUY^zY{(XJfPy) z4~&9v+@orY(bnHsV~8{<$=}wT(T7f&?nU`RVo>l4vXd7XB1bB9zoz)S3mbGrW4FDW zbvsrCYz}1*9?d+x}32G7M3aQ^y~*9b=@4ib+~B=bck~(Q$Oz z?P;ebbXk(VW47?5Ba88E_Fjf|R>NfvemrsAjKov-t52(hZ!NmYIUAvY2?vakAdjBN zjwCPE0(3B(Tm@p2#07FUba-EoZH8v`_&g=gQAcV}`b9Gg77;NuMNa2>p)h&&{U%Cf z?YBug+l*4Q$z(0piCe$lUCFRHV*{Aw8e%-~{9mUXi2~MNYJ&a2K{J%x>< z;}kI;=b0OV?=zXZ!j*u5UkFK2JKTdfc+%y-PK+0yuKQjzN8xD`5j1w|P~F!pG)%@w zZ}B)et)uD|a;7obk9p1)b>LOK)CgSfqU?50%=hHe*lBsJEyJ1sP&oojwpF6ta&s9k8P$0k-|% z&m?2Z7dsr&^98K&>ckC+tqlj8SE_hsBNK)fu(45VH1R z&Me%x`u^?%ZD63^Yf(PX1^@Sz$yC={7D$~5y7k+HL0q}vq$u6q&7J>)3|}~Hn3(6& zf~QkFuUYRvsm)kn8pF6Wj!H9YF`8pkS7=eRF_FVVSVN+G_n!+ zyUjc(UJlGIetaP0Y1fnmAU(D3a^_#liT2XuN|kS#qSX9wLHA>%>9m34ACX?nE0(j@ z_3#TMQ6ES~|MQt;*NGr4pg;&$5DRBSuSR8El0nfKz@8mh=D%c;C{v1LI&+F>9Tut{Q zy)htT;Gxd?`$V82t?P8z#y72HZ|!`*bXfH-mi)p@vSe zx8d$hUtxlcB6;q`>`P@^PJ$_Mp*?;LKJN64P1SbL=%>fh=N&IJZcgavWQ_eq0UhF8 zi1iN!f*L;DCRJ@~1assQdVdz7V+RROYVaN9y2a%ckUHQc!cOsemYv-O5nD4u(O8Ce zW6wb4YmRT2t4T*R67w*wMq5fc_&%lo_F0ADSq7hD#8iPZ8Y0bO5DffgUG58onS6<4 zyQIVR?#Pn=KFsFpEPp(F)PwI3n|lRh&xIN@Z6~83ug%bBnhIEdePKy)z6<95DW5r4yrxizw=m4MD_r^1*5sT~M=%&*Pde?$=tT0Q!%PoqvS zUwZ2Av2|D?#jQRR4M$E@uK~f7ug29&XlwH*t;53jT#irlA5ntaRtIV{CauG&+NDPne# z2~<1B(h!GSeE229D7Lsh&#m93ap5fROJgaHla3_^Gj=)c9e9~W-14MK z_!_#9(;a`pR6q{n6+wcEbRzYru<%f>^Ln<$X%&n3Gd~|x^aSnR09D8M5n=iU3gKmw z3}^p86HQqbbyLm~lbnfD(9EB0XTu_{J#cQuCIT`VcUtqhUOSgO_mGv$9ll|K0zfE< zNjZKkn?c8J-n9@RBArw(`KJEmZ{QqpbK*j#pNb2nI$ugzRRp5EcZf0f66Ti?S{zfe zkZ+Q-yj&9Jrb;#LS_=5RwSiAeMho3MEGI~DECMABs@b4V!u#XYAN>R}pr z0i@+rKeoEYRn(gTvH}hQVqe+;Ko5#f97~2b?c$JHe0Ho9Jx^F#B1)&jn zAQ^R3f#hEdANw2D0C`XV{9rAeTj4s!2Pk>VaRq7xxE8E{o^*mu zv~G$o9o->KtoOW>{!9I|LrO8q!aJrS`Y+f9LaAZ5o;+oF!>EUJW*mkRI{N{nWzoJX z-Y+l87+q9v7Z~9^KQSMA5f>s~J^OX|8W2)lpAooi#%wpIuVk&kv#LL}2>0;gc?Orn zQ4??#JEQxV7yotQuvhJVJ@{r&mgg@*xhmpNO{*(M=NoYqg>{4T#o4A<0b*Xzk*MCM z#YxH_h;(6`jcehFjujsMd2RmL7gTpZ#D?6lc;ab1F1>d$z#AILSDRaJ-K6(r%9dFf zCW|}?++b@TGPd+j(2>d?_u%K^1-NkO>CG2?7Y%p*4X7J%cYd1O$N<$&tx((MNT6w* zUyg&&LCbju;K3y#ccXO7IQGL1Uz#A=T1WWZH+;7i-J*$mkr%$gNX{k0kU`#i1vw7t zpnLl@_!N2bmLs*zpR&4ifi#C+yfH_{205pgq$gH}4|hB6`JrbIwy^MGMK#SmWaU{E z`p%Fw9IdWLYe6ins&Bwmjvs?TUgYUPh)0P+T^}1gXRyg=y?L#+4o;6gHTP(W3`h(L zYu4Tk;-!Y~SgO57T3|&*D9I2|78rf+iXEh&QgFpGdb~(IC$D`r&e05R{nPb6d{~3g z#SenBRLgPJliS!VR2Mbk42?1)uB9SOD?(df3(wO`Q`T4JvbN%_0!lylccSv8gVAry z1O0oEN_@}nAte_yCGMy>|1Fse{J|cy@YiA7E;xs5akjREtij%U;X^OL5A7x{b9+w# z>z8*XsVaSf1S7tzNYnW(ej(Y=YQ@Ilqm?j%54C_9qDbh;&%Br<3+A2N$K;DGV5UNUYr-+W(BnaO&0~R(B@Cng|D@V z!3e#jjN`+gl2wr65|Y7jUVl}nX{h}6L&6r5za=XE?P60vm{ER zC4j$ZAw-d#uyq^Ge22y4?`zZX$P{@3TD~P2D#{{10mH!pWWRp|)08t!PzJ*|XeGu8 z#I+4iP9kH}oxpKw>nKzSeSLnQu zF!6k`49kUA0|G>i5kYPzM}qt|vy@lJS>{LoLqt=NGWKg3_wOZ3P_Q3m82X%v%0b;9 zmTWfDzRRDf6=#b1d_FPwmZ;zTuZxa#f2PpaK<#&upN$q1%yz=kpS?Kg;JwWjv7xM?e1Mh zw_q8Q$Vr#25hL(a*|+#1XW7wcw=_s?qp)>nBQiQ4N*TfF3WQCaXN>vk5O3GYgukoE zz-PTNFJA{4bP4~(XJeQj=Uk#XcFtx?WlNi!+FMn_P;k&CN^?s+d_Bf@KmMnTak!UXX; z6V~o_P@fY>qrV_S2M%fUYC?n1&ks_#8U3B++$w*bg$mSEmCih|$>Vu z^$l4)AR5l4t9^Y+_8bOVQJbLnuBMr)qqsdS8j1CXIp~W7pdln`OkfGo7&;ZFNx5G!!UN5R^`F{B4A1usI7L`n zNLpp%50+qp(^&1OZ?*^Zq5K`g2A zF>0(XW4~DV>TJ}L8e#k40br@pjG+|oKt=0| zSwx_(mdC4!g|D4qzVk$ex~IK6Ao-6c`F2Pao^%O+Evk>6rC%jD=yE^%!XI@t!Xavu z7a|m03417c_I&Q(@DTYcM+6WudqU+h@xz-N_w;kc(fbSYj}XSjF@K%$vWJ7p8M7^Z zOE$~8R$jQF*wb4@2|gP5oMH#q-j!!X=DK|+Xx@kLS)>d|(YdhP^;$!h7o!`$!E}XP z8UzH%qWd;M!jOacd0V~vAN>|m4eVPw-yFX(tO5eyjI$Oo__e($i~~It1F7oG6{|Vw zV`K5*->W3Nw46-^t_oqJ<)%iC7gMj=-Pm)LhA65p|#2-{}e7>Ph=PBs5q z|60J$Y2-_$5IG3YMt4Peq_{XIOE?L=)w{Yk%(v!_Vf*jPB8!cSe~^koOR-zsc$v-M zzv)F5Hwz=4`T{LO*ETQL(&>zhm-&2bfdCfB$F{ZlW>CFTYD4}%F!sML>%X~Ct+dfPeW-bZcCK7-s}xt4(wEjBKf2Jmzd0AlEj$L8B4 z66H;uUT2Pc^L-|8sj39Kq0Hm`B(c;XOCkAFW76_Qu%1ahj!Vwbw6xQ%vq+6tZy&{F zo5L0l|Eb6O9(#kDl!FS-}ErgJ&*hhXxb}|(Hmiys1!`wp@XIlj+yVH zp1e4Od^R`inF{l%DCpYoKY!caf3&mLRyL$DtH_d-e1WmZH{R(mfDP@aF*1Pn*T21! zV;~}xV@{VefPq(VM1uGbcSotoj-(VK-4sX!hgO9zaCmX%l06!YuCab`y0hxkMl6x$ zbGFfQOF^NLTYzhQnEIrJL~#x4dVc{gYwOH}+dciX@HEVMU@PXN_rPT z2xGTNV>v8l!8gtPGpuM8p}oZZygF(VU8O?9K%eQTI~XJM;ooSTK;n0qL8G?EFngN= zopk#=QJyQ3k=qpGS!p?EUH(D3`L0bG`%!jRX(U8s{~Mq0Q=zuy_O70`(6H|U)l|9E zgn=7Pqh)w3I0OLBe-EphIFHTeesrU?p(|d|{&`H*l{u1ZZHNsUc)+lCgeK3VzZ)nN zb_Cpt#~Re+V4Vhm!#p|FL_dXTw!8V9L-AzvPEu7JA=0&TU8{ z{}>)%Z68Rn>c+N`B7zh-N$hEJ;TAcGlUBZ0*-L!bMcg(E3}r(YnDN%H2)vYx|GCa~ zGJ*o8KGyt`;KkzH!N9(=O5qrsT}*a!?P7V-C*jmcXymUztx}o=OxVlEe4zooeBJ-P%twhhLku z$<_v%{$a4L;_gKCKK&XDJ9#X1UoGq_QX9XpB>*c-yaN#At_A~-@f|O|1a!s_*}9I7 zB*Q!1VszFNkWT%vDbL}KF+?k5V4|C(_L)SX*tymjhxdfg zy8N_Xjs%#wYJLU0K6@2f8zWw@8EB1YJLX8~lB#+22mN?yPQh+S(#k4LUvq))Z$bHf z3&7c5=r%!*=Y0+h0l=I?pK3(%H0V)Y)`D#b5zP`}uM1lqhSGzbOGRMlmS{8g(*c4B zOn_{9&Ym|ThSb77BsNbjPlt!*rxwY`X7?~C`|*)thv)r9`Hf{_`HHLB!;(#8UK9F}1+G1kC)c zqXp9P4k>g}Id{bL!gL-Q*(qOgAtS z_8B$Q+s);KsSa3lDW5eXTA;PT_Y&TQ8x)_ZWdSY95SDlhilyKE$N0#`YF~hta zn-Wz(2UTeDsH4blnR@9ogWDv+_aK^C&wzGtN~U`q@dj> zb*FwOZS_1$?fAP6BDFZhr3E0kdti--l~U{&3sr5n1jruGjMwo?_!?S+aDCVwNnG^HMHBY=E>i>5bAI@CHxa zf?$W1@x2?2rw${ZxFRL1X~pHI>~tk0yCfc8q{*co`Enw=J0RLSVJ}evEoyUsZpxt+ z5Mr>x_cm1Pi5Oza{ruCTK@Em4$|h*U`QNE4by?e}>6hjQvR9tmsCun9htylEh&P^w ztX-FNEMScdJ~20p9j!pjJj$M$!aeusY0k>Ye&lI zoaub+qjXazArf4BcHqOjLAW$Wu{ry*HsuVRQ+gh*s~q^hwOpkDQuAS`a)$btsU0d1 z2M~DCujE%}M$SJe63BSqXh<}B`+GOM3#%`it1c?(Tf8VjzaVt|3Y>np9Nx##wA651 zbQXzBt>X(IH?&S|XzGzj8P$nSY?el40K>)C3Dr%+8S4<Z?AsEIhg~P`2gfhQ85~#4&zzbL+P+Zm2gNI)V^U9-Dv4vJ6;LjUdWA z(%h}R#k|tZ)&=BnUrbY;*Ta07)`aT+%IpD|oz*73v$TnL^lub1^tyW0KCQ2|Z>fG~ z@CMqtq`&{OPu(IEBQ9K7JCwM@j97!U9^(drH<4m#?NuVIG|(p1T#Hp%S@sTG12u8V zTi9E^AFXs;xsqMTS0Yba69EE&7MN5U(T=x8lT_6U$Wy-_RJk0q8^sxPG|qT8h#3Cv zI6_1utuA15?G}_I>uA%Utjf;&@~L?M+wDVSLN`l)MKX(E4z+N1I zD2ec49$qQw3KyrwZ$$JK0*0n@MY<6g*H27kd0K@R_PZ*xI)yW!Nb3!CdM~yWpKaU( zW{Oq8NmxhC7wOdYUv+k#s6{9V^lsLlHu;)C9tPfKCfFR zABrm;C8_C!2ZymX!BNbAS0fNEN`VDphq<^IX`RPi;f?KrFr7j3?LzV2uLyitx`?9N zG(h}KAB#<9|52Ns4?F!gfEq5G5Ld^9$FR$}SgEy;)d$mPrQ$8@Y{kKWDA9$Iu*rPr zbz*%ODxOlb&Y+R}IoywUMyO?o1Vf&CPGQsp%{BVEw3?YLKP^{=BxN|UO#LlK37gmp z*v#lhb+zmf4&0Tap!)aO^=@atm!pCenFJo0OCTs`21k$^n%Fjr&ZdCfVEMDbnG{Y4k`hZjb zhiAFoXu}rz`3R;eT&XR28bqB(K;FL)yo<#ZxbL?W3+vVL1CYm*U$*AApN~+G-P5eN z#$IFjYPrz~dOu$Sm65PsP38dfRwQosr_%{I)OlZr+?J)vRu z=(o*1XU>HUuWxb;3y?UYle561+BTq>8eNgm0Gv=i+Q#!cHFrH2GNksUN{ge%i^+9= zVhS21w&7*lP!tnorwwg>nnEv>FW{tu$uJRMByBJIR-%k-VgqgtH<_W!fxELY(mt; zXSS*My(%{@O$X;3>$EnRxY_YcLl7~&a^pjeTeX8X%T-ixNyr1tdZWU>x=(Xw@CK}R z>cE=dRBJoNq-;zCJx_!UXZ3Q8Dg`*`H&9XF4%tWjtd_r7{3TKTE@4vv-c-B69GalD z|NP|L^-|kqLsiuU`0@$g>Oi-Gun^zgRInSVm$HflmZ;1ee@YYZ=W4w*)`kF_olX6% zhV)yoy5;I`Y)SoDeFbS3ywg-*>LvX2ro_-Ov@~YZ;Rp?wtF*du)(Z?cn$9=DaR5RI zHw*mb+_&d1Y(=UGG{yF~tlfwnk(A$R-EQY?h_fgB5>G(u0|m}#r|E}60A>|-{o$HM zoEEs>95LalC1t)tX;L7nkqVS-mz}S6mGy^aYMSsb-OHlL*MvufBy%9f_u>=#7-5#f ziOILca)!l12zY{kK1^L7Iv`MRPIE)PJe}{IzshvrA1aRuRAa~`r6xd>wex6RF*B4M ztGAj5#=v_Bd~?&s3-buR4b8?;^e9%S)+WGmLESa6RkTw|3MseZIGSN&cw+23`wu$P zNumtC=P`HQhUrKuGgx#(Fv$6A0`Z*!*^HMu8Xm8+X%I-K^Rs9`7u}u-^~!Dd4!DyS z_AJ{MedwU6_%mQa-635EEJ3uhNkYXe!q*e^NRnG^_u2kczgE8?@Nab|Z<=+Cgx_PX8-ocU$!r6~x zecpGQL-rHS%;GW4s#TX6+DokD^Em4s={S}k`4OG#@FW$n?*fDeuSq0~I25Xq7qt}g ztUnt9#9#b3X*XqHXwI%IyNhYqSe>OG`tI+0cCk9tiJv|=waGMy^~E$9yBxY_Ps=Rm z_Pj+u0&?ZkA2>NL?~m*``O>HoAv3kY8j{=BOC?b*V&3+~KFoT1>qL`yLkC3E2pHHn zQk>*Rj_MFy9<>`Dq|T$vVt?mnm!$42VY^!yYBuJ<_P=SY;IxtPd<|;F^~4P}HK3mt z#arq5*xlRgUG$5Qq-Hrts75TtO!0whe$lI|gDM`)y+cKU2NhP%6#)n-ykiOhV6f6@YA8kCx~j{QYa) zu4p%)Vu8jcPmYJKp)c_N&Ppm!{rgMSvNh;VXqXYE{>kAcV=VilRnbn@yrwjp3zsUp zn8cr-i}^h{%dqVz2q*B$NLDsEkTF{z91(2Y{gQ`D6!c>rJ;3-cFbQUWVTR9>lL(aE zg$nnit=pAvgTK%rBLbYOx>iXMOh=T9Avfz=f3KETL{8KVde$JRROr*KZvW>pWWtF- z1cO}9;>7%AxiU*{Aht?4Br`?kFu1%xwx#0$T&`8^?DQ`cs@`0#etLV;ijoU1ykKau zWDmbr%S0M^NLsbaB!ihZfG-0aaxrN@XPm)W8>^Eb?N2b9u+BfguC2r^mM_7Aihg5_eYp)U&P32lT(2w%bw~+gFQSj6L4f5VPUEB*=9*p44gN8*lVqXkzn=;;Fh z5YgfF2=@&mGAx#@X1$9pkzOB`D8GRz`?Jif!|mpcMw?-gnjK)H8b$_YxiObesYry( zhyKb@WZX}OSXHzD*daWZ?-J#ix&6spreYn~|4yK&=lC{M-E$$%*8aSS>lnRYG(w&k z#3I@{k@lMHXih`ymdd{RK(fk@BZF>D1qm^2$NS)Ofzb{trhK@2Ksm>Ml)jd#ud=v1 z;fANp@e`EfLVbegJWujS;xz1>IMkR}`VQD>NCRTqZwT1P=nF@xBPsE`dDp@40$?x3 z4j}W-V4D*n{V~;huu3C2NAPpg8%0J>b{Cf38a;;~VWX9PmEv;YuX0=FPBg(`p16 z4JwP08;J@({&RJBP7EZuiOhjCTlxOZXm^*^HY_*>b13?{dxW*sGb3t9-2+P;B9;!> z=YXNeid62^bBX@^wu~(<>6Lc9G{JfBV`N5>hwhq1K9&lwRQha^tD*V)aCkG2j}OXV z^FXe!hmx+jq1LUQ0s$I+R@y+JA*?K3b$qTkO|60A!gNJW@EYbNSMC#<(~K_C3?Eo9 zTARvY!$7;y6X|i$ft4?Q@{_*%Q`suXV8Uc*ZDs$owVusgB{{Hp*|;won^QK5D5rT7 zff4`f&~gr$>3L;1vCP<(Sd@9>=2=7B=j#%5z&W>Z{{8h3mJteb_7VVq>t)FGXjSU$ zfJh-@A7lJv+s0A2__q8Kl4-0Bri#Rnt4cs*>eCs5+gwxBX+Gx~%P-$biJkLkl?|S+ zG6dDoCCO5n^R@7Y`#3U!-${cAWb45sLMSd@fut@VWtU970En&pW9_~%v86+dY*c(S z%aod}R7+D$fGwEL+tnptw`EtSJzR&R60bOlYY%0?Erj_`o|~8>v#jU!yS)3hgi)Q* zi;ajtUgPJy=F5&H!mOVz)Rv9^*cjjqGc5}lo-;PSc>6Zant`PRo{~jNrWJAPk9UKA&F6QVD7qTkD@p-BO@haX3I15E86|xSsXHccGTIZr z=U)mTeYn$ns4Vq9&F>mWI?y~Z4nm8z8ECpL#>x#!xNw3-y&U*1K_Gf#*++{T?(iXp zh7WEmXGcj zMK;Y7W(5-d1zQTg%p^Xr^XgmzJyd@accAbhlk0atS(#Em#y=o5S?w>+&}*0VX1+9* zv_`R`c#N44m5T2Dye(yY! zFshVoJ>f;}czf?-Ah#*K14F#y{`rQinx4mG*QNCCU!{{Hn+anF;t1W?e6QaGsDO`1 z5e=cq@kQ7ge+B9hY8kHqTt_63k6Rej9cfv2MgJNiXd}#+WG@#Qyz?z<`qxKyLlg0a z)bg(9p}7p9Y?+88puCG^JbU|Q07gi`Sx`)sG z`R%gmw6OFW6%g!ZORRwo*NoZzkY6f!B>LDLW0?E-Z|Cw9l(U}L6kh#t^V6SMUs#Sm z=j{Sp!qI>J{n!~NIs&P5!?Ggk>Nr(&;Iil6)6zyh!*|(vO-~Q`wkM-ymyN{bMSx@1 z^=NzJ2iK+FQ!<|1rH0eXmG_2cEC0U^Wb9M%BWy`u78K5T{{6xI9DnS2b)G>34zA`^ zYMeM?0Hp+<+bC$~VCh*2_)s8B2e6`4p$jZr4|b_9LV>(8Qz)GQFDMo3ZtUIZ+OxqY zJqB63K?4Il@O@mNm6sOx{16Q9u}`4oF8Qy)WEB%N%a+iVzgkORf{UK+gXpk0U8fi% zQ|6scqD&?413yf5YvIV)s-cQ=GHe#7<}r6!=+i2uYu@C2_vL%E&zaAvoV~bpQjBZ; za#N!o^pZ-58%!e(jIF3NJ*d8`?Mn9BMb8d7qfzC3$YTBuPs;DSS#4XpD1B4o_5=Ct zX^!`SpYcEhwB&lpCEd0fyUO&Awzrjn{ws+o71LC1#-QW0)O4B2daa8Va@M@ALRSE`fvtjTc<2$8uRf3+alX1Ss2sFhUx`V&)*gawb2#Snex6QM)@0@v zxW1U3nI{+^5v(HYuDtJkUMC)0j&4TX(Qn)fc*d9;-XGCC0?6O2#FGGL1*?Q*{MsMH z?nVUhzD2L1HLdUhw)+7Az48i8Uf>x0h*zL7l`3I#;1}^`{9NTSD(OD!dK117Ax_GjJY7Cy!Vj7h7zK`Mvp-~>ta4gl7 z_jc)hlJw)DKSBW1E~j$B!tuI=`{yF{_6*JRCa#hxBE1 zkH6fCbLwiKUzgJmc?L{!z~4=0RIV?yG=H3;zO=8rAiM5$S=>V@=~K(V(rdSjA`bj)B3&!Pv%*>F{)`Gm;89 z98C8I&9^H#IJtyW4_MBEgWDcQnwp z9~1+_{FiUcL$Lzh+fj@~bCGU$gKB~2L!D5%yGJ@)hX~XsaKaCVZJ-e>%!H@YL%IiD z&6xpdF+&Je{;N}`ZV&wg4Rxmh(P}osNQ;WpTiH9q#2CfXRpalNCZty zDEC?^u-H_Rm+=656)-Yk++SjkSYn)q`_l3S9y6}8Jjt3+bbe-K6|f`cij={Mvi3OW z5v8{B&rKh}4&GtP)mucT7b@{=X?2 zJ%~i!5i31mFxP^k)g?J+JNOUSzQ^4~3O0@)RR5WYwt;ql1$g(I>CB}rh!e?H>>H6G zN&nMR`62ZF&**3CB%p!W<_ScXOiti6OXa5h!QTfXKl^-VvY;y8#$tw9KoovdZc=wT zTFioHVa<%hZo3n;1m;j~U6UPev978{^0J&+0q${W%Dd`I4Y6t=o{43{21r!WiO3<{Rh|O)uM&{y8tebLO`x|=QxJR0LT1E&83+!-eB=yiIfgsg);$LCF#&^Y5 zu36@;4#wp`wt3F7ZAwt(DdIdFV4u)^b4iHl`Sx)8*5|}Y^jbw4kd%QHN_FqXBb3RJ zZ=->hXzr?|i{ZQ*3*JNnEW%JeS$}GZoY-gjFEcpew1(DI!DVQqEH#u(!m<=A0=SAE zm1YLzwzrH-Rd(%K*t|0Yf>VZiHh7Mr=93C{qcQ7O@40t?Y1u(RIzl$3XPCaU`Ly^W(3y&(*m1k966<2m-#HbldGr0n zSN+Mr68wauUy#0EtoetgqNf9O=&-Cr+jF}TIySaLROj}jMGOR>YziO1Z$IdUoHMs0 zHtQjbXTT6&o9P1Cb87>>QmW`KXt#DLbbOwsLN9`|pl9b$^l0u9o0jI(pKI%B8MJSo zww)b`pYAN23Wj_N-4bi9V}2k%Mx~#FpCN6gaMl26U94xm=Hn6@&Jd&KBfD zY4z-Gw7oq^WBK27|BOY>6cZ+{S7+XnT%a1AHz@chB#eCeL^jmbTj6zB$KO18OO;>; z^SWMdr+Ycx=1uWHNTB3;@^e$utTn{&x9>3u0IOWTwrvUy zu|J#V+f3@}Qj%+j|N0BVkqeIT>&=U#`dw0~c6Px*+ffRKSAL^`)gfU)nkXhCDsRt- zCsH9Ca-=8b*QK2%Xv#m7o;{16$JF6h_B{=Yfk4Rf$kdn_JpFXcSgAANo zK6!^RzP8&tGpU;*Iu<#Tso3M5)g1voKEoMH${C45=|_&4FJ}g`I=MS9f*zL$yxetN z9tIQ>D{D?N(jB%u#dVLZl>wnQ^>%_xU$Uf!U9}`1?0LPo8V5!NR#x`vt^qL`=``96 z;6OJ6@j&W%_HVZBpX>T6+O$I#9I`P*A951 zTocQ&%0%9CBkaMANIwIuZxh6rtOGgoW!#KV-DcE^DAumJ``A8KSslpksXmKF&bBQO zxvxb?Ek+D@%=Z04l=78daT3mgs+@t?*R%xoc~AhN3w|+eRD1Ug;Kyt?DC=zWXpmWH z*hbl65n-}1N1trf_dzB>-T@6}TD@(>7b1o=G=6CLC&flzMH(Z2pVjHIZJj8zRCJzk zl&K5`VvH|-wbR>6XHBh(j@H9k<B)AV`za=0UF*n7}}ru zpDs|WG-IWnD{Z653CR;t;gu<$s22nHhfeQ%Dl`a+Fvq-{jpwRk0fXd#q_3^i1$UjH zy0R*-3;EJxI@>aHZzj~E$l+gQ_1oI3o6oCa=Y{dJnve+C&6BH7D z7X?pB+@u|~@)%ufgeY9t4xoYwA&#yHM*4ryAhi!W zE)orzD|%hPH>Q+DwQklK7O$uXN8ENZR57 zR*fgSbXV*hcj+))nnp2zJCHb9089jjRVb_{x?HMqvwQn*m6P+ahBFf;)(W%z zlk?mk2-nx7x#YA-b<=4|Io>WZiiVbz%Sz-Wee)*o9EZC5$@w5(0s1>Ckq^XY)MH&o zRMe$pBYX|@$1xK#a%?gYhDEQ;NNA>hFBPwC5LYu434>PBUR|xmdGGQdM9idK%?BGU zip9vU7u?CAvr0FXkAbfBF*XNsbMk@yw-*84L+VPfEXTMeH2+-F(O;x}i6*F2yUJlJ zAy;oC;gl+FRV>CP3{$h(L!5ef5xt?6#SDBoO3q6stGX}PD~^sH;6v zu>Jl!1w>QuJH~MOvkL_%dD1*E8o91^=C?Pm4Lv&5wv1MznFO$S++@ zq4)V$(vO>5O>q={!1>A>(hKpmaH3{|hdm!EpL{eCUfktI z0_tZiaBbfc1c<`E8CeWO-`WiO8`ggCD#y-J>g}i~x7{isFynpRTe{A(62*xN%_btI zUbWp=JTh!1>7idGX$i)eL2zxJ3ds?Re${OL_v8zjK$m?B3fjTey&;ihCnh|E6j49-0|*hu@oq)9dsD@Fxry74IBng}H1n8dk;nJ%Sld8sjpaK|DV9^x%Cgul9pL z{+F{S*W-0CLjLn-J=4#QpTIs&hb-nh=qV3HN|T$MFj+zGd?MrXsa0C)6bvxT=9dWs zwDHi4NdNa3;QfhMh=uA!Bplcc1Sf&bO}Kf!Zp`?sVB=0BWR(>CI^z$CwQ&6&@DZHh zO@#L}qTNMGpwvaPV)YrXi|!%_tfn89J;?7Nv0%-c@piH=u^1np9)uvrO0vB_h+1}= zx2Sofs;bHNb&h%dGeawB$v>#G>EiBPIlHsYZ5s+9f0dmZmi7D-Ym=pCw^=j!8dgLZ z5>@z{Y!cNFlLclv9qgy1)zRVr{6ptq|1thDpLZrGQdn_gv=9s1MNY>CBaQ5HDAZM` zr!?YjlupMb!R48~+Q+FBWIo_sPF$iPfY}&@NGn$63F9JN%=zXw*y3E+;tk{|XaRU^ z=EgM<-|l5B{gRNl+;gc9_H17dLR*q1O6I8$S?y`2V{}{`h%K#K?Id^SU~oEWmYCm? zj38W(1X%qsZBeYaC8HDdA*HS&+%ey3t)5X zKw2?%s3M77!T3cg#jF^Wmr@f$<(*6%)n13|s`hL%T+r5e^nWsZfA*HGDyKQ1xekIG zKBc=I^l?!h-vhS;1hrde+8y8_E>q+@11tjPW)W|ainSAW*#PInsoyFaMLfSFu6H%t z)5;e}47(h@9wyTfIEF8;Q`Zl_&+tfwGx}d%`McfSH+0v{O8S?Q&d$5fBsfA25N4r= z6-pDkqD%ulnr@yEADzi;-ShDck<6hGU*4NnGo>;dv6ED#fC^(_EZ4>KLEhI z)!-}f=PUu(`|8p6!xqm-kWO^!qk^}St-e?cezhJnUrgkVTr$%(gd+AtL}7ny2i5PC z4jGg^DW0Q@(?*~;(tKsRHf z%kCp1=3w?MLL0+S(n)FO6OPswfTcS4+nuJH#d%pK&s{7UfRAdnH5lneHUL|0{8SdR zIW?6J#SlzAw7&Mn6T=So_v6^B!RsqxtbDkaSvTDBS*W1kYnohWdfV@$R0_}omHsH zdW*)1{0_27{{#wk|08sWfcO{NVT zEADm;?@xMi1WeL%?H0-F=6Qmsnhs-v$wSoI)AtGIW3psF;^`K7VRe@n^6UESq7$2a z7YZeiLs@(U5Kuy?;G1&S5XPO4!i19qQc^eEGszT66XKUHCyBiuRzBVwiT!nVPJhPW zj^^dhU;^_~xxr0{lH+s3aKjMdsuN0%C~p@)6s`kK)flV=!aNH})Zm;nL6(5GVQ0SL z+;|Fkm2lJ%JP{Bmdj>TiNQ^@>%?|;QG&zhJKa&lk={nE%n;65b zlaapDmsKEld?WhJ@oJJY`vVGpqPr+)HNkxUo<$P#aNtaGtD!*+B0euT^2#2|vfSxq zw9|-U0-CZSnI|ovV|kUx4#%YExzZtTi{W7NktCtQT=v&R2(X`xDpVymuh)3;!;eIn zh;Ufnrqndm@;4;9(8%bw=g+EC41MCurYzX3;&QjGUvclLWK%P7SnC04+X!m4$kQb( zaJ_i3HvkDDmK;ZU99sd>1c2WC0YU;XzdQaNm4bOVBR?Y zJU0eW5Q}hyKv7tu1fG-Z;Lld7xvojEX-dE9FM4#Gf2d%d4gv-#I})GZieLscmFHy7=qL+^! z@cOs%O0RLqopcu$d^%CX`KV;H7~;LHiQ)tN8%sz!(bK zh#LCbd0(y&MvCsMn`xax*ukW!&(1CPw+=9(K2dvC0lC05-=T=-*P>za7cJPYnOhjO z_f;%BeNE50WdCzcm(EXzdo;KPqSP?SV5+@YWwQMC8{X(*r2-}yzuq4 z&!aa=C`SG9n6#bq%PHZrw~}KE?^$vxd8dABL4D4YQ}Sw&B6JIQAAj`mQ-6S8z@U3` zhe^RTs@XuD_X_UmnNlmq=S7+nB;_?vXru%+C4ErZZ7piRxLzK8%HC9k#O3p`am zx0w=0TD?Ak3&{U|N+H+pU%lApu_VB57tNZW0~@h40sIaJMWI=wij!e+e`R;GiSb}c zM9usCpe8@2T4GAxOfBBW_^?r0Y3$7oDA3Vq2A<6U9atNAE&Y$&JsDD<0^ z1wsbXM~FXiEF#eRDj_E|1M@u%a2LcPwxcnnI4un5dX9F1jEU~zi~jsrGk7G-NV?qA z0tAJTHUP;uD^qeG4YtcPT0LtvMptw%BN6)2PQ4=+BGW6y73_ZRa#5UNI|n*Bjg&yn z%xkgfQFjp+Bfw2di^y?wCE2}Af!)j%qDP&COSd=yT+MY+)1+^(`%>rz5x;Zp5+w8D1M+nQa6)g@{ zFsUd^M6M5MR{5dx4*WcF_7qg8nJuEv2Qz=jTT%$C@I~F)Ctti=>CYUF7-J@AU^SY? zpj_DIw=qW2Sa8mriATrU9*+8;;pM0W}`YWK2o(l4l+z zbBx@r)bA2}Cv*+{OfBl?XD(>F#UbkO4UGxJWh9r8FoSLy+>_;tY0+?7S&p5++V z>o{L&(-^NbD`~&Ft)KJ5M;Zy=eYqA<9pfMhz!)AXVf<~%)+Q*k)ocmh(hykZ4aV+h zH4rh0{H?ty(hSi$eRaiJ?BcfRIpj$tvm9pT5PtAIBUbrSNnXShW?PQtKbI;x za#gw~+6?3Of2vU(h}QVI6DE>XIN=3iz}td9rqUOhQB=Mwwc&_23t;GZJSXp^&7qJ4 zacvRYxHR>O?L`o{dl1*|q;@|c6qKC>hrhZEES4o5KQQtEKU}^5N1Z`BFcRgO?<@bd zjze=m>{Eyl(rt0powDr`@mr2eG62=2{xL#efyz%hn-A)pkRA72930bz=1$6!pVXms zD)$Ed-1h>Z^FYepqF+u$x&13&q_O3}FRfRnRv+1a9U@P7NYeYw_$y7(9}gG9KlTkR1|?Nb*q$hSD34_a_Qf`W_Uj^0Yu~;_ zn0tiiRu%)zzR61iUOw)MWy#emS6cTZ#ybhe+9KQWGO>TKx?aQ zz7FW*m+#Z#rVYPJZh*LJeP9lxtT97O|bX$gV(;Piw(Xq#@g zre{{_S(N41GvSB%wQ*I$erOC^7QuOD&8TULKLwPq*?%3KS+HN6{Q(gx+%l%Un*6T|lym&30guo` zI&vfsLh*D4^ODX!$*&0+XG7|TH|?Rn$&$B1u3!qP;2uZr6Y z4EA}gu`cmLKC9b!FONnkUD6bYq=5`x-R2~3gWA?b60K zN=C;S@@jx~WT9^g#^4+x*0DY&vA)~hLQ2S*>sKkwuNDk}S8)L8ag1J_jf}haM2URA z&Y?4#2%%-ua@)9_P~D4_)PCtzi6mU-rOucZ$ zdNwyQCt+Q1S>q()a3f))r=r_pgh;y7u%y@r+bzn!W;Al~jGj|R_NyUFehzi3HMBMM z2Vk7Ec~X$RI+^<%bp*>TZ33lls6v>E@xMWSmPiPNs`Ti~mOM{4`WN9}F1xfz)X&g})<$^o>^os+z}q#?zH_ABfzE(;uo{73DYU7AgMM>oXb zWIkIihOivmJ}6T`i#YWg$+}SjIhI$R79)n8PzoD@zXFcH0E^;yTAZ5uE_cd@daDi4 z*apgUyVc|7YmRn3dBmuJJcv$PIy1DGldx0pem{~18i-rQcq>~e90Xf(RhzXEhdskD z@Hf?)fk{_R#=wie_iK_R72pz#Egx>n`aR)*yF2oStqDG$Zj0y(^5U;W4EM~yd6WX| zw<5$#{Vorm$Y^8W_H1=HR~JBW>CL11g~3w*0)HwUfnR!%11d%-%v9MAct}lb^8i|{ zHkPmm7PSj*85J=ff#H~__Wsy4?YkotgJ%+49bMDnL!zz`y9+BAEATFOD%K41(8YfpsHmBZ~?H7efHC{v7 zgq`don*gN~xst04zRjF*z|hn1bCEU! zQ)UnzVU%FE%@qvt&^FK-fp4QBb*TzISLDB&%%4V=banet$cp83nDi?mi-B_6R}hIZ zl?#O*e-|Mt-D%M){LYS^s>JPbN#TSsut@#D550!T(A+P@w)WMy2FCn7E zdQya@r1ObP!+h;b?-@yZN;>hFNuT$Sfa-@LAaLumKfOBJQNlG9y(m zhR`wR8Ge6S`N=Ubz)A1upL=wqX-0I$PRUW`zh@sZSO-W}MT+v?u9JU#uL64d~re>Qh4IlRD2nPFTJe>$N11 zDR0|!{ZMl=EDY1&AKOx|j`oY;*x$YaSd>pR(6u%li6Yxn{y8F#YS2i{Thppy%^Jq6 z{B3=SqQzO_{7kA3RU7fw&hx)g=KppJI!N~4<5_$J&v<8gYuX7H+eA)p3owj zQQ87~rlYg(p>1-WLiBbwe={H*h1r<1%=MzlcT zR^;4&Ez55^EjYSV4Dv~gJot3DHC>gD^czkSEIM!w`OcI1tw7f2#51II!#gB9jVvsf z=RF8%y9)aI9)OK4Ik6e#Te; zXsZc|3Zlz^T*KfTL|(Nc;G!W0I`+m%{0?twcDxtmBP>N0^jC71LTgnqJF;9*iOjNa zZSiqu2!rY<|3<`|83krNF#|xejh{E{ycSjXh)oX9o8r0TyD% z?;Q91p4(|dwk)zaOgznw|L>N;9!F!AhGMyhd0!LNutcJ?7AKc0Rml(a*?OWaB*-Z3 z9L?P$WdgK`LH_K&P{F_O-&O|1AK9os&o%^~c1P2L&m59!BGy^1PLfK)u@D~Ik*6oy zgF^g4kXhXDXidAGj55o};Si=>ze|K#QY%{|$x~hfx@jN>X%(;9WziLwspAfog2h*V zTTN1p#)!R|Q8$RHStxTi6w5$R=RlaEh~5l~7vvpD0sj%aT8Lfv=m@ z)-q=D#b$x<6gIinNU7QQY&(p1?1G9mzO?#Z#|~)l3*2J{ zU5uqZitOra1H~Scz8@IHmiEBd?%~>EN(6Q6FWx<9PG$U^6w+XoJUmW3z6rlyphscU zlnhB1ma%?Vllmt2D2nfFH1Gsp=k28KSnuL5+hM*0Q{F4#LT0evrQA+*#HiUqJbmQVf1i_Ibd73w-s9Vmf#ThXB1NK7yON zCXhBW{4?G97IdxBi>zSMeh7y>Q^uiQ8)`e9A0vIpl8zbS;k^du>J#S1A&Cbh%3^hi znu-oq7Nd6WqySTc(6)hs1n@Yy9ehhYC@s+0@Kaz2R|wlo`lFoCJqtry8404*j;fer zZZE)3&2!wOq{Jn1Cocxts=kgOg%E*_kZam-mgVeg z7F_1*7BtV=UoKG(k$YD)_sjFf-*-AE8_}*4#aKLWd^S#+YHe+hn7P$132dxD=DaO) zvM$42#cy;4vo=4z)XGoQFoY|jVw-WY5t60NkU3#ZCo#&;w9s7(i|6yfHD~A5xNGw? z0_blTGzDca{`&IkIS-3f5#SaQ3G(Vj@w|K&&Mnbk@E&+^pp+v3!&Vh|C^mkFE<1zqy5j zLk#@rAGxmhL~gE1GuP6-S3J(G(4>)EU6-tYEj4(E*)GUVw=y}Ni)jNf>9t#P(|2Y& z4v&+@;jLGb;Ib_6kqki`hYt~Fh45gyKHHEZ`b7Glmcd#Ox*8i?cp=({#jQ}6<2vM2 z8&qyjyE0Y3+g|voe#_N-Ge?VkJ&vv=UfBbKS#b{cHihwM#dXY+;<)F@{L^Vb=|pl? zfbQAq@*m{ae5eV5QhhCFgWr`j@uo8AH>yik9)n4Z@fqaiQM>V8nTkOLkrl4zqcHhn zbKPlSzn3vvQe}K+Lw))3@I?|GtkVoqu_E;e86*mkeU6NI@>0eUn)?a4;_2xybr|cj zx7lJx<8k$AB0fB|bWed8oO98rSFS@xd1>Kvlk^|9_Uq*HG6z-mVV!NYa$Nlg?zAtd z1Bgm`eUSC5vR>flZmBAZ1Ea5ymnA)?1MaPA=fAwy?+(vY72z0ZFSt?+uiczd+RI37 z1mrW!AgSs9eoBhSe{~msqly?G zpKX}J6~g8wP*LnJMp3(dT0J|m*@Lh+x)Uu~8*m(F%Dy;=2dF=9D&#sZ4p*j-VkVg6 zzJi#U_+seidNYWP8K%{w*irLeqHg=zJ<^@jwe*qvmJfY9tIJ{d%mvrsg9$f(kW&wB zkJ>#X_kTgIp3EeM4h*=hCtzwb7~-{dI5+vPR?VKceb8}2%W*l>mI;~C+nqvQbW0KU zha4uR(ig~B>xHv<#xl`E)yyc)rtKr4bv{Nra;$_P@7riT9@Hm)i zYrD}nGdwbl%R?~T+@*09_Ibcq{zK~p{VZRzoQIdd9Kh__dCX*Bf?0{Rl^z~<(8~Y& z@tFU3=@x>Y_6zKN>ne)UKvfgcyS`{@G;dZMfQqgfcT)sxa;9-NIjX|I{Ctji&7AZ z7^8*hyf%Tz_J%=`ap;JiPvZZI7kl&<9{{jsGmoFO{uO}&01x6<0ZrQRZC*fC`Ep=F zDkQYe?-=nf)veAuZ{WXlO~9?U-NQsQSHnDvlq$#K$GcC^Ac&2({ssKW9jrj=Gr}ct z;S!lmLmaySoq+grD0_VGeXI2oXf#DTk=kPOKbViT4Zo|dYLt`raNQ&joV#JozTHsc ziu65^x_6{%s({%?@OP$BL~ffqp#M}t82x?^XOxR5aI3XQug>}4-TpYvdzv+>ePXZH z2I{!=mK7g3d72+KkJ=HLz@)xv&~E>X@Fhxh^_a+fRI1jw34b6@eyzuQwwZzYAQ)V? z53B>RK5FCz$?IzlQ>pE}C^56IXO;0$tz!vL8K#U*4+JI`@Y5z7%N+~{>`!SyQ$;Rh zBHu)vTTl~Nc;!HYcR8eG{Zfi|HCJ)HEWj=k5`#v%f}%c1Uy&I>W$PY4^&X*BCw#dl z2c;%Wtt~3i#vi@rM4+20QhczPsCgoc%e+d z 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 DWTkGy literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511154002-Config.rsc b/MikroMaster/20260511/20260511154002-Config.rsc new file mode 100644 index 0000000..7c84930 --- /dev/null +++ b/MikroMaster/20260511/20260511154002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 15:40:02 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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.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 +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 +/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/20260511/20260511154002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511154002-Diff-Config.rsc new file mode 100644 index 0000000..7e31b2c --- /dev/null +++ b/MikroMaster/history/20260511/20260511154002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0