From 402f4fa1ad9e2917b1c3a84d44176e6ec818af0b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 05:00:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 05:00:37. --- .../20260508/20260508050002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508050002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508050002-Diff-Config.rsc | 14 + 3 files changed, 4654 insertions(+) create mode 100644 MikroMaster/20260508/20260508050002-Binary.backup create mode 100644 MikroMaster/20260508/20260508050002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508050002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508050002-Binary.backup b/MikroMaster/20260508/20260508050002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f9dd1abb0f8b9f7b5ac8ce8bc39a458fd6abfd72 GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXK0j>r!gYyUxMkRiWc`!uTn000O80004Z`T(2&Lur_iXRXi? z?wUhA30k(b-#m&8u#>+;4}-;@1AJX!_479BFRbjUma-bJ_2(P<6-dw0Uexl@oVggh zU36eWDo@ucLbLkak`xL_t&I#%&>yI+2C8|>`=cEGt@v+s-mlLD*MMuAMUftONHBYB zYXkungR)rIsfO){=$F1NTtdnEB?ZwDvjV{?KQ&-bO5y^-A?kyPVp2CipA__#;Rsk)-UCI4mT(?6`bsz(CyOJZ`^7zoaaIbMOtxmkJ0@SNi(J z063aX>?WXk00AVwzBoG{h#Zx7*zAHzEgyjuXt14h94xP!ker`&lmgYT==;(W@wvtM zVtPZfmStnL1Y>}W4I~^WY!o{Y8xsgV{sxWh{r~a)CTq7w%`h18X{V}e$+6}I1YXHc zp7M;;)DqG24dO}z_lJn*Nxppp&oH~yNVnMvyoG6g=>76N8z<0MhW*qx1+nmq?KqT6 z#%~#Y93tTxfuX;GY$L}wY{<9w#L$u(r4D!g!Z5H2ff#alPJTV(>)#o+T5$QXY^S!& zFykY1Y|NH!+c!`Q!g<2^M4tZxE)At+G^lKKWwsMl14|}eKEQ|s_lKQnDRn(Gl@;o< zAGPK%xr|-YgLwgPZ&iZbFc${w7M!-`B>gT~kEBV>3Amr{E2`{wzP+2&+7aJ3UVp)R zV?qbWaoq^M-Wg$-D_4)%$>GX0wkC`45#P262dvPKO4VvL^gQewPkbvUdW<5(H9VC6 zv5-mOCNGd1ER9IR*Z87U=*#5NDTfpPt0bMk^<~FgkUX`KO;HDpPhG*VjnRI)x`DtM zuRMg7SHBRYUWr(8P`DpWbQhGJZ=7+j1?(DEd`>Q>y`Y&b_6w=MKw{!Cv5;`T4on^X z>IvYLxa7LcL7fX5br0=*r{E#r6Fu6 zc7I%xJ}ugx5iXbLl9Lc}1KZ zqqXx;gxlJ?o>!^a{s^0rCD5B9cVo1^A5dr70Wjxb#b;cph{Bganfb0ak3qD+sw95Bg%kTameXQ!uEIUb#aUOS>QiSa?v73z15^ROP44Hlj? zS<#9V$xxi1FScla(BKXD+5;?w%Ik8GVeC~oQTdq-Gg4QKoEH;3xWg%LI({hiAp&>0 zrr6nz%M}R*LkO8RwJ~;gk`Y*MQI4wW(Y%eBtt?gh07-{FdqW~8fqZ*A2z!=>#H@_@ zKOB=mRlZG^e9pT!#gqPcPhm@ZAdYURYqfZ?e(UP8oQW%y%J{&{yHA{Lig0N*h$J{Q{L9JQL1SLF?A`9dYXoGxZUtP9dvqTJNsSOwk}u4;#Rv()3Dbj@Q07t z0=~40J`uvU`oe4i)04nlZfLTibusb0&L(gl{(pvL5SR~rt7ci-1wK=2T2ESc5Ps2fE2h4>0h^ULn z+xCS+;LY%U!Few4nY636=JxE0AZlcI_rkCvsmaI_VTtp*`;iNHBRiLKB_Y2Y$(*Q< zWQOC_HQkeiMQS4hWAwomO$BDtqAz`+sD}JjyA@szmh3y_Xf%24(MEx$<-&z`-7H@Z zXd&+!2N=xiSL5XI;N9d<|cnv@H5%!{JaDS%g)= z4ED5fk@D}({EDAcC^jY^J{jX!GGJu-_S1E-EFhL}BgiGFHDZBeRh@`3Ng9WbwKRiW`t`AXicseF$0HfDaAS3(=laexHf(!1tmvPrHY zURUn!biqn=zXL}^J&Ia?Q`!%&=HAt-x|>KN?Tgb|qfO!}+?Z81Q;h>*)M%kM&R5-~ z*4uOXb-y)XXP+&%ezOfcz$}NY}cyyHLWn#K2#aU1Zg#|1FdL04HQ3`9Zk*KV*g!2}+Fw7IOR({sm*9|meMgPh+>ewAW6r=2{&Ts};89M@@A1M?i;6G;rKQ2o3O;d6l)cRkkC10C zs^|>V1^=r#s~=C@6*MS3yDJ;41~%A3zZ%!mA0$6eK9Yw!WJ3WAQ;&1=cE=9gn?A6_KqmLm%y2q zl*fjMn%uhXKt&Lry9sHW6Es#J5qy4$mSq*o+&i6y@5BLY!;WrAxFI?iV$gpSXsoVnNM5 zmXNId%x47r=3p9C-TW4N`9c9yl*<0ljusFt>ypnvPiedet6IcITz!Ck^6&_JdfB?+ zsAp)N;j=k6S@f%GmTIgOKo9A14WzL-qb%g0qtvKIJhC6&M z#fToxJY$e}kfvlYm#1C`CiM8NVgsB3qO@SHR`Ao>s7T_RwcaLjn2BxbM)AWbK7H-= z;Z?isaaJ4K7?sqN6OSDs+MV_?da5AnFW8k#enAJ68Td!)${W=xx6lCHy8ZVul;pR+;0)%6k8Py9-|2JOw==ce?h`@5fuN z3K;c^A~MV0ztcF_fSYe#5KI8W2>`DFMAxhA%))xBt0_-jT&^pWE7#2UEW(g~!)sPw z5HbZa?k!yig#!L$B*Qe(T$r>3XptcB_wk6}Y)sV^BH>Cx4C zzUb@+m}OOEVtV#-GA<dHBcxpx=H+Rk1ayb=|7DF5}DGVW&Aa=nG6zE?*Ov~_EvB|$J!(u#NooUJzL{sY^Jm_bPVg- ziqGuS0(Z}spPf6-*5FQxipSO*^V(bVFdZQ@1(Fa|B3iLCh3JK>FBOBy)>|A?xzLqk zx?lGNLAPRAlH5@4-qaW}g7Hc$o*UesY z6n*MUtEMp{w?0>q1J+{9cxhLwTjHnfz^`~@MI!J<>jM?XR8KuZ9A#o99Lr&!Qu`I= zb{G>TL-F~B)LS~;;B;hu+1&TSG_udYC(u?t^|7Wvifz`sMWR%ZGw&=wa4si#e*r(!As+7CW3qC@WCsdV~EO(A7y&1r60Yij+jV@yz1T z7f0$bKC^|2>-TNYLOO2FD&tk(?n9QTu+CH)+(;ce5>+0=aeiou&)l;7Vl@Zv=`=JZ z*?by63@Y$m4rWWL2QtTt>F&eE@!E?oIV0`oa*l2y^KOdL+<%+87}M;9HuF*rm`+`&LS% zxR}s_oq}RyuGy|4%WDHfDf9eomOGflMc&ch$;+Q(3eo){xBQ&2(4N&O;1m%Hu|3|6 zfU261cze;kFly9Ztd7H`>g~rgDZyev@l!l?ZAi9C_H;U!O+uN}UVDR%#2qFQVa%#| zeG_ytOvDwqI{l}-kl0UHI}zTK$8QA(_k3OhLq6FIZ zV;19jzQ_A+JTxs$ApvM`ne|`+faCkhDA;%=84d%$^St6N02lL_6|+Rqa;k_ zKyUF3S>F2G^NnsB!17x3g!1jXrAaPK zFeR^+PNvoi?Sox|srPin50d+^Gby-n*Y9Y{QG3sh#k|9xqrC*Kqz#3l@wd+%<{EMg z0?LWkC6bdRXJoz6Kr12V5~mFofgN_#!j0A_b+#-_eNNST;hKpnVTs1dbU>QxT^ zbCceIrW#Gw?x>rco6Cpw-Y6k}nQ~4aojoLm`*VQKTXtI+_YA0K#c~3S9asCaukE&& zH+uX5zZ$0(vcFE1tAuJemdEr0ox_RT7_1>B-n|}oqjfXJVm@=RtE-dB03%yW!rD;5 zcj+NIBSXWj&oY^M^5k$=v)=$h&d_NAo3>>fa7s)E4{Ap0ub6v2_D&?dBu<&YNqaJq zeLt+BMJ@;}M5qsbQY5rd#5YEk2KnLQW*3h$Ca)PDckvmc9Kg{S{-JI&)guZ|KwV0y ztR&a;e%7*;IhM>>)noT981INt2KH6bYz@)B{Bjn{pbi9aiZmU^Q5e~2!xbINM>>x9 zLjVD^PJD;Qp!~L3G7;hwH9{=6hSwUNRQ!2HR4e19oZ^#Dr$7A0a72L|AYAr1m?2$u zcGZQL>hu3o>0}ouFqztkJ1i*Ah^HqpzIl z6VB6QnCMyet;?$!pY09);G0iAKtA}agUkB>K0v=6E%2fNHF}} zbey%ah2|s%uA)+X<029S1iB!WiCX&-n5>YC2#oZ*O(8!H0-}>7zMPdEnJSvDXB`R! zd}qkh<%v8lemf5>>+Xtf8s1d06&va_z!xhVRpuw|r-e&qW=b_oo z>T?z(ah&n%h|TK88IjY)%W*Na*Q|2B(o;8&ke0M{ZN{sQ1Yh{W_asqLV2wrr&D5x6!6~ZJjUA^@w2-+%J@G zk_jx)_C5rZ4^@mALC2_%|NErh+83?uoJAcM`K1`Et3YEm&#Y=y#3Tv{uuC4+J?uI7 zaGkbkd~*Y(p;AV*FP;~&-g-GAZy!!`5YmJo`VeecFNZ)M)W$uPlrH3}7RN#pGS=VG z@&gpu)nX+63r8>U8~4E}%BzuuH>~@rcQU^2Pc$j}U09x`Eln6~LNQ0q2b0>L^eT&v zMPWZn*VT)6BIXIKpXk}i)k!wZn^PML;7~}#vsgIS(D669z8e=k{8?ph-)s+n!e~c@ zgEXE{!=wiU4ZaUv@2g~ou7-%?db%dkx5Qp~lk4Iof0(E_CE)-6TqwlIv7Gt@YJq}Z zDHJa;+Rbv0JeSHwBQEWhiC`XKKp_e)z?Vid=IlMd(@V+gE%{Z3Q-#~7p1K?xc+ko5 z9#`ENJ_`rdl7cTOY`N=5X1gP9z_kcAklIOZk>)%DxGvhUDNBWtTv2oMs;lVvj>0K9E9U8v04J{TM-rBJX7{m__ssp1I=8AyREgJ?S~H>KEz43A_0 zy|$!-B9kBvdpjD~BfLKOZybtpLM5Fd_SJx=+lnj6d1LlQg&vRG1Xa*L>3d@?xrv&7 z&-`1&89{vX3gM0;7D|F?ZBU2UzWcE~QzFwldx@bv?uzUqpl(+cat5X|S0U-^lL!8WU__qSyTgVrDkAF3%_S?*UTy_QcHE;Q{HETuH!7BlM#WPU5b*C2 zZY#!A$)nByWGFWyHssmP_LD5ORg&avh!jj?MyH}wnoc~=FAzWe@-0kqN~8vJr~BWb zxw|jZkU#4BgW$*j7y71I@VVf`=r+YQh*?Y+dXU|ApFHqGzs2+~eP)HD*4Z%WPQqN% zm}qeHMY0>XUFAf$0wR@8rE-=KNEXa9JB|0;29MP0K z_8b?8`NbK@_=~EMnrnfo^Gcv4Z*$P>f9F}j$o#$(hEs^-4pP%s#>w7eu@zUr-dI55 zT(j!9+J%`z4iJ$eqf&xp5#fr?q-;UXK>sQf0Ua|N!Q;(SiAZ|^O#OgzP9Qoy2=k?I zQ6Yl=R!dftt7=KRO|#pcRi>U-&Of8$)}2^XaVVv?=zrN_d(^m*os>+)0YcZVnS+r3 z+w;+rKu0}_*DMH$p*B1L?PlOr3WU6JH!4aedMK5?H2!$uL4k=Xh$Zj|{EFO~+sMrpQMX7v^K8&Hi=a4Ky%K=gaQ8E{x8qM|x>uBWhV<3rOTxCvds7(5VzXQSU=D56cBFPhF)Dproj z7&4vHSHw~;=dsR$+QqW*FXPcMG)nz3VAX$)HDxSy7#kdsgzZ>@NcAd07BEmd+Sry$rFD_D4(Ba>creJxH~KQA-Yy|k{r&QFFeJcE-}!1>*V(3^{j&zT2sWghhyeXdYt20n)o1G=1hUS$QK-6WxW*psaZ=3qpiwA+!*JOC640f28Po?E zMHf2ZPGvnWQ%=r>28d^fUg24q=BKfHy=yEjVuQ1#uQ=Xi$ zvaUFr)~TqD9Q*2GqIMYcsTcpSB%LoDW|_Pfov7F{wN-gq#UmlBDEO7bTjl0OEU-^M zro?v9uivT99WbNSw|;RErh#UmrE0)v&8ZkSNa>#*g12_?vSExi{f(oa{$CcogI5|> zLqgmlydh-*80cVaf~Fvst0{R6FlpTHS1t2}fksrv^DJX&14vilbQ#AMUv6gCLvTQd zvlRqp@)iq*aE2U@CjAeaL*`?ULxTrD`m?iV&{n$bW-e+J>{kz!i(TJ5BKUJ(L9!N# z1Fb}+hq{k2vY5#PVDX2x0OgwtzsNi#2R4#6*QlqIu)~|bvvD=mG@_3Bll-r&o^41( ze0g7zjfC5apV~r@Rpt|$OUHyw@oX198L{h%9aB@O zyF0VI?R&&tT!^C+NoScCqOmuPkYVgx*$;P$LP65%sTo0<_{x?ezIIuZo~HSLDG33n zBjNvmX1X57pW6GIluPbnXj418Di`FZr?EFuBw zvbrl9T~{s=F}oR=^3S;$rXQwcHPaOgy@1;n-#xf(6?N=Z>pa~U^L+s$CnV@`sk_gB zOEr#b>9rMul6SVB`NEWkiaGF>yBVP)P5J0jH$Ekw-CtYDBcz_I{O;=3k<{<~qcYE^ zv&5|M)SzFetg-IB*u>;5-sZ0}ewGkFnovw4Tp1o>RD9?0aDLLTmhnqx{@BT?7?U*$ zzccmIniU%DoV2Y27OzS@9hV`@ZDdP3Sni4r5&QNHm0YuoSrJH?Ed`PEZ<>uh=UOcT z5kDVax&XNNI=s&b7p!?dQ0nvtNTTHO4SVLr zo$)iLhx%*o$X#3sfDzB49M12@3{8h5?okRT#Q>3Pd@$-d67j&{#TFiS60Rq^NXg(M zp##@xw+N_?-g<)^O$MARd_Gfzgs~@%CQB|WoDg%_Ih4UVkU=+3N%z^NjkNwNizU|n zGUHrq8a_>XgUTMTZnoMn9qtY)EQXlRg@vyv-`~~&O9Ss?C0VXbmg7AMyQwHSC)1QA zfqayE10gvs^w*{9TI5D0;D`?}8`DP}K-EpP^est%%$Pd9xIT%ob07Hua&}MCe##JN zP$BIjOChM@9wX7%e(dRY)>SB;857|CQh{Q5bCrZQuaH0s!J8N*%|2IRl4QzvBd#k9 z%O^&hC@5+gy@b%7(MkvUJm_)79NyHD&8$do1WEJ`*85V|XG{c-U#)tP#c46v0+4pc zMM^auN<)fRKfiAx-e9dXEG(|ocM?Lmcn}8P+9HglK|8%g%A{cP?CT0O@PC5 zcP?1Ga_Vt!UcQ*eSwFVDWWId|-LnTO`_&kWgz<3tN+Q`kFB#pxAdiQ86d_!eSemsF zIy4E(pq=DG%0Az3sB{$4rt{aVsc+odI9}1nT;@TekBu_TBK`aZQ{)S2eUkg1Gw)o5 z+W~dP?*~J-x0!Ukngq-K+XRY$YC8nuQ&Kx}S+9H5>n?*kma`GjBbD$wG;s zYUf*JDXv|roa#a=y!r}!k`q^-LO;p_5u<&Bc$qeegWVS7$$}F2o(7ytc&Zbm7@XUn zo)}>A|B5t8yLv9%+a4xU1>yf%bYDnp)iXn{j2F1Z45L}u99bgFS|&c8h_5{Mp>uSo zN9L%cd^<>^C;uz#2 z)peJ17~Ed*ldTBbc5w&VRsnD+qb1kGOZ1@e<5OJ~8z}g$?VgL{VEkLv{!J#l^#MAK zMT3lvEgVrWn%*pFU&!TA5Pl9jo0)*NTU|ZA5h$wFn%#pABlyiqF|03@bkKJ;-!)vZ zpk6C0x_`#;K{THpH~S*N&64;)U#%(3AJcz)tVM;skK2Ts;kb6EB|)$WEI{&@3YfwU zewSMrJiYAD$7b1q`u8VtmcvD{c4guTK(D@u8+XK2qS!^|GW*fh3HoZJGy)cV z5FjJ9s~U9V|CnXgP1MO3zr@1*CpQZm5+-+oX5U<&01!)+^4{#((OYVs=0?g*>ZjD~ zO+i^@A{g?@gxK_>`cNPD;ch{;$YBt|?`;AJPrJvU8(qJ2*2|#ieGaCSi;IlIFMJ)S zsMsW&Qo@Zo`ru2J);Q@vN&eg9!?V4xy!_`?8^a7S^==&qGSF)rPW_UiJR!Ry zv%SoWv6>NKoVcv}&@)c;5Y}Eou&TR)nXe;P@W@v*KOLD_-$Lmhn%Hx}sK=vjr^2~{ zi&&pd5yPP((OUj4s0F0HA z%NwS>A#|u20c`su47CY_D+?pXst<<``V*ONUO_&3oCdoz6a7rLi&?!Ber-6rEI$7^ zglhRTIYFd)WIwZHtK;C7jXxqyr0sNP4uiS$YTN)gBLR*8M?-iEj_=W>8_0R8)Lziha|1hZghNga}f=mM>(_Jcy5mSuVFCA5eAN}MONo4cW}^ZFE6|EQ6c zXBG3^HeA2N7^W>G1x}Wn4mKQLE<-QsPu45JeGOG?C;GDD#(>}cmOQCr!%q#%?a0i? zM_pzdEXBK-$Ly`HefK&d3Z(^6{?DDFFZ5(PCuVYwFqp+KS5d*K^5W!xlW6w#eHDW% ze5&6*Koz2tr;ID=5YaVRMuFM$;9sis7ACA_aBBA4+#+N0(D9`5)k@w&T8rM;DT31W zOafFD8`!PDg$lz=@Hx-$gZKZ&k|1oQdy}4_(%^V`l7-rw?7dju_YkA953Y$hosWdH1%R3$w^K8JwD-TmOzuHHL8~1izb=6^VDk`|+V4G4;BA zhLjmBV)m2s2R{RWJ-%!MDnP-di#VIhZsx@P^|r{Z`%?bkvRE`w=q6>bEBRZ<`L2dY z*R;;04HalmaAeHpAQK(Pt)3v`euwzSf3ox!W@9DG9~jof?!^(fWa=)4d<=Z`GUk+Y ze<{3v@Zt9^_vC3f%oOd^k_ZRj$C|-T2UZ}ipOr!$mJ4G7>;OQr4>%>g3L&*kvW;&vg zN;CgyPk>|aMV&Wv#-_BXKu0?`o;ndem)viz>i(uGQc(Ag-1ZjEzV3-HVVzeK#BB zPmZ3|!{aKa|2$k+i8l8VynkRslCbr>R9-eL15TQR3wVtp2&R6oI@mwND25m2)K{?G z0+Ehu?8Hc!NM^T(A)zRBnPU6jqaw6z#y4YrF>-S({p0=LX0pmNG&5N+*k*?bzXp-q z+x8riLhe=a_~y|{xJg<%0tk41FLhT4g3Dkzjr_>r8wY$_YE>f$P9$O!5Y;U50-eNZ6)@S_&Mq!WG!(*mk_IkA%L(I!?~HpqKQ;})$F3mtjng$f#CjHHY< zbT@NiKSFtxT+V#A-u9@)-6cl6-)W8fM`30>@4vl-m92J=K1e+nFr}|_SkF5_E(&W* z7rFnw_2s$KKG7Vo-!5Q&^b)dW#VKLdswXyXvZ&$d<;qgOC%UBIiNyXF^_Rs&k7k1A zS;i9eU+Puh_)ab#FCc!`L+J?DXERpev3MVV)fN`qsQC=|Ru~j2pzS4pP=xo|sp=C0 zSquf;vva~F_AOcB01C)#C(G0XVz-rkygQvztLw37a^$FFcZ^n!Lbq~$r!zb89c#x~ zCgTcd$WBsO5=Z@Cr?jb>GLB8C=KBZ&-}Xo5yyr#6^h(|XPdBA`caSj$9Y?&&NxLn) zLJKwr4dMxgQVLl};pv<_iMXG2{~Y(3oF~%+ zFc>+H8oJ&n!diM*Tyh;~2+PWi8&c1BpNQi7iZqdcL?62kZuZ!GAc?@%bk+3&slmh* zfoHN@+W8@J(wgzJBVhE zwtx6XMt|`6?lrUgb!{9BaxRxC01~vG}=udpi8WXX$kA1s3;z zV9ds!#8YR#w8R4a8*qVz_v2DIill^ru%x1Lr3%7YBfPJ)1(tT|2}x)4;44H$Itw|W zPQVq^T`gqPKCtU>h8f5xXY(rz2NfZe21!0#IEDM+DLEQu1P8CX?0PIXE2DW;em7^qBV}#O|wLaH+DtOK3b(jY}i~~A8N(j_Uqh{ zh+0uGe!AEppIsvy5?p>p>YHihBm}X%^#@CcW&@D`>bMAo8P&jmYmoBtOE1EeICEQe zjdP16Na!O6ydW%3=kLEfmk*l%3nCX(MFw+@AATas8Mp)x7Yc+SSqf~iaDh_o(!jjt z9Qb$zo3Bbo5oL`!0bDLj0pbq4YVx|m7C(c81|JVAfh0lknx$CRUZeH9xlF$itUZzJ z4m$>wk>)0S8hq83Usd^FHj~IR&}$x}awF#e4!LHIB{Fjd#3@hZm^@*)z0b`6ln&ln zlLR>AXrWNWSxu5pWTfH;qV_Mp#TW_Q!?xz3z zFurU|06h-ju2-;8n@_S)hCBa9!EY5_HQR*I#qi%DTJ$fwu4xcY*8Lys%-XTGAxqRh zy4jiOO!2FPu4_5_)$j*6*EfXV^DKmp1N;7>ABZCd9?}M2aC@mANkD~j+-WSMCRC<< zO(j_SD2+dmMfH4i{rUW2d93@n7fyT~GYB@WW5QaZ99Is21l6mUAM}!Hc)vfDG))9ncZlzE?IGg!%|rOT!=!O5}xSW%XWz#DKb6ym9c0 zW!)rkwU0(&iusPWqb1_9kS+i|Gidy?(1t-2$FrrI^v96juiYG{9_&9YU@&81gS8Z? zj{Tgwy}{%BhmNvrN3<$Qqj&0Ra ztFLN!u`ZnYM>T*zS%Y6{V3RM)2lYZS=*-YACALpvtOUDr&M&Tw^3Gh?-Z1P=$P)W- z#Bo@GiUOzPZ4L>}wC@J+59P)ps{~pj{AF19d9tzT&}J@gNP9*~17QT3gTRQ~w_czN z)PDJ`Xg(_grsdo>nrHBYmvfw~?T}4H+P*RI@MY|N8Gw-UiDn%5;r+=Sur-esb)E?8 zPhd?l-KV5Sjf)=T-R{r*u(Ku%6cI`oo#lo?krtjNPQH_?thT)fP`1VQfNe}nt-TFG z*oVHL2DVav=8lz{m%cv5UkTMndDRYWhDj7%Eo(eMmZpwV=q#E59B_-R>^ib@ZAvW7 z4*Z-#6XR6mPik^_<+gX-g%2D$p~=~3|B5cz?w`{O!RB6j97v+6%Ye{RQMb`ekEA<0 ze0>bDE+!VKXkE@P%$1GlLyZ*j<}}mR+06&S!Wr;>i~JZY!}d2?cO4NleP6g&F-k@! zGrvmSvWRQH>4(XhN`4@7Wh_AZ!10_mK)MVX)18?gfM`9RKf)h=Zu&FQV4_G3uK1QF zfKL_56`NaO>Q=4xzdUkn`+C%=y#tu56eZ}RABNgx7O%%qp%DF47FQ|BunnGtusB(B zZ-;`tCE?YejaQXD*XL~NQMn=aM`3AcK%@sMxu3q35%TR2l)xu^7s0BzA4-W)3X|RW zuh@8>?wqJ##C6p+#n@lWD-!zV+m96mx?`9u${zNMBD_s{t*7s0=rg;)X!UC2i;Y5v zp_vKkbvIHmHW6MS1;gAtni{|%`s^il&6$TbSBn+f(f&t?502^ISpVA)m!zI`LVg8&vOlL?E!o#Ro78$nhz|ugo_*zsgeoMs;rTX}IBGQg)}L6R%w{ ziwfe*J9BdQ?26MKgwllvx6e5YkPFw^!!v+|Jbd?G`dQ(cj+XQ&Nq^AUpmDM?865?w zAIzd2kXXY7-1#8>d(%GDnN?No`Y>q2XKT@T+h|5NLjRbA2_3k5M)X@VQo6$P6I1>~ z?%$IhX1M0Jylxs#SZlVM)clBT?uebItrGrS@CKSrP+bIyAc&)N=)Y8wM+kzBM??Jz z0Q$Fz{aff@B4u~gL9DjX?ok&x*pJ`RKr)3Zbhs@$YO})V^k{YZYXEqPg#1I4D-~dF z|H;f$`Nh#Ls;jllxDC^$CTX8;asHpRjKaR+_oLp`vD?aQ-d7fWmz%MJ32=UUtcJS& z|7q4A#G^?gE$I(?7WwK=_$N(!>k_Pn8O9FVQ~;LuB*hQ@D^OXWpQa~X?N^9j1;Z7Y zsZ+w=S1IRTv|{qa2{>|Z^_d{BFxotDqqow4dcz?5< zmE9~b+g@+$W3dC^?kCU4BX1dc{TD?r%v zHPQ31CqH#Ukp+4XFycoUghzQaE%JqXTAc=NM`OGa=xZ%ngNh}l_C3Xyef+ezYw~+? zArb@DlY{gR^(Qz$p#O*2tN;O%}*@qD0z@|U+ogUW;y zBHTBhx>;SRA55}cfLPSZgw%EGIfa8#usMfda-@K1n=UesqXOs(a80OIvK#YsZ*WbF z^>}EBl?6kEM5G>XB<;+Kvp~`WhlA0o3JP2^ZuM`E(f#}r9dZ_YE=8hO{3iH!RdO1l z$7grmQEVMD(a}L#46&#y9=j;vr5kD<*6Q zkHLHBgc2<>J78wqYWN=q4pjJBO?}8F10|*4&Z&B%T_f2y_?9D^E9fhK&wjX*|5+W^ z5ql?a?$>1msKNe*EyImzm<`w*?-)+9)OVmapW+}GhMi+#*u)}c?-%5JpIDTF3U zavOG4L^=9OLqrhLO(vT=NIM8u#YBJSO}t=4bSTf&9l;fD7v z-7~GQi)gHj9-gufg{@I-{40%ZbWN>y0&2tO9LR>r_u~teaZZZ=8SnV8 zu7uFw+CO3oK`!t8^`&m`2>BszKK$<%=Zf@c#_9qygHogV#DeBL`{VD z!5P^crw&?G#gI3LqA~HD58r6GQ&cmRq4Pci)fgEG-IFBBn}L_zGHl* zBATpmOS=>%6nKE41oMYS*dKAuFZ17J!Y;4(oe1m-+yY;}FH6*=ixwi2`O%JW3D`N7zx%-<-Tak(h8oNBl-x z*jDU`_T6%9P*Om?!O+U&FZLx!q`h{!eX3Xw8QXQ2!4`9KJk+?w0?e>^m}oV<0k0z+ zTW&3FqNQ5km7A_LnX>&si*Ba|19OwynOhzZY9Nqd@>|#kGPrlO{%gD5q)(74H{Q;F zc0pykqTd%yTxtM$sH6y$?CX``JEm|SzWiUsYK>MJhNFa66780L29sGS0elXM^BJr{ zpP8c*L~;qO)daT?h=PjkF?0}QpVJg%Gq*NI%D)Tai`o%MC!G0_;s3mqVBV~VDbmO0 zca9p1$Z)ixiW)0fpR1>P3G=stXLQon5T!|P!>(>y7buQt-xV(m*)|f-h~1Wk{B&@; zVY)t!)}OKfu!@`m}+s~F&j}drC9)%mY z^-OuD>biPl)jj7S{{;ZQVz1c2Nv@wpY->p^o#dWtLbu!He8o^>&0w}ol)TAzcZo^L z1gV3Byp|X|oo>KN{r!0su(?5Ug!6~BAb_jsCi~bQIjv*w z7ZaUnK5}FSa;o8ck<7Z;ZT>X>n*7^9sX`|!2e>Q;s62uwe0Sv8?5_y`ys9rf+CoAQ z4919LxL)EneHkIGM?}W%!k8A7361B?(y&Ep#7r~EUj zb>St~+13C{L=U?;W0tjGTo_i;onpIcqpEALF?Pg3PhS@E{gd&QVvy|V=!>P>?N%gnWef^ zs?zjZj=PT~)ax&@h?rdD6x?uBm07@?5;xn0^44UVoK@PWc6P{c%_nGN!x@M;c~Gk) z+_$_2c9Ylh{9X(`@-qXN-efpxv+iF=m7O+*6NadKk&6t@)NTIlfOJX$u&UPSA#t2p z)R3xk)>?Z^%V->4CBtJQgWAJS;Ow$-733Y*hY#J3Hg`!kA^Qp57bDIduiz2b*a&`v zT80tU=NU7JHl>~9fGY9`N`o+s0&W$ap_KmMMxB_rcfi`~lDFY3JZC*um*X@Njrapr zNJn#34M(6!RB|rGd=5Q=eUWaawG?3V8qa}N>nE3{3#_6#pojYKaNA2|FzWPrXtgPof;U5{7?bS*Kc;7 zJQk~4$gR}ojgYmJd#viDZ>Xj3=uWKO(oxp~vjqY`>f+VxLu8(TO6m$=jaA7@T&iL> zO1UfA+&ld`BJ%2|e{8c7YOjK60g}rvh;sLe?DN||Cf2@mHaJu^58~+`0k9XPrfvN* z2+?pL2-kc3VNuChcB%KmiCWkkM8jp0g}mn5kSC3W)>F@knZX;NkFY z0}P3K6ky6)rmo8kupkL;3W5xEHs4<$R0 zw1+X{3Z00ZB!X!`8`kJ+!C3W@wA6p#VQ-aGLUAN&gMPeLlsyP-kI~hsRqDn~_AL7= zea~dLNkV^#%I|02OEf_FvlavSk`|ODR{p&^q9lX=H28G!sF%4zZC?kH+<;Xa?;yrx znq!U+|NC!)4_N+}oA-SGiy@#;=G5hrY<5a0#LbsRS?oPXE^AIgj9q|X>TcE)end%3 z(hJ+-#nY39EnMJI{dAXSJ;4H14IvIgPi`n$u_m`)nwM}9Z4mmLSn4x4pt;pPQ!+t_ z>&_#Q8^*e(ssrp5tt|&ywQw|6aIF|I?kJydJU=k=xD=Ytkd~n-s2laj+064ERo&%z z8afDYA!-gNL4Im4522qm?f1eQgy_5j(djTDbGlps*fs@TL6G9bdxFAd&p36g?`*_& z?&dself~ia;%{zzM%>k#JrQOGjZ7YwYu0YH5|HU~QW2hMRI*tr+8XvAYi=mhzPg!c zDDfJQJQBWi@Yu@%e?e%Y17!ZMb#rc5?=f?ZG|dOu7I$&;-*-qmzz=zWnd&i6N5uCf zf%scX+tRbdn)|2YWtA1Mak8JLvDPFe^u)JLLJ zkk~X(<|?GctbIVNg5({*~C4qB%T%W5+bhGBX6h$}TK(1D%j)d|{ zWl?QGtjH8Q2ibM|lM+zInu%a&)-`YS*F$dj|8()BP+NV+o4KPhB)E_!GfH3Az#RGQ zD8Mg<84AISy_3zJ!0wjYfy?EfeQQ0Y<;8h+J;TmKT4P4IHF1bK;-1rM_GphMooE{b zEemEHQ=~$-MuB-CV1dW&(p&VOZmki~8FN_FdNC-%TYxepS>3F-_ zQ*xw2hYVK2IGQAlY&QeeC7_P5WAxh3TvC2C5mbPHFE=~p-+m(qLP4M`Gv47(XK^P* z2VZzMBP>Yo=c54sKLEh>n0`y3k_UrKHO=9EF5!T_^<@1>Mg%QUd@-v$Bexcz_h*c& zW$6u@n_~lK{i16FbpOv1RsV&d?a8Ef`61+|#b=GMV!7;%IOOZFrf~5rz=rfghaAxX zoDzbICyt+lSl=QZd07!+1Dm^T(jUun9-RSvIHS*<{fj!;%calXws-b^ksW6vN^R}a zLZuL9?tGW3QSMjpKuBqUjzsmDvlH~`5M83Y8Tnx^O~h{T;M^IR%bcT583dOItet|P zjZyW}Y_OS;Y-I7qH)rLXE_~U^$MjD7j!Hyf+3?uLq*xH{HbG~M41!u-C5%h?odRRD#Jf zCr4N{KX>b@R(pOibZ1xs;g&vLgdjVBIMK{?E&TD^uY%6d40 zoOeH-V|Sua{RBqNZHTr$VaEloFuwKy&MfQ$)YXrpOVhtRMtCVrs{SqKL`2$vnTpPo z0;6G~wheNh5vBriPt*S#jTOzhb$e=AR}H@H?ieY1mN_$$r=QfHR5fD${I5~51iv`y zSFZ^(%jg=_H&&wFF< zfwOZ6!f^7*FR(`ZEYKlqX$#|_yVd>V4|74Pus7|h&W)#HI=jYak+vwC+kJvXA+88P z+MB5&cg5Dgh?xOwFmPR<9@r$>RyN`^2vRgxj9u0%|RCNpdv4C$(^srRx{opk|z;X^$+FxJDQs@@-Vy^Tc zDoIR7Vd%&~Wll4;aWlHH=@H)|M7v9i(iZx2k*}8_etpL)cEqv`YdTe(^Adk{!YC2f zDr<=7rtnzIZ!2l<9m>dA@9Z%}U7Vx3pK!YAsw;){Ta5$SeiTQ^(&KalAINu62m*l}j;N z8s?;kl#XBhOfn3k$E0@ecKT8*c$xtFu?p?|e~Pqb)#Bkiv`|s6c^;i>*xKV z;>~AWFBF$%yAQ?QS z`Q^U{*9SZe&B~21A}y&-cJ1z4e+*vFYBm_NMx%7x7r0|YhPD@$BNOh;mM`8TeWGy7 zPwkXdTg1hNkME*cM7?*bhVFW%#jn60YKBfVD1+`_sP^gN@26W=wCIw>sjz1zprtTf z12FFj{N70KN~J)RAIn`)_#KWnRkTl)DfNQ9u?0v9F$BRF2=G3}dl85YR+X}8gRx4rB6k-Q z+&pelDH5EQ&M4Ja&2P2K!^$goIy=>}x&lozS`f3H!mYnW#ID}I^w^2N;QEPL*BF8_ z03;d|*qgw2$CEfSh_cA#bMFYG)?6^NP=$cmd*a1o>(`?4dN|lt_9RscYTxhu_xmBQ zfJsGT$5eGIWN6hqsNMfcDre6_1;70PeE}kAJKv%ra9PUu8^+>3gL)DZ?Ny+rn*o!u zU^qy}rEN4$l@p{-fF?Sp;Yg}B7FNTUB*4A$nw->+mI&kaqftX~B&mk9$Fw&>W{=~I z0$NQa!L*BTJ%1!kn)dSA&M|E>ZgmgB?PFDjrtNnMqA-|CU%)9FQ(xMg_e)yIC%{{) z#9wJ#dC}_uwZwc&c})0EwYKO1v=;{L2smUmg(ed>H8n%w_l6Y9h<3 z%vLl3hN(;V`9-lSv6dgZfpj6>89xJQ`LYfMEFWW-X{mSL1h8XcPkqSOe#|}#mYKFV z8u9P`{c@~z8!fjC$@n)OiZ#U7fdC$X#98S4Go!Q+ehsy(6c4^P$iG-c2rITHamNGT zj}y-N;s7Ujpb^$PSA5`qAtTc%VOM{=s1xn*fsC=2K;IVml#^sHz)d&QdP^ zCZqt_C;|UIazNHMdqqsQW$1V3eR+$B+&4pBV9)@K^McxTny{iUH$wbpvy+h87D=d< zoxEvLv#-l>5H=1^u5lbm{sNU+CYiFpo;~eUO-7gFcb|li?pJJp_1cBRuTT|IoR1$% zZb1enQOtm^6=EDN9<+S@9yJpZ%BAyMh#sfwVPz0YkP~QhQwMY7rub`I=!Gr5uG^4l zFVs|`jS_ClZ*nj1!k^J;az!l)tE<7}GttN(F@;tIA)rpieRHUyX;$oxkU~d(KeYk7 zq(?d-cNeEF{buIJ%zntLs6Km(A-=L1zvnG4k(*8dt_=Axh+2v2z<{4Jbt2hGhEc;y znWeDnD1OOtK?$x}a~-$c)iYoQyASepTeSW@Yw_u7VDtbkeCIvkJkydB8|-cSx0vlX z`)3M^9e3KDbVgLJl|yJE#z=t?Z`hCRaf zN#5J5E3vPG#(x^C1TVE0BEH#JMXZk+1Vn3(nW}=+fuw(??^xYqc*9#i2g9czmGRXI zy^cE!A3EynkZysDhgwW!F)W)qB_wgj+mKw!M8Tpa)8X_I`l?~1=CA5_f3UxzRg^h& z#@Oxe-}l$1z%o=ArjWSA9r<0RcmVGDb{|`1pZ5_hs|+0rh%1b9f=U#Z1$2O+>aEyD zkjxa-;D$Bk0z`#i?+^ooyz}1^m?f;~SBG9I;0YOYf#|Ntc;UmZz!(gA(>>HAs)2Fx zP=0i0*!?VL`YTyzc5l^fwAUi#2Z~W1VqH;B#ip&sN~NI)k=$}}0tsO~8Y@DiE;o!R z0fVELiG{)`vit;ZOJ+K4rC4qah;|~w0iw5y9FgaCQb|_FttQFlwu*)GNVJ#hpHOYX zq;n6Bop=djNOHr=ManJKHWio>rta=kla|Mmmpncs?njdu39`EK(P)DHdsc3_Ghvze zr2>0o{v;>YNE0v@7OdS(uu|57#u8&MJFi$^sh|JGk5ZZ}y4>F2#R1xR2Nv&&9w4`> z)TY`DMo>PZ&LL{=bgkbhBoXd@C0lFwljyv+E97Vv_&$F0;Y?x$v2qd0^UL*_1NjgJ zbfPBBW6eR(Wp!ap-XJH63EgLv#$7Y&^vzQ}DOLBLX4Zt}X9Qf)*YGFJ7nSu$s&8a95+r8yrH+ zpbb8SLXON+@f$k1<`^GU`UKf=wi^M8T;mR|rOxs>pZ>$&RW z8JrtOGvN8uBaWkh0b{#-L`~+I2n`f~KYx58`5V_9!xEzRMH6Rc%9f~#L@26U>JYV zaNJCHP{&+51dHf?g&a1(DuO--NXZyMK`S>`BYS3vY7)sBly_0*Smy`*-}o&2Xs1d( z&MC1zTVOocU+RqB)@x_{IQ3(i`37Va@@WJ~yO!I$`<)wD3zvXmTn)XjXt&^{Yv7ny z7)YO4_w0vQ^tU9T5DxKF3+ML+7|7xr0PZ__bW@p^+Xz}j&&0L-Vbpg{%*9F8nj<`m zxx$^B6rTybar9ppV%@^dGOAID5%We;j5vG=U-N6fJsQR zM4v9!w)P_rDE~s4;4wh4IV$8r%#nkuzD2DtimdO!Iu3`w6RKKk+G?A)bQ2@3Q6UMXO@^HmC~dXZCWt`!4j5 zPYP{@>V7DOFTy4H$i=q(sw+xKtS@!p)$CN5^rA4B-m>F6p$ z58%02q=ZW;-E8tR&E)^A=CD_4&6Uy84H%+qU=I6BAi30FBLT)7{=I&`3mLj<9O!1Q zv0H6;F#{T$_sw#~5`Nl3H#RP2`;D)Ll2-IKtiMUK`Fm@-E#**u z$30edyq#}kIt)ZN1eJhWRgotY1*A=Rttq?f{{j-SP4oy?fh&rL445}mscCfL^aLlc zuuB#IDs~Onx4cB9N_3gL5gf=NfH!AZA`_x65y9s}4_7cjP`;(XFptR@#A`Fp<8|D) zh`Qd#t!&3HJ!0ed_YfW!=;xCTm&1weNF!<%b-y?;<0mL77D+cqpT6|u5znJ2mW6g(@-e85q38BXie?D z6f#e+oRWX22lY-DsFPv@3ODG3d5TZV=rNjb$28fS>hgQ=Bv(nuo%Va78mZ?b)Kg4C z9fUO=m;@K7TLYl;##9K52?E!sgw(nFwJ{Hn2LafI20izc;Xtyv)+D1fWI_}J<*}2U zAuw#<<|d$k9qNLu(Rt!Nhe0u6bpy>3*1^cx98J?$r>Nu@Y{A`Fz<$k8_*OyF=HzL( zoo2UWZW{@a3g9!D{^*!9?Y6sqP+w<9uFa8ZGt2yD`@Dr&6L#sMfu`p1P10|vH)HLh zogwOhQbkhEu=@zWBpGZk3rn3pU}iJHGYCl^eZ9z{ zv-44qXLcW+7Nrcx1Yu1B!%f2Yvam`C044N!A2k*_-G4-WA+zG=2(;+PMb_UvUpb-& za@1r6$d_scI|6a3<~>vq=`oW{#1i5k~v+ReL444VYi83TAF8@3N?qp3MBGH# zJ0#c4WoJxI&rerz?=<5=eebN9xv#dDT_v}`4H^Qacm`0;oKv?J=WLp*2k}gwo=OQl z_&@?3ibzm_jka0oguc|2(LoLYqUMRt=NkmC_jV+#MtQP3@|W@N9N!ZK#MD%d_j*Z zm27FKw><>@hIrKC{7U;m1ffGQnJ%|IwUHB?6Pb(bLa?6!yJs(+Jl5U}ch`3W+|$0g zb(nZzEu*OkhN?;vMhinM|c#05faKB-!_OAkV7b7QW$B9=dm4vASm5KG*X3`EtH9@(Ec ztM_cenu3CdRw6}B<(0BTn6x)-t+T5vtKxFZ~strbQUcKx)viHO{%!xl54W7bv3 z+-e(Ul@&D`vbV!;u4XiQx_x3CxCnACP*1~3pcDlm_^)%=G7BlJWh+2$lK27EZM=It9_Pf^iq2%z2=3QL_>#Dg)u zTlaxzneh5Eq3UCzB2vmp9%BvOXX2TP>lyQy?_vvvHKIP zD=e*zC=Cqev8(@=EgRoo8ndMpYXKshS8K_WWq=k38aysn{jfm>Zf)a6S+)!cli_28 zUNzRMDYb%aD;eW8*0Jj=O`(=~gZf1yn-k*(_`QMC{|<#qD-uCQ-bQ>;gLFto(^{{V z&p@#hpf8WtKf;uO!lnFyVK9y&K3d-TbjzRgll@%P(AYp$&J!O!gMP%K^3JJ2Qy19X z@+W_zHPZkbKTb(K6Nf6Zc=bp(sYX*2KNKl6p)HlG_I9S5whwLFc+1YzG=B_5=@^>H zSjrQ~9=v^hP=U(w;c%Lam^w;C3jECQ6tgY zWZ_!Rxwv1DFGTnp_!grjm$-%zEn91;S7-&b0USgQrR&RG<|cXw2(vdTh8S`rS7R_}mI0-cT%l-5RGk^nkH`K%8b2aFUT7ZI zeIp(|hBT)p`@mKu><=pZev;le8$M~iP=6o7vpBWZ5@gAICziv3jy ztNrEnY;_XX+1+VsLE2M2f&B=>`$=K)xhn1jAC^A5DY&d#_Q%)#lpM*{GZAR7intbd z^BZEjH`_!NFqZd?ZdzEh+YeF6w&Ft5&EkPKr&0twLG1ZVY;)W2APxqH!ej&&2ZXK` z!|B#uvHI*Vrf_Bv-7ZbZHOF_2$Rnz7>Ae?talrTDZDE9w=}q6;VGLoj%8@y9T<(E7 zxzi)6$oJc3q`NUZv)k*!kIfUwv?sl;Yq^Ol;N#ogmTzpDTF zX-wSp%zgZqdS`|mk@kcqNFDDr$E01vYr6IQodM@NjS&Ao4At$5y1C z!zaKaZ?eT6KL>+hALp?<$Ai%e-OVI&tcG|(X2Bmmre%*x6aQBTz$D~o7o#sMYlGEa zMW3r8eqWhcNFPCk0OHE`WvXRI2R9kY9bIV6h-!Y6ZT+6}pX>7d6q(pJ7iWq7=O4>% zm%#B{wm6p_CmB&Nlu2Gal&ypLGCwZAyZ0U{AH&X1U$n~HujU>EO{D2M9|ObQ-;`T`oa|S7{Ge>~pfk|52`mV$dAeplJ0Tdx)yEMLK8Yh#qv}z2cm0&*)(jXX8Q)~J zgC_h-(A$v1Lq?&SC-M^*IR1I!B%H%<)vKLT@$sYlKl9kB%)od?5_*_e0_W$eyn-zs zRMa3@wE)$1BK(?<)}{fJ*^q+gBUT*MJLuiCkBg@3>4iMH0eY)x`fhIXaOm)i$n4o2 z&Wu>e>M2*%r&L*(6@sDYV=d+i+{3wTgm)$|Vl(wIW%W`apydnN`cLj9B|ynM5t_+k z$ZjC&NUcJVn#u*^R*(xQ6W6H7j0J!ByGtLhEh{~|Gd{b3lGtyyPEY=eUc>`HVFs?> zT{z$AmJ{t%QBHRlsVHXQP>-G;gE=$pb+q6H+LHZ_X%z+QQ!wW9(9F-bR{Z4}19uJV zh>LfequN9NO)WUa4YZpG;bSymr90x%~$TGQDb)M8%21)Id+_avWSP>nO(tl=ZI^rzp^`${t?X(@1g|7>R0O4EYzM-|h zMV$kLPq4}^21J@DN-yeoyHV5to`|3)8(D+c%w=?z7i&7nSxUf!_cTT+4rF#p03WR5 zFzub2a_MN3gaO-WU-*C{u`&j9^K`Gz{Fl|kK% zTb6eE%!vlo^~h7DzelVjB*!jaIy_QpzI@!~$U>*Cm4EgmBibeh6mMr#w~klNC-NXU zQ7nuN1x-ubF@y3`Hob~*?%Oe4qRivE{fq;G;h*n$Q>^5qzE7ao^E*OdD*D=bpWNH~ zySR%Tk1BRk%2!B4MC0(mN=YOtCMXNXyY*=LNhy@|0eC8wHia++%tE)(YSHD1QK zR8{@&VS`Q6bY|OF5TqF}ZMkbVxI~4QZA!+^<%}-JY1BtGDYnSeKcR^R zrJdIzA$wI_@rFzEgQ5EL;*DK2*1#yU7FnO@Pklz+p%++9&fR85{*3Y$kJTeirsw4J zWyqmvzoPs0PKX5vcU>0S!E8a(8jz>B81Y%#TOtu0G9=|U1B94*D0gkJkD zoy)DS*gjq2yDK)_*wdip^!vE#F8i1$kl|sr;V>$y?Xf{* zF+pnyx^_zMScw*@&UjNnBy69%SZfV#K21e1$59tzkZAfr7z3(~*cuCSiQ03^3rtK) zplgd2S@m)4z3T$ycKlm{Zz0dIKN7`iljX_eYAZQe5GPs+=G$cFi}Q@e!f-huUsyKw zYB?LSzAGFwQ1NebY1zj%mB#vcQrXw&S&#evMU^Kioa3fyc?t|o$2>5SB33BQz?(-^ z<<(ly2<4d9GaPXi4_s=J4-0$#k;h=}!yTX~3kdi;n6YwQuIfM;s!{n{ZFkz(?PA^Y zK4{3lBv>k+z-$ev^-^FG{Y>v-luK!}3YdF;q-?MDVnG3kv}pDZsk}Aa`H;lBh~Wx{ z8fEaI%} z?Zk2DTtyEYdIq?WW@6U1-_b7Dp z4y=5gSfn~NWCb}?R-jf4zl_C^UPKGyeEmxDAkScqPa?4=P$A~Xz^K9dJybs!)xCPp zdcb}PwW}r!HOD}1YZt}qYV(f-cbwD>?sSz8;6pXu9=OSFjEJQ2 zH6k<&+ThD<;4K}q*n{o@4{D!r-38=Rg+k#IRrCe_8G3u#*(3#oz z-LUjjF|`eojU>^a35&+8|4>j0KrP55=Ls6k!nFSIu{!1e$IyTK-TE$T(O~OT^w#k+ zJn5y{&Wg(ctwp6pifOMrXAlW3z|+*t30$57 z!#bW(S7o#SX%!|CC;cgXxGP3E>{D+3RQ&{yT}dkwG()#9s)JS*Z@Vmm4ke1%Zn#8$ z@zX=&X#6Q00rIE)3{1;s9tB#E~H+ z+y$piNHlRe5f4vfs@Lbg&WJ0M8OyzMc`3c!aCUA;)#X?l_N5$;z^ME{FZkR;7R!tX z`!cvQNY=+=cujke%50fiXoCBwzPLX)bxIgC-E@ut^p4ED@JX?96^rBhwCW~o2g_o5an}{TAvPjzoYhIMBaeAi^V~G!(zsk? zVDP&zaq(2Y3Wvn>>djN(4<9I*Hda4=P$+>M^ft)wT=f59>=(IO|Ji;}-BhN0{$;$1 zcQ*6x^CoNu(S4r5H?Y?lnOnp!9uf(9P9~|Fqh~wn`(I7 zIVIX7z8z`x19A#wulqA9j!V0yIt2-G`4qn`tm)^4o1UPVeh@78C50S;h!d0DhmQo! z{CU||aWz_4O%+%JN$ck}uO0H${0^O$#l${2X;Khwv z`&7px-0+^g!p~Rt?qCwz$yBFU(ZTZqcY@qix4{cb@QEL+!Af0Xjv807^+SdR&6jgS z))mk}@WKb-5OODWHvBp4d|Qz-Frp)f38n$(X8mt_d7-%bhQGWT2jZc!olqBQsem+e0A@Ll zV{lc|y%Nhl*vI0ZT!Kfk=AW?T`sDG=UGJ15a87#;G9*i!9%j(-0@;+Y=&E7SoOJh#Z)_ z=8oG-TC_&DJk&?;RY#`iW3i5sz}b!#Y(a6t3}LWQw|x((7vI$c6ux5pVf@~=27ECX z+DS4l0k(q%h6NWs5s1^r&zMdDJWx+8-6c4d3K^h_7|q=`Xk)WwOAX_NAGDPF0n-IX z^-SRhC&Jl2VM{2MmMz}UZ3Sa;HDY?9n$&eMYbszK$f#X|Ma61fBNd0w?3om{0_yQk zulQ?XHXIDk3?qK;w+>c-74-tG_mh!7fkPG-FL9#Hos=MJhVZ@cZ`QMdJ7xvT+;z%I1j(0}%kmRFr&M@Z5{taJo3Nf}}4C7HC2Jb8>QussdAf&XnZUm{lzE zbaU_nVA*SFFuFvrGuhVydY!nJ62H)7qg_n<3K9=kX*!V}_@`j_UY&8;BX5frQL7Ic zyOd_ADMhzN4pMglNf$C2Sh@kmMJ`vG99K6fA730Sp@@x(R9+U6hE($WmlI@_KRF$E zjailp){i4y*AFE=+u*_Vi;WKG`OW2+92FH)2C7>54D)wN@;GPY^R%vBX}d0STx!P| zjBg=6$`95!JFiUEkYGQ>oHKtv3}%~ip0rtLCD7;bio$B72t%MKA5U-9PJyck9Ba%g z<~(=1=-xjZj*Ki~c0lqw6(PlpiYbL1ffP2Pt)b{G!Fk$63GecYbSd(0-&p=$J}VAb zDmeD^v$nIvnXL$wiTjhJOzT#lTL4@kag`VOHk4+G)aD65l--$5MV6H4?_BVy3&2oy zviTrUz&W&IZse&MY9^L_SReJ%cR$0#@~tsp+lm4vjyCh63*`s|YF$?-omRyx)?>pL zu0rlnw*aUvD!N&ZEiGV)J!CoS=-r1dr8*H1Q!CP*#;EgRMufpY z@lcZEe2qD}^Va3U&X>2_t%@zS9lNHM0{DT}n|*ZKJHR)7HpQ@MOX1w55hsOD9N2>? zyK1YFIZ0-UAFs_1-ujqGgp9195FUn5W*dtjA?M+`~wWyo-=;%a?t}5YR-2WjQHP~5VQUO0DE*Y#I*~<8Or0|=_<8{HmiG!;G?;bQ}B z0}ZDQk;!3(JZE?c z$D)3cX>Lyt`K4a444T6(Ni*SdW@zvhZw*wTmbuZMWRvGEB61$GnoH0vwXR4VB{+Og zPN&Hnptn0E?PC@}O!z68rUDkO;K`ww;-g^n_*^#~_2II>&U};1FI#ld~#e%LCKI_9}Qo zF5Uo~9wRxBnYRFoJI9mHA~6EavO2z;jRQTpVsyo+Ct+m5yMz;Nh6dr)KjbZ&-V4Fd zJ^k#j*2Cog5~zXuUl>Oh=+n`y?`m*GM~sJ!K3SzAnG%gZtUQZb^-rUWh|-d3o*Z!H zDOg{$bx_{U>X`x89j?L)436HjYNTMt$7MGMEj?A%PbQf+uq>*f`;Tm?m)(N_Z9XVDvY* zkU2H{VZCP<55ja`*96)Pp25}qV_jdw->bBpP%(PztR;HWF?Ww~Ybpk*kfFwkshNqj z;^^@-IZ{@9Vy{ruTT`-3gzebRgb5+N{h1AI7$UEoPqjZLDxjvIxMh;uAT(7MTX5NL z(X~IyAsYq8$UWd)XhYUlFT}*gd)jH*=+ONz^WmkdRGoPhGTm|;!pFbA0|re zRS+N6K0x(=xZX&VHP}6$Hyq`+e!Iw_TqT^NxMmbPzt~ThYSPxTZgL-_V$xxUsJ=?r z2@NMNavjmzHePGebJg{WF&Q~AAA}jsANKZH6Kw+zSB~3-z~B;SwF|Gp^b2%o)S=ae zabTNnJiLWu@Bb}ZhI{o()8fOIAyE2bLhy4{Rm_G|gt3U|^C>Cn@dzYuij=FEUWE+K z$k_-~?mU+h!2{p*J6;z@W`CZMj=8@Yc?O`2H@9L-F$#;q+xs7`X)Xv`;GmQj?j##* z#KOUw4jaz;x8!MTLU!@!sLMs%?S>RQ4(mIA!saWjW@O646*{s49a!)o3WQL@S4T0* zLOE)^U|+CPWq8t3 zN(GC4Mbn1}$j?AU<`Jy`gQKmac_5zY z3l&T!k#Zo(t627@Q6LYEBC)}3NdZ@NHc>#@C6CROExo+7;wGREoz1Y?eH(PG;RJ$I zg%NhFjjN%48tkSr6A;Jf$nSLYM>j1b=TO3*duzKpc!Xar7&C8M(|LV|h&p3d6R^DX+fZ%cUogB#y$|-ADca8u0Kr1c-X| zt>8*#bE*=kmR)x-T&U8${Y#q#DWu5|%y5R&;d1fNGWUzVk;NxFypw>GBgmh+#+0L! z7>p{7R$12`giN?ZB%ni^i(u0*1>oEST=g~lf16P6^%i{S!T5RS*TtZIEf-@jS6C4< z+ulWR3cgf3e}Kwz@xI;aWX*Z`hWJLwOMZt}HmgZHHM+sl^j{2g!b0eAXaIhN9|=U} zfB#W!z7#gU3m8u2ivY8%z_SGuZHL}>zB zaga;4f`Cc*nG3@Wh5@WOCuv9|(Fca)y6W97x3H-hcq4ijy{HzxZf0kkPhOfSn8`+q zaK?)cKrG2+m4KPRj&GpD9yR|C$lXu=vaT7VlL|r#y9|gy?>c*bR|7fhus6s%>NDoVMI$@VAc{XIX zoLBr39varjF-PP<_k{@%GQhx+DD$XpuN9C=2nOeA&1U${DYt+{sXS<K+Wt{A;X z$dYUVxQ(so{$4z-rQ3%XlS(3V-)xP}uO}P~xZfD(U3!(z<~j(o#8%i>NXXle>S5xt zq})wk6sKCTZ`9lPhs2s5d@eHmZB@0a8u$65zelo1-LS*5DY3{UG8lF#`~@V%{_S(! z;I;k5j2Ka~%G&cEWw)F;w`S*!Zx#AXrtOv1yC^cEut7_F-$EkS38P%wdj7PKLj<=L z2rOn~L`ptX)J>43oPy;f=EiL@QDk}!f`yMs9w+P21&JO&C!dfRTr4c70^BM%bQWHW zx;IDoFA38I9C`&=!Qz*6*k(Ac`VT2jb&2o%fc)1N`gtLr;DnE_G`=vsWAYvKDMG-V z$d)<}5m22bdeI)`A<&y%cr-9{4b?G!6_ZSupL)dBZ);uh@@|L!&A=>d6_~#bS^51_ zoKgqp#z(cYp2)J6rBnpC*!Pm0>sR`U{)Qq8PPFv0bx8qyDbxC%oARW5t3?MFQd)|c z#CsP`+1EO>B38G;0y88}JbNpnMUYvy>gf%6aZ{rr7mh{bo_?y;_UejQ!*L%OqcnD^ z?Tgr@^P^;nX);$DtQ!wysU^<~>*oCeI|Ec&5cQV$2hAb8rJJi`320}jrZV?DG{85$ z*>~%9uP)Kre1(WspK-Vc!+-xQSZQm?v9|FltqD%ji>B8UNIn-K=BNIFXNY}~a7L*A z0l+USuPOcLf3dm^h2_%tDL(mpu(~}MKEWKjSGJx&J8^srL7`vrrB8OB%R%iQ$Qm38n>qJ0;g6Mh)=qRMSDi0)WyFxf%G##|tCG(kY6;`ZW#gBvD- zS}}dQileZ4fN@AGoU8_Sz{Ql^wZ*l6Dc2-p5KhDEv{J<=L0~hxXwkk$;H)Kl*dqLIqkGmz<-D?J9NmSSLGDg?A$k0 zIIL68+idf&CUA4XO`A`(H9XhY9kg*=dR{C}%fpF&7W&sZIi?UzM-LV+S9U#m?Liio*y7ZqHA@M;2u`KiZP?Yvl8PDze@kOg+D%{<6E+!xmS%V4iNu zu!8Siw#y(P$YYz$CCy$c#hrp)e_V=V08L_qIDPG4BeZc~MwbAw-_VC{{pT=CQsXIVZ~W|t$7|OGmySMkycSxf>psk`gyG~GHOYXR4;9`5^uvo)PN{8GO>@f zL7F;uOE8Iew*k5~#X4t-ujHCTXQQEB)Hl27nQHq~gK3k|Zc$v=khhw)*FzC~8`42c z$X!Ikh!KexF=Gtv3+C5>Ci=664dQw}ygY8x+2li%0^{TI@$8XPg`}Hvb?1r@4X4sT z@$V*aDwD?e6DNfT_mU`V(%QwJ`!7Ms42j>wWhiUFA*@0>M|5cqG@NRTtOG!F&;kLE z_#Ag-iuFz_`s~zVEh*-tAW9Rksp{ad^Jl$Zj^y34jXt zXGAQJ;o9fhE7a!WA=WSfggW6tFCzBoID8!QHbG_kllk*#jlNC8Exg(R2q(xYEDAd+ z!qR1E=)y+xL;cdnG5$)Su@9HJ9HXWBCRb|Mk(M#bp>E)r!tDq^E4%tt0KsZwQEwbO zf;b^pjeiIJIr5;cjU#|Zbv1Zrk$1deF3t0^1$?_mF}PpWZo;aVhGPZN*nkNPD-Mxr zd3R2r4|^V2@x`p1K=$^Jlo9psm@h`EPQ<6hTlAq za~Eb6-_ zg{daIrBt;t5Z#I70#s_Mekt-&4Xu-uV<6xw4R>?a9Wz zTtWdsp0b}Hbk@+D2iI>Ag0E)1ws?G#aV83 z=x|>zYbUC53Et^RM*<2KW7@=Pfy*bC5!>HTZOcd-QZD<#goq7^6(1{APCg0~{R-k} zO6{v<7)Q*gw`HK;4up`RHqQ^SfGEk@YHR)7X!iSj$WR!8*_^P;Ks|palVvK;jP)>{ zG3&@YLAm|1{PdDfeNV93dxLgmOM2lm;DDNzku3I$XH#TiRGx~x^) z?cQj_`5#_3h<}ok{_VYcjZSL}N5?|l!9Tugk{DUzqoiBtCY-PH0;g!RO6!TZlASoU z5?4bc2&?Hr@5mLL8C2$HkMUUfQS7c;iMif7M3BRN$ELZ#8pMx=QYU$WPxMBQI5~jyp}3V^lD_l@4|G_!g8;Lc2}l`EN9>o;kNJAlo%n2p0fQuAmBb*9 zBdp2^h{Hy>TTX3&SvMFwLgyXM^*2t|c<*N; zXgE>73R2sIXMMvh!}9sRnf!`=V3~thKW^YV z!j%AxTqA-i4KW-j zF%Vb|qWlh@2^+Lq;^Tcad^H~Jy&%)4MMdZnF$bVpA#y$j`H4(^TEa1QI2(JPDo9C` z7{Vt5eHk;ItI-BGG0)Y%4e+O3@a{g_7{*fg-j15TNOm1DU1!spR{~aW>wt3FIpV!5 z%p6}{KDg=$2Zb1-NQJ&t2B>@80;pUD`CjzOYNc{heL+ivPh>v$1NlB+xC1n?dODE* z`byKo71`9A4QG83j?*X9`wz-RaB%%im7p!|7Wf;UUhIg43>KUDsO;w~R+pm;8?-1@ za;lS7%>byW{k+Jj$la>T?r+z}I9m!x__0thpJyLb1!1KY_}Nq*HH;mTORsemw;)^~ z8?cQ11a;y@=%QshmkIMQPCfzBeQhzotIQ#&qw*Sd6>C@7*z@ zf7;p`2?76C8-qKYG=}JF0Q5hh)IAQ28}aN6X!<{m7rEI3#n=Ll99Lcbk1@m1h*VxI zS4`g3!a2CC0b_w#wTBD>0z49fN*q3h)Dp(#bfaIN+iyH7BLFa`9hDgYCjz|}7fHQC z6MaWtIJyM`$wQ3;avxdxgg3G@EQzEQs<79PAlq!<3~0yny0?IbP7nXA&sNFhvwHQn zIIpl>xa%++b)YH1NFyB@egM6PbD!jlRs*z=rxd+Xw4fp1xxgWlQVfnQJ`?pH)2QsE zd;;I2nZ7OqE!z+|B&=R2sbnmX(jInHO+HQDyB=mHl_%r}XxU7FgcA}jYp)0#HZB&x z=nzo;+r-qH!*rfYc-)24S^dpuK4%JXSnnyOqdGB3fINu*!3Y>NRO`C4uBQT-`axXx-vyBi!5Y{!=Qt%1Eb;CLBDpQ0tu18 zL4}G{HB(M~jR6EOG7A3T5ToX3Ud$hX_epqq^g9dB+j5Qo0~c*OS~|4DZZ`tNA*LgD zujJ?7lh9^NPGpN-u&e>G*aFhhQwadHbT;tD_>7gM#gFL^ zPu}Ort@@}PyRaf$RdiwfTuu}OA##fokoqHU2QYU8LG5Vh*p7fr0_c$;cCSTezzwKnwsP-SV0 zkmlV`;4c#>$kB|Sq*f0JxJp?9Pg!l*_>k+s8DYe#2Q5gZ;Y4CP?fwc_Xkr*5sDwIr zlEpjXy_kf<;}qGPzAP32jC8G9xDni`q5T+MnJ|lfzmgEc@JtRba@}>}4G~yBY&GLp zE?)ubM&xCMCh;|WrkjA-XeZmsTGMd*jYDc&kZ3oqT_eYscpejJXWVM8A`J8CVM=$) zOvqaRlafa{3)gTaO!qKs>eVS7CS60j$hEtz8-Zg1(p+BRE=UeWNb;`Ab_`c@_5F(> zq|F-D0AoqVtN^+mA$had@+4=eX##|-xnDq!p=U@sv zhGPWb=XiI3no^f|5z=?WN{Hl2Z2>n?!vR~Z0Fv6Jbu z>u`Y|77jWMm}cP`p&Nutz`fxN8!;XvoXxpc;SP5KlLn;1uFGa%nSO}59;|xsVJJ*B zD??L(_>dlO){Q-LI+YpncY{L9C+sTY01O*+rWKZ+mkBWCg_VlY*-UREe4Rx93P~Ic zp_y*~m2v49)3erP6?fCX-TaTu9zq}GnF{+4=0=+kYt;!r%dD&TX|0tf*U3(7tSB^Js)pRxA zC^d8-Bh;Pm4i9D_3Tru5JwQYZp?`?G~G$mHGQ%3Ji1aQ)r586^g~`jvMnM9e)Wd~Hgea{1v% zDNlEf#Ox#`3!mhM?3R>~y(_8yG>4;CrHwu%S@`8j`N4l;6;(J4WAO#TAyuLjb{)Q)l!p zdDUDlLoe8mx}pY9Zf6_M1qcJlp9caoets&&7OfxEEbl5P$tT`veu<^OGgsQ$bU)P3 z-3ZdT?bdus!HuTM?@lcuk4l{xBFY7n%i%-Dkh;!VkJ^~DdZwT+^)9$hnh980bF_3c24{Z2|J z@RKi)+X%SRRt@g^SM?Cih`>6wl>tW|=9FHqyCLe4(^1yz6Z z*}K(GA7`OOUCxuW0qf-#{tSFg&w2=8^`BSCUgLZ{8UdH-J5hHZnN{K8z7bcV|4{W@ zGTnq;s&(E0G#IRPm*-N9Iv0g*76jo#FKmnuOlfw>j9S^74vh3O#jW(n0hv1xj8|l* zwo1ulk$nt(q`x>&m}tWd3=m`>ZGV{le1a$BcYR>NrcFuQH`Bcce+{fB%uka=PGgQw zpu>Eszj!mVLBE?SVpPh7aO{xvr`iN2Q^M|mqfR%E^U_=uP14wv6}A`=E!MsX$-wgU zD_QRT1N5*jy*arevhKcLgM&JMgL7@!b*x~Jpx_VAAlk!ISB!IBLiUqTEuA2NIhb~Q zIwplK3bKYk#pLIcOj;WCKT}lOBX;im1x`~VMHp%6-eoTW_bwx;?HJD;-E42dPT2}) zNFD5%`x&Z~2cdCe6Hk{hc4Oxt4OW4opJ{b{zX@Dvy%pp>$ghwX#pRH`Xx50qb2BIK zt|})5F{Ici$FO6-a<*}isoF;1wco&ETt2ZAq}e5n2EpA`A6jLS0rQ!j@fQChjuZZn zH`K?QLiPEP$N+r6Af}Rl>y6>c*w#X?QW_oK_h}kQcbm7?|9wf904h579-iU8r+>>5h3*{`!jc~SyBu+ao07m)D8;_E zzMW&Y^PDm6;|H%+c{yg&wMFJ}iO)Iw(teWo)%as_io+IBopiqO3)83A;{ zA%4IGN5IcBRq(;*I0IhO-WQXS?<ppPPI7)fOrYjh2ZhO!sTle3JY+{;TaetjU)CyK zC(+#jo-q-p0%Q5VFBiXpUYp#k)vL`z1Z8$`Zz#%FZMoyNEK6HD!uf6^X{=IFz&vgfeDt# z(j@QuIqX9b2&V%0t3k7BtHw3RT^}^Tnl-^wBDBGD4nHXevEs2cyY8UExZLlV$V$#f zwg9Y~)#~JIJ!df>AO&Fx8@(0PDx8fR(gsDneYqmQdhwG=5V<&QH)wj7)+B)bgXX|{ zSQ6_8O8sO2(`>f(mzJu`Dx4OVpZyq*mHm1F8}xe-D(%;rXr*=*E0!>!z`*FU|9hLc zs3DLdk$RBNq&>v0vRhTw;Q8?VF+=o3`~?x#WF;h$PE zBSgT7W0@CB?B>ic>YC0B8MpPza#R8$=HmrRhzBjp^lw(zQOz>Qafhoxepp$q`tMcY z?K>pROPR_XJjOc36oeWtB2?vnBaPo#WE+H=hT&d*Nk$!E1a?O%I=Jv9;}o+nP9maC zFx1>0bS`Ms*HbPMxMa8D?s;+geHXqdQ;3(Gx zqecL4!t8k|j-zlh+iA#Cm}_J{kqH-P6i8QmyAnh@Um%v>wSWq+CVR;7n%-)zv`M&@#jBu(;r4 z)ySnyQRZgm?43bZ&)A8qe1Um^kJ=D_CRoDOBw6^M?FgtRK{EVa@074+@PdRY2pm83 zt=QhYa-Mx^%q+qf@V_VSQNi>+vCese0}XStfG}btWdiUh6Yna^Y*j0K0>fq(X+@#K z=FSwToL2NTIgj?Bx&;g&qwf|wNl)DUy}TH}hY_G?@8!@MxX1ol&+Z;Uz;HdNL4Ses zfLWg!@iiOX_KLK^3Pi@5wv5hQ)Z9|A)qel3=R?l+wPDN%R(dm>8e?np2659 zpK%e_B6M|;qMLor8A%YYT4oFHmc4_HZf%4%Y5P_)*lgU)QF&E7wO}Tcm7ghD@E=Xa zTh>fJ9-9?xPYUu1??uwf`YqyqmmptsGxSN@I2K9&+A7WgLLOLeOoALxZ90DL8Pif3 zF+_keaw~G}Wj}vwbgc7bkuOde4?i8Qc290+Ug=jSijEa^qjVw9-z>DPc=%EYxQ z9f4O_4ob9Z?v^(oS=rv(|1tQod`4Tmo+&cLPssZzEWSW#H}SQURbM`n_`q@Up8CLDW>on5pBB?aM&AqO=-Gp3G! zF|7g*q41JBAcFg7a?nUq9ps0`Y1dcLV~$fCPcd0G4H z_vxYm@P}8;tXQW4qJ!}jj(!CoN?MC`StW41-Ad~^h9;QvqMlOsyiGh>Yk^3d_jiyo zYxPW;g2?^uNCvE>l#2Ey$0em#YVzsB`c8DT{q4vq#n;~Dt{vLZN?kiq1^w%Ln=y#? z&i@K2TSLNis%aAu3hVo(+P}vu7S~DD)p8cA)9iuqek)3$y;fme)*~? z(~8nm#Zlwu5wx8l7#No@^GO?&zQ)EPq|3`9;i@ArSDSPV#BGWHgl&Lj%@0uL0H?r3 zpWSBd9+Y)1BJ)lfZ$pTLV6gyr`?P?2%C#0YSubEeS)CeG{TYjoG=qnG(!+S+A>f_~ zNHgIk<40EW)cQ@j+#+(c@K=i}uGT!g7!&EjMWncy^kJUgc*o|{$U9Rd@p~*LKri+^ zF)8)Hru9pV#H+qjQx1$#k-|J-fe9<~@#F@Q9jWgv^c>m}{~}X=0CeEOF)Df~x`a^v z12-?TpA>05e{b=3W$QiV*sL&ksT99b63#mDG84b7mGe}Tx>)riieT`#mmmW3tox-1 z-tRIz`dQu;Uuv6&Vl6(M*rVZbDK^%Mpqbb&U|Unp>8Ovc(J`Lx7@Z!0{sWDwO`g1% zt+SB#>2crb!F(=xvA|-sRSvQJ2#{cWe<Z|nEbdfIcdg?oDvlg{3Y^Rd?!!L>-_FAC^zNOhiCp~Bk^O_36;{Do&Uk&k9 zl#%Uu#`hna{5JF7=3ANSlBXlZqKjxE#AuGWjzlm z3oI*?K@>&iB=z*7q}$?fo=p|rJi*ke5S?|xr5UM-)Jps}t}c!>KT+XIS1dt+&=7S< zM7_V8p=YHlmL}S9(YTN5St5pWsB0Rxdq>#YaIxKRQ@tkSzxXKvZ6&-Q@w&X=+YQ!s zdfL72_V$Lp1igX6VsgBTc($b!qr51%tmk=T%y`axxUDvk%yU2Zj;P;k@M?|ojl&T- z3u*>IqQmPP<2d1Z>PW0<#s{c)2ZfM`0A4R>YvaUmQ6N~uP=pa7E9G+FypoO9E#-T0 zX;w>HQt(N~#o4cXg(7GM{&}62LKE55ffWu7A-;5A8CFljOmG4#8hUrE>invS3&vRq zDn=jP9gF(RlsiKyES^#VeKQO`Ws7`J-CK8wo_B>`l3TChRpxuH>`Vn=M_HzDyMa$% zkpyIR)8a<;g3+2$lM3)EGy@Z;ll_7NPN%XoAib4ASV?$qyYU()V{wg#U@>VEmy)Ng ziYB}&2Up^`;cSI~Oql2S0A7({CfW;~v%Z#!0-ST13n?>tUyTfx{d>2*D=;6)>^8z> zmG4zd6Y)-EQ#ea-*E<)$PTGJDCD)tj`74f99!`3UuFLXgMn?~Sbee&y_vh05oA#{e zUZwa~%gJ)Y+m~&Rif$1quCQAdKW9YhNhcd(Jgl>T0*=X!JPL2_#|C5RjTl4sh%Efo z@LR>O)I-n^0(_?%NbG)`8fA5iups}+MI!TzAZN=)QRpqD1D9^-0#$tGs41Hg>$l?pNit)zXo+6ep+4mdT(uRu++dk@YK1 zJlLV0tggk%dx)v!A`@rxjcN6yEPlB7(|GjC1xj;|5o%b!5QVh5;0tv!ygprF@@h{> zInN(p%mr!Vu=z1{cm5Y>A9cX<2c#c8fr1fm?oKs^@yeVK8{*;GE@B_8e+r!u?#hhP zIEt8tRAcx{F*ZyT20iu!98h-nD^@SPCUIFLN}C{Bc&Uf0>Z_=W&irxB&}*-4Wej8M z#{3I8Ew+<(myzqyYOd0-F6{h$x4v5Mm0hm%dOJpLHShhe5bfY2FtfIeMVHA`>E-x; ztT$ouDHQ0kS|b>>LfJDLQ&Tz=tFw5OphB#QXZ;z~{3~aWQU8da@aBX`QRpHUP31q& zDl>(>2k=qc7BijV571z=_eQaqz5cjw(a5Q(MX1FMkOq6*Q*Mk;_k4Y?yx+*pN;ll# zkMN6sGVUb?7A;gcNCM<>o{n#or8v_-)^#}2J(qK4$DCEFpNWb7kxVH`-Wy5x!9u|; z=0>}cJMm@{_XoRkreBA*L@TjNn{kS%p(4|8yOI<6g-)7s3C=(i(tz%>mo8mVNWB!@ z=9aOWDQzmUEy5utpDt5tsTidy61X?l1*J&Mo*?|aV7gr0D(S8IogS0%2>J0fDClkCJ*l4yc_n(ymj zs{qNe44!c)FH+ zfH~nhGeG_9Tc7-vvQW_kS`uveg7J2iJap(1h)?JAG8nK_U`h6kXj>}2$0<>kHQXr; z5V)^oM0th96muv|WMs_Q2RcES>*lzjV=gI(i>|4>6rz+36}}l~8r=L~TQu>wD)FSZ zwE()9QjPHBFnsm6S)=YEdxt$JNZJR<5(3Z!hYDSwo`P>K%Sw5a*H-Pn<;S;+$2&2w6yarIRfS}qS-<}wJMIi1yYpb07 zx*S-UVdniA01+u;Cw!vWMyFY7G&?2BQU24B@4JPW1GfWuHhEL&SY0{w>?t{s!KnZu z8JW->%Jt5{l;TMu7`Z%iv_2&7yuD@m=dqrNlT?#9In|^tfXp^jCt0S(Mm5IA8!|cTj-*)u&Zple1lAzPbo`_h6gHxR+f9jCW z>2jQyqPJ-)t)andgOC<^l9A8QN;HvAlDFDTi5?rb2=rNQ?&5Nl!78pb*>7R|;j|kL zTh`)R0wcKaWwI=kG{N@!B(WUfLh_*p{3AdbB7FKhlpKNtE9!?%nbFuoWV3=cdM&6oR=cykA^SF9q7h_9fa zcnYCg0Z#9f!z-}B&fZPBz81eP4Qen{M(krnA2Zv*I!WuyPB@qvC)OH%@yO@-<%f)P zX?jbKSw0QqRvxqTzEQFzmW0bKnmFiFQvEzs}WCS6(?8TM;R* z@`%^99Km77#bi$!v9h|BcnG*TXGH#hS=DnHrjGZ6;n3iva_Bft*%#EHt^y5xn6Hd9hP1(!FvK0b?LQPPW^lMV9! zgffg4iq;4?f30L^BCu_gKiu%t8`1<>J7ctn#JjT;)A^f{3}x4?ur|W}H0|J@vv6Hs z7|&djJ^UqIoQJ&hwxCUtqL2kfqn+k~p<%oUznNOFl3q(3S3DV;pejGrDwxvi;$>vBq@XbV^I@fm7vRC%Ubd9QioKznX8-d-10?2+Yp%0z8gw4Df;g9mo9b z>%7cY2m#|g6#RdWVt3+Wm8mscEeS5F%)DSAAN3U%yFR2SXR01Ezao z9$>&VFyr+AEJSW%H%HmJtAMl1MdK>zC~y7`&3?0jwj7nRX)mIOZEu~))=fik38N5Eh_1dZvau< zt?*Xb|F*JIA*q3NJ&;iR*B#EZSZQiho~S+i*%{i@B~%PFb#$tA*y zXjH8woej>0HQVPFoGhNXsn1>4z9c6m)ji_1R7Sv_%kkGixOOb<Q;0aTEmuw7|z3b zhkH+kXVDyN2Fg+S;$;kk93TDI zML7IGW(tf1wi=-iwW^ajp!91dPgnY7SzpY)WZe843^2epfB1G*W&9hzi*#{N$V5{R z_7!+&0wlJ#GGL-1%!P;LvgaoKUxXqLBQaFh0M25Av0*DEbn&vWcy|wYZGC=OyZ>gY zd9Tpadl>O{u>a5o;Us4OxvRiX?D3saRMr`!DI%{t#F8acs-*J)V|lvDuVA$==;yqq zA8_4vVoQ}>+enVt>wLaj5TS6U4{CgQRUr6=BA5Vh`ls)iZh7tADXaX@2Xpyw+&3q0Rk74;)NVrJAD#H^v$dT>s=sczybO)6o;0>R41rsO z6g*MBo4&jY;x^1w+Y$sLkCevB zx}O!nd1*k;fA|fSycidrNoQa+DFpF*M#h|O+H6~Ur|M5{|6g^n5-dzdPBZySIblM7 zz@C{pY`19&(dpF!-j*+&Cy0uf#T8)D3l3j+4W;U50wrciOam|T zz;FK=)Ihmve7#|R`EDaZ@s&53P6Kwk6xwNq|ueO1lb+?tFD?V1N9em10MU3i~duS*19E~WlJo8 zXa}GIhxa0rJKz?JVUl@ZyoXSQoX<`cSbf~Rk8VXEV2gUek--50m{Z3seDJGRwcZ5Y zx=ZMGAH7@?%x9o_*v|-7y$Z~TrZh^IH=MA`Q-BR4_^L&x8eP~#~NGq{_%c}t^&H+)?LgSemdNJAhcA*<-PQyE7#&!=nxPld1F;=y)T5O4AA#iuD4tCUln5$v0zS-2A1HoLG;SpKNikWoy2ZKq z-v`T41^H})xc#aP*@d4;UDktWgftZto|;&rd&l*9NNg^kUWiX*B{oeKPS;MirC!=}DMr@|);jpSo8G`m}T3=0@cat^c!wr5BX)@gD`A z!(NDu&OD!`y2~$bmYNckKoWN;mGVHj!7Tav;rL?g9T!8F{yRWgM{z!MC?;w(A@Jp_ za~OGGjNI^)58N^b8Up|Z_`ikg{I~x{FJJ+1)Y z?j4qBA_4ebt4TPnxXxUwatq1*(sf`jc|&l_Kp7&U@Q%rOX4|zv2onuAS9PPDJp924 z==?H$KN#84;tI!GLDBmC$GbNiv5zS7CdUNN?C!o2OGI{v-^ z`6+W;pO+aWKPyY1_KTb1aE!&grr~+vIA2Pcg3I~2B=8n91pw!k_0u3Lh!NO#}w8%h+!0HM6=Pg1va> zm>d|UlFFBN8)T+d_&~tFWmH2bV8UW!o-Ewnk7a;Vgi;X?zk^R|XKi_30rw89$&Vn^ zlNpqW=7b5T8f3xS`vzY&WvtuUJOzENTS%OW#K=LcGb394%bMS`xCdkqbT%gMDROoZ z74%ZNjg7m6G)4YUn&cc=?!rINHQg&@F2d06S*q+5MmcxQg{iYooA!^x1bQ+X@zbqe zTU>#^VSI~vaW$VRw5#oXjJkD7oyfG0I#fF0V)o{Y{&KgqQcm~vl4ytgr89k$2sK+w z-6f1qu~%;xpV$OLi%Eh%d#O~;?%nITDboQExF@@>75NhI!TKBCZ&|BH$0bM0gAlNs zaA_{ z=iAKT&e#mQ=BPR~gm|pL03Mbb$EmmoZ?N`21D8Z0>6t;M9zq5Z>ZP__J?u0u{T{tZ znS~ht7T1}c?RKX&rRDusLXG>Af4h!e6U-B$Tx;z*L`>?5ZR<4aO*3QMC(cGMLB)-aaGYMU0yUa#+f_<&qk!TRB_ANWkC3tOWC}n+<>pKxDI^=+i4|#C zG8Vp&G{I;&%Yl!IiI8k#3q9|~TLIn)gr-NQS@48%4u|Y~@mI5OvBOwSgwxGvLy+Gm z79^Mjk}HhLNkp^{jDNvOVt+U#b34dpmX)1OaG{VqkDg~Fa8xxK%5eq!1`#osETeo@$FYzH?DWn($ikk^Y!g8Sogfc! zD4)lq*uod4#M6wtU2o%y*QhO)QaspCi5X?0^6UeI$1HDJCx8u5CM%j@*o?d>hcc9a zjmmD9lvV7z@3ww6z51dQI7=W}DFqyaH8Skprf@cHdC;UqGoD*Lpf|FT7R!$30FOq? zr01!n7=e?>-lt-xbiv^Z#V%Yo7ka7JQoR4$S?p;ZRY3WlhJ9y)fv8CY6F3q}P&Vpw ztE+p|FEu%Tn!dS-vxk7lops>HVhMMmV4UEngDNHOsc*gPl{4Mq(OVhe@oMBWFJb~I z3s}8Ep=#vA+}a#Glc35|45?7+qcFFS+8e3tnSE8~8z+X-iod81>uW=JoPJ5GOo8Y~ zqu&0c>{X1~_4?Zx(@R6w+;9pyf;@1DMPeHLyht<-@-|Sk9kHMMUs5vIH(&a^!G!Di zR$h=gQ#_*=nw{vj9c1yW0U*)^OiKJW1L0Ut%4xV5V5JPt5R;|~iGeuDG&ZTT<~iy$ z`-Q895?MH9HVi77VClLy{+~6g-53}?h=t)7e)Zqo64il8ol;~%$v>H}FG6h}RUC4J zePq06`}^Slfg!93T^+T(FFE}05%WhutPt?7E$J>r_!2RO_v00^Gx;xm`cGX9i$^zy z_zVUIzRUU?p90X08WLEm!2rVfRg;!!A2ZqbPvOMfXGJq~+5nW0gqh9xL}K~+oW!mL zV~f=X+G^g`(OqExQMdHH2 z<;nIu&ZH_ZcMef#;C*+7{hoY9?jU5__D3}WVe*;1tP_rP`PIr6PERfmU?=A=aab= zR872$uSfBnWJtl32W6~zawf8y5$S{m=aJjt11^QEivtQTB8iPLHAY3w?% z3fyHLAG32YOa)XmjUkC~g^!oOf*5e$_EN9u0KYP8{RPS5!h&(VwT`Mn7wi2#PRxGJ zQDoUaG$&TN5b#*n!Pjut4%mNZHc2~j+TVM$Eq#|z8GtQr^6PdvfJrNOt<;D|8-2?x zDgl5P(;CzR(J@Uyg!e8}h3GI&7qk>qRh%S^m)c;Sd5vYd-PJmInh|4qnnUqKK6BQ1 z91C*kQBsYMe}!and%jc2HUo#$S*J1LjkUo`0eVPTEoNM%YvBUV;rA<8PL|vt4LfZhpz#VeIC%U^T`a6qGz0 zqC3f8Z+jp6!Rb=sn=Sh~3;FL-48fqi^(dxOO-5}*?sc=e73g>~Vt#@TbMh@0%6p#ygyw1usKzOu!4rLLb1-5Ed zV#qPI_217E@t|{7TqcyH8Vf4*FCB<3jy5s>#r*IW@P>zdiQgi|C*twBJZqyPzu-?Z z%2>-GA02EDrIJ0W|7o`h&pb(S-EZQU)Ag|3HzoqoWDBM%wpy$UTW6X-O;Np5jMg+j zq_tmv>V(}qN$)Z8_dBQ8@Y?Q<`HXvd zvgJ}os4^!WTs3D5;>{>1GfrXjSu9hdW=K2f4bXhXBI2ABA0Ye0=(u*dl|`90M$S3D zXH^m({h#sLs9DG0uB(qhqBc6T=`51tOU5hLndg=8Ld*v2L=(ANd>sWgu@pG$+f&c= z$<;3%AvIbR9#JTuzJ*V#V#hr!BX5nFat5G*5I8>h;{WFEx?@m*W59m!l0fM2G$z*qt5Y0Oqhmzf!oSV@V;P7EOr* zhU$BnWpPi@(I56hWj!?zt}_CHYBK2_G_SGCNkk)dtNYOpO4&7PQ*f@YDSrQ9m?SyP zr#Qga^HUWqsjT9nK9h&U9g!t&4t|X)kCn>4Napjd_AX+1mz4^J@61)=2#*&iHBf;O zPy)vo!ai)6EV>Wdo$=5vqGuh?N`!)H30za}%=R3dke)!NeQ>0n646p+I=yiEkxz7* zs9if=OceZAx0y^BPgFGcOEfjhl6KRIU@(RW-IdQd8)L80@I6HQ0=Bbg(@#EHb3P9N9nx{s1ENU2uLjPO2Z{+UlVohj^zaLc9=^D| zBDY$$sK&)Df={|WZBBDyKa+f~vd4N5Y@XUklHx0ktqpBQfB|5&A*U(|*Hlv`;q$s5OL2E{MC(ZR6)!|gB!42~OltSA!is2b{}T}VfTaaJnY z)O+ZSr5lc4l^a6i97d5P<&_<6z5YK{!b=2|L!{oM{&E}HzV`fXZhb!<^WRrrO^>%c#j)tnn!k3z-V=Ep%@G#dp~|CL3#lur*$OZADSAuH%6wFywH^7HiNAg7 zDa)G!Z@Q*Yxv=PO<((#?4bo^cRbTVH-&RRbmFwZOfDx>xiDWg;xMqzPC7`uN1_6{I ze;A>M9pyUS9SWnn1WBAYzjwB{qiBLz-UW_gJ?^YsmN9Xx*6|je4?ygMsc!ftHf#vP z*HWWSS1bo(mj#N4r-ecNoXVmZ=M+U_$5hKol2h=K@-hBxoy85VL%6FH*Jd`QwC0#FGY$H7^GAg?_+Lq#)4H@EX}W_GEF}I^_V8pZHRom zT5N2S_1`|2i!iD6W20ClbA23#jM?--4biPR<;qSI2??u};7RN&-7(WqtKu*ZnB6Gl zk9hU+4F|x#?U~J*#807?ZfNsmB&-Tsk;rq%G3FjQsN-t^9iCO;_3mp#y)AGI2Wm3_ zM?P;avVW)iMSm*v%O0$qq<7q3pGMZ=(%JO^>gn1Q!&9J4+JlI0yEN96-Dix28J@WEM)WD6xrLw zFS8rZcQdUAT;URu^7U1K+>;>ul=tHsf-y%8xu?!pC2v8Oi$G7Mx^K4C=d>v?nEpnP z#sUVFMZdTVj|C^A(BWIwZI>ww)fsSYW3gGg%jXZA*mQt~h+-Up7^o%2jvYFmu8fL8 zEm@q}k0D=3s~M^HuF$Yl{yqV1V5UWQ^f^TpR+DzU%ulVc>`N;a+@aF&B%OqTz>zCSA=Lu zRVmEoc*^FgO6|cr1ZoOnU@t5bX&lk*E}mh zcvZNpQ40ko#ov^3AN68QO1O1eV~S$G=%xUNKY@)rOqbRnXa)4&C-j8W>8R^Qk?2)+fA*$Zl)*-k zw4no>@!%XxVAOUP6D=H)f~+Mpwc+QtV{OszcUkkxYeUAM&~yv>c>{1^w4KM5p!Dbi zaWXyt%?T7jWe04~0rGXIepN#g)~@3Lp{>)6ki;n*iG&*--Pf`6E{x5OFTq8PTzstx z*=8MBiqJX_pU?zT>!ne*g;VNXvNSgrN)pNd{$_h|^~EmRDZ!BpC4OqU+0ng)&rJ8p zDbxZ$=hAdy_oT^$-@$1|2(n3w%snN5p$Q5gYg|@PZ{N|dXDVZYb1D{c2_#3_p1_um zFOC{>VP}|*is;cW*9@x$*0bYJA_t{l!E5AfP8rVwTjCDE*KU!Y$XsLN z-$2jTxKKR(D?3E85{AduO$gau$9E@srFjVD_(jX9KWrgnjUTeC=tdXu|F9@+yFT|z zaQAf1jbDmfD~gEAKfn!{;=Ml^u<0j)$Z0G<531J>W)H*=DGd|VnA`vw6g@O?53=9g z8{j5RfY4oQEZB(XnfEZ~QLITNQmxPv;1h$G#Rj^h1@g5T^nt1DGo*uk{1-pUfvtV@ zzskrJ9>_fa){7~`o@6gN@DWFWs=es)SDN1YbCdG9r#8~4bf}0;!ENd+AVxj!p#}Vy zI_>^JETs=YtWB(IrJ0UY*Gk!qxiE7@Hk+3kTS)jWSD66yHJbxShftC}t$dO!4JRl- z^CHZ^v?6JgV@aHJyL^l?VGL21A#QU*y%9l@o?^i^1J}L!UXNHAza`&!hJ<5{VqC&L zO+Qp|i!@kB6lS(@F-ZTQVp{Q{JQ|k#MZhZh-(60<*D;Xc_u}{z=tKlTKl&vy?5Izv zm$AUACFC{sv4xS`MjMg#`UUId+u3-E)2X^HSzxU|bsQPvamdORB}Zpt!#I2hnR=v$ zLn$+RpRK`i-Lq!A%KW>sf7`M*Y$8Sug6VeVDQqeJWu#U~r0C3aU3}iY^JKjRBh9iX z_G0!_T4p=mYmMHY_Bj)lW<_d7W1pp{y2x}KikneMzNvJ-oVu!eY6M<4!Of3~Nu-H^uD-j0TCkTh;1^4)iA*pdpl|Qr-uK|0r^}Kt>u;YI3w)(#ec)Z!uB@WFJ zr&EQB#ipcNsW(H4T+(Lwv)0UL3s`w^@$>nR@Ostmp(+JC8ERkQ(BQi3w&uTR1ZP_Q zYX@Si3+9pCflzpnfk#DYneYt@TQnSlGTWWj9i(&J;A`%xcmm>u9KEA*mFG-6f!r&@ zvxJG8uzcL)9(;DMxB<-AgMruz{k&^zmdY7~*PFQuOs4*hvR7a?WM{33QE z58KpgEZw1wcjD(qTuQzRO_yxynCwA8AS-KtJFBPK8=_R(QIcK!S+s zD=dYf!b9s+Jpp>;bT*Qrd~q$=?d{Tt?KF1`Ev)VFjQWG9PyEF`45L{_A%8)%oIUgy z_rUevt$T33^FmstCXd35D%3@(p;y%;${AOeSn$(@xYV1o{$ilCKS7JpWiaYH)Us6V z+<9Y%W_n_`Ma1nnn}PmNX~HigiL%#`qf0@5CTVbHoUnuzK39ni6;zU+af9HiV6__| zw-TYCai~y$+CDE{7cSThqfTzpZLP;!#PsV#jR5~Y0Kk#2!z(c6bLiUJaXpgNT+3r5 z4eBwLXXW~aFbK&G4a-H(;LaYCJ}?_h^LQv(Juh=ED}WJeDt&4YsLQ_14wU2_N6n9( zBrr6eQ)7b=(3Lx3?X`_0=~VwhpS{`jonYKqaps>Oo=nZ~)~Dye(569np|9X-f0l>t z(+L1_Pap#K$m6^Tl9CO|AbM+C-uDCZP+<#7Drz7}7lmCwz&h=_XfHOAwgsKDE|(}% zCChJVa^RJtMY&kp!G$h2`7-w76HKz?u0f6-3p7j83cb?{>{TF5Gi@FulI0_dA`>>^ z^oF~iQYV+?2m+mr#O^+NC|xS$0|hbmph`KS@ZN(8v+eg4=nGa>JJ9+t7EzOe+|NwytPeG9vE&WU zh>!Vc?rAWW@Wwn0v9+2R?bpPTY*FYDM=+eHAMvm}pRok*zLf8tp^C`shM-s==z{NS zb*<-M1Ah$S2IWRloc+gFJopALY?VbpKuZ+x%$; zT(;l^RD|8LXw7f7kvpO(lepx+PenyR;nDh7AYdT@B@GQwq$u+?Qy;MF^o+dzf|5$y z%S090di%9)*FbJmvfQtG^&xt*3=Nf|xl`_uZ zXln%T*DfDudCs#h`4J@Zq9B*1L(5+BiRuMo!o9UTAa(z?MhE5K1ysFd>kiK`HB@!O z$XZ)$?Q+8@*}0K(wReM@74`#!U^>UHZDyIwv=3mzFR+5UWfApKOKw&Eka5G6{E|{Z zacUL-zE}V*goVYy5_(SGLL{3~#q|PY7sy=CpU?pzl9W8}!zSj|L-3UVSqyZ!e3>_v%Co8?mV>!gUxHnR1QRWl z#sUW|k{y~*QptL9k6RqUA42wi`y_=K&aJ=u6s>!%bV{d>x&x$dI^a)OhBWv1ap9mYww@6jbL zgr9g;eowUG@W(9#@=&CX%8Uy)$KDu+vp#ej7dn_o_`&0bAuG5Wv5Xs`nR%M*1?dGB zT`QRtPC^M;iGx@iXQQVT?nC(!v0E35_$Km*O#IV)qEnSswUeK?q-sKlkUUiL9wg&_ ztD4J6pkJP%(`uRQEY!s+@c=FfXn)Bi@fvoOlwKAb__0a;6ps8fX+@1j{K0qJ@VO|u!nY-+~6T+x9BkoiO`QN zRjf^&Gl4La6^uL`t0{I{MI`qkJ}&-vd`{Hg1^{+Sc%7AhyDnd~vAk;;)%)0#C+$A2 z01sH(SYEDppgLv21DYdbkmRbWZR->qy)FcDVbapM@Z!(dc_llb+{NF6SHPViZx!4K zFK^mdzJd1baC-g1NKVW^$LSXtC?!v7+=G1{?4*kF)mf3CPANs^l2S*FE@M26>l{_K zGc=%xzb>+=YXFXXGpKn-AdK3UtqUbajn%yg1^@9_@%y|>UDhwPM(_-QK$ueLe+EpQ zhb8H{Dyg=yZbz8VnsimmyhVz8KJ#hR^(1*3SQODgy135CT8ji&?ao*V^C12y4v>De zc`SJ>lV0k@lgqc4?~B?Nkji$v`aV)#Wc{`Bshyd5?dG&XQ8AW4sC{EUCVA>$j-A

Rl4{WG#>L{!%K#dC*YKz-um#5p=ESDMt0%4OU*}A3eo40dhp%QCu|0hSzk3wMY z%w>%_S#4_VyhGnFN`GCbrxpFjew?tIk<*@ZDJe8yBYg_eM(hdam@u~Ky(4Y-qWl4>dzoAgF{&+G4^@OGb=o8@Hu z@)-z8Heh?*H-YM)oPqDPO8T

&ypj-*Z)+ev>fBC*cXH?eBNg*n~(WMQJ_4^$9H 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

W)r2JwOPdA1La+r%d8weF)+pB%TFJh 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 oZ(\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508050002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508050002-Diff-Config.rsc new file mode 100644 index 0000000..252592b --- /dev/null +++ b/MikroMaster/history/20260508/20260508050002-Diff-Config.rsc @@ -0,0 +1,14 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4403,4404c4403,4404 +< disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ +< log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +> VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 -- 2.52.0