From 448a2658a779f5e40792acf7ec729da71f7a74e3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 28 May 2026 04:00:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 28 04:00:03. --- .../20260528/20260528040001-Binary.backup | Bin 0 -> 380167 bytes MikroNUC/20260528/20260528040001-Config.rsc | 4790 +++++++++++++++++ .../20260528/20260528040001-Diff-Config.rsc | 4 + 3 files changed, 4794 insertions(+) create mode 100644 MikroNUC/20260528/20260528040001-Binary.backup create mode 100644 MikroNUC/20260528/20260528040001-Config.rsc create mode 100644 MikroNUC/history/20260528/20260528040001-Diff-Config.rsc diff --git a/MikroNUC/20260528/20260528040001-Binary.backup b/MikroNUC/20260528/20260528040001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4b50ec891416580de98dce0385d2b198d3b3932f GIT binary patch literal 380167 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
gAX2??_G!lc&H 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

J5wVY20n z%XgT_F2#3yXgu8}XWc;4lBpQLPg??*mLn@-4)o2003`#%qmdb)A zrICo*C?rhJPh?(_GmBBCvoq{jgJQgBuD3!#@hRNhT_~9EprSK)pV}P9hBwr&m6SI| zT)|fL12jG830U*6+_RuVykU;B8>Ru^m}E7pzsKY1zwnyaCOFUyxLgqV1H!H2(J4WX zg%|Aox_7^4mRKg&ax2TgudgPQkIx;!o{Io7cQ_^YcJdSjm}ZJG=r(7O<4Kmql#@zh z4FL<;+yg}w+TRo~Eib7`z)8kKUnToQ*j-Th0LJXur(&OGHea`J3lA8pH z@2lMa#1YR%*<11K)L<^bGM?}BM0(A3>2hsF^pZhJk!qom2*%rx=E&`RRcpVKvY3Py z0ODwsR*=^8ctq;52R1cKgh23T)e`J81$d`>4v+p>7^-Y>yp3qn70kTxmnA;lfA`#u zElQMtC1$0TS}ql>JKVQ&CDdj&4k$W!AshVKz!ha@7$s>6t=+=%=L@Hf&4`tKRLT=e zd>twk%k#*$DFBEABnvik3jXdWxZ%J?pl3Z#GCP6lV+UKtoP_F|U&D2$2`Fpsmq^z8b2O#0z1v1>~A2jCD`|58%cZc-n2 z!ZM`m#X95badferbJm_zhf*WSatI+kt(fQ`me*WLw z(Id`ubcLxP4iF^*81uA;3_No&%2!WAbzGW5{Sg}K z5F-@`prNque$GGYv5WzZfPz}JG(|YwD|otuT#c4u4~*#&5HeEy{xJH{2A4*Nzez9L zs6%83JOrVIZDW_cEKQ`TM!carO=T~FM)3kS|H?o)nDzy3@$VUEfWU$tOm^8?#&QQZ z05{d8Fiz5>pKI|olkH!gzVc$iH`S>Ac%%Kl@9|v844WEh=Rii?;?>>GkLc1M!QJ-A$6fBr)%5$y_VvTIlh**1 z>2)38$0m9nlFs=9732LG|K_71dyO%CL)u!yi(ezmHG_Uwq=K_9v&U+#q$*K+jo3Ui z{BTBAa(^(?vOIif=ZOo zr4tpAgc|0^IovE9!HA${NHBh6IDB!>j&X>0c%!F{;^Fte+>A+{=q_-9hkHbHGJP_> z{^`AkSIYVdi7hUNqcl?ELQ%&EdRvT8%TT?F==@E){}7EiW;`U*dw6W6%Ep0ec3uvC z{t1dRio3$iq4nh=o_8h21_^5-fmCYwv+Dic9)2o>&|yMC*Tk8c5lWVtHml{s`qyA6 zfI~QIK*YK2Tnj(&ik^fO{o|-@9>$kLo+({Ua`H8eKDy*Qj+UdJVM@qzd2K)*ma`Bw z*vxj7ekRN(M5AEK42)1BU~!f)@@zischL6Y&Ken*HSGBQM)um!aS*#VwAd0*B8nrl zhWBKMFQ3XsNp3F8GS9Kpo<+>@+C)4;60#yFITAQ}NqfVQO}B=qS;%o)%elP`aP^03 z2d&J>2(Ap7DFxTs56(BeUSOUyl@No8sg%gD`LVMW74a5g)9+LG;5aqeV#_=$xknae{UQfo|h z4mcSxxsZ7_8uzOH!fMfodFG5!8R!F#`$ZLnX+Jtq=3)n7HaX!~P^Vg$+LI(xH^Ewd zh@`j$MvdSye0>$t3mJ;@yAoxm`n4;pGUQmNS({MB@?BOn=5JicHP~{5feqqN;d)_U zVD4^rD0I%QA=xDzYGn(lsx*wS-hoaj(p8hU&I;A$=bp0@IH6*>WhL{nu3Ke6p6+k` z(PNy&Upx?OlTLia77OfTUng`Qc8nu=={H7TUm%qhuA4Rn1m7wY#k>6b4OfgY@g-+YuG)76Xh^W+{^eJ2W^b%dw9hXI39ENE$A@iI2WJ=X~ znmJukKn$9kGSw)I9Qo4ktxcAx5b-x|M2-CHc43w{ya;O5p3vHWXpD>H%3ClEYauFf5 zj3u8MnpfNk#6D zphj8`=bPt$3YBkw^<+OtMZC!``l^d@A!)~$U^gsjMaLoAszeCySh^$IY!8lVWlM~m zXLbE8Aht1qP*5{yaEVym6p^mA6PL{wW+vi`nA}$_SE}A(t4-~ici{%+SKOIY6FokZ zoG@3+F%x$EgNp?o+W4|~1_%Xdt+-7&_T{CtYT7Qgg~Zu3s0H1$IvH^%NyS~Q5y-^s z)Q#*r;KF~EJxI;b^&)0%Yj?fY+frdIB=^VS?$wyXc$mC%Ky{WQEQr;p+bBp*AR_bp zJ%&F|ma!4#Q%DBhrRuvL(%ojqE0OJ}sT2KnK1ox%!v_%Jgh+VHHXwgJx%~X#aZ%KL z3zeB~aIvp!je}}36rwwSdnUT}YRN3Zn7X5E!j`WM<+!-6mG5p|@zz^Xi=pPO8CA)J zN*Dm!v1#%&(`AbS{_L2hGqPXSg^ripLsZOe6Mhy=@<+~RuXPlUz-o3Sn*cgB&; z4EC1V27DbnX1MMK`3d_=rpC19o6AU!_dq1zNghX05H&Jv)p7AE5BwyuB@E+HwQo!N zfroDYb~>^Xm$KyOf`mk6MC3Zo=&x z5`p(An@e2Hb6HvJIjg1+WJ2U;=zlT}vU=1~c}g}IA)WoRo(m0Uom7kek_SlQ@_-uN z$2Y+ot{m*7Z2%BbHRl@CN;Wb#C(@)846oqlpq1bW^1rb;|NXT1&NUxgWc;W}T`N)n z?lD(f1A|_o!Q3+DsXFNOT40sX0*~EZ^wW>g|0RBsC3hu#%mA$tpdlx%?E8CZ_Yq5! z^`Ki{U0F{uiLui(b+Yf_QK43%y3t!wjzgnf{bdMaDi>rWU@rvclavnqYAG~VN-geB zH2=eOh=a{z$ZU#A2lJAyb{5T=gD%XIAc2wn>D)bG6(Do};)&=t$U3rXMU9h`?x-!n z4djwB`O*k&iT{@`WaY!%LG2ubK)m6iDx5v@{{WmzvTEue2aCh@>rhfNH% z^A3&MU_ABoAro&ld42K>D|6od89V}j!7h!062?)3&pyqY26_;wl52Pj!@I{uV%`CI zN#k5Tpp@JRLL(NfzZUNs5GlXtDXLu~i6PGQPv0L7$mTXGfJ5VT3(7;OSFG2azZr!i zM?r_h#42kMoReYQB~d=L&I@szAza3Y8*^=*oikGx9ZL;rj6@7u! zYom%|XXbzCFI0(r^+DAX+O~6hduf15tT>Mff(9gwXHxsuWQvVWJtXr=Yx?U2o<>~) zhp8_d6Q}plQikdmb~@dldCP!!lHNh0n^mcq`@IvK838B^9UtW?ks>E$9kP%L%ZT}J zY@4s5WR;}hTUxq7r03I0&PiO)eZKGRXXaInK=eJ^m=`I?p8aDPS2D2u)_QZgst#d9iU(fiu^>wTK9u>hs_aTRE*T zgOKM>Dd6hgsFAh&1|M%{_Mi@t><-o!hWae!88In;b749Qasp_)VpAW!$5bqBO>bY7 zD8csQD+W}#ESH{5`}4lF-8@03qQcesvYV0ZP!%5#t(MV!%o(?zg8w9vgbDtj+6}U8(Gs5N}+pEiYVs2u9|^ zc1VGgtwFzzwh%X4;0uYix80~bAL~onaYnJ-j6p=G|7J|T{|S2!s-IRBIdT%%QjY^@ zIzX#fV+OH%nrRv;xd_`=JDFgId+=HDK&|zkby4C+f6t>5eO#y9;<9W)=Gimn63h7_ zEfBlbe3}3jq~rqab8d);UGmE4xWM=E{|U&2-$Nd+9=f`hNG}u0T3|{=5OBg5Hd~F? z^Ymz^>JTYg38FdzGq^MKz~~h87@iBgmV`0-K2YW6%P`1h3s{&Kfx?BvOIRTsLP5B; zm^@dCDF5DC5N{u>Mf#4pG&2raTg>1vMkS8f4s6d-+YI_97e6+7a5Bn_Pm zloEn@A!~c#O|jx_^&5Yy!r5cWc*g1usDDRR1r_z?LwD#ura-ba$W{|^&?+7y8Gr^gI< zBr(gY4={oZsCj8|f~4gCpne4_?)0^a9K7bxo6#HyaVPE6bFSYk0x^5rng57=?({J1 zzz%b#!KR7Zk=SWrn?5Fx-1=SeJF1e_DN={=`LnP#Hr{{2oA(c#A>^37DLfzP6B_0m z(LD0ewk9e%RvVCe*K&4?@#66c|5SD*9tZ@H5v(6}i!TYZy_o98Kqo~KWL2@vDrGY` zmjm>qUrvJu9bgI9oBQ{%>FahtTwC$lw*l3F_PV<68Gbl40z^ZC(iGsxW`81)c>S<)w8 z(i4fCXLRaeuPnAP^ZttivGnd)d5H_CGUa!L2EDmD7r_a4vv%fUi{K|W#p$CscaV;u zG`+Nv#o@5U4PA6+@ss-M$c<-pVTLC8o)f#pbPtb)EHhOB#WNjje!g3shnJMX8`Qxe zLg{9^JHC_(E1#ddcY>CT#4PUZ#?#ye-)mRK{9e8c_Cf7Y2(D~88keX~Xf)w{d5iZQ zla&pOg&8Sw!{*G6q5|I)&&zh0iKYj4;xI^zp}ivN#N1kAf?0~P<^u4e7j=Z=_G7^{ zWE#0y03<74qD*LT>-41jDh$b3>LLxpjMIsx9>p=LIo^(CtWwnX8cL-NB#OE_jc~^j z7C2`q8u|uP^?Ntz)`u3yW@u1N$4(UMPR$!-Y|q>YxnS)H=4Ttd_wYNrm%z1`m#aqu zT94N=;NbYW^?cRv3tqfGaWtq*jlRwTDL-iB{dJ`U>Ct<>2lxE>x+)q$0%G(~f2VB> z9YkYp5~`m8T>Uo$`R%f<$x$MMBba%)gN>?z6qVG{m|Qhu587vN!5dAQ^qiPhhW9Hq z6KNJ9|05^Kg6xu(s=WQyoRP)A@7%9af&YZnWB0eRW4!v7nWk9pt%&_VxQbgmcC%B3 z;BYGsQK&H7-eo3D7w1eg0~#+yE{~iMHh^5ePKXhu{SuigF&7CtOx{U72D55rkX?&~ z%Y3E>Oy_rG-@{>=bu}-B{6{=`sJRkpKK-3Td~0Vl^Kk%ax3QNBCt3j-o^0%}iAaQ) zqsGFKF8V7NH?}iKxC{MwFkI*C8qN}PNY{%E)aNV;iEz^*h0)|%S1p*3%!XVP?g zTLga#hz6@)-nKZ7u8?s3qYy=LpID;Z zO`bL6T$ap07+7-7{=#)$H$4dJ?7vI z-^&y2s+IP1_wOPr+hQS@yM_)n-as#0cZ4^yu`IsIfj~Qq9Kwzb4Q3u0xF|r!C+g2B ze0yDffoh(8LnMtrWIPF1m*_W;B=q~T%6N%1VW_)UK#h+w_c%wjuS*w~vJEWkE->il zHo^ZS^K-R_{ht@P#%lYo9_tix^n^j#9Og5o2=8Ifg#kn=@hKmdjWKm}l9cMRO3aX2 zSD_qpNNJ3t0o6t6j`<@H09M8Kb<=b;<3yMsn7#jd!6{XJ9d`2ZFP}^xqZvMq|?+A+!~u zZ((V|$a-qU*KJi)%PDK%S@;Gh^||_gR+zSsk-z|nSDVc;6{*c>X zu5``i7vY~&3DrF!K)Qya=n{I}WIT>yEBn(9pS|f6)6z{+Sv2EXwg_~IU_-|qEQVL3 zRn!vrdERT7MJxY*7Db!)x*NWFyS$al;1VR@UkM^5kr19{3Be-=8Y|guQOp4X-Xt)B z|8>}3{54DFQDx2QJ$E$|eV6rj72Hlx7G@_Fa|wbf*rPK{NPUwwaJ_V=0Q>dW(}K|_ZV z0c$f{_Ts?y%66;l^iXKj(V)C~s>)pZldr=1o+A212oedSnP1s@JbU;AwFO{dF_d z$jLbAtq8+B7#~gypf}H*g14x9GWm!ze`_%5x`kpFAp_BuS zc-ORL#798MEq6EnF{>)~cu7RZ?hyQ%W3EMcgr!C`q41e^1ra3LV_u@ zp*^15H$sYrAnI7ePEnI=O#CJogV$GCZTY0QqPcR>%F-uHp7^oL#|2XNO{-<_0|Z)! zvp-5({j-!3mHEc7H}x1%K^Y~gI6e<0NLJGwir(65m3;%aoX!_Jk}qH6=7J`>R?Dkw zH5-eabQRHN7=I5JQGcua69tSa=7IZoc7L9p1;N#?8S5Y6VaPhf096s|x|!UuUQ)s* zV1o*H0$<%>y`UcccKwUO(o5VJ_i>A%IEL80&YsH4B>>b)m_PJB$>=e*+c$buSwBoz zzBx!2Du+c<|FrzukR27#lYt^|RDRBPR_f9i*a1psbEP~vg6Tjcc&Xcnxec&F|I^#U zAqTYu z^^P<>>&1>RaWlEQnQ0z5kP{RNOdjABA$HdIaA|@px#*o(ffUppLhq6LCgFU)8S;QJ zPT&at>~c<1E18fR-i~k~v!CBH*0c9~Gtw5;*#+vOp7}5-k@zWp*;Z|S*|22M24au zh8umg+`a}_G^BT08L(EE35#tSHGtv3b~V2<`Fc)ofiNGPSXJ}#(+kgHxDM7)FupV! zB|g@pW6}!M*_R$1>Z)6zBI2H#Vz+7=VeOfrW9~2}K7eyQIhYU&Bi+u}e%bj(2zdn# zIivsU;ug2>4vL$LJnGn!2{?~0EL0^i{m-BZTOP2}^)NKFo&Z+rice>xPy`74_zd3*h+dNnUui1ooZ!FF6gsfZb z?aSBVEx<-gsc7qQnM8x3#!+jmoM;PNed*-P~X-gUd!S1Ul{pWu~>euVK(_V-? zQ}~D2XTncF990-w(${&+vB0@ytX%$q>dyv8ql$>NMHd1e7R8{@R>ecD5NBJuqoHl0 zKl5(LJChj4>M?;Tf08 zW~|&jW4z=?*92$j@VQ~gaW?nzOi)!d_|s$CG43sJ;+?Zp%5TGS9i#P&m4P0UU@2(t zaf16@o=dbuL$!+Lg+27SDx*I@YwEYJ*n~vm=x|SC?!9>UqLRwTtv1if z1y_9CoH$!*%Y&Of!%N3x4I=o|U!(^lo5uC8aQ=eSQT4h`KpA~Kp*5z<=lYw{l7J(% ztO3jt9?#D~lv$OWSz3sIf*yy*O^~&I)0?N+3v`GB%SmZayW#!U`SyeNz1U@;>n4v% z0EX?eH$qq@ffc!I_j8MhA|^j!I4_BjwDhjY(I)FuRWs`jZML;6prAv7LjDK&%G-GZn0?bIt<~g63+flwvkPYiL?#O zTT;NX$RC%Pt~=%a3`&Rr#BY}ffz$u-vH}q*&3NK%q6*s+99C-Qu z**MP18pM<p;Jt%W5>JOlwtiERg4oLhpI^ ziiM+1Jt$A&AFhNSJqtLfG;mfVU%6L*3kKlc6g-o=lYgZXNH|u@xAzoPc;9XEAsYsK z^g?)>YHxKYHQCnAT* zVI*1v>Ctu;%Guf(F1icNb2vw$3UrmWW(w#rKLqX3z+_gQ!26LW6(u^zKO*Z4xx=4* z>>~0G1g~@@+F@~u@@rS8*4OCAgAm{&>NlGhR6P}*K_2dPI*Mkvr!~oDG*Iz*jtdVY z6e;ih!f@H{k2gKVG;6*sBtQj-mz(Ybc6L7!BAej2nM?A?xR@4t*GTi+#G@{uaGVcS z(!5^`UKaS$n(A{|z8F%MWBI?@>s3IIpgVe zy@qx;?-7akZdT!l4I*GMXZ+)x-fad-#VGmN9cJdxw&~3&>j^5V&_CpnZX}|u4q%PB z*nC|QF2AuKZvh|JR#1R#e9}QhRd?Yu^#VL1Kckwz&SYc$EMB0IX^B@@I^^|KX$)fe zJr-cgbSfEwr&4@g0Y4~)d_CbB*YSvJOb9yFK1U`y>zD_(px}YND20yHsc%pl>vYj| zXJpV9b4+s8GNOBAo0G%T7Jru@Q1kPY)_c6{XN6lxW`nNoXnO$Q2vN6#DiSHmrv(^& zo&ZXN`v)SdQf}6Y=}m5ij24vB*zw|$y!IGqsmASgxIO(deOC;Ii0XW!cT?^P)s;5x zbc{TS45Rfpwlqj%;6^2pt_|~GxFXY6*0*~t0ABJtH4Z(nkp{Ux?L?|AM0XBhGPQ`U zl5|oXNzw-a@2nZssOc>$&iWzO{aVI5kyw$D47_=#lvbie+ZxImi)vgsA%l42=q(C2 zo4lQ$K4&2W3JF^s%{<~GnmlVMk)DQsLTL*rUV#CQtd+Oz;hPm}cu-zfioT)?+<1AS zY`5yJw-j|kF~+s+TF@y{Pw$4(6X<+c?Z?~Oob+q$Ra$KBMM&bh4lf7r6-17f+`H_M zHSs|&CKan`r;BD($UK)`1HN13YlEol+Dt9!d`WM|A9m-)zd!YFs_of^)e*Bi(V$e% zwtjQ^tBYeaSNsZIrVwBtdblx*pY32~vdZyFnU_d$QLpxW;p%3&XVbw+s;h5+<0t8~ zt=FP?ZGimcD&rmR3+{h*pJw!8#h!`3w|}RkE_lZ|Tvl?qZ~JNLb!a_qU928|IL(m? z8W-+A;Qv>tdW^~d13ftcHdnT+oT=)V^)~4|`PjurEjkgfL&cwjS(pamP--z}5^Qqi ziiRK^8QXMX1-eg)lCpeIqTeAs zP`CstC&3#}Dni=%QT7G(Mua3-d-*8CT(SJlfq%D@X3#)d!2=zfOk*sah|#OPxVJ{~ z>lP|J9mq=Tg%R)XcKJBZg#|Ad%d|EmyR5^2N33Nc={t<+(80oc1($_aizowXWj~tl z5H`=}oUHK>;BAC@5c|Y~l^>M<*j+jl*J#Wc0|j+>LO~`wk-esTqm7ZO^-sMEgObhm zH85W_J9OEp;w8m_z+{@e)nKl_?bW9m5MQ@`{8&E)a)gd~TRHbX6!oPwu%9!nQ>y53 z8BT&SsRr^W0y^4)cl$%RAmaDo7NsXu-bFK=Jw%mNR{HLTJ{&&A<1S@1M)`(N6|ZEfd;8-pt*}$I`blb5BQ+OyR7j8Js%@mC^VpCihql(O3dq&Z z*pvmMKw*9|8FqSLfP)c0}kD|QFnF3hfuUQ8p)$o@@1+o`=GC8Q! z{KRHqA-2ElqD1+G5nxDy;w!&w7Lm(*TdCkddW%L$LP%aP6LVeoztaotPEC?6%OSo& zA+VQV-n_NdS(}QgcAR;-%382PQMWbI{S^~vT1Pi?TRgv75}mF!vRYbGhX{x1ku*y_ zUqpn^gkkJZlEz!U361%*)O0rn+ZwN?j&l@DirC@6_h{hFC#3w=%>9zw+5ZK*9uFFr z2n|KAH>-DQpA&NwK8El?DfIfy5e2{EF-!}cI3dHN+yC{7*OKK;zccj92rB=TLM~L9 z^YeYU_*07V;{<)}xT7>5r}OqTw8=yw_LW%J+#*H`cPG$4S!9WwsM(cRyFjY5 z<+OT=cMKZ~!;HXD%5GHpb?X@Ba217rRGY(}jO&Wt0k8vta#>4xz+0|_*n{g`Xhpln z8=)u~^ABKbhgQODwQ%2_xN^kLvu}ke|Nl=urenY_KCSWW^0HI1)N`9;**YGJD7)GP zqp|EA3Ffbc%+1DQn{0HQ_xg1p;II>6*qg|LlouTKuQM~tAtd3I4AT zB~xChH*Jj!;iD%yY{+lTuUw*kr@_}rD0#yc$$ru68RwWVz9vC{!#KT5J#_+14(VrP zA`Z!%QI)!ZLIng^Qb#0clor(I2v{QY0Dv}H*Y>c^5(=YSnhes{QyGcfQs|to`NR5Yw~qM{!IuKz~R(qsNvsg9UhPv`#PL%r*p zO{1gnphBfF*S%{SBcL(_Q-m9OKd8Iif2nm~s!D8P&G>3uf z4z>@0W$Bg&o7>=1-`uJ>Pl=X9X}6&oaOKb;E^jC`rdNpZnu|B)u11B~g!Gp3xEnrX z>xcxti9@oKD&Y4BP9H34*B;_{u3`NyfQb3rVrTi!j$!DcBFP6kt z^MSLbCiHn_*!;2698xN08QgI@su#cdJ1%YbrJ;Tbp{b-qtp!dJvwlB7<((W@u+mVb zFnC;l3He=~2^g;th0HBV*lj7*^uPFSQ_%LorN`Y5O-1NZO!%kb{S#^)KQXn_1lF84 zk0Qwk>Gxa~w#GE5^UL9|@4|f<;BeQSBIP{baeBDptaFQ3kC5u2>61ZLz?}v*u1Z1s zyvH!7er;vHGZ_<^<~%7dS<7Y3LaWWpQ0X-$c3~PXmqQ-H@~8-%(Z=k z`2LbA>=a-fU4a!;J zz(uE(Dz=H7w9qy4b;|%ymX$d>V-hzU2((ZvvM?${ly-TR3bjJlyJ2(VvT(NlC#h^3 zvzcb&J;>;)vuOyPjv4=;v+u-yWi$^fajU>Lpmx&|FWmAYHvFopWrg}-tF*eDAvm#1 z-dkIpthTlFvStQzr9{b-rg2_|Conwezv7Mhh8+_!JC%S#7m5denJ@gXFDjACjZ;O` z^v33zUAvShe{xedJGrX<2Nmr4w;|zXsg^vj2mC|5u8ogSF5)IPH>hv5X;wi{hK$Qzx6LVqD=*%_`VMXnV*gU8NI4V|U3XIWy4_R4QCFsD%Wi)?FT1CS(u z^{m^^UWP?p2A2adXEHFQVZ~qXu|o>azXMlmJ#}G#g*9;0>7+m3bQ5T>If>K(+ZcsJ z?h?icTiIiZ(^1V?O=PF&@5UajYj={nd+C2c%wewz7CkpzZ$D>AXGF>&f@7m4Q(Kt6 zOcZm+A+oRKRUgrPkPZc;Sx}<-*LrU3G6&H>>*a>2Ql^c5S8Y3qV~eFb4_g%K?A}t^ z*4@DMv(Ozeg&iqE2NNm8bD+Xw?wo762OAOWFLzLk{dQzlp9jf5=DJWzv~h~&FT^; z%#T|#A^%Q(#6mlGqHk#;B8)%n#Q{D&qr(;_ot3$^lt*Af25U(wt!EJN%_5)2h}pxb z^l3o=$amz$t`R@`oDiIsZP@}seVh}3a)NvIn*;7Uu7bntN0^;%?Jj;*ImA7Qh9?&| z+;!}g9@74G>Y(C|rG8L;c8N(oX7q^ zbJwm_&$1f&1T_X!TvTTbMEk<%Iu!t^Qru3I(DaCZUQ_ALG^MH{03V+x%@)Y~g; zi+B0s4bc?b<~2-q)h!Dzk@0y&Hc|N!j(o8Zf22O@RBW=LDQ0Q1 zhLb-$2R6T!XRSRuezE*jtZ8B`q<;XlP9XjyUW{MYOQUSE?5nGw|05-tltmklEyYk7 zn7UVVy1~Gd%pZHxQiG(4C+?7Zz37hgOFDqS2Jthhd}{o~kbo|WGslEaY?5i~4kUmU zUIBS8PkwSn%X9WjE^m^Hvvr9xy(@~X>`?oO5^G0-ArjV|iSXiuL3E2jKIBC9-jC;x zLv55T^k$qO;lYd189zzN;7Nc{j`AP@pTWu%)gyGqoW$jkVti>#3T zJ{R)^2WeL5(he$6yPk(-yH^W0nMqmW%$n^T&d~>>Ys5qD?x+v>1h^ zC2zc3Eb!dpd}|v9cLx%K?gUV|M(MF%m0KCu6~$>lf3`ug(LnW=WaW1w^Y-;`D;E#1 zw3s*N&y|Ow2%(gbw->Lv+cxeJ^<Y|uQY*mCdzlxZjAJp=U3qd={_-~9NuZ)dg-u&T)?4MxTP5x zUK%wPjjb_Q4Xs1ltgEk|$j`F3J8NlUk$&!o=UT#hQ0Hu!h5_=17LMJ}dCL++<*_6Q zd_Ta;`>|SQoNf_oOc%70e+0G|+r@K!A~SlN{>bjQsxKOMuD+$q+&LR3e0cq`g;E|$ zX=P6I>N-eIuW)aJ!>mMD{fPG$)gn~0K)=&*mE^sruxOtOzw3bi90rmCq$%mWMwm|W zbOG=){jTolm(L!ZuzyiN<&20d>IWS*l^=sut;+cx2WHdOBYbmfoqG9VKHT?gMiJCri@PIhFO_E~XP zq|}y!GWJXC)wQNW9_c&Xe#3<30Rz{f)7%R*gQfk0=)iPHEbXz z1=lKiF$n1;uhkKcl7USb+zq4WskiA6oo)C&gy|C{(T3~6Ks}67vEBZfO{?F2WTk%! zBTj7Iax?2ChD#bHzmspc@ldtmh!f-d8nuA$skk8R*MK4*M$oI?t<7Jm+Fkv9mfqgd z)|-Vt8f^Hz!JpQ{hrc)h`nj`RX_h9i2Ubo+v-jWeIB?ThKTID_T8Apn-tjtBP?K4% zK7~I9N#Vn1WqovUgRSV5^PKF|cM8}xRJu<~Qla@@6}nqI3KAuy;mO{ZH^k6*KB&tV zG4IALO4{ac|An$;#Y1WqAYl3RW zQ_QXV>P6OPze0DUMzQ}I=ey5w2)rPVL3=C8g_^G3gCFLl> z=ZoxTVW8}G;KAfNo9b}ZdM`BqVwtqA4=#JwU8k>6eCWc zMrJQHQB;|tzt!h2VH?-SaASGxz0IUkuxKVMMOge_c(*E9qESBK2w?4jYavsP+Z8_y5`bYfBc#NuDppsb%a6eUfMAk zNA_k^@4_&>Wh46K2XZYFp}%Tm4Crsy^m!P2-@l?>P~2wRoQ24};%^DWrg9_7rbYi5 zA2U7%d66-1fQ~ltGM&Nvt9SD=_@>jPk+^zl|m3NiKSe zbAl8_Ph}h$iRADSP+(_V%*$7p{99(rJf4d;-Q`-9TYUz7>)e>?pSkO0sk9jO0;>Ls zX}rIu;&C1qx9Fr=204N!>lJ1kyj;EKsr9Uw)T)gre9^FAYd27_tqWr)w=HjRN3?eo zjq9okQ-g_W*Hm!HWAR_5qN6cC6_$C(U_27)f_F8r?tP^DYmf=ASTb0a@>mqMW~i>w zump&^@$w=@jD6OraQpEr`^OajAS=?rjdn54uSjEZ({_4mb+arZJ+8Y zI)LS67&y3zJIldI{ux}&PU;nf@wh~$24nnVYD7H+>P`;@-drpR-_t->7)hCnLwN|y zRwutwUPg>hIPU6xc>)6ZzOd?cnIt;u4}`d2r=yf9(M9GoHb)Sotc|Ni$Y)y+;2<$1 z#>=8ft2~^TVL~q-_D2Ce@brWI=C%f{<@Ir2h*$EV11nZW|4z3XA0pt%QshfrKfGN= zA7Ks>WN&F)KENg)XBU3XunwxfFB`_?Fp;KROCE-m7$FZsndW2HZiy8Upy|nj1r(%e zpyYhx;&xF)R;I#)`30d)op1k$rK@_;T_Y5woUlCocV<8?_UrXZHDiLst#gs3j`!lK zxk%CGGh|ygbgC4C)jJRm-!4wxFJe48XA^I~Z3;nlYR-s#0{ZN6`xzg@Cwri5OJLEK z@#^g$s+&gzDtjuWVGk9W<-t?692iSBijp5TiWmDYMLID|1s}94rV-Noi2LkgUEs{h z>aFw|<`vIH^YMf0@fVleEX+LJ&BXk^ns;r z59FY?&6=$=*bNw$2i-G)`f<{k*(Q0o@zZ21KHGh!lg7OuBQVvPRGOveW|3&C=+CxU_`0?eO8Z;|8Y$*85=6fTN^Wd&3jaLp^F)?%|x{{ z%{n?xi?2~|BQ?g8&SkOs6QLsLX|74{Yq_q~FuP^8X@R4Wih!LI&iHbmLI2F{^l~IN z8kd9rXcjeu_b-HZuv&ZMqOXur;(1U1i#?+RrcCBWeuBkY90{^pI_Yf)Cr}{rj78+l zhg&bmHn}3N#H01--kTU5!{R-AiyyktQnUcTj_@xv33i{6_+jwIE6@kD<_<2*b&Dqm zk56Nado>nfiMuZ|6&M9K0pkwqtbqdHHb{Bgog4>8$(cj(nod}~y3)g>ng#ULVHDah z?sn7~3ND%Sw(i`Q+iQ;z9WhsW1*c3qo=hlvcJ^ zgkgj2Zl!*hQAB{8G6i%5}5PzsdQ+!J}$DIDo+297%g zd*EqfP`~i6cUoPpgCW5&{U+5(O(B1Ryyhh2D;j$GF1i7oxR`=JSXn{?(#wua1Ig$GkxUMBTf#};g7$HWJ*$W zcw`A(nQOKpnIglcNU9bRmVLaqIXf(%yzL!Q)*z+@nWEuQk9gOy#xG8CQ05b*FHNQK@LQx_ zQKfGS#m_r7FhhzWHv*i&n^;<-X~y&sN7cL@%D@!N$J`#Y{d3ajPqy|llVGGs=FC8P z_-cSuGcyVq*KAd<)57vQgfMzjJ7A|-uci-)Mwe%04&0M4i2Q{6*c%C2#;>>XSi)xn zJ41kz+MAszkr*Snz&%!SQ^`yjjaxvS5H*9qy?<$Ixt;B^NW$4K{Lsu}=s`7&zre6z z1p_&attzy=T-QW2L^?UzhdLNpzLAgU_ZL0K2Pd6WG(hi|i1M`y5*3N24xVj+)K?;U z{OQ2SSn8Fx(K;xZWb%gSq+}@vj9-SDS+iB<0ziZ^JCAM~3Mv7_T#9=H;-?DEUKGU0 z+MjA!G0Aqt>Sk+r>b5Ac)HTTpr}+nn4V_Cf14CbWqjQL_*r$#S_kzzL*=-W7nG~*~ zUQV7hV^qtD3>OkGxcqz+@d64HCjtlpReVYz3@d7etFO<(NE!UN7S7{?w zgsdsKg(dlZZT~<2ieS}b07It^dA1i0IB23dJg&&{vYyBTCLYvsf(e;sIf#%H@IvU7b$Qoa>aCZWP!H;tft(XXts(32Hl^% z7LLx7oK+Bm`%n9rSI^5x8D$-G%jwlqAr>Ck#mbtgV?`{0xqqR}8rwjU%N>_-iB7z> zA4g}*;G;@=(KM4{n$w%=MElqEp10~hR2((e7!!!!uZa|)JgmDuP-%I1f+d0_w0XVz;qZ1Od@K$zhPmTKPVpRxR<&CE!=Z-BqVxi*s3y3$^+i6?Eaw z(tge3kD4dSNh)|P0=6ZHGI{=@k>3nE+6c0c9F(R=z;pmVIJHss5xJFLBh>Tt&YNRR z-nnkz(7uxsD8J_3`iEc!u#u~;*h2rwibs_*;U1B1Ft)?aE0N9I<`-BJpDY9?UI}zT zAWV>$E!ocCcZHlIK&3yIyWViPLAM0qi(xo%7!i%r^sunb8gdobXIhiNFY@2)>*$CB z?KWIH;&R0vWX6xQ1%vj8`RI1Os%(2TZFoFTl^aiO`?rcURh^R<_l=2X96Yy0Bv#{%ar5&s*aaBob zW%@v6;GW7dh6%I|HQ|5Z5%lyS(PCHWW|)F-By?qGt^)b&1f55Q{hmekn+RQNA{n+Yt$PeEz>6>KB5uPIl|p6{t!>iG~1X4b5q}v zglZN>p%us=1Y7iX5_<7y`4nXjKh}-OzYuaz*l*KL&Y`tH|Hjaz$Y=HF$8jEl+{ThJ z;yjnN+40ulDM131(U3N<^ElTt^_CMP01F^Mw~8_Pg@`%5(!PDfjLjx}GO9;1mzk<%4m6J~!>p#?uuk zWmPFj^X#*Tr^UtUM@0mtdPi@~!6ghy`2eKcoV!gTu|MD2tYj0Zxg?Uyq?io3Gbn(rgeP4-B?kZqCgUfkBPf(uF zuBzW{0zva{$03)jrRz2t_GkJ5oaU*fVy`&6ociwmf#h8FTj>9gN*-?cUEn`I@E-ZH zu!^6eI0Op&u`^LP@`BWVQ1Y8{E<0rg@;hWh=GUPSAIHj9l4;x)ms@*I^GvnGF;Jd0 zp1KATWj^F>_lexho2*fvUOeKsbv#sA$HYwV{?!uQ7OlIkM~B)FQ-NEQvKuE$)J90P zzRM&g;sMrSCdTV=0~jkI1xf7Zy<25JgJfr=kk}*|7d)~wR;<cL0MyB|pqyw`KcD<| zBjV|!s@z^@hhE;K51BnLx`1X`kid1*thkE)01?Q}J-f=2ZTFbi533*y)ZUkrRrCDE z2)fmIR3qafV52$;S4QTnD!&Lzyoka=yRMse-VQ~^Iyu92(`50mWhIwHPv1VU+?Lxn z$UF#x@3krjQ7zO&ow>2s`7t{godIi=8a(<;iRTu;yo`S;8I1iGRJJDWtvTQQKUMh* z1m$ zKf@G0yi50g%4lC&(bIVQa5FO~>7q9-RD7tRns4QC%LiupD-{jS{WB-_`#`l*j^6*m z@DR^WK!?-0UKt$}%J?J$EYN0AhZhfY1@^ym{#HpEn4Lwl>xI~=h8P09!#aD!ioWs@ zuBP{0tqH@xcB##|iHT5OgJdwhfI0(;G7ZFXA9h7W1^cZi=YLBI%nhi&MwUPl<|lG1 z7CUKBZVM|(Po!9`13pz72?|n8fcN=gXEV@g3Dhh+HHMgCC(TR@%k3NJc!FN53FkJs z55v304w|(<20y?Mu-`en=lp-`HYp9wsu4{^Sf1mKV@=*&Te5B7r1eK zvPeGQMKCN_I>xl+xaHqUu$vsvZ3sAKG)IxWzhqbbsUZ1#!Q2bv;VI66EU064Eh;|m z&8Hk3_f%uBG={uXrf+Ri)5B+V5Fjt-7$DX+1v^Yv>u^%w+<^ZYF-tB2T0)(i;Ab3M z8W*38qiwPG@M&}@*PJW@#74npQ$T~JuX@tAc2xwqo~%@Q?fcX;fYIAFxQ_e6A~}Fx zfq!4sGn<=?DbIIxpyT#tVFszIJGEryVK-hc-j>kwC1@uZZez)p6qfJdRYcv$iM}tO z2Wp+`qWS|Um8YU&4SyA~r{lawli#H~A5lr*kGg$0M~&7GmXK+fNqI4tn*1*jLx;A3 zPgL{aZf~7SLh1Cj{!9yeS0|`Y^? zlZ!S5zpqz=IkI;MktLS$XEb~NZ{qm{(_`UA@L|#p&9O9M9@8_?00RY8p>YOMk!Lty zV^mSPAG?SsFobExwucI{Ko9e-43G-%7w8~1!2IWSRKQ?bbCUu;Qy@Qdy|#h3MR-Mg zK0G$4X(YAd2Xj7Ux{o)WG`71)P8i$Og@{3bEkJgiUpWX+#=*pt2PMDF0qN^ydl`V( zxzfOK8& z8!DUydeiOwaT`zLW~~cqY-DF0_j)oMYz8+k5^IN> z2I*BV!rdCZM1$;^*ia{HA|>o&_L`gVVi5!dQ6`okUWm0ZNSp3SKPS-slNkW!UzKe-Gc^-$U=Q@VBH;WwiCZavL9EbeEhFq{m7+@+>!uPpWD zd|L`fv{mokgB-sz-@KbhpEC8aE5z4N4z|?JbcsuCXB~HoA*fM(N?m10+nzxnawT>s z9iJ(0U!=X3LvIXt&%>OiOGp-h_*Tv_AMUhypY;v61e2XX#n_%V^2yXslR>!aD}ioj zQFTZfAuD3LRmQyWK@hYHv1JQ;Qwi$`C7Ievy@3= zefKBvHuPk=4CcW3^8uV~D-tKcooxZP1Fs=UDla?sf^p6nWeSCQj1^x`Z%w2#@Kps z=@Vq_aR*z`wl5dSSr`J%64>9$@iYfD^u#4PXYEw`)O|z7xfxPFMXstz;yOn26#cGW zVmKZ3UT#$_o*F+(=PvOO7??q}0!g$oD<(q|YjT)cVTO8zqE^=)u0KXU)6Iak2~F2s zpOICvYf@w0< zL*u^Nblf=StSubEb2@jiIi%dwUuYtkvKqyyF}XdtA(p!|Wz+AcmeotcFH|D#`ItG7 zHV@>B1Pn4YmSO>Wc=cxT$)*MJK|loujj;hjlKv^-r~5NO6P*wsHFbozAy=oxf4S-J z&uVmt7m&n|OCiJR0;&qh;rHB(Tqg3e-0)2d5rX02UUYTs2&@u28^c0wj38F_MbVV9jR)OuL5rBgap92z>~vg=6L>t4>S(9FDU z0xErh=|d{ss0$?J3x7Vyc+j?1)*;CShyIoVd#6>p89+rCaie7yd7!FeJlBs>n#*6B z$i&Jb&+chk!ZE5ELRt z`=TeW$4z~*KA{|tS@gQ##UVa$p|9Z{XmE$*jdTs|i(To$HM;&_R7Nms32}EqL-D6D z&<@@Eg{9$Te?EZPe)`EgqWOzTWGQ&G#~Mqn%H>@3EeSP3TvVM_%xh1@E-d;ZP%{WA z-S@iM%tJJBEk9+a8ndP|%3LzD1m*hTj#;sN;RD)+>rdNYnbNJVG;k^^TBYC*tvv2Lae=B~$+Z?RgBCa}EU$x^hvojkOo^E? zYdTfXvwVL~;$*nV-Xb6c(o-tS34PEG)R3IuV@zlprL8QiV+}wOV#T8!5uS|@xBK>! z((tM~3zgU{-EN!S$?>)++a(78Sy_ANoCri@t-vbV-E-Wk%NitaTG%4pAOp^8jYXTC z@@uFQb=F+^G5bv=4t(GRV2ST9gV`&);e>@GD<$v`{&V^L_@BtehLueZ#cH$4ufCKu-h|5H z&%+*BiPExH6g}R6O7KeL%BBydzF5wthkT` zUG_$Tori+P=mXC0&ldhAjJgLq#M~P$POd`Xd^_B#&jOc_zP#4F0}E&O%bxT6`WCNZ z^|@^sv3zITeo!B$$QYh4Yge(qt6yFBIfUMN^8hcL{P@2^Up;*2#67MW(7OJq&D%; z*9;6ljo8bbQkNHJ$DxuOdq7i`+yDyuKSTeDi{GRFTB%49)U<4ECb**S5m+9r|D9E7 z--|6y7EdI{hWa4UM%;_pomDQ7CXjszJ3`;&10C{I^UIkWM8V?IXCD3ge(q(xB!5Z#_8_qp{GbKw%yGhs4$)w&MMPTA}AE`Z}=r}fY zyG~O{u$l9E_bu0_7Iw+&mUxWfwJv`ev6j^2EEo9EcrvJ_ocAc&{j>Amm~=<=Y2SCp zLMnvUsDbgW%eg$~_4L>iWaF#!jyD+XkLa=BFq-X%YG)QL{OoJ41NYU8wHwsTOn+Lu zad_gvmjMRXl^V<;0aLvIt@gw12z)BA_a91+t2NbL7zo9+(LoV*atz#wbYF;VNr`b;DVOBmAxkMX z?HqfJOcy?4$AHrLjydMa{~n%fgwuxKDREi$oygGEHK#!>NUD)~3Ri(MRutSL42I(< zU|b<$NLT&E@VywO0Aa*bJ}(~`t(;lboZ4wZ_j(@QZH(c5F?q?$YCt4EVBaeCNf$YIKUK#+LS-f<|I zNLn(H>GcI)zDm^PR4KM;hmm6xqr(0$=krOOmy~zH=U+r=FaXUCFkE7tG!Ta$!;#QV z4$@!7BAH0HCRhG6)!O)N{pd+@xBMN^RA{YRB!{6VH5(TI0DB-?!-XXx4Iq*GVb_~8$^=Jabu z0Xy(bdevAP6<)I{7fk6T@8O`2d@_`!10ee8edvey+4n#@Zn80w9r(5iB$fhnA&Pm# zUx6=dABkzdjd@<9U{7-{aPK=Eaj}8^q53i5kezU9tkFuJ?beI&z^IKW&g^q>)GlB+?9vpXRDlmtY>!(TY;f zVJUf>sndhc2~j$!I;n3kWYLDfNv$nUSo|>5<1AONpNh01Ms=a8;@}1BK9_I?O67ON zLN0-d3q+4o=m=XyxHi3{pu|wxkrJ&~(uo}seG7CX7j@wliT>IJ;pC2Fsibcfi%V+u zK8+zc^`Mb_wgA$PEzm=E^QV_W8p!`N+l^qHBd8=Cqkc0|F(q?CLepi@@&9ju@N(NI z6{igIJ+7&&mj5MJ{8TbDepGM#6T-kWx+p?T2+WCF+h8%uMFx0)#Xnn56MKzoQ5&)= z``{L^kho@j`QP95#LR5yJ)`_U>)4M)yM->i94~5eZbHGyBLS)&q&}cYo2TBV&W?Ys z2<2st`Lpq^&LJDyf|9zV>`CcYIkSdO1yYN4C5hk!tN|G-ff0Bvgf{W8>{=(@okBS( zQEjdozm4!K?1v|I)xCEdCw!?>!RCwHJ}}S%ul$hflc;ESj+3 zQjjJ&HKKrCwhTPcp05n4`wQB;MiEUwtKA=%srqnKjfAqL|2>hrl;srIeqbShJ5X8e z=|dW1dN6)a-h4JFw9Q{y+5c@8yorq6jQTBKV)OuL9`C^EG2Dy$qW#!k2UEOUYx4Dp z1Kx3g`07f=K4xRNl=&9u+r|U%W40_(9IcCdy1%U7hAb+ygvyJIrYnusA)&BL4RT-? z0xN61jH)If&q|*Kq)c*g$TH@7yetOwydzm>+@RuADd+kYCD49XMXsawLdU#TlkHxDa#X=ReAlWMP+ zm?{qJqA)Q34i<35&WdRp3ij?iQ4~a9WIQx-flXrkBSV=Av_ZyKDW8?TgR7Z=pW8AtaDIAQmmQAHMff~ul@7Xsyiy)jt+fM7};hot-yUR?6tP9-2^I8s0|@P0S`o;c0@rAf)Qr@#!?t8p+XE+)us}I$R;t zY_1jAC|+&p8?B4bgVDCAgtjeUCt`zw zhyC%QBVl~hPlsIzTyF*DAFK-xO;GSQ^jFfo!>MA=&{J^qsA;se^ivbiH{p{^$rc9x zo?u~9^*EOi2VaYkw*#BLzU8$#%~*@s)0G$Nero?!~vvyQ2Lki3iKhbOTFX+gY5`a{6W z&b08=`dc^=n^B{Tx4?<`6&k;GlIG!`4nOK)R0m=+x616qxD%Vx@HXZF4njr=nphBVH+|{RBr%QgrL;iv#B{qk z%dq(1a%!eX=on!9iE6K`nWz$HZZ`ru<%23V-#(c$IBIS?a27nkrd?j5+WLab(7?gO zXzxijjd}bB2qx2Z1V{&dFkKC@fes6YwpjadKGT`CQbOyp|||4;pdF*d3&G4 zj}XM(KwZ-btNUVKeXW^-pk~Q+Lrpu$H?tW#K62~Dx&Cu4U3}z16ED$3HW0`Jg*(Dj z4Sv<|ZTz#9N#f7-Z5jA6DNhP(Mn^~JUI(^yhLxf0tNEJs-kf1AVUA5@4YLQ)izZ0|A^tGrDpc3>$kRCTP>oZsUN6)RC%G33$WT2w zNW+MXb~)6Au^W?*F74KzBtctFG0OT4l7J3;bhvfk@IbMP!rGlZfa;r4iCmT$KB)p~ zNtpz+OIj^gOpl)#Ed}D_^$3H#3ENV zKihDMii#-SPi}7PHFU6w8NVEV?M8bp{gGO1vAdSdG+yETfv+94&L{kvRy82D0rc#@ zVNQP&F)jm_YI%S+E2mpB&=fF>jljqnGAKPrEwZDb%NL95xbqJ9yPfyl-m`5wA~JEx zI{jynPp8oof|OkUR4De09xcZ<%&{_;uqN=%JPs=cxym#X`C!^Eprwx+2{QWtGl$~) zW?1(|?zbvBLZW2^+LtlE_F#VRPz3$B0mgo`}*jk_y(W~FyU@<4?xNe#9 z-)8hX{oX#%s3-Dnj!~R7^i~n;PuWSqp60h*6Rsr47jRWNn2i)iGo*6nNABeUDG$kZFIyTWXt3;@k85#+6k4idPVdfTg!~; z6c*!16Zxx+zb}RnQePf{c-sYTH>ccwIpqR07Na3>_4fGvC~qnKc}rhv5<1F@AhXzg zx-m8xARPnY3+x(ErOD6g3|X1%oS~1{rC1Y9oB?$}ew*Bc4_)Vvog8ilifF#`7Q#v? z&#?(bvV-hK&tp55r1Hg_L?%MTf(`;~Mx!M9=T!@QvP9g1LJD?)X#T(jJyfln0T6>Y zDu>$bE5MYe9{uWHa?PQYR)il-(O7_%pv3Y@60+F5+J5sCF(^EaF*Uj5z2^ZGvmBJ~ zk{Nt|B)ch}(4U%in;HaqS@+2^o_6}4GmHblKF9-svUWfxB%*7yMkJW7U=ZQ5UZsnY zfs;=KQncm-co}C>-&&3s5=;*Lk@6U9%PBipzlaX@`(Q%hgTZoGP{To%h`^&f`g8OLt7k zmc`61`-DenCxQvuyX5)!dFUT|m&0xBR<8jecc&(5Qv!x1bjs&gp_-c4c4^K zgHv`q&ed9!jRAtVER*}W$dMM&+&11`fr@lwPG@ur^*07s?If^f+C6&yw0!W8`c$Uk z0fN4!-Fg8S;t1VO(2a7F$2L3EE~*`{cZ=seKu1l%1)Dzrn{b>aQ0Pm7Fi|Xjx`S!@gt*uYLTC`WYK?@HuV030|g~Ly35nTe=_82uy?S zc0};o)k=hyiCK=m(q>+{h*hYxxEp`?r8i~^-e@iJFXa< z3g-B}Z-O%%K({yik_7B{7AA*2Cp zW9kM{Q-)Osn>rKxBUPVqe z<&8iLHWrQ?GwD=vw-iQoF9S`NNA$F!VxY6? zkjz;iN2BFRv@{6Ma2<$t6+cW(f;Yh)m!1odY-*H;1RQ+hLkfy{iPLiD&hrKNb)5Ux4ju@O;+ z>y|jw1mmg+m4Mr!tJreZet{3VgLSnV++pK0I=B+dkye*k*oK7OLRY+=01w2*rTeIF zD_l{A6NWRCu7L0mTTsqLgGSS>F;XvuSh`Nv!upPF19e@TU*=+Rj2z3aa-gM^=r{Wv z53O7+d!haY4W*LI=P{N4f%C?!sG9w4zvXv&B-Nq4l$NB z@MkWO@CsR?-Ant=54IINj-v=tkx(tbd)p3bN>6RzJR)-c)o73bBvjyh%M3DZko7wN z$H!HjpUPb#He4-oMtBGxG%nH~7`V|^*7faJwKr#_U#^GkWI(VZRffR0l?ivl(Yt;v z+o(dVUhZdyAPkyZO9Ap6@UfMt_OCHf)O#-&cJ@~OR;m5ACsikG?&>5L{?oUfHj|VT z0NL{j?bE$JPj()Wqr%L;K28U}V7H4|x$$o5wP&9H%h!6C{V=h-^OErzbkbgRm9@ib z0Sh<=)(SmwKj(jl3-^vl&pLplo^*P}z8mw+5Y`ik(qdAWW4ppUsq?scP@KN$-sL|H zY5->w(@pV9%#U#YTSo3%|m{a7wd@;pN7)EYZ1z#i*6AF9n=MM+Bg%O_+n|r+UZ3poIK;| zBlpDn08cu$*6p*3`69`Q`z+tye!Jp*BK}b(+4$>o6#<<9I7W*}Uxtc@nTKB5g5q%A zPTYuJOnzBcyHdrw!HOEwl}6!@#55WD7@JO+U^-tJaCE9)>H(IPHK52@Fw{o;o#|Sq zrc&)$V~AA5Ey4XqY}G8RjoH7=XUTN|_G-A{c^sApRXpoTw&$9(qbe%A`}!%t9=(kB z?kP66FLK~Aqg%1`sw*ZzNq1`&-SNF1C+9o_PCC;M#4=);l%jwp1=&a&xx!K$p{R^( zdaD!&u{y#qB2TXg#mwWV8&FOw0RDrF%Da?jDC1*{TEH<=CGJ%;e^=JUGbL7Q6WMu%>)co)2WPIf#_LE0XxdgvR z$)ok0+4c-y0r@Me+SCT|k>h*#d~ z-yIXc(M27&R^1~J9mI^1t7tHyRA6jNqU>E{$Hx2#WNHOTdu~fH3w0#y=&5%YAU#oy zx*%tI-Xs1@Q&P{r#GNl{$tvGOo5-2qn?+ktI}0|1{br|B-I%O`g-}PQG%XES9dDeB zZ$%4#A2PU!GineC0RwmgR9wscU`K%w>96rqPq*5Rdro~qqZFDrGI&V@{q}8n2x>I*hkLccmh0F6yij_TC=yL@9!+C!wbV0c zr>+ADBDCB^t~fbu{WCmVjKJZa?5h9g$C5MvBmh1UvTeg*S+>$^E$o@hAp`a#53F9-K}VkNNKDdhRk25o^`7DC z?6R%@|4*~30^TQ$+(enrloUmVR3dVn)OCBkHY(s`*~FLd;ITKlAV;wFkpzS3)#{F@ z%mvQK>^H5BmvqZljwMuNtiHE679S076j3rNbEXCD0R#vqo(>Z04S%PU*cMU(tG~D0 zYIWF6Y$I{~)RBf8owE#y8Ez2Qb{dn<_-KF8R@khC;s>*kBW(9*e7#*qXj$-64t#%( zQaT7|lDu_d?RSuE0-jV6Q24FbT3;YN6rx1W(`0Xb<>S`GH;eKT0f_KqlhZC;axH?q zPBlwJ`Vc$w5YtIR^szaaKmb9>4C5nsSakV-aStAbo};xjhE5EYf2v;(W2u2*(>Hq1 zItHg~+$wCH4bO_sD^Qv1AKB}7H-5(-TyvnS{D-a6`Sm=;ot9!PbI0ee-rU8)NVxVt zhtgw_PUHm&0VpuH7nnzER9z>Gk+<-3;|@8C8+euFOb}p6WDsKE5A!ADoTX;6Vv_hH zV)$Y7pE81^bQ$rbd-aRr?K%S~B{@C~zhhit~V@YLlKuy%RoUije#X?I?X%h>AJ7lF=))$>)*<4Bj z@@IJ_<4=;K;PqecftF=eP_IgKrd_g$GUh%&h?%ejeBQrxok)$KK{?Cyk)-~$3$H!& zx{OqjYJ%!a`fG!E(#QwK{&9=!j$nou&-dI~LuYhVTa8E7mFoGSqy>yV3{4j5l2Sqb zbEm`8pyY`^D=30_#5wyGNn5JlNZ+d{Twe$OD^(~*VSEtyF^Q*d@9e~J1@^BF`e7V7 z#P~Oz-BwS+7VXIKHfj!eOIv5)z&@6mx2{2Eh7AVcslLKT%d1rnbGn`76?~AMy>{ct zv_BFd2b8WtT<)5ItmYt}Otb@{xTcywFPL%xh3zO0q$WIE|*spCY);=FDR0K>XHd(zuq7T`f8h zCLgBV&Jsvk5tN)Lgee{{b}#5pec)U$2uEj!kH`uz!ry8lRu8-L6QO~7K?F%QG-9E$ zooxWo>_tH|?igBfLf}VFxu}Lt9p>Ftx0u>yyDf2^M>t&}t{zDBoMmNW>MB2p=jZHs zO;rP2Zh#4i>;WPzov~4**x#$3VDf=DwW?t4WcaugO@<)mX4jsoL?jf;t{?@4XGYZ}N;5H7)HOOSFwxIcjO!cXq8oT?Jm+ z@K|}`#uytS9wdu4JUi-aBz%6k3m5%a)ADM)QtU{rr`D0oB#Z_qWVwP&KCb9VWJ*Ir zRWRa|pT}T=?a^^@M;5ekrO#QLHjEb7Ox|CVMTG*{$&~NfPkHe}?5D!3*8632)zGYdo#dkt%^>$kK14;? z04cNUpPT8g7Nea{hgr}z0*uw6^3~UmMGKk@^vQ%;y#J~Q`t+JtJG*V1w_n0}>yzCB z!oiXiCMf`skwKR^L`RYg%#g#SBSi`+7Ym2ax4Nc6_s2q1!FPYwMd(z_k4#ISh@P>= z6Z^mJ6VyTH^5y=Rjz+(EUcZ*p<;SQapKs4(C>CyO7`Z^v-kO1UreK`Asa&Aj_7EFk zFG2JpH97Lv^M>Yz@HGPVIzH@=o=Ja#%L8sqH$fThczFo$>Rwmo-jaIAGn;(z`fN>!Gu^+i+h$Az(usN6xELousSZVwPDk%vLpW43f>D; zzLaY~?`dkf1&Ir-(F}AJ`Uld<0N*v@k=9x$0N*4#Hzv`AYm%!02?@=4x__IJv|r=q z$pFOh>dU0cD-YV?Y@-gDIo=78odIA@B-d(gP06K29!6}hAQe@`QrHk91(=A78@)d3+Re5 za?x7I9%weDAI>n#F3V*#WZ;}iIx;{-a#HJ)6rGC(cZF`rOrla<-&g*pTlL#16N&Lx zMnFKBCl|L~$HyCIx=OA!r<1`@&afLC)Ul2(XeWaunfyd!i&ta zV>Jnhf{27f54rZX#~GZ__IPihm{HhLyk`45Kbg2)*VJYfH(U>Cpz?24MwJ!uTZZ6f6@x-_+tE5pGpf%^X+>1%o~W zM1NE><(a}sw5*e*bOSUk$$%(smelJc**P|m#MKTDp7ugy`z9IN+aV)*6 z5~>RQnrTB`z$3aI2#P+e=+<@FPIM|t!|ss6KO9mYE`}c@3kW&E)<9a8KOTi+wjm%9 zTysxZDz&f^f_DqNIDg4wAqavbcL?M=n?vTu$p>QsRS&ET9Dk7w*+R>p)i&IMW8EVx z`u2(QwMI@vH5BX5MK(ix(0)B)P_&~9jRXx-tyQLp#AM>LW3lHkQVGDhxgdR!+A2$Yx*k4 z62hxu=i#_=9`z4IkB^!FeM8{|+=DQAN}1XgX+Rd9TvYefu6+6bx!f33h$3LbwaKZ; zas}T-BERi7($lled9Owt>YWZu+!ognzGGZR-DAjznx$&BGA}ZWz`9RZU zhQ2!pQjj#~54!`)f;tLiufu@jz_aK>|30DRppbYXDxVB!x6*$kb&yK%0FE**czBD+ zE88S+U-+o+q=}5wA5Dw^kSgFP?_=^>qGAyZ2;+@75K@eoPpPshnex{J+B6_G?CO3p z(O$|J4isiwevkY=HLxP4u29FrL4@LZZ5SxrQf&U+r-^8q^{NP!u&v+s^IYP$sRWnR z$+JYPHymb9+pJbTe^v~Z_aEU6#P0vjNh){%ls;8<$F`*=)BIHtwx#B?LR_X0ko+gS zAM-1!VDDUs1}t%yw6p5~uJ^gQKMhmJ&nk}Z)grN&2#xyKM?z8%kV;1+05)oD+hOs| zUwS_nvTR;6&Z~Q8o4tU_g@%)K$nF;bo#69fLFCk%F0Xa`6X3`{T(Da#WUr`qwk87W zLb*Z-_~jo*kAbTLx^e|`QAL(LP|CYywq|P}qIH__Wo*03b~6eXVEXNg9c@W10L!D9 z%riuzzKgwi@5+7CZKbfC;rD(}FNf}$zKp7UO^TaW2Z!ycFAAWgC+LpX)0g(4@%IBW zjTyt?q_5hI50>z#T$0&64kFOw^|A9jg#L6Y{7h=5Dlh4VEIfm2uzQQ}IOFZPt3heX zXG3CJ(Mf2L<5fGHWAYU%vJ7OJX(=QV-s?(W4bMvAcyv>{R`E(f7xr$~*T`c|{p1^( z!$esLCEO{=gyK3ChB5$_@?Dh+-FmzE>ZA)e>a++Tz?6&5Sd|s!K9bo|ZOU_z8 z%4N<&Kypr>u1gKf%9>Q?BL)6Y3qozD7mD%HaDm*KO>oo^`buF5#*zZ{oy%GJZ)GTv zu0ap||Lo?+xS0Uq^v$Uy^Fo*P-es*D1E+(}N|1rm>4nEkCb&IO>8QyF8>F)W;208U z9w;qcj&^X%1*@^a#VJ&8y}M0Qk7>nz)PPHccR68I3oa2k*MT{dykxq00w#?%dY&O1 z6&nACxxGa)^p8{(Tz>TM6mdeUJjYsAVj5YB&Ork!;b#@uIjsEgR*^VUE~TLH#oh

L1f;DAYBWii77?{zh9*TN=IPjj7NhBge2wJ75^r0v zLz71RNUC|_gQpEv)~Hum$2FzhM#o|}godezIUA6TMJ5mrY77xhhgQV{MhR0cj^u!! zpm=*Hk66a%O_Y&DFW^_YjvW5w_3#Jd3+$85>_b_rWV+)OF5^?%vbq<1Fj9%DidROL zwieTz1TaZd2h};$cV)kr?Dg^{TTeo2%{ziL#`Fwhm??LEovo@9VK`wllmFt#OecZ>^i6e@3CdEv;J09kz^Lz2jXC`!MgS zf`9CmDWsiXV%JT`b~5Gd7Ag&zo97RIO)ENyp|c5!klnG;MD=8^Wq^aB8EeNYTxm}& zTCet;)mNfnHdsLL-G#laQImdem5aBbXy(RwR=0kI3<17my3X=)0RKM#!1ydUKdX>4 zimUzpGUbsq{@A-J5fyuz@p^LaBL$EdAj~v-*Xl4$$eJ+4I=DSdDGY|;=OaK3gt6bW zGV<}C9;}vginQ}7Vk&|Y{lc!suloNp551m#mL z!*=6FLDjY>+%d2*HL)}mTWdLdC5nF^48`;mTK+0m#q_n{VeZi`p1yO)Xn+J`>l=)0 z$ogK5$;wo67MDLBZ?uDzu|D0NJ}4qzVq=?#FXF-0b()S!ueohDfchgy#oUkZAfu5a z8a&3yb^}7Rj>U6uHb5|ox+jPUJVq9VPS-4LmB=_u6P!z`A?sE<`ZfYSu;EkjE-rirq#`9SO6Y;ozYLuC1}5 zc*!IXMYri*+3aB-ogj#qc_tH|is4WEQdpJ=t z$@`Obsgd(CG*9S)f{tUDH$K|@6UiBO@vVylm35V~zD7YU=Bs#Fy_da5k|#$}Pq7#V zkFtMyS(b0|nG(I~J_s3C&6ZkphQWGJ4oRbil3rw=)Y+{o6sMh%@C zBJv-tfpLxR$B@ndGkm1}H*cxUeq$yM6h+3$_#*0PaLnV4sWLn>XM7C-8MeFFxed@x ze&0L!e~PU|55}Y5OmGL*vYbt$-(JsTq`0?{GxLL%Vj66;kT+-Lt(Y=`RUoh{SigCg zvS&-c?O<~L>F>Lbmw9P+DMb_o)D-vWrKpc5acNPvgMix*Cq&d>JgJU;al?uq`nden z(P53SKw&GgM=-{^P&|QFgiRYO?usW8w}Vdea}N%ZON^FGggK>gA3EgfaxkuvmobcA zah->sV@yeA*~i@=T19Q5esiRgTU`u028ojMTnvT5n91lqa}Pc-3p`L%-~-z!*E0@G zYsY-$R95E$(6XKPQcJo_O#C?`2j8X(OzOK{zk4;E&tzih@L2y=MlBw(EhC?_Y$=WW zZb$7}#y72llH&&_n~1lcaq0ZXHv`O@m;ebwUBFeKL?aBhRD=^!e5&4QUgZ z&D2WH3M)AueXaj`o(;?bi|SSA2!e$0$-V|~ZiWAn#@|r5`w)KCf7;$&zO8=wNZxM zX`{W(?>S;g;(M;rbr~T8Q5a5xk6_B z`f-$a)jp#@I6{Q8cJ;i0_Y;goj;Vk7b^Z;ir;PpshsR*RJRnxZloV%Fp8}-0C@9G$3U`a`P4MdAWiY0`KE>re@^i{tg(6Qv_Nl&B>*(lf;i%4aiy#_1>QFOw>w<4%#Xf8?l*!hZ6kj7OGZH=m z!5GOMLD}|-JM4DsV`;FBA6B}WO9^K#U0D8gBA_s8$+$T!zAeH-n8YQ72B_H?Gs-j% z*Vs^C*0j~)5&t@7o0(T(lP78_SI1laj6(o2|IBYTG-z)@Q`czoulcg*$_Il=e|`Gl z%$>BAw2bmn$aqEy4w(mVw20?56r1rpXR~T2U8KQ)fLXsB|$v zAjK4ZvF587H7@e>*I10^(+q(%OJQuCOw}k4KOI77tV0A zfCcc+u&?+@D~Qe#ApnArz*1r>sUIt~A}GBemjd0ip0&W8gH-XcA529WohXBCl+j2yZp7o-1C^zl9TAhYVv#hnplBA+^qb)G z94<-lDf40AHV;7r->quK8H(;AadABFC(O@bQFlxiqgXYtLI_qbz_RHbY@g6 zF5x`oB-09CzC^*7DTK5H1Q|w&Y=A6VD=6g8mNwBoPVpo=tdjs$t-j)F;llwQ!ZKd^@_?goLBzbTBPX8-(e}CKR%0 zv?699BG<6cT{u$0C>g6hyeem=uTr@vNumMm!Fz~Z{FlVPHQPQX^L&Xz4@OFTqtSe@ zzbyEJh&XXFZHbyee8;cQJ<1B<<&0eU5Q-H8nJ|% zugt67F}w8C`QHrCj*tX?`)yo$}Y?tTYi_Jf8+Ik>&1egN~GbGMe`x6mE zYV>xe`06^voAO_8Y7cdL8Gz#W$@VYR; z--~NuMnNHjDo0&4G0j=$d|w2-yF+wIn~pBKg_G?zcjg^V>e^%%TcUt^UyT5uG^{Da z|LWDW28vfTIwSHyKu}seu&NcdK@tqQRBdn2*-~491o#K{GQ_dv@zh~-bKQDd+Fe?3 zgY1j=euHG8<6U+Dk(fu7}Zo&)ooN_T7!2V*mS7Mri|cVGXq26t4e zW0k=eNRw{x>yG4z{Td~(TdZ^DyN-6XhDGH%p8&uV!x&KhvAAZnd_pEXoZS1i^D??} zWY&&CAaGZVhny!RWT9tuItaqeJ#&SgUNeM|vOalAWlJjJE`tPVVtR|;Ri9O4ppT4p z(=L<9B%$?`v%g6me_`av0w6M({&$JXRBY8qwzNyBNfhcNlhd@=V>xq!jlq5x)nB3c zkkcv0wW!R};yXTVJqdnKg z_$$54{$y3T#OKoDc)WRGo_(UMQE%yJX)9>(mgd;RH+)eNuvYGHx74Er&DRS*HLc?; z0>b}YM7|-<{NCDm4r0qvssgR(#{v;tZwS>T`P0e8l!_GC^Qz|VKs_%mba`yYEBRqd z$}lPt!plQP9w~X@V$@4{&_^pYgwwc`-ENh1SWN)gr}CTuO;`eiXLmqSpaQ@!-P;81@!5x6 zpLfh!w5$EWShf>b;nIQMl)=o^kYsN;kOoAFH27p03>OcpF7EkHQt~|kLxP_rqj$MX zx&I`TiGyuf$*t>A4K}#E<<^iIcwvp1}_YD z&#+??qm_gz*}W?~FL6s+ius<|6p`^8(XKu@V)Pf3un$ga1i~YZmtBq!-JL4stF0a% z5A6?*V$z{j08~O)CNb^LjASa$#v_?oi2)fhgv9at+$JoJqW~hphfwB(gJ2xt5`7n< zn)bL&#bIu|foP(@q%_6qvWGN;NZ+|@04W+h{$0fo^0H4XQ?Z<6^i!yFl7=FkE%U|E35Bp7Y2lCIn>+UkfV0$;V!`Q z?kHBOr%tVc(KP%V&Sie7SQ~aQ%B8!ajpuNRgYe6!UylFU=|&<-2)WB4!q}46n|@i{ z|K6*uN=8%8v$SO1o$)Xk2>jUCVH+m$Z3XiK%8a5l#7p`KbUHD*K7NB zI!O;IG7)y+u&i!8ALptyRe@~#9p2(j$<2A<##Aw_tC+P%WhLr}_Ylc~ zR=LC&vOd*=5*-4(#uc$eNeh}FO$YRclj#3hqnA8X*KE}~h#(m>hmsgQ&dFrz=zx3B zCx=>u4cv)t@?nSfMfNCMod0(*z46yMb#33$*%sD~u;k;%6Li6g-wUDbN>K!&Gfn98 zUBO(6&v}3k&RoZ*J=9&^19bL5g);|5YGs~6N|*_mH)l}2+|D_a>sn*(N`$S}n8gMuQ!r}eM=!?=(PI6P8?|dn2Lrok*?#^I%#-vMNXI}vUq|@{5nhSt%1x-Y zEdanmCFmW9;_oE5G_dDs3LazY;;`AA!{H@!2;0d?MR&W6gfzRU9BD0{$9zxrPYgU2 z{i7DY5`4OzY>2U9J{*RvumIJXM~gHVdcbkWaZSnhj+6gYU>N~X-h%P;q~`gyLghBA zgIm5C1Nz6DyY41J&#W`Td}b|E&z5A|p^PSk0t`P{qrkpvP2$X5$ANZv*oHD=1|ifx zbDnG8p+VN^of$koJE!9V1W117+p?Myb=K$+Gi+W(R)R18?Tt323#=9Q!}{l^`bRX) zi|eB8_1J$<147VHurlrED~rwqmd~;LB{)NB5i?0oiwp?Y2Wz3A0HAOD=1~;kw<}LX zblf=DIl{XIa_U?ZhG3Ro1xZl7*B*^y(N~`JUICWs&0_3xBzf>1=TiJPRYN_FK)I;f zXo0-E`{lBM2hyyn=QIyYz|ise6Z`kxDy^C95KwDHCnm)d7WFfOz7}coIX`V*$JG~= zdV0erKq=_=Qd?sxr$%6X)lcnxZ)N=MHJ2@^oP_cOJc@o9S>c86)`7N`mBCPnBhM9$ zeG)mAevQU{UASs9pltDmse7_~C|W7SLQ;AF6aJz|8k?= zL299D8CQlJ@Mk#LFSuwU^)kWFK^3Hvi6rjR)unDJ(#DraQQ2*_O99u7;=p{_H{?J` zK)siv-3PEFvqb<35_ggRtKiXwU?kc!bt@zgTvQHxV3&bTl3Qr=cgs6<`ES$|9WQel zTaYfet~5vrDE@p^lE)b*zznk;V`#RyEuO~r)6fz;de~jkeKI?7hvXx1Q^!9&fcRe3@Aw({Cyg{avqRAXU*!?}KaY-_e^k zWG-dvi#kf+5iCQSUEQOY&zO?507w$3L%U-i!@_kK;Hf}m|IZ6+q8wSBflZbgfkmX@(bxFz?$Wlp&tU06^WVIx4+*31&;80&d-_n!3sy zOr6X!XEoWC5bsC4(bgR_hOK$rLxuWEYMuwZFr^9unpFrZcU*wen&Hc7)61DT90q&R zR*=cyvUrF`WAy*y8Q_H#oU3&639*84^v;(Qt*9Gbf=faxtXQSornz-vzs=sQ&JMO& zo}Wja9u}#WfI3vqDNS0fl9#$N3DH673PsD7DpF18kd9i`;ETFVlVVCuTjxvzEwgF4 z5HpjM=Q^DZ-CO_4#Pb~D(n=v3Ng@cx2cKz4<~{+JKOphPMqxrC5guMIqcBpHV!l*IksME>{fj z%xS$u>V;^?ua&@8G2O8>{2Gcrd!uQ{)@Vwo!OAykVK8j+cmpEnW}< zsG3<*A%;y3p2t_PL*eK(1~HC1yUb<=Pu4uH2-Bi9pccubo43VqUzMz7RS2WQ5-$&)cUqG zhT7A*etS1Nyh&$2!Her7%Z1omKp?awK{WUl&&LYa<%2UB zn&(rVsD0*2(^-U41i&B}N-1#0hw03NJ_%8Oxf0$9LfVrLz+P9w^qz)j{wImO`Cfu+`v5p7%X~+P%E;Wh|{?@Sn5&yq-h;v;&H?SUENGS z;)rkH8XEM07Q?#y<&TG4AWTST*eJbvY^tyZ-wDZow9BX=Kq;h)Y;qk)c(>uIYJl2H zb3O4>&MIxjP^RynNn;JaJLXI)MBKJd(O0>|F^54X=~XFFA_Kyuzg#4RHUPHKfpk~! zDPDF+>E!ic5IY%z+bUKpNh3v{?U<_7OXc5ma!e?g1eh(cf%6U zd*dtYn-gK-Y;cnAm`DjY__-^AblyDoNHI>R#S8gp=<(~6@YA{sgQEzNcr*)oV9Zz< zW2<_08GI=kSJkad{?a&hpK65uBp!%0{@1JWzq@oA=!c}OfDoNYx24>JA4bmJ$0K!3 z9mP3!X0X#bFqAifM+p|aAzCu37)1IafZ>M8f49^zBJv@a{4MdzOG*OvIy|vtGILL2 z)Ap*1y9Y4er}!ti)$z7SR1qmPM2mJyApY?o;9lSJ2aYcV*C>5hX2|0}k<4uPfO7%T zPCA@ij z4j_l=aGonU?hh9^gl}YX&s3@nu~HU6YnE-S*?Yl_>(WFL#t}v(p?omto!VvYMlXoh zhxvWBu(=SEfGsbEObRysFjQZXj>$=Bf0W|$2e+da5N{dd$h#Etc1lL;~rwiAPDcRa0Ra0mzkr3-T=LLzu7t&6d;lXK$OgB9D^ ztJU-Gq&4?N@)dsiVd%jP7}ou~N)ME*UO?_ohiU3`!_4c$6*|5ft%e=J1MqE+JFJj{ z4cU&M!FC#GxfW%f@}B1*V3KH78;^Qg$# z5^Gbiv%Fh3oe8v+m^~y-zbLdEt#``m-5^cEFwXrh736i)jQz8*AQUaz8UERb36}(c z_;XisPRb(-h&sQ^PTR79j0n#wQ{Yi6 zY+rl3oF@_GxcLRaI8Tcnz>^pNdMJ4bR1$-iaCSGkzv_#fVqA>SMH%HMwJMKUq8N3# z(4?{DYF#J;_C$jCwrT6;xTIThZNS=KkJ#nQm6hZ&d{{3b=|Sm^2x*5u>dT{p7!TA3 zns;BbkoOYZYO`SVx;Y;yV6qsFjR3>(=HJ1S{A*B8fsi<@BW%b={rf9Ud2Nc6ewY@J`tIK@4>U0Pj@0!7MFY?SN}V zQoF^-Cek0iI&uENfeIEVPUkTnIy;p4x!jD61>3};7a1I!N+j%^OFOwZjm#BFT#7aK z|2@`D#vhwln<;5_Pd+vQ7MCWxdD8*RZ6-gHR)`(wv~8e*{GG0f8cg3~b1fY>LubLc zDu{!`G(7-x_vMotlDByWTRu0yGFRTGYjt15N;}n$85MaT=VTbXJqmO2mXyu#pK=1_ zEx@!_Yq${r1Er$vh%ETOG*NF~bqZ7OXn};CldqW6wuQywjmkdEj)~NN7Dab|YFfg^ z{M*a{X%_aVW z6{5dBHa_q+SgGc&G$Yie@)IUWn*G15)(5*6TZdEA#fv>)w?kn)Rj% zP)IAyWeVXVAtR~h@GrrM<<K`~|Xl!K@;DR7=p7kfKM zR#l-7<~N(wy+atM6`8h3eZpE%0=)^CsMCTRLTbP5yJbW2h1u3kL=RIxl}#dyAh|zSwhn zBRyHIam3ANIqyT@7%Papn%*nv&(-y#E+MDvT7mWH+6ySBP4=2j4*_=F0d<JL_~*mZ^eE9q|q^oN>YR8V1IOD?yIIm&AVIa2twx2a3it zQ^&YkRC;YdPA+d*a*&kfn-Qf{Y5-G9VQ>|wlTZv#Y!sx^toQ8d3BIyy>4QE!EZ$L} ztUJL?O3_j4$nDC89@-ozk8|H)kjrYFH#kkd_7rZxQqO=81f2pMCkIP#kM9d0w%Wzl zCV@}zsr^{VQ6Q!xmqns@iW@kyoQmP!xOyQPpB_$sPud zXi6;TXy!AmW$Bj4{(RS9iG>y)>g9z+>yDl0XIs(C`s*|R;dI=YRXh$gi1y*HH!gt4 zmPHlFKY*!sE<>A5t}sga*XzqGh{`>#`E+=b%`v4En?QnfOdcgH&Kl{GgcZ0!6#!hE zvVC$&YcrKEd$W)qM?3PDWG&fx?0cfp7oNGA929uxRw7zI7Cv)uDo!&`Q5AllpyP7m z$6^u{NhDpC=PblZ(JnQzb~XHV%SMHKeDW97iX<7$qoE!UuQxNw(5ZGdXua3GZESZT zgSX=ES4LAt|D5h2_JQRZMK)2e@JFl4*XrE2z5Lxgaz5;C+mk#?_^AE)p-|odN5LoU+C?8xh1&Z5R5i$8g8pCZ}c4F_(qSR^fxK5VcE z`UlR>c&2JWPfeb?F4-iO#d`AC8B?S9AYyBD$gw-uq@d|!{#>&rsUNp+wkNyHU%Jyz zTUiKwuG}IZpp$H3yt=Pat2y)$KABaP4QT8wm2trOH7iQ`_od#AX@^wUuOI#E>fg1>D#4BsW&qd~MFqX)=w3sh3%3_VM2 zERF80rLGmTbn#nFq11&tf?}S9MO}X+ZWXXQ)AsSw)y6L;v-lrf^x)Yb)iOckY0zvV zu(YnPn+P)l`*_r+T>Y+c6b>zTy-*H5p>xEd7DXw>>lJK2#Q_9_KW-M;=?!$fU@fIS ze;Q>H+Nsch6E-M+Yz#j1BVOct_G^$+i7u6NM^hSLQx zBN&&+mvzyc0$I2UI0faGirS_IA@>j^S?ZD22%d51^!8DWNS3 zr^deGS@b^tJoTr#+gF@LdInu>LX54WEv8T%h=nd=RGASK&Jc|=KqIw5=bHjT-WFl49M@X^H{ zUaPGZtuq4Yq?P|FswIO*hr${{H0^{|K{kGJKT}P1a5sf!rB!gP(&8!zt@#qPY{|}m@+;v zdC&3-7TD^H6`ND<*4K;yf%ZL$^gb)5)<^h#MQw2@sHJxTuFGZ z-iYdI$d=&k>xO&%;*Q(ue|kJnV^V#@+HxWlXY=mxE&%L<%NS@7n%s)Ebdckwf;egY zHwI>!n~r&|G%!Iqw1k)s#@LFIW zTTbUzQOY;KlPTAssW~$=YvGr2%?5%UC#V*|cq1Fllu&?FN^RR}QR1|{n2 zYyOc)5gE|BN?=Ts9eaFz3%IU_PCEv?=VIzoz;o6IDu)Wzj2`ZGf=2)arXFfbyrZu&Jci39dq^G^5A%O&$Z)6WXmOLovlQ0KvV-CyeX`HTX^sfpXG zc=8lXpO#bA$}`V{{Q=ClEg@NVVr1v0VLr5W!PPOd9h^6yEFtx&wZ5bMt=;SR@i+}F zziwz9(n(V^m@ln!B&}p{oJU%9(T+75nBazGTA5ef-#jl9z%U83%S7gKT2-%DmI5)6 zhDj;Zr#J zS@~)u?rzvmzDnM2bY+n5NOlDs^b7?s>w`JDxTsa#-x5k^uzRlW8o9jfn>=i1^MihB zn6Q^!`o$fd>@NRvimtC zd_r+b*v)?!259t2rzvrKps8Z?7BeD$m=^GM9KBHsSNeOGqqCHC4%qApa=;rG!hn|1 znJD`rwZCIYXYCD%diHDoIX9z-KdVC($F7|;{#7V!^pICD;I72Z#yXhOF>jUELPsCB z?bq774~?g{a}p;AZHDz5h}wh*LR?tbY<{s`e`f_v5eTl+dBQs!1jcEhRK@@#_{r5aR83;lPOd%Q)$HAS27UTuP$hAUO`z zo08EZKkxJ;*f1W(HKPQz@5e7a*9H9c1W~Q1Vx?TSSj)&E2BNm~E$P8EPMs;<=d`nO z8>7cR-)$&Bfp$ai4_HA8aQj@nS6heXtsh5j9~{DV1|^u0VZ5k=qf*+FaLD8U6z_yV z1MW=i15H^L@T(N!D7l@P82#rqxFvv%SM7pL#xK0|mlR;)wF>B$MPN_O=*O=@qTY23 z{R&suhepMNsaKKwTg8^;=fXrjBulrij9LT^zapx{|ezOL$cck=yrf zbxOuWmAe@fL4Ej0F=UnzgL40cp-UFgi7#Co$D<~1%COn?bo@D63>DJF>#(^^GxIx6 zG#B)6@?K4Rn-Cua*W+>pjM!n|sYN2|+BIV994igd=pMDeI^OS=8VXqAWn`s=q3_!q z8S-;jlc~YDnp=Y!D^Xb!y@#X~!n}wRMS6GYuz0jHlcve(O!A(r^z!4Bc+>}CPHb$` zGa8LgPT?w{|5kSao1ZGL5FjG$M;yXQP`kcI(AwC1hXh9=F-FjKO_{0-q ztJ92WvM3}+1_^mCMN;5G=y%d!SJ9c-W0@9UIXHaDVkCdhH*r0OUNZ){da3 zaeqUg$67}`Txz$pe&b{(*kktM^8+^=0f?1q3ZLQM4hlV=@RUJ`m0wj^&@fWWIMV}b z=2=NB7=nLSXbbt2sY0R`un`$ywEPxoye!kN$xu&%zaY!zhH$>flHx6|a*zIxb*~SUcl+4y+ z(sF$fVSF-+p(2$~O=&azax0Y6=bOyxll|QC)+{3mQU8-h8m_M=nna3bH%EL64=!$r zLf4He3)_@sU&IXdr`@mBuh92{W2@%jsbnxF&4A~tt6oHr1TIc$WetaoYJggC+2FhH z`5$JC!pgLw(9*&%9^W)ob5USCwez+AOb1g)*C>T-uq$E3S#>R$s3oIpm$g-UK{b7< zg;s#wAwra{^%Ov}I2udB&XQ$BRJqk^0{65o_~CQz37DW*i;%f@8)IB?^DyllelPrK zIlag*@s;5>w`fq}wMx;IxhP;m=C$7E$wq_6)4*i5z{r}=dKo_*s6+&`OWS^@PVR3+ zED`n-*#)0eX==-yyQpD<$m8JgP5YOxZi~a#Sz9|zOof3X24E40TfM8Nc4G})sC|XI6CV3z zn97nck(r`?m@3LdQv$0&p(p4y`h+2U7fw^T<+l7#xRzWSI8(2fRwef?WhoB(5*2U_ zuOqF_horw%{A0L`a8Y%(uSpUr6X3H1A#wZGeKolstDJeD0B*lOqWlwbr+*7^y)jx5 ztIu@=*3hu_{-omp;SX|<6y%6VC}~P-rUHfpka*$FgysvUVXM3sW|eX+%ZJqew=zl;KWo6x z%~rXI)7g<$e|@lIFj5+!^<8#-E2>0{8&H%RGL29c*)5R3&*e`We~l?IfNDLad;@&MnE)Wv2`5WI zQ|UkkGVW+*jx=@QU|;#t>P&v#nptw?VTd+-h99=}SCfiuk+2!6)CJzUC{!inq3FAN z(`xs3f8iy-$31F$n(eqyTV1>Yj9OXxz=5OdQ$nfBbi4Zq>h|-R){6!L({O?F+7<~J zR)E2tn0H=Tgn+Lwsjhz%n%SDe#${wRe%yt(mN&+hu~uK0W;2CfKR+QPRA5-?pI8cb zQFo#m-7NfylyzH~NA*UG&EB1;cR;*(l$$#)TgfFnniT#<52TBZ1!L%T5|{QL=63gy zLbbQ}{Pajf{S!AO!4B+8zA{ZI$+lB25vL_g)P;LT&`_$4ewU)%8QLQ6OWi$XTbKs@ z<_(~jt4N3kYPW8ian9GaF8+>~M`&iZtG7O34J; zMkh6PaCJ#h za(D%9&ydKPBoa&_DSmMMiPf2?toq}dD)yb~^xlxjq*%Et&v6O{u__C$ow)&HFgFoh zVGf7#iU#76 ze!S>?X?aD)kGm#oI$qt8pw7`GwK5(}F*!u9Sr5FIjU1n{|LL?dAQh}f8y;RG$A>t! zDXd1i3MpXrOXUs(|MdmHK4(N`5Rffcxu>%~gEs5I7UD_`Z-*U$qJ_9MIy|(LCaWkB z3!Mar3a~?EZ&JD^80RUqa>mVtr9b(bVJ)i%9PA0(;HjUPnmMZY!4{?Hn}n)qO+4H; z+CD-c1Dl=bc8=NVwiKTm>h9aMI7W$LT8l!G{P)Hhz@I3x@+~}DWN;So~yC3(t zq|;}0`klHE4W+Ym*?UAmILT5pEEkFr}R*HPW8|4U*UghgoE&luKnspYO$f%qohb2gM$83Llu9r?vAhHdM{X=&E*XfTKub-2H$O zMR)#`JaW{^#H|ygIkp-rJ^0E^0tP- zSbp&Yy_6zKdT-&1DyI!l!FT4TPhc2;-eOMpyk`Jl6ji$ZMRu2XK+2PQYdt3i+a#?M z52{IL)F9J_1UD{P1I1>Y*kF-+)ax^u>o$GDqVb2Mv&kx*wq^Y8sj3!Gn!gO+OfY~F z68bFzbC*~iwTk1#H~H9FO9276-bGuBvt`?CLV;Vh(% zQbEh!xfu--9o6p8nnno=^notokq&yGrHU<&Y><-#K6OAfk8-(~Xw+&c>gB+Y!b4ys zhn_;{?vaydZV#(vKIJmk--YcbQ(>3@RKT#I-cv8;Y0!}XZ|tUz5bs{pT-Jj72vOnm z$%9DjaY#Z0IS`Zf(%avHA~Wn)z26(!rwF$V;QHM&*_|>#9M17ejNT3xP_c+1v{}ZT zx)L9^wC!&iI2ImSF$hC}`~XU+2vnhoe`Rb6kU$0TZ$$t0X@NHs@%&cjKiTNOwV+d8 zjKn>iXdf8?Tf~P~RFoEBFuZ44dHCaw`Qz$as3s}abSBw7UplT)l!EaeIz={<3uQ`H ze`w(ne|rH&H{2@H}<-DSUK3Fr;$2qT&h=L|>aq+E3YIKB% zXG1K?(Aw(Sw|nB)&Qi`M+9uP0TRQyx1tgx)neF@io^9ceJq=@~5t1Sh>>d5@H;!?R zZ_f&~4v`TY=)_w- z;g-ieKG^)dj}~t_VS>)OKV0um>6IS_k->;7q&3MLW41?GRC0vI{y?17VD@3vG_7P+ zHIN?ED-p2O10d(f9GGUx)k-03Iip1Y zi!oeL64-USGiFR;Z8fy>%Nq_!SyH<8M?rCyA?!0hr9xYpUX@nh9JUJxpL2EjwYPID zo#KkFOU;p_`R}i(9%i=6Y3{>*gOh~CHB|~#SC&xE0Y|&8A2sb7wDmqvlwCRUH#7!q zIpi?XaE?jiA$Z0IqEGt?)&t~8LL3?h1I_lsGt3`A(~bTY?VB}Vs{ra!L6-T#uqvSq^TKqFaIbIG{NiJ7Zn z_Ye!@+|~sQ7+0=f5f*0^3Z^DsZX^H-MMfa*Aa%W*>g#%(yddl{Zx`M%%=RPo@;<|W zkx2Y>HLohLsSu|s;wS<^#WBF4Yz1jpW{VJy@0@+5xXDW}fq|+M(Y-GY2c~ZBz@oS( zI|)_(=f`uXwr0G{pezuPm}$Pd$e5}dlI@V=I=iaA)s>k6cxK6tQF2e8_Ht$&+f)(kS^`AYFFBvP@J~%$ zXS^aJo0b7qtZUWua2_dl_OYrJ%Ja$Frh}+FtO9w7OJ2NgVnVYz!RV4x%cnij*mGC~ zYf~6#;c6@PC`mfmFH7GxVgo?-Mee7;9Q>zp$G}HJVmIHi0 z_QUJ^GhJd9H_^b=?^cgPq$L0T7;!-oq#?jl_G~P!z&{NFr>(@48QZgV+mZRx?KIkj(Y#DD?oJ)Lemr=mg-CKS%w( zxD1G&-LYz-l3SrL+k%xJ$e*A$|Ya;CU!8%N3|c_ z%LiE{H3-RZFf@D_7JZ#XM0+i$G670Yv27r%q6`!={&8M0LUXkndPIAN=!aa$8LUQ% z);SpCM60{UVi|srtm*%-l7>?Lh9BbXG7i0-Q-`Da{(e3WReZ`$(=C^_&cuy-(-Ea? z(?2_W7VfFd$yIMEfcr8*R&dFqc52x_STJEKkNxf;%9#0jk( zW{JWAaDiH)s$AgnDHGRG&t6Un9c3RD8Ktgom=iq~#o7-}dk;Le_B5NnN=P_AE|WX3 zqL|gw!m@a@=*jwQTcr!RAyG14Sc4E%v)hc?dT??3g0KJM5l{aQ1V=-wj2}Jemu!#W z7*lp0?hCSOZ!ww{j9N?scMM>xiu@Q_^?Sh|olKJYF@EDz4_1?-<>@pHc!a2zDNfi_ z3wL9gzfEvBUQU-hQJL?y4k3Kl?`sKywlfIv`*6HsWG}PRLHM!zfJR2MBxQM+v_EHy zo2#%ly?(h)_<NHfq#{AcZv^HN{)iE-CLz$*e1 zZX6bGYs{aicyha~O->j4)6;M#S4qm(!~fOjQ79AP7)n-L+p#igrs_vQG%7IAq_b;d zilYc}aJxySyK_{hag~bLorQsTGhpfDv9j1t=)1jmGI>-(fqH{7a&{w7zJ%jyJQdE9 zle~5L=f()Xlty*st;$pv99WFuN2v=y7(`vj69G%bt%R-2sh#1n?*Vb&VA4#ugIN-h zn%5nO#W2Yt3l2tqsbsptXd|vf|6J>DJEGqm0^}X;Wa$%- zCJA!c-HOJ;(6pWP^hv15t=tS;Hf8uL{*{xEgKA(Q?-ifIqd(dZxS;^He1>BEPm2!V zzUe0h5Zeg2?}DS_;wpYqGV$p&&wHY9hkE8Atm?W*;l@`OpOcXCl20wBZSs~If_a2AfSrh|$>P}(4C|NW5vUm2Yks!@9@tnbA^!z%xH+V`3LO`xMj+!(V zKy@m#Y41C5Md>*m2|`}B=efzD43VYGpzl(;#774v(?+Em{X>MCPQu`PM8#$vl4LP& zpl>Y#GJdQs&5m;A$l)trZ6R}4FL{ac<6)Hctu!x2vqXG@-wH!${0yeIHdKjjvClqw zE_a-=^G-n(0tO|EZ3?^jz0IoV2^6N(w z;Sg7&8V!WnQ~@kV=~L8y)qNzaJYfMLTjCNon1T_qy5NlprKZFjx0_^GJ!nte z3PkH^jf0(gRZ24ZI!}8ivn_@eYx#nxpIJvO?+SlyNHc8!NKu;Uq4p`cCXmgw z-*r*y0wCj-op)O_~{FeD>`KCJ%?RuS) z2J^vhy~(oUwx0ObC%=ed4Que7%{4ci3>f|D3)L)iRycg20T|D$6eU5(erjKLkyLC^ z)lg%)q+p= zRB8c_AMQq6RV8FFfCG?8DPN9i?;hvMm~1VzG{R^j81yqCHjU6CeY)RuahbWlwH?mX zeXKVD&=t*M zhWCK&BjWW`eI_`U&p)frb|K59rAl6krr(D;pl=gp+MohQIE+w zNVpv!q9APGm3xW4zQWrR(lx0$OSL2>B{U8>Rzq;kl}n!X($9D^{Jq64Rd{aA0RKM# zz>jGkuE3CsrdU!SDQ>ZRyZP>Y%tm$XYKBQfH14Z^rTFofHNjpEd3| zIpNm!oS-Dgs4EBO`Sw}-j4%l6(wot=2&^~C8`rBIU>RW&rpH6uvP1)cyZB*o-iK@Y zs~LlN4m10}4WC{V4*}!*B5sXB3k1u#fo~|=N;d8WdGfB3`!`*rL^v2$zSXY)f-A=Z zmjTZ#Otd_BQLDWrhmw6dofcNN{V7GBrOttxDgNaKLe7q#ncQ6*4$G zk2{aRd=c9=LWq39s%tqD$Pwe(U4{xV(LDc`#iUwewQr1!JLaGoPsZk&;%(4WvX7_X z14btNS#R!F`LrV~P$|Dyc@B0Lq7XPD>^=2E1;AY6Ya@?eB=|`XmF4(wAxwhW?O4%3 z#GA=OSXCHDfXOLkkXy_HsU=hBcpz6$Yy z()CIz`Qm6(mRK6*97dKNXSyi|R7d3;kF1Eho#_W-C`-Aha3NBgS`Z1?m2QJY>@ocbqG=e#0v*ymKn1P711Gf4%j&YCXCCRx!<`jC2?+pyfA0wMVe6R%Dfd+f zUCZM>o%8%!oOoCA@Eq;VscZZXe0zK#po9Uhbc-rr3o|DeRqjjK1uh#ygm_}8&6><_YoiryMiOlAYPU$LJFfRaKYe3g!^f2MFQyW>4bek^ah*xWP5D7QcvZmkg#@50v#k%W)c?i`Ppqru6v z=8l2`=Q=?73`sC>JmZL~k_VwQQ$S9|IB|DtszN!r<5&fbti68a4fM^7bvKU+yZekO zj3>3+gW{()IH0QWoy0d(AC_KifoR0YqGk(#d%!_G&pP!O3#x%P1yC2M5MvOfHvRig z+y3p${eqQBSgya?gB;TI?(h8{L-%|srOQrtB?>|b*bPm`6+cw}Y?fEBH?);1I3Loi zrKJ(SO8)VNFkT^zb3kSa8m7Ggh!VsMNprZ_x8bf)N+ukI(N6{mhnR4tss=tiR-Il1 zOW7aN42o{IJL&%{{K@UFTS-lyX{EmT7Te)!`l>VhgWgh0XSIugeX%~itD-AhB*`HOfqYdg((Ev^ro8N6@RIQs*HVzdUn@lf2YhDlG+8!PFJ_OqhMykKZIff;MOt0-7X%&i=BL0ju1Kbn6 z_C>{comkNPmfF#BectiZ`15!!dDM8%nAlfgxsbFs?u+PJ{|e#KeQSL1+^s@xMHMo| zW7pauY6^}d1(ww%bN@X5KMArlIAD<)k_DFfq_0m8^LhM*;vm7k5794LG;{qof~%2- znlX-qqx()KiX*sc^7fsSm+&DC4-c{)paJRrf(18du! zzfyN9F2(j&n)*l}-0_=d*yUd}6F)AFyC3&f%?A536ub-@udm&tKV3teZAb^F$||y% z$!1F#N}$QA_n&D;s^u8r=0HpUH%1o6@K!tL#|zOO*<^N!zSTjFG;4$WO1q5W>Uml4)5z1ri=6);R2cYIC=+Mj+R3XJD59EHhb8g#AT zy#yPb&}I#us@4PInUHP&veh>@$G z%gy`!V&>$HeP2DMf|<+(w%F?^@1inkCdG~PPg^Tt9fA#Rf}WI>p?0>Nz)L2&f0C=G z2o|rBtQJSiiA*{^5L;@0f@>pNV9& z-*Z6)vR0t_T4Dw(dQH1-1i7?-iK1b1UaAU_!@^mM)^9Ut>t3o$9s!fhj1v zJ70%%h3t<}DvS8yP?`n*p!J6lr4?WW0cI)V5+rdC+}Dx10En98qwfea&BI{sEH0P7 zoSmd83+dZv(^8Pt;1Kpb5=w1G@v+Y+fI+N0l~2rTD@RoPYG$Pm6jyPrw=}0Ie!D>K zdKE61@*<6XI zWRNz3EKW{|sV0J)O$ch+uQw?TK53~FlCfMZFh3wHykUbzZVd-ihfy(-xF#&Z)Exa= zD+D4D0W7V)F#Txtx@^bbYZG2KiNRNW^PgH12C(-wqOi4J%&xm7aZYF+drj>;42aK1YTLQc(z%X_#atkKG zJHY=S^8`T|x&(qkqIcPhjjjD~PIBHLl2=U6ED7LaHb#UbB*(8-$_SHFB+~xl6rSHK z=|<0pY>B96Pv;qpZirv5>5&*r(RNTJ)*63dXlCZr6EHlE0GWN+X5l0Fs#Sl&c#)=O z6P;8wka{I1u-2r4Q}{cHA&Zbsjc)4ctM7*x%2&f0RVpZ|>fsF*ZbojS=VBtX1k^>S zXqYS9!!TXB6FuE?Hbd5iZDkT&cFDWE#V(4Y4CUtFv zuOKz={cYc&G`{T#Og^pc*rY*MOO+Hnm|aI~AU9|Mumg4V56`itJ_wRYlf{{+uLu>E z0K!ZIVQz{+$E|x{Z@^bi-unct$jAv6CKm{N z|GF|VcSjb()A_U2Q3i;+o!~&A+_lus6sV-5ymdS+T|UUdl+J-6Y7P({Z-HvV22mGCit!pay4qJi1uO_QW;vMuy(x3&SK) zgqKfn-mzFxs6JvHTzBK+k5fAfvod8(Y6X;hnLMdF(x1zYNsmf-ZW8>LCAam-Vsvd< zxf7m`ttN;coY^MUD=t^a`SG=WXfyG$SO6C*_Bvt2Ke?)7Peo6KQWzT9k0MWk+9>wZ z6oi;-PFZD)CNzuZ7Tdwki6=8G6hXU{sw0jxD?ku*>IwXZw6YLHe832^Tt~I)-UUF+ z6atB)+n^Zk10+zeLLP{Jb*-ZkE7y+CmFFZ2p?px6S@7L@8H~-F$!RPH*I} z;S3$a@n&JI9pK&BF)v!==b~#5nXNJWzTPo4d{F1A9>|(nmyGH%5X%xb z8dy+{9v=&JAs8COr2`08i2GW5C7w@Y1%??1yY?HPc>j7g+1E^ zgd`&o)^oHb@6Q4&cA)h$B8atmk!?FUWqZS0QHVl%`jan>0zmy`011__L($k&tUJl7XSctc5+KMKo1p+w-U9& z_Q7=)LAJ%EC#I7Ni)*iwC|!QSX}vIvYv&NJ(%uS`naT^?2UAN(xiB%wV4wDQc)_Gf ziZ{jsW;!f=as6c{L6KcVU{^xJ--S-X40)vF&x*-!Z~sk+l{Iv1g3D_YqQ_d`)GP9! zuSCzH5!eKQ#4AG;~p81It0b`Rw4rNM13gMkKn?Kg)Dn>AVeNHX-zg;>vnr->jXQZ&CaG`u}2 ziH}tiM;Hv+FFiI})=*t@gB|hF3?lZPH+#(x)t66)!D5mAyMtCHOkvB^RkV8=&FsNY z-IaYb0Yi?Z-6Q%l9Z#g`x}7c~tz1J5Q*>}5dRZ_>DpKmQB-aYd4llgA()ss`$Sxu} zEwT{p{tRcWv_nyBE6W>@<8BlWu9DoMLDs-apF|&)uXs5sDS!wfQA;mO6AMl0(kx-u z&>VAvCQpqFpYsImQL!w3u&?RAIAZ!1OpnTM_SRA3FZ?v_mU6bLEJ=7jZU^dKrzWjf zVl>`3i~#h5>P0%^rPJfATea$HUGZ>g{#$g&Wub|ywifuUL-M9sqTZ5Q;L()lqoo;w zA7w7Pxxf!8sPq2Q^yDQ@1GO)-nI$mFowj66hEEhK7badmuh%D?x+D(`b)WUva&%iy zkbJGWc&ji@|7R*Ec~877GimH?Ln${~V;XFe)qR%DY^A+E+a|SYA}v~9aK3_*AYAUG z*xwz~ki4c(%M`KLdYep)om=vmfb6?DI-@iOfNT72m!-gZF&XYGH9IScthSas0Ze_s z%B1P(nzg7~fy|84d>bRuHaSxO68?t63Of-!Whs1!Ar%fNKYt6|nem81p|WY#Zd`-+ zek(P|b#B`C6swtbgND6;U7C!~DDi!?kF1y<1p31h8xZG>c?L*n@90NoL+o>GMJ zB89}Pu2&!F+w%aOsC14j3XdG-&_kT@ku@99V*+*W74$}g;&HB~q12%bhZA4W=BnmbZ zCF2#$1+3umrXU%9@3G1k7iaxR7UHuuziK(uh}wI^!&l%cQzcy7 z99`Ae_jNh5ReWr0Xlz?HM}^1s{Bb)T`fFSpz1p@@r78WQ>e3lOS8#U{jN$y+1(+66 zz!8Hjh}?q>Noy`T?Yy-(8}j*QJw0~nsR}fl1{rZ=g?+leKx6a8bUoVJ+YQsBYSu!% z4+c=&yeb<@!}32H6!g%2^H6Un%+#d8$5(vdI?BF4`kQ>kE~(w>apEj({w!Hucj3V+ zqH3HTi8Oa9tGD&r_T8yC&7+fd?cHZS=a0GGxC^bMPFu%wTV-Vi8itsLJ-kW~30&p=GTcEf6s6|d}zW+w)1_dPiC!WJWy&7h`e!9{RGF+bGhk??Xq%u1-8H z_)a?7pezO4bIS6X)91knk4OM;Y>8eKICAr( z;yl|(Q+5q>^lQ2TQh{T?(C^n5fqDTSnbKWG+vlLan29iwCA`?CT57*w*ewQTQLxcp z1NE=*4DeM)7qaQpYiwz;eqqFB5je*3=IhqzluX%i1K=6c-~l#u&6dVG>?dZ z5qUwzqI{RV8>2BG7a!wjlFbb=@a7~9!Z;2v{RRlhu#Ov2_16dTv=smq9A7gh6o_UV z)+c_*nVwpCZl71)8Mgx9KL@4dCsL2`jp73`;t568p1%fF^IOOG_2!Rpq$@rL8%L$< zPdd1tJ`Gs0ntSSuzis>M%24=W!}^j3-61>$9-cmbAi98; z7us0MA`#RS=>oH8>SlONXW3E#z!Yj?Zss1QH>XLa+^=g|bX*RXCf7Yrc*?9&XTr@L zK5%uE{jYKy$z$fWr~?iT7rp8)$y1=nw;{&9-+ORN)+W4~tfJ+xR?^gmbc_YM3(>kj z&lQ1$RmM06`5k0*Yin5!X(Ve{o=1-7v@RyPJG;PzLDMFX9Q_sbO%vL{IXo z$1FuIzk6FQ6BS(esf0*-zI~X@ahSRkqYYSU$xfrdjtCv$hJE|D;n;rgL{(t#aUFAw z!`sb8P2~KoWn7tkB-X;ZIb20m%#RvtsPp!GUOBUe&oL39^fH^^2&vcI-_E9-&sxW% zSVxe8lZ}w!g20#B@_wwOta~~&(*Ke$l-j1RoM2Jh#7!1eb0kmQJ@SN6_-z}MP1Id! z@c)fq3g4K(dI`M17M1nFJ-NZ4tn#nS`v3A-sJwR-dG?1Qi8R9Xh9fmMmHKNeIBm2a zq%f~7wnU-el&W;j&Zha~Bny|;pCy>sxoSK^H1*&BdUz=xs@T+;OkRZ>K$;ZH^L4|o z@ioC%3RU@~jSmHKYU71BWutRI>22}jJRrdi8`aQ~WgIuTevb8pp5~*45Yh0KGfZW} zGtdf0S>m1#Heb(*nR@kfHIW9OEF$bgBpC$OO}@nXHt)jV;3t(HQU9`RBbLuKC6X9a zc`o+RaM~IZDa12C(A#~$IaI(AdK`nRs`Ey*RTT&%NCQ6ceji9g9zU?|y+yunq<~d^ zIJTJ|9TbOzIWskCc`QPAII)Z^Q=UIro+9P;P%zeU=XM=mL!V*$w83_*)1BXqhUQo> z!rz4ruF5fmGk(ez>pSG79d;MwojXueJGN-_pb_u^Z&L%2i?szXppW%a{tKmt$@{uJ zVQ2Vo0wXkf8+EdL1@vK?l!v{JK78G)|3hU4b12cqr^aPp5BmtNN<8HRF}cMuk`6`4 zV38EHXH+^3jA`*IWnb?U{*!U{XXJn@4jBi%u1l(vxv~L3HG&40*Jc<+;ERHz9yXCw z|Ih_=)tBPlCqrFPsvN%mR%nWLS-9R~F3xw;=qzsl)q|`Mn-E z^?P!5f$y!!>w$TY4@}N)PQ?jxNMhYBR6~l5#J*CYaOD)XBg=w! z2ekUCh|%_YBF`oZG*y&`KE||(#Rf<~dQvwz1r@rHJuzE+M6Cq!lO<>Encfz{O|$5_ zJ&^uMVZYPDlxJ0p?4__Tq*LT6H-h`{NxHInF~7N9+#SaGPe`g0FbcJy{NUAiaJ&s< z*WU%o>W&S>_gcXp-#^-pz`GV z)s&-T^!r_A@xf##YSI)wbqiVX&_Wy?0Qb&Dv%30>PRcOMUt5i=z?w_5*|dAl$ycEM z_LzX6Y{%n_Mn9WDAu1dky^?9;_C2@2E6PYCM^1F=Hv*fi5CX6R zk*SL;sG7?2`kKj*yJs8%u*Ue67C5cjCQ|PZoShf`&BzCXBwnF_DPyFJgo;7Z8JqzWTu@cpBGA5vyHclHPQF z(g5W6_0b-4aTt|+YQnth99XCi#dE-!#t=Lx^*%-LmCoO7(XATlVhZ+=ic)gaDlKvi z>m-~miQntbGBt6fk~EndN|)djG1@=pq8h!o+eI{*SEby`;C* zAJrYn1XgMY$XaN1R?Hu<0eBwEBB*c5TuO)(tGZ_a&`+uCg}#oIgxDi%6SlvHKxP%kgH(CpeNhI=`P)p??GKN137!cq1L$9h|I|Uy74_Qw06+zF02}A zInGxXi)%{F6At$*M$_6>TYb<|vIHh`hcV_BFTL7-)hz$Qz zB70cB^Y)hZ2lFeA2|irKZ_KI12fsA=k7tJ%>O+J~O{pjQRK8@`>#F$QcHkz9yh>)) z(C%TD)L~2n5Kie`=Ppr)jLv?p@DHC(qujAWVMI8&CdJ&gm#Z0v(H8 zxH&B5&1faj!F#YLDa(A&&2-W#@H{EcU=MF&sxI4kpprE_ga_YfNE?!7V#!u_TqeZN zytxKmy*B~R39Crf;#tVM{zUiw24`1z#km$eq-)#H#jLs{nj9P^ks5<~cEmhu6O z`=9Mc6(Y`z_sqLx_$Il1FDb9nd=TdMNIyj8}}QCU7^4 z%TSqdWE|ty4x*(zo6l~fC)z*p_RXQPb(S4IU;j&I4}ZzKKfi*iEG+_dIvktv?OFZ6 z4buAGoCoP%78!S5(}5n;f7%yqc~FfqWEqVR3v5FSw^;!4OnlI4+j&*LdNJCjNi>`e z>#$%EPs-bMIxe1VP`Ws%oW&6Rv4ovbzGHYOfYHoQ*SoM@Gck5)<46bxa=dX?M%vIM zq1^lXRTU#Xd<(|j>S#RQ*zWwdUMCaPCf!FEjyDer1t=^S^|%2La{47Q#R9ZHM5*!X zL{+J`MQ5uMLU%^S7ou?auS+>!(EhooD{cO@Og(bVkTzH}mlp>Z|0QV|?VW`ZdXvr4 zMS&f`X*@T&z6B(#w+j)(pIN=oGHZ}Mk{Ax3c^@)IRTHX!mcR}FJiRC8pAdA_nI}6NX`@{C{v2iBv4dynMCA-ky=1uZ-x6vD7V*aE~#3RLxKcpQXtgVI~-2 z52~|GxL9kP!!dB=K+g!IE&FDvyg9OZWKz^X*&b!7CNX%l^mL5~s*x=sya=LuIgdud z&{djZMJQDm%Xf7gVFzsi6-;z$GE{3weV7h;YL&wBW0ykM1mp|)K`%DENZ!H#r4MY* zfWN-qL9Uu&+v?vjp22$-3)^n)v`sU!f{}LR@)7*v52st#aiEuuHLr8EXUdjFg>*i) zKIS;g*i~;XDD`wa$s!hxyPX--DqwLkHB(oW|)FKPwd#sU4a2f-ANM@ZEd*tg6ONiDC7?|ihSL(>2~4iA^n- zM3G#Z6;dWe2X6!4qJ4EE>q|4Fm@+>dR&->qN{_hv?-9_+fNp5^*)$CgY|#ZE$!;$O z@9_@Stq`*>kL~DPs)O~8ta6yia`2Osg%|u{Uep9}Q72{sDIsq4nH>iUWk||Okjn5q zZ^n!0HiT&1&``l){#TxJfyE-j(vw+9gHz|IhvC5z>Pgho!V>--fB23lJkxmq%$f4s zZlwib;q;;KOr zo<-3Rc7w*g(J(~<_&%Wfr#9v;)M+)@#@!F#oMp2r#~g_O)3Z0(ieQaNcqGiR}~ zU%Hgt-Q6xM1?f1Qu+I}bgieXoxyG=)HOYohX%d%7B`Y_u0_oaeH)#GFmqAjp6?{i4 z+)?krbIwQ~{w4NwL|8G?g(X0W*&k`}v*}_VUWqP=$RHD!G8?oXcqxRW z3n>6NOEC!-rM02BUyb$|lPvMFs(u5Cz8|E~h}V7|Gcq=a|BGwVdo<>1`l)zDUV?$?lMH;Eo?#w(1@)n|6p`7}GyuY=X`X%iCE$e^is#YGCDA!9Az@+z%6SLL5Gxw2 zCZ)=pV6@xaTQHY4*S^NukLryaxNDM_Qq}PGH+nwDhiu?Yx0o1^;8kqhzY2@!rRK{L zA`y+M=?z*Ev_g2qkRu^c8Hpwwu2aVOZr5qCepQXSEFy-cT~hqvp0Uj5T*y4MjZ%uw z14z<+pn}Bc@iO}PiG67DGC8O5&2+I}iGqbm0YV*e7HMx7sN$?&a5_j_`|vhDi%Sc6 zSj#)O<6NAfy4>CiwPuAm5l~i+1wn|eISzVW^z*6DIFbGN*q;;sN43=s*mVB~)%0c1 z&nL)R?vS-vri+JqSNMxkL1W1m>67?ha_(OUc_;uIm5I5xzkxVQDzMc{YkfjW1>ge! z1uu0D3WEV-&6!&t;UEZy7CTqJ9HbTU(O9k(Ys)%u+rAL(!o-MTEH zMuR(5C?vG-zZ(T*8nkqV}MFHl#mXyUvL)_Qh7GNTf z&j>RBQVrnTI6RXWVQis~1OrWd_}yyL;bx`PG~RvZU5DwhK>9(T92g{79BV$euc{d+ zZ<)t=6?LJt#t-#R?WPb$Vy$2FS2J1jVP_qtTIw_sNO|g0Y?QqDE`6+}vCp0i%JAPD z_OqJDmkbKXG5DpDEjrl-g{9iLMR?MX(3{VSwV>@)iN=mJR#lSl)(S@pusVPVg}TAO zUo_b?fsNj}&Qr&o)FqebJ}i9j_H!L~Z}ME!TaMhlPB~1Bmj((Q!3B3`*c8v-rf!IN z92B_dz$=m~23z1|%)*bwgNc)WP^hev(;UHxW+s?~t6Numhq99)mF$fwmCL_6=4zFv zqxI9pvB_}{UlXzS zJ(4x=UgVecW?2)yH1d~c(P*J24CYaU+=iKR@(0D_@rxb&)7USJnXY*>(2Y;-4hG}u zu@UV7XI4R{qwY2hfuH?AakRDKV?!7~_aud7f=G!3CWs8>xSqte7U~K+Hc%8}`&#?P=l(|Dx^no*) zG#xLLF9kYP^fQ8@h4;y}Q?!E7^;oZDpC7q&G(R+BS~Xgr@1!gw@y!kACLwwQTKYulYvTVmPg99Bq$Hu4FDq-O)BeenCQq7;)^+7d-h3qc+gGnJ_34R zPrM0!-lMQ+RcmZcF=yO;Ew*Zf#J22LK|hwyWou8_SXKIxdKXT75O52CZ3>X>-$IJs zTE+BEOwwQgW+7jV;iW1h_N#Ff;px+$Jdig_s1m4?e+FEQN>{F&F4Q&CQ7@yYR2B=G zVyX1~n(cK$J9O9Mhdp22CI7wp3Y4Ekuc_{)ry26pQhL7=D7_AaaglA~&WvjQbdD*F{w8X>JP3DJnQ^R`*H$UBts@+RNVo*rD49s*|~cor6#wT#;b~%`Cod^*k-=pS6_@1g85#XLPr!P zVeoS8^=k)2EEmUeXV@3;05Yfy_i^Ji-~R?ADf(JQ{m06)+L28B;ZIqBGt2 zJo&E*K8i4<0S{clu*c$8`EK_FUvoA9cz@1xXjI0nS@!+2`RFYd zW|aOFs&_v`+?7<=1GP()*JMG#h4J@#RyH%4TRPnnvkHSrG9hU7_(slc8DMCB_rSTH z&<%f27LaJnnhpKQY3FTU2Dv*yI2H+PW*HBHXMCYwDX7^HRQZ7wZxJER5bF9l)eQXH zZEk^PVlTwJ9L{s8CPoPDzZo3F*R`Hw4{fsEpb1n&yl=C%uUr@tmbHt*JiOBVXaZY>4mz+ z{5g*VvggGRdDEm@*e5bPJ(uDQaVSv~_8pQLdx8#Ob*s%~-=?w`!qx?OE0o_*)VqYf zb{No^Iw2hEB7LSm9y-_sNGQ;4B+-=x!P$^TpAfq4Jbxonv3j)R@O0$d z{{+%MIXp^RhC9NKsCbmkDJrY$Aq2`BgQz}>W4)gC+JvxXSLSS5o^gjDN+q11Wy)DR z-f+k+iyq+O5U#;nfo@=@xH*6;E-M*IXnsFpE0q~4Hu7Jze%FqRoT-ui(V=cD&gQ5+i^UmrrKSh z>3#ORYcR7+S?6l-^Tgz>XihpLFOs?t+g;(ke^T-ls)Hc$xO7wq_B3q2$5N0hLl5`| z^$*GId~S%2ff`hZ_Y@+lxMWBC+d=?tME-R6hn!anN+ z!lg7Lsoi`*1{FpRD>_@%6W`xbf{nTG?47NSyZ5rhuYNvgb21TOSvx0` z6|ow2ylUATUG+}Z+oX3o@CDZh;5#QSx<44% zy<=aj%b(mK7{oij2t{3EQJ+4mBPiV(?cx6hqvr!XJLPnT=i4Q|&S){tnJSl~2VK;L z*(i-p@+GQNY?*ow0ANQ$1Q4apuYhC_A@_EmRu)JkacS~Rj$!fxqN;cv1LRbWrTj?8<+ImgECIlRt8hF2Bk8#+1CKrQ=6Fuc^2Qg>M69i(A1fLDr@s%c*P%ZH=LS(`p+$)s|`5 zbGk*gXDUDoEt64gYM16eoCU*^bD*;24>dN}vHcfNnj4hSkjC9i*YQRt1gQDQYRwEr z&C5>{=xmdhF}?=I(Gfd+*PY}EsQ|ww*^QUJ3Nwhye9YftYvMMvxTT!~)BzDuwnK%| z61i)eBOu2`hFDNG7uHBemFT(JBI|m+Q8r+=kFf|Y!^VdF=S09NL7({2pPJ>%XjQcM zB{O(+YReWOr5&1KDcIZ#_^`*9bS!8G7;lS$mS6ZD2JH(($YW9=u04eM;u}Iywb?kv z(uj`8x>X!0>)siW0Kt`Z^>A(T*pxR|^QDgx(L zrh-K8E(uUz1nhLt;yr=}@6&Y7IP{)iAqYHnc85qP`}38cNu#XPF+xoqCD}JI zzita4iE2mmYQK?@@t@9XNT+?>P)S2DIj4nvW!2YIaD9`Y`mrl&Az=;#$vDK6efC&j zAEI%$h!A5_A5GH5zov)>Vemi(#h0pAJHJnQAr;yZ=peMOFiIe|xm=?$o$QipeYzeD z0k+RE@%ESZ9@Sk>q>|^#psdk*?3NCGAGyg!1uAC4&8xwyvPL%_B)F@$Uq3DM;uoSQ zl1@&J$RJSK@5`Dp6-EDrujrTR%|g~>j$cT(G?;-!vXUoP#n+wa?en18$k#f1us<+j66hY&o_ZT-&9RMiNzbrAx`bgP;a+lQ?~WcO0*4&}s_q zg7a=&9j(>Gj-Gfv8{*bXh>lWAl)>|dwN|dq*T_qMQsNuPQW4C-X&zI8GEz|=@L%`2 zGD=!4VXO`SiKzBS?38OiE)tOlP6aNcP0e-} z*L_wyNzvr@Y%tFOll*!hqwp;z1X&&L&T<2`tad^BoZhzp&B>Ja_|mG&!KElSX}*Y= zX#M$jf$R!VztCq7XWzK8ucc0#(TKkTIO|$Z9eY2t9Z!%AuY-bFL90L6ktVtHQae;* zMN*G8~EQN;`pvD?ZnbX8M;cLmTyi@A-Fg-NwAX zz>9ZD|7cGTH2Ce_Kh}e#X~Ua37HUA^v#1ogsMyfAAXPzIdECh;ViA}kQ`@2yn5H-Q z9+$DtT8Vh}2i(AYD)8kBahT;QSs-BqIWv&IAbHdB?r~e$YwY#Dbt!3gE+3oO29ft7 zPcVuw00Kb$zYPb6<&1(8o+^ulk_}lf1)7K^%$bBc`%c;Fc9dNfI-~SXIP;}`BWgkH zMYy}XRS+#eej8HEZAv8GC#fE|`oWeayOO?>jm3;ECR$;)4Ja|I46qzrXx}cL(EgU+ zzTMCV1S zny9%n>>@;0O343EDflJamM}lPMjBt4NxAgug(Pud8dLP^`(L?3?qp~n3Hh`qGy+fK zoSu`z9gYrQyijrV{m*_z(Xu?hEb`y8qYk4ONwqXs*b!7CjW(~0-v-$@f>g`l!mHj{ zvBk4zDse>)4PsPM0i9L+ZQhC3qB~wHwx7FDeEePxVLL$&7d;TxGIJ3ycwWd|u1sZa z0ck{49i~05El{c2I*vG!;flU68BBSLspBJ;Tf1co@zD5uA*=s|PU*8+LOMuI;`n?e zTA7n22haJ=5y)6XW@gFlIvz2|Z<}yKYec6h1-0C@Z_&H=FFjQOUc{7&RrjO?>x0LEf55N>e08oG z-O*n*Se!?es_(So?-%F{E}^n&qO_f$TUR2ii~Ce6a{MM39ix0P#6y0e&_InjqLyq2 zkU#hRf6{bS6{4yTk)v56UdxBtY@P7`g-uR)rn>B=zqt#)bdz9>34astanRJxM-XNr zLkdeh{@S}&r0?l_?m7J!3dD3Z=_M60C&6wesI`YWLZ-HQ_38!$MxqkYy@%*xf*hHq z&l#nfW|~lyUF|ochbL-VIm+x(jblJ*lMcS$XHRMqR^t#b!Vk!hgIYX0egWG#x$|R3 zHvYsk;Vt8YDo|n?IANjWKO54v63Die z;(Iz!R5D?_A0vL;EQ@fj-(Tb3e@j=@9Ku^Be_F z7DQ-t@du|Zln^L%T`ezqAYgk+s4utQ)#Ws1+Q#3`j!)E+{Kp3>qZ=o(SZkX}%*eq! zRU~LhyJN3?&R9|^Tt4`~YkeZG@9%Am*+1VQ+%fYv1T-An;s>&s3_4BQUPs#~=ettc zr(~bI_x`-}vfIx)&mw|Hb~Q&ETL1+)68_;683 zig_Z-n)HGAOaWzdTo`7E_O1|LIFL;>knbkfeK`@`XP)kc>FO-o;>G%NuJqp82D)j! zp^J}q`&2rA7-+=cejW6>F%HnH$wbBVQ&BjpA90EdKW3)3uQaadO~Z(hSC)%XKU6gO zkCns6VzNeHw!6Bw)Xxk2SO@uI`$gUYK@(y^mgl#}c=CS=9^sn;q^Lk{S;mw%6{pj} zk|o7=ei7R!mh!!GRbxYWj=ip>t689z6q6CosXA%fFa$R#nUrvdu{<-xsh!~YPW>vR zpEW4?c9^^YJoI0W0a9hyW@+d$GwUOaGg9;8y24H!^7U0wpZQuiKb$B3{%9@0Q+eDV zK_R?<%CM_&8*(G7(Jze>!$fQ#b%ERC%6y&e%CR+6B*TSu`xgsuGtc;{c)B~u~kVI(&f z`AKkre#Kz0cqp0TJE4Gp<_nD8G%$W!peUfJ6SE7^_9nEAcKb?Z0WLG zr?+^&ig5g+?8Cr{rTC>qRX&iM$V0((pwB=69T0%d9*8U`{(c$?e_IP(cAB=bY&=F- zY&1%5M}1M$R#}+;`p4rp#xO!LBb-mVyN=-WagJ!$IhY7LxR^pc7SNh|Hr##ryS}z& z<*LiMRD~#2cLnjrsrZ~ijM~4ti+6BG{k7Ak-2P4lnKt~tb)aoyE|+vNs&8fxJ{gpo z>JQ)!w(Y&d1YA=2sss}-T#Amw;@sPXbrk+*t2bpm z$<$FkQvkOZ9!jA2Z&u;@nyP{%J!2tukR?txL8=pv_P}A~wBzPLg2fi`v%OcQTr6xF zl&i^+ZtoG$S6dSu?#++8qlVqd$KKfAK^FqBw&hx3+0e;Jfzh8-7vF3$^YjwMpYztj5xTkqY5v z0*O`LFp?EGqFsjL2p>9P3H$9WKUZR9Xu}&Ron1HpQ#ft zD*$;3MaPQ@W9U6`kV_ok?sH=33=ic z3AH(Tjr)i7Y~kFivc!`NjAucF0%^Ua!WEv)A|{vhogaaA{Z)_-H1) zxV5;^MpF+jbzvbz>U%kAm~Q(hL2ZP#Gu;Lrc^P16P;7~nX5w&;X}foNW(0jy7svl4 z?A^r~7D$Y^?X9-U6Q5nFRZh!1aI6dn+0xlNb`_dObclx`a0Qb(S>-wvCKZKU9iHcis02LLyRhx2SG zQa<;~IF8kn$H{59bU!-p!TOK!#qO-dU>Z5txS3FR;6SU~d>W+Y?2XXj^;tr)kC@pM z21E3BA%4`qq%wYPu{-AgMO$=pHgAO48|u0jSDJBw+5Moqw_og*5Q|#cIau9@E3rRq z+P_$du6fAzg%VBz#yLqn<9mr9iv0LMPR<+Y+u+2PyNw^f%hC09Up9Ud!N(y60FF+t zk0Sx=T%H+l0n@huHR;7G2^OaI_muJ{oWAEkOSy)5%xCzp&-2O)~uM5xW z4o75OIj3NZ%-^}1V4S{hAzZojD@b<^KLf>fPG-YG={#e+{LL`G46DW8!^3E%NA7Uu z>rAqR2$uImYj4(St&JEiD&3SAM-`RsXj;0FL1R?}$=<2vZ~nZ(0NHdz zv7;|Mk+--o>e*~rN|sxx_Be4cL)WIAH=}~pHy02x4`6<TLYA**$%ec@CR_cg4$(gAKj-Nxy5aLgTi1i+2Y46<@b(8 z9JbV_6 zBr%Fm^3AN}Sq&KV3H4}hkYW(~xVKZ_u7>wRC3Fy|yrqs)QR z#2v6YxiqzsxAs5wJF5oXbL z%M#2IA9pE@9LET)IaHwY#;!7-H|mf^L7L(H>$V88mRxGu@4AkM6Id^^n|O$i^z8cw zxb&3LG66-#ByNswE2SP^d3kndLH7|8o7|GeqmFuwp6jwh*WWqwxe#li5+oSXn0r@7 z?hjbRygQlX2av1`H0#X`Rd5vd9uanR9m78;iAg@!!GRR=`J^t3)S-gmb&uS4 zDh?tqdD7Lf?$D@%o`I;T*+60kDsKj?{*5?CvfZW~+!kFoMX?UmROlvdLx)@6hTL|* zm|+xmBnKy?_;>Wk0sO5q5+a9-6`*}1lMghtOFaFR@;K+9KpXbH?2C%mW{RBADOu26{f4OdtT|SwRcg>2Za}HWm3YDhBD$YTJ;zW( zSLuJqBJ!dYN3Glyp{yh)5?*bHZ9|0J882c$0cBOtF^?#7BWE?$1jX8d`|D zeA}>+V-r;rt1@XZtBv?xw`)JwdqrVOoSHmT`D|g@CIWa|fmK?bRlO=uF*%=JwX~FF zZJf8@yzS8g@lz>X*ajbnuy&J;zOyFe3NuS?Ji17lKMI4UKW~!z|FQW5#qj>!SGIly zn!I}iOXK?9qn4B)KkBiJzdwy3#{-tX$)=Dwh-CmR4FFI10H4g&We_2}O?${YOsWlE zaSXHl6{oc>97s!jJ4;{*P61=VY*}T<5H>dMx%(JLhwSdYVzc2|o?bb{mck@UMuEc6 znq_G|cZHw0^Cpty`1P6=s6I&E6Xr>Uh+F-2iY8BJeqXjYUREglOtVPARxiu7rd?R= z3RYEmvG-F{m~%wGH=E6gtPwh$X~}*_<^OWUSPcdu&`~befW;JFA zG{1vfAsLGxdo;pmS< zg~4#E2%RO_5U(OAG^=S z?vSbhukZ&c{a~}!QTBw=b_{DzmMTRg?mDJsNf>sS&7^bFAs@R0kW2w6Q{oAnR%@mo zrJ2qm$@-65`UpM_a-sJJ2y?J!R?^Br10aA}XnvDbzMNDm1``232ACZhi}N^dwCC#Kh_>Lz51!W z!cjiKGLdZtr!}stp`cgA!&#Co_|&bcWA;wEv_8a^)>| zIXBbLoKv}Ie;&HB5ia`FFWvx0eHVr*L;hJ!Mu3{wvP7j)789l|+YkbscyRh3M?L1s z1de_ezD!l%L1_^~)j;1JBquFoV1-y+-(2P>F!LO{L5aKx1GZ_f_hYhavmwz^*;B}B zvLgs49y$(lC4Icn;N(oeZ>(RmidpyYPALe$ByRp4{7HxaQbX*=JN_mk>*R3VlDHAj@%=0YB5km00N;iCcQof-oBB$?c-C>OId?n8h?%O&;)>m=K` zwct3Szf0Z7G#5U~KG0=}`YJRSA|Ho^{*0kxW7&5=po97~A?Mf?)T6;@BYB~Lkv-R* z?0EjodrYArS;$g}fB3I3G^;#iGOLKzU|5bTs&iowL9xz*Mp0W|9ZA%-W9Oy;sw|C~ z)Ctf;B+^ac!(^Bhfuxs2a-`1wDSb+IT?s@#b>#hNtjc?T(^r&C_plY{a17-hQ(#R* zwi-zQyh&LvjQxLQlw;B0aB;ma7MPHPs#s0acS?Y6M`U$dlLzYiJOp-GK72U_tFg_4 zNoMJwnSlI#Ct0w%XvJ>e^a%t4=z4ppi;~`es%Nkn6@&5XXPvmcv33J6{b+lNXw4P{ z$J}uNqF$$@^N9;W-$6GPi{h{a7LlqE-S?3`kV}??{we*vl%Q^t@~F=@`~`f^Fu0dQ ze!R+KJE8w|@^G!($frjgJ$~6*U7$N;bYi(l^J{2MoP~3Xin>YLD|CAxbe73T%+kW)hG7>-qbilP$x=Os>SlM{GDEZ2zpE z@syaupWRHUWKqa~aUennZ^(55EpciGwS}#KGmuvlo`9g5+z6H={Yn-A1AMcqE#PS`AV~4l(L{%EiGN&ZWq#*c zxPjis!*y`a8F1{ER=a+Y97n|bjVWeI_W3aqGoS#^`4p3{WBe;hL(=u4x={lHC=xu+ z{AFu5mD%L>60gkXwcw6Aa)5q5%wBYFXN7pvNxr-2%_L}OFah|=>a2eD{jgE+-?YTfOK2e>fYk~D?lUfF8cu^Q=NyL3r&x)hnvnJfA_ahNzw87?VwxjrT^}

K|KXqO1oqo1ZJol`7R^6mPLnd@MJMkQW!!hx*WgbLKL40R^ote3+;MsYo$*71<7gIq(>3sx(xXCsIcoN2_h8e(#0h{Wf1-D)B{zLUdY7b;zj z(nC_z@IrBYvT>_;&YFU0xoa5FX!13de=51022MFaV{20!%M}uLz-NVTBCNoZB1{YO ztY_$hO|S4%EIm|+ERnMZ9BrXJlVS2p^Ssfdd)P6ZIMvKkmp6<#6CSND?SXP?xA zj%W#P0Y@FoCQ|oR7ZJMYgU!>fybg#=;8~c26IAF@JZV{`o+V4}h?~V!O=S33?FhB` zv4tQ~2N^HeSlx(fhZN$cod}!MjiSPh7xF{lVN=MKel}!#ylM@SdLInblQl)AlM@+E z^Jz@A?ibBFYXOvW36(cKqTcay+LKMoLwAGb5FR6&Yvk2C`;ZgdmZFxo&tgrDoP>dp zOrsR^J}_{Ay;0t9@i-OvDbS*xkw^xcgS~l{bD}p> zzf<+hIw8BP`z)grf8Ukb)ss{KH}_#P)Hv}& z7|jreppP#%GeMK)cO~r&t5%LhuvK?J>oQ%E4ThH}xiAWO^t7xV4O4Gd-($UeK*((c41%` zmDgECTzL}$w9~=IEChcE)8rPU*?hLQ1+HHImA6oskRB|46}IibBUPdbUOdMZ;lVK6v#?$66AhlbG%?9Jr(~?Hxd}HWtSx(P+rd91r1tZWERpw#W(OBDnb->>i0A<;u2{gM#ZO z)s8D<5Mh(<0Y5%SolquZk4QA%tFU+jy|Kzs7$bo#)E50f1S2h%(<2wmK;K>MW- zvCa4@+C;Q6)qCpS;&UYuU9X#$ zzD5d7;4|$m(FMY}=%7HAyBMd^2clpc9rBZE!s(W-^Ul#|vBuvT=*`N&N`$&wct$ro zui@eCA{-MJQTL6Z@ffWf>&tli!?tySz+x0-)2WlMNg#(%f^U|}k+K!m+N|;)^%~LL`7S@566yn+_hj_*f(upO^&8%n6vm$ZeF;!9|bY#IYZ5w z@xl5%BZ*ZT@I%R$)2)nTcwgB7N-);hv120)*ssthjgFOAGy-oa6F|Z`t6!B8;-^sD z#s2!>lPcsrgduR!v@oRczH4tvHwkYqOY_}kc%I z8m^*L!IRrMLqj8!>rr`bRfp!E0vixNkwCt^S$+;L^S0OTfkZ8X7PE3;W4XXwjkj{e zciJzGW6q_Cm^JY0H3EAYo~^K2lN>Y9DLF9iL$27DbE&turT_?ebi+A=HU=BOJ0osk zW}*|6KbzCNa;8Vm0%=+e)TVbfFjaFySE=tgVc6<6V$=0F|M$#l78vv;=KftWmj<2u z(A%+0{}@{@H`R)oM_v%mW8He@JW4-X&EX7~_5S3sYmUkC5#TE8cRqY+eTK*wombgO%&tQQ~lX^lVZ@s0LyPIZBTBlU$R_1<}+w!?}rU3K!cQ zb&->*5AW&s%2IuR_{T#AhF8{qwg-uS+;`Z; z1EQ(M*p;_UmC&Ld#kwVoH^4e9U!_+V5^XQ(?AgDY)~H9RQ~Ia>xT-`T}R@u!rMXC9l-+O$kPgWt)iKWWD93W5I$09C%!6Xr%)r- z8jhAaQ7*t>9v-{!H}I3M%U z%X9{F5F&58eNS!xXs+EOuk+9jrtj8?F92KkUh{7PX})NwgkfBlE`SG<4nDY|$%n@J z!u!*poqC+THjc{Ku_It#DI^DjeuCy}DerQ0W6ScVFh&w>F2Do8y+RaJRGe1o=n%9$ z+eXI~eIuF5Q`H=EXJaaV5s}pJ?u~A6CW&Epx{ab^=Sy(ybsA&~8 zc1(n$$7o{#mB{Cdh}0(qGRm6LcfgTCgkOGC1AnXSDGZPe5#ML7^~=bkK&WfcxNp(m z48*eaGIMHo{}Q=~yZ1X~jVWvY7e6+BWO{Y4Hc7blThy5j!$j-ow!dKKxhz#WS@#`r`ky9wDE3`?p`w57 z*2IV>at6=9^C!%+o`q{%ksuKCZIw7HMwwgWW(xzBSKGt>1XvxS1@{Z<%`#Ozh?Te< zTIj|csWTJ`Ep3EGxhWVqB5(9NO8pcKL;CSkR%$>;6@~b?H@bMFcg%BabNS3Z9j0_; z334rO*Mw0}-b(%_|Fdb#jY-Q%iXZsjFY8tsRtc17b=l{$G5?EHggv7>5mvD_hM6Wv z=B5FOGX}-RcHDBJe?Z0%8~G`PmxFv$XTBqxbBK6CcudcErQ_?z1T5B{%L1$3^Cb>` zU|B+7R@xz(DXcH}Jt%54KD`sClE52d@;&2-=z_x}_GJGm@n}e)jk*lk&R9E*xd!a709KAYKxy*Hs;mgiXM9yJT~qMn&qNh4cW!g?g*jm4XvZ~b zB0T7kB!cglbs+y{h^EG}>5Et9H~Mc6Pm_fC(w_IlWOAuLrMqd5S)c<7lPa3WLw8)zciLjc}e>6+Ffqr3Pm} zK2QaAPUI2ePITB7n@Oub0yZh-w+tW@lrLnr{;gC(w|qX4+HOJVyi|TTaFe4l+zF*X zq(H=#z)o{kQ}I=}4GWC>9@1R^3Fmx&F+2fIkwUjY;g&n9+vk5j4R-8q=8lGB$^aVR zDMl3UX6p(`FfxkGvb(kntzq@DSk+kpp5;jWYcPEm%W=c?B>wSAcr?Qr+z_}r*6-b~ zd;s-88PgDHWV7}0Rx1eZoic#SUq>OklNg6Oi!&#+=!bZU%I5tzMR$>qDKj*K%#h{K zEQCf;O-NWcuNd3}(_MKxSt2z}0I8Cv2$%;Ay+nKqz4T1gArqYuhqwcNWO z{)wvV9N1UXHZqU00Mx}x^^zluC3@ulaMtz4l5{#64=tA3s(*Z$i`K;@iBLaOw3)jg zzdO099}gqI%MO@~m8oUu&=ICCYXr00fD&Awqc`ptp3sTRI~S*ZM4>T&wcN?oj)6A& z3?yyJwa3zF588QezGDXr4*FtVJGjTp#+#|WX93Ypze)R^gtn+5AUGO6 ztI2BT6mN!8mh<(~nBJ`>^qUMpD{QdW7hL0Hod&P9clNAm6e<^!du3wbpS+s69}>Bn zjMj(2eAS*zL}{`yJ1mlk$1(a4U}61)x7!4B27j7KXS(Dt%S zSK~R}n$S6inHsaL*TdHlc88SkJ$=axkrsz$2DP@oL+n%~&hPtVjjW>z7>w(F)gG@5 zJz5aJ@fwRT0<`=li_9EO_J+^Irshuoh;*zg_HJ%X!MrmC#UKnOD2j08GKHJ|q`by_ zs8f>c%TrR3DoT)H(WlnME4GsDHj3uxG?rF{&{=;k^=I=ssIa`^brof?(OgfAOsOnW zor|eX4N1$(6hHa6mlEv)4OynH#cQtLaQry=Jx3r>s|C&7S1MySH0uQaw0&FlQKvW4 z0^-$BeJOSnC}hfwjLr3CmtOP}o^JWaWyvnQ>Sz{i%M-XV`_YnpcB&_9DFS9Orni0m z$Dy&Ojw8;jz!^*_Q1_1DJGhsq)mvBEFx+cY5RK0v*a8%;^9`Xj7m0sx` z>Z<$)#8K)Rf`CrQ*`gefFGK z{GagBW4$J;>j40l5dVmE$or*8R zxycwQo7DC`&E<xQDn3(kg`Lk}Vrz@Kl+p|fFeW=GZ9{lhhvX8AlCq#iR;>*~J&Tx! zy*weaG#g%H=pKO1apC>DUXlRc{iat9hotFS#!XH$|6EG6<< zxxbhYSc~z*mQXPooq2zX1rP5@G{|TZF6oEpiiTPcR}f`>1qI4V9dYizAw90v`497O zouDF6Y|n~#c;ttNP}1h@5r3hoR@kz69b6_teS`+G&JxhXz3wND{V#5<_oZyYn#UT* zP~3yW_j&j8cl1s1g{N1GD4YI%VH_5*8yEGM_CIZi^@;KW$oX?1VA|$xOO<{~A8g7N zTBGU2G{&i3>)32H6Pk@{GtP#s(F`Q4Uc{5(eJ$!$NRfn?A$actg!KqJCDm0e@fIF< zUWLL7hW;^;!HMmeYByEC8jrq);h|YM*iuL+o_3Zx1E$eBC$n$^%@E?dqn(%rDs~z$ zo12By#cXQ!EH;_KY>K_VDpOm;o$a`ptm0uTZ;fi(J1~1(%|tm!SkN+k-_q2E4uMau zp0n}neS>C9#h)T4@(xsus|^x(((haT;JAl-#A;z)=H81Li$-_?w7_!xyQDzGUPjHxdWD#Ny zl{z!r`|?nrdTWoI(fmGkDn2OZ#L!2?xlGRX$~Fa}VFEGkZ0p!3#bxGy?WnM;E-dl8JlxFdaRd{U~+Ho z%|JOj72{W%L*@DZ3LLVq??zSOGGqdCxuw(Ntc&Gklbqb=$Jnq_S2kC6sW~S$esl#z zLKgKeYEFrwIdIZ_ayiTkY}l2-b^SImi?o*ZEDc#NwIpVX2e=--$+x8od}7`72DbbY zF-~A8V;rI;RIe`T?-%cxae*0U2dk2&?~3>;*tqtdH%8NQHJ(__aC)G|cRE?TIZj8hGg+tGMa7-Z zoFF9M(U-LAWCBPm+_ZQszcpW4_tAa+in@h8nYA6e-EbbCfR1}DPWP^gsGBS^o>UTL z6s7cA$-QM`nwx6XCUpfz9_5JK?-dXCEh6*v>@_15^#nLww$4+HjIL1qH9^dhl40oR zdN$ke3Z2g>szJJt`LcUPiKO)eHTcLKYJ(3Y^&x-L!Y*WD^@1ftk!nk)Hhm-7x_+9a zXlRK8aCPV1ZYVa+vH8sq3k6f^_Ox>=q%gV1FHPYSmI1PGG|@12B-wYt1uoGw%?do6 zeAj+zdgvL~)j4)(Xc|@88Fn39t?;w(dwSKtTUg6o1YT{`jcMCso|Ef`E~Rv7MDmw& zr}u~FWW`|pjJ$hf*e??j zGkxhK8m8v=7?IG>@7@Yuqo}+wr^{5W$~>n$Y6(|fx{(x%-LjBsYC0giIqn>5*-dl^ zn+BGQ_lOKAmWrwQEZMu`x(=`u__3b1ZB1`{5rZry5&o%AU~+%QKEYi5G+&!}?C4By zT19_2i2FIWcq8|B=KjH6LT2GUn45Ko8za&312G(E8uxZ%R9-m7 zt~}F_a4_GdcL3k3rPBQXs%-jWw4@DUG&U>m*EuEfobOG@19Rf2MetIan7L}x1ETW~ zIMu}1-9p2Dtoj=mH;U-XYD}8-It5mThC5+tomq|tt*BYQ#o_4o|6vQUa+KCk+ zm#LYaV6_kuN<~})M$Y0=%%d&(0{mt5OipL2Z2~n0;76PlAu+Gc=8-y zwlj_ssA0QOr77#wfO={pR5Jeo_U3qlZ0=jZ7UmcS6To}$mk~;ffBTbPXbx6oDjpl?b2h;lEy2yE z6vWOnYCVM4zn18V?G~P}`@8|GZEtly5Fbz67eX@0MvrwPby(k&Uff9Xe_=ImtlqQC zHO5?QK+U9NDS|5$BO*`vpkGPJ0d(Kr_MEE0WiMA9FQ+D|NKpr46l9w_|#bXPrYQ@YlvkC;j& zF)Ja9;i;-`wR!YDy7ZSIR6xYX6?qQwMzOqiRA*F0QWZ(r&Yb3vx-h~D5WjUq2Pq7H zvn69B=iIrm6lX`t+KMt462{|)W)MxDl9v>-p*k9-@i$WpoIrAtVy=G8AcU(oK0oAd z@YEdH)x=h6+q5TA?>5YAgbliRF4FK}wkvMoy;`RzzT|25kBO$+~JGkoe&iApg)Ch5lfd%(`jpmHD@M)qB1-;zue|7=M+<}^ibcTjpD{UtJ zZ#a9}_4?8Z62f|Dx7qf?6X=G_k#ywFsu!hvJVIgSsAVLVc zSst-1tsLe9*CTv**h@`9pdOa;zk~(f=U%>v@IJjWjk2|&_~#4iYc%hOkYo9~mS-H_ zD$DL!2>(BOKsbE(dXnz%>;Vg;Q!yi{87D$Z4yMQ3@8Wh7xNIf&Fk*EARo_4 z;gGR)l{+|zCXddj-U1&idBrsPGC${N7H}i!!}pxkL5D)!Wn^1Lh+RR}?z%cizw;Xb zurCD<`B&#^^KGd6akiNbU2t%K@Wl^J50r&Y>W^f*OS%6bQ70zxL-9to_8k$0hdq>4 zwubz?n>#*lF)>5Qk5x*XFk<2%eoT2oRxUUAxk@(LM}HPR6skPVl(NIhtvPq#lSx0O5(nr^WR)Uf5T$8l$Gj{K;n{ z6gQ0t?m6$)b@}UGgCHNhk$f7|X;~+WUjIF67#1`;w>erd#S{vD*QN@h9&JdH(hNluozXBQ-hYjKa2LBnjb~l z^w$$XwyoMethd+rWe`7S@OMt*Q<>tg{p62fqscTIRo79!MEPPrRov)<##pSU%sAi5 zY>u;ZbQQ+EUs*y;8*OiBnFusvm_*1-4U<+t&Uc3=oJRz50_|~Mf1`7hs=T#$}-)Xrz5WCjT@pNQzhXW zH1U%G$za{C;2-GjmNYPN!caPbG~85(6}49S(4Y>sN5iXG^2)sR3GE^6WW1fAG_ z9hd7xRRidFfKlC~8qW#?^vEAcrxN%mI!4~*4vV! z+0Jp5=&RLK)XU6%VQ!_#3qxH0qFDS8OdS0gq;!H^5*j7QLa&mFRAAF8_$v*;p-bFh z&<>EuX18-&;4jFW5*|`j5WZfqlzd|$Bg+vriycPZR?CH;4hrz<_XYz^e1K`oxb^Az zt!HwehbjFKPN*)hVn{G-8h=jKe!#!1^COGPo_JcX`b022^fE*?1K3 zJfZU-e>U`1&FpG}Mm$D8N_h-$F)6$5z*#N9^k;^Ko_axm~mlB?{V#m+w2|`5#6B_M~*I~_oPxM6^kJl3|=`z z3O$~0*)E&r$KyT?GE|FA9(!D=);GiXQX_)hhwDB^lFp9bO+Q(q9Ma+E*)oOfBc_1n zp$&3Oi{Dm_vO$~>wN3O`gnmUsuHR7-GBk#bh+E)8!v#g)Z;V3?$B%6V%!#q9$c4IXW5Kk9sHkAt|Sr^6xOSS$P}EPiuh zXDiCl{rP1N5XA++2@z~YCVmP{zkQ66>(43u1UlGw)rrcl(9w?88M*J`hUq|uLV*S=DQ?z+d$j?xUu`KE2pH`=50Q;+mHY{EHmX9 z&h-c4;Ba|@;?j18qRux&f`e8@S7xo;wh)ZsBXg0OA3o_wB5}5|J(%Tpihpb!+Fb+^ zV^+ib$)o!dkIP+yTBGBNE0;&YmENh{uYAIf%^y2<%gk>d3PcSbi<;R4s<2^B>{0*D zbC#0-PdG+0AcQ`}TxkcL>c&QxopFfEnAODYNxc4u&Kn9dp(d;OE1tN&L=WB=xiqUn zo6i%;sp(Gg-+X18IlkXBj6#qK2XKsgf(NSyKT`dY6!fF8{vPhk&KGjzdK&)p0ELcW zlsu67qy_(haQA8$@8MAml974y26TJwNW=Fr5JAh6RLDL3?nG*dKob*KeklU~o_RRu zEeq7^w^S6&AgC1Dq%pAKAiKI=GotFFr5U-XG?#&fzH(_}G)4f!UwRQ8>P9}56EbEB zSeGRz)D=)~M92F%c8;q2yaaC8Cs_aDzEGcbE1#9?=oz+PYFVs7z_W(#>Tg>x zXbhM@I)Ktl8GIkG{Vzx4#}dGZLx@H);9OlRt{tFBUXmnB1Z^l=k4?1)@!iXBg*K#Kbej&bljIkCAlJjtVVASWJc0XU|l#I|CS6BA6hgpV%FDZbB8qQmT0Ni!O ztJ2L+^`Of4GC(8C3ol+H-%z3=e7-#iJr$TLt}M))qp0!AN#V??w_Z#VREpfX@EPF> z;r-MMEbe^BSU>7)iz521l*<|pzIQ1 z@9VS?0G$H8CB4te-)wa-gbK#2Mj1IuO=1`$OarHAR?rCZdwTrhK8Q#|pGV05mv`vR zIv4z!(DG<$5vlQ8&8*Ob@eNkUMwN(`)i^5Hog-Zj@Ga%Di7OSmD;EaOCgr#aKv0QH zeP-4#N~iTxjiZ^D*;Q2KTiQy%Xj-sr-5Pp(MN>_oD$Evz8*zT6yy)S?uJtISX?QR= zDb0Q`sTh=xMc5uSQ6B|?|6Et~NX%AZ<3FgLt3pr|&T@8?vHoPXPH>KaV>+(cB3(GAr)Vty0HYG zm}a8xl36usxc#hG)WU%0W%>@q<*(%b6l>{7{@kPfqlx!O04e&s19YqFT3UpX-(H*cR8RH_@ljvNTLB z)l>?Yv!G~Z2jvn#Q`ZIk&}QkK6BJ^p@Lgd5tl?O>(yJK?RtmjEYN-Il|0TI|nBe51 zLsoEK>cH~}H(4gi_72a#FH^F!IbxZ|ZZJsnC~k==HU8Z~rM+m`MnEGMXn_biSjH`9 z@shlttk*-dsT)V-e2fKswft=~(}nC2s!02s9k3{`$B^$+O*R+GM-BYuCU)p7$Ytq@ zSTR|`t(O~vh#-8EoS>C6E}P*jmEY64)HTAegKd=RWnD`f3pjM*ZAsoPQh_VmeY%?) zlW1KV#zwng*zes>598Bmu7Ftfuv<;$6A;XyGuv;=?{%5jv#(YIXX0L321Q5Um~&1i zCz78@%9La6G4AgWBN@7f#p4Un#%Kp&1Zu4dslj6}6?d#mb_ihyUX+7Vwm)v8)t2o* z8Mi?R>jQks2@{(2e}=#VKpXiTLc}WW#nkEi3Ymr}i2rH(sr;{=qXvbxfq4ES!^pIE z7CtT8yO3}s+b`wM2KZTm+pR(vAh6kXP=8TGsS;KwJ<8`KZ=2|UOrXSE(}C-naNi1H1)HCwlhDB z^6#ua%nk3g*lHChz2GlCd)w7(u8sV~Jy`eHJt!DnlEVD6T{f&fsO?WK-{d26GrfJw zNY%yo8IaIe!INJN4Be!Hi)VDv9gY1Y0PtMv^xEkT)=QgPDYD-7y z4*DRVd!Tbc*@?O9^DlBmF0+xYLyX_u1o3@PO8dl?ZHAKBd=Q2EY99yZBk%+mOFUqT zwd7Olb&}5I^O%B{z+d1y$g#h$2x4GGs3f#M$H8(d&Bo8C3Lb)Z@^xlYH(l~OmOSt_ zN<$me@fo%pOy^3EztP=d=?IU|0xH#}Ow(DM-^`Wn1O2yBtm53T&NruY1+m;oO|Q5g zW0BNFAF->uJ$0|B2F`+&EhvhB2#1DBPgLBipJpfS*aXLZsT7nu$o$9D{R2#oNgROIHWRlMY2#W6d0PchOeswB(UNceMDw1xxBcP#C_2b@71Z<`RG{p>Q>=RxGZ91(L0h z6y*IYvejHkl`hPrGUyE+0nff>I!uR25($lWg(kDI6$`fQN_rr|O4~WWU!NN&BbBSE zZ4mZGaKGceqmh;I%d^2YIDxUc!1Zj&4CfaVjWQJ46$4;^)P_26B5}I1G?AD@*HC<2 zqHLDM175xCIONr8&o?*h)hhqH!HOuxefAG){7N}Ld^h4Umj8of(lTg~P>C@!2>iM9 zKdY1=&T&@d%txT?l3Nl7Qo+eLEZ4|fnuC?t|G8=o!Za7r)|c%EG92}c7^XBBsX&sN zyko_4XX)4CTFk+@Q>8gy5w+z)SW&q$Sl<_KDnK6ezgT}y2?c8E#xKQ)zU0hvssfV= zwT|S7UL{T1Nt0EQ!1bbJYB*d{bnJfup^qG7VoQFGNAv7Lb2aL%sc-9UVLEao7^0wu zY)5a+Q4^dHL|@x+n-US|{uDIXMem`-|HpU=(14wqj)0$}q(aIUsXWzzSteV3G34l` zqu_&@RRfr`tLG+-yP>OuSze&?uLIqSuTh@0(6V$9;lB z=(dZH0x@yeK-5sPK%f|1u9yzRstzq+Qsa$dG6oIkkvWex@?oajDnNbDG}4PJaf>cO@*(m zjic~$6SIYOk^=uxH1(g_D6dh)7%>@QZ&-e%SSCK^_7QyV)uNa-ZWEg!HP6=-0ZU%8 z+P>Nqw=dm?eU|r(6fh*aV^}5O_26^%&y%l<>;Xe1w~So2cl0XO~*3;@)0Ve3T^YmD(dBpv}d;{9tn8}c_*P76BZ>$|b39n~7BK_hhf{dpdT zhzz}rQr^Vdr0e0RYC3q{wfT{KwaMU464?3|Ad4K1P4r)g)r%yMMGYR0-7T6Y7b*>X zOy-JwN{aCSQ|RM{$wyC~eln%@JYu#J_3}Q2X@+}|fhWNueiXPE$qzj=_r2!!c3t>d zhDroo9eoY#{{# z;kIfL#s77eB^0pkzW#x<86j25odzUawaE`P%7bkdu8=!Xpq1(@R{M-9R%6HTfDT3Y65WM7yXxUUuO#QsD z&H^*yGE^KUai64sF3(1ac&;6EWM7M(HlQS{az{Rhp% zjMEUHZKq){?3>K90z)cgnET@t@f2aRsX6;{-2Z0+M*b@`>Vv(1LgVQv1xfnAd~MnG zgrpq?)zhq-Om7f z@ zeDeb|S8B)#E&RM@PMr=A3qyHP@{oj(nNYhLYa>5i-yV-3;P#ZL*ht7f&e8=d7mDWNTdWA|4Md+0NNV# zk(R761PbvgttSpPbEufEx4M{qR^qxUU&d&G2pWML%E#Zkh5OvNDf=euiW41O@dz#u zH2e8I7DYG3E3r;F1`1Z7;9iAdyFCb$K@BkT1B%eViVBTVC$I#O!Myi{ujKl&PHm9; z%R8z;O>ZdlX>9^H3^X~}sydIb2^3_Iwv?vPU_M%%KJilfGu@PJq3jGdDuz3Ro>er- zNyZpK-7KK}Ij&tNzHFjpBUGHb#60S|`%!c+L`4aE60Zd#Jzo{%k8iTIr0)SB5yz~C z@mu{BbD1MeLyLf;z#gVLIVkbDRn$iv=^L$Mt*rE-q6$cq4b6BgytfJOi5zV5 zj=hHr=by5Ie+1`tvCilQ;MBG2mXen)iP3lDX9{SmHTFDZd;q`WhEB^LcfITYW-i9+ z8?vZ@#Q>JmU9hshxJM<__r9V3=Fp zL{p(phvJN3r%_^30#>b0A6dNrO(q@I@7XzO{PSKum~sc>AJ@i4)IJp~3eJ`m!;~u% z_5kiUsgH06JhUHoJN@opz$+QP2y})C1JhkC4jt3T6eCkiV&D-d+eJQ-&Zw_!=dRup z7d*ey4D=Vu?$Up!0rnqL1t38Wx%Whri~$M;LXc% ztBv+{1w}V7OpCt~GqCEa!B#RIY+x#0#!_*P3$UcWzZtyT4-C9tX5wgwhmN^UH$rIU zSp0RQ^6t^iiPUhxUG4UrC$sy`GBud1>>#v8Le_+h&to-DJRu!upR(P7sG=o7uAea# zd%qGQ<``+6w`?VcbI_R*Cwdas51_pjtt3DvfMcZ!yGcgZ<0I2n>%WYBi1>slK< zSjecvbRny-!Rs5FKP+N6$mZK~7%kcr`CiDxr^f6LFD;p&E(*9o#=ijlC(Rcj=MmR18nNUx)ACs_(sS_$HLP)@At5TWG9CD zaPJKxnkR(@WCc;@u|Fw!lP(t{568bp%>mtGZMb~vQT2a?!4wq?WaoDn_;)jFmM@v) zYS+}?7c6VAO1Y zv^W4COs4F*H$5=-HyoB&Ye9^_KdO4j2ME}1KT_J8~vi4Y7=qT)^x>@+wm7odvoMY6 z8VY^~9KPbzY{p(}!Pv6V8AwUg9*_;=@{3!aBC7CfP1%Z3^u>3K8QCT#oK@8-xiWaD zVoQ<6vZsn|%t0$i(T8ileOR9(1d|Yjkeofd+bi@8HD!3i&O?zr(r?VdFGf#M8VrtA z87zUqMHa9wK`=V$uy?3=4S8api*Fdmb9kXC&(;h4_6Gi>gX+##Y40cpSqX;mFJpas zNL)V8^F;AG!Xyti5zIAyj8zuwXsE-Rx#j$9JKqxQ>1kdy`29-qv0L;qIX%4^6bd7h zqYl*~EN&UEKm;;hMn;-8oKjtY5UTpkTd?(&Zg5~r)+0(jn(k-AZc?J)lBVU4CEfan z@}_;~>*fpyoHS@P@1|ZDifkHwd zt$*1++wXu_b?xg^<2mdGJbKq%KImcLcYUd6O?79;&u>FHM}GA+U{wV-ig;KwZ20Tp z3yh8x1HU7OEM6%2{as&7fp5*yEVgiVOM7J4~Zc zIL(n)xEi(TXsW_vCIH22T8y=%TbeXksAfl6`+$^0s`wZY!MF*@BK~}~RmH}IdYONrs9@>Su zPRjU)Xuog|)z5eyJQ#oX0QGX5(izTrV@KV;-P#kpbsaCopCIG1D_JqRo1DcrV{#0c z&7Lj?6w|T7LBit8mbt`oM1D}xF_H6vxSe{7@=)V{5ex833w{*M?obeKmqjkLeQ?X@o_uh>!TIx{a_cR z2-N!LTO3KMJr(0v9Z`9vTi`QA39S8zk_gXJV(ohp(!AP3UD$>ZH1a2&-=3{b74|4$ z#}a<6DCipVhEw#5WKjEcT(%S+?4shKy`R5uaqcErp@1JhIZ5xhQXiJ}RFvHYv20GZ zXX&uz)ub&XxG-~7rf^}T)tKdhgfOJ>Lc9ZhKMG6PS9PbnekHIa{o>-@*%sT1-OSpf zkua(T#n8^*4Y7)l^OP(7lUyOyofkG!(O#g1oK0DVwQ$V=6uc{3$IdS-&T^q)d>TVb zol{#Qp{uG1X7t1;9!an;-|lhTqfdB%7@W7bMJlG1y)~6x_2X?gABpFE1Ozd$!;%@9&9oY9*RVhYGNX$^jx;) zIvo5IIo$b{78?T1iCf5>dgDMjD5c)!3DTsrpo8xQMYbkaWH9EwPSfgJp=h*Q{9?am z^E!Yjf!%eih!`~Vbx8;p^o;}NX-RexGX-hL1jv*~)fdc=pK;cUOxZf^z8Se1TiX?3 z6V7~u)Li!F-A1PHspxG0K(|y&sjDuz$!vRe0hhwkpu{_48N3R4au6K%|10wu;M9a; z=#O9*=IiqN#gdI!TlQhxDAQ(+fWr0=N*JT(@QDSes7ayJ992@0lS(|NQipTBrZ48+ zavJ}Oy6X9HL*;S z=9}33EXw%(=cM94336DSO<6GdS6K>TpcM%as*N}i{_oupk2f7mC@{HEE+{-6C>Ndt zG#d}aGO>L$uI*HPLCTNkDa;O~rX-llEA&$@dtRr2aM$6(8-!tk4W{_g+OKe!?DX7L z$5U&3`B?X1EhaONq6;t~+2I=MZrwf!{I?65^t;?jT<|w=5~Zmf>=YkV9_cVEa<8bP z@~%v#8TgSx6OO{q56$4q@9XrQ%_Xe|z#Ue^mD3REnP^66UIrCSJ88W{WiNZ=94$M zRViX!mZ}IwL<|An{C{b`umPm(2L5obLx7tRhLIeeySd73h6;^hb}>+C`fbJtSJpfu z#^f_tFjFdxz`(uDJGO25vA5xfE=Gp(TjKb~+?c7FIJ2PG`UbjQoPiJ?t-ei>X(&BP z{H|8}b!6%)1B1Ko^?#>`&AHBN2FzoJ%rA07k#%^M$XT>Pdtga*xhK~{gX%7Qhq(J? z*UQM!JgCf{5*B41!X|#0_E4m%n{A*hZ_M!}z1>j=dyuejEmcFR^i3(E%m&&MS@|Kbzq9{Wok7XuBcFw@MD5pWKdKBICBhg6f zV*3ZJs30qla2)3Z-*@wcBbUoGDVXl$r4gujzrlnDTgzFo-R`H)GFvB4Slw8|f!|_ui*O&@uA0lEg^f0HdT2@AOT!Y>(yAZ`fnulv+!f3NUi5 z$Yn>cDP|$~rm!{80KH$>vPT028C7z7@Kh;PcDUWgktueWqMl8drtvOqy%C8IJY>|% z|GO=UckWFr0Tw>1#ykT7kgQQno0zLvAQfro&mcd)1c`(+7KKEc=Iqg<H&I2Auu>l*q#RJN7?VUK zU_pQPCuQB6{L#04}~sFB8y=_%g{g|!%MtFgS+?MUf?LD zbGm2JuH!ock$2wfrC^hNkJ-Qe7qEwUL<}It5}TNzm6j*-i c6?<1|dOOo~rv0f( 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 Qb{vh(kzCdx@4qEbB|otKvj6}9 literal 0 HcmV?d00001 diff --git a/MikroNUC/20260528/20260528040001-Config.rsc b/MikroNUC/20260528/20260528040001-Config.rsc new file mode 100644 index 0000000..11baf6c --- /dev/null +++ b/MikroNUC/20260528/20260528040001-Config.rsc @@ -0,0 +1,4790 @@ +# 2026-05-28 04:00:01 by RouterOS 7.22.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=Bridge-DOC +add name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no name=ether2 +/interface veth +add address=172.18.20.6/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.5 gateway6="" name=docker-xray-vless-veth +add address=10.10.10.10/24 container-mac-address=5C:26:FE:05:6F:12 dhcp=no \ + gateway=10.10.10.1 gateway6="" mac-address=5C:26:FE:05:6F:11 name=veth1 +/caps-man datapath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=xs-DataPath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=DataPath +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/disk +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\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\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:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\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\" } 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 :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \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/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\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/661/8d6d2114\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 25.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 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 dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \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\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\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: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 Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\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 :local 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\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\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:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$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:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN registry-mirrors="https:/\ + /reg.vados.ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch crl-store=system +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=Bridge-LAN \ + lease-script=lease-script lease-time=10m name=nucDHCP server-address=\ + 10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +set api-ssl disabled=yes +/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 password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +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 +/system scheduler +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="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" interval=30s name=mod/AM-TG-Bot on-event=\ + "/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-05-28 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260528/20260528040001-Diff-Config.rsc b/MikroNUC/history/20260528/20260528040001-Diff-Config.rsc new file mode 100644 index 0000000..6af5ff8 --- /dev/null +++ b/MikroNUC/history/20260528/20260528040001-Diff-Config.rsc @@ -0,0 +1,4 @@ +4778c4778 +< start-date=2026-05-28 start-time=03:41:27 +--- +> start-date=2026-05-21 start-time=03:41:27 -- 2.52.0