From 36d61b6c908cd53dd5ff672e5850b4de56c27807 Mon Sep 17 00:00:00 2001 From: "K.Cima" Date: Fri, 21 Apr 2017 23:03:28 +0900 Subject: [PATCH] Add zfs_arcstats --- .../solaris/example-graphs/zfs_arcstats-1.png | Bin 0 -> 25604 bytes .../solaris/example-graphs/zfs_arcstats-2.png | Bin 0 -> 32221 bytes plugins/solaris/zfs_arcstats | 304 ++++++++++++++++++ 3 files changed, 304 insertions(+) create mode 100644 plugins/solaris/example-graphs/zfs_arcstats-1.png create mode 100644 plugins/solaris/example-graphs/zfs_arcstats-2.png create mode 100755 plugins/solaris/zfs_arcstats diff --git a/plugins/solaris/example-graphs/zfs_arcstats-1.png b/plugins/solaris/example-graphs/zfs_arcstats-1.png new file mode 100644 index 0000000000000000000000000000000000000000..18187abc07b6e22298fb32b504d5282ef67885ed GIT binary patch literal 25604 zcma&O1z45a^9H&JDJew>X;eZ=K)PF{M5G%elx`3iMof)J zxkmHbe0lzKcxIuMW~M2la^7&o3r(|g(tyc0jSUug8SNK8u(GP=`>G^tkZy!4x7?=s zI7|64_UHlKO)#&fEVS?|ph^11=Lq9}_b;AbwiJ}*qJzFs7NAUZr+%Ib;7gJMHA9d0b&|$Rv zYHM#-w?9Muk>u;|-$gNa%_%CHK$VAzWsj=QTUJ(<^7SjK00kaRI0hHjdMoEoc{-*~ zM%~fPqoai2+Z7cRMa9M8m%2(yKCBI=$exI%sK`iE82)<+9`_5L0_|G=oSaAFQ&abO zc!&)P`#W1{7S66?kpwKy-t#s?wt<>GmZi#(;eXBpx&}r`9|B)_31Z#?*Q?Ong zpq{RGB?<`%**!RDJ>6Sm(`$m&9}O&NeO-~mN3G1x$q{?=hT+srsK#N#|NLa9b!bQ_ zpZSJO3(eVnH>+~!vj?}oW@Ic>uOun)6fihjOjY0{@;i0tUhNavZ%>neS2{a8<9T;T zZ-^iB^Z^eX@dVu8W}yu;n4BNHoPtH7gM$N)%l-q$tx3Pe%PlK`H&#`D|Xz=ge zy`ieAdgtz4YDUKH6sm%qYJAjY!6YI0ho&Zx-7`0sXKih*lqS}KL;y82GtSl36$T#O z*mogeVM<2Tf=IZcmbNyV^_&Pc8PCT(IJeb|Z$t!vR2W4_5E1LbXujs^RAr%triqD( zgoFeY2L}P{V|ciiVw#lx=6ErC{Pxe<#qu$oq3_qGoj&Zh|# zW##$voyN}D>no=T-e+I*y|r>g4ER1)g0@#v!Zi}l-MV4Zqv%fdS0HN z7|u0$mGIvqAt52=Fb9@ljP3k6%FK*}+Qd)D&ss6@pPEU&9Zw zeso+i&!-Ot)l?-VZ%_!i(RW*e?*s7@u``4 z-a;$LWoV;AnF@w8buJ}_CjCk6dFrKeYipQvbab-GLgX$kE@ooT_ST?>~Bk zMZ~Iu3OigILI>Mh<#xsnOUcW_M)neMO#Rx^9z%K7s0WLCOANl@R! z1YIaOj7Zn*R;A_7!CV&a$LQu#nM$w5&7%l_-9 z4{i&%?4!oT#f=vmq7$;}FHvsioSwAr9BD9G*Y8{p!^#y|Dsq=fl-o z0s;ba3k%4pFS2Yte&GAXDiG|#^6=rq)1xuny|KotyP=_>C5w0O-hC=BuTrGEePFUd z3G=f%K0K6ga46rrCem?60?XFa)WkhQf}PiZKeUG4HL`4BV%*x7Ihgi=&-LBmk0EX`C>pQo< z)E)a+-@C7&m|VG_yLxzdSg$*pIhNn4prsn-84!Rz<8~kywdjvfRa8U*H=CH<_i;cR zZ3Ku1;8F_;lH*YbG)-6AaYiq0Zx_6b7MQBAX#M&uqDZe9890kT37Q8F9;_-8iN>OE zr46k)^67_b)j8i%EzoMdI6L6fNqxJRe0@Pzpj8c)HE?;^7%VpxxNLKC^V_XLt!i)J z5OPtu6%-UuQBmjCM{?iJj#b;4px(GKKbS599S8YDK0g9F`MI^BO#GmBdM2he*2ar3 zW4x=bEW+0p9MEY=Nui1wlL{q!KRo;@GBQ$xiEwdmv2(n_B3|?gsi^^e{z6+jWPSbZ z=2Rt~xIcDyeaGV7Zp%$pDn`be;L@)*hbRS{i^S9$udixbHh|l;^E#)xq?e zI&OQCJ{Kq&=(G8{jTF7Ty~IyU@jJpO3wLWmLU3yA*S;gw=__M~LsJvWK zLITxtwt?C8GD=ma89ZZ=!-h&#bu~2&4KldT(BH@G04%}-+Cx7o3^6))#2Otog@Bqq zLRC5|h-$pW*q+a50aY~i?t2MuyOqAwl9HDjWN?|BAS!H8UOh9cO(?8CW&{T311wF) zb&Jyno!&N^#e0B=pPwJNtO;kFv&N{@sWk`~G*eRuzC#6G+u79>#Z=p`C_ViK@QcdD z>3={0nHUpcT2&P>h;1;97^~xx6V><-C44#nBrrnlE)fnIj!_V*;Jf{#CUs**j8tOQQHC!^V|z~$1SLj;Yo?Z;vzkMzjd6j0^d&KU`&R7P zGt9SUW=Jp)Ty~F+lxvMxGTCj;;O~)+;?*$x#5Sj^32xlDu{u-FZ(v|Bx4fL8cR&2; z$A}0Y;O|ntd_kt5pn%S5OTn|3&mWP!zMOxVaK^lQWd5Xu!y(EQ3uz+Fa_rv83BU{{a0GUXFnfLpyqP9Eaxi&}Su z*ucj?ecOF-WG-Q?dTUzy^Q~!RRJ!={Jme}h@#@dc7pKL_6A?l^AOHSX%Ta3IdM^Q4 znYo395o6_h37YbXgqsVwD*0k!V#pQd6W+kD=G3v^W8mMqg#RsdW|WK>jYbu|ev zVtQug8_E5uX5HCTNs*DhBe|-JJ092kz)Rmb=8Jx*s)|lTL)9*`<0!Q_0b}Q zf{2LDH7hN>x5hKN<*cXz$;@$Lb^? zASizQ{Wb_{X*D(XNV&{K+}!HCHN}?Usu=j2Xu5Bf1tECa|iYU2$Oc} zjx~oBCo9Pwp&6cipC8@RAwAe+dioSwjD*pcFKeRX=al3Z-N z^xS-+>z@_Sm@7e9cNIAdQcgEl)5rGgraSxj_6)Gw9BiO}MFsh@u$V{7+LTB1x2w zb0&>^PXJ6GVX!H**BM6HZLG`7&)?eLA9fC3SWd~##`N>^qi1DBhyD8X3kKVssm~oc zID()5V_t&+V4L}Bgpj>p;3uUtFWP5jD7?J9R);e2z!UfY%v+8`mLjW#201c(-v(k1 zg0Zr#tQzL$`9cJ$9fRjuRmKX4$Kro~S~=n4`1kJR?7u)aTCjLQ3#BWoLB$+4a-y0f zU2RcChm3*+|9OIxME>PX3XD`42vl1J3lIP6%CcS~=r&6X#vniO+*ZO)LPah5d)2?< zt%)P-?cu?^?VG?h!9iv76{FVB&?uW6+B)PiCE^$w|JS`yTVOH9!NJMO&h~miFCi|D zLPkywq7fRv{ycnqIpa$BRz8T|Nf(?=GTGVAj$?g&{RKEvAWVP!h<}$fw=uCGIQ^vB zx;N=i-~XSF8KS5iWKfotmXM1hZ9?j5Gx}>4ZidLOU_`s8cXGN829W&oDOfYaq9?HO zVTUq0F4SpkAJ_LT7yu>OnWd+!L-Ln(h`|@gn*Y~=VtXAEj3NKu)>{3Sm-ef#um8YowDA0YTOqJ! z09BAcI)H(R=~Z7Z_~FBc;YkfRex`O0Uk8g=^jihQN1?A_OB;rp48|Za)2^}i%Fky8 zzH)wR3n%>P*U@Op%u3PP*tm|r)-e~M^^Hkv^YoI3?uyae+{O4HAQxfXK6BfN4FwAG zP2ay`>gedeJWER00lqq1{UP2S?d?oDOec>&Ep?9viE8N-+c#`ua{K6!UDobHd(2%6 zB4G?m!#_tPt)KuGHn+KnEi5d&PB3;uX2)*+^KU1nl1z6)|&JHzmJ(jfOsin(XaC}|0W z4adXovGbpWY7DHb!oUH7&^#P*D5|HIG6}=AenQay?VE^{6xydxpI+$@VEK(#+tFcR zVGY!~I<>X6HTCw&HA~TiQvsA@(w86#G7jL;AM3ZEVw12-7$$-(l{jyWT*~;GC+=M3 zd3H(k?mm}eHsT~R8c8SUNlf8k4a?E@gJyJ()}HIQz~Ubq4(@nAY}m#=SU5`Mjyx4` zJH-c?$jIrtcklQvE-rQ_%?hdS-$#KmBY=9nd$W}?t=9%00$12NHbw->5DMe-_;kI%mrj96Qt(H#N;_L1z7o%%91=mytp1 zcJkB7c`ZHWM`noI&r zSf9t=cr>~VPgnxE;FhylB7z^u*FnEW_F}m=9s>)jrQY=fpNtGU#i2+uSqT2hoOgsS zDJdybztx{jXJU9{q!}c)A{(gAZ#o+V0B+pf+e3nZ63Taqb<^xTiLK>c=!={&?f$`m zVniG!j8E`iy*{~WvKgsIdk+%np6J{o$aL_KRjC~>+%L*(2_O?W+u_9Ohi`6t)TQwM zoSQ%7Ztqg?{idE#e}$X)rt8#LYFSm%BwoPQlnkYf3-4QQE2*In(#L23^Hh0U3jw&h zw>vLB-RPl9I21YminhUgg8k`(58L!6i#4wozJLD?YwF(}iK(a%O3>UYDJdDKb+Wn}Ki?W)xHD5v&%ofN z#w7LTO?ID<8e&ztV8ZDY{A*eqsbnu&lobP_?1{`BsW&o|i9TfGQMwczT@AEhKk=BS z_Hl}L2A3F~Q*vDUQas}?v>C45Uu>Bv4^AG7{*}8r)p)zuuIAg!ec^W=;4A`{@X{su z;@f$*NoWbbuHa;t8~h7j@sI8?-x?A$aA32_rbK0ktnlFbGt!0AAEzAI=V*s#c_xUwv-jaG!?H z0u6TIX3K*JqcGJ8nDi=H;On8RLl3}XVy|RONX^S5Snj_@4d~W5Z{rL>A8?4gEHNrR z-Ioq$>Q+&mnQx_R>CV+KB)KQOo|z}^cr4On^k7E8MR%i`VJy*>3N}BK!8S=hR%x>+ z<7~DiDU=9+c!ZqGc)kPBBOXG5b@Qj z)+cR>{l~;SDk9{4Q$pjlX zcC>!sM#XuDC90N;iU*bj(<<%vhyFjB>dlDmKMX?v~y^-%ViS|_wc#o`_ zyb7oANMTHgE~o^Z>1RbjJ?mRx*x5x!|l5X$J?C} z4qe=6Yv0o0){jfzA0raJAP#XFtxrE8$5NuY%}YhIpqXG9Xr#p+!#qsacZ;c5L8*b& zblEcm3oiC0vqyD}yjnp^n=HSU-=F)6-l@0t&C_S<0k=~H-yOa4)tF+z>Wu1c)SPK7 zuiL+h<=I1)UmAWCnXI&y7co0%(qMSM4X4F%_TlLXC=}mV(}!yy*(NDQK_m64^Qul>+|@g$PheY5}Np7dV|KoSfO^=~HVK z*4YYLS1Nh7$>9~6FKUjTF`TzPQIlxUIon_959{o_CicA|Fg9~b&OUbw`Vorh3}Zq zM5^6c(2Pt=jHZs4mGwu^|KtA zv;C^7z&p_xBLN?3wYlg_)*GY0vjNk5<`b9o{Q)31=b3OEF&{BCXZ{bmRDZ zxHeslru;BRDJ$og5!`Y)w^;Oln+i*&9u!^{Y;yXozz7o zPE~j`rnI6RXOHQ-zjU&30^?@MN#3SuzXM-TRfvJX+)wMsY@V&CYj4tTOyrK;hc%7Q zzu^OEqb{lW`IFisE7AHFS+&Aa>x+!cIg&(S(mBUuLjh*+(XU}HTbyf)^VAaUh9k2q z1&8ks{#RBhQ#myCxPA37v?27+VkW^_QpdDCA|+0J8y(-LQ@oI`<{GO;~k1N zZZJovsh`b;9@oDUY{`#zzo(jv931oBWQWl+w-zV5_lo@bd0pVH*96*m{|(oQxJXq6 z{wE(^o!lH)4ZFo21fUwdhZeem)5us=2Hu#E?qFx#@t>u>oBq~V)A|8H<>_TxujrYQ zYtL4(a_&z}N{qeMG0R7t{9?uyOtC7VFQsa3M^tz@6j(B=Rjf0)P21v=*5090xMDrM zkTR?`XJb+?L1m+?^HeNNn@n#2cT_v>Qgl1(m)1bXsUSs$i7vtddX5WK&lo92FiqL| zFZ9GbLMd>hrIuw**)IvwqTUo-wt+M$CfOhw_yU~lH*YhKH-+kufRnY}E#i3ja`bzs z)kImM4VK@&UEd|xKJ^l~bCrlBrQEv$^`+Fuk}`=`kVmerMKuiA@|FH52%v=GtEnK4 z6|=z0Bbi%yoAp=2m1;Z<5}6^6m8lI|gGqHj~I zUvH|zrZ3YDC$2*lgID^?uX2vQkHjyI8(Yyan^f)fsp7d-Yz3HY&1xaas$5cY#0<)I zf{HU^k@}GxO-<<+Kh1;eL-A^uqCcu8b_&N^?}5-2PH-G2A!|eVi`rtZSE^id=_?iU zr$4x5HN$JL$A}LtT}>ZdpHVff2o3Py@_fp+E6&wMr_!J1gn1J8w-T;kA4Qs)Y|m_c zs4}_^8m`TeDO?BH;@-f(i;2<;HlsX{Wcnk%2AhE#vsHzX&V%R)Czly_B*IXHQdds- z{xlz3znGCj12Wb13*sWm4|x7C9i@q!{#}R~TiH9^3A@!q`Y! z)iX%;Bo8p9qFSXh)k9K^eytm~)L!dqmwZV>rJuHF&U3i-rT zTRO@C#@5fpn;pA*#JL`$`)VVMI_`8xs;Y)VcX376Fh+f4%1^)Cn!@?2@X_n45^UEQ zTt65^x{pxq{etf^q=fd$j&5}x8Iyd@9G<>5W4rQ1&vJ#Ckey=(SI#B6rBm%(@nNQ9 znLisUO1&EnF9$`Yv|~T(A`e%{k)Ecyp4=Arrlcj{&u()wL;Ur^I(y1fN|F6GvKf5Z zx$_;9=JE|SCd8&-#8}kX6nt~ao@_%1UNQ1$ib-=8d+g=7k|3_#GzTYXQ9UD@3)w-| z`4Fs&WQLU-Jtg~UFA*u`5g~4|$j|D&Rjib6yX>56Uskk}5sH`LyGz7%kF6fiHa73e zN1*j^@+C%VE4LVovWyNmA8fS@C^4DLj^8aBBWqJXyARvnc@#ythV=B66UwK-)GRTlISHkTNamAr3T z+1n?-7l)3iQj04x{_Se67iLL#qx3{N#pOdtkB-Jpg#PkSXWp@g<;dFir#@XKxnVek zHx_6|ve`1m+hx^8U?-MG{p%|(jAfN01t`0Nk1=mAZ;4!|j7Ci(D$lal)CV)dxcJxX z+~b96CPA_B#rb)8ViH^zb-gi+z25f#U!|Tv;9AvaR^e;~wGt_3mNk9lL9$5jNq=O$ zRa==n*3#Fb5XJL`{^<-aZj`J=bh9L}%w;FZ<$mqQ_z*h=eDp8e1#Q*#*MhK0$j~TG)z-#2l?$Vp_T#aoRoOA|U>J zoRR02q3v7lQo&rBit37M$v?k8z`q)d;Lh#NE8kTg;t$-pdKK-!iFJ+YTA6!qi{G49 zM-by%19mV4igUuSCF`Y|DJ zK~fPyx`GrR;vAyXu6}5qJ~k4%GFd>{tRF@ z9lR`06?k`?LVggcnp`bsLe`v{f5FeZ?lc;1Q1YX+LJ&4ZQ8OX4amW(G}_ANfosb4DKrS<$8*29ZnkXu*T!UuDwk(=uRpJ`bW);IUFD4Rn|DKRftB11;S2c zIT=+L!ai}LRS0^L;%RilZx6rgS!wtZB9x{~7luNH+H^&;mF7BiI=0H@Jhb@0J&(+X zTR!m>r>XdvU4hUDie(g@8sF(Amtp3lz=hGZfE&EWnNjYI!CKG#z=RTl#iVOY*vFwm z8mTEtc9(k89~8rrAtLba4zh8df*YB6{Rea01J8LyclJ%~`H02~TUVvi6+d&DL`em( zQ_Xe`f3|$nIUrQK(5DO>f+smGgGb>3N?R_6`AzpnX(l7onVC|Tola zi|Xc!E`(`A`#9q4h?f&5#K1AGssZlCsX#ivyx%i%-rMUrDD`}FhR)Iw!r-* zUjMSGC-YY2YVh+|anDk{G5D+xOddJjQ@UUMsTk{oPo<#(tvfAMA!AMfyuzsH*Cs)TF1-qyF&6CD=B@~ zjJ*$uw1+e)DQ0Dw8{4_U)Yh)Oor&*}x@?sMsRO*@YhmUy%ly8% zJo>Yvl~vG`V=B9o>vE3ZT3Vx!(I*q7*?Wob-PKgOnb@oA$B`!}q2`yjn@V@uL6Qm8 zq~i2Rl^wNZf1YutDX=lp(|hLTGJ;O++^=7#pd5OKkT9n_UA8V{Kl6C?%^G8cgWgOo zrLUVN^)WB82i5nDlk=9$AGqJ^9UA3KSQ57FTMwgl4EvdX9-DFd?oq^tA5WoMI}u}$ zeV1se+IIe>p|}4I^NZkkw<{8>OlUS)qjf5`fuVAvE`YT76a}e`ELsM`vUPxfGBY!S z)%obrBfyQwHZVJit70d&u+OUA3Q6yOm)ZRmrHbuBc<_wv*!fQBet_JWY|%)jl?>kS z*u=VdzwzOwUk^Fk>vQCaD1dk)pr?<8C#Np-H}=DQNI`rpg^YWbl`V_xOi0k>RS6D1 zS+qDQw-$D9jos2Xgl3=&#`6W(iXx-WpPz9{H$30<8Uf-tvMIo2+-`PDn_2{ATdM>({SS8X71- zQ(C!*7Z9OXv}=6TOO2cVui^_@uun$i;&}8i#{xDr*X38?o{PB)#DqNV2 zjm_!lVp#a+&mUrR-PM}j;KF{@WaGJj!k@cCU2;%WXt{BWikq7dzNy)GlhfjuQx#=k zh*4qQ!=k_I7{|Jd2cGvm>5xq}`L_Q3w*_b-!*l+bG4P|ShQRJ_#ab7R&z94kY%eH= zY2jHuN|i(DpzW_!>xcu0O^=$n+1PH$L^FBS*7E1%<`(O>qD5(L|5NOR8+9%$EPRZN z{8}u(wq>uu_Pq)!I3QLJ?DSNzv-!V7)Th=~2rf%E=|;A%;*A~753a}{V#jpih2ET? zQ$Jc|-yW6qbv5A^V0OuxJ!$_|IkcqcWTs7#FM0ubru6jmO^k(g-k?GuPKB=rI;!`S zT*XfT?T8I@BS0(q*V58FAoHjd8~Azm0!AR{s`QN0B_$??)YS<<`wH4LS$TO9wzehm zfO=Tf$B>Chtb8q9JM0i6j3g+zr9>oJ#$7nO6V%&B^ZEnI{7^4>>L--R*{`?+sC&`T zgy38Pf)z68FhMnN#PL?HLFSPog3{x{>sbWt{PEUQR!&aK7s(*&)sJtuM0Zb4I>9jx z|M<}}A%ToZtq2CYQ?mDFC?gfHB0yW3o`t0YP!pBANH~nK5hpug$sSiEfV9^Z&8%5u z`hzCXEk%go_ZeJGQxH_kOSIIZ)D7`Hqw@|zs6~JtQ7{)g)ZQICp*GA+&Ve33h^ z7%ljw7tQY7khOZD{if?qf^BRdTZr^jI>g?}40G%xx+L56&ZN8=dlpuYgbG_G;U@6d zokMbi!$%6D3W7&vr@Omv0=5L$BoUCB0~X3awh~<$PnYEC^YOpTK*@(TaSNxHDd$12 z#-%<=Ipv>s`_eD{bL->cF=~v(qi_%UJcq^R4x7)jR3f>(?q!o3+^!MffM~LMrwIwX z2G~hJwKNzn(vKB_^Br&h3<7*VY)YYN`aatmU2T{$^SYt8PGx+Sn~ghO$8RMUr<_UD zLUf?7CPC=iWUqx4+yFq%(|9-X8fB_1m6HJP=1p{7D0lodZ13=UWp?D227RMu`o)2X+>YnUbxsRQ z0On!=37m+7%i8us9B+zjLeU+eN)L+e_`Y%(?OaW?`_0QQp~s2-(B`Yu1Kpn$Fr>I= z-FyJm6$w^hH5;0%TKIXI%}x~l@^|L_LpoXG{r1>T|Ks;DoIz!XRcLiN(pg@H-i5J8 zq4qirhK%1(oHOt?fabt(J_~xpG`9{$svjDzslL-H1t~wc@$<)F#4!O5wC>EZT>FIQ zUbS51|FUs_YNC|FNpQWEnY^1Re2EE24`Oa^0>?YEc%-DHiQIRJ?*K{xlb`7`49ER# zVx5mLjm%Exp1CwE@{=!#RKZA@9DBTW%X5H)YVGLQF{bN*1AY&%=gI@DjQ?p5r-ccn z-(KESqgd+Em`|nkT$w6IG)_9eoHI|T{QPI+( z0lM$jyk>2RK)bB>C@DdWy#BY7owlwdi?e7;1q88fGS;(F1cL$c+;-|!er5Ail1rGz zrDD>fG%7WtFKun0kA1m1= zNLZGtl@tTE`~tHq*n;i(S9yee;$l`5_zj80ZZcy5GFK5o%jH(A@E#ZbL=@mktMTybnkKcEKmY*YD#1%OaQGiv$8Jb~ds0BCr z6zSi6;$R`fljonqNrZ5lN*m0Uq+9C9MNS?25?TK`UcYx~Z0j%-<4;>%$eNuXW&t!W z$@v`t<@&4O1snhWCIOTgFBlXP$FOLNIXZIH)z`DxEJ)Y`Vq^V<8TVgY5wD@Rs>DQc ze;iVOJfTxqt3QsohQ__C%N-A=*q#JOw#7acF|EU7!0D(mS3p>cQ_3r_MbLylwLV%` zCKG&j2W-zSpko5Ac1vrk+?HXj$R8>JUP52n!`qmE6&zgHcy$jDmO4Q9FW70u1szZ> zJCX!lCtEum+y58aL)L3lR)Ck61TY?A*^RIO+2yXz#?$*_41d@y;E7K`EZIArvdTrZ zhLO{HcK>7X)bQ9ppTCZlj-sO1tj9I^$#(fR0~r}va8?$*^SgHyK|Wi+UqbW~A!|N@ z*$N9%(6=sfJF{idZ6I@ZcLz*HP1jRnLZ-{-VP;SS{O6-J)Op7gX918@iG|$-0QLb$ z*B5XfonqIFU|R;GijKERUV$VAEEtn6v{?MkyHpU5Ya<;nw9^333ZOPKBJ`=7lkGiE z{_WB#wLx+Aiv+ZMlPO&5f4!?6d;u`cG$_gM{%tM)u$QpM4%u$-6^@TmXw|>F3xYdf z!AlKBq-%$x@(G|KY|>LcOE)5kQpmomAWf zy?lsS58&k-;JY0j+TV>=%9Nj9Xb%bu4V41kSI6Vh0Rt5|(d~cJahkGawUYMtZ7%?B zQmZhJYuRgSlYpw>fZUl?P|yMF51*2Ue3QTTLy0htc4Zi9p6Ucdqi8tPTl+fz5%jA36lo>9fQtL z@{%8G;AToBi8F(P-VkXQoD6_qyklaBGUO9KfTDMZ1K@1~nx!Dm2+#ZhN%G>bOeU-; z#XP|-s9x=UnL+$-_xBGcF!pfIdBMvlC|ZAu)ht}#Aqi}NY!rJ+Kr>H99bL5Qm_+WS z2YsL&?6Liv9*Gc`PvQZxhmNz;qP4G&^1LZby^36~EOWuRKUD%7sGmyV%w zY~EdI|Hm~vrDR!ORNKJ_pum;d3&@DI`D;A`R`3MFkm%6obl+dI|Gxi!Kkze3cXCRc zKAf%fFb1du^=Bsn0*5i|Ylm>AVyw9T{Gv7{>A%0J&DJ3;f8dt#m^^p7aE2%Q9@p;} zP(-0KeL<7(Heq+8w(%bHcy?pGk}hMmWbsZtb0uK2#MS=m2$pOST(-6WV-_cBL*z ztGJf$_0>D~&6Us-aNh?Ex2+Nhgf&fjYvgumJ%HHHN>V*WBj%_wxd|`GlUf#Xou3 zaXDbWw*tai1g)GHpnL&g1Dn&f){S@|gIa(H{G4Wl0MaXhBm&?JYCwbkP4I%&Jh|r_ zRTz#Spg10cPiV-!pzQ-H5Kq7z28kDt4vA3VXN@QD+MxjtCM6;Q+uYg$gt}hhrlsQl zVpu+2YmL~YnrB!pijIA+sfAydo9h!KW7e^`u;2}n;k)r4K46`mmdTS3I0iNRA2*nz z5Diqd@i+=A+;?jPt|^W`{u?tmAP8~jm@O3{9-(+~D<v)qg*Au*BUysfmfG(09I0O*EVLGBY36$NxAqd=MjfB|_jYX;nlmD}U} z^W^6~-Cu@+%fG#t#fThrKIi5(;Luv% z4Wpw_YcS=FCf72K-0z8dKNXj*5_&tHROaA``uJbYoPF~A#+~`S)&jnm**}4xys#dA zWl_$^WTQ-}U9^0hcJt5MeLkEY%L$dW!t;3lhBma_ECjNytwwZnT7i~H1SuzoKBSz*ux(md1A@Gj? zNW(x}vRE#N53;?sC38KBt=6W-XlaQ%x?~!z9bFvwA}+-chWI-|No8_~|FaAoKi0^< zDkS`N*ehJD<{n5o?KV;)kPQ1W0V@_01J9^=xW*Hz970(=mF6TnTy#Z73! zWg%^DnYRh*RZE3YX;WL4gf{t5>B~$-kJLOu?WD+hSJ1RH= zdvr{&f?sCv$p(~?!|d&AT&wwW>T{Gg9dOuX&!c3*uWeLU@RYPCyBg0kYq73NM>3US zSi=!Q>&R8vQ>A}J z_UeAd**atxgf7dyBH0~ILWd!gaZ>9f^fqy5& z{~*FincrRnoM(t4jt8umnyJ3u@4wR`Yas%n|G_;DDG&JrG^h?mg$P))tvxec2{yMT z>B?+{2!IR?%2_}NL;~%CubG(}Mrn-yoy^*;D$$iRr_teN-JTRhrpVnt^g4)h1}-?7 zNgWwT9bc)c8iLd{Ff7c(BJB?%!hnD5Z`--MXVkf6{&00r9hGKjUIA4k>qvm_3D(2D@Km+VwyF^nzsPq$-tefYtK>R6QjQ06?3?bp7) z!QcO}^zByd3Ip*d9;|MT2FqLa&NY`&M<2i!{wrgsH@9yG@{6eY(_@Q>=sygwf8xpV zKxf>nx1~@Bq?&Spp)*na-h*PpfXxpkKqCtEptQ8e05P1{Vw|eCZDR1H4lXGx>*!7? z;XgYJ{*Wh1*@teUbibb1)V##Y2Od=YlbR2IpXf7cGvQldUlwb3z4+olzys!`y}t2- z&a*p)L3b4BgMg^k3#4_YXJ^#x?6*N#6>DeYN###syBW-(wCSYb%kdn3<8LeS78#2v zR_Cd+WMU+_-EC2YmLWFfxmq2daKr|B2OuSfunUjvufQ&m+W!e~LOL-mQ>|**e%WPm z4cRf=WwpC+2qQw&QAwsE?ju+8J65buxc>T&SPWRsbfVw^)AFkq<_p z-~iVIM`F6h;U*~l@bdEJb@96%GjUnX1cO?g-nWm`Z!MnmT5vBXIDNVNag1XAXM57D zV41UI8-CtZXrO{n?0RD9hFHr4;{3N3pe69SvhCOP4A5r-2@IFT@EfA`P$d!44c_$o|C~TT{~Lk%`iX%OKll}Sn#gSeT`~|4MKlh z@(-Zq|2-5El~!8KqQRyc;G`R4h3K$5L_~&{h$GM$xdB9n%9D@xupKOvC*@;UbwjNh zF9}a}X3=36pe6=sKVXn>^>nLp_RfqUE?7;KZXg+-pPz3=z}yxG=T5%OGIT;Q>#L7xqmLLh5oX42H$TtZY736w&-q3$~u7cva06&|eg zqrm!-g~Nc@0SWd}Nr}y%4FkMUQ+KyaD%0SrTMibS3=Ei{cBNM9$P8L8MHW+BFp*cU z?f?TC92|u7!JroBcM^-jUpo98pDYEGlR#(3x3aQQDjqayq72idLcD>lN5}olNU6r; z2ll-u7-0MWGR%CoK|A*{@Ya1jLqi`SI3lH{W^#C2oy=)_TGY_+{%ryRqw4^Fe}mn* zX6Vg8dB}QWl)2|K=S@&+7qVY{F+MS&4^F{TIXTYE^8_hvO+lw^vQSFlP(a*&!p-f| zxrk(1KMp#okDxT;p-l8@{dFxHTO&HEJ}nv^MKJvQ80cmH~sb zqeLuPo@z`TOWiTOYc-N39@p;BL-k&s#zzIZrgMAFKm^kaYE->jxcW5zc!WQ)xE3)sGyIh<*v*1d$YbD}57a8u9VGU> z4O8_ac3SHK^3Di_FPZIl7%nV2b%EfKzvSd#fl&~F!NC$QUVM}~2Pb6_2>!FOvOF_0 z=|Dp$)cq3iUFUi+Oc)vwqRww-X(~tDckVDJD=QwDB_IV_Ej5l?A3(1!1!%_aZE?cUx-@{S`aU&v^CQk1 z;~P2I`7>2EDCfsp;vh*yMnQp8z(6}ls;qi%TnhjB#Yy9JdyC&qNIPmaR-g|$_TaRQ znI?ly^6IMT;pPMZu;ON*(1#SEFcC$?Tk=T)*?Jye5(Uu3&0Be#lY%O?_2H^wL=v8= zUM^$G74kWFW2jFFt_wwDFjRwvk8kpkL%r=17BoKsj3@wpivakQc2K^3GHHgu{^f85 zoI}&f0g{@PrV+SGLw-g^2GGo-L5)!$6~!gv@dQIFNR`JNaTX*cCC5RZ|GA6|+uLFK z37a+LV4!h_^h1L(tPEP@&y&+>-js~B#c`N?1f5!Nia^7;+~~UptV>lH44rr?D+`T` zfI59GEn?2j&XAP_tD5*4?E|IQ_bc!tQWh4>U{(kx%l^XhGHrZ-nV}&Hh+(k&o8n-I z2?~dC&&T{q>@s6<;BljSWx|4kpNwQ%V^!23i-6kmgWH%%uG_rOfdR(f0tUAf0j2Pt zs>Zj`qDm?4mHuSBl=A%d?FK-K$v$azjt%N2Hb9fcq+N5z)8Q>v(b(M=vnoj6R9qML zoU5F6C}4~0lLevzoSb)ooppdE4v&v#V&^86-Xn!F4rea`twzXw1cl;Sl zsgVZQ0yKf~z>1Gg2=ZIJAz$wjwp+%AR+D?i83k4ZqAD~-#j0)(4T!z~f#8wZrbH(c z-NE)mF_-4NhuUeKlpYdrxFBdQ>_S5@V36&Cvj#aWEKx1@UPlL_aB^~Ohp4x}@%n({ zZwQXR^G1Fpq$ULl?Tf=91xUOFfG$j}uwc;6!O=0gT+qT4feq=CpfkZDk*}=enON|7 zavf^RfH4k0E)O+fA6S%Y`<#MnvN`YS0Z&OSAV3CduzqOU!GtvM~4^H=96%3MOJ!@4K|W`s4lun6pF7V@(B3 zPLP@cdt?CMDUf(J12RCd*%%A76Lj(k(4>_pMpc*q=`1wL0qFApILxUJ-27JbL-_+B z7lDBe!Jy#=Grd&I&(CiM-ceCo8wd1OU_~0*5uZK{3=jK4XA7KT4T76;$)YkcH=&6Z zpgF1S*rNd*Q>?6t5m2s41L|v-hU(7<%ll@s+Ebi?=LiG@Ly5s?iWWy7FeRuHOw{;M zYN7x|Vd2ZeArADd%@^wG*+o-#BI@~|nH^v)A(#M8?0B6Ehar9=h~gl;?Jmb#(L8?q z!m$qQE8wPx6zbFiQGQ_#a#naO&tc`%FSUBX2rHeVJDA8dW|3<*Q;4XTW?3 zVow_fi?MbcFo-5l(DfJ^5Cg1U%Gj6|L@w*iakkecCSX29KLVVC63RNT(GcGVjO{2f zls#VmsIxRaISJZ-D8Otwi}YKEbuJ$~e5eoH&7+%BbPpe<*42>#hz%X9d-v|W?tCBW zSK|n@@EGXm=;c58!OR+Pcw)58<-q_OXxfy~^I19&?7*`@oh<-Ki1{6vIzq|KY6uoE z%pIa8`T6*0z>p{~#K9N%d5Fhi*oo`+V+}NuRI+mqLsMVS10ca|+!IS(o25Vaiek-V z7m!TugGn1GXxJa?jlnt~Hgcv_(sP#`z<4L%GdtSe6M(rlCa<*Lv~vNN3I<`B{{4sl z!lOYr3m{%MH+uRtLyOZvKeXi+{(P$%lpq&`u<6(|~Sk&*@hCd>Nk zSqihFQm;|p6&CZc)6v(3Z+`v)5luo$YN6lbiUVvb^uoEPdE@IjZ$j+lI`b7(4a=3~ zHm)_(GCbGD&bTuQ2;<*_0`997m^{Au#{yQ6D!vV-5WEL$Y@}NVxT;d)UT8uDSgIft zblh(yNbW!@;&d;iB0Gog@rpG&7fN>h0^-4}>lcm3m^? zPyni)wf_^eSIXUyqHW1OF(+~8UpaJIt zfRd?JuGY}!b@MHm=g&Wam-^NAw*`Vc|Pyw^M2lc zT1L(I-S_?beXr~KUf+vh@wLyeKj+rJH$$OjL260&C06{rF*KF{P`)Ro1?1tRsdaVi z&{%_Rrb(%9s|Em71l=Yk3W6nxF&4A11-3U4NK=9|9{YTG$kTzep4zRA!7U^xNa}{9 z=^tPSSk3>^Nb+^gp;Hiwf_{SR`kK@`dHD+KAg!KrdDH} z+F%=tWe^#PwiR#p_n3@-d>R5nawC9P>WXh~RaJbC`fFlsYo#}OPHWFP$F7#$3uPz& ze8ku1&MEimW_B<(IM|hX%t7_)NO9tv#s%4V+gs}Mjh2zTe;-qFI7egOv*o;5ogssl zOridfUdQ0uIj+X%!A6^5VH6!-cI$OJ{(O3)T&S8c%{VjT*W>2mH#6xU)7NMDmqmdC z=L4TjxRJBnj%jwSSr-AF?;J{bIkEU$8-u~@;p5v`VIA}A+5YekQ)=rdS5wNjB{*`t zHx@e&@oT(18Mx{H&0Xn;m{=x}_~AyC^Ro(g+Rcvf8&BJbm(LuYSoym*bzY41EZ7^L z;PEUdc<}b!6Iu}yp%_NH=NROtRLsdkPlYb;);Kh%)7$8SFN(NH zjuTCh>J&-c5ASS4ihMIZh|fu_pX?}dwE^qedCJBhdk9OJ z*USYQ8)0w+$)K^af}w6a?#=>>P%_U;VQ~JKUV-0#KjV$>?&*5hcnhD7V5W>4qF6l;r;Rsh=%8g zTK!U)6a6xL{?PLB@+hPv$tE?G`Yp?_b8z(USB4%lHRF7E*zHM6p>L{AdSkv&z7T+c zWVIk(!T9+55EN#Bzv4Tt3;+1hlP7yyn=YTbp+gt0f4ak+9Cyk3jgU*Eap9o245xDI z(^w5=6b8~(fI$+{(@`&9zQi`TC@Cr3fit3{5$r>;!2VvqCw=jS(+kOJOH}cZGqsj)&N>$DmOhl+$6rd-;V;(~s? zp?9WEvg_!l2O{IjSSP3VWiyqNOV##)fohQ#MB&iWH!v7}b#RxzaFIB!=x*2I@-m^S zN*D@ptG&5Lt6IRipu_8{uW}_Rlrepp5jo)StUO!TvPHwu6NbF9^Y-*fyf*;GVr)O> z>uzrNzAh)7j_vIc!+BLXD1vE3PEJnNZ^>CVRi(T7y+feBtqnW(Y00BpFQ)&ji zM|UIP1t0;0HC)GaN$T3#_HMx%5b!7^EsYRD81EOpefu_K>^3; zl$4a@!Jjhb;g$@Gx**y?wwj!+@Q!lA2%X*c}kaM zH9(s3MRQ`V&g_t}m#?lacTmRb?@LRbh~fewP2QwKf+B(4ac~YQ#gQ%a(Ar@pfZ({z z;pRf5l%WC%Rkr&~u{@L-fM?P)85TU0xLYP((p6+x+&W5AyWo;++Fc-FR%bfZJ z3fC5kmSiW={aZ4zSWcSFWy*WjTCL;HNI5ZYLC8Rg6cTO$&;_C(Yd(Cy`*7%xgA&6B z!<6qnm)pJYQs-f1&bmg*f)Uzi;2Dl6|M9i@Y9_suGM2th*CEfIoi!je7}scR0P41!JhPch}rCwbmea4+;8%!gBq_jX#ba)oi(KZD#fWB(za*VxMz&f0Nk} zZ#CHyG_Of=b!$AgN{Y7}zBfeRZ!&Jz+SvRtb16{#$dUAt5&=+YBP#C%HXBEU+w7ET zJ1a~IDsN6xZ@;K_Zfy5Tu5ty0Od*yZ>%tGv9tMgLrKh^8(Gp8;W9ScxW~SUpRUBgp0JvPIucO^#%-DAA;GqX8YWl zCD-0>piNH+1)NfJ-2cr!ets2`k!CKLN@(HA25V2Nx{hGf#@|GS)W1l=m3 z9M3T(nMigtkv*o*u4ZcX_u=$6osOD%r?2E_;*3WLm9C@gl|Puu@W69`KzJH;!=|)q zJg<&=BEmA;T#)qcPMX^N{o?5RmIFa)Z`%k2!ci|@h{1zo$F$Q&B(x3ty6u0gH3^ww z-FjoArD0vWVO_+&zPKv$_TQN<557uG5HO<7_^l)s!crh|2S7mrYdZ$(=2>uyl_pS7 z*K~ZDMd#shCe z(KpB!C;T+e(bg7)=ss{&QdN9{O9p(oK-RUM8vb_p8R>~=f7phf`6Eh%!-W41InOCG zP?#TE`yF?1;vIY86}BHAhabRGUMZ*8C8z)MhC~>UICSU`(rbX=m`G8rXz!O^gm8c* zRnO*)Zk;r3(VZ4g1WX0;{|*$RsPkI(X^HTPgF5zxpDxZcSXL-K#6-LIZYibkK;1N> z;GVnNmnU;oyng)~m={Waa!-958{UxWvq~T1`=)R&Fjl=1XXvmk>y6NtFJE363gJEC z<>u+Rr0q@}{}r}{O+l@trhL&H9N39X4h@M~KGQ{sl0#=q(PLT5*U8o?HIiCyrvpj! z2(UGe{FtfoQhes_nUSO`_AyOO7;rYgg;vivs%1ly42Lp(AMF=%XtMBCaw=4+OAhK@ zyvJDCVl6c{=;lqvO=f6_bOlbC)$k0opHmn;%7mnNg}B?|!@@Qw{RV&w{Fa$^wzlt{ zZ?6he`1pfU0Jwt24}P68a+DBPWE<1^o8-8@GWU(asD@n3>%5$-`~Lj_?)l~gCfl_MTx)A*a>;)ScWDGs}Nxni9gDn0@VWmNV zBvv?#MzSeu118@B4n$=9Aq_$+Zz_aCb+Rju&|4QHv-j#?K9MrEk*Ue-q`WIq zxmx7%t!^NNN$tM4tFVT2i7QgIn!_dv+oXT-@)as;+ou*je;A`b@Ry4>Uh6jl$MySM z0xw(!RTmZ(Y{4y$#PC7DX8oFEvqDiICl^;NXpf*wK$KuQnfz&H;Cq}l?NChl#u8t< zDq-pJ;p=(qEzKw?wY=nh2Df~$zR-2fqcaQIe%o(e-f$hsE8e?z@1403&8fjEo7OPe zIiJe-B|YdVfTHuctLxkFfG;oQV#s_wrWd3CL-()2o$A?{Ijh`{8)Kv#z1DV>wQ+HA z?GYA^fjW*1+nb{$t$_v>mBGL!HjYV{_KHu?$Nra-xv{k28M>g)z#+^N)Ca9JkXN+9X*djK9@Uv85T3KJ7@h1tvf~a zJ<}b9bcHI{CZv%D7GMeDpAQ?0wD>$jhYsivjNIPVogDL!*YN3!cB?M@>@cd7wB7?T{#_ovea}zn2sjzsBw$hBOBj#!$tki6QUw}{VIf2Yk)&|!MCEZ^YM58Tlcm$fAB&q zUu#3CbWHho8RmD?ZJVBCf`2q&Gq)s}m9R79n_46;aXiO79y#essU81^f$O zw1I`iBZ!b@EZ2kVm=03y1%hiL$&%@Tt_86WFdYktJ~1D;Uy$kWf0IAHAB{QTJ-o$R zDe|A1nrb2aH7leB`sb{uzoCH#Zn?OG1W`FTLpd(!O(1!zkRKj$g?Qe?_`l*iU4BWLH-cDDOW$kvrf~kHfYm`aAs8n)~agW+&bb%U>5p8Yl z#{qQ~#m@VHwZLT-vq}NdJbiN9GUu*|k&y=Tz;ThaeP^R?=k?*!SORW4+j}WNhpMW>YW+QUBXN+7*)lo zY%O(lu<5gI16iT#S-fUI`c6806ns-$?CZam*f)_Wh1Cg-IyK2(UvOR@U?Bu|uCGlNB0~i8^Yg#L_(gOy&lF&LB#H=t zm}N2EDW+9vXR4B0f`!+)BL@xuRf5PmnVz1WEWdBL{&Ci(JhTGlu~HnHam*7|YZ=E= zpS)u?j`rA`+AvhVZiV9fUmvWm`&5n%A1;JalQhU*)yXSxqPa7-J>^dSwGkw6mp%d#w$`~vF8ii(%%RL)xTwf#QFs?9;c`fG07?3XzdpZcDI?s{X^bO1I!hm=vCKpgljkz0 z`TDKj*aVGtunk>IwiCSirIJ6p<4k%7E2^gBxW0LKdRf_l+S=L&5fM+;7r@v6y?S*> z7l-^;iQA+%LLruZaUFlmcF?Do>!$}gI>b^a74tMeuD22v5-n9TB`9>wo{Mz2inkY) zIvJ9VD)I94E4_Mr%{?ccZ%CKO1no!IRAlq$t&-f;{mC(&cHLYEh+L8M|M~O>aHc&( zkRu2z$c5PciiZ+4axXN6J~Q0CSH}`s1_pRYbg6!sBZlG1&7gX-$h!L(8yU5~=&gVm zxKJ4ELJ7X@r>&}*_I`(Q=~Givb67+~y*ScNa0YqTND4$7<}-;M~>5Gu4)8su$$R9Tpt ze})~{(P855XeRGMvvd1oy9|^|9*_J3&LJ*jOhgisE%EnB?oss0>{Gi7u~5Wz za&U+qJN7ZdlGrv3e2uz3Ts)oJXodD%W?HQSe)Jx`F96B4a#M5gd_ypp{+dNJOua2E zEsfMg9cVQj$KBwjdh^20a^QnjYh=Eo52%kT@IR3u(U|fpj*j9eBxM~HCN>BZO}pyW zhngBi%Pw|B>pvX>?UJYSEy&wf^Oe9)j=Z9<4LRm8$X59Wa{TR78X)#PR5;O<|f+-;`A_svW9DpyH`zYWi0xkEKz&|K@ zl42r|JNV;ULv|Dd@)#l^@>;ekbS!V!L9~iA84gre94&h6>Cg~P z+>mFepr<6E@9ED*7neQO=w?a8noJ+XnOO&fGn?6uvpy`9KRk&7^@SeO`n8v^PJcA- zJ9=yu%eawvbQ?ZcVj#J;y&@iKus5it8dy+tda(h$*uI&)s`60REm7f;rNcw>6_VhN zKH&H)lnTD3I7feUT(eD)}}nv*k>Od9euB= z3L~|wM!2}RfP5YveqVocI=jBR>o>V2YGd=V(tO&>errNATqa{1C%vTP{XY8Ob_(^Q z{JL-lupGYnB`PmCI8X|df<{KR#$2u%WS0AjWhYehiciA{?WX8!VD&ikr zi6?d6-dsf_C53ogW_t)ZIBWn@LGxog~07W*h_x?(7Vf`J0UkWzDlbFtR!jwmX_CK+;;0;JT^FW;G&j0 zO)Jvs>&es#2q59{@x<>Xvqzsj=*TN-42+D#(QueH6md=;4)F6s`L(ttT%aVJJ*wO0 zhgp5KTPLdRxcY-QBQta9dtRZ?n>Q!}$$X^mza}S#US2w5U|>KX2?+`N7lR%Y_V)JO z0|S0)1#d(}ku4ielnyz$W$IL7J6gO^4~|mq$aoxgMIrdf)A3Xnc5;3#1#D%rja7ID#>DQy}xf)#N`hCQDt)hKbWo1J5 zn=Nhqu26EPUlC&aVIJ2jUN<9ibHVU;*E#I8G8EM#HZ5R7oDO@SHrM9|4+}c4tg1ibS4Wmoz9p1ZPtfU!`HexJNMTF?ug;<_QvK95V+ZpvF1)XswMDc z(WYl$@Ws+Vn}NyW_*Kn2qZ1PoPt|{7Juv&8mv?a3$DE#>EmmC;wLdII311{ch{mVi zFc})m+Lr|7neU z>0&L}1#42vg~?%WKE!3W2DPD~;mAhxeo|7>d7Q@u;q`I0K*!V+5j+VX&FqsJ-XLeN z$vAEAiO9?2a#+oiojyIkz1q_^H^+eA^g&e0^*!T(#0Q_;7aHBpuh#^^P$`@sJPzA} zN=gJ+WLz(b%-+)-{T|De*S+)g24U^9_|tL0cVVwe0I>ygxOcego5dQ%f6DTg@(Vm?)jaC39>;%mQdQH|N;b62ok)xTra zArR?oT<3;cp@qZxZBq-2j>*PT_Fun$KVf3RoUO8gnz|gV_Jj4kuM&&=FkoHa_FR8# ze7vXfXni>Sd}gxIZ*EQl1Z-+*D#FgrPU{hxFCxcROmNKU>FM)T&ZcKqBxTc$Zagfk ztP%0?u$|eel~EZ1WXRaq*kf8+(SY!-t}dJ1xmUW6*}lpM+$fkZFfgEN-)t%iC*Mta z+$a-apyZ63npCK{Ui4`b7zzK<3KEKE{#ZJ?k-$Z}OUCa?w6d~tep=N;{vP)k{W~eC z4*N+>|EJ>GycnUYA!OY?Wq#|fjv?Z5~0E#8?qlp ztjQj?pFn;+hC)$6z!lH#Ji?V~eZ;#TaI7W1U8+`4TG%JAq7tyYtOo}-u%LqK>ZGyE z+M(Oq=F=AO{YJc}Q~FPu(6y?X0Dc|p*6pR`<~{(yH3e>6sYr{wk_o2?a{tp{O-)Vl zw0Y|wJc{6(1m6}^Y>M`AWo^umH@KDLU;8<-3v@28t_~*Dt#oyC1XbMc51_@`GNJtz z(orSQ*Vkv`Ns62z<8#K-)YLq`J!|r4d7uGST~t&QelqvlqZI$~b65WI%F1P9fh*#V zA3ypmeC;>7-gRth18YP0QC^7-ue-0W?X2;P?;5OJM{f)Rfas8wuCSE^v%)8pQuK9S z#|rcF8Nc)!;o;-^y4~rS&({-6Nl8r=>mu=A?+d%`m}#TuMVUguf(e|rU<++yWR;iW zRsD1zBFT)OEKi45eL7NBJc&5wG-;u&shFdYarJBQ(ij84r#2Lk&Rnh^Q!Ub*l#U)tDWE zL$&D45VZoog+0QL&%N#hNC92?!^jX{zIXwNdFu=A3*!0Ki?Pp7>P_a~1nz+kK=GlW zhZ@fbKMRg`L`Fsy4|Dy)>8z!bxbZnkLUwVp;WUm`A{Ax@9;EAQ|5*m>m-b8Oki2|E&$i; zt{o91+2P^GrGQls7~!L*UJpoNdq3-x&mB+3mEl0uviq~H#O2IV!?vHD(C(KW%VUSw zk6c;&w_I5}(7NPHF|ticn;eh!)Z0hUiCY*lAY`Cc=n$b`wCR8ftX9C0uf$Ta^ivk!SK7MLV4Y6evU|po37SYku2PTxj#63Kk7#r4(H@;M+ zY&-wYW%^%=C8}IO2~5~XqT}Myv$9aw+1crsnXzX*k?uuQPn&nbS>(~$AQD6=U&WKu zs{RouD8p5}q4&fQB)sjLqi*%AfwQ{bJcml91Bl z(Ae1jeqK1xc4%d#M*I;OtCDQg2W7^CdcS*PgdDj0O4qlyMWm$q$qEc;+%JzmZ2zny zgo^?aQc_=!Amo%m)TkaG80-N=5YR2at844(d{Z(h$eEZ*k3Y`JIPjfd|9K4RonS)} zc^t8xMtyL0IrPOH-#+GZIn}v3-N`8^z<+}r^oRroP!S+Mjk!ZDz?aSOJVJX^{;wkH zwi4hl|3r!K4Yf2&Axw;&=LXOszFX$ma${7(Ci0evn8 zTvoK^DMhFV=?3k8L|sWeImy;~lel{FO>O2=whUiB1a-=_X~sOH}yq^WOb=H;QcwY334qob-M$NVbk zc1&JI_u}w(PEipmq`bU*@%rKjt~{8hrbMWmxPO|kwd%Zh*fcRbf~cuUUh?-bAA!L9 zJDFe=9!_cON&M{W$o_2zbw8hz1%02~N*rHG)PhRH}vFUKfry_S)|hUkFvoNp>O z1tumY<`5;)4YB{xr$6FU@?oqPNO670;7{Gp(9O-wS0p_f$BBt#b0BD^8eBNx1pA+m zl_+PA`_CmmN~nID>7`X9_Wu3*DJ-&YSMA6qG;lzQzKATI-dOrxHXLY?%GeoEoTm7w z;*>DmBP}=k_Mh8`e1!vj&4SZ(cYAd(B#iyKKndx-f$bj9Jpy+ZgM{tP=$R!Yk6g}n zW5$NXdGSQ^5JM%&x@C>pXa6W}Cp{1l-I-PYL*lOPbZYqPnv+3+(Sc51;Q;?YrZrhF7KmX$ z$TYj9?*NmeJi;P_G~Vo3p{wqjR*(=A+h*GjCh_Tj#@30JC4@u?*AHYYp zY?B>pG=$cYBO(yu`tU20CMJ~X4|^G^j|O;3K8$9CuTAwxaHV`g+5SaC*542LOcnJ2 z;sfyHrKY040&~@k?*z|RYy`-c*!1@wJW4L0GXO^q#Qy&3Qn~6Hp2N6nzn3`3i?pyY zs$xQuJu3AS7tYZzu(4Nwe(We4z zdIv|1xWjUoz%3UE3CaG|!W{*OEZ=d{jwl&^7(Df|{2BoNt6oho`!;SmJU<@_-%lU{ z?+^3dT_1_d$i!*jHi1<+xIP+O0i=lA)Xc0+E36PU*zCBxSKy32xn2aTdIe%La$lqj z_w2%zh?v-OlvrivM|Za%fEqRufZ4z7YNySyh+_a>a^hW@e48#IA@Sgkwg=)IF7PaC zeiJ}aUB;>`X8lrApMVmGDl9Avw`I1lgqSEBf2iIG?`^`vBD|h$Jmu%* zW!$cQDpl(H=+jSKxcwL%x|UqyPK;zr>j|VFOiLOiBvV)YMc~ON*is3H3hJ z0q_^nii)t|(R8p~Hn3pK9k+$}NmpC=z9K&s%Um-caojNmYv2l57R|t4`(H(-V zO6FG}YC?fHN-HbF1u~#&!JTK`{b~ojiskkGh3kv>cVE7Ifk5mW9otOU&?;sm{;9cP z{_Z>NYAVEL0A7M`VOhzS{@?-qbc1y7yMMyFryvoi)%M9N6*@T5c z4yv!OuWm(Tgp-R44?JDXXUZR7Vq!X7{EmCCq~r%A3h%#SrRvwbmq5|EZGAr+{e7TX zhRPt$Kvr+hRG@=*K|Wi#u8;;5BBe;Bg&Z$e$|NR38z2As1yCQzXG{Cu5MtHJxRQVX zwC=P;A+*=<@ykc4e}D7lp92F%n<)+sL7=v`;tGKflHQt3X6~k#Z2hm$`VAK9g9#0P zo5Yz!zCZG0S!fP%oXJq2#nQ=E|JIT&pTzr@&!$ht1mKUJ zEy~B2__Jxw$>*q)u5fGBe6|wv!-o&=U%q$*k2dH}Xi0$?DOoU56roJ#-;s`U%6l-W z?LjUUM$s{l#4|iKMR%?KgJve7PiRZEc!<8d_yqx|B!qLfdPg$l;8bw7{x=UBJ!)S= z2x&Lw+U5#Q!Mw)sC-?kex65*g4|WFc<@%@P2O{t-$P63%B!4HO{J)9>#rRSC{}-M4 z|FzweW3G@JV`mHtA}{IOpej{3=oQm!e_Cd4Jg2I(m_-RiKR$s6%T__v^P%?kr|{Jt z%fq98L1z1UhuP>(MEHN57b`pk`g|G&{1IR@Eg8qW1=1cD85cKh@l4XIu<-eRRT7+$ zN!2Yn&7jCbAi(S@YB(iU+Di`_Rc`k8N-jU~u;XjA(Yxu5?-A!vTeA(831l zD=-kvq+;gP3@s(hpL%#g<3D3D*lgL&&24DIj*gL01Q5l*pdj%6R?`nOaJgfAKeWAw z*Or!o*@H~kNQ2m_436@;0Ok2PIQ-x$d;wUUzgAZVhDXGCF+c$f%GN571$iIED<}Ss zFawki{_Aj1y$&j$r{KU@X=^CD#ga*GTEiILO|K1amltTybC;$#6Zcz05 zf1SU{`V`$M8>tG@#S6 zY6Y&(K z*7kw7M*Nk-BEbcd1cuK0>Xb&hR%RI%2;GkrECBsW)147vC>U2p``x57Q!|}+g!KgROAgSTLG8|zK)Id%2d;_;SsKQKApaZ3h zpt+^P@wG&+0}ZtQe0JJIsBLaDSoqsqP6tbVfgXj^YP_-as1&E~PBVfIFfzF8)*phl z9~L>ck7AyZ@Ayx^qnws}35VwArR{e9yTPE&NI(?w1~{?Nv9W2{*--OT!pEKfc#wR7 zZ2=aZ;^8(>*zh(3l|i-#a4_s$!mN?Vc@L5Ww9<#$hd7s4o|e_7C!Na{z;J|KUvm?)*Ev7=M-k&XfKD zZ6VQRz_^7$hpV=>7C76BXID!Amdd7w#>ahu3I%4YRjP&Ni~n-G4hoq6PPfwD_sYspNgxTG z*5y%=43&e#0+$Su;Hz;g!}c#a1mSYrC42W&zI{bV|3Q*;%G3Yqcc2$wCrjVGUkEFH z9{RO(;-6Un3-aA()yDs|k{%>TXD6Mr*-5#gC|)IoASmMbnoXT+DxS zzNimq5&r^A?>iYd^WCR0r*S`Ce_wyT90d7noZ?0R+N*(1Iv09R00sJw;tb4%bLuc& zFL)0Vbd*d?OD-T_3Gid>3+;CPK};i zDIm`|;1M|~An2uRZf0fm#~qOR$^q{u!rKSHPq7BPpE)`N9kF1FBOSgmvR{>gDDki9 zGWPpiXa55^0hqQhDxund zX8tdPM-zZ|%7ACp3JeZ1+Z6(we+%?hQTSnm+WYUCfIZZ7IbI|S)pvVB3>TXJaZsQD z7;v=nf$!qCD1ObE-sEZ18*s;XH~2r?Lv)!}GWBm!lAB#I8YS?r3d%Swo*33lOw)HTPJ#e0R+|lwGjWoR?2=+9{_`tkgRJ77^{A7(pBl| z2+01~kkYaD<@C*(Z<1MJWh0#SXU@Rn!|>Rc4>^y+5c|RXp@`zYdkKF#wV>6Z{pU_e zYb~3x(cJ@z4BUL-rNpoYKxa31GIC!BfkAF*fL4@j1Uz})IHMP=HNW<3=0A9+_|!aj z=U>(AZ!a`H%!7+Y#$57m$){Y~=;ea8`&w8D2~O0YUCHgF<5qum35WJq;n{PPU-iZe z`l6=?<|HsEQn{YGQ^V*lj8E@=1xozo+^UM-**Vzj0nJ{lgWG!RyB}7<^RVG4Ol~J- ziysxjrOzvDM-Gw*0Zu*P+eE;81Y?OJui2{^ob?B!{V#_Pt<;Q0jpi2ABOK7PwINn* zC#`*oulYB80P??uRVYcV-nJ+L*+-}9Sx0^C9()vP^MJ_B* zdfMPaNcATZ>c9v=|FGs2X%f*YwAGME_$&|)A{a=8tTo^QwBJ9*WUhxwG32wY=32mP zC9A`j^jK>PH;xcCggl8HB6v-5l;Zo}Yfly3P_fbH%qBEft*?m*U5ZeKh03Wbu zNhL@SjeJQtkYSI^pOo~Nu;I)`-hW722}r-3S?Qj66t$x21y`++f{zvwU zkQSZr%*pZbj&k5!)~RxiM1Od1_CG~I{HASTDo6>h$FzyBh%faRU(vvk;y5w1jCJsQwbg^ zEg2HkBWKR7rz3;LA@f}qkRKRx?bhYx_nmLwe|MXAV8Bgz_7PBMf--|LJkCiI=eik`ZkMcvRAYV-Pd=aUJ*{_mXCwb074`G=?+f^{?|zpw*tqD9 zv+Mm*<-bIvdO6)^9kFOE{Yzx|nvJ{3hsqE1IEJF$HIZVV=*{AK`s}nz!0S1Xl&RyU zV4y6_c8#jY*WSTldC8x$6Pn^mHN7hrn2~Wz?;Ds5P1cDpN}C#VTsE#9Xdk1HyW8hn zZ#nWVoheGnk)mtRxQfTl*!!?F11)&lxh0V{by2=xfw5f?TlRE7n8jLkdwN6SC#+86 zIpD+)2n!3#;zwUf!wN8B0h%2xNsjX{P_uk_yQHOCFMhDqL5~Eg>wNjm;t$RYs3$V!$32^r#z(2hCH`Xq8j{~w`?h#w<{H1+r#m+z z^61Ol=Y#w@MdoIAJVF(5#$JicWM1DwhMZ%&G4@gHrBat37p@Xexxqd_AkF1uv?GM^ z@2tx#T`LMOC?0f4qH&a-5S;;~@UG~OY+AXSTW~yf# zO=~!m)rHnyg|5u=oKX1dKX&iW&2lR}E~;u8SR(RiIxv}~R$g%Zt{U5zmltGaTVcb6 zvg@MYUV1Y01f(cHIw=26KZc2j7)d^~mD4Txn`^+3IXLG5JhM5+|6 zN=;SF#3z$^y$XVa7sp&y*b+FZ#mROd{EnZVTL+4xJ>I{0wZZ=YVvA*r<`2dUt;u4? zZ;A8jY15o=9Jt-?Zf^jPO;y`a?}C{O_`n`q0SJBJbkw| zU1>q;=jT^!JV=3oi3vv^>{%t?JG<|DQ!av`qK>7u5z19L)zRRLDprSe#mk(Erm1UO z3%Als|GoAL_I{OV>PZ2lHPnELYktd-jPEL2p7G`uBa=A-=24kdC&=9Vku*g*F5;2h zUMCsThv|IjrP~jHD)maw6fO2`&sy9*Gw7DaCWS40>|@gH0P`r_KYoY+C+l4Z;=`A$ zeCKCi5X14OJ>h$vzF4Ll~c)OKIbS&*l!zIxiM;F6bhdU=SOK^nrk z<`!jl&Bo*Qpj3hC8BPOE?<)_Dp4F6TR9c#ZyOo`ki_HsZ-gGMJtkdvI|E7|@lCI9F zq2x(vGQ&K>bqd$%CW_627qAoe0p>hJQV(y|voEk?UJ#KU`f+A5 zX*;-%#}SjNsGrNJ4=dTHoin3ayq0#JNKm0qL_M83Fk8;J=iwoK2w9ack&?y|u79%I zp7}kS>1pg+nhM!Vr%V4Z4zD|>I4_U$d&%zF0wsLHjm_Np2Z4H2d<(F=-X7`i%b*MV zYiec1)nw2Ny8BHJ>{40R>-i5@+KumGlNnYFHa@wC2UUS(3zbz)MH1xKw0c1lFgb{z z#^WXtNf$AuHwSnY`b~xF>aV0^6$oE8ebBtI?q##FzMGPfl($L*|=4OA;q-{+<3( zO5v`c*xd9_33HjIDoQix1XVVRzqplQeooc6H^Xn7Rsm4-Dsat~m`-r21Pl{|T(o#J zo+=Bi*VWZUs3ix&Us`b$x!jeS2J;y>s1wrp$Zao6x8vO?!$;~=2qUx<3tMMk6^nwW zd@Mv5Us#Y)@NV6kGPIPHQByuRbGu!F;%uy~L-6|5H=4^iV9~;dF_xBe8M&6|o8L)G zf24Ffesl)9|2Ag}9s*}8ly_gQ4#GTs{PeiHnUj~{>mYyi(dTPoVz3K)mC0>7{;W}s zN#3G!wllzHuAqfhL$_G_*E{eaG|XN!m4&U|shnp!evfN=X?^Foc!x84biTg=(B16S zxKM`nWJxF}1)*1M2LcZ_KI#2Vxxu}91t7Xk#zSoGbg#>OaJ*5zkMHHB$RF@`Kik*? z2!3F8dwS_zdK~6{NawG=NI~pO^YpZP{BG%-(qN;mwzhg9>?RqUu!-WL0$u?gp0%&z zwok5aZZ3o06^RYwdfq}`2}YYV?1n|F*VBRsoZm$}q-jl9)q|(cHC~?oiQw>eh$C?o z&2^g$=c$uRz|PAH#4`NpzMfN6bz%n7a&{ebRVqH2{Oh(g1TM+$sK~79XMX_^#4sKw z+=hGYLh6;EK+Sx`4`hspQ^yaCN;XI+0M# zIfQ%caE7x1ddtY0h)(Z*85<&%T;1L`t7PG3dmPRut;S^jbwV19|N! zzQ~o@W_{ATxv^oQ-g`lwkF@h?r+s>$WCDrxG^#Oc&-SA9SUyvJh`!>NahlAm@Jvtd zfdIrh)AJsWoC^ku_kNWi&a=_&V_I=4k%SiHw|c~{-fk$O;S)VSe#(@UqN#!$;6~H9 zyI31ActBj_>QMXDUhHRzy!qm)z7e8oWs+u6=?wG)+XI)+EV}T+#@e+?L@6RtBZ6wg z`S&qJqAlX6F>V!9mS|!yxY0ZsM-)*V{)v$q$C&HQ1ph9;dBJJsy-E%1F&fFiFGRy- zkEo`>B_292OE<}AWm~b4tj$IJp}i6864`?u0um<&eh$mJ0gf53TzEvvsl^(FsXu6E zkM&Q-K9U&RGLlK}_()@Jm=6#!3=E3RvaOTi9cSzuA>oV+_HAR^Ez?xAduK05z`^_e zXl6}JO{6pGmS8MB`bMuE9wT%37*cbw2hn)$xL|zwM4R(BMN#f3 z94%1FU0v+SB(Q`yNoioAc)vb;m?Po^zYk-YLU1A4?`|V#4r6d@jz*hkcKoR$wZs_{ zEK{nUfhn?mmr52TAdlYEBkU`tpJT<+;3${V`*;Q4RHFuJrJ(^vx_489d|hL6OS)dwsPAmxscw9W@f zjVD7_BF>Lxw^G<6pfjq(4E&rIH9o^gkjp0+;o>>h28g+V3VIC=vgieJk`(=?NTLZ; zhhFR~JI3#V8Luwbw-D_ShUY)JOKB9y;ugUq$q{43#nnFjrxDhgE6;-EAtgj5ibhsl zoRl>s&YZ|EcjYR^w)s`H34ip+L&0^eWnsI6id-~Lh{#jSbfJa&oBXDb`=q&5Y`H)+ z|4R={QhjQQ2T>x8Wz<{zRw*VKZC55<55^F})o|C`=<-u-N6gk;+gq^lSQuDEPb>$> z)6TRjv=j!h1D{@do`uULQ-Sr_6V4ucojvlTOlXcmt4Mh>Re58HDW>t|;SQ1~yV5iB zU`*#23g1m3yuxs;QB)&tw??XXyzA&(+xYs(_@Br>ODFR63sUHlyxycfahICSG+kG8 z*1HiOz7JOS*YwK0ls$8|Ec&SWcUz^+`4NfiHjk|fk$MD0K$+mt?_%j^Io!5mOxrka zy1Ut%s^J?ZyJ$9Ck0*d& zz4!UF(81t4i%s5@QZRdyu)@82kcoHso~DAL`O4TiB`x&`fe5013U$kg?G#r{M72t< zXo2O}yRnB`W&Wk_*|lirn#8wjrd(gnlW+A(Y(8x+#1>RN^ktjS7j`!SNGEW<1O775V-NnTQ{U_m~$rbRCm9EQ^Eimoy z)XpggA><8w5cZu45_C^NQPG!o@J<8#b0ohu95Lzn{*I3OkbBV}$#X65`#1D-V6^zJ z?*wa>-(WeSf>&NFr3i{?q0Z%#ZhfB+9ZNY$6b0Xcom=nT`W$2rs~ntd+oG=YAfwZM z|NL6Rm;MWyR56Rv@Tt0H0sL2DO48Cw5xE|$_nizC%n?lpw1j<%`6Q^mSfV0NR_XTI z5l8UZ=K(>5;aw~LG=)b>d-OI4NX@zR@}GJ3xrIZY=v}>vdDSe@T=xT=$TRp5gJ^_m zEARXFA;T>pa2P$vtjw(z={AFji8Vc@o ztQFCfA;ooB+Cz7Q$8}Vsm#oePibkpIF>R|tHg4ckVb?eA7=)PA%3p)Nwex#Dox9V_~x z^+oLzCC$ivhCMR5%D*Ur$yiFGDDjmtZ)CF7U=O$PrfC^g8vDUwuG32wA6oy7ja`6R z>j~BVCyx~)=-)L-7Ql}7Y}y5=rkLZC`1vrqXWQfQL+;(x94w&kp;88I8aEl|o+8{g zbLP&(YU3Lj_DrgvmXDXH@9dWe%cheH=ca2&?qMD_pkvk9#Olw&s!DGeK*0(6E}xfr zTP#)T_ISUcPw_X}Fu^m1E~Q@X3i`-oZOgB2&T(_6tSCsTcNs;hXSp)5{Kj;spaw3h z{U-J%)(xW}7&WG24LB<>LoM%qzxGh3>Bu7tRFbq`yke5*iTSu433^nNOtss`f4r}h zy9-J%drl2L=K&uqaC5s6nj+w&nat0&%DN_`8cATj<1LC)D_d=9cOAye-L^qx3sQ z;6pE4Fo6Um?S>B7P~Ne)au#)kUe@TEK-_c+WeRyci#_dp4tcbB3REiIuSMwN4IU@5 z87$^}>fOtm41pKb%S}8-A1EOxK`0T~1Jv&QC6X#&y#r3DJ3QHKM&#ST3-4p)-e}Yt z7Mnbbr{Cbkpy*;jjh4kRh8tzTVgu~wVG*paMdw9xM{Rf^O!?Zg$PLoGo= z;mS%_=5OWrgL0~m5g!JS9&OyW6?33-%0SVHy2ohE%J14NgUV2AaF0QTZ{*4M6wP;j z0*S9Nu*mRa1+&LmM$96{j*^T3MKMV!{c4X|E=y%5?rbywLTPCvW`k&tn9zL?`+C)G zd6X5&PXVcy{|S$kb09k2%O29$`Q@$^T|PQWCg`qU`*GB}MccJIinURGhyk{tFaq*{ z*+ixE6U}(({7KAB1B;Yi3Mz&+()>79)^FR&RN6_*TX?M4TTi4{R|auql(TSCpt~!s zLv(B+r|n;Vb*F0UP>E`}LI=cp%MGc#0#sh3N!;%q;oLGRmVWfmn&8(fXDP~+uic*lV^pLJTlHc zN+~N+xPJ4}r8D!+c6oZHtZbB=c0@kFHLFr96Z-v|p)u0*20ZgbM@IKtGm4ZqhLxwp zG6v-gpUB4$v#>tQ#a%N-`7W2YpFO@K@+i*#A6{% zjIef-1G>ZUi}s>d4i6X@NL_PG?!yyqV|RG@J-p*VeFmNYrUo-cVWcHk=38j~apQl? z2Xxh$Oa!G*r^Q%=;Mw#auR_J12l8nx{7)KHIAjQG^wp`9pE7wI2qS++}gru~fQ8JkbNw z1NZC{CWcoQr)noQ0NeCNeGbaMdDHQXfi(^PIF#?k(s;XD!H`NcUZ^~4dx>|59?``U z-7hn!XJ35;L{{LYgE+GtZ_o@q)}PKRfaF z;#OaOfsb2Qmr8?`z8K5B|J*2g9ZUlMYf|mqI2#+=VnNk>V2$npjUEmEjTnimH|qU~ z_Uw}kvtFcm&+wE?`iz4lr)u`IvSh*3um?s$#a+MHVU>FZN!_x3^WEOrqtw%FGWI;g zYwr{WX7o#+4m24<_Tw%O;p-> z`f;cLrX~LlQnShdksRJL5Q!gcbOc4e?>%3SRn#!dcY3F!Hw#_^d*EEp2QlIw701BC z`X(zcUcYMjf@pE=x?6tjQ9nNj$rl~Sr-f15qHB|Lzt8EC!GeO%7XEsgC6~K+(47~P zXdYe&JJPNdr{=r8n07ANwu=#>6UI8ptE;*uU8g+|@*YjlJ<-!+hH|8}=k<5=} zqqGyppi2tk=lKLXt7J=nadw?bob0C%4;dP>iMB>vyd0nAI+cHB0gxW)0K1Ui-i@T# zg8sMyYr@l9QAessQ1dbI#?cO{2MW#fhVN!`v{P!|-cis)@BRUn%;^}%Ai=QPa1RcwlHoQX#4 z=a3dXhEK=7t$W6^(PDF-d@c-`Q(2A!g~BiHk?|sx^ezK-wV<&2v;0*k*7)VAmESBwVD58VJ0=e$WQvL0lr^~zmzTMt)6 zLGRP=YmMurqrlUUPUJ#>fRC*@?Nm$_JD+TRAtjJ$pJ)$a?`UPCTlnxMknLjaQ-i{3 zbx297iY5l(mQX0YSk5*r0W8i0QQrSz({;&+GGE{~Kkd|_4!P_z1qjfI3Rf+Fb<k`&`_;bVxms zAs4r!AHnklpClopW@O*L=U9AASrYA$AFMbvo1E7h6YT1Ztq$aO$hO8aSXevs^(@8%O-0oRaHqZoecA!@+noBEGu*ms?XEMZ5cyOIB{{{>%Ll6Q zW6&e%UT!1#LcS~^c^wp!%d%gnc@gVO+oG}bK~ByKpd5Ejflg@jb~NVhEfMzxINO>Szj$%r^}2Zz-RxvC_TvDX5xS`8g2LxMGgLJVY$Ww2K|nX)u1JV zL?O{{*3QtCcJQ6LrJH;@o{m^@ww(?0boPp&7&2J_sbG%vCyP3NL@{ z?EYEGo`00hGJT&SOCc4-r!QHOu(HJFVeBty^~ifTSusB?OtzGU5O9y@}NY?dyDT%|~({LaTTH!T^C5 zQ8XYnBbzY9ul>>j*iGwvPq9Ca*T8?jW>Z545{cglT(*1?ZDfdwz7~?54~ z)0WSnkqH^%Wc8K9bob)ZyrLnu!7P{T?X=C%+;NBBu%$#qa zwEp}Vk{6n-oA3Cp-0gM`>cT||?&OiOIRgdLn@$~+kAAk#RRnt8Eu;0}ub-U`*4^yx zT1E#)KX#)d$C`MZQN)w#Z6qt4&lya-`0^8gtM*e96!v!frMGY1ej~nbcj-zi{L<~# zn*UhXdHFQt4RxScP^zNodu}EA?*ilYXtT3@;V+{-HS7zEZC`)CxsGrJSuV@3L~(fi zVdVq-qdP1PzSsPz43!%v&aQhd3+ngPm%S1LEhcQ0e#NdL#tPCtO%+n}3A8A5Cwv+R zg)lENIm}T#g0*GY+o3`wH}5@45E5S{H}Dy2LK!Zzdem{>4G$#^egEJd)7e6Karo;uO2xu>@hJGsfA)yA_)v! zznqbq6*}&8r6w7}1j?_uU{ifKVS!#`0y+mB0&*5%0m7k#j3N`&5k*&wJhPB7?{ko5 zLqy-fQ2A-V1rh((kI!ieo=@(=O?;usMd+tEJd5{uX(`AGj+atI>4T>SW}6xHA*A1) zjV{(7)f*r`<0lzW+_dHwRa=N!@CJh%Z{y<9qBeqaR^Gm9Msbb4c~qHG`OW0hquO}O zo>TuIKb!bX7P`I|BFE75?;kIZ7%QLHbKyscdgk!_!ca?LZe9xM2w zbN}~uX0b8s3%_qa6cP0eZV?b?&&SZ%YY*#0>@}YGPnupK9Q*&W62HB97ayM4E97G7 z(!Ga@j*5W(t!T*qPv|g-0??L}N2G4jlREejk@{%Dl{{bgixJas^h3k!I8(%(sC>8y z-pl4`OD)NsX@jsP_nsWLdC80EkJsEt{Y{rrG=g;?kO;X@rt2m_H-1_LUYzi zSd>7iiAen+*xUSrEiXX8WX0KHE4rA57A2*<+cHvZRfUc zOcI)(%DCJn@wxe?tA#s2i*=W>>(s%k%-*;Hd~n3pVI9JX`Z|I}?KvL!P=FkNhxrsI zncSP<<*NHh<|VZ%>ul5o7l&qZf+o=Cm03TEYzV)j`@Z{7!hT@*%yWRcI^%H>Z894q8`#kDS{oDX8PD5T$7iT!!>o3c)y%XDG14UuTa!a3<9U ztpACt)diE_^|v5x;XB5&vVfgKe%oTKCoX3O^F770S6(*7SnDy)U|)nM<}BWsKrK(d z`krX=mq=B7!W~ZFNg&F#s|bTIk|>0o;h#RD#6=7Ly}uuP z{w9n1V59zt7b2T$N98n+-Dg2)p^w~sh-)HtTykUdRIbP(Z@ znkD;DyYj0&`so4EmxE**>o^-=9jtf|-dZi$B0*3vJ}P=j*Ne#G$d!bI?VjtsYW`u4 z_)uJq8rFW%g8n(&o)dfP!3NtWFs4-eOeV?yB*l-QV^Nz>0|MnL38A@4_-m5>yH4M;1fAR&S@f&zjFsC0)4N_V$(H6BJcaw}cZn-1ZObzRSW z&i#De_xvSp*lVp>V~#P_9N%B`C2+OFg7E`Nhl)yq#c{EJ7Df}ROLpzRuSo?KAdik;t9V$<#@=9$JtY7 zZbRejVt3w%C`3)J+Z#-6el=U#-|d#tL7yxAIg)oTpW?=k*$Q%08+)6vSj@d2Szo)q zYes3XsU*tRUVcz40iQQl^o4(-Rd|-09F-tb@Z&sZ1sxo`7U3;bABoGbx4opSxw(`5T)gdJ@R?7QZX=SAQI603odNpg-O^xYHDPTtBNRI&GGas1mA(oq({tMpuw$R< zg&dz;_{%IViL2sUd1|&Sa|t|B*{n+PpGhxB4ukk-7-S+VIG*%ZgImgY!*DV*$Ju?I zMBdE%^`^N4!QlM9vcMkw(e0eOkNsT+BO%}05Y>+*KmI+NziBJJTa_nqBnat#FmHR@ zycF6E!uxE+{WVOy%4eSq?%gXN`OSS%I1Y@Rg|)?(#(?Mvh-?Dtr3=5GjoSmOsCt`H z2scZ>=9%FS`%p7Y*~Ba226xf4kb7y!RxoT zZ$6xg@5xbpB4?@LH>6_sxcP9Fne)}_d)P54d6h6sV~CpUwG9ihLI&2sLt*C8&Cx*p zYdJe#uD*T2%||@2&GlGQQEn<1r$TgJ^Ac1%RcX7tK49($d6pM_AaCdVwie$Gs+{31 zmtyw$dV&&dgBID*@J9W1W4A7QlD)I9&DCGG4EU+%7d$CvwpzIQOnUuRrs;fCw#NsC z#H)!_Y}3SBt{%374m5(J^sJ(UnX5FBtv>}IU4Ln5+S8VgZ1UNIQjS%li_JRRQrirL zYrALJe#tno26?rx#=6#vGFuNuK3;vCmyt(pEjoQ{XIv+QjvHO{Bv^QoArs64m4lVh zYd6pRI0Kc5w!xh$#so{S)?MK}$FRM1_{Wpw^~$ zZcF{GOmd#N$#F#0+$-uz$AYfU^w4ys70R)?og8dg@T$({z0!Jps2A#4*d^KT9$L}s z-uv?2qIG(YnI5eN4#htb(g`{l|NW{%)+yuUL}2=(O)0UQYAY!pzj?(6(qT0Q!Pu%x zsq|L3UatMQvAM*pg7KJ}=acUayd1o#aCqNK&?=IYm{`F!^sK_E_8)h(FGwe-pNW+{ z8)JNSWbWuV<@ZvL?OH~43rgUi){xhr@s(MhSD!=De7eJ$SD$&}tV?RO5S8I_z-@IF zUYq)OQ>Fb#d+r4-RMtbus^32PYJGalYY%^a6{u5>a@N}vmfU+-C|}rS?(s-WN(Q~# z@mXSRZY-5z=%CnmWq%Q6y(*~_FXi%wsiVHaD`Y$5j1juKx_)1K%q(R_QX%PhCrFuJ zz~6%8dFJ!H)#COGl~+?HM4N1*_97kNuLFm!v=mwwE@{PkOzCy-uevh+W#rf`e8*N{ z7k}D%>{_#6vq`H^o?t^>$vPt6ZYolkSwdpD=^D zxqM)aj3wDvgpFu@Q^$2?d_L?Oes2ovh;H=7bOW2x1D+q$Ce>=z9ihUl^)9cN$T~7&%_p|hEOOQE>sGw1bIXL zUs9-KvVOq?|VrIZUGh7}b@^JUns{`=Q$J4uK85*#k>_-czmyb2is~@NEU|#fh}z z)PJdmIELRYXkX|bcrj}2CM%sGV19XH6UD~2Zyp4s- zr>*jd_GL6G2z~0&?k|yF{+wv%gDQoUi)$i#Z~mTZtzy6tJq%>gG+p5J7~3(4OA8R& z7+bth25qM~ye{{9U;Kg#wQ1bprMoq?J=2S9~?RILv?;G|_bk``2i5c=1TlMUCZ$*NdB5 zLXGzq&j^J#-C4xTFbIaT&g(B%iM(fRi`M9Un8(r6Z|@Zp6uA8rk;nJ-F;UAMlKz!D z_g4J!D)GE&8iR|HvXr$)`q;0JjwJ)5g?06{I8n&LzSHbfESsf?(`%*`CSmuq;11i1M>K?IK zBXz#1{=JmK`fx{CSN=WO3k$>~T)W3Z7Knrsm#CAqexLmJQr{YkM9+?9WK?I^nAW(=Dg*y4yKAK zDC(FD>$atwclg8hVUP!+ zmCcjAU@SqXaprB-wrT0ulL8#`HS0soo``_D3x9|)s$~?Jl$m?0%`Pc3LPW=r$5lVP zh$55eDW@s%x1Y9bq7Jy+&9`-)Wc9cEEoy$ueL{|!7!EX5y>LxcN1eFHpqp7EyT0&j zTHCteuam$sKeJdbNe0yV?o`8_hk3W{p7NVuZRW<+hXRx8X_TZy84V~6@cqv}NqWX+ z=g4-_a8Q~`E{QDa)KvN(J3pEWn$Eqw@OIsCcffqnLRz=TSi^G#CkPAewsuKt-Q(5S z=t{Mp1r#~N^tKZ4c#8F(K3o6-Ozko6@j4rGt6ag*n{9ipXCD1Q9qQzJk+?hMK7u;T zDZUNq$LCP%;{t=c_o!P5Oo=SWrnmbCW{eNMEkgIrY!kj9Zq}l`V@u2XE?L1Xayya4 znUXs2a>o6=qg3}aRjub}!d3Hn{H6~^lEe4+%5A?LZQgVn&KW(rjx~v^P9WR*QI4$&Sa@>a>zd|g;T!sW;n zliMlq?Q`<>n~g{8fDBW0!I1F=*Y;G371w(YZU|hg_C9T4Qz$E^d-nY&rKXp8L?P-O zQ*9Hplm$_3sf~i3F*z_3j6P{MtetJEeE8LV*Or`XeN?oTaYUk-;^0LXUERCIzzihHx*?D~;(+K_xzD`?C zd~0krNqSj5NuD>NvQf)@4lXx#*<6B7eN=P0w#kEg#^}XJa>nRl{vWlS<=y_$nS&=Z z+UMbt$DDP78U0y@5@nVgW48AA0-Ts@vF|=Se(+rtHTZR)@xzA?Xw!&a4?PJAR*Gj! zx)-guv&Le(>$(5N{qi~XZbzFADCS}w=`Z>&(HX*_kFd)_oMmuzDv8>#+LZT(Epbcn zbi|FR9%*!@5q|}iWa}e3w>v$()4hA^df|z-CAND$e@TNA8W?Pp9*rYMNH2F<=itwx z=>{tJPxAakm&JAX?Xvs06SPLsi&mjlNlc2_u~Dy#UINBYqGu)J0& zx?cXPWCZ_?Q^$~}?&_blsgjZ0H3p*-Ca>tu@`tFTl3p{o^jD{*ODBsX1JD{to5S?} z-~yWqzWE+MIdG|_9mAb{@!ZASQT*-0VSlKXv#y^!S(RN~{rE~|haCYg3 zI2%*!ZdF!L=2rRF6L_Ql&^5Pn%iI^4f zVsNK-^%5R=u${J7FH&atKGZ8>+bja(J!tb?h*p#5S$9ElSvBn(?uN^=@y-Knsr%}= zHyQ@KJ;zc!j8}c_FKJvZE$IiAVm$-Y#1oNr9zQzzQ$@!xLI)1n; zIrHh-&Dxeq6|!P02d{US+;2Hv4vXxwpSeXhG!4BH^=lkMXXoe30Cbat5Zg{`t{ z%~(|xwzHm?K3j55pH@jUXWzHu-N|a#8jRyHcFPRLIWY0ue!Dr@ym$lwMoQ>7HXC(x zsR=#p_r>$|+*#5nC#R)7<+jf4KOPT?x$auI6m<%Mbw52DAqJyUzq*$SGg#Y1oo(D0 z{aIws;y{q&#KHN-Q1sG5yO5wuD)!{J>~HW5nz8NeXt8^ne)qp9kk1{Y4={4KJMp8d zq{nJAw8Qr&%!;!r47pN@%?|L~=v3IMh_-8LoIEp%3UoUX&L|G{9}svB4cpNhKJHPT zqdLFY8CQ<(POCI+S2`?E{XBJ$Rg{R}mMXgBVo`Q&DK>{{Yw_^(tguA&QTbn;cm*OCiDG>FyiI#F zv30Rd^-{^FqpxoXT>z?E6;sRpJYofVYx1st6&5# z_uG#F>=xJ{K?w5|s*JxbZSMh8Iy5IIXL59dndZlkJ|BPcLA)=aKMSFMi?M0$xN=E~ zot8s=1^=V@r(^6sX33m~_wMY(1}(Fbj>xBGSM=XAwY%*7`8Jmwe5G0AqVr|R??7Vo zJlg0$I92N#9n5#$((SG02;Q)_{q!octUKN-hxI?#=(YNMUPVz+Mo}?rp>7ResjTV| zrhs)`Utezo$Q}X=g&G6|kXrhbTlzouu)f?UvIzLhrmRWWFHdc3Y}mTE$a{Ki! zTx`JG-mP@~%zvJczBKyg6XxgE+lf^zHn~fVqONXqCQm%v+@y0E&?-apbo^UZR$skw zMDULmJrh}=jNi%qdjO7~IH}z7=>7AvbY^yLZ5j83xs-e)c-f&~)a?0|<5vDppmr!6R;zco%=;_4aJ7Sbu%PH5q|@Wl38~7-C5lCL;GqJB7#)J0PA-=`^VZE0?fNlOa{LJG^(tDz^=iFW@r-=?{D++2@t z#*eqWi!K{B%bBq`Oxyzsc<9saBvuZNXRQ@Kg7I}isZR5w-L-l3!u7rhlo9ZR>ADQX zQ3UCR-YTzQYpkT@`7lWo^x_*ASE8cQs~fXP&fuPmD)o=dc1nJa@ydZmuezew_zZ(b zmcA@difgGmKlDrWP5lV<3OzOYLO@qH{X*uR&+9~CX^PXvTv)}UDRmdg2ZCX&=8nwb z*n{BZ8k%vc`E=pkG*jWX6{KhCycG4;E}j8S4IuNq+f}{j5S%EGLa|uv#L7x!U!QV# z!!KPOTlOnoUbt27i+vV{S$b!O^$`1EXJcmv>c9PDviJI<%0J7Vn5ryXC_8ywzv_Rx z!2osJ%IZ2B8(ZPA^)9(o;|iw~M#sSVxQ|EWKZ_e#I(Mv?9e50!f=`jW^*WfGA0R&y zG}!iA@>b1L3i@ljXnDh@voZfJkLO?h=>b^T0zY>6I|lTl#bn(1MssbxFbaclV46;> z(%X6=nBeE^4r0LU{ z7xGd4s+C!~UKiga3OAX0YSc>fMbdUp15ocD*aiY^1`r=WH+NC502R#w_eS{U=H^$T zE{d?dQjWMd@czLaC@Dlu0IyE^*~O{$l@3Q;68f zoZtK@vg-rN1J29Cels&qYJm`&ci7KgJh+aaM|)EEZSCx&)zmI9`!w$9P*YQfL`MgI z{wy{%Jq?i@D{?;|2hHL?0SjuhimgU!d{Hed7pbV&M-8CZ7vpv4e2J5DdVR9Rf4|%6 z+>faA@N8=-6YMqQ_RSnnn`;Y71|~qQ*ZO2m3E26k^V!fxK;;oXSa^$4s;qGoWvs2O zMWGA~41k0bx7hlH5<*ZY^;&Qg)vLBYLoTsJ0f2^{eLYac5!JCy?U`4j5c;l!L z7@fDb_kZ6z$#%ysWHppZqh+|4mJWGFmo)}aEVZ{sN zi7H@pzXtx~xYw>R6p7;Fn3Z&2JJ0NqI331LX`q9@gi^)r9ULIq6VR0i%rZ;Td07h! z6<$>U#D5YzEdif_)Ik`KZ;Wv>o&GoCIaS&*rX74f$DS9(oJk(PSBh2QluKGzFuy2l zi@Kl0jb}8>CgHiqm+AiJDr#!wGRzLp8mNMr;Fzo|-jrRV(NpE@^F~+3qS2LI!gtp~ zsqpV9Do#}GSZws>~vk z-^$wC-^dD!Fx85Ric$p3$e;tyeqyh-YO4DCNX(ursPup4CE^6wK3ZrJ`u7Lus?*XG zFXLsD)8Q8^=@;z58dIE}%!#4mL>varz;wi}Nef?{X(d9u0R>i0W%xgZGO@_U7)hN0 zuj@=^9YU(zau-d@xO3%Nf?i%<`neCh^UWhm;ptWQ-^RzIfj55ySk(^TH2c-oihnkI z3p6O8RK@?TgD@9F2wL8NV>_*?r)L@dLRsO_qw`R%OorM6H1JvBm8Q&2GS!TcG(hNF zx_lX`6`$Y3n`34mbTrKKQMjXw z^#e?G^V?`iVjmwLS69~wOa~J_-$!HgNmfF_OThFZ3lIP)pIjpWw0N3;p!<6P#Hy&m z7YowT(s>01@rey()02~aHVuE1qzqHouU=L7xLSX5?19J#0Pcq)EG&$BPQ~e&VOMvz zUBATc>)P6M6_1m@yC4Tcgvu){Y&~3SAV(pr2lycx_Q8oSvFsW}r}OKV!&OhF4hAhs z>Vg2Ji%RCvKZOD+E-TCd6o`5lz|Yz}<1h$OY)&l2h7DxUhLLdx7nhFqNCw2Q2`?4R zAS*5|F2&u-vP)HA^GzFTx3;$a`l7rP=i>aVKQj_A%i{Yp@l~!HY*{?ckK!KX--YQ3 zNcz~=SU(UqP(&VG%H7>vRaZA0))Fh2V_4L-PEKtIzwzkEQz=uN4is&w!1&>zpe7o@ zbMaXWa;Hmrjef9D^%|kgK5iS4fl?3LY&SBEge-@BFW*m^U_RL+K$H-oqR7M#m&<52 zUH%>Ez5RW_aXhfsxU%Kj3bvd7#g8jM{N<~0|%JZ>jnXTy6XwIOJFjw!s&ZZ{{Z@0uuL|} zD20VruZn`%dyf^tcV0&P8cxUNj&<*E-o&Jh(%~t9COqECMV21WQ&LjGT9g&)@a6|;jU3qzSc6NN^kglGd-la|Zor5_PUVfU>o#{hWHe3bO3yZRq<0``qn8f*{F(R1HkDTU8C zN1ct3=|9%-t2fDiTSXHz#%xb3&5)l#Ur>jy&MVF_?<-g<%kg@~rJ<6J6n;|_mODoA zos6w59}TZT#MQ^|Ujx6u(C4op7=YIUi|at&W@Tk<(nyp~07?T;zHSKvacFdOv=Lo) zt#}9G|L~IfgRtb4g@xPh?xH{nr(j}=0=UO{Nl8hKMODBOBceSB_WJqrtEFXS-$qBn zU_+aVm1k<&+nAOej}-Sg7AIp84}q!vGC0^25O8P-ohnk)$7?>D77;h?t++UBN<>e! zj;kl?`j~*+$>dT=gB+yRnwy)~A-iVM{F3O+B705L6BHmM077D$*y1EK-GRu=1L)M602RRjsp<-DrEi`lb?XUvPk}0r+ zw-m(SM(|`GomX_gS)2ej2*8@})J4$^<63%p5xJS}#D0E$V9-xJdi)pzw2S!HXWE}U zduHm&>Hcla!S>97f9x4tA38Q9EKCM!s&-b! zf&o<#Hpj~$l_GRySKr!UW>lj`E`aV_;nU&Dfxs!6&8{nnU`jj*#W7k_eT14xFlIWl zjfV#ZF-b{5@=R{6m+HVI{eR&w^P0%jt3*f*J2-eB!3PBYYG}q|ZtYgFL0xLrU6A@{ z0(pfu%IUv}1Dh|^=21M_w}H(D7>LcFBV+sbz$tu)k*C#?OB0^@qWu*A*drgALhUkS zAt4?qNV`CA3%Wb90~w_G_QT)F0{{HmRBR1Ze5EGCM{54DgT1}=lE+sQ6~WC?oMY#( zv0z9Th;IFuY;`^I44@Z*U`GJ9#%j<>OLNM^E*uX*aGWtE!NbGztku;u4HaVpcShdL zO$0328D?hYOB@`E*8E;T)g~k*ZR>d@u9>C>E=SIHG_v zscowb!oND!6`Pz!9*q4NkbY1GF}>`I7uT4ZhaT0G85@x4j%8~x68#KR6N}MxfjMD` zUtwZBM$M%$vF39k25`R#;0ZkBy^pgWn=sOxytwnRNR0v5aWdeuA?D7Zw(Lp_L~Ypap=BLhLU<9@iI51O^~w0(ogU7jQc zg9(X@JYzKc05gY{&p)cGtHT&IokGA+G@EohIhI`VF!a7w1q347oU$O_Ci!>kF~lSI zpyczh&C%@6hl}>3*=qmY126C^*q)4SZ8;+DK+4VM=RuteaqboBa%N^Lq&*6oMV5_q z^M#Oo6?#8hj5-NDxZ=oTZKtS6OmiL1 z6Wb3KnjFgMgzeV#aW>EIBRUqc@ZAQJ32&9un?xPa%!qaw$d-vIrQUpgI};}NjE;=J z08lcs>*^Rm_vu<<*N2~MrX-pr1_;B3f|i!^s>M|wWgqLQNy2+08d0@aPt<+^f$krb z5b#VqkN4-bAd;lv(fd-#ig7e+c_cFP=?+Hpe8D-4GfU-a>&(i}vzD?w744kPFw-5K zo&TBX_ZdD7UBenwB+{QlCS9Qx<`hWGy_9>4(bi1UoJz`+p+#H;go=kkPtmN6mRtBn zG&D#dn{#4fprFOz1lZMf!;=F|U~f!O+C~Ec(zjmppkGbm1p;hoQG)%&W`+^ z_88f_|5@=VwOVwoGw*O1P7@*8vK7FZ@3kdETbO)~>^gCwo!wReJ9>fLMeO_x3Xx}i z|Nb2k8VZ_KZD44C_r-hrUEEsSRg*2p|G$SB z7ztk5cXsUAG&==t@HSzGLHMi*0g@IyfewQ0ev!KV`JFfKK>LXnPXI} z9-@wCjyS#($(~^MajjZZhHi%CCvTN7QTucI?epDP;gNNaQUJdtEkY!z>ertywPf6j zmt6|u<7nyeizb~vum{^tJ>s{wNz_`3q7l>QVQ19z6h<%J7@d|FiscE=%Q*;CwREU< z51r+uVSv;@?DePUMbWr|WGqHm$-t82Q!6x-43gG8rZe`KK_8IJdRdl6ZG`%Y5_T?h;&DC*B4t>I_8>|pakzHOKqP-u+tTc;Ad9oRx3?syc?AMtG=7cL z`PnrmeG#1fCY`ceO~g)!kl^>HG2vPb5V$tM1VeNTSy)(nUEbSo$Ng~u^#nxBD>gCl z>G_wYSN?wDbbCyQzgbB@BZa>L4w8ivV zSXfwnzklrn#us6|L-@`w^2GfAe71xs=R#x{Okfz^{bv~HG(D?q-w!WFX`R*m_=C5{ zG_CvReQuxp;o&e)|?5;vY|U$Ydj^-K>+N`E|(QL87OAe~zIiLoE4($ta}_uMx;%A+4=< z^*%e3f|ANzYipi2Z{P0cV&zjqLI^zp{Rvi5ipQWfq=U&LLMr1rq(gb5DcWZvLqZS$ zyY2dfG(f5$6e58bt~O$S4I*o(2fjaNQ*=Tlclu}S^c|;}J>jG3Psoy`+ez9gttHnTr>M%`Ax3fjynj*> zjVI`tqI{7UfRKm?bLbS&AOEqEYQ7IcNJ4TKAj9A&#-^uRo*x(I=I)vLJf7ZiepEY# ziaaA+qW*uondUWmUaehRK`FHA;C)497n2N#RMjn{jsFZZM_P-UMa5oGuJDhM{zRU`_Aw;WBRh2@cST7Xu+#xI* zuC!qWTN(uQPr5%ID`g>V03AI@EChfR2IZ@!tQXH#x+Jb#Ax!2q3{re|%9I4)Uq^?1 zCi~%wyn!2T=fQKVjgr}!luQF7hfsuLVkm02zTbc2R-#=NbTYPgG5pONHg5fzg#H1I zi0Nzw`OfLBo0SgWz9KQJMSG{te{IGd(AQuBD%z~M~ z*B+2G(jujmUIKJRd)(#wNRkoN7|Ski3n`6>*<{0Zh!iDQx{`(!wCo9qiJK9Yz00be zX5M(cjV8R%04$Tl9V!2@kwA4*Ogc) zD0cv^86_hlsiC3ah^WI?MM!!Th&cVZVDI37=*=7-dwc6TL4bhd42g+}A*Z}P5kO8R zYM*3Ka%Z2!e4#|#E0irHwtLcUsoe14|J%kVsp5Yq#la!>L-JyJnRbQct2TQ?SqMZy+al-$ z*4JCe;b_IU=VWsrl7B&DUD_FJv@GZ|L7p;zKL}{;s3gtac1(wusOV|aIELIYe^s~H zuCX`K1|=PUHL*ePy`|bNzDNe|27>!WBo6_ut)`)2GT)bh@`dasMEP(nFcpXlYAuy! zz8WY*mi>7t4Lzi$rp5w-1CZwA$jXrPqDOKT5R^7FGeUwk%Ro)-$wL)>uhpt)G9)^O zG%AD-m`+VkMO}#$q z>x-(Ysln|=g5SD--Tt4(K{6xVuo}RZq=1@^`xLDQp&1H=#AsO+PD>ix2DNA~ruQB^ z2+Yc224l+eD%x%gv+YKR`d{vy*Zp_lv+VDqwcOy^XPhn|rmTw$Jm2}O=V+1(&WS99 z!5!ZW9y{FpB3a41WyJ7r3gXlG|H;%MFVg;3>NZoEGlcR@VIc_^cSr?ELv9IDBPTU6 z>Eea^%G%m=sFo#l=mUI%-S3Nzh!UESD`VG@gy!lY4-XHLhWGUHIx|4%k2V0a-AXt$ zH+QyNhZGW41#iXaOp6BQXCPE8)~mkJ7#IXo{amyNurjSaH7f`9((uP0;4gr8=!Mk;< z5-$trY9KBYf1(=#tK(m>uT9-~ndk71k{MFqCZ``>x!`Y?gn#Ok?c(>#5lj-JJVVdT z%~2@WYw`Jn$3dfPbGN)Bg3c6Y#9(yrHGLz%4*NkDX~krqe;txKhiv=q|B*~b_9;lr j|M&Lzf6d3wp5QM^I`bv$&%s$b6iPu>`EId{k^lb#yrL!H literal 0 HcmV?d00001 diff --git a/plugins/solaris/zfs_arcstats b/plugins/solaris/zfs_arcstats new file mode 100755 index 00000000..0e0b45b1 --- /dev/null +++ b/plugins/solaris/zfs_arcstats @@ -0,0 +1,304 @@ +#!/bin/bash + +: << =cut + +=head1 NAME + + zfs_arcstats - Munin multi-graph plugin to monitor Solaris ZFS ARC statistics + + These functions are implemented: + size : to monitor ARC size + activity : to monitor ARC activities + actlist : to monitor ARC activities by cache list (MFU/MRU) + actdata : to monitor ARC activities by data type (Demand/Prefetch) + hitratio : to monitor ARC hit ratio + + Tested with Solaris 10 and 11. + This plugin is inspired by arcstat.pl [https://github.com/mharsch/arcstat] + +=head1 CONFIGURATION + + Make symlink: + cd /path/to/munin/etc/plugins + ln -s /path/to/munin/lib/plugins/zfs_arcstats . + +=head1 ENVIRONMENT VARIABLES + + None + +=head1 AUTHOR + + K.Cima https://github.com/shakemid + +=head1 LICENSE + + GPLv2 + +=head1 Magic markers + + #%# family=contrib + #%# capabilities=autoconf + +=cut + +# Include plugin.sh +. "${MUNIN_LIBDIR:-}/plugins/plugin.sh" +is_multigraph "$@" + +# Shell options +set -o nounset + +# Set global variables +plugin_name=zfs_arcstats +functions='size activity actlist actdata hitratio' + +# Functions + +preconfig() { + local func=$1 + + # data_attr format: field type draw label + # label can contain white-spaces. + + case $func in + size) + global_attr=" + graph_title ZFS ARC - Size + graph_category fs + graph_args --base 1024 --lower-limit 0 + graph_vlabel Bytes + graph_info ZFS ARC - Size + " + data_attr=" + data_size GAUGE AREASTACK Data size + prefetch_meta_size GAUGE AREASTACK Prefetch meta size + buf_size GAUGE AREASTACK Buf size + other_size GAUGE AREASTACK Other size + c GAUGE LINE Target size + p GAUGE LINE Target MRU size + " + ;; + activity) + global_attr=" + graph_title ZFS ARC - Activities + graph_category fs + graph_args --base 1000 --lower-limit 0 + graph_vlabel misses (-) / hits (+) per second + graph_info ZFS ARC - Activities + + hits.negative misses + l2_hits.negative l2_misses + " + data_attr=" + misses DERIVE LINE dummy + hits DERIVE LINE ARC + l2_misses DERIVE LINE dummy + l2_hits DERIVE LINE L2ARC + " + ;; + actlist) + global_attr=" + graph_title ZFS ARC - Activities by cache list + graph_category fs + graph_args --base 1000 --lower-limit 0 + graph_vlabel ghost hits (-) / hits (+) per second + graph_info ZFS ARC - Activities by cache list + + mfu_hits.negative mfu_ghost_hits + mru_hits.negative mru_ghost_hits + " + data_attr=" + mfu_ghost_hits DERIVE LINE dummy + mfu_hits DERIVE LINE MFU + mru_ghost_hits DERIVE LINE dummy + mru_hits DERIVE LINE MRU + " + ;; + actdata) + global_attr=" + graph_title ZFS ARC - Activities by data type + graph_category fs + graph_args --base 1000 --lower-limit 0 + graph_vlabel misses (-) / hits (+) per second + graph_info ZFS ARC - Activities by data type + + demand_data_hits.negative demand_data_misses + demand_metadata_hits.negative demand_metadata_misses + prefetch_data_hits.negative prefetch_data_misses + prefetch_metadata_hits.negative prefetch_metadata_misses + " + data_attr=" + demand_data_misses DERIVE LINE dummy + demand_data_hits DERIVE LINE D data + demand_metadata_misses DERIVE LINE dummy + demand_metadata_hits DERIVE LINE D meta + prefetch_data_misses DERIVE LINE dummy + prefetch_data_hits DERIVE LINE P data + prefetch_metadata_misses DERIVE LINE dummy + prefetch_metadata_hits DERIVE LINE P meta + " + ;; + hitratio) + global_attr=" + graph_title ZFS ARC - Hit ratio + graph_category fs + graph_args --base 1000 --lower-limit 0 --upper-limit 100 --rigid + graph_vlabel % hits + graph_info ZFS ARC - Hit ratio - The graph shows cache hit ratio between munin-update intervals (usually 5 minutes). + + hitratio.cdef hits,DUP,DUP,misses,+,/,100,*,hitratio,IF + l2_hitratio.cdef l2_hits,DUP,DUP,l2_misses,+,/,100,*,l2_hitratio,IF + demand_data_hitratio.cdef demand_data_hits,DUP,DUP,demand_data_misses,+,/,100,*,demand_data_hitratio,IF + demand_metadata_hitratio.cdef demand_metadata_hits,DUP,DUP,demand_metadata_misses,+,/,100,*,demand_metadata_hitratio,IF + prefetch_data_hitratio.cdef prefetch_data_hits,DUP,DUP,prefetch_data_misses,+,/,100,*,prefetch_data_hitratio,IF + prefetch_metadata_hitratio.cdef prefetch_metadata_hits,DUP,DUP,prefetch_metadata_misses,+,/,100,*,prefetch_metadata_hitratio,IF + " + # Note: hitratio = hits > 0 ? hits / ( hits + misses ) * 100 : 0 + + # Bug?: If '0' is set at IF ELSE of CDEF, RRD cur value always become 0. + # NG: hits,DUP,DUP,misses,+,/,100,*,0,IF + # OK: hits,DUP,DUP,misses,+,/,100,*,hitratio,IF + + data_attr=" + hits DERIVE LINE dummy + misses DERIVE LINE dummy + l2_hits DERIVE LINE dummy + l2_misses DERIVE LINE dummy + demand_data_hits DERIVE LINE dummy + demand_data_misses DERIVE LINE dummy + demand_metadata_hits DERIVE LINE dummy + demand_metadata_misses DERIVE LINE dummy + prefetch_data_hits DERIVE LINE dummy + prefetch_data_misses DERIVE LINE dummy + prefetch_metadata_hits DERIVE LINE dummy + prefetch_metadata_misses DERIVE LINE dummy + hitratio GAUGE LINE2 ARC hits + l2_hitratio GAUGE LINE L2ARC hits + demand_data_hitratio GAUGE LINE Demand data hits + demand_metadata_hitratio GAUGE LINE Demand metadata hits + prefetch_data_hitratio GAUGE LINE Prefetch data hits + prefetch_metadata_hitratio GAUGE LINE Prefetch metadata hits + " + ;; + *) + echo "Unknown function: $func" + exit 1 + ;; + esac +} + +do_config() { + local func=$1 + local label_max_length=45 + local field type draw label + + preconfig "$func" + echo "multigraph ${plugin_name}_${func}" + + # print global attributes + echo "$global_attr" | sed -e 's/^ *//' -e '/^$/d' + + # print data source attributes + echo "$data_attr" | while read -r field type draw label + do + [ -z "$field" ] && continue + + echo "${field}.type ${type}" + echo "${field}.draw ${draw}" + echo "${field}.label ${label:0:${label_max_length}}" + if [ "$type" = 'DERIVE' ]; then + echo "${field}.min 0" + fi + if [ "$label" = 'dummy' ]; then + echo "${field}.graph no" + fi + done + + echo +} + +get_stats() { + local stat value + + while read -r stat value + do + printf -v "arcstats_${stat}" "%s" "$value" + # printf -v means indirect variable assignment (similar to eval) + done < <( kstat -p 'zfs:0:arcstats' | sed -e 's/:/ /g' | awk '{ print $4,$5 }' ) + + # kstat output example: + # $ kstat -p zfs:0:arcstats:c + # zfs:0:arcstats:c 4135233544 + # ... + + # Note: It should be possible to monitor ZFS on FreeBSD/Linux by + # imprementing get_stats function as well. + + # FreeBSD: sysctl kstat.zfs.misc.arcstats ... + # Linux: cat /proc/spl/kstat/zfs/arcstats ... +} + +do_fetch() { + local func=$1 + local field type draw label value ref + + preconfig "$func" + echo "multigraph ${plugin_name}_${func}" + + echo "$data_attr" | while read -r field type draw label + do + [ -z "$field" ] && continue + + ref="arcstats_${field}" + value=${!ref:-0} + # ${!varname} means indirect evaluation (similar to eval) + + echo "${field}.value ${value}" + done + + echo +} + +autoconf() { + if which kstat >/dev/null ; then + echo yes + else + echo "no (failed to find executable 'kstat')" + fi +} + +config() { + local func + + for func in $functions + do + do_config "$func" + done +} + +fetch() { + local func + + get_stats + + for func in $functions + do + do_fetch "$func" + done +} + +# Main +case ${1:-} in +autoconf) + autoconf + ;; +config) + config + [ "${MUNIN_CAP_DIRTYCONFIG:-}" = "1" ] && fetch + ;; +*) + fetch + ;; +esac + +exit 0