From df7b03cc1024806e8f5e3f06c4eda2bcf902910b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 14:20:36 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 14:20:36. --- .../20260515/20260515142002-Binary.backup | Bin 0 -> 242717 bytes .../20260515/20260515142002-Config.rsc | 3412 +++++++++++++++++ .../20260515/20260515142002-Diff-Config.rsc | 115 + 3 files changed, 3527 insertions(+) create mode 100644 MikroMaster/20260515/20260515142002-Binary.backup create mode 100644 MikroMaster/20260515/20260515142002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515142002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515142002-Binary.backup b/MikroMaster/20260515/20260515142002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f76c86e3ce2505bfe3efdace84f2f4c42f3b0eb2 GIT binary patch literal 242717 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

a12EHa=HBlhQCy4#Ht(@ zvsovtap_KH8iOiKE6aRRB}ayPB`&2Te#FZ$DDqYtza@kw@o?nw2 z4bZe)wFYkpoglR(fI8jauOCJw?Am&CqOzIr-B<9+%rMV~7%4{$VDkbc<1c#g;h}Q;beU-uJ{EPj0K?H_LxgGbns{HJQ_|Ye%*i+ zOAu;^?b;pEdgjBLLhCA5x2Mrn%G^vLWSu{2u0#LIGO%zkH(iUC6-7}st}-ZnhWYrhjEeO?2MC z#D_AOwpx~un6dU^YndQ%-c9tb5Tz=~vMfQ5X$%R)B3hHq?M`=b9OY>Hw~HBQzy?+r zrd8==u+HEb(wCJHpHgKm95-QEo-*o#omNldS;MJQ=|k{@{bz~Ops=^|v#OM$If0wR z3kq_vr_J13EDvGCt3{nIKnb0(uRLaFI`d3`c`Fe*jOV?!X%VG}N{xnN1)Iv>dvSCP zQA8xFA;Rc@$Lf-K+CRwL&3_NE5WV%Vj6m0Z**fE(be5)~q-KCql`JZy4W*`DE&q{`;gGWk;PW)|Jsl_L-kqWbi> zF5)7nRAxAhk%B#IqaWl%qB|Pa{S(2MSEie8+sksyI5#pNJTYV~@WHuc=TQcT@=S}; z^KQ!0HP3CUQ)8!J99{3q$6h&x86Co6G`qMZj>`u_GPQC#{MCi;XX$U(sr(El$n!aL z(K6_H*of!(R4wFMLuhM8baXA$IlN1I-X+O9HM~yxdm*3a_?lrbkJ$3ME0@g0)fw_i zU9t;+r#wHk;)UxcUzI~PEvH_2fCDSs`LLy@pS!WyYkCb--u*vJ>3+0P=%MW*wq}!o zz&(_yPaxN~_pID*nU`gA6qJAI`sIxkkkhgAL>0k70WM3}XRoh9-`b7lE8BLh6+ZM7 zJR24LD+cG+Z5bai%%H$rfsNSyuP*T-9Rf0G$XJ>uGLq7|>V&`jRWYniOjQ!Nk{Ex) zs*z`?9jL&YZB9P{XuDuP{h$>7}wH02p^QfV&%?Sr2<9;^)% z{zCOCEPc6%Usn4>7L%Z$mr}}9@#Mt+ux(C(QH~WP*%Dh5P$1F5E5IjKt)13$m0w-)e6tU* z^Mb3nKvA4Uem~NMX|Ww$;%TR?Eh6iUTE!T<2DFpyYzne2K)kQ2-V{n{RGZn{XL>rJ z{cwS(h`xhyt57e6Gqog8Wo*=3!iRRl)RQR-^-kFS6n?U1#6Xn%p-BI6Q4W%tSN>e^ zpeiRuBnEIz7P*Kqu9;MNRb?Z?!Oe7VSqDKxX~2;hVpzfp>iA1H#O6)&4mjRpQPqc6 zRi2mcwZ&DJQeK0lK0KKcp>RuWN?lyQa>A@`r?`ybq2nZ{05d$UU$G|Z*BL?^o$(ar zbNZrs!Ui?7NQN)uMTuKxluNR#C8(`w3neIyK8T=r))ugORy+xjb+&!te-=uY&iYPi zLJ4d{T>?lJjo#(FHqN^Hit&%ZiIVP>7=>=oqUqoQ17%9?T5B_odrivybpZcA0KjFd z`=q;6341&T!^F9h3npL=rMHM;%NUp<7;Ieq=s3*RxFVyEa>sGf9)~9biCX)W=5~BS zf+GOl{fLfN&i?&%(HqYbo)NQP;A0-z@l|jX8=DX`s`i6IsO^^;w?EP-psK`89bZlL z?_6qJl5giRv(BLp#i^15VMabEN#0Tk9(=oP_{Pb>*l#*B30X5HnDK-&P|P)e&Y4iW z06aTpr>e6l_HQT2@h3>*vdL^rEaRotJmZKbViL|D+ENaj-bWt;B)J8|cFX)1zNu*{ zE>2pE4YtThW@>uvwJ=>3U0B(h-0!3CpvGp5Cv$m?e6Ou_Q_v=NQLJF`U{^x>4*)%+ zNeID_`MvoZz%U@i*stLkD;xXaP?j|8OH!H?6A`PK{(4@`EO`n&kk8;=y1zUaa{sO2 z+AP6Oz@;81Ih!=1o=IZ|v3>p6Ta3u*Yo8Abrd(IEc5wV;!4FmBQS1;TYD+n*;<-9f z-?3<0yvuCH$85PM176VdxwdPt1_$=;$ON^?kD@=+lrY)0Oexg{hK+?1078ubLe|@0 zPDTg|N>SB38>>^lo5#?gY$9qQw`Yqe5A=a`ey5A_|4=(Em3Zonn%1+Ez`s*3>Os;} zQ*wPM4V0BHvQnhahoEjr%8POA6EeqaIdpb>BC9Ao6RL6gZZq(w@h|qS5T!%LJvJCb z*>`r-Q|D)@+BGMrysAP@^%8PQGI+P`2TV8d%zk=?3+iTa)f_G2ZEaw32%H?bD$D!k z%lrC?r;85i4#9{jH1#JhA2HeADXVU9+bhB$_|54oZmBM`szmJ(gVbyBfj?z@bgMP+ zwMK)=_dn`4Fl0~*FfVq9G3O0I&oHPLi)L~Fou|zY-5*>>Qg+>n(M@T{Nf$xs7nTVd zRT)4$33}LlBm90Pu#_$oW~4x_*=yrhp&#O4>?LX*V-@}+qJl!+Yo9Mwn%(NTOlOd7 z^L-L5QlD(kPHf?<{h{E2W1D!pt3`F;`JvbS{#=c%7*arxe2Jjzx~UeRp$S2VmE>!Y z(-GUEx*7ot+4Lzf68s-n$eDycIdWZgmtx?Tx>C0%bwbsTdkPP|)TLNz-B&5pmIj0X zj==T9PT_CJ;ag;Uxsf|v93WOZjvUtE+S!aEBcB^*EGnnwRP=K0OCN*SED)=&o4+#% zIEexOB}a*7wNSk|li~X}1_jxdSc@klcp!K{KYB0&y0+lWrNn8-PFz@9bKX&EWay}N7g@i5>>#~_E0+5S-z!n7< z!zTu>v!U&np@UBr=G`{{-ryl}N@HpIl`UoEj!!s~00VrvNd{2G?$F#~h4usY`a$7X z6K_$brJrczTa|Ce#`CcHn*gf+%q|g0e8=JiFBoI*I)F)TM(DOxR{~4JgrJx3zbscMV~B5Kaw-x-gN9~|ZD6N^AX`k3fs2Is=7KpO>QT00@(_044$pE-S5AiwGr26C zj8u|l$NbF4h=SZ`#Rifc-I!jvj=gfpH=(n%R2{gjZh^^cF{u_R&3LF*ybAAYiKgmD> zM3&N@By&Kx#&66u=EGKSt%L(IB=IVUTs;eiC#q*Lf;z_V(^T1bQ@->fV!e@5h(ht+ zmU#!&d|jmn5d~}+>xMK)479VyP>V0 zg(3wZaO#Ut^`c%j^)uS!^Q~y2g+heZ1st=WKESZ#6c`e$)wsE4j@LKK?-C}g$?{dl zL5aTTfV{h2FFTJW@<}z$Y$~?mB_VoP)?GAtDLLF9w!~2J2f2VLjv}eXvY1!25ga$N zI)xxSY7bx?QMj<%5njHB+KkD~8iNVjACg_HX@`^nLYiB3))r4$Qqfpu&RCifHg=@S zFFc8T=Z+~Ps}aYmrT!4k3&QW1$v|en19!3;fX0ZRFImd4wM*sUwlHDd{?j)wD#ngF z(%OMxM)@86%n$ND_pl##V>efuNgXjtnO0>Ib;R8?v-7 zH;=icVLgU{D|)sb_D5c%=lsjir`vpy39ul?y6S%V*)qewPwh^0^BXnU`6=giA(13; z`%zPb+TLZkLKcITm_O$J6vQH4O5myKuj=WTZMVWmZ=?Bxxe&$Qsr*$E-lXTOSY3&} z@g9-Ea&E`jK*F{0V1XBVqWcvM?^bW@=tk{KJVNC)4p82RXXqK&4@>5OOx@WXrC+S@ zLpY4L#ZF)MYr>7Apf%!es{f(>B?z?Ua;#YLA$=Z(m1gO=-x#y{%X{9?a4PZ3WwKZO zOarR%`j|;F#??wGd{G8VOTL9gV<^V&%jdg(xc|4#c1faH4(Pg|e7uai9ta93kJc~_+0ftA&}S&Jr{3pndI#^L3=SWr@NC=V_c|+R|Yy{SCPJJjdqoikHHMp)J%-{k2cwRK&_0O!*J= z7I^AmhT~$!>`rmaSsxq&D^)z$I(c)qH{JtAx%2P0xc729=Lap0@W|YloSfc;#aPKM z$Z3tFlK#jHQjt$a{vj^ncPkL*NCXzu1*m=1a9Rs-sIR_B#!YUR1I1w=elSczX(Csg zCO5E)+-NemQyCixgoh7e(9~&izEe{WweE7T*m^#IJ<~jxGy<$R#_+0s|G9#qk9ky$ zzB^@`A$`jLT&S+%8&5j9_0%Bm*+nlx_nrkp^U04XSKK-z>w{lSVrjII3#WoPL& zpzn<0Vd0>!Tkxd}3SjnHiDelXaGeFTP6F^J#v)0~7;^qeK31`_wz{cz*C_q$@ZB?%l^h@$0lJRxFm`xDAS{awT}x z2<)j$WvzC1)`9iWbEvr~*RWApve?V$eTUOYW5-Ju<3PF$>YN%@j_kfok^WU5fkzVBSv{fHqpRD}R zo)frB)!YHr!`9n+kiH)GE;ETg`llU}x1;z#uk3-YKTjYc98d0b_LW~e>I1*4Z_*do z3>uizrj+t!t7gFlSr&sJX3B~b3=dPW_l=|0`jLmozRiyg!HFAJskBWLLg^bD%6nC? zT8+TWSlF3AvN}hf-!A5ad!`JygQ~%HK5&F!r-M9XY;A4>TD^JnSG0z`G_Q;Ag)F8m z7A0X^ya`5fFT319e@d5QksV{oqDWVl{u4Zeil-QiPU_FWujiT^fA7X>fOhj^6f`2B zRJ}#($BE-C7Utq0Q5dasHTU;omXT)8Jua}9R_tnNk<}4RbiBraz2eBU-qfxn$0MW{ zU-4A+oV(D5gQ9*8Y7#pPE6`VEPU`#zCp{r))*)8!D1-Kw)Cz2YIT$68BzPuwChk3= zQAnbeb`5_a8($E0O6Dw>QL=S@j&!C9!ufo#Tu_%US|`3 z>wU=x3Eo4|N@TmPzaBBtfl$tH@CdakQ(<9)8EvTm^yjAdJXm${N-jh8inD~X%*qOj zpal|S@FD%^kZ(FAO&911sUyJ^mk6|jc2V;NkEEF@=QS_|-HDcL5<#QR&3^ldM=YRr zI4Rk2Juf%I|0(6}ldeweqigXhg)V8I|%QpYfh?lsiYTx3Qo$Cw*56hBsu z?f4&eMt^e7ZrYHv@Vv9Di@L*w_QYp*46Lx;VsS3gAeMl1D~JK>5`ow=OVX%cH0C7q zVnWdJQK^9}hpLqdnLW>E-8Tz=q+;O94w`%0fRaqug7J1ax$%--N-{P>la3o1bJuN* z=8W}+tH%|crMs-}+9g&$j3lb~016@c7Kp-0*Gv^vl#*?GoM=o66@v`nyiC@ z17NC(V44w%luyPl6r@De=G%F#a1y>b;F>#rJ0_|Kl`g29+>St41|2bAvQ1a5pgs}U z>q%3-4p*cv^mVSyNZiWg4;DZAMea}Vv0HA2YHvaZv0bdsxqz)XXib`T%9ZSBL zVW~p>Oz7$*fL$QVKE*upo16#(Ao{}i00kK@{7STW`Io{&F# zf=D)xqR)9s1BF6D^}FE9l-q+Qc%s2p3fExHu2zd&i0nyD!;LY-0P} z_U}UJ>6wh6a+h%-1|T{%iosg}BXSt?+2sn(CE&*orsqNCo_gU1_ zE|pSt2hS@>O4|U|@CyAO+DMtVDD51!rwqsGb|{({XVj(i7Ag2xW=#}=UX1C90C+zv z(2wGGUzW(#C|^4ndAclRjn``ea8VqNtU_1w?k4~CHJVjeX3PJuKx zb+`m#Buw@mhR-0ged#BVewo|ll*4^DpF&${F6eA4y07bL6WaNq>rMN^a6l*&;9zsM z08GkJGQ9Fh44%4j=cGQ8OekRnB}^rw?QI%Y;fzVj;vP0>Gae#i%2DG$KzR%`w*#s@p$V**rGmvI~K?(Y>q!TQ5O?&oj3s#+OtH8-&6ca*3Ono$e$rDTYs+ z#VJlP3$tdh3DsttoryBfeK~oEMqpn>Q)PeL9cjW6>U?&KLb1aYyL$h2pprK;bRm|` z-_31oV&lq=or-9Sg$gB39$}p9SJSLgMyurm8eVeY3gkdDa)#RkfMpp^KeF9`LlUjq z?LkDW3gi%+9+{2{#H6WOwXjP`*h)LaL;0F#*I{s11NU3N$Xf`%|B=?ADIYN>vrHm= z2&dcyHJV^*70ZH$3QK+!KcgE)bC>E-f0m%QU?TbcLx*UMWGIb6iM0;6*Dj<=zGC~| z303!YLTZ?bAB?oo;9r%CJ@YR)hc=Hl+_D#}s6^h^$72Ir(dz@_^|@VPC*rY)hl(YN zkX79qj?yS?5Ob8bU2!8+W-~~q&+9biG04_Rgj=X5OgBlpBNLEzluep$?K?(VOHmNF z7jcH`9)YI8{=LCNY`TYj+wrqJJ0^I=9?pNK)pjPJMnK9=#qWO z@z(B~RWaPpb;Qk8kR-O$5*>)Yzp^qZ-n)sPUeW=211ZZrh|?D33hVmm+Bu^%&Hv!Rn}-(_i$Tukno0ft%)(P&KD&@(Uwsm z$XByf-yM)tyHpoqGrB?d!SHQy|R}3|4CDsq3lB6c5tKbNjTkESa3-`9oox{FzIPJJ(4Q zitSRx&Nyl51%+)9ZeqxLR3UP^HDW~{MV{N}c8!0{8$5ooVAf{K_G;yxn!1DNdMLZD z*iL8^&Y`GnY`6$##yLPNFo}x$F=3><@O1#5xeb3x5SvP4f0t zB9L`rk=FC##=-qu#NjYoS4j#rd^#d(H$VcG5b+9$O6z7V+*0Y7r1e63fuKfixJv$g z`?{!6_}~jirGbufBUh@W)oGl`?#o9{X^jK#p$Mb6aO12q|U~8?v+-jJ)mVTkZ`)@pZWE|=k z8{B_&Owg9-YZ0sX8t?z?bo!N`vjV#Ymwh6(a=tIo_D*uxy9TF^K=yI zS`a@RZ$g&Hz;}>X#M-9xY1E zJO>S1{*-`&!E5UQ`a;I?`V+M=-sr4guV3cVmeB)FvPqvvnsURx-NSE^k6C^z>fd&l z$PazZQ>On@wn6I{j~2SZ8i(2Z$-RZVtO5?*7Q4P1|HAVc&rj_iG<;1a8kjpR@A(SO zsR(kD+^YTDJi9-`dyPq!e{9>n=do#ksc-!vm2LQbiZ7KQxXw3|b(J;3MJ6vap~uZF zjKgxMjkE+aam5Y``d6_W^T9~rz4v<>!-{2u94#; znnf=3{+^W2oa2xN>Ti;YP_WZ`q3r3WR+lMs=jCDGJ(p*8UZWyGi1@zaW!2p+^@Fmv zQNhSdpXh!yF@&8KKNQt*cLdSl?Al^VbNn+?K^G)98#TdmL{tf`C5`5eh4z{sg}-d% zComuf>!xul*xp>XaGmEkGP1f5mm{0MSMEQpM)&@U%O$JW89QKab6HJbWxn4qtKWx^q0kf1KWOgnJ+s!Re zC^fQNg1vH_EZ+kFPV`(EIKh)9c?A^ zW4XM9d>JLLYB8PD>PNLLs3=On-zxY;xRLeDL7?MRh2YS>(;vDvbMOZ$@)SsnxJ_GMZqAPHX!mjDI2{%5V zz0yJ8PnVxzh!O$2YJ^Loy_AxVD_Dn;M1Gu};E;G7b;1f&PK8r3YT{O5=s%h`gI5cx z7&t1yZOFdpa)$-lQlJ^q)ynS)>vSzaXYhSqX7m$-zN7-l-*u0gi)P5F0b(SE=5*Rs zLqr;@jR+fDKi%{*8uwY6WvZHM4Yb>R2h`rUx!sr)Yx`N*uC=c3)F68vg z#%v92WU2?JG8|{tS$QFn&4;RI@aPzb0B5~g(J21^5wn@dW za2gQnof=htPFUl@a+{`1bISmtbk%cYOStJ;n3Tee$t)a&D#V9MQ;S$Xt+S?<9Y}h?aW7=B6B z5IQW$Y03xQ306>eH<%W5YIXs8qsi z>A1mdk11Pf`50GY=nuLgp@1C`H6}!t89zs24|anyIgYU0WO|Sl13hD)tDgFfHA!za z)R9|1zH=LO>)oz!wMzOj61S@dko}nAAg=*lyrO`M2?!xQ zg-gbHA0pL6g)Y{Yyfeo6=l8MR<`SrrFeNy@`h-Cp-?*Jq96T$CjR%5v*VP9XRb}SG zXO2G9+@{)e$YGCQfX12|nRC;fT0YwxIkkdNjio1zA|MjLp3z0&0Al9L9!&|Nr_n-d z8%UzQc8e$Z?}!SG+~ewOJvyDg?2uv17cjBHPa(%}`g4M*=0^EreT`UaQse(=k4}J+ z6O-SJ%Q7{IVJ0J(PgEu^#0RIN>2Ze*69|*V5EGI=qjtxV1bg=wybq?inS4S9e z?5A9%HE5%^>0zk^S-pXMra(-+Z>&}&zaG4Ju(*1Bg)L%2884)N5Pn-=IUyk&PN(5c zrXaU9?O)4L8!a%Ez$UNfb?XjfkX4o^3z@3gm++-fF}hYKlm?1o*fAs*|N7-DSJSIC zHO+vdGs9;poq-a>*Dim(7X&)g0wn{^&oj>W1<**kP9@~v^3cfBVp2^CTB-lU&j3vi zgtV0OHVRRl{D>d(5+&a!CgyQ7ULkAe2B+|g_i54j2y6m)LwmUMU`WU1KCS4$Ns&w# zg105$gBVaX!F(m+nduB3v0m;?hUanFpO$Hu-Z8Gz$%gn4wy0hhEmInZ--G$_J!&kL z7p(r6-QiEnJ1}%(aOjl{8K#Z}DJOMLUX(+J&gA0}rR8_qNhj}Nln4I*IS6r&_0qs1 z5p@$-6DlBn&mj4F!nmqu+!z_ELVQG@TZA+=Q3=PB&bEZ0Xzp)#Rvp5hLqT1`O;eJd zAoS#p3kZf_ls?xGPAiZXt-PHesgPLjJzPe2?#`tbY%YALe@RHe+corhjf`}w8gcvC zTXs+?yb!AJZ7HVm;8{C>eRJFIk#N~W9lFpGp8LHNnAi#8kI}E@r)sjM1k05d;;u1B#dvb11WONcWswie$L-5Sy|SH-)V(DP&|K0_T=UGsg{K1cOT2xN;@m z*>SIFQQQqNMIlNQ%1=CaweGTgB2MrkCTcKm%UrWsoD^PB9}WLakfmDcAKYVh6(P~Ll_k+weoTL^dc_%)Q|Zd`Ln~5iRB>9=SS8gdjlju-0nZ|!w4_@ zRs2TT!#QnQykp@|v8-I<%nEu<{0Q;sl4)aXnuOUm zyRbrj{U4}~o7$F%i|i_Gk{&A<-|&p;4(C^%J^)dwCCV@Yb-u3}lqsU>8&Nj(KOTYP zzyxV-W`I6l-UF+U5LF3_LWlnbWMrGxrWUZ4HCB#x4+!{})gmq@s!pzfl<$}46kiS* zt8+I~dRkD5(gzIdJ{j~;8tQ>cZ-n;VmJm-k&!RjYU`^ucHnz zbfd6I^zw*qjj{lO#U zaP3^=ntnxX-sNX{)NI$Hrp@YAiej_FSpW(iF9yq{3}h$LePWZO7t5$rPAi`akukkz z?5FEVw21^$a%=zS?75h{vzH%+*RJfUg72095^EF(7f)L8fOMQBdCd1i3rMBH zeUmwi9?okc^u0YCs*Y>d1VZl-C-KZTO(XvrM9x=jW$Z{Vf>udl$2WS33q!O*V_HpGusZ*jx3{_vm@AzaFNq=2=PXxmC-^jlA{M^TB0LxJ zbLyZap3TqQvV<$uz;)H0e58Pd1(J`qJ5SyKutT?2<6@~m(|+tg%AS~bptdf?3?E|D z`vcv6^WJ87L_RFjQYC$>hgaJJw&#o;QC~D}6EapnYeBXw7j7Z!U&P7pAWe+6sKxl` zH#vOw`M@!!6b9R?6j4fG`HXn$?|gZ|52LF-zGqJ3PSh_t@;josKO_)_G+8mIZ&#x` z1=xwyoGZ2ibB83G0-SygnHU+7Xczuuiedk9F;nv0e-J>C zx;k_>{|}xWxXBiNv~%Qvb{Jn;{hrH4M_P?C=hybj-7HgxdXi5$o9BUIH1iP5$1FVm zE}U6MiN-{gz%L;ktS-X~H@*GSU)4S-+4)8)AK1E(_T|bk>6fr$-3?{MelBMpO=`_7 z;Ch!=v&?Q+aL>Dr%$T;nDqlE5c;OI%ZMXigU{~%5G6IBO5G5$+Je*yvWmictD17PW zl)x|$8yVihyF>%P?Zx<=&Y&L)CDF6Wg#I`sqpl&zG0G}5)%v(cpDEb(r#TJ^nX|z& zl=TJ)ci4e$KO>t6k{cnFv0+;H+$+*HFb%2p@;ujntC0!Wl9z3za((E{ZhUU2DTK8Jj^}*mNp?XtmTk{6L$>9r*Um`A+i7 zUMt9EgnrmDQB;CdR)%={gvXRFm4p#Y?{RqY=+XCOQ!IObA6-2@yL%Fd&bkcxG7e)v z7}YsG&t%w8#i)*z57h<&Ej{H4Ha_MipOg>seoeiTLx6j&ATR5xbnzA)i)D33lpFmc zN*)RH#Z^>VVMD?DM|PtDJrAp(@(iQWAq6$Jw~2=U+Tx>5?X%-**m~g`T?-4|f|%-m$;BVmTKAB?T@dX)I+y$IS7j5Vl9Xd=64Zd`x? zb(Er=%zi&UB=B;B-&BMFsf@djVbSeu~OBRFYV zXG-S1ibGfQP@97oksYz*?+{Src5?Yc!t_4mjOnPYpy|;-x@*!tR&N44AE6Shl=|ZF zgN5Yd6IwlD1Fy~=-Va`)4iR!uj6SWs;jdtowQJ?*T1YU(QFI1`Sz`^1;$5ILr`lV? z1zakO9y@_v2{yAa>CKZtK(QV}T7FVD7{*v^$xKF~{ZkyzEjozSi~yPTb2ALM&-BCy z{1U9XJYPGCaT=xh9@Yy|-C*hMF_^L?wln{6h$<7@{2fw1l}OHHRau(qp*?!~oue($ zXy~X+4BLD`0ctk3&cB|FIa(4D3dwy=IMt~!nGrqVnrjvS9j84I!PU=c*jCVZvk=?m#XUx>ZG6|I-2&Hoj`FXJj$0SG^A5u@Xlf(any~B;n>gD(fOGF^^%vW_ z+WQm>>VrLdNmCs)V(>oDczps%6LBMg#Ll=AXv~*v2%$iV(wX6f76retfd%0hEm3DH z4jCqhH8b=`F^0fVk$!n1_JVN1Cg+V_PP#@03MD+FxRkf~kP)mYksf zM|89ujS&%t@4h)*u7y+bPE(I~(H#+W8CZ*ke?;(IAJg;^n`>2CYenkgmj*TeEAHZy zy(p`l+*O?D{JlzBJDMb9hUBh$Ct?lm($}Z%CNH_zId26yIvFc$$*8&)&0+p4L7-;1 z8YB%Iu&WN+Nf$=-(W4?0P~Ubc1(7>l^ALncK;pFdFs2PC=%+p zW?F0v{j>u0A%Rsk-ypsA3^#X_@HazWF|#!cWMOIAo_N*5zt$VblyotPISp?7HXfEvt@0Y)05qAa)yXJy|nV;$ENi*u|@0_ zE{Q%>tba=YWP?)e@@d?B$_L7@k&Wy7{|!A!rEWNZ68sZxOwn4K{jX=Ok?yyvCW&oEjyDFj+6j~vJqk!J&44$oUSizvEB{H^^b=V}3aVh^ zYx_Dra>tr7oM1#a+xYxTdD2$F&tlt$zlE2S9<2rHC*n1Ik>j5W)jE2T9inVEwZaeu zBFg=_eJaX&z}TT2Bg_#`RqRp(iieweUFXn$!p|}wx>c9XjKc+1R^4L5J@&+7Q)V-z zPG$E;4$=Hb2`it}f{b}e(<}?^g`ZX*+bNMTI}7HIr11wAwNK+4 zpinxv?h`xAT4JkS0?1$)ZCQr%zS)a2H67j{l%?L@l>v;$;t&(watYdSTa;OSHshdn zfZ>iSd-R7AIgF4FQ>ZFR3o0Y)Im0e|c!|cbwnCzncaQ6BweN56Bc=Mp%wd{G7uJp> zNRs!y!)R1Rj?kAzx0>sraiN|@thB-nv4eqAQ8Xd`CcdW1Vx^^u12!C&NP?c?boRXn z8bbyP=cRoOTR%$y`34lMvqn2PQ?=4P5j7SO`JOWiL+!3G(M@ZdW_ERcsD^eghc8*C z7bJJW*ST)j>Qr7a7*EK=4HGISjP5+Fo}nVc%cvxT;wI~2+TBBZ834ak^7*a2rlMN{ zZSk2}LD7tDcz)eahJ&;UwF09XeZ;Em*0tPUx=@^D5xym}luJy+^d-|83nX%z#rNr9 zcFGLjEtAZO*rRTWbwWfX$Y#h}o4A>M{^sTYeNz0*+umq{PR`+fy_33+O|jEk4WEeu zfEFfxMDqk!yvn)l=TnHDV_TgG`kUt#%U}0BLcNStnD4SMsbRFA-qw8xAjLzo^%4%T z)QJ=)7&_+>`AKI>eU6H2G$=jYDq~Z&S3J0TyLpFJ4SL9C#X%d=Nzs=KrzY5Wa%;<^ z9ef(A803FrwOzq^+T~XhScIo28_@Fyhb_le#|sVPd}pr8-r)ach#@{2lsZS|{)B!k z##?K=%qb^9_m>K8(7r`tu{0a;x2hFvcvOSSJ{})mbZ930geh+tp85 z^7ok!=8R)OaS1F_C@Y*}4Fk-?KnJ$*jFskqIKXVGG_rKe7FbaUD=d>7ZPFT_0)*xy zhJ!e5rXI(ewTWPgVqG!zn^5Cz%$|B++3oKO$* zbENSd^!2O{6SS?kUU|C_tIJ`fm6(k_dzw18fax7hL@#ysW zcvt}+dYX>3dH^n&o$e6iOr$ z9d*j>K0f%B#t*RtMxow8>)GD660;nBHc=ovC_cR$NAvRx$Mfhi4MwW1STE|| z1MH1C_r(q^Nwc5g#)-&EoLB56m&F^;rI+rqmTRuuC85blZw0UtK>wO|d4MoXkfvjz z+ZuVI-ROz(LyuiD_s^8)#3UT-#`CR$6|xOoGmQ}UhHIdLXEwSD7X5-}WXm()-pa$K z6(V6~RTE>iC`2gIUaG|)yEN^5Wq`z~eHrYJ(VrD!IW#M*)bt`&c?J*}nNZXK_N|f0 zxak5kSP|krz#EEEW+;d(S}V1lrYXrbC)Dw}`>u~$@cAXbE>fbsCe80`uVy6|is^0n z4v>>ZD0Wu*>6lnW&r@`%2jlr3(gv%)_~HQ)@}4>eT?VfT%iwpuuwGGR_bAhY4ZXGv z@L8o@O7D%qIv5PRsBY(XxL>3sUzHv<++p^G4zv&b$NjNI1}bfrFxiETe!JYcM+@r! z8CjZ7gw1|8{7<;L6;9{Uxyww_rvuk(n^%ik_o<0S$sa3nR56KlfOT1}T6S+~u%w9b zRHufO;G+Z&EXiyDbL$YjkSXf?h2H<`VCk!~d<05ChKjBp#)yM8B;Ah>WV4@BW zEa9lBuC*;};-lhqwiFWcB99>DqYyrKgGpLqnIqaovemHeNkve8Wid|kbyuDjF4%U= zkY+e-1vW%&%fKcg46oZH!Gt%MeH~gaU9euY#)vGu)MDo{Egq$r&vd}#k@CBKj_FnB4`xmCn{Wyx-Wx zeC=8{sl@N_t`Ucz0-XCE9)CL9#FelkwckUZfK!n>I$^gbl`7-KtYrW?H4|X?983}G zifl)`>j*$>>U2l-3|-Bhw-{i1Aq+tr$l4oKa(s`paJ<+=*)ODl0a^U7Oki)_=)D?6wcKfp zlVv66iLn<);Yr=muh{4}VS8`$`&)0uHO7wD<%X5P7?voRb4J_8u{L5^0bSp*^n3cG zB=OI*#_j?LC!9q25=ybl%k(9dHFxE2v^=TfyPvew6n+uPyFi{}DV1%SKYE~VsbOjc zf75PfF=yKoO}(y>7A}A8AO!{M&3~Z;UV%j>Q(5*%BoAtAyN$naR1faei!+n`^}q^Z zpjvIcYdqd4c42!d#rGq{JB2Zy;N)>9-sP-iTg5AmL14QlSEtu)h=m}-EmvG6a8G>w zUC64SV_|TclP%ruHT=1EI!I>8pGT|rmvqmGN$Tx9lRrzvd?0#PH@En6JRWxbBy1R% z*(_>=jjP9Z`<_Hzwrle{GAw3y+0Ar`&cyX^&8GG&VH&pP+2OqWsS+GwlvfT>OWI7y z2x9btViPf-l z{rGB9@8hett}bKIbY84Si!eTm+VZ|g^iJ~#5}Cs1qM(A~z9&%;0A1+3E+j8Z+hZz? zZbQ;(6!I*H-@+{MJ+CViBUY$+!RuN;*4M&ML#lh%EMh)zW9Ko~KBEu+K#FDq`4i8p znNP_U3ZJD4%ilq<4S3!Ka#p_=nhtF+f7oVXk+&&%r5V82lDiWy(t1__n#N18Nh5|` zyFYWY5AxhJiVpV2y@6!Imcg6-cL7eXrT|#3#$I4Bx)vwF33x1_l z8M1+d9@nCe#rgFr16`C064^~guiR)c<0@pKrfaVys3t^4$j9x%g2sk>?=?nONO}vl zsNOyJp+P*uS!|Lc;Ylg6PZ0eVQ(s_{rVsN&I<3?dkm6Sj7*-24TurnlZ zsX|<5TQl2Pb0Yx4aY*e)PSt@$!6v=dFn2)^-yk~(s1z6@rfz-b<(qux`E9I!gecC# zJsOG#d_-wvt#b($Q1x;DNHoDTUJSb)e0*1r09MEiJ$B;db2G8BfNnXLdd=GgJ0$y> z$nOv-VJ>RP<<**B-aoyS`K)&0nbzooXe}=G=CFG4fW%{oSKgoDTpYq>olH_Iib_5o z0RaC$0Kk|cKq4_-D!K5$T}x)Brg2^Bj!_9 z-j}to4Gt2W#_~a>BU?;>UOyOLqAe7cF>0yfNVP0!K@yjkd_ajrbgPu9@2yEPbEa`- zq6$~;1V1Gk|1l%uA&n>kOK^CUCnpSc8!LL~qw8B!qC@J_J#qI=CKwo$L05u_Liqt$RVyFY(|WbG9HE{tPO)g< zEuuZX#Bq%6cO%v9-7^IDJWEvClfdy2aF{Gd4LgDYUKKiDM3W)+&Py-p9PY45xe$#3 z31)x#_>bhkG?qH$5r@`>*ElE5P*D@2d*4a$h(LAqEAQMt9m&x@M*F9MtorxyUYeXf z5S87jN;iQ)%VN}GUerRaB^Q)=m$Q0Oo|aSqAt;=kqO~LH_5Z-p7E0b_FP>z(7P<*M zw#Mxkh9p-?@FvX4M;Jn0bMO-Ix$`cIHrFB~oJ3oTeY0n=CIal9m7E z^0r7y_RQs!@PplKzNC=Icd=pWvu8C*2QP?HXtm-9K?2E04*gT>?R@R|mnSp)CzVfk z*gTdhZ1pg-97Fp?Uqd@;6{T+qVyIR{k)c;ss(u=A#}j+-J*icp&)I(2+0@T+dEs)qn5a zm#jEw%fg`#P<7+_t-b7d#3^MrH&gw|Qv(`OT^Yv~p7+xGJyZOqymV^#m0#ju5~FK> zH1oBG+-`%QESf^g>!W8woBz)hu@Ejc(do7_xkaQQSKcgC{>yY%YSgX++(#GrrjXFD zIcFzp${na|L@Sg;vL!eAij7P3U+B#t076*j-n_-(@!TTRBLxx-{Dpnart>gbFNe74 z#anJATY2+qnS3GWbdjWMOeQ#O=n|`JakU!gIzL z*ynD)5FYL-3Zq`9KkGQf<#5!KqTa1o%l>MLoBWM~0aJN!$OH8(sJ`7a7y~q@Z=ETVQ;5(8ELxP z-zmtZNy&)2F3*3;X!}uvp}=WMohH?kR!T=ead1o%f>pJ8e$CXv-PiL4nS1Hbx;)HQ z4A;nIQs1Gc_9_AAvX4tGDF-c9Ur%49uhfG9NLBVNH4y^xSBw#SUdz!7HuTJEpkK_j&~KeBnKjR;p*w?d2exW-uyD zz2V4@kpO~Mk&Da5QgKdWCmtB%K3(|$iCt-P{GRvmdxU?&xF z^zt!uGHcjZ$2`_>p03@IqhcV zgkSu?{Iq6)Vz$u0HM~=XT)I6l{cxbuVLjlr9#O)tV1<$UFP{o~vr&*xi}M!`1=O}>-b zm@a|q-t|r6;F(~V3ucNUUvO>TyXh=tU#Fxisnk4h1gxG)e_Xd~veT&wN0czN`7np8 zDI@T@ns2shkxz|glj8tRW?{=7q3r`8#8${B)dFgq?qdY1%?PN#4|zdKN`8X+@QmaZ zY-|jim-M>ykIdp7Or6Kip`6-P>$5p{d@EFitE1mQd!fFp& zFPRyHBby4Tr9tX4E{iBDrB=Un7CDU@ql~Pq+}>TcJ~0~}4JhFG5-Yyti`Nwx=mvQphvQVv~SMz^Bo$_5Uj;4PySK)@Y$Va+q)TGP_KG!e7Gf zgDCMygvB;c$g^(Aw#ka=cKd;#O}{N*{2x(#Xh z_vM=bz2KQX?hsxJGUM4Pu1G3VS5^q2!qv880s`^m4*9gIy_UH@Z2~}DpPXM-vmX6e zqFjxPC~K(=`Yz(VD$;slNa-2*Bd{=crCE?}yc zb2Wx_e1E;(QB2c&$z<+9EF9X)={~7NT}1hldX+CpG9y^QLfgrdIlA-;Sb6{mqjs)` z3K~K#fN7SWrJd{i(p48-UQu7U5U;hq1#S)qihkST1lU^H!mAc>Mh>>F$c|kp9wRfI zU3UiyzKVFZIjyoq+xUR(O`a1DQgUz(ss)ioy;u*UAFA#`Hyu}|fB-Y5x#9-4s|aHk zH^c|j4BNvUCyLdmBjlx%w>DP(_x}jx_~GG-Hjr3;H1UGtx98tdOh}?whi$8U4I-Ib zPH9>DMpDLHj>k;{I+vb-F$z;=q3lC5I8a%EdNQy{i7^Y{wls6hOglD;*rm+3XU>Ym zvn)W|He)BV3d)#ZesMl`03c3W`D@m0*KJXjs6}in|8MYXyHJe88X`IE#@HXvGIfAO z9gjvk&{9=&exkq-&OafDl_m=_xjN;R6(?NRFqF&6J3LSY8-BoPhzs{Of(|eS-Ho~! z6zUD8s}N&My{<6U7mmgkDa&)BpO1^?tR zw6usIf#>y72e}fF2qG4*7t}7^8kwsTGd9;k@}M$6>B-bfhWe(|B&%o6RN-p+-O2xJ zvaJlM**?6mi=8)Cm=Ml59qQ^c^2JOD6!mo=a>OeGh#eKK;ne1O5^~OV`JRz*W!FE= ztr3JYg_)@tV9rax4_0xPauYwFh#DXMaBL8jOxYMH=i-?x6I1p_YC`j_j+J2qMXtzc z_lXY*UERzFgqUv$&aEexO>*Df@I@lP8q5cLXdeUX9R>(Xj8*!3Tu5ab^ZvU^xVzv% zf%3f*sP3%HdB@w%Tk+sS=@#V;%VYN4z9py?;Lvu~-SNx4B*@Jnxle~^DM1ZX$OW7H z{qg!F-fKEgAOXfQ(yg+tbYs2VU!St1^VkDC@q27=m=pZ=sp0 zi+H4_Ro0H$R(Z2H?R#bikD!Q9>8+{!&h!T)W22qVJ{t7Rjk43Yfzkz*bQ;nSL4!r`Q@YZ%4N4H z2E@`IYfbJM9yoBRIP`0pDQFEs-F7af;oAO{E_qlJlV%ZXs|orsaBXz}x%cbgL3r*{haLhIHs#)uI{$1uS%Zh;nM2ow+u@^E$PLZk@ zN=8^qH5gpCnU;(d^tYlqpDCO9Z*qS(Y``l(4*&OrG#=&)A2Z`N#8L~zDYjvW*nb)ge4?70OFx=A zCY)|5TDdC-U3Wa#=$nVPq+wJ88xV|`bp!u&jE@80mN5qP`9#y*~%R01HN z$nbZ6hVsY+*W-(GVrj5uBq~wfA@iUBNs6AH5?63Z2b6ViKCpfi5GpOTy}kyNRLXeJ z4vO_?F8G)*wfDq;xL|x(O75fS*|f`*p)Qa~;56{^uT3Y>2w}5hVhjt%ldW zzjo@2r$%H0I}7}Gu%otn*^mw)qC9f4J0m|f{(hbdfUTh{T#(+iUGDo{PPsxV0_@2e zmWz+R7Y3e@qgXx>7}b>0O=T`(g2LN0_8gRB|FRqvgg;>40b&IRw}Oo=#GQ2+gtalZ zP08(zLs)>H!RYRq(5L~XAkUlLv%^lNjg6I+f4^5Bmw<-~E+jZj$%~cux=^h&Hx={8 zlG|*PzVOP*7%`QKJI_I2#*B+Jc1&4K_-X=s$*RQhakV&Ki06q=^YOh&i3p2v7^g20 zA^T}78=b}*$w!>#_rdg7TLnA;0RQUyNs1Rwh|txCqvD!&nBvvPnMH6wNKUcC0{hA; zXE2Di#igOjYYrZrteJJz^NmZII^h_vEmQ8efv`he{+8I@M_63WYAEp05QvgBI_)?G zg^R|y%>v&TCLFr~1&AuC`e!F@m2NLu?w8IBNe@E@MYKyO&0|Z`Aw3fHUS!Q>+(!*n zEUa$girtleO%xivMe26m@=)7)%2VWUsXZ~UoFX{|SRgleQUMKZ(s#+jXt(aam?2$6 zj3|jhsQEq9X^cMhtkS#XXy%Ejst%gp&kfFw+#I%V;C*zs*ptdgc$ZjD2$MKCX?KPb zn8~lHalLgR2Brtz6}=9mzMe)x;yI!F+jK8TR!}#XHQ{b3lQ%r9rnXc{^ssb_j-VXV zx!0oh)$&UfbG}^TN_(5ay3nfC7Poog&1y7qO=$kTq}!g+lFZ#!$tIYT4erF3VKXStBfZuULHsZAt0$rSkta6pNeWd&1~!4w|;%|ASnTiL)qUE z9rXqbxi-809_c6OE4f0u>iDuD9G{_TFoUtsw~R&FbD^v2m3h-UUlJi@@rlXpAmXwx zvi%wwaQ*DB2E6_zWPDbw+2~(Kzl}DV45e#g%vlBw@o~Oh^Fu~ci zPKtPO;=l_^V+2s!CCR-u2jNwdbQWIWfFHg&jMM>>a{IC+P16;H*#5WwseDy!ZpHeu zxMUhI>}4JLptnlU#Z7uxd%l;jh%leTg+N-XX{2e02o|D=m6}|3%Ti+pOpq~usJk}O zX57VP0>tgV+!M#6vYb_<2MVg{H^}s)=C&sa`ne5)znv)kRTtdpwjtzUV6%`q{3bn& z)JV9gy88Hqb-W-;j&XVwA>7iwlWe<28CoE^Z z0q&XkzdQs(@A9OwLBDlv20y9YZ-P78$}U>CrnRIIIl~+ZT!)ANmMGbd1xoD=6G%xPX4rASfl?JQMTYHczD)$F~$*A@tv8YAkkk^8uXqG@%81 z_?x4Ixt7O#NEAn*xNBebJK|hG4ysQeYlpwE`HcUWI7g#WUp`07m-;2Oe*a|Efa8TF zzACM=N78CM?u93%4%E-6g#?80nt5R%1(fuy*KMqb_JPE_`Bx1}L&3aJUCUUE;hypl z>Rz62+GCuQe?8~U4-Ogp_)3MW)LQOF8b}ObC&Er%&-3}4UH(7T4o{@UQ4fnom7L?F zwIb57?)JRF?!3R(#X!BEE$uVINJao*LE3GWZH{gVOgqO3P=&=vz=W|Qcz+k*{80KR zFblaCH3(1k78Z~9`Did*v1rJ@m?af+$Ol8UdB$myvczNXML#=G(5QVRB{81Ehw zM<`wnCqH8jtHl$I2w(7{g2-kUPo#b0 zHC%m}0M<@#k1fN=51y-=>d!0zt%UjvG@n>W2(osG*^3w))QmQSwXB-^ zw`s#(B-Cr_FKXXbO;J4tI(_x7x(q~}pmPv#hRZ{vN>GP7qGEWg4+oWRlhM&&wqnA4 zpbjQwR!z|0=<|hss>9)3O^xUYw)~nom;9o9ryfVfuRDE~_O=nA?bO-S@a0=$0@ZPRp(%kf}A@a<|p6xP;K4HpDgAEcZ|; z_?6Xs1K4eoDr)~=TD4~_(`qWqni-pZJM-MZ)qp6^I2_*5B3*Y|y}Xq;nV801AVv^* z7Jv4vzR8vf1Lm*;`b*w1M@v+zWCH>kYWV%(+MC+uA8~Y_DjKE|K$n3UUwof#K6qD8 z35b}%nVhvpmA7Bd8agp(qwIEm;g|*{MkU27HE1kt?}*@M$O*TA0QA~CSg2|4r$^;pLGUU*)cy8Z1HZ zR!^ne4h7+!7c9-1S65r72#D3eJlADE4AE|9cl9oe&xN4Yubl|lsoj>CLYxQs9iSD6Q zp|u}_OMJYLG#>7L3VGo1tUyl>u)c_SfENInINjxss3@s1kv1x2MMbQ6B!8B93LiD0 z)o>-~chH3Eo>?AKR&l%u{M-nqY+Q(u%%K9JZPK^*EL$w?@3pC(b7#7^G8U<(-u*>3I;$SSZr4?--bGyAwFsBVo}#dF>SeV$`(ZPkL$72;tN_ZPxE_6!~YX zlWJ_rpnoV=VXK>_EQHNJ019#L=EwZPVMD+G`nh+P3-vn%QfCj1B-HQ1*~oVqLdD!? z7B8aOoz^}P<8K>_AQy1!@MCul+2qS~26+4QU;&0(fmtejSOqOO);|b3E5Qg zjI%eX=w9{AjZ!c-Xc$|p75<{%&JMlc1nR`3Y7+8%&o2(B$}NeRI!_W6dV5zhaZ=SZ zZfV<0>lm@lEh5)Ga}XJvY?TuHhWD(zuhHswL`8ryg~nJ)*{cvJGB}j9r;~u7bZ5>c zAf6-fwn7s?0%j|F|5k|oM%XSX2Py&dF5$Y604x%(2%9e;WV^Q z7f|}=aRH0*Ui2YDZ4PP5>%@%AyL;cNmh2xU?ap)9skjrn7C`>2rSuqQNcnkv2!(j~ zqgY;B)uM*GMDIFM7iZubXT>A5g^TRjJ_kEj+(W)GXTJ?ZIdn82=}t$w4DYdDX_Ju$ z5OYlq%;6~cLk>vE=I4IiptQA;WHF0;cLLc0zc6Pb%qPO}1Nt!@=vyST#_&nSk5lAX z_o2f(qIh8jVukq_J0c#_EbE0F0?_vGAj>4M{j?j6>b?f6Q1b{~fOm7aQ&IJ}!j>mr zmWH&J0AT(+)~mLp4Uy<_CQGb@zm^u{=_#e&O3n&&!$%6~n0O5rQFU+d^g*s;Y9fv6 zuXx@KWg6EYjv{$S!~$@Cc0NDS>sCHGDd4I<(vq%Ad~K34@CS9GQEvlXLp-&dvc4}? zH<5SKVk?bD9zl#KueH{UsY?VjLDE@C%%`)GjI+#*CJXiIc!3Z;|GefN-;IoP@20dY z%IJndW=#`ZH87V~^67o9cINtwGjZ&jaQuEng=K8;+Nh{iFBGbr;FR4V%Qvdj%u2*T zWdyoAN*QF2AFG<4ZW7S*cVhC5Pl?}A;pOWxQR<+xSa6}lr9An<)*X(y9y;%YgcmYY zY`%xQ(k@Z(TZ3RNU-Tp`)OQ_`PO*?-k{iN*5va9KILP3D7>}*0qNqT0beYJwP%%k%Z{r{ z(mpgy75BR~Z==P`pqkYChLu?orRmqoy$zF1x0U;9vCN#$Khj^GgOM0avzPy-t=EX|uT;Lgwuu9uzoIXt=t z;|^~vWv6&Ax9X-ysNsEym8g{~TBzP$8n8dGJ`W+X+L>bT&TT;NuW2y} z$VNQ!`?`ak(j(S=U>aiTya5%3++pXP>dAHVm-u-I?tIUkER0=*F&VcJ~=$E(;zLm{U4%i?EiiD&DfP%Wl!{7UX!-E=*3wi%T`!uGuz7JIMx^GGTY3P zvtItw!hUDQolgZ28SxmvDW(^AsHek+*SC`sxIaR&#Cy1hz_fS3ln)f;Vl$osx!{}_ zCM{T7EE1QwBcEA1@wxn{*Khc;m2VSe))^vjX+ZXaM%-5{UM^DD+P;v(p_s!dR6`5^ z$HiZ|m#0&70#4GfK&BTvkkpOJyP}}LDaIiF_#ccc*ui3n?b1pwF@|xYG_Y&B}sS%wD zQ{&hsUZLw1$PenG;HH&1|APx~^<@>Cw=jd@?J9zmQy*Yf2TX)p(p zU*f1C2we{)NCum1f9QgN8tIAhT2O5mxgbI54To?W50$53TR7pf`#8m%Vfx(;1r$Q5 z^w$tx_zXge6H;Qe{Od%CiiNk_D z{18=Zl`KF%hq*m?3V>GgW)41xFg2&!{H6XR37Vp7n&W3FYtBr&^IkMA(}B<*>lr}$ zmLbw(6Sz?A-@*p>#4hH>(DzlkjE>>9p|P#3YE!Tn_$=wN`>{oXFMmdGQlh=I+vwOwF{=H&f)pyD4+CrGS*32RJGIKUg&e-}q+SWQm@@_r%0 zalauQx*aQ~7}LR)wiKiw>i* zVg42@N19j0R#=#(f0~_(8e((>qH^kQj214m$Neg*;42V8AUA7!BnChZzmQp7;o)<&ey5NC#W;l|J$8bfI zp-$9c(j5$z!7cDTJEcE-XTbSO{bUcR<{Nwt&1s^kc%EOF&m8U213YdoG(=A`uyjKx zTAw0y$r>y2iz;wf^MMG4`{|1bLPndqf zm`~%%tq`v&TL>O{5A@G?)m9cY1(4`04%zbb;RmGzxrBiQ>SGm$b%5n1EUx3Kefp`N*r zF`eX2(qxU!yEpApX4O+FpL%sYaAvxB>PXe>@iWs#GR^bTKhac@H|mpoO{|jET+xY9 z+6gSz{9NrV#9K=~O-;p=iJG*^Eev^KeXy`gB!7lc%8LXjkNjb8P%c^lSD1H9sPKK2SaU6C83E571 z>^Z^{VVXmZp}|Z8_Soms>8_)0aOGgS zA^s=P^=kcl{u3^Ucs3wK0*cJ(l8OKgeV$j=Z^cgfkp`Ir>q~gD-Dn92E19P@?jky< zUM2y1 zP*>+83{Nh{=9hyHmc}+q|Jy{pEUWP+%nho~R~dPsiC^00xsAFQ29l&*C>ng2@@MsD z&j6^}jloFI8&I4AkjA?iK@&)(4GWC$g@kdcUS8teZLK~$0G|*PhQf|~W-tj(vJKFe z3=2^vtUDAuB|D@(5e*M#n!PSryJK<#UdRrOf_$GAfZv}{AxWUo>VNeB47|PqgyfJQ z5sOJgq7AX>S1K_I$X6XvDif_%OXwI}KXOlH!`fGQUy9dzHte(akS)Ax4~a+2F0=j1 zcgW{^FvV!F!gM~Evd&j^4!v)b(7C?)T9XH4N2cgJi!yk;Ou}5ML9mvXDU@5K4P5o> z3YE-M2utV~>@$C&a!y!)bpmeSB*h7F6(I1~7IJMIBr%?sbti#QCDy20@g6;%y z)nXWHxoB791`F*f{QM)ZYtxP-B%h=1_^T~1D~JZeyPqw;iJjHB$~Y*4y1?B@5QDbr zrl>59vwCTi&Q8GVrw#D>8RBsVj zH19MgbrNV>E8#nwMOW;onuwuy0PKXvBwhICvNLVAwNA24m$*^P4uJ%Xeo++*v4&Sw zITh-w2=-b}D+H0@KlZ990G}YRQ{#R!C@kzDg@M+L&vOWzreSjd+EqL@_U`Fmy144> zvcb;aogvuEMn-Hb7H3)kr^Uqa1TP8ViXlY}NvDda8E@_(Tgh;AfF(lgCl*0)E>XT` zh_=Ds$34mH!gE*>o zOG{X~bp!A55xIT1a&JLh$WMu8h=*7#3Jf~eALQucuaXp28zmE`-CwzlSaqH!K-;;# zQ~4O@;7ozNepvy3^Pf}b`QT{Kvk`s8myf={8oiwx6D1uSXBL)Z5^T9@A)t!rZ^|B= z3JjXIHP4n~7pCQ(_zFCO=;9k%kC#3|qmD&$kY&c!4ZUp0KZnr@>qxJ923)Mq%)-k! zA`q5cgehcz4=wmY4%qb3)ONw>w*6(Y17d{^T|@9&hc zjF=CEQ#)qVA2DPyF` zehM(oH$H$xkQN~Ra&o2av}pW9JUDojC-Xk;xM{!2ksNC|Z4d>9UEu1#1pw0lt~tHW zGM<|Sy~@|YI6itS`*Ux6M3w#B(l5WsnU&r`BnkJnBst21v}7=R08(V&UA|i3al{)O z&4kaAAksQLroM>wR6JI1Q|a4KV>MZ8sZd!?O@K{?ZC>O`qiLoPIodD64Zp?54-3gs zCzkiN{&fQ|9|q1h5&j|Y5ia&)gb;27+pL}ELiyF?bBr^qm3enWC`UM`=s`_?Bz(Dq z0&lPT@wdHP3HtlYkML&m{uLOk{G~m&_hir$^5RllK?+3scgTehd+UK2%-9oObIq3ijJz@TkRl5r3>wTpne7w~DHRI+fh5#KK zDEl*JDzraM*X0&UZIbt$(UVKcN?HHi!i;;kJGU$~MOP5+ zE_AZGJcFuhJTtVkEVj3AB03Zr2MJW)fG0aiI~T=lJZ4kH*cx(Ji*iwGWhSC&NR0P8fJEO&Bg=;*7m+pyFZc z_g01;%=QD2BJwx*dho(Z2PX0_{_&OBOZwLRALfKT>>5A_o9A`nQ_-Sh36`mtIQA>* z@&D&LMP4wr z4GYSR9laTwD}7oSYtc5o$4?IiO+w)%e^@88+VK_CB;+p`qhni3#NZ~CI(keK2X&`c zqBk2+W1g}!L}=FjezZBVVEbAMrCRTxxGB6b;@5XJ4O`MuOAn7KwQ!F?-x?#p@o(Aj zDk#J-jT%O0HfTgQNsSCOO*@(ePhxGlDX4%BZ2|B#9es@pu7gS(b~c+~d-nrqxbk z(B;6mByiJdwmNgj*3YR(1A%hHTzi(>#W}7IJ7H6A-Yo7JZ@~vkQ$_^cM6W5XK1L8sFL1)z;xvALPomlaFx8d4DQee^G%C z)PI1FW2Zgg-=CP(oRY?Rcorr4wE90lGyDIpv0WbE2;7!aOHDLoZC-i+bzUFnXDt$hstZJj{|5t?k4POqCH@F^K_R zLIr|L_hdl;bViB?d40GEDWd$&|4cwKp5^LOil+8eGgk-uIsF=24*g(6h;F~v(0KDY z{R|0Xa^CX!ium)%jBbQ2ToPL|u)ga)kXv4??lu(o{XzM{`)RvEiBo0z@Xb%xeL~cv ztW$#{kr1B}efQ8o!YS1;b6uX1N3tE+T;TgD<^ZimC5{sl%C2oWpxy=xQwf^dIH#;i z4`V0aF{LeGVpJwG0=vaM>aJ@AXn3-}JNrGPx@ZP8-YkHK(D7{iTR8gD zimvOzxV)|rmwy-U@U3(E8pgKrkyE3+S4TCtuAvp<$iIhk&9%|miPWY#nU<$^Ygn)X zZ7>8l4J%pzJL_uj|2?lRJEgw6Zsh*q`(;!EYx#_}bjNabD>!mnG~fG3Kkm}+SBrd6 z9EA8?xJ|EC`CaT3YMqqy`QNN)$Gdih#8hEoX>Ep_cBJCVA1@7u4e8puXXY`#5#YF; zMIPn|xu1}KbHN&Eh8A6Tj#rcrfNbr#-N*-$dkWJ5cOC#~?H+DrKdxVta7>r^NJ6Vj z%Hb%U$B>;}y6<0%xCq~Yw&njTPAgYAVLM7sBFHe8fAk?PtcPZf6U0~Hf(+TB`a_5j z{at+NUa@`K+wh;L#C5a)OkZRm%Ah(leouRXlv}6@XyG;JYBV&YUIptR{nLau}hH97<-+$mgS7 z#joklC?+40iOlApsm{+IGQ*_nT<4z>qYqB`rk!?Pl7c2>o$3!6V?XFaQR0SX*+ z22YJ}g!X?@KGUgIH4=B4Kj(d(~CA(O$=#?@uW4a?}G`^!V zQR_}vEZxDL9a%}*kf#|V_(DJQ$p4r!d2V3g7-&L-xzZcS#mDvK*>6k~Q=gKNZ!@&W zh^qI*;U6$>R}-ZL;nfRA&f9j=^(IzF>R^KG1@cSlQTTgHa4jjYHW6?bICRsdv1z5D zem>*h=as{TMTHW8#S33WuJc(qccIg#EZ7vug?N3C>1m0%GU{Z zGH4c0)V&mRvn)(H(YS%k0=7zlmYnJWA<`Ru(2W~obPO8alhNui&)jn;yfTu0oOZ7k_Srqj9z z>{@|nBfP7o40a!LM#v!Ms`Sl?gs=HtAkIzQ(olp;SV=PbwnyDjc6E{3itT>Z0e=&R zk#~D9yb^ng#Ud9YMox(702E&ZZSf6vd5><2+!;tsBj2=S6T15DPmrk)aJ>lFxljle z4068%;!(>~ROG3bH=GFf6&fUW=qGSI6yZheDxE&!O6pM9Bo-(xkBQc=(01(*%H`K1 zpxi71z{3Jn(5u)28(PxAiDirD(CoA|1$nG6(;+jL)UQhT5R2qX&cY; zGAE69U-Hd?>vYF0Vi$2zA2Ec7%%WhCV#N;p(mB!epM1l*_<8O(H#}63RhiS^emB+~ z3{tWyT-59*V<@sg8n=q~Wi#0_w3f!bl76O?u>_`#Qs^QapSn;}CrSZ0?1j1j67FJT z?MU`qFLq*c&9lBPHme+;3vK&;;A*{Vt1Qr}TPKiZl;O7?e-W~ocGzP?_=NL#@>W&g zETR5qPFlC92tXDTE|cgSNRKK zpN8k^b&=P$oxxYRHmZD(3$yUf!O+zhU&uyNer{preCb;7;gP_8aTM6WT`GM4{o~@@ ze*+O>IVT?WBmUEzeYq|d<+Z|#)>>bpBfi~_(Tt$3wnjCijNh>uo(^B?1VXl8%uLIg zmiUt*wplges#Ks|&`}0cEqrJETF&3b4y{gqMUns}pN;EQG}e<2ND-)*)gD544noVU z@MzOj&1t|?xDKw%$ZDLqBiP}y)OQ*Q9+ozpjj3B#4v?uHm6Eum8V4b|`^<5=kHF_h zaZhCEowTE^T-~{b)mT58cPhTHM9Xu1F<&0iOV6CnSfrFo_4ry#16xv?jEvGpAZEz^ zNhBu_G5M%|pljE~I2Ut=2dY}WDKTCyX8~`_$CzdCNziQbD9Xs1bF11D3u|n#ZCkLQ z+yr07AM7P3+=`;K+zZeQHl1ZNQ*I~A7`uvJwdVh{PM&?R(#!N90P3HPmj(5}Hmua; zTI?|d3Q5T*)J6^FL8NS&|NQ<>tc3Ox)r{Zn^g}qRGw$5a@lmd*G`;FBgn8 z{v#I~($t4;dGWYw&=pF4gMM%cv`7BUK`s0bO8|--jEH+xdTu^q%9#1!(g)OoQnNjYZ6pS=3gCShj7Vs*<1$XVW>7ACLQ# zBf&|<2nhm$W}sD1QM912hP;qLRq4utq&9-Ijg^GT{@J^b&`PU?s~9QpiQ^uizyv~7 z2Z`*CHW2Ro67_Y{dT7g91{5t#v1vv>LclO7@L4~)^x>o}3A^6VJJDZ%GZsy=L!v4b zCu@XpQKxr{)~vM;34TaJviQs-oJG~R%!**NhJ{RLowJbLJY9(jqyrenh5Ve!_( zyI$l|WG2o-pEwuPRl+QYrsZpBq?M((0%b1x8CwzRsQt5Q-{IxI^m~7;xUT7Zue6{4 z7$nB6Y9V5dEI%irmk13th9YVPC55FJ7vZCg>@W@s9X~&5u{rni9FzKQ=#tF2Z_TKU zvalqjJOMp}y(_rz{5>TA>=DT6B71LS)TQ_gS#z_T9|gM4{XR4DFb@W(h7tM~$YFds zmi3f;!qZbFSYd+_o3Obl2I5`PIBH}ER(Pf_rIlQz8sY9zTq?V>-$qI>&jDkVQvO+x zUxe8Rwg(F=t|wm^7Wg^&zhddMuVbTDljlppy^-zkiMwV!YxE(Li$x$f+AC;7?6 zgOhVw7}xivt5512ln0qw*5d6>O=J0u7k((RpmLCMV&4aPT(=eq`KWHi9h-;#2P~FJ z5!aJ+oQQsZHq-WavNCihvK9q41ke8C5=MvkR`sE=F=eytOAo)CfqhcnD4?4?ub9m` z0D~{Hq4lVzl5KgEv+i$ml56#- zB6gTln#2Fk#ck0bDQGZ@LaEM0NrBY$)8JUo|+}PP86{w4Ra0tb+SKNW^{J0M2B_3Z z2neF$NIil(yxG&b2%Gaw5zv(sK>HhNmCTPGa!)i9O(WbmQdDQw3|~LhugD^~=?xh} zUfkg4l(%@9^i8hk87JEcpN0S?R6I~ZvFgwvMYtXrBdGK6XKQniwCbD^vnulu8yCuG zm|hVag7x)jjXZX5ng7Nb2?1b>`mB)lJ3X50jKp>KxWH%@vHti}T{DUcobe6yP0u^# z#I<~f(H~+|SfvW%`UOnjz$%wvK}sP3fBU{(3JT@0XoX?Hs^20D3f|uUBz$v^PD%|yU}ohx zW?_+qM-?B7gv=#=3QEn7D~R7GC}$mrwPmO+wkclBzE}C-l089~%R6ay42x=TL zc7<)Q!Pn+s%Gq&{+gMxul)MaCfXtw%-rVq>lmwyFwAVvL7-O?hlVyKpv zPS^3ML)MuO%IiW6r$KtzaL_hwf6XQe zuHau|=FpG=PpU=(?|UY1@2~NlF_Zh);Ge38HksLLo$ns+?izW^COF7h=9 z(M>?Llx9$+Gdn#D%EH;pe@-o$vQ8|D-P|$nck{#B}F>}}8rcnh*T_;@!7>T@p3f6vL zg3XpjQ6D~;`zYm_O^Z^miL+C+$4ERyKieCFx^D_)JK(s+*KoYp8v~FDj3If638X)N-ktZd4StsJ z)MV%z#jhCL8RFMvWm8OBRv7O7T|lT6?Y>iYX*|T{^GIPcmsZW^&zI;nOsG7fF_1c9 zCdf4z!ghTRXw2v32QLy_Y7>ID4 zynEJuQ z!bY^z9rvHQ_q(Vdb8_l3)ddKQ12*WIO%D55_%N52L%MqVG2N8>_cjsDFk;mj*{t=@ z9Vi^?Z_C?*FaZBQ0Km;udW{;d@0OTR)2s8K_K5QqTa1=(lME)V6`m>n?x+y%()t%* zyA;(I#0h(4%B%cR80F-R^yt)j*7eth5{Xynw38~*JCxXyCgmkeui>?uo1nWk0crJY zTy*vDH4B*fcEktHrms_rDG1bZo#R^g$b5OH1wlewOg-C*Vlz0*g2p+H3_YeXmmfaq z<@su`Ab2~YcgpnS!nLY=VXbL2Kge_;)I6!#nqO=3%mv$M*u zAe@31YspgPn%&WIJf$C&N+qh1#g(!l{`{xtM`Ev63nRqL&GMi{S)W=%FfQVG5B^*aeiZ=4HobU~!jHrP{txke4kiGe z=(8KN9)0HzdfKBhxl$fwGt?i6RPb2rBt#S@SkE&0WHk#tNCaQWmS$}WOoAb&UcUe* zv&mvYJP5!kFs|{M4@tngFjrsvML|_3u_giY%ioEBHc%i+nf+1gt4(HMjS#{QXPqh_ z-W}1Za9$y7vC!2s$75vwp=w{MU&-D@$4aLON8~|`@5JNb#iV^1p`Pf%rzCkRR+#t= z4NEuWb$@pDSX!cszAtNP5+n-+Difi_HJo|G8xD`fBLB}XD^PJ(d`41j;lTV^x~dH! z8otx+lv$e>OO30~O)Bv$7u#wCA;s=#20E9*Ck}=SrWhrNDT1u{BlJp0{L)>@@M;Z4 zce#>l=Y7`RFHGZtjBkH36e78oFLh|W6c*j2?^b`Ly)ni2Kk9k~@QL!`)3+wJS7qu< zn?dUerL_6rsas-p$n4qMb_3~g2hl2g8bZq;GJw6z9~9)cFGcRXbk_g;ClS6vRlJ%~ zgw1tC!8dTCI4*}ry0OlGhH&Xx@DX3im#8GMrMjfG>_e%E$vRDt1iAq^h+@o>s-Jf7 zC;E_PTH|#tUCVGF<;MeUN>;kjY^jR7PmW+lEc)R^M|Fh!uJeqGVTq>Iuwub8lf38h zFBKMN4W)gIhnt{lw}oicUiJpqg~Ac?$TFD}Q#``NS+V*&@trf8X~+KvGM!M9R6+Nl zZK`3qg0)x-Iv)5~u2`pn!4W>;1>EO6f{*fR3?FD&&5+@MXVD61J3~HJP2C?%1Zq5biCsHkV)d2(2CUY)X|J<@>Id)7>%ChG;NDw@JmVy zbWx}BH6G6o0>bxcbEl*L^M*-up?jDLEDf3gSkA5Rm|u+xGeIW^{g(B?CVRGtIdxFI zm5-%eK6s*?{S7u)@ESx|9;$v>6ma*Ci(+Q=d+t4hN_aMYGz7O0R`VXs_KTjfHf;OS=0#*bXYn z>R9NbYLv28>AtBB(mr!Nq=Ajjhfm^TrUkU)t-*A@d4|a>=iN&%F_K5Uwc=EqIpR1c z@-5y1Y-Xw<(De2_HHh@ie2phKDoS;7i5id|`~FisdY+5h2`0rM!Lby$SlN6hQ3wvv zi)n4k`B99mF_ob0(cHC5BmV5ltL01-JTZPQ)NvVj92mACeq*mnD=qf!3xQ#u zNOKH)DpGIoZp_A<|JKA(iox*n)sMmQA(qL~@&@kEF z7;(1-5@Y1pD(dLU_1aCF$WDh<#T2EV3*^_5F}BUSWEfsVU34flGc3d%_EfMkM7cd` z!%t;OfBCqNkD8X@h35Nifv7pFs7fc?>Cm%-)ZR=gR+xiZJ-vfdIEeBSM$RBA~+P`s8H6?vw1};&Y_EZ-D zIR9@p4#8rU7JUIpss*J#9kLM@FR(89{a%`rlswf!ZOUW5$t)^_XS z!{iWxz<0>a$>{=MS>4Aa>#|=W>S}4CTj2Lo)M7O+s5q1AnhmF~J!RlnJTJQ_Vom${ zNs-D7ZY-g(jt*RD7Q9<>h}71@mCY{5!=D^rNr{wYyw z*S8n=XebOM*gb}kcblI1Fz1@V=lh@3=rN_@9tIw@pO*HVB}1E>hhbH)y;+{}WO_$m znjla9RbKjy^*Zx5H#jB_JzK^^o1LHPL#i+Woa{)ba$)I4+_|mq3@S$ZlfZ2|vi8J$ z@E!-CP1QbxhykMv-EBoA(*?=TQ?d=i!UZH2v`61jp39%*;)=d2%~uT5J1*xDrj%_CHp8pk{fmwWupfZnCN z4w3rR(MS$5PJgPfhx+DzRm4*~dj>n`@GOL6iydPMms1!oorHGp{i7KLBL;id!fy&o z%lJlUp!SI-i!lDa+SOoDgumn2YfNRP!E#LPawjDKZTf^bsen(i<|JcmZ5=8(-WvWf z-Aj~i<0)t=J{SeMgjvmS&iRwqjIFnDB{|9Pui+EC1(*-W8Zs_*3&b*$E%R*WrQNhV({S^d$;y zOc#QIqr@V!R{!*?v0~%r0oH(yC}+!G-n72XdFI*2+HkI1$sI5t1z_l8z8?&_!@VTp;lx}s=72rk%n}EfK~y}l{T+xYdPfK*v60r4@a_FVNzYHi0i3qCD2u7 zd-;Y@diDkgb+rY)yL6J7m6CD5hxfD7j=gu!lTgE z!`1kg$O}U9<(wh6wr1;BK97|5I#D-Uloc?F*Rj1KEooEGJp1x&gpw_eH-@P4gA3y^ zfOzpf&ZV}a1#=c`Iu{6)h+v{OR1T$|a`l}*w>+bH#m+qmM)?&2o9^>;e#MLL7eI@y z$Gch*(ZCMGlEPO;x^hO^I+SyRRJVxrfjSmM~fyeNW*q#mv(y;K7jfs?z zKig)n`NMp>^ekD4hSE0*X4-gu1$5x+N*xc(XqL=B&zLo z+n={%!&E~(V%$iSY9b_D80&-jUMBA8nZ>2N?jQNONAi-@l=N2HQ$0?2vvOHb67@bg zoRb0PXeIpbkls?>jgS}HvLA>*@D4qS+^gQeP+)tl*&iKc)?5_-t3ibd6`6fy?b-k1^J|$U< z@4FB0x|+$xf7Qs$@5R{k0f8d(@X`zQcp$Y3R7_%^2Uqvjr9@rEknH{A9sARdN$aeniN<_Lwf*IdHR}a#RA7v%G7hh}KR1VUMgs)Y zPS5vv4EgRjxF7;TiS}1#2z;gS&`(sjZqC*X&xHVQ1p>IT2&=Q1Z%yt*Q_01mOK7># zmMsr$^wxrS-OQb)*?1J6d1#4ynVbYdd+7O5-c_O=dpQZB?Ig01ImD7H#*DC4?llt76}g9RkxnyJ|cgo1ff{v>wZW!CYO+_G2<%#Ilk zqKf0_j}?F49%sZT8+@iTrE=H(h1tec-XJPq$WFw``#@gGX=;nTaO zt-uhLgzxQmIu|bA(h+EZH%2ngX9$R^A!pMvs>k z1wU|%115TY(4D<95Q{OISGO;!}zaVLJTz|hID5G+g>C+$4ygkUHb zZr8;0EQcPATdxLoPt-j7=szaZzu8EB3vJ2JxQ?3u`$T7&f>ltd@5E+x6|PNQ>fv@7 zXE`yGY?eLup{XJ-2CEz7uWs?Km2(3petx>;MtIzg_R-Yn_^!GoB=uEVB`_HAeBH|8 zDxZ7z_&;(FuW7NqYyPd9lo;Wf9y!!;7qUbq8*Iz^;jZir&`wB-fZ z6YSwk_PQqUXIMBX4`lkOZrx&Z;krphwAJ>13D_AWl$(~d}3czzD$v`AK zF%016*>2$(s8#rgKud@Q+jcWz#~nwQL|j8SrV>Rff)dIJz~ku7qiogZ{&_2UhecPY zdG=li=wj7paEX5e%gl}0YSyKUU|TB8QcCdrMnoG!0OMiY(PLoq zF5M9BR6_#G0d`({p}-PrTaL_E7DscK*fER14#C{+sF3sIO5Qm66nr?(B(>mDcU(yki!ql{SifiL2sO3}F|)c0AhQ9Vg9*sUObFchO>gN}0ln zC|o5V2yz8cj5ISKXB!^UiDsAUYTcN`PY_cB2lKriSuF1HvcCXktrb22#ixJ#Q9R+V zLRs>uEiP}bp+=~9cZ0dJKZ4Spt`esNNU7Y35mWz$${x8r<(x(yBDkUG!VxKIm&FPV zBdoJIt#3(l=qCBrk99O?=P5)NzwyT;rg6F;1R68 zw&`}TQ{cBneb+&5Co~p67y_fGr*$B`uX8H4p0}E4B{#P|+_m8VC)Bnz%n*!1 z^Yebahedo`f3!Q`xI7O~i2F>5lwF}%6h~<;@#hR!BRWnPk#6p+E{WLa$88ZOd;3`7 z0n5)xbTvxUuzcQn+(aOs_)MqQy)11Ub=dVD35ko69j9})7>6NxO|oUAe6aE&R5&B^ zbh;*K4RiUqA5N2WC@9l=WGAaZ7j6J;PgRloQ<9cAaK&(=8cD3@3yl;!I`n&!C-xy` zXBTN__A+Mt!P6G1^UOwXVDO(78zhxvV1w;LrkB4o8Rn&>G$gv&S+wrqjW5kjFOD%9 zfRB5QCV65F(QFS9`s{KlsOuIs;g)(mUXIp^BEwKq&rH6FG+TVlBDv!KEH7j~82$ij zqotu*-t$PV1z5vuN9*(+hNBygEu>9rH@xHE}+X}A_4a`fBOcMuU|L49oqCE70;GVXI_ zLaul0Ih)YDF1}S5G8+m?7CaA60YcI839gQ?cOOGAr09>$R1o$R3f|8Jh6K7I(Lxa6 zn|PAz5h&hD&>RDGr4t70i^W^*$&6O!_OoC`jYooYGm*dST_s^}kYUnko=ES=(rs>b=3YZL7@NbEB{7}W z&(^{)+Jq^)md7RLhUXP#)cOFk(@U3Hst;42jn>f-dx$WSCix0)+e!z2#w);w!2=lW z9AQWhimei!E@zF3>(U(~aPf&-dFeQ*Fy+~oE9|M`DX9+qwIA!Omn~-0FC9YHqn$7d zN7f}3vZsuGmON^Kg@69RjT3zS&>`?A?q$@I>^A5%6Q1|}wIH90yaQPG9A}H^SxH~E zSmZ8AD|LO52fyTvX7&;=%sDKv6>X_IZKCqIH zesS1C79YdPa~UiFU?XOPpD36awBwpcXnb0M(bi+{8QdR+tQr6QB1Yy@y zPvE)ou{L?7gy|W&tw)asAG9_Bi501hki#ByX()IUj%g9rr7{kkag`6r4!*@gwPcg< z?*&y?tqv&$dFGHW7b1IuZXqTSPv45C-wRPpm)g-q=J98wucST<{TPwlo-%lyH+HY@ZrrE`6nSQeX)93aQh`KUa$&o*2Ic`aZu6v z3(}DK5G*FsR^*FRgvfqo&UyscVvlfpcQ z*R|ioF6=}}zUwrzhW_Ql{aB9Ksse@nLe?D9Xjgz(iUx_3idAACRG0RD;^{&Bo3%Rype*+9tA|oRHId5 zjDOgfi0O$N`91pz`hgFX%Tk)8EV+&5=?G;XIRG+5ttkXA--JAAk7k+HWdI?J=a#x` z`DLG&9R1rsK7vp!?>7P&=kZIfVIHS0ZqKGbqQ<{>KQm@t(w~WiZ!jv;byPve9BvZR zy@|Q<8d8U%goS!Ot++7aMq~@&FUGap@HbPVdHss$x?2yL_=0x3uZ}}VP{m2pvtIS4 zU!|8>hq7dy8hl!#w{EgVSNB}8ca*o$ods@r-p;FbyMG1UnM!8nq#!92k*_2_Zazm= z+Im;s(JhQ)YLOvz9L$kfQm31)4?c18V;6;pm*fw<$i}$7nVz8tezR(L2%s8>OSp`_ zl)ck;CMCu%ZWV1sM9u~ccrK)A;r?}Xl$0AwOIv6ZEQXNN-!Vh3PIi|}LV<#Y-)8gn znxfW>RX9j@-ZXXT5-ju!oWSgOlNLj?&69+4a2UU~hblg75D-gdB1ds`4ft4+iHVZl zLw|c7?<(P-zWt4j^Y7x%Q4NbQe84Nup%d|bm_xYsN@0y&KF@nTH|LP>8kKCg7m&m& zXb|BYv64uO>!p}F7KV(_U~Q;ym*XeuT{_-ZTqgV11lUy};I%dz)2%mB@{9yzyGw)s zc4^Va*lqA$x*Dt5Aj zLM<4lC!N{gOgG}CR{6#US5fAIjp3gfxvT;b$yU;zxy;%W3B2|aAu*L*Kga6g^B1a; zz%1lBVZEOJ2=>fT}pOmoh=e^O)gsDq%#GX?lPj3xv|W-%Os}eVdJV80+yv7*`W*glJBK z;p}G#L#iJf3iPBDDQLpa;5KKsS4d|*Ivvi+7gi#BzWSgvORBSQsMG33ZFHtx=7Lbl zshu>CF^+hoBv27ThHfm8{n8R>EtgN-ny~>VSRf^Sv|`4A5JC)ED*ep|!NrRdsF@e9 z2IM;N`0}?ijfsPOr6(AgqeSe6DoFHLFvlp9vF$Ei9D>}tZ*N{5L7oI!%GgYT&}};K zlg47d$D}n#mrHmjbnNOU_jxi*paD<5RAgF6|NSBqZ+H=7mb#cYn(a)#dWmbxX>brKW}SRn zsQhaa3}LJ%&YT@^;1MVyn`}3x=A|U8UAb4{0&usc4W95T_oLXeGTv=xc|~4Y)7IEI zpwT)RNoGE$i;QO-em6+0bgRQNA+?c}(FWXY0?<3l1GNkWHW=jZwdvQWirsbtWvy?3 z3QN7nAzF5*023({D-4IG8fVvpYp&YD2zX|g$>MJYLvpnGrb&7(b~ ze&o$v&u-{MdZg*g20OR>n9GlwZI=V78nSrY`A&7j0qmPZRvEUg$y}mx{tN9wz$x#k zmwip{RXzZpX{1Z^qHOSD(~MYyZ7pwOUnj>=h2<8EY(fWCg>iQ~{p@G`P>{zVfNOrc z^GPatzhZhp<-|}lbX(p^Thp)^VOQJltvBPXYQ8W#NKF`H0ZNwnVMHTKEz)IeQ|A1d zr)I6uDTWTN;Cz=m(6W=P9c>CKRe596K2bau3|o@so2)ODA?n;Q2OvcJmy(xR>$|=! z*IJ97komqA?RkZq;eJ;S+~*-J^Vk#;lkJH^tX!))$GRT({PW&JK&b4aX{w9KAh09F$lF9wH#EcJaqDd<5I341ExL5P1c_kH zdwGWm*fksV>vIZ||KQ5ngT04n`uiiq9BxtM;Z|ih+OU74FZuQJwAzJ~6nCq_Pf-!Y zS05o%@9;{|fKvFbJQR^o_TiFOUGMUw@x8!Q$U|)K^-5Qy@<_^phg*;T-iKitTT7tD2i<;<9wx zud@!P&08a=Wk;Mz5hqfv_;5{2c{JG0sU;t0rK71r@Q0o`!&U2VCc(G9SG2#O=Z zAHxRSToEw>$wQ6^+D|zQN-szFI(h-Pf zAA@eoV~27PnW^g9`~MF9F2VA%kiyNO68Y;)#iDU5v9uUge?TOw&AVqcY~ps_#dk~w z)tb3qdQc%R;}@G}8A1M8>+T!pKNzs?5jcfTG5XNO`0uWH>ecW}+d@+87vaFnK`imr zW8}2y#&ebLNE-@#o5BbKkU4jY+Z>)HcgsWjJB=GTmKo`rGeK_nuG+wh*I4aILOeL^ z6(d27_2t6q1(xzM5P;Ho!bYd1;Fvk>GciyuHuFRDZo*1pIcFc)Ss?Qi(Q3=usqIsJ zY7?Jg{-bQzjrYAN0Lf0vO0yfTv?Ha6m`hMJkDp0K6NXp9kwc$ucY{#gj>>OczI{I4 zA?8nT<$Q)Cm%1g}`XugBUwkJ7AVt;Dwk<-&!qiF}OqVq>xwE(vIxFAc33@&!l1y`8S+Yj%D7`mIsoPl{vq56fnWq2ZjzYSHO!^ug|ATgf(f{^_ z-jVZy=Q8M5Ky>JAQZxy>+8640_4PjDldQs};JI2mt{$5SiqSY`sCl|Tc;D5|m*bS5 zKARihU1LI%YV+87CclMb&#I(2$5uj>Npxpz2cchFtKi}rvaPloxWq`^NT@KS!m20g}j%-K+M~BxgpiWpxuQHq^ zfWxHmJSHjB!-gDHbO(_=LDUw0rr3=H474rURykeF9QU<)smh=pZ!RpM!6Lm3>XOEw z@FFYCO6C_e^ZJmb13?qW7vs8EVJpe#SD*NvBe9?U^t`LC2Gt(dgD^>v=7J|eH3qu7 zEs48M^f)`2JovLhFb~I`&=)8lrh8&rnvjb|p^-X=L|BM+&9yFCWqO_qqbs9DQ1@~E zix2jqq8WkHQ0yb&9esm}or8&jsdjgzZlds=X*?htG+janK5e%MwBO6acrCr+Y>%g&}x%=-t{7k=qWC$s&LR5`o``j@|juWyV@($X$c4*k-)!*m-{Glu{zQ5jM^BN6hC1BLS z3wFg#kbu1HOziQem=L23Jvgl3f@U;N`j3BtOq zu7nQVpH1@a1K0+cWWF$HRGC+KGK&o9wweERdPYRPW+>@@Za>N5Wh?~Bhv8K+$iXtq`*<8RLGnfbFZ^^(_N((Bq7^r#Tr zhg&_VF2`t;`GCl7ho0yI7SV)T9)j16}^L_RsxB!7l2td@JJH zMMH*W5*R&DVQ<@D`MQIdF}B7^!r~gf$W0p4rV9BWbcd32#x#`0roH56N=3s*%+|LY z&HPnC_wnGnoe6s_GbwL*19r9dImsk%*^t_vBRcr2yph}%P2+lliW3scb?Q6-a?+b} zQ$t`7zWvWQ(i(OzcsR$dL&u>BTW2}LRBW1bMLP7No#oO^3z$8edyvYG>PLP_8y#q6 zJa$B{D5{zWt7cxv{%h#NKl~I-oK~-fgq~J7KicOm#UTpi5*=hy0Q27NYpG6o^mDu) z$fZEv~a`VTz`9vL&p zOlMSiX0jNFg&bp&sh5A(J(TpW;k@7~vZC>8ISwpp`Gki4xzWXE5+&nlbnb^Uwt}>V z-E;a=WRLARiZZ-02Ptiy_2XIga)blFCC)ble4Y?uT$LZWB_zN|!$Fo3p8~NM6bR*Q zg_X%`(8T4{O-=Q#T?N!3w0(Cmd>47yCndk)D{kcL5V}QeT4C!-%Ef>;yi<#!&y*eI zd8E}pR|!$(#Jy!r*R7%S_KS}D&LHLS=rUb)2yq@~0ZCnE4rwqSZEGMWF)*<+UTJ;n z+ux!G;Ze^}KxxQu*n`2pXMN74-+kf36Cr=)fb71phh5y{_l)_ilH^VTfX*|d!&>;PK$+WkS@Q27FkkZ0oxu8&+KqpWdUhAM} zNdMzGdFI?j+DBM=T|(+c?vEa)ZIB55h5)4XMF1Pi*%E z_DiAdT_%CTpQH2%%nQK<&Q#A{u94u3WxC?8ZhWw3TGh^4XsWx8-ijhOH9-@Pj$mL+7a zHL~J3sg7azC}Pz*&|qt%(c$PQcVaehM0*;-sVf}&N&#g@1STh8$!;KIpvZ@0yC7#) zOV|Xy!Q%$$S?}wWDj26eb^M^zq;_+vvyvfg4reE>fhRn~RKe2odzh#mj7Q@ZP=N4O6Ts%h#>7U<~;pD(Jd_Pzqe96s~x+M4~z zc^U(1TRd<-FW#9@l4D~Tdjy8(u1~o2_-OHqPv!&`7nuVJEU1`Yhd+9(Qt<*i%N)Q| zB(mfM#0d>)7Dr32j#0BkUwfg)!L5~mu!!HN*3(@}tC!~i69a`@Yt>?a_GMzoFar)) z5}VOGeISd;n_?eZx%pgC=J5sN-YAEDx0dhroGe{vAznB~`%GYmxvI5-orgRgi$h0% zX+94e47;HD82@D+m!BA|k#E0h%;>ptAJ~I*emN{C-#N6!`7_^|eK6;qkVonpX~lF7`GBg;VE4WJIxZ z50_~cyiNShzXMcFuyoXCQP#~#wawG+P6ordEcik8DPTBk=Y~CB9zi+c{>?G78#&J* z*nHM^A8=P2?7zKl#1;ih=f@0l+ZS5YT<9^=<#(6;?bv?L$j6D%7ZqK%gQ>0MWv}Z zo*^-*A|_J#3QD0V@L5CMd?J{_?4*iD8~a$*9&l9HDQ2UBBU_%l@p~BMj`6B31gi?@ z@+V;&BL49xKN&!qYK86_%~Xdzsp-;ic}%wAl69Ox>Xm&DxwsaZ)%a)fC;SesYfo3W z=;wBCF6LW9v~^+2cmmcNSlJSa+(4_ncR=ORrwLx{Loug)NNR$j{v9^CE%6Lly#b@t z=!q>98$E@r_|y#rOu9)PArLS#P!?RId!Zr6LTNviT1ndxH`c6vR-TSY?n-0b5axIv zf4}sw5{GVg)q`t)aCk~}i}S)FuVvTONc2mM>K3XesD44e_$N0_iVdGG4$~Gbl8%+8 zpO}1UT$7N?`Jd&^+^nispUc`Gj=IO^q;J$RF!#E&g8on?um9XK1V%*Kqslh;#>|)c zUKx?XuDoyO2=8d;iSB>Z$ZQ)c1J zNjL0hSeG=UHPw8RX+nfR$FAI_&FG^!m+3Ij0y;HuOp;Oob@1>`k(c#&JvjILiP^Q4E0DH{MW}>Q?9p)8dafYksRGorygF6 z?6>Ue3~(sG1FU(rkNvva>AI4VYpvN}9@{A3`%Q)<_|e!G!LssH>=l>CuABvugv}LFtG-lqp{972@y&`kqxzs zQx42Vw?6D5O4^!Th<2cZFr=EJxp6Spw+gQyei%5fCu{D5>z~c|?w=fAFlwL7;<}sV_KJ$MJ>(;w)3_oW%AFsE7&$KkJq0omKqlZEF1srC! z2f?*4SJaaa`ZW0Ic2)+|wJpu2vlUmG`IEqHj=AanXV{f~GDDI!U;%t(EOH(4O$&(u z(78gH%+;y$aHMtW0s?Q0S^7pVxO(L9*;Mz4W3#9Ys++}x9orSwM*Uu;vXM|3lY@$G zZd%~HN(UWH5t5|^lO1q;5-45Cs6}s$=ZdxPIr*!APbFqUqbv7Mr}RzZ!`;*HbH!?L$(ElgQbj4WxA{eb53tkI)`?Dww>5iSbiPk2vkZVgwAC<6|HAt&#JL%v3vozeCyb)I`M|Hc<*CRKLYGf!r$vIqbJHS)_gES zRoxz~>I~~c>y#aAqT{JiZGI@^7|K#<@{1quX~6G_gV7Hw0@+CMT*y;Xb$CL1`_AwZ zFu;Yv_FCPhS09JarLIqnU$5CcpRHPAYMRAy<0dyaR5xI-)qrm1 zG1RRTd=JK(4guJZ;aVVYPn#q4B*`tz2)Lm2^0&)FHCKuJMPT)7sPLbm=gOhUYX@A; zjVUtyUy>_jt99N%G;@-je|w`fm(xeIoMW*4oK>#H_B$Oq5ax(Dq?EtqrW3$(L;US8v6}7TK{j|sOF~d{wxwjY87%2TBdQSq0z75wtg#{=1q_1 zB_YZr0)*;5X_*2C?lZDWZm|MJ>h)0xQG-v>5P5l~>KN^6zw6lYzu`>4CcpCS>Lo`b zAHkbkW|;IS_7+mw6NZ(Mg?}5*Ri%8`)ZHW#u8OZLmx_2JB$NWk^LqDqt1CeACx&2F z8k(h0GxDdBccImX*}5L00|VG_w*T;ESVybCrK_5Io~DV$L}!Qg1!ztCj%_($%Y0T) z(+jQBL5Ms@xx2d6D(gN*m5 z-}79A8~Q*i0`jF7HnrL7mb1K2z+XY&m<9>;A+m+atIR_;I9dj6)PSvG!+4CM$0EE1 zLuL7zC$6%B4I+3mLDIDjaY3(4n9?gaH%a{zIiUrxK}ED3La||P4GvXS70R<>U024x zB5mrFJVeH-8m+UIf`qh`T=ENrcgZk35`L*8M-_{~5kS9e_P`kQ!aF+u?HF>BKTISy z_|exU1@H>`&IGof##LDTw**czO~=;k2h}=+owUfum?!-!*_ZR4@vpJcZVL&B#2Y1= zb=<|v<;_&Wlo=>o=!lzbUPxwhbcj&TGwmF9w;K`%S_s94-rRi?Ljl2QsA`6mbQ$NT zyV#tSO;soap}-p%ZZZa_Kp5}*O%P-szE!O+@qtZB!T-KU-6X3&u!*rJos&G#t#sz@P}AqSVi_!(~_u4 zjtdprpCL$9;j&}f`N3&p%IV>#i)muA?jDbNLj%Y&A>?TM)YtCk9$(cPXiul0@hzVp z)aaA%#HfPw9Je~8-g`JpBLS2J8<-EZN56`?dQF5<2A)CQ&|;AnF&ov?m@E|#udcQ$ zB+AYHn(u#ec%)<*7?<4pYsn@CnZz>`JTg&~;iuU*pxfC)Ayk>Ava&S`$v>g+Kb~gD zUiQfG6a~N`*psGNxkeLz(VfN4$ggQ?-aAz6xrYuRm-a)wXTp=J;M)WLX(DFLqW9G) zSOaNAOxz-gq2MtEN#R|`fiRv7jW(tzP|#g-(x&oTvGsYZTlKL6cI#C%zHsmiCw7#) z3DZ@$RX@-s>K+%5O?5E#7G={!n=6~ctM!qBg%|GpruHb}5xmUv2Si(Q!fMlh8}A@$|K}&S^`?M8mXq^a zuGQUGcG-wwMH#*xdmZMgrCBxSrs`%x)5wDE%ZS zuBMhFRi$2snKCo+kXrI1Tgcen_%qe}Egj;iFf-&q3yeyfFPHd^dA-7k;yChE(xPS3 z28 zKj_q`JhCcC3Il37DDcek0-K(q*51?I`UhdV5}D%a;2oJnd-1p)akhnV+MqO<^A67Z z3vTDN5^98%9S$c$M={l7O))7z>~Zb-cNe+zJEf=uRFOlGqho&TEMG&GcQeR8x0lN% z{?Qv5=8kSQLm;Ak${&PBX1r2x5vLbF`9eRffXf%%&Faz-Xyd*HS&~wsxDPwUtpY8;M&FnIBcyG`=9S9(YYXP%#);LDScM~*h}5#$F}zcaZ? z>~I+yJP!m;^EV)()YHzur}LsC(~;qHO0;#oU7_%^S>XcbMja|EQyFtpVO}06mW@Al zQ^i6~k(fn7AWBld!=X^3QZPV#r>E%sEcoo9rPWch?$D*EU57Z}Y$$T8(t^tKnET>m z05#!9WxO1>75^*1Et<|#g@EwaR(~?|Ocb~{t;Fp?MdJ{&f8A^*u z?jBG1v=#?gtBHEbXm>{n9ySQ;SUT;IGAwB^La7$Yb2pQ`>e8l9h(yCi&FV6{8!IS+EJ%7T0_mef;)X%|w9-lFN*a3IdLvwErE2F3*Tl{km7X2!9& zD{d9&b>Uu&%&FwX&u97c(olusXcQ%@{ltW;(W8}=#P=V7Br6Dx7T7_dH}3dyHCzqd z*XHsRvxI2F!!>aRF!=^bG!F$jdBo>QNxG>~gGlRqR2VnDjXAfKnMgB+;4aTL?c6iw zAt`9LB>_WmARy#T;ea>rgqviq0q8?P`q-xqBDpl)O}#^5YdX7$V|RmAeo%2iE1By5 z5{k}P4*#S_{)lQG3S5G+cDhZH53*{+;GuwACH!tWZ%>wZppL{EE3(tTJx|8kj`cJl z%e4U)(1ROuD4vLL#H@A8$+V(@f#!C4q~vrKN-B4cHYra;fkV`{BlmWrY)V5! zZ)}NtAZ(&)+7`3Z3TkETPvniS^R`gP-*}AA;mcXt)>(uyUfa2XU7R$?D?NT0az2}h zgkMqu^V~WVWTP4L=h|8FSvT+NA0L#r>qXfEpa;P1T*H2#QHU5I3Kse zDzG=$jb2Nok>7|6KUNt|8jilc+UQ&A912Uz+RVSJ6V6=B%{oM#tq&UWa(GE%5Vf(3 z`{!OJ!3hnJPys_nm^C`!ls9x4l)@-;2`Z|0@>x0Ne10OSJcwW_3DE@z=?g#jSLkp` zKjP=x!Nfv`I2aHVG^&4mG_q)SF08PlYjNsi>m_CXlv47k84l8mD-(hHx(GQ z!~0&Pxg<&n?WwwSa$FCVpJjEQPY`png8rq#3CT|sTlbcH!Iq$3W>RrxoRP2OuRz)O zms0iOsu`orlIIc^9N&i-oKKXB_M)s@Hd?B*tH*cBtFgi7V3UMEagbG7ck$}x0W9M4 zTj9>Oa5n~Eh%L62?vbV`+R}h}w)Y2kEWNR(aw^Of9C0$@h`B^MX8O^my|9&XuhTYi_*uBiII|5?2HQ{N88Gs>$Z&tFju+Ext%0^ zc&2T;Y(6x0W*ubye4Ru!=bFAZT9+*K4X)^O?1tfA=H?}{I4&eXJc(zUWg>| zau&~i-S_y9pR>4HRN9cF$a5JLFMTM<-QyfSdN6a?vH_HZx#_2v<*JNntdiDl zB*}`RVF64txwpiFZrEu~+blThRD3Z}gA`~Ze1FfZW77mM(% zT%7hUTKwOldQ z^=~kIDUwz7m?6emq>ZiQQ1Oa_EhY9+-MM|Zkr!{KuT8X2rKNLSLypgV$^uL$436 zZJ29zvTQ`_!>}!<361gQFaK$J=yD?5rAU2TL6w>pt;R)#8aPfTvhCy?6jafd`nKQ* z;vIGti^~FcI{*KXLxZNiYJO&C-$AFHqN^Mjxg~Gp{Z7dYa-_&550%W3I4;joD=1iM z|JrYjsrKSWb}#V7Sf{4Mh7+GQ7$7w&$ZB%k<{UklJKher@fpJ&mH8@toeM`|%mkaP zA0I%3g2OqpoPwF(m&>@~|2_y`bCvNTh8YcFV^$KD4qK4a_HpvI4CBJNk#=)m6eC#? z|2DS1gKfktt=MVdTDEvE#>oh=fT7a7)%vumRzFh`y%N8L<74FA!pY>KqKy8?aCeji zk`2O*W|+u^X9>MhfysHnHWshzTOr+Ed*PFw5G5*Cm-?FGLXg)4TFXs3!8nl6O2-zD z>*Q+n5nItdY$o5A)Me6>h87U9n+mC@#{pXnZ%LDQv{za%xYbXSV+&C&kR_tlKou7L zwHdf0tt2BJ-LizJ+*t6}$Uz;C4n{?dIed3iXDhz z;sF(L<7=6bG&th+OpK)|ZuftTm7$L=im-)JK0Fb^X%y7o=C4>GDwpOw4$LODa2GU0of@)~&oqiw(Sy7V9R26a z=RnVBL^K707#g)gxcZ7d$S+HBP&tC;yd_} zmrL=9x#%=gJwMP7+0f<)D&e(Kc)q`zDY%LWC`*gz)N?9zj>Fr;8H*g2;$;ghZ)rpO zP5AO8-%B>6X!Y(g=f%ED<;^QA8rK`iUBq=b@+!kjxu=4f?R zr!-!83AOeS2-xFQQdsY%jPjUpA+FrNoS2nvYuB!z36Sm3N$vJ?!p_RT|fUZxbuukUzDmM1AXg0e)9@#IRn51oLQkX*8nWq6xi%OAOf~)2S)Rb?%q28r#&y&w zLt0WpduzO?H$OP~gIN|}2V9e;{$ajIrmHtO1rZw;`kI0)7tXCok|m}(3euKq5CT99 zVK%MlPI!|xL?kqy#o%)4tUTaXK{T8)skgU*Lq(2rq7oIHU)`d_BY@2wZyt@grIigb zO9!d_fRl5Mt#B({e(>_G$?MQMuPk_8GF5^8)iVoY#2krv%fv38P4x4v4K}y{aWmS- z#L#=AQm$l4z4TRRNBw+ux;z*VK(Eu&w7?+(-j@V8yS@q-y$4-4BP~H&ykr#e#ODUD zU)fH|(fz3n-Lj{;_QTv_pqYEcxs0zp|CKNP-yr#x^wVi;pvDq+y`MMl7Sl`>$6DlJ zLb8Z6Hx*n=b_NHoQ`_;w=lhQDKjBUpe!VHR@3cQkFz3Rb?qC-j2dr@rMV!lA$K!v4 zl}g1S+SdD%{cf{hm(Gd=uLuCXtrtfLPhVnou@1|Y(qNM0sadTQa!uP!4kV^GI|qTX zRDkKS^lr~1v|%EMN4`AYS{PK30CDg*e)`gK7x)rXc6aT)!At4b@F?D!{s#YfiuKOa zYKm?6RKXMKu4Lr%>160EUa7sN%Ex5M!l0)x$lU}RUc|#WT6IJ?9(Zu%%exrU zh#gzO5q`kiAr{#N!u@Q_HZ%3)gc8!>mRWai+v`i$s&obk`96?T|KZsQ>l3d=eMs-j zr)u+At77WiDnPt*nm1W%+FT7;Cr@DX9S)hxCXM6tJ$B%t>Cx|CaNXmXKv`!_<{6N6 z)ZgKB2L3XhDCwAP_M3n>5k&CSxHiVn2&LKS$Aq|BFgYKhD_G39mz!1*plBRbFcb96`4A%L z)`J72=fztmvP5qsoygC0P)OU38L~flEw9Dl575rfn67kN@+L?P%wS%*$rXq5f{aKO zghIL270#5)Rdhr^twD}K8?b_LT)HSSQ1plZ8YvedliO>F9o0Hit~us>EJ_RT1$#!q zmpT^%zY&h9+|EkA^AEUYcRu|(sH{~0DejvUM!Vzp*G}1mQNZnDZ52vMRm!&+%#`v$ zI08zFsrVtK(q6Y=imj#-{~Ny3*F)10-+(*poWV3$(}S9vR@oPH`|}*s4oGUUD8F>;XBxB=xh*MUCZ;cyhP*)(7kj&$MY$_hX*^0kl2X|A&~|jJ z#q#+w5 zdTtH@RqgG=_(DNF4Vqq*xss*gg*VQ+_1HoPLFYtdU$6&sZYUE-V`{v(?9n~A0 z>otu5x(ai-;J3t+CQH=5Z-7EI2?chE+7vCKen`1+w8Hb9fL!)4_R|Q~fWa9Bxl;1s z@$rFJIQVq)LVNZYQqEBToS9~St%h<}dH2bhZccoG4+r}O$X$O>-s%u+9ij@0wwg3o z1`x=mlp-EW#F|9D^NTJ*Dmse~%!n7bU2!5xq1+r(kc%X@xF%Jm9=QOsq2n6a?$ba5MJjF-Ngk8wO4VCv@4v_ zPZM|!n-HlRn^}zcmT&nb<63sie=pCqX|*;sjfw*&H-oX{q+FFQ-TzUJWl18zoaYWO~Bkx0pI7wO@qU##L=x!+ee{~p>B03MFcHDpw07!&GFFFWa39ymcvavFRLre~s(qru40vULF1>rGa}4 z&ABq|Ds~|#ArDNVvM9h}5iJuS;@sR53>R8>Qh4Q6PT@^2zZ<28Lvl(MG0X2RHxyx4 zh7zJj$IonKCy80(ZTP#1I}*lq@lz-h^pnB0bU9I`bcL{vX7BfRK;=N%QH-8QB_iXl zilSTiJT~0LM+3bsa-J!)sLA@GWvXMz&;5aj*^E<`&H5K!$Lh#bRPN$uv0NM$o~s-l zJ4{ItQ|{;zVK^-QF)24aCUV{}XBLIJKO?;u?zKic*v7}DQQUcr)bmb=S(>~?p>QC1 zqZQyqUlb$FTezY7F5>Xb=B~^52QwBqJX_6%vyz+~T`kDXe}HP)iWm(P1*0*`LP(5A z5A0Ji2T8vh$C1FI^Y`Tjk!w;Gv=Z)g2ZMynfb}yFt*cqbbKTLYj)gLuF7aU8kwsrC zN5S2OZFl0SXGzKp9wxUKcTzHDtiVa7`jui1SAAj-MfXP!L}A&Ma?xhQH>$lKgzLF- z1k*CsJbW6=L>3^dde<-gb!MP5vN45T2|>>aeFpu!x*yy~puSx%tHmw9pOLk&X%oKA zEI~?|@h8+8qiollh#4o)s~o}so#FS-4@H(86qEa0@XhERS6@UJVx~rmft*&sgN}zTmiqjcF_( z%87eT9Gt8Po?22hn{&;6!31#y_6UtAlh)T^mMBJ@XBGCb$_S^EF2^vyfi5&O{&!&b zFWqw;*SM?PV%MEdJpOa8HPV7jmz$A(J12jr`5j8Obz z#}dG>3#Tfy3?k}Is%tIZ5niuyb8~f@@Kp137>%jTP-~LJ$Bdk^f}UN>gbI&uFgz{>9U$MAmz$ z&jXOmIMjs^ys=oTRyuR(EJ}geCa%~g<^eqijw=Cd_7rCM+x9nRr(Kj@)jQ;F^(LO- z;Wz`qp%HDLTPwS}tInJQjxONYYitfXvxqFqIM(2m!#Q^%k8E4WCUWeQWn62gQk6qk z80Y@46e}s9ijU5QKAusT{aY_d+glNuhT6^S$PSGei);@Tg6_+vJIy%M<5HL;j|`pA?g6$f1CXT|612Fyns z!@uI&9E8Bvic5z9n$r%wI9~!m|8kBcougqilVw^Vq?`~4PzBL-fq`4#6n=7N!GdQX zGS0xJTU&~rE_I%pzGPaMgfJtAuH!Bk|M3D#%2?eyk)@O z^J5OZ8YaB{!Tut9Ckyafl^=}cd*s^QagoU=I<)Sld5y4+=xcV&eEvlGCAM7U6&!&1 zEG%X(=H6=?i}a5bQEL-Xc_(eaAtI{C7Psr=GT?gJ7dzpUQZ8OYs%>_&ZK(Fy(Y9Dx z>oMoDRHvE3*c%;!pP5Cl(b_9Y@+YOyd~*WGiZPeOMB zMQ3_CZ<8@}@vV5z^d_%dQeCZRb)NZNrblZWGpzoCtR24W=Gp@cYg}q~qV1qFStg{h z=8D8Ct=+lK(!-cTydDFLlN(#^P7$;Wg#?WsQOet+Z5dq{B=M*eQ16MwR6H} z5yj|*npmugZ7_pxCS@6F$%ycwM5ZHP&^JX`>SB@J97+1E?@L9gi-DicR(K@;c625I zvp=$V>2rp#{K3Z1I@F{&lx>F}T2#wJcl5UqfgFOLzCF zDkQke5fFLw%MAiX$VkK+p^IaxU09T;F&#@Tzvzjop%NGio)t(*a*kw~4+-q-pX7Rs ztp?1$lRjujE>SECvsDr7(<@%s=02^5*=G^fIqgY~l*tMO^O#SO(MrU^gx?pCfBGbI zIYJrwDQF$jo6XvxyxdF%BKnx1FfypZIMq+oF+BVhoD}~55eg@6$k7&2Q(@k+-tXl> zJxmK7o#J%v%vA=^vtPSaqKOSW9PTHT@^jwB|LX?uaJV3wp@}5!w70l?hICJ^Pbe)T zw#gR5Hh=G4e~Y+L(J*BH$^e0{*3$aOb{s9M*;ijF^CbrzWmWM=QRWYR%@-~{9QxG{ zgLhlJEAZ-RZo@^ZoP%RObUz`1|2{p{gmtqMyq;X)mi3IR+=iH3-^vHj$TCj1Cwm&n zVokTFHuK{r<9ro;&#`eXa`k|Z*X>QDG!cbE4=?yRY+yoJZ|LpZsOugl#5Ub-bN14f z4o3{oQg-&9nydaNLjeVrpPR=hF1zMbbZnpppc50LM9dj4nomD(vCm}+&rd$bxmy_(_!m)9lHZ1xA+ za+|GFbh?$%L?e#>!LJfik9hR9o{B6FcIo)Z?@WRfnLuFeG751r05{R_zqW6le@75Z z6tB7x>acAA3U@`1=)k#4Rii&tPZjtAOKVS`PwtEGL^Mn0#-bJmYR$eRVnq!J zjdCY0$pZh}WwrU^K*+SGhutq2Iw{$6VP!J79K3_GpwwXi)1@|2&(+lld+b^TIJ~j{ z1O8EN@_58X!byX3r#)MyK@3oKlxjc1@UE0Whn7*eyldwaAdLV;ycHJDTq0|Ss*{^F z+CC#g`;)hjWu+FnokDd>K&{EIu07uy2^@Ro+@r?QlCqu#X&irg zK6;p}oILV25Z-5B+Ps3l4=e!+tzynKkniJdxGp;xr!R&y2SzTwfb^t7n}i(n4B1)_ zg|}Eb!+7{qn6~;9xU1BQ#{UA2MTIQG>_wykWpV>Wc0hleb;wmjTh44rv|$POQ8vfB zKN1)`YtXvvL8Pg$cQqPn2gN>|GdPO&yWu(T3-YFgAB9lUIv8ibZ=wj!VSK#l@>>Y} zzDiXe!`K-GMi4DpGs{RwkF=@_z}sE8Q}qZ1vF3xtoy-6yy^GdEmZyJ@k^}u`RdUg2 zARAYdLT64=%Uy>c70z^eOFt7nhm<4tDvMr@>nOgg`=0{aT)$Do({RxYs6Vtudk?#$ z5Lrua9jk$ZATJa>18Ra3%(w!{(aQ}n(rd(o(JKR` zHWrZP*x$7afTlvceUhBcPlce=`o1hyMelZ;|J;Xd11`&rT6M1yY2E`Akapz4`>rqi zxtpr!Pl#|KE8VSG&^9BOgvf!QdG z!8`eF6tOYAH5|v-JVzzH0vD{e2$V+pJ1A_h@mXaVj#viB=$&3MU#S3U)y9I73N+Z7 z7ZCY4R7%(pOcB1-YhWCdtORUq!cVzFggwB4pHcgh1CDI&_naun&SZ^ON89f!(u6v+ z!T9`rj_3}50UWJ-r?ysbLKHT2Vz7K{0Cvtpo386kw4(nM`?c_j;CXz*(b{qxNYZ4w zb-HW(6$f~=d;j`t1LQ)OH*pvAJdL}Nwc8C>7;O_3ymH(+7VuWRmMt~DSw?p#;2Yz= z0)qGj*l-;sE|O2=VUgTcznn_EAG{uuf{V>vXpr#jUnX{5KrXmnnfF9VMO*7hKu$sp zn`%eEb`Ojujxa|=!!5%jf@0Cb-egwIyaHrvI$m_zuGp%Bvwa2oJ?`gNi7l4K73Z%k z=L)?3;&m%9>$Q~-szBXfjHx-UQ^tLgPYI2%;+QHngP$R+JW0-5i1fmn!>Fa}mF6rjh*9K=UQ32}#<) z6f8MAFcdQ5p4Ac+*&6}@->E$#AY6lIMSF=$&J3#I{)iJ~A`-Y=GvfxTsN4J}q6j4v zqX)y`{}@(Y8a~D@*cY47K=gFKp}}ESH$F`wT?AUtZ;iBa)OUL3w`egM zqnv+%fz8<4Q%|c;mxoDUZFtcH0M~HLlth_wCeQLA`uRjzf!rsF^_KN-pkXe2kDU0k zBC*TNyoKVP^${Uwm7d2l@2T7#79eabo24VNrR100Dv*WcQh_lp&1kYt#w(4v`ez{z8MrpCfWOpu5F5qa1;_?f7dkb3Ah2BBxzJz^{O3Z%tlm=;~ zK#i$PC;5Q(9Dy<)yhNlYRQF(k71%FV-Lve6jZVN`t7F@=7uNPzTGbG?Xyu4dsT~e+ zr7x4Vdld7Xk!sP2^>W3N%V%moo3fb6Ju$ERUfn`Lzs#|&ObdH(gl%>x=--#G;kvEB zoziKN9>mB}l@6)I)%9zAhpVrDb|b>_nhG@f7TCFPvpf(H!kBI)#l#x1-Kh>%OF(l_ zA38I?c5o9Mz^8h6{j`?MXvH1%6%OfUpyH%|Z#YbXBW z1J;RF(Kf|>KX<^I?R|)v)uRpbb}yHge$iu>Z%{8rofirk13-OIH!5rB{;z(7;nK<; zJnei5P2aTG-Az3n0gQZ;4|Lco)mH z`BVsvD3cO9{;?l9y@V+1S4K^eHCA2h6lG`rT{ddE`EdD&_v)hH!BeRDLsCC%bvfFm z9$`cAVQJf1lUNa!yVYVJT#(VAnff!;p}&et-ObRf6>w?iGdPYHlL*=iKF6lq_Bf5i zJiHWkJGq2wgEadv0IhlSc{?69mfIt%gxDmA*vI<0i_d=Ac6UqGzjj8JFWY#Ks6FUA zW`@jF!xUrX==ZHTbqI@AfVP978*d2Fkj<@p*wFxpgyyN6qvD^<+2-ed%$Y_u`SdHi zt6~<8yDP$6qX7Y*HPFHrmF8U!xwVHT#YVrxEF8-KCbE}D`M2H>g-Avyh=xrMr`Eug zqbe?dH+~zm!pf%ElBABLjx6W?x0383aRyNwq8NP(s(zRCTglRE0a%iK51U%1%`T$x zTt06am{s~R#LI}@env91D}mMe%f>qPjYm&qdf>P>Ng&|sJ-*O7L}6VWg*-v+wsM{1eDb?S5pXP40&J~=}{|1)o5nvSe3tz72loqe*qhN zVk;)^q2i-Sst_po1^pHRcnxzjbsRib6HRdJB1!Y5=3_4g_Gpfxd{xN)T?zRC&E{4s z%cS+ofA*#szUlnM zdjpcl_(JLXQ_Paq;Veo`N9EB8t@WU{cBw5z4J#QYBH_b+dK#X`!Ng&3%p~Bt?zarF zZJC>hPaS#*R-9~R_X}c*bU|Am{l5sJOVsT|%m%Fj{XK3pKgHbft*h!0|)nx*#+``#%S2 zh<%U3sMZ*u&T5L}vl9&zO!Wz(db(MQB5x{2+LZsC@tiOzwSX9UOJp4{lQwrSpx;LcU>`6?1>O(FjT-;g&`pp$neUo`gJUwMInA4Y zV-hs9Xh}~gnpU+xBU2m!M6O{cmOk#~k0Lai|_r^u{-n1e=>^XSPkoeHIFGB{8kEAg!7QdSr`5v*@`2*eT zX$IYl%f-Y!y933FD|LaDm&Rh_uQh9q${38)^2<4j?Y4>lh*E()o1)C;E^)KIC56>f zp1e9Omr>7gVZKQ!IgO9zv`D_r+GFC7rk#nsDwm5Y`uY_P0KslPqw=?Jy1!w^CC-Hbp}YT|jiSUGMae?9I&Pi1 zP&pTq)b4j@{yqZQ@h%27D}Nd7^|KoryHl&+55F?)+Z3%ap^F>3;8RIkA+nFCUovjpN9_3 zJ)!`*`frE-<4&Yp0H_ky%5S)A5Fqko(dqpozw zZsH+!W0kC(kPd-?Cz{im#+l~&9X^Fd+qHxx2=a3F>wz3#gP!ishfQ)f6M11H`&=nR zcQB&D+*eMolo4LYhmd$Hy#ct0BHTkzoC$Mjm=~OrgGQ+4>r!9!1;{xB6k9_IjNS_=g{Toz=^Mw*EOK zv0w(wc~)ci#v}XS$NoCDe}siMoEO&(-CM+N7o{C7nNNXUo${>W=B)F#q9bSe&yJ(? zhovxt8#{hmDL-cFnH^vYggdj6r^HJV#bV)j%&r^B3M-_2TDRA$tmyXDXUI2eS}HsS z00_1>mnwrMo`F)KxAE)OO~tFe>W^>v)8AIhdv-ZtXCnBds_km)=U+z`4MD$v8lu#v zJg@AsYTz1r3906Ueo?^hYrZ8Z>t6dkA3WLa_Y+7EfhCh?p}~ zJ!YY>6-4Ztvzs&m5g}92j|#kLCA>r!d}@yTwjn=%dlDob!rP8ENb6=0L`{VMe5?<} zAFj?Uq#%Wq6?@hw+;^FDNSQt;ao>HyR0uy4>WaYcHx`{$u^C)cFG{Z9!CD3fuAz{$HV2!> z2d&FVBUk>=5eDRMIrTrTB|4?UbzSDc>wYv($>peGzVJ{cqcz|PH6FmKICbIA`>rx; z9iiGWFtPt5Y%zVCBw(`R)JJcN)AK|&O`@RIr(N=~4_OqU9FV(Q=)-mcyA^b$m|xk~ zUA z#RNBF(1c?pT$i%+IDFnDV=~SP#}S?+KNWmsQ*LAB`u+E@uf=h7N>MsTFEj zNM8VAzm1g5z835X>1VRnWKKFh)cERgq-T31T5Vp|t`bEo!TLv}36fz3p z?>+eq)1@;+PdHl(H{G%5#uh6q<{~1@m$Y|;yTka{ra+iK9Rc!tDt{YG@1?$faia`Y zH;qPv{VDkbTB|X6D~=p!7LWDIKA?zm2KW0?*Nqz}>+O6_xW7|b(GcNk(~+vk3fKRR z4;PxtpEC>er%Ed*^Ye)6SVLO7+2GT#z9#m?G^Fq;9Oa}xll&iX^%cL|{|Erw#=cEr zoJXFg6k&+_kP8y+*NB*NXa8PE{ima#N55#&ga3c=X0{6Kln<71@ic)c%f(0Yj18T* z<*6)JQ57^0SqG~MRu@6*Cy6r)9RYHZPl18OCq`$9c{uLl7j09hsNRvR6VZsM2C?PD zuN~W8z`G+!StG;Md6XSm)ixP%!cv_X4fn-%R-wt;;9rjD)?@tAn~cLs^PD@!NHf)t z>!&p}TQeBrqazPYm|uWh{wRg)%7ET}RYHqM-#}%47yA~4&4~B(m^i{0MiX#nVy$H) zIc;}%rnrm3DnG0b8f3yq&Uvv6hA6uO$OW#?4Xw7RfE4Mg71ya)gES*72hcnpG;y&j z9UNKEDsAwnwAxR~q8-3&0@TRfaW49UR&*Qk~h@5ep z82%|0^Z9x+QNB|M9VY#D)8s*pwGnc~R!MyH z_1lr{+j*W(#uJYj)m5FH-W4M2SRLRSWvTSk$6miR;2&r)md@@T35Pf4ny*3wxrEJh z6Ws}${#F@CdB&t=q2Y@mb~UwsURN|2v=$U&k+xg8pfzK+438a5u$Rrdat7bUi2pG z`|S7kvPWGP>o6;W&gX!uVLOKkp`24HvlD*CaUn?k*r;V_(ZYv&thwFP^UNaBOc5awL2ALBwdw13{qmyi42m0w z6*|O%^hhHHG5*R7#op$Q90!}jp3$Na3jK8cONWojufgmCg<|6Q7-vkP?+GB2x zNG?24U6m{z0r42)*1cW zzs2-Cx<%jQ?H8Hvog`HP1oKq+Hg4ZHXI!yU$0U{f`GA>{-o^BhYrr33@*m24sjh(r z9nc?2Uf)d@1~fJ;B<;Ugs)LxFJtTbDLKA;|DocB9g8LL5EhO6yT)Q%;b`mu4R_-RI zIPO#E~}4t^y1P79e*`ipLksD=2XkU~UU$m5)$Y zX@k?WX^7Ri-*+L<9yRz3aS(wX&@W2&`p^B-TlNf5FGST_gehV{&GaF-1;NH_q!I_n zvc5>Myoy0#CYA5e`axrNwD9AOvsrTWq6Hk}#?HLj8`TPxDYva6%3@}^TAR#Ql*q5c zl&6=`6KgqkLr^oJXLFJdh6UaI_Aa@IWA-X{~MoQsXFd#BpO#Z?8-eS*;<*= z#%yJS3%}OGa)X#}7^8q{?EK_M957g$Re+7a2zJJZvFoXQT$?GwRH)(yIg(%`xg<{= zk!IF%JkaL-uF>2DZ96<&?|RsU-@um1WaAF)TLXOpd0UXMZVUUM*6^nB2V2iOfy@%3 zrq^zj5qtO&c-(7SLdC(u8v?4RjY{ z7TqtUv-UsKU!C5Mk7Oxnj>K&nwWP-f+`;XW?2@XUOlnmr7#Loa;R47%b@SU+EG_nh zn>>Q0-Vy{I6WPs`2SUSYA`vJx4h8tk-EtiEGi|TpQ>5&GaZbA+{Z_k9D7mVj=uAMv zUJfsi^BQ7kY(k1Ngjj15iL!+FDtznz=Tc;GmNNO##&aFrE7FN5&RzttgZIIepRo}0 zoy-g-y0^fD#{mwm6In+R#S_Eb^@=fTK1Q6Ed@I7^-LZb?3J0=j&=S{peh^nZE?fEE z;LM#BwNcB^=#Z5V`w;D=Y3&KwNAzZ+mqGqDR%1a4bU45~&}k)l%lMJ8aDh7=mj`3% z!S=czqLU1*@c6npL2g}jTi{i@0{*hhT)@@8qJu|3A~H4gPG2|t=AWlG8Rud;zcvl4 zJ(K3|Gn2)ArSN%MN6|p6TPA>>PU>h?^Uyq~xg?5p8thE!;v1ZI#Pmph41y{`Uwe3v zcQ0fIwqbhDX)~ujeTSq6o{KM-E9r!-%5ykk{+~(x7JCcwikbE!A!fXZ&mG~2PE16T z$~T3It%q#ZOuRdfoy0J3GvL{hdYrmt8%AWY=};mE&>ZqhMhedf z!M9M^iA=mmImFBX5MP+>9_?m`d=#Ya@--mdKrRMG8*hrSFutrc3CM-5pK*+q0%D1Q z8@ZI689dCw_lUT~LR^++a63Y8F+fcd#BNAW@tu+OJx+b!l2L4Ga;93shqmN#m#Bk_3tV#MK&JQ%}@>zg{l4?~t`^>OsX*l-HX&}Tyf{nl3-tXL}zc}_NyyWu5i3>83z zrI!6AajF8Y%>X%Zg`XCcJ_b01H~eppc~<{gjkB(_97){oA+aLRH-zz*hIJepvp!5P zq~f1$?VRmao!#&%Nj;EN%2JO#3cBY4Hlv(@&f#&%r{6)9UNQDf ztBK)pX|gvXuf1nJtXK;DjFv_8o&PgmPVjQ2k&BC|_X54{QU?ZW)lA+5`f|n_Jr zV7^N6o9fWTNvy;b{1<>t7}wuMcKTauISwZa-#<3oVA(&?&4(#KFM`|>83s$bZTfB@ znYg`mQ#y0Sew-q#+7|DUGL5M>`;@&2+Ce2RwI zkH&O*AJe9DcmhL8Oo47^5zdqBf=j=K#V^`W9%K^h1H+jUhK>4HILN(^XkC>889B;; z*7MaYI_D0K+M|i2us{&HncGWIsKHfTEof=7##sJZxf}9+%)`E2!pQN9GnGbIy)3Uu z$`;{NHB=tL_F_9E%OlP{fhKYav>3Q?if-UbC1ezHlm#`s3B{xRfAaO=pS@}GHt$N0 zKlHms;c6M)C`4Dfaaw}|Lg9`+|V$Oy!OCldma+f36Y>l@{bOa6NU6Pi4 zbX>aG^tvxVFb| zmkBC-V&W}&qta_CFls!ZCUkndfrVfm?lvF{wn8HgY7 z3=MGu0y;Ag^#bUu0zXJirgOx7p{@-p0L1RT-oYqx+TDE@m9XXUoMT5hniNShzctQt z_n-{7<%%aguv_yVprc2-X^Wngvijsw+=6U=UGzXZXXpHJ5k=^KS6aP;a|_ze$^oR* zp=lWA0;Hti>I^gr>I=ZPN%?=ngcz8y)+JTQ^I$7cQB)t@eQmG0Q?a<5*evuW0 z(iH)5xQsom6t2|gIAwI=&+A34|NiZVM(qgaNy7mifpFM>Xv%V!FGNI7(EPgs8gghP zBv2*>u=yYIL>$F!mSHeJIav5AG!je?At*Lo85q?U!U?Dxsn1{duo7evttrv5X(cY; z+`Z@~{KbeZ|5q4ZWV)Av9}=RT;W4r8t*cn;YC@oKw~GlfjnQ>Kf7b;xppND#4Y3Ob z;67?IxU2l`)?O`4NiU|XU$jF~JzU%85E?E)IR?7Oqge9Dz0r(BrKBJ&65w@DVDLvL zEM%Gyb@?2L7d^SD@HC}F9{>NE^=**+=9RWKEuFYGXv%a&C%{Vq_0vHt=v+J=ex-K{ zP8bISvt?BVl;!UB-&}i07MHLvcbkRK{;oOsTq+rs-xAiOrXHRt+9c1xinEUnWBMiP z1y)G4y_pd3&QimkoKf0?g5q#QCjV62l@MIY3frnohpc zwe42>GUzG?Tf&~dtjp0&alLdf*GV@$;@a6!5KblT8JY(=%bC4pRC{tx@;=Y$XsH15 z*2D^yxkx}!yLw4ozV<$PxuhqZMVk5!*tooHOe`DsSh}GZ1dM8${W!0lF6#eKqWI~ey|x(;Z3>`oUmuUk zZ^7nni!>*BaeHYKX(%O4_6Y%fqEaqQGjefNsfH*(f~8u@yf7cMpYwDe|D4%b9?tf& z>j!Ng9cZpw2KuCy0Z9Zq18E=_6fMc=f~8#pOM>~?IGu4I2)~@=VUB2NeFOoAzQcGv zV3|xa@*iD8ZUgdXZkHyB$y2q^#QSK6=_vzl`#-V|>a|&(w|5lIU&WcWHb3Mp6$=&s>DuQCo~T zo}Fqh&MbL`Pv1KNz3gLVBt4<6Kdlax3KTuOw`{;ID$33p;+zFY6u?>G3+qqZ0=Ukp z6`qp|9R?{oHhiI#>1b+ecP4wi8yxZ@|JJ|Vg7d4@DR$(K(vbYanz$HnQJ7ONv zw=5Fi^U1M3{75FB$nuT^-ims<#A&R&5D^_5E_B4 zf4^O*H3pm<4S&!@M2uVu*D;{ILa_*pWXqN5Dtra3@v&q)CS%-RB|Y7`JYNIbTChMk znGW2k5s2&IJZ@>-RP?h}sLp3LJ+1$zOwhee4;1x}g;pbGIiJA`b=SScxm~|Hvz7xx zKdo!LkaBPj|7`_^mjzRryv?oB?2%3g@T6Ns7s zASIpK0OscrV2a*cf+3?Fg`4&3)#2*9e;~Wws>qihoTqtUJZ^+T4qZcA<@#u|*e4qn zag$SUwb%T#j!mutAtYtBX7`xLC!IIvyH1t700Kb$zhpGQxz5lG6{HF8ASsME?1IB5 zX#Z-Q2&W>IGM7VD{ch_2EElOpJ20v9a~%m}c`?my-%}(?oqd@OJtsj*VbL-}`GSr4 zV$w6tyokqy?eJB90Gg#|rQWiq+LQm6!t?mozPJko;Ioyb>AWfDH_eTHHre;YD!YIH z5xZ#ar&4=FlYQshTso9+sub7)Zi+;1SCOrx3K?HB_d}o-{JD!l>SPeMVjT`}`z$B} zWjwSCv2yaZyNi2aVU4^PW>>R{0eAvCK1+l=Cw>@9ci~*=$b9@xJ;K$ES=&_xvoP`x zFnjuwP#0eo#I>^k6YijN>n_QgU#(aDp9m6Lyk3NXDrIpw-SAjnPLsGYqN<#jnk5x`Scry<;aNVT@)Gh+2h-93F2?`>+V1bliNxn z50@l%c$43QH>b1JP|*>75lo7r3)noqzZ43q9^|$1CK8a8=aq7oD44syX7lZIKxGci7=rr=A{p6 z8vDr)veJLN`ZhyAAP~Ev{q`^_m*3A* z10@TSA)1{=b+rP7Q@XSnsAj$5aCbJiL!+|uq>kLshYt&oMy6TY2ze`#_pJbpJ8OOck_A+bv+L5jv-iybl#Tb(|OjB7WzrsMnT=n@F7kFO*@E} zM}Gg+1N*7okcdDs?j*r&eqhLsqjw&RK^&eV+Fvl#g(5JuTQo;c`p|ZN*G4;<13FeF zo+ZDA!kFfwQ-JmKz#ob$k~gfvuSgX^?`{`W!3Ti&yydSv}lS0ErNR<*n@q&&lxe`=N|B9#dp6 zHZb`}_u^PvvyO<+%#@HRkwi~Cf1JMQUbo+FMDo|~yoFe(ibGV)3jzhsW&7}TkEMP~ zg8~g>mvnC+%RqMuAtM<+MVsdr_`MQG%nVlim-S;|H*orX=H!c)y`=G+`TF}a&=h_; zd#a-gFk8s%`J=47X^H7D)&Q0u6nhTuo_35MT;VBn{@n<` zJlKGvc3bqtq@~tdQGtCf)7=0NVQiSwjvj?RaxI+hOIaVMwjSPlp*Lp8D|~#T?7j#Z z_*w&R1E=Daf^QnZq&9GTcEYmp99*nlRn#_>mQ)miX`tT z=LJyeH1oJyx_83PJ42^Hg{+G2a1C13)tzAkRVti?4|3za z+g8y<4B%5L6NJ z(d0zx2?owoS-TiGqYnq}^iBWr&9=r!bezD(j^wX;`*^`fRH#r#GH?cF`$b}ORJtA^9FitI7mxqhak_7Ma_Y0?MZQ=9 zo&9u55RL=Bg+Wh^Y%GDcYh28Aqnxy{CZQ-#QQsANL-MJ=-&GOS)%hvS8k_+FEE%TF zm#)!(7V7AB%r8pSgfCjazCP+nH9Hf_6LUR34}$=LlzZrdBkM?052dg`SlnwK=OFEN zbbN?=M>O9kDf!iKL2|#(ByKMr@rI$;2oTG%zb}xyu4^m>BN!-juSl?Bmte|aPhEX6 zKyyfDF=Ge5Xz6%`$}2YGGO?7~tTR_Iw?E@LQ^%+pe!yVsfn+<^WD;q7t10CUy{&qS z$#-vPF(olG^bL?^^E4qO-LiXNkw6sICiYE@-cDM)$$ixM$8NNA<5?Ovw>OhyJ8uEg zEj7{_fy7^`yR{e8v4WFJR4C-W*R1c^uBJ-Tdi5frxS!V9r}g8a4`qQ-4V*qow?so? zLV_W>e}mVZr#4LXC@-fG;MFS8kJ=otq?qQ;{22o*}TFeT3d(X%dhHA(%q#vr1*~ zUZw(x3ymD3?!)aC`8~@~!v-toG_rb&3c6D&zWBkFgV?PXxn|i?p~_aY$J4!a+86Z4j@rn>R*sIK zk3vMv5HqOcyhDXODxnw_0D$~J|qQe>hvU6r`s5n7N9%w$i zwelK9bK_{jBX-JUn(r-JIJ^HNwv$u%cfck;jpS_{hc7j!-tG*;1o)A8|_qq+9 z;kbtB1T`dgIO25ly^FNX3pi`Wa_N!E{G`2qs@z+K)F`@rbs}HE%6&m!)UnYQb|jMh ziVoRfa~$6IYw&Kef9qTJ!(y!oY7?#;h6?TNt+GXwlC@D#<4T42jkBv$Qd`dA_4DcF zxqEhK*DjGYKW3wQuK3UxP2gfB(ckDV6_aJ}9xYS_7eloJ`$Kjj{&d<+`R;b zZMR-ZTSrZfBx+0WB$mz+qeER0yn% zBW;{Y!jSXW^`9&X+B%Y>D6CKVl)O53`Xd4FsCiJ^qQ!&0*N*rKm6ma|BFh|ygc@?| zGy&P=E%6e|yje(?&n`wB18L5XL@MH7CGM{N#bHs~N-BWl?kyhq1*P4d@RxAP=qtpY z2)_GPJMU}S0hdn_6W^QX;WU!h{*-;BJELZOI%;Q0uWB~@5M^!d2)EJKxd6*;zO^z2 zbwf?Xw{{@GoilENQm3Lo&ZPgZD!yP!sp0+qew_0$6EAtiFJ$^*r_SY*Nlfd;y_`^6 zpew^yG?mWM<5UT|lGW>{(%>J&8At)&K8a#3L%tO}%`?@6Myg)pq=k9N6SwSdmjHvk zcN#cGqBtn1(hfW#iM_3)1@==9U$emo4Q`(>TMxsDWt~S!18-%^g<5uey0iHbV=n&i zofRU_#r}i0_w=k>gcwdI$`tja&=vl4(VSGzxNgDmb%ceIa$?!?9*xB7WqRLaugjTy z?8MR2Xq@$~j5@5i(BH-}8*ykRa+&dz9&hgubaZPL!YfI#3gQslk|iNYD>O&*-_*<+0A5P?vKd!*Lk_T^>C{(_KcU=vI|p^gywI%7fvoVNwZ}1nb155RtOc!|6OWnIn`${0)_TH?s^h*BZEc3e|fWM^gpM60i zM?>Iaa--?tUq@X%$6~)v`CwIi{(r^}#)|U@ncJ`XNZx#lrkqgl)93`7RTY14o4eto zJ8s>+R3;(*>(;MYmNRx~Zs~~?JqEuDte{@YMBD*m=iS-Z$#plQW=(@Z!JWm2Vcq*~XjR%3@uExa8TiO&g@Hl)bTiyn5<9_DN{2 zBN~xVG5jG~X@~AGoICRDvAh>84zDBCO{?kG(W#6H&nVXs#4YiCHEZ2iV6mIC3Yf07 zT>XmxPBb%MM4~B`<^f<$o#X|YAXvz8d=%Z9cgrkO>S~Uhu2DWb%h~4$C4TEERp_kR z_Z~ekGc3B8OcZ@gp7m&kGc8y&qy;EfinMlFM>Y&Gj^X>N8}v1MU#|lflkA#{P%+@5nmitpj4j0N#o%;e^!Pco3qb1 zwZ?iU>q%i6O>aNh)uob{r!*1zT)k&--h@u;y;?zbN}LLC zGO{^kR8rr_m+%g9@N2g%O}nvg zYN&TZzgqL+vszX;ilLdSGnx*I&KX)+_TC7SOme}*Z3|l!_=;g@qe*FL`3yQ%~}M?VO3gqpOrJQDW4BVE<`$ST#*_}lh=8~)+m2}44qky>*Y zzUIhxj>>g9&~G+W^#b#;9OyuMSxA1Mz|yM1U*L=Ok*`LIrdf1E{>4#@$;j+NpR;sg zTenEAFme;c8z~31yvtsMwZgM)&|u+Z=7h4fYbpzjcsnb;2puu%kQ{c*6~zWhV5P|Q zJJM{SPzZ0(hi;eX#i@y9Ahn6YJUb!aSiCi*8Ol8A2$VeYv%MPVmMr2SM{xj`RAcfOaV;l+7R?}RzP9J(vsL`wB69FmRkSx z?2lJPzYvZ!vR_@bd1jxE8xg9IeZecBkNCXRq5x!t zbM^b`O0^VT%6eVF+I-=|Xy(}bo1bP&3-*00Kq)!k{!XW4f*~F-{M`@k{Kxuj!!iPjwJs{UTk8*j_p{3meM%Wwzxx`QwX~ zEs>xy_hK57`dnO2PdSlL+ph=TY?Z5+piOZlV>cH-o=?y$CC^N)# ztt7|AH=1?-{QdpsXtQ-{l&D+7Nco>wy2t)JhXFWBb*_0Xa@~5-1`-d{LiC!j%PVBm z54w%SZJ%ayRVlMyLQuY>69cHk&Av0Ylt$?ue_U?<5g zm8az2JpJw20yp?Hr@U(|EXt%&yP%p;4ct+8jzvMOt)JI7p9&D}y=|B~zSi}{dw`>j zd58nVnpWNq=#EzIggSduCPuP3(Y@2G%b4zU-JIb<43uAw+u-Us_U z@!7>sx~D?{byL-e1WV=V(wdI-B3`3_ur@D}P5&dSpEini}%Xi;|Js0!AfFzdT9U{ti z=Xk$$P%%;D0yx zF0I8x6$WCJjWC@uL!k$Szv1p$#WvK+BY!L^Z{OObD(D6)N+dC(5Pt<-EqvFtT)Hb@ z&~N<*n|X9m0?qC4+&7HyaUGIYTQN_we9LOvwFsQcoO-jnuOwl!`QK~BI z-Q1DtoI~Uc;fiiBjl$YKv$YS)!Jl9zD--(IY+>N)OV2Uq`X<}_!XSL1aZnLtiuz_% zpF$ol1`5Af<{>chQ9JshZu(1{CAaX@S*&0%&?h)=!?u_+U(MF_%goDqYw_6^y3??d z3KUO#ClxnG;J5FkXkes!&p+?vV3ud>XKcc}YDUZDbVBejMA&5Py-JzSCepG9fO>oR zTOqpOC2oZ=PD}e*H`oX;@hL|uU~y zUyJAh%tqVMG6vf|BH>6t`~40s?krm2Zt%AWOcr}*=rW;rgpay3EJU8Ww2 zk;_z#WJAy$&1^fwf9l+AXhyRmjD^AtXeEU&HK|bH@Rh{;V zB__A>elDl}Az%|Nl?Depo#FFLq$w>si_&>6rZ0c~4PdYEPeQrP+VRbiEwfR`h@Gbl zT3V^=?MJxmJDDxdX?HbtAalr%*UJ~waZcsr$v=k!!ALP7nKF{f<(AGoABxiC?2klg zsjr6*A@N2*4fg_tqg^`-E|@UZf1N1t5vkXP8|P~1M4r<5^c=0s4+0*!Duhe4kB4iz z*$jNr@58D(R6MPQVLNa4=YE0e)Z^EK3T8d|XgaSrZG{J*-oqGnzNQLKZ4e*2Cb3VN z0krU!@UYu`vR`Yx`i}$YKMgteOZ zZet+M?wYzkn{wC@7jyjZ2U5ryPu?bGZ0Ry87Nc#a9n+fXHV!S0xp!AE=mc zO&B^65+Jw56;LxW%s@QhTM_jRg@3am)Q8O1$K&Cw|qTKa;4Zr531hH76ddKbCeFcIIF zc>TsR11U3?+088)9QK4dto!B3$b%LTmddrML&mOn~habk#;m892@m8 z?eR0J5E`Djlg%q}Zw&<2$~bV;8IgLCp{7&Ov^yQ_#B&QW1R*BbCiRu)pPnO%k^x1} z)4`Ha#a(ak4pxcN{TIrfk2Q{z)RSClvMTS7M7^>cR>eJkud#B8B18JsD9QMbx` z1Vk9H2(R%IROJq+a9j;vGa)Ld5qqx$XDTqPE4@~m9m<*(vs3>b4%UufJ^}ha9z{Z% z_BhF}`K+s)9reF=_?cA6y&CUI3gyS8+)6@rlN)U&%k6>bf119A3w((rB=1c^AfS_$HL|unyI|3u-Q1Fj!naaD)4sF^6VI zFGySD7#@pUIi#5|d0$~eYDtex+EfgnKJlvjh%85R$rnmxT3f3(*I527?W% zZ)QHPNFj#qrZKebw@PIJz#QvHy?O6|hKc4}4+>GqAI$f7`1(dKwi`PakkiQXNUp>* zsW?vGhRhp(Y^1&kHuP~RExd!-@pVlWK2nH{yXD%dvNeU zNufl-sEmC?7Bw-iVYDDoESo|Vx5F%vGiEc7XG+ChYnnpEluKFe&52}9$#z-+Xr`rV zyGG90Tk|`V7hiZ+ha zk?--=u>(TQPBe{qySJk=Wp>o+P_p!wZldHzo7DA7!0W5(r8<%ymbi|w7K4|m7G-{4 zlLC`z{RxK3(OncN+SdQ10Je1)!fI@&mYRr>9D~}Ci^6g0Yz9a=1rXXyeza1iKxH$_ zJa(6(9|&Ud<_SkeZ~=SX_RMs|850&fCa)!fw5rH|AvO555oD=&v+MCB|Ey?RDicz2WB402Ud}0_^ZKA}gg*;wMXH+;Q z3u~weF=qBaeOINPT`>WV*MSer>?n;E1kpcQnLZk0#u=C2sh=Bk%MW|#)jjx!#dcMG zky{`To9}_sW!DM|>8W+;RsK16WOv$tKlw~*PN|(>FeeL9IeHma%zGZx8)rF@S(clp zg?psx`NyFP7UQPzE!2Bt!N{gDz$epWCRg-op#1C09Ox^;@r_`2I@h)fws(0H6fA*G zswG1DDh*RCA74(vpknS42m{PII16I2+qY6w?zX@D33EXZ9h%y-YXXxvyu0;5xk6{w zw74hTPd}R7=k6%M90=*hyuW!65{aTu2$Wo%0FGkW=HgvEPWZ6U@;19(aI7a^y9mO$cSoOIjXq@v$*4(oT`PttsFjeYuHLH$7=by;G;R@jcMkQT0 zx877N0H3g4L;N)%1EUF67XoHaKaUrHd+vhA@2o?S5>XvnC9JnojppQ=7TRZ z3yT_t!M-t1tfqp!J%^RZvC3!JT92|EfmD^T6Fi2J%sJiKj2!HaTc8)4Nx9d133R&;tC6rvKuOW3+P9 zS__siFDIXWH0ZzFeNW^Ps2tv$J)V!1N`u&QaYU!`4iY`?!&hR#C6q0$SjF@%t29w| znEzLP9(@0wV#N_*XPGm48!)dZSZljCyMC~d)}da~C%DFw1Hqa+0-#^<;*=lzQFi9V zU##UKh}|1{IHj#A@51^JBimaM$GhOJF{HN*y+mf%@+~3a-V0}aQSftE?gvxu}h+;Xt|cT{#sh3)6__=RZDNL$(uo4sXJRGl{BxN*fDk^FA3ih&T2 zp|-N?aT%a;6kEOriZ?KL7I2i6G)jL1(mtcCYCxc2F8{c4yx@*wO^gm!&BwGI^#Jnx zZjzG!OvO73F5Ail2v`WuqP8T=bJP(_NLdb+dC>0ZLUd3!`l7tgCBFAYi!3a7sewI^ zKH{B|JZnq4cq8smCE`x!L15p{-az=VnPL80@14G5T$95?n7XJ>`t(K9*ds(wTEyyI~v2(l##`e(}cR@~uVl`z_7#0gqNg^H3{7=Ar_} z{zj!PZ6GwrLAlBIzt!jIVBC)wf?~-HkI(msuQsI*5G5@sOw5{vcne|zGNrRGj-k*w zGUQNsnZbLQ8(jfbe!5kX7LBGP^8^)Dgb*3uMyDoUJt9DcCJve~tA$Ug1>*|vv(tK8 zi9;tJ`vIkhmUEUIzeNMrZW`0FSt#tVx>_8rnm&)sJC@ZQDR=tK4QhhZ&ZDKlK0k$! zdrEQioq}Emq8l<0>5iriWH$P!RzcZ=X|LkICunHhY%RtRxW_^fZdwaZFxs)%P;;}< zBJTfg+o2hRP}Q^n@R~H=M?v?_Q#*sf%`(@hiQgT}Hr6G5Oj_f|oUNGM%E>{Y3QWu* z3m&H6ZbTc!r<_IaOdN2fHUv@Gmom1`aY;s{2$&gQ^#}^F-Ywr4zXL&65kxHsD4&T{ z;gpM3rCw!XKpf6ROU+4%TL^E@sT&cZji+BMLIif`RG@ zi0M)(*zvtsLd})b);FnE=5V`CXUcjl(nK65#2R^?>&$!qCWG(U?5{Q;ZB3^}>Bg#i zZvo){XfvUU5X&A={wj#~R(me9f-y0B(){E2GRvugk|Sbt4#))i2?0>}a1#i)&&5DN zPgOQ#F?ir*qp&-OT$!{>(WZAqhJQdN!87k~ViPLSa4N;D0mtIJE4qEYuj0XPcKXSY z3$s@{B|T`K*C%t*IAyuS)h6Ev|2=ZnCGb@;vb*#mj={@FPfs%k2Sf^zEllJCCh4lF zWdD&G@?Rup1C!L{HML(lK_vO;HH^Om2fNS)P8FHg>>1ITQ;`8xhAO?76)R)2+wUhu zKp$AR9wlHN)(@RPsiF1~@t`9yIF-DGN?%-FsHv|y!6hlB86ke~<9tU>GVjTfy?Z{D zP*(TqSeZv%6VngOO~+~j`Ro*t7a@}zQFSSz9HCa=|7uMzgZ8WOf-?_1D=?1n+~Fsu z?r35km=1~=0n!E%1bYquyvt+DD~ms?d6W0>%njFvF7$B>082 zftVqN{Fz)?$~_yjWA#g}e%L|%LEoM%VsI9m%GK7fxhn&LsopZSl<3(Z0wyGJOL+)E zZo}h8Z(d$}jW+A{&b&N@4{y;kmRlz16+0mc@sMk-B>k-zz2B7*T{CvBQOGDmnhQxlK z?#4#~#rX8JUcMH>?CIG4+56Q4(;`9b4+2bMM0m8?{?+$|59iULC7xC$Xt){eP1}5V zh1ADg>sIaI8NoitzzHLps`z{>SbTQetAQ*d3*zrm%r@Ds2h47*W3VP)B75@;!8jwK z=>xc_@qLxLvx>8qRO+6IB0guLG8`CQs4Y&2?6jBILd8Y;#@m!Pz2s0c zcBeG!tWND%Uz_5Tuk(Tk_lA>y0Y=>j^H01C*jEtk%-6fmKv~#k$t?cQWb@H=f~D_9 zxTR>`2p{JBR4OMldj4|wE!UUIZ10$0TtM2W%HqFMeMTNNE2-_%d@l~|^BO#5H~CQc zt4Sb2yTR(o7zZYHyw|!YgyqZUXaHqU&n4|*HOw~(I}4p~#8;*+$Qx5fWTRZpt9BjA z{M4O!);>Y%y`irxHUZ|fVqvw`nr?s+1K^6`{mj*tPOS&;N{ndV9KpLJa|N+kKN}aM zb$jchj7VbY5$|yE{{}2;TWf)Vv$Nf<-gAhx!Q7Ezgee+REr(scB2!SaGfa44cF>A8 zc|0LS+y^RrL|&IFS=N>caNh!e?|I9>bvz9J7FG1aJ^uKmw{YhFkQM z06aC9yFW&xIQ%5X?Qh7Q_u>BC3IU9I>sAo%Uxr<`;^%o08sw;>!7rgD5B7CK%O=qm zxXA%akB+IO8FqxYk_o}}@oX@!?$rX1iBbfyC2r{UaK?gOd!=P7l1(x{G`sLCOZwab z`^hV^P<3kCuIBa^IwP6n_uR?`fkS?N>900!feC&NJ9rx<6#eodN9)mD*d|am;?5Dm z?IX7=b$*w77?@=T@u5&^ovSRmR{FWsdp3J%$08iacPr_>+9tWRD)PiYs=qhlr+uX; zrQPoZFFuaUeo!_~n+vI;!EE-0>qc-St%QJpc{7@OPvmwO&|IK|mLYhK)u~B1r>vOt z?W5bRIdcCla?#t?&`g0c5L=7yyD#-^;;#E4d^(pP3S(FX7wPR+lLg-y7y8xb+e=KQ zuu8h|0L1+4Q#LU44vaAeMU+y^LT+Ci3$tR6a`>27Z&qeUwq)^m7>0dVhef`Yu+X=l2o!3KvE&g z>=rzdkWAQZRS%zYtI@tt(XoxGD|L%fny$IojHCG{0l*Y5v02F{1>unRqHX`Vt0xlf zWFs_Ta)|~1?y`!nibYkJ!OCAAIWVT3k7be7ma?aZiT2Qsp>l3bNq89&(oSB~yLsXW zAe56#s88wZQ!t{p42Uhyf~_?BL4QWZ-X$mLB3#Z=aS*QM7l$mzcTZ_XNc{W~>|3aQ zXfR~TY$!UOW=K*%BmP$YJ_5gS0m^8f%MDb`HJ<8oeF#Oz;UO>08Xm>!UGt|5Ill-o zHOrXfUG%rt(7>O#Yg>1qsP~tDlH{wltFEHA)=tCOK?^|3A*LIqBu3i zb?WCw^gZ`qs98OO6^r|fBic3t1JGVKfWAaiFaeuTf_(3|r$QkyxK9m6hzAf(qL{0- zwY`|k&18i4VU2QO3PB6%Al(E0U-d56Lr=UlsgJdZw;7$QX?BZ>hCMT z%QCT8M5(P857ErMfeX2eb=!()du1Ya4WbQr>#_&m^<$)>J)*;L5Sc0^v1_r11 zQ>caaZNi}w@JUnvkVlNfzv_-C@w9LSd7^LlZcT5J&%m7MlP0g|W<;@{arA-HL+Xjj z0kWc5JZlx}I}?LV*Ppd#GZ&>d$dwaIQt!Ax(B&=oJiaeCYTZSgiYSla z#qb&8k5)oAUcOYprP5ZPI@_~h>Rx-(_T5WcJLq%^?AG`nCQ!Ua&eW}kUxrb>{l?Yn zZ^T8MNG+qP>ohPnn_myU0t*Qn>NKNYWkAhI~DSI&9BB63Dk5y>F!scS8?YRiT_RF26WO2GNt*JX7kAI_i^?T*ju8nSs#3=& zhvgEzi^1i{5vd1TgYHrf@>x$jPqtcIizA>^CPAgo0^(=l@a-b=q`k_iY1$*WXl1dtT~;A_Vz?twM}AAxBw$7<`CVXdXURj1_aoog zy}LBh@u9XZkhXHi={MMQ*1xqtD(gQq`kFhDx9#;-5O82MaF(aDK1>FT8|!P^lh5h- zA9t_?>4;v^YXo4lwOT%b1fB?t1vac&j{fK+-ZGgGQf4ZB7 zG$7FQw1GFQq(P^<$+)sdxQxmuRcdoin8oAQMD2a#2>7`^Vwm6{gD>hiu&@z;kbmrx zNE){5-$k!u^i^}l8hO<0<0OK>S8qEwpc8HaSdSSay=&qMq=}Swj4ua>`5pr#aTTT8 z%&W$IdXA*82MO%9!~AJxb~_@cnR%$Oiq4uO3H2z#xv3F?3_3c;RTGl!>=k&Y^Qa{m zZo_S1N_-sR$_@DMaKr7BN5YK+(V5f5uH8;STk`_b&#H3D5$&koA)C9~UwkTbc}kss zU-{)YN$*?`^9@U$@g_b0Bv6MwR^ew00!zndbB@@!6?7eS!2@6z&?10pr3FO#4Ej+D zoeE(eR;BbM}2-EV*%lP?4x{N0|TO-|KiP}#Rp3eydoAs@5718d2drEP}nL4$N zXd!&l#<7`K-DyFHVVAFZ5CvP;9%5Q}v>)qs5qL2Kr| zZkIsY5HGr%9H;QG*GH}?BO8n!n94ZLx7-b@+(VHN>j1U_efh=vvfi*D!$k}Fbx5qA zvN!kk>lM6I{L(`dT!zF2uMge*=yqQO-Zm5&m`zix6(ZT1|8XiKoW3P?dTu+4tKQ7N zZ!otOj^FAwy~`B(Hd#$OAy|dcHzYWP{#V^c1QJ+8unb_iqzgzAPk~cbV$1bu9aj$q z_N0gx7*N^b>PiVYIOrzKfR;}K*Cr8O0VM^+pdG2@6<>_mVPBgHy(1rY%j4i4S?aW6 zaH_;{C%)C~5X!F+V}i~}A@A+JXGy*#lltnEDsRX^iu97EGvbTiI7O{9`f07{!zU<^ zbKZRsYUVMAbz#UUH)5&`-^?>~S8xN?rYwrpjoWyQxF#2CIXwW@=Z$(7R+vKEr0xC; z2YBdyFuvMm@5_m}`mC0c>fhfxttV!2f-u1|369$MU_R+x5!+8?zqYIJ+?eJ&cBMPf z#ZgdhGwHe7!Fgrc7VCr$F|SUTRAo#ZDj&Y@uaaBL2cEd()E~^m6Eo9&ilyETmY^@A ztRCVk?m)3QZ7xebCW3`i-$oVzsU<+qNE8{4V|RPp0`@q=JHxDiF^7u!9@%Xh%QzS>G}1Pj zHHDG^8w&3Xr)WH~nId2xcjjs*tO!@=4X;Awueos((qHP#`g{!0sjsr^o+1S~Plhsn zO$6BrlInoy&i)P0EEXuO%ZTorYW_niTv0LZ?cZ`Zivb}d%SD|vVx+&XrzVT_>IZGx z`Yo-fw0?^L?QygI?S+}`hBzQ{Vq&h!1X?F(0P_>Oo@f?%pQ4{rXL!ZF4}xcrn|!DH z_hf>-Gu8&HE+?w1pG_BCP4tjRT|4Z}>>=6jqr-U77i^BgB@ranB!ULVXO z9O+i+TI84PYpZ7r!Fswh^mUyZc$mq|8Oynxz4#11j4Xd%UH95x{7!Or13mgckz-Yc zIO4YHZkc5ARPgqOl;Mi5oU`^wx#X=J^O7v{xqQRz90?Kov2RqI&TgO}g7`BJvIab( zo8z0ksRwn}+`^?`AIH=cBk;*rzH6M?`* zLH+^4?Dy|7VT=Sgugpyr3Q>f~f6@cjU_h|l2!1A{SPgfxPj#b%HJTkpIDBxvBBe3k zmIAxht!FYV3N5R*7v*-@AB-$Ah(1b!F>pfxyk`ae>Qe}m#uJg9lBIq%rLf*1n}6=+ zo|k$dRrX(*y{w1g=s&GWhi!hwl)j_!FDl$2wS21Yfd>to15X>*UtrOh}Y4${plsDBL z{Za6r1(^jD6Y9yI_BOau->KhQe%#2GADxW6dlrVI>l{V&Xg_%(FiTDl^Mq<4e9tS3 z9Go@7CODv4gmwJN-)r@^2*FgZoC!FeEVbMz?aDGMB8*CYybzn{lnd>$G-XDg!^kzz z3j3{G{z1`#jCRJEb1;+Xu%-hU3HAS!p_YCp^f$0?s+>0$f@-Lyq&1=69Q?E|muMvo z6vv&Xxp>*fG!x7-Hy7mm$1i6dLv5fDkL51Z>6#ekX_#ps;eDjz|B)2*{ND zI^bfk)^yy7eR@px?=Rp;IADAc4JS4Ii{Q+FnJKv?9nF^Lkicc^UnC|}!0@6%L_0($ zCotzsRYx4kbBMB@Hr^T~_aLhTy_MWuA{Zs&`sX?r8hjkLHDDd}AXn!Za`(XP#5q=U z;&N`|2t3wOqkRW?3V4j8KIl5%y#`w^uG~wnqYO%jnTxx-WtRX?fV!@@wF7KxDCzD{ z=Tp@{`yG^{C&)?tM;!xu896`f{7ypY{AZ;uD3Dw?HpBVtuSI$nxJ?DBvljG8G?*W$ZU#*hQr=UV6nnkyBi z`bGdn5Ct6P$R(LAlJ{8dn%&9&B{lkoA5#?_GTZNf)PGfPT~Qn-$B&+8u6N{0@Q%d; zN=AW<^K{agrU$s(#@1yBVw{EW28C;Gec30vQhkcPx+7N~$)5eGru|4F920*f<;(xI z)X?>No#G!Xme$rt2!=!g9Z`ll6}#X_`pEyP7#$8P+=C7xQq<>nF7tOi?z-mavo&?@ zzu^$&rgzQ8f^kB9$a9X3WF4#64em`R8TlInozRrf!WpEy$PQFq?2Pe2EUA=>GA_69 z#rk(2GN4rYySfOyR5L0;(7U4(RN{CuaQ@Yw z-%XJz5}~OpWX&#p^93Q@j8KJve1u#kmhM^6l>4qsoP;Z2S$K#0$(+?R{hD~u)^KwV zY#QLar8gYrM@j-y6x9DL1{azNs7mKr#c;T_tgTQyhS!xuHNfe28M&f>Cbea}#$RrX z&>lC8q@)oj?8373%(hX4sqQEz*?RVRPoHt6iUA@;YnWRO`8dio#z-Jjr8eBT52Wx< zOpwrUO5(;60Boj!-%$-v=&Qsx09t|p)J}13JL@0LjC?z?fK@}nM9CdnyHL2e9Fk0k zA@qTkpbM!9mK_|N(N+E5CRJO4aixB)F|n5<&j%<&Endbj9+EYAK zZBrzPgXgaqDOj+k(aF+1(=FRQpJtOX_&pjrP2T$x;i30V2L1>&aI>9*yN5M>iaPrS z;5TRrlKs%#GBt(<^{rVM((Rg?P%>>D*Ta~TBl(P%(d!nr2J`HU4&U`AgM6GV*6i+9 z6!L6MOem>jCt3)6Ul6Eq&75|^IfUB*O*}I{68yaQ`Qky`YgboPih#-XeS+|`=Q8(N zUw3O+NZQ#hMfR^)Zyv<9n95r+xFmN%9aDOWSpm1%u2@o5zq4gR{q^E12CBVqed|jX zh7veBmnz@TI7aC@Z>^~b5Y3)tI%o6AbaUpoaP!t&nNjI17u1eg*#=HDbDq~W?*0(L zIp<))USlgH4YFZ~$KJ^}J4vfa_ym^O6Xv}^OJrbh-|)}KY|q)uL}wZ^in&S9*zGeM zj2R2YL*PDdb`j$sjrs}b9wM_3dJ3r=WVOE*>Kuid39AdM~0y;dl z$N=+NUptUr$cUq9%nMcqzI+{9Z)x~$v+DQXyOV}Ow*#|Y)-hbGM)y5SiIo%)vrZSa zwNa=)=NVVV73q;B6?91{Zh_yO!aL$5-&}3lr8Cq1ZkDBj&vp+RUmKd#j%!YkWz4{d zoJpyyDfnfi{d?DC3Pl=7Lx z@tO=q97|34tV2PiF;ZE|1J~{94jpxl&0BXdhTXB2UH0{>c?VSuH5bev@B_z`+D8wP zvVjUN*I#F#u#i$v8Y-^$_5)inoN(PLgX@2r7HS>0IFjjBW~(#``huuSjId}`g4*^&|f2ki(gY}?k< zNTm?84(OEZjCv!40Aj^T-)4%XmII3Z-1rH{8(iBe(=U7E2wbXZu`{jFlZZ>2JC_ft|t>!4e zHKBQu?-a_NgcGRSPwygjga3w~;`@~;9ncoW*{El&owy89rDaC&59v{*T|Q)0Ifv^v zO%_d!1U!kBWKn||OEkrq*Cr!?^^3e5uVcgG4wakc56=#ZY#T#xXo%3=;V6IE&n=iq_z<2HxdY~Tka2R0$Oe|?+1ys4Kn4>uL|M>Xy2GSz z_-!L3S35}v9ySkt4#=;xWpE`j3%-0VQ2T~}1Fy3*`*kW~zQ~z}BOQ;AtC>MY({?Rl zG=WTaVmeRdOXKe}f0`DQR{KqrEOj}pf-nV10H16;HVuqeX%UL!^&+k?k19w9rqW&G zB^dQjp?rZuWP^+2tAVWPmz9dCe9P(2`JTqSNTs>DZ#mSa0Md^Q_=-(dA znA)q9H;tkw;;vZX@3>N$A!OSWq3xaja;9hmHLcySF@W5&?Pb#>r7Dwd<=Y$ESau>!sxe^h_}04shSDA}x-Z6IEv_3_rdp%P%75y=Rz~Bctuq$wP3cqE>d`;|wAJ4J`HOFk7b(s|?4n|dN?r>OS`h&Q#AIh%I1 zS3gRpl;?TX%ulGd9%p>l5OqFU% zq+4>Uj~-+8K9~|hNeI?Z-?VI|;tFJ8Dsvt>XqrHPx5mI$I(#`n3U;ky032mzg@ox# z5Q4!@f9WLGYtLeFbI${ISvEy-b^nZ6%?u;WKo=qe2zef!_U^sVg&AIsxD7eQZMk4Q zkRWwBxj!Disrdrzu~+$vPl0kgs8JX674*mIMuQ4n#|drc9QjbXV}&UkP#85(L=Kt}(K#W@A05v&FUWI;_xZiQ2 zg)@-ZiYbRD{61dXX5uA*dc~kc}aPlM7F&Nb+lcP=YoksTCBkB z<}K~03JklY5$u3!sEPb>KN4p#3VbPq2hvJU!GCb`MA@nAtDmL)ugkI%zD+%$KQpG4 z*|HXntM+gZIcl^%P>mz5D8hE8Ub}kU!)HZ&Ku}U}9BX0erPWs~(5y|CFfph;kd1jm zQl_gDkVdowRxnNlLD_!_a;jeO?D|%JoHb?#CAh2zpRe;y4)*Z%m>0Q}cWvF{q(C3~N-aG0A6P zTSu5?H1f#`1l8Z&eYuz4dQYQ2x^iLxW=%R0MC$yN5+ssX+tvta5n&FAA8Al8YSd)N zMHC}fvpk$EZTwDAosK9asR}uNLuZ_+3u?}KyX$M(AQXek|C)wDx3I8oiFHi`z)liL zZAE0ys4Gc>7~gq>GEBIz2>rp5r8K}35!JioFdq1++c3SGD#_kgp?HDFLMe*wx48@5 z-+tCGTvKT6#9Ee2%_JI=OPXcsA`(e)R3zZ+N~%NQ6>4AK!6q?u_=qO>;-aNU5XW|9*P9y*$_^o9M+2*ajnku$U*UA zuRry7jJvr6>!`a%=O|O*h;NPSK3%{bWYAZC=zUti`_MOnF_@9rgYIV?x+Kl{pkb+eZ zrF`!Es|QMlXwnZu>govgK)`l@@3St-o%q~1@7a)-P5_H}A=<5fvu1!$Z<-@5UoC)A z{}dI4C9<_TqZV<=~RV3k3&@;v{v`v*phU+UY2c>&aUfaZ3LeV2+0cl zZhFp^vmAb$2l9vJT(`|m)hhYf5w~1RaXUMe?w8Zth*E@?=4*UR&)MBuVem%E|mE)L6_N5fVIC-M+Q^uW~ zd8@_A(E!wU!D~ZL`6IDO;gZP6Gf7!Wyrf^xE{pC}^oJp1*wUAGEnh5>Ev0q-a$($; z8OR5t-((f;)PjWi<(+Z>q1Biq8y2`3CCBDpKbZjq);zL@F-M$NQVa)Jm5VGyGnawn zK}#38yX+~hpnw5VWY|RF^R9a}qj(htDA*+1g>k%BfZ<-M+5=>?rVvF@_Aq-l=|pN_ z^Z{tFWTVGY@9mV}d6DC#)&pZ#`-WLbO~#5ba=7)QtH{Q;%vqM;w5&rsAqt7#;?%>ziD+>Q zL(K_PUpN%sEptp{kv=MUuO2+gGb221B6R3%05 z&sc?}uTQAR&AySGmfu8u76rGAVV8p6>~o?W3T<@XgiUR%dNVH$%_J7(#LJS{%btZz3=GF&)IlF%$#`-U{Z_b z%-B_3qLRI5BIdK1gX2e1<=_InO<3dgzoRBM^&pg?@);6xvB)4YXu{M@EZd{lW`SG3 zdZ#0BJ0C!X*oT+29NRN9ADyWJI}uqSu8Su8(jdGNOdbk!RRKnm94rWCtoj~Rkh+*Xm$GZ z2iL?eV!OoKMgtRT8bAMw-QY40Y72bE zM?*J!`i;>*qo=uW_FBFgdGY*U{6!Iie(@E)+PxcMRx>3K_N<(aK&}bWTG3Eo|JMjV zT{(-LVHQ{6Kn=iA_cPN_RhjgQei}NBvV3!KAzNs`y4xw4P>C?I>($HKLhF zWxh`~OfuPuPIZ+M2FuJR-}EilvH#$BEm9^1L~o-T7xptaoUzG@L%^vD}qTdPM1YJ$yfPl!eMBhSfOd^QbdgdlZy%SU{D;1jQ{r=;Pu#HDVI2-37UvGOV$DR?NSN?b0I6f4I!kob8xCy$VtEW7 zI3EFGG$G{rQg_Eg5P>86foxkeF7PghR~y6$b(6^#K+dH>4?lQK0XxVP`(mGEZ3jFE zIqip-Lb89&Mzu-OS3?W~_#c25gPpHTM@P_pN=#q8I6qLK;V?5?75cv@nx<8jDzRau zi?_ab@|tV->TVKizgYT8tqB9Fs2+0RAHF!s+i5A)VerH(h?rb{ zpH^7%|Enn>p+7tH7wq8GQuj`pjG4VFKoUuHhRU;Sr88iG={lOKzPSF3FycvZx4{+M%3%v(QuJg^pGUU;vf@fMBNyg_nwryYOWAyJPG98kIhcEv+ z@58Ghx&~%F9f2qNWD#qi_hIAK{M$E^)9A!AA?%TCci_n|1Qa$fu#}$Je&DJq*O=eh z6dJk@fDDXvGZH&9yOD_n%$?5CJTat*w4J+hrDAo>KxP#rJ2MtgUKTQGH($Y#$3H*e z@&ws>H|#)1PnIJB{wztU>%yIA#3{)5&z`wS0j}67e@cR zKo1^;LBx6+UXhi@kz)9Q-dj{?Bn-?>4n15)mhR|sopjwbQ5LZ2XbL&gy<9-;&o+W5O>RelT4SYYLBg#?7Kbu{AV9uA zNgHoTna5#W6@({KbnMd z!p_durgs+E0)Gbs0?kx-Uw?ZLK?K0hPej%aK1ldkYwkp3;IeW=`LqnDi#c(VVC46K zi`UByi`YHhm)JmXYcVa5g1}|X_{j13*4i1(K`yJZLcm&T4Yj6(i1zT`D0o_xn%s7b z!hMS_mT>>)S3DH&sey7zCTu?aG_+|JJb*q`RrD#6lT~Jyz2V`B|Bw>H#E^l$d56*L^a30q#cNuBsAtB>V;2*$tpPi<_Big@SyLR(_8iwQ#Y$3cgwms$YJ>y71C`E%lKE@ zenTg-V9?AiGS6mDhLeXfShQ(@hdE$)UYYK)qW9bx{i$=R7f(+vG-5o&P*bT- zMF_xy;Rkv+i8q6xO+?Pf{XZ+MFo*L69^I@25P#wIWy>3}O%-M9%1vd#HEVOiXtKbi zDee9Zs+?eFUPU)qZ7WblY=LBhH*q!)8jd%UR{#u>r>Vjevrg-={iuCVlLqFH)zZ51eilziek zB9Z!c_E%mDCM?gXGZ+Ea?<}T{L zx3d@X91c<8G~1TTJ07_d4fT4!GJ3c|ym{-78^XzA<8u;nmFa0E6hjA;8VhX-E%9Ng zk9?fj;a?aB_fSq#+*r<1L^pNmzgV0lI?FA&jI3Y4^fk3Pc})+U(c*QSMi5Q)F>527 z18#9kjWMH%09Oc%ZFyTtfK1k@H7F$|WyQ^`Loc~`;CFcJS$ohxvNTW?Iiez)MAbS> z#35E52F8Zd)Y9BZVz_-n?I;&Ob7C2LqfUmyoCr?ZjwlvY5~LZMHg5}Ci|AlN+K&9@ z#Gr)zXXlX{E3uQ&)zlkRM~J92{ln8YSLSYMr230YeAx+;Ma$5&J!wq2gSvtz6w4pn zF=9w?@aK^dN_S$FN)(+BipP)k8oYIc;-AsK&|Y@TL2lwjw>YF~O?*aTpEHaRDjPAQ z%Y$JN+muJ@Lv}_5B2!A2xg@lB&}S^@jYfhcbgI?Sd{`JW5is0&J`dRtee=$Wq-C>y zNQVMMkalHQy`fuf3eG9|k#P@D$wL((0xN>5MSIjKju8Q(c?wCaU>bzq?I@4I$P}yN zEp@oSaT8Yv9IdA-_YyFZN|GHXC4p31n^&ovD%m%9l2>s2$wl%2o()J8MLUnu@$iU} z9!HKwdtVpK^l4uu%AY1NDRl(70OYjvApbCeF4P<91c7rs;UchHKW+!0QO^m`to}?D zS)uFKpb{j>YH_o6UDPph|GUyC;}Fk(paV!}yP4>DlS185WTy3t^2?LX*FE7UQVqc{ zK;X*aaGzhQEt!tH3=L#nvmVI`gtSSDQg&g&j@4Xr2QzS(QSd(_l0lz$?*AHHoJNM=YIiHLKH@ORPk<|LGLQ4eKRlDw&NeJLe{r+=M4NDH|=VkOqe1^0@@;#JkhLd!=KF-HFSB!H_ zrGV6L2Twf^se>K+xlvkmq{>1tnWdc#r1yH)W=FS1g?wOS+|@kD?nuS2`WjdKlSFT= zl~ift6j^GMIgyISA<7PJk=MN%2yG$Frd}BCF&v2OZwJBbOj|ER{}lA0OnmCx^L?Tx zj(<46vEc@gJMR0B_wM)2rxW&6Mvac@Lmy+TNAHV6*ZFWb(_RrJGXnXDB9lnx1b?U6PvL>OQKIc9SH$yG0n`iO+oowRVZkt-@$VG+Ug4O zz(BcmF9+-~z&37bS{*|XiTh%(FGX|BvkR*-rbTNaGI^oa>>9{ZC1PL$)h}t|a#C&F ziSjW)XbDWODPoFqxsIdK^~4wJe3Q2)1A_MZwDN7dkc{On)7#BSe~9=`0km_~B)Gff ze^KsFF9hW7bK*9Fr`>j>-T@EpCn)k-F~tfFLllBh5|0S=lO!`lMR$W+MY1>&wbI$K6BKs;m5re5RN9y{2brk}K$a zfle+dZDJGAV>e=L@F7Kg#wkO%b5T3ocs{@Ov!_yM z=1fHg#2aLTS0dn09b~yZw)5sC3VWwCH$@PQZgWjv*uYvnk8x8eWnL>RcO>PBk*}We zPa`&h02=CI>Cn56KY;CK0xxdrzo-sQkOW%$A$uUy@)G6p3u9?BDh3UaaCpBXSwDKb zj`tho$FUxNd=W|K;B&4$p!K+QejugH*LLCLxXJ-ZUCyo$&oYu?d-hiBz&(R`+s!fP z4GWT1^xdu84vj!MmznY3Wst_^v#zQp_xcfvPJ{&wn5%cHUa+JYw2YAWiv*0De>fd- z<#E~9JBP%?P6gLtLqC3izTnT*lPYZYerod;+Ggpw8KM%H?BwuiT8C2ahs=K=5c;`ZBz0{kYmwdV-I=Me&8cig|VH6g%1iCQK4xRM`YnYa(MUH214_QtmIrL0B^l-+z_*j$(2X`QyQ)ot@{P5KrS4V zvt_-JAP+nusX?Lo$pXtpuH*)U7RlwVI4RSg2?Yp#FQ1xOF9<6r6~I`1%E2h@@*=Zq zgk3{CoQjKeuZn)=?!CO}rB=&fY=T^Gp@H`6W`LR`Q-OuQZGFsrw}O zO9kGq=R6Iuqh^WfTX*_S3pK`uJSLd|>LQd`QALKm-ke$inyVh##Y??%5DIi>?05nUotJ*vnNi-}g4pv9)V%-^ zc{Ai1UmtX!Bm*-rn}#Lj(Bg=lnH@|@C3fn`_D3x|2uPqb=X8f)S5I=a-L&S?xYK3? zH`?W#QN2KU;CmwURMS^_xpMWkYn>E})!1@t)dUgzz*w^F2{xmC2Q{p>5BHvKw#r2U z8h62I4)UvrMMvy~jY@9@h$9xYFXV80qP_K499fSP^1|JZd(Vbfp}A_TZDG4)n%ou} z_+)PXeT+`kO~aJg?+O0yHj<=u4{C0hZW!B-KdKV!Plq(g?ocQBYRdSC{i#T zs7$9DyB!U7B|BPN;QJmO*nx;k3al*&;u@C-(dCbw?u$M62Kh~}tH4Cy($Kh%VjkS3Txhcy&oi^s&G)9!M5XiM}E>cGzzQano4dfROPT3;1cyenLfD zlN2@-J^3tbJxHrx!lblu5TW#GP#z3L%GgM`1kc?x3ZiLpALiEDKXky?YMqFbeD57E zZY0hJ`h!ZAKAsK~=%t~t9_2Oo)f#V(MJZ*rt^eNtHLCrp(h=TZ6V)zhe9zUNZ) z^38DzLF$7=61~HP?T){q+BzNwVEyKywyC_BF{@)@#H}`i7yT3xr{**H!&9y}1bwiw zB(~+WKu483k9tRTZ*woR6599xwfmH=fDfK;LMj#5xX0LcjQIz(2(Yfp;m!(Jy1|l+ zN4(6o5q-`w4zG_mokE~S zDm=MpkvK{%MH+jfKR5u6#TqzQ91 zia;fd$6JO&B1?Y#+cgm=s_>YZp|q&34syIYTSVa-nU23Xc`oEq{jt{A%07g*M7B|{ zrWNc9u#CrHnQV{(?66T_#W@G=*0?0^uIukD?xuYOSyHZfS8dR+Nj&vmwnK~Lqldul zI8{XivgXb}=VK@rj-cRyq8#4xBMg>LqgLev)|nKY_-i*LQW%{6d`BF2dd9%cPzhK& zU_GwdLIwuF$L+|!HrgyD zU-GuxG|A3#^A1?L)5UW$y8_Q+)og7LzI9xM4s^vA5{WWe6twn!cOt_AK#DMK3dExN zCx*p05GSW;BC0IA&;un7mD6vYWt(wrh##(8lwia!G zj;?-^;-H#Qy78}nTomdc4bJ4M7)~lOey(y=sHqG43d|#pe^!JVK!QIvY5lGj2@B=o zrPwFzJ5%-7hqVN*Hq5~QN@^Q@hYe{W;MT{AI-n~$R*vv)wV@(=U3LTW;n^|##(qR- zX3Xywrf9RHw1*;a(-9-W^^R(EtWAl+2#&_#+5Pou*|-yw&E!77rZu%j4j^_p_QY?a zvkD06sivC^udbatnIdN<%0jK?wWC|hP=hxy`9U#oLsU26qfuyffx+mw(JT;9QMNJj z=ifyMDVVs-A7DXB$+y?pTFq$VV?%h8XjMaf{(lF^I^Lb&(_y&HEvYRH{=)ifE9ICz ztDA9qrIJ$il^)3a-^VFp%HwDK0wPR14FiaJ-M)P@FS7?=F3hKAbP{RpCxJF38!S~a z#$s$rC7=C`amN0q0BhN)>%K# zj>-2VqjRIDLq#xxOH6ld_{`NRLZeo)bhw1W+_dvCD*FVcAo5Zcb9q2b5LZ<1NlPRI ztPLWdQpJ$%)Pk3G#LUvJDpOlQ9isTY$G0(vSRNm7xB^BJVc`kSzUgSV6Z3yR`T@k) z5S6t*O`bW6t@-Qt9bxxKM@77eihoISM!kA(1%yQHrnP`V0~;lNuY!S$bwXk`Bmk!93 z9fTFNdoNiz3pH>{octku^*HMH%1`~MT?q$%do{RA`+D$51t64dh{=>(v!Soak_Wy;r6v;vR-tFFqK(}S>zCsig{R z0xtX^*(0F50EUCE2o|Jx!x&csG9LKp!w<}D@uZul!7go#24u0IMvgcmk0OOs?K15d5KX4fi!JK5O0XR9PiI-zJdVCIHN6M1JOgqA@ktsq4fCeO}pAfLOeim9SV zW^OW@4G(b^2vUM%>5^&A`9uH3c_s_F{rKI1P-bZrn`MUr<=@If@-yXe;VR{Q z8hvSyh-NJm&Xn4)Oo;~{&-gFE2}5$N*VtF!#;vYHj z%rVo!>2g-9oMlX+5*YgID~|aE5&asa;zBKg_otHW7&EEvHcU>?{QWBe1>1qN?gCY! z9C-(#Jl+iq88%Qvxt{90ic1w-+cq0=SYVsr{d+(Jxp1e_ouh07{;^cbLSp(idNkgV z&3|(jbRL`oDiN$0Tk;@^?98_OK5T@0>dm>OZj8`gN{)r-(r(w4#b5k{pJ*tCIbb$H zrD+!1a9vFt>b~`ydtR384Kau({mafjOA|m zczi7$K*B#g1>~G*#nUqnVrcf(Y6;FEY`s0#;aG|Gg}4SR@aj~+ zNZU1M^CCc=oIHKA)#KwOgJU2C+gHH3oE^fSw1(|gp67y7Q8qs2vw5aHw^ zCO6KeVsDsyk6f)=dLLXx`5RY9qLRxeH8p}-DJSmB?b(O6WQponAG4Xl$|s!Y|6c@| zf1A|O&qW^rKKYFC6d5x?xSVL`=R0TC-i-q%ZiNj7?&0s_lici&h%| zv~-q-T-s%y7~>f+U@>8EMLth`vD*u+U&r=~uzO9N9YByK(uWNQQpPHN;wo%02!X?y zI{}AWd^ikoqE}^9O+j7+ln6s#i$5o$%wM&8#Zo4O-6+}5)g;lXTd%yNM^QYb&||?< zE615}Z=3^X?D)SY?*;aulB;eg+Uv2BRHAqwlM>Fh=!6Xh8Yyq~7Hq>C6aX?*)h3i& zFQVqBOG#-hU{}j83Cf)=T3Yh~OzW;t#}D%#zzchefVb6fO6dl9>Ozt95tKsuuja4N7P|&s**> zD$TINSF%{1?}5`1xu%+|4?vPlrfDFmRXdtiA0jtx9umNRYa1NLGVuz`v8prdNOuK0lI_-nGG8&|M8zWy>0MXSmQ^HXqZLx3WP%l^%EYNIY`!!7e%~R~Jph z0b!tV1^gW!W?oM8YRgIma($SrdB)%>xu}Jdbe{n42vQwd*q;whv=7eo%)pihD2;|4 zv&l7Am{(}?f$0gRKdtAIFzOs3m51k(3Z>+>zVlYWeL$Py?v@|-d80Z>KtGxHR>z?*W% zcqi0WgJiyN(q_4K4Uh1lIY;Bt7fZNkaTaUk_Ib>O^KJ4&|09iu^uS}Yzw6U7phNed z6Pi&Iz@#-ewClfpon*G~Fc_r6J!$I#Nt>dU{)61G}*t8Ajoaf|47SUY^QJ%>$-YKAS2D@&wZ#A*P^f_BaOHl z0_W|Ncd!-tT(p>&n2&*GM=&Ujo|wLU;FQ6Cn(C1z zyL8{<3ium_(JZ6IH`IwLHC4E(07kypQLy-wMPo0pd4cLaAPrC9@?@zitMJ%_3}#1TX}}yg5GP>O#0# znZ=}~;e%1cF_ehL;Tl;Q-j8>ga%wJd9bEgvwZD9$nj!Cy@U6zn6TKHa)>E;t+^Yzp zUCzjJ^RtB0yB>da>bIkQzR`oYYbV~m7 zfF&j$50OKv_=o_!VHnk{HoAYYc?86?Pj0K9Pfa+%D_N8xdr=q2pMd=xu~GpeE{Q#b zcx7CH;>vv_Hd6M+pCW)C>e(MyCk1TN>3D=YPG|W!gL?SME3W+y1OF^(L@~zD@jbPS^lh5Nu<5t z$7W(oT?Xdy#FksR1VY%??4rZ;2kd_{fwM}GBE@1*iBF(AKyVSxx-)*0gV%+!Du1Mo zo~)t~1)lmG!QY}9I<}+|SB~)~WuI|=-t1lc@qudiH*-mLGDqOx16v%ayYye>$fjh+ z?E$`1z%B*otAm2QV{$i?IM{tWM*4M&{v*sOYQ-wqPi&4XQ2v9Uea^=37 z{){r38SB1i2P2zNS}Q@KRhS(%>y~*S2>)5^O0&VxF9?>`TQ9u{g5mKGrn9>ro~N#Z zdhE3;F6RiyASDnXoOH^#?laXSWKU0^ZN|=S-i+6{@7M&^K>~)0XQE3sHR)m+U6$ZD zRsWLAdRQmh@#i&pcNh74y)w}Zvx68ypocDH-K1?l^=01ACE&BokQKNJi8TgG0-dpI z2ACG-?ctHg6)oslEPkJc5y&TSM5S<|83Rw6!K7`>Sg2zVl>u>94}O_(+ZbCNw+`3U z8o&T0PY=zF@m2tZyd-C72@cg&uS=J$2~u5deHI~2&BvKpYI9ecNpM_GHTmmq(T*>O zh7NVX1uP(>xj>Ib@p2-dGSu?FeLvY7$LXlV$~Mnwm{<>MK{%JBQdXD)%djHsfqPXz1YXabd{h=L zHv6=$ig!>|!6jzJb7^mu{-krWn`^Pk);m!!L&C9nHHhJ6^brE$FKL+E#R8-)@eVTQ z`Upo+(*o~+d26U8m=^$HlS-xhFsUrI?`4oA*LX%`oY$=V)u>U|ZLL!BMyKsDU$;wn zS;P~lvN`+v;;VekfJKc4o2)GiB>Nv-EI3Sbn(C=?Hlq}~pD-eZn3-Ums)(AVL;`&X zh|uXdN=EYGi3XEI5 z*S_uMiQ{yy3eah8N8Z0%4`Tf>%!iGl23TqTCLT-%w8G%G80UGLhryjSsB9!wyq zqUUJ8wC9=wA<3KmXh*SwML{AxiZnfNhw&#!&1g+MdONZ{An_`0aF`nqg3quK)8j9) zY^CPtiHWjw`+c>()(p+Tp~omhf*mjp`4d9XQxW^r`1TfT#to z6f}VJd*I+*us;7a9w+i=AAkkVU{3nZ0GGc_4Lcb+{PCDB++5`_{GQuQrpEU*lTxm} zN9(e7WrloPp>YXihv_(Bq^lHBK<)#LD3sFg)q=M%g~dyJCt8mL4jc5ITqB)^`XhXd zD;so7rc-o!f$Yrm^xf85I6{#Kjz%_d8xsc7}ouWYq?)ef!))5vGr zhkao|bA6+;xiv81CSwA23fc<)TAYd5H7I=9q~QPJ{BX=delQ@inQ}U*r)n^G24;a6 z3jG78z+bVyZ$0WdtD(O&zT-%Eeb%%fo7%oHIn*xFC2A~4_d2mMoORHoW~@D9LsnUS>aZ##DINfl zaJhGVNy;U&FQW7RFfWG)T2AbYVU3q)*L9Wl{~b0v4jkrl{$@ELOR+gHTMMn+;}N5P zgv|KONtx%R;f4~w?p%fQx9`axRR0cP(Y{K8@f^mq zn8e#Sv-+2XGT>{16x)TD8lRQljicVgBp?>qK3hn$#V|~N{X>rP$sA9(yQ35r;KT5y zAU>}4wOpRM@6Vu11G5BKgfbP*-;x=fNjq1V`!Ulgm|M0j^9!++dUhJmea>7d1&6(~ zvPVDQK@gAJ35+&RtZ@K7a>)RjhJ@@Z3{{!+MV4vh%_F~lRY5E|D6PAW=FXZ(!ySzZ z0R8H&o?J<PXkBQGiV;ee<2a4dCTnn zOZbj9!vs=zFolN%8H9c}oZGw&jmuN}GPu=^{?#(Uh)F}*V8ZdxLfKVmphi?|)M z{7GP<`Ht8KMg3&AVUjAee3%=`nJ9UA-fv9tQFufoe=7^{o+qIj#Qzi4fhOGj&b?mW z0)MB4+pQ>^j`BJ;?{rrag%kf~LB|FHQ+vc~S%$AF2T6K}{BV>kQZ0+0({CfvK*UX@ zt<%g*X446EPL~mzMql^S5?+v4g-j`G=$-v3HfXIgsLQmy5URjQQ&+Qe&JhyfC{$A+ z2K=^0hq_PT{H0Bq@Z!1>RgBlEis@C0Zb*^6)|bL;azaC%b!F$-0C=U#Cn#~*<2eX(lRldMQh=iVs)-V$)?A{ziIyWw@$sJ$g2}BZQ=rRu z%=T^(Z77C32gQ>%C|awf3>D~@p(~)%F+z~h#c)*58eJA)BsEZaa1&_?Z+>Z*YmJWMp`;+K) zvE+_6D9xKoJIMWq+R!JWNhc$Nkb{cBQ~%5%IUg~-A}z;72(Q?8_PjM8LLvQYSHmy})m$~aom+z#V#TAJ90Tr~4iQEryQN~TPe20jYp}|i^*3WdC=$`fFb*T%%50>H!an%kV zu4b#Ex2gQ06|b|*F|^~Rp|}n-@466|#|x^#cX`fj?Bb!&KY0;=-8@O2hvzF2g^sqE zXf`2cMz7>AA6t~%DS6AVD2pipKIjA>$XKtm>ngc_cv#-Kp3`;_VK+H-_dmrpL_MP39qJLXc;KFkrVHP~u9t3e=FchD;=UbfCjG5^1dGq=-#7oIRv z>-bW~mtr|FBy~#JAR;AO5HH4F1+{n2aUGLCu6hpK$bXwc)X~T=;n@YxEuD(#LRn9( zC}Kl{C}ye*01kNrf9oL}cfsnx*4ZM0qSy)igRy(#5!q#XiQ0B`>7R=1sa{o~@dg;R zHg2@*_!(RUMxKmB4cVOCvjDdKucQNO$i_5kM)SL#056g!Q<73hBdAxMP#y1w%Z4$> zO}F~#$H-xsW~T?JqLh988x?UzPZdm_QH3$pru9(S5vYQLOy3@6P{^IYmA6 z_|l!=WGHg0;hckYQzKai3plP^9xhX&Xv`gK?*Sm8cXx?mFF_DbturWp``!b?r7jZJ zpH=&{p`cOg54_%XNk>O&??JSXNz9cu)mVq4#nC(_AGtlL%L1_kPLK#yWeoQr%9L@- zVtM)XXZ~M#k$~Bke)YQwvj{%lFV~pFL&h?xR@!<&lzVPX_qqHl3Gqh!sCPO5|33i0 zI7kwdmAsWeho!k8A&r14Wy4y;B70QreYzSGqRmmDpe9mwGG)Y?thu~@x>_AVz9tgO z#4jG@1_fNV_3yf7%)qz~A6J>`qx+a%hvvy^dak>@zcFOj;$(0=EqeNI&R^XANPm#O z8F}^PTC0y6@*Qv;;-aYrIjggR8q+lRDE-eZFobDLg_eVG`t>%sXF2`a4k`WI5I9tV z7w!K?VDirKfl2mu%Vn%HG2ynzYOZ@DAGJ)7LSN0>shz;jaM3mKJdz&O|4K#MZXb!gOIwyX>`Ik--YX;>bX$&t(^C{wcm z{Zz4@eS|d(6RJXpXjL`)2pw{|z*aHvq$x$jh{mf-S;)G`y&}G@t(^+^(EXq3LSLSC z;WE|Ei}kl%Qyia-_X?#&2aJ8xX^j}(cZk1{KsRgfbiKtR6&3#^^YLZO_LoD5y~KfK zi6!P`xo?cl@@3iL_}Bpe>1=Irf}MPz3U}73eqgP(BW5=iQx%3~=_>-c+#2%lA%T?OD0?{!jxAvMte+|IKFW zuPRnF12oKr894+I#y7)&u6c4OoPA4n2i+SrO&_dLqlI}Q7T;~w3PQ4MP0^_PPuNfD z#{BopD)Q!uwB1!Z*w}FuiBLdBz8gCSI_|F%)nAP|@&G|qt(<-NGs=e*Ympv|9q~aUh01=R!se^!nT?|`;nnK>y(x2WpvsMzT@XkDLRn_~8OlVN~I{RP&jpJIsR0)WoRb zOp*!Ju=u0{Y9K}@QfZ*1gR>pY2B)}(D)Nl~G6a$m;KEpm6r#@cFD8n#*~2(DI-FOVEb3b&*hH-FRQieV*ZP%UUXQUYb_nh@ zKPN|tVuz_(*NgJONtUAEpkPvo$<%`Ipio}dE3!q5J z!gJcf5%-Y@DaX|^gmwH5)!Emux6s!G`7e&4vhjDy5_*CgZVemmxtU7iHahh}isFTv z162<>eYYfAM9f`ld9IV1TgJZC zx-ORZA^qVX__f55fiQa2#M(uMnti7zA2tB@>UT-c=>YQ$k;q zcPTCu?@6e|>1YfL41EOk^ibW~4@})Ty4G()2r1>R=fWPsEYAuzO(wX$tR%eUBIq-y%@*a^l%EgYQ%*TT}I4B8Bked7dy8Gc2pM z_rzofOr5ZZepIWnhZ7FEICTrAZ z2MFHMxod`NpNW_vYy8bZ0g?p8#Ly&8FX6tZ5!b2_uztsxtd?THCluPE0XSlDIw<$0 zwGxC9h3V!$>)+wU@w03U4R|bx!t!$l(q;3=L<}((wS?x;rm*CcAJu01$#fspJJadV zz==+%#qs*qcdm+yv@$19YXs;f)vau_Y5wnyKgID4N|mIYQEovMh~!m8?cI4ob2caN zmi`{t{-eT_LmA)D6~Lc%?FhYU3ffs>>3F)!C_gfCym|Y~?FiHU{|77M2^fb!B%-mr zu$u>23ntMwK7B&`z&L;zJ3zbUyDy$wGEYL~=9b>B@G$T;w)3q$)#ehKQt>4?6nsql zz1hUXq%KOv<>6~Ow!cxcxb7&AHF0;oZS-Kc?CE=D4+dRI!QSjVa!J@(MA_S2?$w59 z@HphZPg#_gPo$#WMSRL6e$Y{Nt*u-nwNBvqHF(;E)|`@0)d*}F71m1D{Mv?Dk3pkZd)WFOMR;oZx zd^^gZ{0R|+WVGo=mjxz7hrEqo0$x(Go#4<#pr8+9i>N?&2MNVZR;g~7{QP&zk`125V6&-sD`PT9XW0op-T4>Ba?9J9_^U~VlD zGaqoHpw`Ook6(6cfu)3$O$YMsu--Ykc&6^42qgNs+>zM-a}isL{Q8KRiOx2_qceX` zto&d3_k5suQ{$CaQ_S34jMZJNcCKRx$u3i5S4vt4C0<~b9fq3)I~#p6Y}=7k!5ki1Xt)G6VuduKvB%!*+!Z>WU~ zyoiww#~$8^Kw;l$l83j`*Cl+3fx36%+|$uo%wJY??%p}}{h!AKJT*QZbjiO;i7Aj>2{5N79({s*-=puk)G_ty2@{OK( zB|lIf_K4&|n@o5B*KN8s?m?J&@_>58Jtc6;|K$i6;f4DrQY9M%fs7bh&com1JizhL zPJ{HJ3<&QW!~727!@F@NJq^ui^>7}f|FE5c$$pdQaduf#5#E4z<>}~UjH8)Ry>>L7 zW{Rs(+<^+@?=GzWtHWjR#a5UDk**j=C<_Y|PEq7qCjUPCWgkRju|NLD=89VyX8W`P zh=oX(pf2LyhLq{z&^O0AyqB(R!D_s}iA#UUsVLMGbM|Q>-YXTb0zxF2Ge6%XgRoHj zeI4P<4)dukZE9~;>9tT;e7q!KJ{zkTJ zjK@xhCB73Fb;mX~Tc?1^ZfgNux9etyGdk#;bGO3M4E9G4lbzYX zby4a#su6xmj`BZs0FhvG?FTV>luh`OWU zgdQ(-)&@1uli#@dyU-gM#~*luoYI(p-^0N_2^$<^lmmdWOUZ;xj44StWZ>#);d2}4 zx(0$Vj0>`z4UbIv`H(iqwF-V5HG9pq6W4T^WsJM84I=a)zPUu^82xd!>{b@3C=)) z_!&I2*lu>WI@@GGfJVjB9tvG+$45X~6tHuuyy3PYcNzep*V0wR)vF@G4yB~bF+vxp zlLSzKbic|~=yvioh51ig-_W4o@;Ifg{mFWN5uq|I^cuBfqovgUwBYj5^R)vn!f|d^ zlC6$GoxcG$smHF@z;nK+;>8SbV=(-2L`frV#2SllyG3&DBh&vBWDGsuF^8pRMT_EQyZ;!48%~x! zb5P|}T~*2&Vmt~mE^BCjj}1T=OpT!MKSrkw5;-Yo%)d)WU^-TYP1oT<<0irnmD$D0 zrMwuR=0zz%r4oSE=-+_%VZn2}vxRCQfHv5?1u>CC&RG1*c8F`=hw_hkcPj0{|<6uOo%lZpld5gPm;2rdIEa z?(^99N)UggBK%uKc~86S*4vA~F<<$-Rza#M$m^o6GxXQfZ7#bIFc$RI#Ytjz(qxBA zt?!;={CK%0QC80L{sT$FYuCvodA#w@1j6URP1ZD^12N}@guw= z9&8KCpN0)Q8P}DBiy(ZTu{shvBY0WqDU`(tV{3CQJ;y5S_IBJ7L4#0}fvJ-%FBirK ziJz_>bs1860VlR6+iHTJfC<_3<6E`Q|M+rwNcQt3tXmO-hQ4zOrDia#q=A5d-(9d1l#6*|4$IXlqs|gcH_OX0eEqklN2yh z1A&j+z>zL;UsFo*gO$f`zABZHkQWtonwM_n*WirTNnpW@;9g%LSjO!iD%3BG)6zv3jzcLtFvQo2a)JajjS}KcD%gr=lFW&Cgow)g)JoG=vrkQoy+y%CFqyu%x z<;~-vPk10H(=LnL{@^TnZMk) z+&hjb+VpkM_g=q~EUeNohGdP!&;4A{5rM%p#D3u<3{j03R)m`o=l6zg&GABOpQPf&u7kr*|B?^zGw0g!~iK&DVO%*&L2?Bbnno{mjYn?l@famZ=k zTBKFnSot(<;aXDLmG(>^C(F-}z}tT#* z(@6u=bz_q8djn0r>+GT`r_R=)ia6tm!JcwL=DM~C7AMC-Q@K6|+IG|q3?Hw@2Pt$3hjlDv_a2oV7aMudmmd1m zXos3wX#tWkr)*8GS}QuQF?qY=Z16cfT4DF+*QW;Kk&H;JEZ z8{G}b4Z|2&-T^nk08bbxU9)@rO)TYl!WDv>o8;j@*Adzc$wo?W8wanist|Re;Q9Yq z6aUR3NuIeaLAr=-@u-LafdJp+gW|Nd{Eo*p0W{14%np>PN0YrZAGO9-Pi8rrhWW4D z+x^a7@$w5a7aU*%*uKPV>c)347J%`3E(Fo5w39yYFr)I@RPx+xk7Ckl{M+oUq7l)y z4_qjkK_0|=kKGQY44R9!uj|c9!^wkkGsc4|(wV0A8>TK}^mzy0n71V2`BHNJ6F`WY zI}h$lnJDHH2kev@OF-5M{jW4oGo|Qu0ws)0U+S24AQH7l)eQb+qc{7HG<{#Kv@{c@ z;J;2-iwZR2WE1EZhsO{iQrRp4T|b*C{ncxRVX)Jnd)JwJC${5H0|}9c;Ha3Bk=(IY zeAI|9AsDW4zliGo{mSaX^sp0%tiDryb6nmsv^XI~G!QMKth>hHj@z$_NN=_M z@pWMo3v@L}xs0+>1vD3pc`~a#;2r3&s*68{V=A#4R;atAs3OW$g5R~~F|2I*xnCN6 zl0PApzCX78p)ft(KA z5X!5lj?UXtnl62I=MgWE z(fjjxzH^~RGJk^57Vbq*JivoLqsDB6Ve{g9havQ_|3^-*;`YXl#Uls+xlhvk=W-YnNL zY;jM~#pCV-2GeQl6dH86zDjiaoCG&L6~*``idu)7fE4>ol77szjqiCN z*ScMa{q&0rF9IlBIJ}5un^ySAGKceCfrMd}&tv-gH`o1VF{tJ=);V>Nzd?6-j4VNw zh*nbkuKbVsavl)UKRXDm^hNT~>%YWg6u3#koLk4JUa>N#04mkv*EHz49^D)3x~XNf z=Q3j&VyeWd9h~G%?Gc#(a>*cTK}q&Yt`^NBVLVtIH=5ueo! zUqm%lveBa|ON#xXAlzY7Q(%&w^?`ID$6rC4ZdLQ{Jfq6&Rcxy!g)eFw4)BXJgb(!Y z5_=*;U`x#)%aMD#(@G>@QZIQPPl25>BIgR40FL{T?RBHG1Fr}0CRe_Gz(%Tmu$RO}qTqa)*jAM?O85l{m;~Wf*)M@es38s zyYhKFN4QeJxdK?sl|P@hJGSBljBym+PU+<8_G3N*^M6hTsUcg1*xh4Tu>P9p*TA}% zL;}fGt-B!$0VBdouf2sF+azGCZy!<%^o#1-D696hOmT7q25FUF6Fk~IyFP)4zAfz-8Oc7b?$ zt8V3MJLjrkKPg)i-~x&LG&+8qiMOn26!1k$^5uL0|9n)x$yF#U59>WFDDA4q(}iII z&Wvs+%;SVA#pQEKYay11Xt zm+l{5rSHBicq+y-CufWpmBm1gyqr0&7?j`k!+PqoiFQ`7_o5tIo&5#a|wp7uf*bh+XAG1)I4ZN9^83<-j4M4*|GOO zDV6>;Ys9MVh%4DPgpb81TDyji1AzW=x6T81=n4<9dt7D{rEdP| z{9m4X)P!6#Y}QQR-;T5El{GI)?9L`G7rphkE z0)kz@5Ml(Y+rNh4sT2=>*dv;EnG@d_RKi86<3dIaZPCnIaNJ4eJ0sIiGxQSeT>pzW z@NG{>E!A7@QImKO4)KC#vT19hbCjtb-v}8cKW4@WMqD&^KlLIwsVf;(SOqzh3jg3z7<>dITcgz9btl}r zuSGLgQi3LU31U_Jsln8$#bK7#%doIgaR8n{aaRCIl>1DDd(<}3d{lF1&O4mLljZH- zT8PZBl8d3NTS<-EO_7Tn7v^;Vf#qSabXkxk^2alYnuLv&04c8n^-+#eiZij_$n%6d?um*8a@ifm5+UW8;qLQXyAv8*aSo7_ zsBXo;WV$|j>H&>US2hi>EPRN}uTKs;P2P*Z3}iO;;&uC6#DAZ-0?7aqn@H1mWvvkk zdmLTqi8_A|geBy7xPWf!qGrfPjqQ|Mk}p60eOjRi!)gb1smxhhiTI7tXboU7wd}<~`{`dtD9I(4oh=vVP*( zy&dM08KaLJ`z(xX3+a=)oj1|Q2%-G>WT2Jmk+yqv;q&hNv4vs)RSil}VS4+1v64wk!JGIj zqNAvR^qsvOMc19XDptWgArihp1sHR9^t$RkjhakjeTJf_Y*Iokk)cTHZt#dFo%=|i zah!L}olI>_$7vkt3qpO`Fo9@1C6fM%Q_bwKZ^xzFr1EbU?OjoV7c!Vdsey5ZSulCH z-d>*txx3)wm1-G@^dRn<=Hr=3sC@QwcG6ctH$Gh9Hz2Nj`CNeOo0`fl2z15zZhOC? zVxw&CP!{?PHQd+f@fG(a{5x&HsZ)Gpj_20U>TOrKNluJHvX>?Mi7D6L#Uo%zcr-_GLJnWY$TRJY-@PA~08zF;so0 zlF~>FFHPA9MQh_B0(a)(zg#wer~;&qPI8--`7&Wf_k-ZeVt1RCWeQ)H8N9OVM&sxw zw!WM9?3<|zZ=jz3524Ql{7zQmDfPq=Pl}J>aHGC55rM1|9u`~}@(JR)9X*1cP1mYO zxI1n@#xh0{7pt-J89I;@)4S^t@F3ER4zbvd{8JYX>nk*CCMc`5tlv8lwrxO|B*QVN zC{$*ZWTz*MQ`G{*&DjqdSs3vgbvKTGWUMSK-ezuKxrB`a5fw3pj=nR$db-2!DV1Y_ zYYQ9^(}}x{Nk+{cgU>>YAE?V!X=H@yX6lw>`lxTK3o)W{Ux6~mZc>*x_4=9#%|Zqf zp)yPev?s7I7Tkp(J5T*$o`;N|_lF8>nMuW9?U6MsR`TCnoBo!yk3_M+9fZ~-`PdjX z>Qo3nT0TJ^*9M@&r0PzXQ2S@kEWB|2?FivD3Jmj$qNrK|LT(eM(gB*teJwx*%_mNw z6>EEkTFo1galQFKeWUIGaDtc@%3=qKE2XPlb1RC>1rY&#pY&vUr&z=Y&XVe3EV%LhNQyrOtbbqYIk?Kuq+9*DG*-= zE|ODanH6V5oR>mP=kXK!B_s4qrBPdIS%zsX{})z#G+z(j;~ro9U7uF<@P$Ptoj0139&99rQ_$F*C-8=Ek=)2$*C6Hh>?NRKVG1Lam zSk&f1@E5|`*+v07Y}ECg7_Fn(|Dl=Efg2te2H8zB|5R0Y=l(L87)F4q98#L`#!uty zWMv_4tHI|!)E7>H{Sdsd!iqtCL!Yaz;g**MOXV(?3!lySTTsZNEaSf!(UKN89L>n% z=be5DC_DUhogd$Zn`KmiD}jeZ+9|%Bi2+(dLFXK2w2J5Ua}sWi1mV}WXOtZVEE^zh z<%?+E8Xwk5Mz$Dk>KR}8O#Pn3%K1m-*!>4(Qr=!cip%4vSY!jo*BPV9FBFG;Q_d*H z0t``!e6A-?ing5zqVy2v#BSsaPpA_y+eo8m}Fr~5#_bT-SOR=dvfLyk2k zQkk78Pz&je*c?XjfC#410G8vI^@B{^U=Eng3TE5=Hvk0xQLQ;HYo=PF$7_R03fl|g zJ31_g;V30%%TpyfZ9qvns0rc6H+fPVvAp?8Jh0jKHmVkoJesPoi7<3@jU774HVUcs z62LF`5Gxme6fefv_DLvXzMudJG+AP59eQqp0I7QHue4krOl#S5gr(J;vkt3oySiHV z0Z#vga9$qr1x^shxkkFD%2|E%) z!H8oUKmoC^C|7x$yeOFJkOp6^N^*8#9a+L@JfH9@gvX!c7s8sRe>BB#2u-w)ep5LQ zsq!H-bk6WQ>KhUXyiR-wL)N;`aPMxm8*WFcH&x~M&3EeCQ<-o4#WCgw(LGy&FhVMQ zVsl$WR$OxV&ibA6mG8Nxjr4epnl)$W{hR~3em07JUXH9PEEp74zwDWq2K_}2GxRkz z*+R}OAr{g?>$(eUjWH?fZRMa{Y*$Hsi!Pj>A`#^VT%?TA%HFhFbNXrt-I6mt7c&Nx z7DcY64!a?(Mt#0P9j7-#lWMjJy(t3IZr9VkwnYOvk=~7euq@NONp@{1fO{roFAJFV z>G=t;sQ{(%uXO$RND;GgOrODNN;|&4Mt;MeE(!X5BhE15nu^962e4Gu($km$KG2gU7Spd57d2>YG2mVA0PsbYIG4;$L-@Vf5K%b2z%YZ%ukEf z$C!SgrQxMnizAT6XSsWas{l1~HDGC4@$TC(H~pp-fJWveQ<}sPZ5HW|$ z2zB78B;4_^Lgsf#^6tsaD9>#5ly@{mA<5cak&c$E!iNDyOF-%P$HXN37#t3m2;!Hi z4kQBJqC2!q5vsiL9Bp}9fAHZ~pSbLYBni!z9Sq$2C(AG@XZZ94!~J5xYV(>uiLcz8 zp}kgXr(}KWA97DuLNP2x=^)Yy#Y*>nMUPTk8bT}tw~~-p*Y~2^X9y*Ed7%Nl4&Lha zkS{p9yoIl)cGAor9&LXpRX@WSX~W+L;(Jzf+NyhR&J8iwaQ3=U4ojf94BMefukX)( zwliMOdx;ytST@phk$_MlV0@u^{Q~)hz z-Mr;N_hrq+fa0`S27hZbqc%l##zP$gyLHS6u|Z1Lr@U<}CkG7a3-B}nlsueVrc?EQ z{$XbcdxpRM5q$)oR+7g*g?m=$INX6F8b>U?VP3*OYY6XcQO@(;8qfU#cF<{ou~GPW=G|MuP5_1cg23#lp}NCdSXep z;hKmJ9E`Oc-|-mRa!Pw8i!*RgSu_!ZHzN6sUWZ?H1i?=d$g{MC^yf3ylLfr%!nL#E#|a-;A7J-*&I3L_{*U)`Q$`Flyo06D0orV zNI>G*k>FhRWR~0t?NV0r50&iZr{c^SZYf2m(OJAjaDlrc`j=%x?3xbJ8vou?|Kw)cTuCLCcT;}Jnzi;ktf2sodi z2jVVTgLFX8p6jt)FfuQ3(_np8u*M>z9q{pW&x}CV@rSmVk%6K}uF{yqo*%fo&I zBk>n0T>f=a5K`YR7R@1-%~@sOLHfy+pd)3J+1d|e5jk}TMk4M55AD@k!1`h_cu$>V zjSmh>J+PxA?|We!!1^`)G+|DZj--6$QAKmH<>7u@P{XH6iYpyW|1-U2V*nXtUv3Lz z>yUUB^l^Un5(93VJ$gdkS4hdvgLP$+X@BL&(KrvAHj%8vLEoeHiQbGGt2=~(ih36A zBJJXnp*=78pGE0eDRm-lyd`|~_7*)T#9;txDff$3sST=hXo!c@oyb>$MpAqDh8nh& z&)lq9+81WD%hskP&mR?-6Yjo3a>O3#{l6wBV;^|S|Ea21wcd0rm+(VpB9tyMRP57E zIf@J0eDn8wdo@`sLLs+fYJ(sW=9pBjzT)8Z zRJ(WJ=}`6{>8zqN9dVlWRMpjkB!wAr%oxKnC^=YVohFFf-Dj&pw8kHJ+5m=$@DDoh z`UUezGLZtr83pUZhZ%kf))?w9Ps&uEw-zf7yd%(Z8fm`qNf_(8wN4l%aoxIaQ%oh% z|KaNj34=91V?#H2Qb7Mwy(AsJvip-s_sMe{CI1enXBj(FlR~UhOLIXXED|Yh$TK|v zvge#fa)~+t+l_Jl69G4etCM-y7mKZ97Du^5pvZWRNZpmf!+(;F+11CUYA{}?-#|~K zA~7RZB>~>tpM?x;jY1`*m`S0zs1dc!p@=w-+h#ZrgvwY4N^#k42Bz9Bz9>#8=SN{z zfUTX$0f4iw~oGa==QsV86g`|zKWZvBJFA@?^R~5g@q%J>Z;Xm`SafEiAr~~ zTHd#yp>XVsH%LQ<>56QX&38v5Q4pqUUA#2di39ZV8Q;AE>AD-uwUI`oR*O))m0%Nz zs(de;?~~j{8xj+Ajvb%Xy@uaYF3PSPl$}p0w+Iv9?>AOjo+8gq7IW=zPK-0kLB1~xCAS-G{@nuo|6Nx`ehcXxcm)~t}RD7HMmFFQ%ZIX`JnA6 zQ!Ll{dEOvhQoQaX>wx$9e5(gik|q=lAqgB|1v%xJ;NXpwIq3XDY1r^?+T9X}BaYYs zornq4K8|7*m*4Jo0Vhqg-UQ(>QJ(7B9*~~^U&ka#tO=zj#Z%{ukEI?ZkNANGPBRG8 zT``duv9V|0mwh{b!Zm!@(pY?ns6ki>OC4A1oyID({+5}*1~BwW37MpWb;afv#LJ6M zLnutz|Ihf?ZKJdV)NVCf;{ZD+cNMmgeF_|Abh9o$MvXEZRT&eKRecxo8bRqm*z5`A zs8~1<7EP}wmo9a%7oGON6}SZ_)Rn+GJ4}zU{T*8B0Q~6poT47z%PJhFcl-#hbu|PN zheK%KcC|*#5mr0=MzI#9SNml2#D*wll+=keFR?z)6d1DQn-Gs)Vq6hREl1d!mpGZAv)wsYRvC z`smc{+qRI%Ie|8A1RQ|pr}*=bd8*e#_nI`>liI%iyWqbKN!=S1+GpwG%Q4jZI#E3k z(g#y*&-`&AUNr^`?|ZH3#S0HomP2YMV?wItUBW71(18Dcfc)E;YvUCC z!dp5ab81;V<+>~{R;H$X_YLkq*Z{bdehnk(eRSX`96Q9)+xN9MQ+j4;JUG?j6-!)X zBA`Ekgq%sAPbEucI*%!yiktZl7^W9vm>Z%;c$}HF@i3uKIBUktMhnf=;1?%P39l3fHsL8@n-*JqLmmvXQZVC{{9YW z%W}vlC8eJ{P-cr3#9DZH={N|k=e{seapS1r%{geTjH-q8zQzd^e;f^c^gKSJMubbo z3)D}Fir4M%aBL2@a6D+k^uWB})|4~SnH)QNIR=_2Fd!3uDQ`l{z6e)gUhDs(K?TO1 zNkzr?%?W+1JtEeTq1xEE8V#N{m4j|rCmb+Nb|;*wV>8zA^*gdC;Jv3N<-d3Nn@|2| z3`wlm<|Fa!d5!6EKSxG1GU>%HIR2I0Hmw%)Uq*BhYAb@mC$QBS4E4+NsPXy zDmp#OUhzREL{wEs@Qk#5^r4jD8j&>;4JEg`N(|-Nr?i^$jwxd$IuaY0F8CgGHo^N# zPjhB?U-$3*t^GpJ6EzG?29pReDnNQe(99LbxGf~|q-{Vt9xfGq92p5<0kL#mf@1zH zfrpw2Bcbeao<>~sPCoOO`Iry)7(s|BI5vsLRab|gAHx>;G7DHBEYFbA>z~Ug5F$yf zpMo1URNi-L5GcF7j)AN2zIva$^r(8ODF2&cC|1sW{MwOrm6C}0&efwb!e9p_3`rb1 zcYDyEx-^>R08241xx;CDosnrqDmfU{@_~M{-WZSw-`*>yNr;5tl($bB1#+?w2L8@A zfiDLo=#$DSQb$!V`CStqtgQ{_CN0XtAV0RYEjaqxUpxRT>1q6dHMcxFgLNk(tHa4L zWQra^cy0A0ouC7?ob-H!?S3UiE~YO+^j|6Av1P$b={AcDYS{`E(J1qPpDWeK-3?vD zMI~+RdHsKWXJ+Mujc)IJ3@0$61Gw#;b+jSo*PIz7rCs_X;t+6brVqov|gnptJ&;{P8a2L#=(P4U4q(2e6)S zMk{F<;kY4$VQH84Ymvb7cPElWyqFLp%`(Q_YfrPbZHi^S6+!{hnJD8`P%hAU0qqqK z0wN7cUJ29@%nY7nKPIoH%&AL8cGlKy5Lv^@%Tw&%h!BLL-5`^hw9%ZS;I@EH8W!(4 zd2IbwA^fdvitxc>ISM9$ezneV)m=A$m8OUCg^8vAXxDy>`I=a9#Y#O= ziWByosHQ#z!4M!J}d zUe$=v8d$gzr%+JGjbiVGqS>H3{sQRDOA&1JG=&1=Ka|6dItG5XE}ZohStzUMR17z@ z%k?UK8u0TJ?QXIq-EER@?_}U*(kwkPHlnjU)Qub5pg`Lb#Ecb$!Xd-tf^QoxbHBTbK80jlmBTd4|ieVhVX-A7D}B>EA~VKPDdte;Oc$$d$kQ~ z6HT+0%ijSvAx7UO&SlbihUAU1@XFwIbG z^>H*uo3NG}qen*A^yN*ieMj>us`w%TmuLmUe_e>WqM!QQ$d7D|E=^-79~AJ%=?k>bFxyhFbzGi4>R0B?Hxf!7-6 zHua6FhEG${q8PUfrdRJ@d+NQL#2B35m@w*IJ%$XfKZ#};n6S`zF%v1*tU$WXd>z`z ziRT(&Nu540Z`&7j61$ImdN#B#or~k3=6rBw>49%Dk%w1IyeWl&;pB|`PFS)`;X0cU zV6$2GyldpOn1=PL8C)Bb*a+Mm4k=RJNt|JYmjQgWh4GO%Z|F{%9Lt=9p zUk{=`r4B|Un*-U=#+dW`-O;t0Qm8>;?eH9hqMh~r={1RE{LZ%X6dx2%g(lPL-?_KU zzDV6=Zb%Y3XpL-FRoGBAB=-yx9>|*=xv-P1nMM9NFKLv<#gmyLL<}0A0)PXNd8S^o zaTy?jZ0egQj?*XnXe`vzgEy>UZooihb!a13Ka9@p-c3Cq@AkO#%$$XR4mGXAV;mL@ z`~&Qk9*EsWvH}A^&$jKcljg5pBrN{TZ?;2+NDtsDb#+JPCr4~YJ-$YazWA! zgFlyJX$N{pr*a8Ur3`+PZ8&4Znm!5kE4qVXuv+~*+&f?bV-0@#RJA&MOvWt?@#8xr z+`ock=-+A&&z!bp1u4vic`xKdH8UM=&QWUAW}7%UxWTh_K|RFHH-=r{d5gYsFgiu< z?jBaUpHAKgY0-Z2pq!LiX8}jgJx!?9NAP$@9bKJxEHT zU%?~6qy0!Bp&n`_cbhW>#lsR33Cl1b%E{TbM^9haj&NwaB0U9fuU#enP0P&TTVAwk z9bQn7;?ZGr!q8vqG)5~qjki;O;|{;jjFw54@5b)vq0LRpeS5S&uUL@g_)FiJ`cLSz z-d`w^KiUrwI?^r0ms=6D;*7A)Qd~Hzw>BXY7iMkj@8nc|y-r2hp9VEB68&6}|BJkH zr&H4QBu-`r6Mt;)Zuo>DiCqo{>qi&ZW1Bm&kbdH%In-WdW9eSLNk?;Rb zM3D^d29;XbUyA7|_r-?3FIo&v1QP67(~eLSz@~0YK0QMbn83Vc&s>Szde*th*K!Bk z;$gq+SbwHVg;!SX&O%@2sm{%nL=$8yWwVPy@$so|E=ewSAjLt1GqC6YgIyKc{H1-- zkFqgSsjrlu%pd{6JqDjrUv^4O;<$7GKV<%jp3v((U0b>miqY!|9-MS5;1F#wf5<6s z0*?C~3H+sYT~7VoV($+ZbPP6!yvrHQe>57QmgM(RyQT zM4if-_=v|^wGdY!d*5?s^;V5#o)a+{c|2voWq(OnN>|+hi?}_VvPH`DnJX1nA4TES z^QdN3o#Sgq^n2p^9zCeK$TaWnf8>YJZp5Xtre9V_%xyH+b8TnFij-6}=Wcqeq4s#i z%_W#gEPBd@wAMDv$&r%Gf$P|K_o0p6UPmD2&drB*;AktVddI#V0@J6@G#T%zK@cBc z`cv=s+9zyN!}I08Yna8)-bD~AT-+~K&{NL;{ZL1D-*WT#(n?*(cc=lukjaWu13$$5 zym&lg>DX4um06E~R;PjgA<$>dL4)xAiqKwSC^bwhW*eQ`R$<@ z`W#B)3Oc}k9EFNQ%;J6!P-x?3Gd@9OngqRLX1X6VGHFL!WP{4f-!C0v4VbJq_uIR_ zzxc+16&N1Alz(^0TP?IlNgz^HfRiXR)#ce;g~ttcmCl$^d|AFqZWw(ZB6YGn?sK__ zI(-WO|33i0%sMPYbP1hXfP3_U^b5S*ujz#v=o0>BG{HSK3o8KvM*lT~5>o400k!W0 zvb|4kYg?;%n8Mn@xHKL*`ib`f4z6A+ht+m|hpjSL=gNL%lo=z?;XI(`0#ah~_UM;Mui8OMOvx?xpjm7B9Fv{^e${QDl@|Ma7`Y|p z9FiqChQeDQ!KJxc2FHdJr}J*%$Ah7GP|{S_Pv-4+3HiN2=HD%gQ4bq^iP1>d3kP5c z);U%(#I`cZm}%I}$L_5JFzW1!sq>8>rdeocJ`q7X`DAiMA_nZdY^pj7Gjk3N5kXUQ(2T|sJ=ZVkFFva=Yt5%esCD^qM zg5iMdLWRI%rST2$34#?68z|F1jN6c1`Jj$$NDy-ju!iWXMZDOYGN2(+KDwAy6h-ei z&v?ps5eGOTw^ZJ9r-J-3bap^KA<3-nvqBpKoWa75c$*|NQ{=05-2bxk?w!cv&7u@`)p* ztiRNSbNhbmYcY48_uLXsN`d>x){2&HI&}IC$=^mQSx(zZ<(3zG!dXD0Qm&#})$-g^oDRHdZ;+z#a zdh)A23uq6cQ1c@k$n;IDRXIkcj+*;srWr!THGYrKel$U~>!GLu{%?%<20^|F=jBWV;*PMuLOw-W5e5u9r6bce&^z2>3p8vmR!cW zBJJy*59g@RN)!dI<1#)zHj+79I5P~Mgu__yRE$-$>ROgJLBL;dWb$~ghK8YKw=ZMBzr&HDPufh=8F603R2V@QVy(IuTC& z=CF*yTawbQq!PoTP4_~OY}TAz^vAn~nUd}#qTsD(`KCudJq$l4JbOr_dXm8)91-y7 zZI@t8_wZgs6>B+ycZMUIGadtda~GE@T@V@^m+@qSO~46L68E^{Vx}#$3K~Xk2JxF< zC(8WrE=nZlf$s8+Pzh&;ORx*-7aeO6Pb(Io?jZL|h6N)jy% zJR+a$_Y-5F1!&DiXhC*WMgvgtAvbYhs#WJwrWUrq02{TW(x_$388>#M=BbNKZ`HgE zLn?)4u?dlGU^D&qZn_sn)N+L!Mo1thkKm4zs)2bVT=*~Jibz8yn4Al7vH(01IZ03w zllHxhaSUJ!8TZghJRe-*nwLkF^z;BNxavEObqBBO2*ghpnHLHSw`mA)BL(h8z`UT< z%3=q!{U!q^(te`((|~u&+y2HPvDtdS3sMq06hD)|mNHK7M!+ul(FKD6dr;se0Lm0$@fmN16vx*o>xsD};h2GqT9sc zO{uXtCb-D9V(ZXCwT;hZ7$B!O@1kbXA6&MIy%lKrY|?>Vb4rzkNm6CtXvz?Wc4@@^1ZEL4d+usxVCysp`Vo?oACD3? zCT;pkXzR2Bz9@01w8YWj>%`ezI6yR|rsryCqRqQ=>aC?G>c8M4v^}XLhdLiM2^R0E*EKY)<^wTc=}(wn`b5HT%d1|-csnKHA4~mpQZ?%$ z$Xw66%H=-+7_lWaUaIwi4{Iv#at?_q;)bY@QDD7i|Q&9Ew|EtSl)Q zcZLbutNaiPJ8Bn<;N$ZqtnF|pu!3i$yI#ZfRQpdXzr>{MuwvL)xk_?<{<%7`+Y$FESc6E3}IcfS3;YJ-ZlEF=y z7f@LdFO{*1=|?!dXr zZG<(+hsftqkoW15(kE_vN~%D-QXQC1x;R)qDrFrXgauUzrD%w0BP9JwYJLv zbA<>3EzPM{cNP*f?%7ccgxG*}lxQz!hU5;(z~amVdfA#?ZecqLnltT%vXL+N3mqmA z^2Vr?39N9>kBOa#)gC=C9`;9o!ol&p*R##SMWWoG_?UpWPLyc*P%u`I0rsdB8cJhzXQd zN7teTJQtUwgwjZ#GKVQT_I$6DR}Kop!jOo&LcJ~deZ8f$JMDO}LvqztrNkoD5_Ux* z_}pq@UF(fk`=ROt(boz9YUbo-cv$y(4u&OawH2fv;31mJ#U*D3il+4>)m+s8%Z-7) z$Ys`*Mc|=1(Fwnxrh;aMr&)o{9X9=^n^n%P{zFO|T1icxS9y|E)MAqH}}KetY|Bp$V=Oeo6Ij3{&`_}n{)~l+E1itt7Qqh;< zF=PIK?1m4sNtHAopZkg5EM+G`77JfaoA;+@WR9&N;0d7*;AeTXW1-L~XQt*c>S9=Y z`+X;HovmOVXZ3G(R}z(Rww9VVOHwvTsT6#L*e`}!5!l5UkyEXRvM|J_N^wc>cH+as zJ1Lv(l7M@1nCgXWN^Hwq*3COZrSR)&4(x^OGWD2F|IZBGiJsd*BH4wk3d;^agLp$; z+4bdo<@sWYQDr-K-YHoj`ClV$MB%u^+M@nl-rP1${%N-UxIs`sPX1q)7L7TL@L>`yG zC4vTEm7Fy^Wp?)>taHo`oq||nWmd-!!I-5H`BTyb36&V?PelUu6E;=yE z4Z~Nd)m1k3tAH)<>#L&5o2iqSXjg=v)^8p~>#7->)H6lUJ1;;=Hc#5WX|6C}FCSBK z&$cc&Zv%Bn$T4{--v=1cXlb2(4+J4e&VJ5jkAEr9Q5gD8I$UaBEOe99JU_E8y2hth z;j~le<S_4G)D~Rw z&58d%zVmT;i%f!CnHM$6I2l{OH6%ryYW(2l+d#jbMpN+Q*3l{h9L z5DVC|6akevv~q7w&CT$>Z4qyd>3aIcSTE7855kQz3@jBuawC%1PX)2B+hDskQUGXT}6O1HZ)%kx)eQ&3^hBOSW3 zzV1U=I*Xbbb98MIg$sC@of`op+=EW9PX8(8a@=%H>a~u8SRDgkvJ+jqY0V$R+uxjC zP_DA+>ggE~ioH$vaipr4;1+SX&Xqv`3@rz@fnc=d-3Y4Xlp5Ex4!kP^#bx!u8(no^ zty`i3krh&e16dnR0h*{RPo2i6s(^?&6ei>J>HPwyCf?9kmKW&0sxLHV9i-sUyc9%7 zJTV2CJ!`GNcuFk6AnxFnCQlkelFvv~^C##GT$^6Bp7F10QSl`47s5r#@Cu86GK+Tx zeEuirvQX0tM*Fg`PTmX+jbiCW*c^HJM*;u!&OZl$^Kny_su2)|QbY+OGjP1xqzdUKO{i(~l29lt-CiU0~@mpdx(o zfksS9mxY~w=BFcGs>+hJ9zs#f;h%lyB4e`hxQY@_d0C7Mlib1E$6(G0_l;l+u!h2h ztlyhx&Kz{rupQ_kv&m$*Bl=CcI@M~I^hYN3XCBteuUT{Q>rE{e2EzG4Q1ZZpa{we1 z&-O7ki0%Yri>zvmGJ$WXaU*~V;Ud&dLl`p2`y(Az>RLyTf?Iw%w5r5x$N>?c=s9(ihm&*IyhiE(R{)BOn$- zTr@-ong5@iDj&EAz5%n!&h8nmMm3{o*e<(91L8S5ItZXR6Gsq`EmBWO3fHZUyNS`9 zZ~0kJSLpdQdn~C_N$Cr=c=&a0uX-YzE~+$mYAJeqTAGBf}BBqY`_yoeB>Y+ zrEL(?Sf1#*qs4Nw*37Wqg@~Iq3y9>R9Ik88ATgn8-_Vw2k$+2BcX1ee!_x1LcQGF5kVt@KezVeEVGMM1Btgo5w|VU|MUzed zrkkEv9bJW0hSkCk`K*FBa18`$^}qVs&ayTHo*3(6O%OrJ3NIaL;rU{6{v(rpsVWJc zbns*^-(LfmYp_1R_zf1uMOQxLGp3+P6qMyKLdw|k4tbd0e{V)h0IXhMm%@8h`CyMI zkfBq^e;Z zZ;qZ5CWKfvVg7{C;$2lJGxeEQfkp!JK+XDm)dQsn*+E_114TS3{Xa#~Eo`@yp|erw z+|s9)*EKKIC7qyYX|iv;^#}l(DjnWMCzJ4C9OCEDY#XiVG*RKVt-% zi=ZlPB%3NDX6M!>B+Ag$Ix7e1PLh!fer-Ay-ST#>cY5*Y)f@zm4jAoGuH<;>@Iuy8 z*PLJv9QFPK)|nFGJJ9b9Zi9tr>}k-|M%+PJ-E*Qh#bs5IpAbXhAs}T zV1+@xX8`IxPPPVk2qU*I=oAon8O?teynu<3gamD^=35S?eNj<%de-Z^o;zdl7Rg@2ws~A5{=I@f%KuL7_w`+{;S2!4~OR z5fkU<_@TJWe@K1ZUP++A-rG6Vzhj%37zJBQG$PM3PD73wjRW^(re5_{ zH@+6$9v>+<*Q6*zSVV6~ETV=7a0AW~OP@45AzKGquHbQyIx`3@No*Q@(R1hWDj?ZY zfE_a~jqWgC%t_>)$}y^_9v{2Otw9@w1kD4~82uzAv|GuTMp|l!-mx~CY#nPQY$en4e5JP_fU0Y_I#toKk|TDzF6JpT#ISqlI<$mQ4X)red5_>+&?c6-xpI zf!VB0DanJK@`xCKv=ZOpLC|bW*?Z4<_XVit?Lhsx!@cs9dy~)*C+?52 zVAl?g3)8&RSVvf}doeTObop4h03dJ#(r|L9L{ecS&I&gCxiKHy&nEz>VQ9k+NTUs` z>?xN=FN2fo2By~a$5eNTkl1>FFap5LF(RWdp8OQS?%H~m+_NZ2$Wp}AS}G4(e|B~a zdM3wMCbPHppc1XXn?PP2Gi#%bOQ_MY)rkmBIHTtIFnLxM-?kwRsr23Lb2e_yZo5eR zP@CXH8-xL-sjX2k%rOwcu$z`>VaRg@7ONzGL+e+vN5x_y+MJ?;itpo&jI(CS`iqrU zDBQ593eM3N(G*jr|9p2XR8@E82wRL0O`8#vyZeTRas=O4fJsFB#iCU?A<~WI_~V+@ z$VhL=bJr4mkAoN`IZ_sTv$nYgU-Kqp)mK*kdyWYAWZctO3N3RkpP=t~fv?^+$^#MR z%Adf*D<{(g8I)=dptKbxma^L*Vi85hDFDrH==UW&gZ@a?mGc@(NHSaTb>lAZRek`b zw6u(KjNBYgDKSvp@TH4s!$X zkR3EE0n)lo@lVa?!HO z%Fx@oxskT{KKjtKx7%_!QDKq%K1`~77>)E-2QGvwL;(=YrT;1_kT{-YqcYR*B{)B z6Iu%_P1F0~^z?&ZRs!_n<#KB+x}Wl4uEr%hP|M z*?&E*>j1t~K+QvUkI?8p8OgRAqCxmpJ#^@?K3QX=Gp5dD^RQE7O4xe?-hGbvqVDaJ zOtDMi%x39z#Yn&Pm)n(y^-Ja$ZdAXxlglFsVMP7frEX*O)Z;d&Dsmp)xVFQfbcbu*>H~?r!4>q4Zn`$g5hT`>H&srU;59-Db}c zu`}CKLA|T|8V8uB?%wQ98m=}qw=za;o{%=8z=Kl_?Ek3&J_)2`$`Umb2PlES*&tD2 zhQ_P|)mX&U{o;Da*To>42I-C>pyyb6T;sNv1O1JvVyF(Q4XiiW%Fxs@&20jYaI!qn z`l*e37}TzPvMO9IO6)QUbkOUtdos;q6r)NtMq5}5t9gL%lD`lTk%;i|}36)u1>p#82< zxwFDgOoX3BEg1|le5l?GpRdKCvt4F53W{X|EPI#!5!&KT5>Cyn7j+k%w$x}zhAK%k z@x#k3$>U6hq|_(!n7VqM3Z4f-P7S1|ASM>SVbBD*R~tgzpsZbd0l|K7`A8k^ZK@CP z{2Im@9=KX#z^Z_Wh^;ju9?4Ay6=cG7Z9LD>$5>c*(Od4^#*Hh8VplO`wUF$60U(~< zB0^oavzqUZp91x*d~GOzkImJ36%Z97BBfPRoS5T`2b07^wDeLWkQ|0CI^pXT`R2z4 zz}J0d+nozVMAB{NAMTZ-)&~4#G@GGf%cfDq^bZsYwM%J5M+>K^K&X|+@z1|)rCvf{ zJZNi>ey%Itt-oOJzyUhB00%c;<2-CGdQm+f_!FRx`WJwz4C&hFXwx8}+QX9Sa=_8C zDK^_EoF+=FL&;KR$+sAIX*G{u!=9BYrghOygM8HN!u%;Jm&icOtP_FO>hR!{o`XQ) z@{$|@WP?gUAlE_F!`xc0jk$Xb#>tKfWvBnqOjc5&WH`V8js^mbMWKU?lcWLE_#W&- zB+sC%kwQqp>}i&dsX8vHvl;or=;-*t<eBrO z=&^EZ=a ze28jHJ>IMIWtkJ!8cJ!H1R4sRGyO#Y+@Qb-NLu`hD$bW(;}Jk6REWq-D2~zw%$WH7 z&osn#{1T=6cc4zkt`Z>~Mt6=T_Hirsu-Un&;VQk2WK+r1bSFv^bcJ>%k`M z-Cqwl0h`~mX7nvb59#RPJWHE#RD~tb2Z`aB3ylcTc026T@&3?x2AyX_5f4-~Sf`BY ztPB%;x(Md~^Z^2DKUN`HBIzy=sNPDmA&x(Q8-e2zGXG`J;XztNhu73nYjAyfrxDbc zShdue*+z>JKlZc&r<*8~`rWm?;Anoz;1{Vl>DB5w{i@jR!#`9o*U5F=RCbYRP)k-m zMaEndm;Q}_fC7h8{HNQ)lRcasb7KCKLVnw`5|AHICzO3gGRPQthGbYaWH>sR znG;A~dhG|&>#?a@NKyYB6I|x}_1;AWPhC_*i}I+7T&1W?T&<3JxLS_zfxdhv z9JjV2oW7e(j<+Hej^f>^N(w(zoDJQlN+AM0Q3@UK;^vWQO;3=Bz9ULGAph}Kqeu%L zNu-7NOtiZvElG6z{06=5vUOrIt~h%xd=_OVr{<-+C7+3o@cI#lQ6O`FI;yN)13RiC zgZF#RqGEwiojNf){uW4c5HOn=>ft4ks1t{@jfU16g)XN+oL^?FWiYoZ=B=#pvE=Kw zAD@zjAQYErZ%qJ8?lDqet1XO!zjeYzxi7m{ahv=aoQN{eb$zN2uw9({5vQOn?PIf% zvc}ty)_XXuKbBTKjiX053DHGALnhBzA$0XiSadd4k4ZZo&qv7)Wu;mB$Aw8gg-&TG z*l7j++J$o{%bx;A2&i05f#tu+(_)V`qK#IzlLdk+4NAd*P%rg?Ih0+J{s6favc79l$o{xK*kx^F7AFsQeVh(uN!&?1eP3-k>VT~?;0N&CDlgXNHpO)`obLAs zUpi{Sex%a6{GR`9WJD>fV+5zQ=STc2xE@l=E3)mx zayLDH$@wDjt+W&p+U=~rt_9L}Vh}*` zW^FtR6q(nG-_XBaYU^rPfX8qk2D9$}>}j%xR8rM~so=g)F`g#-St%;9KLaqB{M6$o z@d5Gr_jxlLd4f9b)Aatacz1c7H?o-4&6v2XbH;z`nAuo4 ze*mmwNAyOD&Vjmws^f5DIBdgVvjx!|i!r!oPs#PT+{bu2bStiDqQksF3ckzUuNZgN z{cQf)s3fZUD@{G-pFz#m)YknwPb1N};QskSC`L<1JaTXq43?W#LOHKIS z%652!tb-pii1~G~_yp<-Up+mi!IzX~>=g~Z(Aei^^~ksU(wZiYhJsah$TV_N-y9#qPhoe!dg;m*lZ?dKlHNmrxceLTaN#z3 z(ItaC+PWP=Y)!soujMRflZc00pL!8k)16?1rI^jl4HL~`#aUu@7%16)?*!TO#Xeff&1*-)L)ZXg%HSK&2?VVj91kE8tA%&&y10<3%aP7bikdN~l^;H*@}F{qSZ9SSg`)9~YKH9}Ka-9>b&QoWfg*J)A`bQxhS4Lu zTAwHc;W72{XHwdoFgp#Z*JhaBZzninYr=;3)nTEpwZo`#meX>@d4vq$bgM!&2I?fu z+(U)B(nZzd5l@&)_g&udWYy4cPUNO|P0Tso_1w&@_)T73mivg{ncW&-MvIW^Afh&j zg>7R*dZEK@-mj}QT#DR$ZkKylq^k0Cd=GYDG>6fduv{qPg(xm|24?7lnA|@jD3;4m zH}2@TB*o6?Z;m}F(CgqI>PuKBS&et87}H1@&txxGraDhtN6ibs0J^ByZ_1DchW>4{YFlx z(3(N;83^0uw_ohHnJUyCjsMlUr;*-_qG=fME3leE)#JWt6B5xOX!0}0(A@*$uy5L* zrReaIZn(V&4xVyltwneYTk;|CdS)#f-Cx#iBOI5H{&>J3h{l?Q4WK-~FcUTceB-Yt zW?z+fxi}Ibf?Mga3ZH7VAn!uV0|O5+uKD~Tyd^`x{J_}<`Iwlo&ghMx{}cCT+uQV{ z@kKEHT*+bpkCpo|K#8kmQ4DmtAFNS2!ksN9nHtVsC)FeRckY=t2A=zQ^k-C;el=`an zB?eGGU;>FBiLoeyJcw{qOxAqj7sS|g=a*Is5M81v;hmeiAN@KA{MMvguGt1QbwxJ# zsE%oJLq4|h=6Fx@>P8$U&VJq-EvAV#i&2@kHm_eoB*9IV3X^tU4QXysHj)0 zisfQoTty9SQL+g@&ey<3F{{pQ)uC|-Y#H0kQG}mOB}|rZ!_^igd^R6=gptC|ixPN0 zeWKI&Etz`X5i{QkTqMb%<5Zn@9y4RxMf%U{h}<*b=ts$gj-}Pb_D&YXX7H6V%ETp;d*d$eE4Pgh^zZ2=h}&{>7jL4B|2@Blp2bY{Z>aTUd-@jXQ* zyH^TV_XgJ?`C*=%r249MJmF4rWZurzzsNLvY|oY!uybWil$1#=S!37eeR1+6#xJ&~ z<$MK+5|Uu0z&1fKaCGKP;}Ef#L|^jkvVhSYDPseDl)P-`a0Wt*Tw2hEb)4}9{Oir( zm*?+|DRq<^;Dt2>riR6`2oNRE>|{WDeK+=1t-1C#y#&IMKRb;Rz0m1S!{a5LE29aahA26gFsfz}kL7X%gk108V0dxcK zcU+}H{7?uU46=2ldl90-Pp|g_m=|!O}{MZU7e6LgZ6M!~>RL%fs!=PLBP%@h@eN zh}*`Ry5$F%HJ`4i0&BeMnqv}CTB!EvOJC~XKcznq#6C$F>+xgVx`{7-!gc6ClyL_M zKhgz*W{7V0SBGvxf2dNQRdAnAvzn-f?86PGElW)vWx<4L3f68P{pq1 z`M_(>bWkmR&}6&_fecN4OwTaeUSCfv?w+H}r!1{LxzWuHuhTBot0t9uI1cCWhmq^D z-D{p#Y1s)_cGM0rF@K4?&fM8u-KpC*v2n=Z*+!q)B1veb6ksVT7n>P3z;lL{-MF4# z=nJVnaeuXkIqQ(~Xd&yqubI?08-(VG6^T(w-6Wi;vaKz$ce7>dYq6XCj;e;`itXQ8 z_>#!>XmUy(MrAS6sN+HM{@MEvn5z_S68z>F_{0LJbd5`+Y&=Pxba5E3DxW1gopT&1 z9s?i4p(xx;Rl6Mori3S1bMhyeuM;c)gq8@_)8mWoN-nNi@7DCMY?1eFs2u@k?qo$T z>j*n1Pf0L(T))y*+7*JQtGV$~9k&>Jp&$>RAnq@YU>OAWYpGBGLKCzo@Jg}WToj`i z3?3&KA$I425$ft0I|-b4-ujoKIZ7R$;Zpmocdw3qE;@LibCaluQjlQrv6tq>eTQ4o zVxMm7sRP`pHYPSzBGQSCnt@hSMHlhgNy+v-pc`l&Qn5v?N+qX?tOE4PoXMH{IhX+7 zA!A3Vy3-K3)&r5#F`Se(bPciAGv0ndRWw9P6zMKwnx{CY28_q?O z1}n6J&<|iVoSZQh)uC_KYe#$&G<+;f6<;BVjW``h&`D{Yn@l0gvC}-FJKUCM6$*XI zoc#Cv!JLX&;G?m9)c4pE=2~b5*w)`^-r*fq8rdR{=01Adl;b+kf>GzM)aOD!PS;)d zf^QO)@Ar1T)SNAE7-V9Rk)Gu3;{2ZDXeS~ zFg>T(sO3l+fMP3Fm%)RO?!>uI0I#B46EK?@LQ9aUJBu-V@<%GJE9Q7xbbt3WCY9(5 zRzDC6gwPYq(m*1^jX4o(0%(Ix?uNHx?MOa_a zVZA93rMd-70)trwf|_eaAwNO>KD+&V=d*wYL%?R1EMyN+y;G5EWtUV3e^PF3tjn`` z9ho{>;rkDX&`-c|Ew90Y=PVAHA1=hZxiQR2<(wI0oQN~?z#qsYP`=5sL$(6uhxY0U z*Ni?)y!^F94&gy4IgqotX$2NI@U6-aj39R(Stc6%XN|GivhIcdBe)VXU<#2F-Pd4pT0tF?6O9C!NF<0+60f_VSLx(wWBFCPu4?uT(m~rPR zkfTfbre{AOSFZ2UAa?2x*3Nv!aBVGGZIhLV28y;BP6fZ7HwhjT8+n^~sDY1WOsTmi z+lU`t&0}U2s{LT;wpoJAjs;}Yfs1!)0CWzVC+-?UX|JJ&($-Al8V_yITXgR??j%;~oCnAp^B^U-Z!%+Nju~Ys zuWG+p1(!OMLJM6y$#JRBXdF}9Rx=V8yYZfc0_e^5s}-GY!!3&Yo$?`HsRhhaMg?fl zZS;{$bQ^rJ{o*EAbw^MdwEYHKH6WXdm1GwLcz{HcbLGgK*F#^VDf7X%qMj654;Kp>ga) z)^&}dyYq}H5<>=cQaYh~^bT;wYPPLmNT+5dV*PE=xA(hP+^};>vYz@dOAaJ2=k{uy zxWkGZWar2U@~IA_F=nj5Uo$Eb^%E6h50FSJW~3U@njsMpH^{E(hnq08gGC+mY+(yU z+wi&XxzZjYi7nR=9>!6}?e;Eag#(QdKqoJJW;4qW0sjM|S)E|D`9Rl&v)ho7w$Q$tRq$u?mjJuJ26~HudM5Eu(5{V*Ar7eAOKtx;u+U z$^dZV_8eCAcwhdXf0nog+9g7hz)E4$&r@A|3T+u*xk9{F++j&F5|`R7w%Q{7I|-NJ zdnNnfL|>+g2_gp^swf3*)cmsd)kYGXE9}WPQ11C2Rh89kRb~U*_eWSIdmZlLG^mf$ zv4{0-HQXnMD3B9Mc(chf9WhHG`VUz){!^3(kGkmYK%f;gyMI3*k-2d!bfAIypc#pZ zY6C*{gY_e6roDUshVRi@>nPR5qP{9q33m2UNFI^IrKdUzmPe z2%dXtg|;3|yS`E^(Ex%IF%Fx#O*c6kG_P1h0KsLu@y1CW@J^vrGwu~e@Eh@SeHv{# z=ida7E5CFx(>-!Ps@R=^D^Z)$m!`*laR@!}LJp{O)D9sML;AF)nd|Ov|CZ&MJ(j9m zHVbLwu=vULQC(p~t&4z~NN`gF!j2aiCb!4G?f`vexc8QwR1+X79k%eBvhs_itTp+&KY~=QKONiZF885dGij! zc@HQxyO%|7Q$s66@ln=|h7YlK46#ob%o^%Ua-IB3dtI&*p)o7RS11Z%Fc)hNL z&KR2JjKeY&NeT;h2?B1CjnPf4wt&pvE=ZSC+hbMcX>FJOl3wkg0_ENuyhYjmc0wM1 z`Ov;!yvayz2X^xy0Xm39=>L=XS1M}_yN8egxv~wNjRj@E@IlxNXNkc_+-iv$f}@zv zAETiI;_og?O24pjWL7LuSSj+fkA+(NgdWFn%&M8!h-#ta+lqlMyU1wH@!?r~glZ#OtnW-MP zj;&L0NPg_~SK9UqqTMiJx;m1FEr(KQCN|0HzfPcAz_Rimw&Is`VQ zzl2`AjB7D;3_s7mr*k4GPOO)(v~i~syVg25nqJ}0=nuAYq}}_UpNj zGOe+tTvgK{Lfq^pcKMasPJdpyN*r|Nb#ydHXe&|)FJxtwlvl|*q$-yaq})c@KWBY` zC9<`YaK-sp$!1p;DN~K;dfZLu!b|9#_`LIz|93pla+phZ$X_*L?E=xoNWNvMAXftd zk;r&gFvM?)B~vnnndJY|QZzw6X9pcGCIW4cbs5di4Q!{AWKet;@KPZvmfK>jHIL5I zqxIK4I#Zo5A72~vy0^6q4qFpOr9Iv& zTUxU%mE9FN<|Z5pt9>ZCJIOC(q`Fr6V$lus0Lv&X6I3%wZ@GXszP^j3pInfADr-=p z_D?>ns-5t}AEZFvp-sgK6`n3tVNv??_(ku82_QIONFu+oVlO~LEY6L|Mj*K%xV&=3 z2YYe$$rpL2$^Fo^JBK#}MJA>xs!D8u@5*bOm-g`;-CQvP21TKCKJ+T+vXFhT5Am#S zELYhGx?DH8y$mJ6S~FYTxML%8+TK=XA>g&XtEIsmM-X~T2n0Z3FK`tQW`&7a3W5zX zyvyJbXJAeV{XdPp4jFdb{jUnOUfp2rVSZEU2CIkVi1WJg&)|0fimIN6H=b#>O?YhG z*xvemO`Pb_TLEY1=n-a=3kwxq#&#KGjQ7d`sc!p`N-|)tS9e`aPhbU zEg`;9BL6(aGjk2%$LIyzuZ#QQB*9sj%Hp|moE7wmKy*66V+A_=cMLwE=G%D#YfIwk z4z8jo%p=h4FnRLzcUqFYgpd6(d-UCXTy~0&xBsjZHs_a)e6V` zS~iyWqx=$kKde4zf0^1l=_l!XWlOYP0Annxlz-(@%ErJw;D3D~PXsditer)o`_(e% z>IDaITaAb{JS9lwg5O~9U_D%dxpO>R#OSWMg9xj$p4w+b^05R79Ih$STTPQo%jS@ON021LwWagUuZXJ?nuvXiRs)v%Lm zb5ZXkI2)8a_kxEupfBu%1&umBTyQ8_G*7o2RZ-XM&RjycR#@-A#LVC~)K@!1-qEK{ zUbrW}p@vk9=SFqxw!+y~j*^J?Y;<9B-zrK8=@{^QYe6FSdjbGp*ZhbM5KeBn^LNvh zHgBKEY0OyQqgyyB%Ua$vx3~07zDKx>P+|7*ugn!pamhYnzUN6ZocNN=Z6=1+mG&9s zwWCSS+7ccU9ti6mI~CC<8wMi}xtsQ+WLRLSa{=sN5(8if_L;*ty^c{YI_c|gkr{ag z={rdR#XxXLbpFEtm z!G7n|^`O7}esoY!Fw9h)FfFIDZH)n6JKKUBB0l>{rco4Z<5r-O8(bfeY zbvD0@LTqY`j6wxUKu;!~BSyXfvEqY&60etE{~&G=8ELS!U*P5*;b5o@UzLWE8#sPe zufpJ%GPo281diAUI6ts9ASK|(W5$v9HBA4rb9z*7xChQK`NxcqtzHY+(rqN z&bteBqFWOH%7q*{0;s;ftjKluoWWR5X<`*OvZo#hj(+^oG{AN+o=Wko!;T56%0n|1 z_c89(r=_NfLRQok4gOhOXgd^Tmr)oYWi0)X$6f41fJmN)Vv(Nq2nv+4-O=RR9+j4H zqk?qK67#+BzDf8eXjqh2Malm4?4M)(W% zIO6MKUr#AazR)# zboaN~(5O)C*0yLb4yICoOALst@j$J29)Uy|>uJf2K>m)bvCgorOgrxd4LD;K=Hvyi zJ7fP-S-?wE=Zr7KoF5X=^;tZs;J<>e$qc*$HO{ER⁢f8ddY&;XU^3+Rf@7i#tP8 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\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\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" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=151.101.194.146 comment=x.com list=RKN-dnsLookup +add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +add address=74.125.205.190 comment=youtube.com list=RKN-dnsLookup +add address=74.125.205.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.205.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.205.136 comment=youtube.com list=RKN-dnsLookup +add address=173.194.221.105 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googleapis.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtu.be list=RKN-dnsLookup +add address=74.125.131.91 comment=youtu.be list=RKN-dnsLookup +add address=74.125.131.190 comment=youtu.be list=RKN-dnsLookup +add address=74.125.131.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.120 comment=gstatic.com list=RKN-dnsLookup +add address=173.194.222.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515142002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515142002-Diff-Config.rsc new file mode 100644 index 0000000..7cbd0ab --- /dev/null +++ b/MikroMaster/history/20260515/20260515142002-Diff-Config.rsc @@ -0,0 +1,115 @@ +348c348 +< \n:global CommitId \"main/657/b0bd77b1\";\r\ +--- +> \n:global CommitId \"main/652/6a20e295\";\r\ +351c351 +< r: root, in 14:15:02 15.05.2026.\";\r\ +--- +> r: root, in 13:05:03 15.05.2026.\";\r\ +2333,2335c2333,2335 +< \n :do {\r\ +< \n /ip firewall address-list add list=\$ListRKN address=\$newA\ +< ddress comment=\$aItem;\r\ +--- +> \n# :do {\r\ +> \n :if ([/ip firewall address-list add list=\$ListRKN address=\ +> \$newAddress comment=\$aItem]) do={\r\ +2338c2338 +< \n } on-error={\r\ +--- +> \n } else={\r\ +2341c2341,2345 +< \n }\r\ +--- +> \n }\r\ +> \n# } on-error={\r\ +> \n# :log error \"error when adding ip to list A record: \$d\ +> nsRecord, address: \$newAddress domain: \$aItem\";\r\ +> \n# }\r\ +2384c2388 +< run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ +--- +> run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ +3068,3070c3072,3073 +< add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +< add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +< add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +--- +> add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +> add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +3071a3075 +> add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +3073,3074c3077,3078 +< add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +< add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +--- +> add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +> add address=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +3082,3084c3086,3088 +< add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +< add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +< add address=151.101.194.146 comment=x.com list=RKN-dnsLookup +--- +> add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +> add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +> add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +3086,3107c3090,3111 +< add address=74.125.205.190 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.205.93 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.205.91 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.205.136 comment=youtube.com list=RKN-dnsLookup +< add address=173.194.221.105 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.147 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.104 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.106 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.103 comment=googleapis.com list=RKN-dnsLookup +< add address=173.194.221.99 comment=googleapis.com list=RKN-dnsLookup +< add address=74.125.131.93 comment=youtu.be list=RKN-dnsLookup +< add address=74.125.131.91 comment=youtu.be list=RKN-dnsLookup +< add address=74.125.131.190 comment=youtu.be list=RKN-dnsLookup +< add address=74.125.131.136 comment=youtu.be list=RKN-dnsLookup +< add address=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.106 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.147 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.73.105 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.120 comment=gstatic.com list=RKN-dnsLookup +< add address=173.194.222.94 comment=gstatic.com list=RKN-dnsLookup +--- +> add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +> add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +> add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +> add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +> add address=142.251.1.91 comment=youtu.be list=RKN-dnsLookup +> add address=142.251.1.93 comment=youtu.be list=RKN-dnsLookup +> add address=142.251.1.190 comment=youtu.be list=RKN-dnsLookup +> add address=142.251.1.136 comment=youtu.be list=RKN-dnsLookup +> add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +> add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +3330,3337c3334,3337 +< set api address=10.30.30.0/24 disabled=yes +< set api-ssl address=10.30.30.0/24 disabled=yes +< set www-ssl certificate=Root-YE port=18443 +< set www address=10.30.30.0/24 disabled=yes port=18880 +< /ip service webserver +< set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ +< no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ +< webfig-plain=no webfig-secure=no +--- +> set api address=10.30.30.0/24 +> set api-ssl address=10.30.30.0/24 +> set www-ssl port=18443 +> set www address=10.30.30.0/24 port=18880 -- 2.52.0