From 190f7527ab99fd9cf0bb3a6fe50df939e660dda7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 18:20:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 18:20:47. --- .../20260509/20260509182001-Binary.backup | Bin 0 -> 299986 bytes .../20260509/20260509182001-Config.rsc | 4642 +++++++++++++++++ .../20260509/20260509182001-Diff-Config.rsc | 37 + 3 files changed, 4679 insertions(+) create mode 100644 MikroMaster/20260509/20260509182001-Binary.backup create mode 100644 MikroMaster/20260509/20260509182001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509182001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509182001-Binary.backup b/MikroMaster/20260509/20260509182001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9d75cfc0d6c1c0159da8a199dcc154fb53796992 GIT binary patch literal 299986 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

_baRVv*U}n1VRMCjWnI4F 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 R@ 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 _D!nm+v}R zTn~7L05$vA3$Vm=brf*UM8hyKzO$<22iYA0e0vK#|=cbY*zL!ISz%oWbXq zKX}XmQ^gD4!>)OqS7de5R`T#d!PlPoHL}EVDf-wD8+GhKeV~}geI@1MKXzGDYWt&l zEYD7k*bhRCSPSupSWe#Y9D2})tGhJTp9kXPoI{rSSC7?Cv)0sqgo8A*D;gD?2Qsnv z4L+4Nd`wxs$BW%a15IGKFuaDP=J<>myVak~%o6N7*}SKr*X%3r+wL0LH;V{4oRFdD z3IRKnO5_?vmZ)u?2ubq9#_1kokSz@;86P$M@oTn40oB=G zA!0k(i4-;1@{UjC37$q8?6off@*!I;J$3Tv6dA zhQ~icG*2{P)8Kx>gWnE_QS(%C8PEGgk>}jXcCF>mvHDuf^PEHkp6+k|f_(lVz^CV* zNutC@n+LyZd9#P!K}GDETn^T7n`L5Un^5dRmztsco8bUQc940$RRD2Ovd1=&DeVyU z*|S37zX{oIxGr6Ui$>d)vIN3p^xXo@S_G0t%8>)ljSz936V7byqm6P``LDusJO}4C z>^{_}g?@ZAj_$5ZJn8U%hC!6K{^1%-gf1{uy_N5)fwiAV;zcD306cl71INmd0#C)p zT}jcgm&=*ZtN43Xgv7K9Np{9O`H~SG+?=~A{=W4t!2$Fi%?!Q)N%_uzCRd_fH-YU@ z3K^??1N?|&!cC)#%Dpp-1@^ED#GP^|jWh$zhpN9O!yI>eIxrvDCibN*s4=f7wYS~A zY+0~N@Hp?wiiUu@?QK)M4OdmC+}!_knAJ3w>)xp~8&d7y3{40@)wJB{#kqPn^S$t+ ztpAUjgM4BS0@B@eRp$SThKQZ;ez(nPoy_i+Jzf;^!h^F7Cow<8p znk@kItz!>9i9F%VS#aXj40~!fy(O*c6cTSDSy&&>M!7ulTzMoA0rTLIU6@$(Ux+Bt zeJ7O-l!fPsj1a+`?OQHod@lC9zwNL--p40}c>Qv|^y4|u9p|Z#LIDc9;9acL#mam9YsWKNV72>aV0%zhEQ$UgH`3JW) zSKnLwP+%inHi+m7*uPt%n^mM++LxZ_O0-Lj+`iM4gfc^|0*PFM)vxIDg0?`m>r*NS z1gi}MxzYg5YUbjTmPruaNUevCAFEoY@h40`{H7gda)2P<*m^_K9yt+5>}*bI6`AlZ zI~}UQRwQi4r=E}gM39NZ)~cCSYQ3FW`7o!R=p~Oc&%gqjH?6zNGWOa!#j#d^BCo>l z&-SjM1n!9eGK<x;etZU}(8h|1g|RBF;YZ0l zlgc~>iWlI_CGf~qzhnulC>HJl%3idze}HoQ*A!|aCpJ7+eLY!7yHSR1euRBfGI<~D zYjzS_POC)?<@G_dL+y-fEDsI7SePI}+0@C%ett4?lq|*!xR*21LVh^|N`qv^N9u8) z!stE+K9#T!3Ysa=4DxXekfT@+P!I$kYI?FF4rXf{*nhlIjUk+q$R)OJO=kB#KC0YZ zC4PbmwUb;5`Wm%sqS!pway$M$&&Yp03!a8e}9D34BmHjY9O+NL7#V}I73&;KNYr`wY zJl{WqbrHyYtle@G(sLkVMAn}X$tMCT7Y!2LbjTm1BS_Z98!y1~U%%C?EYrAapd_at z{3#O_?0KEE3VuPymq6`J_03Uu5;J)>TjrE|tog_y4jn}12ZHp54*O>U2iP;*CjZx- zm%g*&i$XI9q`CciMqCtgVEhJ^69{$fI{o{vBP{3d$2+e0N-5V~OStVRNqCDj-Xv|O z?WLugamoZ601>=@|9hXn_0ngn?aojtkri)=6$UpoND+Yeu{;XpeLCX+2GQ9bV|)v= zsT=@OG>H#hCVnD`r=(*ag2tcT`rkHy^17!bEIV=H2jR2tBek(%!_lbt&fV?7sXG`= z?h$}|!JNY7FzK`~MFrsP0E1k}(Qy?JO%8n7-92gXhj+w)xuyUBm@F9sx_eF3-cGv@ zLvxSw2fTqrN_W18qCKB`L3OQUCYARq4*WVeQ~H`361~fi1SmuX4?l(zyy&`^^*T65 ze16#k_mTh!Oqo(F zX&mF7fP;upGt6QmYPH?Ux*6HleS$%wI|15=LhT(hWX~*?f)x`b?>YchTD=A)B{k_z zC0NLP6z^LNQmS%?ggB!e>_S*QW`bR}$|V-0m8x7~6tx;(bBqD=Um02q)MQ+{nvI>N zU5bw7O8L(DmI%Q*ptfjWGQH|^!;&!8rl|z*IQo?IdkD`*o9+3BbS)K{`YxoAPnLNM zjooi;;TDaed}!!;_z*fB+$ahR@(DuL@x$^ev{Z! z+4I|DaP%kqh`n$HP=AbLL3dkwJxy|l^miB_hbimh9eG>4X>8W@^s}^9^$IwrrVKEE zoL+%m;xuRY^_Y~~qb%wmU5~OF!ZwTjVR6pbKn{c++B+XjE~Eq_-^v}W*V;iH?Yv%P zR)iLO^3z)q=%f>*kh<%$HRBo&&x4_(cZ|Nws+<`Nj=b_Ins}k_c_82$(haxS2nVrU zB^n&--_^(ge1E<6oiFeV4oh2?QU!HN5}MMi1#YrSOAr)S>XYy^p*_0u^NJK>{s%&b zzqF6NB24JIkvPbCwQ*%XS6bNLHP;wKO}yvhR4jL(!VyWsn9M4drdlMsYpr=mObyWj zOWE?M`frV;#F+tV##FWVWw7e>H!`4&p#ScbQ|e{vuAZph?6k1-9yKlMviRpDx!92? zy*+~|)gndo240`QzM)Es9E{_CE@(M0&6RIX+)ds~|`*-Wh4K+`^(-w)K`vouhEsJKnk%?*N6( zz{&INaHy^qqv_Vs5{}xxXEw8uUKgJ|r6EHz>sFU3mz{7Fx!MtdP`ds%Fa{JK7+Fg) zktXBwFe6|I0zGct#$D>Qg_%>7prrbbD3c+0_yuV80QM5h@!c!?yvaz)Z#K0!lz2p` zW%e4);#mu`tvqE%hgYLwcoA+dFTMqx~uzzgLgHD4CTO*#uRs)kG-ZT5}a5($E* zt2!8Ae778roE*P7!Z~b*G_4(jkWx0-rFl1d)^=^y0FQRBwqab-QyRqG{X;jdr=aZz zhmAU%`0Z!9OxdGn)DFlqNQEP1hUE7MrhLDeI`sqgSVshLpx=s6s@S@cIsS}1z_n1* zXSh~@QDtC(4TUG~_{r0NCS!$r7*&=Njjxqz#C;E<6_5?7mWv6*Q;bJ|nL3lD z(=7+aWRk_I57Dy8PW8AZb|?xCFCUi`&Kr-d3x^C6D>Tt$@_95O$St{Lqv82C?x7P& zVTrqwH?x~rqaNX)VoQ3ivWr>D<4m=e4eW+VRwEM}L%Q(pYx=jX%i}eJjUuY)DJG&E zjh-6!_@EUIT0ZgHVaGUV-|Ikj!>^B3#p{GKVzc#1#T7;$Uq3)dQRvjv_D4A`q{Suk zEYx^hsYjODZ;wVqc=-!o3VLE1#;Q0v6f24Yv9_uN=oPdK%hRx3%-uU+P}Ro0vbcKf zCcdX(50MUH)< zTT2Hw()#>|jRruuFX~tbd)bkpNV9^Bc)^M+6Fn05wp%y<*8NOu4GE-;;Kn~)bNVM< z9rbO+EqBQ0EY>}WB-`^y6!Bkbiaer(9d8|X_~BT?LNDCu(P+`$e*RWgH55slX13q| z_|SeaqXKJ3G%ErxEot{|A+dz7M>ysbN3W}vXxxo|TzdOS;>(~z%jNF;54P_daNl+MvYXsu&zGe?R2q)P77n@y zcxPXj<9T_sp;VaI+^3MA041v_UaWNbY|Nu;js9{F!_29=9iL#U;>x)USY5O+R#Bf$ zIQ0IH6b2(rLhB0lR+1(7x^T`+N%vFojeG3oz1?VSWt+aGdqG2K zBb1rmJ~imP_W0u44aaovuLr&(C0DGG8;dUgFIxk z@IhEdkj&4|_zg`^#9bbS62U_<|1#{Dc440%tKwl1#Mxrwr%A z$ceMe%$ZGdkkK@2JW0p5e*_uC#YSHulewZqVZDU#vno9&T;fsbG0JPd4J;UDlLRtZ z4@18}bI%Umj+OgZ@wXdQhCo|?QuT-u_U1>puq%2?T%9CZC1=?=Dj7(-Ly*KBd04pB znel$z(_zsUbWX4;zAw+X1NMoEK9MNk(d83H{ub(YKXHvAX}XVyVBu=okpxJ_psgCM`EHVoOj zbTY$bIqXaHUaqb&0G!rq&r$t_^c0$+LbqrL-B1vzjeA=H^yx7~PEe#cJ8MlzD& znycg6Yc9F=!f)P~p6p_SOsAm7NQ~hPDFbkQDL?Es}wtDe2mi=$T{Q>r?s~ zh!i8dn3H8#AaTUdvOw@Yq#>UOeoxj@lHVb%)PE$MPr~Mg6l;o8V z&2`+Z%Qb#%1Ap=G+c>|`wb8d>A*}xPM5{W(R=s4V$nRpBPjICCfT{wg3{PVTQ@3^k z`)g35*c-*Qm8A&fpky~7*I=B);G1t!Y^PDYX#``D3ASzR`Mm)yO1JT^G54}LmtB#f z9T=Ox&&N?tWCf|83w|elTM!&5TGPT_hA5Z)s7eX<9+3Q>sVl&993*-mJlpY*FwMPH z1kO4jsWd^Y9dcTTH$8pLV6^01RT#3eD#_DbnUH=?u+EmFPN9=`{e}3qoRA)cD!nQ)Zk; z$iT(LQDiyZ_&(8j_A;TKx+P1vqw7aBDF(FMraDg-9_m4ALDM+Ww}kaCc%{mlG_B)E zrR=3aoxaza;=R30yD(4boQR%R1$vbOzOHZVNXW-Q8pPA!eOs!S*KR?*ENW>hmcfJ0 z9Z}TDC;*U*8=Ev==X>zAZlac$FY7KuEL?RVoLR+AIZw!bf}yU34YV_)Pa0X=kQJdv zX%vo*NnEUTd(2dPwXQz)y&2uS2NMbLsyp?6`8(SAc#)5@!=8db5VIeBSw-@nTh?{5 zS-&nCS>K*ooIIr54e@ibXd#H)jxytiy|x~%dIDt9;QM+Xm1bsUP8}aZNis3BtJO^p$ywnlcLp#|B&j?}w#`%0 z4OKC=xxNQ`p>vp}vk_!Kg0GiFUf$Up^}7TrL+Y6 z{Vo6S8^Y{ul*i8On?mr|BF2_r#15E*=^HT#>rin;?35;+Cfea^%{jO4Lam%wVUd{k)so05Pva zmhRShW&pM2e)Z!~3{K2}4Qp#Ek;p5Ven0A-)0D7+qWOAiHu_W0sw&dz` z0OMj87<1z>K6YLCE8adt*)}7oOj(2n_$! z(_BPyZ3>Y0`I2M&(J)Nh`Z1{i|0@sqBuJ}e+{Xntc}3AC9s4ayeb4&}hjYflDw2dQ zY?w7HusHk=pgi^b0qd?veGg+vxzm*Ao@*mE`2j}|S#EH7X_{n7$A<#x6zqDY^b&>? z!4JMpXr2o9=N=aUG(&16d&sK;qAfUdAi2YM;tOS z4U=S^c<>qLRJ`^T&It14@=E`iw7wAazpU;Brq|9l)ruTc;)1H{AY;>bBLd#4J~R0~ z?5U@_GU-ebmYFSxnPtrp#u}75zi@KSb&DO?N~ckj8r1b`)Ljed;HV30)c}VejZFqZ zzCa#igR>TWuaGraqI2Y7v|v{Yr%FXFCYUeUdW5L|c!wsXzQeQ#611aDnv3~IZOqk$|Jb}gcP~!h^lt{Qv0A37&UtW$& zXf??HoeEvJ&EZ?5g6OtTo^20=Ho;3D>N{lCY`d!#ZKzdJbaw1CN3u%xRS^H|eYWK~ z+-l%aAv5dSLm>#&bV^(=DXsu82az+`=E#7|c0@T2AW`@x6v#3sEZPPmX_vwM(?QY@ z2+DW(X?B%Yt|W5|${U@I9Xc$MdjndH30CbN2)d4vLXf|o3DLnyC$J$8x$g>q$)mL@ z7LF7t?fKhS9b8)%{D!pa623jWcafU?UZna!3q=Osw}tm*rnf+xebJ(-jFYTGnVp z-eGL_vx2N~pMQY0(M(MR_^{EoI^DS@R?)EF*W{%Y&4P8dGFBC$NPFO8gxagOW<0t~ z7AIJuzvPEaamplU?ZlK~6ts&2Hw(KRjV8^gA1*#v2#i-%Va{~>^Au~ku^+Fn8lVc; z6I{Kd*U~i1j5qzmy<1PMsB>*Qm)Xrh#&FqD*y!TWzqL$FXi<vb40DB&zZ0*LYPfVEcO(SHrrUK~1E@fo<6R^lT3 z+$M<3F3q>SCCekUN_fE?h5Xua+H*0Pe!QEyKv)q71;`VCSTPu}9PYt|GT=|DD@d@bQxTPeKq ze&(vn*A1Kd81J)O7f?qkDdv+U8rm1cEFbSQ6be!iX_;5tDjkWG%Q>b%{Q;w#vq)MU zTY|DcXnDp9T_r+On-B^)qzWFzO--^xFN?$>s*pb^O}cy5HUF&Twx_$Lp@Yw!l8KtY&evr$qSMm3V5Ks@w1oLlT{XStVBJg zg&Q)<4v0GhYL})t%x2E~(QV7k+S40cSC01SapvVyVahncCMJ*hoTC3kbYNHVzgT_z z07;=y`;HjmyTJ_M6XcCRI`PXN7j~3n=$?6hY;e>`HFan~u5<+iSurU=M{kA3Lh};8 zo(?Im>*iF%c?&0-)G+V+laXL*3rW!`z5Di~Zmtl@COG z1_C_u7Omjtc_~BZXW>1m~PAOuk(bf z#762Wt!>w#$>=E5l{!`9L!Sbg7HThwaJ(sg_L?LfXJ=DFHZ)_0^|yp~Zr#y)Rp3mPrKpsMi|zJ8G+5%;*z_5wCY&^1oS#oRjP&qLWo{O z%&rwdUb8MMjfvA{e<6R-QLB@OZEu*w0{!K-P_(Y46M3d;{ryrIK1%Gb&mk~IwIO=V z_Jb{D3k8?C3PfIP_TXrVuu9!=qA!0+&z!5l4hf9vWyrgjC01R6y7=e{nPeITQsWeM zjRJ!Bh^`uLM0Pe&{pCm+YEaDv)>+C+#k%cuEYU9q6U^Nrh;!HW;L(ZQUP7iNx#@U)tbG&t6?Om ztHn$-23gzJfk85ERY>rv?J5^Rez&sm_yUR zuGSvN_ZxNRF2xn)cbN`xfhjm`DD1h)O3e0AL?e59?E2O60u?N+5|XMxP6-|;!sW8G znu+f+UHWOlCQ+(7E24Sh4iu9|U+C>8cR?03>jLRI>mo*SeHi4cwdW0l#J_>gR=?xA zwsesSy7BTfK_-D>)6x2Hz9UBZjemb3X?tg>k2*#=LmXNAErIZB&!aVSkm|Yz?$kzB zMtARMckMigFNV9M7vVP#sDE=s zO`w+4&1~R-B;rSI-#wvDPECm%6K@rtG!8^7>QNAyb!)3B3(@+qf3<=Fhb{mxG`196NtP+7?qKStk%Hrfj zGIr@zMH?yNsrj)<66D^>MU*4zLyr!5k!^y{B~z@9C}Yj6D%uyk5X6{n8aecLHMg!uPu_WV^7k$DH)Z&-i#_ z!5!Z#wPN&XD|cAVYcwLka8w}GK?WvM`8#Ulmayh~2-DXd@R8-|IU@Tek@UOyiJaLN z1TO!J#Nvj$R$LG|saub~c%NjKDovxCt1qNN*@?@EOv-$4|gr9{N0l`H7 zMKTXk1)b3(ByLJalBOW^fB-cbw}E6yd5HomooSZp zqDbyO(e9^rte&-g)=I$9yK*t5Yanp_`Q%6d#qSJKidAWwvc1Ukarl_$DhS=M46XM6 z)~YfY8|ir}rM1;r9(VJ&51ks8r2lRppG;e5dn3~VClcfBQuw!p5B?8^^zHO8LnJGR zHtMb5^xa|Hip$6c+n&8puez3ubY{AKRa~8nL`>P!?hVBZKWSA1H-l%0uLYY{M=;@# zK5`nXqj-4X_Qf18>uL7P&R_79HoPHL;N<`DHX4Vu?_)m8(c;~95*ir$3YRe$-G!ghsZ(Buo z3g7TLpFR4S_`AePD(BJRpF-fuMG%0CDao%P#lQiEgnyWVt1W*!jCkssGrn1rHD$DJ z4Mn~Ku2Q@`Hi<~e-OT%(bFNK_1As<;&4=ZzucmCAusd$kNB%dEFgWd=nQJ*K&c7~V z+VK{rMdcO(Ai@U-Yd(3SQriP@8h}Mn$*w|Un%QwhOjA;WRcMS&Sz$YX)O6lDYu47l6`xTWQ| zIsNNC3=6`TtE|m@16Rd&wa=QP zDMbbStKI2n+KxZMK}%nN3W@38FjCKR?m?l#j{2^DnKNKZjO&um!+Wq*_<#=wBKQ!(qkfA zbh2S`N=`j_tm@pTwG;b+W6&W$lkS%tNGe)2^ZI2Ff&r-4(MJ{c7J!8|=ZmI8N>P8W zcdTOtNlbYRUsG>r`;u&m=Ie`aR}@lr-E?H&XB$1nnVY<<#gepsY-yS7u*!%*9-Iwz zMwoiXjSP(a5ykVTMZjj@_6vetj1Wr^S89Ix?F@&Q5h@%I=q9cz^9_JP9g)J++}A`q zdvgrb_XuYQZ<)69SDSl4EkeoS~}0H0_8;#|bFDIV2ZJ+#PO z#=<5f;fb*XkVrCxV~W8hB{8*Aval;mK7+y(ErbR9XmyLF5fEI-PMV?f`Q%S5vY1U)VjfL7@x+N+nh8=dCIuS{W6?5`4VgWycc9wsh1RsUGw_ zNE~u1hrVE!u$v>M6{z~QmzI%I9$W>gu}H+N`VS_@S|-0y664sD23e1>6gQJ^8;Hdw zTzQxS5;K0N7Mr2)k@t54)~ozxBIr{Y6+vx`VO68l>v1PN2xF|T9oVt2TN@+NpNu>a zMU)E=Qv`{WJ|GO6;znrox}N#4@mc&px136V>&(xLZq~ht$=p{OPK;|x-QAChTAloP zKN(X$QoHcRiYdc)Nwq49DY-elchCwm28>3R_-mbH<4}z++sUyp-OD(u^tHT6Ri7QM z%|>fv#)ZkB#R6uYq;HT?xqiVGt3%O@7(jvr*anPpuI9`?RuiF8Ijv$4z_icP-U?ycaO|DnBi^@`c&t1WmA15s z$TE|q47Un_vweF!zxKiPd@rPuTy_tV%|s+!yd|st;^%z`T4^ss*i|m_$ekIW%H_ef zP|?2n_hZvRk|JgYxU+kzt~pfU&U_&ARw6!1B^B;wzH&x3y~jw^-6AL&0Lv*M-uPy0 zGG>x3L^|emLsn6r8&5)C(*LzR_rpYr7c&IT<@Q)socY*0!_hN3KZgBumO0?4%h$e( z+OU!OzW7S!eQ8lr!!kitj6O$0?2S_H=W(X{34cO{&nXF5>XDw1JCNr)t34__D5PD> z5$`L?g4->lM~`*L8)UR)tXkqb1LJq-J0mV+2@7*+HE`~M&6+r@Z}N6iHNEcA3+9!@ z2RZ&E_?1z|r0Wi@p(3^c6a()v*uFZ)sUJy5vYlLh`(@pb54o;B5%FQaGPp)$T_5Cf z@}sv(ufcFxpv$si)1OVX3%(P>Hwq%e!ggODeL%REHuNz(lNZgNxWa-wcE8oqo#g(atfoiJK;k6C79tX z8h@SwPd%h#+Xb<5$5dTo zYQ7bw75c#dW#9o>|AIz76;?;XKZT||gs1u_)l%sT^11%b%>FUXJYuhSW9FU5Y%(KpQUe)~2x+$4 z+ogWs(F(6{Jv9L~QAr(nj}OReu^e7Ne3Adt(pXmJN_HGgO)weP+h=o|r`TMs!yCXF zHdPp~nV)bH|ETEf*1Pik1vlC<-e;Ggb0d?-vo~M2_*gNH%S`QbXFj~d)W55WJnp4) zW7<*gk^AFOE1}Bvm<~59 zX*9AeednHrX}sIc(&O>6UiF!8Rp<@P?v+*={b}S&DSSH$av_y7Va&HZxLs4)QxJBz zWGL?ur(BGyf^s*7WI&#>GQ3Y(Oh(@;Eo$_N?*nN}$`hDvefSlJv=_j{&3Jzp+tR)P z&K~nwOH>mXC?A-bhs{}Ijphb%7k{_YE~8T$C%j#^Kx4cXQuYG!77!4g{!{x*9j!6> zKKUBmZiVBVf^{8GhTcWH8xQ(R76@{VMaG|%^bMeFu{jC-Zj z>pWE_HM0Quj;7e6O4L-M$9FY2sJhRNdQ2;p_Tt2Ia1M7m6n^aA`qLQI&%yC&F3_9Er}hO4^E9?X zhNZ#8t~)^DWK)r8OMcvqDVl7+mW99OTXKv#Pzq~T_|81MW9dg!b~lS^Gyxi$2nJ2{ zFr~(ZMeXX}e|+u;VM2d_r7sM+kJd>E+uUq->dItOAwL~N+)A4%k3B|1nY5dj+s($> zNWd4M>K%dsHR1nV(@LJ(YhH1oeb01l!%awhH z*e4l#;XD%6hJp_r&I4&4wpa6u*=eJPFjAS{Z>EC9SAgVNi9uv_m55_o{EwJK;_5nI z2pG<#oY9a^aYncn`{atNsFwEh>=EEZ0mUcnx~VMW8t8M+ueSVETRslJJvl!ix6*Mv z!=d7zP1)wDH-^nwy8@8R+-Z+PjBwP}4L_buSpUR%!d$)4&B+_g?3J+?sD{U-PV_$b z1LQQ+eeX?!TMINih>hM@Kz|GD_y|0vig3j6ZPy?=9L?l_M}Q62UhHFcvC?N(@zTe% z;{!Q@w{i*SXtrfEu-;i1e1e(o0`J`!6wFT8Qs74Qy3V&-NTs!$Dh8}IUwiX!2Je9rJc#jZ-d|0PQYT=Xse%4i@RcxZ(M}<0p*Kf>QQ6^zywbqFI9FE z#u6CJTLI@b-e~VRU^?`!h9y-F_KBrpt~`+X)t#ZE#w$bac z;t9O6`cMW?h@{@1paB0r0KmF=Mlo0}mH2|Zql&1ym#;-R|LsffCW-#x97(QPQQeLP zhiaPK;p~|(X=|7VjnNCNwo!!CXJ+S1jS`l6;(O_hkBN2Ffiu&V{TPX zk8Qik5wR{zQeW~YzlS!PD+Y27Dj%(=*rB(MNWhRpG;3~{Ei|86{)zygReDx4-^@(x ziOv=f9rg|47$d{r-GnlrUy8w<1`2hbSJl+VB^lb@%E+s}6n=6U4+;FOIY~?(p-UX6 z_){VOJhJrc#S4S(gC5E~hm%v2f;bW?=#fHpF12LGb>bh8LW#We;vB_U%NmUbcJN*3 z+(Xr2Lkm|$R0rlLq}$v{0(A^O@nOpr z+r9+BdXm)$JfypUr5IyAmIBuzKc;%|0%^x$mIk%0L!ojeV=p$W)nGKpkR8j{AD%Wj z1IPD)nNQvbpeVm~@%3QpElHz_b_ncXnZ3_B zz?WYA`@)y)mB>z+0B-kmP-`!@`XCT`?Dz>FF#OtE%<7SpmUZc09vp)#m;5_Oy6x1d z&aDn-bzVwro;qHUaeAfYG}nmI51?&ejKcyt@y*Q;P9O88M9P0PYKfkZydw-(+F?38 zjzCZhsa1t}aspGzkTiIyEXRM7M0;D~x zY}lvgGjYBA=8w`GZT-yk#NqcWM`ltYqNPneA`t1=5XtIV++l$}ah2yFhl8Xn{Wc=< zoRxt4{Wvcf{?2bdTu>`0N8yLr<8r~6QjPa^g*TEgf)(%D*1%b)UHBHtxU24cA=dL+ z5y*iZ+v;W@Dx8+F`R<}n{%X}f_Ru41yR*848xDkA7>jllmv3|a14Gu!hz{JxMn&c4 zDg>&6c)Vv6GkIg7W;j^h!H$pNt<$SSZME6oibOehdGa5}iG~v9LT?c1MXnGPOj=(s zl7!ae=*(l2Q%#XdpL2A^=E(;ni{o8gRMYChyNZ-Nw9T4w<5 z@U5Nxwbl$w+HA4k!Ed%eDA?NEhU#JRv)>)Tnb$0swN)V;cHR8H)o=|e#?k^`N(_}= zepwQUVBQ*udEiOK)_(F7Npm%prL%MBB#e>?7M9O;uM0#Rm2(HN3q3=*BEE9E24#`o zP>X7*Z8EPsO5l;2u_l-Nj)nCpUiY0u5H}Em+E@MIKQ`~swJ?+@8KER__S(tff!!LhewWu z(D0l{MFVBq=J8~>3_+ts5;xvp=9!y^ENops^H^@jA;AbB`TloNU^t=lWa){+i#N)v zrvvrrKnu0SKs@I@qW6wR1l#wWP7-YkHqgtcMA@16^c&bTCw*}k1eq6bmwy4cVVJ#m zCoT-ZL>EO9C23oJ)e@SZ`NUcYPfU+;6h4}ttN#9&4x9p)FG~CCn;F)?#CLIRB~IyA||1;AuSo%p@>$vr&fgz@%i;nwheuN zI^V!oE!bf!^Ie?R^@CqDYB`f0*CSn|PYQ)>Y^~W|dH$r)1$n4|ZCgh4n86#Q1iR}% zl(S5VJAbvX9+)j%4Pwy@KlLfSo_ZKK>NKUfj?T%e_oo=@#y9ck-Hp z1PCi8CGxnqWHsM~PHWcDapXncv%H=lVz#FoYxV0oZ(D9>U1rT#w__x?zeU$jzHX1Cpy2_eahuI{R+c}ww`!x(S*GP zHFwmZFYPM81it5U>BV{aN*qfmtI(^z>hBx9qlY65MiVf&2&NH=r;QuAzYr${6hZWA zP4J9(jA7bu zAIwJ=JE#@a%WErKh`T_>Gm}7?*r;nfyhj|{_+l5;ZL#MXc}N5{bV*p0Gvw(9>MV!B zlX%4k)E-DeO35p5l`>8XiNW4DyW1PeY~DFbX44w$TfaL^E^95K!VBk@pE{sx+5~!U z7?&;bhYZzB_r5JT+3<)$HY0ZQeB$rUNtWJfaUcBUSBsYU~Nh(lF0-bS1MC~1fQZ$h^wsDyf=^k%G~`O zVA1+-+;VM%@Xs8mSN0SRBtm|8~;7aTKskF&n;m(l`JSIb1>uzUfmM!cWiVpKqgFAs(G4t+FF7r>+k8d#k)a0 zgda;D#zyDPKm|+6>(k8rX~a1FjEkm8nisLTzWFaAB;hHnVUy_Rdl`MnC13(n&=+!D zKbz>;)`VuCtD|3pqdinBRkN?*tqoG58WbaJlpLBX&`{&5{VHD2y@6?ajS17-+2ECO ze2u|wUqIpIKaq7)pB~eyP@KKXx(f?J)f?OMET3rV@0Siuhvf z7w4Q^h>|nbupa=VsNl35E5$ujWQUg@t||e}t`V+9h&kdpa!8Qoy{!;*uq=KOuR`#C}*uj}p!>lyqrM_w*&fm(pNA z+{LcvhB%E9#Ys-t?VB4wH{;;WPyShlEYBs>Am8yhq0t&2t@O|7bh* zQ^_)Q`rXTp#e+1ebhnZnN->Owg8xZ(qyzww7V)(@l{cV}IUspq4J5<7gTQ`QmLNYF z*3804x(hO;NLsh7%QBkec1U*Ia|;J+YBa2X&51b!I&X`U%}lnI=CR1b2pVeV{?5`UjIe=6O)CoTBMXI!P}ca=40@?6jyG`W1I-y#eA-D zM&?lN$JGrr%+vm&Ika$LiPoC5|hUDd`cozI+{ z(@wKR_Y{q*-`W+xq9-bLsS6u|>Uei$O@-iz4UaI+2`5Oa>+_1pAPdaQ6Um7~M(~sG zZpY#$aaUhExXR*MM&v)8Ph~Z{xkuu+*=#^Fced30SHr33oP5v1YbcWydx$UOQi7)MJfcQ zPzoYW!9<%AH(~Axezr*WVgsfO#g=KB_(djLN8JS0VC9mkePl=xB4)0GWfO{4QXQEJ zXQSh?_KiJqTk?xonP@lUz`G?7I%zRb<3xk_>YG=Y!;ExyYBp2!cjpCm=rjcsE}Ab4 z3g_UOxHm|#K2|qtwwj3p4$nur|Ds=2V{nBNN$NWBG{3xy-RD2;LUKV;)R22yvv-GX ze8i+HlH!;DIT>O55ib{qp~V($vgiG^lf24<3&yS5F$t@;SmG$e^Fitd9k;`@W!KSXx)RAg7+Wohr0-l6g)LcRibAWJF+Y+Dh8}>(C$v7x{ zcW>P%^@(#UJtjLWyil-a)*0WSB>QQd1YsQeTfO*w*5YMYw%TJh7C8NJPytZ;lR9#6 zXyJe%)ieCX*WXsP$G9Q_iSb)xvzcA0Zne!{Z0W|eEdSz`a!Q=+-T&`NZ$*$59N?K= zoy(!q*`eNdU;IZq=SLpTeB0}!;?+1|ALkbIZcFmT2<*|vgoPu!*ySDh+%KXJuey#8 zrWcDATMBvlnN6mr5isTfwMH5sRRM(>n- z#0kzoTWP^Mf*)bGZfZc-F@8l0J^K`5od zQVCO46x*D+TySWqd5$W)wtBJk5M5{&>+5d_ERkeO$xkJxCV1KW(w{oz05G!%f|-J| zGXrFKokiuvD*%kKLn9h4!MH*v?P96|Om{vf{{poKk4f=_mG_!SLO#UNc-aamRjB@; zcH#4jN4{e?6bhy1*yO^|R+FtR(9Z!{Lap}wn1xRuqy4{Whx@2CxaOjr0nJ&+C8&^K zt48Tn6#d99LeEvV3ns8qrd3iSz3AY-?G`o+{{urcHLlZTY^SnzD&``6Y@W+n`!{lE zx{a0%&%1cs)iBedz=Udu9WkyP%+k~cIVfP*tV5Ad7Q~g|rRPwSbOhQDR<{(4qR7Gj z7Q9m=Cbo-v&b3?$r+)1Y)i%?()S_!65 z3pUX)i?F;(oF#(aGiwTKg6TTGbkc?otoSkr+ix(PPR#8_XT+R>jE!2uG><~{!CJ3X zD#->2h((b=8Rs$e3Sd&N+Mijl%w;|o@6ZgL0}7oxg-@OZLKb94;iTvknpc!Zdo$So z$%RYoDI8XhP<2c&WFDx`^4q)koxk6Rnho>4xQ=N-%7QNJD~ew7l){`=9gWgd5YojbS&jZ{tFBa(|BF3)vMN{RX* zOzYN>IgLFDC-I9TYqRzUiq}H3$oq$r=On$pqGt+SG4O%`h;NGu8gIk)nSQEWP``pe zC^^)%8R&Y2ae@Z+>UT_%D~pI8L3pmg+esr_Y|i?)Xgt16XISf)Mwr0gRU>fBa{X~w zvPaq<1Z=KC7TkiZU*jRwgnaf}DeKfBbI2&aE1fOOJErPgH%kFJM{HPmyAQn?Wo-3f z&jjGJx{U$vIi5H^Af^Ut`8W#wo8o`NC+I334sl&?1iajNAPYoH{sdGYT#WovU_;JR`CUvjFB-tH1 z-7%N#=DC6lj;DTc-`xW&0eHxE~3MPY=kqEL__I>X@8?7&_rfxUHXAe0GpUQYCuJotUq8u-fU9Qo82!|>j0C{Yo~I(nq*n0=T?C*vOz86nXSOKN1mE(QpM&I-^a)SD+>|E>9->zA*$d?E zg}=)2T4Q?MgvK=sR0fl(U5P|0Oo#ohs9L%~xyt<5dyqbqbt^BDGz70b4M1<-FZe1% z>X9{adV>p}e9B9>^8!e{{??u`duVWN86X^(5mO0yYoN6ukm5Cif97Bb>Q2PXJi_^E z+j{!&V6y2Ds;J?r#HUq6^GxOL(6@k$R`$cBd^Cn%;(&X62l5d);B7HSnDR<=dX$%n z0`URT1@N)gxy~BA=ibeISNN!9z5d)HfQlj|M9pT3PUDq|z+6y5%0+M#F|{U+D5IW| zJVbM%F}1}JR*bNVfcLThWqxy30)w=4=Xd_U{N&zsEm>f&1 zGs_i2-h$1hDc(*7J*Rho3S`}I;M^qR!3s*~vBEG)L?IBaLrzr|i4`i6HxvDXF^OP8 z=~rHZuicX^)|z2uu+@j`JDdN#)L63q?(mRDw-A|>_4aVeFU{2{L+yo>AUS-?2XfAd5;Ee2{7QhkpcQTrqvX4H`84xSle_4JL6#EksHw|?hgGNv6`;t9{l~v!YUZIHv+g?mpTl>R>FV`v3d&*E`N093 zNZ4mCK5?X;S7g2Qhd;-?7d-e=zxgX`z<0=3q>!m@{>U-zK{5&-jBN&Ft%FqJyzsrg~lw~;-2okF$fNC#<8T97cZdM^7_%2 zm3M)2I?~}mK^G(=Jqil`l##3tQyi0i7*6tZem{dTTGtgEa5bi$JY-5 zCSkLcqo}%x;sg5!YL(QnOzM!2VW+x$k&%>mdlREUH|S490Gcc1xUuDk#X$YR%V+osjLET=e~dQpq5w5rANT00 zKutd{@SvBSplTt&r?O%>Z|OHjjU5sCTIZw31t?2=#(~@5`66NuVSj?6cRw1!%?H$;|lYlZr*O3gz2DS3B+sNXT;u&bG*>`sSUOF%k6lX zh9e$*rqMCp2Hy!Muo5*lMTQ&M9InT|5S%hJ2YQvAo9L7#;EuXHo4SCYyG~SRzbEr@v9W zuy!1!b@KmPQr`yl|L=v!$kFT^Mwi_WaldJk(yp0$yuiR=76*#f>z~0h*x2zrm z;=>|1Fnxvjdr|E22g}4w^0ReX?Ij))Y9z*==cu<_xJ}joydfZ;oZy_y=apPbSF)!k zKY*dc%A2ZZl7rJ&jdaZ_r9|h+SXNjJnQ*$qCUF(WW$V|TwOr>mCVSoL>)VO#xT$`K zPCa4$eIQvZu~1YpkaFv?(V@CA$rRf%((ixotT)nsgZZun`S-Mc_`c6{4Xw{X(Uvhw zm0@ZrlI}X%SY=0q^fg)?a+$2pUKE@ex|S7%Y!-r!y)vvcI3CH$ip3fl`)e*Ye>(5y zc9Uh{(?AF1qIv0wrNbgN`PqkCDat_-K?!Biu zL3voz*}BPEqc;!vtCw<_z2-JRU(IQG`NQ!}CPrSF;k$lyafr4$I4$w@_7#&n7)7W^ z+@WV@QkGooVA&-X`}Sg87(e`_RD+!}jw8|+N45QsE5wUjV##Bc@Y+H?g5C?z(w6Jy zV2LA%PGexu{`acdMor(MdB@=zAxL}cy6Hg^0i4Ka#>^777|{BB z=AIeP79N4P2f`JnfJVD>^!<{A3+{C?@75C6pKu`GN&*%IklJcNZcDZTyt;ccMTa8( z1+Ox+6cP&1lsK?B;?D3EeHiE4Fx4C1s9~bgyPN7qtNvb2JAcaPFBn*RZTst*=?LW<&1C%I|Iun}KTI)pqPiULr`H6Vw1p(ZNrYp9;zx&3{Vl3N9_JRIZ zA_0{wk-JO$EdxF>m{fJw-Acp}W@;}-0xK#)v@o#f!_|etYmlSfN4#J*m}O&@W+jfF zqMHimtc?wti!A21n6AGBK=2bI;zuG-)O#B=h7g`=MGe5V}8R zEDVH>e8Z4C6GTa>JaPcLud`_6kH6tLpiLOBOpHa#@%54IYvJ~Y&%B`ghe68 z$Ea|d03y1qC2Gf6Bw>Mrt)$N-*O>sSDjbn=w?TOjERi#ls17|bt&623>X7U?gIOfT z>{qWmSEfHKBA38zpuk}wq1G)uRa>#8Bb~-o?j)0TG{PMjMf(1x8zK&F)yJ{+8LL=@ zp-c`gHRSH+i*CzL8v&GC(*onjR|blmsE;rwaD~&fW2sHHGa=YJV6J%T%nT7)xFOWL z;*#U(m||^{$&AwJ3)11V7Bn5;)ZEKw8Ng{$_&n!K&)Q5awSU@x#`WP3 z{C$!mUg*^Q6V0tB|10cQD)rR?^U9CG<)W{>)qtR;#&ILn5`UHa}}!Wn0Kc@8}eY#+%H$%m@1ccVKJ_z)i%sW3tQI(*rOIOV(#O(Ol=Oz*6Xz zFkVK7MK?(7kgjkzFo=X8j|u%!X0N+eGsMRgM^9!GyaoW-6I~-;tNDFX}t}|RQ&cOz;4)#oct3`dKcUzzww;LuX1B(Z0 zKZ0uSx(zTa^ID$2fE3n+*eb|3;Ic4KoU-RXF7eHl{WB$i&k{&Tp8mz0JIb4qx<%m@ zH!!?*v6wo4f2zjWzvcD59^Gq$7FB84w+}v8lMw&~A0i;XlSqMEHCcm);J*qM!9k}T9S!ewZbqf$do<4AC5S1yK z)z6H1hTk0y=`YniC-?5@)X|r-f_)EADYG*&e$;#S7=j+I$paCbj@r*4>R@Qun2*r! z)p%RwZ_A3O{8~VwxRUv&HiHYbi!pG#A)Acou6unmpTPKHZCYVBx}uyU!K$3~*&V4X z<|YZlAgp0uFqz2os0}PAO01?1dVUlm;;VZ5A9J`V^9)m%jK21`!b=+K8?5u~-=)|Y zXQ84xW7B^3B*zOnx*Q2(%quCC67Z&|7@TccX&a6QYDW23>%dkBVJ*mK2;ngO;H*f`l#YkQ>ok*DLptp0bb zJ6@^6X2C1B!^#O7KLFf^h0EYXCb-Q`6@6$5A0`n_aS5-#|j{+Mo`pq-X!!`Uw??eA!^oh~yeh*_{ zIXk%|c{V6)#6*RqhSfX4Rgja<`_qlWpw#<D1t1P)~Eo{01AasKOjl+C(I;Q zXDx`Sg;AX?mq4zT`x5jgQUpjc8sycmi}TgA|Bnnf8uaYS_fpajiFtBc4R`!S#^LRP zwZ%}k!1f=+Z~@guqLP`0#mEce_Hb?gOeGUhGPjcirZ>IHSe&EWt(-4q~teG+KXNZLN*9+e|_Ly&wh%!8{(8U@}-pF zXP_ipuOQRyOlfr=%Q97n3I;82+pgkL!pl!HNQN^0FUCu$JktV8&e=|3USCsPHD>m2 z?6u>@Z*UvMM^dABfQ=~%8a>)jJ_oQp8DTwpfu)gG##3xdA%fi((m?-?gniY?Cd?!K z>3I`cb;RMfy7~HHfG0r(FW*fsN!X3kkQToiUX^h+N{L+Kt8x%8cHcT@Te-eS0)4()(bAxEZ<9XP z{4U004QO{o5(w}|%z}+5g@SM{)h4>p@n&aE_5W&}PM7JJ+!2(qP{;=`WwdTv?Kg?D zNa}|gh*M69%P3RV?fE06$buKZ4SRv78n|(pR{d3cilwFGV5R_NvGiK%Djek0W|5&r zJwyJn3nOqFHu)zA#`a~LgT|5IQYW!?{FZwdnd8J)fz!=dTmOp+3!!Rqfmbui?Nbz%+e3YML0mP$Dv>g^ysB=9=Y4M6`gzJq6`WGx2%hkJOLdA^Tc7Q~QVv`~wH| zNO&y?`?E~~>LqD!1ds62rk?*VJ2bd$&;bkkE@H zxnQEo8Lqv&QHU*i2MV(Ikj)=2Z=kJ)MX9?Z9y99IohSOi426-Ois*E+Xs#M6SGZiD%s3tVDB1p*s@&(<1^#g@+a`kfyk#1_#BSm+ z+4e!TIh!o%b*-N#U}%}^dVd@s0QQ3|fTqdTa7$ucLO+>fMrVVgL^3x;<{b{dm>|Uv z%bgzTPC$!$>RH-v2~#H}etu_W`3~d^=B*Hd=i1OA3F!t2b*I$?Fezqjgn>qUPW<`o=k{{b0F9^!x4mf=h~Eqb z{OnD(er%5w*hXA~730RZ(7x3tFfRpi& zT@mr*m}xvwD5ICvcDKl{B_lrX#+W@OA3$3w@AQ-G>4g1xslLDa&;j!%(zgq_JH z=`|aZAJNqH)G#jxKCK$)79{n$oW0`i1fS{)gP-xddm?U!s_c{y58-K3IO~#U_ZoU+ zq#`XQdO}Z~D4wxr5|&FZj>wzaX7G(#B2%TAl6>NbmZ=_X+n%r57x>-e-_IC290L(R zAkd}iwLaD!iQdV>HfdoFs_MU^fsOHsRat_nf27pLY&Z3_@n!8spXG4w$5^KU z3fiKkSr< zmPfBc`mL4Oh}DqUR5+35N3_$gstP8UE1HTw?5jF}Jazha_XcuDV z6nWsXm%ld*GTJZcnAaB`dX@ChGVtJGisdDZ=Pl@J4>YH{=`)Vacx!t4tZS4QBN{ZH zK=$8;I#l;GyqT=7 z(6SVC4U4=!2u)9QL%3=NEw<51(4f5yFp+h05Lsxtu^`jpF4VeLF^}WZXM5bLd{!?P zW}e8!!r+mNH75T=sR#|rD7dW7j9daEHw{#YyV1Lne(MR(LoU1CH*ZQ)7BqySl|^yx z^BtQ5FMrn7-7qGm!uItLc8Ex8G$izo7B|ohPkCl~ln!Bzg2Q=w9_Mr!xma>-R9{^* z6^89z_4wjTEyV2OtM&}XP7MN88ZvT(tZ82O!G`(040)$YoAnVx!8ndHH=l|Ph$M(S zYATpP4wPh~-Xy1$E1Wwz8imF0{kVFfs3)6s+2aCX2?sz7XN7)^65}a)^-++(93syk z`!zlHR7x;4k??6wzqGz!>kDh))5v;A&7wPFa08J~q_ABfEd>O>Pc4ns7u>0o`35~P zJFx_dvpFT4Rx~(g?IXO&E+t`u!XkGED+TN2vmBQq03(7ii^oh^*=Ej5j(mJt5 z{+jsNCsd$5GroRTlTq1aqo{9FZXdz+xfUSN_!`L#^cMFLQ=UwYbj=sc6aNK*S68#} zCUn&kKJf>+#e%+7|7wiI&b)u@m%87y-C&P0^ojgG{-PMPqguM^M7z2t2{Xmiqts&FXjR{K~((w%C%HzO3mjLuJ zvL~J$za72Ny&Vm-97HH8pbWjI^B&Owx#Huprh_V_C6N+xX|wi5>Mecl9OO^Qspf2}Iv2da zX$<3cvsJWYL^3RStBj5@9?mYF4ih|V@NoIHu+y%QuG#OqrqmwQCfrRsuu=ll6_ zqC6Etb;+Q{KitB#hCc2&j*J}D&I5vX8NACPe9Ff{~*YVDXd3Zhyzja7Wmx; z=?gn&l}zGkqv%ZPw{@FYtt82Jwi|EjsB#zY^8r@o;|<-_Y`dMNYYK|WO;INx1T@WN zW-h^w0H7A)$`gto3~I^!cN!Y&f59+W+s3?51uPMG7aj7Vv!ebaCp!sy; zlYWAz*vO{wTM`o7C?A4wVbfz|(YSu2u)Ke_l5zg-to~?z|9cQuEVSSJ!-6wKHxis| z9wc=u=wgF!FFu1w7k!JsS|KS_ z#QjW&MyX{n=0Qo&8VjxWH_P7(*ByYJ^>kDE2;D;`n&lds5eS$+tf8dt%i)7bv=HwnvsY ze)_jt;q|DWkdudCxv>~YN5CKiIxI~KsFMzN$uwS5JvimJ{Lu%cm(tVfo>_eXZ+_-Q zLI56)RG3B8)}C_-9T@>t7(mopO~adLt(cEAjZL%vXo&3?i2@1Eva8kYHvT4b!)aTD zeNk`q5|1+VwvrUOL?#*dq&^d$#f7Q2oh=DwBpb<0vvUE~hMfQeQ56`bD$$c0Wk};& z9IvF8WZGhz)K}x>|LL*P*U0#;uDlf7C*a#tz(jRM=Q-Es^6mW|O%IcezczbJ zD^_ENm56N-q|VhYj8{6}tpr;%EE9Q>E?ah9Jjp@;8+g<_`U`dL7`EZ3eo|YIB0br| zhp({S=zz5rh)jO0M^pVoL-f^Sj$gnFMQG3|N(O9`ma`?H*4uhPYY|6TIUqFk!}0U1 z2PzLVt-f+l+9s*el8a>~c8R{HO58Z`BcRQ{3uQ)75LZ+$MSA4I0x^8bIcWBU%DlzI zfTq`y0rD2E&L!A$Z2QZ7JfqSta}3IceG0FfMsAh}lO{uL#vN|WiYlLOmCb&64ZRy) z$;J=XA!;-+Zc>b#QS|m+Xx5?g=XP$%pqOrLovXBukiGabw_ZNG-jw{+S8Ijn7XAat zG;C4jk`WdXjP^XXgidm7Y)M&xv|K3?J!u(OWrIq8wEW~Zsu$T(F11|G<_L0^8M?r> zIFu4Et5!5Fr-qy}4P=R@ewmK~n&mrd*+6`!Dps}vT^gL>%m{J*QvP(^+0;lZ^`zZj zcVcfi(=NDl>jL#IW`qm<#iwzd{Kgzreex(@?59rHswNSR(q1gOK{)CGpdC4-0+Yo; z-u0Kcww3uKq;#5R>oGd7XWI%*6>3Xbd$v@#c`DP-v!j&j3tNwd$CY;F@1#$<6&)+@ z*2(%VK@h0Pc)rb~$;@HlGqQG_VwhHl?aAQUQrpC2So4hE%3lKGUKjBcW+;qr`Vv%( z;5U_4J1cUasGUW$0QYWnf!SZKUxBM^=1-_aZ^|YniH1 zi`Ve&%j9wrproJ039KWL9sYlOvslLiBFB2&Qu*E0h(jQG^Hk-fS3(yR3!X<;|2;*Uh{Z4L*S05)ivk@yuiIuyn)0W7tnPFXh5>z%M+m^U{! zG?bYcwzpKZ-XIma>|p*p+E1Y$F92QNN2I`|n%*jKvEt~^r{J>U6iK-Fwsw8kXoJf0 zRcDXne9EdKj1y5G2BO3bHJ&tDE6Mdxnth5YVS;I-96|P$C7bPr{6wcL>oc5v3!FOf zI!Ycrc_4VS{M0TimA^({Wipn}R}6VL#{2&9Obez3dlWP!d)0xsRwG3BT6{I#vch4I zs5Wzt)RmL0PLZe|I}B#jI7|LNUHSuzPW%P_Tsfcp4lW)8+@0(5&+hv1s-7&2gHEaq zQe2Uqp{dQb^qujwnhcn+!}gbF$8wcEH($L`cZyNN4W_6m(x|_>Y^9l-M zWYFqpfIieFQ%mO$N6~x4_SmTck-z30o#FAK{rOtG-fu)a9U(?cIbQ&51d%KJcTnov zGP0K0Z~gWo9cbmDwHk$eMCnAmq%mJ~;3LDVo+TtesJ_T*+qd0X3lFHc27kQ-9vY|5bh=63#g|<=13u$MER`&N?)SY6#=!2TFW`Z{#A zzqRt^O~VGtRtMJjWy;yh{Q#BuhYe`Roc#BwONZe|kEws;B6|A9kV7=dZl_8wNNsVh z?lTwAT7`6)Vo@ErT{Vav+z!;bIeykv@Qp?}b`dxaO!82le>d*K#WZDsQui3c?_g6( zo5m#0`5m#K3|Q)S4U{%q7rXnkFOa;z%jYgFHf5U?CHEc{kMux+7L+u89yDYA6Y`Fe zY<4!uBOiULlLtH1pzjVeJ&)7QKqt`T7~``0Eq>5(#z<0B;Whna20bJ}xC9OB)ZkFS zu|TOOps*g(JT4%Cslwyk4<0UJQh`?Fi?OD3mlWT+?fXd zxD6}0)D?-fNpCsl!D|Mg@uIEpa^er@RMtM1MI z+G>K$q6+O+cq<#xYE}Ja@;9&wFD}O{B%TmtxSS`bd9HDQU?r^@6h@QoELQMdga3FD zf&p}ns9JaVKx2j9fur7Sj$Rnf?b^3a^_XJDRY6(|WG5BOldr`97i@)2R6o`Ng|mww zGuXGD?Lx5+nJofQb?K6+g8(f|qZ1618kYoYF$SB?vKm%pGp0H$HLXnpnDZIg!Z;TV z5oUP=ejC&^6a2UuMQqECL3NRzlTkk~;e$d%XBkNCe|i%#2LK+aCZA2q0Z8@1Bb`im z=zRxHz-s{&z+RS(#A_HcwFw*hU6tN$er4ih&XocEEW()Q)v;dV=_H2fqX{g+O7=_J zp%#Wr=X(WggnO98!z|Y#z@z&dQYBJ(cIWVEbGis!X4cLEOD!H57n8Ov1Ovhu!OxV$ z&>IWlu%u+qK*?3KBj@*uHU+cBg(C+c0mue`tMeF>#fXMQPDyRHysLPr3b{c#^>`sS z6Mx*#hm3U4d)e;HO(rzN6bCrQk70p^VnJx-o|@BLVAw%EGQOXLB&ML^R6Ug2Ww(D?lT9T#x<3Cxb(M zrBFpjsjg z70svpy2)h-uF_V*R}c1zcJ_#Q?%cYcn(SKtI_;=ehU;G5ejRBdgGon_9nQ>lb5D z>>a-D7Lm`bb=MU%nMAdauP07`AMcg0P%dr%~UM$Q%*?vnB3bRZZZU*)a&s__y|J|hPexru% z7M`DrYf;Fyq$JEMm;P)de%*TP(YPJ_To`D}Si!oFyXrF-+kuLgxmE-HgK)5s?M(*l zx7WS>Bg}Ypc)sqEVR}Jvc-k&UD?;c0+xm!JChzI_@<7EgwAIT{EKU9+DYU-*vb)08 z2|7$jB-yAfCshFY{dfj{LYClea|jC?O=>gVs*$~Xyz>~X)-1xlz@&!!;KCRXa<1Cz zK%j5C(7rD!+G8#xtz^4sty`QZ-%lPdDDcVZM7Rdul=QX-ik}D%rmOm|EOoy|eASk! zTtVJ+O^!no!$EUfW}xGbcZIrk{QkG5!e$vQ^)>eGB9WxT$O-&Z9=6v5Cc22kcL?kF zWCY8A&xGz1XnJO1$uuV1&C@_F8UX)40KjbCucIiaUBYB7$Y5OQ#fdz=)LDuC;C%q> z(&_yJ!7j%VnpHMvK7|%LWJ9Az$^`zP{wg+U8J#?V6%Q3+a~Pis76b+b3O-sTMBTQM zy>fLk7tpjJ)X)@?jp|1d+V?~2^dDP=8a>y)3gm2(H&5gNxZ?JU*pkuBRSFA-(GovP zf$>_VFzC`h4*;zr#uFM%!B(12q(Xs*N`OUb>08$kY?K2L??k}eN%a?Wiiyr>U=DRf z*5F?(9FZ`z2@QzC2W-RSVvC6E9=XdUJmf=+#XSUXGx|y@h?_U2D_k>=z@tp?x+i38 z%glzVSabUP|0vqOwG8-`YeqKFSC|NVkOy=$q)O~ma;-#lf1;6`=jslWt@n3#+Jaue zM2+WH2Fd9&iN5`LgcJ#7;=>W}WXKywaURs{w2iv?{9qjEnfoY|jiu5C>hdRnH4YKz zpm_tu(rZT7=pF2*iXZ&2|I%adOt%HlCi(wwg%rb*rmcTO;9q=-rjsKAS+#x;QL2*l zJW5n#OWc1)SIe$D$ewTuR<%42lG$j9U$dNO_}2OYR5NpOTqJ9H5Sfswo?&}Dj{3_E(ySV@+sz!t<9VBttAMlxENl;;aC29%C#dC zc!cj9<ap6U_s0%X;?qsuSN2P6=GLZskJwx)1$NEWO1?u^pzK_`uBDgU2cn0p%lX;1$`7 zH25;wfNo#yGu=+tR62HTQw9PHYB+Ado_5s25%Xe=(!=3x3oDtrCWH3Z0}6iwBrZ-v zh^En$H|0R*&O~vTuc?RbwxwD9~^9S5%AFM-6$|b{=L&|@tJBP ziz(j`+(b&VLp{maYf`^pn2f@Nmg2llT)d;6g69m2GrjK$k@n+&Q%*$+p96xTJ3G}7 zw5CNpSHLA!0DGA1{$EsceTsx~!fc7mwA>*yZBMzl?`WYOZQ=4Rq9FGNoKNZRn3c6hlQ48usIu5S`geh9(9f zJmP}xZ;?5wzY#{3!1~5-avTQ_uQnH>H=Z;4%dKkfNOlBa!DHsWMl&f;?vLx)WjN#HjH8Neu+Il_V>Q-LofNOeD892Rht1-!Uc#&aU#-wg?J5Y)FRE#fZnbCBeaFHY-Ko|EgdF`x8opdiuM zzx6~7UviBsInle@=}jm>$sU5HrHwTEFBv>o*b2f)s8dP<%_2@ljQWvF-IzV)8X$#H}O_Cv$;;jb_OmbyV ziaa@3&R5>Ji|r4PKR z*?aM#IW!)Qe+dHy`X*s}~iF(!jB)n>a!B<8s>#n(l>fcjj%;T(l0YoJAGf>Qt`SuG~ihEEnDffQNV2 zYWP!H5BbZ1HM|JI@-mxniKUwNbD$nv)T${}^A}YR6W<));}{Iyyt{~HI3%|ShH)TYqv|)!4zS{?f=XmQUlb;6* z4`acI`dka#`o@H=hI{jC%DK6wk;;F!R`t zeBfgsRBA@>k0Y8?&l5kV*!_(UXE+UZk?zQp)a4$Xos)ZSQ=bS+^D+j-KiQlW!c9&X z_IrCRfYLoX=*)`CY8Y6zh7n&0a1`I$(dQw+|1?}DNTUs5+RR?DGD-v!W>>0 zrP$!R<_vcti(RXouLmMEz{+ujt)Y|s^qX*XLVNPN+TA~&AHcRo2yVFPQ@_#tnN2wr z7=4r*Fey!MgScBT<|PSLy4HVWy(csmWQhg0X7?@b?rX8k5U1`kXLbqo6V@+o#QGZ= z(IQ8SBlKIK46Wqugzya|d7TS>ZR?|#l<^|?hbxTxOlhcUO+=}tc+w;g#}fkPT^pW} zmahYf(#~N7!rxGLRj99tsMQ?41h1mnVObVoPu%6_u08xI$Wjf^_d~<&k7bhVGuj9nC zk8d!S=tt%;bgG9OhVf>?*5!|x^f?}H4Q)z0&ucNtJ59w4UCWd7{#&`(4NS9mq2?>y zn+tn?I*a(t*Y$GA%^yyhG*IiqV)UT2*A>Vn_<9DA-5r3s9t$IBxQjpi@oJj|PKL}t z^4-QuDN*yQ|G0Q&${#X#gmJDX37Vx=uFgo8<9fVHh*LpIhv18L4*+;*EjOK4i-Cy; z=laXx8B?lZw6-3m}6eev1_P&t9POA3hd zcG#;Xe3N^&RIHDuUWY-b);uin88zdGXg=-N;P4tq=vu{eNT zTvfrU{Vh|GocA8_wwwiC<%m*Se#vSUeW-12Xo`|t*tST-|78DOeZoT2YCMR+&_0-$ z0avG(6AAzQ9AYb2w&A0wR%YyV3na6iQgqkI)J>09Tpa-Wq~Eu2`eGa50bKG{kn7)l!7;BZ)@ zy=kZ6=c&@bk=M=Q&=RE@_hgoWXpWSo%w%JqyGF(N;g?#my*}PQrb1Z0P!Mxt(9Tlu z5K$Skiw??TSEDiL=?MLwq3dutIphA-s1W``d&WQkD8Ku6#G`llS6>a@5}7bT49T-% z8~wNgO;nS>C|y`W_y5EbQAB3*;f-{WDkmYZ(3r z^7J=vUxKz9RP7z<=f~7^U&9ZtSI5(4U3*G}ze&hiaDV%HJ(&%bn!`GjpZXiQc4}Jb z>OH2jXhU{l#7f*~U*!Up)Wu>v*{Z0m=w)sH6ndWV>^?FPABZ|w>_aIHTijVxyT5?? zcYX5f+8TWrf5NyB-Gq4)O`B>_bh1fgS#4?@M*|glX|h98?kNfmoINThfF_DhAOS0- zc*45fTxD_r+rS+{zJ}CZkJHlmW#F0X6h>O19NfxsOxXO~o=3{ux@@Tr>uHcZyb)2G z?S&gYMEF)LY}!RkMdLB`K&(m&M-4e!&1N~Xv`R%3bBa8Ve~6?ZDpwp9vf&Xbh58Nz zb>nw^R7qae13jUDCVOfypcEF0>aiP7ZLwb)x$r}KkkM}oj`@UQTjCjeV6=@>6zQ^& zX3i~rfM=GbXb<3X=vgsN%P$A5gTgD92avi)R6NChDqiAExqEcrtiHbh{}`GK1MQo$ zpG==rL2Y>wa-hg?Rah0HlDEX2l?tN0@0V}ZhvqDM=9*4?Aw3n6R)@Yv&`|IvwPOUA ze&_mUuYjvZnYM6k6TG~;jD-pMA*4m=QjI2;^U`UgmhCI@EK|@p<|HsXHoy>B^Sn%$ z=cED=obbJsB^*_%6AfNM;zNpu{y$ zOIf8qd0{OX?g{QHY~7W&SWPVugj*U1n)XV;kH@C~CKuiv>O&+Kx;sv&yA_bj74Q+n z#*2><5ef%+)pXXTdPn>5B5_@;O~I}&M#S(`5zQZ7uTx#5=0aGXQ0u)`yn2U# zZ1gv;HXavxaEcNRB6Z51F5+)P)-_TJd^pp8Rshx5!JzhMpxKD<=inbBN2L z5V<1pbA}F)l38I<;MCIps5_726A808{%GtW=Y3silorQ=5x--C`Mf=R8A;)cj zmyFB_+OMoK8ybvi?4E+3zh{U@-`g=tih6Yg-!T>$0?b8%q~OTm9O1Tnc6K}fVetc5 zpBZKDx_nUQB?MeNT#7P|f)qB_LUBtTi;@st*!E|^UZe0ep)E~=FLP0sU&KxG+U6P# z5`4>#9}c)X#YGA5^0p)Ow_N@)-0MtJP|d*ro#kgqKrPmc(02Hl@AI2QHn6XK*kx4x znbdg)GyV2JU|K}*K^aS1{0P}IdMyq#P|1_U4Y&b8z~BE;}Q?Ai|_FY*>Fvg8|_4nqVD1F*ref6`+SNC z^DjX`aTAy8q-a7XL7eeq!;}=3qG%VU00og%G9Eur z3OjqCT)=&ON`7pvoG5v_0Jp55TSF3Q=Q}tiNcVltQ@?6zDA@po)(Amy%`>BO{wBJ= z?Ak~ZOtwr+jrOX_0i~=rxBrJ^^Y-tXTpD(SsHP>+&H1o%W6uM@PBJIsc?V10a-E(@ zKHj4|>z=YPmEm9`)7;RZEjxbp68Hf~BDf+;#E3l3F)e>OOy)&HSI+IRsIDV_a?@ew z2Bt>1IbnWX5k#wu5jmv3+%|W43KABqNH-ff>#8*me+^BG6JLGAi~~@K?3N_0(Q!X? z-?G!gM?auWMA`+!5ABp8fOkY#8xa?T>-u__1ZGK5Qk+l6@Pj_pGj|mdZcY8*cgGQ67BZM60U9ynn@th54Iw7yC`0R*T( zBlP%xMHtAq;jWu3|GZB%mo3rOYK)4I8+IFKgp@8gQnNsa`f2n^j!cYP4d1`cm1dl^ ztIrJRG;e!2N@{@I1+pGE2EJmjq*ZyJr`e9lZ%%56;ve?NUKFFPu1$UfyFNuaH9jtq zn+|0YQ0C}&CwKS*b(ZuF4F0!4SNv@S8ddDY2G>+7v^Dhzh07#Y_lrdLQepU+&N+b; zH_Dc_4$O-#9er-Pb;hWrBv(}KWG4=#r8v*kM02CKnR(q_3QY`3 zbdj>9=9bG%Q5waa0KY$np#b+Z#6d*<^Kk*Bg4tLss`AOdr{#>j>I>$vzhTa>@)hYE zhOjA|VAR=KFJmv=vx5(nq`T@}6kG)BH-YPbp2W%n^*nU0v923GCuqiz%Bsih}Y*R?z z+sktY_aEhiSvThhdO;_;??j50#h!IZXrTIr#>&a4k8%(g58@3H^;!ySU<>+_$>Sr* zJMJT@xkaJWr1TLc6-e~Gs@wMt7!MdIFkKm`;Al{a@Li=*=ABIr&r5~MnfKCG;^*X3 z@yJ?LXl=V`%B#d5oG=BYo$Kd#{4&y5MDhKn%awcxG2r zG?c;96AMC<9u3<|0F4tyjC>97l$fYuk+HeX!i*ZopO#C$I6m`( zm4qPJC1ZOg^G$_;kplg$<^Mg9`6jy($#HcCW%Z*|P#{I114JJAPU=?MdB5GX&5OC< zip8-0z6*U`#yJp8_oT)D2%^8Z_}1V<621e#98w%Q>+JvvA7@Bx+&rG-DSO zx&6xU+}_q!a;!!W3wdH8TdvGd1v2>gAU#6LtyDQKQK3Ahih$ZoHW>r)h;}H4a15$+FB~})DGKnG+(vE9bz@x5& zWKv#O+YGpA9@F9PGr;5uv>u-tY(``cEp4&k+dr$rfMUYr2Km*??ZGvZ=| z{PQpSX7T~Mv5-5g?EmWXYTe%HNv>XyK@clOJVY-qriG@I$&k5l&VrvAnmV3$NT;~^VI5iv>Q`99WvCJ$JF;ldg)1}90&O(fC>Aty+-%n>U%3h6 z9_tJTfWc4VZ414XH3<`#iTc4NfSit-D8HNs~t|OE-f$wAD zY8eed z*HMyCcIIX9>nTAujkQ1s0peP@FU8I+c5j!$fTzqi> z7;UN}om)@Vs`%mL*sYuBHm_~+HeU@Z`x5;j# z^kUf9J-QZreW`Zk?-2t2URcVR4UQ%k!n}FVJV<^#)pIAWm{~Xkis3FO?HaB7Qk)5s z4DX3#DbLr4pe-`Jcg;F^bDphVdpo=xC{-oy?w>&S`B6z`>py4iKd@85MsZ~?Lbncx z)T*I>H*w;LPyTS3aLriJmLFXAgxdCfMr z4rGX`VK=~}4X5CbEe zw$o&|gnTIl5&)R8h!exZwe?T^e-G~_r?4Hn1)~EfbNYMGwYJlykgzH^ang6(KXI0{ z-;F9dkkA+tFx8mT^+Kp(+3UXoag?ZAd)+po9Bj>Q{exy?B#s7EZ-zt4R3F{N5ktbR zJrRs>Gd29)W)?=K`$9oq$6*sN3pMY)w4o6~XJm{FPH8hgLoA;PHR>eQ{%_qhUy%Pi zpTFn#^2BIT5i%HGQ)I0bl2vfi2f;d)iT@Zl>v$c`uAfFfnrF9x1u{I7TtT<#rXgp- ztTt5m(Uxo9e5&ritE8G)WlEbI$VYLp`_S@70Sn`nN%2F>{>4K&Y%3enEdpNfYappT z=`Dd_`n%=(t@t9Mh+$;U0Hgu(|A@_rG3P1GrGvE>z?oATcxNF*4KUMyFxicABI;o? zL!UKr!+=aq|1EZFh4b-%d9jj+6@Ai>NZqVPgGvLkv6fb_1)RG2b^L;h# z58M)tzSvI(%7~qioGB8uphIqotxH2j`_Lp6CN50Zhf#aiE}e&w_r7P`{z7ju!6~>M zq;H@~)E&;(3(KKGXZEX1Cr5h>P>XcS&Bcb

z;d*|fDqJP&)kMZOe#&~Eot5$&! zwbiOA^_Nm%U(+6Gy_5_-|FXCJG72xL+nF-~Bp}<~z(R@#qwRUUfU$xlVBKU<68Cun!Z521z_mJ@ZK?qyv)*ws*yM@vSu=mDSNLTuP(}UQC|%k}~s5 z1_*!64czB3eI)r8N8pIslmTbH+!O|EOBCm(2}XRyy7qBad7}`^)mjs=&s`#UtQ1`e z^LNSgShi_mBMUr~z^ji!0dHboLEls0#x0~)AEvU}TQ)$(xHbzqxDeESO zs4p-3YO2S1c&twm3ylGNZm0fcSN7LjO9W@1%(Q&A`r*~?+{^kyXGmcq*1cy&3PX~x zEmSqa;WE|Xgo^klP_>6)efj!)>V+ZK#rnKwmO0@Ngy%Io06B^82$35c^zr9>y{^d>nHAu(*~12D#m7~K8NGchpnZ(L`JyBJuS&`{XsK!hu9 z9J>06BK7MPpZkrVuEB9DHFuqCCUn2(*%^BLz5gW<`r*%e{9a;LhtxN|H)pIT|C>rd zq^x2C!!SueE-!3WWoz{^F@hoEQ&Uus3$UFHR%sm{4$xNn*d0z)=U9?g_&iO9nP;q0 zul@>xbf3O#c+G|FP%^ydja_nY#XoX&2g|Bw^C98ab{HCZ0|p-s_TPyz9}`u!$<3F` zrsKG${L$!jlx7``xh^P|a*I^*?)F#qg=`fbDMfkp+m|IzOP-?wJ-1#kD;g;a1rV89 zUBxZm-@`{5{Q}X;AqPEx+n>=9U|7UkXPHDNDZ|T6cEgCr1|&ZKfVn|q#^A^$zFXq5 z{X-G&bEXjGkS<~M#ETs^?unB*N+Oa;73J4pVP~MNH6S6zECsJxiouawDCzfD#@{ZS ztn>i3gu(B(V(fBi(T|ZV-V>M?%M4iI8ei+rf<+yOPXZ-N&XgA*A^p4%ikQ zh{6+pHcoeGM!4S5Rv-s0dOM6IL4>4kGV9dg{eBj8GH5_v>ijKjd3#)-E|cjifFj7% zZ}}46gGK5-Hn<^}aX!Q9oamnbem8ix6z@nYOsE9a8|d*0v8|J91|hCyr1av9^4>K< z{&LnbIz~*8IH10?c~5XoSY``6m4W+Vuc(BdVU%k+**PgjWgew?(~%shAnYbSH_1u{YHt1|y0h*B%k_ zZw&}D9|wl!F^Mj9Ub(O~)@yVtzriXEz%(B&=7!>(G53jKcj+xoYoJAhPU4Y>ZJ@=^ z6&5jSCZKbCZUJ~}84MQ#>+=fTyuYZp6XJGi^}5JmVc~!fe74@!u<6eG@s@E;;1U<- zZ_>$wnlK4+yQv>d<46p8c$4s#+dxX9yT~e1hhVldpfU?B9CtUjfmeM$GE<#wC*5cMP_Lv+d;)_~4M{cmjd zdHt5*b`hxL$-gb6DTsE; ze=6BqdE71dbP`A`@I*^VrgVo&0k{C`-vx{(3xG2sO?4G;sKIE{7d5ZjDA>s9uy19U zqI0g-ej?UtV=>^ zAuJ98q!s({XaJxxDmc~`)K!2th`J0~p!`9JV$Y9ma`C7lAdWAayyebWjVH9D6x9(( zw%>_YV^zeAgX_Ne-@G`tGs+wTY}5=f2kd3`4-vfN7-p zRLAd~OoNC4U-amF+_0>wLGl~UY0!^@IO=a7D_;Xrbo(4TiI-}RTp*V{G8MxOMuRo( zTTuqcb6Yv1beCPy;td8P!sYZD)tXPGb$~EhE@tcvHi{2u!I}i86`WDRNjCGflvk#M z*WAMdSsII5aEdktBGPQp4^M7FX{Mw1uwj&6MOIQ-{f-qKo}sKMeFI-ydb*yi&BNE@ z)u@8IbK`PuG=?tM)+37}rCk~apB|44gEvYrk3Fb$Ywn|gqc5!}o=wEN9NPR(MhCm1 zKXzM~)+oU0U>4$h3OC(=4kQQSF2jMj-_9c1vvq2f7!IRFKB;6k}b_bvl zJs2?^(5(|M*l8XbSfZO$42BB;?h^49B#jV`!CHYo9$;M z^|f`D)AS`J5zO`Hf!*jcXUVGMMn8RlbrWa%25UmZY#yjk+?Tj4GX6?=D-S8Wu8yT5 zWtvh&O}}RG`Q6=?1I5%lq=-uJE@DseyElX-`ycrb|NbFw1!(T{(|P(P5?le8fjJ=3 zI98;5t_;}(v$vsww9qg%+gtL3RS_&m3V_rHTQNT&4SQjjFqE^ek%M>Pcf4#k< zbYxPu$PH^>c zW;>Lp?m%6CK+f+hB4rWH?(0O_f`El))W3%N04E@C`Lkkh0x4#R z@+6I)@OOJJk>6Un!zn{8k$gjXr+1t4Ym6M-y2J1ea0-yoYLe&t6o3fzup5<#m`*${ zR886@LI%|T!X(WKUz3%El0YMK73!B>^lObM1eSRVW3DoufQLIhyea*6nY>iK*fhez&r8vjC+&^ zK^4AWQxkbZcXD_{2f>mEO;BkAubi$P*jY92%63W{Uk*G7R&~i#vbm(tF1$a4@>b=S zvkCnPjS>{Fi7cl4N~nx*cniF!%Z{&~!_+H`>CIpeH%9Vgy2&_2lE?%W$J@hGs0Mr!>Ujd!vpw_`rM6K>T@sO=KQ- z%mw6q#T#r}C;J}m)`~VIc&@TJ~WJQx2?UA1k(q`&P=5R0)VtF4c!21KWX^$qcF$gc^{<>Kr%$4ewW zm@Lj45bNCE-8FDq?KGn5y;_SzC=A@M>H-7Wcf8Qnn-pCr_~D=i10*}1#%RJiVdE8& zxuU;THcy;$Rd_hC!!2fL7fX+iK6vZy6QcW#w&77__QJ^0jSRd>A=@Sl)0uxIGqjuKV`Zv5}UxKK4V4NE^lcwHUD-m;yE}_S+}{RQ@j7uWPB$15-o__Ssh7 zgVzNc?c+P4?9zp!XKS&;H$9MAr}zz-JyhUfCG%oo! z*PRb**a49kTACnvfS~EcuTz&o$1bX;=b9=UugzjGkOTMO<5OaR6iBJ`>!j1)MQOfH zo_$*#_Zb)jxacRV2Q#r&Z3+0rUy4>4Ow@odUTfA;1+<)pXXo-VACVbld;Va;@F|An zmvU+$3HCG6{)4@ngftGsg;pPFJO*nY0y3~CK2)QQ&+F$^ar_Gq8Gkst4B2L()iSq) z5I@>Sy66{Yw`G(y34S|Sy8i6-l|)X40jKFlUK}k-S@8FSPO;FRF;w#7C4=eyc`yX9 z;E9c1AU-ygUTDJMnzn0||AX)<_C$gP%7X7Z==INB9(2AoLN;;*h=(8#MT%?ro|Vjb za6V~67$JdAhygt+>;pqH3<;v8uf%`PbE0zmPB6ovAlK%e7lXFkHp@w~6eG{q83r^A zkp7Yi)im0T(W3>hs3U0#=gN~FNxTiC6OT%$($4_Q3yblIWOW$k(t|ZaBj^@tAB1kS zeP4Hv+l6`Y*|P6(`m~jY;7c<$btYm_5um_@@;2g*g>{*k_Scqa?{fKWFykWK%a5d6Cmo>!@JV%=)MslAQs%8>VgrO^REtM^jt94_bn8~3 zJ)7{+lz}%@BHSOEYi35x3sQ@`aQn;|f9OQ2wk)T~e(y{6BKs`tVzFp+q3_ zLPQ3uUR#^m<$ll5NyZY>wa#L2e?ytbIWCq9kLEbOPWS?$=s45@2gZ!MF5zC;??7=L3QHhq#4fBqTqwo)?if(TOZ%3A%#huoqA`xz8D7OQ{WuQjok|R zhy!}wxl-bNHpcq#^*T=ype09Hx5^R5#<-v>O>}>~fUfD68s_i2Q0$3%k_jPXXq7t> znS#(1D7bjiCfLx5>Vuf^)%@PgB|gcC#ssgY$lwUIo0uQxVU=F=HP-5;)WoJ&Qj#=+ zN8kDp1Lq`>x%YmRaIPt~qGROSKITFlGJgOoldvO#la64`1lgCdRJDVHV*9xg5iC;k z`Cnp7kbS|!4HwcV0lii5 z7G7%%9AE{K^D-f{f<~w@#@ua4)RJZKwF*t)Tn!VOpoj}c4pB;oP~v(L!TIwe;ZlHW zvdg1=h!ColN+g*ciAHtZJ<;^!AvUB@r!Q2#Z`iz9TDs*;i^F7LSGu;4&Y)D#jD9gC z7OGub2ZXN4E;l?b4xKE0#f&cvxRgSYZQD%93{t<$ z!JY=L8c#)+3MvS@KQp?NvxauC4!A5Zo2ISc=OEQCo6x7$u%`LFn49R6FSW-$i)@vq0K6oTPCK1Pvs zHw+HB^0$7W8J0{zlhaPRpT0)cg>o9c!uQXR>wo-jHBlXo?%wx~M-asEJ$Wz;+Tm1bU%MZLu>^8a%NQ!MMCs1oVRwQOH z=KlUYehVcjx4G?kmH|4^&DzoIEM0Io`bJ(H%DQFSq);rOUxG?LPQ7^WUGS|t{ksi0 z{Q0&TR!%-G9+r@Nmxqe8sCNI=pb(Tx+~j3~5>Hos)v6VTYe@s9d-B2lb0DBykxzIM zmPF@=*asxA)YAhdNMhO8d(QxT3<6+f4iVq%Vf@NquV*SL6aA<;PF_1SBjWH z-#Qm=DjLGjR(tLBpLwTMQ#T;Ro1`xL`tWGhNYvlvD=4#)4g3HFK~2OfcNCkpmw;e4 z8o@)y^>700p1`*cda% zS)T42tt6yEJ=ylLrss;%kdo(Z75PVFo=r5mNYZv+*|w{Eb!f^_?9Tz~NVn8y>`||2YQ~wA5L6TeT^Jjw zhv(k?rU7x+TxsZ8&_OB-tPwOrNuX(F%%d@`n>pYvNui|FFd9yY*w@%mb0vD(iGvun zg4-3KLxvHZc<6NPoGHZ}y(M~6l6B&fu$e?p3NB|odOgY#k@5aond+lgX!A?Pq&K1} zi-(C*b&;aR&RP~U=8vnO8)>$L>|nMQZ@REuXqgE*GS=@qen-EcdqZ%UA7kkcuo1E% zpk)>FQOi*oy#x?d0ji$sQLFI6zqyO{34qm?qF!8i6d)q-|IF}i5WQXn=`b)9AFlEl zn*14HraNX;EZpN+H{oz52m~P;%upkRwh#WsZC6G-TJ3gbbFf}A2UW!EHRGPLFMrPK z8!>K~E8HEr1CF?VEBIdphm}x6-&V=(#$8 z;ZR_fGn(CQvTU2D1`D2A7+%_NeeVp3(aOzVEw;Z2eNwqfLn>Pq&j&=;=#u=^-_+ny zZ#K|#kCb~vDbTi)xLTa1piX4=?2EJ6B4;jBcnIatBras%Ycc?{uz^@l^_cE=f&mfH)mt9cML#s=K=Z+t1h{#W%5= zx9o|2R_5~O4taKY1@3h z6z+~9E`gMMcE1FQH=Hir&GcV(e$B)*MF9Xqr$l0v8e1EUlN5PLyt}YF!5YQu?9DsX zd)E^wP1JcIT5yV{h(y3Vu?J`_pS=!LR`$}xecd92f1e?87w|jdr(Ecp^QjI1f*~$f z{=4pK7TVX9oiCh26 z?6x=qgk?hiV#mBrii#G0m6TQN+SQsLvKTXAMw+tw#j>K4)+ie8n}@A}tpW2jLuSf1 zB6owQFZ{g;Y2tyKHVL-tm*-s!ni4Z&f_(U39KScL@e`XGe3V}@;E!pRM^4j4=&_Dk z6`AmSK|IMx=AF&}Ajh(U3+1ywP@uv*xDao3tbU{Cy$3J6q zGx|updl{$b88ibzvGA8ok1RIs7QZC3Eh}#Ym1O@#S9-7*@xUG|Mx#gUJVj(1R)Uo+ zu)CExvWmI-f8KqAEAL-RYlU>li>ih(M&W8ShN7FhGKDF=5V&6dc#D=Ww8K8&sK^H* zh{>qY!Q}g|yVMfTBL`ZZ+lAJ5oT@mMQQJWflSlD2@Nx^W35jc z7ycUhpuqBlFtnc>-#G?O(k_?tjhau{Eb4H39eB#cK1O{te*+3S&tFCvA|Z*ynG`yg zUoN6t!;%IeD(-@(r1||+ z9f=B$G9T!>UT_^(e!+nall?YAb~8C9q0=qMO07T9sqThZgYwRnm^qIK3J$Z!aCKW_ zoPVGI26}~WZ545W+tU2c(FhEkx!nceoiBR19@B&{AC5d!{MWAP)#D8Bd3@ z{uaxMYDtC?c@&&shXO7gl1R{#28m8XGe|9a#Ro&ENsWyDSVA{|*yky<{<*8H>!(Af z-$F2L=3MQ>f*@uk@Lcoy)+p-Zu3doH$k{~oO!HHk)eBOgBM!$aSb7rms-^S}K~bd0 zNU{_i@I{0v&s5$sK%|rfBvn`Ij{p68_#Lkd0`)sZcwYsAbf;~<)rI-s|1lXZpZxp= z1xa1y5_vSauBqaqVuUM)#4PTv>|9>6*sI!MpyKIE?{4YkXZek8-gAY)D>mMJ#L(uZ z_#M}<)+dm;_K&4ny-sX3huOx744`z@Ej6wKsZWWAjN&ea6E4TK7%&E#e*j^-Ea>`K z+^r#rAPnb#OZ;sQS=nBe@Iw1=r5kfi<8i=&tklvZu|8}s7*w@3Ws#jX>8Fy^r0>q- z{9n4>8aJ~fl8aT$8Z0Lvas~~O8dUHw#zL(%=f}!@_RA!sEo25PfmfF5CvTidLU!eC zy{{QBPN@$%AY05@2h`}4ArJ#XU9J!V<*lT;40AW|7rbV?=gipe9G>NNDfl0)5x0NO z#-?fDx6|uihWu^q^$*9f4QN(ltQVE9{1BBfsp_A+ON$mHI1j-zg}l#~TqLW7b)vr{ zUk0ZoQ$30IeSHg-psigUwf;9ckw7Gktf`SWA=BvwoKg= zTB1v|3T`}tN%;=|6PxhL+@j|`mX8jfB8`gJvWL+)%Wv-Ik^ul>Tzd=q-{iy@=U9yr zl&!kb1v}`UlGXVr_jT|@me`xMTdN>Khj6=iVSiCuiKsVra9QtcH+bH^fm@p2BeiR6 zZf@;;SD;N6-z1W?b?tF!m=5p^1@d7Y&td!@f@bm1WH zzrkhOErbXos)qf_Ond;-3($XgfgN{YXYZUqn>I@!o?FaRxknOj(AaI-^vzO_D#D*fCfex7<`7oalbX93PG;8 z5+f_zzDoOBv#A(;o#z=JMoxY&#;rqV<%BQ1V%VV;fArmEx5MdPO8H3}&Xa^tdKBL0 zw0YuyTiAwQUp-M+Pm>fl;DZV5$h(Y|T^5dw)f=6%@p zLXZ3;yVgXZ@$Gf_^Kv5}TCrgn&&F-VzSmAt2p2d8@a} z%jh49g?#c&2V=xER^G=d%o)69njUOYhk?(ff9cwn_MoaYFELaYo%*s}7_>%)e*t{& z)~}vB#ypjM9pCyF(Mrjix(D%w8xNI~Ew|qH_7!0OF;CG2sxgB5^4ajEp^gLToUuv` zY(HiIG!eusdYW~-Uo`Tz02JVvf5DVcjptnlX+KJvy~#h;h4!dhinu-|IJ0d!(L9`_ z+IslviMo8{)aT4_jS|=1^Ts27d@!g`uC34hD4-8r;;rAS1vN;d>LqfUxVFY3sqMHh zOk6O5{NV;h)CA>wf;_a+N2B*k8zmm#CFcYhP9DWjAmnc>FGA?;iT{!Zh|zM)_?)^0 zx?ffnX6lY8%4?FuqP(HGyP}d1hDxa%$Hi&7|!gt9G)(AEe5(GwQqjc zEj!b2M;1!HwdZYDM2-1+v+b?3qFO=u>=%1qpu4A_s5d7cFJfdes*YnHO&E~63w=&B zl!=Fp7j`CS9Ke#mOJum&8~zmb+%dHU9rt+U33L?eFM&nENrJ0a+$>x%;TlzV#=?}D z8aIdXwl-!`9mSr)um%(#fDER)&)0CM?Zx?X`*LaABZuyLx;S)$v;WAREj(-HV!DbG z+lWe!uv#%6_8e6k>3PE*|6NPHUQb9F)9fjQFGLxQwzekLY(C(*dKpar~OG$Pu$%iX9GhoTLo+xqVIY8Rhs4W(#82cI+$3pue z*bL~LLr~7b+F!^4y3E4WcY_h(>%U8}>aGtI;x@5H zE$5Qx@1eLfF3zHKBQZFs)7?%??N0%8OAUhytJ|32OSHL4II~RR;+q?MzbNAG>dutk z~gf7Pki zN4Oo9VxjqRUBoC*O-LNbTYVZfUZ^r1sd(LOF4zd}l%7+?;y0p=h)&ZfQJ)9({I+?( z^e^LV2R(KA%Qz#JPTqMoTa(+jpbhEU zpOwjJHy?B5J?2YenS61D)7YwZ`Teecv_ewXEKL<oANXGNLL z`jLi}4QOPawqjWB@`D<40Pzb*)8eZuWVu#T0D7{*Gm5IYDCq%FTa=?0sT#HWwv8-X zuHz<1-;K;`UUS*;e`fLKu9Hhy!~jK0w^NN(6qeBD(bx=LWiIFKbIGUdN`y4J^%i*# zj)ZniRs^il1e0m7BE7R_XNbJ!owu(9cp2}G80{{lO9o=Z#W~>!S$y2}gT9k*SxZ~b zpPshc{w&HU<#NBzjKuTZHU0674-<3Y8Bidi%x_W&F^LJ1R%>;3bNxVbCh}Z11VHi! z!X0pgx$%2I$bDj{Gw;P0@!?2la|(wwhp*;^B5FS)4`*y_eP@B}nK%Ktqw!vdQR{{K ze~Ir*AP;VHB|Z>ncSoqPr2odW&DJtw&&RXIX8PR09{DZ19rNshP@WS;R2#e$dbTA}U@gB|1&aaLyOZY9TAKD36);yj;nGi72$2OxK#thm)Vdc zKgQi4*6(u-t?mL1a=jZcxT)PB=k9MJU)UOic72Fo2n&22>;FL7Jwu=@!Rji#s)Y{& zrjq)s6$!RYu{NXv5G?^|g9`W+EpInZN2HH1NP~8_)TCfB$U2zbUyLQNZ zvAUH^=T&D+eNO~7KPske0YV=OETum={4bmGT5x&`%ISKL2xyZuIb5;89MKY3C4dA( zT1}>XQdA2YYmX(r`6AD2pBf(br7B90h}7Y?FA@UovhYTw1MH1GEi#90cY1*sJI>#u zeZ=HzEQT&ex^`r-jZOYgCFbOYW;Z;#l?#FAERNu+mJ-$qbdF>>Fzz*hK3R57Ub7lU zWru+{+5xX#R$g}F6h%&92Pnn*C)7lHU`~q4AGh6e-%GCzsg7f6N{rOFWhWqb*O(>V zTNxodibGw+zx zA->#2B6Tdk5xPC#U!?&2qFwWL3x~sfBT{i-9?OSzry@1=At{dUlTt#SaKYj{9*rNB zI%;Y!fZSDSo0}HdRb}ZNa(S7x9Eu&gzj=+fd2iK}1}*fn%8roSFvL+CWXY=1INaBE ztz_Iy4MBTr*6~Ok&;9cDk^7rtFol9mG5Sv-n)nTO-WKJgrW>hny_w11FPjL>v^BgC z*I6wLk~Y{Ki1RO)xj(Qu##Uj%GP+P<(v$&A*G8&9&nWdU;3zdyXye@;HaxU~{AKWv zV()w|RmjyZil0}Y+P*BG|1EWM1?i@`~TbvHcFq;eLt;M%D za@yEprnTQuI&aGOi$z^vLSg{k7W`gjz{=X#P`cwPrYSS!k;H!b!7p|V88Oq(VS3;( z)bdU4^J^Y$x%9grQ4b%M4u}rJR4eVBr^C$LfmSF3K6URucN9()v{)w|WU;?0^)T48 zr-dpU8@8$#EyB|mqT2YjoFrD!*IL*V;Pn?LYjHA;@YDVPPTJK-vj2NJFvHjr zgorqxDS1(J`LfF@@=m5KBU{7cirv><1qx$kKgo&>nj4a`C}>bugzOK>#{(7phGY@E zZ$3;g*s~U*%`XbpvqYF*9r|q?b?BWfu%`g#1=!tVx9C77{`{10NfB(T+b=`VO#Wzi z%!V(`<>J;MnS&&5*t`^MEFgDP?AD@m-;0l37G1=~AYvcRPGM1>Q+SH6=%o~@s6qbg zfSND$w=p&z)(@Yl5P1)}tKF zKm|74|9@Eb*(f13@O}6kx^(G|9-F z8YP0}+GLHhCpl&@e=CNl(7Av+*Y2Ssh0M__E=w%q9`5+Yk9h-16YaA=ScVot4!wjC^pHVVeE8H_U0kZRj*> zN#W_d7??7g_Dt3Tg>hfzlaRvSD5C*#2S@=%cGl4Ii)g5HVKXC?mu(wplR1uh^bf}Q zG2XnU4ZZtVDV)LBM`LcJ1$d!!T0t_%lS&4Te6DiC=LB{)UAXyAHWoo{zlT)$WuL=G zu0TwZR^-re0ag4$-5IkO?yNKrZ-V@+~ zP(s$GXEEFxI|nWt_n{+jKs^}9A!H(xxt3L-! zY$fEDP@JKtX*jnj$OwjqdMhpMiZZ$@J7Bu8MpR<;+129{VjqoQY;?kzhYH0{EYFex zIQY#z;rO>5m-9`SP2d!ZfV-rRTA8h2ADSYgueaG=Xo~Y&gznREXM6O5=gnQ1*(~H0 z!W73^bp;~fdsG0xzAE~&o|6L0OMd9}pFiLNl!pP%ueNs1T7U8X+*%SmG!&vc6H|DG zZ7rVvJpcLBGpkrrv!YO)sL6WNMa-s}>D}3oC_IGu%^9vox`WtGLy3#AvKh{56kbet zkI>Dw5GsO6peVbgTG)ffQB9C#KL)7;^*4d&4N5Q`70XzyOP+j#?SCmpx%>eHx|~cR zS?>A2hUdS+2duo4JnC@AwB9f}i|LFWj=Yepy~lNN^ta&~c6{reekQf~8-VnD7?W*! za1Q((Q3=H@a-5f9nf-sE3zL)Qk;D#{9Pl*t4o3j2VqH1BuO%_qP@ewQeBQ8~?)E5Z zRNF@>D(vN?P;tzNKO?dC0Qy6bvl4n8aEYIP;uIj}?0QbE*3!joa&xt1$4@JBmR?7M z59D8&ty{C;MgX9bpVA`|I=M19bP&F>ZLljdZLD>eyB)?xvkbQu+ZzX2x8jsxD9Cwc?-YY zGHc1aUV5kMwp?Ape5^P@yQ@2lgpI8E)ka72w!7=2vQBv{_kFN@#U!*rk1U%E8OV5! z)|S0Z+mxke5jNegh81rw2nSY@`RLm_#3L48)QX1Md;DZ`^SeWtH4{D={=E1}4lnM@ zZ%lbdmFkNI>)@Tm`4gtjF;8R0j+V}M-_b!)qe z)$8~n>uJd+A{I^-b?`>!dvNqP>U;Tv(DGmNw5if5Lf}x&wH3m-8UCjArv_=)Fl`|5 zc=KW$MeGT^uR4<`U-A3lS&1})nLVd5eQx?m&iEiw~ zmW6}MI#!qzRq(-GF%#YFlC)z@v_il9LEqc>6Abz&t>u~y(2sj0ynY#I}%HD%Fk-qeNLycP3asJQDoVv{j zApc6oEBn07RA1nyy0TvBX3hj<`8EG2J3e!qP&TXC?k--)I;*FtF=g3Ap6^VbB%|8A zTQ+u0o@T{gXSi;-E(Ez4eRqPT$3MKvXj7=EGws5NRG7>jLCnVS)q5uE9QxIPP-&56`Axn|Djgx>WNT z3K6$=+J|NX20>du?}dGgy(LPJnm2Zdrum$2MyX=z7rG}{0L?DQbCvVm&XZZu$LJB@V1z3X$9ErJX zRwPdgn<)@ysR_vNNDx{-w^R>s#0S{8-Xikaz#?O>!`MbDw0p^8G*7q>s%|GoW-=qJ zeP!O}7Y}aZixg{Zs@b(nx!Q^aB!M3LJj7#=wgta(VysgPDYuX=LOkPa=!#pCm94?A z3(Q1X)POKqSL8yGkyXA)yr^O2l!eI%yvxu}8G%ZP7P+uk+254PVYo}{(YR+fYNSe^ z9lA*xM|6l(?mfk|l80C#fc2PXEK7qel#OH6wbciyv3vzSzX1j~KS!oJ5zds{Mm3EK z57~4jb#bT~39P~9LJ1?7_mm$O?`M)dl#R}y8D}~wmUvqe%3iq{?kJf9kom)dou^aD zd{(pbjgZtJriSOr!DPj#fmX$GAEDDzUIpr;q!h`)HwaiLwaKEW(Mtk zbB!Doj-y`-f#?1%_wTLl8eL*kcgHRlTJbRbf1Dbq`(`#&NhVuLS17Xk`7-E5bcUXi@nxVlF zExX7RjMlJDMv15|n^+{m0FqGZ?H{y^{YlE+P|=sa-20#ZQhIe3-iJvcVR{Vh#tE3U zeX00}7jk_2+fbNoDJZ5B_lCK2V*a&(eh3Vyi=q|+Ne~v1Px5>%^m|U&xq2x}Go&eg zlNJ=8j5vO*9BAWXoy}VqyKpkiAL)vw9*)dCQ{fCO4V&l{3eE7F_cpqBt zAIn|GoMiqCD4<6PGCgGZMprsW(%i``%z^#3;f*EGR>;UGwoUd!P(`@*%7eEc%RgEs zw!03LodnQ-m03iifmK|3{$vVQuhAy5fwSHAeq|^R&R{OJso|>VV{xEZ&>owlX*LkJ z)lE)4V@3-Hf6Z}6)KdpbO8m_dIA0Tvh4N($t1&{nUy9 z{x15y8H2o=RNRQ(O0X4FR2>5CX~}~74akWVCP;q!nZ_GEOl{EW}h@c?~0KfyWW9EnNy^keDdq3^AepvK?-sx z{A<-QXff9+B`5jBXX;H@micIsEFss;X`;vcot6O>oL7g2x81^ zvHg{Vom>k9u#{<54DqUqN|_HQk*$ z4|}o>T-+e`bHgd3hCE^;Z@|N`56oyC?^!Qwk5e_)9l8t{e!8N_%TjL$*Yqt1WR({} zs21t^rQzLt9RF^_sZw}+6yMy^q1#4c@tw_HQyd zVh`E~7?X`_r|r!tA5zFB5?q>lw4sVcrfO8fFuS7?*_R+*Deu{n$e6=H%Y2etc z({%0Xn}nx}r0#em&LvX^1Yfg;HeyfT;?(8*B$wq8^Dgyqay+miuVu+Eytf199xi>| zg^~83*!07aRmUiRwSBDV4Y#ghwWQ}-CRat?P$if&G-J{q0IY_)2y#SqyT1wm7QaEf zU)}}0JP#y8-sT&^;1?qL=3)qhTRzq|ElsZIzE`TiRYW?CtJ>(#%~{9~_pG`BVUHb= zRg$J&6#GZkl}nIN3?9zSp)-YMCC%kHABFm5<+~SYmfDlAcIC?lVn{Nb`d-PX6EHk5 z8!BHUo#D^a$e9cbu^%e%K=S{OFQ$)jt|->zFTsf}$@Dpg(~&P_N47x2wIeN3uIC4F zZI2#T0gbf;RF%e%`QGU{L+&y*>K_8zk8hcsU&44z%u? zJoRc~tYsEO)_8nI-eX|VgO6UTd*aSBCV`9B1G)S1EC23s0aS~ zsl)XJc@3p|<|O)qZ5o!HWZc5y&J$;1d6p+tAIdh_{E#g=I$A;&XR=Bo`vx7(aRjxe z)l0)?Frxb1gciXReYe2Lv6$C?WJp8c3ai9ziSC~l4g~31LpRMGO!&4Y$*X!i5dnNQn9M z%>>w=M29JVeo|y(5Lz;t;>l|Z*)CwuV$ZV`9jWDCX_Noo-A>=o>>42Misg%M`a#n$ zgkR=w)oqp9Ys>I!69#)o1f9Dj)3o+Q!dShkqZI=v5cuT(^y&wQ?f_J8zh<@FPX7H@ z>wBTQja0(o?RQ^v^F#Wa@f@$&hmgn4r0wroWDn-rbO`^VI0dj2zFLr;=G%drLU{C1 z#jrrGtvLz=r*OIv8O644g>6m^nbdJ@>U&bR*3J5)>^1JArvZD3*SaF6)#<09^0LY^ z17L(?TAVg}*-P%IaxQ8viL6kmKy$M3zwmn;?Nhgv4YtSRvU(l#JaM8$33;weu42SE zRNWnn2Ahhun|&ZrTRA7OK$cYlqZ*h~OKrcYADK*q)XN4%Gh9T3zf7qfB@{7E;P`Aa zR3DR1O>?Ew;yQu36$lv{>UO8FN~AdRXXhIXURH64+a4~G!FF|JVqYlP^*dUkQC`Kk z2SuB@cXN>}^&NIG{_ehUK+n(*@?%MGfqyT+yTj;_)s}$>-|x3i8%J($%U!PGiw9SE ze0cJ1+kMK@OXK1J8oYgDt?LF{M=PvWY3XuGQtB|B^Si!@d`vi&?lInbiuS*E3T6Tg zvpEwb9r6u%E=y8p!4H-Vc$+*!wjs#rj0I=56*>pRj#&P78k((s0u%1Hs@wWDOU&SC znC|H^oF(Ex${gg7KgqwQFoT- z`^s;nB+XFo0;oh94(VKy%M{&ls5C+`Qv9Z#ZV_ej1kQ!CHDYN&YM1ZHmfHN_hxGov zwLV@!n}fTkkXM3fi@_nW=K>zZ!7>#4$ThetALw93hFPkZ^8P}#w{2iJID>^SUrbz#EjP{Kzy;E4 zacvR@647K+g`z~RL$?B*Iu!PKN@-}=k>gvl`uJ?tfu)GbjOXu_vyB%mR(cUc6_Z6b zH5Z`I;;4sOXF@8t+p6jyX(RPi>?D9oH!%sGBRj<3*q4r zcQRioFFx9#<6(v71@YM$;%NSva5>09wIxJuJPBD-W7j7OMU(}m(G&#Cw~b-?EkJyS z1+H?9|1JnlWcl^FbPw+|G8cE-;X(d{OBKz;+R)E)m7n*}(3$M1U=~+%qKc<|Sb^`=2hMnr zT`Wjoi5})lgdFI>Ov#djL}$DE*qhZBw|KbmIgY?@v0Y4z{p3)-_pS7VCB1y!=QdFu z10a@lMsvBhX^!}h+FBZkih*C_;*-FMQ=wweYyHIs8_k;NOJ%qCV_Q;`&cQh6vT;G9AH6SJzD8a?^rKv#x`?3-Y&H&vLyK)+9egVIr@}cZ3YA=Mj4fr!kx(AkE_}61?$R?fIGcLE3vGm7?@3BBc)f_! ziLNpMaEqk}Eog}4Q}L!4q`p8h$Ty3aWm}4@laizqd8BF)kT<(k;rYCV{X)?!q9}=Ys-W;LWvXE2-#XoR^T6*YUJrL%tfnwJ2uBTR?Hl&ne~Pcp&aRM%tzkDhlsG`>N;a z{;8K*$k3J})3uwW&!40DJQS`^KzOAw7wB^*-_ny}wAg8RK^>(mKVFN|D}%LAEy-T2 zJt+o~D8H&^aCcx`DZVl~sboTE+b)c+bEakf^t1s>Hc`KOxR(0Amlix_1d2GvnV?!W z3cC2foVl%u4;ASvHOh0KqJ>>I3ZB(Xq@pJeqPecpVjqC;B*C)UqA89jnlQR&%E@u} zRt#$p#Unu+a;{Q-w41Gaob}{_V@jLq2`-~ls(&NImLP811I!R5I+jwI`3YIGy!PTN zXGE&}%=63FLC+RRiVnNbzPzhCNm{?Y&BUE7B(}QXB0GO2q}Sy;tATr5SF--LFORDB zU1XL=pjbmL)sQ3wbJ_aV1*#J;%aXP%JJ^tHrT%wX87WR~fb`}%G19M(#W5fW0b&+6 z)mXzi;mv393gHyd?!OHgB3pcBk7&d;m}BO8^80s`^YWZ$E*&GU zU8wtiN$Y#T?S|>u`S^B!>_<{U7uc(frS1gf; zYDEZ=$^K^j5#u{;O?ak!upm=B`w|70E!g$5+q-nB{zjyI)oM9qm3%j)1ciu0`NVp` zZt?F!0g_rA=>Dy4(*5e?tvmf2Rc~vu98A7&OhsO|Bjj#hfqX^wEOMWdszOsI#uywK zdCRa1$Y7!(R49?Ba}l9zw!J+;h{C|W(8V$XKkd=n11S#0)$O!kpwv7uH$wh?JA`Q5 z?!T*b{V{?A$FqT%@gqihrHLl*MI&(|e*{kw3-UghO@v5V9yA>;_ss{*Iu5X-*wk#(|gsJcc3#MM&%FvA=B*}J6 zDEX$T`P}6_-WvF!Yp**ImqTPp)#^ zA`203+o%&;@5Lnxffr^ieWDNC$7h0?D-IzXOHR6Ip%Wq`Codzy(WD$TUhS&h^kO;Y z?r>%=1Vd;O&dOZDtR1}8_W8LG!UQ7kdJ-wI|K4V3XOl*ttLB%MY&DEfK15WNyFKuO zT>FbNqm`4p)BD~wvRpx}?XFTIvYiA9mewOH5n*Q%^}|k<^>B~^@D-F27GQ5SenIjI zF6=!^7MoizK2;@cbP$ivyuU3pkz!UUrzv^A&N~Rot8@Y>A-;0)e!T2pIi&GR#^VjQ z?2EpSV$d>QC*Io~DLU(#3+p#)&Y?;Iym$XYFRp4{E}D8MxmgYb*;I7+-hi9F;+e@p zycf(+E%g^18IO*g_O+z`YqXxyg=vUec%+@L0#>*Cq|CFOWK%o+${jHaOooZNw8mG= zlP{P)WR4|0KdN0DILTa8(+$6{Wyk`DEsdtsP*y;k_3a#*b*#f*b8Qcu_&p@;wWE>& zgZRVpJmYN^)$!Vx{zvQ*rmYX0d%GCzqAkR7_r-`=1dnbj>w$t)2S?eu46td@tm4nq z$H0&5Y;;pLnGT~A$Wf@g8Ab|9e{GZLL?9qa<>r`oA74FBo6rFG=n$eiLS;(Ddw8Dw z%x|3a6Ihhw2BhUXkS69LzUmV(ep5f4>QI>bT{Kx8gbnv13LiGZB~_gk?d;VtofD3c z9LMOjl=b#iYsSyAc*K6!jdW1m>WAMth2XTD*IcDaCL&T4t%^$DML?o8HmSk%2`U_T zm+zC|Dow1Vv`7nQBJKvZBJjLYN3K`&m<|__cL{J4FI%ouUXZ?SD-WuuCx!g279GOL z!QFs$hS1QPeZpl7KS@yj0$LUW{P;EJRODXES2v!E$_pibt3Rmb)@dQx5=A@7l=&`7 z=yS!MjEQju+ZqY{AnrhYVA+aS%zwjCJXE^@)EMCw?Yg>&{!=kR)kk@Oq9j_!H4n@? z>Zr|Ab6iOvmf(q99c_HIeG%sWa#H<(X7?BzH95@a%*c6Uq1RSJKM8q=Pg4)d3k@0fGM3!I2=99`Jy$FbS#-=|KGg`a9qhc@iCQg3YQGJ3S5$8fRwYKBtJ zFr($v*l2GTaPq8d{%^0wJaw?LMzf2?2c9vz`x;~32`iL<2vf#J-+G;DYc0^cC%^$C*d)k#DZg@Hk6Bo<{7 z#Z&wG3$YsnVKS&9%T-_*L&9*yz=~=J*QVDj-vFUK&bg@xt088-`b*;3RySdLm9HJp zCV{l%VHjO}U>MrrVF2jw)25p75n5ZNLae=1x!XifugdYO*cob~inu(-Y2R}KXVNZs z4`it&XHSSCYZcy_5?|k+=s!fI`k3eyR9tz=0MPjvAy8Gkc~M;F7dSZdf0*8b^tH#GzH#O9RL$vdTuNBLH~i96uYA@W zWWxjB5d60{j36uqLJ|(f_yK+2P^;vVvG!)c%|7%ITTU4ssQVfz*g?~fzOkX;mC3sDvcQrEPm)Iynfnf#x1CKm z&~Q^OcMRZ|6^q-u@7NaTugv>XlmEP!S2;lePw@}LQ!_`n%!}_@q7WDK4{+K>y-JA zV6pX#Od=Qc*_Ti!O|u4mgN|sqRdv8GV z#wD&)SdC*r2eo{?f}wyax$3z|GU?S(iMr7t*BzpmdZ#BDgzUmO4WsAPI@l|F`^(S0494NZ(YLJM&{}v zeViYGrzBAf-nihL<9^g3PV(8sMT}rcA_%x%)3RM6vNri)kB0h2_?t;$UHUSjl_RER zJ|&SrB+LXe2U<_d>|GwCdwh!Zp{bfgg*j?b929-IbwM(nVn{Z|fvhf)Ux)l|o(Y1q zE5w8#s&PX@OlbvEvBRx544DB}DD-#~j+tV3a~msRI0xnQm~Xk?*h~mRNF9@7OP%4a zn-J?B3@DXEOskS}zCc(gRkZ7^((6q>QAo{t?GyerEEozNeMF^JWAs-yAr|zQX&)Ep zunE_6D|9m7x@1{wtIZ7L<__L7en=Jrb|{Et)_O0?4A z7zv@dE`F9k^rLUxgOJf$@=W78~I!e$N6IHCIlK z>n;tel!6USdMNn_Q1r1hEwooNr%nJ3j7 zzs2f^uC5>{TL+~?Nj_6xPAjM29O!Zr`20 zdLabTj$ci_xjH*$<)hVGe+=l}Drm)=I8LaKnFv1cP!nqm+xqHB_^e%o?nvF>yH?;E zJo_b^91iIMLGpVf=cUW_#c%4f7LbA4I5?JJldr{Coa4IW71u)haqPbag3u<;OV;dd z7dT=z^^_0gd=qG50QGI`_CV4|h{4pSV8ckS_zcs8w41gM@X>7@V=c|m1ovrDz=en9 ziUGX(&6<}&a<0F-hGVKUnuS&y(BKXC2nUKG+^iAR#PZ8&m1N8KC?GW|+rLtm)4ns1 z%8^Zf347M@#cg&>res!R85h_>7`VC|?+?s>{WDzucfn@wY}oUIWQ%l^0Q@>^*7vIt zEiN?c8heYqCTy;7Wuq_*@wYtjk|4XPujX2tNP7*RPnMjCQ7s_>=m4l9j=bG$y1FE5 zaRqMEsWcR20j+L=;-iMxqSBvVBd{P^0&Kq>dTmy8)Mzm`IQUK!J>ngr?wgE^D1-kc z<_+{$cVgLE@+gjBTm_w&JX?|D{6bWv#(qn1{EUY~-W>q;E0D$^)%0X^(k;a5dRkdF*K?EKXM%G)#4#5)nBWkr;?=chCY_EXO(0wqV*kc7pm&NB0;*$D*t128geO!#x_h z?;^lw$}T zctCtdrwX4QoiVEtxo+2VD5C752ALJFgI$UtVNdN%=x61lOOC}D$tw5Je@vaXolUJ~ zRyy>JY>LTsO5Ut)nirW&`r~;or0UI@LenJQa#a&Q8!YRnJ{StBl_=8vHGIb;;d^iL zA@aQ4E-stR!2gzbI1_bf`)6^JNmUuW^IZ^XQ>uUrtEs%?vnQU)9~y&mu|I@bqOrup70Xj>|8)U>ref1Y{3l z09qy7a92x@u?YEzXEsb7^Q!c-wUGFT5U3PS$UOSbaoy2OB9W>xY0on8@#MoZOVq=5 zB&xfCUE`0OsA2qxMUiY(2am!mBNj9gf;{WrUievKiH==98?+YGLf z$zA#Nn)ZHkK0!LOZ;O~s?{73E6fdH8S*?JD$yx<+*=c2jvbZ%mO&TsZH94)boEMRvgjF<5a5brzsgt!;MU@KlzsiY;o{N zMrHm1GJ2vFB76{Uup1*dL=F$|qbIfN02~<`lxGm$J*D*dzCLW<9vsj0O8pzp{Fk@6DwN^_^B zK$;)iXW$`y#5LH8xqpqB?rQ*_`K2paq&c0x8lk$n%dql<3BqrDNb;~o;_GEa+|^pK zu!fkmu6_ShvtYd~^L-}q6Yi!xxtcpt_%fM1%%GyDlhfu%T)>&UkF(;P#Ymmr5DY=| z?X4aTTE!BE{Mr$wWr9)2fL0MdDN=8?u-esM_=oj0n(d5d*&%fHHcr zZt!vbtV8j$y6F-jQ14s2V2M|UIb(~nP)qB=FMAo4^s=SA#&90gs|de!waI@6nJ_FGK)>dY15B-)5=+Z(3v{+*$AFteP~sv+3GlK2kD(aD50}Iv zo~$c-w6AaR$r*?U0P}Rp0~Ez>2w4xb=v?wqsyotv=B5gU%W}({-gxu8Q!jAl-%&z{ z5HT}`^y9ON#+)F?o|Jh6%Lf;44GCAT8;%_Fx$cR#D)tUBe`L@%t+JY}x+QFJqoXdG zsQj)>HBpYWRHT+~7&e_!;hwigFEWWeQ-+yrFNrRT?5W8MAnz}JhX>Kyz zY#aILaHgGo;A19!ze#f{Wji}@BeXSu=3iGG>#hCGg{OZDEkh8%6i8o?qQlZ8!`!B) zW^`&=FDE}D4C<_6^CGYT6spooC_#fxnV#(dPpOXE8G~HAVwTof?upKn^ zV;>AD{cjAD({-pUmGO;a=O}@EVLZbPe7fDRuy?zcwsXKhGqWtQ-a}t4-s?!gX zqp!$RG!iw;%VqqpXY&)gL;7Ls)!7nF+gtHLRkzlYbg+iaPB;wM@2MtuRBT%$6mWyS zb>#{@8FxS=OHN@nnb4o?upA{lgBtIjpP1>6XMc>h*c#sWBV8!De+QMBU@pmpk5M(5 z#AjDViw!IzVp zUBqNt4XWgUB3;AJ>hck`P7=hlh<1Jvrn;Hfd4lR<6mkH(~<< z3VyPF3i>w8N?um@zd%zUD$E-24(hD4W2f?G@jxG82^y)tUx&S1!G+iqE#yYalPCSx zP}LzqFhA~LV4;*R)u`h2$)Tbbs&le&LbwpCT6vh9;J#Oh5r#y+h(;xsU-y{|Gm(6n zR<<|7FDKq(&Yc~0e@Tr53Kx7v%}KW4VWHS|+a(S?Jc1J3F8e)Kk=C;%HW zYV>p1kh>tRl#xil%M|chVdzbPt!?4CQsNuVlzH}jm~(2;UN!R=VpgVulsz};wKQ{w z*sNP!1pj`1!M(_4dhOpyRJ8rPCkUfbLG736&6q%k>g)=N9)OYidg=kN*f1s}fOJC9 zD&hP?s%-`B*Y9)81f0r94MOt1Ro8e42x8dS(n9dywleJMR%X{CQfDoV^w1Y4PpEtNHLs)4&>lJMJ$3W0t&vOWkq)N(KQ5eU};3;W_6KhMd4xo$tR zXIdMqS1bSkI1l6mr$-)KejB04d?F|zR>jezWA<_!toAKxpBr|ApP7e1uncI?4?boe z>+HvA#U{A;p|t$h%{;E$!ktS(T;xOl?m&8w;yPuh`_TA4E+n?;j$ zh&Ag|N*=uDGh`bN5tH&XOrht$i)+c5>$rZ?qoi-z!d43SkqN3kIR(kG?g$r)zIerY zt6{nNrdBW?#!dH#xJD3SVcPNne>7LP2yct>et!nzfCZ_mMFf_gs*PS;Xo!|G`qIRm zlj-x|MP-r|wOHD%4*K;Fr+sBpnGmgtVtK~5eM2w>#`we%y-V(il4eiS z?WPqf|HCrb*ve(x+H;axMIU~<~iFgYe0Dz zP8tz9cYB87sS2#n7uU$Ov6z9nt_UYIija}twfJKmXW{#whb-n=t<_z7cw|OPeTUB0 zV8LjzFJ$PksIx$$cTiuJReQ;}1o)P&EZecydZ%wefXqtlbsRLH0BuU<0L>sNj? zS%K6ieUnf=mE83t*=+QD?9}^GE0)j0Ek|tcTD0pw^&&kwiV5~UfFXq3YqTbw-E&5m z)0?8He)3E3xa_hWc$b0t)hqJ#*utlyn*Q&Pm@f zZy!iOl#FzWkVf3d8Ujnf>-U$bwgXs7HN~9Lt3>*#V&TjP<5FbR_xC0aT+`1!&^eqG3 zXz?;O7ew7T`UZUS_!Xsf#;|nfh4*ZYqfHA04ILc7!#-M=ZSo*g>fY>zdI-Kco01xBx z_>{DW2V4S9x(=>QK3H8v&l9yOr@$-#ME=uK&s&$YR5)X>b8GPwBk9@A?Iw%66l7fW;21MNg>;J}mbY17jqdQs?DCio%27w`xu4K&i zmN*rSJ96f*q-+|tZrss77W+59DADrnsL7(H-(wr*AuvAIC?(ObuiLHwBr%1C^!EfZ z9)Z^H0bfijYlDZf3~Vc;Gv#T~zF?E)Sdv49o{5CzA;k21|Eah2nSs^WrE!PY49&WA zhG(REF)T_F?$Y21L9W2+)OerJ-8t%0O5Rt0szislVHj#JKGj6qw*_7xh?;@IyP~ z!}Vh9nmK6$()r1+80OJtB{4&2H|ec|X%e)+c>WC0>=p|~)!Oie*1Mjm8ea-`^Ynh@ z%H4Emg%D(Q234*r=n)$%43=96?_Ni=zjL20R#(p0PD%D zu`YWeN#y86VG)|K;C4?1dN*@8X0lv%QyWv_hLwH&D5Bz<3~yf2?Ju}ny=#oXdo z0j%u)!dBZZi=OgewQseN$vlC|Z?WB5oCm-I@P?8_D|kYr1EmJc2buhf0C*BtN9Jo^ zPttMIsCSasjwYRiH9^;W#pk*{y^m)x)~VL6%O2U2uk-6q&F>6o{~T9%ijVW|SHW(%R9 zh|LskRiG@sM{WQDLi@Cp_&;#QXkd-G3x!|?dGdL(`Ejxcs>96kEVh8=H~$Sblu#Ew z=1frH2&9TyT5aG;y`BH8_?Ejpic=f!9$euD`N5|BW0lx5s&W*r7y-&|>u?b%yV?l| z3rGcJDl|b^+Lef}&UfPw<%c;Kr?FjTFx{4K9fuQ0uR}MN1Vog>0dN}`q>)8V>xa4= z=yCZ(M+#d7pixTYWMES*mCusWBz>nqN&Q`N-gHT zuP-py30j&G1-a{SSqL*mYv2fAhwjN8!U* zOi`>l@Ob(I89z0{_aIQ85Yrly2y@=qQa*3iH@Gs~N&(msc zO71CD5azsN+Do)+UbxpZOW5@S)0`(LPbE2$Qmv_2nmS6&9awOU_oRSq;k9KOp@VRs zWbJq5PK;m@b4k`YykKxptt?2kt$PlC5z<_o8&7enG|PBTtx2aM0n~(RZa^(oNq_(L zAKV*tsFj*{HIN@%#%pjpH>ZlGMhZFN$vrg7=?=yt?i<A zDw_U<{9V0z&!?Us=LIZ7l$2LWf_2N(l=j`DtsN$ zBX$5R^6cQm^@W)t@C#QcWY3$&fG$`X$gjWHjpqwT%RO>CWGumy?~!UAZCfYz`cy!a zi5MBb;yfbZNb_@Q-6P)69>`k>_1L{(9Qh51W^eqAC9CuJ<;8Z;nO$2a6P55Z4X4VX z^LXCzLB;hFo$ItY=#)3)QfwHm{5-Z zIuml{G0=_Z5CkVfmqIrUV2$(chjx3>E*M;2f4e{OpzXC{=fwWiie$h#@cL2sC^8B` z&{s`(TC~#{pPbYl6{QAX-_=6v#7gI*?m=c&t-QK^*Vbu%yjBbvx}YPMh;kr4(=kN} z8;xK5A6eR_dS2AB4V2_ zRcxfwq4PF@ZRk4v_DHUhSUcF`+xm!qFP5G0*PA-ZK- z7LmB8Tzrgzi*K!KC3o>K-BHPkNjihJAsQG`c2jAuDhHWAdqB0`a1);MtY+t(s!kna zSlAMFT{Aph2#Xt^62fb=hBnxJF2W6R!(5RtM?q)NK_7)n@V@zlnv5TX_J^cIEc!nj z7HwGLPcz3Z*M4M5oo3}n$oejTPAir$efF?gN4UrZg%AKc%)P`{miXL`2{w+tnT{YrzLK;m!^I3pSFn2yasOFcKcC*dD<2@+XPeYY8(NR zo!Ty0pB~Hxv-h%!&%&&wEm?!xO7&8w4&1C9z9d91o-X6n_?%$c_$TH*{53^f!MT zl&;-`-p2XdHi@HlQ214eMHcp?-SMzpR3P$xZ;WO@MoKPJFv((>E=-Tv7o))cw9C(G zB`$Ib6#okdDP9*;P>=^uWqSUxD&L6{wx8U+jCGp?gD~{C%$INlfkA*7*NR8r8IP^; zV9(uva`jswPM85s)RaKwwstoF(B}?Vp;TIRP@kHF4XxPc}gE}uuH^jXR2hP#< zZ@Pf!jE!B2=AM8S-Vg;XZL?bAK+W>IA>jz&az+MgO$c!KfQmWwlV_!PYTI>AFC5%Xud|mthIW89Y!#_JcFM9Bd(D@c8yx(%Cp&`uyhU= znczqgkVg3%N(U>yr9S0wn0l4+^$d@>M;4%U`;o%`&vpX9p#s?47$4=u?R&jq9nKV2 z#3Fu74-sU$^fI%#>yZ?!$&pyKd}86No=hH)sW{|F+zge*+2zx(<$?% zfwQTKq!eGq!&KoF9NDg$5I)7TAxan%JcBzefC-pL0Srset=QE=f>;(yWp(JmVq%X+ zSg2p$yB>**OYgRZVj!N3CLA5k+Q$gU<|?MPcDerGcxx!udOs!x<~gy{6v*wUVH0=w zhpUhum`W`O8WoONk-arGVHf4-yskSCrnXf?&Ascl6qep^nc2HvI|8&yO+TJsbFyq) zrfpIlfqZoj9V6V|;@&aM$r#(eaVtp08Fk2fOX7!4lN|HpK6kEw7`qTK@i^e9*`oPy zlTC$=bcQ&Lg4-v@x5R^NA{@v-_1lTjV4-Ts$=g}~$2tofB${Wtx+K~T0;%Iq&1sP! z0H4U<^r#lqR9%H2ergaOmWnE%^4@4F@yyFqBO0_Q=q>|!ooN;|%YOxr>G9^w)z|#! znR%a36Vy}-dCoo_v*|=JMMLyldJ}rse(mX`K?gKjogSan^SXLB%HHmxZ&DA+nX)u~^rav;nKzh% zTk$V3yx#-9IFOn+E|EwodRb7?nimDPB?*;{U53GaG_Bk!AZE=kfB);{A~k5c|9x08 zhy4KavIHl$fVc|@L{ku#!Sw?v&xo?!o_V81X|P+w=Ql-uxylCVBY7o&?l~(CBB5ZA z$9E9v9h6~IC?yzh?I=y^8HUX3^(4$`U&pufYuyZ3QUN{dKy1>me=re=)WfCjM?uwAH*i3tYQvlc!f$X?5v;HD`R|F z>}C$pv9uOL_jRAH(ew%freQjxcaYZkY(soCI-wzY0*8IMJ1H?y6IFL8!JgA6$f7xQ zZ{CAxO!bYC(70;PQ#MHY?ptYLwO#3MUVgx0de~i{j2A`jOIbSMI@{}+M$Zj>A=sJl z=!6oJD^R|?8I~_6x5CyhsS&!JSplnHxjS`IxMA!^)cv1z9@`Jip}L?KU_H9#atVtj zXQSjclZH0gFtAXI*UdCEo{rN5u|mBT8Y1FlHTW=X4p1TAR^ty`e~k8%gT6(n(uC-Y1G3vjlAxZ(DILOpvgy$?W_Wi+FmZT-*j&F1Wbf=A!oN1w zZ^+=@Y&wr4xr;IgxOafBw|1t~YwZsXpy%9g54QyGnfw1Z(r*%Eb{kHagH_DweN($5 zmb1gZsVoA4FJxE7>#?$NyUkK^juOoClOj`ZPX)2xXl*lmKHcUBH6#anxuC5)xFNll zjVj@V=R6LBvSrnuyWIQ+L2Jl=>f(Q`$vbd3{DN@(d{y;QqOuCTv;uO?DM3p7U#ewJ zsZ`IptV{*bmVzL3!Pfq#7UAHNCZ0|CEB#wtxqOO^zBr89zNyz%RLRPm8G;0A=CFS` zC+0TXONU4AA2nz`-f6_q+g)H$jw3MX5o9aiOF&9_m3JNN_=c9{w&M7V!i?Y>%Jhb& zL!Lb<8eiUi%++fS+Xvs=51cCLb0dhJzhT|R=aJ*khrM?fBw~ZuS(_TDp zo{z0|f7W283V%AhuBr8DZSkR+;gcYi&y0`I>;|IL5zmqJmTgSSJQ4NUuhM8-@}nN1 zv>>Md>ah8V(Qx4~Gty8fO|wRZAfL-&Qr}(rdalK=o5+o6*ObauPDU+8wq?sSiJM1@ z()!yy?@j)3Z<|qzZUo39M<+uWJtF zH}}_w>MQ|cQi)`7%yn($r6_iwcDDF;x=+GY=)tExNUY_{?WGE=7ApM0Sy>Z`kprL^ zH0v)v-Avq+8B6bFKsS8^-K1Mb)MF@E!yf%h)8VXx?xr*H6LglCIM9YiaC7-(aXgzD z@PDW*%ld`;{?Z^0P~&Jg4B;iA^0-TQ`g)jGt1N@$9eutCG1eHuRLLh5w~PLxTZja! z^KbnwgTEXx?;re-;m!MDaj&MTq^g6Hm{C#8A&JLW-)C(W=hSVn3Ym;v{qjr?`rXX} z(*g(+>V%8ffDMdc+9#x{hcDk&zw_#^ovC{8Z&mCDfM#Aqj*@Sl`wC=8v#iei&qj#A zi>1{ozZ=f8-KEKCJ&D$oW{I!m)w*Rn#{l)nz}kHT2rMWT$I1bVR`F~fG_FFa7)L90 z*@*y%R*S5(XXLQPMx1*pU|ASdP!{*AoNUrYDtDe_q0dmt@sP~>2UP;2`q)0ul-CJs zYIu0UxC1Rtye~f~f3Ot)?hyvKrCiV5B^^_SauSJgQ<^5xeIc%SB6%i$h|FAwe11rlJnMwI=q}~vxRHKJPLQWfS>3m=b z#if_=Un)vHdO1D1Tvj4#>uzO|la2F8zFelp&EkwU(3wC{QcO!U>zN>+E>)h?gm3z=?8Qg z9Hw%cN7;LP)t^uk%#$d#kg@=R$zXxc77#}Jhh?zDvzapzCBUOfNx{rya@8D0 zYbLmL3H64+d+7X^iGo_!d@}-Y}@*R>t@tX2zd2|9xzt=LMC(^tYZ~m{ZlRb3?)_ZN-Kkh7A8^gq2so5NAw~-x` zJNYUQ6%#Fp6y<7kWi@cz zYPPI)^qN$-)fjc#70gaPooqejUbsGhp>Ah_(1`xIR)WyJYfq6t_&Qg*BiAr|UJ$ph zs1t;V%>{`v7zn9Yq}{&zt=@IsxpF>ReB;&9rt!5!REb~x(kD}3T6o;;&cD2vC(SgM z2w%gg{{CmM7@QOM{WUw@wHxbl*(Z?U;RU0`Zz9>=J_N9rqxuLMuZpw=zb4BeKapY) z*_%Yeak?k8DK-DMDwRa=JK^rc^m9>( z`PqY3@#>{#Bc|9%Z=YFYnEcfJPljC?hcy$Gv`+2miA@Tcxa-~~!n?7-B}~D`g#;eu ziZfzYVY!8KdcNOp+XVN$B>j{=?qrHS3>yic@m5(5Wj*|jheVwgNmtLSR3ggIP3xC) zh5bn7_^bDvhLY`OR7HcZ`?WYF$26DQG)zAE*rGML}hIHFEFt4bw)Y$Q-_k#RV6myDt z_I4(w656tJ(`10RgJdt%-9j$$?Ih-V=aIhhXh}3Ga9M|AQZ)jt$KCyY4eT{hv;<)b z=9-sp0mcY|>oGd|IIt!f9e_>Cci}CgWCd(9zv-mf%xLy}eo^dgC{PY2AegLvC!xd<2wEBB2D**3AIpX-0z9Snzw?O$gBr|s(oJpvUWSN zd#y7X3g-nOs1>$Dmi*NGL7*_wu0M2rq1#T^tw<~Oa`c{J8^+I>+Ut8P3^M-8Qa25- zrD)LjedI)s@qe>+cjC&B^sUXLVUMJq&J|XVWBD>bOn`eNvFpWcyf9~%ACS!Ga@bM^y{RxH@HY&#Wg$MzOnReu1{gPf?+aH5|7v}pA&Vk z4^QtKC1zNCfRtVjeg;Vsj^)78t)6NyUw3y_(d_50uem?^ENc}b|j$25S zJ-&9xskJ?LGWh-ejLn`gCIgFV%gQlg0H|c?g{wW-d_W0fGO&2Q9nzEHd zS!Ze(`CEC3fJN0da z)o(k=UiDzV9RLs&sA`36cxDuKceYXn!}DbrPI?SWNoBNGH@3M0)=do=BtOzL41E*O z&8d(w>4k`lrved(m~5AwHtvm@crn1^hqC{TT$@QSvA2 zBnAbaZ^zjP7;16wW^T>vz*bOW_U(+k957b0zNHldrDh18?0q(mhf&99hgX_JnutN9*l98A=4jpP2RN~R8OZcgTBa<%PHCe z-HGC#ZRs5Ov(&;>3QK}xBbc{}6sF0E1gxCb44uQ2C1LCVH<~_rFDznyje&<|w&%&Y7Y9T~x$_9=} z0%4tqa?SM#j&Hm;Vf$aydh4Olbl9kcN3DQn>o~jucxWTrpaRqin0RNFOV@MIU)@1x zz`O9uZHmFPUtU*CkF$`|o^gTOoNVhWU~C2ZD$v_DsjhpZo$9awi5}xSj49!>`+BEx z+1(_K<$kI~WALKWPhX#i(c(DX^29)|^QBB$$ro=g!b!dAJRw>4laOTJEq|Isp!Li2@JB=49 z_w;K7s?93bI1=m1CTb0nK=yM+O1~k6RwNt>jeh3z+s#@lXzpL_{j+cEasz=ROmST5 zaBSC%lUJEz5*M#`mXUB~p)j80Z-GZ@h%XRfH5ZV<7_%;9~J~wwodfM6MnK1OD>DPWI{~%7Dnh-z|V0fHBDpxIG3)# zcNadvj>YnNWVj30trCd5*8MS?i~0$80fE%vwi_}mvJ3f%&xT%0S1y;=ApMqV7ZKWR zg>jpOh^1ZbAxhRGw@vG9g>LtA6rc&zGrDC`H^@KjyD1%JX=MYLZOufBxr~Aii$D)Oo|RjHq%K?~$eIDYj%+TQ?$Qg2GY-&nA zy%iMlmUgG<-BGaZp`7J*KFrgAH=LXL*ziSs25ER3}%TVVK5|MO=^U zV$XNUZTtua2InmVSBoBUO~)#~N!9YDwMrK$v=Z!A`ervQw8mn?1`~`Z^O6D*{v_+4 z!HYQI>q@B8wjnp&ktL95TRTpzpa{rWL~G|BsWUFs{glUO4 zQImHF(2WPtU}NnLpE21O*s5=a9$)or%EG@4(oMXkX9-a;dkl^4A3GND_zu(>s1DOK zBp_F*Dmal$4I#!lMm|FKZKu0DKw8WrFRo09$O9s0?nk!}d!(|-eC7n$tVC=P4O()s z6g2;dj84PHi;{yduC5FcfWrmTXtwFVtlI>;E(^SHi1m?JTK&H(GG&qBEWtD~8lYehiPdp#iS4!On zrp76zye~rjg?80n_5n!x=w``DSG*rO8s~c~*lTaao8AJ^shaFQl7`#(zGTu*K*6^d z#FxwQlafdU(`!XHsXPc&l>>C8@$+rzp;y-6Vj5~-9k)t)^7E|)H3Wh7K`p539ONI^ zOnsFxI}{c^`5$nx`lKvAkAvOlCGPSz1;OZ6`&&FT`w~K%0~c(=w6ZTA71r<{Hhl=% zISHfpALU^VdC+i8U{=(T+m3annTSq)cmMc3OCi>?D>4tlip*ZHkLyxPCT~Y9dU!KN zL@71jRnuM`GlJRkTnKM#@{RX7Qq^_YLoqaA-|)2WEn(t{$(nUN=)!3d)ZB16Q;d&) z5sSs;xa9`<(8l}7?Of)RldjE%puQtkG7~AJhX?yEWIL)qd^(oGW#s&=x1cxxmn|M?K&Ajot5kba0AWG)4MAe4~@?$fdP1gIM@FdcEE5=q()fR^=S{tCtUT!jM?Awh+Df-v=>`iudx!_0OIhBj((>j(rNm2D{xDNP(|JNx?e81ly4U__!)ngp3-7e5)bMAd z-QY00*5&&@HXRm&SM09p>o`3CFw~CSR030*1ZPo3^AFb0S{z)KAx8Dbu%h@6+kRk7 zwnFxVJtzHsk=nX14)`(r51O@^{oB<-=H%PX09{)b)#)U-jQlEnOXAD>Lbx^aN}MkM*%3_uzVPl+LeARW z&wig*RCiF)3W@s3v2V>hMK%a33!4e6_<~R;t|4gwyK`w|c|+kp%3aqy6kSW!f#lJ# z(F+s+XWVM`r}>)VVTQ>4```h7jP<{9 z6=n&CWZTHqT27lmFt!h^UFT|IN^{jm$9aGKYgqIb+ri%I-~oo(PtyVQ=cs)72z&1+(tgz=Iiack=3Do#9R65CAC*oU-N9+IQbYJ zfet|?Ddhg}XwdLe&#V%50o4bUnHSfe~k8ZL*;`EO7*?S1O4U^nj>sIDE?*Md3ctu{zu^sE}RRgbg|B|HqM`sVkOgmnT9a?EcGPl)3PP3wl(QDC( z9pkqeI6OZUUDYJA+z9a|SJ#5AB__3`FpjMFhD~g%4-y6J9N2yP1(c}&h@S?s#g{4w zLV54NQa2W^ddMNU#QySuL?}(N!sl8HK@;eAQ|<(HpC%Y~6 z$}3O8YM^Z6?Wx;sl}5go12r+*%U3dKg;qD){Y9SEo9LKfU4oeIsP=m!bpA=heJ47vlEYUlZDK^P-|qh{@kU+?JfbL9@g+vU0pz zyVdgwB-#KZw3Bkc>_H)I202gvj!%f2C^Zc^-D^TRB4FT8**KIfe3wHAy4h0lo4LI@eFb>v;)AH=OIw*%*L^te%-!pba&a2Js9oI!Q6{v^GV=_^g7iTUB> z2E?dPKlUOEt^m72nvB-AVK_^m&Zncal+_pxt5dd`}5w@M6)}YF1yR=;n9IPImmZ9 z$jrvv5y%UHZBxw zK=7RgI-otN)BIB-gxff4AU~JUvR^-tVeJ+a5Bwu2!iXJ)$?&8a5wPfFK`U8FJu;+$ zA7Ph!6}sL#`FIx%z7TeWtZAVhqlcK z(rx+LMcQ3^!ct7EeIhYwzj6RT=%pEQqe%g|-w|DO$+Pg5O23vuVfN+0}=OSglv2DK7>XL7U0RNliAh#PjCRqcfwH-E`En@fL)W|0bx-tuA~L4>1X& zZ(|}@VllZ>{A+wc=xw6oOlo5w`UZ=pMI@iq+dmS`)7viPU=~LUJc-1@pF8lH61G;w zdhYxnKvm9(T^p~IR*LW}*vY~d6xdZgv6{QY5BUG40lnq}z>FoPB9ilm5H~HkQ?$t< z$)5fjJ;B|!KvyXug?T&sq?UB-qpRhXSHV<~gip*F0wz`3v(TY)uI}2(i~2@ziO+b( z6dE!vuK6Oq9LVTj|I(BmzJ5&2c`%*QduQNZDYvfo-?qCNr^|DNX1uuK1Eq-uAKPqt zbQO7#;B~@e+I%M=UVf&&7*1NPB-M0rVuw2sxr;oJTn5)=c1?U*IeYt)9Jq&o$jGTe zyie5|M6{|Kjpx5UUHs4$Nq0X<^~OeWw6u32MtORi3_u}hU>IA&&SP>T<=saLf`1(^ zCb)9<30u=OFvae_?ME-j`2Lsdc4k|t8VA&axFv1z-fD{L+Xpc??(?;KlNu`OtQ%8z z*#2wE6m}r@juo!K4!NF`OAp8O(WClSDY|!Pe(Je)Z)G&9(dQdEu`ogVMa}DT-*Glu zJ}8~=hWHmk=fOl3AX2WsWFZ=b_gE7d^PqUcYl><|lL97;Lm3sJg;xOqFWt;#~ zfxBasf*bmfBOg6|IjgGD8Y}>fX%O3{K(ix zaYC_H{>Wxli;y~5BD4wu&UO-38eb}3(>%{jNMX!marJ_23art;q>{hxQ{Uiz?iT9b zMrMqb=roxAD`bUc_q}B^!Wbs}Fc4bv_FD3iHw77NbMSP!0?7byXEhLKp!dfS5;ENp zxrn!8MUOQAV&$8({$%-8Q-og<;LPAnQhIr7ZYoAxt5W?jia(DmM~{j&WM1DtL(;M6 zE#S%OaN;TpAbf1GF-|imko;+2Kl{3pTc2%%^82R=T0%73CHwSgXC1Jk(1;m@y`ljH zmakIR%nX=;#&zVEW0kwqfU+sg1J=)rE}fa$Bgdxig>_lExUV6Fp6I zk^+$TfG5BLQ8lHe+y~Vjcyr;hY)Zg~-4J78+r0c>dF<*}EaM^@B(R*uD1>rR&Fzd- zwX&`s`SnE-5mjPL@>Lcn!gyEtV$$YkWNHebbnoJNMfv#)61g8P+g}_3I0h-uI?-{p z(y6I&`{Jyh=-!Re1mo8!!+ej+sFvN3U~b*-Jw!m&!qW z2|lyK;9O_5y$FGNBr*r^z(MxIxk$E9T(2ho;nBraR~GI&u`v2)T9D-t! zWB!U-U7U7qqKaHSfy*VMH%Su zs{NkYv1p5FoGe~E2Xohf(+^J(Zbi#r14=B^FNADtFvD&_w?K>Mkw5Q5=FJ!y1cPIH zqz>j`eWuDZWF9i|=RgFV(0oReEvwShrRfYTo3m_Bm3Y?Izr6-!IkA4J!QVmf-S<{8 z{J6fKgji72q?>+=heq&z4Id-aW~e$P2iASIT>JycGp8O#pvJMlWdNUEizviqgjaGL zsMCvJz+vP0fcpP_F(XEqTHukbPy564Vx|R=Rizd(WU5*uYtv(v?QHD^8yuadXcZYC zp?5`DK#llI%_G(8^{TzDpJ*8me5zJf#cd3H0*iW-;88;3Qp4`PugK-z$)}*9eut0_ zWufFY`yx`h^{*Dii5)ttdDgd!P`nvir849?hgZ5niH|xN?jsu)g6_xYx+cuaNO)IQ zGjapN;rjNS7T0DdeHo%w@ewNplK*N}Dw$}ri?C1OKflh{_j?T_DHZes3DSImN0m~C zU=9Uc`w9{^-pXe)jzX;sHY1~Z3Xwr@m=_OSj=nEb9Y76nWbZfroH@|~e&t~(M2$wb z^8Asc+;lr~=amPo?%WFqx2kR&p0Nc;&V~7SVUBx0%LE@hrn#H#Vmjh%Xm-lTM*-}Q zf}G1Lj{*6V;+ib)1RLh~Igl*J`^rvXUNHD^zv2%laQ;eg9d^Q7V5x>I*Cr2S6`(Lj zxP6f|IrYJcKuYR$i=zp_GB;0%w{B~LQ%x#nb`i<?#N|;tCp+YHz#FE_3>-#SE5ZJ1 z+&gj0Jh;EhjupGm?lY-wm3Y@6s%+H)RLYl~ms|~WBPuh0CK^cgm&dR-g@bMEMqX#l zg_+Bg-aL56qgR#aeSXn>&CX$H#qSX;-VJ|r=)v~`3cQ;iCZ$ui zeQ2DI4?WXS&&3WjO^-SL3fR2&mV+}z;fFVmBEGF(!Ix&glH!zvSO49lDW=C%my=t@ zPxF9gr*c#(nu-L%XabR1Nd(gNvgjLlI~w~P)G4B>w|fq^{R}YjGQciRZ=u4Ynt5K9 zFUs<$D^Mo+UFI~OV#}n)mMa{=D1L5kCsw?=F3QoaDYyf{9EshpxeO7c(1jh1`-EZ1 z!xy%4p=Bf4vT{0EYPN^CC&x4u*Dn)gcV+r?($KNx1k8bFq%NmY1 z;BIcng3AS*Eq$V`kV=>V?RpaHrKb}ncBP1~c)1XyBm$v*o}opizj$Wl2=%>9`J8p; z4CLC8Jqw_t=g~XygVj%X^+5v$Fj3T1RbRYN}8+To=GQ-aTVSl zuH*1c6XAx-JLpdaBG0K|_)M89y#&P+BosQ=b9d+$vC3JcUVi#=(B^1#dm=?Rz9AR8 zI!&Ls!))VaS-&>ginoER&lrT%EfuN0^JvKU(0bNe%3q%Xw50el}TAqbo^fmPQwxmo%5-H|f7a zZdx1@v(mnPCiDk@vhl<}+B%n&q~fh^W~(EX#<}i(Q64e=GYnd?0~w)5kPrfN=B4VG zHHcStN#97xP+*vbD0*8p5SQ9&W}FmYObDqa#~ox(#1B&PQEmKB$t%kQ_xCp}6h@Qy z-EvRRwho5v>+;xCQUmI%OsBU4=1U~dB=~d+_mtO~L&O%-&9EO3$fChidd zfjxTj=wV-k8D$AgGYb{A><0~UwpgF*Jalvd+hvVZS5;+%mrN0M{`S)=G*SMGn@CXcbf{4i; z&Lo}MJdz`J8oGI3H$Z`q*)(NU%;oiCQ@g>gd=PLV4p3rjvN}aq%^n-fKPIJ6!5>+yo;OkeT+Mde6s7Uth)jw(>)ymmDq% zPUogXkQ#ICsMK5Ac+ZsnQyuO(+|_@u`m@R>O}qD0f2DI5N8syUF}WIACo}%QPjq(Y zuNGGu@it`KDU96*(x$%B%TOFDLcpiZn&HRW?N)V4p0I#3xX@Q8QK2{hvy>;&#W-b# z-?hhRR6N_@L(x@le!#1?7{i)HHSkNz`Ae9!|GWDf5TX5n=+N5Wxp!70?1i~qVpe#* z8)GW^MiDtWIUf+BV~11yk8k_n!{xO~^t4;F?H##GAQA#43lpHCD;18+cT8G$Q0 zy;)JJKLU?#THz=Ac(L~m{a+OealAE+f7?y%4Gjiws}~2+M=vD~6`(4y+K@e}v#lB# z#Z2oZO6e13KBtF4**sI*^FWdd8B5H3BiuH9ktVeJ%(YAk-_VRzu^W7yI%}8L-55+4 z|DUZZ7X*ubb0K+qOH>O(iq5Gx55x<%y-l{wzthv6b{74>3VB!e7S{ zG*YiopU6y778^HMa#%AW?lC(icH;mdk?&^;rav#{M2zjS9_yN)`Qu!4FZU#zydK_> zJ+(oR#G68GI}&g}`eLX{3eUuViw78^_Owk^f^C+0^odmS z&L{PvNPt|QjGM@ zyq4CO&mK?=>*POc(|i<}!(ddUHp2NVOtV!MD7VTc#{Muqs6j1avT5Ll&v9tqd}Raf z!f4cxPuh~#b+ZUvY2l5m9-lH)CyPS*`PhNh&)KE0xTmjJCYhdklq}}@JQc|Hy>xf9 zFGiG@Fmy+#%CW;WyYZyw3+}bv#xhP}iEraZCs@g`=7>92#X?3&3vY}}b~|i@lrg09 zRW#N{T@U*$n!Esb&*n=G?7xV$UK3SIIMgl*PkN62EH7y4`t9RQq02Dta@m6z^>(hr zawO^UXOWCiR?DC;Ahl{nn;6%n{n~V{@pTxW@GA7ps^=-ZD;!5F@d@LxCyQ~u?S(|a zYrbY`Qn&X*&(%(bkcF^{aD+G}1U!6{w5dT9!sIdr(|lm+O`Cjc?~((#|s?NClCdFIo5%3B_lkp#CaQooF=PnXvy|B@n{)bgo~ zfze#jX3iT-mDF!G?dqD^6J;lKmsQdjVHWG<4{HfvbI@JLz?;Um1Lj6qO-+I^&G-W2zRppJBl z3O@?lM0vCeIi1q{)!{Pzyx5aR;o1L1*AkS$VV&e1K=8bk#muajqvCLq%SLk0*-i(n zKN0-#XzLia?W>mi+yhA->^Q`p*k7j6gIr%?lN@CTpL(q;^scAY`#zVvV!WJ&kY(hp zgS};Jld{XKD664?GrTX+==Q_?lsnkwda&t?SuZRWcMXP96sX4i5;?3J)56Rcuhie! zbkh0HoQZ|U)2&OvPt4GH)kvgGC}Rwe*Teyj`m0T(eq$eJlOE-3ol0!3m0|cr!qjgP zm-r}~)it)FEtXVqvmtJ}?c2?^uwb}YMb12*o*Y&^?94z&8N~*b2-vsF5K+ z6@!kF`^w$>p4jElr`c!i-d`~Hjvb5n`%)?^;0vl)edJFdS3g+_>|Xi%+cMR|Eth1tVVI>L;R8fPjfR3#K2s?8u#O>c{Lx|dhp->L)VyoiEa5QJXk((k8x+3sn01ln#`7_E$G7w zKZqtFbSqdR`!JY3n}gxG@8tA3^2yqzvDZ9V~OwZe_Xi=6fEWD7ly*z zSJnD2HZlwh?7w@_yk-|FU~OeYj5r6E;3$|7%t#%gISx_F4QIr~-`sN=Sc0$EK=!mF zLKTE@8p?tS#HN4BQmWKW6I3i5TgocRn!ho|WsrbKb?zl5vyQQy%&?;LO|HM%6@$6O zxE-l;#N`SV0PCS;VXqmPg6?pgcuSF|;7i_I2RAXPC}>fGipVO0I5G~mVsmYPvaVH?3l zyiX%mtxA;G=y)pRP?*Im#ny%M>g*d+cbefty$Z{2^Zc#~9{Bxf<``1s-unjA2UxDG zsAxx|ks)K-KIfa&rt;Y>3r=W-S#fBVkC9bZ5(8oSsX^eRU_xb#oaH~O(4Jg++X}kA z(FAV(j*OTD?mZ7?Po0R(Z5X0s1e+b(91goQ6~~lH}TwtMnXiMhA}^HM8JXp%@GHK&3$IzOVKp5Eo5j zW+s=^DKWxO)Oe3jucU#=zdU`DsV=zNH~yg0WY9*Yw1xtoI_HM(>iGcy{VAu89~ zgZ;pcFm=t6`0T|wGYmEA<)8W8PzB|>>d`*ArZVRM2N$l@5*)TqM#2#Xis&CBeK;FR zqDvm5bBoaFhV;7KIT?(rhBIFjhCS*)-uqDC9$(kD;tpke%s$M^*@FX8AFtZBB@;|s~+&13iz9!?t=L59epN+jf|3yMs_$+{bRU5+J4)Y)``B0=Sm zCXp_riF7vzV6XIkXdgPY)^P-j3dwl=e!(+U*ZvVmNVkKmr8=4

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