From 8f1f81c82ce945b031fdcf9e0701e7c52e509e0c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 1 May 2026 01:00:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 01 01:00:03. --- .../20260501/20260501010001-Binary.backup | Bin 0 -> 371312 bytes MikroNUC/20260501/20260501010001-Config.rsc | 4442 +++++++++++++++++ .../20260501/20260501010001-Diff-Config.rsc | 289 ++ 3 files changed, 4731 insertions(+) create mode 100644 MikroNUC/20260501/20260501010001-Binary.backup create mode 100644 MikroNUC/20260501/20260501010001-Config.rsc create mode 100644 MikroNUC/history/20260501/20260501010001-Diff-Config.rsc diff --git a/MikroNUC/20260501/20260501010001-Binary.backup b/MikroNUC/20260501/20260501010001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0fdafb76370b29928941318666aa8fffda0826fa GIT binary patch literal 371312 zcmV(fK>EM$sF8DUss#W^hVMT)z&0Y|RVX!cCvZCe00000000080001J$p;7$QyUP9 zVw36#eV$x>A*2-SDem_>^9hEa^IrT^no<_CUy9S)eBXEv?=z_V!l*IJPfmhBV!vWow}%S7M*661flVkdz` z@i=dogBNss6J@ptTd-~HtRhmV{sg^`rmJ0*E5V@K0UxR*G^u-dcQ8~wj>qRh(Ku)X ziAw6tSPX3lvvt!M4hmoXg<;rdq}e=YKmJr`Pgo<9*9AKd=M9@Q^F1bURva&&--V&a z{SUh5*8$D$`vA2kHx*!m0)H?W1Zm&BakQ)$=}vj--=TWiw(I`1WZ|Ji6-M~pq?5Nn z%Tc<>3)|Ltgw{sW8H^J}8M^NBRqW8$Nj-Ron6)mpC%S5Y$W$XWZdrg~g655}NlI{e zN3-Fhuqd3y==H{7?uG2IHCSZC8|3=h=VyJ)RwLd*6n+)skf9VCuHcU@|JL1{SENR5Fe9?Gv0|K8~iHKz}cQO-VF=iJwm8^zJcah2syr>FCLJZ$grOJLI& z)q2oh4ab=H0qK}j>KSeR)YJ2}pM2ORXvQ*pXPPN*j0Qh6;oy@I3r%jiH?q09*zJ05 zUa_FQhox6wNRyQ~xzsu!_p!8nHUZ!OP@Cd?HaWUd>T<*i^K_=PMrHQacbNUNjj0>{LUJaGEH_Uy8&{l_pX=w^lGKWP7_y8ODXHZ?AErw)fg%9B8h%huwN z0gsHNXi+&`AnZc&`+8_1ayiaKbG0r+PuOUwydTgGy^sA*jQK%Hk~#bAuRU6P1n1-d z86U`SSOWTOw2e*ev24cQ`hr6Ip=E@aYIt`bog32~_)lZkQ?@e>s?`jTm{ooXlkZ>1cu|0W{{q~9jn z0!#F|vo;nOxNycN0xJ+K46@qN@}}&3YY69^3nnws)E|l3Z@;|nemgy{ zuC=PMu157w`5dbVMf41q)6{u&;jKLW6x!~}SgE+u?!Px7e zk&^r${7kjDX`up#w6bLP3T84G%}7@ccmjWIks{55ht?C*=Wc$7dL0Ayp$<6ReIZwQ zPgtJVj~Y+D0j^H~K&NdyrP*wU7RyGZYks7N;^KfHdv^hG$$HyD5q=h@NLP#haGr0D z42l>R(!JQ~3nqDxlX8g57_+=7tcbDDToCZ+Y(4cJpCyvW&3F9Xf-H_to!dw6WeR9E z|8+oO{1#mamA|(RkeU3%H%SH;U=OPdU6~BW84hL66njr_Em|RUr}1zmo${c4FW^HB zZn#CHS*;gJ>$OXEf!iI>B=kPVm*U%yEnN1gexp*u^Xb*91=Z>;E*ki(39`EuxGANb zf9B$;1H(`#k0ZjWvtC4aJ@TVwVl)1=0`!+B;>u*%LTuS3&D5n^#}TGP8;dXF4w(+V z`OCo~I6NwDdyV147tU?<9iBp_E1a`A%=1q`rJ($~iktt|?X@b-i)?{G=tMWt$Oi1- zOB|PKgP9*A+Pb@$s7C4VYZv-NJqqBbX{ki&MRgB<4>E6$XwpR&EH2*X*&=aeGhswW zk^~Py-Aa^D-&1>TEL7nSG4IlckE)s?Lw6lD$SgepUA89Xn`F^71buNPy65v=Ibe{xW~z z{58rOM%d*Q%to5E_=kq?NVCNYya7IFh(?^LzdTl;Zr@mAQ@G!H(pw#jCKIKk={WpN z00Z3*t*K$~_eh7MnLo`^x-I$iVTzp)*F{MUfEpLz5<210WT5$QvMT>N^TKB~$fO9z zR$=lsRw){g`YI&6&6SN^gmb1uj5li_P}f-6;?Bw2UXiRk!3e%rWhAbXe}$A@j1Ope z4tI8Ql&=rKHjZS%?m*l8{(;B~u7PZxmU5TPHQk>y|B^=MdYg}r2J{s){oA$R#LBsH6Svjh4 z|Nr=mmAASW23ir?do67mNM;sC#^;>+7bopDpMOui7%#zBh`GnFJCv9Mfl>({YF}1= zQfT=9Cn2Z$bXn)d$Zh61jVPRm7036qXj%+ZPa*Sjk?oXlk(OucZv^Pd-hx;Bjfzkz zLyoQG2W=1cVH-_YQ8Z^x;(=^ia^}Wgy85BvGEEdyP;SAt>X>Y^Wvn0+XzdPzh9O{LudDM? z?c4GD$bB)`KUnyG3_3$~r~h zx{HN&*>D})!RkSA@mF0R=OvwZb3g4nF~RTR1mlU)8^IVC_ovR}pya!5gfcIOS#ivE zr71;Ihcxc9WWeXq#Neez(3t6}xITf1>*$vVq4N#eVSUJTYbZGmL7fXfEh2XA=7g|zG>d>CFGhBJkR{DEXxke zfUDHzX&=zul-=f0X^Bey_+S)|+_B9)1K|#NrTI++`S-Yx*Pr-_BpXA_u$}IkgnBzH z=$^x6y;=m!o*5nlnp+{dg2Pt zQAXE`b{Zu^Suq+-HN`uvfRP~7y5S;uj~$Sl1e1;rkMLYX>C8pPHqxr8jE5J%wZMvSY&G!wssXxw~f==jh4 zT|!bx8WOaP$>2?LrwiDs!7nB!Ty_@BgEA?z`>5>Duel5usyT^PqOf1&1MXy7-$5d^ z3YmxiZdDPm4Sb?hC7yyr>Zx-8L1Tfk9Ofs5aW>RZoEeulidyf@TGnE@fHAPQGME$< zmDCZW4wS2TNa?pZ6a21Dr-z_NMSO8zeNxdiAN-nCU@k#eRP@vHV2w{hg~{P{+Si$A z*JMOfQ|s=`zZ4o0rdRqj<;A3{NfvfEWK~PleP7Y#Gf%}yJE`+CL0F~P+3ZNUFn1$8K$5mH$nX>nT1}{dkU-<-n|6 z6&-=?zD0{D34@aW|9~H=7MqO(nmZ&5(v0NQR5?E&%u^CaY)VtWH0FAZ?+(2!@I_=r zRN4Y%36$?`idDit<0XR5c+u9BW~0QL82@5{*PpE`Zg|b9fj{j_6wtYfLnq=je8m2i zsLes21$vFU1~dAFp_yarz@ENchfQv|m6M?HmbaGTbC$2YGOC$;9GpGt4VV*dl4@*^F|8M7hpBN!cUA3g{}lToElIc~H?l$6 zf(WsRpvSCM#L5-F?O*ZqyvmuW>FL)`np@M5ZY#u0Fj5sSU}es}Dg`qkVvHgDr&$OR z32G|KC%Npj*$%DpadY!W6rI#c|3#X|0Jg5i$SBRM=6`;v{YF$sW8r!e@i@ujDH6oM<@VzOQ8g;dZqIN-(>kR&64N@6;?i4EHeT~8nh8@Ejx8MJj z)47>z59r#SD&HWkz?zS$hRT z!w{~I7FAkTEGMF0baQNJu?X*F*uxQb9A=8ad6PC2oavJ6X;p|*a&7>6@+NWd#is9V zJq9zzY<5ai)&Rnz4P8^2R@`Jl*$v(2-_jUbp^a6MVR;Ow*nPKuhuWf->l^_ zV0?@P;w6UUPkhQ78^<`9o|ji)$a9xrik}ie)v&Ads?GlL!kP(ez(%R0Q^jIye}UED zZ)n;uVSW50N>QC^FG%>lqppFyJ}IE?yFIVJatxTToue58c#&pm`FzE#6lg~rr^GUF zD%$E|qI)d=VlL=dz)yrcMZlEwF7T%7Zv^Gn%uf_xV|Pq<=uLdqvncAo?f`l>f0As0 z{%otLtaH<&klW!KmzO;q2iVd)UEh{cfXq2zLKEinn8MS7fvyOGjXD zU?KEmeBDIruulF^MKEQ|_zz0vH=Y9AF8@1pE>8fC$X<7!_P*+@Uq8hTCyI36lFDQe zEb2SC^yJLadxP2;3)9`mnt2(Dx6TJw3RZ8iOJZ7o*ZS0H8?))F?Y&@t@D_ACJ+Np% z67iXT6p4XoVMME{6iJ&Nm3?eh+c5)+RWl>69%-7Rfs!THetyThBoT`D6Ng8a_YlM7T}t?-rYYE1S+ zuUS`oZBF_NK5r*M2wb^zt0*n4RT@cY$%{SVsrAfQIly-cg4 z6jXg%Q;8!emaIvUV^j4Rs$KJ~xTJQMlqwmPov}e0C$~t>xC@frG&`H+Ec&5WuQipd zuktl3Ts`1K{%i8^B6A>u^Vh#5^Kgi6K=ibjCmyJRUzW+8>dVJ|@XQq6XsP}Et;8Jw z{f58SR5ZopI4u4v+y*N9;$!;CW&TkqOCS}-JwlbtbYU7`X&|G&i}%JGKCUB9(A${v zu?!F_*Xw}kcn)zGH^NL+Voo6?1de!;>tl> z3hV-;0y!v&6lIJKC8n?Ip2MIPR1!JA&MG{VasX`zUC6L zNZyOf517o^Pl)BEvxwG!&U&Hv*_9JqcUXOy$`(JKW|!HQOQAivZJn#K1V@Jx7}m{B z-u@UUlcgC@<<62j$?80c>*+xe2crjb9cm|RManfF11au=&p8n}rcj{(CBU7~t zskH|m&Nh~y4yM!VjJmT(({_+##gRcPd{yqi&Oe z`El$;wcb?2+%RD8i!l?Ft8;sS1VBhm#BftrY)|?FZEsL2gI|A@6oRpYiX?(t`vC!_ zF@SVMw0qbHemRm^y15QO4ZOxig1*DiUBVJfbbeBz@=BCIR8gEr{o>rimFLK0N9e(0 zoOMMdlHbhn9-u^rF2RuZhDO4xcnW3HU>cs@aFm_QrC8I(lzts`ot>D3oab+dJt5@$ zL;(>_;QR&CruH{$={0-3`MlI=UNTUgV)(yAi*Y*54_rRG9bwqkZ~`uqSFGMjaPRy0 z+hhzErGkqY5Co{_;yE9gmIpp;K-xXzUVPt4>qm18KP|kJG-~&0b&TAL{8x;4|Jbe%4-p z!t5p(vOkFxIxcFrW{DCUGyZz#tB!Ha#YY{KPIL=?LM;InU<#*nH-9l+hd@g%L>qJT z`PPME=}eeot#y5yqL4Mk`Kse5mvM5`D>v{{BMP?C^ef8i9jj;bq$3;DL8sI}gJS|u z6yUx3x^BNXXdl&V#&gJk1sNQ<)&zQZ!8M7C`MmFAC93Dd#);gWNOu(M&5tTE7W`nOsD5YH{^au97MOX)l;de4{ z^@0$RuUGjHBfz8nSZray&mukfORz+5eRq#YOP#%;B7lljnhrun;daK!u~1;m(+3$b-XZ zc|byhTb4rzx2Pbv-R3@T02DfJg$}|!Q5x>imJ0YsJ_~9VEIQ!dz$2FAWLsUT&F*~v z&?+C}?N={rI!sK&#Y*m4;UgEe(2tY#fl3?PyT`XqVA)Xt&^&B);kV``=y=jl8t(4Y zn4s#PxbnY%sdlJyi8K54ho1D?LQLtmld?OG&Vy-St3VRc$zK_N_#J5uJ*D<@(!V!f zKX8?5Y|3u`;+eD#re|E5U0uF7L_hOssu-D%2&6dh>8YfdPmQ(lDCk8o`GDY!I~7Y; zOt<$7zf}$g@kV1dfZUOz$y#y9x~TaI;+?eJ2W<}{Xgin3UxxxUw0*dzK^;BI_Hh1H zbXkM#=U<2Vtt=(-ZwmIGV+F6X=^v%X9aCX)(h*kHdWX|)3Z*wJGbr)zjje~7cOmZ+ zh8QuWtDks*gl>U;B)<|`PJ6We1P1o@?+G#-0~8Iz`;rZS*<1#_)Wqxuou5T$0aH$F zuF9?L&}N_$FoK8yM_i0=;5>f|#$h+P9R%GBQY3J~!+UBh`Fh!%>k^ebHrfBi+?jj! zv3!?|Ii`nfhb8s>hD#TbO$FD3P_8qr{S66^mU+G~^?Ts0Q%{lV1d&J7d=G+p53MfW z!t_(U=zniG4NQ+nu}YHcRw0%vNvw}hlhgWhT@!;w`pXZM%~iwRB_~OFeL%1m$NJM3 z-{uI2NK==5v040cvhL<|tz2Y%^uVlN!R7@Nmcmp2#vY8xtqOs? zgFLp*C0LKG5&o)bx0OAFd0D0sdcBSU3VSYjkS4O{m<`MniA;@vpL`@`+7LhsU%M`S z02T+*v0%NeP&z%_$Qkaxwp)NQl8Bk1c`D!d*o z(tB=u%YF|-)-TB2rnKCplBoYvx0m5+hqPZBdumgRsoD;(4jbHELr~s-!tLVSTNfLg zx@fvF;iT{VPv(5kZDZ`(zGwtJ@7xjzcO@Eu9Qm_uCr-n;dHykcqmFe~_I4g^%87IR z)it1O3@rYf`pz4(tqdh}OWZLZB!PbAPX#QwB`E1w{v#HFGM5r1=H>~y)3i*N^Z}IQcWA1H%?%AYQ84^!8f!sDE!Dx?B@UwT2L7MFLYnSuD+(=0?V)GLR!`5O)~;UxWU{wzDaqK?MPmv3{$PS7&Sqy zGjhdG>L6`-6Z83Zh@>(ewBUBs0k$MlXatow+Q;k+p(4d%QRJr#hapWeHkur{UH$@x zH(sHUk#?PaO6VRXs*MDbnC;LSp7vnd(Ypg7TMGLAEdi3CG?%ae6`OWSZWu_(esjkU z!fzhLc$`8a^a{mp?G(Ew#lDZ+0-IhLjBaGMvJ)BAx#j*$!b%nn#_TZ&;sHW482^Zd zdn!a_A>|vUhgIG=@FAU!GCzJyBWYe~cT;{3r3dLGkYHo1NShY*CBt$9Ss;)M_nmkm zBj7JQB{CsOnqjVt2Mj<0MX!oFdG5>6chV_8TIvSD$-36(0meWD2;gQ572@}F%#bK` zLswfsbUBas{b=rEhiA_iOflCCAVk}Ce;CFsFgF@1wa=$Y;O!>zwaMMHt z>CT6t&ZctWe;wBN6M$OlD30oo z9=Gh~o-_}0P*T#(-k)yMRe!v(TzZf9hRWZZ@xVOM_E@s;Jr>OI;dqVCOd=j5uYiXkcVCFor!*fDnJh1vL?(PHiM?pb>GpXBI{1-iz~% zQ$6I7`*GVLPlaEdU9l~1k}HlC}6&*SalLMT*FBoVzSPOr%8F1ETAi&c72m8 z#1V*H~1lI9-n!2Z)*aE|zen3NhI_^DIzOC@|oi`}I0| zhDv(M>+dnotV+{jIn&!>_>RT?yc4xgLvw%_XGCM5Zt3AX8H`*b!FGoWhzJxtku*#X zBkp-Y)dc?3MUtqi3iQ4wi2oV-)y%J%e3vrRcAdMo7_L*3mUjUqp?uEnb{o9{zqn^A zbBa@@upJ8GglPff-g^}TLP};e1o>@2MLZrjdh{H?c#%eR6ErHJ6{yB7Z*jXwaeT?4 zIVN>$o=ADiIKPTKEx!`=dwY?;hdbz_i0}c&UzH4My@clEMq8xt zZ=A2NOSraY#rxvJd)8Cu1v#Jcm&|m?3-Y1m=X*OWP{=>_+o~XL2(>cr4^DdSxIyoa zD_gQ8$;b6b4!+Sy=?h~kQb$b@{HVd3V*xbR-u&i*lmauc4dmrAn1__FyAB~s+lrnFD5 z4d5-X$wq&3vM_J{SszkZwRUt#NQO+yTrZ&woeFhD{n$U>l-;j_Ol?om<1U%A@moZb z-~;TcP^mS@X|vsLjtr-|$zN1I$<^_Hk<`8k{m#23TW_^?#0&a=y%S|(<)0hg) z{3IvTC{M%j=5@`Hrppe%E{{*smyut^BzGF=RC_~;0??zhvoUa_Q}90Km63grFB&cV z=Qer&4e^?@EvMxqeu>^eW(DjfQotV7Ae=D5F($rvZ;Z0@Dt-$yMi|A4D?Sq3ygh{2 zDM)m}7^sER)TcHf=m-cd6=<>Y>qtge_}8tLt>=!YN%1|OGRKWR{Xs0`WRBy)*-$rS zkk!;&jxLYp9@w7CNy10n&II2N_$RO`+Hcrj_WrDuAV+^sQxE6P*o z=Suk0>gq#suer5VGCyyDHk-GocdVHFKgKb-xiVW(FJsFM6=_1g%x3CJ)i|ZthY8on z?(I_41pd7%p5vL<~kZEP1`%jPMO1AUOj5i3dYbthi zX=C=kmFNQRNhv>w#bZ)8IX;M&gjp%LOx0{H%wzre?3Z-_{k~2z>|Cd9X2!ls3dCOL zKQmXhH1wo{Tt6tM-KRypSC+@FGF=Tg`*B9NaH5rE@{B!y=T8PTW}aNPM0G>D=&5Lv zvZSL7{j5y%0aPyyH;u}sOyVL1?#vs$`uyDO4h^=pmyV(`x!HUuT##S3j{7T=qk0FK zcez9=EQ5_dgH;ef8&pKnDL{_c0f*h35-~SvEW)*s^&TnzJsxhrg|wJNrw{*QXzx9&V?Tf;+6=)kv#`Bgz%gEcQv<#oor|14X861nLg3 zz{02!3EvR;sGu_-wutAYHPh8McBr7bBCm$t-`5DCV$(EY9^iJ^P@Qs4l|EIaS!1y_ z;=3XdYikL&V)A1>0Dl+Jwzh@OOyjlRegX4PGizDjSB(&S1#Vf@BxRP5El4`h;=RrP zGiwbcl1YbK&OXhqzt^06to)>1>F6&+9?PQqeIlRZXcNhWaRBD$WE!) zK}6sLiWwsOLs4)=JC{HI?{_ZLLbojvz<#A)$)fjT`+n7%7~0viZ7{*s9qaoFSdBB# zLhD8?FiE)R(a-r0?&M8b*#zL$Vk^^wUa>?vhn3q?N4^|MjO|#K7B z=E$@@++G$L^l5sj;(*5~=Ppctks#hPRP%*4qRhv7E^;z=sx86fiQe+tnmC_ciZf2b zHB~2q`Ki-g_?y|6mgbe6t6e(7`YO%W$-9j7TdFfK%8-=#P_6le>VAe>^|Dyl^+&E1 z^%fyt>yGG8SUJg5odKEJ4pr?&hMu?a;c|Pj(K*edT`&gr{nCky#2|)5d{RzL1dTMi zm1D|oNRB1c%>+=G92$ocKmo2=DXW$MRCY{HW_dC3BgZMOoM-k<8gb)ONNBPUj%#vy z_{T4KJe1c>Rv)*qc_B_`%fJr5Z&d5!Q!Z2U`X1#K`_yHoShj1URwNX161@|g>r~gK zcZ!+%?FP|sXHQtbCpb^#YP^rlTfgy&O7ElNy}F|-{bmku#>iDvw;66I=-O{j^MMCRW z5I~xtgQ_t;G8|s(lON(ktr_Eqx94Lb=O0_5KZWu@rQOWM(iC%}4rSdmbuHbW`M^=*d#15(AhteFjTPuaBcuqX@BBm}aHWp8`2E<3uaPO>lWMw8HJ8}8WW`KqPF6LQ=}#+8iVap9 zIo?D_QqE@b=cQwJj=VVmlnD+=5yh_!r#8=4{+vEy5M}lW`(yLhQ57JAj3W`IzXRn*gYcNUxbW= zz}l2RbtlJW#$TE+1U&Sfb9Er`WQjBZgfR{~(mo$$IhkHLO3(=V%5aO+7vowiDDm)< z?&9s#_xKBrC^12%5S{v>2W55bUVw*$u+mnMu&Nf3?_M*li3iQzjd_!r!Z;x7T6Y?)9I?$m0NuMr*u z358j8^p>oy$GH;dHp?(hx=<#pJ|xyl<|W0+!BjY6?wO6-&b4*=_;B&M zr*>KLd)=JJxJ-h7H4Y45kvY#K1TAJtA2>O8&!L7oJ1<-=uxq+^imnvI^sJGzzw!1N zy86H8t4HOHPG@X5tfbsjvaEl8gKcb$swBH9!LIl2xo{_C{WM_>lSR1xx#Vb$$vp*w zyybnQWa5Gcwr-@!1#FJocb28L*`c5`<-=G50y*!$TAXw zOU_b`3MTqUU5Nttp#SA@G?3)#Ly>m^@O%TW4=728vX1a%(}w~WtX<^o4-QhgkJfkk zK?{zUesM6tk2gjT*{-!ZbJ9la3Z9h&vJXz-8r&N_tuKlN71uN$YR~q}WijBhrEfmn zcWpN4;h8meJMVFRhfG*9T}cxatZf6yK|H&9rZU%vYT6k519$yRlz%gvwU5eY6Ur=*(eZ63zRpgd=T7@%^Td~p3w+XGEV?pPIH7-UD|T2nl^`v^Fst31 z6h!b;E|7fg%^T=5t2W+NiE3kNow>n6)wbBI=7mmuhR`(Mc1H)y)cLM$4eDpzC3FAQVwW5Ciis4Kb0W;5xe0Y z*rB$yQBJMxi1YoYp?T)F5r}OE-(dbUNw%*Z)Xdbj03eTy~mEHZ=X(Iaw zt%f*a;SxtZ(iqK<_^dk;EZ~O^nnd;P>zF%LjwlV~+Z!$m zn^?ZwtB*;{N2enEmlQ#oV`lzrl1uW@f{OxI_MIHFh>oL49X#U%rD64=0X;(+^6p9N`r;a0eQb zG(K-kBdQPbi*QK!p?&~&lB_N>Fo0`yGq=&8Rt{g<@RBKPT%*C(?Z3zR(tXkr`d9YA zRetd>fhVvQX9r;bqdF!(NU+&X`*=`5U&sLO|L_WJcSLiU<>``y5BmVXY|HWAr)2V* z(dcLy6;Ssm6?)~nNBN~x7PC~u^d!YF z3lpqh(z~R0o%@2)H)TPs4U-vd#$GT-eL3Dhr6$rdw=1p@wGp}(8F9-T?r;pD2suUL z{`@@+myU$MzDf#Y_ryAvHQTSVrWms%Lb!U9Zt#Bho;$(fs3!lK&8>^loTFfRM5Ve_x4rlGDWm;#`kQk!g(h{n6N4Va z=PeojNT9~%CVLDTI&IW- z)WEO1@v6J8)M z=EDU8&%*&3@I_QBHJsxI)<5`frtU~KD2MI$x!?L$1ng5IUB_yce?j;#=UJd z@>3q963qw}!C7(-&vot_1}BxDfQs5ve%sm|2CT*_a4DH3gnfd!kO*Xxaj7$Vr8Dp| z!aeu&cvuG61K)Rl-xTP7lU{tSVzbEjBzj1yH_h3CgN6Ou$2Lp&}|L)vv;P?R?Rb7j_PK|zbopctFys( zO?UxtmJ`_GzIsP>filx7a^N-ex!1{UWM8@yO77#pmxQMs;@pAPAB6>C-Sgj;x2^+& z;WVyx(G2&eUoYQ#s7z&dJ#zS`C)e0Lup3_!4>U{NOfU!PO#-~*^t2i+%*{|R)^ge- z`tSn@`DYW~+Ax{XZ^ccX=zGrN!c3V{c{deapp)?pW>n(6R|h$6xoN+lkl>AsS2Lwj zyn8qt1ai6K)c3^GvswySkYZxWug;eMeJ!dqsBx>_a8Xep6N&V-#f;_R_H&57pTV*q zTZ*+tynHo9Z$KA^!{am_YCKYmlq}j3g!f{=pu7IcPTC7pTKCI(BaB z@qkz6mDZ~?S7ean84lRezntaDPfy%XCZ`i7pjFeAwShk!`w z?u0)|P~|ME9?ZZ^6tNEQ$SZ<%%X?<&ksKZz7JzASJU4PqRa(oD`pC(+uX6BgE{(Cr z*tS5Gf?nH1>?qNnNhc*h{f1wIlbh7iR)zMQwiA799TK3X0=RqiH-lmYjWLtFm|iH9ABh*(bX^OB5& z?b@MI&4{#5x?Mj0iAlJR?QkVa0PM`Se(|Aci~;g|uZT@8SM9LUY;<%f?#j*0t4APVhpVH*iT*=x&bRRRy979 z;1 zDD?z-SkNAgV4eBVCIjq~WmPX)YZI__x^3Dt@l|;yDYP6MWlb(>LVE>gw*2)4k3Xl? zzkZCUOcuYu?Cuo-T;iKJ>I7<^h=^!Kn*hvCk$4m5Mv9%%pi`5n)@Ot3MRNjD&H&bzhWjgyWZ!@$b}t~| z4FEaNI*)9`DJ*|+8(BokxseK7xrUyIe#YoR3lDfC2vek$q%X4k%QwwD@)|WBo6tMI zva6mCvxchiheqHW?_+(W^R9E=o@vkP@F6;#=|5_KUyqXkb~+Gs zR`%7lQVfUIn)-3D|aX1z#S*Sh@nJmB^?o$)rWcsVU zXP}nih+Q!?R47hayvIWXF1^av7I9Fii6igqai!e|=>__%&Ie*&sUreI^GdaD1~YP8PcDwG9Z&DXsk&UsAScQ z=8OL0MGee*2M{LAK6mL53Xp_plkFociU#KKMHCy8HNg3 zpq&@Xt~HBT*@2NBebUb1wDaZ-qC^kpnyF2bNhwWsB3l=JXKhFf@jhYBXFxeM_0X+O zZwSjgS=*ei6nVGwajmsu4L&C8ddr-VAR;WiY%&d~988PSP~CTFJkd+*zlwcqLOxsr ze@OR?ML#EZu}1){DmbUMw$Fxv+ouL<+pK3$Rz>6QA)&kr040iy>nSlw7eSuM9v=j0 z(IZI7Fs+U{dgH4SmFfLx7-iu)DLfYz1;hQAx8sjFi6pX6RJ4V{9h6jupw%$O498{< z&j!nyhb0>)j~uoHgCnMJH1pp0*1nu;()+3KYDc^Zvhf{22M~0dFuil&Ue{p8FJz$sCulFH4e)j!zf$iK3`} za+jniApJTh%qH08-_}$7sW5^d)OEsih-xS_8`^1_UtogEb-Br9!tvdRSEhVH7AJVc zJ@u0i-$QUn4`T_RZ*?~*z{u1G`B1Qdsvh(s4ms_3&e(7b1V)ytxBo*wJ-a2Be>5Y} z6ISF6ETu%+)OhQ~_l}z|d9G?Y>=)Q)de3%7web-3ssVTflNb3g0s0{0;l}zt;ND+~ z5$Y&s&Nf{# z^$2qS6R-)o$2_xg&bG%KxD||B&GKVImD>P!RLnZow$_U)MURgwh?MpCQCNu&I;v7x z7q2oV)@=GR&v>r=j1D0F#E;L@wTbz`BSBohCXZ<^qt&vmfZmFx(e3l66PD4%e0*!L zDdL`n$C_^gpu9vWYWGjX#HdQbe{#UMZQ?|;B) z&mac(Ow-Jx{bJ>9=!SVn2rZPLyppIg5J;-Mp7%1oWAQ;c3U#sR4H=pU>9tWoD}Xw0 zzj(H-mYy+*-v>LI7Y3i^1qZ?qO01ShPHGm7yn)i50`^+B>RSUfXRm)Z<*JGou=h(+ z8oHe!LSvBm0>@TfT6T|Ymv>1=-OxULPdDI5-Uvz)?1jaFl?Pztp(vb0OIvnVH<@~{I%#67e#XrCA?Nd}%rCd#imI^YFCL7@{jJjskIjKZ1KV&VXI%RdK zlK_`Lh~V1GjwkrX8?DTWFRCoVfnLe{$xj(yD9}Qb_^pQ%SK->ua-_lES3jq~6q_-E z;-<0G>1_N6eApr{pmvucNd)?7i8_+XVzz)H^18SfRs4ETZ8sRnd_t9@b;ty@!#U|k zU9m`p+VdCPx%F{w9>%S3+j9rHA_r7^fPZAGz>c#u#c-GFN~qa3|7Q7&-eZef$G%QP*g zzD&DG0~0JpJcSW%UoorRQwx#T(RL%-DGzn?pNPKz8PX?arCs4gZ&3JBOX z>3=Q)KwP}2m=ga2)TX%S`X%rTdu=tLhcccB9S|ib4v-wA+)L}vU7)cG1UDN>0_4hkv?)W!2>egoBN;qrtN$!j4fyHh$Tr9}oz=DlHKU#?c z+c?!U#Ri|3oAf(q_H5X*0RKM#!0^-kQky%BJ7EyLxPk7z!AzSwicazm8@zWE={9W9 zXNomwP5H?Pk92>Wj02>>1E;1an(_|0C;b{~Z8}rqg{8(b{pCT1P0 zy!~fLxJ0j9R~kYkpwaVStEP^Y(^jhPh@$RzcF~ZC_acgQ3-}M}ste7~A7Ppm=SYY@ zuLa?qiX=0;YY6)8fyqKqdE<2B*7gfK}|#{)QIf=aD1pix^_&BvuBiU z*1vl<2D3jo%8i0b)pzu4yat)7(`)V!ew%%png^KV`;Kw3)bGNLpTqFSw7^KS*UP}b z5dG0GE$LgU)F(ulWp~}0!G8%*q8f#gsG%^GG=+IBW=LmRD~yVNu++^l^k^WJ4?^p z^vx&0a$%Ft!+rBh0mkHi4PmIP)gLhXo>}`F0{K(n-=n*6p4o~zWHc06r%fIqJIGH!QyW5tC`HBbmLuE;*DEC1`$PreDQr;PRLzLNYE1 zDd?=Zogb4_AG#KD>bn1&EOo3QpI1zvK0xyCR`MIcRGZBN_}sp)p;-}3$C*q8tS*)m$f&0nqwCQeay;W_;jroZ2%3qnC3iDCesy0i9R zd)_Cpvu7?`Irapxn)wFHf-l&T&Sgj$3Pre4L=~URWod@DAaj2J;@^U*$rVzLkDrOi zvECS)2pZ=*B`cX*HthRBkyW#u>>a^_5RPzR4bor>cCA}pmb>+nQ>=!EV`0mnU#}Co zYzY`G5baHA{uA=qsRQeS=JklxwY9u$fO#!%?+Fg+PuL ze2;_Gd%5^E+NuUndiJKXR?k8-DIH2~N&=`8c-4dv7E;vz%T{&2Otj~U#Hla62Xk{i z$F`X?fx2?pHYMBL$J1*SP)UME-3al-LlgRA%)DgFbyC@Gi{K z;?iVCx;%hL|K=)zq=+qXX;${d<88zmin@&0=;uc$0XsH8Qx4kXYY2da-#2&`V`~XU zrcr6@H$?FHpszEbD>DT)zKy5Nj)Rr*B~cX7jMZ`s4NkxPL`APEx0^#3U80e+zs4MF zSL`9u0@L#x3{>qbF)>#(gbW_rbYEgCR(R3+s=EmrbByJfQ2Ylk;bWggAS=^tCi%DN(p#u=}s_PMs z&-a&Ltj4^CEd%B`H1uMvMnW(PKqAqudg%d-!!h$dR*a1T^Zii$>u2+_TLx0aMowES zRhlju!{{wnD;OSSo8aefOG}%QtX?_E%t}^k%gRJ}_@-Hfk=7hjY}Ii9fAGMpF?ynp{2;E7 z;M<#Y7Wd_}Rht2?g~3}2*JRoYa6s)jz>O-<6zOuqm)#%SR@arss`88*sbUm`X4c~! zf#qsWk%1U0e3CBWxakqdX97J;ivje(WYp%daIlo6sVoZu3hXAengr44n@Za<{XMhp zP9yk_0it}mc@#LGRRfwtLY2rJV#h>m8KAasYlr3&LwHl9%8G*$U_?xN6qRz`0e4*S*eY}Jc zt;A18&ygXz0|H%P@wj$2HD=D#agonl;{z9qwHp53TrP_W@!ncCKCCEQQY*4HS~YCz z{VuBzx+jn9?jC=Zx&5<@L!$MAA43AZQmg#m)arXo<3u~gELw$cI|~8v zphn{-Jraj?VO{^h6HvfAtnpXK63O+V3+v)G!H(=naBj5QEt7eOaW*PEDU!+kyFF7ngTderS!{sX0Tp1jG0vA|60F*DKKg95Is%Xr@ z+w?Hf2LJ%CRHX^BU!JA-X)g4Y1cAFL9nrXI$x>BW$M{a#U^uxN`CantpbgQCcGc8| zz$`nBlZMPB`f;Y3*!Z8sG5A)QOn4O)lbKzn!QtFi~e6izFG0=wBZL{-g` zEg;Fc?kX5mcyGy2|16A)*(bE;(0NRD1x= zc=m#RC3~+BrF6WDg=feY4#I$kDZ?J_$bn~lkp59_sY&49#eEA-%@OY9TMm1HRyjY; z&Qx{xiHO`m)+Wpvz=IVScfGi26Zg!=%r2Pj1zjhv$d-t1w?zb5+98@<2ZsrK(rLwC z)}U$6WVDYJ9t25;#hw(}nLdc!%a0~Y?@VSvHZ_NgaWV__i{al>`w?`WG#s1#z$XW# z4|D=cbbA*OR$Ol_rB)NKD=J5@gb0}t(&nhn?^H0*2})kq+u)MmL_nJEvWz%)-g2S| zb*{a(ldo5X6rXxVA+;R-1bF2#`RU5;#M1s0~i2{^LzVVX9urN2tCvHAk|_dU{M<(Oi>W68=7 z(R&^B@hgbG(b0z9nABsJ6oJ&FqvBg2F`ns!y;DnORR)MA)T$62UP;oN`rFPA;7axCyX{uRuwRlgl{zGsHEAFcTXLTK_4 z%JHdDIAmO(w<>>#i3!)k-hfgmwuJ_>`tV3l$@UpBF}tdfGDm<)2q?z^IijITGn_AuLB9x_>>1@+>)hN10|^ z!*XgMBSiBN$OH)P7l_(e8o*QIsYYJ-TPS3?FQ%ddoSp4qSmNsoX#=OliZ?ru$WIV+ z@)waInqtC1w_)Z7{uR7470#k;2piR+?2oqw{t?t`$!5y8ow=8>Nj7Dd`htvE3GeC~ zfO?RT#ls~9#J9pQm{2}pB*3nEq$D#W=m+H1?X@r?>OM9X`n1$86eivi_7Pc5HPPn) z)ZtSPJ0y8CWVB26aFx3!$4|Z-&7K*uBPKeVNID#I?nD?&K;<=>mk+P+x%p3R+es*d z;tF_ZwrLi%Q~`?lLFRvKd8hnhUE(^@K1$;-4Dn zfno?Ew*!eqyNB||IH0;7JD9hgr$#^W!0G%u8g(6-#3g%4@4i}W0<$=`L!p%>+?KOo z#%$p`yhFnG^KS&F7pOC;r#8J+6I%-{iB=L6$(`j0Mq%UFnM}csIo6GA1@B^Wwgc85z2JtuBfdyA})YPpapJ1KR|(!+$}$*t!F-E0>=yRwNhDe^~`DAsxnQ zf1VM(BWdF54#drC_At&-$7B3CSCwu>**n{HVwLlGJjK9yJ&xk-^EjJvI>9|gV|pf9 zJJv4n3i(qq;`Pt{4i|(q05sl1X7~OE!2 zaGfUHO#t;QVq``9C&%t&{v{`7b%LSjsiTYN=Nsf*oMv9c+(`DY*Ou`utf2qMhS`>? z`A7V6`X6`kP)=b0zov@Re|Jk&7!E2!(@v^b{s$0fQKPrkSiuFFMJNN0;#t)Rfn&Pt zwW(I6-5haDa;5E8l=L`@LS!9k?_^Uo9-qe9hi)1r3i!enxfXx_#! z)1h#i3&qiH4a1kHdC+p=00t3G&n{lB5bQf>!@e#;YHJP#t>x>7!7mAT+O&aQqPPb= z)^wSq%L!7g(N$97wB{Aa3tjPJl}p3lxfrMVZMqV{_oq;#qJ{F)_gON+#WgYtS~*Ok zl|R}k0oy}RQs|$HQC%|k$wOj?mYiJDIDF;rtpn*0cKfU^Qz1o{88AHb#Mo7%R3##P z^UsT^BBnHt?L#*F+0qB#mKx~7Ij`p^AO;Off3{vsua2^RetDiK{(FS@KUJVH-I%!t zq91Ql{RAl})lyQX7@M*i&=YdNTU9-+?%Fvcy&0zkapMO;+?jnlApgNFVrx}l$|x}x z^bZm&0lyjl0O@wnIf|txVV%dwW;SXfKLa=gro7UfO&UGUSF%K(SK=A3b=i0ffR+2G zj=*tUem4Dq^~8PS`Au?N6DZH%l;U%H33K9qJ}}6^Qe3SYL{5D34A*ahBJ&F!? zoMB{bB{2EAdE&Xc>WemGjXzKdMh&a~RBEo{ECf_en~Lhz(+E?)2dlqp8O*-2ymldR z9wqF=FermxuP(@GQYusx+QpXtn#*^71|AXr*k!e5TA}8}D#q`tN56Q@qun8mI3aR`W=y`G0+|8M;7oijCC<>|- zhuU0+9|P72K`I(Fg&>BB&Wf;E5YLS(tfUGilhY_!xdrz8YNei2?7ze_YQl606A}gw#$l)Qw!njyRlaBS1jBq| zpWukm6}Fv+FYZ~zex(ti}Gq zVV!??dZ9;I!=bTdkFS{D`6*VLD=t31?Kl975yiQM*nmL>zrVk$&|Q&;2^N)D0E9xd z2V?n zUx+Z<8q&8(QIK~1ZFd?=XiuLedRFXoc?;y<%YEkR(f&r!!kWf(jkUbKU}-iAc*O?v zws8FT&QvMs$)}hv(RhnF(zl)@|N76D*;=rkc_ z9t#oLOJv8|QxFh_kXFu}{66wP8qz1#cYuaJzYbKXPSP~36eW={9&U*EXc?pF@?wYy zEkyC%n;PcMVD+sXSPNv+^N>cR;~s?OSW}MZ0t$3vI5Up9QT<3Qz9Gj9?FTzGQDwmV zosjDIs*b;SlW`6OF_)Zbhc`C_;xZQH3iSp@cO-YL0HWvBi7C^1Y|F=Rv<+^!f9E_gpYVQ88|0 zZAPpmICXM40aGK9~2!&&aetI+{}u7|B_JnMr?|_`t}CycTvhuD@~eeR||B?YS|m8 z^0eru!>@fgd-LKdzMJE9KUU(r6?nRaxYXZe2(HLU5(>}F2_;74+d)r&WdVI#&|ZtL zJ)*j$gnu~1lE$)%LJx$hUux3iC0n81E#}|++hG_8v)ugXuaHBMQu!Ne#?!UMX$M7R{CAQ)Lr`&J4 z&lLLBiuK-unvHBxcMnGc{sc|d0})VjsNyX^RJKdXaBo~42C!%C1LmVe)We`lmrbiZ zfoZj$qq}^AdTnQ{qK*N8Io=a(fItvr%F`6_6ad2Q&@Ln)UP`)|j;)YB2&Z(I5S8Bq zJqA@`rf3n&$};DD7%_C;xR25PMVD&yG;c#|4-)Dbeqp^K`*RDLZO4K5mS8_QA#a2t z0+(&aXO^{qE~_(D<4@nb`<}!oc)&sz8mc=Tf%%j=cltu=^j1e8*1ZG^ifnikQO}1YnIui-?ihZJ|+nAXOkK2y1eTB z4e7@OFV;Y~Ceseoj||naNas=!>$r1y7>&WV?6%;jnkevfRE ze81JDIkBMmU$9dBms5Y_L`o6Z?bU3yB5l-J?g@mFrs8(8`Lto|f9v-GcI7{@u_=YM z2$XbQGUYOO0&%|_$ux)=z0CB0D7Yy@d1S&Wqh$1B6X74>k>*r19J0=fLal!%F06$n zrUYsI%)DYmOn75EVI>dR<2)*qdXe&#HvDK+_hsrnm@k0^j#>=#2I?gLrDJc-5%R-kA%w?LK@s9G z6T}{AiSN$VsMuK}W|J%u;bXsI^jrbkTZvc;pXXCtEzX1m83L{0naE&O4er@u)UuX` zC*RjrD9?LvuiRMDiV%$*r;D}-!57%QqZ(1%V(Nn{^Lk(H=y% zqF&?x!c7uOf3MU5sXBXtTu<16<5K9y%I#ejf1iHa!Vt8Z-!xfB6z}AzvvFqGLQMz&W=v_F~kK_rZAS#cACQ^2loKIy#PQ!mZHobe7+}7tATw2O$>~Z0!A>u5 zb%T1K-@IiL3J_9v2^?hVZ3>S)%L@RxcUsZqj@_ZMnyo@$-QC74yi#sU&me|&PzkJ3 zsQ8B>&F8(LwO<6)bCWwmce_mFfuk?wH(AyV3*S*n;^MeFe}#UDiiucUdDW8}7wPM& z0FU6P#*st#o~)*6Y_$%8%~VSEUmk6VWTD=+`f>PqMf-XS;rb5Ql-+?^|HXeL#27y| zQ7D32@fWF1TYk27RQccrM?z5GLg_g`tYW2_R2qLH^#H+T@KT7T>CV-O&m^yLgYg{p ztYr>t?zC~-t)EmuJyCpuQJ#CX_Uu?*LQ=R-CpapNPy%e3A_Gj&p)oK6U1q^Q>~cHs z)b`4fXf5v_#0j5_Cx|o4Do4Wl+c@J1A9YQk@>hV56t~LHteGt-z6IHq1fz#FzZz|X z&`cL0_LySD#u2&7J%y!6lEx3Rc`9P${be+w>iF72F)CuvSTB1$;eh zG@1Xqn?VA1U-o#AYswPW>bonTj&4UEmSlkho8mJo#j^prSIaG;So@rt_(*&cEAwr@w^+Idupk zv0@wJo}HLnN{a+6#L*gjG>G&r((c4b0quf<>Pf-UO=y6$U^Kka2iKJh4xko59Oax3 z>z-R?jIz`rnbYf9f19P@@FhS3d5{BH)C6%KS))?f;l(*`JwHdWMX`nKotKO)`->$s$8A^k@*&vXJDubJ{H`wJ z(asbsxU9OC>PD{=Mbgy!iA<*iZ>wK(WB}^HBW}F$LcCSmfq#K=ql!$O;(7Chy{thzNTb~+j82vYfb^T?tv9@&ur!|$oY2L zx5YH($tO$~vz30B9rsY}%fNA+%Jk!IPDMEAGT_Vj!@Du-c;O41(^s>I0xy&g4}9fX zM$eZsy}*=fGDhe66O-eX*mome*P{6T<@dcj=Dw}d-UvJ|w#<7}cSOaTG8oDZrQ%wr59VmhWD+5oH zSD1Slx~H3objz+t48enYqyX(sKRciMl(~Xz{2DK<`;Gq&rqDdUweF=YhpTTRSo}vh zF2!s7;jxhN zfiAauk{FjeY6`@Z5nC*_FVwluaB4Un{JyIJG{yQDYEaQ+QI&UIT0wfpH)#my!~<># z-qKhw#{q|2d!G=$>;~2IqB@@^l^AmRjdGy%KBC4xykbYr7W#ugl9{?#i$mY#eQmQj|!}_D6JvBxi>`4ZA%;Ud5F+E=%ez=Bp z8-|$hluPAk%Gg5$k_LP3R~@@T2?jl@30c%~?0%);Qf=fO6iFxZAMn{J9n^o0jq;R? z35OY1-z|Gj`F6TH1WqJHrD=r4s4%j{|Dbva)LVL%u@}vPI4ZNMtkuSUbm%kUs4$NE zTCuF}A5YC`_E|k5A!!-d#|L3Jz0Uw^tgOc%OMte+c`9wuEmRc+c*B-sXuAXM7zHCl zDBVsW5*q*xtpu1XVi&%W1^J)KW8J>qQ0{ox3Yu^~N>$s2qFfUY7H^!1d%h&g)xf(( z9HlVD3CX^DhlH@yzlSf$Njj?U%`nh4Vus?*t(${xRpZ!6v;e;ZrwQANft7xhBU6wb zu4LKvWtXGz)>n(F{ux2KOU`RDkEYZe)KrcbyZ9IZ16gbk;Ss&hkJNZ z40uMuz6rK!D)O6-4p|8)D(@SE;NnHoW*N(tu5_U_0Qg643y7lI8GGCXE8r*pEwN(R zr`*tymYMbddfoi3skryQAm#w;0SBqFi_|t>QnOB8e~?(LQk(~GYSMKXbskHZX@OHb z`ZXL;%ZgIF=IB6Y%%%8OeMMK2L4*|Ir|(9tXDgy7W(C#fg$OwvG`QkqHVXET97E$F zwkuA8PxKkI)(xHFA-*q5noYW4?%jt`_EdI@gPf)jR70bIu^OKvW+iGpoTBcKB(U;0 z*$`(SS-XnAR!S6LrMA~Rwm69M*rBU5f+@6wb=i(8fR7v8&3jEea?fl}d?bvAy%>E* zQ-Jc-)1g1#(%|g{(R-foZ>4cyiUISYiw~hjYcA8M6atkDcAcMuz_g(kk?T&^>!TZ zM(jl7?At_v*6|;ll&E`KY%gd~W>yIq>|3aq=pKE0g?<#$zWlbY-@L!A%I~p@m*FFI z;Q}vb<#7axu~$30#16uKL_@8j1XSE|%qs3qBg{BUs!47G_&K%6oj&kWP0;W+ zW-gHm-AeH2{xTt(*~%C|e!fJB{FPT+4QF&8o`lqSNn`dmhP#W>Oqs606!D$MH5P9% z9%3hms+0}?YZ(=ZhOaWl;6~xxZPGfDWaB7@DFLJB=$=*iB^iu!R@|>)BW#9CM5{>u zf)D2kHiNO!GWk*&i+wQyfa9X}_HH}m?7KSbamwp_vgnw5 z^V&8O>XQFv%ogjE=o_1Jcsr57Ksg`D-#-j1Jb3%(Awo8zXUM}BG0<`(ISggznUt9( z!s;yGzjlwg5C%Lu()w7+)Zwi9RFh1T=5!B&bQnc8eRsQZ>HywpP=Th2`l_ZT%k>DK z2~EM_cm{UtDM$B;#Ax3Hjr$!(XryULrCrQACw!U0qP-xp*J>Yt9Z4JNS*$}I>hW9sO@H@n$*AqhfcxEB}~?PLcq5-ZqaWIIEt-AvaMOg zBma4Vyn%!3Aej~0bIuPiie*VIupn3}s9{Yh$xQkiUQ-zc)0(Huu?U7?=t#gr+ z>Q(mUkVbp0gh||U4AWw{`|rP=`c>i}em7z7J+csXID2<2`*+-0+5CCIuo9%b+;NlE z<4CyWNjN9Np0!X;p+9%7=+%0vF>T*4YP`j;Ea z=;Jd59Hd84)=+KkBY=oB?W{n3Qwk_?JPSyIKn|Zln9vgvY$JMcYE59jC>#lqJj9w( zhPq6Yz7sMRY76xzcqnN@T3?_-5j)5W$M1;`A3t^+3I`m#*T~aYi=UAmi@YldgzB8F zEw}MPo#i%@`V6)}a$Eu^1_4#mQOD(z-QG-3=B?lmi;wxYje)#~MDUGa%SdD$f8$aZ zW-k-QW#bMjS$y&^ibKe=>JFVnhSx6H-L%1<9Xboz1oF`adPR2ik8=dPT5Rxz%&cQJ zBWI1WsIj|hQB*i@&Mt{mDpb-r)VQRnGOpge z75G-GA^Y7pA(y2xL!Y<0pO$ro=fpqv%HV2phBZA^d;e27J)p1D1Suf~kR zKBn^MyIN%10d%0D%pI74v-D(`ko>J`X04VKJ20_&m-wvoqHyKC`oMB&Lu9LBQIKu6 zC@W-5k&uvgfny!D#j4rEJR}`(F1 zsr0kfwL*t6SPs1T+-wgm*5g5@?e63#NL$n>zf`S%n4o)ZxHbtMl|EOL?2Zr8B)!t=5Xw2*R)G; zMg7F~{$N#ZFZZH^r7ndSK>)FdfGX!T@M`9D=U!b)=gE78rvc8}{V1BG0vf{o;CmGe7sC=_PYXs0Spu}HUf?-Q=t*kHAHJcwQ!~7u zXT-KI*H@AC;kdrghq``3uzRR%P>po(O$%}v&hY?RBJ>_;yAkGe+d`3> zN=}T{hNAxH3+;-KpSUcuPmaJt%i&uU_HU!SHK-gx{b=qLEUUY+3hJfwipNdY-bMNbahwYzoX)HF$to}#ip{0on*SnfUO9h16 z{s|fx@9d5{fZf^$!~r%I+wG|8UuC?*-9mNZ zqe%fsEpqEI@Z!8x+d89glCe19&{zbmCMR8`ejH?c0I_l~wAID>Yxvg@{W>q>j+RR? z;=Kdr@|S^GE|q{!W^Jlq9lKw$zs(&{@!i(X1mel3t=)!UL^G|QeeIaxMobaH+uhe} z2P{~lplmaRQ_2Gez8nVqLSAp=oP6W?WtC?zfx27iK% z(Vs4GGi!9JRxqJru<#`SvzS3f$?qWP6+MH$^J4M8Cr~M&U1-g>Ugpg8X4U;TWEHhL zbwjux)#O@n{p!^LcY+=*AQ)q4$-sE==#DCuT;v>S=o1p_n{+ zlYG#_Hb6w!hdmRwUbz!bSz16+VE5ae4=6%a{rS3IcL*4D%Sd%Ncv$hR^J09ohTsqj ztCAN(TWRUyAV3=%U$hktvfWps425%T6x!fnX}`jd4u>02);3PbI=+UpU&e(%wx7;z zrENKSP=-HS3j|s88~T<89m!HNf6|DAB_BX1WgE1b@Lu6w;BReO(aCx<%izWtyrn&} z%c7%t)wDl2onyy%k}pod*VvVqGdFKuqVvy$|D02@k$w7C2o=ln4Y6?Ejbk{LY!t;t zMtV%ouVHSg_uL~)pa31?AVlXilqAcHv29XyJ@JtR?flzMyz0eL$=HL9OX%n)GWB@L znoSqjfkn9fSWFBnauLp=z3X>yF!n1x6R6^|ZD-3ikMeI&cV&}5Hl2!uy66R+7dYEe zN|x@*mYcMhQR(Qtry*5ZRND~_Fv3f;q|(ZjnzP9^+aO-Z+U1QF^gRkCtM4UY4Gk}m z*sawt-Ea-MWF+ay_oMCCN@>1@qQ$PsDtFJ5c>x8tN^GdPFc*q~vGhfpf3Cxta>rIp z$=#%?isJDLc6|Y(;Og)PXkj>32A*jJKZSTYJsN*|4}6c}X{d_;GRe)J~_RehIc1|5&D8g0jaHPqbTw(uIYIX(oBM+P&LEVUbD{`SgaGoSI@+-wYm}r+jgIPa19E-!Dh{7<)vu9cQ+%7v%Q}|lR0;v~oTLLS zH0>^?eH>H&{E-q;4$WJ8etHZv%7_M}-R7Xf9E{wugJkNzVVoicf6(q>>K!J8<{4qC zF9Qras7Up(KFuAiHD)M}hLUXHXM4n!JMb3p)uRiOKTk#TF%iQ2r`apSVZ7ys!~p(y zAya~In1Qe1kC9u_k(0uN9WbADW5p4j0;Y-}M=E1g3q`8|Koe-HDl!G6DH`9OdqMi% zvBAEG!0q3bY=hunxIdA59S1IkokH=`sceJX)*a)TWIn-S@;fJsHe-~W`<3{bMmLCK4J0_z?kye|@Q$iHtJi8uWVvK0I0tgq5) zoKUuyUB6T}5)aHiGXQzMu~mTm8E{Ov(4z({EZ5D^u{c)khZ74OSRcokEbI#zD;yg! zaJC8WygQXvQErRPF~|Zuk$eOl0J9vO3;n<(AEJ&<>-M3HSc|P-%?=MhiVR4dRq{S> zoWwPU%fQD_ZZc?|1@dEqe0-v~;8u{1*rNY>wTw=_!j@dT7%r^G*2n5XH>dHR@e7x+&WE1#WvmF3~T0!6@!km2eUM=wMquo*@a0 z>&#hd6mWQshXO_}_r9<6hU!NTr7?M5O-O=gJh`ABW1Px^7L5gCCGN^RDW!9e@wLe( z|1cA!gfje2Oo`}y@h|{3t{xv~Q5#K!P>U?cTY0h{>S2bqvt*Cq^jR+d?Gdp+z~gRJ z-qbo%J!g63muv9XN#RbiR{5s;rN51Ka?7ljJ$TJXgY` zI70Q5XohVKxfsG;fMfw28oKihi#zNR&r%N@Hjmwz>}@hR=y~H%D}qu;{u4CT;2ebl zbyVwc#(B8QT$84V(Dea=Tmg305M&O-=mo-vJpJiFr2NH787nbKyCmVXI1^ym(%5hF z31M=(I}?Iz=GjW)zT&>9t)aMKN~#mg^BencIrgtHGJgQV>(cmIGcJ?QBVb)o@X3|RiU2dAIxhsy2AFi zhD_QC*=rvHNkFc?DH9+79}uG=Isiz!Omhxa)z1_ueaksnrJ_*^tsZ6DX>(x>AY4*p zF*_6pOYzaGG^?2K$ik{=-n}p|Qy+aV)V%0u<$r^{T>GbUuV3dfl4t41pXK+?dzq|DHu{&qit#-^OgB~6 z6Iox94uFQ&NADnTcKT4b-aOZM{aKDJ!dsA@+(SxhEA5o8o=%? z(LrE!X*HSkNdUmwlH%@27C|BPYd(L5S#E^RN1P$EzX697?F*WC(c~ z|FXBS4zK$S9NdG-nJ-*mz%|%Rrh`%Ma@e`lE!PR1i@7~qI8(6is| zOWg7Qh3#T~zeS{xpIg>F9tw_aA0lA)xUO1V{9YFSWd*Kxj1F&OG$=1s^(makCV|@f zF%hNy##w)(t)YMcq{A4oi#pNz~)cxl$_eFlX5 zh~qutgiYYgA4J2+yS<%w$xR^2)PYPTDh=H^s0HKMzadXILJcBn@k)Puy@5Gi=Khrl;OWuNJ0YcD0-ouQbiu+`t|RxURB z0XoAmD5j#&wJmZ5L}_XQ!d7qD>hEITeRA<-#moDaeIJk7cQHX=iMjlMKf$j@Ew&K} zYCL0lp^+P$-FrL6m8?BIGF-x24~G{0`Y(RZqD(NGAkFTP?J z3j+yT@1ri0ks#bCA01t2p&BPQn4V|A<~fx!o(_coW%_|ckMxcl`!LDw0VOyYwQhrjOG$aO-CVRZC=f?wGJtzEjX1Uv0Z zff%=NC$pIce(&JDm-a}oT$`nJIE0_~F^PXf<;SlvhRH+9CSju^U|q3!Sv-EK|#xuP1PSI0ft)Y<6M(|4WQ$1xlr{4RHZJ zQ{Xv71#e7o*Eo@O=r0(Z%c)1~EFIHDIP%Gegw7lYP!+=0%2vm`YN=X5zVzfy@7%S3 z><8sj9v`bU<4&6dHf~R9J*Y5O7lU2UE#}J2b&yEmM<(rwR$OMx0~>u5pQ21AzxSVg z17+*ylUP%|-ukED#j)X_mecWJt5QQJrI_X@7(3a~?+#5<00-8!;s`hLa-d2pCF=`9 z$;j7fKG(4)TI4i79ykt03&mx6xbcVz=$N<8j`Cdhje~OuQW)jo*4_4eaWb0R=6se& z*D9}Pr7VVQ+%Mi)yNnE&&`$&byz{CEq)dJnT=@;;@=UfM(YpKien z#4lmL>pvdJb^mX@x<5iQq2;f6U7z(J=~;<_gbOYlifS@#Kh=5BN?`|#o{4~OGl~fI zXyCJ$`VxlSmPv-`ifFE!wv|Oc{N1yVWSKquu!^(*hDaF!C1Qeu`J^o*`H-gyqpJWs zI7XcHRgpK~@NI^@gm+5-YJquYb;@J-fdF~Ip4P3cO^?3*7JddjmUJxxqXWX4s%I8^ zjN=?Bn!#@}zj<~PRjiJ19~p#wZ$UaR&)G}Ks_Ar!Ml__K8z1#qR8R%N%F@vquO_n+ zZTmG7s_@YsEy8Mnr{3{nLsD^2t@%fwqao98m~XJGnw76%np~ZSKUcPP5`H0Hs={e5 zK(WPAW%zkzPA9<|VS+5KVT%Xk4$g}2SMv;{uwRk8`7&#UNBk2dOd>vZ-{<>oOE7af z)|+0N{TYV6KJgOO4=nyJ_!ek)QOsasH9;N}275$x6r6Gz)AD)S-p2`qAicyo`ItZ0 zqDbct2q6kQ#*YHUGK}z*-1{hnAqMY(r%Y-yU%WCU^;(J#BhO0cYD})H_|0M1#mNr{ z?{U}CH73yIN485WI|J0y-mVkA*pPnoLNVNfFdZmoIuPC=^!cPK*X;DkII@GX69|i0 zJ10uPw@#&41dT7Yo)J#hqZu94@zb>KQ7o`A>YtaetIH>m{a%V5Cq^o9%;`j0E=L)2 znZQ}J^MfbIA#vjk&EE)_dz%4TEwX%(6?8s?aZ^ovu}DH#Ru z4c`-);}m$RUK2Y*)r6Q`Ex?PfR8;C>U}Ze2J$`pp8K@Dnd95^n1_f7Y9q60zN#2i{ zYPJ~8oqWZ(VC#1!B$pX=B6}H6x#y-wLyVC3YDWo1lgzyioKIuIA9h#!4wHS7+K<<+ zNK?;Paak&&l<%21TEJ>R2W6bBm_k9T?hB=yf(%iCbdG9!SurN01O~U$9hoSML*JaT zzGjrqug61Xen;%=b$n7xt~n$}aJ~mcT=7t$&|ZZ&QX6+;k`^nelt(|^snX#NK;{1N zD25?%Y9X3XaO+nWJ0i`u_Ga&E_!Qr%=!8o2PG+(tw#7opjL3}_?#Oa-%1aXuKGZni)#~Mkc?j#l(1rfvH^5KS| zwk794mTg`*cV(H7zLnOVfuV15DjC=dUiN@K&0GtlvOE)|UFx}#6Sc{E?W4~hHTYNA zI>dP*i`TfKrJFh~;Fh_ZzjVd{-zo_N>?ymYF>@*vu*PMxgn}lpw(>=c8Yed3sQ^lR ztgOT~Jq`2A`@LD%qs*noC)xR_s9v(#hGkrJv<4(b$!+es@qaL7!Bc0;90qS`Xx!us zy&rOKFKVZ%9mffRc1z*zcZ9vH26q?MpkLd{{L&?R8PH2K92oWT9+XB`;~Gc1-uukc z-Qp6>T?#_~ZC^l++k~|4gwjSq?OgY1|MtEP91a)w#m7^C?&KV=&fy%`>Nt>Edg%lZ z3|HpgdU=X_Wq!x4tHw0^V%JoWe#)hq%f3OLz|6-UiLjj;$AnHZ-p&{nYAg{tOFX6H z&LDUS9#n6&R(Vt{Q{>fFCr-!s+0A=@Of7M#^S)KouJgQT#@hyICcRu0K+ZPF)5Qiq zHf?1zPtmy>X1}K%M6INV$%J(7Z_~ziGVn`zIN-NvvdTF2J`?8jbbOjL?EomgtTyP6 zN}1=$nV#uw55#c++SZ<1rd#Q`dT6lokc63apIu-k_$sM(KoPhJO9u3)Ly6D?kBJ_-D;#OU|9!xDUG)Vq-3+3Sl~4OvMe=ECQtRh1w8b zrD(b?&2Ms|ETQaC5|y=_^J(afD-dM#l>Pk&VEx96L||TBI1EV(7DYC@MENw6 zUoJqMeiMYcr4d%8JL{TxlJ6?~dL5y#qpW~ZKnx8%Q|Uw)*z?|!a$xoD(D87We% zHdds>9>~MqCF=t=XDc+l|$i>1VhuL@Dy;%9-1nt}=R`n;F~bm)qs= z5T`~ZuwGHoWvAV3M1XV+>c;Y%Td443Z3pTO%d}?611(%KcvULgme&2uhcg- z_Lat^9t;P#C=o%}2s^3sC;}XQ{y+7LmI~QO#MQ70uPqgW=Q~d`F>=A5BiW# zl!M;O*U$$qQ^hUB{C=WB;73}+eBEf&HYxENqaEFt3`)=#5DPHSnr>OZ3e{I(uOrtE zYh+Lr=<%`Ij9%TvDN_$Vcu^wL-Qjd^(kv_LzJmP*8~sjEEoGPqLQTRwc97%^Oh-;k z?_$f*%-tBJXYgDwnG`yWQ>ZZycX8{b^7<#uG|wdQUpkOPz4nm~$@VM|veKM29E^3(g!=znhL3pl6! zf3YVinum&P86kDy;gvi{Z=125U9L#eW7f!YOOi4VThE8%JXKJb2#Bc4~15=J#F#+3}Z8Z4~h3$Mt4e zom#k}ewL#Xyf7td%#w}O!-{kfG6B2$g9Ue@Z$ZQWYz7Uh8-8?t9b%CrgGj-2ZYT{2 z+iFelh_#nB_!``FD8^vCm%0C26_Ar|X$7=Agcn1FI~kwaOqBVD!qtZ?*v%E_2WjWM z%mrePN0_qil$u+duIZTTo8wjfjm_X_&TeW4KPFEgV82#9L-y0Ozhom#Tj$9c~OU)lI*H+345gP&8tlSQp^2J4<~Y*w#so#10h0{Ncz z@D45BQofsWG>!{>94C*V9%(1PnZ^+YO;3|`Fr)v#GVAOu;52$pe|MnPk^Ev4xy zm3U8-6afkIFM@swE;2`X)0&>|G@^~{+=1cX{aP>$5})yj14`!M)KbJywX))25=Q(e zXwsc%NN~yUl^kR0T}1jF;E9bC7Amb}Whb#BtZaKA{0wOt)2are00N6z9NWO#x8`zZ z|Gt_Ic)8)2GM!Bh^=RxMhkQVYP0RbUL;3nvCDAu<9)7^oGk9 zN51VII3d_W@>OAW+`D`P{mECj(TFuSjo`~`+_@2(q`=_ol>vSYUli6OyA1+)e=*W` zPFW>_7Oy99zIF=>I4sTMuD2%~rM(}$n08q!9j~*K-Spwp7w@=1Q?MZ@Z?XNoR&P0< zo?qW+UygBrs`K2d@UM10N5$|1=B%9L!mNQgZjbdu`~JAV7t4ktPLbVHBochyoV@>x z_cf=^kH32qG7pWN_3*M0t@b&xdk42eRFN8p_?}MCPf{@R91mVZm1?{|#aJWXLbL5{ zVFS3Z3OV0i^*|Zkbv|Dt3PL;YTS1@kl%wQw9h0K#Sw2DPI_8M~$SVH(M?+cY{J8S0 z)|oIf=v?qHuZFtO{QlY&lf}_Cp+JHE^G2=U)s`;NHdPTC*TtLJM9~-Ofrkr@M}%9{ zy=D4))&LDqy`{+qu&OEw0$bXArqVD1!Al|aKIwJfX^`Je`u3?=wKlZ(6=l=2l$uWW z>Gs)KNh35ZeDNXJOQOj`PYJ1yXeBt9`YRsYP8IN;3A0MK(A{9{AQMcl98f~Och-W^ z1U=)WzYE&4T@Hp~%17T}Ec7TM(u-EMH0uJmB4e(PB#r-I6Qx^R6Ymlvb6;5-2KB28`IL1y;i>NU-G{rwC`-mA_&U;QAS*l5DD zOtaQ*^;rZTQ9g$!13%s(ieG62-*WNFeZgQ+ADMjAYgq9(oX%JGrJ~(90He_rOi4i# zO}sVM?ph`GGUmg_=(fprO2u>rIgQEo5DsMO1W3e6AuZSxUu?y1%rm&V2f}6CNS@bD zWhEi_H5(c^yl>cTN}TWT2S;w4ycbO}YwE+gK#t!3pkqv2kA-E>d`Ev$8i}X0zA>$7 zC0Qcwm=)=aT!F2raes8EN&tb)`%OC|+U=1srL#);>9 zx2w5PSM^M#C>6R$3>7DEDfLIP+`r{u^kK)S3qIGWsFRjf_Sy6#p(aO}!0peOG?^^g zE(`1AmUfO3;q@pN(n}@!-Ki{f3f_4ML;2$LbH_SCB42nS1~>N3fTG-ag~YidXBT)|Jbd4VyewTbsX!Ye+qbC<%fnE=MTrWXNKN_H~HCu_Lvsj@07WaIk|5@i=bDs+PF>dy5#%*%zc1_`t}&m7njj&IA?}s|f90dc!U~H_sfWXeX}~?IWFwsi5J8HL-s(I->MASZyXlppzPGn4*E@jybET(S zeT!kt(nzx{izjRkl3y%kf~L1=20p$8v0Tfw0C)$k+!3_a`fke6_BbnGv@yOV03VX4 zN0$!od2jw}-YEJ^1#fA2@bB!c(Z1R=NxYwFr}|89ee^t|o31y%{^(19^|%H)PB$_N zBGe*e9AbP+_2=3E@tEfy_;ts}6NW(cqpXts;UOTlV0WXk&6yD-v7pl!ZATD)YOaEq zhjR{7br2dSEHypPT_$bKCR=W_e3Bua5KRsln@?mD74-Y19%M8*Gz^L3TGgdp_jCgt zO}on=ZwzX558PKKJLI>LyHmSFzyFna0$X?2VFo%jhy4#T>wjomd^pWAP*WTGj?vKT zi2UaL18TRK-RhWophBlzqtS#S1@MO%Q;~SD&aubHN!9K8h;dlqSl57u zhzD^euep7kkl0k4s`V23K|F(r&KF$NjgM673)U36CS|@Z)IGv;1UzT^$W|ZF_5ku! zO}#x@Db*m}!UFezdll==8x%akl(J9(YHB5Q6NH*m;W7b7k}w41_HZz`ggaAF% zJ-3xxJ)}2P7IJh!`Wvv1EH)HD!r^Lxz z&`;SK_#5>UTa0~Uaez%h`IbbpJYQ9CWBFA|##9g~l2pa=2lsLP_9V}Qc7=6^n$WOD0op(Qk;3-Xa+bmsD@M8?av{X3Dy9#=VR-UQ{L#s>IG# z_obfWf6vq$iyz_2^-qB87*OfLfL8z_;0hyPRGmtwJbtQoABOeucxegNC%(Bjdi1$8 zLziBd@Snrou)v-qu#C!MxUuw<$3>I%XAV49)ooY)?fdg;q%Rau*7cx@e0=Vc>ieBw zQL`&oczE&yf1&NMjT@#kqoI5KVaFVqE~o{}6ZN`&nP1(xy^Tu^U_D}JDuv$WvE?23 z+}zG{Lhb|UYfeyYZcT$4C#d9~_tJU_|3mfn`@E>EV8)v4N^eL@yhT-XB=vV(jdpEt zX7RNb@Ob?exScTOOhKeA54)J9FDn`&7O)9TgFEYcdTN};E^S?A(fhf+vJ0vl6?Au9RO_AXC@h?wegrV zH)0>3~k&Fu{fV5pblnnciLV~Jiu^A&U~fJOi2z!jrXCEKEM>v*=<96C)z%Kqw+K=roBfd3)giYKUvdd8k~3hJ6c@E#ubFOe5G%$t)q32MQ2 z@7y^-Mxe2I3fS{my>7k(w{K$@$eh`#4RW+vt&CRPd{^d>PnSC+vqD+aB2m(ZfEv}?wu z_`*vM(DLqPL|I|bV=S(QlKJG{3<#yPHc0y6_GgsL480V}$=(O3M&xU`IE z=i*yfya*K7g=;j|f02?pB>A3~VSdl4$43}**+iZ_(U&+kcUTvi9r(fnr^ut|PEY!@ zOPdX_-Sk)9wWHFc*{2yk_l~L{=GIN?ex3SL7T+# z@5{B}Q`&G+t|@Z>fai4gLrYou&$&qM(p1Ykjz3iTu=BU5pX&Q^8~)JSe1rt9H9%dx z-UE6=bEKKtEo6;5B6iR)f$V%18;?v*Aw<>0w6Z-(h>Of=0%9F1<&TVWyV3m;& zV*m7A_uj@cNGkZHZ zUmim6)B}m>{fPXW(bauWpT-R>WQih=)E8!RdK9tA)DuvCBAjxv~!EIc=`>! zq)(%|jN_UP2PCv@5$o5QA^?5%*_MRoM-7+QU^u$>7=~IY=DRL4*k@F~QOh1;u9p&O zGpuTZ)~Fp9x}3{BeXm7i8?~FUvU`|>Sxz(-MZ}{dkc=J&QTTx32EGb$8*a+H{Hh%6Tl~1V^)~|#N+wJZt{d53=(c??-NIL{vY&b3#rqe9X>8j; zULaX5Q|%iOZ<{9czx@^sw$_xXH*_&(1;BqK(TNc2PCMq~s(4X*6O8c>9Tf1{O` z@6&(c);BD#P&j+353DU$rAv+F8H$u`8GMzPV5gzEmApIe5)v(TElKKD4p4B2vCcpJ`~r)o zknZpMBFloywv@5W6OyO6i$;GN3#!yfQE?jseX;SJi*cT(QadUi7kr#a$1^d?Z5QXs z;+UrM9qmEq_R(+l-U+5VK_GH@aaq~4r=fb z$MKOB$jls?vDkH40h{V$s0cAJoE)BMR_t6?)rNd4Iwk5P^n62fqNw57YGkrOZ>ghuUjr)E97YBz{tg z?|<}6`zS?WFrO^X_|LX1#5fps2jpLmSN~~80nbN1s`zfnyhL@{a>dj@Oz60eHb;20%3NSwoQEu;IWET zDaryNe!8^;CL}=SP&1pdK+MW?MMJ?&yssO3rf%sCtTbJi;q@C`mZ)y&g`P{T+uD69ouB7vj|J-k z*@ZkVpkQce(%9t1SBukAIFP~W=;P2g69dRdkq0a|%w05WFgpdLo}{pGI+7M$&1*R9 z|Lui`eK%@U-G8te?ky&EX{r4~_=5^W0(pJQ?*xdCzj@+V2#_OoN+&a%# zVf>A#p#|=;r*{D!lf$uSHJ*`p#&*#P4M0xt2H@*rebFT10=|@+tpJ@BQWJ_mj*c&J zP{>Niz)X^`se9O{`^!88`j3!@M?RW?t}aL77+KP@=d;T|I3I`d_tWjY{PQdOO`REJ zz?%6Bu>z6reb*GrL>bbGBaeboZXCEhyJyHZXBA?8Z6U$kn1Aha+RL24>^tu>Xc=6Q zp6jd>x8e)ewQr1<($6W!FdN`zl|p{(N3m%&kc(w_1!|%NJykeHw@Ir_rpyf|4&8&&?ye)%V__N6;fq=}7Q-jv*UgqtRZE zg5v2z-^~8zsEKc#kYfSX7*iIA`+Ld);MPZs`8ofxQe0}wFALt-tYb;A1`5I#(kP6O z-ka3T8Y@XPdkjRABFZ#q^8XcvoIjoyDIi5Y-FyFt#JxmZI&>(`k9^j% zTs@#enIkG@G|fviZ2W9Ko{L^V4sV<<8Q^7e775X*f75TxK1l zPzZE3KYc`zpdm0iroQn+;|77}Y-XMZBJmNzj3uy{E$5vR<=*8PMt$_u7#jJ9q$s>L zZDN43>sETl^Iw$PQfQr4P3AFM_VO65Xo1V99OKfraWAYt924oywkC+&{=(+V;wxXJ zna4l=QstHw%n79)_gqtg(ZDSb_VA&9oe{08y!yXhZaLoM4Chcd3CT!atd2?CR(52_ zm`v&vFkr7tkPe-JD>?H$9^DVVJlK3-*p@UdGeZnS0W(RX%N1wbk4-uaJ(RjsA-VDl z6$oe6J;@LT@ne#3`>vuk7FZweIV}-f_fXKxar|gKg=CfYK`h7~>Y;o|+CpNcxbEk|_@J{A_6Nv* z(qZiW18(d$fU76MY(m?)JPk{pa8xLaG}G4F6kNHbV46BEVVjQ4 zJ;H8;vs?Iq#;z$nc4lvB0dM0|ZA?6(RAX)!a&0LfD ztXonL=pcTN{%3hOF>!34i-UfpvfE%#`)p2{{viu5N&+(WcF)zb9l}_-y=TP&gagzj zLiYIV%83FO{P_5Jv?e1CN8B_EdXD*r2?h8|~Q+KZ!P0K7xPTV;`5QZNUulnn;tdBsm>_LZD% z>^8S4@)Zvzl*0Bokkku23n6C(nFc~Dcq}x=1&!o+N^886DU(aTSuUet;6Jf~UY3Im z1#|*<8Z2Z+^2S$19>CDic_7qH<64tYJ0F+OQ}<3p2@x^r8?99p1#$HBcoSD+h)!Yn zg;Hn8@g7ycZ|CL1pS`o9%FdC%WK+ zf+Z~4(s8T)q=x!ky=u8C20RvY+Z-lyc~YTW`1b#uHjqD*55O#=pm7CwyzI92eRznN z-WPYvo6zSyJLm5m+4Rz0PY1PcfeSre9$QsMtJXc=U;UBDB6OeC4*xTrxbe-vZ?znN ztCQ{!Mg=-X+$D}^1*ZmHF#46}4{xw*lswFolZRoxEb-HVp(gKKcmfcT(Rdk==V39#I`Wn*6od?ppL&mRjToRtp{1XkbMhiuN( zJb>fS zzy8LJD{5M0m{*=w=iDN+j^q#6he=Z$zqkImm!@UpL-HQ^4HX^=`i?PKDiyaf<-<97 zLU9Ka$BiC0bX%bH2_2sVEMlG@NR+Bvji}$!z$@`u&-4@Yq?2*G)?revE{$s5asxz6 zcd`G7*k$TJF$n5QfEvGoA{4%{?2*;s?lu;Ofi~*03d) zG3+SFq46#L*tX&3JoI@C3Z%R5^`XwXzh&^nv*)k9!^{h|LoBi#%>74E99@j2K%dcUKvvzhv;jY^o;S$T->*ASd8?Jy9d zg%%5$c!=vv(OhatHE4>tE*<;}8!$5kcc2uoXb$ou8k`@%BIXj<*Bi2#F^Qwp=sBiv z1K$#IBSqq;H`D(ul<70DpQD6w+w9r5r=ae;h_JWLTk}nRlknj>9Whp5jKOXE7@m01 ze<+bu=g3RaEkx|zZebM`VkFV(6c-w65e)WB$m3A6=9|+k#66amcD|VQah_p5Uezp` zx0y{cGPhDp-JdxPO;wQplP8I63VL(3d}R|*OmNf;EWYa@Uj#_6E`Jg~jL&4#>r~zl z;i4@=b!M^oEguedyL+W3SJuXO_rmrOrFbp0+_FiyO<@)v+MiL zh}ZL!IX1v6qm)BF5_9Mc8{snqu6av`GtFY;(h(6hk;L5F9=bfOUrME6<7uzS87J>O z9uH(seX*r#nikw_(Ssu%LtM*pG^R>X3n13>9Wq#K*dZBOHCF5}T6&uqfhZ2j2n`e) z#LF{l5Q+Kpwb!VtzXjjGJxfId-z zO3uo(yBgRAgc}A%x3>9|eZwG6EIdg+M%bG24wa=&YcN7l08}&TU$vCTPP#wYy0`x+ zJHzbyvl256OHakf6FNw7FUmKcQI3&xNi*c3M7eI-M9h`Ix{y52%&+u1FMMYD=pF2f z(%=O?sRE{Uq(m9HapOV>{S(LJi?&v}*U>kST=3cudsbmSPnA{xpOtNIFLTqDx&xu>`gsn7coMXpu;MQ+&zQBj0C*Ou>5Gfp1M33PcuLfg87%qwI{dfws8`@e1&IxX4Hs%vurAPiFIhSfyql47?j3nwC+Lh zUxkHtd1JfN1r$_c=hTEbq+_GUne{VbVu|>%ehgjqV}gGbv-dYlF_PTsWAiT7vI8~? zKDZ6__`~?j0KC3yDg2Jds~m$Xp!#EeLcvvfZP?i1w7Wu*et9O7smV+oWl#d&w**Lx z7X)9}gn!{+W5}VU%2rJ2U%cr-C&@-nN0VZv##%>ZOx`1QtXXAj1+-mW++r!*nc;sO zosBOr0YjgVv~S;&BMU(nUll3@nm5#n$U8!e-$MAjK)Erf3GfwelLx;orRztyd-QIF z?TA)yJ^x=J3hxi)pMpQGoZYF2FNc#nlS|RnBr_T{6TP0|v3i#s@W9 zbV1f1hykXluk{oq{*ItY^bL$A8ybZ`!b(a0Avze#2%srhU4 zj-$JZCgrkkIe43XU}4^0pstEyiHlG2xZYdGkX%O=to*W0XVa%ADKM_Oa+Q@#Z@hvJ z3T*c<9DR<-F0QQzDwkih5rk&dDUa`Ce-j?Xuu?^ zM7(a}-6olfCn-hqg2^mMv^y8FodN;mmXf2abN>0Q6fK!*j<8p&)_af~*^WY!Ao+K2 z+~^n<)wZ)^jH;ET#FE%Uu}^811GA8gJ;&?b^*tazaJb>1a8X;L?<8YW&4AxR8(%+z zae&H@VNu|N%1$#@t{)!Sp#0YQnQ=ycKH>5E#h{Q1!bUOBX!r+z6(el=ADAW^qUF-q zE=CwQKkA?IeG$iU@O^gIJ_q z)rbHt&`P_92>t~JabOi)NOF>NSqMvoshv%jE#9kKcTg3wXehfmzy7sRlCg(Au}2z9 z7{sU31B590cgP8eWV2RYB5sO6h$CtYy~sycGcia% za|ST)aepn%FjzAIxL;soC}G+25x=0#p5-o(@~oFWq6WPK&4m!AK9kRG@s)#|RR7jE z5Ywab(+Nr{B#cXSOLBH@g$vbrrW4%QXVmvciX4#{kMHz9hb<#mM(HigxeV_?@0Bt* zKH_=diWxEMp%-Ouz3EHD+F}O8!*|SuCmriZJ+rr!#NT$XVou>(%RKX^Q+@z;NLZL*mg2Da%uP-5fZBw$jI9evmKd6pd$gW^Ao2^ z^Iyj540^b1qRQo5KG2>TZj-lovQZ(t*!q(j-wkEz;hZ-}2N ze#O`q+0q~a#h~TPoaX`gzDvyO-l1Upl?0WPqLV4z{f%-`Qz@B4XNr-*YO zKsNPou~!gIu>DHt9ykoPW)}FF1~POmXfF5MlKd#tl%hX4w-s^k0r+2DH2qrqIo`}l zr;q}4TkpWJN;M)xQKV@$}*cZYZ1pbScLD zzN(Ig>juv?-|T^lKAB`WarwJNUoLf!w3`5}hK$3U&QaJFmz~cj6JYx_829buc6`#z zGrpgo)PvnjY3X(v&Qu)dNBjGRT zQ|i06hxD^KX>utz&JP?7gW0I@wDzL2OCpZ}zYow?b!R~#?X$G4WTLe_I*&DeJfTs+ zoPIg426EOZr6WoJ(@{0o{)FHA(OO3+I!3%@62#$i7L{7l7kTkuZDjv!pLy4lgd>eR z-4fd+%x#SGIr@DRu`DIX9s8=MPa8C3xF~7{4LMe#9H6Tpb5-LR_fRetBM zI@e#>Yk#UiuL7xic)QMyNz0@3ttknHYcQeJ(||B&9H-WLO;|Q&hTqxDG)?FCw8>81LX*ToNb(fR>VRN_=NZtlz}gs~Or+uSvhM&# zL<8JEKzU8h)fRQLHDn7gmWT`W>M|qyco}%%z11V<9zMN?pqm8MkwZyUA~h=xt8{4m zg6$_5rMI12PGZ;;N=(X7+$>`eH|%JK9r{4XiK_yeQ3jF`S^Ra$-)-T1D>_}Ubp^(y zl!}ngnLW|d>bcw)D;6IO{LMTM;`B8 zS5v~_Asq<75;9fGZP4Rh7m|bwaHPp5;~JRYyKGD?TzFbNW+(Zd!NT?F)1JR+$$g%A zVP?I23?Y;V6fZ{UWRLvWJ7ADX09O4t@evN;$|b@kMq_(1ZV9q7EzPAJBoMsNWy*|_ z49=w@2K~%c3QyBAlFTzxsT9FJ(?r>T6HRQUJ_?Dj8(}SkM-U<^9+_swTfpOqTTN#h z)TFJhLeU&jW9xQ@m!FCaA9VDNRMLKHM!zWBD4;H6!uNSy0oSGNg0x@NsRu(A)jYSU zx@dj+a9<=Zh2_&RM@1RxZV;lKQ)syn&HK!MTG<-8)2Z_!tI>rMtVS}hWsO_&+-$+C zk}Txh_NRI}i3X`p;|_b;0!H7dzAO$n*a1k>fc2Gf zcT5Y$IYK{EY}otZi#1SwrDzdPRhZb4+&qE|zlGz5$z6p3P9L+^nhu?yP-%XX$C3Rh zhOFPZ+;cH9BSuW|D5HkKowLYLHeAzr$S(M1UX8)AJroW}jn`|jrfMVVv0|~D9xCmL zQBUkew~q=QZsVMoI?KOA1e&PqZUTC22eR@5>Uv0TUORYd0PG|X#DL{ z`^OKx>`=_PaurW(=8OW2kJ|FB*)gr93ow^&=^rH`xeC<^)sReM3A7ZU5+_#>t8c(a zb%S5LX8x3xsgzYP1%>b{&cig4QgMS=@BBaMM=z;c695E%<<|j^=YzX^ZJ1WXV^v{}Df3hmS;Pp*pnmb8o|3d7Nx*D#f7n3h zXHr}==!(GKHg}b(<_DFV)0$W~#uTHNHc}I5X#R#}KEXKG9f#xrWZ-L|GuSep?my+_ z$lWQ%)&=>@_kHR=1N8K1+7E9pqhRALp#{S0%h$)rxUdk(NZ9gN48}URi~k*QJ}e$T z%xaWkUf}0p1ginuiVwqu=8jwV?7Sbu30W=TU{VQ#-!>;&)EyK5Urh!C2lCs<3kB-% zrzlGJ_P=gfzk2z-oZkxT?$9@PlbxZOmBe%j#yVgjLm4yc7nmp_W~_hCp)i~XsMio( zXK+JIE9QCu9kMzE)4VrwU||A8p^}iN6$yGAD^BVqHXM%^=oIZ&{Jf&mdbOq$_X)oj>>ZG z$o`&HaEy7YleA)G0JiCT^$Lb!*S|a!~Q2e&H==f8Hj4h*~RIt<+?ipv3WL<_Z0zZ zkcXk58I+^-4sfc&=9im=-hjvSrUxuAU+$9fidk`dJPlAe!-yd~2 zqUpuOsjzYAPH(yza5Qu!be>^x}IRg>Aa^`OueCPf3pFNNH z=9h>;%}(G6P_t+uB-PqI;%_By$f*mkhVf#JMc%UN+hTQFeLbUHiR#fCW=qqd>zUFP z?-h8l*<>^~@YVM-sj9L@5=df!qc0hM#Xz@!@SKD+t8u&{#tSG4BH<|1gh8aaf;^#= znT7;0Z4~Pxzv@Yn(Qs?QbC-Y(io#+F`V`*f=NBmUBpPPUNF%}Jf-H1UG)emy%CPoB z-N&rA=Xlp1qB~%~h&l}-jmxs*m`{UZyvZwchC~;0%)n2_4d?2g|KfvL!)5>jCxo`y z$Fm?kv|;!3%6|Fo1ln{?C|x7%(F3>cB&XGG%oT^faewHU3?O|V9YY^)5sKjz*M-0v zfXw*hS}v!62S}aQL9IA*b`Zn@70f!8j3k#@SWX2)+jW()`0k|*!p@#@L_FDHRHZPU z2J=?nOgSq^PF`PEO7N(UU{4Q8_=#@nRw^RmH+w1|NuJxTd{cI`%j^23%!KYqtGu`q z^j!ZgZNfjqnkDTzck*e%u4W=`Ma!=*tRa%$K9h5>w>XPevug4u+ zox_CKjl6GQ;C*K^2x!M3BQRQAr{rb}^t*{C6u*hj#fGQ);}~^!gMZTaFH_V24YzWF5y1*OM{xsHCC&h5pL8I6tA^=VKw8r{1wC5gWpo|Z+m`ThjZxa3-KIq zP;Vv7SZ!<-a*jBYiovq7AfX{Fa?ZKkgd;!QquS8S6_83i6K!Sqb_}-!C=gIwQR;P= zOqw{H|I*wg!>CK%an8b01$hzwU&$GI=}eVVTMJH#m-Wo3oUrgFz+1q&irHUHm+La#G6<+aD7^x!OnQ{JHufvmR;wjo?N~ZE2YR|33i0C>=MytbN|S-PIJx z$Df#Dbs9=){r&1bx;SR6&aPWvHuU~3BJw(n*0V?=c|_QKR849W2ze?3%d}48-o~rf(j6{(fVzO%gUt^_sID_~{KW zK0d2OL{L&Ey4o2E+j*G9^sG+{NKen}h>7Tfh^^!ci)c+F$|r%&>ruUX`q;0&_nWck z-rtb6Xsuqsaq+>IV!uP4{$^RSrL%z_`Nx7_&p<65cZK)U;tf>id;P3*-odIw+2{gdg(jbmLvoa?U2qy10nDLi%v6vv(VhN3A)tOwj7WpYQ1{+IJ(NFawoQ((Uo1tm*p$E;ZTUze>8 zl|Hk6vqfA^#_Fq1TjLRS=j3&-rEoGIpgr4{N6MkU)1%eykq8@xyOKoGdPopp{1cm0 z&RFZvtWu<=k(tYo90UfYnql~w?`wGURePfHgKbqP{O>0;nvpH>YGC)a>v*mAyiM7& z$n8e`WGAoG18x^ow3)Q-f#x@l9FV;$ZE8%xkW|92y;77`=BnD}Ekw8u583^nN9h`n zcT<&8T*Ghwrs;F$uEjGFwgu#h37vW+LroNknNv^V(^+or9F} z%mW4aQi*GTwvn3;#&5cU`z@~As_J⩔`q;>Fg`t%m&_iWtMtLxri68`0-vTQJ;}3 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

-J7gw;uc!aZn~BYf`>Q zdgZ>}+h5eYoZQqJ$XBZ7hcp^1N4mMay<;274+)?^M^6*U9AE4;C3CO!TIwui`BPvJ zm#6jUOxJkVq=28m1=Iurk19A*FB7K`TEw%ZL1Kf`8%42M|<-Zj?uKogI>>=09bXWhWsOJ;y z3Y9fwqFZIw=>05ZcyLX&0_ZP4Pnk0k!h1MDy|2L%WSYqp9Z<%Y-JF-Ttxa>vGGMAoaORF zeB0aXzQGc#CrDcK?i0_XFY#3Hqiir@Pkc>h8IwLlKH^3by>QQS#F zc$IKRamj5yZx6Ox+wG@z6yZLcj1pqrBrph_%t(rQY#WkgG(RI=6CVY}5?=+-<-T34EZj^WkN+Z&x(|9!&5=@imr7-!bAFeSMm7G3F620(Xgc7)nT zKsCzPm^8l^*ueu0_mhwj5gF zK(S$^qO)+2)NY5bML*~H6!JMUm}{?nr+HB}S`7T*nDs~L)KUFBaX8s)jM0Tn!Mu%B zDfJRj}zVXc}PBG#K(yyYAKIaHit;I>uFW7Q#=Iz26@F*Sw_-MrY8 z4qdZ%Y-w7vaig5YC44l7u{jIx!b5`1_1q46IQ!fd8?M<9oe zn!4O{uR0;=WGuz3{Pz|scJa2Vufo=>+WWGQw7`%8gs@jPCE#x2d3<{ES37h7%ZSME zL{mzcMw7#7Rj4l%=5%J4C1^g}ghoI=r=2XuWH=vcU7({U%E~nduBI+&kqk7`NYF*v z`fdRK873^pBZ_S19c3c@<5=WB*D|+Bfer^KFvetzk;5m_wU_ym^B3Ca{iU-_>$K~7 z5Y({eYcJ+LdZ&3V0z>lT>IYUJ%-&Guaayu7jgoEbNw?jv+{|E&UI3OCEVWv2;zWk- z(nK%7jyL{4=jUdThhzP-lFl#$3Hpke|I+8C{W14c{*dvB z0wW}i2%(S5$YusXjV#FuT#V`TTYdgz5m}Zx4HHt0K~UvkPi%%hm9UW1YGoC^Q$ly0 z=#lQ9ojO=={vRumdYp*dA$c%2ZB-R1e8Vc)Iy7L?U`m9ebMJLt(o# z&bhzCavQ#M$y+g2y~B-GTu1KGM@7|{1%spTCd!7YagV(8JwnP7zIfQu4gXTxEU$^8 z8%~}s2GB3Mu_PX-In^IP6n`SA=4rP$nmD%O*V_0{Yv9L7M*w68xHVoL6_$n5V_7Tc z(u2P$B4VPnFb;+76Y6=+(pl_MD(8q5opzR?=>J*i2UirpP3kqyr5>)I2I6W=(h?~w z<8=VeEYAgY$xbtjwg1^KwIxk$6~o>d!929wi)H(&!~lQ;?9UvScq)ewb8?k&!^jIH zOAR+vt&pM?cX|8|>#Lf{2B7Oc`3gGa*wwD)pi5+sXy6R)X7v=*zcYDYZPB^QFigdE zvnYs?0lq7VlA-@v&wJJZigh(=&`b8~UQfnE*g9=kB#imc>h<%_&F(-k;t0-f5EGX>!RMEDkAn^j2|* zYP}M7SzciUlW~g_U``iJl%a+Kv{0(NhIw|3xvg}6>LLt3!N_RX^#QvqdYBj|nJBIE zzlsQWT5XtQ;A5%mw#v}C!>*KEXt)dN^CE(V$^Kbj#C3rlOE?`xP@lxG+~ZYQAhu%3 z^WA)~8*N^({JWM*om=UbRPp-zn6SD_v?%KaW>{2L0XxGTy-My-+Pe$NN=dop(i$*_sw6^=}3#Zsym7DE}j zJcO{@_5#I?-$R+2>aUinQ|V*sMP@l z7-?4HD5hxrR1~5dklkeW1}DoR%b0UO%n|CBsj!&$1(|7FNM1Z)F6u)ExQ-ZSmH0hc zJL-(G<%0N>C@IoJF;eWQm9w4s9FP>XLd(F|#;TT}oSlq*Uitl!3p?r2?iX`2HZybs zo^{QGAc<;6tAr@~u7qarMM6=j=?$B+k@lYUoVRGBXJUyjGf*C zAl8QuZmSh0F2x)OU!`hN%GawaJG~vq4o}_83r6A$!}4?e_*M9<8# z@gl1(2@f0X=*@p29 zuetfaL;>o((#0)H>Y?3FXK3}0#}Q4vQ~zz z!hW%?3M@2@Dd+sP>v8@PMF3Khl3x9pUojJNA&4{)@kN zpqgUAb`-$3=&o5Z9sE_=djk}QVx?8JpQy@vZ_EvL=Il@}mENjRt-lZ1CXF(UX)MaF z+pSDf?&hTZ0Pqj^Ym2HEU-kjC&das-yqDiSH-pZqDc>xv2pkHFt#bQWHgEqFj9NZ# zWTjeFn^S8{0!DkMB=HD5wuGn>Fv%^kKOJ)zwpeLSIJ^|D0>3C(5*kFB3UC9X9W+X4 zJ!~1_1j@H^&&>=VByYhY)u60DCMb)m5ZUdw;EiwNA6;3Jm3kQF5m2Ni_g(!Phnfj( zLI-?6s7rpCT1evdLqF8vtSrWt)XpKs_=}y=(ij8fHXb0sY`l!DJ=UdAy8?vb=2}r~ z>5Yk)NdheJ;p=~enmPVP2b#7&9VZ+U_8hCXEIWDq)1m>yZ9#hn*!E4|QqaZ^ z-1#HwX@`!<1AUb*;XL0&6bSgqSXQQco;YIN>{!;x5nq|*Ud}&%+`-pb$ zM$@pRDz>B8^>^Kl+L}pt{jL2gh^e?kdywcE;;e^X@|vTfPxu!N%6^-v2KiBcams4t z#5QO7y{aca@j}6TbcQb}W@q-A;bHg6x-XrHuNRr>$*Z`6lo@78%BF;g=84hDlN$_u zluKtry7yH%74Ln775r2Cimb4(WP-O6;1`?3M_EMIh!X^x)G;DUwyz*-X&Qkk$C#cC z@t$4o8n%ChnmU)!mY#jN9bSl6f!{$@iVDaQvRe3t7T;->5^cA*E z#Iq(QaB?XD6EVT*n#>S090PZWouxlnJIf1JO`zS^>>n`q*VfaOB$v#l(O9SiR@4u5 zk+4gX+}7f&hu_`jW8H$b_fEShuF)Cv(U^`vZmk&DWSl`g?AH>52_s^_XM-BU zQ~?bQjm=BLUZJ8WAJ!hg!0a=m;ct@Ks=n2A?7IOlTstZ!HI#1ZDp_-R{FkN!0ij0V zJflKGRfd0aPI7n<(+8`fOm}9z)Aa2-=oVH?QyS=C4fj!CoY-GmI%6Bv^D4s?P=t>rw`ad-J6B5#=+H^nSbMZ^IpF)-VTWO6%LV5~RKNe9%aQNBW?XYXw; zt&iB{3}g8oKBpx4*_d&}L)U4^Sej|V!Y1h*d9~6}yb?2Ve@+B7cR2XtAU0?10k;;e zHS(j#=vVeGC9MEwSyxbePnUzo_$4KnG4T@eHT-`M_*hPtg0Y&=(EdWKXC;&jBtJ>U-bmC+DP7R`$ovLSI zG*WuPP&V{he2Hd9|2H~xYB(Q*qB;=ruq1C2#NCEeL;^3+Bfp42_{5)a7F`-sbyE6K z&NRJO{+iVgy)k9bnLB*8UrW-wyIU@2x zia;$6eqR12jx%}^dDceQaRxaj%G%hu*sbV)wpvDVuq%g_c<#VGkiP2J&sx z1eG`j2C<5hgU?mnr6o4j*oc!NunKGWUXL6mWCGCg-zQBb_Mu}f&Jv`pA7>q_^mt*- z6e5q7IK%UKb4j>tqSy>Gj7!xdRaTte>~`=fY+O#L+)mh!1oNElAycb%?1JSY+aK+9 z@XD<30-61pyaF$<5tslZ$}yd~C>~`*Dz$OfpRZiwSSlWGQV?^kF~}ouk+mvCn>}cz zoJE7x?+3Zf`PC0Db&^rV#=BPfQo+V_8OhEh#~RHiEfji!lGST^+2pX;;ss|Cve{l* z>V`|h!28gx9DLcwqV2!gRAfuM_YOmJ+UE0@9TZ80pC}`+UzXc_Bp;B1z36*T1P2yN zsclh89Jv4bekgV0JE;C16%C2e)Fus<|1t3*X_A3eApALmCZk6nShY7Hc;J$io*O&H zg%Y(&GP#8u@kNJq+~GMaaQBWj#TW1(f7zNx*58MAL-k}_d&tl*ko&@$zsZ?r-xm3> zS7;oE5141ydG7Pf?Ub1CYND^TKHf5zf@SjRyYc)I(&I0Z6Jo17jiZ||Kio97#kK`giZ6*{LZKGU# zj7Li}fC5Ubmhn9PCgJX{hB477I%VV08z|O@73r5xaEmXt85E-*PfFYCX4`AKTsNI; z%+6PgQ?lC3YB3ynUeQMZEFw?875-e5eRz>K<>Z`*RS2iIi6s?o#hxhQ27b9pLq9e6 z+F$^9m^sV%uM6~bLTx-;GYaCH8Pf=8h!6iYrwYN8YfHX(cR!s7a_p=y;;x#DLc)v_ zFASVJ#{0;k69G|`ZOW}f-6oiq5s)7=y`}RCVcekG1?<|pH~9)B+Awg2?BRIegvYTq zZRH^yZN-e*HLsU;!?pzfNn~-lLzKu<)4(VANw^dsWv`bi@yNmU7t6L}iF?dYY`e~z zw|{<9-0Ins#S=jFABT+}cB7hd+}g*|z2EA;Ia#Jv(Q_?vCyXw)Z)-34yzIl zD{wtr0*mPQPcwLoy|nZ{rjxT=`Zn<{!y8vatyT+iF&h%$(;%_!0r#uVsHK%%^3-T* zG&hi@Yo}g?$0w1&AId3*iL4PFR-^cj3soDDTN~nO(C3KSeF#JHu$ymp;z_S#-ofI} z@QE|NX}J!OICQj`X5A%PCD`FML`2i^d`>Y`cDFyG77|>7`*S}O@?mzLA|{TP_&{d=G_P*kUSGY=Q}YSd!)KdV7>M=qz^xy8}GfbyYVK%shK?D zE0FsIzt^BjFDM9)!7bwaZ!CNXhIC5L?Y?-#$txAu6JZ?xM&$%+>J4FNM#acI!`dO& zIJ<_K=IQM8g5uOKUPDruA#$r6_UvKJy0rpM;$M}6dM$v<>Y*V~R3Z>nfNffWonj$pki z^AZGqL7q7H3@8qmghA2;YUv-Q=58OmAxbT1d%D5ZdZtp^s9tUxQHp}pr`ND=gUaGB znJ68&?PL_=H9e}c^&X2;fktMnuXqGokUfV8YOYeV+52qWbY*U6Qa~-zTqZ$m$DhoO zK-JO}#6AwfOE%E6q+ddbRmkpr&y~<|rG<)_!`?k!wa53)|M1ZuTu29{Yetm(KmOuZ zAp3@AbN}~_AG}nz^rirjco0(Y2_I#R!2)9Q_`nG)`0Saw?-ME_E18a>_(Dn;mEr=g zg3ecDxuyfOqUI&!DKV$Y(>-1?eq>8(AEf+IIcwcYn0#+HYx!sC4a8A;X6QkG9jbCt;;5&><90>;Rw*axlo4i zuQU(MW4?v_6-ixAqbK1d-@^QUOcdN7nLhm2$K%>t-+=rcRbvd89Eg_|-b> zS1L#y@=eA^KadQ2qsR82jzJircW({jSStayx2#sEmAXR8N++URqt5f+Cal?p-h?6Y z#kIQA8Tdqj=|`+K{S-S{JeT!EC9sGh_$hV5K(V19)n*q0OVZd;?zaE5?CzT#En=9b zl^nYoa(*>zLQ1_vS$ zJD*a$hg3QvE*sdZm?P&|9Lt^gC1%E@tt{NgJA&&z_Ah>MPdsp!fTi~~c6w>ws3Sk8 zzlE!wE34Oq?1%B{Ym%uJf-G`S6ON)OKh5O%yKcL>@u(yoA`boM;YEqO9TmrCUtb9inTW$sUQwi?vx-^dVck;V*xIX>I~L+kd0k)LAP& zRhozi$Gdgk@XZ$~@KZdc&Q?+x zq?(~k^qo0d14R3QK>uw&D-f>%Q?LR>(rap29!8YhQZvkcEV}V$Zr_MheVpW3BG8sA za54EXF3brsN|1A+($1e#8-q~cp~T2_4t6bM*_7g;%R2mxPXFBIx??hU46Mg&;T%OX zq|87C`i4?bO4gKuiBab=_ayxL*GYxWdF2oB^zV}@#g*51t|PN4bj4kNoueC*!2G>6KdLr`hzXzXUB|2oh@6Rr@J)jTkob!nq__Ok(nBUL0gxi5Qu}-7m?>4BUCDJY|HexdL ziUW1et)=PAoiV~7wvtd=OyFy)c05&S*)MU*;^C5y^SZy!**gbaZ72JtqPeO{8i_n8 zBOagr#b*xLCitT=g|!8CVzL)QCljv0@C)Kw(>x(b*cQ-+NeDuc#C_FCfqd?zt*kuP zUMep*l6P0Tb9V|k#n70>-1Q~SDYeS*nfA1D!dBSsMirbvXjp&T;Ei#+vPC*KkPY51HtgKKuN8qi`)-lJGKbE78m_oh_iWfG@$uD1U_M2YIe%!JJ(@P< z^A_=#JzhKHTrMajy!}px%pY3Q)p+VfTOeHYWbE^t9vIDGwc+uV!MMeQtMHew$Vg}G zN?klao%ZD-$M5(muaU=aZ4oTcvfx0E>-aiAQRNP6XEj-&#N`DNHcbV~B;C5!jq~J; zZyN({u7fw4ksN8@DD$H%w+AEO`?WQR)*YVV0n7x2007zf;w8+a)lmc#nwHbA5_PMr zAAelM7gs!OodXW0{Com#My?aRE-jD~{+48~T3WMnI&JH^{o@s9>D1cDG7@(vjQm2Q zJ&7?IdC{UgcFpK*Lp^NrTTbdx2J~t{evY&Mp)+LHN;q;9>GNXo&u|KYug3+P!hT#B z^n%WiNrEJuZgmhfY!p3Fe3J;iob%?Pdd_tu>&YZB_}K5gGHA@=8uJYUhMtM*VUxnMJV~Wa7r#4 zxt$8X?48-_QY@=3lK}rWBf&RAjFf8DyAFdqsh1aCr9!8L)Kj@iddox{iNu4%(T)er zN?3QSx(7E0iL9iM%xd(Y?ZWT%A+#~+ux19&%? z&Zr&ksh7=8J@dyQ+d4uRec(Nk)0EB6GNs^An&rj<=w)4IMW`yR*kLqmWl~1wVQv)! zmfZN8?wY{g;%|4KsDt$DNNgtXEA%dz!55w9`75V#K05pU7dukkZt&f*x-h=_Mfmj{ zLnw{ANSBVK;_jEcqa_x(wzyjLr5#JBuJS|83zUjtHbZ<`PwlJYCsg=>r;`0e9-?`M zj;B^R9Wr)82@yyXjefy$f9}*pON=-@d4qJ0BAAEgq86QJN7u}up&jujql)CQ_)4Gp z$P*EyS)l@AkGvYATim2S3p#H*XAml2dK-()eG?EkkR4J$}-`0YK@v0)mYJ4 z-h2d}v$_7Hn*66q&`la@MI$+i3eH&qWl z0RQUQMTeDPDms%ZkvH+j=;EjJD|5G?+&a!8yq|*pH1%q?lt;u$Q2$@((M*i0O!?N(FFKNA@bP01{IlTY86d^2A!Z}4prE2Y@}HG zkUK$%`NB2&AEyH%W`%}X9_kwAMT%prXeoa3ZRC}&63`tEZ=rNTZvO&NxfdrZvt3lk3T`~%Pi(doAxXHO<`dL{Qkyqr_JS_n$Lsps6H?z? zdh0l}s+PbqYMt&Nd9HPuWkAaWPu?A=;(D&9QQ&8;;iG}I2zj&QPh~R>Y%F}bx3Z_s zHGg%Yf}S?q{JD$?oAixz@|tXDh2WOzyPRH#dPsl&o98{Bn(YQCi395DTKS$9dx1^w z%n3*dETo62uQ(CuaiJBsh#2PzK)q~f(!ze9|gtga4IK^y^9Mcpc(|QEKqb*iyyu4e=|HwPNQ1WXQktf z=)L39PjTa&(;U|TcJpZQl5vtgPwyo>j=i=oh%B^kcr^jShp%O;rY6!GA^5AYPi;`9*8g z!RNE&T`(QvM&+DL18@bM+oq`Ph+{Ik59gW>HGQ1WC?HI~H z&nV+u;zcvp@FFyeHnI09LRw0YA)lI5zEclvC!%nmf|;hl@!m+ zL_th?3=emWT5P2&54br!#~qvyAHqD#yTnkP>YKe zLqRfITFFS2=qRGOLnq*CGacmsIWHNYL~@kRTN-uvx65LW8zGQ?0bvPDCp`H9QbZi_ zaAH9;TlH&rr0g(7afZShsv$`gAz58*Gxk4?oSnxn*PpVVt-o)Z`ws1GyI~h(%yDix z``nT zIR`nd@-}!)Q>fIU#IHA?whSHZM*t-?(hH88OjL) zZ1#*YxtqMo=v(9___KlYDrg9dtV}oH7}*%~O}4efsiE@eA0|({m{Zigj3-K6EwrU~ z@V&ehk6!}@HN@^TIwG#Xa;{gM*qGIDeJ{47%t%#ZmDw098Ft6hXjTXyZ(Ki5H*`P_ zAbu4=l%{76KqZLG@mtF6s~}jOiy&2gYRHZ6Wu}UYarRdGSZ5hGs}?&O%@eMUez_NJ&j!9%Gk~ zTHL?qkpUAEx!WVhmyI(dwwvJaF=z!u6UmqA0SBv`o1~!>9Qw!zxYAqgP!FgHy>PAb z?IzcCCry%}hC3AnFy83G+C@D2y^y8!PL_O~2FBNJ;JC1R)F9JMJC^$S!zdn|w4DT9 zpByQZm$9&-gc^C7?>ZC%m1+$bKas2j1AwKmpS}|*lq#smbU@q3_+KKMP~`r2!a$T_ zch4$s^h?(&vBi3W&hd)z51&BbV>B;mA8D26k?Z4FF%#@BrBPp^5!lEG{c%M@WD9&) znhM=3%UY3fqY8u}U-H1{7G%{NLwBgjXzsDit3+MrAImhT+|ZV9EHv6`LK};$L|?QQoZ% z>#Wz0&P_QAFykA#iqY!>-eMr$3obe36f)|E>CKlN;HB{@g>A@y&?Q(9R-n>vBAs#X zw*GdU8JtbF;9GFKafLu|#vmNG@|==3UN zXxN$kX}W;+cxK7X7L+OW21$^0IZ3EKW_~4hA=dy`StMNFTBOpY6PWT+>mnk*;+R12 zKgA`uq%}`@)B;3N%SuTp85LOPwszVW>@-G{YiWDRJuJ>cOV>fsDS+35oayu_A?(G~ z%-l?ur!7ebJEB@L)5-OWDRy0byNS03n2I^DmGk>E-$!EX{e;7fv@X1aPt_1AM3aNx zhTipc)^52;5Zgasb?`14{hf_|TJ|;sSnk(Rs2Oc$m?;I9rbQ>@Rp=GCM%T>_aS}8P zIud82vr8 zPyhfrS)y=QFCAwBs%5omC>SIuum}&A%B!*wJk4N&LH!#7aUQrbrv(J?6!wewmM(L7 zZ4TeMa?S=$yKPoBt_yPr?Ut(uVy--W@%GNbe_$u7@*3G{bnK{eFSB)jbhpo|?=^%} z!=xgefz}kjVephM)PE?R>#KG+1-#ieS+OXmztb&1_I%*souRB~XL=*}7g{&n^v>sP z6*7^@6c@_h87RqkcpmcGX*40_;Sl^CJMp_k6yT9B*-K^dB%n_NN!05)_d?3<^a!!6 zIDqv*o`^qZ=~5#BKhD70!lKKJXHA?V1ku1p{XRlBlay&? zTfHx8&ko6xx3qfkbCI9aOB=VyKHlL+C#FZPTZi_-*gKI^h)deWK<0}YUx~sTl$_Z5 zLY89XB1}l1t(@ISE!|2#-=FcCe7^$CXXzp(3 z4-KaLSZUwl%^EEHz`5}BPtZDAVQh*o+cspBB~?((0n?$Z-k00OtUTRERxqX`n2{4FJ2*50fCd|Nw}braao7RINlSNeMmeQ{)Y(?r>&5tC&DO>M z+(dJ*qyo(&?&hSg*Djla4zmstWYu|Hua9_*g3G4~%}=u?_8mWOyJ4`2lQ~<(eaSzC zUc1@}QrMWoH~S|cH%|l*B3z+QX#$kbBLnt}6tAC)e{VsaHt0VogN`rNy@bW-mBTxU z@ik^`@LZ+hJd(R#OYhz-Zb>A*wo%~m^@FXUPVAn8@sVMxv}fa5DWk9A&udao+joug zW26bzzqgwZW`@0fB!|wkbN$Spxx0ZxDK^EFHAFLo@rMqN=_MXv=B3Id>$}cu=z}mpHaPYAU4ux!)h%Y`- z7RNH6KH~k7J&O(%`}aI^NjPoYQ5U1+N)JT-@4t@t-Ca`B->oXO9{^=HeF5!UC5i=L z@Jn;mG6qtohySA-Y9!ZvmuDrSJiX_}Y4Ez>fo4O0B=>zBS*z;TgUx16db1BqvE?|m zB$aa?gZuAE=etr(j_mh};ta!@{;4!39YFp*0fiwg*MNhBx-ME#LB+%EjYEw{PGS=e zSOCQ64bl1P+iszW^PC6*AvQqEb;%;8tP1K z7=Y3fl(VGxGk98L*b^uCoyk>5(E8cj;+G)!w#|}_862-JH}KCwOv7L%9>`f-!KLx~ z`b-F>I9bF29-M|Ijk_^vw?|s~rrzE$9Ou{IS_Tu+@g0>4CL5xSkGw$jZ>v*Y7!VTG zg~bFAaN|wGgtiiAy=*hC6Au`+pw%=y1-;075Zy)V(Ot6)|CS7Roz2b;a%$*X&b6`sedsO*Uy#D(@cY_Iq zO-%FZEK1%bKeH+6i{e0Odfb?3P=8kpDJ@o>#c zP7|E<&;ozOpfs@%kg|poKl$Efa+5!68}&I(8v*NQ_ucSC<*lw?(7k`&5WTko2kpS z-wPc6Vd~|Z>HxekbjRMWk-am!insq7|0}2R3LG~X6s=#Rv8)BLDd9|7Ld7N3mf6oj z8f_y~Z8g?}w<+l`5pe8qdiF`O$4oB}bOQ(bFk1E7=p>HfgBzZ&qrTiG`?jeF-y9~! z7cdqo@kp;3HbVet*S@No5dXFZ&sV$gh3@og z*YoE;ED$#ff#bWeD8VsycAsOA%ATGIZ%3#lBL-W%O@GhYdjvkrpxH<{y_0)$r3n8O z*WLo>z5xgVh~{&)Rvq9W^TgbZcZM^NofMDDq56z{Nhs^MP`D{JA*a5Nbwo@qMi+4; zvImSL1Cq_vSnlwkz#46Zl44rPI<`Xdf#H{htX3V*Tj05@%_y&X(mG243wK!Lk;#cj z^&kL)hmO+~`?gCYn5hRCcLpF7RkQ`#6WFzt2-pnacnY=0CX*o@AnM}F!cwOsjD^LV zO1)f<>@-N5NXslO!pa?glO*}l%5aoH<86S)a17F?2Qhgv-1GbxG%>~)ng(cN=QtD6 z{Uek*C+K1`#1W2-W;78g1kc>Di5ss?=ivR|_agVHRnHUl z)ENU1yM_`itbgFj9MljrD~jzz$M?}-!P9!b{y&R0=XeQ-tD=rO#3N`&d^{W4gz;jE z0=fELZ-oRPZYN1n>-|Cpwa9eSH{)i{{feSu@OUZ4*aFWD!4p9peI6QwYaC6(x@u=* zaq%4-95ru1Nm%k*POKeYM{Ko>lHocqc(Ey(<~R8DOwO^MAYc&90rY=LiJ%TVb~Z2? zfG1t)P5T~jA)WcB z*i4KDG}-iR5QSjDpA~!=F9zl5^-_ME%_L_8jx_N*7(eaBT=ikqxK8n~$ixGU5r1;3 z*;m%v)Y%34GkX49BlQY~{ZaBi0nlFr=-A{1;}TWKFoLUs(#}>H`c@z!+kLOREi1(UZb4Y6EYlkxU<4ZeX6#s zCZ2|-muAMf50LqQ%kL`DReR(3(beVW-Ow+VHbub8Ar*%jMfFIg_|3wv)k~qDVODsm zOZB(~y5PU`Y$1_=#F}n+^&rCcyCOD@!#hOG)?vqXdKWXv&|++JjK05lpbMUGHBNw! z768IYnD-cA-ve&?$v|L)ERXi31bcno4!1FeCNh$GXz&KBDgn1CH8(ddOEgg)>o+kW zChHJ_DgvYwcUjQqktGE`T0sQ@9D~g#Z2g>WXO@@l+lYS_-E7&<(w%R6TQ|WB{@98% zV*?!0y?!pqkX~~dS?KaI5yahP8OF-mtTIBt{OWU6R^DrNYGR9#5BjG@kZ~BI?nPCK zb24e60Y|&;CcWa%;bp$(SFW%xJNkZ4R{cU% zwWpHynNS<~VbV^Q(kE?H=FP=r27mj3mk}yfeyBw+9+<3m`WzorO&_gF$HAQ(4HvAR zUpytjmXXhn0pHKAI1PH}w>2u8a}rkTfW&{A`Zx+_QweaY7|~+U*S|+AroiK<~S%BF-jEH3r<)S{^<)Onm>vQakavZ=F*)a0q3K%oW8VRlY zZ}8tpYL~O4q${*4Wy4+hgH3O5aUs@8tDTE?vl2#le)|X8Zhf}_NLM96;9VbVsl+vA zrbhS--I5oAoWqCV86l^txQd%(JwVAwOEshCmEr9+{4`_8WZ!lENYX@8C(m`C6Pta8TotE17$77L*$2rKi zTIckG$R+yu$zR|Y4q#^9AwOVTW+W)Z5xpemiTChjQ8pLk%w*bi-xoWZ2?e#wQ~BD( zt!pRZW;zgs(0`FoJ*fn1$4iIb)JkUSG=mbj3;rJ4E9@Q@sAAS;yz6mMXW2bPTuEP| zzX#Wl>2;8dYnBjInrhC{&Ru;v8ade7o3_mw<_A>itH3J}-)92Da&ViS%$)7StI=uJ z>YMy;&+5B#AXKrVCwX2Jb6A}rre~uh-}srd$*T3nqwbIR$( zZC5!eLMJ`E*qrk`A1`RZM#M!Hwlom9c8vyQFd^vwd@s&q$E#HQUK18v$ISB__Fhn# z#HZNs?Jb{e9qoBCsyZ{yOpU%><5kms0}Q81JYt<8YTyvkwr6HTZ-~8mMMt3RWhTu_LlusR;NeH^AaN1JP?ZlO4*ly6FdA~v)F3_2 zvD!43D`Wf)4oNE~2U<90W$&~MwW&k4$(IA~!^$?S(p42dNR|X@Ul;jBPc}79xHOfE zC@|fjN#F*Cw&$I6v8(#OQ_{P8EYY&-xb=ss58kLWY(%nZq6vwqF-}*@BerNtOyDHA z|0|G5Y3*WXJ4EC)ZPV6QIn+^UB5T^RTM3b5No~Efaq;~fQd;ImW0A0>?Xrz+*?e`m z*6;5;ag7Ef)kW@RFBEsgkp4?OERt?})7}vtHWi&*lj)sIL`5^eg|Jcl5jj zyS$!aaW|Dq+`O7lv;JNU^lk@PGw2>LFvdP|qf4CwbW4GESLly=8YEU$(pu6GzC=KI zCxP$VZA37&p)=;G8?e-(otz%C*N&K?9ikG#Uxxv2_NBxa0VNX3?T`yIMp1cdsb&eh z6RSX5JTbS{E&QGS=6N*qvS=2=xmJ$CG+-D8gECt>zZ~~q@Gd@ygfcf?9)e;MV4Zy8 zC9Di23$QrTJB%tUz6C7(O#xa7lY%S@lP^TEJ6NyKU`=BBgH;5+#X$s{P8FE|PGr~s>Y$BiK~iXBvJ4jW*NaA&tcg8( zcehhTSO+dF8}tIw_rS$sbdI&v<1l)Q;;I={38+c zZea~hb))qM)xk^&%m#e|AaKmW0EatGAXb2+o?$hijQvw#4LvD4F8!*+(DeU<2w+xb(aRJJ@G6q`Lo7reue{&4RnPSlO;AoEmxXJPTBrv z0v24#^3?onUkj>UWK9qn&>AifZ&fds;WFiJ2NqEs3{gWXy1QQ+CGb)ME~VM?wmlQ)fi)nHALbDX|OjF7kW>@od1{mSMgVf2nK8i+&gHWFDmCwPUsHV+&N990O#xlI4xX6 zQ39BCoK9z5)Poc5Nqxe1xDT01F@k)`$-IOP?{T;&{envkG7ht{6dK=5Kt!hBR(;7T zZ@192OVilV@rLRWY9*%ZCM{J~4UUr4?zJCZqzbA_6Q^3|%I56wikNPwt^O&V>2Su` zvp7Pl8XN5yME}?b!l#j?_gdb@_&@5=TwY)e!FBPrSp+aC83fnZEwO-k ztt{r{tWal@LyvWDwQCA#HnCflid)--rG@u6&KS>m+X-R zkMjA$&QmLP%pDghO~C)o0)Hz9C|lreNmT1eX~W5?w#buZ@^&pLFFfsAgT$C%Q?W1( z2B`kn(22t(j?lY)Iv1tH@}mn99)5Z~QyJs{^u_onUG1={nir+z#C9X46s(!bHRFoq z)Ll>#bOK1>3LdYL?%{TEzBOvD6_M10dj5%)M%`s%xo1U50TY|aD#1IvZ8ooeR&SvS z+lZ3R2}AUL3p*MarOTX1t49MvMe*yr*Xk`aLJH$Vx&dj&A|PUt&n@97PEI0dV?`fb za>-E)pF>otEp!Vt!*156Fsg-ic57y`_CiMGh#C^>r4Jz@+;*ayw8gnUnz6=_2<(;K z^Tk%fMM(PwLJh<3w8OfJpPET$!9%$PjrFJ+&=AiQ-`(EV?E_I}OWZsVic8?!#}~Rr za`!TKc)T`dnK%KR%!H|5FN^Mj^A2FA^mYA1>F?o>JqEh2;71=$&3Nt<%l;Xg5S+rD z)a3I`VDPOP9|Ku1)&Gp03F|Og1BWmN~@oP#hIx2jb_NAVhvmh$QueKK~nS< zq*~OHp`3HqU!IAQ@WPS$To@Pfq9&B7Vm$* z?R5|`uF@*KUFHD(Hk0TC=aJg9dw_n>R6x^yz+SRu*l+ z4(v13+^f!gV*D@}Q}^2us&=Rsr6O5HP;5h=S@BY=2bx_D<2%WCS&?8eB{Q}u!%6Sy zuPE>Z2-CF)p_kdUCz%l)bPg0gWROh8dC2-+@2oq0!|w{XY&m?R1GP0KE$Zy`IUBa; zDM-A1*f)}&+_nay3rV`YI+myPz2pHO%u)w}-RZ`zLg5ualKrhT)#RL=J3ceD?{D$X z>Ey^RdBqZpZ`9MqFl4{{Q=RjBbi^mVk)36TY2+v{ z9LY6(PD$R!DIGI}z_OQXRhV-1u*^ygqng0Q?$vSdF$08hf!CQa$T@i1HoKsPvIGBA zcFJ<4pLvrEv*4=F8k>3qfx-U@e2aXOI@G2fVIL?Da-KC~9Y`GvFQntvuH{Msz!&=v`W-x%E1E z4#o5N$Oc@HOaNxLp@q~cZ}8#@8}97`Zm+Zep%RHpRR8#~JLsN8CDhS}3n!eUq2b>m zrVfb6ECD>X?jgN4p3-uKhsUcbZf(@z=#-z^--Q3P((|X!%@x1|*){94-L4=~UK~pf zg33m=wv6)yhlldA6WPBGm$gEAP*p)F>;|*Od9Rg|!wf89z{_du&3D%N(o$@vvDCna z+yCb|?{CEdIwWy0#8mrNdWMldhR?Og9Q$g(rIr;9QBCFh?UW|`<@ugs3ppdg)V8KU zq^3fqfq^%|$9v@n#H{)Fuw@%qaOJA2mEWV-8k?SE4VV$`kSp#e z$y%(SAOBogOM|R4#yGXqh?jdNI)8RGC`&o(t>&bnB|Z7%tPABMU=&C+=gmw2qX0`K znfgi){gysVTP;R+nNuJf9CEyhx)cW?U%s^@PtGIY#u68|(|Nk$Ha|s+zglvDQ8Sw6 zoilQFO;zUzo$G{~;nH4=Ak|oe?ONFE9M=;wq%MmarQLXs2Sz81(gpYo^$MKB@^5A< zQ9WH4`)NJkAKz>;W`*8bGApp(tKSf%Gd@F0IbRv5lPN*aJHj0 zcXbCKVdcC&rjGd=XTdQbf*}m$J-{jgwT2##5(e~30R0xDEK(m0?^)0=3P+9(**P#3I=pb+I3Bsi{~?Wi0ikY##ra%y>`yztuLYG`Ib(jkt!aN>&k-p-`C0zW zlg5{@g^hdFO;pCf9!~78~ zNf=bvSIXNx%yv#SS#+RY6HcX#8+ksmgvfpbpG1qtn-HO`PH$;{RBaUt^VR94+|V@- zg2z4?PLub?z!k5xH$t{xf3Zc793eU~#{TY3nE7F-TF*hJJpqfWN7Xq$%~mLnj6lu1 ze;MvXZ8nvvk=uoiM;%@KXCh*7qFmr#>(-oaW+0B>dk%}eCY;T0z1!vm&Q!n zwGXj{2sC)NB4qQF|8CFZ4g^)=2IIMhYldD7xGnK^6Lcmhuoj1PrbM2KsKySMO=Xu6 zvu+nA(8W;Ns~5yJk=S z#jV@4f|EMauE*YC{VL5R5|B)=ZGLHdV2alsV}e`V_~g=f6xAi9l`Gh6YDY8ntN*yKfwF&_v%}(x&74rm^CJ6Zg#24n;6o1y>A|TW%wEJAG z71dgIEIepf!I}dNxdDU<8c?x>#k^syTnX`hb?EjQYTm1$7STHumbk3m+w2$PIKYS} z?J+JWB9)}e68HRkpNl&10{00pZkd*MG@oAA^*q#o*2($pcV7S1St4!!lp*i+d~J3) zh0X6XkDEAy0*TuQU_28-9rHto=+NXr7@CaNyKZgU z4~qDB(p*x$CEyS5$^_q;v6ptAi0ijw7(yf>en78!74mN)-tbC@LxSM5%EZLx%FeEq zM?hmi(Lsla=3R6yYajL!5Vn~gi_3{>?P|CLF>0$VdMP=ZOe^lfuu z8nsdLMGLk}#5DrLhd83Af;uU)H`^4*VLRDS(vNdE@y8|2KqcM>Uam3W`t@faZC9j= z-F?xSP--8}(eBNVc&Q_Aj+4k5 z@pc@>rJ9hka9=dD$r#iD@pCvuBKl8SIWXw~RT;N3VGQ73wz3dhJX8%ub^S#Z(8lf% z5m-JskTqS6GBuK$+V{llcC9i(V5g8P<1T!PM7bYT)=OI~;4U{q#U#gXX2xUUF#H$Y zsYaqMKbL|QE@^K9ra3dl2F>$&-V2nZ5+ToJXL0D8Q?bbWvHAGID47#*oCJQr(>q z>qd;NX_*9Y(;1s9tnec@Co02ZzV}QM1`RgmyZTpfA+i{i@$5*0PjXaULA`M|Le>Xr z?&v>NQ`U*~$j&Ukg5-)Jj2!Fmjjl^{-WnQBd;$N_)J%=^cvV#$#re;luMWVtY3I?^ z?5>d;B7k^~;BGO~WVY$)&Qv|pauAkQ65TmBgr6wm=KL36T_^s-i*&a}@HtZYyIDXu zF3IdgH)+af;>_!n^So5@u0frqQlJ-&UjTw+T( z$2MQh(IBcb)AqH!!Iy1XjD_iT=yyz3x+E`+On{xsOB`{B$uRbK1@kt!zyJq1F}EWZ z&o)+L?y_dlW9~@Y=2w#Hy!esA*(am1-DNO(=<9vZLVUN+w_5xzI#&&k zu?DU1C)oJ#l|4Dy*H}mg2<7SQ7$N){F`>94OKGjoGGv!)X|V>g?XEtL0CZE{?p(9f zj1^(J!Zv(8Vi~PdOn5!|w_Q?86^LsiF0&!>MN(DwhV%!F(0GqyGL~j`z1&po_4&yG z3KL8Evw3M}M~&&z6>0Y;gEEZcsx0h3uA9iLga7?e%2dsrK3Ep26#x24U45pX-TWQZ zK<4I!``TY^TT1y)9{(J|kIWlp9+iGsTm#4pO5vMe>Mt=z0`NJHRHajbTyA(T*VE_n z|7=d521IdQHP}anaeC*TW-34X#ECsj2K-|y`fwDpcgG;0vcJV!4@F)KkSKSG^9kw8 z^s8~|vUpWx#^8E_{ggmuVB@>7kdVL4okOq~iEw+X4a*Z!vLuNo>@ve|fo4EASx&0X zd5Vg+_m8xF`s3)+XzL(8ozAV^q3CEsz;d0hHQBgGMh^j*6V@Wey<$Ah)8D)UGyf;~ zGBG+{3(YrjD-3NbZ!NPdnl2r4)C5J|x4qu5DhJR!GVETE#sA3RI>r){-UC=jJHk!O z;FC&|_Sboh2R&s3{$`WnaXQ_$E{y$ZmvEe-?30aOC2qC}d^Kfa5P2IEvMnG{cfbW> z)z&`nXc$EYdI~O}-v0N+gYI(r@GZC`ozEvNI^z1~vldRdA~`4a%#rzW^sGy3Lk}^E zz@~LXjU%1HPGhj!vK|s{oLT2;AtU8slAbJTr6rxBeG;L`<`>w4wctauT8wX~vmc}7 zQJ<$K+nGZOGB*yd7#DNu*;>tgeeYWrxR-hv*K60o#bh_a`lzdu3eqB052Gd!p*|GV z$f1)yH4J_<*%&dBUS+mWL7v3DjtRWVMe4tlu*Zd1GDx{2; zAqyp!x(PK{;kVI#gu+*c*j~adZ;_~>TZIM_qS%~WcRJ-S83BXf z-!ayMwZ?)d)4mArE!e5i13_Cc0gd2u;#!|7?{ z&=aXdEtoxL2hF|+0!>(Q?aDQO*4WR<$^>IVEd!r&j8UaC3AMAG2=lQ`HSkrn`?Cd4 zqJM8e}ncDmq{H|EDP+@55Erv79)RV%9gN4;6)RKoBpiD0EdBZ6m&} z215NaH97G5qJIB|499vR_$gAFo~DN8IBC!$jj>C91K-8`USq{#b!bW~v=Vw#nvkX| zZAOB2l^66L!Qw%rEO(nQg(jG$tyqJb)ku!2`~dPp{E6`3J);O%xXeEmpc)2rOC5#AmCQinhCy@tVSK4OP*#6idPOh#dKn5#qwRH%i{>c z8S1Y6Dt7zrSK{9PU2<|a&fDZ2-OpO!iz}o}63wT_GB%ec*%8ff6vdL_mE1N@+-fPOy?b!*`IO<1l`Qh}!02iV*TvOnNWDG%R z8A5~?X`HJ-5c}3YYn-%ml86`2BU@;tb1^lV|3G*DR!jkP4`iS23s<&y)L&(@#L?ml zAOf%Dr+Gf+4@uw#!mzL>*S{gL>~cwXXXZmBnO-hLWEeLj=X7Z6GjT_&wd}d`!47YF ztAaI2cjDvC*EE`!R2bcUM~0_#&g2!*3oV$Zh?+WZb`3LPcf<$F6$=-)CpB<6&Xf`s z2rh463+t?7xYBybjA-Lu3G&QygSGDQqObX*t2y@N zMzD>hAK;)TWy=g0vVtn?%8O+HtBZWLNFZy{uC2+$Ez%-|`>W&2-}6NvdB~=>ai;_#KN%vhJ`I68UP0$lQw4Wi_Ss7)3H`gug}_@Iz}4X{OGETifv6HZUB~f zrts=(aS7yGi~bBxA-`$^N&+EU259A$ z((XJZcO-xItM^T4!Ltvha^IO=GdK|)eX;RzysTK}XLKaossc2CheU;!QAeRcTOi#M zM36eIc`Lt^OF~r#7wL zcg|Sme$>DyP>7mECyfkFFi|Bs9p)6h5phOA#={<|BWEp3+ZI`NYOFfQD79qZ;={%dV&VJTqcg*-X5`^EuAv0Q8nsr09L1no_vP4-PGdRm6`2lq3p zYG#VY!qH)`+42kWK#ODZa?ke<{8|b+JC(0fVI4fazX*xr0*nU5zJ=%@vhQPU+9jDA z4$1v!7bQ!^pi?_RDh+$vN7xZgMWNL#_bZ3B@eD$1A@s;pELt6`&N6C^@uWEDE(fL1 zcNr&lB5>u;oCIUNy}SEj1^atRw>IWo;ZrkHTJ&*^LS#3=I?Hb*-%KMb^*y3|X9$v0 zKt>^^Dc5&d`nw@etqIFU7BeH*huSX{v0j~sNPih~omz9Co34vgOpuuNrO;Q>D!}{F zy2F0&s+EhuOn&+6R1Y>a=Dggz5!9jq^4sz|tLEZJf3l7Xsg*H*?9UMDc4H7|U5{Q! z5}c&YyJNK2Zr&AUne@*RbRo$9j|bxHmYJVgBuulVglLpd3A4BH2^?3%RN@iHcsZ|$ z?gK(hpyo%^s6y(pq2Gh%LZQkWsxr zNfOCO@aJTNhb2^=QUMn4-v>^<1Z6+Mm~SgVx$I^!ulVb3;+MQ@?W!#1W#RBh7ZDyZ`-DiZMPT>gl%oeL)L@v5_r?VJp1|Nuy z`d=7L1{!z`a2T7UT%2r!q%dv}+tPSo0AKRfk=!2u-BaTZlauefR(HA=N-BDkRN9?( z+H;%?1$TM>?*8&in4j_Q#0im*g>tFSZbuB?gz^%LevZ@|+e>+E-AgCQ*|JvW~775zlINhz)L zox^9b6DJT43IAt}-XR7F8xX&)bjuh7f55m-|LNV8IiK`Dp7zD|P(#}@A{`fT?zmMT?u&WDRY6uUJ)NPS~}^uo1j zcB*bc*NO$HxL?LHoU?0eO&|?Umm^_0_x?^i^n!P^M;+f(U=B0mJqy|WJ#3p*tut$D zfUBQi`^}xO-1%n|+6F|c-Wk5{-4W(9IRqN~bf$I@ex~0tYGL{anx6jK%b#~?>~4SV zjA_lO!nU&4e`rwEELPuc&RjK$P?^eXJ7;Z7^buy7=+4+d!8ciAaTQ%0xkpuRj>tBW zJucBwD^dr-RhnHGCZA&Sm|?1-J&AddhH;?{kkfm4b;+Y&8s$C(D=@CSPr$Cz0w$YK zY9$DCX>eOE_OJXRK^E6O{}WuKnlt_Brv40434$_NGLUTTpLyS%Z|EbnP%5lf^gQYA z&HN-sA3%KTNS2(`JN!F!I<|m2#U$_P!u=mBs1=1EP-7E~kca4*>H#`0ACYq}Ai>fo zR^j`YQPZQBB=|UnDP=dn2z2yf{K%)J((0qAycQ}vI3ScWjSG1*(stNg?%@CN`fzrn zrB`ahqyq$v941p`C}aQXvXe8m$H94__i89P<$BfIk^P=2=`MeL*nz%$-WXREfmPv! zy>vDT_~C)f`)caqn?NyXp}6yc?j%4M23PR|Qs7#S6}PMM9$$#uiguJ5WqT*%9#tv^ zOpU*mIy+-5MPB|(jMy6r2mU&tT@+mV0^p;2vVF9AmuZ+v%ua6ge20x3M*d-k*Xvfp z2|}!IeW_fFK}l!}#!1O?+K2&94hSXgsI0I9_JzMEK;1fdt+qBp=5c~O)Cr4YbnM)s zVkwCs^_P5@30YZ8cPdBHt8b5~ow2ANtq4{_CvA|4ZWg}rx{4fmpyVrQoRRmGKbFIw zm*=@5Q0iorL7+c}TPfJDSEexRG@zH)x=_x;j0Wa0z#apb6)JiP==Gfes4)yLF`VAZ zKnpvv?BMifA7&ustPhuHoJ4{GxP@@8IZEK)uyprLv#0ncMigRheF@>xO@zvu5z;R* z^;`hSjYkjhkkf&6dVt9cple+ji96J|b`jd0TOtW7u^0*o#k11_ZZvLipFAk^_xdGz zHNA-WdIH{X47Kh;u@17BAgy0^Ej`>wWLm0h+OPE)XPv-{gu!p#W}OXsbkEEZ#}O_y zfN#2=9cdqv;6DFS|B-+IzxLoH2eK|Q7q!m+g~7Y_QV}}ET1qfDgXD}?dm3zm4_Wf? zq-BhBT@DnFOkI|O6z3;11)`Ff{%g4)hpn>iUysi=`2kQG^C+}T)HiQQX4x9osOuKQ z@=H&1igIo0S;M!+R?Li28!RYTjj%p9Xh(fLh$1ArsTCjba0>0=A{~#Nnm4B!ActIE zC);aUhQOmSqwssA#Y?o&#R}vYmw4+kSs2Z~`QrnU^d7=&sL>4V1x~G||9#Sj09V#X zWbsH-${k~lY^)ggT%EBKC=*Y~Fz2mni8s~}G&9l?uT@@j93D?CmtpTz!Q?WNL^N5)*?A{TP(Rk0R0 zQDW~?Q6)K7-QzI-JRK?rFv8ih^VhSkHMKB6#tNvWPaob#W(Vq(m5}YsG}y8ana2z!#ue#5g1JlE}QDZGPeNPA#4{FsRnUs5c5fbo`9D&vAQ^-P+;PR z@m8V-?>M?)-`B}El{^S4d;CX1G}l`HI})2WrtQ>0i;mN=6PY?pqC!Rq>%DcR($FQp zR-#T)Z-%85`UA9Fo}j3V85TQT{`47xCq@leU|ERY?cfr8XM}iS0r=eLs_3olpcD-B zZW;ikvZR!?Y>`%=)J2)8Jan~k626XoBi4w!MTQ3Fns2=>urupB7UX(s8wS3RX}aV? z^-|e!S&~fwZ+RhOlq2tsX}NC51?#6LEw)aCf=+&hm>miQwpSZAt>rUFcuc(-MAy$| zm0`fZp%tO(P+_4c(gr7(nt;We05ARhAt=|QiVY3FJE-3g6afN+Wtfh zsorIyf1F^wp_BGfjTn! zHZm;{QWXm!bn9$TG4uTRWsD-%I;o1RXGi1FOcP3Rkm1oOkv6ri#b(v}K7QUg=1~#6 z6#Rdf7kYKqP1+p0h9sj|(h@ac;8BLfML6n7OCE;Zg0dfrcti*MR6hvpCGj^Pd(86O zdbzM*h_#VQrbrjCf7=FbG5`-@wo%4157@<~;&o-TnQHa{Z2`XrL|m6Xn%}bW^L$n~ zR}kT!7}6BhO_8o$ac=5rws?*>W^kkr^M>a_?470+;55NcZoEmm67wwKKY2>#!^~T7 zeFVciyK;o--2kPBH+iI%2V%8Ch*fKX_xp&m?&MQLktZ)edDWDAt9(kdBina>H`|BhyYPFXbM?jnIqR2lma~}6 zI(VUgeLGC(xs%LS3M#7vR)A6uXRv#m%sfn(@*;u;H$uNFhF*;)4joaaYS58T3zhgv zC@vz*Dh)?CFU0wcQ13pHRY~+2`#a;H5h9_F&z-Qq&wFS^j{n1h#+5NKLSI2<8zE0^ z@(}?c#zse)7`&u(&q~vO38?s{dYw9rX_@%0W?h+)paXxK6FtB1VKov$Zu;k-4S9oK zaZ^H|qU>i`q|LjKuFrfDY;91ex46~%N>eu_qHLuHL}w0o?P=s&O>xv?Cbf>%3d)#) z8${so?cDd_B0LT7E0mq5JNV5{2cdYrxEzl@R~wH(PFm1aV?r*~fm{2)YkeVVSo@&$ zXcqQ$2e|o<`Iz6Xq`Cc7^CVbp+=K9Adz%VKkkG+#x;hMeB=)?!yX7u%#>j7g!q4gL zJSq#4KaUdmKRSeh=NXYq7)8AcMKvTc)Ui{a8Z*=0VZSMLTS!=W#EIz;z`fnNGzbw2 zb0eiFGW3>|c6YSKbrmY-xnyqknGz+cGrv}ZxL|#)2yEz14t+;l)Rl>I_lUV`3dw*< zLFxkPV~pbRD-te8x%#4OuCS71QLK$OeF7{K$q(oty{kE&zqt;6cd!=u?sZ7k^R=Rl z7;}%o`(I23l^+vM0(nZPTl&orpwrNM)`zPcKh-JMLtMtboU;{gFH*O?B()R!5pMmx z=iZ}(4?qP_mt3r#Dg%yUHajd+&N;Fg&ObAyveD>E=3;ecFe2JR7CDU4qAdKHl_!)Y~r_61jWXf0p}3%5_X$e3Obxro#Kvu2h#o8ukndniHIQO6jRu{I3WW~l=Vcs zkUw;i6lav6cQXX>x^@Zr!sm!rjr}1-R-sYo>{i=yCEgvj2?g0pmwN@jz4qLgV*aal(8&lEy?{vS4?T$tY6M<4feT$OHq_T zI>C#KnRYv8do3_wz@Zib$cm^h`MfG+pcu_*#4+c9LzL-+dr0L6I2zyPvF+5Kj;Iub z4<$XkiNaQmrFFvU2^b3w{A#L?%&FYVXh(iOMO_<974t*(Sh>c;4E(b1H!zkiKgZM; zh+WJ6A!zF`DV;=C1N{JKJPvZnLuyEgnChq>=CV8WWR)2mqs&&35^ji#f=yh?I5R&A z{hI_jzjBhIFVGQ_-6xbQZGZU;DJ#Fr{KNg4R5rIwNw`?|Q^qk({hYton8MP)Qq(_8 z@&=-t8r@Naq(!L&9V^0BT#KA>ySe8Z@ZKs(^Oa&lDIW9uM2Bb-(Cdbeez1r+8`_}l zQJli9i;NsSnOoBC7bCog1h)80)8GsZg8+DLWf+X77(J$ZrHx+W;PFY)oL{Y!=#O_e zdfRpsZAsc$Lbp_Ysv&#*nR^4{P~(nsY!MXp!w(P((Xh9V0EOM0>^LX-J32r#-JW3D z9MJOrw6T_&PG=})-!0yItW=UXWC&*{U9&u-B%;ABTwcU4Zsv8zD|6UD;F&{IF|1q3PK^#16)O@`K;B@N2G?( z)Vcz@gi-0i?$*q#4pNznjLDV9nHh%_+b|RtBW^ReX5Vi{Aa%dk?GqH=)m!JV`{rp! zH8AWCxaJpfq$5dTCd%8g0>bFI9Nj2AS;#SqMc>~mQ|HWhjRKb2Ngsdxu%mhtxp#AvkxHx@-+etxQ7R=!|YW(50-^Q8Deer7v( znv#_c*XQto<9(~Q&c!f7n*QpB3G+XO6b94x&lR8)O)JNhV^g$(;W;1wOM4P4-2{{d z3Bg@$=K1pb#`q^+ckl>`>M6CQOwbO4$9k0OQ(PrO~(3VtCfm)0D{tJCbA5AGua=Y#( zlSvo_aKRSuh?h56Lv1x~2?U}MB9YK|etCG>e=jp?3H2^gt!J)FRrG_$9EDK8u8Ej*1SlgrlsL zH5f9W<7Mv!gX^6V-v_GNVuCWq*&JXo)Ozky+dy~yE>S&{Q!{_w(x4i(1Nl1VMf*V` z<+UgP%_I=rfBnC?e>bGp>X|`iMUDfwuz9+39$0o)QKw9^OPZQOuP;?~%*PptD$zkk ziZm$Z_)yo$dxCWsR)?E(`EP@eJ?mQPGm)$Oaw#f4P_*OU+C{;lm1wIrd&9|vKx>X6 z@sc?`HMvensv&D}CLCX1)8_4r^`f`yQ+v|EdQ#{)4gy^GJ#R+MR-bqtXYL60ax(VCh>ZtdlwyDo6=<)Vu&kXs#rO>_jp0b<;=G| z(sODHZwg**Gwpo@D=OjBkL|(v*Kxfh_A4k&7$Sc~gEoC33h(a@fenc-q4GfvPF~H` zrvWMGQ*{(ku6!IJ=tM^SKXJ*IJ=E!rfq{NX)G>5!gc((ucK5wz1fb)$3(J9@cw>lL z4|u%TN?On#^?2}tcaUd4xlogfxkBY&BPFL>O#M_|iy=yuD%8oaV)EVWrW>jSo~qYLguHGFF7&u*VHRCGMLd4ij0~rzU0p2 zDMaeCPAHU89r;(QB2Or!u?}Kr`V-89Lt8g|x!+sEwWLPWD4o?qp@KLxkwhY6!>Eeq zD`J??F%MlMA5hTeW*F2?D3gJ;hoWY$6R)JjBzgG|Zo(6Gl7;jYb)L$ocB=e?mgN_{ z9ZCZoTN|=GxO3Y`KUGP@O*f_ogXfRUsB166{qp^7a{NVFggl2I(6zs_dk3yd%5TZ) z;6|coPm=6EsiJPWhP{HNio^3Oe7B_hhb)k;@kzNY`Hy8;g|DjbwsaCVie)ZGQM@dl zfdd{qFak&67;LUD=aqDQ;2|H;cma?tr=umw!tPk6RyJERgRe;G3AYzQ7Q&Zji1Ph7 zG%_UxxYsG)r1aqMd}UZ!vvKvf^XHTT2(&vi_Ou3I+oC9UjC_igKu5eaH*M_-%R`)5 z&2S}e*nChVy9?pj|4dG5C*Kdt5kXD%*kQIg4+<}?T=1rw=8+SgUaMz;gNKQ6^SAre zu=4|EdDzsSS`uOg9lAi3H2t+kX9P&^>Fp94Fw#gVg1)z6#mQM4ByM#e2$zk(a2(H8 zu$RP_lx}`&)0gJ`S!_nY#5JNT0z)m7Q6ADe+pbAY~8k{lVYh*4JUBfnUb1{o0!@yRGD# zFufcjJ>}%2z$r=w6Qh2|SvIW!W#%9q;y}OENuCrpXcMT9{o1wc0sx^MjXx-WwrP71 zfehSpy7=%?zij?TOA562*)0$ExwWmlhD74+pKxD z%GyI0+c(qM*oeekKQOvYexqS)^2u7-dYVVxphjccJ7#_FsFb2*P!uO`8p)y$mL2}X zGYUFljUiqjA2I^d4jS`fudoBpPy4Cg)drd_ruiozj18TPgb*Sb5b5zeM|CR>(pg#F zFeinqAif0tPEcp8!ghIuC7jj4`jI)>b4Xu8a2-||X7cRRVQE0hqAPVq=Zu?!k<%3e zHK&i9a#_D{)kr^BrRma13%`Q;tlNgL3c}Ufe<%7fIaMBpePu#$(4HiWb+E&toJmJt zlh4-$pLotVq0JzEFGK~T?uBvXH4wyNFruVqF)wUir0LnJK;>!Z%C7osluF0%a63W%_ue#4o;(y9lV|0aPi(?%IAyx^<4 zwHvmLZ>UnUg_6Xu`C`AFc?Od-QXfIMc2c{k+^sc^4r%b$W2HM35?oBe>T#Bju-1@u z@n+JkSoMeYJmA+vV6k&J>S7}y-k(=C_y$+PgI)vQ@w6yW_)l4P^RF3ZO9H4+y~qrE z3YE2Wz@7#mu<~OQ7WhN|ww)7}*_gDc$Pmdy42Oq(W_scI-K1!%#7H7NhrtE&!SJfe zMiNXA0j=Tbz8=e>(OJ<)(7C(Wap%T1Bd*drh)~d7W~1BoUFRNH0pj|@wua&nKKPq< zfue#P>?z&oQ5yBMLr!9+A<%V^)LJUf78s7Yium<(?pH^N@;0jWs&m8VblTjjgMXU| zGN!QnvKIzrm7zXq4miCl#}Tt!^3eNVulSibe`pJ%7gdX%3E#b=96SmK=pE)8K; zq6O#hk3pP*E-7&ZJ`1zO_2{-jySTI#R5h$9IgcQe)}!fiHM|TmC$S!~4t5oUO&EmQ zqczl^*@)wDN#}L6yE2ivgY5d#vyDw(Q+C${Nb(IG>B*zy)Dp;91|`P$@bvvP=Q7r$ z1bQNX(uuDt*>-Pn6N|1111dY)g{DXZBsf~0R5Uc0mEY@CIjo7hq7+m|;LsueOv!Os z9>ZG)z>x&xON-CyeATWPr7W^9XA--&41?|J70qhFp`mZDdiwq}L@1lK%`N0b^dfTe zfSkSJoQ=op=r9}@em))YUb2p`;DNdDn{a!@E{4UsqDZH$B`y{>+pA^O|JdV~tyL!2 z+Jm)TvL}rTO(HV9+ZriOws4|Ff?9fNUMsAybkI5oef|XSLe$|2g<1$LdG5suF`5p) zLp+F4)><>2p#gR_Je7gwOO2@#;pOq3dWjSAH2Vw6UG|pKmXT>ijU6

R!FMZ~*_)yN(8?Q^eg0vdnwH)8kjTu=<2+FE=~Azrb` zvL>L*p_3iG+Ef!8K3Yy~2vDo5Bj$P=#o;Tmy0&JMToA$Y!OV6 z9|(hl3IzP&IzG=dIIqh>s{28Xw}{gGmnsSE7t@M%eld9xkUZ}^rOye9^zQFHvG%90 zs3C9kSWM@WGF?|5d+;E0Z~=Z{f}1ghEHrF=88mX(wBTS)5R|1eV^^5x3yb{F?QUtw z<}C`Z4gV`8kDYN|P>l|uqJ_&5LI5Yvr$csZp}@cGXK6Tn$vUHfiX@cdZ&I|6ifJ(r zcy3@{2YH3`_iHC(T;tD2^WM=|YR=&P5$ecaE0XyP`UFGoE)g=m$0vf9G92su(yVugH1QjqTEh!x*I0LAr7f<(i4rwkHi#lF8{bf@=$G|uee&`kTQ@eiy+^g z9tle;NATxPLq?88mCSM#wYoU{yJ*5?;gwZ7?m`qs>;k0elA8}0(Z9=7&9$$?J##A= zG_Ay%%Yz;=JAbbE#0?Plj2j_})ui<+VbTgmY$Svwy|rbMYa4jJ!ZoYB`WynSUz8y} zYoGP8pKOUFmrDNV!IO6)VJpOenqTK}0}}_!|KO1xrX?B`!zJ+-$SxXUJHW%Cud`+L zIm8GJdLNVR%Y-p$O?fNhllQ<;gubiYd!HvnPE!uPg+@|*U(5PGj6A~g(PSScnCEgl zaHDp+13zsSh07=T25qHzDP8~4Q~vfGX`;>Wwrh3aHXWeblI{EyuQMTui|9f%BItGyQ?yD)hfs4Ya*7`e$5{TW}^E zNof0YfV#MhpFKKB3!fgcE^vL7w|YD#p3>yIEs&I?zdd5%43*0eYoJf8l8rtiQn4%i zQ*H22-l`*@P#)MNV0_y)w#(1=7^>Z00e?6d(4n<(w!;!HzIkTypaD-C_`wV@N|nz< zDEVW@zz1ctzMB}uc9`M%BC02wZJzg+^94gN4bqpcCKjIzI~{G{`OLO%*&v_Np=(vr z41G4GTy_i<@&=R!QPVwYlq#%@8yoo0B*y|=4YcSa`u3UySuq4sfLo9awTqUwxAr-p zdrlo2oc$)K#A#9Uog>ggbEdup*0F^OoA~s{D2%;2qczDtc6}ZcaI*OdAr|$Tr}>j0 zxTZJhYRAEpmW)Won;2xt5$&3|8eN_S#yvx967q3X+LoBhJOEhqWBM&)*TzXlLzO}F z80Y;vYC{SQdy4#wV(jG7)=7;E>mqv{YH*51H}PszdY)@^RcSrkCn})25Lwg8Op5XTH4gQg9@!o8g zMT%(@s~BCNS;s%WdWK?RK@(E%hQJd-7$O~3=?q7oFUSZtx29DQOM=gYEKDV}bTGyD zzu7qlpq{qoEBFL}59}Xln%^=plv}#IjzJZl4m`=R@ zZqsbz1UpS`spoNpXXLwZX%V4Up;oL7kFuFFZTY!S;A0l1V1*M=yHsd7l0 z@_->8p4WjPk2@wCq-<0IocfMsi0Skb6K%-fI!QpvYkrRWDNe~Kvmrm?36$-raB6Qs zfkcJIOPd-)iJO4~%N@9pocK6wpJM~}l&U>#>F(2#@e*Bx#4YS4*wkfOxJEBGjp8HX zTaT~IL9v@Wj;8PNNNHc;nHWxes!C?ZQ{+lN`V#i=8!WwASRT*7BCao_wDFtOOPHaW z4#ij#gZ|Fm{s#Y%y&#S7lbgBpD}06`@NShvRcFsq=f?YBN4Z?~aD-QcNo8BoFl#K- zKW6S(KtWe9A;bHB(UJFl21WIfFhW#GORZS72Cha8wfe8=rXYHb52w&i1FnC00|ANF zj>szj|8G@Cm-#oe%sJOr3IWzYG#%XKCrJqi6-AlxYMKYD#lO#*KE7(e7m!C$0hTyq zbg&lI#!Tz0a!tSN{(i+gPiQmrI!9=-11G|KP8a4EZ!oSjg-TTX)`u9ErXYrXo}T!b zExpPVX!C)UGhDI%#dQ4&F==Mo*+|szH;REslaDd*JRRm#fEjO=kQWNJ45stj|93K- zut5}LTc6tLNQq7^(W&Y(&M8kjy_YVlyOdWU;K_O$@B3GAi7zEDeO(p#YBQssbq$pd zjlg7x{S4Xc?GBd*Q-EG)$}v*Sjv*NABMDumt`LHu7Q72l1->lU8J0G@q0!Kg@v3g~ zcwkcAM|`FsXv6&|{Em)Azq;b>bgc|M6d(}E>P7=}Ae6(!IDBUFsp`8pR4T zUsh>*O?RRxzY&`53i8x`mHVQ%eSD53p1CK1*JZT%+buRY7C+04$9d*K*b|!SC*^JMpO@YZ-%X++xZq( z8VlVHw@q80JaYBc3F-?2niN=Gi6ptFj#t&tTmh^92pIM%93g}PA{{R7mf-q%ns4mM zVWD1mQCOjdyDLHj4A4{Am13P%IjkR#ol`m5o2-@-Js*U-x5i$K_m& zH>M(lku=IQ5d=U?Arr)c2pQpd(*2_f z>t=QqdP3s~Ca+i53cZ^|5FHg0MYMNL=JKz{yHU$f-QaZYxP+6p)xQLO{=cY%@#dH+ z^FK@~ZnTGTT)c1R*xS3%6Wc?4iMF{QI_b9q2gLGZRk*EvX?Vp-~ybV zoV>k)Q16T&pZ}@Z+-UH)-#Ja{Xb}F+DFiI@v=Lu`Y3<~g0QpyHLpw`7RR59KNd|4G zpG{>1MX_Z{Z*l;p>N}4SYN*{X2=Ds3nbWOdK@RQ0PIfvB@8y#1Z#IZ*1%rJv@3N%2 z{DY__mt35oDq+igg}L{YR1846uT&xk<* zaJGg4|7`LG=ZIbH&tUO@-D?2_K;sZ8*rk*Z_s1!wsP!g#E)sDYD3kF&JJiZ5 z2|1*>*M(&3bnk!XQqs;Vl;^5_;tC1|h_9D5BB)lL_am?^Eta^`MZvoWQc|GJl6(p= zIBhhmdf?g7zWQrj*W}!!ThS_f?5N;G@kFagmM4hY$NBN-;;wJ#m%>`8JTQ)Ztx8r+ zdCW#A#ku*C4q-dd)Fjt8TOcefH+H%d$o=;C41c+kWq1FoCd>XOJcw1<9u~K#0?x?c zuRMS!r0M_1ihX#O#JVtow%^VprVITh|0T*ZT#)hEJ{Q?M8@;6aK|pC_q4oF`!mh)A zkp@d=&;IZOX;F;FBYlcu?H$QaX4Koae!4Q9h#z1kCaLB~k8ijRT8U5Kr_@1)=0FW~ zNhnYifZs9yFy%I+-U)QpAz8CH_zbUT-M#*uxYFxoT*GW3GK*TZqn`mXZY=gRm4%VO z8+TgQqxZontB5-Ifx@L|8srgz4uHR{_Kyqoj>=75l{)YD=N^sgO=0cN!CWF2G)ZSz zo!c6*6kI|vzp*w{(~Bfux4z(=$3jF?Wh|wHjLWOJY19fFb{v`3flEOoQD7B#6vL{# zMW#TJ3@F9Qb4cyYkcU&qMZuAb`>uh|tj9`BuHAYlAE|6Zq<38gITWdLkrsX{I`Bqz z95rqN{-|-OCV%tTa&R0#B(urm-lzx)Xp2;Ftf`S&>?f4~LPA+>%=0h&!WzTh66Ggb z_(@G=akn^)pyzX_5;&9eg}S)8_Q^iEn1V2%nx@$b)S-(MATB$(h!@g#4!_s6DS?L zBY5eel>u5w5_9c@NB_5yZFZuvk&hVLrTI6eN89X4TnRzTu zvn;WpiGb)T^Cn<%`%{42reEy56p%+sYQBlbme~FtdWS=|$F29~UKcYAn?_=YNDN>K zGeCHN?uEVH`y{W4XdvAJt%8SWbz6``T+)s$)g@rT8u#OeXKWshMh|V02gT)_HsQ?k zP>zAcXU#Ul)X_NkKS$TTuoNgYeFo^D7ze_9D! z_$Hcf+qNW?wTod;`tbYZVX+qU&jyM7?f;$*+ljbM_p`EM>V?b;tV zU>bL`C_=n7>#4-&TqU`7t-H}3u#XI-Q&|o;!C{|BYz61nD5!9uOo;ru!d|rr{P}#M zLB);p{+#NHPK`yKxFFpLh`_^JiG29GbXlK=zh#F-QlB!YJoWsK#GsN1d5t7#N>4a> z^p8B5+iwCYySi<<<+z^LpL9j_h(1VpAhZg=$WBDgWMcbjrT2L37e@YDv8rqOi!>AV zGi3O#&B|wB(#iz^RoZ*#M}@o4+&T!~?Q*S{rU}*vD!PUQ+ft&Yu-8U5cv~{|9!NEE zBl*^jWy6z%DSE~VR zkLIpHlLJng+Kn&T-W$ts)L}-tk?AyRWVzeJg>C-mBB}W%9JUw`&iMmDNbmPdJDF-G zke-ES;-|1dnS1k&eg+~0MjCacEH&J@--fm%P7u?Bm_riKcH}B{c;NP-!DPr7^Rckd zBBjCfsX)p+cFUbxz;H?%9bCb{=YEvnU?}=G2Yf@O7&0UJoFMB;u^RttJRiDb|8uhgG;kvesa7qX2 zsV`XZ|p{e!-@ECA1OGz3~Hf})vE zrLU_n?rS~iNi#(-`Kx(C=}33jlR(yyCs@-Z3*d|`)f%hwwewdS3E~*}eE7ILcZc~; ze{6%Q3?Oc&)i%fIu!hbij?AaU!-<0Fci|`Hv>e+Du0;vN=J=z zhhx5;7IvtqU2H+symR z>a{Wb@%lJgwj0=|imOFR0d|wL;cN?#wMicOgS`s(tG5Lwoo`Bh~5wMu?MX?W{jc zXPp`cfP-c!K>BvcuRf~>%7ArTvM|I)?R=tFe=Wt8ADyIsK6empSut}BnRqj16m&H4 zT=cR!5z^CI1(LfNF_)mNMBg!yi-w6&464oI60VNB3JX|M?8@ z6o>=_^Kyp+ncChp8>|Q2$p=F1ne-nV)&@Q zqCdx>)d32?17;|ejzP6s`qGzFBZ-}^v0$Yc z5UgVo%|Ci1N>Bu1*USW556w6G`Y498)!u;eisRXRS5gVqCi;>6_FYjH&!R7SxD$i% zos|&HX2!dRIb`R-d0!V!~8P7NinJFSWvmR{U!a736SqcR{xr`2xZr0(-Xt(68L9D zrjQ+&TiJr})2UEJ9DiK2^8z@~BKV0UMW;hWq<4|ff?S$g0kd_0!%Ab0TcBQ!6Ag=j z)IkOj6p6YR#)32K-r;8VxMM$|OqRzj886l54Yc*ERZ}WmqN1fIF2Uj2%y&SJfuU zl)GjTR#;5wQ@kf3@U@Twbor9qv?@6CRc*nJVILR6o}2a_4h<=GNv7gbux3>dRW7zC zg-1Gzuj&8><%N$hIPthcydaJ3q#p+{6qv1tgAiYZp7;Ze34zsKi{|VlQInd6_25H= zPjF%F1(`fCT+IIsR0Q+42SieD6l0fXkJg@t>4=i~Hi~;c@f^6Ozt>hkoHK^vhL(4N z0tAyD{wV-&?!f`puD9$QG1)EU{{5Ql`RIAQ44pGnyO+;zraxzd%-cdTmg4gTEp=<6 zBa)r&L~`^Ht}{)I6jrEM(X8hZF?z!|T-2Sli{&$W1r~o(di%{FF%ecR2Kr0XrHTUH z<(#lQH?e@C{}}>%11TLcP@I^rFvISP4DQbcuV_y*^R?|Nvu56YZCi?vT@N}85D0&; zUIE0~CORi^=uLQ8^jPR4`$Vu}kvp}%J^T^`?bR}b^t@R}6>0!=&+z)^sV61ky7(N5 z{Frj}Wukq_7p<;>J+HUr&V7Q-PaVG?(vKb^{T++9M4H8VTX+47uNr}5j{;jO z6uu@bQQmIUx1DIGA%q|%uCgKe%DKW3x^|!Eyj?&66!6BYM4jhi)6@uG;$ekNi^wcH z=#@K-&0eNykLGPQ*tQLmM%XJQIZ>!A0duZ1O8}h3u0Frfls#-s&_^D(a*7crt8F)% zcPTsAFZ@B0ZEa3*S)U))O_)?mw-{-%6IK8txpI@&Ii=;EVjrhO1HI}|(OcOF2hmv0 z@~bEZ=h|raR-ossD}H~dj6f0K4;u~vfpiNejFzICLVxEqBqfUPsWnKGo2F4=KtIoN zZlW1G97zn>sj(|RYcd%624{gU%vm9^(+VqIlUGfGmh1cid6I8EyxwhsHs=Dl!W&cQ znKMG~!488)-wgj>K!Sg5nLIQlqyv`>Y`0ooVfb?pD#|jkb(fzx!VIF_gb400V-_mq zjwj4jEh|H7>i+UmQjC!nC6&vgY>L*+}Sg7X*e+PSpq{Ja?fXFD16tgylIcV20>w11dS1|p{{ zOln^oaF|WCis}cb+O#qS2jFo0_hOwA=EU0m@; z*~>}n;~ZGlGh}LqaIiw?M>td5P%QcnF(2%;G)?VDTH>KM#PT@t0&aC!>ctr{#RY@m zPmV41G$wA@E22;RIrJf%owgoSv=p3zu7Y6H?KqFh?kY_V-i-+ANT(|C)uj|dWz?vc z%I9=B2gpF}@!(9ZQC_e&Fmc|klL+|}GVcB1=kocOleS7gXa>l#f@QL_p77-s2+Y(@ zbywG2N45zGiPzP8=fYQ~{GUJ`h<(Cm41Tcu5fA}u%kNGU>&CV$62*)uet-hk3>4mJ z@Wg;}Cp+OKQjJr#k39fK$3S8){8CoSEyhv$)0I+(alvw6xwUbSDI7--w*v~GDSYqN zRKj>f*^@j_nEhKtfgybvz`2JG=mGTZ)a>xcV!=v2Xp(ztNHGWi z4y8}a^6cxbhMPWIu;W^V=-|?JLcwy^=+TW&3sJ$Jw+#3UW_|6KSiuCR#HJwD3OcAq zo@6D^of!Z1;1=f~m_ui5_zm$q?rkAaCv##CKaspfOopQhQKaO>&W}-=Y#W&ooi!}x zKxsq~#f4}zzq&)=qB*c$;@iCbdXqGfvzK(;@DLYHnvEr@;eRMQKiFV3a-qeQT^J|2 zL3RGN@Hg3<7Z!b$wBAjA-x*4ORUZFn5ILXQxi>5}?ifHq;`cFt5FaY|9&s`aMluCu zFvCL_gDNg#-Rs&^b)S`v&#u%dZANuXl>hyms~5aXz7c&=!b+FxRMz&9XPl=pS>Oy; z56DDu;6{0b1wDH6YidGD2DR2_ha6@0%<`G9seYCUEN8iDwv%QZq~U?;iY(FUW?1PC zKk2rH9kPku@4kDQ9LOCJWPl zc8_{o(nos2lypXmUZ$7$$hCPVci-W7=~O)yFzjM_k91{gRYj8WuOu6}7q9$HM=mH2UW3V5^sy5-E zU_mhoH;?kGz<3SOh74=CXk;qV)R4bw~ADh}iWC))~$ERR)u!;V|JUo^(kUuE8&)UAGlcb*aTZY1X)3%jY z&f943W5T&TV7}t-;l&fxE+4O;SDEX1c}kCL=5qaX4&Yx2DFKX-CY=O>Qr%{i-?Dc8 zulj2ZbLMaT+|1=oG+7=J%o-|J(2f?FO*lmZ12Z#{a@X%^ZDZKeY}N2?Hwy(g4R;3c z&uUyaZ1@S;>0Ir{FO)Smkl(iSRf6mu89?hrkr)*NelIi`y-GQ1g)FgV6!QVPc;ASn z0x+uWKDFT7O4Pi+#Ke(_?Kts^tK)rV^?`muI3)-Ed=@d|NPW3_I-&Nnsc44U&R6tW zCEJbLrGpwEOfALJL?lf*G}@#=uo8LjmOM>_yQPGJ=}F7@4S!-14psV1FKnJpqUs4p zvQZEYyn_(w;dLaP#bH!s?}5QqLlN~MjNqG<_8G$TI=0BkDH~-y*GD{8PSN@1oM>_4 zw&f>6hAaJ^4&q6(GIZP>%n3crqwuo21G|*ll-12(WT60J2j`NUL^&eKe4{x9nl zePwQWyk>Mg&T%IlYw=I!ykPE7q-0jb|B!T&2oT(wUNIifvpzsOLY=3s#-6KPus(y1 zkQ&In{8jt}J2O_;3$LI-?5$JYXQ$BFim9;Jjy`B6J%hb894^Bkwm2RhPwk;Pi>wqR z=RexT$95=9mTJ!jXNv}N?t$+O4aKsWc1scg2)h*1JBI$WlowZCQ`z(NXWU3{F<;G0ApD zM<@w;8Q?rma-8{Q^8C|)yRP=6JWK2bP}dipByL?srj&!bbU&oP6Uo*Q#@s0c2`VS0 z21Tu=>h<`yK}DCk2RNT5wk|c8czZep-h1o0gfX0!Rw-m#a%raHx zytkVW+(c<}1i<)=T0M{ku|@tcuqel zSJSQrRa|+&cSAD=<)J8?ZNEcRP}^Ym2;EN>=>J(h?Za(19qvxVu1OyMQwX?s2)Lq| zemu7bY+cFR^pZxX_&IG_f%lkqs<~5o~??ySpH`{gDkPctm7moVoOyYi88{Lk5&Bq4_0Z{oS9)K zGi7;8@aL!rRZ6K&7_r7_QFcW#MSs67$5MxS#k1Va3x+R#ezP%#7)A_|aDwYmWq8?U7EI2eyEXysu zgYb0_`YO}gvv|MFs$PRq@4VEgq8Wm*WDsXFLB_Nv*O18f)3!>*6>UD!I`syff15QeUyblM3y7@V!gi9B? z-8vfG{MW^A(Wcf7I#b0NSNf0xRB4M&(Igv8kWP`bsG-q)yp4oOp4_j-NGW8+Y^4+d z8Rt`Hxn}0LvRJk1yeGGNDc&X4AdcrAa(8KlEv>Ex{F<&{Cg0WyP7JhoG4ppzF}GYgynOp;q1 zuOT#j^z~s^LSshW7Gqh2ZYYCqw2b3t6LMX-8jT=G9lmnokfAM{q`qT$*(|-2f{1jT zStYV>If_I7f&3ZctF_ZuP0q2@&h%j*lwHQp+#XnDEN8G6hDhgmF^u%O=ZACPJRMe$KeutNkf3Bdwm_c#|rXwXQwS^q}TK9<$nbmZu6Fn zKeBQ%kZG{{w8q@r&PfMEV(3?;e)|=0yqFn}1xS^?is0;3t>wE^!&m+WtzrnS$)9yQ zHev6x3FiWSmJUHuOwTws#=?x73DOYk5|O9&0(&IPrXfkVxyF3f`*u9xAGLNSljJxQ zo?Kay**5;>HC=*IMpLi1m52c^K0Wl+@EEZCES7lrbJ>a)Q=bG_vW%XE=eFm<79cfp zMVg!jqk;d5960e>3UJ5LPSqUdQ=EnrVQxWKB`FY31xaxR?;wOqas zEPsO2kE@rV$WSjM`hw@s4-b*zjxFGgjm>3CC>{RMn5azdv1wkuqK!sLEuPC+hA@Z$ zoHX7h@y1E5_!&7Jtlf^!s$HJ`hutyn%^ZG+Yos8rK+~DpRg+8vcAh|xwaQqEY~ewa z!;m!6SiX9U<&I4<5qfKVMg8+^(oWDFgx~GS4D=izUdIGd7%J`+!4FmaDwSM~>J&~r zzE45=o06zG5y?TwYE5R#N<+9DOWt8~c z-2J0lQ_2R}+juYe`7bj68XFJ}9}Kq~0wMR;7zx43<7!4{v(@)-%e7Jl{Vh078do8t z`sPp*9e)`unVupGj+%!@8c?$DLj#f?84pk82E+?rOg+1xkQEe6O}Tj3_ITfBXguZ} z9S{vn@)A`WUpG*AG31AaOymYj0u3AyI1tw(cTyp7_yu5Z&*uVtrDTOvhI~|xvmr~? z3ASRf5#0Y$t2FJ&L4-aA)cZU8kd7Y2h7-6jIj_v;ElJ|dJ?I+?Tx%qtl9D3}Q#5tX ztFcA_-Y4abu3`|H{4hSM!zO%-Wuhl9LKr7gn_XF3**Xc~oKt*h7D&5z0u9HrS= znV0y;12d<%Mpu!`*f~zDl*Nhjs2~Y7TQ0^r7p-Ihae1={E+}XLC-nw5E!NVwW3#}1 zaNC{Ahwdg|*SQnsL4tD6SRTf5(sV+9Cv~O z5L1TE&f2<-#uf4T00ui1)Bs|7;pXhGBnge;k6#N%tt75tH|c7MkVFNr5$LJfKUmxX z=m`kvBjzds?-`^UzHUMRzjpeK^zn%qNJ1?6%<5E1$i`xZ`U;lYV$OkML8Qm&0Qy<1 z*{MIc)&inm$M0YLglBf5lx{T@dQb5fYY{AJ!8*q+n>^4-#- zEAJSmO4zj@`OV5O4~Lj*)jfkT?%wN2VJYy_L3lKc-2ZKAZh=al^Al@Z|Bj{tvh^e! z-0zfzQ%B85z$`oK_}HacDT>v3v5c$rq|#LHHRCI5x{oA^eE_oTgq~+;8(3cu zD(~;cao0pY`e9(Nk74rd?a{>79J$93@8rNz1MzC{rr|5#gMVV`vD0SG5*`_A?C-Kb z1X3%6^#r)$(Khz_0|YPawa?4hBBT*ID~NsVADh^4XorwJW;V*gVLG^q$IITX0J4Qg zo&uH4GWt_<6{C_V5|4Ug?}i5%vnX7EqK_NBj(l}B`w%wx3|T50^wpTLM%@G*zE_dW zoo=BZdJvRnIO;JP^n6gki|7#PS6P|4-d5%#rdCA_I!fa0xdW@#A!(g&h(kS-Rs0DC zL%+Epajd zMASU-=J!(o|33i03CD*w2B&+{b+fp(_C0xR6&F{#G=KvsGLw+E?aj59WFaPx6S^>W zbdaP`&GxHH-Nv~od$c%X?EiE^365S4y8gj8pb|LKMZmF+QGO_W8RWfIl#zk)IEokl zoSV6FcLxL!P`mnBZ)R{#G7GF@2bU6P0CP#`v+pKeb?433ZZ?QibXeL*!twBq(`+)W z)l(wxNMurZgOKsOzpM=7#*z@POnLpHx8ph;U&eZ;&Lw zMTLI9`y*vmM_)f${RRzJQsbGxVuk*D+I+98a8>VWcwaE0^q44jmqIm6r*q*>4;^Kw z>GLh16&NY*+lKS$f7+UmSkS)-yVNqN2^q6O{PFQR0|I3vo z2>;+X*NZx_X}A&g4)`y?f3}`C7$H5Fdd<98ar8&O1+M+kD}R`wE$s3qUMqx)wDJja zs6FB{Yk}%`!PZ{%6Y|~cSMOXK;aiP2%Y$*nVz-qakXWO;dzEPCzI}a(JUPBnU}r_8 zl`Iw)nrO!D#NwIS#D6oje`Pc%d~M*ZT#14#$CfZU;5{u-wXaHU?w>vYCX1OK!}(s- z-U^5DwIp=Ts2k%+e(clFi4evclRGD$xHl!5WUIm}8C<`odZ3av;W;U$jUw*U!v)y; z>IlW4xYJP-ijP#KYIB~HK$FNf(Z3<3-z~iW^2q^x1i03+d8=VP3R7|?k{&AeCkx0X zxg6Fy_~jkDXkf6K6#Ay|OrzVtfzXJ1VsR9gjl@h?lS~)F8nZlOx>A3`h?JOJMP`}j0GKyyBey$8g1Z$_4+gs!)jSnW8eY7ol!xexOOK)T>e>^sgN`Oi&h~lAgcecYZIUYoH`zrsGAwvPYRW zMsrXh=1pRW1(6$AW+mZ>trmcZl@9$eCUC&TOM1M&1RC@h*kd4d60mi~UamoP$r1>T zu9mIQl`teQg-^PQ=dFm@*S)?yqb8AfsTD6KrQD|@waL~?+=)v1` ztE05O?Ye(!H49lI*t^HC!G0Ar$~Rouk>)}d*0zh=&vZfZ1XQ=fU~cm4B2A<;RHk106uilxxXM^T!~Z_^aKEx> z$8;;}2c>J(k0&hNj4AdoqYOOn%=mNxw-=fk8-djEF(lR5PH45tIbqdO#BFZvQ6v${ zNq&nB$S(OOBaSR6yhS?S@>z&HS~#Epw-wPeCHs;9D-7eBzqRYP7am1 z9NP6u{!cfh^|*mx2BTAVmZ@)xNz;6Wxg47@ZwC3W?UlS7?%bVzTGmQ8S3m#d~Z`x6Zv2TMPWaV1bSqZvmGi@O7f5Skx;YQ_vqZj)eiAk-^o=$SwTM zG}0aFKT)^V#=cGhhBub8Dc+3L%J_x4x^|fE0t5JZ%1VAc6okpN?s3%2$#dozVu?oh zauG7rs=9{y@6FXj%IX49VBCW&wu#lShMoWDaN8^nxiF{HTr?iC;RPQ8lj!v-npz)8_G#g^ z@#4qmPUl%f?F=4l`1M?>Xge0Z+3NL8T#EUN#X%CjOsAhUGO12_u zr0w@4IBzSlBsk^j^Ys(gzZV2qoXRxvl1K%sSE+?OYuZA>Y2P~ZC_%~;DFzI`*ko^=^oMRfYYK+m&3Z;~0+=q)+o5PJa{Hj0zx-sAKoiM2zgo{BiuYyO2>>X$Yt5w8R zNF~Z2ZJS`uM81~;89ISeOzS!oO-5jEC~_j2lmFZH)Q2@WlTdUqwQ_o0}52#pWSQUF-Cl$l!x?vjmWX9yqZZ^rpMr z3+?J2H7>LOo6oMt$ofQKA|_(6_BabxsQwKt4|U@~}gd^{uiN|uCOK;t_|`{T5xEAeCVI?$&oURzhj)$lmPW*FhyZhk(@(ces{-R zyOOh93q-8n`2^w1N%7B4C{`N6az1|KZ&&Kn5t?PNj2F{v&td7Smh}uoeJtL=Yf$CD z@Mp&KNu8ED_~%oy;FZiXE%kG^HV@8CKV~6Pnj-?jmBP`-CDK5m)#pJBP+&|s_t&{= zo?#q|`LW!imVxt^>iR&^DL6Zls8YiX0*0-tEDYnktxWJrC8TuG9i}!%IChIgL*&lx zo@EN@8?e>kg})p*-y%)+`$umlcg6oK&+0(pvG;*#EcCX%E<9qWB0Ai$G3`ejX{k@-5cm=G?Vg{>N&PNq>CDOrtrZ{S z5+NCtH#ZAFgp4^;=gc67h(Qy_<6WQ+(eGCfinAP~zuLgzq$!pPs-+F*j$oso&kZfS z?Rla=@5{}d`x|1!MbK#m)fJn52QKvXnOOF(V*vG^b!?-lDzFfW!yx{r`}JwM?DLNI zfhR4*N0$@p5roxG;TXKH(T<}@fG^0!osj$#!VIqu;IESaH3Sx+p`A3>gY%^M_YVf3b{@a^!c=tio$6rs;;*dgJI-K(?mO3bT9<#qh z+uX;Vqu2C5N%-K-Rix?(ZkVTvs2O}`ezz5ifZ2q-M#gWY&G3laQyLNAG755+MDIV! zTn{wdxdMF(J=1XC?K^aFP%O!J?^D!HVe=>Mad7&60slVN$;pAZ^!tL{`cVr`H+cc`4G+yj(bzK?I z%lFjZale$2t@jY!5T_)*H;S#Nj82YU^jR&Hf z83#hJv17y{KjZFKngADUWf>S4h!UGdGttp_1{lyT8+$;Fh6 z=ACk-gRsmb=fS=6CUU^WY`*;((Gg_`FsYo5!Cj17Bl9;^3m%W!Zu_EO=+dw|FC4&@ zakk)J)LHdT&Y#`C!bFcm0$Jg7qfw*novC7Ug90nZ24y-jeOcTtrhJlFoTJLN+`ji_ zOC*Jq)cc~lumcZ)@p!8{;BsRH^}N|=Q#LJibtkNkS9YLyZIPr@g?^Yas;mqfre;fA zGJ^$9g=*dMuh1T!-B;oGJRH2b@GUfYU50A}?diBh&`zcKKO0F9r zCR){cx5%l|=Q`flSY>;(DMoIK=75;e4t~?H!IVH&RfgV(HBnFph6U6rgH``V%2IN@ z{vYBz!U;=i$C+muuS@9 zT&s0=Awib#D;9Y3L7FnJ#@~1w?8iDgz8`@4wkhss^qOT90cV6twLyWg&VVL;SnnQA zZulh7_`*GU|tWEinB97KvAb9@gbDUCe^FMGK4)C^AXdjaN!FuK_=;(^nWL1AXm14D@nGlt zrWzIidUyZ8@Zhm%QO~4jXh*|i7cxy<3A4wF;n4)M{t z5>Z2KEqY=1U%YfF*B&ey8Ig$}37e(MUOpI(8LYu{5fmWYPx|1AO4rzF2~|kFtyMV( z7S+=0+05Nn^+Ut5d%lnO&z)Mk%KI`bnWo^-wBwpsrDGzJldF#?jvg5hh~Xb5qn$m3 zEw*~OJD6)QXGJK>NiCx@5;Ta);S1u}4x5*$9=g_6x>}i_Kg9CABVpmL-TG5r`1bw* z##8{K7$g_*0=C=NU%l*#4L}nFmS>1zx{EgGOYIJdY@@QtL!{fasv9g$(muuqRS7Bb za;YTu=d$X9&91E<zJ&KmgGvsU2irqudD(M1+uPzc-pQ`Vib?eZ2sSc}AX9B>gb&)MY$O z00DViU@~QPsDR?~pHDGlD!}>b@q0Ouc8Xe3v*3xW-p7X~Z&upN1z2A#L-DjeNWepd z36rw4oZ(%qAUR)*up)H$?ge?c_B#@SY2uu1)|EotE=(p+*;GsEG6~T&)|vWd&eDb? zkj7?Xc{(Of21?WX;uG{Uan1yxlolv1x`_STBtw5O`1xipNlPU7U|dJsjFl_Fv#4ao z{hb_uy&lIgOpc z{=#y_=&fL5R|4>ivEr!Kn{02{icDwHMF8!7toM6RinN;Gal70z7Hf8U(*I?OE_KG@ z8@E1F8YA&W=Pc6^G@gmi+FpK3MfsT8Su5VN8>@4Z`0^_7}LQdG6=axQJYgA z@M-BYlyIlI44*z8yv-pf1WnqFs00$+;1H)#jIG3>YypY?q_?+6mbapYu>yhi;(xeI z(ATuTc9Rj96WE`U8^C1ZzqtR<@Egm%%2{j9Kk1!JS;$9^@O``WNcRew*e<82YVkMgo^V3HDOCH`tG3 z-93m~gNnIgr8`tgw9|E0RU(*Q9&e9zdDX^?a_CYPld)D$9DY#S^s#wgu8sE%+^?4=3eSvXY1ofGEfHRC)aDFwqx`&cN2S(A`b)T(+JIpHmP4b+gTiYV^X~ z!(9ILjN6m)z)m)(k~t~c?3%_(8u#e#q+~P@Zsf$=QlG{FpCjB%J9*m<=cvv9O%rnD zX`GFBUv#UB)HE>I`d@_NUqr}^jqz%BZqDV#rcGV+sYyB-!C7Z<1vJA~`P3QC$C;g* zanswwKQ9F?x@L7xnY)fDq$oucvSyx+WP%|mBcn$mntjrr(aTTnk0K3Dt&7*f)t9^C z_UNB>SAyW#FfF?X0kC{1RG)P+CCVMclE(+Q^8duCC;GdTyCazHR1<|`Yij@8>+=+; zB;cAA#1=&NO<5EwTsqWSAWY%^hh{kl(EUe<&r4(_u5P&M1((e)J4mES_%0#O4%D!E zQwRoj=2S>`$6+k0W6(J@bhRR1AsG4?(z)F-=+3Soi0Z5W<)>NlP%YmT8k%W(Tl;NE znc@0%^ptySP@{snhY6)iq_f>&5ACMpin65X2E5nk!e+p(3N&pEdeb2!!~Z>8?XBvmQ%J{)v7Z?!xM&)jw)_64+d5xXgsUsn<|Ka>!`c2fV|K@BAw6;@1cLLQ97 zPkWe9R!}w5(aV@QQiJ^rGfU}_Tc+_4^BUURmcnJDf;yTO_gu+B%_Bw8v+&kB%57Ud zX2?MRj>S4FjHT8t_7gO^Moa1Na^D-q2;no}?yt;Dq$dj_X=RV=e`G;*j>|v&rhT4m z%*9jOm!^qzOXHrf*}Mwvd%FffeDF-56aU3LNpP;K~FvDhJ;WV$r?(d8meMeqM&Gq?^jfRsy# zrD>Z*&qM;5M=XgHf5Kf>1AYre>26`(U=8j@%!Y<$qZ+mOTc0K-z*aK{3z+bHTORqg zsPZGuM{xvvlU~TPFlX55vUSv8cQb^MNT))@g#XSaJ!g%HK~lin2%tPv7h>4XT%7kA z2HS8RUVOiqob@1jU}SS~Q)0Gqh%Az&w6>Fv@Jvhv(8x?0aAlIjHV zcbMo@=G9uELguG7IR#xjwy%v%Jj5GJc{I_Jksen#LYfb6O{s=hGQRB)m+;wsj+-3m z=&S0EAP?R^xvKT(bzW=~;CcS}ce27^ea`Dfh z?`j&dxX^gQsumE=J}%c1oH+^c>!f~tQ=%C}(;D4N^f9RC$FW@f02j+I;({`%N1+-B zTG9F(moxf-{S@;UOQPbZSR;IUv=dCFirYyasX|qSNx|s$%5OAO-@DvH{GeasGD%|! zHUQ)5o|>(;!@I{9s3D0NU~0?fL)69;Amq?-K<+OUj7X%% ziaYzKQjjR$uQL#1Z3+W@`OUr`T{+zVcE3A+c*No&H6iVvq2qY0@+rPft4J`%{~$aX3iT_>rW%|ZuH9+Ea2dcmncMWQgW02rMU?IxW_w$-ZWW)-}wM9mINlg6d7O(7J30yWs_-rm{pM2J^WKAN_n!M{^ zZN9BetVAXLKzZtosx4IT+pMC^trj2yB%VKUp{zJ`<@da@sYr5R&agaI}!AC`|*g$ zc?+vhI<%)&KwZKEwSa~#3~2BOola+OcKd*ud0y!q|Iv5)L@DxkxzvwBS{Idyg8>l_ zJunE*G|zN_eFEpM*l~IHS6bk^`|hVRSeN5zeENJ1oY1kON*6R z?DDqov)>Z+k`XPlI+pI5WGXP4<}DAjd`3Jjj#!-IJbX5rcZN^32{U|H%F|9Xw^IKwgoUr*vPbeq zaYHu|7cb<`N6-Qb(uHbAT>I)4wVH%bcfT=-r)3f+f$Z%%K(WJno z-DBY!ox(`86VvUqyDh+^bv?H{PSe;bjod}=XU~*C7Y?t!gg5(N85j;2F2^{2y?|U& z-3md&l*W+pc$MCkOat%8)ClvJh;IXJ9Sl==P|pKMYlZp+z>bAMRuUt?SOOWf9-V-) z9V(O1WLmHl@N=mHPyNM%>dkXv^mu!Mzt6ND=nueq5`;85g~MyuXB| z{T^N`gnOnZ1g~y-r2!~~)TedJt=5v1JBmh+$~i0X#}UHz3^x6AaepAy(TTblw_W@o ztMu_~WHoyLl0Odw>u>GG0D>OhE^U?Z1THpIeZ}nOB+|$N*W5H?d%2w13ay_p#ns_D zUh9vOOu((H<>9sv=2u^PB~Ud$WCq9Aa=W#$3akOM*>we~*0BxI=5L7Jm-JLbRHP-> z4t>U8oAUid7dy7Ngg%j2`+ORN4+ma*%@{fqCviZs7Q=To4(fq6{j{?3yuyvdsAK_7 ziW@ToQ2GklThqVajQv6sjKQcjN2X(OO6bbBSq>o2?KV4#Y9?`Y#g3uzgFsY@9H&|4Hav0vltP1EscVKjp8rpkA3LzM z$nNj>#{>q{1vAMsf~Z-huUfvGVHxdj)p^669h)RKNXgqBI>5~lthNQ)`DA?tivj#$V;@^xE9FPv{0i5qhq&7{ ze$c}-i%TGq`p{@S#e{kgtb2zV)FFY5_K?dM3CHD=t9y1a6Gh3Anz*nsHi@w?Hb9MG(^E0fOYqjjBJ30y#a+Hb{4b84I_8A9=d36{KvOTR%&Nve40bKqj~ORPK=h>UM;h4j6N4OlcYM5ONnTbbM}u5 za@W&(FYTHB+tLQ=v@twWi4nudQGiwDbhfQFsBQrNv3q>%%h$ugLCfaP8>s+Y`mT?Y zGX0%l+2!B#l&k;3(`uAvVt1-*l{EX1k-L{^c>kTZibSZC?6Zz(LyZkwNw`EOk}}_# z;)gR`>dIvWQ=TcL+7bwkLuZ-x!F~G@2H=_-yhxr0|Hvi3lg#zV%@V9qB8r|EW%SwLurz+Q z2&31j8>9wHkW?#Au&1W^*#Sp7UWMT9V>^p~S(lU5@mk?Xg5?^7ERGet2VNnb&T;tz zD1b04m@H!{G+KbIoYkR!BX@+_b~t;vE#{=Kn$XcY&2R+La*}@T0xJr#9Gqfm)N5^? zvHI*i9N9=}jK+D@4FmY1Y%%cD?mXL3OLv=8TX{LT~@5p@`c;?Fa|C9wo|YO36rGx3X=VEf`vYT{L<#rf zx}d*Ie}R)W@uLD>5HlHv6WMXjV@3gzrveHz?>vypX`K*aZ3O0*9usNg=^oX}f#`vA zjbdo6$>|K&b@u1#JIsPv5#Vn2!&v=RqS}u|O+pzVwv~6%tF%A>cT)iwgrihSYb#it z^Ukw7MNEB(CzF#~owsiSCc%_k@BBXPIAYH)XT_#dg-e@v<<^i0U5x~I?Ajq2JUq4? zn`Lsa2orE@Iu3Sl{_}xH9cj$`ixb)Qr`3iiBM0SQB!$Md+wZ-#erIW>Z}z)Q@0cO2 z{oOW|1G=<>7^IzHwNw8*nEugU+U+n8D8=|+NI3*22l=dU$MRQwg7bs;X*L?tOVAC~ zvXoQ{PE*_5N5MbuW$9a%+W7{#n%vH*-}#u3Z&FVMb2+> zAT5te56oe&R+J*l%oCat;pO$w^w`i(`V4W;2^@OxIhPF?v)S;)Y~RkC*y#`<=%IUx z)Ew8{6;jXltOz}1yzRup?!HoCwVa^jqH4ub)1nesZ@Q@%Xn?zI{uvKp%D{;nS8*d# z6_T~lHX`*lZG2z#p!fYl!xhk-=vGC8mEb0N)lII|l{-I@r&Q24{SCMckft<{T+9O` z4SX*%@A7d`&AI%}8VPh%@os)&M)fVng2${^$<;OgC$4z&Hrk&bt`+0H`_F2;c(3zepTBkn;wa+p509(06Uw_6*!uc-dZ`lVtN&Z9 z9%Ljzf&?B(M9yHi_oyu4*e1W{RnpG7OL?45rFruLb!xdzO-Nb+Gp>sr*sF6QSEkP zPw!6&$cjOpLHyUowo>LLy}Xt!JRdTSd~?}-$HXacbr0o*G7}#Q>zdoy;?y1b%)8$K zt{5ZdB443Igj(l$d-itM#Rdz)I?!nrQ>GBw*NR|7ass>&{=;c3zCHWXf&Hpvr`Cp- zn+#5@%Ih_?HIFNR4SLL`XI@O3u(4BG{Xv0w-Dlfk=HA2;%Mlr&Y}|W;Gn8~sc3fN9 za5R{tR;ixB>3iwm7#GK+Y`unEJhbWEU(yYPm;8OZD|C3g_LzQvNcy7VpjZNlfuzwR z!l`)URy;=~a+DDYV_xK7Ai=q=Usc<=N!bs0R_+I%-mYz4H?}V0{Dw`no+4teAWLMZ zg^*QSY4p1b^+9gMI;ECy1TWNfWD=fSMx|&}O<@>?LOizuN@uu$MJ!kZWbkFA^=N5( z7oYnP-~1ui$_aGXG#55x8u#J!Y8jz?(8WNThe5A`yk7bnva(yahmCW~d|YG-xA)Z; z{FF@@ESo`;?Ia|G1e_`yf z8O_H36igI=tdc*o(s>DC3~l4M_ER$AS%-soBqX>H@@S*D2J6xm1#Y!|0VG>pSp*Wz ztRTVY%efr|fexe;BKXVv6FtUbgtE2}F`kI@4vM8MXALd9E6GxF+bOW@(Fka};EQ2n zCrHEG^7|q}WyDBXQ}9o|OTuTR^H50BG}?6JO=3MCUI6rD+!}aa59ix)8?*Gm*XAPQ z2J4+DN$t#yJ*Ia3U95OY<~)4h0)4P`Q@gcjc7otaW( zfeK%lmnV>xKJrp-KtxYDPi6yU`AuIly~bwAiW*+0WyN%)$X7~2^0vLZI6-65b`;#r zNf=;omHpEkv&#{d*!Y-7U)HF*5Mpvz=irjIF<6+-e#KWnR09<|r+)A$dP2D;B<7lfx{g?sgrUvVb4rorWIu_`JeO-2#tYs@F)m zCU`|+b8ilws@iq;3>)airr=WEzSz8t1LwFGnugQDV2SgApHs*F0K4Qi)HK+|0e?U0 z^!+jhguwqxOR@1V?&l1L4U#r5c_*Z*&@U2tt{rR(|}faeuZe6 z!T$8;`-dwm*O)DL+hV{cVU*Y1K%@|LQ$HiVvmYI5Ss?WXI>ab}4ZBEYuJK3-W^;oF zMX77Bey$XzXe!&Ag{BZfI*yx_S+9opqfNRFK4_`lSrR!aXWsVL#Zk` zMgdeq@Dqo++Hwlesnpax-i);P#{Fqlo0iF`_)-FF;mg*V?F-qD(~A$s1t**#bPy=i zP_X2Q53xVeo}?`FU%!%qvBYhX3~9)kVhuYJbpI=i_(1xEfK7q>Qb}N?kz-1DI-^-Z9kd=xqD+nabsiQ~>qX zy}Ll&y8ua9TIEL~zmkvDYvNw%&LFpTtAG-r#NQkjwBi|bKo^t5Ad$A`sx%!4uDH8lgAVjs z+JPf-mjE4M8y1C=MYtp;mKXp!J+Uo3tl`t!(vw!;l~rLGGd{C6(-M;vK5cXFotmT z+4r{w%>36roPt$VEkjs@r@S;Oyp+Zt&ymaQGqQkVDoY}5NL<4VCZ0)CkQIzPEIf;q zB_4AUwkvjR?`>|Wpi;LOvLMVo>!hD4&8DBB_iI$z;rb1qdtvn9(T8h}H8e44#_&

!5o^j%lc$2V z>Ge{LqtqAHL7z)t9!7pIgwWs~+xrCys|B?sj92u19kTj<(c9MuIs~vV(EOlX+K1Mb zk35S+Lre;DYsd3oPbu)|^r=o>4Ln%r3#|$*3L%j5jLjY+qMWH4(LSSVks|Knv|1z$ zU3p0PIm2?NB?q<6q|2v7vqugn1rEm+yT66H^?WC}52<^`w*`)INwPa2)#Pia>rQ z!i#at1`i!dJ2XZq75-b6_gPeP;@Tz~Y39fb6xA*Ru}sT^KpQxXu#8wUeEw4_@O~(p z&|e~Kd}xe9jPTTBF_iNnm1 z2R(`_#8n)_kOXNIG>CJ~l-kP@Vf=KH0j*jvuK5-2gd5o|0(QoLnl7qw;{^gMg&5il z8?Q#axO`d+G{F$g6*4?oWWi_RM00mPkSVKXW+2X}-tjqJM5gM(OR*8=iIZBev;~hO znVGV`5LqIynE3}N+&7M!jZZJ?-i6P0M_lpFXMC9WF?jW-%es$L95o26gVEeOcM9tcs%KiJsM@qOk zgJu2mnbC}zlFfj}D4qk47bfF{Nw#TJn0Lc9SCcU5LHKa6m<#e^811NESPw;6XfiW|{+(>JtNdC}<)E;Z+6?pp>1TjTpqo zn_E>A!sr36wS*IsqiwLf<2<1tMbKp#BcIFGnsbCbwG%H`h=`_^W z8mF&|~MB>BBbm$bYK6AA|>Sxk7Jt&{}A=wg0aSz=bCEqA?{{ZJtGdt0caTpDL` z*DS>f$#5o}o8@(yoYs|$k7Z&E*9$voK>9bh2p=!t3<2d*N+IUgZ-)7D4J2W4b4RWZ zblc>ygFGKJVW%bX0D{iK4Fa!wxVXtDal#ZQA($F_DUVjvx4)OiQbfDH`{_q@1x0J)9pTrak)X4MLJgf8|pnwG3jg4 z8^~{c&n(K)1Ga*!*Lz_aY7t{(tADWbILy(#k~q(EL;9>RGm2&QJ+;x~B02Z{R!52Z#P zPp;RRKELP?8Q3M08YD?CUW{c(GxA64>M0M?(PHesN&I1L5%dCFn)09yZjyr2xjOg* zA|edWlfq+u1ZjKqYC0gi&WxmClxLC8KM1@)Hk|utPP*f|{!um7WJ;W73YA&|7tb6_WzHm+g% zY^@48pRgWm;~iz#=1vb|eRgyLS`7kxZ8ld}fHsb!lV?qXg$fc&@ykszRfHg~aVnbS z6xm?cT zJN}SNrIFe^w#fuKCWL%2CFFD6lXM zX}p%hm5G~+AurlGH@mT3)4+FkZn5t%%iDBoYHpRqe5$aB&Lq-ED=A~O3i?x*QzS9j zVtUb5mt-^p!EAQVlmGF-on4)fMTo_m2}%sdkSBI7vCHuTgDY{)#Cwz7yE*6aa}dP4 zQ7_#xTJ_GC6IyCiBA`btP=Vcw1%vD0m={Nm;4g6=bV#auFMG}sdC=IMtUaWani zHzop4yrz4SfU&y+%}hStytYa#6(oX?7xks4~&OqCb)?sUj zF|l@{e#DmPHDsVc*8(YUbzumt3ATXz5`LguLr?=6A6N}`2S}i^0N+5j`1xD*l!-qD zSf1YST$1*WtfO2{^|6~FjuK}{rprwX%$n#*Pi8CHKBT4k6r}>ur^ac&jCb1`|GhAX zsv+wf$nC{}MmcmBK}oO;%obkUvbn4V2yHP zSr}G|wddI16MdA+BzU+X{61|E#b0B-1FA_#(2Rw|lSJzYTeVSOIgJQmoVh)Z$&zVn zAVU@ddyTxX#9W@rht(F`X2b4B`1}nx*-yyGy~|galp$Lbu)(JX1q1# z%Cl)4R zmpv5Ma0Q1e+kazcbo7b`uKI%J;Ht)@>b=wsV;m&oarcAE`98VRyaMpzTHUsoE`zBY z=Vc~Dfj8_GJYKBdRNwMc+yTE(FcqR8w*rxwt98)`^U>HVjtFVP2)sH$tqTE^C^!}? zicy3q3!rMAyKXz#{u4WBKDxk}IJL*hh58j7@DMycLQ)%h?Tt3cs(0}$_w7vlMxgs# z271k6rGkh!`rl{pa|HXP?jSAydqE6s!aV3NNdG(<-;(w&pj692pEyiaDhdJBU?Qt$ zhjT7ddDYCO*!K*MLmQ51{QK9K+p``uE)43gKBiIKkq7%@4IwUx=mUU7H@vlI^)Wu> zc5EW?N_)28V~L_jRf4F8rmaMlqs@K2V!OUXK++p~*jrN~KSj7wn|Jsnf%t7BTvzQo zsC54P)zAbO6hVS&$zqL`WcRkHpkm|-kU;f)N(6ukGabpRPSO0%#4 z3~~}FDULX;LhNT(uzrQ!CDEg8k>KL{NK9FaU{YVNZ4b!^B9{d`1?BE5M2E zT;aeWm}uexx6hnmZM!DK&;8=`{d{`Jqo~R=zxVr^6SOMB6X!bxK6bTeug{Rm z^~_Iof@@$HyY|xdH(?4$PssPjL{#TM5YyJ|KxBX5pD&shAkbQNZ(6tusTuW^2vR)~Uzi=Ub4Q*lb8p+%S-QCY<@G*k&-CD|8AU0#FoVEy?aQr;37RUdRX;c5~ZA<6wcNN z0(BV&1;Rzp-9g<3ym{_Ja4Ji3u)zXCZSU9pH70cad=qjMa6U%D*-2UED0#KVHPr+A z0et83VCqze@zSp0H@8@rK?Zrdut7*M8ZUehD`RS?@HD~1A^X4VBi`MB+#Fd#7=oD! zHW(Il5e~yYYgs=gDkR7N|33i0#~(Ie0m6yf(Qcq*i1)@*w=|rc^yCGux9TC{_{3CX06j26Z^{8M0<)%52j^4kmvO=0$GQWJ``!cZiSX& zt73&Y$8hv0Sz;Gwj5#7w-h>gvDRksX*cw9mZik)_4gO`DjZ{GvyhVz?eP#nf+V`cj ztxHAaX-ve^18^7mMcBDc0O|F0)w_nQPpdY6k1FJHQ?`MU%8Hq1Qd`Vi=^0b}+pX@E zywwLZm0z&VWEXR=#BYJP|tr6q+_MGZql1?qv3Rm48VVFnOr$nlzRS^^4qLbhzVY85^B}4eY$cf5V^F-_!`G%h$UMzbm zIlV@GgY&q>is$OAIjEk86GjjP+9lpr{Fu$i?vVtlz|U0W8Ti6TmU5+$K)4qbY}@!J zuT3+Xt-d_8YgGZT#OQT@B~XW5I+@@W=WoU>jXT>o!}}L?j zbJOjNUUFG+6{!y(Xv(?lz-*`01EK7vGA5RKGYTTS@PG426%>1Um$<}gLri_g$pPUr z3Kc(a!#Y^IdaxT)PrJ9ypQ{mNI}qZTp1wmv0#J>}ZR@yB@2LE7H2CR&`BCFA65Xdi zI+X!QxpSZ(x|(e=oTT({1>avN5Y%AK5*a@Mnq@s=$ym-Lgj7$MEi3bZ@R4T`tRN@$ z$Gt*1-h=09?fA|`vS_{T5N+t!7r9nUEvd%om}+5deV^45sJ`($1i(;X(Nh9qcKy}> z(PL%GBzge{2}2?=Xfw(bwg$Us520?dhjT~7Q6(a|;{*z8*cg2SCaTNB z)3PeI4W2nCM^|8AYc$|g85nvEb9lA7XWu7oKM6HI7`VnV$c>^=I^z_uq!L*fv9@%9 zUJ4<4X$`ZvMR{j@=-+`y*N>*KghU$;JLyB8Q;T(Fx{avEELV-8;Ah07 zJB>BN+wcSm6AAA1YstjBFF=S^QB1BJ2*udwDPfR!;KfknJR zbTHxC$*VLYT?W1Sl~7QVg=|8^Hs0JJV>p*BzPZE3;FWlkn)Xx{SH8_U^}b@D_xD)7STc@<*V!23cYGzITu2fUJ$aL&y1H}0Z1$-=stR}WQ8 zPY{#BvrUFx!jV(L`gVTv2y+ruRx7<(nHC8yNl14{MTHePg3@UG&RBWkbYa=w*N=zu z%4nBwE}c5ir^kL2*dDz94EYZ++a*~}s_yU^{}d2?0&8fN-OWSQKNwjx18-&S+G28g z^`)@CHw@p#2xI2E>^=vU*`A{cP)99E_o|4yGkYyW>qbv@nGM)Ndmp!N&u$UBPsyAX z*=>ucBz#kDHE-$mpDR^omUSIg(5N8RW{yfQ$bo%&@GQBWX?J$;&gnlbSpAlO_@VAj zVI+S!%Z}a7mC2NdW2;Q3bsdZ^Q!C$zW zR1~@l%N7zG-h2Ez?X#y%$XcJNg)alvVy>9ePVISgS_$O*9Mevr?(Az>9TI%Bq0!NT!S#Y zqhLdap5ASrKy9sG2j4AIQ;4^JqkX=%%VA^lh2G@XOfyv~b8JidBImb6G)91vt7SCi zg)=_=nT`jO$^gGq7J0fJ&_ic{_!0N7Z`ztrjnA1(NN3D}_l%UEro_tTG7zKvvn~Kn z1K)YhHpkJw1y!J%Fqi!8QHL<^`1e`Ig1JtsJ3iJo*J*Lcn24908JA!* zeL^oge>loLEv!IAmI@VCP3X5s<_`qwE@--2%s0cVj>HSwOW z_9f?&{cR|l9dOHJ{Grr?wsAtCRW5TTE%Cqf7MC>;bIEW&w2PnoiUN@_MU61_c|N5L zjdH5OFBwzhK_zhCK~vn)CD^ReZ#5;(T!Mgr@#{e}Hvi?YUBqcE`g*$qtz}_k%p|{=Eq%DO7ha>==SfxiNPYm9;O_&nhiXRqUWSjlG}mE_Wk0(f!KuOwJ&$+CmD8?+8&(2ub6>E zn9+_Rv?@4qM6_ID-omyK$wmEfc3!B)UTA!Qzf{_4jXUQiP3ru~YY~3sy>;P8)_#-s z%rf{nryBj@8zGX2g_dUpMRik7{x^?#N5{G+vBE2lW{7GKEvYqOTsf9QeuvMJ?gjie z6`sbYByBF0YL_t~hC)6Mlo#R!&71xU>+2am$mE0mIbrn6s&uD}evsNe*>%CorzBVH zW{@i7_;pc?&K6pg^Z}*$)me&({0SFX@-{a4T=E;oSH#54HO2DzSN`LVh^3X+s>bP+ zuLw+#Ms@%vK4)DGBNR?iMqKdHScdgBvNWv2cGE7Xp~{8+=jht-WE!4a-;Z>d^poi!fhq8GwsP6V+^ds|b$Pt- ziwIK(u!Z3F+q%dhUug%O_Bc>#MuqLYz zWG4?%ZpKlgePU4VAh;F)13^~&>TP$w{RFjRpkZQPRoES{EOxbY%a5)*}q@&Uv6b;bI%_!=4t@= zGcWj5G7U9&E$s^o*p3J`OCuZ4nvRYw-|01XV*1q3|H-4^(~u3$DI6gzDJl=+v}Yxy zF@_cTDyE_owy;UnwjU%{OUE39%kW39gsc3zmfQs2Ob{Bv%5@~G;aQ$!CAVJVA`}Jl z)PSJCLLS#7JaLH>3khS!;K}sWzpr(R)f_$+xAxO1oDDC6#|*I)01{5ht>u>BhR%=r zPQ(H#DG**qa7*i>qDl*(;A*)!viB4P=MWP)GsO7|c1jiWhj!xce~(E+RJV-R-(Iw7WA zD1E@j4pU-Bd_*O5kgPVzcCEf~=ByTTAK?hf3bFae^2>1aJ(^bKargOclq_PjdU^1o zO)Fb~53Dj}8K^{Y1mxPQc{it}R#fufpW$9-%<316|I(@9DL$_9B<9gjahxqXWFLG@ zJ}=Q}{)|A$fWlT~!?Ajyy$j^q6ZlE!eqr^%5Y&yzQPKg+qTl}?To9zI)x0z02+kDY z2f@yaznb)BlPQ7b^<^G}zE6!wU-8Ex(R?{}%W0TPYN`C6mx49R0(TMPp7g0(e0gAcO-)B8!OthlXn4}MMen}s7kqdj1!Ffze_ z4PAw|CW5FVL02&z62A|SXtv=Ioreno?rQg1{aq$(TD{T%WB3j63T*B8IQq1vbivXo zJf?O!h`r<&{n8?LDXF6W7B@Sycl7Rh8wNb{AU6l<7N z)B8UJ1Xs#*kPXV|1|s1$!fE&hrHBV&6S{!4twJlV$<@6%bY-_2qfwTy10oqY#wwIk_L8n9 zcWILUC(*exXu=1~r(YrN`)dH#@x_i!xZ77!BrP8^&0>xzbA0=bVFQT~kZp5p(XB4! zDOBGY`J$@4*tt-7ntS zNpU#T=K)TOBmmpX7Cr|G+Z0?oqEnG)(yKLh^|9JX-$sCDsL_F`je4ci1Pz)Mau>*6 zJlo8x9}GmCjjkd&?=&yBc|Qa3+&SOH?DA$hSZP$j*_nk14BMo z(x5J6t*}zOO=9q}?*YyqhnhogR45fAOZbj?=60|`sWwduYpO_-~CyWf>YKj=RlW# z3!m-zIMGk1CzP>J=(b{mOm5AiCK@=aB!RA9j^W5ZPngi?#7W5Fs)TRNWUZCM?@JD= zHe&ekMACAU86LeYFTwV;!r3@;O%``PGvNn;(qm9C84gU>j7BUUk5WYh8pOHKS>ZOB zlum&9(@zx8$nxaEl$XUBXTh1xTM6bqBa^7EyVF%gOv25zVT$Ds#kH3}mZyVAEFz=? z(Wsh_Y()`mK;^Uw8`S-t8TRN^Aw|HLs(3Bcfu)8u9!N6lVP$7!FN$n1WiM7jntB~& z+83H}qUBHb+2x@v(E}rcv#hrDzl{c0$S>L&rU-qZd&Pe#H)kiZ$&C=sn4&GMtpF@U zeNWx^XFrv<#~`MkfY;-<8(RTRYkGy>ReEpVA`GtwOjJmr@cE#{5nCZ&2=h>3oPD{R zU=;Op05;E0LVo|D2EnGu3-hQ~V$@~A*Y^!dLugNJaK5(cLt6DQDx1g9NW=wh!Uv_Z zclZyQj&rF;K3{o8sn4m_tz@0(_Dx7z7d%il^^QhW>EVIl{^F^x z405_XpB{HOW9@gkTLZe-bz@pnz*HgJ*6jJ3kJ(3iW*Cgu_y84*FIiyW*pyPMCI6n>oCkok{!w!3i_cb zIG2JtX$>X={Q3Lgnr2;r?`B1bz*8%?=k8eGH51OcD=$6c=;uC+?e2}uFLAZEG12Oa ze0ydIh|Tt$Cchb66l}RSq zff}F(gfDzf{PWv-rp^?J?j+ZR%1V=>hp5iqG^?%Mk)oxri$F3l;Q3&=&}0-(bBMdB zY=K3s4uEE|_T>1_@N{t9vgt#8f!>|^#bObZowL2WL8RS>3XP9&$qGXololA0-mZ$T zTr%V(6VF=#ti~nRx^^TNw_DVY{Z}&~r>94LL9!4_6QircY&PX{0yv*2wu_hFCCJ<9 zhTf&LjhINLW0h9mju=bp3itx1cKI2JKAB7h01H6)eX#h*3BZeACnLVr6m+nnZls&c z2|lCE1X)k>>g14|7H!#JmryMwY7%+|40A0@d2Yvvj_rISOktdO5%P!L${%mHvtVrCsza&w>sxJ{oFhUD0r*TqmfCXkwL0?dkhsOlIpt-_Tq=k&mmCA;>zJAIv^!+FN{(5L7tKje6_2zr64m)mEO{ z2>3(69!{(}NZBHM$oYBi$6=w(EI=U>%DLu%P4M;A$v_K>)(>OZNUQfA!0gK)4ad=r z1B8PK$tYHW&+AMYpK*egx-oIsz8CsiW(dov7HQesMJ7g?k1F z1N=eo20+Vi+fxb{t9HR&)p7XyRVolQ#DSv<#)G{>9nh%*B}*2=iu*DA*vPrTf+R4p zky-VuS)hy*YGvej>QvKvi1FK~5029vnPshM?Fp$Yds5`Tld92Zn1I}SR*`xPZN~qd z0EiVk7^BVApIAKxresvwcs5NAbzyUxbdk4Y_hSr7@ zhZ(rrnd(GV`^}6>pn^AaGFR2G%r5x;#qENVBPnWD0%S3NvmvK3AerNCTHA30L_qaS zI!&U6spFwH2FdKSV){rEw|JJf?%-9`AqmK{R;#D;9P3K`n8jBDeXO}6AwX*c3z+>V zEPH4NZ2jbzFC(0-sU3tke`7Z168rMxO@CDU>>_ZU&GK00os|ADL2|ma=`x8{bq?QD zr!gI;vsL)pzR;>6=(D8*auilHLT73}L8*d4k=D{eVYnQM`8}F|5iaMw*A`i@q4GH5 zPlx+h2hkhdNob)Z*V9+?|k3%t@*4`|!< zT5~*o+Bq`Mlc8u8t_80l0ovxDjRW)74N_s5K$8Ya2BRA$x;s0bN~TuNe$gQwl*2wi z=`C_YQq~Cen;A+$7o89P&5PQl^5Gh`cs-x3(=j-H3%0g-@&fJ zq)ZJSDlN7!1T&olmzGw3M^$9qe&E#Nr&ALgByF#RJhGnAn~uNOb`s!dd-!qAL6kx~ z=7|%y%onRP>Fk)=i=LjHx!SL#KSgR09y22kHQ+aK;%Or~s5A>CDI%DGM-{c+mgIp- zPiss!C+8c3tac*bc>jUJuO>g`IT^IA%m~Va@bSk7j1k~bSUVbGDi(|h!1tgd-zGzU z4*)R{Bt5l{kKJ(_dzux?;D$#P%DT1&C&9z}ucTI_m%6#|R6vqtN&?i^OIVT!|NL)9 z$*KHbXoyXRre}Q$C^uz;N6&pS9!>vLhC(uC$Fw%a0d`_4sHgF7Nd-I`?%|(}#puZj6pwqzf%7f<@40HyHBKeG1F?`nIzGtU^GoD-DLtT0_H9`lhzoK=c7G%cP0@cQg{Z5=< zc0k~tmN(YgY!rqSMAwQ{e3UZ}YXf9KY z9`<|FcV2mCmQoG9y+j?RweivL5onXk7sb51N}8-~k+?bce*N1ya)ePZP_n&#F6TIE zPD^N*xu!^>4NR(oHI22#;cX`L1DcM*>z;I^Zke5jH1M=aa+_*e?Nd81<9Qe&DjuG&OAiTW(4HbMKLCz*GDjc{c+-^yl2TWx#Ed^=60;BF zK)DuED%YMsYu$?5$QES;rp@!TKxRQIWEs67T{1aTPH z>~FGm{W#ay>ap#2VG=$XoXDokMKPdeN{wBp&xqGado%6#220;#us+J6p=JB6 zzX(UU^J;}Os#TkCWK~cjaj6w`XPT!}*uhm}>m?VuT@T$dRMx@(pgq?q)M7IN2uJv7 zt>CdYHt%hf56yw~#+k8t?I}>1sWlM(OkoY8ADs&%9Hmk`Vxk;G+#6be49y`y{XtV9 z7knIG{`MK>@=Zq2@j^z2zF3Yx_?XbYN{TmC@BK*Eb>W9xkocV6lX*$Z77jLr-;*v3 zKm#y;{^GY(2|B#xI`|{dTmAYZY)6^0QLtr5R%p79x-zbA5QoI4QlmZ5}Iod;cp-(w6k8wy49!kfD--2d& zg2n*H0`1_=g!C>2hqzf?hGUKIATmDEMQUTB{L0?(wE1Ck0E>aWvy$8uH;Rod8<&cA zn=>0qS+u_ow3N{2cY`%e7_pgt;^QmpX_2r=+V(#|-e)0eVY7GhKmb;N6jhRu2pXR4 z>F~T{9Pa}AK|8{4PxeO={|odx zOOHq*mlj2O)}L34ZwtFA=)nq%$%K&B3YYZiDu*}(3CIUsMs|hQpI+m-jBdn{Nn2aneYsPioVduBVl z6z0PgT`Fzm(&Al@A5AyC9k#xd7}RALNX$1VC8Bh0zZulYlHw~9<1oa8C*iIpP#9*U z6)`1!TSSXr`O&lf2yr(oO#Vgv6*XYTo~+nD_)yz_NWT*FCXbPHkypZGP^ zQ$~qUh&J5q$XTFED-|I~o0S#@7k1pSTcY}uFye@n2>ezoD)GSq1~fUWh?e_-gg{ue zMSI3-t3mcydbneVuLq%S0UCfO)O}WIPHAcah1T>=l3g6A%0D(0lsEPecAKLFgm9#e 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̯B= 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

(f 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 literal 0 HcmV?d00001 diff --git a/MikroNUC/20260501/20260501010001-Config.rsc b/MikroNUC/20260501/20260501010001-Config.rsc new file mode 100644 index 0000000..ca88423 --- /dev/null +++ b/MikroNUC/20260501/20260501010001-Config.rsc @@ -0,0 +1,4442 @@ +# 2026-05-01 01: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 \"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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs true;\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 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 :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n \r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n\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 :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 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 \"\";\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/\");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/321/3f698a51\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:45:02 01.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global ExitError;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$0 (\"Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n \$LogPrint debug \$0 (\"\\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n \$LogPrint warning \$0 (\"This system has low free flash space but \ + \" . \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint info \$0 (\"There are \" . \$CertCount . \" Certificates \ + with CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :global LogPrint;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\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 MiniDateTimeStamp do={\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {:set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :global LogPrint;\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint info \$0 (\"Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Creating disk of type tmpfs failed: \" .\ + \_\$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint debug \$0 (\"... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Making directory '\" . \$Path . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={:set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]};\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={:set Path [ :pick \$Path 1 [ :len\ + \_\$Path ] ]};\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={:set Path [ :\ + pick \$Path 0 ([ :len \$Path ] - 1) ]};\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint error \$0 (\"No valid RouterOS version: \" . \$Required);\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"No symbol available for name '\" . \$Name \ + . \"'!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\r\ + \n \r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\r\ + \n \r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Setup Global Environment for scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n\r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#/usb1/mikro_bak_rsa.pub" +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\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\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\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 :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 \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") output=user 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 :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 :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 :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={\$LogPrint info \$ScriptName \$MessageText}\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# 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" +/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 +# bad package path +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes package-path=/tmpfs/capsman-packages +/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-download=yes crl-use=yes +/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="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="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-04-30 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/20260501/20260501010001-Diff-Config.rsc b/MikroNUC/history/20260501/20260501010001-Diff-Config.rsc new file mode 100644 index 0000000..b8e42fc --- /dev/null +++ b/MikroNUC/history/20260501/20260501010001-Diff-Config.rsc @@ -0,0 +1,289 @@ +817c817 +< \n:global CommitId \"main/321/3f698a51\";\r\ +--- +> \n:global CommitId \"main/308/f5b1bfb4\";\r\ +820c820 +< r: root, in 00:45:02 01.05.2026.\";\r\ +--- +> r: root, in 21:50:02 30.04.2026.\";\r\ +3051,3054c3051,3052 +< \n } else={\r\ +< \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ +< ateID . \".\");\r\ +< \n }\r\ +--- +> \n } else={\$LogPrint debug \$ScriptName (\"Already handled update \" .\ +> \_\$UpdateID . \".\")}\r\ +3059,3061c3057 +< \n} do={\r\ +< \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ +< \n}\r\ +--- +> \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ +3063,3323c3059,3062 +< 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\ +--- +> add 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\ -- 2.52.0