From b1fb36a2371d8ca9822ad003377a5491232b7a1d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 15 Apr 2026 23:00:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 15 23:00:08. --- .../20260415/20260415230002-Binary.backup | Bin 0 -> 314409 bytes .../20260415/20260415230002-Config.rsc | 4532 +++++++++++++++++ .../20260415/20260415230002-Diff-Config.rsc | 20 + 3 files changed, 4552 insertions(+) create mode 100644 MikroMaster/20260415/20260415230002-Binary.backup create mode 100644 MikroMaster/20260415/20260415230002-Config.rsc create mode 100644 MikroMaster/history/20260415/20260415230002-Diff-Config.rsc diff --git a/MikroMaster/20260415/20260415230002-Binary.backup b/MikroMaster/20260415/20260415230002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ca660d905724d4bac766e3f4f0b86e52264b511d GIT binary patch literal 314409 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

n})|xSds0mbj&L5cgR1yS+lD&MzUT% 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%0At$8hpl9Dl&lB? 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

34WwlkrnD$6WM6Q@089hWcT5m zG$qo_JP5fN0EX6iTK4`XSf7JPqT^6woQUse!F1??^uWhr@Sr;9uT+DCCvi556Ck;U-kpK1K2EZj47 zm8q)W3Ls644I=A4wK1d9h_l#r@2FI8$Pj4FG3f8j=4 zBClP~X2tRu1r8e&@VVi5ohSvG7Qo2OYlLe=&ZV@+?*#z`U+PKFr zR6nmT3V5+J1mx=^jFs|Pe}$3gqw#rZ68Wa0S7IKXSRJ)39iITb-F7bU8DezDOiZj!>uk zKni!JD>29@6fcG95HgP)>S29sAeF+G_0w+e?)z_QMgNp)MVncpDTa>FemXV=OVKWu zo122t-F2Y#|62HlJ%$QAXK{nli!evtmNje68LOUoO*OV@pak5Vdk%L*&L;{W8xY7= z4`95Dl<2MCP>U~Jq>G7*HmjBvEi7>HYMn9fy)hs{BKsk~A;YL*#gijK!cWGhU0cku zj;KgrnUEQoH7hvr{=DMjyHYCPSw35N6ZpqXY8D|X-N|-D;2jp}D*XEfdtvC-=2aOb z^T*NHIY(Ya)KLnW;o$e~vgqJY+)0v-5OnHy6`K2B$EJV~rha^sPT4vw6nKL99Xa^?^%iwgx-1u{E} zz4)#_lj)MQ_~1$wo4{2&R=gc9d$VV0@qM-}mEmT%5L}hUFzU!*FP*$veMhu|#$R4^AwX&wI((d4Q1H**AzQ)R^R7fVP_=y{^T^y^E~D zGkjhyraH!&uQ|_Fo>Z@KPNPW%XE91KAuO@xPRizmZ*YOQ?&Pj> z=#;G+d3Cpf><8S+$r>~stogeNbI{!bFT* z6IQuqM;G4>d6NA3o|F?@ za>>6oZ?pmu_gGXxGT)1^4J{S_V;(RM8EdPxSN{qbis`1oDrrU<#~im;`bow~U! zD7Q5Lr55T36Ns*mai>u}+wP6$p{ZfcDDK@h`xJH7Av+}>c}b+!H$nc&v@!_T&uOfy z`zM;BzYmu^_Hql4^>1{=Y#hYR%raD(ex+kJ=u%5WaT)Y6YHYjLOPHfk){(N0mY+;x zEqag3^+`fR9!iwcCXOjf zD#^UIGw-W+LhF$2QNPwM{kV)ofxTpLewZ~Keb=EyJPFDzTz_i)p2kAlTTGO87`O3a zX``lKIbcBY^4eb~voY@pO@Iuh4D-8@rRH?ZDP{_%*`!^?-S6cAh}SgsClB)`Ai@#P z_^n6L355N{gVMN?p(MUZ9JLq5%HPD3BFI4ZjiL_Qs2B2Ul9K(f_d~}KKel!JDssYI z65fwUZy(6l@+Z<{R?`0bzP#BO*gtY25GT<*3**qzrSHDbWPh@BB-KUZSI$k7)GC(W z*}Q)py)l%}|1HW>j4SvkM$`V+MBg{hUABNs`xt=QF7T!FKMe2f1n_|leR^{ zpM6ofr~P*rZzG~QlmzCI(w!i)uUSj2x_e+BlKkSm*j+Q@e(l%1mcjJy0f}j9O2_%U zjm0K$<_H)B{&1PXkNzx;3!R%2du~b}dfNdA|rw`tYlyPu&r2MEO^pt7% za-P=}9_9p{bgM*MmWsL5TeBn3_!1KtR}oY$PWe?qFKvBB87sjG(uJASm^WSGy*@fz zSG0^yKgeB`LzpHNZ^GG=o`TjHId{*N|G$eqXwdW|=y6nRVGuEUJ9wBPCS3D(*O6p? z$t^>#qZY60F7|$G6p;V`rJ%+8VkZ>)FnXIq14>T~^aoNw?`ekQ%+Zj>l_l#s_6B-4 zXd37FYl<+$*!MM)8X7~$4tBfY%riJ)%`X$H@;an`Ti0NBJQ`qYu&u;n zLr3Oj0R3%!@)qw9&IzdgN@~q*t@YOQZXrbIg7ex6cxmN9%@I;=4TFO|7Mb`}eJ<7g zi0X~a*8D7B3vjkZ*~(IE2Y8*6ZG*jMDX2(}a&uFasi>+glM=}{f;fmo!NfwQKJ!}z zM*pz%ON`DWHUZW)|MlC&z)uOPV0I|BnpN05Srn@5$$NBBO)n}WvE}dNUi_Td_I?vx z?`3puFE9^gP)2Cx`7fo^mZ&SLQL2cX&KSE+c94n6MtPL8v43?{YN)Y)j#j4{QOSIb zlcy%noY}hos}Vx!7}u|ZHP$7V4W^6BX95rS(<$x@bi901IDv>NJis&@5N7sD+H|pw zDD&I!4mbn@GcD(crQ1e~Y3dN(Z2gCkJDr11jO&_YOb!SBD&`^gmy7C&7{hb{MbrT}FPCjUceciDY@O2;G9> zm9jIT3CLf+g#Z$pb1(kLhFa)(jeF8vFTfg?_wLPP)WpgyS)t$q=enKZb|x`^Ix6bd zfd5cHO23gCIWQ)y;zC!-AgBO^%tR9gy#OYfpz>lowwH)xFEGm>3(S!04*;L7Z}V~+ zxLy?%3?UZFy|h2UY;jID{Uy%N{Eky-!uwYP^(tj=fblS;F}k~gl5k#NG&R~Pw7!Fo z+@;(`RCqT)L^AeDITMh#=dS99f_O48liCjT+pIaYQ+Qbqe-YDsXJ8~l^R?-RduSbZ zt%#TfbIeKpt7k^QV!&oNr2#84Fzt#WpgCUUK=5q*0gPAiPEN7p(}!MZM`>jJQN8`k zBqft?n!>U^tJ?jU*hLIxW$RV9%tE|pYGtEVf?#~zN(7{OibbVQ?uCSK>X2N3G zDk1kD>wDs8x4 zG2m=fpDyt7^DmXF$&6hbrYx_B)gLFj7Rnf9Kvojl*?Ym# z+nb$J42zLA0VB!2>rDbfR7J*$m>B5}hOU~3cfilgO(fNb=8KV#A5LkA3Cn3#b@kQU z^d}l?GJYxdMxE3mq3WXjzN6_hV4JxtpdOQ+7D4$mS^O&9iZ%yv__KOiBqFXV^c8b& z>%M9^SuUM15d0a<=RyUPHU`LmKT1t2S$bxiJ@6F-V|96agpx0Dz6t7mazXPbC~0W4TBJ}rCu1}OF@drquaQaIu4z1S9>)9lj}amY=*=gmA^e+y4g{;RHYCa$ zd`?U(Aw{qEj@QsZ!p!!j8-k%{Zbn+i&fDyw#;C1M)p>|znVno!#_L)yn;uDBp1SQl zlK@sqpFs<}>WxymAi3mlTcx>3+wc(4E5QBpS${W&)<{5b{d=jjt_9zeF2zBVS!^QIS+XfboMWUhCoE5!1m2h7O)I?dT>{tWvvLdOSHf>s?``{ooV|8na zyP88%B#A7eEcS^ko5H9gL;%)9Jq@ZIoVW$b$CsiMUfAtRaabD)jV>z;dHc!f z0Lk($)E-*QiA(Ls8;bE;&-F_-dtL=ku@3IV30*3vlSrq#@?<8pNfL3B2sB0}nN#Z? zO_lx?ef2j!+)-Z)B{PSLUB60Y0%epd`$o$9^4sQzZai+VB) zYzfOLG%sp+AS&$X%pGx!q12*G#+PjBjXn@DW}AF9-Vq`t_lFK z2Vix(|pn`7_YN2#F{QShu{nVhP;Oc4S(j{izMV&^#|Jz1JXPGZHp9CA z8_iuC{RgA_Np$ux_*!B?eN_u@_9cVKFEwkAm?(!L6-Lif)H4bXC^$BZpSTTY+JIOq zEDVa6Fu;|PdxLTx4&9VXQs$aMb)H%H9pzn2Afy-CNXSf|{81fWjarN~BXFkWAq?tE z9)(R|lm58Crzbfk79UL#wI4Nrbps{4V?>8pEM|eZ)oqXp^*Qx{Nbd|s)fjuAG(l8Y zCl{urY40qRr2{@fK8HHQZi*Y6H6jJ8GuGzd4s+-^V(LfoYYdJ}ciFzeGLE=gX~BS} zyw#UNCVT@yhV28y=tIZL-7cYoI){w#!_87koqS#c;N6oLj@J!x-br->O-bK;;t{u7 zhDPZsY+?4i?}eyjdVbQlI4!BK)#Vr@^84(NHE|r(KJm@F0HmMLjxOZfWSFu?ghAiX z`aQB~n3XAll;#ve)St@SU0D+B+HdyZLTX$j)fYF+8Ak)57eTcmAf7r0eM4o^1rKWc zB*zS2vaA5v{l+H-Fm^Yu#vYlRxKv|iO4nbW>aVPIF2q}zo$7U9Rn&Tmu`}it#@y3I z_6TP%m|Gw7sL+HgOj3ieIRpe9Imb2<&e|qoupfK4 zqP%*Cf{VWQ00A9WR&#pgX#=%P?)QE+vqkfqnEfmzwA0MjmyGbxOifB`ZIIX)xE;#2 z!8BkDeF`omcx51J#zQ6V6Zws2uh1?}+rw3^ag2>G?4@_o=w;v&#UtG^BUtY) zdv0J^Gk0x_>Ay&&0A!>bjtD)941J#e;R3>gA@@zxh#istUYr5msiPz|w|G$Ya0UP1 zbQ*lY7h-hQp29ROfZVU1Ij9`jm=5TFN4=6zX+dGD44{vSZM>OryehlXtMt-(b#g}1 zt^qy3y(z>&-4(;wDs?^hO7p!{zE~DAwlDNGAg+V_wv_}65sCVOSkl1e4mk5fi1?l` z0wB)CWDy{w(I0T0iwr2wF1CX7AG~^AN`^5X)F#xGU3<-P^w;RzSc;Ffae~NrYZ2T} zY{vyM(LZuMs1L&DN6~5P+w3)ne;bKMCdZzhG9LMF4 zSm-`L29brnzO|#gI6d%vOXPOO9^I2mi*W%KUmSFE4J*d0!#W2EfiHYc{^R&hEMA?o zQe74y=R2ceccM&jPCj{CGaYC3s`{qB)gG#$-z3lc4D9zy>FQBiyY^#al3njL&k0+9 zxXX%atK(=pB``U0hPa7`;{x0gfKHSBThhoULtzBZ)6?&9pAs zud1Iz{4JSat9?lj*wDcm12J-P#`=U0x-Z;Y85pfUP;nZDSu4iKE4(JXd9@Ek2t$w(@l4WCGdMi|J9 ztJkiCfGC|3g31do3nR$ETtky-=R1S(%CQq5m8v{G7cEUhswU8~+3OjE$HO8{kMwdG z=s#)a%>hqutwL~jfU%}lEvbWWuWy!B985R7DafZ?e!Lr?n@{#}Zoj8d>cNobH>)S> z%U)TS0#e^utt^C9H$5|Y{``G;C$DQwHDAU=gS!qI^B8ne?aN#So9(e528pIQYSUqm zt{Cb4Zp`Sk#22A<-1n9@qNmapGvm{?7Rsn6u#-iBtsR*nfZWr#0@u`4Ts5VGa=bj3k7}zp_1PbH? zUuB|H;Csf{ZMe?pzYwq$Z*5*kaP(z9;8*1U%S|+f&9`S;R4D*FrP?lM#3{LSiCEV% zg7mMW*K4)+2meoh0WSq{13nQsZw{K=->2M3-WJO+E3(546O&;mdTR-ypNyi0=4ylc z+@(Q{F5Gl82gVk@yAqi&(Xa>i&SmZ)AbgbzMnbVc=eX_!=u`HPHRt_)K!?0H%d@m} z4;q$z@$V1&nuCV*Z=&h78j=;z?CQ;zG^JX$$?OC&@ibuwislCzZ?UUmRv4K;>~ zDyJ^Oyoi|`3lSPEDz0rL4>cypZHP|Hea345Zw!Imx($Q{A9_rCC<5lh)m8cz zP+Hww?oZq_k8fy#NWTghLk-CJVrlvs>?E5yL6*^dDo zC1O_p3x{3vTNpsRR|k5B1uHKvFIs&Og!vH@9Ta4-K?dQ1fzFyf-)c-Ge!>5a&B}>{ z1rp&Jjpwl!guCY|r|#lh)efMJ&;~5BC*+g;L4D2`s$WKR_CQ)Mh(I@5S`(Y~8Tu#b3cA1wb;cyy_WS>BBf5v! z-n>d0P6VZPlAPk)UE)qAR_?hV@504ZDK5mBz@N$xeR+Udvhh zni(|t?X2n!`M~h41pLl~wNVmp$6Iu?cK8$umqJDs$l438#nU#&OR!2VZqlF6M;9C? zdtyi*s11G(UY{`UXH_gJ#H8@sGo)6b*Q!+E#v9uU>QDsVkWJeDp2yK4OYPBJ(X&`4 zOQn3h`@%?Y7dk{M@W7}o=a;7FhcJ9`=U6nLGD~y#hTMtNn&D2KZDC^yutZvf;xCpesG(_E}w*ZJFnnl=YQMI zN&$0wPOLORbyQXEC2Iod8`iE<2l-uqSM&@fkw^Z$H=+I&7}=s&vfyN1%42zU^VQ5w=$5?iB6kW;Iv`Yr`3$^} zjg~vhnhfpbNKuT?Xqu+@ugtfI@Bch1Qf0+9VYmk`0!zB}C}WN114_*qa`+U$SLJ^^ zk9-jOdT7C&$R$SoWgY*#OyqZrOhBk`Wqoo}K66jZnMbn`hMNq&cJFzMkVzxo=2Ba@ zBm)VNBQ?N3U)MKJv3a|!>WyALJ<<|3L#R8}y5>?5+dpM3&u;q% zq}^#y$WKYZi$G{>hhg4-xN*A?IO?-BBzBMJnBdog#W3k&A#*JxlFZ{JL>rvbyFyephy$1LwsomuWIfQ$<%n1IxV{`0Zt)? zA;G%htmcuyhQL~CzApy%;GtsBmG08lKiNON951^9w<1LN4fwt zgYQ>&N`=;5j#C#Aj|?u-2mYwn+Y|c4lVh=)Vba-%3(8GIw*sLi{=z^`PkcL1U5wJO z<$!)_UJ9YJZHD9)f%6QT%@|m<@=^(9QO|-iV2iDdZtk4rLfBClY5|{bhxA%NBU=|5 zfH)W9z5veIf5>ACnSWzsF8of$h%$PIm4y#=!z$M~4lV4C8F8Ku$!BFEr$ZR;J{Im* zGv%`jDv(HiyWeN^hN>%G=8yONTWfD{V6j5BN{nInb*NN*xaEKkp9O?)@7#`Ck zllbE+>!WZsz<@H*m=xF4IHw?sOetuqbD90@u_?8)!tc9%op%s@(bq!_!ng-hI!pZ+ zT-rN1nLM*~cTb)Xc^1Gs6s+kNIIH#SBI8=oG1z7UD8@mkQ{u$arRM@C)J=x%=J;rL z`K+ptr;(+tpZim*Axr76y(;?O3<2kzO~Z>gt(WW%F^<%)6`2s+*Ovj0+@skj9nQ&= zn1Eyn!?hOF3sLv3>0;M_mR4sCoRkg-BF#Dva2E2L5s2*+rD%p!#t4~W=gE$92a_Zs zZa9PUAN64afrOEkf6Tfm3IM_9(0|Iv)Q`$*F%tLhodN!Svln(AfV6ZH_Jr#EwcY-e zJI5!ozV z8HTB3(HlKg>u6*){b*q#3dG`*R=S3w@W~n*;Qor+-y{_|{xBtAiAF`9UBQu)1+bJw zsALKeAWQuTNMVLGdwK=o1FUVWePi(Dnl`Mv4L6)!I&!j4fi_xTGmx~XAQAV1ZshRA z_a1`8@=1|QvLmv=IUy+%*A5WGvsZ*nXEMP=rB6EVB-)hD|ls@Kj#SIp@p%K zQ#{drg!O6wG0rFxn;SYIJbisS$89q(0E{P?GO}( zvZ)aMR0$`E!E9mGB8IN7`hr4BN~DKRV9%4qSiHD*pZI6{)<|Kg7ol~fC|+AaXAF_o zTOR1|?rVFj&=t|$Q?XFaPg-xE;w>gyd6s?|3Ca+<`CD|b+r@r(<12q{mV?cM9*u05 zG-S_C+6z@e7_Ncmk1Fvw;obb^@V){`cDp6*yKd*pnN2&y#vK_~Cd98-P~u?5lF199 z@aJXs*67`3FLn;HlgoJEt1dOfi$(5}O27&UE@vrgKa3LbJ}LcKbQhwA)u)6yonh+W zn6U|H)E>*diTz3$c$?RexF*c{;zBJSmn0p7f$l91VYnA(gq&X!MqT#2v9Z@3TqQO& z_v3Ep@r>%A3KefYD<_FGVHP6kVXfh7L02is`I}N|^B)}#5`rQ&nEf16m>4pL#l9;lt^vF(UNRM; zV{$O;nJb3ZuiLiFv=!wTv8`9nLy(`#Q67tDlZ0`su!~)0)zd{eFrzJphnH8lA@r^DDyT2_wU(p>^nRF6Uvzto$!xUa-8?1c z^r_lWd%i5pLj(5srZ`E3X6j%J=U=X!TKogXY?(FlO|Nni479?EF1}yuPQ&i?M^`ki zqS)QC_ktE9)X|_~=uUmpoinv|;b#2O{;+M-4nV@a&k3~QA-HSciZ3*1VnHmwJ^f>v z%wpyfg;_#erWK8pay(ltY)t^AbrcqDv~#cw5YT+{uzV8Xy875}9%354upQ)X8~7I> z&ZY*vzj0g%3Rj8+rZJwUn2$hiQI6Rg6rd{?6&H3s>0f`UcA_ZTwXJZ zaPF4QYyeyVZ8wrH(7?g7TGA_(+qVpZu5Azz38kv1u&+DHqA!Zg2#|1fk)&zGa~8?p zc$0nFopXFo|KKTPC~9xN%B;XDm3XPD7yJFx1$iW%mCiKoqYQ34#YxlTgEvFuFCU>L zMJUT*D}4%Z-ViiO%=aFy?7~$VibI>S(WLQaiGHo61kI0 zrE3I&`i+mEB;w`$0oPW>WNf_$Ao2HOz4YMr?mJN55KRrVUf8k_;nZ;3uc~U5X77m_ z7~X!Vv&B`(?{`vr^RkzGEsYVW;n7Y+a)JE+CQ`gPI5C&Cu0%!3+eGUcN$hyDs%zwY zFecYw0%vE5CMh;5a=StdR!WfSv8hI~8Z!jVg@UHt^nosOb^*NE4qxX``#DZv3FoNE zx8ne993~*m7x5hLM17E@qDnM#bTj)m9#`r>9iy#n%uz8kP+xCJ<)Nv<12i@Q3k+E^ zv3phlaDSRplVv+(Q>;Mq%zq&fJA{2-ZX};1s$F!5P0+R0e@pPi^7fz;$2r7BX)iv8 z7?*j4tL9XkZMIkQxA-rkNed$S{2w{2wKS$!PS%!vlg65&g`)lN>Uv^c&05p30}2Em zXw0Bng2OPe965z^rQJocU4!Ma0;Bm4xQu(uOqnc>U@DKi8;uDRi->rD)9mJnX<>s1 z1o*K(Eh~XV*9VkQKE4io6GkieZ@LItJRB55Z)EH{UIKI4q6Si2*CfavSyQ1<@~y`b zi5H!Qtde;cG1`8%K~7w;#~EmCNe=d}T1H?#sze-TiR$c&V0Sig8Knh2ncit&<@~N} zjKIcR{VPtMPMJJkjCas(vg*8`i17I2wvb%` ztBoM};VgIkGqP-yA(yWc!!>r<=ZwVdOMVJ0lw#n;S||3K9Kv0TqKb3fAC}3`=&*Bd zk1Je~ORO#)Q|O$yOVj_Ndln756hw7O|0-&+%VMm02gvmC)jX^%{YRZLsSS;!_Q41d*ZIGxwp{YA zDch?e_L%)dkG%-?+oqy(xcyc)0T5CaHOB^Jd|pHAgom(IS5Rd)g<+;kqO+_r*hv(c zxw$A}Y>b#R^=~5tA5igy0TuzW3S?vx+Ev=M$XpX)hvHvXe9b&jlv+z^$)+WCRnS2S z&nsp=F%>hrK3Js?y+c??thhXWwOnE&lKr}XAAxxy^{yh z%EQ|%32BQOjBn`Jq-Swsrs@<6?os|u5p(AS$rDks%a@umte0NuQ*`u>dxyaP>h1p5 zRNIUlyL#R^|LJc67RXqNMMY%sUL5Z(G8Gu>U+*dc#?x#a3mnB&ei6&k?GA@xhk9au zHo66Ji8$aLp@C?BeQZB@IY2}-Fh&llqDx@sZs@@j=BTL7BT4xRLb$gt(vPSbGH&^} zCI*?1kP@zngkWgk{6eU5Kpz2$TIV6+-$S!eue2R+U-dR@Ij9|$BEGrQH8M6x{()&t zsDIf+d%(m>a-f#IXN*q4Xv2)JUUorIkVp;frp{2@EN^umiTWd4#W#7ibR8hN9bBtr zCd+hNqY6TrqTVe*3@c6h2!q>L!M5O)z3ywO4JC*3P>9^Pgt}i__b69^bgC!tuT3Y% zk8ywPXxeH}MsG30s*_7jI_D1kLA8RWmN@Y`Yl6SuMP#?A7DGRa8LLz?WWc_w8{h+k zIP6T`UTL3f;8C7E7LB`-rWN3Ea{AL4!%ZAt0@#U!JA?HTxJMHU1s2dLTu`Uh&{}K= zVG%wYL_Q-ww?yjI3+O_O5Ifl#M@xg|!_oGE~@{u?cNqeTT(T8bi zN`N8<1QOD75AYk3tec67K=#t#adPZXOgNP0FB?a`v+VHUH`9IWKqyhv$s_5Qkj$&O zY&k$3K`|Z;k5XuP;PZ89Hmv%_ik?$-ozC9&zvE91#YT~Jy0RAhp&1}a&&ekry^nx; zvyRAR)RH97Is#?;Mmxj%eAEft206>r@xD%^;Ts5lepS0cOYZp{KD}Sevlt>-8fS}3 z8Dm%lJh8#6<#V(kI!XgkHhvZK3(sm60|#1sTu+!{)Ug7-wj5CPg&T<(u`-WTS|t+B z%*QU!gVRHU{;iS0DwpcfnyYFNJGDpx{#L>jw{FV8FP73q15J9Fq9 z<+xx!$a`I|EteJ`c!PeF*#H+zb(#~L&dqrgMM-;tV+%4^^fp_^#e+av8hWC*CPdRt zkpBTwLKET#mGWEJILfd~4{|IMu*AhNv~(Bb^=wR=7eyr$r|dimZ@DUA&y`%iK84S* zepF}Vma%l6hfvni{MOIGD`jD4# zn~uQ~4O+a(U5g)~OV$^-(5=yhS5Y~W071W$b#?uwe}I;)bOI{lJ|Ma0OMS}!scG~z z`!lU*=*&o&c0#wnZvx#r491`1C`%b<(3u1e&eET3I38}2K?A28szKWOt0ZjmLQ{B) zXclK*7o8Um;#Os3C-y82>8DB@%oY%#qXx+XORK)c5tmD-PkdE29#PdzF89El_{(4D zwtMX@Y;9I0OLFsPi-26-z}4&=oXmspU(e}e8xP(E@Q*V}I4&$PTm8@%X~z+26;}Hv zk>tRluz5h&>w@+E$*)~Jpy;Dqknt8ok2phXmAVAgGsB`c!KDqgMAFjdSMUQGRaeW z+>+UaEAVoD62}#_Y_W6dryQ+h3Oy9%qShlgMQ%hb>?*WWHw*jKE;k@yVl;4ZX@|eC z&wPegR-oAHEkf*rVU|Ip~H5@%jxd;7igN^dCiipl&j6Qn>ftp zMAEa*3)s+4M8EMsr-uA(`R^eWY9ZgvD_;{<7@uy~ab;F@m)1)ludE zK$GnHU;~0{^t-zO1@t@fIKL?Dh+{%@pP{m1Vac zrzMknNgUL#85c1PvTB!x8?ycN$^^+0P5k6+>~BLO-*@3N_>$O4b2GB5(7j=6D`H#{tQR`l!Bk(=bl;sAoMTd{!AG*E{23c`|=8!tqb%+HfL$1Fn z0zlyz2+KU%?3(!darq%E83LDeoC(ybjs*OZos)w2&Zc)PA+*0KLY_fn+6P&JuLt{L z6Be2C7mz?}T%MoUXwLUmEH&b$0f=Mx{@E}DDtST195$RQLDECgQuHp(lDb2v>hoY& zViD_x?a9mQpVIN^>;urqSllVmp7OR~FRDwE>fMPN*3(Zo)r`NPIFw;m=a5ny1xqBfnOZbkj3T!@sS(-`hW8R zAUQWJ9$#ReB1fbDv$&M^w&dujV@{Y@H-7*!0WgVkZ|8((PUo%AUS`YdZ%ExN$N@Kp zd1ZS{3k(Wr68q0Sks!D-C*i`tul-`@Fp`g3xAs7xR2QR1!Q^`ecB>t@C)FUf;(zVm zzn2V9e_~>1Hi>yXbhehX;<_|uhB^IDzr zz=SqstoqZ1ho60`&!Zkom`N-^MeQWgFMnr+o`_}oQ|K8=A6j@5ecTP#>|qiuja7dV zu+##IqcdfDb+v1xleqOF&Ftrgh{QF!pH(RrXnz+B{3 z9*OmVtqsVu-!E^573C?7QbbF&R#Z7ic0^FaY#0e&z{nNIXtg8M8(M(NWs3u5FFE=8 zbF6xuVpkdLxu4e!n|x~y)3Ve;m?jrRsZmpz-m7I7F~r!S^esnclng*Q+m4zz@~o4d zI7Y#EF#Do2Fm=pYuWFG%i|xUgn0i)mHjMr9j&0siM6H>s`#_K0=k8~kx;RcyboC|L z6;FyaY(je6KRqI*wI$6{YW&U~H>e$Bi?q7kMcyO;h;$JQj|WoXyK?g2*y3HU{bfg+ z^!{PgJgP;SjD>!I>hkHLsU&ns*?V%vI#$X?Po}RQPCg2CQ6Sklm%vrT#3nvE+^Lp>n6*M%&`!JA| z;TIncdiZ9R*qsB$^l^d-1R5PyA1Qvtj<4phO9Cc;*x>^9@Qii*BAP_eS@rh?MW_$)B^0)!Q2 z)LhxrDfdw&`;7JW2R=ODgP|v-{Dcw&@F`CJE+Gup_-SRS1y555@ZQ*6WCQ~Gtk|1q z_ZlM69H=T)BA27pxLGBs3@)Jq%Lg#5G_5tHgdgjr_jTEKWf)RJHC>fC>`JD-6f*Q8 zb4$rD^Prud1Wqbmb#0dk-|MGF>f&IWH^_-_kpA~X^i8IyWfL7Zp4oAf9Sj2v-7euc zW1e7<05v;BQyyWbprEV;L?KSN_;Y|3qwcgsU7YZT!Wl&S34vmknA0-|*L7UyjH0$N z3tv-4oXAjm{;*m4r{MbDYbax#S+5x?GDx9k*Vb0Cq5dh?ChLy-Kv9Nfvg#uTA%>V_ z=bwfU5?@%tQTTH=a+La`W=AjdVz2p1dWhx;FQLi90@W-{;)HO-OaZjgnUX>I%%-TqK%si-xGSeM|qp=R%|pd4>}&H@vL zzFMUrOMHcK#z!4Y1)1tJUrgQc7Nfajy6Xa|k1pxR&QyH`V0s|JcAG+-ieYs*;akLi zdVB}StGJ_aQ=wpX4BA7FssO5OPRA9+cp(v~IDqfI&+N;mYAgajl3a~O{FBImYcah} zwogCZ+(I_5xFw5cGH0mP`oZoN{~UsKj&&T&2-yQNetE%tA%4E?!MJ@vmAH<+uF|4$ z>$zb*1Bf*$1Tiw2a-H$>_^Ol0$X|0F65&8Hf!2=7^$!$Hofz9+sp4{0bV5yyr@-ds zttk+;U>eF%nUH-^=${h2um97W5d}VlIraMDJ7bO63uCu5`f~il=0izzIU-oJ@%6{f z1rNrW;Sc?vjR{g1Lc8gzpWNNYer_EN5!plyV;}cTr*@f=72i_{(~cHPNV(n!!PFnZ z_c&H;yt=id!^#KLAvgE%R771EpWnT=tX=e^a=}G0m)Q;`5(X`uNwV+)76!;iY#Y?8 zOQO`sV;`pXp0geT#JqspxSHz2lU=%+xrQMGtkBYzsJSx0LbBr)K`QTie|fi-C`|cc zw2cJ0vK@NuSH0_FMsCpbhsb>-kZ(Mo7Rc%(QeeW_JdIyjlAidJXjwTV+@yvEh!uf* zsNEU^IFU|as zj#$*cKe77)JK04JfbaLQ?Os$nV9khLJYAixOISPWSY7MGXlAQZ?c@@VGD>GAeky|_ z5#@W5CSf_YS1yW+pmV*|#QrlzhYQG&J+yWUvX%DWh0rJ1=LH}m8mD(0+@T6(!?Ed9Xn*WTjz77i zNNt+3%J&u!mpn&!F%}SfDUkT4E<1hbH&eqAWoCvm+|MX4S;i%kHt6^usyLE34peE z+89B?x)U;0qPVsNg6k9^_votNZp-lkoF)Fb>?xHC(&Ue9eXnFW4jUbv>_#q`FPa;4 z*31X~x`~Y?SaLmhE#?!N524)#%mspA9=2~*s%630+v9CktMa4Ehp2e1kq2(`nOhB%U zr$?qJ?9XONka-sNK?@JNElry%U~$WJR2QgcUp{cFPHeDzM6iuAiJ#bA`=ht-PK^1x ztxfG)9vi*>oAY*>Dx9{uK#EO!wX zqaXOlMBSOddEm{}ITF8cX8!s0pV#~-BPZMmPTSK{g+0a;HcdFYV$BfHly1Y^P`6n1 z+emA8!wnoKa|Rb+W6kEvKplq8e25m>v3_#ex%Im{6M zd&FfP1&i6=e-!dJzDbi$pDr<#%S!prJD95@5JYS|+g{m43sL{NcsSWqHj0cx)N${^ zp&aV2MUwn$^zXrhSBOEFMfz;`JKr3MY z1C=&zUqhAtuHSn4?@&h`${r8ku;NA(1-kA-ge3-;Z4k(t5zh z;*a=PXxvZgg&~?+rlDv#fosj2)5bn$_6_sH3tkHpiP@=0 zl_{;uU4IFu0#-0Upl_26HdZ_?`tw&M;yD$Q%5y0If(pTil*`gboKM(8&=D=vl*QKAA0v#Q0;U_|1t9R6;Yh z>c7j{A)s&`A*Q62DQZPjG1aiP*VDcHcg9)jyA~4oG!iU^TZGvpIGJyR!u|g@orz9% z#~iM0NqEc`za*dns>$o@yFW0TVi8ZmH03apOJG4bFYxYCG@zOd9zRr*Dq6IEr%=Vt zhvvxk7`EDJJOGpt4RlZTCm(w%y|o(~LX@u>gxB;#%(Y(gd3YefdLL_rx6L6E4Gb)tXs z)5;M>xqeh#OEMt6p!1y`?cFpsmU%`=1FAyGF6-O30B{RGgUz8#8`%vmKMK~-a#Y82 zOal{u-eiX=SaP%k`11uBQB(q*;aGqWF9odBE?bmbOMVi^*E?|Qt)|y#^M+8Xy1A$W z{0LW+&oeC)W8)Wy{(7xTipmuVSRu@acjEFfeziCkNw!x^}j-odx0#XS@u0bXx=&Jgp zT8+nILV92iY^{72-n(&fSojKrJzaOV(CqHPlyscxgQ7nrf(;~`OMUAFE`?GPy=UG} zdt+d_s=tQ^SaI}Q0>;Pe3OC5cjQ=pmEJrPR`KK?}bTMP{ewkKM$rQ{kgXq^Bn2yP? zR)09i8CDyj*XGtHUacw2;@o%Td<=_rA!aGR9>$+8zCn33{AdGv$Z+3u7qnMWu`;bnv4q>)+#L$i0eflfEVhs4&dl_O9HfKmA)BQg8 z55FVM4P4dTyD|G!G~kz;hw~gyql!^?Y)OZIO8V-|Soc)4%76Y|4&?=BN*TBf;qn<2 zR%1t@))Z|w`%sb6v&M3V!z34qy_&4X_aX3Dc`G8lk-&Qh=_(iJb?2nfO7V+mR818P zqhdBNQa?CXUTL-L8wUp8Qp)OCnz~VO^(iZIMHi%h3T!gzKCTk;;@D*V{>NDKC+L>v zYtK*{K@r}EI0m-ZHy4-7eAM8e3zrzOocwgU>-a6B18|91$Tn=b$?y+KL4daKYaW5c zAv~lL)*b2wW%fqq5|H3~Ynp3IL#hB|pYq$}-GZu;(TYu_;r+q=52e1zo)q0RZim-G zB?$m=fjAb)LUg=TtC>@NNW`dS0d@Y0&ympbN8b;%VBw8$KhSO%cQ%_YwkASWxyf19 zZlI`pUXJUr&sexU=F+RzUq9!x@b8e;K!;vV>4!Z4l7A7ey6Hm$eT>#Lwag|ZfzO4t z3}tstT>$o0#7NCj+KQ)$Vf11f>0nqmt=BO5j$)Am! z3-}k+9}k(y#KuK@U}k!R{=Z`vVK8=R57UpWMCDNfT9bWBbHNOgpwmCK^=tBRz)UIO z+$nRCrLl!N13r}^%K}H!AHd1S-*5(@SzTBJ)6P^b@>{bHPL`{4-;EL7&U#-BcW9 z{29MVyWVb#nMz-<+asKH`IQTf&MtzU56()0N3!hcA}PKM4!}n3Rd~c*EHi^{YwA00 z3jJ(W+;!Ig<^MH$Ew%Q*SJ6Gn7|t650n!B;?3isNxEbEW6T|NOawGjWp!&cYd={ra zq?dMV@H4=r%(tcqpHC;cKfAH%e`7h z@=2)sI$D$MWEfQAL46WYzC3t{NDh+&3nWV_Khcu|&#A9bGHAka9@LgpCFaH1<;c2D zZ?-XSN}~LbnS>PO!|kH1*erjzPF}4Yr5s#ADM2m(rW&mQIraut5gl(}a(2jVv^K6- zzi}dUE~x@bgfTIS%d*T?uyX8FnaC+7`5wA~5cQPgoR0B)XU?utU5rUt{G-h!?1Ktt zz==;$OOO~13*!ei5}bY&M%!vcDiR83&IkpYOVk$$2bv8{-yRyQo+>SuS<_QslHXV(oAA|~-SOXf)=65DgS`*mdtRkri&YXV zbX?zn)_bue$qJDaxWx1d3 zQJBU&tROan<(|3(MQ&2=Bu)i5Jy5XaRc-M^KbF-}wW1S3?56cBruVBNO0(~Kzp``JPRWth9y?lcgx4LiwN1DT7vUsAuh+B+9R4adn~&*< z@=Z!%J!HTxW4 zcuhij2Q|ZeJ|wql;0bz8IK$Y#aa&B$eeLj{Bh)x-G^ zXsEK-JO$O3dy(%O9emQ6okYJ8tXw@uJ>dBf1NK>uTiqZ;A7%*Q1OxEupm)3VQ@k&3 zl}1pM;h861aR8*FF}Fv@HoNu6xo54B^Iu=!7E85OGus!<_S&#beXq3!#I*B!h3w4Y zhh_Rrnm=5zlM$Zj=qS8FIh=j{lBPf$3;F>84E=cr%+2cVq6Ct4Vsu(Y(;l>Bc>9u2RFxmf^e?6f*&XNDto6T0i`XK@@6R zntgyKR&&W!h)p1z-GqP&Rf2;m5kkqqr2Ty{1PsTBP2w&Ca^cxC=xxh(qo;-6mh;v9=h@LW_RuhfpJIc=cktr+={ zuefwjqeOT@Y*0PQ!A_1dZ?+wG#!Ta3>%4gm$0u-_-)=FUxwOQ7?gbD$;`|RNTNv`n zTl+aie=OY54uS~)6yn$>R-zltr~Fi$SU+wh?0u8<4p zc@G_UGuGljbKh)Yq+7!0FZ+cLjn)J(pP=!U2zrfaoF>SEi?5=KIU@0b>uj{zK9C(L1oDZsg)gND(v16C`rpz@a;r7P zaL>ai1glxyM|PuPUD12pcX&9Uhsv*-v~Yw(O$h4SWNVmkTHs|KYjL{ga0De z8?iU`SI_twuR?nGE2me!;gw_)nQqd|GU4X`41LR-hG|=G3><2S4rjohEiCbg#~U%x zfpJHZk&0qmRC=Qx`kDiCaBkzg{Ns*Li~$c61pR6}qr=+lWN!|{NG-K6gPd$SRZnGI zUT#N9oxxe+*O3;-Vm0Hi$ZMpd?OYKUlcK~WJFHvc3Og?rXG#(tKqV?+*aM#)uo|ZKhlimKXba(*6XH2nj`W{y!VkKcV0y8Fr*wbHqNq~a;7OCI zOl~Hg8u?~BC^Rc@br{?<4dQ%ucr6+O^rDSAow35Q^@+9Ea*A&_0L8$-%QkyyEUGqN zFZcN*R6eroQsXlMmcYn#Q;f z)vz99Z0`4fq4?k6LOuVB%Si;UG* zNGz7W0JQosu!f#`M?{~nh~6uY0(?bzo`x)p^43alT{2AgvzqY5MJU6FC%3k>;zUd$ zx5#BUnib|D>yKt8MuW6kL_E6cA~9%nR~9q`!mS<9M;0t21Q)HLqK@&wjG~_%NlgyP zFyyD#9K5Bgf0S6Cbc8<@=&A(ye~HBdBfJkMwNySvq?vVOG3@ebfdmh zJ+fvTV&gw3cPpy-x2uTW3sp94#2T(Fh4~a&2~DvV?zg^In`Xa7!ww=qBQDndc>UCDg0v2LU%CJ#ul3$O{CdWen4k&d8x_bo( z--{iugBED!11{zXhr@wHT)oH9cRgrFSzCXe81Vva=B9Tw?6NE=?0(;N;`m$?NdnFn ztOqa^gEPYP+K?{H0p-z!v>ePwv;}65`VA=lx9|}vx=nSXN{PauNGx#cMVjL;J1Hx{ zbIZ;xJ}CSLN0>ScwoTOUoX)LLiAUbp8YCeQ1o@NP#xSyE0J-->$J3>;2uT8kiWuXx z{ms@JdYC2wR^sgsnJX>joyJPWsXU6M5aSYJgPX3)r$+LP7Lb8mnqi_Ovsw?)9YIQVSkJ4XKvvOz1 zLcG4S8@l91>&8y4_XFzVT?e)?^Xjy)LTO!}M#4y(^EPhW}>cU4>FYQ%(#I~WNsi=7|1Ey4g$-yM3g zq+^OgCDf$4k>60UTcJzt*~#=4e}liYxWhrmRRP;U@HO#%Dd2bC8GyC?3-@x$Kgc%= zs7g!FOt0!!sQUU_;jLaEIcQ7V}QU=UaBw|;Rcey$uGf0 zdp8Fx?1HX*5ybZ8ZE_>bBA>;rpm@@|V6^!WIG_@alzc3%0GpFpHY=Ev zu?v7Q=Lq9Rb4k_xf0tEaIliceTVGv$^&Tp?hi~~l0`scBBq$*h4eCeQ=mHiSN-wBl zAyTDo4~a(7(XQWjG)*CXD$30R`p90qyDteINh{63xfUZln`d|qk2a#bjEQ%4GbZ|O zA&_#`#KTi`gB?f-*Gwa1YAuPQ5I-eg|Dd-jM%IAp+dUAgSbGt}S)d{Ho@4WnP=oh) zlzfPMcq6odtLd*3Xcxyr#);eu1+9*TR%|3Z3}hJTFtP{mkNKhFcT>tQX);Wl4&Oqh zsNY^bpVbK^(G2c$-zoRO!KYHhY&GGeavSGQM?Ur(3sbM68Iep|z}*;TiWJ^u#?Ai1 zGQG-Te6AStQlEY~$(s9ttG#DW7eViP%f9L;95>A9!IrYg0iCH$lZKjHB35U=YV!Q- zhTfbVWv!v(5$H)XO6)>c9?78$$mTWIVXB)Jhg@0j)t=EbkyWFTLN56Y%b+W&0y5UnC88-E# zc3jfk$lBvi;M7yfxF>|EEI%zL)Qs4-X}|yDEi1ZRSn1?Cv2#Zwm!93HvgXtlo*76> z^WiSzhtS*;nzQh~+1M&yxbq-h<5xHC8cRPj-A8!G=9Rr&AuU)+fG8-D^woQ9W}EaV zMxzzxw6iA)qzQpqGLsA&AaNa=s;2Rf(D-0iFa@NIKdt3)i8TfuH7q$an_d&hVjuQo z8JgTfo)yPu@^sZ6)iv9R(94Q*iVk$|U}8J?#-jFNT~gqg?c)bk`_f_w9foD2{gTCw zzH?R<9xtvt1?))U9aC`G7nNBUv2duLpiy^EoP_?0#LYX8!JY z!Ne$A4IaUnB_Mf?wOWB13H8Rk+3!7Mv45nJ*WbHbxbRN;V@J!apa)2mHgzps&n3Pn z(WeXXWu>9{_AS^v7r1*o=gfi26I9xv@mtS8pZ`Y5xGP?;72l$+eHH z0|~A%SEC=whDUf1eD`Y*qNf8Q3>!M7^SCt$(wGcQ7pJp=;*lsbgu)#TgF^=@!m1-y zstuNH$PQ>tHm^9`!;C$su^yiNTlrU08?96 z`r2%6bVeu3{_!E=;J?$i0rTiXR7<-1&=cdj^&=H$z?>gkdHKIkwaQ`=7Igcnk&RZ> z9{#vSfa&U&FRE?bLGekK2`aaK zJB&JFs=c4h3>y(MzQP2t`UlQ2r3nPnWm~PU$C63WT$*Y*PpMrG9Df#UN~lp-AA~(4 zg*t%V%GFpFyf_u7%lIv5?VA|VlOnwzhckOn?mehE=>}6!+IZ=7ibg=&)Jhp7#)=m2 zp<10rHZ-+f=$Fd)E))ZR^ekat#9D&#N?@sgRRow=Lp(8|25q~tL#qT#>tH!XPUpcP zW!SEKTqL<^3R$Me z9Gs7RBi?CBgk&z{6%_~@hQx0!*<7y^Z!s@x_$~O`z}aylsDQW&za$GNXre6D^ZXv z#+mXNfhR#G{kot`Gu4*Ix-`(mgyN>0ptBB7;3=69ummCK=yxttx;(4%)QXAQd_wIq zCSlGR}U3!r! zpE4OXMgDYjh7H=ZMI4cIy0;IJP}*z1h7^!xiND*+C3Q z+ArAzfv2;N=hGuN3=&Gh1=BT$v|!_BYIPPWbiX zqvNi5FwuM$!euc?ZoN5^jG6p$zl*V=Yh+*1nUYG8WGOEIR7A-LKlS4te>kz>^J9cJ zitI4o-~AcFM79~+aj@&y=PBu&%>>hFoC6TeIw9*ESCKgG4D{Y92=}_?qIm4tOpP2A z7N->t_{KFh<9!>Yv$|boU`E^&k-|42hP=f^>D$LDZ>vb+EAsH>xpo`)A%iQ>jmBK$0+Ox_10niZ}AFPJNY+T?Tnd7^zn^ga+D zhT#{v+0@^*@va>p2UW?nQXD_QFordN)6I@$org903q6E4?F0@0pP;8`KcLd}85ZA; zgFn@KGifb?h8`lhv`H2R@_Mifjd0_Sny;sAOQi`Dl;x=A%HIqj;B9&?(Y=U{olmz4 zAs{ju7Hvr1dTFqy=)$Dm!>RQi9URJcS;ZqHWtPF8aYGxS0$jm;FfZ0L0q^{sTjej~ zlk&A|?o>+WO}sIkU*U|Ky4y#3*Mk;clfkcQgelWOQ3`90HOB9Yy80d;4yqe&2;wBx zHeC*$XGRhbbS6|23lzB4Q5oqzsI00h4puQ7UU-<}_W0=w+EuvKiI_B`m6t$j{YM3V zfT%5BBvMERt5wril+)HoZ&MVOU6QPg?;N)7v~~&yamR7Ux$`@N9qfKbY!#?y#%Iss zt(1f9tEp&1tZe5sKNamP^3N+c`f*-A`w0c)I(7jDU>sPArzfuQ(S15v6M?4QxWjge zY$Y?_L&GVU;0u;i(NR@tjIU+Ju4Sos>w+=y?`rdR$)btD*;TM{THkcG{@$>zzabri z&c4EgeJ&DE|D~-5T0#G$j>}{66X%S8NzKh^6?DIz0(a6i9=gb8yyUp)P#rBwDu94# zka-`C=0#O?7^;2zMqQU*4tyxfgD*tZ*Sk@whJo|FpHrm83eVODjr@8g{mC8D&THZ` zpzeJdxzqb^T-&Ak6E=w20=xCSCGixGubjrqI z{5HCmb2><|L@687Yhe#9X@I-9>pij~u0vDTA)pmyImINP#}_{nwI&Y1XK`4^vQM97 zO!1^zNw6Jg80}Gc21U-y&6wSV{S-jQO4hVYL|?s~H<(Kzixpw(NpvGhoY}|v3-|=4 zd{SPJO-a>a&d{x*N@>Q^8j5ZRK=!0=Ob%#pXKEa@yz6xPh5R_`iN~$t0I5^QCjI2W z+Aw47#3C4SY4gqFgoDX(%LHXCQ-~W=3%bmEE1CVHiW~IrJ;X-N6dCiwaYsYgNz{I~ zE6PLxXm=$9gUlHow978qti1n2p`yq6W!4F~VQkklMeovYD*t11jM|vsO`-AvsWiFe z08dqWOUsC(ka+NU=)}r1%d5(w0~7Yc(()NBRwi|TA{+AftSwK{`Jr{Q680peul|WU8`q&H+{TlanQZ%U<0+f4 zvf7EJ&v({mWMp{+)cyv!^WxQqBzufo?Jt$yiw#T7J{e>VzK3?y_2EVogduazG9KS> z$B7i4RLSLl^aa;4Z+ZC0Se>z)FiVS(`c`h@o3NJG|5@lehXr#*ge5A^t3=GXJf4BxXU|@<1|cBYh+J4_ESO z$XF8?k_FW?5!uHSNJ-Z3fe%7jo@KAG%=R9Gi9i5~3oOy9LVa(MP}QF;Li<^a{mGzH^rx z|L&8ZCpE6&7??q` z))yz<_y}7x(9ShX=0w;ln;+L_ajXBCFK6+D02$4u;bIox=5nhh8I#9M5QPTf?A(R3 z`x}SPR%`8?9AW9#f&3D5p3fK~jdcj%R?cSk9uxR z*|^39yg*u^1&P6e(H6CxXe}Z(ADdT8AGoUS2o62S^e8Z@k728nva_1TJ#HiCGk{+TqFNxO|XNRC+?_AhA+0@S6A@SAQo6H1AEYmiI|zZ2BJ@G)>4H774>XDyVMw}IT}g$~N#f;9 z%TdS_X*E9gqa<;$?^%Zus`B@QIe_Ty4+Xk}$5l#}@G8LB*v=?WCgE9!r-1%8*d!{n z>t9}CZSJDW*Txt6qU}dNPaPp@{ zg*j1KT=jslqg9wNA+?MsLZMko7r zna-+>)-T=66)E9cvR$-6`H4b0u;Aaw9joq(mZ(tuTcQ4yI$QE@KkLyfyKs|?K+zxJ zW5c?9Kz26m zmA!9Yw0hBWF68dj2o_GzouZT6O9YqeI_j4d>_>vPYuYbCe-G#XH{@$bzaHT@mKEms z>>rx{ENIDH@dCszkT+Otf_xNw#1>)gW3h);5|j%(mbwNu25GT)%yu!Jr_=Y;p0MTcg4OcXzW}D7)Z|Rv>)_jQG|% zWZJE1Tq3U^!oK(~b?)DnsEv<6e8xSF-z8A={Qgx2?=vosL(V7bCS^-5CSSam&%NdK zTGbB={J0Onre5~8YYP_ZXl&q^=KHSku8iWW?;~nstu8&WCwWICfy#egn3c7I%ZQt! z&w#;AU*W<4`#vrRit{aQ9&bQH0PDmVdT17T*xz5iz92^ongkD{Cr3fT^_~N#y#4$e zkO9LYvMTBAwI(AI5SoxAtNZL&?$v@}X)?$48^J-E)DU)00;uH&`kFz%Qnu2AO=x(8 zb_VI)Iif@`iXlmTyqdi#Ug-Yj8FzG&%OAZff-`E!0Wzq_L9F9_7Vv5{t!!UVr%)P? zu=x8+KtUlB!QohxuIW)vl<#C$eq%#i%HFS`Q|1sCT60;J30Z!t}-&<3Pf+5?FFMM=mFv!2_26SNEOa+=K7UUAM>AZSLb>PJM2vd<5+UQZJD^jcm#g>oeQkA~7aIqDvh|G^BR+2R zH*pDaBI@~3cfQl~aOs2@`?Oo~bpiL#Lg2ORNYtX9i}vR#hUqq5@dY{(;7r2dz*=e2 zMIP*KEYy>`%FkU*RtJ{PEdD{eT*QseXM?bLL{G`k2~Bc=n%}7XPNl=IO^9ah3@3Yn z$n`eCtiiB;vo}^uDnz?wxBHLY148z^T&nj2K3vDHHj879wL=#OUr(1J^y~kCidDOP z5q$Y)BWE3f3bX~p9HE4175kE3^0*(j6W@B|6HqxP@EdkPMEzJQ)Tt~c7f*0D12J3W zl$=VSLL}#Q*a`~)R}>{c3WH%k-xJ^*&k7kEytvr@30CWn-3+q%8Pe1=M$C6;Yn&9L zrdA2{hHKuwbDd`>B!nmr5U1Gx%8@~?#l#|b1?u)=O|L*Cbiuu2V7>&YFCINsh?`P2 z!p!gfE`c5UtUwOvoKT0p+hsGX2K%u4owDU#DgoJ=I0Wm!3q?DT-i@b7*sjrLbY31d zN;VxZTMgww?oG-h06dP#(LL^D@VX$R6Oy7DeJw=?GV?q*Sr^R_|;!UMx@*LXq3bvTz-sFQEh3Pu56_tZN8rVjx;=Yuc z!FYPl`l8dP|87)yOmA@MJ~>otTPFiI*Qm{Qqv||iF0#FRl$^6E-*FEIz81yfaw27h zVL|vMjwwW$6n;R#>XkXZhC|~PoxWIK490K3;9J&ezm^DN8y^P`cVMKf(jAaUb+J;k z;M!Es(>s?w_LFQm7K=SP&l6L@?1)?IiIj+kAPQt1Ka_i(H-}k8VMxjV3&RCS(MmK1 zHhZ8Q=&#SX;gJ7W!9B6NV?i*mtAq$s#VB=fiNzlgCBF78}MWnsaeTasRM!G!35059f&98}C% z$cP0CX@WX7BL_8l1-lls@b0t#PGd(42?XFLKI< zf!4(h19hz%p+3h)n0D(Ez_N-YZm>tI_ye-&v;L<2hNy?NS$6)Igib~0gPj7}qm+YD8=Pb%{%{S;H*3V>Lfy~7ezesy3 zykwuA!66MT(ZpU(G^<)bZPT=!7T!gb1ml)%2@UEjHE?Ew-U?v6B@l)m;i?s2z^)Gt zR@Y#!m)0!GFzZVTg^m5x4DL#x>Fgnt#lwW2=o^!phTw})CSRVGB`)#MnWh*}0~FlN zNpul+8^%vFo;9#1Is*a+Um=P}`zCyA-_jfXH9!6~6@qky@fXe55&|CQc|!)xQp>_gf5_pGqFBGHyUkSm z^)0R}kR{6$?Eb;%Bu5(5^o+Q8{n`I_zY(J(RZ1%i%SIWjea0G^+ZCY$dncJ{J6lq` zsV@yK<=^cxIMtjNjcPSb>IHr7hhhMw$y_9MD> zUWt*;4BrHgBP=u``1X?$;%5FjZ|-UTY~6G(!J*D+EUXx`^GrwG$7}OYi?RA4c1Ai9 zk9jGnDp!tKfc3<$Qpn0VQZ?zplJO+!-H!uDR>6r3qSV_LnZMb@@V<`o6!6sMa2!JY zU5PCUeFqce!N4jB7DIv5o<2Vhxy3C5bv1|kEpMlJsEPL2Q+jP}B~YN04$zf<5(hZS zXz>P5t98ys?gYPI)O^-w5DZ5CN7#`NGib$sYCb|w}4af`qK$0pQTU}6Qmzx%Yx&Ylh z?|&!ef~oagHq*?s9s`sTLtAbkK|)MJ?L`U9MUE@Cp8yAZ%xvXik`!}qLDu*B_|#~4zFSo^tJW<$s^}V@sT-;3c9Id zd~orjx~}h*o$3k@pdObL`<~?fEwd@lC1L2Pw8zyIM43YmR^O(pDSI&B&6RcsT~2c- zCPlOS-mvFFs=7Z((sqQ6psShWjow-=kzT>_~z4A zNMvif$mV847rmG75HFtt^-y5%qdBW{#T%BFmEHU_cw~FmjZdvFpF`8$7uUvbj$?WzT2<4Ya zut3LVIVfcS&FVZ(dYY4d-sk8!xEWQfr@D4pFa6JAsr&E6d!s2LoniNGyEJbxGDpY$k-LF)$5~iW+twJ=`~WEN${8+=Ytir;t2vv z2Mtmgu$s3i*G!_=t9n~Kach6)azNY(|LY;{2=L`Jd6!^cH#jJrNXQnpiH2boMTob&ZGAY9i6^!%~J+pM!|SO=-M`#@fi@;9Mp8eE;Y% zgI-Cz><*gM!(Hb7yDniMj$A7#UK2ZZ?&(04YLMJIKej}W!;J@fa6x9p-?=?nOB@+~ z-gHUUQh&zY(Y07$G>%)ffO|zO09H8UATmk@L1zeEgWNoUkB1<=?P4T#j~GKDwj3*M zeeb-_W3S<{*cguj;-Uu@$Z-n0pztGiN+)tvg5%aXZ&rl-Qo$sJfD*H@L!9dqCL-=}fk2^+l_lY!q|{ zdq!kxFizvI?nO3~ryq)Mr)1fkKm#JW0-5j{YC&ZmBUx?yN{d@A77~yJE&fZcYTe3p zRP>fka9AtMSN^)X0hQcq*P-y3zA0CELv41Q-BCT&!x+0Qk(NZbRCr3WHAp4#1=P9Y z^r>CSYZPFf_2qGDAgQRpg0}GLKni`nB584FT~^j&#n^`x5j`<}08=QdLmp9osKrcz)@(PjD(t=#Y#$!P% zjc!BkL$>n7RBULu%tv`Hwp=gx*$ognD~+33#7OB;v2vrYZfP4^|KsgJtmh@nB#f7W zGUq~>bLWt&k~N*?nTo?&l%CQJ)yjw5`5z05Zpm$k2EJYr*KW+Z`b7`v;KYoRbRON6 z!ijdgwg7b$SkS{hgvng#t@>0G)9*<{s>bQI62($t+}gn{-A$S8rSk8J%4AJny6u_7 zAKWtMR!4;Bk;a9kVY`U{e|mSCa-pw!JeV+&u+^6l1vu3-9y}qqQXgy5kT^XqZ(c;Tky}ZJWsG{*Dash?A>n_6iFmTD;)B)TQ;YT{j3ISMviE>61@LFxKo?kse?DrQOZ;e90AoN1 zXKCnzkqiTCkDRhGV=tpj2Y|Hd9iva95B(@!Mu1gg3F@YxI6+$k+!u2H4mF}F;E1!l z)T}{%*NcBlsQMfH3dx{NeEXcRyL=ei!Lb-@&+6$c0FhWgWc5ye2nDaUY}6R5v7#_8 z!!jlI0X!P{>%osKc> z^=gWMCC7-_nIrTUPGduZ`=jtG-u>Vr5_YdoVI2c@$4)rmvIU0|i2Y?E^Jdyf#ff&C zBl@+t?`VJ6rbj1&L+lF3kwEzZv$}B^X0%(09l`h-c|{Y;>GVy%+I9DU(W@{7RkBS1 zAj)nmo7glBH`XXeHwLlD{(;oMz{M?EquXCj2}E8aZabT4HcLu=+8j z%jNP8L;LE&QiA>*r5@V*B*i@0zgMXkt~qftOY0z7s#AX^J;dIsO!!CcIHEvuCq>Wk zX4by6g?2uG5b{A2X~*Xl2WXAL+#n_>_-NDfQ0;O^n=7hlcY)@2y8i-c5VSEls z+gZ4^+1I_CM>K78R!rh02ZNY5k$5o%RH!Ss`L@C{#X(@-CcAT(qEyxZ>RRlpm0q)w z{VMj8=ZC56G=_k8F ziF~yUxxG&+HbIom-;g1hE+O2VXXFPU+xk=p1}f-tlQud@**Tah0->vV(;i*{=?5L#gV)X{rsrkV7ZlWppg1O&|y(#UJ4r@dO&5^H$f%C`@#Oi7;+FN?AriTnKupwZQO_S`WQ?yHT?~!LY{ysJ=)2>$323LNNi#noWwU^Z^9W3 z5}M-{#LNJadCGiKsglG+L8BT#jKmd%#JA1!TmSlRcQ;@yZR0M0#{Uix;R|(hyPdBw zjRk8ojsPJ}UNfz>05ghfpIYx*3H_Q5{}uJGgT2B5 zdgaY=EWeh#*TTiqhJAN+!^wf?*mRgjQU*b|~X}fDu)jwPs8w z^YdNY(?FMY0pizWCYfTs+`}7S&2W-O8;lSC1dk+wXXEba18sseBbL2U??{IoJm1D% zo}gxLF(|8%EE?s?&jEo0Y-71KHp3Nd>y0Ow<~g7DJk!Xf+a(WaZ6M>aQTd4$Fskv z(16#XmC^LI`G-q@Vi%10A2x3&lD0+BK4^^L`@SHG6*OJKQy_3?i;*`Dnz-cWVZB(rQY{c+os4rp2S1dnJ>Wr_Go8ucbO?p=$zh;GR7 ze-Y4zGrsr_rp%LU!8i}*^kIiP-;@i2>Q=P@vJR57taGMgL0 zw!#*0(fs0V2Z?=s%7LL`zlge_?l*7>DNT>q6CF^_VOAW7 z%oW@XR2bJoD#H=yD8Xy4d2BaraG4>END-w9#zbTz!C0}Q3#P;y&AQy#&jEuMur4fW zei@GabBwfkpJ3mgp+di6n^wEeV4t{x%^-hmZm+wilAAU3Sj@DFHN`f=+OZ!ic5Fj} zb@CWZXQC!(a0l=U^uiC{-hm?1FcpJq~ zmrS~?a-dte=9J?vmrYZPq}I|zVx1vw_Nn$=)qt6akVSIH487lt^$NlHp@+Qa6@p$i{sS>HK>0z!Dd5ds|=7g_rje>0c`8 z!L4k^45~q5%E1HrkM!QNa2FgDM0}pFhOyD93>)xjH z#GTXzZVX|tRQv)yQy(RwMsT7iM9BrA0&E*isHRU&?d@z$+))5_+sKsk*ih6Op_^Jad;ih4zte^UErHAebeSuQ(P19WI&bUKl7~L-JJi8@J)!59eHtozn9QhyVs) zY;?KwW5sz2Md|i-emk)}EGb7uenY#aw(47fK@qC5{Rq|bq%&22MRV`r$Y{nG_)5zA zrXz~>LG#{ByN-0L6c5gXpUCCdh97PV+I=LM;;qt=q7Q`6GlO}jdO~{Xtum`Lh5{D6oGDF)gw z|Ej|4<^8U**CRe)oUY0Hl@>E?4Nw~#ChFQ&pH5^ETx&lMf|JS9 zlz)X-fxKk&H6n9MY*t8Zcq$f$I{9VrEQPbYRJ^hv>Fjh<=-b)_W0GHl@OOOGi7-iV zwzi5qLy3SQG?!weWi@CfP61Hx6UL>C=DSozp7)D0IKVDshvB82(0+xrE113eWKGti z#=`kPBKQvH`nDabS!Zxf3G5-Sj)!cbtEY6g;T zC<`e6TxtPoJqZy!NOdcI1T`$Qzj+f`3}5cDUfwIw$elQ?E2%}Ig#_}{BE(bx^sNVm zmsFk8|J8@H(3532^n{y`;PrfXWAa^#?=L>ZuLdUUFs!w%^}%|*?in5y20{1|){zRF zQr$po4(y*`%G;%GD%5Z=1n%DTiwpE_Eer0O8@BBeF?y992t1hY6x^FFt>|1|=#W|L zppY_DjW(#`vMpy&6IjAoVf;rC02I^-9FgV=+uR$bPrRYBYE&c=8(P!h=7;;(+9r-> zaY$cjI8FX>GsGoZtoQpBNU+O6Yg$yRhtvm*OyD0|Me@h;WJp;i7+_BZm7tLn_PkdG z_OT~39cY@4Tmz&s)a1)3CzI1aE|q+sqZVAF(_7=oDIB^@j!dTc6r8f=rO+ncz9O&p zg!>BH|9m3!@Yij(W|BCY#t;;b0U;hCMYQ=5lZoPnNi8fX_*6>!72*^g1lgh(DhP?lmd9L-fU1r zi$>Y1)3n5?dcqZvPUuL|#op_>4iXN?cg^@}*WN|TJgw?%g3)L*d`OD<&WnCTFynqN z^vZ#gqA5zKWCnYj6N6k9`$1{4BE4F{`H77~vl9#}t)A?UXxucmj~2hpW~*TQO+Wq{ zad4S5vv;pYaDYww0@F-&C{|ulTY&1gRzUQ> z?#7-6?yPJhTpWHT9q^*jd{pv0Y54P`v4DvPqwQ($tH)oPV>{_35&C2Sx5F{6hi!t{a*s#{qv^YX5><5mv3D>dQ;&JgSbg zPmI;8Yuh2EJwZ(_) z5AZ@MLb#KIUgOZ1$eo!}N=eB@<@`-!%UwwCo^o>p<=2MT!ABPGRBI8b@n#P?C6Bk+ z5fG(pmQI`%g_ICdJ0#jYb`$>qd`1DLp}IXdJuJArka3cno5A`d-Hgp!jrZ$Ud4JQb z3dpUIC})egIDPIOeuzf52j%^GnRspj10mQp#7w|ZBp<~l8@ccb@UN78*b~E8P~ymH z;4eH-9T`soR}^bQF@O!E~ zz*|t96nU~(gvT8iSw0H_J*88A1RTj+Y-*kZoBXE!o7gS@KRM<(80a7-$|exzH*XNGx1A$Wy}c83A(G}Gg=CR| zW!y*g9K!o!fWkMz%hu|X$+>xD)%>pRuW9{>d;IOv6VlCcYF>WRo^yCSUEw!=mCC3g-$Jj}l@ujNW4@&1whfW%Q+7z+Xvz zoDY~8K-R*=nzqM-nb^_LLoa9E9bwp?cdez_+2r`2D5{xx2iYXa#JORZ^Z5{^JNz~d z7>M>_2MLOPcc}ia_wzxm`9DM$k?8TwL5Cm6WmYe4!*HO2R|V4|8_yv-l53x)GHvf$ zb4bCyqf2#_5^khTLZdgO0>v!?Zvu1Td%+Hk6bvNuciQru(F7PU## z6Ba|*9Z_G;BcVXKxNH%uf3x^M2aiev`O#PzvFe%c(apmL>E%B<);1cl+PmJ54!0ed z6PzZr#@C{_ehyf%E%0F9=Ve#V{1)be>#CH}c#xepOFew1eqi7~af`YZD~#3zC%Ymh z|Lfo!Y$|?2D>)Cm_Ha}Lg}jw}nk-QXFm`48lvk$^!J{4aB#z!dk^Qc+VmY4R`(3*I zH-+`hWw5MnWM1ltNu8h7w?nC;|H&1o_xM{Xf#I0k+4JD-ouei_DBEOX5YejkV#@xdph-=6+Hc_ zD1oNZ`fodE>vfO6hUK8=Ds%a=u_%3*b|>doGI#wq<>&3?6 zg@4HwDApE_?UA9TN$$ijJ?_FeRn0oR`|QAE^o-1cY)7=pqFM))7)E9!?L!ivi5Kcd zJ|$%b#7U=07>V_1eDI960{lp}uHw`b(!HBSdIODY12aZ$*f!h}fZE)M8d70?Y{jA> zHLTyXt@EqTck!}v{nu|i@^28K%mt%0*yKs3?hrGSA0Msp0tFuJ{FJ|vw=dEJ@QYg- z>eWh)SA|3{5^owdb((k+>DH#QOB*RKNmdd0Z|BC&Rgx>*u7;5mIAo!=wD-XAZM1MT zidVWNxbYy32pliF)d^54{VAB_yDweuf9Q1(h4h53h})noRgSchctg?5gh^(H7-9)f zwl1nosyB>yE+DUMb3*$0za)D1831Yc?#s+nj^Hzj)Zitu^CrgYZt(T(z#-3da+6vo zvExx&XG1w~2ez=x)(BNmhNo;6Xf!A#=GD|i>@O5w&TLMFp3DN0LFp3Dd8RHFZ`GWV zk)NSnut@J)CUQnabW#XT98}d81R$Qn+^{BapeK#Gqwr&XPA*^H?3Z-EES>JE^Us@B zn<#&ttXx27P%uWz2;YV!{6#Tt{*rT}mybdT0kLt4D#b~pPbtvSRsi-K*$eTNY0I#T z<&<)xSVq_jZe@x~QmAg`7QdMgRQaUQaI755>wdB~FEW3wq(VcKPzM>7M}0P7|p9>LOH~G+s&@G0($M zFRO-ka}S+L`{v%)#aDHh0WZ!h(u(?$N(E*f$sI^#Qth_4tLz>r5`NwjJ4pH3@Q37W zP){HAJ3~PRJc5qRXM6{wNiBP2l*qJVdp0|K7r%}50RKM#z(JTlDmZ!QL!-*@%sir0 zwO0d3!lbWgxD(8TK^#LPsX3OKwRrCx?@k&e=7BK9bjb7lNrs|n*}6|!h^zvziFLlU zN#U0)x6v_2cFHFcFGtzHdk}?klf~~AN8Rz9dJZC|=y+=?0GX(e91W?n3(cp8VfT;e zqZP)08g|tPq_d?|Z!(Ef^-HkOU*5BC#KA%5Pag+>9QDUeo$+=4%r@=k0vukxz4q{@ z?*e=IoZM%@u+#oI5t1yK7F5ZnZfxN!fI(aRp`OyZ1h=aYYTh5KTaQsy4m*me@8P}d zpQ&fV8@yqfnp+~kz*1jbKMF*95oeCFQ@SH+(VU9-Ln;Bywo$(#C4s@qi!nF&9rGyOU6mc!)6i)jNY7TZp6gLWl?yU%-A1+K9Cx{B=L1~?_k zznXp1;6B{`Sj0w{PcLY?Cv+WR9<6Pj|fifdNdC19`+>7Q8F(b@nHCK&>R# zlwF!T2*M4hkAMcT_3Ep{ru7=RS>`|v(-#tgY*rvZVYSsAfDe!83fcK9zD}H$Dn{KC zdeww#0=k+{fW=GHtt)<~-e~_7ZEJ|eAO8NH1>Yk+bFfz~f5MG9z4k8oizY$Nl6UVk zRp5%d{p1h4^X&F=U^{OdEO@*d#Gw`s#uj~_L$0r;LeS1ob2fKNeUzC&XhyUN0t<67*3H>|{8d)b@ISUl~O zlwH>+IsisQd0A`QwMl2A3cpx133_&+myI5{9=uvl<6RT1sJv-3nOg5Y;MLpH+|xAm zJ6#hoteTii0%4-$!moeCCrz=G+D;X-Z}ILn|xD zAeHa~PqC>m^nZwJ;z9Tb zjC_EnN5oM3BSJ)`|U=!CDi!;Aj@fzmrA?N}D?Kf)N1YJzWZ_W)mg{%b153UW^Td{=xHu6L{|$rQu| zyQfQ>Q|YGxLH>Bx$imQ}4cBEhcXk{6Ax1Dv#`KHGq_d9yi%umjDGq>0L)wq$&jHbN zlB%wh;gw{C6$XQCE#mgLm)_Ij2uZOmx?4B9Frru7KQX29h0IbvlCIzp!FImMr{we_ z*o#^B@TCWtKhb#MIdUV8AQcbTQ0m$Uu4GIEo5hoqFx*= zt}mM!CThcWvS-`mmL-kFqy}~p#7Pc)F{R{YCMIcoc?kIVQ`O1&%g6roW#PswE|+Mk zuxz0v$6EghRX6Y1y32>kIui9RGbEmxuFfoLIVthyQ2CI4{D+bbOnW9J2P{$4$I(IO zl_|*@C_sr%#YCVmm8=hxqPQ;o2N8pBzN>a&mK^|-!)&9{j7_5>!>hz#;yjxfp2rfc zP5?%*_{UrCRj-c7Xo0;cHa)F+7&-`LV69uRMSQt%99Qn*`XaqYVl!J5s;x4U`ig3C z-RooR&p9;gf7ae-_ox<-Kt!XQHMh?8hJBNSLR;{S##a=NqwZ80jll~-OhvG4A~Po7 zca!(?6a)%@s^Z&mEs?sj8KtIqFI|02c`t%nx?0DbUV;1IYY4kmTf&_Sb4az@8~`lO zRIa{rvIraMSO}9hdVI7YZw38u+oF8j=ZE?+a=og0Tr3ArodyC68q1+d=e#J>AmY(biTe6m>n6G2vo5wAE zaj((rxSeYz_RE@+s0X~6ASa?3-;Zv zJS~AxG!YO$PDRND>yTZEnVy4|*|OLmsk~RW>)Pe&Pd7nYiM>bl4U3SLB`WND0kg>n z8xt7%`-V!Ge@L!_aD0Vi0JkB(uEt5vYWI*l;1u~gRGOB7$B9A5gpK2l=3}q zGLhWMy0`Sx0hgIEuBA^koW8O0d)XI=#Q?I(%rI_nA2eKy9uDHqXO)3EJU8~y!e27P zo2Nt;%5LQ*w2)bg{LxE*Vk`8aNt=Yn$LKgkx)7^Ja8W?1=%BX??~xvaenXReVBaD# z$hEfT`8mlehBk~EtY0H|a=W3~(3-w1vle8fktyUp_+X4h9;|Gx__&0GeCnqF6=8!j zy41jfbU zsc?+hQJYy2e*$HKoQt4`J)FpB&cdK$z(j$|QvWOO=#)ocxH>$P7rsFytHvel??y}D zb4Gw?yP)A{YO+z^Mv~NYR|8H+u8~8uUTCask*&!|hGN!qJ zA3RyIIM*2H+?#Kl^M&3+kt&Ov`@Lv|%(2)E)W?xE_*O0=|l(G^r)aNXj zVe|(~qv{(N623)~>$(+_=?_;a)4`9js#62R1`c{VdDsyc4q)!Q;tNPa`a)t8eWNy* zbt)Sic|GT5p9|?30B=JHTM+>a=>y_H!&Go35Rf;({i+vVb7BYIrVK~`i(MZ#ene=K zJ|ZZmI6T#IkA+PbZXU)1dGDP+N=mQ`9RaBjGYMm|LYV;IGz>jl1RO#%k1qciA-^#sU!?~JPO)Vr|Cg#IV_1R zu=QBQT?(%t=eR8QBy8pKSoe76nBjheX<-*_L~xI7wwzh!^_tfVU#ySZ50-=`?11PZ z3Uv&NruSZE1j#9}{sQF01?x}CyggJ;GG1IX;>%nHo|xj1kY2Z$24<5cphM9-bsj}% z^`FAYC7s&gmqN#R7d7#GMQ^D5A-sb8b3K@YbX}xU%Yis(@U2x&>}V-Z3(~6dsVYr} z`)q*;YaaQ%(3MdSR(+hOQN}cF6pUJr1>>PUnD+}FZD}j`*}vPsf_jeOaKZY649;bz z$dx;-T*!fPZ-8Da>50}|35dKNAaTU~DIwwX|&&8@IR**jS6@9Fl% z&+d$+oAt(|Wnru=qvXjR`sLFW!&6%kjZz^q?&5`UFcXSAm2~2A=>lxE zfs1m5QDXh=0sFG5K_sCTB4+hEOBW0qaKD4xfN{4sS(QF8P+N1_p=2M(C+dTAOuX4H zPm6NB|LGmK;d{hb36#rpZ)k6^O^={ivX!c$vka5aI?s*krlnln8O*me{S`9G`8N3| zcR&mLJ+1#0QcpSn950^%U!du4yzZoj@@LAXGEkGI@k1}BubzQ7qkvX-* zzb<~q;t<+jVXzs+7GYQ;uj~kQ*F?;!I6E(Skvr30C0Ss<1>V!t|2l=rnd2Bfd`IHto1r$n>p&SMyO_ zUI>kk^8{x{>CQj!W(w>YM$KeHNJByFWYN=eD#>m)=Btz!td=ZRfkY^9iob9`m^>r^ zSA_~XXN!evj0b>U(YqUE)>$ZDHV$sxL<}~ovfZ{uT9UWf+H}p4+SqPG07KqJtaAyD zR-T~0eH31f0{WFh9{%mmZ89>FUyi-x{{WMV_6e33K#oN)G4P<$<^tnL5F8Z%2w+I5 zjU8H^T6iV7;kx(J0gu#sjK;7X$G|+`TrN)yNu4;L_#EYZuK2Z|voO z3Fip&<1r)^_DG3o6eu0itn>^E#lkAC?8$x`NvskN1CpWzI&K%SrXtDDX6I&|Ikk>` z&i>bkhcDnq>r8DHXA7(IcNpjtw}bVq=B8Dkp~AbkP75qwO`h&w@<_3d<}|nK65SzQ z^Bt4;jE%3f^R|jgfz^qd^I-h95cssybl5kLtuS|wthRMEfe)@dVl}2pRG;#D!$c(< zjD6*uXT{SYO7Qs{v$U7Aq?#_2&op?M#%w&4(mh$<^Fb$@Lpzhp{Tu)ZH@XABfq2cN zUN@lJVTG&xPfni6#Ua)+So1SIyI3PNv-yc9qITr$RoZP!fDorb%LLph7B_f6@<~)P zPVzE6F{@%N&lHBtA4*2OckNrB zJ)I?n+R~s6n#&n@zDW;^k4B}hz@24KpWP%KQX$H4E6h~)@Ygxeb2>~GC{J2p)bdu$ zvNW#10`^?5?6GIDb2e#;rWI*K89^7;>wN7&Si)ntvE=K(f^yHFX4yi>E71jSbAkmWWcTYgY%t3-Cp*PwM~{$SwfJKM6P1iWZ6u!SDOReaZ#uDul#?tQeditYU34k!obqO#ij zqkFnXQyO=n+iF@{kn7tZ{yBE6aW?qrQvsToNGi7R$7Y;rupereHeHUdp@6Si@rk*$ zn^lJ_ysVX_SR_N(blU>|G7zf%1HD;JZY=G88ZQ8Ed}I8qP9{~{YakIze~ZH0bB+;B zIlB}D9ra<6AcT>5f>%|7EKktRExx(gh8urcxHJnWqJG8 z_?>gPa`|8d$nbxI>ruyVR~<@H_ug22hkms3A(QJ~G#t+sTq^ANk_>JF4K9Qgo?~h( zYC#ae(Oxx%curBXHYX4WIk=HIthTv{@T-xin?(CQ%(AOYp$h8W=Qr68#<0IimGwZm zS$xbCpC>Dm^n|d+ZwrQquf2s8NV5{_1rbfIlWaNduG$Tr2BEIuG~-vOM^#Q|(>@gb zIEt#fL>9zkV*`c*;_IL-v&~QZOfD0zsio%Dba)0aDs0ffV*747hlMoP++YmP!U6y} zN{IV;JxJpUu4UX`2Ewil8U;mG>k9=DyrUs7#I792FJ4&e35$s-?t2)2xc`9*N{dz; z9?xRY)U=LtN4{AU6O=>H?KKq}3eKo}9Q!B2I*6H061hs%*<|8+(Z)f|9hG!Ah!-rD zRqOPx{SqlRmUD8#kAn#d%qnONXIomGx-`q?Ruvng2d41iu<@-DUuCarub=2Lc#2`v zoBaRCl11&UTvTK;mBQ)M_v*R9*Vyoc(!e-(?5EDI@efj>T$Bs3jACXmJc1aa*Im(G zQWNh`)hmQ9%-ETN^oR?xi!CA`OCUY7Y_dIM^gBXm5aGy+WRqBdJY^3IlhBP_!!pBwDPH-ZqvB zzhldj-9C5S?g4HxP}YUDXk1FPXoMWGmeTHp`yHmlC85V}J2?zQtV;^zE$cdTuDkVS zs5N(@g<4^lEF?F>=7rrV)2+kBud(;qG9o2Eg`nbMg1&_;;dE%>m`b#tSXUd3JCXS$ z1F5MS*l`tHL==^k+Vr{>!10WGd$K+vUY(n6yJS-okun2qk9JUapxcwNu}IUz31N1DFSbjO#Z z%JvKmuCdjIjtz$X7Rhf&xFXG!k^54Ruj7N;(8&$AYG-CVXHO(y6-WlS)e{q~ zY9}KOi;jn>;J>bo3LS*LM~ca@iKpP4%jW0Io4gLE7!JWcg;!jbz)#IyMDjSxf3dk- zkYL`tH6Ym&ii{jS{nK#e0olPq)AXSzfczFep-typUNr&bp?A|}BWmil%E%XSUk>&} zLR&R!Na%8qkmCH#cp$zlkw>m^Rl!c8lrE>;2&ch^vsO&1TR6K^S$t4o?tC6#8Al=L zv0QkA^|-wx>EoP%%*?i4)W=GLnTKs4SnN&A+$dw-nX>n%jo%s)v~n?VHt-c78|Oq$ zIpz1L#P;xzw}EqfBrfYfN=FArpao8qX7LrdH^WYO9(X2)e&dz)=0FP9AWz9k_44aO zNEMh1@RBPugTqj@#Ve4a93$Teztf(a1Mv;N?O_%Rki&h?VtR$Nsy+H|+8=%sd0zD3 zrod5J61WbJsUlj@>8!Y;ll21fBSWBgH*PUpH2EaWQF@6+37V#OOJ`s$9dgCub$&kr zW-(=aCA_EFekSblc#cE829=|MA#YU7+TOA1p)^^M)j_92~{&WYMT+m<1u zH;7zn!DxHniPELhs6!>-AbfwgQ>uqf*@OdQu}-n;;WqeL9+%HaKCp2zx~Zpv%X_zq zj+X6DEJn+aS3?Nvh5Dl5BDi>s>_n({lBS)L_wvzoq|IZQ&|psE;@8Ww1GLum9Jzc} zcjivu{!t9~`z}go)KcQ=yvWuG5siQlgpl|#0!{}te(5Z(ZyI)7f+k-aL8XT%sMbC= z#jPJ>es@2;Z9mP&_^KB?!_$TNgwz)?=ZJr`RCDkYBUSOX(|Ezs{_nNBY_+Q9Q0@t^ zh1%^lBl8qq)Y9m7W)x#9KF>R~qPB$QM6$06$z$%Och7kei<$|$&zb?;2b;~lEO6gS z3v0wT;V0tvx=R(A$QfZ&#jCB0;z=FawBgvI*@i?`Lljz4VP@$4a(nK8U?7elp7BO3 z!(z$rV_BC*G`_?GcM0e;xsEK#CvCz8%#;Nvw>~_-giIQQPQXCOW;{(p32L*48iPY~ zgd#_ia0Yc53fD+v%_C+vQ)@V(SDw-d>?9*AD|N2G;QmP-&+dW6bRARU1+R(uceG$y z92jVKuSepOPDTk%VOS2sWXG%c!k{l%k6l9^C&N5g-_2A#J^}v2;P%8Gfka#n75v!G znuGIvU?Gd>VJ$=i^Iq;%#hJ^UBVM{8ek zn>?3Zi@`9G>&V%~@CwrVSH!ykB~VslL?3GTgSjG2j*|JPU;`mYgsP2L#R%Oe-U&P`{ghZ{l9wV~l?mB;j zNKV&w0BF~Tn90Oj1NgXLYx1V&m+yc{fq-B-!gb1sycioHIzy^Cmc`a>NmyaX7%puo zbAVTT^}0P_h`kyHH0yC9s|E8@3Hl8}_Fr-_p3~40 zFuGvBKYfjB8M?`u*`S~<1`*-Zt$oIWfrDDq4DlS4;hrBjZB)r0R2kKT3}n>CH4W2+ zQXyDQp#pv^nx}nTffi#FD&yud(ID*JpjHA@Es zDlvBzT9sQ~@7TrkGna{cuGL3j+gb*~D-JBz%f)*w1SFH8vOjTXB(m>~!LfCdwDl8w zG9t9KV*^k9H6;*<2o%nCKC$~A)CG`OEVL$PNqR8CP*`zCq2^;+&CDj)_oZaw31F4w zezpf3##Z~UyJ3Ch`iO@LHfJyoN~d?P=Gwl6-U_HqY!>R-yvrl)ruKagEIEBPr2w!G z@G1swa^G~^=s&A+Tml>0IRj?dM3;n}!L-I^+Ur18wd!_unhyztg1) z?Pd?rYzcjQT`NH>y)4;td=L~Cv)R6txsY|sr8>>vXE_1Sh&CZq7K z-Mkl^ztZ4INs~xe62RIEr^GWzt#qZ@^IajC{MhcEF|(@OCdj$en!L<-%j5pGuKtGt z+7kSg?RKgjqL79YHDW&ZnuxeHWvI@lWF>ObpMx7{uo`MC@>RMWm|BprtZbt7v@UgPjpQ~& z7|xP@K>&=-w1jlT9*091dl)wtZ$)v_(hW1YltsM)54S2uiG9bAl$vOu9IvuL7n^|J zjXirVC}sEH+(nUC%sWa_ziPI5bK z7ylT`j|@ND)IzIWUAr`Biwv!L6@|0t@X1oxQ2zu91MuL))fPABaS;4hH4J@ADnwJr z0=EA%I#a+`t%a1(dKVsny`}_?VdGT(`>pl8fMb4(#4HX)2$d}c%om72u-ONT_3 zS)ei=AZMM037Xsvgk)VPjcD)+{*=o`NPP=t^XBn-;Nf`ryUS|II$(gsU(plVsXSS# zH_nP5V;=Bi@p14n%R=&_mz7>~|IJ_oDd%jIShv zt0UKlIY2D2rYRlM$k-lmHGSInOq5%d_sjZl;N??)Z>AEwA+)h*qSpreIh3o{kXf09 z_xaRmn75W_n9;Jg{>qR$N_>%$kz%>!pHE}=|FrK!Zey#*A5j&_B0Xk}5gv=YA(%K4 zV^h8K8OFWsqz6R#(!Pk2HRa+aU`*?L7&me5*tq>h$zRad5HMx#D`tO^hcy@XO&R^S z{y>jvH-Dk@UxpkTBn#@vD!wV=IubR@MFq6j@u9 zteLiJP4`(Ecl1&%hoYAbdw;WNZfccGmM7kBL+3=yZn?5VcFv^^4|SDzn^DUIf^?i& z?O5bOMg~EA7|=ZdaU$LDPNi4@o2^*>_kdnxF|5k+YwT&)sMpIIiL@yA%9Sk!cv&}# z^@Hi1;QIqv!WY8!qsAw>r!%ML$CRK0)w6*FMc>v~c|_ezsKvLr z!AVWSG*c6Vhow8P2Kn~D{m&tjlBfav6^_AN0F^Rp$!C+U;_IK`G=5kkeVN{*b~!a+ zPt$20qsWHAk*^Fu$avPDWx?#8)3WOFob-NfeN{Y6c!*2kwHU$}DL6P#7XkB$dV@bN zE2>zaT04Mdk%CUHx{q(t>dK@l_@vqXlI5>mugfJo|1_>D8XNtPa}V}`gLHw%Kf_hG zY-oc;{;+c6wvL?o6ph=m(s{llaNFHFJ)Y2=>C-(27Kx^R@~9+*B8+#SEO?yf1RjsL z#JNKW2o+xo)w_J8@;4@{tLmvbVPbMu$08{7l`My$P~l?VYzS|%c)y}UB{lm>3je4A&Jiny)nl%sVP6JAn| zN^z-ZKU(%>64y{^@k{HOKpPlSNNrJLy#`gzX+@vFWF8P1I&CC1o@xfY4giTZ?N#UWN)+Q4Q;Cml_ArL*tJC#klRVHsm|z?`TWA)<8?ga3frMMkn4UPMtv2sD_P z_1!iiZ04(1#s4ib%@lRJnQaH0s|8W1O;B#9(<+~BwVm;s1NhbSU~8HjZ+d!Mza>Ix zhXfubb*;RziGD;b{xCs$0HCubgD2ALCX;Q`!@t*&w&RaaALeHNa<1JL`JtmoO zso8+3Ai~}S8DO}o?xn59fwA49$g5(sqpXBu5`*3%EbvvpoBT_WoP)A8q`@UCFD5}Q zC>w1&tEe@Pl;}1BX0p2)0Y^^SVRs`pPiD}ziiKn29HtZ}lg#X#4KtN5U59o90+*qt z#4Z?f8;O7%+Sw7U9pr8+AO(`hY#9(vbbXlT^oKx~Emt`FPnK;X7;Zn-cJId`ioz~? zAn-Vc;!lwqR!By*A5!40S;m*?{M5L-zMzzS4gS`@a<~r=o{5HR9$&~M;J7s}tyOto zgjSRo-kwp_X1Cx9MHO8h(~^4=^w?CA23I_5T@`0cGR^cO4o)|*%AH+dlJHmbFU9!u zbW$?t0SY1CmS@EbDLDr6LTM!?00hC_S-RGs806$ z{ts_2LTN$=LOYcweHwg@u?JdzD)XJ%$N{70K|&;k{={6ax$lAze145T8= zf<2d3@2IW(J-bIzj!Pi%G)vXO=lnp){ieHY3*<5|jmGgZFa}iQM=Up%{P{s81v4=_ z2aMQqF!090ns)J%vTFZFQy9u`sWWzrvM`;gsM-!sE8VQ~rzgdJt$8f}$;q7T)}+V4 zmTxGB(46AdZAUNA%0j3sJ09ayUz7badQ%$fRC){|Wym%f(tNCUn)Q1*A6p7KYMmya zI=2!Qg;sO-|45|8kL>&9R1upG_keds+EglN_m|dy+=Dl9IT*qi#g%^5Xa}yf4&v zo&;Ln*hNOe+!wj>f2eGhGWKM=F2WX?GPV2tEv$nXeN7i6YIUA zn>Jp7B7;AotOBfamCZjV^!z~2)O4ZTaK_@E;wqx?tl7?FJL%6u)RJN}8d2~YNh+^*C8>mA-qJ>M)fQ9#y?PQbpl zZ)RSB*L&B2RRtq7J#mEtP9T6TaZ61{)Y2(jn)@c#Z`kKs)NanE7UI#5tw7-EPBsI1 zvMqLN1I?^uJ3l6I$WF9_AyiU9SkoFkMy57flB4 zWJm0fO3!j6l_yAJFcR-|RSXMLBstvg^Qn8Q07~wErB!C1QOR}}sG>&$l4vq9C1sNiiQn$FpD6-^_~GSBZi`6P zBa=8?+Hngim=i^ca7i9EhqU5mnp;ctx-KWA(6P$no~dT-v{6t*096f2K{-Y#c+$PXRS=D-8|V1v z@63uDydcdZrY=nL`n`RqeSH|PVsifa?gl8DY}t_*#;a$;eV9bUfg~twnD5ig=KIr7 z5C{opV2DP1u9Qi01|1$|NbX!-kId=RjL)kk&=)wcW0+Ve(1HzNpLgZI zwWH9OVDUL4Bt9fQJQa)n|+rk23$+Z^ymp`UH;oNrG3#f8kCyB$z3j;R7&3`LcY_aJJ5~*ej zt=IO&UsHU~z~d(&o2ikqPZJzmi6+!q@G3@{)f`mYsQ|V z9l>D`C}n(}dF_or(~F~>#fZO}63fNjNlWP9QF^j$#KlYxRMSSJ4WHUZ;IdUvarVF|PF@XA zh?kE7VTxrGhnR?r&VOvx`{3#MC(_N4mYA$s9ZysV>fe_hCTPir*c6H&V2bxP?v_;T z9wHHc7?{~BrSb zZbUKoK6JS0#3^PDi>xQ(iygeXYEUYx-Ayg`4UtI3i0EsUD;l(~Z6)D8l=^wQ6VwaX z$4^TdkWt?1)Vk+X;vm1#WiZcjwfQ0pZK94uwua234y8j#(C1s0eN{aO`}MNk1P&4N*>5CRoeU8CE1kJWmjmjjjz(R;~5AG9EZu6 zIAJ56PoDvs$j}~2r$&*(=^o3;`OtI);A;UzOdW|0&0Zb-?x9oip?4CACvYcgEpBlN zcQTzhP{j~QeC&Q~IL;jGZ9&fMl|elw7#L{sE+9*Gy}GVfdIrcOmaM>V0Sn6-Aj@jh zn#(s@kRLC^)RrhWi))cVWzcwo;a9#`1}umZVfkr71)zT?`{kr=GhS}2r(!*kq^;ON*R8o|+GauDVsD}a8yc8JS9rnIIfZ5xRfktFen}-}0R(^Ai=2)ls=5v38n*XysP>j!322>7U?l7tp~={t$%Eh`H5ZOe z7X@|3t6B#FA@mIW^oRZF*SnndN$Hr2f2ScB{T_nM?4^-uGt>DhxFcp`Q<+hL-$-R{ zEjlsiwQLynt4M@5U|Lh&t$C*5t4^~w6y`Va3~Pb|UGPuLtjxR^;K-d#<-tU=yI`p&VSkp7^`* zhGzgdD+*(()Y^HYibLZF@9FfXmaEBtc}ANt(bK6fc_{h-4;hKjYQ z)`abD`t`;c)E025MCiDpa9pHH0gB){PHf&Hrfp&sutpUQZe(xyNmk)Ee9k7RY*8cf z&nlr2N*}4l2^d^=iG*13^O4S;?VZ?;q>8JL;SiO0So>v_t;kMU@T7&R>X2*)WefHPmgcaEe;~V()7UrP36Sk zxUnP-T(q@k;u)N+ko-TESW$KP3J};9i+(qV#=wR$)?K+LtBmg6uOpm8j~0v+I+>G; z`(S-2&#SANbe;#TSu_}7Pq84D1?;u4aq({4PYMicb6@I)lsUa5Y&5g&E!`Dt!GUXc|Xb)3uLXpVmkk~VEvGKqBfv`cVgz%V&K$&5+38y*tcNI5OpT_hK0NOnO z#J)))Xe#RfF8)49#`hv@y+ir4BH^1^G^c@z$p0O{_^NQ;H}0#n0S3e1q9y?c(SbZV zb6CG+a2h+Cvb<&8BtELZ=LNWg|7K_x*@XNm8zmanvL}e1)+h-}kYV&7ZiE(v4 zIg)noh9gt9*l;Ru#0nxHfi3cnx046*1V_Bo+=qK;qTSj&ZkfANGFnZoLe@KVa!0x? zFDP(D9RT{WCB};_iOdesfG6#}okK1;(Bd&sRPbEywtH+gS9VCnLE|P9t0BOdkSDTK zSDE&Zlft@|A%mD{XG=HOwc8lssS3!r&)Yi5L08$NEa*?2zq&TunrQ|UJ?9JsL0<08 z@m#3@OpS0UX(iQq#yb8M@K)2ou4 zInb;FRX{JXC~qbytGsJd+-P;s!gFTsSUAOnY9n->-xFl0)8!Wi+g4-mr)61i4{1WZ za^|Hb&p2Z!;#OO&47X~8Tm@!6rBTg_a;4Aj$s7C0@KrplkYk-(!id3_88In3OT zAii~~_-9v#dr()W?2_pe!!p}a&(FoxFG0oS7l!K$7Q1mN>j^{TAG7@t$oi053={iU zzsTNs*~;LhoM6O)OF9vq4P*@2&y_A3WJS@b)=$jfd$U~AsP8vq@LjhQoZ`U~5edA$ zqQ2EIJnzB5qMx-l3A4B(uf=qGAsQMiHj#@_;2B6^ZNcRtl6n!$j^i#DVNZ^v z3db(6CMCT#-hrzasr)2|%Q4yOe2vh?2$Ghqhum-Rm^3xvt$#WB_H#So7#~u0LhpiZ zKj_JSXC_`ysftPA0{)F2zLP3T3e6EXMYx`jL;}7P3zN=m7 zYkm?ApGZu3a2vhX+LTD(AKu9qdLYCfYy+5Hc=flO6{ll0$M)%A6c0F_{%Ffft2kQ* z?Db&$v5Sz08Do?35tpd+gG+b2RRPmAX^v(=GyXrf|2c$#r?x+yPJP?*2S3-i>%R zWp1l^XW3YY14gNFS)QVvG=*yX^Q@(zw-f494nzJQVS?XvXYB-?hfNA@IO_2GQVaA^ zY13a^!=~*OTw-#H!_>Sxmxj8Eh{*?U));Tf{@7h2#@Z8oRAp zmnj-KNj43oq6&er<+YgX@s%r)8h%Qufgv(jjFO*+9nwz#$`}O!iuF)*1p@d$2G6ir5*hHwC%?LTaZUKnYhO+?aX{ zm`{Qa5je9h3l0~Y)m7FnZ$n;QKY=fvQj{Z-P7&_%BS$~TO09-&Rv8flgrglp zJnRYIR91?0s{D1MmLfO;q9~j;Mt)GG2B0#7EOCdSajwX37s!Eagv(S1a7hj@LGI8y z^^nQFp%h6%8o5S>i$N=WF}0)WwI#IrsUOk^#t^)EVhCp=e)BX7JF54FIU% z4-SVos{rci{~v$jV**-MIV0;au^+<-mKjs&mYPHD90S$y% zA?I-F;6%|hfiHntfIJOkLFj7gJ!UzkhQ|U>sWKUJ(?9CbW_@A9$sn{na&yw~uAZdq@dudDjaElm;0!Go(O742mAQ zrt*@J;5g5Bdicr3W+0Fi^-gO5CeocN2M z)m=ViXp{vB)pOwi6U0+=B5&4{e`r}4uPkGiy=01H$B|EDXhixRmtk05~~pt_#LLMb(r+T{)rR6(*L*G-)sgt+G8_fjNYI zh3Wt+jC)>z%Fj)GewHTC`VB_Rb^)L+*;Cvc<#pu(f5!OiJWPtkW>b=BiDdiB8xPS7 zMy6c!F{EF3zP;G~goJ#l!)-U-X-aY$hb{k`;WoZL?gBow0=s&JOhe-cAvcZp02_uT zQC2sa&d4l#1Ga@6mM7jFi{LQ}*qXZ=?C>+4juf$)cirZIUhc2Xm_IjE-v5F3f=%HnaXx$4VPJ=8&x$agdGUFtey5<76*tL160}iUvRXjz}F8b>%sm{ZZH3T6xL%R;AItvTHgoddRK=b_ce-XlT z!9n)`D95{}QPPYlHVbgJxk~f2_JskgfqKQr9+`<(fo2j#q#=IcF@2{8g_rOug!Fj^ z!szLUOKzqK?MhAK3Xs-yD7QrJmmLX^nJk3zoopr`LaosjywU?S%=>rSj?yr+uXP z($v~%Wu&b}v@l;4825caiGcM<2{8EIUw&E>4>4)=$k775&ds>N2*Za)%p@&}AO5&( zcKJh8RuNBaFzZ34+%$@{*!#KP_cB8xgbOAy@u$VO0Q)tqbkjtPqa^4Tuc|?iikR0% zJ$cs}kdFtq!P=MZ*UD?>0ibW4dA5(KFfF8}Gl{3*g&KYy#tjH!!!N@-m2FX-M^cC{ zp{njnX;OFjE%;VPA)Qlo^Lh6!c|QPJ&t~6s8)TC6kZ^z0OC+pP?qbTDs70JSf8qEn zWYQ%M5#YvRZbrxxeE~um8)Zl!4&4s?=Ersr{_T(Z@|nPdqb?{Avt)~fA9irEIP5oE zq-n_TN8PxeLpz0o$P9^uOygRrStJ89_rVX0xQdU%Ps&^JmcXe-0RKM#z_P;1Uc=!H zienrb%2L}0HrQF)1Hfjl)|ZOp(GQduzP{gtWk0=|Kp-i<1g#^+a^(Yg?G{lA(9Byz zNiv1))qr@z>jMtUt0!UmJ{VUS0>!bC&Wlvo@4!+u`q1q26F&Tb4}CY=3Bd_tILc)x zTXk`d6#@i2kaS&f6kH-xTe&`BJSV5GQ)6FqYMPYKVqvUl+6X`>wHvLG-5F4HwSqg!CU=7H@*-6or}1STfxF{hgy52OVE z@O;zt2`@%8F!8^_pHvE3NH}kB9w2|A>3@TkjhFB>L*ExurlL%_Cf!J;3VT)+7tet0 z;2__1kaAW2HU^#>O@Ht!xtUXU7e!qOyVq|6vXn>#Mx$+k19wRN>7H-#qS zO#nXQ(9NI944!+b&TdIncLx7e53YN@t~RCp>Ops!*6=NAvt!MN6R3NHZ$%ChV+WTk=^o)az%|VLH|YrpuwqGYb*}?aoC7)~va(>W0#=wN zU0YFuuV0nOcM(#*A>=0Qa>$pJf`mF_M8hl!Hs}?Js3nP{pgfdY1zDdYMTtvB|6p*X z!lE4_HD}(sGt;~<2_3^hQ8io{_}k1UAH2Zkr8s#PY5!^0D*a2x--Fs^gm?D!>W#Wf zU}?$)49nFoe|{loz|dXs=6ZBz`ntxO{#Knvwl2Hmmpp8(W22v+39e-U~%6(#O1&kR8TRP2ZqUp==v}w zgmTTDJ_BCU6^pZsdNUA%Rb_UqN7o8?JO+L@C!wT?eLAYMm=-Z{VTC&{JSO?E543b>~I2b^mS zZsq*R%MZOH?x3`$d;C%2G>$ejpro^9+7&=|S(fM-W!=j0tSV_vQ*3<__R%X*owHzi za-Z|#X=GbZobg;~+-S_tR97SZ#lasgK6@S+zuCLqLMNQa_A!8ByE+AMAT1@{x=-@&=%e46j}mL4er8 zAZ+eV#1o_OyGcf&f}itkKKMN*JcDQHIr~ZBIq6gvE->x$V}jO4%ee(!oa_9PdF!kI zJ@+iP>8s4!eYVgUj%$dcV|kC`A(TwZgiQyV+^sOYgn_0%>t5EmN#~8d6!QRutC}oX zd4V5ycGtiDW*ViA7%G~q3QSV)HYu>$#hEPyc3x)Y!V z^-Z5EVv49fn7cHNW2!pde9UV)d{c~`1E0L&-15&L8LlH)j?!MR^?zao zF)wF(=#!k1fkr%)%m#_@+iJWClKzdJnVU0^mB#5aqw;X-z4(YSF%(w_BIjv)VO~-uK zCsgSt*P|I*wn@O?U>cJYj8_KyBu7T_)qq9cEH?=5t$lrSq#*Ggd%l=n=iPHL?3kQR6QL*r z^z-F)HR}e-$i=IpND;#?-KRs$!tIiZL0?lZrKWtnB}UqD-Sb86NdNNXyGM+B3!rvLUjC#eOas9q0970gh2j$Xi5zJxnl-_+)_+tkASDTvD-*Xgr7cG`JA zq@{R7pBHS@RA+gw=TReii<&!01fPGhV@^TyL?FS?v*n2X&4XdLz_Y?L7uvgLp74|> zIjkbQg)@~%oxj3*UW8p`N2%CGp*J~Ln~K^_L%3gPTO9hI3RFW5a3Z| z8)VCeBNYTEk=KY36EPc?IJS*^)Y%%QZ%tRBa>uDIiTvB6hXqMqUHc9wZP`3Qv$+Be zwhoS^A&YZBJ>C@iU&J2V}<=W50jO?uT0A0Toxi-gmHLu4Gd(K-5Qbclr-IJ91Y_7Yp7P~nB zMzdHJnU+6boLzc*d{I_~#$D4mTo;*osZyB5spmx3BVL`EwoOCr|JE1UMeB>;WIObE zWfhGJY-NDNPA9=WhZs-XPMZZ3T%G&_sT58tIev?xG?`&Y>et@CNsP|5Ib8HoV~5yz(1HaaRv3+( z(KIFyLM~A=E5+(5sO)yF&l?brqBEyZ-$j~b6JDD8Ue7^f%!4|Oko59$YS_igO9Jv7 zQB%JgMK~ZBDK6getAnrx6`gj{B^E%gqo`}&iFHBNr%#+%8;I9ybi~Hw%fFIOdv%VG z9sk<_{{Vb}$)S@@)%FZE*XyBxF^;SR1po#hdB9Fq)^ZZTWy3M{@^d$?u8@qy&B!9B&7GYvdU%N@?Ye>G>U)cum}eoU5zXC(<7HI8J^BAvrSvkU~g(ufC^Ab^(z9? z`bj^`SMNP<@YS8`1{D`L^a4~oQ?V&Ekgbm#;+;M6S9AX1mfed;v0LEuZ0exayVujn zN-ajgJ48N>-=I1tKdlO==Gb`bm8+oSxY}F^G z$rf;p+>aOF&tysI#9JD8%3OjGe!g4UbSqVYZvWZP4XXEnw!(_*J(R+kVB6Df5Qp&T zCYe?{rD#-Qiuf?0i&UaBae5>(=zX-7^!0&DXVnEwbDKo`P4}A8{Rr~ORpZG7(F$!h z!4M2giygF!tpwuq$K74S=q2ms20!Y*TkH);vs9B0p z+M%pWWLrzz;Hukq?4+$sxLGs)YxDY_bjC}6vEt90bCQ3k0>4%@s(QC%!N__wcdf9bjI37Oo3hYNE`8yY0 z6P>lFQ0l}nX}PbXsk99q{{{I}n%eBQFty)Zcd~lcKImE7VAN(GWCa2xs>4M-F+^xJ zqN1p-5P0hac~?46fAar#RnD|WED7Y^u6PpPExK~`mexP7R_kAc_}hdBAXcv7f|xUJ zn_A<8gVr$v65cW39DU>#iPBayvMA!TuiUgA?Owcuax4v;Df!?uPRM6~ykf^PZ&L!F z+@lwS0OQm+3_>gLRlYyQvvNl`M}4>yj*W3@go%={t;ahATFm8lJ!XgE2ihGgek3b*oqhd@30+c*>VUJbNF0g+fFmo8oP!{)b z6(Q>7TLzh$Rmc?F%%Jwie$NsMRbv|Wwvba}N9Yr5pkkiaY0N-@wIS?ue2t9P6SkiB zjW7R_W(1eJ7iT*LD#b-1#8CiKHO(d?j{ll@b-l3- zAwXV}B-RR5BRpUZt6W-@Ih&We=@Vs~KXS|?0N?gTdrm-!t_r&Sl=c=9@d0iVFxS74 zkO=?z4FfNB1mmz$t4*`P!;3xal`Cko)6k5yn<|vGy%HD)N-cGy>bXy;17JG{Vgp<)g55;yr-j!HIwl%CQq@`<94<7_ z)T)mn4))q$`({PttBb5KGVo!vMQF29>xg#i*y`Q;gu;1Et~dzjzYAO!Vf(@|wxZM} zfymcg_!$|O`Nn9u>nI}X3|zPz2}wS%C9-C%3W1+3&Bd9ozJ44)i7(_yl&2f$?`%V| zyM^hh#q8eV7jZL4GeH}I@;R#XjM8QJZMxk>*E6gGhxDS0(&S`y;|1MFjlRiyF%NF% zdindPQtQwkgjS$l32saSC#GzcaV|_}NR+mB6Y5X%+>}J<9pED@fvxzDv^dO&F-kJ} z*qlXrgt8sdV z6j(r5oP{jB`l*A{OQx5stXfI}8fD5x%+pl5g;O_CP}}vmv>KLsFM-OGoJ4NtAmA~0 zt2y}FLM0y^V!%psx%59~3VES)^e^QBhps(up({*KPOEpxSj%O%V@XfOLo>6Z5EDR0 z^9}C(6ngh}0=nD&-K|%ukgYHC6uAod0u28Vg$MFEB9KsOs`cds?rNwH#7*xu$f)2e zHyYA{w71vtY=g^+WCZ`iS%?SFC#jaDIPcHF?YY|;+QQcH#r=79)&Zb z^KV8o45g{>!Eb_o06g*x)@~IM*~;NKXHxkXP7vrE{wk-JS=P!4N)FI$JK3@;g#ZCm z_knydWCO5#xgEqyYxJwfXKtS(im)t=?!Ob8CZ_ldX)Ap6+Is)Egj3BvYbhG2HEm&% zL*yOXon4dEEY_$~Cb!>+TI4m~PB;2K1C~g{j_e5~g{OHN52|wu>a$f8qwkkS>PY22 zeP&1!Zn9t_X2baaF^KKM22azFSg)q$z_wLYIq~QjNRW0H3Z4j#2c8^(b{S-@Aj;ZX z2vl-eEwo*F0txUHNGhh-=*hDuv_0f%(!RQdv5L*60Z+^@!rHXq>t`~x4v{5Ma~HDZ zY!&2Gmi5TKeSS|_TKGk`;czfK=7S>Io)R@zIfv73m_g}KiUBZK+N)mj_&3v7s^(}B z8Ln`tG_w8Ykos+Vcqc^;Ab3Bm>eEN{8_CYs8ut4$sz4Gw0FP}cD~5BX%_W54L}Uz~ zsd_}B)$2v!rJ*DbM)=-#shhPJVwT566Ex!MZj_2O$*hUYYC<>qD;ZA*E zD?wtR+&yVlUJ<)-byFGyOaua31;L%UN0AXf5QGk=)VxR@8Y=Ox4nC{h8_*VNkt~IH zOwyl*;%EZ(R5{uJRZESUeHVhNcXIpmIBHL&ZKP0IMeYI&*K@>7OP{O*j@QF5dw{5a zV7apM9x+)Gfy5vkN}cg)F-?6*fH}h8=430f>QV3V;BKCEmR;4^z(4of+SOMss#EdW zn)HfKRjcGX94aW2uqyw+JD`&iJ6Syo>*66kIf0oEs62d1wvcxMBGWn>>l1D?lJ17#eYd34EK+x;_B$8%GO_Jy>hLDM&-Ub}0ZONb}u!h3vXg zS(59If5Ri1@*P`cb7*h8nQEsW`K2{$p%ziI5{V(5X@*c_l%J~{g<*Jvksh*tVv(Y~ zYfoj^6$ry!t*me)wgmQPFI|tZEFukQX*;?)7!Zp}-s^t09LYzFTe9nIG%oyl*kTo75hhy^e9BkkdBKG0n8O4_1K z1agsk-WP_9`71D@1w&LS`?n$+W5)b~&;K_OZfVeaZ2pGambL}d%r=Z8VamM4XQW`N zc~$C*|88Mm+8^L&@+-H{qZ%sKRPRrExx8(PYJPcbZRM7sv_n0RPBi1W5={m>YVVWf zkGM(d%U5FScC|{!kuW}QHi)IR97^}}k;hp%#v`!c+D0%?cW`ulVXvOCN|WoI%Xh?m z$Ah~$@K_M@E1INKd|fj76(BI?*xe#ckD2M0)1O&q8)p;x(8)j+FRLS>o_fr|1&wuM zM9Ir&U@wi=Wg^Q8)bnaX{eu?Wq`F%?1g;FbGR3aCn7>1r?!Ay-ld_SYmzng;+${rj z*QBPMB8L$9k)i52=Wu-?f8zUDi_lJ-U>gC@L8I=OsJCW||JD#o-JTKa* zo*N2m?Z4RWVIEUoIJT=U5}fz5B3C1^ySuP#UWEfL_~0n;!=r38Q2jeVzruROgsDX= zO3kXryt2d|=Us-3=S)QVb10VGD``*6SeF&i!FuOskID|26c2rJ(6J1W3+I3TZ|D-z z@u4EqIN>p39ldV{QAS1OviU_|+F6mqf|U=cGjAl6=eTx^Ci7d?vHB@^j%rH*(dPww zkAK7fP7DC2R+nycIQP8)#6NoWGoVmobSAn}2uUyvtxo-gXI{;{Y%MRWE5@l9H7V8E zq;B@-o69s%wD!E1(2*A1Ghy>e`UtFJ*&|Za6|0@fa0I-WksU0NuT%1B;$_%j-0Ec;m0^u`5>=0XW0{Qu8Gyk;Ret zg`4_Gxt!o6d70mjBIxFlzy=x>=?kFqAQMLuDhq91eqePn-p7cGP_Wp9afAO770)3z zqB&fs016Y3C``_Ryx22W9Q~BHAQ`P~(;AtAQSk;BUV6UP=bc2wi+_WBbOR--<}ri+ zbRRb5nbL8jN+{R-2EP;e63ZAEQva`DXT@%Oq#HRlz2*>OGPD7|CL5&Esl&`SScmgr zEF-71OKX;RJml8CTs2yvb3Cm)k$p&KSa;Lnid0qPGsJQ=)=-mleFETvs48C@y)!q% zfd$EA8=)WSB~FeNgH(yc>^@PCd3VAX%$fpe*)e`iyaBmrD^pWMz2+(Ti&qz4*&qK0tQPX!bng*dEK2IXv%XhOa(D zduz4|Cc-C5Q?bc{0hetevqbMrF9Z!GAzjYbwpSi*vL{roEToJbc-}<%0^-F0|A$O# z5-k5WTfj<`7<@9;Ewxe1Q1J0U%&n-9Qeod)W7{&fwK_7OMyU$GU4_xC$*;-X#z;Oc zhYE(esPw>@kJbmHyV-Ww!s3dABUQRce!g`Fn2v$*;7;nIGb#tIX}q4*0&y@}2bnn# zQ^SMh?7zzUn4Fk^ed+%s1jRYwN{gJ$T`nOS{0Rvg^B~w>KZ!V^u$df7wgZ=0gN`6b zUyz&JSa&15q3ePTd&?o~`RvaQ|CbHMrXFFBF%EXuH9J_C2tdCp+L=`L%Y%p6apl?6 z;=60N2#uSjJ+wGLi0%*|p6?*uKY9Vj1u=vqNu2$rRiKX~=(*2ZDOj~|P8&MN7nao3 zV$mGHcatC$TQW+N=BQqRZ>TsfGcwnAga1@PX}N)%g1X?X21`&&;;my3y4f1cWc#)G zV~#Fi{wFGyz;aL+>mnuui`|Lo**Hjqc^1auk z1xt11P)RY@f{{)c%P@?8TqhpmKaXt7O63-1&%mg(2bU#)?x?@`Qn#Rd>vW}+C zqZN5-D>D!yBfvP8)Faf>x*|W^XOg|lJ7T@UO%)PlU(ibZBIzU&59S*Y8s@UVbyzZ%3b$1Y|B`^{q%wCEOje5yL$>UR zmjVx`fWe9&1bJ@)t`S!*K7rJXj4-Zk)^vc3dg616Kp*z~Bbgi4ZT9Q+sl4NDk;b#p zgwx$Gb6NiJ`7*o(XA5lL@Y}(RcP>k_4al<%TFRj`laL0UQV^X&MR4qNmrdaBQY}?L z&_xI9wb=s&J?2qy;fPdb9}5>dVrP{WNI>af?BT1NaLt>OgAAJo@3E3SUbhFtg08FAJsd4Vwfr3uImHq^#Ipj;=;o9@^KVAVDUHZ31Jl_-dX{MP)k4 zh^T9P&M0<|uVOsbt5b3@3dOZ}#*aBidoKevqXdnl{@%@S$k)l#!BP4n%0?=|Xwm*L zfvr#OE^2y&qob#L7SIk_Qc$O;k6OVX%F^nxus3=2^}X-G-D<9wDXXoIxcQP0{^{c_ zg?bU!&M0`fyYOfkLq3054VV;-!ttL>@e=kJm^x}Pz;Yxm;XsRAygv37 zlpeb_jI#@XXbV_k@_J@Q-uWA-Rc8n8DJPpb@!aKfN??i-yv`O{rkOsHi2RWkW`9j! ze`S!ne88l3%%b07wMV%a4<40tL(YQ_mykie*(y$3edVEDV=O{5Iu}dilx>e+n~Ae+ zZq9aV7f%{TX!3znik|{QbW$@MU>YXErFT;oU3;5mBK5{MC&pD5O!r>Qn|;AcXSMzw zt)>6lMSn~SHf7dbIjQ0>0oiTAK4{Jzp5T#3YhgGSD(&LxBc2m-`6Pzp^lU(9?-io!{8yVawnH`UfC67 zwh>47Rb;*i71mbmFoSw!!@h)8*@0G{7b2IrtaC$P%kdnYfjV-#&2o4^fb$7z(^alA zS>q|H&Z+~K%PcVAr^Thn(3;cdt2_uY&=dkQI1!>To)2D_=;Kmr)lkdREa_RKI5>8f zSY-RL-V1TeS(G_fV;N7_O*%Q^qeOr1^%p9~`q4J3dUphqBxx30a0}dKEQqWpjenu& z!sW|*?V;%sp(VeLCM_d246lD<xi0a%kQvlCEI8)JxT| ze2%2~dMEak)X*{Q&NzkAsM8|O-cu&TT&_2@V4H|3v}J7A@l`U{G9~CvF8#KIdp2DA z;?zjQZvCOnoXm-f8s{3}(SY<}(j_5(6iE}X)7yiQDDwPSt%S{2E^@2v-|;aoKzL!Q zc8mO!Hgf3%!t8{(44)(?vx=};Pn+A#(19<#YQg*I8c23;jfc~?q!WseJIc&SKVeI6 zTAX+VhQgB9rr^RgtaJ@O-(;3CajX)Xz?^~LOIvWOeYho;Rl0q)97UArUqYHJIM#o! z(-)~Uukv#F%}vl76F)RLa7Q!KJwDSGI8Kjlg~5^3aCZeVW!w+fdc)^cVszGI!;~ z8d-~H49-7CoBq?r~F~#?`WU{X_pM-cd`Zeew2j-08-xTLoOhk~I zJ*>(}xt$!)T_xVly0Z06>|fmJ;AMNA5=pd+C9)VPCQ&8$3`u=(2e)`2 zR~I@S^5dl|nxD>52-@DecbF%SR&wg=Fp)^(z!uT9Fe)K2)$GS!GihBR*N5Gzi%r_d z(4}SXr=9j6+jbPC2%RgWFBUyJnlJ_5LWAJT%r@?V)yP~qAQXMxIf08|t9|qL1&d>^ zJ_C&`Prtj2N55+U_!~N<;X@;n;PYW}*dmwR`qs^QM*ut62>r&I3F>JciZyn3_M0I8 zXN82I&4;pG83RL&&@K69oDy?r5kmGKPa5v48$bHz7b^tgBoPjH@MacPAlIxqc4N!{ zmrZuekz|lYVnUj3S-p&;km(3v+d*|LM46A(*1p-q5A zS=aXGlX2ne7s-{(_uG@7P@^}F)-w$yNn5lJyytB!SOhv!Q^lzToWt>W@+g1HRLWA> zgey{lPd8z)gH&Cg(EJeKH@ti@`UT~L3y=VjnxnC9$nojoQL)#tO$BEMadM$o&YhlovrO$e+x-2%v`2=eTeOZ< zk{H1`MRzOF({3#|$JG2a&2%=f))9k-qBtbl7;#`%ANJ>)|9QOz{ ztjj;bIS0C;m9i0bbT~9)H@$YHcnZC+YJyJwFxF}U<;s%f8fbT@)ZLy2HLFS?Ga2Lz z@eygNh61rVX{ucH6}&l$^S`~|lk(QDkX9UBXldyFQN~{BQkV(+0K;LIc`>9SUuH|y zMh(^$yH2veX&$vn<4U)9t;QFOXL;0pqezl8s^^7cmoPS0EZVvz6Tg8=pi4*Gg_~}? z0S+0w-ZUeYZfVk};*}0hOg+->u)4DSnn4H!SXreg#-wa>X{M zUPEMDu_y$p%hu3;?r83*s`h_mq)+9>jJ4T*jR5M<0rV_5!!$0 zFLA>=&;%u;pPKVl1INq48i4|~w0$DxL}sB*{C9&VEP+dkm4?jf+3cKYS0bsbtjBe` zuP!Wy-Lcm=AzHzL{WGVBFMggfla?Dx0%q2y^9oT$6$sD1=zgF#$z>j+6xtZWO4pJ2 zfQ!L2i6QPr+EvRpC!5+TQcUi;omBt-PY-zf7uu4eVnSt8#P;UKCxnblQEE@LoHZZ; zbfKW*$jT_CQ?r?|JW96h5_1m2^|7=W-k)H3n0*xq0tBm%h;D@7C8u`-Y!>?9OStkO0mlzb-S5Hn^_8U0Y3xg%8qmo zw&gC8B5{K1*W~wC+OXIzE~r7thO66Tq7(9q;^Vw5;TX$0KeGc*C;aY;hu7?@P)>=Y zDF4CRHClA-Y0-XKnZ{13Y8Nv9r|@-}hX*ONc!C*2i^H=1-KGy4ZVaLK_UPx@zMrRs zwU$5!LO8Kxm_umU(JnB+k+((7)35Y1fl`yq34nb7nCaLMXL&F{-RJxq+;3IHlumrc zSq$mww^6Q>Ly_Zao6l|iW$_TfR*H=yGKeY%ozqYPpc(Td@)9;ib)!~g1inW%x3 z51QF*c}~siT`OH!ua>((o5}?P0$4#UH)UXJd8N@lW*sfBWFc1f(vGph35}NWWI%zC z$?YptHBE;gOfb1ME^V`~mQ5DZRDX=vPiC^z@Mv!-?2T>?8aK+3H?Sf;Z;0z+@`!oq zE&Tr}JA=}kr}2%P!h-NnlI(=iGO(_Er&esGC9vbz#VJ#wzSqx+IY`+zlt<@>YKuM0 zWFzC_(G5V&^jDsYL(*`A67T0WOCtQr0uqbI24FhyWvg}$p<1RuJ zo5`0}IkgE=cEG1gRuk9AClE_TPHR zM3${enrHstsE9NK5B?Mw;Q%IT9<`EA_>1|A>iGu>yZEp#$Ic9&+;Fy}>&fPYucQ>% z_NO>?5dHDn1Jh2T&q*r^2h&7pL1!Fv@}0b^I$q=rYS*H$RKa||!N<7}Z?h9I?22O1 zGIty>m{MZcY3YtSZXBS~|6TP8?AqH~7WRFnsT5tcqge%aK=ta7!q2XHjVQ9STgo$&ZYgklkcVuQNs4;GmCpsh zBDOY1n^S@pfC)ziZN-4)dQW*cBRv!LajeZeUey$5%dd8Pj>u*W=?H-l4UGuW=x&{i z?L~GbvM0>OldMzUzlo6gQK+2sg+0bz_wJ8a`c(O}H|E`TXAN3(QrY4;K9<5|&qq$T zne!-qg=AXSuW^Z>yz%Nr!oNl@lmq>3tcM~p$%mL5tzo>VRw=83#k2%ciJn3pX~hb< zCk~11h0=51s($3`l6e+1p~T(O`lK9Ybl{(cdlP^1>RX3^&!}GAq}4sHuFBDZFbAe@ zC{xYRU0URPQPFujT}hob8K0M{k{8`q5BYKWbKXAQ1Ed=TTC!q?$9Emt05v<`p2;3- zoYgVUQF_5?8%j~Z>p5b?IYl~JH>VrQ!)!x+<>j<52@p#EfBqhw3SuB5S{$ZwL@rQP zcwQOTgFuc~6Wocq3k2<07{zbe(pNKU5#nGlD2aGtk~)(U3~Y2@#PSWwI1?{cW{Lpi zurbj)gG#wUB+DC1>6Epo78vL$nQs6FhEYl_rB8eM9ErCTsl1`wBAJKdl9*b*pJm0uzH-XiAR?m=>W)5EYzH3crJf zi4NM<6W!JyCH;$aqDq6SRUrBDK)~L(_kJIA$S5qMf1oNRmt4NZ!BM4H_}mA;U$d4p zr?gk%w-O~u?}qYHsrMOnifcjgJt7DU{(Yu3zsV|OlP{1_u{ml2mC~bcFXX- z*$=aZ$XqJir+H{-hLp1WoZchG#>zwb(HWbvC+YWMmk_6>XC_( zQb@dhWO~h0CxQ#llk&O+VDMJAcU6}?AMgKIU>xS$!wt*T>vv`bvot|uWv~4PqFQri z!1iazDf-krI>YP)uta0hM&8;zSEy;Lc9);nSd{ss>~O8BjFYAFDpjJKpQetZZdEik zG9_am0;E9gsU372`@-Hmyj4L_$N+a8b4;2*pOI?aNG&|WDpQ(wrCXDR}?lV&EU&Z9anxCqxD z{GsQ;R!>yu z0(KV~_gS};k>}qp;|onE{3||JzW$ioQGPa z03Nk{KFtv4XSF&Ys>&h3qzy}(e{MyLCg4)Z2+iUQs5O~wTNd)&d%+Wr#V#~!mXS`s zGMXb(cE{|@I#>k!TKi+`Ay!;J|HaJ!bXqHK%V7Qp)x;(2WTrreCNKw+t7|j5y4!S^ zxMsFZYJzpWscpsg9XM|*(AH9;qgNk8A$Hzj(k`iE=pkw!TJjK`jiIc`(5L7HndmQe zg$0F`;GreC$bUU$vsP~RRz<6K8vlu|ke)tn{LME9>d)D42?urauy_KoAP)(hAQyb@ z8olY8ycFy)wZ|I-&(}DRLFqJ*&1n;g1GQ)lyc{FJKqmfaEhR6N#!J}*TaR7^Sg38> zlW&qS=Hnj>*Ry!E=Tx1{u5s^n)2Um78B!HTz?ZxU#`#5KT|S_aU2u2uVst@ftoa3s z`cs8@TMC$g97R39YSfZ*fc9?xHZ_lP>Y**Qj~ARc($+WEx8Z-U|zcXf>lwG+ub zA&UjFj?=wj2gOealaKo5CO0!M^=q|($Ma|2RcqXacjkbtsEbo~kO}UtEqzI>!Ks`v z>p~7<^0H1J#DCy;2Hd*{GTBwIAy$>Rlnv?PXB5G?JEQk)-S>wBhcJx5GvJwU=Z?D5 zUn}Srj`rTEH0D}=xi;mv`*4;}>+ZDsm*-czw@8LMLuHy;H4>Z^Bx~7=bt46y6*}}XMr?cC zW;^A7YmNW1Rd@co*va0pTPG7)09wY!4W7R#BjmVn-%Y~@|3+=sa)n59;x)mpfveC$ zQ{wR34UEuDZahcN@TX4ruFns^GY9?uc(Iyw&9BY8;c7XN48irp;h;-~cB+YvLOe-L zO?bFbKvGmqe%tbr`JMY+$e3=(N+d*$MZ>Whb##apWI&x1nN9H5eDyrV8Q%6!I6WIn zq~p}eRQ6>r{sUuUFc`hl`!qt4Mc}UaviM3rr3Qh`qfgR%7KNskVV<@LOO6^00nf@_ z1{p;ej*ts|=(D{IEhL$i+@!Hx9%BXpf|U-rmdh-L2=&ynfvNRGFVWIqVfh*#1Sj$k zP`EXki)zi46LEE+2G)SZ3j(zG+D{^kRdeSGa;>Sh}Dq$K9?iK;i+0FMHt z$xt`d`mh%4bcW`rFU~qY|b6Ez?%k}sJH{d(8 zoXb2%j}rvUJLt)6NVP}8f2yh({f@;EXz;PitiHS{m4@%s6F^g*a3!^mFeKc69yI1= z7S*F#-ZTiVPzm6^<}H+Cjj(O-A$S@%|H*KyzaBN?O@8kAW>=@SUdTpK{s|_cF^#Pw z6yk~1)}&wifHHuj2TRI#14Reh`6%tj_D#Z-h2iNQ>Qb}5n{C-XykehL?oHLp$KW|&P>Cae z!6wN_SoX{~N%UD#TDa^Z#4Zd@0Pen$$NRsh3fDD(3c1&Lmyrmb?zaFRu$LHzWQ%iR z(gW-PP9VM^B^DfdOXtDVi7t6=foJ_zrM}%o{VL7kUe(bvP?UBfDC0<@e>6pwqX)SF z&r9s!OTut*LZh|-${ml;$5SXSw|4XQVyvRSo$sTFR(@bNX!EfObZ&$(+>)BCSi|Nx zLnh0y@2rZ_Oe0JgB+^C|X4=#@u1&M;q`59$wGUbzw)^WKUD`8m@Mck-D%c~*a#4zX z8u7be7Ve28A|WhwlOt=6Y&69Hz6~98AVi=z+@;J%ZizKh#Fm-<*H!4z)g{fCm+RQ9 zgB0(8q$KHkU|MGPtDIrB*^~lR&wSH?SF70Wwm;C`l5oMPE`h#9o9}cK&{4F%VTJt8 zOP9Cvi2dzpccHX!blhcjQY;&olSvDmcqU{2ES9k_9C(IltGha&wqs{JllnY>;gcb# zG8b(ov0?-oZ2CUD1HsJ%Nd=*Od%IEMxhDmh1z$AmIYy|C;Mah3x`~EUZ#!>TMiSru z{x$~FOW1D@L}5;(_=l`O>YW*52|tQ3O^;f~#K4m>!A!~s2`YyWk83kjE_ zQ1>SD9c*o3!O%fQXN=p|Wsw)B`Zwfi)0Ng7--ftfuX_hGy>effioF{Y)cd4h*sbtW z+G$FkE^}v548*Ca*(Aqsqfzsj6nZ@MoKwq~sw$X`viou#Rd}(mX}&HCgBB2t+f7qS z+|knf{=!1h$gpt(zGaK0P=&;|*hX$NV-0z~`-7>TJ^#%l2ivekW7t4T(g~ZV&i_ z@u`HK1!UkXO?Ky)$n!4JYIHtLzBJ{A0wn;L|Fl&5`*d{0*0x6>a=C5Vp2v^y zIb3Fomoe3Li84}fV&&PJ_)zIoj&g2Z&kslAHuI{wx;7ho@&g;fn33@cM)fY~!}J{%2AC> z&>=R2={Tc#B00F1H-Pi7Kq4J90bo1)x(PF!;hoy9Eu||@L;Y`5ORkAXOrfjox$C=7 zhqTNV&Etbv5W4$jgCoJ+h+x-n^Be`L4s{vcyjO<~LUhv=Uffn}kp=!!FckBGg=~6WaA)^3^lYC&M=Q_pg+SjfmbYu) zoW10*yxd@YH&ZgH5iM-__b`Es$S2w_Q|7Z)uvtR2{Ybuv4IW6C^6%ZMX&f_hu0`wze@({ai;*P7B8Vw)uSK~x|Fj$*H@r_%N1Lb~l zxRB0U6tGl%i=FsgzPh5@=%Naj^a&{mTInz|IbGfwMBfoehO{`L*Px8Lu9%q?%iX<`ldEiGE58+M5yUwuO0x#TzO(RIWjd+rVQQ) zRTUUtrLSjEx=g+nfH#T_x@_20Ze8A3j-oCS_{3^R^nm~sd*#BBTE2K#<{h6Le-fR! z6;rgP`7}9R28hlrrm1@;m!4s63>2y}S0uY_jChlH-!?2u_d;i!dCZncRAq7u_q4Zf zoTL9@7L&%5PdIY88XlIrt`XA9oeaelQE}OC5ev6-_c26*Mb#V-sTp?45fQ1n?0-cO zNKrhJGinN@^ zWh+Wg?KvTr3{5Xc@C$>?`@5T^!u|KYK84t8z`KZQ&pAZVGwO%P}{vS3Ai61}VXTGd7 ze(Qb>%WI0f`Nw^e#wCvmJB+~zqTmgorZ*0&|_o9xS6kA5yNMSF>Ivrt6A zbX*somdmBPHCNEujW7b8t>-RIshtzFe)r_epy$Dc58VMtY=1*23Q}>AHCvGfDD#sS z2FW;dA`Gi=zxlR;dxY+mKXWD+JeSI#DCKbHAVJ;l+BH;KZ-gOk&9w-CW`Y_FFyD@f zJ>mD2N5L2GqPso_(Eu`#Bb`QxBMHPDw1z14k;P5*f#6CmngDUPYM;aPIvnqT(D2GOzHR`AC$i z&5jHqqtlVgo0`5&wa&{32=EIy~QzjU7|j$|HLRR zb=+cK>^>WSd`LEWhs`z}JLN0pLPL>#X@+ZsZ^Dc_hhwbvAVWP(C_BYWf&mPxT4|q| z)_^0!Z$8`rj)_)6aB#KfH~WIa(rME5@oFMXl>~9|#!GvOAzCv=Nd>4m(ppYS z6$7XAJrI5(HI=KbcR^rkV0Ltj!uE#Fef(}U^} z%AKJM836P*q*?)gq^1-)AN;7$O|8ahb&Vyo>dT=wdGeX zlc3Nj76G#1RtaL$j?{_{dwJ8bl&_qwmqkRyzI%oXs4x|KP~V&}$8^B0yTTNBniO$9 z+-J77zq}>= zU_ApSrx9GQYBu`57kZXwt97akB?T$>297VwnU?<0VrxQx?#wBSMz}DYU0d_5ywwA9 zbG~%0nhY>f1sk(b4@~7sOUzGYfL%h+C7lB`)5*uyJ*XQOpBC1T#0o22%9AWCO^IX2 z<@6kw#VXlhxqfklLyKKTi3YmK253bGjwS3H|AMKDG zUwYTCdo9Ye@BVt|X?B#)N@vf+WJ`jm2!=ibjHI)f4?=If#8&rYeZ#rrv)#Hm0RKM# zz=yq)8c1dv?8~-@R3AuRVKf~2Z$0?O{iSA;W1_sjDFgLugDbMnX{G}JrT&-j!}RJ%8vq5GbLvO~uxf9hP7sBcDa*#SV3)X|I?XA*nkB6RoK zwSsFRxk5IKn%skiL*wJJB<{`O(DmdD)@JZe^KUAnf$OprlWCRFbN)E${FHzdPOVyp z97Z)_m2K!^RJo)ic3PV@;{yJRzV0A@Y)x#92qH7P`&jPgOs%i2yX<^x!FuP(r3oG; za_#i`ouD|-o>oMCy$d!EP#Z`J55@ZqZ1Pr5kbpmj_)xFhF2QN?)jn7TA3IJ)a_Va5 ztHMyAe-ZZ=S-xEM(x^ud`;yxh%%Z*_is!Cn6@lEg0PqDfO{dj91TzCk5!{&X8DoA* zXh+0pdqsn}fzU{YMAriUsXdtSZMk*;T6qD5OW=g~`dB#pSd9+Uq@0Q~h`9xi;K@-_ z(?d$(HUu5$h{7^jTJ~ZfNUA6r;~7dr0rB+&+XaGr^INgb-OWyUf4@ppckqCk{e9Y@ zhhF?;N}nU8Q6Iu9-kyR&dqYSy8a(+H0^N*z6{%S)`oQW^*r9itZ2#a+$v`~$+(wC? zK1qiU9=$1q(+KUYI{Wp$gCj=`rl+v0jqSgb-NmFF=AbU)oUUs$)O}VJ-bLb0gaMl~ zL$__Ys@$6!f{O1bdnZ?5i46vO3*n`!YZK`MfA5ZAY>)v2WferW+tT@-0F^v+iwV5q z=(mMfkzD+@slDPvZZkbqnbW9f?1e}5BfbJSZ%*At%A48+b4t#_;g-=>WQ4 z3%8--lsJ+bZGhNS;X@-iVbR2ILz^lfV%pV)MhWPGQIqF!QTXw-``tzqS>d5IjLe^K z6Oy7YKX&uk53HK8`uX^#sjYjeC17E>UG&2{#;A=1fIQB%Z3VPP+N)D?JuH5dN#{Kf z)V^$yZne>GO);lvU!H=52HGK0Sm9vt1rn%iD(>d%DFp)7rIp}~(GP4$NA$jkncd7H z9yw%zZuQezjx&1oDwpGWKSN7cz&H#RC4+ccivzZCK**=J=NDQP%dFGA@Q#!csWM}P zj?UelsQdA?sfi$5)o}Cb$Do_)dbqJFKK7pgZBxXgyuM*mT=^A^`VRyhuRr)ZHGFWqE58lyS^=LKrPL0R zXoBn6Scn(_oG{c0M79fuwa>6Ur3r(o=0(G++Bq$jYzIJ5BSWt{jq7Q>90~mM8HprZ zIwzt|3t)1{oOJB19f|W^*sO|3WV>`|GHgF~O*l}LtP+^JmOBgm{K$9fe2^cLNg>wR z5au=XR#Tl1B7aVEL%c2>j!%r6Jz&OFBfUe&{t^z}?RP*kNSVG5I%p$ej@3deEa*o{ zY2bxoc_LDgK&ezDn(bCV7U`jb zXT<@XDvT(YB!7-{%r8|O0Tc^O;rkr9^ zq572-PY#SyWklJ-q4RP z$s+QI4ZmF#l6%)s)7%Y&D!-`^-Baq9h80oJ{8y`uQsMGG=>L_U zm}&%J)tZECrG!xR{D3~XayV0x=Xezt#3k~FLC6YxiQX?2apvj6uto1=+J87xk#TPQ2;V!&a$uwBE(Sj9EunW-BPx49L! zxP2J3_S)*1FLj{izbQ2>;e|mA)`nfc5aEXegq!>-A;7qx$h~oU;W*?)vEwFP8_e-_ zYgcNPzt&3|AnUu|eGlD71efZ}j5ozltT8=51DMJ$K=3sFZ8F zj}oo*_}$t_{JjHu%ZkKv=9Qr(BUA_yhvS6m6wb{mc=?qn*FpEQsNl?kzSYXPqv1EW zTYpi3PxPQ*VCX$%MZZ|5UWG=1WBlk%7q!c^1p?z&-E^m%uiOKf97F-OkBVz@zrO|z zt(EHFd4Of(N%stxJyh>CoF^#nPlEJxaC@P8S%E7qIMfgCh4m;$$bzR_54U;5eODfm zhtMTH{{+Lab`KV6>~EoRMXV)LM{~V7@bmpoR?)ns6*uWikPR9)&Dd)kSS!!9ZF7vb z6$O28s{E`Sp%w^{?LkTk=4=kAII>C>*)H2$m6Hz)Vq=m`^RhRheB7({4xeRlaWwx? zhX)eVZ%gx{nYTE90y$E{Te-#?!_kSfEAZ8?(jm%YrnBSmKAcq7{1Uqb-CTTqv1HZ! z(s#I$V1`-vV_PbY?h`f4lH;{MzM#&b-moRHdaEQYc_5rTa#^Q zzC|+xOB*$ny>1b*`#{H2u$RtL_p#scy)JQ0luf_=-n_Gj=P8;GA_tMCJh6>u>9<3D-S^y0lWSYt2~Cv$Ot(twSU74 z=}M`9=d*tP)Xu3so2vE5f88L1;4}GryOACOnLI}X2IW{%U;ZA|Y{93f|5L|b=Tj*Z zqI`vIFy}4{=xe2fOHQMI+F&gPKKJ&HpHn_;#JSW@OKvb3(c#ftC?Om>jyo@^{l3nGKPJoJGH)$>_=*kHBK06iWUt zOe7Of6VOrh>j$$raIzIWY70eCOie5Vbz>U9biSXb0=Ft#?#&$zVBl97W(%vxIMn6M z#is8~KhE!p2CgD+n(I?oY|`uT6(~@?5v~MI%d#0-dG*s2jzU7*F5hbq{(BPnW12i> z#Ohb&S5CUv$h^b-<00dKR&Lo_d65yzQ6QhLDE5*;8n&(QcoYqK8kgrQ7M3JeOR8Ge zc4mB9x?4i0^+F6NMS<+Ji==hUaQDYFhFF`MNZcOw=s}HFhbU7;Xi)0?hj`V(B5^XB zaV!$+&VjC{0A<84R!EZRQvV?Qauv@2lK;0A&7g+{v!C+xbo(9J$`G?k|9Kl&;p8$&kq1SAFaAZbdwBWN3u9*tj*DZb!M=pK+U`uV+v)2tW+>xyF!;NYt1l>+`h_5uxSoq;P}4+Nv+@diNc$wnMVIdu zGQ|$QRNDC$g|1nGHD7r0=VmUPfi$TR?k!C_At`>$M~=}a%_d*@IN`X-6Vys%iqa)+ z7W1yoZYf|X4Y144n5}n?LVh@NQwUe%r?|Q#Y~PuUO1{&A&6UQnAsi#(ABYaIC(Go~ z!rpwW#sdJNjdQhd?VZZYPFDu&B!mYAe740R)To&UIZQp9qUDHHBzbnenj#d%yj;yAttSP>y^G8Tbb<+UDOgRY<8dDptl<8qq_ts7YW=>L$ zr^>`KAU;;o-lE{B-T)GRvbd0n)f^cue^=~4E>8<{E99_XMkB%L6^KS4K~L@^$2?f{ zBim^qM<|{Hjb4cPANV8=XlXF1 zE{%g}oEUlx{$uZWrAzGHQ9i4Nx{VdS57SQ6)fTrJ;6lT~;IzWYJ5Qh!4Nx3`N7UgS z%Wv{-ZZC}zL8(?59_=9c%00C#cDv{U#QnpK%<8D4x~0fpqec@cH5C7NXgoYq z9bABxDNo$qn=3v9GZD23zR6kLf}~B670TyY^o)C)b<<`lSZog>H&q*4Be-p`VJPK9 ztuTkucCz9M;{pM;&!fOLbua1McM66YN2-~;U!vySjqc`d05!5;TIHec2RgDEzW%dP z%?Zb(tKE6Ug%`%B?5S$-X@#DGQdWW&Ty#o+i;0^Qzc*Y1ustx;P8@fM)6W-vIDWsp z?#HR~q$zO86(j2?Y=K>S;N#gqciL)kApysm7`$YH&*|U!m-0a=OmPj+hFl1&>&)W6 zMpY1VyL}Uww3IANRgJRjuR{;KxeVWw{6h-1ELRe@guUd$6KTg6Lv9XU-HySfEU z)WVBKm2`d>TF_?gkFoRJIcJyCqT^r3$lQ|CaBLXi|FwYo31oQc62MRrc(<^;dmbdpvYBb zz8aI~za1A7I2_@|YT*MzTL|4Yg;DOQ_tHXi?6HxcF3YnSHGaNA_1wQ^&Q+uFER9DS zDfDDPR_XVv_wR^VrN1IJR2H2Os)eEczs}L%h7HvWx-n@o@MClmy>`~5NnC~G9dtVF zAhHtP{N@xv;%?Dy=$Zq6l)J$VS@nuQ|a>R;my6NnU8YaV2x&>sa?EluWvi141<*{uCQy% z8w5$UPvmm>blk!Ks)BqbCEuHFyl1~LYlp`rm-5-s$I5$Xz-rhD7dKpIb66!QO%_hk z{O1}WKG$evOoBD+Lxm%?uX;CY2^xzJ8Oa&C)My}t59W+E7BIdj^&!)D%HY~JY$zjv z%3}4J(+GDg)0^NW5=Gnc`Cq|G!Eg8eOnBoLL>b#Nl!ug~-dLIFJv88WByM3_ zw|83{_d#+mQ{MqfiH^|on;0iZAk^;T(FhborfPrhoFo{|L1A#(h4TY*tYn!*1?sIB z4$lZ)Ki8o%5P19r4g$p9|=C|hu>J#_Z7}zf$)VnG19l-o* z!h1WyC!2;)hTn)kG>w|s;%5gOl+!k)zjeAi_z-J_s;YI0ot?mXRNbY3=$)xo8*O`n zrIBDEG1qLcNBuH9R_TDjEK|x-Gv1*f%phQmayLOLkVK#&<&$1Bh4uoWvws|&*pOWp zGFA!*6AvFzFr*cmr^2`}@9nTvYVar9g2&O}Zy{4txpLiuzHLyI=yC+V!bJ#E&2)vH z@hpM!RTchIPV>h{5cke1TgTg!GM!X-7@PJu1OXTHgufstXHyRK=xKwEUb3a)&cz3u zc!~0@;L3R@euzrbEZk)I8*MO<4c81h#+~LOImJ)Y+e=kXw6#=5GNm{ESN5A;hBWhg zrlfem2xqKVhOIOA8$uxGbOIAsjbit%CZt2{eO0Jc#aPP&36%Y8s9tas8IhiI>_*+E zEGDy4r{xBPHCR6meZUs>_pMM^DRHsf?o|SrR0C#WsXeAjCum)25a}tA&d2R8zTFy7 z3#FoZoA@h3_hxLi==pE4j(+w(4V-s#J+}9#j>M)nIEvX?q#A;kms~V>A&F)t8W!-Q zKhNmD#Z}_}3LvZ-zR^J}`Uw^B{&3Gvrs`M2;b)b;)A)#;9MC`7pyk4SAV|=L-6o~S z(xuZXvpU8*?#`pYs}PZFO_ClCXHGzxE6TkN2)yORzuW=AI@CC~Gz|Ym?4&PEb8EjS z;W@tCKFbjjWPxP~M1j)@HU5VPm0L|?nM=&ks3d^jH+ zk<8%SpNZ{G$&u-XsOVq-cdj7v1)wO0~JRz@vC$iC*n-?qPEDb z!wUkFglLE`WW#{_S{zV0lc8(fFpVH!hagFyHT@4m{W%qRprd0~u?wKMZt;d0HtYE%K*jOUYq;S#+C*n)6Z;9 z=9f7X7rRBwI(KJaZ266PlsxkVNOJV40U>qmcm) z!Cc*idVW3DXWxu%cvfbPY+EG=Xhr!w5@(Ylmd{X`yGrwaD~_ zTC$PoW53hzeSf7_kr6qgylHAd5{*wC??Jmp|EcXyz4n-vQB)ixMA`m%zhS@*B16(9 zMEOeR0%XQo`d&J0pp;;?k#__ju$R~?7WIh(sg-vp#&iA?$n_Sk238&_{b!eU-0|83 zZ>(){C2o1IW{f~+XywjRBKlOWs3YJIWfm*UU#XAWZAKT|@=z`kXq z$Y{Pz4UqB-{HKm7k@|N`)9qAxK{)c?MVbAP`5Hc-tIgisXImRcsV9w|}VD&!l;^S1h^j z7EmW9N>#IzL;z@P;(MG6oKUD?x;(!6G5()6@-C&yEGH0r|9lY(l)LQiba|n~2tTJ> zTViG;)SxH~ z$5QE)#Sc{N0ST(v4@m!&~Ja4YfgMWKEd?wSz&(!Qb ze+evumFOzZsK7=TM!LDL352tDd-KCK%U#@q zto5nFxHv1Xp*3TRGkSgiF*`Jl*gz^=b)gAlNaYu*!%oUARz$H{^%hD5sB> zyM;MXDwx}qi)-Y5Ywut}!+e}nYs>c;>iibpRZ@~=Y}q+=?eMbOf^$?5)gt(4_b5iT zQ+0cCk%=D$Yf5Ir^sJ}b<(69W8Ob%XweHb(;r68+mG4@3&43pDAr*t`|NOpH8)K~~ z1mV9?ADB#FKYU0Tj)0FWs%FxPm@IzfXkMPo1#vJKK!;{Ef`%6Z+Ma2&`234iG`G{A zN?bAwiEo4izzO3Qz>9z-196?2^(QbdNZ+k*2G6O!J0Cx4iwpTf35iust64y~YqO|j z7P@0~NyY@%L6iI9iNy^LCZ^{&iWWN(K_MmSHhEG3&!hf=gKbfGq#<+3olt|Vw?3(F zNwi%+vW~`<`szoDj#WAtd@11dO{qEw0%-<%`1(i2Ag zWlW*sW%^U%0vp$t?d4^H4P;&;SB75Ow5!>vONM2e2-gSm9}azHtUX*8E<+?kSp-Q@ zt)OoG9VaYMo#V2&W!Vk1F=-Gw_hTNo;o0GW4d7o?ckK*E!wTrkQ zeB4X=z}5+oJ>pr^j}y6ZAObV`|1e0rRxfo89~b&h3dywKe%&;jA}U}hdj90&D0JO2s0EiZwGY`%L>h?XY3 z^;^qeM^B{VFLGt2I1!p1Q&1#0nH*^@P@`jwkg|%cvs$ZuiXD9!IuK%N(igGY0OeL~ z{pk+D;nDj0jN3u2GOVcA-l+_y7tr;~^zo`&pN!)%Z56B!QpII~-EHGGkxY~$S2C+c z8cMJr80;W(>wMSNANXC8xxl@`lk0!A7xFPx83ki2)9mkeLdRm(xPX6SQx#lbx<;En zo-O9m3!r(>Xqq*j{U+uT!5Et&98;J2tjXQ-w!kZ%pR_A6CUv^Byq656TuXzCp95Ee_R_YE`^m*>mInQ5CFT4J7`Pu zaQokRw>|QexneO7)&+4vP?rL=9udj|bW*iZ&Md(hBg`{_6Duh(4I>#etab3t*&d zUFML7U&Nw;Y%@TeXxMItXt`Xx<0OtBFm#ZcKy8zMK-&J~%7m0U%79K~u2-0tEV5&4 zb1b_IF$BEm+~b1$EWftC?B;1@%M`ny_`E^@_o$X45&91&I>+HBFdsvV0V9vEyNpby za;2RN?5*mTHVeJpF$0~bJDjvJ?8CMTmiM3@LBG3WHqL#z))fQ@|P()k*fDeg-%4jkd_}#^+L6v)M zB}ZVs0*4@fb4I%ZW^cGK4gnxdBI$;c{~h(LlJ(fKw8hmAYiC5rf6}lv>HjbeWF$k~ z{uO=zV7zXi>+nfpuy1ZfFQ8q5s{wI|3>!w~|2@(L913)EgM-rBiSQ-KoN?D;HH^8} z%=B-dbW~`PVroG=!#onDgdCMWj#IaF(o_+?9Mi-_DYp zK4ENYQG?%jd^8sl&m^^7dtJ7V;2s1{y4K$dV=kl{`I_|l`dujX<-(aUBjKs?b zOC^*u7!_dMK+rlzl&Al4D)ck5c~i?=Kx_izun;pj6a=HF>FI6!abj{Lq)|rBGE_38 zaqxt$z@hvZjDNyg9xcZGZ=Cu{dDz!+OW}owuni6ueq-Iupp#XNq36l@K&!~!D zQR-0QZzno~KfRygMJPCJ;*e5dIoXx9W`>e&7gersxvN@)Qp(J9^-=ru(&9<_*ht=Z zgmlU-P8Z!BZ)@+r*6yD*hjjv_Y0TEH&wND4iJ5g~LvdJ*ZL?%kWdX zYq-3pnIdRCVJG>c^MI^L?T2bTEaT~Hv-kfxy^f8F+{(;ox~zjjyq}BdZMd8Gx_I?0 z_Tn5?2^1psPuuScSV^4|e}>vlFf%+D5G&`?&s@D=FdLvqjX5%WrfDZza0&1NEd@CS1D%uSW~9WYOG|JknI9c}s;oL#Qu= zq*ekbm9AG<1cf&7xh1gc{iOO9E8|$0RPgiqR|qyM_6EvQds#hUY)4ZMLye^SQ(#C3 zYLvG>+V%1#kG}B$E~3ls5`86#M=Q+AGNi`HO7bdO0OFSl>|h1g=x*W-cWS=Z9o=%b zUx-yq;-Bb1aJ-pougAapIj9@)weT^0te=KX&s+TNXhJ_Yg?`Y7n2XZr(=69;gEzdzvv0N#QZ} zV=PAU-|5O;JSmp+7=VA54TdbDjx~2=4tmm)`f^t}ZxD0()VKgjj2$mD^b%-Q>!rL8 zG|%$;XP$v0`>DO5y@Tndf+GG97+6?A1Zh|aA=yf=KnAXTK|Ridu*gMJ)t)OH_S8f* z@{-Uf`nv}hUT6=RnlB;i8}s*($M9fQZNc5{ls2Qi_}sR0jL8NQ`hCA61XJLf!MQA0 zXF_7cf+AR4Z7MFq;WSQ)?63tUChI=Ua&OhMFs==8hW^i~v&+CiTh9RrmdIQzATkl@D4CnR%KhESqO zNPx#w1q!xI0fyIFq)t(d7Z=2d{Mv%@@uoJyMxJfHKqkGBvmXU zicS7=(>aci*^cu-^V1sb%M2{x@0_Gewu-m7x``A)zQbE4 zf-q=a$z;$RX`mDzqs={O$o-QBRU zjs&;R;Mi8n@bZ2#TH0H?H9<^UNI+qTbE60B6b?-?H)l!|Y}yY@TZ`6%l$?bPoYuX? zm{*cW)&iAm&x3?Su3b#;Ogg(G&))D0jT=C)NO2(P_pSP6nu`iUXqWu5OkBPc;IahjKeD@-4POt%4Xav@PB-J23c}fy&J@Yq zMBCCNcAOPDQn}|99Tn_ttT%bkb5=4Q#i za0vV^=LD<4@bfpn@j@$UP`WOb8TVO-`KaFXrcrhf7OI|JF{rzkQBqq0p}VcOyb5Op zkm!S8S*`SbqaBLj?1nxNw~;O@u(%~HtbFEba+-UvKigp62mg7N21)>N2AS|RN z4+Rq5q>9jAgJwghbG?3KBU#fVM2(%JhWUsfV~YRJ!3X1(+SrS!)}tt%N5O!h3%@@B zc02{@vIueen=BkBo*c3UDW+)mizs*=J1bQDCi3fH0Mr{%G!!96CnHS!xMK$WK=H5D zuT{<94Uq75#HeA;Nc{eUdXX<1E>$cn$KN)+_ZmN(h(wp{ydNPZoCjchte@+$23j+ab0UN%CtR?t~ z5iO^FU%VY_lW4ky>aLif!-=h6I67_`&Rmkh+cldn9$@V_zX#!sq3Y3!W5RgW=fP|FH6BN?ED_Lz##5IoqF)-4(&}NoK&@E7x>w+;Bg3?!&V= zR^qhU1sHnoAJw7ug!pnk)+xDB-~Hy?9g8ZVJmCFypN@7x#9}4WND**k&5r+wltrS} zrf+!zFsEr$*u1e4%0P4!4n87}^FeeK#KHstG@D)(mYeZe@7WqzWJFONz-q``&8mFt zSONjdJm>m=v|_vYkK+)QPO{G@rMY#&(Tg)V3AfFLNv%U$PKL=dai5c7m~_8)Q%7s_ zYF_N*6C-{=1nos<6o{{I!ull8kWG_Fmv>@bNgZuIoq$BC3_}m`(1GvZMv%6sSgdZh@Ol+hwx||b_Ijer)&~Mf-_)s_qb&oA=jP(o-P?42&$`i5u)vYk9a+uaki00 z5X&2`1X|jPawi>_$;Wjl_=)HLR?ZU~28Y5ZvW8N{ntLT_wv6Nxo)Rf)F}z8U5;qW< z7y%oXQQw_9l{(ZnxE?mQjnS(ZkX6$vQ|bj7?mrOmvGy_%%V`LrncJWQvmp}cDDBD< zmQA2?x!nC^@c^TygOc}A{mDLNK!Hn!@}Lm?^!$LRPeuP0?$1# z?kg3q2FUc@9$tnJq{W^pdjy(rgtGDGYg%XHl2WSV{Ur7pM+j2_8X7D`IF-7rLDu1@ zOryBD+pfv4cGXz4C>!AMrAhSaKvS7E(@n5c0rJ>lf!6w7ONZs#r$GUnzT?zg&J(Ll z@vTJTGdfH9UH!h~3j{s58lv;>Lh^xcIIe+JDV|vcqQtt%O#A+eU9xA|0wi6oJlqDBy+oVo7&fM#|=hby6=A`=6hmvxG-{v9JTjuro7B zFid2euihd0fpp@BDo z88?1d>@W12)ur}FQakdi`|Vr*5{}Y1s~Gs@RD!}=8hc6O5?k!h^DPQQh^>rE@$Ghj zZOP0rQoTRRW}y5M(Y{-+a0wB!`8_F(dP^3s6x#)(^P#U_##6QL45E|#-dW79OBNSj zRoDV|#7&>Lws&V=i!;FwSx%z5Lc|%(TbpV&lF{HShTF=tT?Y;q>HIXC3;H-W1s5kx z-Xw!4!PrETKe-i0f@ILDhuOXRCi3#_uKfDQxo(pzQk+;^Ln^ztW@~p1eIHnxa3p*c zV8Xot7J@PlG3)ZTDAL)~+!l74r>0J?j2!=TraV4_+yUQf>7`ErxkLz8Gl6HrDU zTD1d)ebuO-lVQ)j5JFD47Fj}D5dEQw#P(hvuM1`l^XZLztIX8!4_@QflnlC(kXW0d zF|Z&Hj0)WjE&jvmQuFQXQZ}w;u48|uE#3v8>WBJ?3;})XwmAi#;zf`sbRu(o>Ez%= z+AnOB3bixP1fB4zXY`*j@OwxJX9uk-Vrwu#8$(ypkbI*L_E<8!+ZKG*-ksEl#U?rg zRpX;Q8a43XaNVgb;BHqU{J7NV&F~y-#60p>pqYq;&&sr|HTdzUfXxko(VB zP5aLhMWC3DNa$)2_Feo6k2}S0_e@~-9~rkr#8v-2<}r}M&|8pGZ*tU;qVb7bfzV*{ zmlYmjK1ePtsccltYqZm_} zBgaJy*lm^`HInYT-;lZ$`o+mG!T!BPa@`bP=b#zZ!s^TkJNwV9tR)QLw}UW%6?j3~s#BG_73Q{%W>lI24=9Sv=N5%_y0AqSw!l#apVDsVBLsH#B>Wz`TaD?c+t|3{ zN`=|tiU)8_B+jMaKAM;1p4iw`GGs9)-#(Q^T__}x)p0)y?$P8s3QhlUO&5Rmtrcj6_;pf%1t^8j;JD%5o%9a9EFPBn!xb_ic zhxCIqBa(!7wx+I2utOr2Z07Pxe%iR@d|TFJ&WIOF?nE9JsbJz^%(V%e`-zn)=r<1} zLl-;V)>+hhyrY&HZKgU6bCs58|HtmPm>Y?h&CgOyH&psRtw6#jC7p+d8sk~`JT0lS z=-Wl13)@xIk_O6OC3Lqd@-hC~Q!t&N&ttaP$Y*R-dXT(3e0T8jTnuG4Rtg@jG1~+3 zLFUA;SEJJSq@pu%o`dxZTN`vt=e9n;F?Zwi8+_8rIrSxu-km5_eoiL(aqpTxtgKIZ zexpFV2G3m7^|tjAR1Tt-!31(ETs@?wMmenT7g}=9YmEhvK?J-Yd$s5aPlt#WjR@No zL4MHUDin(UOe(4)iBS`3d}$$IYcFIU93~gH)uwt6JS^ZND{o=+6AN8fc=c*QuZ1HU zs9_cB$3S9^+O%TYDTs5N`97ZJx2`z9Q_|&iN*WjKOY6&dfPQo~KAA)XCZ}%z-s%jj z_!OQHQFzE=)mal%V$M5{RLpGblalF`F9;^c*@2za+w!O&Rjc2Bt#2Ui*C$g;gBKnn z@#CDk4cPF5+a*McAaJJH({{yRPK1cNv6VUCgr4C~)*d-A_jl^2rMwGJ6kz+m60=1DDrTs$e4a z@-=OTqk}-LVnLAzU&pd4u#F1B;)Sa$!qV10*~>#dbe+1_C_W%*%xi;TztKO{nq`-#_ucnV|`I>LO>8EKV@UnzpalJC5bxRiKEsTQYeTxgJ z2qO?SQDM8QCef#ENqx7=@O>i^#L#s7>Q{+w1YgIRywuL}0$K(|iMmvr5lHp%5b*~S z1Xrv%KC?}*=mdSnG~KS~OP82$34|nAneke1P02_GJ)mA5$Ec*w#h{A+~*YI=#us;AM`ZmCPU%gyg|R z1sT4-|Dp>mQk~9r`*3Ps=@4r(sg)&Kn7%27bv&Ap-BeSwTu)s5g3oKU5%5z4Ji(~f zTfzop%*FVcDh3fRM;Jx>8FggRZW{w!<>*F9UclZ1kNJX0 zP)k7Vncl}OM}CM3udF?cy3$Ya!+Sfl0cwp`B`U$m;q=ayWlnU8#`Xlx`oTVv6j|Sh z_B*0+Kb#uj4;4km#g*QHy|;XzD6PlTndT zjrP5Dv>I7fQm&Cg+nM66Aj=TPc{wLr04Y+^EHYp|)xV9Hon}Q3o-MZf-RSHUW?Cwo z8vd#S3B%heYSRp3S+u+@wDmJF^L~se+4sk95pCM}>p7*#bZB%4Qw0$+D?&U>OzKFM zCDtli@il;fS-2mZHo=^nhoE57xOYKQQ6r+wJ4nR863U4;;D4--By32@J0bSnMbuO; zPKME#xbzPeZYYAEz;3; z>o<$2SY~qvE=Yjhe#>YnX7Uf~AH}qMg&!;!sI-Z6>UuFCu8Kqp)%qvH7m{L|Sk`xn zKp7cnxJhM@9(l=k7v#>bKtNaNk2k8KvQHb+rG690tyP*K>_=fQQx_;X2>fATAZ~M- zV-OP2Th=y%;G^@HK2xNHLRjhsUR@hVxEx;{q0Jf@waGDh)v|uXM&h59e2ptk*R2wA zsg!Z?)qyb69YvVrySBm2dl{*F=4L!m+rGsm=cmK_>c$1`FV@=dYuDmVlUjw+Pevl* zW=5Rb#|BcABMt&pM;!GGKOo906%Qp!II?bcpP%H0ZT6^z^BOQ4#11G$xKv?*83?}@ zk<6I35kXIwy^&8pr*WW(25QLZk26Bbtj(7EPo0-=qZe8eGS%25+)k)d(|?JCFH)rI zw&@>()BDlGD)n#)0a)7dkr6G3RH)PN?c4lVBhNXclf+8}lj93?%iC(A2c!2!^?eI2 zEFo&Q@V)2(3^Zg$_8!MnI@LbwHYmTwBp9)h6OMtE@dVx`%eRh6%40d4MCv5;doT@( zJ|9b~VbDd+e3-$12{>WyKo#K2nnD370L5KH@V0F3Uu~WC@{J!*mJ}N?ohcku0rzT1 zhmh(5j{xt?$Rn+6+}cmchsZgSs?LVm24DI%Ny&$i#TH9ad>g4O6cUXfi3;6dAlaW9 z)2P~a(CW>v<#fK2c+pkxpZo4OGQynAci?}wY2zb_!F}<0Q=u+`Vmf?)-=Bxb)_blJ zp0SV{8l2gM+t&b>q+k0(MMn)Ty;nGcBmC|Du1HUN)5qNuxraN(7D<8}ww0HaY2*2{ zYS=Q9(J;)^c&68eX@}$wIwhZI;7(c4nyJk;6QzoUR48 zGYM1KY=89G`EXFh-QHW!j~l&)-v>G-Clm9yXnlJN7$;XQs%_RHg8XroVTpSc3|U)bDqn4IO9ZaXBZVylc0T~kcths z)ltYls5lhVLFD~B;-xOl-@(OtX2)+qbpXCT7a$J0A3UX1L&+*~;7yCmjh4x5P>apg%WMmf*3EGhw|I9AQ4ge+a0@kcCQ}sdM)dW$Cq(PMyiZXhV$S&o6Y26D#qat9odm9hzct}A_E*5PI!IoBjcxCbY~$Qq9-d^C|Jh%9C!kX z0IE33mD9J;$q6SQoIgQ3Cgf)$+W&PQ&F`AAAZJ+r7pi9`O1WFGojp*%o1TKV>p9R} z^+`Y6*T9;l@lT-=wQPV$5H&NDwUp`6RNE$s;G^~In@YG`UEcoSXzvv;;H)`RM&^jm zz&yrBdc$`NJuk8yd0jyb-Ap=PS)&}!Cq+|yQ7K`=PZ3bYb78?VZPfLBSZh)Pg7@>f z<)y)X0X7WD^B9kl9*_cED#@71o$2lvvr~m)bP*)DV%#d8Zj)?4(^jO!A*w=uH=7u2v0K;2boU%&K#$)xwv=5CTWm{uLJU+nYs50tgeIzOASX_ zl*pCg1^>3yE~6V21WO)DFcufI!B?k@A{BlBUSkMmD!to<^^Hdfhlez3u7s1wP}fBA zIjqjYCo2H)MBv5GQ|@ZmF)AU2$)}@K^XbHK+yCx!w%rP^lpj3#bUkqpg_y)H2CY|{ zrWYKPQJ@m=cy^Vbp_$K=XLgKV^$ol#72`P#XKbQvS<|m`pg_jbffcXS@YM@PnbrVu z**`Ss?5^1Nw3NSIY!yoj5UpX!e$MfT=-O8~W?6|6&#hT^u07a+e*FWy6ynN2(4rh)M z%gq0X?(a%~s=(P(ZDFWUcgP+(R?+WNQzOkberVc4A$2K2AVT15lMxcW!7Xb}sMcyk zTo5vVB}DRhF}y0AT>}ee+fySYqFdKnUtIFkEbA6x=A8Lr$gMrrbkP48wB_T92IE`h z04-OeSeh_PyVi?wPJxDnh4(o-u`5l;%s{eSHgS3OXYff3uAQ&)^`UGXDws@L!=092k3rDGmNz$O&gjzRo|HcKMIPK$n~9{<1Zc8@`1^jRy(6+RNFx#==uojG%^`0EqbZ~KKi|vvW^e?2x zs@Jo84rqKTmGFS5(Xzr>s@W4`U2B|{)aP!8{J=V@CDuarju)PeqB!;mHagF`DT@+h z_Q5?pp*V%WiL&~5UXxu>fd0I*_mcQtp9axpfoM!{mW3bWo`0Y=K?XL?aZ2$-(Yx=l zLbGFXMSZ;Yd%-4@6B~DJGV1UIjhre8Lf7wBu;ZINW>RF1Al0Js)mkwKRctT+f1Pk1 zL%XbvrV_LDp(m6D_k8o!)vxew)Ex^+p`kF-bxtD8dy;0e$Ru6*r@ixmPxJ!;EwDKxErin zuT5c=N>ye)eRJk@HLfOPY7>cvK^K3}MWVOt`~$@v%en^lh2|0~rC|~+)*38uK-v8- z!?_Htk|a3lPI+{Ae_CS|ev8-~wcUf2F-3B%?>%PDL}+t6u;0v54xGAo7Ha+8$mqw{ z3Bn2jZWq~;Bz$7>Jq{QZ<3i-7akXx}UzPyGQWIwQAi9y=J31O~;MbbNIaoCIgZugK z(E0}lUo0xk%N~^gZ&@uZe}U{hwHf$Yle_Jj`i2Lwqsav`#Yum6R&uJQ{3jvcp9VUE z_7HOa(BwhbW4>ZxB2i6vLnvd8LE|c&)1x}}1oQnFt_=-;%jf)*V@*O6+P$NgN}P=5 z+D@v)wNF+*9moGQv}X5+W{7=^l^)hAlIJ>7E)7IYfTpUrxRtV@1VdBVFf>`ZvI!_c zcv=4Y&)9>iSVYWSg{&Ryg2;O^<|npPp@?-3_-d$O9)SEr(~iE*MkKsY2;du6`qe3o z3eqV}N+gD-zg<+P-s{`BaPhH!Jfla@sh?fe+`T&zKd-qtca&0 zNs?XvXY8h-0;M$&w#YWc~h;+UW;e-NMpt>WotHdG3>dVJT*KHe9ijS%@IfF2|wiF3+i z`hUUm?1fFwj^PM zX_&z_JaXZ(hqS%LjzCaOiM`$DJ9Y$fYB1K;ICjoJ`<%LS{L&>*^>8vM32d77!sR7U zXmppd$??Vdd9^qdjhv+Q+Dl6ziYbLNh&FUS4a}}|97jDhMu{l`AhT5NrCZMxbYv`z zjJp34-uY5ZVEle3`>&^o+o|D{%+9YRUCPr%YAt*IH@7bIBIL$(&L!m{db5HZ0;L~} zGfRsWL=Nje0umBTSxV|EWMmv!=p7re<68L1Zzj@U+GN2}J4h)U#|tkj?$s^`tx<_pb+!UDZ^~aD0R^Jd@22th zb;hv3NBVbQY%U)y*WdFtprhJ~+sxQGNaC#6_sKdR>_OdZ?4WyHCfuo3S%t+M3=W9qL zJ-{~OU>e=$-r)!;-jM|iTnH)>@oFkF9|>$kvQ3N_fuUGF2uWFx!kKBv@k=dCtCB7? zpVH_$`|q_SKD}#gAA++O(P{N|GRW$y#W&~tM*ZSA(nTwx##V<;V8>)*0=M9y zI$#A#hzJFKw8h5}4x-weN^nKY+u)y+$7ChK)B?gO>~w5qcItnfe_w*8pkbku;%v(x z%PQ+7>si!q48i#VjiN{OGYJkfU4|~7Pot)o%}4f+N9a4o9_iGolZ4=(@c9 zYQ6N6Rwy!J6G(|`OJ%mCz|!?RtQt}Q#z)aiJ)=oZ#h3ktyPZ_$-}dIFwC13f`m*ta z@@K25X1c;@##PP)lr>(9oqeGUn;XS8k^vEYi+^ZyGxvW_7V)d+UG^PCfYFjXCXF0e z&MEKr^)r|kU2u45PqJ1BGJ&^s8YA+9{wZiDixLi;(vGI7JrO?GHwBvyRy%@5fYhEXS+Z%Pl~ zv8JNdAhRRITid-pCaa&bvb|PBj%|?C7no5!HzLua*fL33SX8_8qeRLx9a?OLbFtM3 zFCJz%35L&6d*x{6n>Jr?9na~Y;hYn!7BsSd{tbP9a*cx4nu;I|dq{jZlW4sK1{;D# zg+Ordmvx(*PBowDV)4%srq>ijd|3}SCM literal 0 HcmV?d00001 diff --git a/MikroMaster/20260415/20260415230002-Config.rsc b/MikroMaster/20260415/20260415230002-Config.rsc new file mode 100644 index 0000000..5adcea8 --- /dev/null +++ b/MikroMaster/20260415/20260415230002-Config.rsc @@ -0,0 +1,4532 @@ +# 2026-04-15 23:00:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +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 \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +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 station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/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 security=security 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 security=security 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 security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf 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 datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/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=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-AX disabled=no mode=ap name=5G-AX security=sec5G 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 +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add name=mVados 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 +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/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 +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +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 dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-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/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\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\" } 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\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \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\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\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/233/efe032c8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 22:05:02 15.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n \$LogPrint debug \$0 (\"\\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if (\$CurrentChannel != \$updateChannel) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel (\$Update->\"channel\");\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([:len \$arrDeviceInfo] = 0) do={\r\ + \n :global arrDeviceInfo ({});\r\ + \n :local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};}\ + );\r\ + \n }\r\ + \n # else={:local arrDeviceInfo ({})}\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [[ :parse \"/\ + system/package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"\ + Error\")};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannel\"; \$Cu\ + rrentChannel;};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentVersion\"; (\$U\ + pdate->\"installed-version\");};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devCurrentChannelVersion\ + \"; [/system/resource/get version];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateChannel\"; [\$up\ + dateChannel];};\r\ + \n #:set (\$arrDeviceInfo->\"devUpdates\") {\"devUpdateVersion\"; (\$Up\ + date->\"latest-version\");};\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\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\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n\r\ + \n :global arrDeviceInfo [:toarray {\"section\"={\"key\"=\"\"; \"value\"\ + =\"\";} }];\r\ + \n #:do {:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system/package\ + /update/get\" ]]} on-error={}\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devRbCurrentFw;\r\ + \n :global devRbUpgradeFw;\r\ + \n\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global ROsVerCurrent;\r\ + \n :global ROsChannelCurrent;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :global ParseCustom;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global devBuildTime;\r\ + \n :global GetPubIp;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :set devBuildTime (\$Resource->\"build-time\");\r\ + \n :set runningChannelVersion (\$Resource->\"version\");\r\ + \n :set runningChannel [\$ParseCustom \$runningChannelVersion \"(\" \")\ + \" 1];\r\ + \n :set runningVersion [\$ParseCustom \$runningChannelVersion \" \"];\r\ + \n\r\ + \n :do {\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :local RouterBoard;\r\ + \n :do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on\ + -error={}\r\ + \n :set devModel (\$RouterBoard->\"model\");\r\ + \n :set devRbRevision (\$RouterBoard->\"revision\");\r\ + \n :set devRbSerialNumber (\$RouterBoard->\"serial-number\");\r\ + \n #:set devRbCurrentFw (\$RouterBoard->\"current-firmware\");\r\ + \n #:set devRbUpgradeFw (\$RouterBoard->\"upgrade-firmware\");\r\ + \n :if (\$devCurArch = \"mipsbe\" || \$devCurArch = \"arm\") do={\r\ + \n :global devRunning [ /system/device-mode/get mode ];\r\ + \n } else={\r\ + \n :global devRunning [/system/device-mode/get running];}\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n\r\ + \n :set devRbRevision false;\r\ + \n :set devRbSerialNumber false;\r\ + \n# :set devRbCurrentFw false;\r\ + \n# :set devRbUpgradeFw false;\r\ + \n #:set devCurrentFw \$runningVersion;#:set devUpgradeFw \$ROsVerAvail\ + ;\r\ + \n :set devRunning [/system/device-mode/get running];\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Error in Function getDevice!\");\r\ + \n :return false;\r\ + \n }\r\ + \n:return true;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global WaitArrDeviceInfo;\r\ + \n # \$WaitDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devCurArch;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global PiblicIpAddress;\r\ + \n\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :local Return;\r\ + \n :local License [/system/license/get];\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n\r\ + \n :set Return ([ \$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:\" . \$devBoardName ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Arch:\" . \$devCurArch ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Model:\" \$devModel ] . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbRevision ] > 0) \\\r\ + \n (\" \" . \$devRbRevision) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len \$devRbSerialNumber ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial:\" . \$devRbSerialNumber ] . \"\\n\"\ + ) ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"nleve\ + l\")) ] . \"\\n\") ] . \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License:\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Running Channel\" \$runningChannel ] . \"\\n\" . \\\ + \r\ + \n [ \$FormatLine \" Installed:\" (\$Update->\"installed-version\") \ + ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :typeof (\$Update->\"latest-version\") ] != \"noth\ + ing\" && \\\r\ + \n \$Update->\"installed-version\" != \$Update->\"latest-version\")\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Update->\"latest-version\") ]\ + \_. \"\\n\") ] . \\\r\ + \n [ \$IfThenElse (\$RouterBoard->\"routerboard\" = true && \\\r\ + \n \$RouterBoard->\"current-firmware\" != \$RouterBoard->\"upgrade-\ + firmware\") \\\r\ + \n ([ \$FormatLine \" Firmware\" (\$RouterBoard->\"current-firmwar\ + e\") ] . \"\\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\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\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 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 CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\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 :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes 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 comment=WAN 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 cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/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.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.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=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +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 +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 server=masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=git.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=ros.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/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=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="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 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/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=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 log=yes +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 walled-garden +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set 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 +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 +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" 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="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +add comment="Setup Global Environment for scripts" 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="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/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/20260415/20260415230002-Diff-Config.rsc b/MikroMaster/history/20260415/20260415230002-Diff-Config.rsc new file mode 100644 index 0000000..848c9d9 --- /dev/null +++ b/MikroMaster/history/20260415/20260415230002-Diff-Config.rsc @@ -0,0 +1,20 @@ +661,669c661,665 +< \n#:local Script AM-GlobalConfig;\r\ +< \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ +< heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ +< sc\") output=user as-value ]->\"data\");\r\ +< \n#/usb1/mikro_bak_rsa.pub\r\ +< \n:local FetchFile AM-DOHCert.rsc\r\ +< \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ +< \"[usb1]/scripts/\" . \$FetchFile);\r\ +< \n" +--- +> \n:local Script AM-GlobalConfig;\r\ +> \n/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch ch\ +> eck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".rs\ +> c\") output=user as-value ]->\"data\");\r\ +> \n#/usb1/mikro_bak_rsa.pub" +3322c3318 +< set auto-media-interface=lo default-mount-point-template=usb1 +--- +> set auto-media-interface=lo default-mount-point-template="[usb1]" -- 2.52.0