From bfef935cc7cd8771ace8212acc4bb74bae8cf58a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 00:00:42 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 00:00:42. --- .../20260510/20260510000002-Binary.backup | Bin 0 -> 300002 bytes .../20260510/20260510000002-Config.rsc | 4643 +++++++++++++++++ .../20260510/20260510000002-Diff-Config.rsc | 4 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260510/20260510000002-Binary.backup create mode 100644 MikroMaster/20260510/20260510000002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510000002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510000002-Binary.backup b/MikroMaster/20260510/20260510000002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5edc262d81e79518197af6efcae293fa236fc74c GIT binary patch literal 300002 zcmV+aKLEh*sF8ExlLP=(j>qwQpq?2@a|aVE(`$bK000O80004Z`T(2&Lur^|{8j(q z>E|TE=wauH?{vh6Li(*Ig`q`E1C*_rKYTJA;MZ`d5G+qv0T{0~{=|VQUbl|9>HAld zHn>Yxvrqkp`WQf(ijvQ-3@WsAA;L>cEqsMFm312PB1#5c_ZCiF1@Pfg#1@GEe zIUl9?R5?R1Lv~u&`0lI$iIGep#rWs5IO*X#6xa8b!Hm;DNS}XrToo;jEH@nPsIY(Z zeTO<0&CXC9Zii}eJ&RpKak7&u4v=L^`$U;9%lT!ZUp)>+4Q7lpY@lb-zqZ5Vn!5Q2 zz%Hv)CciCo$iMs5n03dO0Em^wPuy_z1_xjr2He7&PKcTEjJapcgrHe!Lxs#WXj+I32vp+E%f5!|w^p}(*H&?tl5C<>1tQRvzkQp(jB>2Z@k*0-}7 z4c2)^-140q&HGif2N`I;7Lj-uSWRv&SnDPna`PMm#mS@^B8|@1nPTJAZ3+<$Jn}w{ z@#`;+8Va|t)zh{e3_j&rgR4PpC+)b9#T_lMI$3vJ1j|*X0Imn-<&Z$PC6z{k86`q6 z+&IqF@S3kA@qr9%KXW*>4OP!C5l1tZCi2HIqEDLDNsYHE4CVhI2h^j@`BmJQ9GrXy z>6=AWI7h~n+YsbHE+kqkgv_dOGCc5-W9#G4ui|rw*5wvf3ev2#v@_CT^W}3f`GG;Q zTrTF(pq9V)85Ar16VSZQ*OHVLvYio-1_JmdzXov@b3_fnfK2<=yLL4lv})PzPPrZX z?Hb-E3QcLME?yQzGbclY7qKJo14gpoDn==wc=9sVDkNSE;aY5j(h%SELv(-Vi>^iC zM!IR&unX-F4>Rd`*Qd~?6k*GrGLE9?XVQB?{Dr%4vvoo-Ds!T_sksbmVrw+_|qdYIDEx?Scu8jou;Cz z?+EdP(fYF}R3s!!;2lJw1Ze!#m~U%($b*Cr>&i(^MDn7t!AY>7KNL$!5{3VrnY zoL04d9J7q=FtMxXD+#(&+{rK?3}272UdEI(l-`*^*ghw!UIdqOm4^GU2KoN5U%g2$ zS|3JHV*`MXLws{9#-TEaRB8r9u;46JOvT>ZoS9;j6qnqA_p&58HKWN2Jz@V$YRp^~ z<8*+jUBxsy{2tt94e1kw>t^Z0r{B6)76EsmSj>b#w)`5!R7olEx*%VYwbbKq=hSqi z=c|*;RE6sk`lM#7f(s7+_?pL_Ap0w>Gpv2cM16c$^0`(D;Wpz-D{tu48Cw-jWa5!b z)Gr}8G^U&{-{*UJ0RcQJU3jgSv3;6QkMf;QCsi63zGYn+x1Jt4*`>A`M;FH(OiQ~O zOKoDML|^-)r!IRe`Qv8fd-W4?jp@dqWY8%G#x`afv$PR}Zt9ae`~U{R*S>M@H;!Aq3Tb!AR7m=>Tv8R2(dd=R zlXQgy_w8l96LV55<4=-u7hLqJkt$ku(c)xBRx#JG1WzLrjl0?wz7PR5sLBc?S-mv4 z_toCfd5ytX`BLQ`s|y|4>GkPA4qx*->XAWNdW`M2gsCc5C>a9Jc~t%Vi@(91%i`L2 zF*B4AX}(ljyk@c-h3^muOhx~2WR1o0Y=8%Kjmw1xorR1AzCrmKisc%ZY(Uj+Geo4s zE8Gv%!*WtlE^5JD0Cva{?K#N);faJ9DLjVwY8r8OqlYPlHFPDY& z@7m)wX0rw9Cjw!;+g;ST$JUqgOoym+E4K(eL8{} zUiYY|WQjSi%3>B!G=93EN(jq_B#38~A<}o+?)7XR2pHQ4t4jUhtzc5O9WbmgaP`3f zjzyeuSGM}0Nx(*05Gl-JU!YzndyjoV=_&#)Q|2|$aJJBMuhc;iCb_n>4#<_@NbR*h zjEGr{$}$C6-+32<-}@(7DYzkLM|*G=KS+V$EH?kzs^<6}F6Ly0gI`b&AO?^8jT!1C zG}z!sA#FKZRo^>j+>uAb7LXcLu!V~48h$2ufK2Jnc;x*|L@+jpxf>N}x>EY|%QJ2v@#aYix zb8G-^EQ#==e9(}Dsh)hP7o0r;Dn%-$uTLlSn_2YTpGIP_r*%R3!EF;7oKlHrwih{w z5n8V=j7XA{ljXx15qzX{&q;D2Q>v9JJgNGLPS%3yX_X}BlE7whOKPk{B~NXlK2cDj zG1lr3=>~|TS@eoAe8ihm7$E3Y9~5h zKozL^9Er9$ceNVlj?T$dzmGrevMNXo6#|z6zbidcmGfuAr8WlWHk~rx@6^-{KCWJ- zp*muu0tze*iqh_&&d1fH`@o^aL!iN;pr>Br;9?n{KC5PeS$pEW00$-DbB@dI_9|0+fzn8 z`gAn5!ag=zJ_j;l8xtAJpO&B|ig9*G4_mEOcLh7)5r5Qvn$?BVF6thqmv&|T*YqgV zes=DGG}g#Fk}60`5FyO|GddeTqRiq6Mc@7424-+{<$=UcuR-jH7uCdXoax zia2%Ziw>sY0tMnD_v@yLB7-8Zeanv6O98=&hxl^ zts3&T*nf=VvVnSP4KG2W&3n6X^DsENXb&7t z$+~C6>e~g)usYL80MoUst9!B;HSuIODrt=+zCkPxXr<7+Xea2Fjef1}in4%qG%9W0pr7uvS%;~UPoT0BxtU(8}J2JzQ zSkf+^r9dV_CuqrH#S&3iUT;%2d_RK<7QFsYm}mXU4U`K_D<_anD{bq;!w3ympm@TI zOrTVfYjxrv4O9s`(EPcgCaCqseky;AD1p21A=d)f-Kr_S*5n+%tMZ<|0vH)t;|qFj zh>JA0znyTTq}y6piXFwRR&R50q>~<+5aFA*qAUxfu^4p?QtC0;mhCv5O1_S1YTt0i!ys?x3+In0^%msv=Mt zRMD-g-9X^74UTuqGhk2_SfJzfNONEQU8C$6@wL4!N_m0X+YI4i4(7nWHpu2oRaP%-NbZb%qs8V^Fq~FsE{vZ6M!(stJD}h0o5I;Fv$( znu93tgx+WuLBvEh!5+V%M&jL}4)bb@x9|2I&b))8z?6PZqsG6FaA~aBcnBmCVpmqReMUjbLla9eii{v$%u)jW&9cAa2#Rk6A!55Eo+`~g&N zCB!#-{nl8|OJkuvE`2@iTm|(8zYH$Ua#d7c26eCvv$QO=+h|Eh3V1%u6U`BM_NE4l zQ%_ZP&j;F1+@_d)2+5Ecz~w})93Q->TV}G5TWU+x67lQyg+xM6G{x-FdgG2 zLc``$KgoA}jQ7M5{)&kTv)G*vgR}a`*z_Q(YztWr+hBsK^>t zL&28^6A=?)kA7eJkt_2@ZQap=7j>FFmVZ$Co@d;uDg z_={m|Y1o+Vq5xm;NVU`UQ~Zk+ z=UIN1pfX!0rx1#NaH&%JF4)>-_@qAI4J^<6_QtpeGCFCTet@jg(n+~7Nl2T43`ueg zBn%sg(r;dLwyJnr36w_fTB*vWoR$j~p*H9oPd5{G#SH8yp@mrx| zlkAx7_VMf?(vKmz!igb!$_2UTqOr2Q9WVFiXkOw!$;x#BL9x%y&jkY_MUbd8hGCfD zH;N=7caVL?rZ*Ajq%aPqNxfku(Umo2m z3mqqzV3(^#{|p=E9W-s;OHRPI<~qC?43R`)w*sqPCcg4;_A=S0$ZqC^M)UoY7?0d2vJG)7qaESs zpMKib?>Cbjna97v{%2N9uie6~HY>!gTM*1uc3yo1F?bSRB@jAR>8F~~Y(!z*N-ha& zk!($v6#~B~h$tb+Q*Ew=>VhA+b8-unSN5(jJO{{HDa|fGSrwA=^Icisj;xeh`Ys0R z-(rS|_v_s&4cPxTp42=fh$#F z7F&`C)PL;RnIaZ1DJO$vkMb~-YaWjaDpo<$`S@b?1{WnODToxF6o8z_0kDaX8fLvl z??)B#$Tdcx`AJxIN{w!^oIGB2HiuT^+R=m)NO~M;Ve=+k{q zd9xHWQETt?jmDlFiMGC6b$79X#~&F{jNAB3MK_6K9f23D5ss(qYXev@Egq4q;a&7% zh49ss9JSoBZ+gtdOp{lHo3iZ}1gYRt z_Nx=r@$drFp!0Kh|HO{~rapH-)O76EnsrStNnv^*aT!?=^pVlF5jaEWZ-)VfY4i{P z%r^u0zf(+v-Q((N-fMQ21?YlsD79s-8GvgHFA@Zn?Zq?M3ZAVsfZL|Agqy~k0Jq;3 z5PqsUBdQwPMYCO4&M1JeshB{_{(fejU@U$rL-#^-fk>Z!3K|z-cL7H*XA%k_Hr&TZ zR2lmeVGVCk7AFmtUS!V~>Z)Tils!r;X@#8QEFO{wtsm;q82(Dzh3-CsMou>eE2S`D zqAmjlRSX%pmAJ1=#!q6&MqH+KH-Ek6jd+1a4c>s_JsDw=8Mh4G)(p*hQa0+)WuX8k zBa%2?dUP{|Ju;*Dq5VrC;<558EQm% zxNVYdec}4%3u&7C5efQ^PJn?yrOTp3fD`jw?*XuePahZpiCM+R1%vA@%poE=eOn`+ zk}4{3F+E>^z5=!hN8i({DJ`WJ2`p+e(P&AxKEuB7ybRy(sX_9136Gea$M$=7OLgsV z86z02!;&fhIH%HJVy#WaOT3>9dxa{BL@6p>tgi-+JhJNtbOcjW`^GLaNOKVm*EgUm zVJj;8#DhjX&7(H71afm-9C8Wf@fOLrzyiJI$%Uf9llL$Pv-S&FotLW*8+a-8xC2ljrI<+Qxq|f)(cBL1Zt@=RkoND9t%7ifm24W7* zX5IfBzGhY^R{(csN^_s_{>GgyQ&_~^BGV}#Ff~fJq`0NKS@;*2^r}ACJlnJ-B^{MC zedSUA=i)Cfm6eq`#PH;BnQa+mQCBCQj_dfIT?E{$wX4)Tavc8l&H&MtQc^@%P2Wb3 zy9*8{7$leYCp^&m^QN`N*8-FTdp90?tI$YE^OOdHl1^d2-7FLj1fbd9xuS|_3nP+t zf#WxF%tOs>%aGyA6qil{Q4*1z+|Su4U{}?~nkU6G{>Xw@UYV5%|HgO}`(d##|7&vW z20ZREU6y0fv^zGp3RK5^CAKvtU_YTLxyKXRDDArT2AH|Ehnme$)4C50K604aV4F=w zunaBVEjgW2i>qsXJUuw)=#$JK;l(LV!DoW>Cf=*Y$^LKyqU|=C%fi-zVA|U&_-i7V z4g_6LXyjsmecuV~7y~%%3vZtz_3;7@X+^mpA?FgyDt$NKu$p0LD7&ic%0le~+6eE^ z*~U-uD7NZX*Z(G+^Qs%$0YZ^*=cH>u+x{U_eo~n=h$iRGEr|vCE9Hexec6CPpk#Ny zYQ7C}{KRW;-9U2!@COt7oVH@8OQJW#@Rj)&7JHx}Gcrnt;$>>LMETX*JN*ID_V5_= zto}A%Cdg;)4%);MV00tB8kj>e&#gtEPPVqsB%ynIw3TfrEZuO=;-fUt^H0fDOU|#P zF;2>Zb{#c;CWH2dy68M`6HHC4u%>{UqUUOPZg6ae#D;>Fvb@~B=`z-Q-NL`-!hEn* zQ*FSzh4N+W2}M3#`CMMYW)G&is6A0A&PTr`6cye4A@b^8xsIUqRPh<%l-#thre3kdb7 zKncOyphz;}GzmlKTsPw`prmU*(hObET*TiHjdW(qIw zzZTlLtY9UR=yjMyB4Md;o2wQE`|v)$j{j9y|Caw}p6wo-Y9O2l-@rjWK44z#KaDJ< zTh_fR=>aeCWj~J*c}BMOf;G(ifO9lNu4qcy`>Y|spAV-4Yiva0$E&bca4Ap~K}$|Z z5f!Z8oo3;M!Jhi4z=6P$+RXE2Ii=(7S5s?W<86mD8r`h@j?N16=}|9NEps)|N3wM7 zNU};_G*~`r);QT<2K7Or<=;5zT+}(~Sc6rw2dw{+>P@55>*vn9sUOM-I1{0BXX22l z#F1N~z7+fw-*gZ@n`V)zDmkRmd7t}uPAk+9PJuU98g|r{9Z#OtR~HX+aK)~5 z#>!LiZ%j%03LM={R6;P;g9AXvMr{LR`~*J>8TQR z|JKjhrEmnWtiG-(>sHpfDc(<*n?l*IyoE+m*rP0ozA(FMlD7nX`&lkww*~`yojgLe7h^t9cD<0Tx45jIz1u z!{Q}*TqKovmf*;-kqxm;xpeda?^$K$dsM)6W1ZB3lCHvPZ+`o%@$Tt^L&f4$f;uC9_)RzfGC+vVQa8nt>qJo{ll+*jB;H%D?H?4)3A z*U7UDGPNGaBNm1DYy{V;)!Xahw(OrdIquw_7K*6X4>XYSZ>)mJ!cz2}l|H%6gtz zvhiAQ43cpTLoIa%>zQ)?O(wrf1%hV2);fpi6RE$7JA+AeA z9Ad;5xOR!%HFUQRhk#{S;FuO82}0=FNzAddwUVJV_2 zUwDa$`m*E+)Ol&F?;p4m)rZqLRjId){+C2ffE{XQ1FGm9r^CQPmf;!#cSm%t!zyA5 z_eq+WGS`*D2Pop@Wd$2o0%8g&tfxyqvM{;s;{%=ObJa+HxGB&IdVqd;&_Lb9KSDnu zD{A%cmQWV)m`se-c$1*u1)Z5fytg+tvuiX&ohH8KuD!<*LuXtk?2~-4PNTK4Cn?n@ z>T5E@yJc&SUD#R;36JM(=iKr3pt zH$ z0I=dk%s*tT6}Q4vuXnI$^eJ)8%J}@JEhcw&$F&y)=JQ3OKCKwY#!teGAVoz#9J5Y%s()FH|*nK;fKz_3DufUpf-bC5?fqNb&Z%FOq_8isfdM} zHapTS7MuYVl`yM_7P!sOyB5`#g8{=!T$!XenstMC@=kmmq|;d9Gh0TGq&slTV1sl2 zmSTpH#37IhMsGBPQmhmY3&*2(jChO$5Lkyi6}8hU;@KiT_}Hc#guKeShIBXm-4LJB zHsLIQb=kVMw!m);csBbkaH9X=&%Ka{=!rb2gxoY~+ z0xr{Wi|E1Fd7FFCR5AXH%dnrz)y+fR*03&LR{U@L2eEXyjfnn0M={!t*YWDo@^ChN zle^b_=py(Iz!!nX{e94fzE5*V#a)(YpB0b%O~r7f0`_1OxjC&m_8>WWNA@>&AQkq+ z$)36{P2Amu^X}3&k2;q>%57z|SGsdIK^SP zk(SiB7>F)F$;g&FoKA_$Z5FLRBNG|m86_l>n2yxw=(>?fpC}a1f3}6>dZyz~$g;|= z!fS+E>JYC^LfA|j_-8vNE+Z}|8Ag8wc0SkYAxvz9hLD-=?lvcI-`TLS&*w0-$rH6N(LnpX(ymenifFklnCxcZ@$Kuj@Td$RD|54IFh;Fm=;h! zDM}sR;_zwM+7CmSLQGDz6(^3+Jb5yu+z$Zi3nQIP9x#3!U%MdTDxu~}nTC21RyJQP1;nbRM!L>%5qoi^o$fBA3na2^|oJA3L?hXXZB)6K^H0Q zN?<{V^6ME=Q`IWsxBG2%CzyMMrx#oPZ@ujuVGgK8^!xbQudpzle}8JFe6>{P<`~D; z_2sjAW!>f*Z*GspY$$We4ZqN?rA})V=+VOA}Lu7-%XGP8Duts~- zb`a4}pw-A*un~#gbviY$sXHInJuzOS(8$6BZ>JjEAAo=N3$fV>eC`j+4tWg^54ln%mZlF`JlM2NdD=q)hs7k=b_(%q5so`V zRaQc8bm+sOUCF)()0ihR^h?rUWTivV&4467x#gfQhEH!XIPhcy4RD4w)emDb5pXIxNk-6*3~6?!Z2Ow$8bDL#Y+(bMSBK6LRILR%HwQ z&Qd5OtTZ5Ylq9cpKvFqpsV2_v&SQ44#|=yDZk zZ=r9h7mPs+3N0Rta_Xm_Crk-pXjp3Id({UT+w2?O?^Pr)Yjs}bb3jKL6e?;zAP_>K z6s-3!^{+9gm~i~oqJeyr2`=&$yfWf#1h1N9J?p%V)?d@8lnLpjs^R+-aUGjV5U&x; zm8J#@?w14k>o>gnSmpzB8`0CiF zKxX2N{1B*21m6n{y(TL|?ir88v0~Y~#f!&rs!_4rhpfw}m7Y=8rS#IlrDaC+O#KHQd|{;tU7Yjsvp;x%Vw zeh$PoPp5wMQ=Z8F-(^9d;IBJNNW%GMVTCI5^t9$2G|doQ=4bw6sYtg7V{Isx1!c#_ zMatRbE}xILiBT*7L2T0s?VL`jCR1>8Kw)ONg9%B5@!HEn#1CC1PnC~BGzDPb7X`$A zCZ>dpQukqjnOBuZDkX>j(cLF=hTK!S5*u~&QhiI9qc+m;zVvP&r_-Vq&CFy^iNB`M zlQY5d@!FDdXz2~3qVhEYfQfXHoW{c~qcIs&jXQSZXQ@>sdm>A3fZ3R=^b~4=k*~uf z?*W*rRoF__#1-JVYs(XVn^Y{7lW=H@w4`yNyZLQ%___ur@{+w!@$NwS+j`oCjE{t& z1SUlpats|jy-uijw17|MhjwpThTTZkB69JO__yIiGrX!;y5H5Q!-aUPzhiFXejmNh zfKoUN=aU51Y{+7?s0u{BKL-CZlJC?f*rLciZ0ym6#5sT5zU4%0B5`h}86F$iy{mB8 zO=E*HvZEk3?+32mv6WpkQ0F*Jr#C&v(yHY+sDT%eBD!u{=fH(l2gj*7g~pH0JD2|| zK`|F)UZ{4Q*2lS^Q#M(XOI%PcC-V>;Os(v%H=Q%LX$tt9$C#ss(CqQ{K}Fv;8`TNq zvl>OgKMnjx6xO-r2eH&C2EJFrzgVy>`erTboN(8W_4mzpc#dVy+GY;f5IqN5rJx5= zS4>Ab@+8yW&n@$hGmy~8vQR8pE}BAlW0kwMJM=!{fKqB#d+2SBN}HC5SxGS8L740P ze>wT~LbwP789d6=wY>4hmqCXfycLAEeHq07bq}QJq%3ITf=LPEpk@_{#|>p;DKX!h$}DF{ zeUb1|I%yW-x0#_-Z!{XUYlWRI-uoCK+N=n?)*myse5!w6zF2GB04x7COK zoqurBXrZGanlCVG;jNKMaw}!wJ~e+@8D9d{a0CFQ;B2I!+=w8qAio=%opa2OAt2MQ zQ2-Uu(KISLc?2VDvEA>(ADUm#fTcF8hl-V4ZF0`T$sblbfrS>s=uC}v?$!N|&PKo4 zsz&`nd4qfc=}t*@=msHEgnaWaDZ(HY<=xSROF1cS9(ox(XawH97+2-P2W+)44|sI; z5{nEjS4l$E1F*Q0J+y6^+E8RhPa*#^)?CMkm-dOZwn}jPTkZPuV6v9h$BJi^r?9bk zR@1su@ARHYsf8lTZ4=_txUYL4#+LM>>wwu$hQ6Oa(VV4)>f;&Suiw=a@P1P5t37xY z^@$J{99N-TQmsQq6NX;Zj)vk-mcc2=n1gv_A%-;vQ(MJCkHz2(^YcFdB*OHRNgD%k z8w7F$s|#%^4yZLb%@c6QqMAa}{a35<@Jg9DVy1UNMc|eY&X4QDEeZ^)*mm_Q^@Hr- z04GzV>ToAuSy#7jnxvH2TH5^j6iB)M#$}` zo7q*DJqg0)>Z&IQ9h9IH`Q$FU#r$2u@V4*n)Ms*vvlqvcSRDoEZsjjDC>rBRNh&?N ze8LGS#-b+;4QyH`rYRr5q+P2M67^b^iINj06-Fa~$@oux3Rp1OQK-u+ShLur+7~}! zfwMdXP!@8%B8z-Cqu4 zy-m{Qb|to-jZk1!MHwi`WslAC-4IVc8R8rjxtM3aKqmuIh6=>^mjA3=qs^}(*{Oei zURlb_c-u5*fmkbwT{zuxu2?!*An>$){j-_e%8#7cAEDWS`hog{hdEJI9AZ03OnaWW zTOsMhcxhZresMOwW~HS8d@D(~H1sFJR^8aJ5bb}kr((M*8`R$nq)IE$Wx9^UH~W3W z$I{4|*d3|uD!4jtaJA=o{iU|O7T^rTq{Nid)xx2fB-OV@9U@(2Jvj{JbbGe;^Vk|m7$ZX0=Mmcw ziVl^@%0GWv{kZPL!I@nrr}j&_H6>AN#1H!VJucj&mLG15Wg5?IR#NA*5Cg{=X(kqrgskguz9(p$9w>z<#M;DIK3do*DChN~A%B|Z~>5ay;H z@x9`Gu!D*HV?1=-MAbt&x--zDFNOEbShByji}kavr2iKIjvZ4jKe&$X+ zm^1;Vl9eydakKxTHP}>rCBWxC=efpXI^KV4H4Q;>Ib=o6w}?Swcd_&#o`V~o;)>2N zPlR8rGMuY}G+z}&yD`GAIeawYZ*u5USYttE07X2RSC`f8yp-3RF=R(*xFuw`SP8+f zW`KY9xjxAFJ3mLw}-uvDo@8iMUwdA98P+ST2etC}u)k;+`E0qkyaeJZ*bV;x^`ND5)L z_n&C0%l@$8QfZK{>armE5jt8Y5;YbP=Fz5Q=b`&nGJ%VjBwL#5e`i^S0jmnzPUB?4 zyv`4Br4<=|#MY~H@|L>pp+f|jF_$aX;i~w_d{Y2xWJgJ+Dh^0>SX3ifTqCW4)@$cl zIRvST9t1nI%|Xa^%;o5vH=3#SRm9WPn8CjvPjgY%Uz?)uF2}8`az3js)g(&8`7=?0 z`U<-?*Sz{utaTg7hC97NEIAt#c-Z|nufE_Yz-kfh5Fgr9#=*-PbHml zI9pJi2rZm@u!VNmSzb?9jKsU?jzVl|fEo10%!hbN>rv%q)Ak31VAexiv-ObvGe!XY zwJ|1TmfVzm&6Hft0s5{A@RA*II_JS_iH%3py-!L$S>344$+eg$?s#ac`6m3-7TOku zePM)n;_{}D1UlXnrwlWN*iEs}9DI|MX#)T9Kog>smjUiFP6gVHv;yMi+3&uw2`O`scdV zPBbInuyK7U!w5me!{#iDD@}8K_yvgj`ce(tqwq^VDOjh1foLOgz>`HMT>hKfG~Y{6 z99&_W`N(lCDv_-{xzH~GP?(ZPeFgThkx5dw8<>SIF&I2H*M$PTned$o=p?0#XK=qr zW?^lm#8dULZA)aMY!KByxwozIQ4~`mJV;TsE>5dyOIUz#>BbccRfjdaO1VIIRaFwb zrEnZWx>su{4!mpUfbHcPQ@8n_U8gPhL~buW55}c<<3i4k15E+QZ)g(tu%-umgek$(|HMi6CX`P28G!9hRSp)8-)9{u1gDh#k(uF^Jki7#gqF z0?NY!IWJR>ac{YGptierW@K#eB>r@?Z*Hi7x@hU$?2BBW=McOwLrNld$(%zCuDOV# zgB0Hk_cE9rce=pj|7x~sT6QC*T5Umwb49m1AMD@;H z&~9zZzO?%0{qTB#674W$#IR^E!q;l6HS!f^<#u^Ia=XdIN@T`d^G~7As?=1yjtuJP zCjY4IM_hx(yl?|)`3*g#c5jqk!gyKBND3pu=F;>SaN*%PpyltBFI(^nEb#}k6@~>! zgI^^QFS_Y)4tcdO%G?CA$yfG%HGwLZPET`_p0Z07fw-lv9Y7CKsS27#Ilmz6dIn!O zL(WF8?7eqe$5C0nt?g|hg#2<*nDlqK;ZWL{bQ1_`ls2A>p)GWSG`n_-4~ON|O)6nA z7&4y+$ z`T_+%Ww<{{-K{JU9ngE948UE3ut;m_QADG-K8{>@*m@eDmAFx~bcObhlN;^L2nmhNg8yuDihtyq0*?czUFtu z9FAAmRI0PS=n4+P9s4@azk3lNBsMYm#6bu)%c>uAnzc}!1uBmleRc~r7lWsAlPfKU zM+Lj(nsD6F`Q`%w*&FORhfKVk&&UCUNbpj~{Y+Dao&>z-zQPO0-l zL$B}L+44>+WRt0Srju()?boF&BYdpZ^EJa98>IMbnkJKgha&Cb0H&HHd+k_V!YU-o zKuXVd^a_;&8@|=$(mhv%H|-6X197Ses#a)|iM(mY^O1?lO-N&xB zP?-hO{DY>1nRB26=C?17FO|O8uALNY&uP@b{mtJI&zuSD&yrW zUk}9u|#N>=K>fc46MXfe8q6$U)B+K(rGjqM9&&*#-$4>!er^oKZsZN-==<jNlsHs=(0ftxp)wh`$>tVcbn=WZiPBEd{vDi#g%O6mDD~Jm>7b1wg{09p?c(4T z%W-M41APun{{0`1AO+6pLziBogKG1Q1{GSbBNqJ^_ z;cYA@As_yweUE(LPT;ndz%QM$7DzkYko249hOoM(Au5;{l%bOmJ#?mZ(&-bB_2@d) z@q<+!X%YTgQ+z>?!T2#3p0FdDK|P1ZQ;U-vFm4mQsUAH~U+UyZ!JkJj4|ur2iNL(9 z?FVxlgKX!;oleuAzX39I(SjRhaj|db!UQ11z%^Qqr1BJ%%^;56#;D6-755cEkL%HL zHjAOQO*_S-lLLSleZHzD-52V!`{&KJ2e~y+#MR*UU^aTv*w9*^X6{)*Zo^ACiw_DH z;Kv#S-MtS2U{}lhjgR{Wzb@WFSQ6)8CHr##B-NaOKUP5h&&;kMdi?2>GqQB2{3Lhl zF*V(X{IZR8z5#e1VvIxbWF?Pc3PyGWq2q$dG%@dbcCkw6^lz*KgvfAKckH-9tB*a>iA5M#?HQ4MX~_s zpr*zE46trD4v2ZPR>2>WeNfH`MWscEHCAvQJ^tfKS6=W-L`j;GCx;ipzt)6CDDJ90 zlog{6@f8zO=Z`}Pa-);WvfL=qlh?!QHE_!?ZJ(sUiaj)r=tn)FuHe9Qw3Qdel4Mf5 zr8H3%&z~-H7TJ9igZ2S%BY5wNzpv(!S!752@-BetaZ%04#R`=mJq2MA=~Oigx~+kQaU2R3_H`+gOi^q$nXQ z+d*Fdip3N9egc~vrja{oSBO{~B5;#IPUMIcJ%&4>IXu{|p=*c;(mQ2Wk>aGWW4ON^ z&YTKpWkQuENuke$Q!~uuH#!$;pOOFRzH4_Z*F{qtoo4D}a8TGVuh{AH8oDFa!m>u@ zvWwEg4LD((#FfN-4X5J-mj%1*G+K)hyD03C6v^Gu{{9&CX~%G5sR4qDLRb$QXn~vD#8mf#22_Ef`UQknNj0` zr7Pk-$H`XMfR;j^3WOhv>o%E3;}MRHvaPIYT;v|;9qtp#Pw3Z`4?|@=h(yG>_o)L? ze(5OVpz~R&!0kqLrfy_0)I~C@&HZuJXG??r{7*E~31Sa?1;y@1tMcrQ{p)uW{0FMG ziGfB9kKAL!8BBP4AtO$cY;0v86prn5_p%x>mX%kiV06fpEQAg<<4Pw_`&(vN4`&}8 z!H!*jCCbrKF@FI6KLEgXJoh6Cv&4z8A{(+8fQ;A<$(s*F>5$|GY3;*U@pt;UjizWd zhsoT4!@~Tan&+s(#>ERhA__u3njmC-eL-5(Vk$0vW!;=wChk|@r(?)>)tFU-z|XFB ztFFvD`i=b3ejf*@JBFnbW9?-{vxWaDwpRtKRcf6NnuEOEW1^O8jPy~S3e;a5k2Df8 z@&jqd%K_r3n?5hYvxOk1ds$om`v|qnO#VTY>h8iH7G5R~gS^Z><-nbqbHXgG zf-im?MA9(L-kk!64wv))z(3Xb;kQw|n-a>dud zOO0GEg7&Z*Sg}hBsO2G;`44k7LRQ+IHU(?zqOw3U+Jf->!BQz%tZ>JigiWE*ywMzB zRsU)s%M+NbZ$v)Zmwm*69a;TfDQNYbx|(h54ZXb*!05 z8g0@Tr$!qFCQRGL$iq6tv~Zy2=~C%67Z@n>lvlQrL1EzdxeRh>TqEa}4yKkV!h2iL zL^d2CBWK}5cdog_pYqCu8y7rwS5f}4Cqxk0^Kv_quV8-|Y@DJv%tky7gG?dpDiJv7 zpLRJ$65kyNC7yA;eX)GQm9eTzcr5kNsEyN-+gfJ$>Lmu=oD{3Q5#s3a!cR&>S|I+W z_B@6aG+EH(GOO;7@<8QE-Yd(aDmW&4Xg&cSXt;%q$Bp9~&l;oSFu5qY z82#ha{S9ZzIa(-TXv_VSFa91Aj(&sa?z8SLhRQQm2Woe1hAZ|^X?(MdD9&!jG}nEl zLBvU9zdp*>J`a@-)iF5AN!Gydh}P?sjiHB94+93hzD0xGkRq>@f&@ps^I0^*A4vHM zo+(o~h8~-v&pWrC z1tsw_7(07GLeY=ybDK#50gV*BK36SZ;ATy$lDgiBjQ8VEclXp0w1EB4A0tKg21Pbi zWaZ^F6A5_&fZ&%f<#_pUFpoY=aex}g6Lf7%F&W04^EydY%6xV(*JC5}qzm6d@b`tH z7e0%d;B|P*zTTY6DAE)ga;K?Lcrb!`HF+Oq{nXS=;OT+4*r&NnbktB+i-?CGAMJn3 zePPVVUAY{DOpi(n7~x{`1sHnXAJD>Rj3=knMOErXS*M5z!X5^4P^j{iI24A_3HQi_ ze65fD)Iy$4hP@z#)8?(~!*V`?dBMJd$PTYNH_0!wGKp0aM zxKPVqhj(o?5x$*6CmuiXy(7|8i^30v+;~LGl(4|6;roU?&bq2! z?kYSB=$_GQD{Of>nF-p%4zsyZhxoiUyRq#2Juxt=m2IqTh?mvjdNiEX-r4P4H+^I3q&5 zLuC~%2zNZ$%I)z3fndHJX`qUBLqa2(=h_iTvxSprA?Qi| z1mHo^0PO^|6aLYmwpd5q!v?t>$dPe}qk_`9(S~sM#XR}Eq*EycWW|@eS}a^OaOFKQ zRBX>BJfNd>`9b@XjJVOT;LZ}yLc35OOf*@ggUSaQ1a3O3j5$wdnfu6A7hZk?9lc(1 zyDm(uBsKteRTV7cFi-e6x{`pEIB7q-S23W&liZk0{Q;(r4K`_Z$v1v-mYt`9d%f!X za!ur6j=UaIr6&D(FCc!xZOzjw-#Gk^7P4ScVLQTYv?{EZ9#qATn-EKEXn2s@JBN^m z^ReRd%NISBypG==OVV9cgmndNQ_t4bOa8#85=-k;eo)T4aR;Q5oIXd?ET&4+XHy_<)cONtp_^OF-Wa#M~l8VskR0s|aQc z6iYt{_K;b-I2acEnBCte6Tyy3`0$N`Ybz){%GSKKk-{MGa=(H*Xy!>EY^xn zc(;ajDSJTdB;*l>aXEcF0@TVCRCHo-WMlig*%QD9)Yl7fYPFGEpy9Ul9bYQ-MgAKq zf^^lW#>j`;GMxU7>(-&R$#9j4tmhP3GJT2(dq5v-{Ge}`Hm0nRD&v^j9&5LYZ|JhD zZK>dXZ*^+}?O26#EC!|h_KfScy7!gxRV##3 z)v%nH)sPCEhn@<>Q4((+`CI2z0f4mbuSj7r(k-y zFI%oEWz6nv@D)eKuE<*tXVt5y=3=Nz?j^%7dlaYL#F_ck1wxYh#OiJ)}HXj2$1xcN7j{wf9(VE~k6Ew?HZZFvX;uFS&W0H_TFGJDj4zG*lW@ zjN!`8MQ@-TPxav<^Bz7PS@dM#;^&lLkoA&Wl{|wlQqN1alvkSo%4WU*plDkR zn@Ww`)wGgV7JqUTxsyMz+Xf6?Q(_&gaX3 zLG22wlIX^NY5{EfK0-B=cWZR{le5b;F?T0wUiZ}re+QYiDHHL%&wl}B0ZCt@HuI== zN-GS3Ch7|w(ss9qoUtB9yd_ZeiFJ{&JdbP{5(yp|SL^9UO;j4_Mv_K8HeuH4u}`K6 zD)X*(;7e^ddTlUtVb_Eis~-eK7Miw!%PRy-4~?fMNa|~|G>h-Hf%W}jLBf2iYn@g$ z7%c+f3h$?%2%#$h9BqG$?gY$#@cU7dYONWcP5>smwL$pDfD3mhsUnO=-Ge;%F781_ z0zdM``Ldj{yyEoXX>iS5i$mCPb;~R54%0@6J;e;dlMvzPZd#wVaHz7m9R`r|`1)lX z5n-}7QDJEU5(!O0BP^!eY?Z8XqIQ1T)UP!8xLT#5SDE2T_f!(TT zeb~`aXIH?u&)4^>#AV6zDf%C4_Jkjyvpha+K_`D@tGm=n99VjH(g{#cdcpKY3+P(k zw?!1?4u2Ze%)}M{>1;N|3TCX2#huZo!ga=6`~RB8uj&-yYvDY?y)J;?{F1GtY_2I_ zqi9Y^ZU3e_qe_ukNh^s|T!Q-bOPdVPqg?-|>u_u|rNt>Fu7fl!0Wc;H7;&XB<WA{qhH-$P$Lq=+vlw8-c;IE*W0 z61rGH2irz9*kOA3w1!jJw!uZCdBqs@to0q4LcNBmg5h`4uZ zM;A{I;nJhndd@bcpKyVW8k_k7H=jbu)_>v4%m;wHd4b?Ts52r;cS*4(5YR^Uc&30} zYD_4@)=Is3B_J0vKuI3~t$TB_4SiDdYcHBRJ!dkTz`}{we?3qWCpclq3B-ig@ay<; z&lbLaFI5YJmeL6&e=<7Jzx6i*1;Y13#PQtJF;op4lp65PV zWdnN0cdKic8ofk`4OrM%#W}`JO`jVlDe$y|ssT((g@uhYpL!Ut6xQzibL{K$fJR9= z-onl!9_sTM!JzWO2nV+LA6pKiXi;&gDn-=x7v}B$mR=`PGVtw{q{IBMssBN@w-OC@ zZw^_|0&9xjLduwZkA-7!ruXsd3KeTvwsC?#w1CXzQy0i&2whI?4N7_k^G1S8(Ww!HG1#Hh9g$j}RV`&Tf)AVD zQ(!j-24`&mr6=q<7Z{#dxOEr=S{g($!{gO!zDXP#tNrB9*~!?I860MQhs{BvvjjNK)=W|aCr#+T5gcS$*hTR+ zF2+aNw17;Ma{9c2X{)|AQg4~nECWMyX^eiGbF~6IA`i|Z)q`uP4KDALPC+Eptw++H zBs=6q#N$f{BU9dkkh{bW&cMi@G`d8$(HK%Q*CAQ2nlzsSvt>!wEDKeknE=eo4^%jg z@nDgj1@6HrJ?Z{;#8Q=D>t_@YM*Yrre7h3ti(fexhBoq-4yrOoDQo+Je=wMl77Bf8 ziw0LncIVmX_tN20D1XlX=P2jgDGYHVE?x@5@^;2L5}L^2qcZN<@aL)Z{cOUr#>_Dt ztda=cQ|SDUHPy+s1;u*} zlY%w-I!Iag4~DOh{14umyxfvYPRkac`Pe%u3aXd&aG~d{B75pyQyLfmP~V9uj%;)_iZvmuxR zBMrXGI@aw2&zr;=x3K|KdG__-NLC}^uQ>(QV#O!^tSWe>#>2QO^~-rl zfeQ$w_-~I>YuA5`rtvB1jPCtGq1HpfHd|5p-_U+0dd5#tKsOO)UwW3S=e!n_Ut#l} z&!GLj&JW+7(6n^vu6G^bG-=?4`2<7sZhY!0Wz+YM;2*eHH)Db&`jKng+d8Oet)-E& z6H57(P&-QiAFkBP=IeY^lJ?0|zAst@cMo3RnNzzbG5@@~V3V{l+X{TV=e5%C3 zg9GESRw}5#y(cuv+1V|#+b2!O?E9!UovFoml1I#cn-U|BayBY=;uup_Wdhe^$>5Z9 z94gPC394<_ch;9gZ0p^ME^Qu{YRPv{SURF6JH+|Yex%l}B1gYef zr*HDL|I4kSKWppEhd3>jFv#uPqds^VHFT@>J8H8wr0>hpJt=o7#=GeiGuToRfZJZO zOxWYGu5KTifW4hxHLJs&#Nz#mcF(VHrzROELB#)7e0b*GzITG|P^`8kp5KqY($^yY z5-^N1mIOcZ_lNljCwUsK`x)R{ zr9w=+K6QDwte|oC8qUA~G2khZkSmo-d-GX9A=LI>a8c6qj>w z6@MuBOiw+>cn|Ke*BOATW`l4gtyW{~v#UCv&@1bgrR5kzC>CDnQf4DOxMBZYfpLyr z?dizicp32-Vohq!1Ctccm z|MjJ2OJ@oZk5D6jE6|&7*)4EiXuB6%u6PQdIPE|{_Fzr@IXtBo&;Z`H2L`G;OXGWP zRaNAY;bqFMKvy=rcr?9(KhxAv`tFY@U&@*|*X)-`M7*U_JIu|CKew}Z!yf<}kaGg7 z8Z0f8dObc~xTiFdL}9)o)z29;Wj)=1d`ku=HyTF7Z-!om*F-n~x-tw4^H}BUkx2~# zjTES?M}hRZG>OkLl_00nTdQ_FKS!$$f)Ry_W}!KUXxe5gO%Z?6*(m3&0Kn7M_J|7F zefm284&puBNX`MgLh?KX5R+SRLFEiPFw+tiIe0Q)(Us=ZFT&2 z;DUXP)t-^g!SKM{`9f__5=E|-nMX3(Wv8vWQ+E&UUoi5vuo_&Fvu+8?ULx#`jXq(A zE{d)^b5q7=Za8x-Zu|qSik0()4el>3XL45QlE@1r9BSGf4(lSw^Q7iyKoy2fRNU>p z3$d`HGw%H29CXPr7agcpRgHODCPCokP5Yp za(`0FD^`>QsGxTsz-XH>;-~nWr<1C!%=f!QKO4bs#F~A>PuW)tJ)$2I`7Ru9u|Et| zJ&^=%YbQjy?$UC>`GPWf4gwmu>m)*ey+!0Hh7@ZHDoxO&v$Q&8r;8K!NEm)BimhR1 ztX9lg?k|ez?@SL-pOR(+L0|+h!U*G`yQ-lPed-@6}rSm)nlo50ukjB z_6$2dB&!1fg~Dk zg_5dl!|OVJjC2%+$M|0pp!jlYmXTqYtHd~t8hkFp)p)hYlx^g#sA(S|Q1Ap^4vF^ zs{uz?J*{!3i$Puey}peXBh2d6h##+R9Z&^ha&w0j)-dS|04M{PXI%RoX$sE*?Yy3l zpoC*i(pZ{N*_V66#*c)zlanYOrKi!o?>Awrlkq?KYda{SVANp19|Lt#WOyrPWwJm( zo4kWu4U1d2o}+Hrly_VC;fixOevI!)`HK{?DbvhmrkvrMJ$L34kt+SuCs=`4$-HUi zt@^{>jZP;b>4Ru=vn!=KStv>m?J!2I^S_MHvCoA&#AvhICE7V_X5*Om;@jDox1i1F z3krCu`qC$d$jlz^cj5vVfiswx0sK8cE<4ZuNjOPyZU&cA1hh|`(~$7{6V{J!gh+0# zd5XyY1yI_E7>n0LUiG@yR|o?S*~N>?`AOS=(Wj7qB0s+6p9&qWb%ZNJ0KLMdOkWme zF``|uur4T&z7i?(S&V!I!#Eau_O?58g^0nvz%h{;ubL5&%&&upNPGWYJfOs#QNL1Z zO{qGCHh7x_lW6Zo(@=Xjxaqt8U|V}_GPCSNusj#C11MMrB#jQc>M+6nyjLN0b_<^^ zP>mX?76rP1V5#vzIuT-HeG1QRO{CYx>V~x`Y51_INWP@LkGe=eUE#W#<=gv&7Df;t z@!Nne1dP_9Hmg$E;)-2@& z?XYi~hfl3z#@JM%G~H>yd@E<_eka5&8-6f91?-r4fkEcvo8bR3h<45_s>?5_V(m~O zoh}&Enb5DUK#rZe$s4mDBX^|5juDmY@H=C4LZ{||y%rt6j357&b0)GSZBrKSvWLAb z;)9z9UnNwnC@8oV2gsK_J1#rfE7#|HjaYv(7`%Wiek(hsJytsbp05 z7+5Q41`BP@>e8Pz3SBwv%qXyNg8$)u*vW$8V6>@4Qjx1voyRsm)z&MlHxyg4eM{*$ zz-O5^&Ab;(?P9@cjyY;9KB~#L$5)l3@0r5oX<9CVGZYF-zzHx)?0PC^9a#=o;sW?3 z9Y3o!xm793j`7F`!MnLTdI*|PoGv-kt5ksS$+)>f@ga!5<^O4PetjALD(_-F{D;hO zfPH{thqj^gSGO)sasQTvtAkAwJ|uH$9#!Z&b5;!$S(SFpMo6?^a^1+&*v`N@YgF7( zV&jEyU-L-(FADWxapOsOd>kruvio2KZI|Mo=08gy=@vZ_#?JGW1UJxj*%Mj?r0873 zY+wIh$B-+}L8$CRAq;$?Nn?eb8~>vojGC=0N3#y*a%#_sm368JJo)H*n>HHpXRr`> z7&DLPSH}x45xCZrCfDz*WW0f(OT)nta%I__itA!8m?5ZPy3f}~^J&A!@0r;2;i&_J zV$R@ugy9h-EwDsA7pPZWvB8j&ilx&!CwE%YI0%R&&33Bi*M9i6xF<)3%{H!zFm z8=!0s2`xE*oPpENQd zXz27gBr8qM>p@ZxzM)P%XCIC?qrCuHGF<{?@5LLf9gA0~5$ip58EI=2k~N%H`i>#u z2=wYcn)$vsiqtT(`d4giS)X?)d&%*F!ZdfT)2TSMi|P1Hq!a0 zZP)U9+3jFsMl#ZfKLe6@`-ia=G6hHj!CN=UylW*Yo&Wi$IRgB4(dcy(Lyfv}bd*FB z^ptXuJ)>^Nj4HbtBZ`V-PEnvZVCgKAjLlPj*hrd3QgmF3492;mLH_H*WEAz5NMbD4 zNm}m{P7+GqE)Qov4BWho@?gnwp~^j$#yDuxHXv#S5-}k4+;4QdKYWK)swZ zL2!S-e;pLA>#ABNx`fLizFTt%5>a0%t`_=GZ-+2cvH_iqtd|=TK%cHLB`};Cx=LU_ zbJUoo&0oS(pu;K@%qQAxur>J&o3?c^zSTuu&g`ykc*2dqnf;^Eeq$+t%!FKiYh$+! zfS&)}wSOzWm%icz_1>YHSZpz=ms|&gn%B^$y~!UG{4?e(5i?C|g7isd*P`00yNroK z5EfscoKQilkcv=>Rc%o}NRImC!{*Kk2JxoDrVDe_@siGa@K>b-l*ImWhwa^FMsfq_b#5U!Xi0#rTS9^ zOh{|)jYRrAc|cfJQxd~)GoBYBG!1%|BU%}<;g)JKyhq`NkCe0Zw9314Craxm2D)C0 z>~%}tVl636L>;HuK7oE{Pi&(1yDJ=mh;zPdN{Hi!ylAs*#QYb_&p>2&R_-B- zqtY?;Jx-;I-W0!aHq`!@%ht-!kwTzZ5E_Jm+s5RlR?0r7Ci}e#5>)AN`=T|u(kCZ6 zQHXKJRb#;c#cr3}`@`>#mTAD19sSQbO$-8={&9EScN08vQE76^t3zz#K%Yg)Uj^p6 zO=;9Tvh<>D=Z!KG`U4Qfan(8enA2&SY$`C)zF$Z&1@_23!Zpl0R28rM0GY6%zlG?F6bzrra5CY=sYSea z55Ssj0_QI|+d_-%I0C&cq~)=e1(*D;CF}%6AMC5G*HU4*swDP)F3_`Wvq-N&ESYN6 z|IuiKf^5NLt%M?8hK4h)r0tS)M$eQ+SaKk_+t`g5;(E7IIZnZZer)^Ll~i4AIKjFX z=N6ewzRg^sE#C^kFzAmEkEZSjO0D*-M=r6Z73GVYj_DsF>=Y9&@S(wIa#>>AF9N0{ zAFmMO0MQr?JTY=5lHS?ohV=sL7RMqs>6yK{B!9v1yH_Oat@F}iqya$%VwTIvxB)B@ zF?A~wFxF5O6G5B~B_c$5sDVNCTaP0@)1afS2J8V=KUJ!UzNE^a9gB^(>2qlvePQ%= z*`}e)Q`r#ZzoMiW67VO#)Sh%4-gvJ(48xvkh__7?Z7&i8lY>_`@!+V|a{M9s_=H^J zDE+l(e2V~{OL<;I{X)HG2c@nA9A;}fd&qp$FIFfkS4<6<8RBN|h9l-eF1DPQEMDE?ygxJ$lqO(3>( z#09;icNYl&aZ!|hq6$8IJ1gaKstOipqR`OMXM=9SFk7E zWMagezWhEjALz@Q|IO37ovR>RlJ?vOG3zS5<4-pn)jwQ#JIdts-8Hy{X{n>5Pcr7> zbAGd8iq<#s8EAQq`);v2iG`z{vcZkPr4ENt>}|h{y%U65H~fu5Dn-)x$dnw1!(M}r z$7r0lEOWJQY9VSMg_!g4 zmQAcSRQ3KnOd6}8o@B@?Kl;!Y5-I7mJv1aEOL9eO#PcBW{fGBxe_Xv>j zIn7NxI5^E{3r}u^Xk+-N$y`qoS8)?6vxXd_Gp(QrWKL?vrM8ZUZK?E@5G7;(auFY^ zIU#EsAnRwE0na0oQNh)61hDVU@ANh)g)RoemxR0!^*P&Qd))WjN>6x$_ES=*$eT3g z`kj(k+}i|0Wi-Kxb`qPjV`ORC%9TDz>n+BVqZ1b%M*p_UoeHw}0-4&S=hULi7C;Oa za=SuC@zX=&r?4X8YF{!Dp+70ZvCfc&tdrukaK^T6Zy-8{dO#Lf5nXxZgYG8cN6fp* zEB3UpnNz`9&4XYmwnZW>TbGcs2pBjL56J{~10Vmb@T%LZvt*E-)n|M8+L*74`$Hz+R%SkZDQhWs?e6+#r$ITvdSvYSbK>oVfs#c zacd6Rld=AVbLKxUq``Q%*sk^e)+d=-JiC};3&|~ZY}}Y&|9B+F9*eh(@D@27ERg~< zW`E`3T;n*@CFxfO`&oSRtOnHvtD7=_=>_l!7x~m_-oE-GF$Fw-OEx#v0UH!1ri;^^ zFY^wpShn+9&A!Os94S_n6Q1kO6Di&r7{M{)B^sZ4d)0+eHreXT&7@(9Jn=nW-n3%C zLdbHSc1VkD>b|(3(cC%_LE8#elPyB56t~9$nK{#dhPw&2i|A=m&E%DW?mgTg)$1a= zIQlsH=wx%KMsqIvzLWyXa8p^NgmWW+^+KAV##WRVu&GxCSBa9d zXjUfi^#$?+`;`h5gVS0JT4G|5;F>}P&)m0 z4@kvAM;m1B+UjTzQ!Uz`ba zI>qj~m+V}9h|OfGjGhTJ3I_11O|Q*u(<=Y$OlYZ;!kHz{rGdB%)NX7>$EQLM`Wi3;6M^s` zCCso>am{*2zJ)o;4hO-Vr3LLuu0Ts1M~LeXt@uqHxl9NLr`%i{ps*tn(x_F_xMCbM zVzD=KDWIWdAN$e%#WdubTOFocYRKza`t0p1lj->r1~yvA1bC)58T+z> zx$zPR3uh;gm4YB>2uUzHdHcg$&#P!PzyHHDD@?L^7KX5-tdS)Exgi*CFBTDF z)+&J3(DWGjpi9NTz%W1SMPyz7*An(S*er~=mJG&C-kM2ehvM0@2%QCaOMYdDsJ z@|uJeur%($McOB55rQS$-?>Sxj1-CwcO@*0%Eu+%`^Ul4mk7vf4GcWfz0he&RhBt) zp%}J9nB#1IGV)#yC5~Qi66m5T)<_pz+1hC(w5l-PYzM{AmcRQdY}nw594fS7;tr|W zeS}CoHq_^a(!(h4R8|?si%o&w!0jU>*YcIP7mNSbuo}qC`IutQafBmtvVo*Kcqvp% z!2Iyp_9FhcgRA8~hX4NJ(P@N?wJ~Cg$&AE{%FolM#bqKrRL-tr8nk`x z6DqS5k=7!VSPB;;XQX>$kmDzr{uOmhj7U*up%9!Uu*(vqPL#9O2_1N;We%I!m8w5REo_mlf2$ze3{uuF-4Fh<}q?=V`12f%N@JroFE3X`ua}t z%Th_MwZ{!oktJPL{Yd7~$ zqG-J8@&opn(xk1t*0&OBW;3GsA*HywXp1_2|rp=l~1atM|5SgquejEnr&bycL6euWI=@ zXoR`myU7I<7!oNbMkIP~@fc^jaF$Z8f>C|OZr)`@Vt%-7z_9vnG`=Ue3jH&CXoyxW z<>q(~i7}8ED)JWi(WHc@tEd`XAaOqLr*_ABZYho-ykVG@r}QQ*7Ne?m0wK2IfbC(x zt^-g1HH8&UhW_9-P2~w$x700!PQ_m%AMgP4<3yrW@vEpS1c%7LI!BtLjK8@$JWyJ!7#Q5^~bY;pFY zk3P^5z#dkx6&%hhjfZ{G?#4{Df(G;Gd8aDm>LlBtbS{*W=$vTj3=Clg?h!0v6?|2) zx)H^n65QU=KH?(Msm-A^#cHE?T=oIRKM@mAajhL%3DqNufq2z8vNZ8 z^Ljk4HIPHh)N3a7%L+%6!(E@PhJaf@gi0DOA~$(kjsSK9a$%$G$K9Hm3@PkqeuG(e zQV3^8uP|m6E&{hkv9Ue`BR4?hd+SlVsNw=F@fbpP^X-zkEA|Uaoo{@lWa;dY^JRo+_ucbkUEcN-4ZT<-W!5aJcb z*(e1V%>aQ+gs#hZ5Ep4JSPVAO_$NDF-0`+gWGO7VAf~IREJT-`N=_WA)YfMRiAJa; z*x{Y{YwCGiRKj66kU7lNrtWbFYSYkTudSAQOCy+nmS07>Vno5gBbLVh0~GTS;IMEG zW?@u0URCk@as1iHfBC)*2v*~>>|jJ$&3;g?tD5~s#{ve>Uwj(Gfr#NSGB(KDUH0SP zuA9g;zh}EQnVI3gE(MhH*U^F;w2R@Fjyr&~w>d2g4wK9G=i*?*^N^M7`?+J__!qnh z?(Vb!+HC%!@utfDq=ewh4P!-_r`E5nc^3rj1`e*kSo!)ScMb_%y|oEQnSVpub^i$b zPQ|+LUh8H;2_Qo(8A(4N$8EGnyTv$V@V%b-_LPq0#}Q;!s2f;UTuR%OE#Wb7=<^1w zIjoNXAvVZXJ*#5-8h&qomn~kA%LCRMRBHKKgO*v{hylCa!l7yt@vWbX;VPKD1h*Vc z(u)+uf$k~VM-|7Mp*k(L#p~Y*Bp}XORD8;e*WNPxPdaHA$MF@09pX$^9 zsu~=cL*}3H3}QDnV`gs&XlFLCkYWN!+4Cm^<+h*KJH{C-->Wg?A-84NFXQL znpPs=zvp!ms|Fsuy2gcv7aP>kX?xu<2Ma|dYS+4?%4X0%3N&Kt8uM-m7B%&Qs>6}_ zhLsOh?;l~k;#(S{E^!oSt%!#xp38p_-7-<&*PRYM9y=l>%rr=bmO9_J)nOeRdS#hz ztLJO!iELWTW)w@hKo~OtV8#kkSacY`T1{C)5nskeHe@af_CnvQ9WYYF43KdP-K_!( zH@F<&3^6y0e`gD-UO?PgewvtGv{Q1mQcp`z0WUvot+x$3e}-XpppIyR?O` zF11pPY?Hd(h0EUaU;`|2vUL1RIS2A04^I5ppqmM?03fI$yX0$ zI=TkmR8#==y)}`(oVx><1hu@AaasQn3BXy#wY#O9GORl2Mh9@xKH$uYk6j2kzOa97B?+v3o?f_Z!CvUOa1msqt(dw*tq+ssD4$*kxa{FTmcjT=r6-TgS&& za~}37clwR)zC`m%9#gkPu0Zvo6hf>`K&c1tGrd)v_oUBTpZlnMP0==p#_d;M@1{sJSxa@8J(P;vx1B z7^H~qSN5#l)2xue_~sYHj;u~p8<1!A#(T;rA&CgF0c8g7@&ySVR_4 z2!^xb$rk6yR(wob2LP^%VJ{MZV0tkUgXuafAhUr&evC!XZ z;s;Fxze+*R|KC>qa!r>PKZqc)Og`0KSf`cWwQ?9Q(O_phi{-tlBpZ>z$eI4P2$9(T z^D-j|`@XE|L{j4^5)M_p#cbdWkPlNKGde?M?faUls#b;RR*tLovq^#|O0vsF!q`*` zh+?McYeth76~(yNP}*i(rpHOTsNT25Fjaem@#*5$-+2$ZxCTb)HgC684HB=Fn{KdE z)f^nrnLKZYoD~-GbAz9x2_&)CpA|tKTJ7@ODu9_}MXAI<5 z#=}XIQrIB#Gk=v$8r_mxhsT=fD){|6gG0F49d>Iu>u_9>@s>qZ$rfAq`mC_E^;5~a z)gL^^fvngFC1zG&D^S9XwM{~59il(PCQp$I+jdZ$fr89?+cv$DZuR4w`us@b<*}BR zXUKEmzs2ACs;Mx-bw4137;HuTb)aF@(kATu0SGkvjiLyv%HD=& zHue_8Sxe=icwWEE^Bqn_X$%O~c2W8CL-Vl03(T~>8YW5fXCB?l)TpZrdih>E6HL9N*7gHup=&kdR)T=KUGv5{WFKMuDgqvh= zEN&VZOdn2_tV6)H?W9P`D}^5FOX=TUV31LPP*{Sv{<9xc6#ri=EiDK~Mv~@~3&u5f z-z9CX-z&h)0duLVCwj?yE9zTViri29OA}Lyny^89nD%rBHF~7DVLxD*T-{^bq5iEC zWM@|y3Aa>L1D0)dW-0{5D1D2c=bxeT;t!ksQQ5iMX(Zf=D-HQSm=`6nwh+|5$m$GG zFJO|c!4GcxYL|Gv7?jC-AB*Ma_-Q%tXGIQG91-@Wn_*vP%P&um&eeTE~+T;72T z$+tV%FNSTx31{DBS_q@0Isnll$ML6}YV)SCEFn6?YdPk}%#%S9p;}S%$#PRS0cXUX zTdv=6=s`m3Zv0FuB+=lMe9?*;Sy*2(5%RUY?h59Z-SncsBoUAAvHBbJU(iDpiOu}@ zCCOh&LE9b9==>}|J>$uaK7Z_?k_*W=0f&$?XMBkLUhTQdV-ZtTk7;1wttZZA>3sIH zG^g)zL)!IyhwYU%v!=>R+S_@v95M+%Dd=xfDt!x z1a-jv{F6TBMkhESPAL~HFIvE>&nnUHTtoD3Jp5=>NvOP0_V7?Majw4)-nsF1SFjLQ z%)H&aLR>S$SObEftVwnIBuh0H7Uw;7B?-am6|5Ceq3J1%Gx?ETp!-F*T#sDJ7jmJMz|h__&)H2N&7Tt%Mj)ZNpUjU9*@Gz7vAt{BA)O zeN`59ocgEC>-}a@m%DDcBzhBzrGh=seIPJ8)iG)fmHR6Vh!{AsoOqKGx44QWiE=#v z`Og@iWVvb(lsRpWQXbt*O{zU=>mYlU1qctfAytethph|64Rw1lk=Atj$S>!sTG9hG z!VB~YfhB~CF~gB4P3JTtlvQ7NGR312HAkSjCsH>=vGIv50u0|MHE^cKWn;Lw4=%`4 z(XWhcJf3~k3oVF;_raS*2bq!IWGc3GVkVWD_F7W5FDi4pIO*J9>y@)^Fj)}K%Yk8AZHPub_z=*>= z$j#tlTX;WQqjl8Z+2_X+v3Mnf0lVlPME5Rq;3ee)h};`qmhI!CAf=TWhw3{gSNEd# zGi@fZpjDma;Uqn?)UNeJ@#Hu{Z9Niv_k`;nEONUmV$k{mdNI8ceDH3Z{N|w?Q2g?2 zYzCZofA~fb6uw{wsNpmUl@J`ybv9~oD5c00EMvTAd}B4iodz#wYV1EeXJv7_k26{= zjYZ=Nn)$V1E%&<7Wo#QDD^Ce_zt8Gl*lN6140R z4@3@knPeG*n*da2zL|RoCV?cJnPM07=AfH`#a;m}F*)An952=r>Smp7r#jtkJTKN^ z-ZkekKrd*{;tU$lo2tTs-^DeZ#=9VgC;mX;{nxNVWHEGS1N2lmZvy}j0>rBMIN-ct zp&517DI3BR%;XZdFQecc_YB@9SL(|z3{@sgp zqylD2xivewugvk=vdC88X4;kt!%;Wc%?^G-JGx@)?3`)a01LIkQ z2~X{VzSBf9ueh#5($B|x{KqrWrFLpT4S zTu7ip7Ehkxknw;c;v~&`ql^JZK+hE~dj97LM_Am1ZpM%smxC;dV_c<~>Qmo*H}$1{ zoebs6ETGXkAJ(9tY$1*xJurqD4LcMXI9Unmxe&ugrWiuYo)Q@{l8*&&o%t8~D*ipB zm+Q+jnWhbRqYS5wX(Oh!K28VWQsS zn{;OR*Z2P3WC~moL!NeVJ|pcdiakkH1D@_i7WlODC){c`1 z>aRy)hewzi2N<;7vlEXu`fg>}2Z;r|z~*v?Z$z?@UcmrqnWMhOj^s3nfMOWsX7(l=UqQcFfseEW<&>}9VcIRr;g9<5Ch*ZuC%*e(dib>Ku0sUr#C%L4+g%5`&b z4U0}dJ7kND+vB3b16L_-M3SlOo z;P7oH$5oXtJbQbFp#1KIt#Vz203q(zF>2oZ^8aZNYNxDGBH)fcjGjl35;m_*UZZ;! z?^EoMdQuc7hj$s0d`3;@_XcPX1aYMphD>AKYC9<$JzEISJv8<}LQ%-AD^!27q(R+;R@hkY%EHu5cCe)&{9&s&9K zkrPr#J*i5^kB<(E&B*)%v0uR>Mm7R0mPm@Dgl&K$fU&_2}FxH(N-vvBHq$w#3~H>#rG4~e>95_zjP>Q3R2wszne_!o`R z-WqGdrI3UZ95Ov#G?Cp_XyMYStEr?A{xq(p{%i_-8gK{)Y zOa+E#`kC9$+y8@K>_J@!k&AnR@{KWRANbB7hFV`%;w|pJa?=t%ZX4nzNKH&du}~r0 zQv`>#yOc2Y+8Ul(8f$#s|w|G#&NR+WvBARWcy0*2cZGLFel}&7{sVrq3Q3FxWTLRnNUyL_SEd(-XOvs-xUOIIi>>y3vwCsevPkb z<$31#Oe@VgO~?W!%vVE%EF@_$93&d!-=1BiF-rD3fg{ZzUaowX2aO8JJrBY%-D&N? zYFx!*h3q4Vc|7D*$fACJ=T5yFCa#E5f>abl|;r82X=%&B%j^t+yO!~*-EEiQF$ZM(a$Xem(6 zC4ZYZdPLPMNdhE7acIy^S5f`({Svls2g+fVdvhulW=6OCs-l%_q%s1Wp%v3!wSL$o zO_grK9R6f_dn~!-MSy2c`TB*$irKHx8FL&IlDN~ z^FTEv5nXdOdn~0mHmF8p@jB4?sW}xSOyY&((Po8y9;%L^?D1y>T;#(9eE^WSj>-`= zuFN9jm1X4aZqx8Y&*l!09Ml}_d|D;?}K2^OcLti4=;U#CE#%7FYHP_8Tys8hiebw3p(y~PDhB@ zk4&}RSCYR{oW@d~%nYR0m=LL^dId}Jp^VH6Rs$7EOl@(lT*?YJn zm`zOK`FlE%WUh+6pr@(mEzbKXC*l`86j+UVI?CM27}0oo17x}!ON(=JYhcn%lQVmJ zy{hV1k=YexAsri*QM0IPdtr=+ ze-K{=N~>QKt?~WahHC&0PyGlM?!g~Hjp>RoI=$ojDijv!QHge1^fV$$yM?h~_TLkw zrhl|W7mfkri&XpiI4|-r+Z`o_GwP7FU^a=MnX@)I65H!FunZ$vZc}!_O8p~YuS1q| z0fuEk=TCBgin)DQtw>ZCw%;A~(?wbd&169B&80HHK8IkZ=@Vxt!*-kc>e7j6=u+>L z7?L?_@4(wy9q&-0fI}T@VISZnvLiKM_<2FPLat7Zbh=EB>Qu+wN^^L3hz*%pPM+ zK1^0D-tK4x;o}GCk`?A|h3j-CmJP&g?Yf+A57x2dRa-}rzX{8AYe|NPg!j5@A72`c z?0pLsB}}+44Ev|)d(4TC$AGm{Fv~Vd`{6-ty_jRy6&uiGlDfR6%lYk7A7rganaK%W z!h+mkIT@oY7i`)GH|52xj}FRb?JX zr{77nFAYGryARha+gMTwO{3?jG8rjDIrxyf=rwx31QY6{;YYMn5e=`y7=H?Hp zS_RxbSG@rS^)if))kTg_V7ov~KWo+BO0S)t8UB!v0M$7$Ri=H z0=ZcvI!*`s42GO8x-aWpx+f(L_>wY`v7iuWyO&gvXs+|$J?Mdo{P|_$YK#($ujT0T zo3VHT@6S}aP2y@Q+Gw#wgcJ6wZ$6;6?Uu**DEKo2sYEh%`VK4;$t0o2gqYGc?2jH& z0`ATk7-3{`#LJgRqN}fevi}D6k5H!B*%a+#3N~?*7iM}~w}YEYd2m6RPkzfoUuF2+ zqn8FbN@|ZPDd_`%q?u;Sf@IHE{L}j}Rzm4dsDYM6O+8%UjM)&TZr>xRM8k5|i|Jh87^gVNFE$I;tsvV~!LZDv-Xi2ow#}prmHepENVQ#OS zR0^DGHNE=ok5L8&d#}qKtx>QeqH3QP-}41k(`ENRvJV=+k4!U)1%4Bsf=n7 zyW^C&4XO`SSrQU6a0)Ytxa{DxS<cBo^lr1xpZc1G0-j~W zRzN0b2LYZua_>#B%^SN$6=JGaF41q$?W&c`0;%%uU!$79@_NGO5^I|0Y410^e}EQq z+9d8?Pr!p!?CqNq>}JQOX{D2}_!1Uk+4L(ym0k6KO(1CWCBZr6Py6SE%>2^Kh{eHG z)4rF=RdV&14O}f@IHtHy#>0SVbRNZvbyBsV#FBs9P4?+kPful}1-Ft9QB5Qp+(8OL z3PehFA%{v_t~)cuj+kF9occYFjSc0lr3N_gdmxPSaey+bZu}S@?@7gHE#u{kK8u!k zP~6SO1N^&(O)C-Gl?hDaB_*n;jerBRXIioKF>oKGH~A&`EQ$m}mueP1Ze>=hEHHd4 zLB5m1OEO%(<+<=&6Vxd5FwT0}ufjh=Lak);pXo&K0hB@(5w~r^?{stntt9PM=M zYFP=Sr!40GFL#f5yL*tHt0f(?khBY+uVlT&o9BPL@=AC@HsrvHF;Gu;&d10Dgj#oa zKSLt192u>7Hu>SjrPXs*Zt<>0KW*{AIjSyWbF9)V zY+#HGK1Fw|eO;1@CA+JHV^r2Q1S6~8FWmr7gQo7X7!;?dEIPG z%Kh8!APYmGRjui>saUPRw=xNhg`SI+Gm97C`e9!WH$l3Fv)lq4z=__TJCvhUBuOtm80 zGFk^#U&}*LG9(~+6-!R)zgOga243ie4K?bDD`qds!OkweYMuRMW?8$Ta010f2THkV zH7SgdF}0*Hr8`9!8S}^ZcZhL+Ip$Ep~J|M5v<1XRxK zVyx`l4&qcN*yNHOoD=vagW8oNveMZ%RDl7N`caU79{q8f^g%3#0sv%@n^F2v9ZaE& z1BZojY0QFM3@Nd~YiQIRv&5^SiVlF)snp8Yi-0riVyog=#i6>ORPdze?l(LhXftR5 z`SMdw0u-MuFDESQZbma3jjhFi6;}QnDAw1SAJf z4%b<+v|^=e5W(fcq;FaKhdnAYwL=H}sNwHkUW?#@jv#T$JyTk@jCCRt2oJU1X0%~Pxjf8u#3#e3 zR5KX1bg#M_siDw6k7GSA1f{I(P+u}#HWi;Enw1g;|7B@9`LU@8-6J#E!^HudyEd=4 zFPT4am|_^ndu!IjCHq|--!!pcI+2zM%(3junn^L+(m;L?76Own%^(&RZl97f3Nh(_ z5P*`OohJG)(Y69i2=~-ti=}5KGr*_{R~ubDz{;TT*yr3$4<}tKPtfXszD9H1t*s0) zGd1IzzNugBR|1S3C9+ykhcJG7E%$58+>pFqrUVw{xW%bKxfDwT-@B@~BuaQc-f39< z8zp;v{X~A(!e;hPI1W9gpMmU(tR<0`RKb_{l2?@zuflA29Bn}Yo;9>=pNrzLC)`Gj*u2VB{w3V8^#*`KTr z*6XdLaL}}?Ha_BV#JaKRvg!vUOao?Sx6S*DE9Prvyc&X24zkOOSdt2ig#TYaoCp&i#{T_Xxk$cT#V_`h%as~79HJ#vD0?g#H+TRaG( zaUGoxBEfD@+$mX`Q#$TrsC-kxlp?kJ+!`o8GXhrZ<8w%7t8;uU+Pt*q zVzk|4+>~#U;GIY$Tmg&Tiv^C1vTjt6P8hP);k>A{vp~4O`z&*5aS(pd7G%6yS%|F? zC8-`|PIu}xRJuA4ns(_>dpdOqfU^97Aa(%$+2}QC-7diDTTE!zZ=h5aqWVSl(6Z*k zp#*!N2-GY`ocTyEBW3JBF7Z+9NYy@Z0L!LEhm_6pf>2f+W&7l}iDMD=x%X3KE9ITD zs<)yL`RU2GiTD-^)#ja)Owt>RU-`Lz(T%mnM$sF1@Y1r}k|)NTD7@MaLGts6T1_)E zXs7DA&!NEB=+>;e;;*Avnb-va-5170+FR8QeU}TwOONRyw<*9%xX1I;>a9&T;OD*S zFrsK0cf*(rI^FS=#aBj4!c~y1@q1~zz7<1wCV1kGQYG({$E&JUUFJ-M4#+ z0Ph}{CF+LMYhV{WOApDsa^*M{~Zj3#r04sf@%9x=ZI=`!a>5Jumod`c}* zUIHJ#^ap*s+8fSW9xM3G!&1NXi0l_@;_^w-A?)NwPf={I-EtjE~;GK`* zKPE?l$ahwpKqPTLE?YLwRG|E!7~dj1Zb%|An2Fv-{cj+F%E2MJ6o6f5231#f zH-CU6;6kWhC;hiNx-99tJ0hHV*7t9P(6Yqj&5d!h6npH~O?|8d3ir0ee~WhSgqtl^ zj|ZoRy_AF(*z`kVw8e^6D*>5J0QwQa@v0C3sZl63L1H~SHSm|pE#5iY-wd1v(?PXy~iR(KW->#jtf(t7*G zKUi2tE?FBJ;>-})xoFP*>M;iJxLG~onul}cWDD86J2qUh!ztdfeK6dp4#LDXx>S1F zwX`F7QW^Sm-C*>b91&hq2VSi`7V2n-dFm2z&+G?NqDB_DZOP2{p=z^g=NOL{5!o8| z8Px)Q9}@WbLx~^T5tsIa5HMB85Hq?8@!gL4mk}`V6~TU!)t?8L zgDlR^aG(lQ=Y??J9dpwND8eWCkw*oF#qOG=+^;5rKwWwBjpJHU_?G;QzlxbCXt>`$ z4I=m!25QZPAP<&7wz-rV@Ze<+&PN&;urw@bt-9s^VkaUGAgkI9li!P9-A-#k58MsA z59`ivD4E=?glJR)5dRCQ_zhkNFnwSF$c4e4NR^6Jjq{#JFjhfzB`jI%x$erx+m`bi zpaB+INM{IBB&gQOMunYa#9Ciuk6sfMR#R4NE%S2#wT#=~={0vkda`}&MB~7czbQ7B zoDWM0&5i`H;;S1CnBZmKz?`XAhyZ63r??JC;ynxl@0xBoki(RKJI=jE!C3PefA-FB z=pf4oV(Khcs*bL2AFfo)bi0NGhq471j^C|fg89_ew>EI?|CF+?+*Y&rzm|!4h+Us1 zTh}(rWtF`C^D0tvO|*%s^jAMvJV%Vh27-RAN*Q^j>LWw1FUu{-^uvLxRb0{%onRZq zkb~tYMcSZ8$wSF20fvX+k44UaM%l0X27ir|M5$}p1w4-heDF-|X9lwGV8rcB2E?KbSI9HH+q%X%#qgp1XcVA5|LE z#eDA2ApCFBuc_c~C8cgH^_&*5`Z9F!tnTZ1Q*X3p4eH{ba1{I=XKT61bgATBq1FGN zL29*Kq8c4H-37wDMZm10i`4Am552D{X#L2`l7IVdAiS zh)Lr%@t>$}*w>J1I#OG9`KZ6WJO2DY($MQj!CQ4<0JeVGuiD>}cGSf{s+%NgpXmQ< zQaSs71dfuy+=(6sTNlJdE~W8|eglzNwa-tU&lo9bUWBeLNN;`7kU(!TVs-=-aKkL@ z%`;3Ba|g@%gmaJsMpOEb*Uxf5h~}vfMRnfNHMGqev%Cc$EaJ6uupHa2wSL4aoLMdR z92M@O$-Bu&_$T>Oaf#nLlv51lG3t+XVQpnvqbt%_Ic1Xs_gRA8dN=^(_n$AV>74U_R3bWGh0A&hML66QfR2Hc1d`YhFY2v(N=?f=!gFXUV{a^%s&1DxnOI} z{bcQ-6%jr~@C0k->%eYu0S0Tsj$K~~Vvw&|k@KJk_C^XBip4v=yuP^|Ur<(XNj2s<@heF%Y_yRosed?weoBHi$0C#^s{jO0 z3pYl08ke;|HR$i*1=Lw94a+h5XyI5eTEirGS{FT%09gcH;ir)~uO};1^}*upLQ$7e z%tA&|_Cm@WkT zzaMY{sNA96r{vtqJ z-WJAD(1o>8_udu6>Pb$;n91KWu3W{#wi_g>VpKzIp8uF$7Vuv~ikxZy!|5ozEt71x zlJHHj6{z3;GJY@BV2bdESgh)yL`JvTCxXdIbe@~Q;r_6GrVpdAXBr|zCsU4AG%M1& zgBks0lKK^VlWjIiRGdf{KPZC(%bUi&+Rj}57kyEzg84HG2Cucm(!zdE4V-j-GSY`vD4s)%f^+1;B0WN}pQNl(*CA9&iG=sli6FtYP3imLRR+~D zyc4fJ|KUKQONz-X*w_0~N;;SNM4U1)8m|9KY~0Ijhj=rOVp=I3vcyGGc?xmuEotA& z^4cU9bE!tD`l4q+XLz5x5_&AG(-#wAd~e63vL&&G7N zyaa16W(BfEi+;}Yv+k`cEnDGhC9JU!k{A2q-6!b@c!9tA&Ul6%71w++z67twPyHjg z*5TNCrd+SV?St~=f7m8*kTGrl=~;+wl@Y#b#oJ|#D&BE6dXiMM&q|o8y=w2rSB)g< zDchM$VRKZRgOx{uKV-)<^pH;l>K@k!4uJwXi{TqSh3(4*@EH=^aUZ=T7DaN9AZ+jF ztPjicP^bOyCE-7eJXrEGv(VoW>tVpqd>{AFM%B%bYsXN_)6FWWpC+L4K6XG!>}5m+ zYfjvu#roq!!gc4sZ15BuKki3gMz%swIG&dz!FEsQ&bniz4a_)~QJ;Y= z*-gV(*z;wOnXKCg^xKe-O31&@*#{GhoFP}V)d2-es`*py?@?M@dpesN-Qt6rI&5DJ zr5oI#?*7!H1vZ^Rj|Zve-F1#LBvQ2#4{E669XC2uPhriIMHa= z%HVkAy^dMunG)2MW3&d9yFF?)giN1lB_z}Ki z-1#3U#e;}*P@zkg-8uP|ROc`G71m3?%t*u&5VR)}UoWBxZkWtF1mu{Dk=2K6Bdn9*dMi`Vz1>uFD;-p!iIWlH2gwO z(esp?i@@wKw{!n~Gyi)W_b=!nn&tdJZBOLi@WpUH^-=+NTT+|$(I#sI=Z_P-D)Bt+ z@uF5e(l*%Kxu@%g$AGRTt(`)`>R+hq2>CbjC+ELQ)|KJzIQLWBk#((9I6Wtir$3$5 z^FWxbqEVV6m5~9`NaJyl{b8qlChXvuFvON;gqFKTm%jMv)?H`!m_VcrJu}j8u33yn z>$c|o6!K18uWIVg!92b}ObM9-oCBX1W*U9Ee(<+}_y`Zd*n9|8tsa#XZ|5G*$B>~y zqG&;KlSC3;s6qN%AK~`85p0{Fb|Ea2h5p+{FFz-S1~s@0;+`h66*tx@l)!;L{o|OY zUbz_um{|3luqLmydvGx5u1vxd?zbAPz3RN&8W?PYuYpSH9H6}_jpH=n?dJ*a=sqY! zM9SXtrS=1Gln9NB63%NN!R^Cfo9omDtO^25E1faz241#Yx?XuNW&3!5vMdsHC(t0} z*^g-p?8k^b!ypS-PFf+5w`Vt9yissdCW-&O7^;^iZ|zYjoRA-9fEWt zmT07Gj8hc$gQ1En9tB{qMKJg{T4GcSc?DjN6ePo6-bJu?EY6cuJzf=y`@?>v&po?q z)a!nYW|y0{;0bvUcG-5^gm@mvhQz=2m`Q6%fYPD~kxRH5t+A&kK z@dDAT^6oePZYqa-bS_p%QOYz0zl5#EB`!EY2^roUl%goHo0AC)R+$q|={vt6Z_0VL({pbSf% z-881JOGaU#=>e*`=2*@rq?%_NODdT@`+?K?5qQ=!ggk(p7j2@6+j&1{|20azyiBk_ zkkhsB1Dk}&-o92+GU?uP~$!j@<-mZ#n2ohKqg#}6!yQWuurJI+l zfx^%3X0|(ohI4%0ln8jEyK$pLy-h2<}r%L&dmZSi(1mB}y~iHSrVU$TPE^ZFs@%XU>9Xl9naf=&|Ib?0C| z?NpPv`LkAd-!n6l1r*4bKcpGkwpsCP*U%XKaF;`YR`X^VEqw$i!uQ1l|HJ0kkK)nE z`OVepYeEkcj6Aqe7;kAjN4l}5CbsWoUWz~=?N*<^LB$*mjWqQ>;iRMfR0i87NY_+t zEnbXiB$VlX<`Jj3$a0nS%vOncK$?||^1y{o%;hY&j|!kbskv+LNW{xMs}D zi4(*$&{E1?^T!ym2kSCXu+`Xmt&BZN&uKH<$P(<_S>#y2Bw3T&J2BZN{VfCYic?`3 z;npurWc&AWNTzkLc8wD!urAAKbJ#*+Rk8tzyj?N0D}N^L6M|tlhyri3^HE>(jRcAg z&ede^vY{kD;4)XJsS|Ds1#mx4P?DwDtiA_dW#Hcb7|MMToLhOxjD8kwLKC0h^h zaK^_X+=A{e^nBB65)g<%G%;HMCMj2Cm>_}l#GQ3>T%6_>_YbV_GKHax;H_+xACHfO zf@h^@sMM<6JIu|8}-hU>cK!+`N?@E2fr&5No%x;=d@8@=4Wac#elsP@fc5Sxwo1vL4c;}r>T`76|) zTZ>u-!Hk2VZfBfXzd-43m|@WNlQg13w;&u%pzgjqqdLvGnIFAWn8s8G&7<@0iAZUS zallC3!?LTSe1;G3xg_XCiC?+-{u4`5h|FKP$p#aU31G6;=WY$wAp6z|jya>0FwhM{ zzv60pwb#blj@+5`ChC_I(yb3=00dYpgw_pMHDZ?exP((m^aU{~e$r*v*JF53>}ozgYsEw0 zPV0J&|AsJH4N%8o$fOsWtuts`fIOLN02k~Zyq&bsi?S(4U7J)(S;JNIR3S@`&z7!*oy>z7 zZP&+~Sc`}N=|zyqP#l_Ym_v^aCQNW}1;qeopLXJ)71ftR#78C9bL2W;{Yo^G^&9Wp zUGt|2iU0Be9>)1+MkT~+4f-EC^cFXJ)%Jc9t-w${FOiJcFe5tE>|QR?d*pO42nC)2 zF@skMaNzpE$em)T_xgO-WWz=6{MyZJqYm2Tcb|yf5C@|!0U-N>CWEHaR?59m8@j<; zbMyK_mezB`EgIA|3|dG`2KrlcE{FQi?&Nc=p9(D9R)OS7h?EzFpJ2I_+Z^(57uw)0 zegXJKf{}YEmLnu;u9#mqjT9Cg)EQ-_=EDln?DqfEsm0KNlLLe-Jmf%c@xpLdjr zXPiQMJk5(xXaHmM6lGsR!%>J=&`^+xq0n$YT^7`+bAK*z30=~wa^Rh)MKVtTlFgLo7RX}oym#(O{8rxhxBf`kgK2d_QMTgyA1QKtfC_Z`BjY>uvU z&2aBsC5b+GB#If$G2rs&w!^hut_?Z|x*zlgoOf-<_I<2Tp{*pHj|byg*h`KI3g1h0K16qK4s|b)5tMq`WB*Jpj=a+ zt^$wyvhk0q44j&gZyORaz5nMLcTha}M57xH#>N_h6(8ynzSu^?#KKg$$& z_pP;Zh}<|)uD7q_!JE*0OS&icg<1e<``Cd2=r;04{cx?j#f zQL1->=j(WsdA@)bznw0t8gwpUSc_F8#GneDO{$X zhbIn+HjYC?Z|1BFSFM<9N*5WC1s3k3Gub6|jz16BN%B4`J7|fW0_77>PWJx7Kw)f5 z*$*>ABe{z1IrTe-g@_NZQZb->4RG-1V8&lxnJPe0`tqfW9hIZwna57` z0i%@fd>wmjMD!3~&zn!bXHeVUZ4C=;md>Wq^kH?SXwz*g`vi$l-Vf`7FMF=}TKrsS z*2`GYC!Z7nd|T{Xd6&)_P4^wKj>Z^=4iVx#nm+*KU6T%%eq{~i~>X690F-DG)lGlnD${$K``+;xMm zWp@=`+E310;Tzz6_>w&ZN^So&=2jUYpJIv%5&v|ri~rq#<8H2+Gt`?|mE*ceL-f@V zB@L|(st7V$zFT0}tk$;9GMr3sW=S^W_Wk-q0Ln{RizF|XZCpYJ8EdY1q^iSPk+OU? zz2xY!%1ZhaRz6Je)>>Yec7j9YASOt_0zXQQllThN7u&=t9{2k@ulj`gxT3q+Yr>Z% zF3F&ZE;=Ka7Tu!m?vzOUWQ=T7>L#phd1YIpV1I^^CY~$Ra(qCmsc5-h15BI)j+{Iv z*7b*W0Wcg{mz+5~TzR$_DR=ksDbLxQivzU2&Z)-g33euu_6+cIUZOLusn$fZ-G}t? zT-DLfB26-SbcNLLFWj)r%Xs!Awp<&kz|mQbibA8tm9b1LZa~;~{JxPr4{02lNnrWv zAT3w$FHrOSp9b40bDu3B&;ik{x+>*R|MUUzh@;}6P&AT{Wm9)oQk#T@?8IYYC`ix& z$|f2U+js}pU~sbnK~qm#PRYNUHPMJbB$x$h;B4(uWaK|Qq;}ZlR2_=mU&$BM&#UZ> zV%!{1mvhVj*Sb=Vfy|E(0x!P^A>arr8--HnImyv7 z0^!1JOql4XM-f~BCS!*x+7zIrY*@*=$(0#~0{z6ab-J!9>4okN_N_y$J#GyVmrNLoxbz*$TP4KKu;y5Yayrj#;*4X}&HE)WU zY4c4QJ#|m}%h*-XPha5#c_}P%$4&tUmY_>mQCb$DV|DBNz3|(rj1)y&B3sN_r(9rV z{M>#Hv~Q2&FRsDMbcql-B3Z|L`ouF&Dl|-fXh42kd|DY7Vp%ri>(A=AfxzDK;qR>k zodI{R_S-$7RjXSa;*$q+RpRx9C@d2Wn5MQ$nEsc$9p@=x>Qm$2P6o5H#~{7X#EVjL z8MPHNU=wqLOTMCWt98{Dx-WCWDhA71_AbgC zIy_2Vu}q{=%zbKwbk%?SI*9XXwGt-l?>%>_9%rZ*UjmW4&T_-Q)~&^&q=|8R*GdZ( zKt;tDR3BT+kLhuXCp;~vyt$&D^BPr2$pON;5LM=lb<|?6YTZ!%Zs1>=#xoCx6Vql;|@%%H{(bhQ_Nyar#h1kw(gczwWC+PbvnA+ z*`##DVSRw8yf7q-XJE@A#Aij!#Q3+Dc zL#NXPskmx%?L8^qX{!&eyCO*_CysFPbaNoSn$w?;50BRCX$3D5GHMnsp0$XjEnUgw z0U#6|d)v=M} z0;8>5Jgf}Hwd*>i6=lB0-P>fnrw^@->jtBXX%hJaL&2pSVXjAayZ#W=or|UB5^5^w z>BZ!9V3ZDVgK7j2ftyrEFQNTZc37Q8LUu-1juLc57!HQ34U7IKNV==B6(mKPTrvsJ ztlRJ;RB|irB%!>EaR8?&Rq0~50v4z-HT&MV2qY2!koWX1Ohiz6Xy~Ur4XU}e^Ghn{ zYZk7q0}?*L(10&GNW9$I*g4Bhs9)LmPbSYThT-K%uL84+BGEpfKN41CP~PZ{`n9Ls zmwb5x84wIk@q={}J+Y>)_+AxFUA|0jxV44V+oy*%PS{V@! z5{Q1^M2c9el`lu!r&t4~YG6EhCGdVA`qwI@rojC$Mq6k`5_u~e<~K}epIZ|co%+nt ziVO1&@YYZ&d&D?e7|G;2fSaKz_Llyd6N#Y>zuWF51TW>9w)W?Z0iyTZuXLr$tlQw+ z13uIv`x6KoXW`l}V438c8Vz9%36Uk_?iX3^MsBNyJt!An#es#gw@U?>=C+#`5^d&i zVuO3=jF{B-ri;qV6i`R(!-yFUIiowAFbKHHDEQbRcB&IbMH4Yx0b*AYRa{g2M}PO} zSVsi)Z43~*2xQmAiu&hw0#-(M?C}v>MdOzp(1qp~xDRRHv`uCCfIrzdj%ttmn=SQ; zVjL=M@F_@m2a}8p|BaCi52B11-v(&yFGpfy0xL^~(09+Iq^wArm%V^$f;C};E|l1a z$!81-lPrX9%fS+oTcY=UI0hga81hIuK}(<;g7H81YuECX?!|^t+)aZmjr-4=x&U#U zc|shvf<*$ljEQ~w@6?cUo#Q~j!|*gZ5BMJ}scoXLnNmz3!8MfSNpjAv#72}SjK0uK zj_Z!9cJh2lO5T-(gsUWkgxT1DrQz%?K`&_!lh!Yf^Y$@(k$J5b`P$%RdbTV%OtH~R zg}S$a1bfkz6Ir5^6j(li8`WwJu5$9#4Mr2~K`@&QVCNIR`x&`_4Gu9}HWHe4bA`0H zA))l0Aoo~7U}_!|bU_NF1a1&{d4vk#w|0NfRJHG;W>#`4F$jChv!fh>E#+#bc=-z#Q~2r^pTTohjuUKjEiCQ1%JuBT1N85GHG#bxoxlrXO)FI9{fM&Zs}^tai09AiY|Xe!XYgu-wlD9JJ-`DSdp8|azI{d@ zcyf}$t-R-4tY4AZ5r5gux~T;@8N0FHd@*vlsPg^14IJi2l!@-->TjLk}mC_TqSH6KtuZ5Bu+QKO<>OJ>LlX@lzuCgRsOIA z7M1Pz6cVyTFT{m3RXRoT|d#;l`9h0q}XxX#{iOTb7Agd&S z#Kv|+*#>e~?kTck9sM2;uC6?18cF^P?g zRz*32dTXB))vUPGaKJ0G{Kb4L!PLA6-)9!^5bAU5b2#^GkmHJ2#8TdhsX5G~n05F| zU4o$?LWrX_BdUS3=k^n`V4p^wUWR9!g1SU`g4et9)ti~A_cBqV$5D{ggV_?wPy4}4 zN*y@031OIc&#Db$7N& z;A_VkshHqPQXKWiE7zy*SE335xz=5sQ>rh)#o=QkRTO0V$^B(wA+7GekZykmF#$@Q-DaKtg?My9s99{;)lFXpIByiHeuk46+6sZ6DYsI}&RY;vx3&zM z_0U}!5lngXif0vyDQGBBu*h-1YVs94G4~I#+-x;~f*RrMJrAlw6ZDg8#}l}8NlA(I z9b=7#uni{O%4_`J1=7EL3ghvm3k|ehbGZQjKLEfPh2^ODuZw;zGL3$sB!?{>@Ys?9 z`F5;jVZu!O;_TX+EFex!<~L5j(_koWY>LyU>Fn_?a{d1BgNNul6SU%S?#MD`|27Q+ z*A0huegJ$gPhkfmdEoC3`sQ*SOQ*gfRMKK#Ify9zwkdbh;mkorm6~G<>Bb;enER8>`|zd9qG1QE|=GJloB5KXLxdR!Ry#B-_W z5#)jQEZ*S_H?7Wd1e@2QuKyKGmnMD@9dyHuNoQ8w_`)WS=k`FU(TY5T%xV$#Xr(r1 zW)H?3!Tj;wHgz_byzMz5RpgIE$-&E!N26(OlGQIDViG&v92gLqKWR9wu4ub_9JC-b zMjQm~xz>dv4{Y{tm$6ZylNjIky%tS?Bx}>#st6D+!=HVZ+MXl#%*OY^wRao%LS+Pe zR&85c3%~uCya%fDO@*0JVLgisj)lpryQMo|sGOjjLlRvXNfI{t2|14n?5XsAsQw%g%99##9GXvPZZAy@qB}|q7ogyeN zpQG}{jC%+??y9~J9x#upF0Uckem=w0c(EC5fd5!jllMvP{GFK+?xZabOQR3OA_e%> z=tZCXO)MkAzm|`86%chg2!d!agcQI_Jmg`d*^?ll8>_?ZUsy9ip8lLtja1q}YQf>x z?veEdw!~(Bt5sv{GxEJx)d-v7SO6rA`91{!I3Pr$*NVx|vR)Wl1Z8L)vL33YbSc`B z7W21>CO-~*1-2a&^h8joM&BQP$IE~wi}ut1S}Vy6ab)G{0#0w1 zPa+vL&!lb{g{-sTG1Q@>G;Syt<|qwS3y|{g*BCozYQ*xb8(aaM_u_V8)TXXVH}P5V zCA+yY7Y?cb)$duN+jqeV5B;okC8eT8pLzYOpCox1L$!v*oy^!!Oq(F=4mjpoP?!8j zsxQ(v!sQlPAV68GOnv<#a*)1*Z(@k}cmJoAc;+&#*RfsNn`JT#j^-n3gv;px3^{je zmP2LtU3yGUJ)3qx6+#s6rDme?))!K259(_i1KxN6f=baMEL<<8?TKhV3HO zlL+$0l0peV;&<6{ftxWX&DbunjAl#&J#jzcJfkB}U zk%_Xtm^aaOL-1*tYLfqmEKgH6|70;@3ZPPig2gcdE_KQU)rp%?(&@d;C+rg>;>X6^ zGNQ{AHRMeFS5>C!vWGhc!@hl*@#!r<+5ufrNNW{XQcmFIhk1Wm)A*{w0dFM$pC9wC z7eo(^7;UbLse+p=NS?YE5Vh*>l5jziA)GJ0#xN;mH=O~qTDj)+{qaE7_;8dTJF75u zUc@{3yDFmX9lgz5Nj2t7@7!}V!RU^javY%_XGQTX0V5nrkW5gA8RE?y*5G~W0c6y@ z>P>CfZ64ZVQ~O$DSkL}!c9N~qGP>F3>7AQE04bY_68nn?h4~}UU|4<<7F|0~2z&u> zcZYvUE%V6iD~!0UhgFwt=;1vdoSP~M)C#go2){I1@=5}jEs@tP5;JDG-k_*gnreu- zcXP8whDg|X#!by+KORn z(*mkLYkDSVqTEo!&*;%eE=!sC=g&xzTc56CV!w9$b-C{xUP7nV5Gq<`$c(xzWStL3 z={|wx2|frR&Oe&zAIbXY1=z4^WFnQOI0Mv)B!3KmQ^q8hawjL5h28(f<5-9a zd)am&`?jha>rkbYCmQjTg)jK~Q8zx~o~G66)4gdIst|%2z%yGZC<*F;b)(9Zo)!tS z(O&=dUn{^$o~m@0h}WiUZCWrWjQQPakloKIrVH+}0Za->zt3+eV^Kk8AA6~XzRPbK zf|Tsz^U8PbpW9D_N@^RiF(qwi0_VyT=au>b0C#EPWA6@uOLl#34#Go)Rc-;GQeFtR z3HYXHv7CAlv!oTrUM0k^5$nx7u7M%8oe?kBuRgG~HnE4|#vc6M6j z?%AI#;^~g>57>o`ODD;*D&a>K9?PJfOYdu$-pO$rX$pq7--K{5wrlHC-q5i=`=uV95603Zc5 zAU=AxAB(y-qkx*yg<>aohn{Jq!hjO4fvZwaGMmiU1lPfRpZ1*GQM#MgnHR_xncQ1# zwTcPB9!w*9U0COhg*sXkRA~}i`biSa@tzuq*=vvdMci}YJia6CDC;!YmLL}ou5=Cx z=LflH9|4sjD8d8eSE#suCTIl}$1ZdYOmil$HgS&jn=~cOqyYekAkRxhpsj>HhiYN6 z8gXiJCbc!63)FgUdj##Mr%R^H@V2uAr$@Om0x!JVjomL7)xW{Jnwh$nI~iWdH;;IhMR&c$-C1nx+nO94X=1q;Rql zl-F}i_K9lOk{j%QGL=Z%py%`OZp5sQi6Gq~2-8+0PZ~quy1~}Ce%oeFC>gH?n0&_r zz)gq~Za%->pe>_O&E5<9AT+w&L;bzOHjq%vD}1W&kx!X{r+T^+@g$q;v=y!$i96j`M(*GQZnNf$WL=HDHec7Ho6ZP z;Bu+>DHMV$r02;1%pqA;#@@}B)Ms-%wOv0~%Mb&RITmRSzjyfR6R8~q-LnuS?z-q` zsJgixi0zciMtgsXMqjfP6OO_LObR~p`E6Jxrpdqyv?2-zctq*cQ* zMSN}V+Pe3R?0hL_EL%`kG`uM_wx01nTj@<8w0f({p~8W|fzned=&j&vj1!-f%>TY+i1?usE>h++;Gd9%i?A!st` zx{YIZf55VlH8cN4Ae=wb@_ATUrm;sXTEeG=NRi>~`bAol9(k3#4(PrP6Zoc@} zTpJdJBy3TCtlIjSXZ2UkGU&TqXMbGDZ^elvM|o#cI=f+~EG%e-+|Qvp^^d$YP>qC( zNF?`;tZ+pg4^KNaL^#otUX0?@`saW&%~^k>?9cC5=HKr%`xKJAFoQ^Eg`@bnT6Y`G z<=>7r^W4|fF3C}o6B*pD`Q^oA%#b2y(Uk6FYY@eEBDldRLM%>>n>@&$+=eA+Ky4RN zoNcTUdNa2CcxD;^N|E@Ou>iJd&a56VOJ`Kk& z(sRS)w(paYV8I~&$PqlLIi^I{bkhObkm+06U>r?@)GVp$v^1ni#TSt1f^c5nTcfYa zJgf-5sjN$^cn&JBW;2WxZa^Q_O+3+{zKQ7+J7~J>unV$QE_J0m${<%vNQYA9q+vdf9TYLhpFd}@?alH(=d7( z#N1*p7WxPK!sv2I4axdVI*~5B3B+f!k(Kz`shlCRkWQh@tQEx5qM57rtpIkIkU-0E zuiKJnho+|g2EkC+C$}}U#hf`PPL`qR-za>$2R9T5ud*IV^e`yBz9Len0_ZoPo8IHP zUk)L}zEGYy*4D}7we1A`-MH;Z%r0hY znp-^OP!f%xD-?c{wFi3@mDKEaVwTKW&Qy5_+7%Na;1N}@_GyIv=K9q8b00eRr?=6$ z_HHU1&T!V;pB?f^n>z9pFkXXco-Hh?5hzLsm60$*oL0%@R%9>0F;VtGg}G?9*5ri* z*So@#W366aQxV())8k)#@V)Y@z$EZPKQQ+*YGz%*j_8W2xseFzjdqj~hH8kXJ^f`HrH15#Wl&Y40lN%X!Gu4@4v zp1v%HflqDWX{cM2+@@hZk<`_yf1+S^(hsTLsu-vDr=Qe9-S6X~Mk0?0{Q`7dXwW1f zLvrsLGsRUu5!2=K4QrLc$eA!vi86+i2+iq#BFb$ior^16$3G!l!F`ok`6}Ei02LJ~ zJD-rtP0+l;*^ni}z}7?Vv|k~2R&7uVTr2$%pLvt|Eoe7WYsRstC^c5}-!9Y~-V%i| zo-mOS71;0mSGnydW3loJH;=BQC^n*$qe5_#09jajvSmZyK=r$~U?&>Zn?rLxmRoK= zb;$PaOxO!J>FFI@#|4=51Om37KSR5u?CxbWh{*Pr492`vpW>Z329`-?L@s&}kJ>9K_sa{3*;!n-IM+UCAk9u_3RMqA( zBb}4D3_{bP1aNOMG7!-MI)p~5$t^)K-K@rnmXCnDWYcBdn|c?J4oG=tl1;%vnVPAq z)Jx7eo?D>@z6XXCHf=7q;N=s=$%q2>Y%K+&T^H}39X=~NauNDan`UNH6ed6HHt4r> zk0~SUwiX7}APyB?%_*vi;~4`tj*YCz-H1rD_+6l;Cabf?jHik>qT_@LTuGznNQt^P z2MgcZ7Jj<9vL=X^4)2v8FaNkIQV+LkRA=6P4ao$<_3S>6s2|mT%JTfiZ2}CW#|^7v zIrF;LO=Dh|yMLV=LkisDvcEBHAl-OP2V_|xcsx?HK@?&;OqM#JEz=g=N-yLhBaeoV z7JX%=h&`iPVYm?6jw|8idm&&PSjk-qMKAHWT$BE_PYp6R?YEgsR^cZrr zXS^3KV`d!V-_UW2TN2 zH5~vc>GqtE7b5*k!3X`cH1mB_Ho$7}19?|;fo(UG0-F4MK2o#rRzJt2x>gDenJ>1Q zA`h4rFQps^)x{sK7Sb_j$Z=YGVxh#vPns16!N-OskY1UFZX+dj1~qQ#+m+Q<(@He! zqp`7jVDXRvRkSRakOdv5ljBKE5KrS5AjB8SZ4wxiZK6X77UT1>pzyQS7D#kS`6WcW$-K!K(y zS{^~Rof+xUAUtbM_U(*j03xfY#(^FIiy|(pLa`cthXyF_JHY<{HCfmi($!gddKCRo z$Q$>$wG<)LTEmNXMJAl@^DXNhvxu6=hA#6LD&;vqP!q7L46>HF5)lJwYx6D__~zcK-^i^?9$I_)XK zpe*w%BKsyQq=2NA)Yr5Vt{Z?~;`cUX!{-6jJVKzb&c0ITsk6&U59)%t+#S?k2imNo z-m_8VsUOL9l7+;Ig-AFdYHa()D~6emYl1gY@uH)FS^9b*u>`2doIy;uAFh&rs#!Gr zl#QgW)eS>O1GrJ2tXTCFjR)HoAiLEQMyR9!37Z|yD(VUw!XxqtMJPAE5`gJ-)wx#d zeyy{xO3it+$!gBN3_^pnOzXFMd7BIFhTpS`eeV*8QsGx6W~I*wxtc8K2k84#tjO?; z73*Ijvy$A(N|$&*Z(C5!- z6&Q;yrr~m6Q{kzT_Ou1Q22EV4YNU6BW5L=qB+?zE*Dz&JrvDq`_woe-E=C#kDNo^1 z7?R&>5B-eON?G2a#zfd+mdci|e-DV*OHWYJ=BXs~Med0UBn&Q&c&$DV399I7YriYv zGe27IONP2NAZ5Z0m|wnk*h2O@$vQMh2B3h8dQ?o1-Td6nTe9w_*GB1)ThX^v*Usbr z7CTyOPwNEb%Qg7m*k2Ls&NM9;B2$PkLa!zoa3jU4b$qP-S{gS=uz^C}UNjn_(jus{ z7(y8iP`N4m>!$K~G-Zf>yE~+?H*VF1VmhKjRHT8FMvc_O5SpPIIUlN_6^~%Vt5SLK zn6=cIJK>M1oqRg{GV@*@v17RegD78^{-+e_% zqB=G)u|UZEqiD+cXkP#`#kWD4L3_a(vW%PDCf|QF96nRQiaG*_LV)Ze4c!h*5{zzy z4(EFV=wEL2UA#_3i}i{p{*eEhIFu`UmW$HgGyOZ6sl7YX=`7$DQp{wRH((`Qeb=0n z?I@C!n^8RS4l1c64$AhfglHJ>Jz^+yc~5dQ z1KJf2`$qiub0@lZf!3+RXoiQg+09WdS9k*D7gN_#N#f`^F5tyOV@Gp4 zq4_)Jz!}d|Lu2(-5^>v4E{k+5&4YRPw9G3AaI>JT;2;8fy7fMIDmI7Gdj7{d&?2YU zpF_I1g4A?GE-mI%>mT+)o^pVa{GjUZ%tvF)vAflxdYLjlfyVm^erLzv{MEP4%lkX{ zhjP&kRVBqs*Q`-F)Q}exK^iggWiE-6KD4qg9yoPE)s0F&0je`f?X~`zj|4Hfo-V&g zyZ>rl<;z1H=qYQwy*BIlb`6h&WgFh_Tt5iOe$PPI#L)@nwhRr-b1Daqi&F`>!SKb^V83?4#vgOV#^sI{%AFcuVK#_ND6;&L2Q5U`V z;i7?twE8GsKi~sm&sy|LBWsrQv!#ooY?km574 zGo_zc=H}tXe^b70ad+nF(kaBT6Ip=wv0FojjB`g_CshzhA@n*PwGrD#~SDZd@3P8hu>jRz_j(whDukATK_FO2xQd)r;%G;KX_Rzk|RNG-R zv`s<)5eIGCJKNjWv12kn?;fZiFU`=#0+wcwJ$37STQm02$Ak+=S!eS#@`=(E92OQ$ z!Jtt1XwL_u6=9)z^-07oN6iSRcTJszcg{j7I2aWtT&1%ooe9^ZYpzR1qJ;0wdzajh zrf^f|NQVBuVBzcye&FjbtCyY# z*>D?W=w{Ly2VGs?*;QsGF5c`>)>_<#OUaJcMZ$2CW9XdE%jDP0+bS?e{ahs)w#&*> zx%SoGQ^WnTcru{}1=!nWjVONc>9mqR-0%k;ARR6iVYPB~{%Ba|4h|tm5~j@>B4V-( z_fN-U=?p*Z?TBvDEL%25e#mp_Vpqm-zq@fXSNXefUo$X0u*V=U!$qZvbY~amw*%%r zIn{D89vNp(Y1t79{P`sjRYqx_cH8{{8roUM>7 z)zac@AQ}=$2lp{+6NjeMO4j&$Bq00eFVqS6>X)W|?;y>AKJrBZazg7b3&RG^By%K?1!;%f zP#*1WL_LV9?)Bt*OlofsvWURC@zfx}f1;a8W03B(S)LFIzx``=_c^7W+?Xik+$F)p z=lz%Z@DYD=?w;}hs1=P$;6r?I6e|ggIJ$Q=txN+u`J2ko4 zN|H9&jff1^K`H^W*+GSC1H|M+J%5DXLo`z2zLRCyTRZdDi5xd6xrsiG?GeK^D&s9C zyQq&UTdL)Z>lXF1C2ae1U}+o!?|Z!n-892J+M2?pf>@KFr*!oP{a@dast7zb3w5vp z+xJ0Yjt@V=k_mft2g!WAkfn9+!xTp=N*vyHje&G)su zg5z^(l#?!+mzYe8P{Wu*)Gy5NG>SOHrEf150N?6g#?wK$l7~+H^jqA^K8L!^7=(pX zo*q_|?SFrSFZ$lbEgkJ+9_sPcuBrGHMR*+v5Gb zhjo3YVbRC=#7vzmjw5ZvTczT4p}n?SnlqQIHa@_MV@)$WBH%~qf5gon(3o=~o9<^qwh423_!hLNX7M5cLfTj0Pys8QtUi_%?aDzZKaU}7JB|j9yoAjzHcgMkPo-o08Sj4prC%+e|*nRa4htwl3CdI zVX+D1evfe$w4zq~Ts=bJ&45SgvsaG~1M^Hqj+_p2SAo#Yvb`wlwa60e-ugVa*JWDQ zLITc!WgI++HpF6!%^Z&(E;hr>`Wfq;hz@}_fWB|TOGTI#jiMVv-pe#4j7*a+1jC1Y}xT_h^jKvV6s zPN}N*M$;Vc^@jZNEbFf!-N0+`E%wY>Tj*H^a@naL;jJ+HRBYIbpQ)L?LNpq-jgJHdn*?_3ch#kppO=~mRfc+Dn@F8n3y9Lj(Fth#gf6a-kK;} zPDK&q-NG}3))4|X`RT1;2?R5ru4?@}eI729tc6vPA&F8rw18MG6KJ5Y$^mtOIGIbQ z)V<3K=zK{7*hg_-ZSC3L9_O_5ci=D_Py$dk;bfpFCV*fIX1`T6EH;xLyq{KiDcTTI zkDB}?hu*-$Ga6wJd}P|2r@SvH#POR`LKVu0^vy97oZ9`F86O~|&Edmi$X)Cuu5xHn z%1SxGVo;;AFIQ<8pkj1^SK^8m7udtZ`J?-?CxIHc0w2>W;}~_xHWd~Wpq`{YPs=lz^%?YVOnYgk&NdH+uWC% z=@-8a>4KAoIX%OHoLGkdrn82_zRYT2n{TYI^;Lj6i~w#E(*`b*9FqzdrJ2`|D@={i=CUY$yaAKR0NAevscRdxPZcWW)L`b*cgLvMhXlF~s7iR#_0Aw9MI?|v(DB3!}9zC|6aHXXt zpkhypcOHAukOKNwzZ7|ti63q0t2foFN31)ymzrW%z!(3{=nT6pR`TW6|O?wzP^}(1g=Or zjmBZ(UnVk|eXGC>$MJzZOt9HTP=(msyU2-T9oo3H-=UED%^t30Ja zArYQlG$^4eu58gCpp#Jeop@JlA*fYx5a)5T*|2B z^MFQt&i3mR?l)Jdnlq=h_9eiqpiW*bEFHomHO~YB`i8bIS%9+;TiA;jE&?-Wp zxrn6iQ-?re)i{}_^)_CAnyLfY{d$FCnfi&aQX;rq1o&AOi0H@K%B@h+?S0^Tw*l@W z@L^YDqjF;8pdfJEGI&>+93m{d|8ZU*+3FJ!wvWV!b#zQK!j3@GSXsa6n}W#}4xR)* zL*_~oO`V>*AX47>rh`Gn3D0Sm|HcX6M-EceaFD2}NzI+*QY zf&M;k8h@PokuRUvPwW`EBtc%*EQXfn51z(F#Me4-yVIUv-50M_8S-2s0Mb}N7IKlPip!x^V^JN!@wpD&#NZM(F4tC|G9SR4P zWUy4dcN83YEy=1%fCAl)sWh=y+Qr&jPbhvtLnP1?bl0Nk9~ofT!cBG%!J%dU{ZMq& zp_Ace?4^zgdApzG}=FBleBOlo}%Rh8t7hgvv(wZ5D=TnzPPT z3XBS>SWq;=%hexXWO*r%I+4?PBWa>%fcd%v^cu2N78sbm(PQ&w$UZ7-i|w$mtea9ycJ@KSc8K zT>)jX<1f$!UE^CO=*b^trP5iz1yD?Jg{$In){AnE2#lIV0ogs<{S&0un&&my09o zub_A&&_Ayu^6PhAfXm;Tjgh**$A_O|=LMSyO-MIb#=1=*kXL9?({g3i$!~M3m+90FcU< z-1&;xl;${D>07?Z7@f^p%igvf5U~hNTZqR=;>YTQP@oaLjG+7@Pxd+Elve`J0YisU zoft)jg0wGa6D(<%Mo^-Z|5E{434d*0*U(kYiZ;k~YS z{LpaCQH<@fPXXA1(58x^>B7OU>Kse9>|~>i!ewKwa@cqVl*=n#rR#AOKp;+&ZsMpCapH=8#D3>KedlwvfHMQ= z82zhXp0w`3b!j?IvW7_UW0;n18nH5~cMdeOB#{o|IgHHY1DU6Ly>fQ%{b?ASt&bgC z6YQjm2w=$xsNY0rY-R1|P7Ct1B-!jd(eryzYQiGak@J0^K@l$b{R%k@bMFhaNl%_^ zG5kSgIwV_wKmKQ$jm>2Pf)tRZRTQmL9D(Y4O^AhAKwR})m_^6=3;t}0lQu0fVy{M1 zr~myjiF3xd2T>&6_PKRX=oJe zu)%Rlv643m18YD#vOJRnfSwUEfyIjH3QWg?^Z7V9=IQ-lX|;nw#48OF(NIH+NePDm{I zRKh_-`H=AwvMZrM>OepR1KI3Mqa>N1JYcabr_Tz8Zu5wd7x3a8{M--u2YdR~!V=*R zN##l@R&RqXOZ3_PIh?L3ZhYf6-)xsc0W1 zHkCyWx$L=_%`7^7X|;dDgjOq>96GFtp}YCGDSleoFI63Gm-HTdqjd6p`>W6C%5h9F z;~ZIZu;~nO;Vk8Sw13e?+UwPP_%Z0D?^KC~IxWmP7SuKK;<#XGxWf)-&&pb45}5De zo3eYeycNC*wz)@-QmIpNA#Zdy`IXA!=E$Ha_aco(XSTcVCfx%$CjMv$s)PL^o?Ctc zPSGF6!e)5Kqg3H;Rg@Z@QlQWl#1e)nyPE6XGqRfwf=2*|y1-M|@LkFoCzL1Gd@k#O z?Yq$aMw-{y2h0+HPPa~pl$2&)s!cI18n^J0bO8feP!2WqGN1(>gFdch@Xp=H$zvV> z!c``M<0|v?rKFCuoZI$RmtB_oBcZBK%F5StmYqk+G9u4*D&&;m_-K+R9ip{Z1QB$B z*>xdX!%L2vP)OM965|A`jlG7LzrA^1FlFUg8{BA^StL*(?GLJJJn8IcrPs>0SAO48=A)1vmW4L2L{y z*ol>~F@OC!T}ZJ}T@)6RrI29rOd*#B$PlTIbc4|6%NmO-NP%Wc;xs(@a4Ew5nrAw1 z6{+GjOUP;<5+k5drWTg;SQ_`qd2S2ev63NxKNwxE4B8pXu5Gt^42V=&tKyKTc2f39 zJEuBs38(%F3eB{DVe(Mef+fPx{B#p6{P<;sLHgnZ%&gkzO*Qm~gI;ebR*|cfG9A#S zqjm@qkTX5${gB0D)y}BeKlauB|B~e|fbRX}e%YC2(57Z}1-+nD_2)Pa9XDNMQi>dh zYZGjQhm+wWu=-%SR(^_aPSjCS<6*XiMjCE~>k)P}QU26KvUoO1;YVzW*mjE+S&*<> z!iKHoY7O6qS5=?zTB?N7ucDni7#oTpRPD-d2}t#Qk+IxIc(RbA&MnGs_0RmZBsfEts$y2Cv4c3|NV_ zHf>ndw1Nd|IOnCHGgAB(q3`Lad?@pbgXd+yS}VFMtSIIm&IcZ14x4gV?X!A1{?$J- zaBz6F-lk5ZOnS}!e^L-x&)16(Y%j*h094&vRbjr``h*yq6?;1nk)~>*Tkf6hfE6kV zmP7SdmQFkW;VR@n_|et=wyD>)*p|iMg$+95*7FAo?81A^f#}KnK(@=IJWJBAUX~g* z^o?R%v0kY7ss3DR!MK;bXVsw!QKGw~`sCiv**zin%Pk-PiFzTPhJd1E352 zTXO&-uOf1>X-6*g_g6wz8uIDOtVMi?W8+WHenRfm$ql^5YzP-Ds^!8{W+g!H-`qU} zG-A4B_mtrceVhVw9GE9s!moMkrs6#g=li}ORdjjE)C?dI<1k7UWS+zEBQ@# zFT2YtNcj&u%Iw6HspO=+Hh$y@g%@0D`=1tJ8218FX4@fDDJibv8>Q- zmA%K|^*l3#7qokRlMt!j0UH*$a-a#*@Owa_(D#GM{+r+V*!s-eNcAt<^;fd$TlH!F zWcEkBKDdCFh~Xl4Xd$4t>SVo8P-K(uWRNg)qj$cj#>Ej9;kD{)u~SHIl7&55*C%O= zhRYJP>eKh84LeLE!dS^6Cs09#a%EyWsc)OIJ!&Sn*q>L=K#>qd(Qa36Uj^F`8mHAF z&uoU*kvg82cFDvoWFrsquIv~d?}gq$_LG_Iz=W_~(kc^d7kLZnjjQuYK_bUniXoc&_!_7_J`_ALuVu&rZA&OKS%|0%j9u_tH2Berg`m8@9{UMt; zYhjGg?Vne!(QCL+?7l}*8`~#u19#RMa5XrdM@780wK2V=k=s;#IgR!}%@PyfPPH;O zug@uAnxKp^w1Z@izpY|qe)>L&Tm!~TEy6dGm0oo)fq)g6)aEw`^9SJE*2_qbwbGkhkqJ9{eM7;ZsesLI^JQ+&bWZJG~l^$TZ z)3+$v`Q}X*;~_xkqa~97G_&7Qa7B?gl>%OG z;m;&=^A>2O2Tp}n=f6?g+9{frt^MuHDs%sBDhHsJN(67?IVYHgbhD8N#3W~H_(Jv- zJ%?iHm|1=Qvy_vm(tOmpll00^QY_}u=)H7{5cmcSnSD~;W4IioOaJS8mtr(x%!m0& z%%%03SDPzJA6HPLH47XK81ry#e0xR23mr&xs%u63SmwE|D-%0w$zRbn_?uZk90P2p zOPSPE!vgqDgf{5`lgQIL7oIX!m){<|M#zGqx|PtVO$Lx?3WF1vev^*FEQfqu(}8!h z#~04_Hw0HsLG8hg0*Cv9X)~l;|0sVC8{@fT!L6CfMAEmYk~?|idE`nSzV+Kgm7^2G zOx`iPmbHY3Pq#j;T`CtZX+$uU+yTr~dY;qXHJ<{<{8s?Orsn`w8wS;$_5AzqgO>R< zu_sm?`|ed6a{7eU){@qtt|7z~AcE14qo;GLU!9eGz!-^LpdQl_W<26yRRXB4uf)mK zM0Z}yI%Lj0maS~8Oy;EkSw5>ICP`@mycM;=M@~!19aswHiO38^ch}B>aM1aPX7r*;4}(8< zq%?!)PKvyPebK})NGcZSZa}cBTj^73OJjih^ADa1hX=jzKLxGtc9d{DoqNNmWY0mI&ARLAv>nnY8YQ1V=)N~eDUxyZi@3ioit>0J@ z5L~E7RAs};6YaIG&)K`T_AyUhF>IXfmQYyEycFke zSUp|p&r)-e%_@ALG`AkbMFlN2EJ1P-*AUW^@#mzy6Te}Ul{ps!Q@Zn(nbl;IEM;Jc za(cDEVq}yiiZ0kMfC|0+lYx>q;gnb~d9-KCDC}shEa;QBARP3DB>rxvpwz8ONa;8X z;A*-1GB)MddBEEY8H`4>Pkj;`Oxg*}ib)M<)aclUoCfS#lhb!fleCwmh8H4S5wg~; zJIV4*@t8<4f21=0XDo5k`=~nFWu5UH(Q#(JuRnk{#GynQtP&-e4&`R(v+Vxx~hE+mz_{+gy;Lb};!ad5>@=_T#Wcb=0 zS#A}`LPv^nV!|b17lK>AE}_U9mB8L@|M3!1WLmKEUhQ>3rFT6wquso-;Ai`f0Y;9M zp#i50sSHvs!#gro5>M8oVD`LVfXAg7BMK0*1$46ijh1SoE|x)O%wkUfW{RS&QcfEF zT<6r0K;FS`4uKbx_$0ZLGh1^@cbe*vab<26{$P0nC>glw_kO+bGEV-MsEtCQ%9g$B z^~b0ubu5ctzCe+r2+(~o%;;nm)I&P1Ty;T5nn^cx#K$dv#{EW66V?b1nO@+O>o_ag z&yIMx;3kT^t6D{o6T4`2a_`bwQ)7(8{pvp(QaJ0z6}~)hjTmKXACU8SVSQ{S-a1Ul zkqeR4J;QdKFqaugpqboYXBDT?4{if&(Zm(|W71xnsk7s6%tJ3|ork)DnLY%F`D??8&x^&o9Jc0MJd1&wh{}0R`!y72PJt{{HqC4fBr zei`zNW6{6vl-O=ilcEn~mwTx8E7A4@xsweNpM2pP_wPrscaloAc^|o2u z?SdrDPM&7si225fZJgTQ8cYQZ)fAFxjToh4j8tc;RBTwZp~bC^T5MdW*tMe<#BAEc z2zt4U4E+0SvnTjK_&ZXI3Ku$w`?OJA`R1J|!#WjiI?S%7#)SB)^YIu@ph3Q=So|7V zB!MomA`sHq387QD)#~l%u1>v z-k`k@~jqhG4XBStDUm~`S0T8@U=W=jj^zpX$feQ3oNgLTX?j0 zDn&Wg3e^#z3mPG6GXi-gpc;%V0`0EmSY*{xVc#Lezw@_9m(ekR+}XUX(5uCAYS!8000S(VSiO_;&VyiM8+D>*%C4+pol#K0Z=66Z8YBY;#I3 za1bskqlBUZJlmDyq#dpEw>p1>@;00>r2Nd1niBX{F!!64P04;CZh(1?0R^nMMrs`e8%KzfEY>pV9ypq^Cx^02sar_`3sfq zID#jIh|JlIxxw)#ODGe+(7l;!b?Y;|_?~g&*dz5)bq0_v56?eJNZ~G}BWaI$O<&uJ zdaXDT!+1~TP?`ytfU5>L2$V;j% zi;l|v9ixSa144#t0Do2J+&j={$G5HUFdg9EEfm;u1=Ri7^zNr(gRT#54wD&A?2$*x z)w_OwVSON!5s!eeVLy$mq~SWQNY`X#8dYe8RsPduiX=decgB0Nt-sOxEz3dQwxJ7y z#@0YE8PqNox~d?o*aWIlH4W6q?q)sSGeG9D?8{fF0Z(k#+?4ksG`C54olfHhX+M+$ zk1$D_$)|o83AM~ym1JuQn~1P5eKgBke!Z&ZUnbRGBbnF;j^)Rbc{(CQCg4O!NjG@L zH-m5#;F?G_q!v*N+T_9AT($+fv*+iziPFP@AZ;2I*Ek*_zh`&$c@Jlfjgo_ueu$$+6TfZ-??VQg>K@d9&z@|Cwlw--ow7#ec?v$k5c8=O+w&}v3lPAbvU^uiKw1#Qh)BAC zf{5)L*$2*B1lk>!Rx7qppas+asxMC1rfESfJ%`AXC?1jNlZh3QZoF1E0PiLE&|_9s zp;bzk!D=S#xVOJQ1?}0x)j`EtkRWX>gS+Z6Z-Fd};=>jk*Cd5{>Ih0_fs)=^f4Txk zp5lCAum`h}^FUCjy?jFbSY}+e#8ZYNlCgM+te9nH=eN<6RCFnkM}LNKzQ?d~r7t`U zV>G&F8D51*Ki|eQZD1W<*pt&(MT$YbwpkYzwEde0O2{cSuGt{VwWT+!N!Yw#L2BiA zAU5E6=>y>8yH+%qk9C|!?soAP4E6b`YO?|~*-YXIpZ@v#whggW`GbpjwlqQB7dK!# zi8u(RqZ1>!nhgFLuvn#G?%lX1Bd@AXmy84+C4kg3M%*q&F=NGMz?+IV-2!5>tt4K= zxSM2cB2}b!0q_y`m)kS#o@rMvX_sEh*2;!Diz*xtcWhApm3<$Egz44=_TuM}lOfrM z98FvN_Cw7BYziAcI%9&C*7MSZt;I|nw!5jF=<>g-6;Sa$*X2Of2Bs7BSkzcA>|>u!()^c)g^Y}VeaC_z77P2_w83vIw`B~6OL3j*&I>gV$#ATpvM!}bL;Np zO=u-Z_=6dxWh75t-I!wXG0R_N1*E=EHJfw884}jYFBj~oMA)n{CQ5*iB-I@PZuR@@ zl2PZDN44*q+@B17$)=g|vEXFw`}`>&ZD8yB z<9M2=L}CLGeK!lRXKC;zf(!xXfeQ5AdnjMYfCxu!QQPe0;G@uc!5X4uNwwpy>|$ia z$6@y{=HY(jgirE>x%Waj!9?@k*fac$LAB=w$AtH1zp)9QepKpsVHcP9_l2vMM&=?q zyMAZtCLAu40&pe0v@CIv&7*xFw*7I8f-D*xoP!GQH(mN8J)oq8w^v~?@`nHcO08`N-X&fW11b4^0{6d&Bc+6Uh0fZi?7`^u+Lay3wx$MY;PT+Ggg@+b z{$?jP!&W7YjO;)&09xPjZEMrHlbi>p;sfCXo{EB7SKNbdH2mJG2R=5Rn3GJOCF+syqDvo+?Ts3;*IT>Eu2#;&l|Ru~6^SAvF79*sw(Bd?m*2 zh44dc-lv{PyzeFDpSgKcaX@)6jCq`mG&5^@8_yeuWzk%lk$MXQ_T&ZL`$D|7@Ed$2|u<| z5@IW-VMhzb*~xQ2#P$IK=>sTKylknL!iW;Bl$++-3%ddDM~Bg47DKLe**iXgl1uUV zJK*(2LOI>8g^Y$6K>_7ZMUfK$M-Q`qnLXlA{ zNS={cw0X33?nOclhq5QTa|oRuz*0ef6B0U#1kazx?JJfDGXtXQS(olR=i*jd?>Wc3!e>o3^3t>P{$ z1^r1mzXl*9*v57=4VeDGKx29dhyB3ib+C9ii2SFcD`d-o5W{0-Yzf4-u-4L2$1cK$ zWNU>2!;g>(IYZ>k2}MLAiMaa@0`zZ-jqL}j?qzqFWm|UIHK@*(RLs)d&e|X&7JU1* zMq22Sq*mY5Cy{#(_tkVqG?$Ow*YKd| zb>8aqf+Lq~h{3W^*F0=Z$3^u>8F)hi{>DOGLDp~u8*1TUoD?XEUR_Uu5ijx1KIza; zU}WG5_Fy!lyqLcuqBL-NRX;V^>c4Qjia^0?jXV*@iVWkSdGRiDiBUY zW?H=3-3{_X#GC6=m>H^~i=@%@E`?(ElS*F5}pGewuqa-HDl{Za|e0 z9i9;scJwscG|A{0T7J?soH6deN{gU3Zh!-*-AMG>7n5*Fc(rySGU^?_zm^hfYAU|u zPUs0gRLM;a`K1py@iwGZZeY4NEseY?=T4lmKQqtQz4^U)-5um%<7$;pOjGs zMtKn-A(z(>?~R5Ao7R!#N|=jKY?ki;Q&H#CCYtZEH?8 zr~W;;R!K`*E`jJiNgp|!u;HP@HM+O^z(e(7)V0%0R5;9R)^Vs6@2(jtV$GRlF+_mx z$2NJUi;Kg9Tr9C~ET-negVRAFTVS-M<=h1YjWMy6p$}PIcp6^Au0s($AHA>X{hqV( zxxA5iExReJ)+W8I2?`U-a~tRFvc5$9gOXln9hPfomh>O9)C1n;CYtYxps)cM_+zF4 zD~en|P!0QG25v#W#-T!cK5b%vGsC;~W&N+!ccim|2wlY<`B44G30NiY`U*!>rAv*$ zejgd*LWkTKE2{q{D@#jI+0NwrN<^hbTI{T_HekwWm(fI;a&&yEUHM{5#Xl2SCDfRo#SF&dt0v&Qyajy9e#58Fij(_UPD!%U6WEqzKYwp zIKc65-%(Xd%d2#8T43ZhG;lk2>({^R%!Q9tjiGDZN;Fao7%fV%f&d^)9!n4o)1D$z z?QAzGy?a~O4}yb`-8tc0F`V`su&u(i?j%cTCijqX2j2}T30mEp)8>)DbO%Q1Dub{F z93>nVq`W@DuVqgma12YrT#ilA2F-DMp*Ql7P?{dNA|m3%U6+5_=~~M$lFww7+LP+_ zH2$V+gV>kl97e>(5Ww4r%~L1=f)rg)65zIWSU@?KI(c~9hkSLF{?#m*naPH+4AM`o zST{eJ11UTGr&Q8VUdLKMZ=1Iy);P0PevXwL0kYF3Wbk ztLAmUA#aS4zPnxbDAJh!M?U}Zz4ht;eStE!_Uf$k`xu+)Yi^#|O(~+_jtg|80)pX;{@81Q>kkL?l-oV0=%LI^HB_Em&X}GoHgN- z@~e_4k7f)dUUO&@{DPvT#W4DY$ANHqSOiD(X66-DBg?%bzCeb4#FMi17nDBmX#|)% zb;tvQL>85E+MxAoDWtZdASep0L4j~iY!kuNc79d24TN|hsMGOTOsrymLudV{w<*9o z#25KJ%+r1=@KTdF+`=0nd12vzWZ4|Cu5c(vN?P2p=Ncuc#Iv5WsU`3R%8Wiw)G6Pl zkMK9-%>F|{GWo%Z!*N0Mj(b*NBQTTj-|>vem(Owhc77jh_04BVJwG#)ZmMPPIsWae zT=a=)7&PPqynzicNOPhX&=7Bzgq)H2(t$~LitLog)ruE(6|vMMr9`Trkwr^ zLA_=Esr-@)QAD9IYklU_B*d97;i}ds>Q>eFi;)^-c7BmoqPNwEWbX zbI7J*r=NC`jG|6eN8I({y1k(gO9uyi+u_VMN`_bLAlpoXKt$VvW+vCtZs*t9V0)s$ z?lv=ek5w0K;So9zPk+u0>l(uXZG;mgX>hIJ(YzrLpGx=GupToK47iBBOOruyzTPi( z$>QoXNM)2W?ZxzTtcQK+%SU{=ia=v6Ov$4ZdF8I=7Se^ZKNAN-Ol$<5!Tcfmtdukg zDx}UzL(_}Ld!HvbYHZpd#k6qd-p5c@1Yml9Ro;2h+_C1?U9P^0y%$`DEeul{WbG%i zbxZEQ*uBs`i`m#X)Jrmmt#8e)-J@1x&J1U+m_tCU9}^iCuIb@kKjsY~Xka%dNV3+L9RI31TPQ(uzANn(I&i}%P1$HBRvIbLt*G=Cr74I9p;==3 zKA)Bgi;T|uw5G1m#i?qJ?_=6rSh#N0@xk8*|E*R&leR$u-;xFZtp?OREo7>uGUeR~ zVKs&4``Kwpj)9ev5O@MD|M4&*mbOKpR#X?9_hkrez6d>F40#4fe2NQ9Y9j_Lq_yvb zWJoBp@C3ruPDQeYb6}M~Noc3QON4<9BVw>xailsgdMU3N`tf_@Yg1z^R^@@$C0e2` z7(jA$84mC4klSRVM#+=ivzI5r;tx*QbSGRjVy{e z!sR6-A~rHr`(S!Jzv4Ox7a5Gm(mH05#~fv~5WpV#l%<9$%1yUJB>(gh@=b*xO&;KS zwj&E*v2-zLw&#s?;VQ7Wi~&G`5!e}weWU!6&i)MpUh)XBgNbjxjATOrkZ*e+t-@p- zu5#*o42$*ZV|id|K3Iau!^mEMlyn+3(+*&ow)OxKZ<*?|z{fzLf#46KT37?Gs)g4$ zNnQ6{#XnNfUE{y){>Nt%pw|7*)C7hI&bxt}beFq$o>_j}dOoMK9plZ;$44f&5T{-Z zy{cwa7!>tofrxaqtST)lpuP;1eT2*rB~MP!>S*9m zM4+~n2jV=F*knB7zo?KeS6@f}SucTJC*D&DLloqu#({CcEfCpPmDmn318C2mv z)15giA8%)4BbkObX1 zEKUI47B!T81WdX!+z0K)y}oTU5%BhUX!Ab)lYwlaJX72i)?wOI1W!S__v4rj{IxSI z_EQMI4qRHukMoUc_p@@TR%_VB6Gqu4Z=c}Y@D$Ry1)E;Dp)GS@9s&!9w|l*Sd0LtM z8g9!IZf%Fgm7Rk>u|`y_N8J$|U_}jY+V)g^Imp8AGuWmLbBX(VyKnB73Vtvw(E2TE z>*MTr+-;~_HJkjCNg?@YPt1myig)4Pn}NFXp0^~)fH`~&fQ)Hm;VeKnE5PZoCN0yF z;geXO5`WZIUDY}wu(B7QM;7uR)TtQ?fILK_ZIZ zS~t>QsaMeHXcNp6sC9aXl|CPkKi4Q}B}*rZHC=8NB@xr*mS^03#X$RwMV2_b)yYlN zN`ws|;h|f0KUfX#PQ4&Wc8<59Mg|iF`fAwmV_KFLHWEtjtdNP?XE&2NyGs*7bPlPzk!l>=qFm=E{X8`SY)w=&Gkwa#C8f#2=uXE3zuX17ptF$F|oPdK4?ARf*Fz zN-^nAB}{NAHm8a!>mo&}@=1P&l9X@?pgWQR%J-i|!I9FrCnEf5!F!FsA*U_pNhU+L zg@>=Xwi20z&)&gsF^ROZFbPN$tGqo{!z)2o>5$tn->9D4&*{Lvjh^C-G_!4e% z+9R}SV#pYr?lDOgSW?EXwJuhZhs3W+^ z6FMYeFB+uI{pjT_xAPZ-|0x#=IJLae;WpmY)2Z;q$(kK+`Ub*d_ctL*x8Kd}U;%n3 zndl%a!HsLQYx8*n@H5zzbzKd(cT&i@BKRo^IPs{xbrSgLRGH7(!6rV7x$hzt{%p&`WZdtz zLJcnU2#AE_;JFLm?a%q3ANp#ZST7%{c(VXf$chf1H&;(Jyd{R}UE?E1@YW0YGmw@| zI+#ThBsaXTf?85rz+YC*eX$&V3Vf=FZFh_bm$ zj~zP(6K?19SwgyO?YK)osLi*G--!0Wljq*CI}q;P6Tz;Brh_zl3gud>d6z+-7LXRX zyY}Na-UH&7??uF)pMumddjTAkz@b>MSKlXp`%x$+?vpymzim*QDy~~}#V$KUGMc#4 zeito{@@1S1?58dn+G8qIO3tcAIR^dt=(BUKnQ^C4ldaLbmFwv&c&7KI0;*q+qzKUO zFz}5XE(|s%kh5lY%`sXi3d>$XNf@r4xQXLm&an()J~3qQM|lLOjRq*CB4F#iE76KJ zz#E8${fgX*FAaNszpOPJGvlC2+RbuPxa{Hu@k-kbJNJ21u`O%QA;xsL&f+Fb&gP*d z%6Vb#iqtthfons>uM5Zig}I2_fhg{KY-abG7a!oyQ?B%%DI#BhgbFXAcK%~~8EDIb zo*3ogxB8!jTSKUsk}_)ZQdnRskz4Lpmo;vHN6Odq2+kxxp+wJ%BuRX0#9pnpbaZC0$mv}mVEHMf z7;iKzZYcOqEhEx+iH-HpMyDef6*BC*MN_)m_6s7)jOQHUZi8;@NoZH`(psJ1NK_Uh z@41?igxNR4>CwLJ@aN=Sx(w*h2;*b*!2L3rPiC6v*@@u1;B)10aH!%CWrByeZYtt; z>xFM^g=OR3clGwN+s$hn)?`GMW4|VozUP~a~b|CL)EiACV(+nl<4?W5_rS7;TnV#;!WiW`J{Uz33k}B5IsfnIH_^uWA12F>OG;(=OD4 zs0mKCihpB7^jcC0KvI`qwZsTKVv zsYd~0TjuEHnJDus=|Ja1uSu(b^8Ph;5rIAKqzeJAk*vbCueF%~t01SV6V4Alm?P^B zfc6g16jYZO746~+VRzD1G)AhBIM_?Y0*R*pS+y4eUyiM5cO}0K*EsxQn&_A~Ra$q) za{9;JW0j=^UXvq93Q;x7BTB248}Pw71PVE0!QZfY5`5Q}rd1mH1~FdJ>{EIBA2$c? zm=#H}0llx}V04L%`CiI4rlU@Bc^6I0KdHHC&N)N8bJ`t(0%93%H4ya1wI4~W$_`WF zA#_DMMLXZbQ`(JCf4CC9EK0O!0pBPoizPsX6Py1L$+@_zDsSa$P}oBa!}r5mh{nP< zM$uq8`+clw#U%KO&N+7$uVFwpfXsv>B#26wu^nc$x%nrBb zv!z#;+wF0>YBJwQO;7F`c3(qoGb7xo;??Hl=SY%Y3ET$Owjux5>>^ue+LH6-RpTr# zveS2yhjmrgpmRiTeF5PB3<~=SL-(b0(+3R5SG+>SoEJ5wC4yJd5oDDpzPv5zT)G1n z$k)!Af8ltGoRpQE&aGF6URf&=R@xr>{6!J zm2!l(1+#eemUwk00h3B>iw5R&q$fQp6Y&5{AVYf!#oXG-@(N2V=F(rmnFt}ma5NIu z+-aD)?Tv;&cZ!fIQmCGzCY7jkW6Kcw_O>e+h>OYBy_0WZ`Li2Icg3{xVqQp_Q~9yu zU{C$(wP@pbXQdt^=Z{$=piKEH52G9C91M@huy-tM&UP6{5lFPW9^t*1z=MeE>Miqj zxHf9hDE?Dl;Bsr;A4ibYeAT#b8~<<(HQLp1IX|GOa}es|_19K&3-WX^h%wXUi+hvv zo)I9X5m%BvGwNRsEz1^hP0J%;1I2-eY;JjDgM85&!^+!QI~R=N%28RmAnqgJ*o?#rPW8JP;? z$`nl*?M&LGcO(ru++HCR$P%!(86PgLaWWu$gc{!q$OUxOpXn_gM-@JgLRD`$X}`9a zQSKbkVbI9%DUqNQgfPdyT~ToE?MACd2oRn&>K9SE-+aXPhq!~8Ddp-XU)N2{M)vu6 zN+rTD5mSTO zqfV6FR=Begd0KrKd}Bo}ozZlXo7ykYuqibw)>sHp^Q=5%8w*_qdyWqVg3Kej5$dD_ z={p_b09+RQg_k-CaU>0cX9Xv7_{+h?Hfc|>!}6Kmy>RIug#+WouO(|O6x z31_$@j8{9twXMNNp4VQM{pRvM7Q+Ne2)gnuAWiHt!3m83fbVrxJV?;s6BFCqWRR9f z%7kq|rNKx)<>wq^#)eKt5(R)dJ-1U>hYZs-8)rZMhXwIx9Zp$fxcqUlpbp+e6FEiJ zg)VWAiRH%Iz|C~*b#Em%y#Vctkw9hMfZM}`%^KqoI6vxGBDe;ON?$*(B<##Jp5KuZ zTtgl<2qWkz{b~R%PUe;kd*0JlSJoCT$$ezDh{hPyD%FXp?HKE2Zl&UneTFq_7)O#Dci20<{t?(x%m-W#&; zgBYbCuj(dRn1R&3S_qk;+jV`#H_E;x_(l>99DHeugn#B&3KYZr2G}|1bI%|F` zV?(V}%FVS3V**zvv?t70bjbSvD=TL6MKfvWD(4YWt%-IVl-eK?!E$2)K>+n2T2;ye zpYPTHtP%BrINCrF(A#3Sfks)KbdF60Px)o^Nm&3ScsRsbQ!hKh;eIlkU;1?H8>=zM z`>AUeM6w^`sBlSXTonj7rFJcSa6{r?&gE-Q64hL=@)4_}QhegqoUE>v z`^4li&xG32kFu~$$DA>hJh6eFzA6v)%6E;5cXtE?{!j1|y)!V7iKGz3@22g?&l5gn zSI=2S`eHS>W&fzLjP68^6bk0)$_`9^P&2Znlrgc0T3xl#%WS_~`~VulEmrfVPm=nSMDy4P~lMwdhRT72bY6HAWAGs$e7M%;PCA{p(ficVYiWu)Qlp4+mq9ezeEW z)y1U?Qj*i0IYz^wzKW>YNU#Ilpe+*Jq*s^whUtFu#JwW=vAV|~e4ql>Isq>P44O$A zY~1y}oP1VEPX$V3;4+~y->hKWJ}E#%2)hQEebp$CglAeC(+0^ikd3oSxD;B6J7! zLCs(E|rLEA5#j z@asWN$YjuvLL-(dGyp@slcp_&Fv2p-@zF3LeYp~srU>goDb~!4(5?cOD6|IP z(DM9;MDUcvflXS{XnE-mtQ&>HjKe6*d!y%ZoRReLU0*7XbD#PVs08F2M2simJ}?TN z{uqGzenBkDffq)HU=~UYQHdlnDm|O!!Xo;AR!%Mc4W5du^V ztjhcQxsI{4!A@NpEvpELb$^U;iLpi@9rG)G6f*iR*_N4}=Z&X;@Vs7_gF|sx>p+{P ziDI@!B1*RrkXFTjFBq&b7Qws881(lVt^qOA+76nBk6rc1!&q1;YSsEB z8?PdW)i^`S?CVKovvU`kp!l?De1sMJ+U36EWpWaAR?ZZ3FCK;whrZbqc|~rg1cKqe zZYUXjcUj1{WpyxNmZRKSjg+-*lO?Y?)dtEuui}Ink|}B`NmTU?=%%?$_498#k*H_< zIbiWUa+k*YM~oV)p7G>Brg2Y2_R(|z4Z`DHQ|9`=X$xY-^pbH=q*%CL=G7R(Ul;`M zp9-ncM6c{SJ75|KMBcs3#cLWD^5v&@nHJl+48fxSi-C2>^qt$HbLDBCmAMJ~PKKHT5d$T31ixB?|-iSEdylU~Ym;JS^?*bV1Gc=uMVp*Thm7 zVtP}b2!W@R$tP<+e?C_i{L>eJJr(zrPOT;MSNI|92~X=VZ|v&u1+fDn|Ce+FNrp zH81sApiW@NjbW+O3k&&1e90_Jaf|R>R6af%OoW0wBPaZ*IRi;{=8f5)$$(7bj6++@ zN(I`&E_r^9{8vWW1qn>GOeYe5(Mc3= z!~-W;Uszl(1OBE=*CDw~uHw=R8sQ3w-IL@&Jr(E5iZj14sBy~silN9Y zx6+s?gBW`u0!tsgdlKdS?hR?ZYa5f{U6X%_&w05=4>K%o0U$6A7tlNg`sC#3sESCZ zcxy4mCn4`xg-c&<!ff1&=q{N(!z5BCSe0KsXqt&LytebQg9)WSjVd$6WiN9m9v)-;XH zp^r!2cG*@j*RZ}sEc zjM@Vfr^e`$dEytusB5G)kbe#Swb^cXh9hFyIHYq>&)0Jv#}PPzM-?+TZBdZGQI!Gh zdfJVrB7M{Q6Bk6z+TCRDn%EnJgfWAMUn9y;#y03@sUe_6-THFZv=gpJbJ;@ zAQGJlIl$qb7CFWp{0nQ+lj~;E;%any(Z$hih;dgR2Xl%5(f_k;B_MUJwj!7H99s%J z<5l+Sra2B}_Qhg8tIo$3VH|`7bl9*IBwg9b`u}TGeC;0(vCPU@ZbnfH2ja92TQTmK z{A=yi>x&`=#Nv&fCY66z3)87cN<(rw=p#t*9J zc3)}cS(zN!Lq(LQeW}C+b`UXK#UYbXTAnayA>=AA16(j3n)~wi{xK3iT6lSl+BZ)( zwX(WSkHmGbdS6FJ-O`paAEk-iMs3GpkyZ`A11abO;YG`$zk!>dq_Y!Uya)E=j?T}U zF);JQRuh=X2n>)gW1@%Cca}L`HhH{dcH7j>fDeWVjLhOi%HQQABUWzNqN-R*GHw=g ztuws#w~$@BqHGrU%)11vy+cpjPYErFmZY|~GYcGAMgY1HQx*xhct(5Tlg^?U73a84 zDo8WnV%seLI(5Mq_Z>RRH|njRjNNLwzMc~iGUedXxaDILgvAmaWV~qL%Ate7^truv z$sp#bYMtUDVNWiR0kZ+wf95dw>>cDNN1hLwsS+DKoW-9?Owoiui}tTxJXHB>KJz?k zgT=@%h2lFC`J~%)T(`_qBUc28@YnZJRCyzohk6KSLs-{MM8<|k5D!GVU5^8Q!F23C zoK*l!xI*p8MUPGk64gX6ia5wt zXKu1J*!Y@H&g%L$T5K4=|C7wDq2=?&mmlQVqPlyJnrEyzj*zB+|CmqyrHPd&r9N6o zuZg0@QMLCNZi36bu+Y8x6^4966>4WjGoAZlDD6;SHu(S0cBB|Ls|UH@aBD>W0YcAj zTA~W)$)|pfy(EUOP9(A00|<4DCD86`!P>U#(7L(d0fNxkYZeY4)=(F2^)02NBC_@i zYqPHIthHZ{Q-nUTM~ZWR`(`}AZs=O{oW$pGI)bVY{_klD zIhADT?>`;DOLl>Q-DUBuL9@7B2qM*~lc`&`IWO}FpY?pFb3>nYHpUakL(G{_w`hfy z*eSW^;h_C;vAcl>9fda2OCM3ngQ^L({eChpQ?9bcLdTq#U)kx-c(T))(kBJ?11 z^W614v{*YH0)8h{6c0H3B=r`Yp-PVJb}kb$(YhXp8K;YyY>F6N(y6_ewvNfUtUotH z>8dM!;j-%Ovo(Il?xe-__K9qL3Yy{$g~OzK*1%qgUZ=Ig;vxt{D`9V-($!56)6Y!xK+w4sYsL+2uDsJpY7ZSx1;sxJby%~#+EE*Rh-q?<{KTa|8w2u^zHw+OWciN9HFi5?kB zkPcPD!n^4PD(lyk8RJ>1WQd}aQL6cP0!kHs64#(*A?;9L0}9OG_U(K&*at!}w z+^P*(egi&78h)q(;`xD_%xK&&X|lv=B)K0_P@t;%Fzw|cTwTkVCfy9woO6 zkPx?g5eu9?!zt&sc#(916ovI1VcQniCWWL!7oy~zjcABkto@mCA!&oOUdPTvPc)*% z44aofo%tZ+7Ry&n+OJ`dNk074dAb!?Au#Drgn-o zmlPWC6jWRw75ys7<(qGI3YwVMS9{ANlWY`UJ-f(Q?#}_GgK4R#*whc!^_To*7l%b` zIwNGV+4zL7DD5=?uW`$L+M-y)v^{9?bB660O+AbA&iiB@VmtO*>R>@ajkZ^@?XT%` zyaqGiky!vjbj#Jo?gjx&hUWaVfP3*^Gl|HkFY>tLiz2-So2RJar)edHskk%elbKcp zkeCfY81BK=%mY(2EB@_;W%Ex##dNn@zo#ja~57 zX0!$dC`vL4*{)Nn^~|3ZgOy4swqEysbb=Ki6^ha%nA*Ks{wAXP%;Bqi5HaZp@K`pH zT1rP@AbGGPU+I%a!Ilv6WU&E>kXaP&4EsX6!{oO*K6(}NDB&kN>pEn|Q@X7ou$7sD zUcdh)&922+Pd092EO=#q5kia_PGQ09_d- zO^|t%eO}F!BcKK;|3JGqi|jR9^6t3%+`3fg91_OXYoL0^=~j7)V&y&Up8uYPD5yJr zO9c(US|^xnqA_G5pCh`2^&3!BQ~K6)Q!ksJ_-4t677* znlly6gc}K0um67YAQD=Z$Ya`(Qi+Dzn|)YI+lliSeG|I1F{X7nTA7Pi$A}KW^_0tG zR~oOVru2xyQ7Pf_Napl8ztl3-0D3bA&NdiPfW~Ri;gUqNyboeBgjlIbKuuqy!B*3I zHSyK0a$H>bN~Acge)deBZ5YbfQ#RC)@D!LE5pX9WiVGWl*Xnvxlk6|*_3P~!_oh^n zQ{YxUX2Y>2k0`-8`B^1}F}*MN2@j27<{GANDNc?fSHs-6s3-+L^)4t*%gisi&}zS< zX;7*6C)!WZ)CV@``Ot(C#a_GthViXy;X@uPGn_xYkbLw(&knI?4ydF7Fls=2##vNA z8ls4O2Q@s|PcS!E2hl)}VQ|5_(qs?`OCu<5I{pTJ*v6L69-qE|=^7P{1vSxt%h~>l?`$t!ne_Hpr-0ycK%%8h5738l*f#t z3;21Ui28_fQAc8mHyV1>j(4w38?=4y&PL;M42^Km#1acu<9#mekfdW2?IIFr^Re3OZ+>+&*7K(#+m1J^N1I|w zgSXYuLc23N4iD4b(VPJ9ZqQS{hKzXamdVkGtS?m zfW!Nf`BwZ#tg4HRiHA-t4_eAH*Y7YdqayY#<2(GHH%H)dXuOMWIc(B3+LhQZHDkCq z%mz5S(yfxmx=2T3Z)pefru{k!bN$>CAj~Q88fW_C1wyuY{&h0JbY25gpG#>)IS1lA zo;o`}LgYDS4Kex+h9dF)A>gt> zov=Kn`qlt^hFEp@qbujC^VO)Z>#xFCE|G;#G~$eRRN}3_c3{PjHfYYNMs_lFQe)UV zL{M?{3%d9^dMy9ir|rqG2~DM0GxR> zq{#wjW|lKFwj|d-ii~{d>e17CjBMA!O>m)1&v|oY$yR+f7@bwN25Wu@<=Sf9FUvSE zjvEh4+e1ozgj`7tFwrBKrI*iqO39gDO+Z&|+LFp(H%nYMJ+Dr-qoT}r9M`HdvhHnG z{j>2&2K+!*7_Hy=&Z1Nd;`I8T;}UW(xEWKsx@yvyRkBTkI5bbG48c>fe#&!uIL@o0 z?S*9?-&OE_&`>4k27kL)I~|J>Ts~&!ziM9Z#FqA9;Y+0n!X|KWS>IU2esj;$zQ8U| zS*CYGPau>L&g(9G)v5~{xQ>+0jvr(+=M#W;M`9r;csAgbBQM;P$I%(1G{^&BCQ z&@^N=S_0F)a~8F!yZ~QUNxX=-iDcXsYF%Gk&foF*IdA^@@=U&u?HeTnPCbB_fn6FY?fCcWO zRo$vNL|4*-(z}@@mldurET@U`HY--<&~D*e1UJEtYFneX<Y=lVgsP=rGolg#V(PZTGlc!puFw#%)@{u`ENWt!#|u&Tb@glk=J z`tmVe!WoM?l-T2<*wWdAoi`XUC1uT(KE*Fg?L=$`3^Bl56Sp`b`;v~)CA29scE!>c zdo0a~kv+kkjY2U;Oy_&;7F2ckZ5-^0*Tif|@ZoW4{HLdAisd&`Mi`oql{&%IH-4Wb zqBBH(v@NIO7c@emL4eNoyJFGxJ_c`<(s6Z!d93={sFVR+g_1z?9HC?a+SKMa8peGn zj|=XKH?4(lxg3qoR!=479<;#=l0V3fp|Y$S8n18PJ|)5?tZLpM6nK6DufIa$|FvyhTF0AgBDz9P6xzQf`e4&1bxxca7`4$jmI@sY7QNo0->Ok zVAsnH_1#)Q`r^2sh5pV_xDV}uHB)d6XVM|g-LfGeBN|wl<3R2pda`v3qyHz@3~?EeK&Y#I?3USEgOC)J#@l^$ zv?^^7TX$vWN?tNoU)J#uit5o9`qerelrk6k$(-b-1%fNHoSgjeGVtmi>=ikWhH}4m z*q2hBA+Wrc7y25bcHAM)kIZrG@7)=lJbD|Cx&{$Ou(YMY)(Am_PIJQnSjB5TSmP9Z{<|W7n`<9scQ#fSd`p7pAnU5PWW0pI4$nr=!&J?-~mdUm4KPk z7Jfd@`$okL=~9@KOZ3UwXpn!Zq^6kFy8^8ll9pd=$7z+c<^2of;E*|*M7#(4-Qsdf z=^Qo1lWG|B^3oz)R^4jnRq6z#s98hm(tZ}(exh(8F{jp(Kg)1qgi`Fsj~AIv=EtG0*ZnrAv(74A<53AL|4% zA_&x|qDY|k>-KZrOgVDJ((5&&1+P&5Jl94z&%Eg;s;!djHGn$TUnm~G+x1u(UzYii z)IOKcwj4!cEXl^fi@I~ z&pm?BIDe=_Ll08huDqz7sn*iw&oe*(8NArqM27hOHdW*s#<^URlvq-wl z60A&^Ze%JA&ARq2ld_(P+mDB>0pY$*Krnwjwv4c9P_zg?jzTfoO)| zc0v+jV2K4+C2^87XOs^UV`VuEegHJ{xV1&dTzPjEjrz;u*r3gCBuIqXY@y^X(T9nS z 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 KuRJ{fnviXog7gLe literal 0 HcmV?d00001 diff --git a/MikroMaster/20260510/20260510000002-Config.rsc b/MikroMaster/20260510/20260510000002-Config.rsc new file mode 100644 index 0000000..f2fd5ee --- /dev/null +++ b/MikroMaster/20260510/20260510000002-Config.rsc @@ -0,0 +1,4643 @@ +# 2026-05-10 00:00:05 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510000002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510000002-Diff-Config.rsc new file mode 100644 index 0000000..18eefd1 --- /dev/null +++ b/MikroMaster/history/20260510/20260510000002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN -- 2.52.0