From ae7b610cfc580e90394e6fad7e9ba0a4b8b61405 Mon Sep 17 00:00:00 2001 From: jichuan Date: Thu, 23 Mar 2023 17:05:34 +0800 Subject: [PATCH 1/7] =?UTF-8?q?README=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jichuan --- README_zh.md | 2 +- host/figures/smartperf_framework2.png | Bin 0 -> 82542 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100755 host/figures/smartperf_framework2.png diff --git a/README_zh.md b/README_zh.md index fad9d3e..7aaa508 100644 --- a/README_zh.md +++ b/README_zh.md @@ -11,7 +11,7 @@ Smartperf-Host是一款深入挖掘数据、细粒度的展示数据的性能功 其主要的结构如下图所示: -![系统架构图](./host/figures/smartperf_framework.png) +![系统架构图](./host/figures/smartperf_framework2.png) ## 目录 ``` diff --git a/host/figures/smartperf_framework2.png b/host/figures/smartperf_framework2.png new file mode 100755 index 0000000000000000000000000000000000000000..df248cfa199a81893faf456bd7cedfbb0a753859 GIT binary patch literal 82542 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≺|uqZ*J92i~;eleyP6OR)s|MC5oEBj0r|`)dv99%u#b z6bjH86Iog#-UD7cGVKqg&w3CGK-*m038X%dYF2G8AcWwM#hq&6btAPOyhyFEsJhTu zBt%GJ;clqBgPXQ|-aT-2GR$|?7aS2d!(bW&{w-Lybw{DqSUAy~?LO1mXt*apIck$C zAg)j+bXAZJ6*$-_dPR#~>h(=pvs`+JGP?9~pkY;awOoJOa%a^OGOzV>@%XS^Kv&+= zW1~`6Yv#gIyGcNh;v~QfzI~A8DAiZi-}r3S+54)LM~?`H^mGiRS2;VFr2adyur&=~GdttG?Z0Dwz z5#K2&xlGz~kn|v?y>~?+?vB(jOdRnlL>0i|c_AS1xbGRxFL5HaBPb-gKo3WHhWa+5 zSqmV=Fn*;>U(NuKf>m5N-@3kP#y3FPbsd^6?4X~OoCZa;`*+D#_~dg_KUM0E(|?p+ zn(8s|jiG5%UsmQ-0Ieb}Sl7<2=q^L;NKjKbiY*a5fgg0<&}o;w+I@em^JnwFSb)%^ ztVc_1O<*KHFMrqU*4%3oPh)-S%mHza0-!YDFK^^mVa$H=uYMH5jw1VG7?SJ}4HOr1 zi+Yde%ZX8na(%gQ!cR*g z_aV@vTS#HhsPgFkOnW9X#B%+icboBPRlRyPzy!7>I?Jcj`tOGvKp*Z4={0@XDYS>C zmABO-16yvpvLoN>x<}!pi|6mXR&c3FWq!y#+yEiC{od&A#6YjF@$0@S>|kzTgws7C09psey z3Gaa)^1E4iN64{fDQ%`@&QsjvDpn`Gc+pxaUk!);sv}3@f|LNTrgd@(r@K3F%;6WG zp565&B+ZRXLe#h+kn8)3*Q}xYcFWoMq5yGP+@3w!=#Qh2;eZcQ*{e%p)K{oD7zLxG zypX+X=3Z~;lTYBbbt~UTJUi}c!7fZIq#O3xe(mzBPVch9Luk)Bb&n|66$I*uLJ<YWt*pHkidy>tG-HEyq?qJvuB8?RZg$Q5O11p^6EXiknS~OHu9tyr z(@!S+tP?n-7yva)4zmSvzx)Y(y@6;x7gZ{`M3eY`aCtY=%(KNrgF_LCRhn=ah<8sG zYF0y|=Ch-=u2Jy2r_AfRsshv`E#nf-XPU33N!k>ITDgp~ex5XAi7xD1^SJLg(cj%g z*U9c_$5b5eMWNA zX*8*gEbAmo=Ijc78^J>9xd}%8yWok#08kj2j(#gWbMvbs#M@@U>9&$~b1l#0{Y{C4 z`NPTv`JpYWB8;N~6vJQWg12Ft*a?gVkEkhE6#Ii|pi8arEB{CY0rN)x2W9UZ9a+#k zfKIGUvhl{=*tTukwry{mjcwb;#>U3BZR5>;-}ifezH{C=ch1c8z166$s;;hERUH_9 z%Aj56gk8siAAc(82}vp)p2YF<+X)L{@U?`i@$>$Aae1q-0BqeI+8)`4gD2R6uEfHq zj#Rw|Vke_-aABU+xHGQH)vk?Q_x(cMiXD7-3r*t}hf{3*dnVh)o!}YJT7@gR+14No zCP;i%a}$0(7t*|>mH9X`2H!9EYb3GbqIan~9P9N@P#2i?v+u|Zfvz?^${bYdJv+jOC}fCdFa0G?7S6Ruwgb3s13itWf3o`sZ!VkV z+n;N=_}E$PM!$x@6?Q(gO#NK^fBia~%H~P|esy)fUSu~Hw&y!hv03Y-WGB^-BEQ7q z`7HI2J)P`@CI8Ao`ll9ohMyHGmHiqy;09+w)H*#St^8`D*%68IbvTdF$gzDTv$(V` z=}R#QKkhZ__Mxr&)ICEegq9!}qa-(>sD+pUU;UnK+LE7sm3GJCs$RWRrc+Yh0@kIv zAuo75a~;qw^Y`p!jl`|;{o3TjsOAyITA%lMHWKsaDR#<$&2Hb2o6Loz*3+T6S+M5Q zym42sPT=%%>I2J{)%@~MtUqhQqSjh z@>=Yv=JRSDa|fD?6ZfBpIyiALcNhxZn8AeK7z~aJqxPfMqML`emZw$kG$M=ZKIpvhRr=vFf}S{B8Q+GM88gEbZ_H zm&K?T@L;91b`Pu1X^(_dFkcHd_rxK6VS(t6^&V9RE&)|o^QQ|4IrzOs?aJ54li6DNQ%9o z1h4m8Cs|o#Yw~J4I**&NO?we~zeWrWOI^Imvz@IXvl#WiTIm$_IBq}HM1y7HBAw5i zWMF%L@qpcjxqj&`Z(`I2eRzNYE&11pr6${qx;fj4^X9LYS3+n(b}rW9nl7$SPd|y? zsH|<|50~*M*)Mv{I=Jt0qR zg-3|v11*jQwQVfpKaA96Zjuy#5)nZ&EjDEXcjNDTUS_x$gD4Q!!y9;FY~te3`MCrH zL=n+6uDSY9e05-T{36QAsAydD^57jEC}3b{A|l^~u}(Vm{rqqoWW>q4ugv(yCS^O* zHnP&5iX{sM?P^!$_Z!pY(igpFnN3v%&qK~qQrx|=elQ=spc{`FgiaoT7_}eQ;osaZ!%BSA3=r*rgSFB!?fMSuH#p~O1 z8r#^HtxKHch9lo^1-6dmg~NPp7$Vr)yF0FPRy-8u);n&5_fYOntt=nwy>N$AqL%U?!J0b4d4HXD zPd6+-BWXPmyTz4MmDF+t4O|T^k;KbgG&`I<{aijLEs?-M0OjqI;3;|?2>90?1xB+& z>e0HHcn_aW?NflI(GU=*{8n#D&8YNOr{P{OUb}BJ*7y5_Y&SLoOWtj^N>Hi4)I%cP zcfjj$b3Oblqeaaf+%s z=+arM(sGm^eKLS;N&|_>?k=dH_C)?Psg|>zkp%Z7oTmnU9X&|EzNYM{3{z6Y>Revw zD#C5|8q>{L3*En303)T?S|`|PC*)F~yjy%I%pHq_@s{Wt9pmG$iFN*5BF!&=mZS@m z?m_Rjn~EQ(nvYJHhNVUP`#x6-S@Mb75&Wz6{%d28Fu!y7ejb39rXi-W7PiG;WkpQi z&_Uws&=6D#K5jDd`u$<4$2nwS@+LcIDT(rtg znkO0yfoluzvSAHs)5?XeI}czXW|tR>adN->?>@t z?pZv~KC3noOYewS4obpx`C30^Z(G^Ckf9pu@pjIScYxW3={w4qov6iJf4=7IpZYN! zC;<3Jx^xen9Q*|xw|w}xjlOSPBmr7!TbF|~kU!4YT7%s`E<*^!_X>Kcl6wyFn^>3<(w|VB?U6MZpproYz z4NlQ zlIdjlN|Vui{T(hfX9hXH?`arUj$vd5=cUudB5EWC66h&1^lWY}qXJD~hm7v$=xy(8 z0v+omtdtq(%>Fm6CcgbOui)P}(JdqvtI1(4Y4MAnxs)+vc};2!F|x5plb*{&bG6=kS;1 ziKiok4rEVOwuXxX##6=CvfI7xWtUPSoY_%6h5wVYRMGR*)$Bi2P=~$tJ9I{tnE%( z5I>bvd;FYULeb$Y-g9XK2%rNA#5V$7y?OFBdQTo;t3(81m)@@EAlv&vTRtc2u77hv z0ht+`&jP&6&R!c-01G*OfJ62Hy2t|i4W;`L4MF``d?Tn`_#?n6^Lyc^fDWhtaPX%H z^Q7OwEhhf803Qjy`uBUGf)c3?DE6KvNF|dGQ{Q&_S*Tp zFK2of;4f$9;0w%w?+4p#zX+l+=SfcyD`k-WTQ?S}wpTPkG!C#3rBV(F{9j{nLtv-K z4^WoK(28H%t>A&cG0o!wXNhdNL?G@J(ggsnHy1?06$5Oo2MAd+Yp{&Xa5sZT@4*snbpQ4)imN02NpwZ6U$o?N-s7LdEUGt-{uzBpI2KN2$c9SXKCSEsH zQ!oLF!h@1fXyzC-omxauH1KB_EaWXlziA@sQ4;;#$^(LP#2bM5tLJAW%22 zULv4gp)N{PNJ?XT8$-*_`geXj(osX=ewN0grZ<8Uf}sWq&X7V|#KoB}YZH92 z8^gdYe~Z@;Po|eJCCt#7FhxtDhx6AU=$)YYom*$D99g6iY0R9aIQ9+GB{T|4NU|ue zs9Fn1;AEj?GIX*=^X_E0f7k27BH{^goWhD%CJdsxsnp{&;*6-lu+`d4)$PWtk#ekeMD&? zB%?nyLP#=TNTpdb1mcZh8ghdt!C938)1XlEgX2v99;^g^6Os%eoC_u_nuu34m84)e zi6B+>6f!FS`4bEOAF||wK$l4tNr2$M&2ytTHw;XZqZ%uwhbx`n2L3c)Iu^l1WfiI? z$m*lbr-ucWk{cu_bIOwj2qqAa2m}fe76SYUjsXM$;sL?n;_{@WnK{ldupr3D$idD& zhp1&J;_=34pa6|N5{+*F0u2ZNe{yZWB%nTc&=iy(rU3vDHwB3+1g`){E|Uf`OC%Xf zP{gAG@t7u)U?w@%U|vtEEK%HO36nIHoMe z24b|2wzwXaVnPtMB6Vz{Ah8x&lol`($w)GSOxX~pUknClVi(H~hA@Un`V9x*&x;TK z2JikA7N?GAiA1;o*Vs10s8BVr7fcEzM+q+>I^3Fi>dzL%t*- zg|J6WB4O3g3$b3~mt}8S!Qhd&$-YwX!wBgJvZjNoO8&v3y(I)I;UxNu2YA`>9NZ8A z#lUi`Q!o~3snkEI4ith=nH-w$)zLmV_=OHZtAzi`{#`5}|C?iAOP2pu*Z`3PJYSpe^Ai3ZiE45V*mF~5zIaY<^Nxe|JN@9XhoEN%hP|GD*XAs zWeC^}ahcNh%J%K;ZO=Hc|Mo*5jt|Go%LK@z6la-Rj5OfsPRUwk;+BrgzWN`j5JIG)DN>s${Iq+S;0WmeLrgU95>A z)paTs{XZmqajUGNG)tml46SQ$|ExG3n96%atMlbpx6_QvHKVGj2^}Pc&Kr-8;9tX`fS_$gm!fgTGO)8ZhcXnLL4lU{BdIOcx!khqIQG_2 z-?qWQGg7ea__aS$MDOYzy1d8ajF1HkYn^ye*N$5&2k~OViZ+4*D%hSb-;2co{@>sY zn^raQi2kE60Fk7U`#40(emZcut}ur_-9pdHH&wc>qaj+H&S28Bw#Uc>Jp{q6yUhK% zPvbc9!|GBX>O7^ppm?M1`T?(+PS#h@uXTD=3=Dl*!^Fo%iw_>)pQ#s~{~<+1E=1YH zD)m1q6u_cWIps(o(HJ~NwMIYZn~k)!Rma*_6D1NqEh~c_BA}F29U4}`qs10FczeFo z(WTd%I-y@3fWS+|i4L$B{=<&fnn>Nt&()8nx;i7$J4xb2OuozU>i1NHSl<>jp&V&1JaD&3t;c~=@iA4z>AV&!oL5!(r)6i$CaEgYPD}>p zTA;5}vG+k~R#rcoB*a0puBxP92z=j19C{)}X!<9oil}X;d!%Nsl;9?%KVy%TF-1J4 z5Ql1T@{95ykHlP$LzJSXbXCi_Khape5m4{0FrfpChlI->(r3CQLb&TaAMr5S>!I_d z8AUQ62)%koT>_2V)ryv4>)YS5cSgdzFa=^Cz zcw&+*|FfP#&t7N3Vzejxy;6j07apRz%0uIE`v(CJ0#J82T3@d&mFAq+30mqgcuEth zuF5$}9|ZtLCBlYaVMVTgiI6wq(3jnXz{}y02HmvgnWiVfR2|fQJ=k;R)a<@z?oL!v zH(wKI?;lEzRZz@O-GnUif(!WOw9_Nq1kAAlwYs?W0(8y+G@hqtCln}Mpy$VY?S<_f zLbn;N0Wz;MzM#A}SUMoMl+i10#ulzn@tXhd4 zPAfMvCSv*QS@xtlB2cnsR>S^Fh416@r@~o%>y@|e79o67?y(%ivo-s*I*6U~Z8{Ni z-NN2dzarf~pL;(rkjh>F^`eh+EmL@#3*trE((SS(ZBSQHk-n(=dp_q2MOihp7t|d^ zXIRdrp&UoYzk;bQW8}!THV<+^0CD#pxauApuI7CO_l2Q4UWV^E*f~TX0B6E6q(Fj^ zEf^T{$A6OgG(vNMv|hRKTURw#s2QUL$F{`CMYwQP9oU0bDc&e~0#HGC5e zw+aZq+2GIZrhuUk&CvF-`s;~d&-Xv&g>1C?!}eqyJ5Dc|TIx?~o42o26?S4oe6-ws ztyfq&{sU`pZ#A%ckIkJegN~d2@d*eaG_}>5x(@NcWzdgXUG5(dxrk-ii58kaZ5e*_ zW)HvWxv&ubW0)44Tsh8pHMLaw^s0&R&%ztJfEYeD2mO2NY>~eP8Pvt$k}Vn)vbDDx zM+dkvyj`s(^yc}50Q0j(aC6M-sf|!7)=T$(R*m!drSE8@|F`O*$)EnzR9)}*rI*PE z^I@=A;f&aBM z@voxyi}}G;aH`A9vyp{ct1Fv}3RnPtBA)KWeK&lkoXfZCGfKy|pLnoNZBPDVlSVgf z{I-PtjiocMHe@u(3kfk_&)-C8naeD6fkg6YYtQ%-SgE4hd^_#$N5UDG>16jX+yI`o zm=0BICg)0xxGgXFX0|wkhVtag6$qZ`TMn4^C=|@~(kFFd;G%ptYT$YoI6#NQKw4$# z=J(S&?|(ZyzckHxQguDPF2JwbEepoIV+ys%+q$sb;F7oGcKr9s-By-Tui%;vr>#FA zaGj>VIIOA@)2mYS56n!_&_5$0fz0xJ{rGp(Ui6c>gCNfO!hx|>gT@#ID0}Tdqw)T+ z|As=w9)E{)sTm9BUk{*?{^{I>Q>7w0fiw7*ZoTNv&c~zEU~afD?Qhg9_{MAO z9^g>-HZ=Q==XW};60@ccZT@+%f<%=&IAqb;Qoz6*R-3=l>kLST{a=eZ5yxmiUTRBYz-mXYG+dpQXh%Rn(49H7BEmi;l+>dG*Yq%^%|bP7}!(+SsHHagsrJZ3Ljb_{z?2Phf+t(RQ#S}IV0d^w^ATK-SJ72miC zJ4N<`XeFcmFZbNi0nHJC1G-GWd${t5O;oB|z{jA&+RdH+Svi2_ilDK7x}>66F0F!7 zZGh;16|7Ga`IKjP`81$yB^JspQ|O;$M35AMyT%aO4FPi1$54oh3Vd~q7|uKETj*fK z^|j~1exA;IwO@^(a@)?@>odfr+?1JPhhI+}_w)P<-Ax-ya$H(M`h(Pck`gtM{_Swa zd!K!M!(m@adW!nvg^$o15JZaReKLMJdVRs@Fz}^ivsi`C`nEx);nHXHby6($U%Qto zY}>5^SMo1L28EFOaZcQLAp7+@6^SK@iV#c2s1Wwd zv$A=`bPqdK8XY*Mm`d9!c_{`WmVh+pm6g56S{JR%rqA3>DI-AS9b0LoAkAmH*TOl0 zQ4LeVc_Vgbzh;G|%+8WOt<~jNLakS1g6+SAears~NPjB>0VU~H;liYqK zisAK~zf7g(F>crO=-gr$=)UVqN84w#dyB7)3*W^*HdZm;3bm8l8*Lu7+Q_4$2Mdt} z8T)9TRfJ2&BtKn2-%*dujDs>oaR;K55t!Im@KKZYu?vc}r$Yrv{UxuzmGx-wQIVUB zq>5~;vK3WeV+BT79~`Bac5yWS)a@U1T2K}$!{_s(WV4~1Zp+KJ0%ch<&4;hR}k zvEF+slo@J9R%Y2Wwg^mK(X{p@)9c?6n_eNB*3<99bA(P@;gZjLt`|-G7~XdETe|KL z#VBfy6vzO6LTG|gRDgJ7XY1YS$$*=M8BekLxJo)7z`ruK1NW&%;q0mbvROu_WzD>Q zT~-B-96)v3{*>+xUm~E|GF79!*3Ri;=<0pV8p|}}dN(wSp#8idQBWNTqu=eZhR3Tz z#75RsTj<%9WEelAf=+3?7}QmO;Zw#9i7`!9VI`I#-qARHA<^THT`JDZ%v>b^Wg4bc z&1HGYH(1{5WfBcDPiiS!)QmZbJ~csc|~J&vPqVRXsn^{j4_k7!5a zhR@*?u1TpjyorBCV~5hA-M6_cN0$fG3QDZ}kyCb+lslp zW&_)*JjUrSE)!p{4XpKN_=#W2P3kD=6KG@imeq_YpQ7e@ku}_0rFpha^z9KroLCg6 zjm<<&Iun&2Ej3*RtLeRu@-jq?z<9K%j5{?q7Opmg@h^E~$ARWhY&)D`ki34M`e;-m&N5ER_3+s15y?y0;a*Miv}HSA)e4h;AvO`n9niMa zqgzwI_Lb);__USHo>x_iEt7r<@*|=h7%D@N5;oDZs95C*6G3z~x!JZgoRecWka56P zk$D*U<#ua`h+CJ364)h5hfHUa)fdy_te+%yyrd^x`*O8Eh{q`x>xzfgKr(L?2Qn-) zc0hQ?rs>J6vC(b-zW?*_^IOM9Fj{Yv6$yKT=^>#=7GHdu7+X*CPbu&9*yEi=%& zaF|AK%Z}>fGGDh{1x`eY^TL_=FTYMe$&KOBK#8$L`7z5*Q|p1*r}&~4@>r47z-CUb z&cztZ1!uht+m#54a_%ukVU}hOy)XeXz*SXK(6%S54zyiZbAMs&<&;y;O%vFmW*Ij^0V>ZiVr7A?w>uR8dz|yvXWYN}Y}- zXev6g62QQIe#~r@DYCN8QJU1{#M3u=PIjTI>1r|Tl^6cZ_1e3h;bMxjGb#{%RY_E5 z2exFWcyNLMZ~}?Cwkbc~DX!enc(0Fd79?ecJYVi#qXn$5Zkq=yS}`bJVIr4P<;6j2 zbX-?6+R;-ID(>FOP00y#Z>4g&b%RGXN83~BCW6T?s;UHiQ%6raGdzB5%FMuDb^OwHk*vqauw5k5F8?38NdI zz^~Jtt<_N*X%%B)HhKi==Oaatb`IqN(~uK7W&o25Sl47As~ z*PR-?yFOLDJWcN$zIl>uL{<$VIb?s`o4;5RvMl0RMtMFG6m|)p?bsVZbZwkBi-9(#+bP+#fK=IXbkr8gs?$hfp4prq z)u~wagJcO#+Hrhk#@@J8n6>GXSm#|0T>I*nskQmAme9`?``N7j&c>|M=ZztZve9=D zYpbOyK0@tntAPsK8i_RK&xR16&N`cxmrO!2?zn#?s#O_DEE}bRs-SDS%n+j?(_Tb zAeec*2Fdk9Hd8iE`*dRt%RssyFe?N{T0QI-v+R2x9ME^JnDoFypS@};lh+g+hJ^oh z*LNL%PgD_*ELTKqL%3d7XS;Gqx^vx$pGxbbJ@{m|FEhf zD}-Ea;h;Ym^R7=Pm~FpD;Fh$9AyQw0e2cjB&bcBdxc*~I!t5MD_lizYxe#5VyVdD{ zwCHBs6AZwAKHAHbzj$$jSqW_cgP*?;#XJ%F>)CI z5Rs-|NH`pUbk;!2Bc7Tlg{$c6_0Z^$q(N}b%7fx=%5Sn3p+p9**CjkZ^}=l!45!PG zOeN9SP%FjG5pC-HW)E);*~F|V~Dz00@VJ$*GC6kM{7?Bs6K&Q9w{ zY!1rHAO(*uYG;jX-EBAADTbGA9$4A-wzAfQ3RF8P6eZ%k#%Zp?WB+(tyCk5BUWQ3= zrOKME&9{O(XLjLnErpV>5S?ybD651mIBA}w^iXCE@yS}#dz4Eg1YiU~!E(;sdrn$* zt$mrCZ~H<%&?*r_xP)s877-Y>&H1*C`vB<#T>0SF#+YdwQzCpn%SVg7FC(MGlkEK1lPQ`eY zD^*@dzVv;dKrNbcGMqj1`xwB=rmUsJoDPuq0wBm*V$yem7UKGjxMBvT z?@(3XiZ3_OmdD*p!&bFBN5;lS4Wuf_Z=HEaR2uJ{3qMadN+5O2rnorV#M}}2q;62u zu@d=ub=BeM8A%%dmZ0yrK8Q{bqP&*VsIhx9%^9cavJK zY*e`6lkUE*FTqau@Hm|${jt?j6x*%EgS@_@g$%k?TA!7Zd8UBeWnt0yj&(zPPdiGi z)4vtbrAcH&B#Q#J|E?hhFO*t*Kf?Gc7!Kk`u?l4@#fFv9VXUCiLKt6YR2!h-(yr{ zf1RasQ#KiMq8oUoX>C?r9!p0HXwun`@)V5+v(ws!z5*)u!kgx_in-gfO;>UXI7ZUj zXx2&^tsWx|68ej6mS_6a!}-X8jwb6vrCLkBsj^%or5HI*6`~ZOxE@w@w^V{AEyVqO zKg0J1Cmh-tjdz+>mmh!fogc`&Y<5&q0MmAkXSrAg^=0DFD=QU;Bh|k*eW5V+eZWTu zbxEbrHqdpxt}f+@=tSPf`nL<)%=X{arJkPX{e0Wlv6@CsisrPs(>Un%fpYKmI_EJU z<~$_+aD{UnmMIQ?m3h(eV8pv@Pv>*|gq}L3GM!H#=8%SW(UGwjsW7nCc>IEIqP;NN z7ZVc+6gaAkrNalczlHuwhhIMiW{g7F#l=#UcW$whBFId}OOO6}u^N?D=I8o!ZpD)w zO<&bDnoE(=9QCsMoa)9tZk@g5paAlTR%+TGdg|Kq zz;ChG41XT}yld9idJ}lq_*|a@A(kZtt;=(0tX9oHn*H)bN$D8k0jSFhTLivSjcLkC z{sv%faKSwU)X-I};<&#=r~LT||3~uqX4|{;va#DnQVa}Mspkl(-UL6DKL?M$>*#Wl z2L!M^SzZT1({k==3;Kt4gbL)>Zfq8&&)^#x3h?C>-Z^%|aRvV?cR3Qq$2-b!1sH&S zj<2iZ(v9=@bsDtoa8J%%I#2h^z(?Ml0~GM5*2ii>7yQ*``PCe3#5~#o?`P(Vg5!`9Miza?F)OG3SQpgZ(`5F1 zkeWm;MXGdGOY<%p7mRvTlu z%2q1~paPFTac)*sdMH?cT=W6wE*sSBZv70DJiHcrh#i(ALyYoClhM=Y&vM;^yrKoMvhAkOt={jXj- zlN@}Dd;!016KoGRYw?RI@xyFK2)->h6h~WzZU7tAt$Y8Mm&hg@l=R6)Stye;V>XYM z_3B;^dj2MJTlMB$J`J0fZ43K}Dap0Z(oAUL?SWO7RyJjZi1tyRGEF$TX^?d6rcd&M zlf6r`RH+`;U|@J+usuC)o+wQQAFYwWLI~0i-z9oR;nkD)H0c!*!Fq2zPYeF^Mrt*f zA8S{ivr?kRo_WRTJuO?1A8Yc{FovyY#IiRmytlU}pB{HNEGx)qm@^JlVL9TKq zpGJG6!>*RffO5sRowsZ({M2(d>+^S%SJebn_Q#ebB^1s%w#&b^UpW2YcgfS{qB5h% zUGjO{Rvc~2JRf6_t`ONS3lvi*WTFCi4XTUeBtD2Ht8_CMD2N(~kKTGSpZ;zNJ*fm` z`s)o_->w2KT0?t~1J$_NuwTidT6W(NcotohCw6C4bewYVfDZ0Y8j|Q>{IV-Ue@9Jp zp)PIE66C6#v`de2=r@la1{c0`V5Mjow;D~5d{JGC*8fwhJa<{gbW|h2NWBd zGFYCp{#{=^yo<{w?xuy-S&04co{Rd!g~TC^5i6$qu2d7!I|V!j;&>?T43P;AU|udm z9TsKpayG!jIMkF%d@wc>(w!`5q-tkS)5Oc2c2XMCwY>_Ex?%gyVyYpadX5&`AkuIY z%UpFS9k*Un!`r!^_L}p-0=DfnF&<`(7mKgN-rz<#8|~ZO%M``bTSQM9UV))C?-Jyv zm0rL31obKSQ#(M{*AvS>x2ZGVDGMLBe%rEsWE6*#5_V{Yr+fH|%kxxwe{_f*cBk&~cl!E@BOyXUulAealgh`2#Hft@TQBQyYV=rF^xz86p<7<@Z5AB z>`ddf;$?15>)jm{vLcz~KC+Mqg-RdGcG zRJX6`EH{n6ZIu!~xC2P`kGJhP71$qg~+-e>#jqiX07zO`xI-kP7G2o2?} zxO1g*0#46nzi%21dvIIs-4hhxWTR}VAu)3{ zah&*??ZrQ1ykybesm#UdE6X-5mvkilf@4&RDE1x1XCi>*X^)E^dPQ$5o@& z&ud@O6OxbtrK|YsCc~kz8D<{d&b;=m37i0#->5{f`XQ5&-MftwY>NYfUS%Ck`Nj^9 zEm~^LvT1$}ySGBRRgz25<`(IHCZCT-z_j$RygX#t;!Wb_DHB<_J_~ck`)Vc+rB`-0 zG?fB=-<(V`JZ&fmF(Ga_Z`WsrCr87X*x0oG&IUE!sOor2c~;Wu=>ahq`p)|XM*8(u zz=l!Cd%tDfI|pXQfXSbLs`h;H^Z}}O=T1Hv4kf9B;VMc5 zl8(Dd_4{5nX$$dIIcPf}HNc!=kW?>Y%v*DVG!xO?$#x@1UI({MqnF*yik;b3R`@YF zTX;gTO|QF##1bL81w5}b_vtPhp(UXqvn8VmNUo;^4OV7)h+is;PVrW&eskVWz3G|u z_$?FZZomN4zGj4jiH6!VbjQ37gd8JpKEYze<#CbWgBleaD{w3-nw#{`e*|dyUP|^sqDfHkd|l6QvO%+_cLXR9 z=0V4bmgiMb`H*N~!eN~;mR3+!az~cvY%UulW9m3+-RqA)c*}M4S`*ZCEBow(cxC5^ z9n#GMZ=<8l&_`5yBV%jV3qr#<-ru)UShBAdoR$cM5J&6c5ba}xxSI#l#Q2X9nn>K$ zaP2MWs`E;`y%Pojr{HIxZNA_!>1*t@(M(W0s<3H^k?N%@pV+FZ_~mgd(F1XTZ1OQZ zpU#jFRYf!gmZ0<}1FX8EOj8lz#gbh7_7*>9Sg&n$wQM4-QnKZ0`O%LAuA9()Zx6mv zM(BP7Dp^M5YV)R@&4f64`n2|E#j7W=PQEp3*T!udb00OE2Iw10QaEKy6%kAT2PPmrDl^nD ziH+M(4C?vK_oVsYZ(+SK+L~Ne+qAlA=3IA!P>Xak^;dA(7NXzrKA)5LLd&=u!dl0D z*Wb{|&poLOvVVO0d8 z&P@ke7+6&NJJYpx5)iwjs`RC+NGNq?a$U2R46Vdw^Nd$}$?#5Ys4?F(_6*gs2FKfa z@(U_X+4f%U*aqt(zCWP=hmxZ!b!lXrH zxTIVF1eIZUethETMm}=Bmwz4bD{=dj79z;K1BywnE><79^I!{P<;)MyG(6c}UILnK z8j*}9tel|KY1KI-{%UHTCaHFhJ)RYBU9>vM_>|mI2>MUvOIGAcP!E;bj zT`h%uXkkpM*A&(nh(cKaYHwjZ_Xjn_a z<%b-Zr(zQKWNRG4ncN*`n%(W%2{i=7)zTX7K0Zoq8kS=oms&9DgDwh~CkT*Qo*aUU z^W!A)fkGr2#FTOgJa6|r3VHJI^^g|i5Oi>A%G=p6;En9({TxeS9DmAB;jw9xCQyQb z7gT7qAhu3+HkApSl6UT(DfBF1;D1d?fO!md`P7s=Xc3i_?z%+@y*A0>`;**x?mG3E zQ;@*Ed9bCaFyb~$?A~W;P48K^VbvTDs47)?MC1Q96WSDH(__na2JtU9y=-j+&UVJM zS=wrf3+TwK-*dyCtTIP1U<#_UyQb(HPbt%DQp&A`&Cz4oKOxh5)LKX;0ofHls+jk; zDAm4&KiTq_I&1PZ!X$MJOhDqj@z#2GV<*BAOS2j<&zp8c$M7}YyhR$2c5ifr9W)Mw z-Z5ZB*`IeTUOg`aZz_#9ZS}dOw)R;U{bv-V!Ia#(YlI)n(h1+3@;Cgh(mA|NRp4Q z=m7PqcGWKAbc~8YsWrP)egBd3t~$weEoBsXgvxbt+k5*i zn1qMd#o5GEQK935Jlhk{>7Wu*GIvhz)ZYaI7pr}-M>uqykg7eq=n&Xo($xIGsbH_+^1V~ z6<(O%Ty-?dV&RnR$$jeAQX?Sp=UC^%>;gF<8-8hPbeb)u3xsyO#WOi$#r$?sM(k3j zL?)-fd9zA)Iy3{A6s+<(5^lX075g}0h7riO@nRwf{q?wnQ;+uRkuF}K5?N~g`k&&0nkM~~4YQEF>(U7M92 z&QYm>0~`Oq1iid@9@RTRqwNK=Y~=u$3)f>}`>>g_NFZWP*LI`Ja+r-H#RQ7#ycKPq zge;&tzqW}{Awbo8!?Oz0&3o9ssz1rb^uW=V4a}TqZD&2$%|M?~3!VUrU$@%wNYSxO zBFFW#@=M!6hubaS|9k;TLcES6ZevUhudzy$h)@vpPU`=5BRf1X2fJxuLr zpx_5KQ@%TN{Mvk~^o~*5kTRI7X8Gc#W#OUnzn&L1Cw+bXe*CvBZJVpWbX5{j(9na5 zXpPl-Sd-MRD+4a5YBE@(qp_;;fnZ+=b$Q8M;5K$2I#fR&kh?aEm%39{ru|a>JXQ|Q z#js1I?mAmV%!PZa_0M-8cnXT>j*q9u{kTi`Yq8;?5Co7o5!O03eUBKO%3jY>(&*H~ z-3=a^4c1W_K06YE%`{-XEa-f;pVI3kq2*P8AsXX_SV((%!bWIunk}>z>);Z)=^34a zSUvn4J^5}%3FD+}e$@1Ndmd~C0>V4z4F|AhjlnnmNu~ORftvksb9h0m;$!qmw)K~A zwPje7;^ys0R?X`^aQp8c3tWS+E9(x&o-(!2_6>XO&N&UR`pxPFNk{fpuR5QQ-&~K| zx8c1TUYd6)u2Tg}*tD3_Jys=?30w>z(>BHVY3)^f244x5o6?Yq<5y$MOqU#!sY_-D z#lKJG%knDnXBx%iT(}yH`}?3&&CXq5F1?k1m8{tf)cgK<^KOFg00f(vfKc>fH_S97 zOZJbooSz6&Z$8|FQP;=% zim;8FA3i|53*ne}uXC^6S&6WsTy1zx)LuIuur+{;xMp&TpG*{S(LrS_D}XFt(P>Mn zxLiB#GgyHDzPI}vYFuS27|d3T0KKSSQd|UJ_rL^5Fmk@jhhCQ>)m7|1YCgCC6&PdaZ< zgja?X3S{xAs>*ipCYrsdg)s@t4Ijl#e4d^0H7D4rCqJ?(LM?L=#Mt2kg%dpNPWu*~ zG+T3UtSOg&>mPJ(U3SdS$*!2J^zzz4g=2Bs(ZAYA{h;zxls-+$vt>I~z@jZIN&kMY!%2vI^qwroK#?ybJ;*aK4!#lRE2dfzH>}3;<{r&VQ{w+~s6z>cb zpGXiu02EYPaB-H(xMiW553{FTrh9`~?pB#<#yHIlk-=fI%;*Re;MeHHVflT9e`8ZZ zkm5+tlHOb5)w0fO`I=LDQD5Q+iTQ%gPhzehy3$NXCvnN?eb@XkO3LzI=2Pxm#vyfd z-GK+jD0vZKX%24sBElsBSwH!AQ@p5un9nMz3y^0tF@*FhI9SgdS(Znj(6+ln{CV~# zc(e3l_xm0#JxnpTPIX&k=w~m+#vw9g`8Kf4B3sfPtbIJ?;iWMsoi|=T$!3GjIUMfv zbO%`@aM>oUk|1!F%n?JskncoBBTDJtm}zXjC=j{t1{JSndc)+yUdy-M-rtxuqnZ=U z-VKbuy_2}r4ZIALCuvjFfeXUL?;Jh~?JJ#gg2aO5;3m9V$l`fJo;RajJF+PM{whjf zC1`@4*r`~qLLF$aP)!edY?aDys~hkfEW8pj(8EDgB>}DyIF1-1iI(K4V)&i1u#~M$ zur>h7O&YD6ijuZpIv-dy`5ig>$h-@y~QR8L#jNisKB5t9He9``O|ju zLW3Hn;TjjM@icBDiwk3C+v&mShI1MdLMGTs%xscckQm0s zn}MH;j@}eE{(|D;a9#n|!O9~lz{@FcKa@6`{xC}y__ABtLO~tZjn*_x);rsg-V&fk zaJrt*t0o0W4IsMQ%qltwjGWV^hZ2k-qN$XjJx2-5SZgJWxZ!ll?J=m(Fk1CVmIPH^ zEZg0!xl=7A zwymnVHdyD=4WSoONlLws4NK&gnB~2PLPmU`$yY$%GkV{qdmdsix`L%Bc`YJ(oJ$c* zEYA!`Je2>ohdhUbzC2N);mbvN+xrbfRU^wkb7m9(rFQ()3iRv`&n;Wc4KpVgS7cE1 zavQ!KTMhfQ5DRdvSkrd_Gx8evRpMKXBmzana4|NyC?#5K!M8wU5txYshQo+YKdKkW zK4Tri!BzvToacUvsRx$$BM6$<6Zl2HeC{PG_#IG~Q)~*q>dMpNr+Ae|MTXUmjjTRMqVIuHl|qoO1%eE4K(c4GA~GX#!072}}RXM2FDZd^q~ z%{-6|NzYAl*)$MxVP&ctEe+%1DA%D%(NL1qG$(&*?8*RoAQN zBu11=v$VpP3FC}32Pfr2d<^%xR{?KYHPIGC(4jv|Rh5Jg* z8QK^?omT6infk&OSl*a!SIeZaHKj?5@!hi)P4kiwI~OzW6E^)ff1J;zi{8L<{dW$+ z1Dtva!1lUME2Y4`q9ssm%|xoHt1&T4-W(uf&mWJ*=>Z5RI_=dV=VFK;emNH|4CwMa zEPSeTb+z=_&MHqW`jL`yl~t&b0Ls-jGqN^D=ZQ|ZeJ5>GL&RhrC}v$Q=s9h!RV;Cs ziit*dHo9e~pV;4mQMeN8$GOhG(oW$%kP6@^KZo2-fH(&~zu-Q*L#(mi?_=cBwAr7# z{dN%vfI^1kdE4FEIR(z(rzK?Y0=TlfX2jM$CFPf9qy?|I*L#gD(~#ftl*sN0Rok99 zxEyeiPtF_*k?VIit$#_%N3u}#x2&t8{I*W{jZt{YM+AnkLf~anWAwCQ>=9?Ux1n;U z%cJ_wLu75UzMA{u6}LfoKzZlyw#7-xt4Z?$cNJX}*NSgKY2*Sef$vkdEtx6CO>M1~h__5)$t}-liUgT3P?*PHZ~p&}q?ED(cQF)v3*L z>e6zLE;GesKb2){h(;>_bke`Wdb%qtAiRmSHj8*Up-H5gg?tesas~|g)}M%k4<#qK zO#dAF3zTXOk64VIovG}(^z_FOiYghUV zZHkhQ-S{2JySMmwR%%eIo?K-K_-yy%XGkS{+VsOgi)^*@AI{Oyl$(&$&D~=G01NOk z;q>8Ah)I;&)Wom3y0*@O~+0L!*`Ibco$Bk#_bwf)3%j&?rFbsx=!U9@pE&n9Z@vWA#7p`zs*cx{n?FVxxjH% zy;dnyarI!(J1fxxBC8r$p-B(K`;wafKnr723;w;FQ)4~f4T^z7uml~Rl(m`KL^`-` zt}Bz$ZqEi%ktgNXC(x&{I}>cU57-EFM0$OXM!%W#Jp;q5#q1q5jVWeRj*-JD_z>HF zVk?_Z-*`3QOXZzq0@jJdQns|w-jE1(pZTO|}ja%dDl`Fi}PJnF8oHcGQ z(mQn*lqHjh>=m-VHo^sDpkRM27c-0JsXydhJL*NLY$1e>GLr?U-|N}JM88-KxhyZ1 zn!p-(;!E0t!;XY$?(uPCcMsMAnZ4!UsvF2fzXsRe#uvrY6E86&-T1xOvU+v zKRo+*sGKf**yZJ}xq|1!JFy~?f%}pF?uB7z_ZoQ!ab|N8b;m@~_(GK;b9wP>Hrvx^ z+i`v7hWQHnT_F#?^9jR)OifJg`1l^v@T>*q&(D*zTQL8tLmpIu*6tRjId*FOla=Y5 zx?@Kc!m=uQZNq)9*zfDv&Y$g}*?eM9^W8o&#qkQNUyOC?H4Y}rOzz`$@pcPzmihDu zaL<#$pgLpq)QW@lT{6r(&wsZQ z7+H)7lmOozu28?aTy!2Cl&0QW!qO6UNZBw}m85}3h#7Q4!1}XBlzauwn}W|HLOyBy z-|aW57Ji&r@pOF2i8<1jKi^<Uw z_JF+EpHIzKgTp}rlh2r&<>s!Yjdmh%-|oqQa1)#fOmD*r%nQ zn^`^`_4Q$EYtGf+tl&ItMdnADq&yaYxY+J3D|uY!^lj8pX<|-qo-5)spBx&J+LmP8 zBh%}1o42(}U+Y9d?uPkLfvM7}+L)}JJ?@Hj%J}HZE&JfBh*!(d+E{=Xcr+m8`?4Dn z^2$0Rrploj^KZdI&c2;M#9}b*k9y^d6Vmu*R`lB7si+CV zcN9k!zl%n$k!9QQHo6$O{IZwzgJbbMpH_Z*mdDXt5=3vRDF&|}tJdjGt$&v`y z3RD4^v=}r101v<0#ysV3!4t?YnHey7exjL-T;wf7I{Fssy>kI;e7Rd#&PQfrgDkA_;*sC1o;F;XZRS)d~1guIcL_U=jEO1Oh^k& zZ41eN%36GizkeLKGQ6(7*8-qR;hOB*mXt&hw_FWc1e%X2GktS&Hb631F5 zLpZ=;LgteS{U=Wv*E3g*-yO+Ik+)ljRbFr&4K`uP$;)ApwW0_Bp3)iB8ur+kNQ~Z} zUQIaFuYc1ZBDH)$z>&LgwW^vWB04+HC=IWt<)I0tz1%Hx1L#bt!0(*Y+!-QuK+cG2 zHD8-QdZkE(KBIVs;;?jZWRA6b-vk=BasHx=X>nrr*|&txi{Oqldpa^ig-fe<`510Q z3MyTG=EYx8NE=Ql8V}Z5DYxBNW_`cBg)^lqcyBQBZ<@EYX(rle?x3aPeA17v zBhPH=n8wIJJEBjSGFfYfV~n!qWgXzF0SJoCOnT&KZ8|y9dysnw7R$TjA_>$sdT$PA zhhQ$e8GMi^)~F|Fwq9#q=azz~Os66iEus6p@ApM-O=%(W$vSOQ_md#iQQD$h3MQv+ zquZSS@~pdl)_epXZe-*6ps|CgcJkskqn*ysj+&FUv$CP5hzc7kPB3E|oup&+m3*TH zeZmb}f6Z7$kSEv1xLo0Sgw*Hjy+wv78mAb=gW*S;8H3Uqh5PdVV3U}3T7H|E7mD_#51-whWRFYRtwR*-V~ zD+cZPmRWv#{UrQL2=qr7{#BhTOTUrOJp#mnF_$_*o*!onBjl*OXnK8^M)_V|_fOYA zxc61rvF!1*oDpBF4buT&($2h`s9!KfB1A(_Mqp7q_)qlJ_y)_*zPJH&xomHlV9Zn*xZIp&xSkpL8 zWVAS5N`UjuW-KWq@2wt&-y>j7>fe+0qddpXR)@cl3vjPq^zQjW$ch1v)`DMYxx!n{ zGH?a#?rt$`mm`l?^Ar4OjJ7H5q5bfX>^Aw%Q2ty=k^~d5$Gieu&6m$WP^f zJUY^t{uorv9MC&4Bqb471ePkgb;qf;RmIGYzB9WS^276Rrux0gQ-UhoYsqBUIFNi( zXll!+8v8SK3+a{J+Ai*hLDhQRv?rlJbDX_dJ8)X}ECV}>*UbZtGysyptHxx!yF;aM z$X?QDWB%KfO2}->07Xi2G7N@(~KHv&T2f7-g_w}Kb7m9 zje-_4bsWQh>AnVL!|iEc$0FVAWURUN90BtYQb-hfj>TcU-PBa#K*76%wMW>Y24>;C zT{Qk@WgLIOTY>@DKosV%06d%4dl?N{AFPcBBl8>W`SK+SrdZi%G<)lzary(L@WAi< zwRy!UFJMvyZ<@_(z3cJq+ii#dhSepv8Hdrr!xm6%Z_Qi2}od;c9ing2y z8oA}{PIngp^N8J@c3WWCO{}|cP%lIsU%jYjRY_{236Sso^0b)Kc*zKTFM{f5`0*9n zyZ*l70YO2Yp%>*8-4zvPrQH4ed4lw8E+Zc;*u ztA!%uGZgoUyg9WT;)$Q+pY3hxMh?FiO0g?Yg!DBI=kpipnYb&~>Vd;Op9;`CRy2=N zRg(o0Q?Oh2zTpQirN+iBbE@Kb>*MoFC%7Zzs(H)Aq#)!PLg>X_#CXc3!w)|XmxY+u(S ze$QOxx^n{MkdYwZf)ZI6qHMSFN=a^P7PxIXp1FRnd3ao%c4#3Te8J|vyJ$7=PYWx@ zQ8SPfO|!%Eb#v=|DD`CEe4FZMbdI(2EUlcYq)n%JiqtJ?{+8Wqe9VznFeZPQ?uWF4 zn;H9HCUDZ_6~dEsU88uYq>T~76rYEt%N5V(GWE5D*mK@hBl)n# z%BTjm?hh)zC^B`sRJ_N{;Ay@sT=3v@@8vHaX|+eUb^VutUvZ1<%AX*v_=r;!8Wsq^ za&C0uBQ}E}8)6=ZNeN_XEx?5b;f$7-iv_loz;Uh(i`#J)>m|K)7UvsXZ`0k;6YEOn z@?RJWrb+h}7nR5Y1h{9x7dhP7tfexSU9JoBqujo=PWxg4`~(w!*e~XAfO8UR2lOCJPF9&R&uc*q>G=aF!efjovFbf2<+DxzNzxtePc}97t zW8g31Nmm|unxFJ8;kF?*k3O54m}=$xtWpxNZdMc=hPv}8KbdK0Xv@b43O10-*l6NQ z6c%yW?YK+sIAxa|y4Y3~$TZLStOS82G(C=Y0j63h~$-6E|kyI+GGr?i)>Le-tjFwO0hAq z*uJ#w2_LWtsGa;OF4^F~*v}JdBg0X2`mo|YA9*5el$k|DE5ImzO#Phr(HjY#3?)Bn z!SniTy{~35DZzO`$k&OU1$jY^N1C9FvPMQs6HUS48~nl_V3HaiB-~-Wdi_J|smkuK zkvbKc{6nF7L8z^%n!Q=mCe4JCq{D#NZ~`?$pK$u^s`gp8&0|Wcrlq=zfFkd)PAp2& z$eZ*QMn{*Q>Hf>FI&TZD3v%mYYzLZH#|r(k%t&iwlrBYT=Sf2a>K|XVv7apsIDls&Uo~(JK=EN%)aCz)*Z7$%_-DKL{ld7_R z<{_Uky?&aBe7jR2fTPyr3`p4Gq<#{-f<`ZQpd}@EiFYCSD*S)dvOkj>$umkosXvA^$;|E!vt1s2XTfXnA++ongnCy_Bd{5|D zbS=BvT$%c1=|!tOL%{FpG5cWBE?hU{L`LE%IXY9`xSJ zjd-MR7Ze8L_!9_3DpkUloNL`|sTp`GX<4vctXBz=!)V_7l#l%Z`rTUu0V>>q>IB03 za&5^l6WgiWTCYPWcfQ_*Vs82EZT_=B#&X@Rd#Q?LT096|un4Bu$B~_o1-n|mKp1_w zm_vBRgpIbSU52{qEk(+c=TkahBQUC6NsF-Lphhpplpt%{CP1Y}^5ATxL04B1^Ya(! zs^2WE0A+LW~ONY=H0i`2mo%Pvw0M|5sK5(5VLVigLPTK?v}A zyle%F*c5RcCjI*dz&^>?MNo17p);v+SvL+GL5>Le6--C?TM6oke6eSaAMkLU4Grd- zSRg+AN1@FR;a0jTsMH&9xhE_NJ}=w=iKugRO$W0knG+6@yjt_K6aUAkuUG z%42Nu1gih!153Jq?fUBvHfXS7RVN2R*CzmA77P3}wDk!ApvOO}3|{5q_(fXzgWMG0 zvdA z{5>a_?n(1cTnC(D|F6s)0QbKNc76!G|Kmz<1O9G5KK@rguj+pU+7|yuc+X1tux$ap zXV!`TU&+lA#cXv5vR4;6kfZ6pGi5o@FN)RQ&hdBa=lqZ9xQ9tUKCb=8#9(rDp|Afb z$`@|`@6iAH2Gp;}f2Kd26DR(F%m%v>0Pq5VJDV)z`znLPP++3xfac4gcdJv4DO~Caf7!guQ=O=q06^P49pk z@I~ftjZP3)ehhqyziB`xxQAXMNPGD1P39&|>^MrLoHZOy@SPBN4blsc>-%j?%?MpR zPAif25IlPa%MGEb@|7mUqaxF%VZ-vVSZu_|zD>Qmn~?22=&ZSNQ?WmHFoK=%Z~?xM zezwV)x`Wqi9C3B5XcG*h2<|>?>7|vrHs6YoT=BVEeq6*zD=6wqj>gU9s-CsSsPYOW zs|2P9HQ!3q`vnJov(YJi6^{Gcv_ieF2IsxuQse;%9&lSbU|yNpsF-Y zfe3HH!FsOM8_$6zLzQYWodSGY z`EJP% zzO!5E$gM6-8FPCyR-RV)=Cyn`!DYyI7pBTM7#?ZM1QN>h$hUsj3s69P%p*=}D~ldb zlkhxc?9sB6I!z5N;J>O>2~N(F_QaI+&1czMQ1NADRo0&95K#B+QAsf;JxJHvEONs@ zM&_zeZ#y>KnP!$28A_TUfOSoGGZz&8n2%FI*%eu9?Zh0=RS*r0ar}(+23liEaCmkbvW6dp&xU7>?AFqmDd^!fjVnzO?)p99?=1 zpSd^%0pod(r$-~}@j}QSh8Qz5wd@~;wTus@;y4hiIhbOkXD0PGL*~XJFP^`mu!EZ9K?as8)8{o*^q@*fSXu!~JynS9@mxfLUH%6WS1ed_Utb<+I zx_i2mdSl)D-{iQfqkE+u3_-%P<^u&?5up^V8_eDjRBTNeA|mm}JX=xX#)%1ES6y%L ze0@Hg9lnep_J!H$sJ{GpFjb1&Zb~46e{j9g9~eSPCpV-H^=UPq-B2x6ySG)mUzYTl z;Q&?>wpkmj(U|^57aA@#Jb35FNR+tkIZk*@lb?)yToLxst}PZ-$lCWcA6`B5haPCr znlt_l;I|@89a?j_Q zYgo3q_z;O`WWw<~b3vY0Vcj@xhzZ&ZFZvGuGt z6oTIphkj`$)$4e@EnY#IXPem#o{5(Z>8ZhGcMjW&dE8N}WYz@7S?1iNT5q-(KY{cu zAzYm)atj@W5OvtlZ5{wUXy%muaS5rZ$ca^$o1RDK zAZ42iTS&+d6%ldAS!Euf;X9lR?pWu*uGhB~wvLQ-VyXRl<3G{5G*LGom&wxkTM6NN zr9@-fwrx*eX{xz&k{=Nx6R#X)$106xGA1gf_29eA#MGd7i~inpkERX==)$_daKHD9 z@Xy)C!{pZP?U!9su^`F=7>g(Eo{7&<(xb>yNx#HuhJ?qRdF@+3tzZG?3K#$p`2B+p ze*fq-7Ws~Uy2NF>A|uIp2%-(tv#_)8i@FQ$&Vd+ome+|i@)aFo)QnD|RaR1?mlVgc z_g$DS>oSGrJPEE?N^?@@*w+YJJ7MRxN!`g363JV4yK2?rPAPKCk5ddc+~jiT32?zi zq=;=J5%sk!z8;)k{Ye`4nKaJo@YN9WFlY_oZkL_1jR)`JgnpRX)z4J!<9Hxb$~d;z z6dm|Rk&7fk6$W-Y{T{N7LRfVO;ig~PM{969>tdhrA^bstNcsB+;cG!0r|uJc|-O@x|WI!J#s=1f^~tC{KJXW#TB*s@kYh3=DKhcrwMvf)-%}pF{up4 zlF#?Rs~5vY7~~XAE=))i5*Us*n6Flk!lXKTiq{2uMx<;QeABK%1HwXmggjA8O6jPO zmIqM4_S=|26`g=gMrBp{mOleb7YpBK4fYOh5>%u|6d*r4%qRsHR%|ldl{K`tv?1|H zxZJk0c8UfWEFX60Rrxe*wO#?A@V0%gA05ws618k#j1m~?$dXu!NKW={VjeXI7tJ%worB; z23z9-_(KScjrJ!4TsK`rmH{@Gb@FF=CRR8atcZMWBcp7r=I@oxq4TtZgWDMIoe3u}=~%e5BM6pHg4%+p(6VocVa7{)Z&!`og#WohT)wILD(auU9viSae_0!HZOU>fxg zncs(pw}(}Q($<^LLO1J0M9`cjx5~Pjh6pIO(|^ZVJ;i+g{*oXmA~NJEKDu(m*l_Z8 z^F%MNOh#&&k#RwFrO{6Kvp1GhIn?v6dF^wk0NSLM2A%qi!2 zcO|}ceDI)G=WT?P)EY(TE}PNVkf5(oRHl)D?<)JB)_epKjS zs{=aV^jaP_;V~Ni4Mo0vp+_}o7a2^fAyDV(U}J|6B_tfD?u55ql*JP$f+RQnikZJI7;OOwNb>3;8f#Ww`8UwL82S8i_P--vTT|Mc7 z+e*AP+k$JVlV@8qEOP#%2cvIyIk_j_!_?4Qk8OO}hW)ABm7X-BG@V$y!`?$C$EQfz zr+FQ_WQnm+U0H4=`y-)V{GtlWJo-$1oe-zcnbStY*Q`L%%wG+onzSp7LdVu^h`iU+ zvzP)O8{&T|s_uoF!psOmFfel3o#%JDoZ3x1l#0(Y;QLf}`E5Ma-c(H|!3`}2hr%i| zy)DV>%VCjd?Lcf83#2m~P8F_@aGcFHdWtiYom|;Y^mIg76;tb$ePyIz=&#Chb9HMz zW@6&{W7<%mm%hnbvhqEQSNTS9{Xu(ebtil;UL&k=h~CvRI7 zIEY-j6k0n$HOIONCMNN*(3X+W)yH$ zMjk}PAL$PrSe0!Y*2qWHkl3@er%$F$TOF+j_Dy)F;L#Cutc{CV+3v$u@rte9(V_U#RLQ@q-12bew!uT*&BaIrJbF6>duTs<3TGb-8=I=;C-GV@`E0X118^%#%6Bf@vc# z=%ilUKTN_7)Q`TJ7^k3HWd*u2OU^98L*qJtrOCz^o4-Ty&Z33&m0M71*Ya} z$!tS7CiX#G?0uqzWXSrR=u542=BqZnE2OXNIwTHs6k!pr zD-Z~%px056t8c#&0V~xu(j-qLU&YnmJE=W2Z6pz|Udt=2(WUm%4SVbPey%_ETEw|B zHH6&js7SdtI05hFBlKJwBP}}qJ z(#A;agWAfN;c>AIJ?@bYXYG!kuM&t5hjZTLsKwHF;&&0|0RwQ=(fHtwHb*7lF2cg~ z^=N@>OorAS)k!~Fkh#a<)2!#>1U;+tzJu&)Alo|2tA@N0G~AW296H($|E$NKKm>TQ zAUXR{D0l)7x2vume{W6J1!~>C_k{iQY!mIFIm2^?j+k90mp(wsly)jRDb&kp&1vtJ zE52Hz#Ceg|EJcSB`N*f$6<^`D1xZ&pmDtrv!U9(=_QO_N!Icl>u57$AfArLDNB@vC zRm$l|IvjQga@$Hl$-QE*cCbDcTX9KjV`6N3K?C-{VX}*5mXJIxGb!%- z2p>%e5y++`spC}UC;=KA*w{3kq6%t4C_7fSSVpZuMvs|qQ=0W-+I<`vyOeFK?Y28Y zd&roD&Q&qK-HH}60P`qC1-sYBtD_IGJ?X&`9SbEvZO0glf~k?H2j_(G2N3hw)v^ z00da`*0Diy{iBb=A0~_hf}SWJ`?KE`JA`W@Ff_PY&9av+X`K^qmq!5`Jwcdy?Q&LJ zCPGRxu*TItxfrM0TXLIkweh8;t($RBC!*^{n`6V+ET+_j88lde7Q-|ac})j1pu@znEBc?HxcJw7H~B!i`iO6sP2f_+_L6|Gx_B2qXM$9!1Fo}?OvR7Mm@&G)VNT1 zDDPYb1rskG4yC`(k6CS!Zpj8RL*IAp;)Ac_*3+A7eQ$mhS+NDR3+#6wP1F{TDAl@? zeuU&;`GTylvIO#VA|lC&f46==YX-g?YbF}6ea3yeW!k6@6E!|hXyf%tS5^q8dQ_@2 zENyR4dxV6)r)rMlIlDVCLShVx4LjkUZ$ld8Sj5dfI@&&^x&f@VzOa&DLQCVvW*Zrt z@vqK%H>#04Xh>>TXrmRDn#w`w>o1*PThP*Q14CdGlnq!Fu4s#_5uALNU2(K4{)f& zF~O?FreN!*z5{}WDSN;6eqn;|+t6xydwAW1H+F2WS29I#r1QC}(-tL8OIb~)voNq# zkB<)xB>p~oKfXha%p^1A^q7Yx7k(*_XwF~X&c<{licMQn5GofMya)bc-)_hksLLQ3L3@VackS$T%>!~w4vljZ0)T+g&IH!OjJ0czYeF)>#-OZt` zhdIr<-F)rzJYQ4^-Qb6fBt*9S)p`g84VC-RQ6FI#MKDNHC>5Sb1e|Y>2yC_pXpfmz zq#})rW#mnIggR@Xx3bNp@@Af-_u1l#DJV&_S~qf0rC15y)*wUsJgBe%IN$+LL4&;| zUkBkuzYE=eve=lUO}`*dNy4Vnlfw^a3c?TJcVKnn4PlaVM=?yt%2_S43hR0fs<$zq zYtL+~rO6><>Gt9;rYY>}i)jzjbkE(B#(pAUV**{pSyE%X`cy?HYnjNBqrv8Zq=j`H z3WI~EF6JFO1LuOgQt7d+P(05x7n6w*YSHq|*Uh%MwJNehQnDKzN$%$6fdlbsbXPWo z3f1Z_J9PpXZ0wsVe_;16YimF9lfz=MKprqclINOvn2Y8S83sTQ$7B>co9iKfa$6@Gyp2wP1d;vlhW|MF8TA)w zEy8TcML7}Rviuu(tSBE@wU$9~ng~>`GzwQb>!O8nsVWFX?QdUy*3xe1v5wOfF@%{#3;;(Z^cr z+8ZZ{r&D5|!FB6oGe{)gi0*tx*y1+Le6Il-uz?Hy?9H0M+$>cXc0(Cz%Cid(`jn=B z(7Hwr+}S;7I}Vv0{IYcG_*$X&1Lxk{nC@m*DNy2a>u7%CUSQ_=kFe@#kmsyfK8!H@ zQtgUcN6oCEJ_{^tUs^O_Ia!-h_u|dK+w}tO=8Q-bmY6}|@M3B2;Afv-1s*6P5*VWP zPpQ@(vR9hbIU5XT$TQ*#FHv+<`3ca@nsdO3 z{;sq@bwCsT^?0cRlVbgqh=q%pDg1DQ{Q1|4%490Q&?q{T317&|TXftlm4J*m;!ve^i zs^g`P`gv@bkN=Oy#{$-bAzw{x-WY#5wpKBXl|QA9dEX}sOA5(`rrL}bfsfKapYSnM zlo%q$`yl~KsLU{HCNl|B$P478{yzj)BM<$AE>XO0caqvJ{Kzq1dG2=Z97p=sbC8w9 z+-TgqCCJUVkd_v7A0HzB9!X{s6?yM~ti83P{JnmM@v&qt-};EnDf(`}n-po?BPErV zh(zDU>Y?1+($#35x;%4d=GSu!fh^wDxTT-1tSsxVDaI}+2w1;LQ4Nm1*xvlrYNhD* zd0KlG+Cq#Z{wEzTrNXHE$OlO-t_z#Z#7y_^+G*4?7;+W4qD_nw z+7o8XlS9pAPh=dFX%b53QjSA%#%*nX%umaWYVN}*mMo=oc#@jow5B$^_6EWqwk<8(x>@(hO=H`i95Y^ z_n8oxgFU!sR{2(u87oXcMI>26+abY*FG&Q-gGMVc=HEQ(7l!(&O0j3H(XRX=)UW! zrcMt;c~PKK&^{{Eh;FD1z~3`)@fV(bxFTDF5^f`}QM2$xYjDYAsi{+YcXr!+StD;@ zx47~6_}(S`vK!^w1>KQx1+>&I-5Y`Mv&9F07x=+SA$XpuWyuM>L&ci-l9P~xJ@GwX z&0D?RG?XjCm9!vfadm%d&L}g#@_Dck+E6E?pEP zZUm0KP2Fb`AGUiF|2x2oOoXZ-c!hyHh<}KB})T(9txmZn) z=i|_fxX+XL22YR=I5Jp(Re?+zf2X>|#*L$a*TmU-T5X}a%Bu?u2?_mx%}nhyoq++AQaf3X2;jM~RBtrV zc4mImqii6j7K=zcX#c9I)IJ{n<^i4>sZ!-dIdivjz&C?8k;!WQ_JbInL2zSYn^=YI zsf){g_80%=`UiZ+Atamhb>EA=xV&%(64@1@fqsxhKdQisI999s+XYWeXmyr`uj0k> zoU$*CMikcc`(Qz?TDpl#l9|1uN*#g$LLvq`Q*ecFCbK4=+@pbN@ z1oz|#9QND!bOls#)k7G2+2Qb1$s<#hY4*q%1TbQ$(mUr`-hVfL?#< zenOruS6tcxV^rnQHYBu(OtDBlRBnx~OYu?~24az@MEvCNd`BRys8^D{c&mpOCZpO# zEuJ<1dT(IZUQ%5xVs1yD4h7T}R(4pa_PK#_ZpiR8ShL%#Y+LqBHFqSxFgjQS9Ugf- zvKLDBh@B&(xl}VTIQ!B@8O|JRcB;H0u9XNZDRt5I(-wxSef84&1k+$j7@5X?uwY`r zIrc%YZJ@$rG?^ELA{EGMtEtZ3!yt0v6fJqaBp zt(p>RGZK<*Q_3q9vVj|AX78yM<`Qz+guaQv!2-oV6cw@7iGK4i3r6^3wI?{dcBDrx z^OS&XWO=}4MAId!`P^m+5aHLaUu~_eWQAGnU=R~aO?Krn4fkGWj3>X$oN5iD(&!0q zu7rJ0Lkaw31tCkz!<67OZz#?p0Nx@0euG?K0ybClCts8Bfl{eOD<1$f2w=RGa}5mk z@(g!aVuR&nOD9{7|G}>SBQQLVaQo}y-@Poo|G>bDf*t>h&w`Wx3jPJ4*(d4$;kkb5 z=9QJt|HB3NiT>&TffRrH4>%6CV{_f|U(Hodgnz$QME~$&Ft+}+KLp{wxO9;`U02o_ zT}0Q~!rwxdD#albeE*AS|HVU}%>UJ%Wc&}#ZS~h)@D%&sjR=fl|0M+ce^6|2V;ey@ zf3pGLB*(`%0auKFd;BcDC<*lr(Zm16+dB_}OuPTntvlXb1;y@H*_z|HASrREa;ZYX3t< zXg6S+$`c1)2zYLazeP7&g8qX@fz$s1<^SvI)>6cOhx)(S2Viahu3H6|<^kUR7n=w3 zJp66`=i-zRCI9^sjNKdjzft*MvcLHNFel*W4+wzZ@;Qq>*m^zxtJgDrSB!QgPX4eh zqTj~>;3oV=xx_x}!d8f}x0;BgnwYMlnr6bMw;-Y12!G|sq4j*~ywbqI%RJpADubP; zOtr-|fbpwD8V_c^-w3W4KBoHau0p3+B*w|V_lJicTN}p6(uxxAckKnYg=im`eF0_( z(1#y)Z;Arh00X9VLPFI6dhGEZz*qD^q3a+3BdwJN9VS!>8PAx_U$%HVO#Zj1&50pmFhIl$~oPzf4p08-sLW^&I&H zQNqB18R>3X+iHr?pi1ki&{f#E7JwjjlF%?j)*;I8uA9p< zpTvMHq$_4&u{sjHsfoD8o$8Rc53_;ChrKi1rbOD712YxH!7y~%lAl{HmVaMBQ=%Tt zMon&Z0kIWd1KgL))P>H62??&|=L-)F`Hb)#<1>PlCeqPVVO{$yP4;&+M400XmcBJ! zMzx}X3aO*-au?{4x|W7ddKdeqwDX71K{@mujdSerX{3WA!Qpbs4S!hT_~EHZcU{5@ z(%PB|+&l)AG66kuuU5{M{4IOM(^o0?FAh#81T^{Nv3L%Yb9uf)+WIz9s#3Epm;)CN z+OWCfI~+C^CPWF#S43-a<!;OZeH*ByEVq4ca!W19HFSP2EkTx~9w%6|?BBpCCy;Aucdy3t zM*0+6e=Xt#Kf;x-C=L(aaKS*Gm9=fh$~G7$1vZCJV(i|iD5JC8O`{kN4a$^6en)6}KF`-PayVLH zvvaVS>@Eg2Y2WLnXvzeN!CB(s9+_KuG1;pHcoWxo#2h+~5Y(@5RLJ_g zjBGB_k>tE2Uv5TS5fYH^q8Fvs+0IycNgwT7owr!SA*PLKapgxkxBz1daDohM-T5q^ zY?6W7^vb;lbSOR+>F#lgA43Lxz0TV)dwl!`v`c&`sJ9xQvPtHE6bb+1M%Pb-s4 zdAHil#83`DIXgWNR~nA4dEPmcgIBzn^w5&UK0(6%B&?LGdQ?lJ+Il>qier$a4|oho zp*cSN2*b`{R=uu1W+Gl@dhuEFGR zimUQWwI!+%6*)+$G?e41Mt$!F-SVkrFI$r|m4z#&y@k*h?Tdo$Xl}z$Ube=fwap>bB0o{VWLa8t3hR&_uHYwtoCe zPjsm4!FV%0oXVZs@r2xqQ_WQqWMrr#?)$#Wk0^hwyLhUtz8t5hh-vzC8gm%dxB;KIE&Y-+DNsMrOIQytXJZNBh)gj zDc`aw*U}oPZ$NtjTnRJ1io0;sfs6%4*T&931tI3-uy+Z&)$|ulzc;U=Ge;$XL{VMjH!cBZ5~ejwaLV42lr*9HzSfw zT-Nu~(07HvjM)uQX#^uV9RautPx{*cty1X<#HC|xDcI6OzJ{mxPg_vph{k6uI;NAPq zxx5PwkIj;)(G9@@ z1b25Q1P@Mdch}(V?iwt(J7MD+cXxMpcX#)*-|s#Dk+uGdb93%yW>rs5TTONKQ%}*s zCUYGW4Tf~e4U?Ma@>tQcvR_Zf;$2`T=-oB8#FZwAI&cbk?~P*U<-N=>dW)hr6Ht;- z3ZsuNl|kxiqpz=-l?tz93TQhjB}$Rf?`JGb zUd1n@3Ik0DvuatM9GLH#I1N6MH}RrD>9k?`2sjmemm#QTGK)6PN}Ob55j^dd^e*R* zwbeb=hiiUMQ>CYZ2$W*6SJuLP$O7yJGif!fY9Df{p5s#bZ89F%>2|7%GNo^nnxj$@ zXmd)1cLbz4HE8h(xF+K(Sm`2&3Gx&}lJe5BC`=$=uD17;8T5PWr0bFiYly)PS+8!Z z7Y%hjr5Sv1VnTYXm`I=E{&8uwMPwDt{D_^X++D9rb#iTnW|GWy5!9bf4+4}p!F-Fe zm5zYgyoxsm%{i_4DoZY{Rn_8=S#_^Q!@C3|Sg}Tx%=ScBUjy`)F&1S*GX2ZUB-Rh1 z#g)FW*%DI*sT#=U-w{~Sp4EQT_xf`h;y0Ws-nQs_CdN*6E{W11I^ljbbTG05>vsH_ z;*8T~^O&U#jCc}uoX5(73ZA5j?oj1q4f4&AMwb-%kyPlL%-<2vcisM zefO9@%4OjmwFir=NVnLJ<)VGN7PQqo3BI(y=2M`-mesr?jbxOzOlz&z)!E%IvlKaN zaMVk#YFs&-p5Cgvn3w0+u67;gN;~>}`r|JGv^b zMfYd$078wCfaz7Zg!E)fiS(hQQ5FG9PhM(>TEuLGyFF8UCRVviBSi?!&dLH#sh%u> z^?Z}D`GJgxmZz#!r!Q5~r7c$9=BLeV^sD8!7Oo7dLfA>~n{JP#mi3DR9kPg4_7jzx zpX$nFQju*uTx0fck$=$7>cWnC-wPV?vND+XIC9+$)x?y(_fn2bHNoCpRZgc+VB@mPnmJ6XGMU(%1JNS=9C!6zbFgrZl3lM@5!*eQ z4lV1r_k)86r-^dL3b8=B(?GeNGyf)>7SBB+2k{`;R?VHl+^yOBdQv`)$hqG*p6D-v zuL(C)In>A7%-hZex@}abalW&0=UIE=pu~NFCkx}Y)q?~cH@&CUiQW=o9q`HIpX zC8JBm^v>v(&yGfMK0-2J-J=~j8ZMcl)x5swC}nu(+#VTy{23bV8u$!l2iO(T7Ke{b_Z zBPKO_E%Xt4hlk9OSYY>V&*N4@VoRtCuA$?be%rP4)31jX;erahD!LZ<%EbGH$I9iR z3rZ{eQ<{CMzWwyZv?d=Be0)WhRPbrQk$F66j4;KRT$r+5^U`Yy#DbOx#=HAGLAvLR zFi1Jq7^pzAW#6>3mCW?p8t*=1J}iueCEP8L?M@{LV_)&<0RR(WwaNK5T0k}iyw^_IYciC|spFO;UkB$#r)RPps? zYG8*|+jFay@0}^fQ*J_7{Cw^3pzL=nGAe3`mh+2Kz0avEdLaYBwd=#hpBwBa<%`Iy zj&y;Or8Fcp6JkcD975z-qPAht+BwR)GwQd8l#LL5)3T302Pt53p}zfy6GC<`vvq+* zUFn5d^Ob?J?ciVcv$m5uxs4aSsaTj6R`6sO#1S*^CK^_X`xHZ-t)_zyP0ix!Es68Y zH<-oNgsHEtyD!2pKO>`YdE5Z&e{$6MDl+aYHenU0l=M)_8K7~n|mYBk_4_NWCF+Xg|9 zpP&~!^GD0b_@~nQ1b4Js;3MhY)aVr>TOO59JAv7w}3aeo%P(-RkWg zJH44->JHjmZCn3zM5vUx+&~-Ua^{#VN1Z$82m)FrxJ8 z&Q|Qq)qz7^mqJH_nl`fGTCSLkneMxqZ0|FbM#DHoKvS;;@*K>JokZO*(vYt{zWk+& znf+kF9d98rFs=(i%=#gv-Euj?m|FGZ-Gkn?X>6l@Q_g$D!E$LdZ!(CtDQ&&cy;FqwCJF#L;krKRsUxF{e|a# zI@#$&H~AP{QSFI!^Xbt5;iIr;><9y|eaj9BRWYk%w&<~VO%*FP2<+@hRyFW-mCBCj zh-MKMN&I}M9B&*GlRW_nC*r(@oIEy6CsepeZ$|vE-kfNEF+!ejnIkc5D&%{ZKzz_> zH*`vPm(HvU#{mx2$~$4nKc6zeN;ArN;Hp)ev){&E$E|;TIk~|Uz)j;$sAz~P(9sW) z;W_UAgKrTn;A%cXYoiT@jt@F+jq&xc?@ojc7I0mUv=yo+Mhg#)BXcLq_*_MYC92Zj zVH&?~{6sO`Z=aMDPShG2JT&HTPeqUix_8#p;_<{yMrT=Z?}z-1B_aD>xjk2suu)74 z$Lw3*{KoHW|$Oy=h9*Zs zg}hIj>&u&0M81$Z9dT!d@9BX}*r8ZHmYua}Q83KlNXA?+Obi-N2g%~}%2`TjXy4&y zey&kIc^ZRo;{DOsj6g{?BPwdb$H9t$*`rqox0Xor3Bh-Z#J$>?)?q^eSIU*}W(#7X z4tM% zRR|8%v(3Na6yd>*<$+)tfrHKAj4vUKSJC<}fvIgNkCO#=smF9ue^E_hRn@^6){B?u zN_@5L*jL-z8vho$V^%m6<<=e$Mm!}>9uL#Yg2fW9yW+1m>@b=^dh$#+WSc7#I zX{+yI@*{b~t!8`FKpD<&k-5AabJx9gXeaZL;RZB9yq&)c{I3lgC`%q_!ZIV}tE97L zw!}t~iS9;IzFItuPh>&`+#md(mygoHV9#g6;LPo<59}K8R&6dA9Kp%7vww_jK;Fu> zFcx{^C;05?<|>Ygs@R85#@%_dmjIl<0Y+*ueHJ`%GYUMMHXb*Y z&EJQwJ~Zm{tOtb+xl}(^>J3mfkIO`lFS4^T*w|ObI}D=!jljYxNCWRa1!4@t!+@8l z$D7OTH?*jV!jIQ{800&QbeFGuqtLAnF7Se=dD);R9yrT(nqVkd0jjax zUog#=^9byV`9MXD*;&y{vyZ@z^|hxIxVw0%Ui{{#Z!uvIwrzw>&?ioUO^ z)Y)EcjUyoIx#&$v??j09WfA%$_-40|k|{Z*Uxz}^OG!&n12biE{T)U8z-R$h9fWnM=tHl>Me;}JC$ z_MKYkB#KqEcTG!$kFFbU#GUOaNj;VTIb%jq9{E^Q)N|~J5e}Kuw@&OVIgxyuecJ;0 zKIHaR+q2aRGqLx=42&F9!j~DQfUw1Fc_tsAdk$<)8DkXUegYZV-v0i~xW(U^VZ|*OrW9s3M~)E;A`}nb6Qd^#OW!Q`JC+jPYy}-H7N10sHU4Odb{A;p^o1;`DwD=JwxxaKtMcP7tkQ zi$oiZ^%+$t3ibG)Sy zpr&nqf<%yH&Y6XR%-~{h3ArS<2iBxZ>q?jM3V|iq(D`a3L3Cs?-MODU0>Ht&AL8TRZ*f+q+6t+WQxI| zqJ7%VTi|<$z@9CcHDEyf1CH#?(-+t&$oWaj_!s+;|KM&07!wD!*qtt>PJd<*jmkY# zDf@h?RNlU!Ur;5w-!d?_Jm{J&E9dJ^*#Y0^aoKD(Q^LqZzg*PtuU+||swWz&2`WK8 z>q*g8Y+HJbS!%r$Pn;<6jbH5mfM(2%h5LTs{BkuMJ*)_SkEz)}9DPCp2pP zz?~Y&OUg)y|4A4EtcaAny#Fxc18SK@zkh-bHJHxfP=!Zc&V7k8Gr@~1DU60Dn_sN$ z4n2ZXNqVumBQSK#ce@7oMSsadE15$Z=i$nwMXDWg=KKDyKW}Fkx#=Bv)U-Pf+ojk{ zeFeL9WalV5( zLu?(OQIO79h|`FMhIfFlcbE^NcjvA+Jv-qA2(Ao;-ovxBgB81UiX{zJW6yowd}sy z^`@yviG}<;FT+;vksP!}AkAD@;thtkjJ<$1z-@I|4#&nyOs&6vy!hCq4U>J!mC@!SgTkml$ixe+x*Sn=K z%`K@8PT&E8g(ViWLOWR=v#i4=P$~l_^Ur&Q{E=adc6@z-YV|*O43&pkZ$MV{jtNBc zd<@VXa??xw0d7nAYtZPY9m-!y&0@ka>7e8cpDxamV)lP&THq>(nC2#`7_v8_5s1O6 zLSt5+=}sEFU6o`5O5|PFp(8LJ-$zD9{?ycM$KY^$s`m--_=fKInU1JTjtGkxKhJw@ zvAR@eZ6#~<>B25wRLna%SGF`KrC>RnDJAYl)@NB2@?*4;K|ob?PzuC!)IK^sS=q1r zbZMxxe8BBFo>bjk2V`f5K>fJjb62qo``&pSm}21KvuN=G5MjI2qM-bKHd6#THyIEX zo6fCz0(I86JUv-T;y$YFOSs-MPJ*Jr_+LBuz)R=M4t@!8>xE*z0ri8s-|?mVUc|Q}b+#FBD;%vQKS-4|~ zCoQmlDT+K(W}8rTabk9227^Tp4XRGbxR_2T4Xxm1O&C-QBS8;|4haX$XW0CeLi(m# zwzGC~R=gCEP8srr5K~i-tY~n+>X}hsyUGG}$^r@k%3dm><`xrU2?|9)D>h3u7D4*w zKZ>6nfo{!ZmYkjnU;@hBu~3yGOpV*NVC&YkK8*Q3S+Val0w)GT8`_WYxtL9p%|u5M z!!6~@-F~9Pu>MC9Pf&O=cHaPw6m8oD)Uz(DKfiP}YBi1ss}`$|CQF3GmlaQPV?qHS zF!$4PI%>x2c5(!euQKIIid&fEVkHFyp^tF6P9X9{GQ$Bi-R%gK)C_o;kT3e%E2l+OL~)E3ar4vuwi~c?0T;zi^QLy0JvWc)l-}dq6op?=RNQz`VTGsI^u( zWF;~^z>gQXjRkC$3G1a{o(DQyw^c4=0E-g9pQI*la;!aGqnX`yI)yj2?o7$$>4*JV z!!edpa**?|F9(kFkVxT*N;+zWm`za;>{U`DDj{pi!ynQjIRSxOwi`!$lQ<&5>rLRv z4}OiFa_`#30kR7m6JLL8+9M%Rffnmw?BMkIrhXm zDOdH#;Ay&b`$fVByN0vbaSo!kvs93pocevB$4C)g_XVj58}c9LkE@sf$W{5J+Z*^* z^4|{X!e95v8iZ?aI;k#L8{m;fefs!`AU}EnlDAwt`Y(taNM_bbQ+9eQlSZ2_zw1cN zo!qw4Yua;a9|h#Q+LzXv0fB?)9Vl#cSERrpMgNOVlw6~{H zAFGp&lYM-*Xt_w<**2A*@GlSmEW6UybEU@%1r*bajqSu1Qx+Jq>ih!dmYgX4z};PX z-Ehr3)c;HX3N{#1_KrJm_%&OYA)PT2bmX!|A$E+W3{K+v$$idLaU|t{`4Bu8^5iwY z0C=GRfimjTTdgtWWg=>7;DAYdXb9Ku=rP<@X-R)z2|zEvv9PV%V@uNqQ$Xw^)zh!L z#`u`wEk@HJ|E&jUjA4v_R<{BvDxG{uq{d0K?ZINt*TbEmvc54ITSNG7sc6@}q!5CD zW=u-1MijVii({=gOcib@#1pEuTM7S+ODInN#6(aO`V|-5nF48hc@jUMY9^aFVuDs; z0t(w9??)d|4xaN;@#o0B)nz<~(!ArZ)itth7Y^9IJJmu;U$(hhl7B+uDwBqNk-1rp z(W`Bgiga+rBqX~=B5dNC8D9Y42=`=F;1gH5Wrolu(85fc)q;&3o<)|h-Da;{Jj(0N zG$qL~ArCpK`R+mY6t~EW|LOL2=y%2mTIrU3+QGc|+)fIQFvDPTK+@z8^5@v*l-URk zvK#sS+NeVvhhL-<`pS>>7BhUnQ2bT9N;)KX^YsB2e{7qGad*eSrDN-|liEs;1x_k! z>nkVrxm<+33P6F%*UM~Wjzk1V4YapR@+?jZl@>n!+Vcnp{mG2<>b&qcvo&M4UH zwNAFu{uFa;0stJmsQojzIGkIS486RzV65~oYIk4eCUV%rAhUI zUZ2U&X%$vuUN0*PZW|=bLHZKLmMUs6OIP}JCixV~CFc+T8qf9QmoHsB9r6M?9fUVp zwLyFULA|~ASH;*5yt>z6x6r~}OlKsW6~*c-LGa@agjny5t(MR0}~!Cv2@CTXliuATY<^B4b_lStHm^9CYrc6?IP>#G2eT2O0-n)hFKPc3^d>btEQ8x_3pk3Q z871PRbvZ;rLLhF>w%9HE{seJ2`giwiLpu^oelxDi6R;P@t^)FY!NLQ^otVAc+T?Oh zwnv+s{`_{jb9i}IYO#Imu}XxLRnuEzdY_qZ+|vd!&0fZrA+F68zYD=ge-GrU-K5c| zpQZScSQ2k#;WNKD4(0Ew%_Gj~U&I6lm3}zn-8VU~*ho@rb8XVOVB$`>`+> zDF@T$6q2yHfbR>4buis!A`SzgS7>&9Jijeovs1tC+4Vfab?g@ezyKgH)`?zI9sxr? zzsyr#^mR6lugjnC=1~K@5%`*X#o;*x#CJKTXIrM?L)Ij$UmjK&3>dE0`v%r0n2*dT z?XM071Ox~n+Fd1|%S6~6Kk{O&<|=$LEide`#5N9Hm;ifgpYN4X;d~tH#H-aG2|4Q3 zC!MM@%0tyWr5}|~!^@k8gEcnd6L>)FDlzMwnHpYzEFRzW2U||U$?1X}VIGri!R|qO zxO?}*kwxam+x2TGDe88k0PS1N&ddw7+USj=$A?AE`M>71*Ci`4~KhaEEGZo(t7H;e$Iziz{&5wsg8gw@mAV!xh16#*(rb1a?XNuHuV*Hn|h0; zlqc(W{mTw#Ley}BRBihz%I#LVxA^9Kk>HoN-E2)uHPqD5YHjK7{g9V*?#u+d#({l7 z*mlcuOMAdW6t*45PZxT$5X7Sq|GHwZjd1R|gZ-XfBv{I+$3E~?DuPRA>suoY!*&E1 zz8M!m7o#BrbK|K81ce{F;BepfjOg1|tjw&pwKxSPy<5*uSP|`VYQUd6-bd*XBG|QZ z04{9-5GSS^CvD7fWTF%+vHc+nvO?(}D7xrw+Mgf72e$_prUjy7tM#0XlOYy``RVh2 z|JKqND?vjjJnfyG=!&s^U!K|&hd_Z69UQ;~4TyhrUa{A-{-;aJv;S*{_JUxN?o^2U4QoPYI;c= zxsEsLvDLPUu0+2bQ?S+3d*NtGcI7v;gUunrxe|PegX-c~!2t_rJpy?9Oc5YWwx5c+}3TANcD z1W(WSanbqc7&@VKB7){t1q11?>R~bvI1}G?<_)0vjyX|vRBm3qXmdXoyII{qy$cTr z{8!8)dkPQmHmY7KC@?vjVR2RK2(C5=-s;)eVUSFLgn}?eOLHrULq+u_mHig6X`0_X z{>e}KC6R&xT@R9eAs_oq%)F~0MCQ@wv@zcGaJ+U~$=NwkPFyCM&cjqyEDtwZ6<^S@)tcJvQ;LDZv;*5aZ7rwklqv<>k6Rt*#`{(tyA8f! zB{r8-a8ku;wSC@9%}M*99^-NVpxRyK`YtXMlZe$f;WegrKh@RTG??Jj_3N zb*${cgjfUWKM}p0M=e?6FAp-%JoS#wZl2XphU!38(o9K4m7G@)lojgkfmj|cn zV~9gE+=#W4{M~r#&s&C)FJ%}ARzNiL5nQ$-7%L-lbp=vlHK`nCdwuM+Vt1)+OXX2< zEEs!W0D_mbTmO(B;%U0>MA@U-;-3T#^)lq6?R+uDAs@F35&Pi5w&s_3qc1>i{*sOy zN)-x2qp!mr#mdrczn_qPB*%s$)`yn?K^7(O-s+V}__+!tfazD)wUL=hZ(}Yl7{K>3 zzTON_F@<8gnLShPH8m8NHfs@-Z2$n!M9Nfd{Dk;jRw)Dk6p=hHj7K?D4qyb_$YSaeH zEMH;!S``;=I8$1_yPn|`f?VpJPF{fjs@I|z!uJWzGxp}3r*QL(m>2!AVohkhSN%sf z#W?W9`e(}RaH2;2g&p3Ghi>85fh8J;q#I!ku!tT74v?o`pLktYwfbIiWNK7+L8y0g|6X)P2Ecsm zkglIUGXA(Uc z&7EN0m%UWNU$M?D&MPZ|2$-c6LA=|71_rpF>ajzKp`XDT_K~A`@iVNm*Vs?Ztj`w!uc=JEd zC5!b?3%yzkyBjwAtU&UfH{Fbj+IE&5+ULgg>cB@_WvO&$A0>z%Pa1$C4cZp;i4r+b*Bx5u~nvcZl?t4B6Gr^EdSY6)kc*OaP<&{vmTACuN~S7xK^ zb#3sjHH7n)s;xaG_>FE}Dh>-N*zM>l(9+5*{M!fNFI+=lmln4!2i;fwb(VFk=TbHy zgm5GCA7! zl;D}F;ZVLL(ap%soPM)gjtvkfs-T$#f(V$1;+PYx)v$NiQF6yBE+w%b)Er7Yk9&%Q--3^SN>tCmQBCay47=><| z4V9}2=b-`anlldofiTC^;Q1w*+_#u(75FhdTP`BT<(2gn8CD}N#yTv|`;)R|q?QHQ^ZYG#l%DXh(x zXDe#A!@&H$nMtLjZOOoZZg+h{S7*!FZ9q&HK9FpvJy?dkV#(Xu@Jp8X&4hPu^+-q^ zAGuxap>w;GM+`H7RuilKt?XUSgK<*`@SlIt2PV<3h{~o~qi%=gs)`YG$DNC5;gw>a zHo9G9UER;$a%`nK`}4W1pCMlWg1$Ru0kZQx89BE%6BRrl^6#tki|br~#D^~*2>bdZ z4}V1($$dJ5DHyNa17UwDexpNUkazI?=NoPcC9SHL4hlVl^%tdPWq_^zk^J;aQ3X>( z&p$0C8EE)h3Nt11_535e1fucm)5b0tfAHbV6wDRMjK2`7wSJpxd%;RoSo;d6?@5w^lC;fU1C@r z5kyJL%D|mwz!gTR$}nBEtg4_qG|9LN_ttiXym--}UWLC9A`lCZ+qq>;ff&i%-JW;y z!AX3oN^nzo9cRbf(0R8PApSJl?$BA^Oo_JC*Dey-s7)|Bq>$(Bv~WI;2_Z39BH2eo zP?5XRnZ~J7*@s3@0{4VKtEFCVsj%0@%`rwio%dh|$_1MXO{KVb7PS(idVNSl-03FK%i3{ho-6 zl{Hp{)7PT`EZOI4c6yM@?gEaC?mJCBCu<_(&h(4DVa2;Krq;Kk0E&Ncw}5jOzHX+R zTRdJYmyXS(tDGG8p7U^7Abf7&H7H+J<|+&U6rPSw273P-l&+oiFTz7x-rWEDPz3z5 zX6?$0T4IZJx$Jo%q}}@Qd$dDt;BD2wJe7{Z=J@)Q7M&Xx@U#Co2Yy-5qI0@Y_@18W zrwOHw=>AN+4j|;H&?D96i|NhhxJimIy<|AVPaR3t6O6qA$W#fvTFu^GZp-W{Lk<}0 z%bP%GTGq1Q|Cyn{fT##JOl>ZuP6l#%*dfT237OD1R_M+G8uHTEPid}`><*-peJB(F zMJWUXc{8n+D4N!S>vm%qL)Yh9Hx$SZaG0$aPr3%_2_xcvMo&#B&EOjvf>C&3*VO}IiT1M=?R!8kHd5Io z%w0Pc;x*_c$nX%&_)tmP@tCIAO7qELK3S-@OK~UY8#D#$W}ImR1Hi;a*N6G*5FUrk z%aX*=#8$3`^XI63jo#v1{csVX~eVi0uwYx2}Y)lek2PP z?|1jMcpG>C4-ij_+J65UL8K=IL4&n%m)M_lEHy#JZ=QNWzROQ>LkjtgKu0`Masdni z(03-5L}Q!!b7cSNslYD3s26$d_MIN` z0uBz95_Q_iQKl5%SCi*w50h`B6s>IR98~W2QKy>}6i;_kjhEBs^0lKP{Dz0V{H>4v zlb1}p%d+}&n!dc^64Y4A~x#tZ@FPZI{YS!}z%Z;Lcn%T~*53zyT5_6SaY{{|HH|5GfG zlvJEiFQv~#krnmi8{x7@8ht2NDpI>Ax;LzBEvy?}_E;`pP&4pWGO%4KqGm2}BS+iF z$EXHdNugFRzJC~njk8j(uBMO+T+bkkW!<_k7Uy9`Jj-3~%>janShun{OvIlcR@;XhJ&+-Cw~A?~ zQRs;0xt0g1wL<~KX*tP&A zSBv47)@Of%fbiW$!1b1CZ2t3Jp@e)B&Ifs|@s+b~HMYcPCZSi&g$1t7sTZBuOo{0LW1^U9Z(XRM|+tZ~VyHt269D6(m6t~2Z? z@8d1dS+Z?rtM+|mw&kc^k~*W-@@&~Ux;JzaA3p5g+t+(74pG`f6p2DM`ntR&iva-G z-&NLk-%>C=!bhXdHYa;ozkx`qQ|OY=7;WSvo`$?P%bOEqpHqq(IV#DCo0;7p2RCTa zd3XCO8(J`!J4y1CABBHeR{ol-3mJ9 zqEd!s^SQDB52b6nhSr!aR2N1?v;#)m#50r6B+g zt0L^=3=poqIQuY9$?#mPaX8nsZ-FU$lj0N8P7k=I6`#1*G*Td?OcTsjFA2PUr>)ND z>h*kGa@fvO?^x7puB+t#tek4YvluI|D#Fpde6oN*Nph3aJY&I25-2ll`Ub~y2s{@& z)Xvf!0MbP?{}BEbP_8OPG3XoAxYsTZ%P#Kbv+>R)YNI>bQ}mHn*{P^d{gnW{dPuJ4 z+%s3`JHqRwmQJVvscqc}RhMaXfY|=ua><2WD!vAK$Etm8^*x=!Ss$Gh;pthm4?i#s z`a_1Fg@22=+6Wy@ysvXhI=lh~d!6cizb_)-p9Cxb{%fi1?SIrGAR<1bA$<>KGEW4% zQ^%xh)9OX?i1XdiLx1p8F8&MVcgZoIIjuwyBCfT4zhmDFES=LzCI{7s?IDjZVmFL5 zuTO?+dwD5r?Ug#XGn4*fjl704ME#VXr{+u_@no-e7lW3weuQT5fGg`sP?zy$!fvxu zXr`}*x>)-H!=Nvie7($U0)I;O_t)3cQ|#NroUeF^R~JJ)jJ7?B0WN+yE@*TVz2lEp zO`Pk8f1WmR77{)!0}`73_WO&GdUr#@qf3hWA8qnQi672CP8!`kIWYk=yaHzPYJbBA zbq&XVi|ZN{au6U;e21&9 zPaIG$E7qI3dS=bj4uhQxY>Wg3@z6`&wt;EdcCyO~j!&f9n$^pMU?PAaYK(4FaI|)k zRkJ&4W9y%bgA1z@OsO`N4B-4Tvfl(YZCph>VwfuzTU#_^q?e-_YlOAcSNO5Px6rMa0pG>QP@zzuzR@+G z(yK?VB9E~?j1M{C#?^A=eRI@2=IKmTtj(ysc)!+URNAV3Z;{`Y+VCPgm?TZbTtEO) ze|UI128o@lE50?^FfVb@dPmLG9Zb*{#a70(M68qWJUdLCBr>lC>CghYeDED#TLMRu zo}CR)^Q$&yS(%T5TqGd0IgN2`BH~Apbt(>R7)t693%C2->XWE`C}fe&voU} zLi(5_CxdkX27w2>}0&E-*ij=Qj!|0V>; za$qf5n$wx8O2`>oirxQwWZOW`$?28%n3&M^^;j{ssBDi-{6T?E$(6robvvpcmGh;N z%rwme%PVmsj4tk!Cgtl^&8%D6mkq@ETq*4jwr(-HajkpHd?5Z9 zU&GGcx?}qE3uA*7J@NX37GHIar|ig@I4L?)Ng3~YXA#y{|NDb00o%~A3Vnh(*|9D= z3hX7VQ_9`0d_q)JzH}?qT9(Z(Clf^?^VWB zc^K2h)>*bxIUstlFY^!rucwE*x4j1HM~{_RIDb3R(FUaFlULWy)+1-Q_+eLk)cmFd zniTCQiEQv*<69T)d$Mk8!dRWk_-sc<#20cWXZhOd^2ILt3@l9qg1NV0UF@C( z-?5xsz6eJx7FnyuyUNsoniGbHx!ZPxynj#a^CziO4s7tH@RTE`+b=^_swgNcoo!jb znkDS;3v-&btEpUY7|pF^w2EEYqAyT+zbI!#rL_EnZ)h@IkiZr8MSj97Ix{RT8=M>A zs&5~}TWF=Q(Wy%^CrZmZ4;O#7G$FZx+DblfQksq4 zT_^D?(ghR%a_hVxdL!jT?&}ui^>Dj zLtgyi2_>p9G!dif?b+u>?F*Bw>D?(i>n9gfmfWV+u9XY~iGP;ctHx9Okny_o4mY~Y zS#l)UR+JmbLEo&;V)d)Cy|0>xZ^d_o_PJ@P9Zy%(#WOx1UM=jn-Q4HY{o7=IyR9&M)#W)>EGCLui}qq<-Kz zJ?y(Q_t*>i+@auu`!uoED9iI($^vyaK3jaABd@mPjJF*zd8Uj2YbOc78Hzf;onzWo z9T;loo#c>w?gm~{3q)snEC`ppxaFodXT5WlzdyALGhzoL&Bxi|C$>F?ACH zU1;O|7B=fUXfkOxa1NaKePN@`I$}AlZ z=JjD>kM~L4y3tN7jyVWw!(x5@xhh`@>|qDyb1+ammN~j@r{+a1yG{0PoOWP5`JyyN9ymb)=LRuxVKNZwfGoi=XmL>^kTZ!8qK?>vvV zA7vSq{EmxOFUrrAV8!NK<LW>sS0%f!SW8Qa(PEwQ+|VyQo$_$$wIffEqBQ|UaaB#&uR_D!;&>qI>ETtdwZ2p| z@Z@8sgTvU|rR1K(v3i1u92A;@rm|;#n%ueFTH9zS)i`To684TFmVBC5(imyqfZzD_ zGc+Kk0+CPLz?s3;N|=AdZx*U|;id8%44}ka5Q&fYjg!)@ui5XU9BmP<11C74+H~vc zBpn=;E5TPe_MP-(xbzXhF={!HWfIyqDUtEQajkXbd9|c>Rx8k4mq@?)xM zL5WqfOryx$Xm=khY2^@>y6$|@YhA8d`t@=m12W=W`?P%w9c|*g>J;Whz$dv3aot3!<)m^M0|Is~K0YktebGY} zWoq6!-03TyOxUEt-g>oUh_;WSqnF*{*&BdwdM+>KVp zE6PcujkqlEJJok78JS2|B_r0H+0`W(z~%9E^U0ox7iYb7C5+3*^SH720cZC6x*6q; zicF(2Q@QLnLbO3JV1zx#(vmvg-Os;KrJqrvDW9_M)qaldM;EtQB*i%&coD8ImGyRI zb5>qLlOvS1qz-uljiN5_7K8N~pLylwqJ9hv*-F{Cgp#Er01_&D_Qc(=?VpF-x1CLnYQp@2iRouSU)&!0gN_E5S8fTE&Y5_Ss9 z1Ah~wq^1?c7`TnW{Z6xo#pK>|{<}65ImrS4uTK#b^)VXC%nBNu#BgS{@0EAmWpw=jK9Gi=-7bwVAvmu*ck(oxt#80n0zLuI;AcVp6Yy8X zv9EF|ie8LFWx`-xK=W)olleD0a46rx(>vDg{?QT~J{v0m11e!n8V09h9OnV?UX{eo zXvqw%xy;Y%HjCWGXlmOomrW@$! z^M{h6XIn2HE%5J5h}JE;gvd-Sb#8o{u*K&jpO`b!ingp1)hfb9p?$aG_u@X@Zj@o= zoXBibxv=mb$K9|exAJov&Q6a%yA7D`46cccBL}FsMZ~_=HNFJOn<_H0|AduLScEz| zW^vsKzqGXi1g0lnY63ALyu6gdaq$MiPg~4aPxD|(B@Gvi10%61?4pEIhr7P&$vegp zxLlG1vD8Gkycqz`YuiOt_Bk@OttLUy7tTn$hS)3ng%MTQh*(KLv?#IlIIe!V!PdO@ zc99MY61AAeW9RkKhgZiw@#E*<$ZS00g-c4m`WIS3TU2Cs*3ht%eg`}jf=*Dayt&kdF zRYehl-cW10QwOX1O^>s4$!gC`&Hu0XcftJ=*gut5O&VkkBz`SypYQr(8F}-MNL89=tva z%ON5}aV=A?3uTYgX<$5?*E_yaWN4^p-=4Y@FeI(2=|y?)%6y0Js_8(lT%yojd3b8NQooZWJ=Dy%P?s*GVy@I{oJ;>yX9La@wSK!-KH zU!$pfTz#9ZD-DaB(o}?W=&9}cOG}ms>HxRHMbx9}IP{*k_$gy)^UH+_FIqxGh$Bd4~O!@co8*NFswDo)N zh|#t}hu2GFzuD$;ijPC%$cJgu{Ss%Qz|~9{XaTRS>65voq;sDPSmzY2P89UJ=XN&r zZhp<5MC13`xa`T|6%(@38|Y4=))|%;PHm$rnuM=xa#nub8Y(9kdx zlp(y}&x?nDB*%-5YP-qM$?NNb_vacsFVMMQjt-j0cY$JPiu``98*{VQ2-SKN8hEYMnal-66WyLO}6mC^a!EW8MQOEW)q!v)+&E)kU>EY~ZfmX)ABxDzJf4`3_ zbkpl-<0VHEKIc(F3PiGa_U~Cy%uty`tc7PUX`uznizS{`e><{B=fK z=vvF&QM;DIML%PdB&RhO^272*E|nt<615rmb#R`+K^BT*=z5NNKc?LvZ?W$DE$Z{7nMUe4&q7+*n8D?jPlFQBsjqr$0VtW|z zHtDc$6gIG?DKI_LeC$;Z%ST1Dt`y3;HuX#h)y+7lsZ)Gy#OLAh{Pt`T*xfPpH4ZH6 z@TMH*&!VX6sfzA;`1dL&XI9l%rqNo2@NlTkumqG>$;%m%1nQJV?22naI~o_N2N+4cSv#EVA)rJ6(3CXCpL<>#$?r2&K7M{`5>ZYPl><;JLjQ zKe?`9s94DS{V6l&dH1fi@cKIzQ@4;7dugLi!@y4Ga3N-ZChifXxr1rO#irPDi0y`U z^V`wJ>|=0KTA4#iOk(dV?9QV5vBnQdz_*9#T;{81Nmd-cCXo?o4-U4&lk_C-^}He4 zSZt8{XBVoY)yCm4elqEvZkutq9ycwK2kZL>Rk#oqO^1Tu^zvYuUdFK(=0-+QSbnQI zQI~YH^KHvsfj=93y}0%ye17(xsWtI zWZTH&DNtQtH}C5~WbIj0Iu1{0XGCcdH7A?A;ak44;zGIQL9>VW!`5qMJij#D-$!R| zMfW@C{^3GV@;U1_UtZ_r0ZVnN%U)m_4mxX-@RFkwEAoo6%kw^U(b7&(&`i2Im<||U zYV4izg8}rM&Te$iHr0N+>uEZ1VSM8}$_(Sf8U0bt?L`{e@;kOAfAURxokN-Ti}v;2 zP&2ic;QjocQsi#e*h?iSBW>Bvs@XGUtBBIVRHOJj+Kv0qS}Qc_^ldJt5SsPJWCP>j z-VDw?30U0VvcQsK7de$VztiX{*F+s?_p&m>K_b7ctzbV$3rKv%-+9uQT0#m_22&&% z;fT0&YmHE(S22LauA_Y~)0V(K7ZG}{mx1+*38I)~fI&wN1r9~RZ)|o}w&sYagB4v| z56+{MsZwPAw7jZP?gMW5GXh4|9Ep*Xrl`}sA2jOnkiOmx`s4=j zYEIk!8Rq41>I;!d@lz4f{xud!z&l~Y&?#x60WI5rb@)C%*KFpn*0UCCP;{q}M|-;c z>d#eDZhzM=F;PvyIUrOeggUblj_>B>SDy5)4x4eNvC~lc#n)ta&)%+HR@N&yin*-R zr|i_{t8c{umDyYfMF9|r9qJD{W}`y>jTdq0pYfZfw^jk?HvMAvht9_7+WpV!@pZ04 zew_-Xh1v3%O&~XaqP}hML^QGa5amw4m-Saf-IL{r$cR3MgL#Q3G3;{xa^<;5`Lg|i z1*KXzF3^R3bDE5K#^v&8YP*CN1EDb^MgA>A4{~bCB&@u?dxrIHorM?H458PT6zt>K ze9=q6q#ACR>D}JlI2nX+=~QcepN=!oxae1mjAALX5rv`?;FLm=E$SdB+N9s@i{@z) z&Ax_@T`o7mJ5}OWP+Hs*rY>u{WNb9G_5g)3F`7(H-@RLa)^Ty@_Lf6sFELpdO$N8; z{Lj2s>a`iW_Oa43GDrvryShKCh1%U}+WB0p6%V!t`zfXAb~CqQdQNhSu$=Afk-}!8 z*+lgewNg4X1l=zsh>_n9u4L`Ida_U6B7{trsi?lcsvrUQ6qVnWGvkM}s5{lbam;HM z+OR3eKaMj!0ym6b8*C08Y^7r$kQ#q9<~4x>#GDX0cqj~A`4Qd&)wBX>3}y#_>r?1WkKCi-^uFy3BswiLd@1%IlW)4KbWlPI1d_#5X6{{wD$muSQ?RX3P}& zx&ujJ-(&^%HPgq;DFRLMkDnq7+sl^{tQsQ3lQEY-sL11A0xEqRvqn|BsbCs$EMRaU zq4Qb&v6R1yYA?1AenI_|%Z=WghW-l!5dW3>4-6pgUm#Ypo?XCy&$E980YthX2>yGX zUGMM5Ewbk)X2&Hl6bp)~dZM|Xu$_xA|KctD^ZfqtN5B6s`}INL39d`R{{<27e@yEC zZ_FM~ng0b|h+!_#5u$lkBmH+-jQ$U@{J-YKF#KNn|3oo-k(^rB#>wksJN_-{2C||Ang<_@5Yx|LP1-0-+kb z(>Z_^|A}5v;zh>iihf}MsZ;+%!~^axDt z!dJz+D*hTZds2g5l2}RRCrri{y!;dNVr0lhy0O(8+QizDRz&Ui1euuQ4@XAac zuQ6(HxhWxC6xLi+L_Ks>Y`bu99UnrTIO7Yqgk3+sY~v>EOdjI)BWI;;QUcWAH& zP$MdG*v`hwZ&-6~n)p-}=H!UL;<0$(=wRf2Tw^m7#RUXTMaiYSzi!7&`8((whtAkW z^)wqv2l;_PoPM1dfH6{_YCeYyvDq-(hI~=bMj-hI9V15?PKvE6e4eVT;>tE&emir>flyln1 zijP$U%=nHgrj%>OiHw`nbn{vt1l#aNZ3Y0iv1c~xWmi(g#~Ph-u@wDELHclxSE}ce ztTeT?%nmAZ+)V3?IcJhHa06rx~iics0wK8o`D$=B3W_jS?GG;4dI)v%9ifAcX^7EQdyDvtUAiw2XXQ z?xq;u!M|E4_v!aNJq&_2qHv))1|NeFM>Mfcfe}I-0~8>oBLVU0_18hj0;&h&@$<&3 z6hIpo(W0nQ`uKdM49hp1YY6knuaK3}fp{`Kq8gWNG~{892oDC(}Z$gt5H z)in=P%x2OL$5JwE!IKg-${}&{uPEWM9zLucux#NC`tq5>L0$|z8@~{tn#V>&$q2jwWEgho;ng!<21YDofis6ctvYDF_Trqu0lOO=Xx8inEcV{+``m+<`@>n0N+e!dPMu}tmDQPCIzN9#)|?c}T+`!gjYATA?7F%dMnZ-bKrhGt{O zS|@R9`LJ{ZiQhfg*w`)2P0o1m9jK*hBPT*aD`Q+xsaqZls|+bScVXDgb#{U;m_l6oF zqCNWg8zBu$8G@zs;K>w5n9LQ6kpu#nL>z%u6nJX)!~hB4 zhW3~CP84@(t|QUKc==2J8AO>9VS!0@EUM3K_prB{!{%M(*n6B;l7up{v}^bo(fng^ zCcrN-NX$Y_GrH{$HxCJ78Tlb+ms-yB6hgVxw`1W~Q(M6ujb~J~%pC*1CsWFWaqoD|;bsO(;^JqHn zTqpv8s0=Ulu~S|*Ax>!6ET*fCgzp-Ie6otCaYaA>y)hsg=S>Y#4Ez@1p!?mX!7W={ zQWpdzBasd7apt4dhMJ2UHb(X%_`#uJ1rj~IYDuv8{&0VA-_Y&&!9v-MH}J7{ucwaC zyc1AP;(oKr6r?-SIO{S_%q7{92Nk<4E!zyL@@e<`3r{%HP!{-pjIGJD;%#<&bMT=j zhqU`kg}as(=eByyMU5D%9pe6he13V1tRNtlw)PxsOucP~3^-~AwP>#EN$ z|M+2xBU{49CKgmk8Vf%?SpiCFGT`b%YJXZx&)wy*N0(GMjMTuZqqnpKE^QGMskm}4 z4aMKCLzseUNjN^K98Mp~z00CIS#iLGJJe2nenb>QC?rJtcDokA_=0~!&TcPHSLU)b|6F)18_A=7nt<#i&wwR_;Zm{*=Jtrv)|S4733fa<(j%pMF#LL z5d`Y=#FY=)>Pk>Rje;d&wxlovy*08jiyFj&UY_RHl@EF{jlpk|F5UBl6%Pvc%zAie zWd>q+Rb@TYp#demSjORly5(PAhF=8oD@&6nMWi@R+h|>X?L3UGBSRR542b67u-#=I z@2aZAXT~K@f&<{vv&)MMsJ8+ZB%Wp78CRcG3JZ!)PRt}Ew2-Y-V55g;tOJFJ_=VkU zW^OcD&wYl7HE%PRx{?<~`KO(+>64wWmY#@TYO6iK|CqM0NqKyEJn8mt_@yFih;5#X z{m#WnE2?Jp6E26&Nf)(X-gNG`8^KFZkvj9)tfnUv@yT>Wa%cQwEO|^RPi5ajixa%CMAzuxU-2n7nTRdhjY5Nf5>APk?Rm5GViuk#yojG)e*lisdg{|AXI9 z-!?#0SQXz$-xA2dNdq6Q_3G7rhS-N_L`0t!IMz@weMMpQ=w@TMYgG74nND&q)7S?G z<~M$4Pq>q>vxu`AHI2A16bxTN0a?`#Rx%L*2mh4trIyfLWW$i(l8eBRH6--@6|}D$ z5pYJ}zpg&+&p9iKOCum21;va=PJdw3^YKAK2@B(XLqf-}EN_@=x6lTn*JDgC`qf@b zV2G~gT?a`@-zJ-3nLD=f>A@PF*H~7Ax=d&rx^E)lg@qD;hmhPb$ z9>VJln=Wp9#R-oin(l2By>DyvDLi#KeX^2*>-Ld3kMx7=qav4Qtn>8cefEck#4Z+w zp2h|qj?XWtSB};qe>ew;kWlzc)4k8;SD*@0H=zmr#Ku3?akC3_rQn{$<=+MM3uh;>zZQ4lvy*+=Z%)P-7622`0?2n7R>nOqxJuZ zdMSoz7V7Pv$N03NGukyXk%gJATv6~#D*HFnk$=(dUM>#jy9?=YHx*GWl2^N_d!qx( zLctm*;{h%u9$sCA;e0OR5$C?`b9Mjal0MPfamsAzugyyB6d|a}V2LQCq%XPBOis@^ z>=QyH-VQsj$emhYk`zQiHm_bmHxou6YTtzXziOlHY^qQ?5hTYc8A|0t(s&pNw~(#3k-JWoWVt{PVM z=cA(>v9|&rb96mE3ZRwmcl%_|wbt!ld#dA!Kv&RVE$Vc0YB5YKp}|bg5IR!B82r9* z?kpHobOd4^sD|1;{CbzD+xX$lTOA#4wHp3)inJ=>k|s#%JzZ^SPh5k?K-&LyFbL;N z1}*08c^m?jdC8=o+N08x(epZy*QxgR;4jeFj}mTS zU^s>2c4n|URKS3X@Our2k2FV=6QxhuJczAS8L!xyKg}q#N0~s$ezIpBd)(=JoHv~~ zh(|?8X`RNpp|VoS&wYdR>UwTZ8BT#dBd8=a@Oz-w`xGvf4i>!qyb@Tg-(iD4smyNJ}@LkuyU zV!kY0Pd9FcJi$2%{L~D|w{AA(On&x?xv2cG4h~J1tXHBN3p}2ha1P?k)Zpw}?P|z1 z9#~R*IB<8alD8r1@Uh-1@2M6%yG_PUxmmq^;VMgd=c;BQDYw3aWQ8YkbR-f%?X>lq z7}pqiz-PpcX;?j>%`!F}L}cUgoqcMSfzlw3F9y(P^&#PzA}IL_0z9;G!C?24ORS(Z%~vo}74{ zHNZzF6dSd{JNoXYCD_9C0@Q&s?M+m*4wKKckSRQvYHa4y?NkE|1UdIco%jAHbs98N z(-sFC-Ne=HBT4ku6-K_Hx5X)H#=*hY_<>_;wf$9# zei8iIsfQ=Ak9V~}mOaERYc?gSle2eVy%(OoEz|L6ImIv!@6%33c4K;)M>?ue&I{1F zotYSmPa3|!&G&R5W;)Mv-J6kSKUr+*;-o3d{mWd4;8-no3TK_2^SAAOw7pgL7S2@^ z6nZ5)7e%G}Kh32sZsJi8><@PIZ$@M1%s#H5sW|%G7FGB(xJXg42hIba8)JPny06!|veiEkg>%V|kp41U2*Ljz(cJBJ6P^z=m*L{CGXyo*;6wN1mKu z#Q)%Mx?j+DR>9&mr#`#CvW>~DNU7B2l-^it7Crcl_Y+Ho*VR$Uu65yDM2JoiA*3wz z&Mxt-V6qjzk*RjQqkRWj3})+mt)EMvj+U(A#*X)imTagBQ*tlJHhClb1YQRqp2pp9oN(76v(tLrb1E==I9Yo&e(bagNH3Jln6qkl9K5b&W= z1r=dxy}1cCbRS)iN!ifS#D^Xig^`{}u6BCv_V?3m{qk8{@caA7tXnCTtTXim<>iYd zYsVvnL*zvsiMnevNO~?qzT3LqY1qu?db$rNC1w>;)hL^g&mNg-*WxY^N4s_rIE`9$ zL__bg8K~{zDR3y7C4K&JX7pA9qvw9+c?1DS>ye`oR*C97s2R|xLTv!(PCW3pTI)rZ&tzvPEDHu)ZxZ_&0hV#v2R2Xg{29_D^Q61+;l|yYz$g#U{caxrDB{heN(74w&Ic4y)Xm1u6B6PS(s7FKhlo2qSZ4CDh-E=32nS-VH4>GJ4Y3V}^+?I=EjgmPSW7dn5&EL7Hv; zK}8`tCL!+cPg#xc_E5Q_j_aboR@CUgWVpCO-(dueh^khE{d)gemDn5JT;``-Ov%H= z>YTcoIrG;LAt55r8iLZAHv>YG86D9b= z;XbPsy%K>Fqa4NZ> z(!wgD^-0-aL`}o)Ym8Gl1p?nQqhf(4Tw!?dQ1@8HvD{|c^W9_22X3baXQNUvSEta* z{OGBaGM>tidjfwv3fpteaa5cxilIhp8j|^LmF80H-~6(;waBMuAlZwwxbn>aTsc*OrgcM8SeZ)Dc4-Yzfks5lo-v~Z5Q%1jQ zU+8b|`k31ma=Kh(aQIMp8a}2GRir-z_s*_{mUy)ggRDY$PbVc0YGML~=LqXexlLF7 zY4-kwW_?PA>7Pb(?_w+)5+Pl#o4Yo_C$25iS#s-h13!|xUirtxHgjHoET&9m^XCbb z0?Zn6Z=Pr8KP$m5CqoZ&)BGEE3_`AS-~|}rXw}@G9$~&E0*Y`JqL`?*nH)a5u?2G# zNJZ}!Zl>4jm41laywtAI1P4>U+}5VH@40Jb{mSIYC)J9gKgD0wc&f6O9uE;qk@)VT zo1stTQmJyT~NRgal%sjRf3G&w9V6nx%0#n)44DL6UFvp7Y@Y7n3ocz0-W#@}q zZeCA~)AYnCgS-#QjKpY>u-ja0OVsuz6r2q6TC4H8uQir?`Jz8Zccn*yhc;>`rrXnU zB=A(K>g$O|=%~NX_HZvSmu#}>e>ozusNG1Q!l}37k5^3_jGuoD+O?QfMocJ;|3uRs zToVdkpG1lLY1r#6cqrE)Q;w=h7d%U*?u!VqE-pl=%BJT^+3xnv%eBBuL;73aViYN+ zIsMTf(k9w-tMhJ~pyQE^?w#cBN^qO$LzXG4!n?`G$>?C2zFOwzqqIJfd=(m>CpP+w zQw_L1(h?Y}l|J>>tkY8gb7R$Y1?;0wOBslW8xEFz{#;xRSB;)~4&oMb*_<31+HYkR zHWNp4xs{SOr#($r+Y$tOya=0)vV(<=wu*tlgkG!f>CIQ2Yw}1XGmp9Y5ceN<0_I$M zyoChnjrI%UC7f6!bC!9qHwF4j>4+FNacOayVJT8K`$RdrotaeV5;~^{Q9PrHMOLS5 zD?vE52aUC%eknd5t;IK5NTg`=B-fvS`RS?N?=+(H!0%peFG-_Qz}6WQ$~`6$0m{ym zC&SdYb%tT52!)2oaH+AxY0Oag%-1P*qWg`Ruk`ybGt#q^lqb(o z=|7mwetoFQk`0%<)!z&)D@L@*-dPJseT_L9T1Lb7Y-QKG{soqKi+j;kxEB7Q&DKe! zGxL!uE?8~{Q?B)&beIVdwV-np0}$YgIo@d znQ+7?<(Hzp*bDEaRTHIANfZb~`#?Q5N_tZTIiHQc?tpB#}{`GvhQB24ET_FD-eonNkf%fu!v z`tpvbT2f<bv#&bXM8o1KWP zKiqE4iTfH)@2jQnm_u&Q5=H!-!a`P^_jk*{EsmGWN4DAD8*C#tR4SXB5+UU6aawA|n zuc2t?%N{5bq_rTnSzY_Icv_jC#n5B2%MWk5DD?4CmCLp@T$H7amB;HN-pFA#Z$fxK zdw4u8ND7hRJv)7P8A+Pv#wWbcz$LQ^xjL+If+}V?SCLavjx1ohD5zZC-y^}o>U*GP zp_o{t&pF~u+<%V`4!f?E_(D_>Q=Ku=$>Rmw#x1So-261y5NN>Y&}0;uap0UeGelDkt6K97mGRC>)SFz z)Nr2Y8whC+e!*Yv5Yngv19f>Z|M~smvm^_w~;xE-rivOHGRgq0IFj4 zx3e946&@M@04ov~;#UHlT~72r4#<>`cJ)6awibSzF!AGXGLYyP##^K`rZlCn7%}!uA+Ty-$d$ Q{vIJNEF)AQp!f5C0Jrr8)c^nh literal 0 HcmV?d00001 -- Gitee From 96d5a26237c87e899d733b7fa2597ef04fbcc132 Mon Sep 17 00:00:00 2001 From: jichuan Date: Thu, 23 Mar 2023 17:33:11 +0800 Subject: [PATCH 2/7] =?UTF-8?q?README=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jichuan --- README_zh.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README_zh.md b/README_zh.md index 7aaa508..f8973cd 100644 --- a/README_zh.md +++ b/README_zh.md @@ -7,11 +7,12 @@ ## 简介 -Smartperf-Host是一款深入挖掘数据、细粒度的展示数据的性能功耗测试工具。支持CPU调度、频点、进程线程时间片、堆内存、FPS数据采集和展示。支持在泳道图中展示非实时的采集数据,支持GUI操作数据分析。 +Smartperf-Host是一款深入挖掘数据、细粒度的展示数据的性能功耗调优工具,旨在为开发者提供一套性能调优平台,支持对CPU调度、频点、进程线程时间片、堆内存、FPS数据进行采集和展示,展示方式为泳道图,支持GUI操作进行详细数据分析。 -其主要的结构如下图所示: +## 架构图 ![系统架构图](./host/figures/smartperf_framework2.png) +该组件整体分为设备端和PC端两部分,设备端和PC端基于GRPC通信框架进行数据交互。设备端主要包括命令行工具、服务进程、插件集合、应用程序组件等模块,设备端提供了插件扩展能力,对外提供了插件接口,基于该扩展能力可以按需定义自己的能力,并集成到框架中来,目前基于插件能力已经完成了native内存插件、trace插件。PC端以Smartperf-Host网站的形式进行发布,内部主要包括分为Trace Streamer数据解析、SQLite数据存储、hdc设备管理、数据导入、UI绘制、数据分析等模块。下文会重点对PC端提供的各项能力进行介绍。 ## 目录 ``` -- Gitee From 25e1cdfa83728d10e024b2ba7d9241842cf1c345 Mon Sep 17 00:00:00 2001 From: jichuan Date: Thu, 23 Mar 2023 17:59:07 +0800 Subject: [PATCH 3/7] =?UTF-8?q?README=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jichuan --- README_zh.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/README_zh.md b/README_zh.md index f8973cd..7fcd274 100644 --- a/README_zh.md +++ b/README_zh.md @@ -7,7 +7,7 @@ ## 简介 -Smartperf-Host是一款深入挖掘数据、细粒度的展示数据的性能功耗调优工具,旨在为开发者提供一套性能调优平台,支持对CPU调度、频点、进程线程时间片、堆内存、FPS数据进行采集和展示,展示方式为泳道图,支持GUI操作进行详细数据分析。 +Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功耗调优工具,旨在为开发者提供一套性能调优平台,支持对CPU调度、频点、进程线程时间片、堆内存、FPS等数据进行采集和展示,展示方式为泳道图,支持GUI操作进行详细数据分析。 ## 架构图 @@ -38,13 +38,23 @@ Smartperf-Host是一款深入挖掘数据、细粒度的展示数据的性能功 │ │ │   └── kits # js/napi接口存放目录 ``` - +## 编译指南 +项目编译主要包括两部分,Trace Streamer编译和Smartperf-Host编译部署 +### 构建约束 +- C++11或以上 +- TypeScript 4.2.3以上 +### Trace Streamer编译 +搭建Smartperf-Host网站需要编译出trace_streamer的wasm版本供网页端进行原始trace数据解析工作,具体的编译过程参考<<[如何独立编译Trace Streamer](./host/trace_streamer/doc/compile_trace_streamer.md)>> +### Smartperf—Host编译部署 +具体的编译部署过程参考<<[SmartPerf 编译部署指导](./host/ide/README_zh.md)>>,部署成功后通过浏览器访问页面 https://[部署机器ip地址]:9000/application/ 即可使用Smartperf—Host的全部功能 ## 约束 host端构建约束 - 语言版本 - - C++11或以上 - - TypeScript 4.2.3 - + - C++ 11或以上 + - node 版本 >= 16.15.1 + - npm 版本 >= 8.13.2 + - TypeScript 版本 >= 4.2.3 + - golang 版本 >= 1.13.8 ## 相关文档 - [compile_trace_streamer](./host/trace_streamer/doc/compile_trace_streamer.md) -- Gitee From 6feb29e2370c9de75e1c56b3a8d77141836dd3cf Mon Sep 17 00:00:00 2001 From: jichuan Date: Thu, 23 Mar 2023 21:45:09 +0800 Subject: [PATCH 4/7] =?UTF-8?q?README=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jichuan --- README_zh.md | 53 +++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/README_zh.md b/README_zh.md index 7fcd274..9b4b9c8 100644 --- a/README_zh.md +++ b/README_zh.md @@ -1,9 +1,10 @@ # Smartperf-Host - [简介](#简介) +- [架构图](#架构图) - [目录](#目录) -- [约束](#约束) -- [相关文档](#相关文档) +- [编译指南](#编译指南) +- [功能介绍](#功能介绍) ## 简介 @@ -12,6 +13,7 @@ Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功 ## 架构图 ![系统架构图](./host/figures/smartperf_framework2.png) + 该组件整体分为设备端和PC端两部分,设备端和PC端基于GRPC通信框架进行数据交互。设备端主要包括命令行工具、服务进程、插件集合、应用程序组件等模块,设备端提供了插件扩展能力,对外提供了插件接口,基于该扩展能力可以按需定义自己的能力,并集成到框架中来,目前基于插件能力已经完成了native内存插件、trace插件。PC端以Smartperf-Host网站的形式进行发布,内部主要包括分为Trace Streamer数据解析、SQLite数据存储、hdc设备管理、数据导入、UI绘制、数据分析等模块。下文会重点对PC端提供的各项能力进行介绍。 ## 目录 @@ -41,29 +43,30 @@ Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功 ## 编译指南 项目编译主要包括两部分,Trace Streamer编译和Smartperf-Host编译部署 ### 构建约束 -- C++11或以上 -- TypeScript 4.2.3以上 +- C++ 11或以上 +- node 版本 >= 16.15.1 +- npm 版本 >= 8.13.2 +- TypeScript 版本 >= 4.2.3 +- golang 版本 >= 1.13.8 ### Trace Streamer编译 -搭建Smartperf-Host网站需要编译出trace_streamer的wasm版本供网页端进行原始trace数据解析工作,具体的编译过程参考<<[如何独立编译Trace Streamer](./host/trace_streamer/doc/compile_trace_streamer.md)>> +搭建Smartperf-Host网站需要编译出trace_streamer的wasm版本供网页端进行原始trace数据解析工作,具体的编译过程参考《[如何独立编译Trace Streamer](./host/trace_streamer/doc/compile_trace_streamer.md)》 ### Smartperf—Host编译部署 -具体的编译部署过程参考<<[SmartPerf 编译部署指导](./host/ide/README_zh.md)>>,部署成功后通过浏览器访问页面 https://[部署机器ip地址]:9000/application/ 即可使用Smartperf—Host的全部功能 -## 约束 -host端构建约束 -- 语言版本 - - C++ 11或以上 - - node 版本 >= 16.15.1 - - npm 版本 >= 8.13.2 - - TypeScript 版本 >= 4.2.3 - - golang 版本 >= 1.13.8 +具体的编译部署过程参考《[SmartPerf 编译部署指导](./host/ide/README_zh.md)》,部署成功后通过浏览器访问页面 https://[部署机器ip地址]:9000/application/ 即可使用Smartperf—Host的全部功能 -## 相关文档 -- [compile_trace_streamer](./host/trace_streamer/doc/compile_trace_streamer.md) -- [compile_smartperf](./host/ide/README_zh.md) -- [quickstart_systemtrace](./host/doc/quickstart_systemtrace.md) -- [quickstart_online_record](./host/doc/quickstart_online_record.md) -- [quickstart_hisystemevent](./host/doc/quickstart_hisystemevent.md) -- [quickstart_filesystem](./host/doc/quickstart_filesystem.md) -- [quickstart_page_memory](./host/doc/quickstart_page_memory.md) -- [quickstart_bio](./host/doc/quickstart_bio.md) -- [quickstart_smaps](./host/doc/quickstart_smaps.md) -- [quickstart_sql_metrics](./host/doc/quickstart_sql_metrics.md) \ No newline at end of file +## 功能介绍 +### 网页trace加载 +使用Smartperf-Host加载保存在本地的trace文件(htrace、ftrace等)并显示数据到泳道图中,trace数据分析详见《[网页加载trace说明](./host/doc/quickstart_systemtrace.md)》 +### 在线抓取trace +使用Smartperf-Host在线抓取trace,可以自定义抓取内容、抓取时长、trace保存路径,详情见《[在线抓取trace说明](./host/doc/quickstart_online_record.md)》 +### HiSystemEvent抓取 +使用Smartperf-Host抓取应用的各个子类别功耗占比(CPU 网络 定位等)、应用的资源申请使用记录(WorkScheduler,Runninglock,Alarm, Location Request)、应用功耗异常事件显示、功耗关联系统状态显示(电池电量,屏幕状态),详见《[HiSystemEvent的抓取和展示说明](./host/doc/quickstart_hisystemevent.md)》 +### FileSystem抓取 +使用Smartperf-Host抓取所有文件系统系统调用信息、读写调用次数等,详见《[FileSystem的抓取和展示说明](./host/doc/quickstart_filesystem.md)》 +### 页内存抓取 +使用Smartperf-Host抓取页内存相关事件的开始时间、持续时间、触发进程、触发线程、事件类型、内存地址、内存大小等,详见《[页内存的抓取和展示说明](./host/doc/quickstart_page_memory.md)》 +### Bio抓取 +使用Smartperf-Host抓取每次IO访问的起始时间、总延迟、进程、每4k数据的平均延迟、线程、操作(写数据、页面换入、Metadata)、访问量、路径等、Block number、优先级、Backtrace调用栈,详见《[Bio的抓取和展示说明](./host/doc/quickstart_bio.md)》 +### 进程Smaps抓取 +使用Smartperf-Host抓取单个进程的smaps数据(类别、Pss、Rss、Vss等),数据源为/proc/$pid/smaps,详见《[进程smaps的抓取和展示说明](./host/doc/quickstart_smaps.md)》 +### Sql分析和Metrics说明 +Smartperf-Host网站trace解析完成后在线数据库使用说明,详见《[Sql分析和Metrics说明](./host/doc/quickstart_sql_metrics.md)》 \ No newline at end of file -- Gitee From f7ff0a781cc2945ebdd13e48f5505fdcd357459b Mon Sep 17 00:00:00 2001 From: jichuan Date: Fri, 24 Mar 2023 09:09:50 +0800 Subject: [PATCH 5/7] =?UTF-8?q?README=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jichuan --- README_zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_zh.md b/README_zh.md index 9b4b9c8..bfe726b 100644 --- a/README_zh.md +++ b/README_zh.md @@ -51,7 +51,7 @@ Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功 ### Trace Streamer编译 搭建Smartperf-Host网站需要编译出trace_streamer的wasm版本供网页端进行原始trace数据解析工作,具体的编译过程参考《[如何独立编译Trace Streamer](./host/trace_streamer/doc/compile_trace_streamer.md)》 ### Smartperf—Host编译部署 -具体的编译部署过程参考《[SmartPerf 编译部署指导](./host/ide/README_zh.md)》,部署成功后通过浏览器访问页面 https://[部署机器ip地址]:9000/application/ 即可使用Smartperf—Host的全部功能 +具体的编译部署过程参考《[SmartPerf 编译部署指导](./host/ide/README_zh.md)》,部署成功后通过浏览器访问页面 https://[部署机器ip地址]:9000/application/ 即可使用Smartperf-Host的全部功能 ## 功能介绍 ### 网页trace加载 -- Gitee From 87b816596adc90ef41732addce78973dbfd24ec4 Mon Sep 17 00:00:00 2001 From: jichuan Date: Fri, 24 Mar 2023 17:28:14 +0800 Subject: [PATCH 6/7] =?UTF-8?q?README=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jichuan --- README_zh.md | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/README_zh.md b/README_zh.md index bfe726b..7bdffaa 100644 --- a/README_zh.md +++ b/README_zh.md @@ -1,11 +1,4 @@ # Smartperf-Host - -- [简介](#简介) -- [架构图](#架构图) -- [目录](#目录) -- [编译指南](#编译指南) -- [功能介绍](#功能介绍) - ## 简介 Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功耗调优工具,旨在为开发者提供一套性能调优平台,支持对CPU调度、频点、进程线程时间片、堆内存、FPS等数据进行采集和展示,展示方式为泳道图,支持GUI操作进行详细数据分析。 @@ -41,13 +34,13 @@ Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功 ``` ## 编译指南 -项目编译主要包括两部分,Trace Streamer编译和Smartperf-Host编译部署 +项目编译主要包括两部分,Trace Streamer编译和Smartperf-Host编译部署。 ### 构建约束 -- C++ 11或以上 -- node 版本 >= 16.15.1 -- npm 版本 >= 8.13.2 -- TypeScript 版本 >= 4.2.3 -- golang 版本 >= 1.13.8 +- C++ 11或以上; +- node 版本 >= 16.15.1; +- npm 版本 >= 8.13.2; +- TypeScript 版本 >= 4.2.3; +- golang 版本 >= 1.13.8; ### Trace Streamer编译 搭建Smartperf-Host网站需要编译出trace_streamer的wasm版本供网页端进行原始trace数据解析工作,具体的编译过程参考《[如何独立编译Trace Streamer](./host/trace_streamer/doc/compile_trace_streamer.md)》 ### Smartperf—Host编译部署 @@ -55,18 +48,18 @@ Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功 ## 功能介绍 ### 网页trace加载 -使用Smartperf-Host加载保存在本地的trace文件(htrace、ftrace等)并显示数据到泳道图中,trace数据分析详见《[网页加载trace说明](./host/doc/quickstart_systemtrace.md)》 +使用Smartperf-Host加载保存在本地的trace文件(htrace、ftrace等)并显示数据到泳道图中,trace数据分析详见《[网页加载trace说明](./host/doc/quickstart_systemtrace.md)》。 ### 在线抓取trace -使用Smartperf-Host在线抓取trace,可以自定义抓取内容、抓取时长、trace保存路径,详情见《[在线抓取trace说明](./host/doc/quickstart_online_record.md)》 +使用Smartperf-Host在线抓取trace,可以自定义抓取内容、抓取时长、trace保存路径,详情见《[在线抓取trace说明](./host/doc/quickstart_online_record.md)》。 ### HiSystemEvent抓取 -使用Smartperf-Host抓取应用的各个子类别功耗占比(CPU 网络 定位等)、应用的资源申请使用记录(WorkScheduler,Runninglock,Alarm, Location Request)、应用功耗异常事件显示、功耗关联系统状态显示(电池电量,屏幕状态),详见《[HiSystemEvent的抓取和展示说明](./host/doc/quickstart_hisystemevent.md)》 +使用Smartperf-Host抓取应用的各个子类别功耗占比(CPU 网络 定位等)、应用的资源申请使用记录(WorkScheduler,Runninglock,Alarm, Location Request)、应用功耗异常事件显示、功耗关联系统状态显示(电池电量,屏幕状态),详见《[HiSystemEvent的抓取和展示说明](./host/doc/quickstart_hisystemevent.md)》。 ### FileSystem抓取 -使用Smartperf-Host抓取所有文件系统系统调用信息、读写调用次数等,详见《[FileSystem的抓取和展示说明](./host/doc/quickstart_filesystem.md)》 +使用Smartperf-Host抓取所有文件系统系统调用信息、读写调用次数等,详见《[FileSystem的抓取和展示说明](./host/doc/quickstart_filesystem.md)》。 ### 页内存抓取 -使用Smartperf-Host抓取页内存相关事件的开始时间、持续时间、触发进程、触发线程、事件类型、内存地址、内存大小等,详见《[页内存的抓取和展示说明](./host/doc/quickstart_page_memory.md)》 +使用Smartperf-Host抓取页内存相关事件的开始时间、持续时间、触发进程、触发线程、事件类型、内存地址、内存大小等,详见《[页内存的抓取和展示说明](./host/doc/quickstart_page_memory.md)》。 ### Bio抓取 -使用Smartperf-Host抓取每次IO访问的起始时间、总延迟、进程、每4k数据的平均延迟、线程、操作(写数据、页面换入、Metadata)、访问量、路径等、Block number、优先级、Backtrace调用栈,详见《[Bio的抓取和展示说明](./host/doc/quickstart_bio.md)》 +使用Smartperf-Host抓取每次IO访问的起始时间、总延迟、进程、每4k数据的平均延迟、线程、操作(写数据、页面换入、Metadata)、访问量、路径等、Block number、优先级、Backtrace调用栈,详见《[Bio的抓取和展示说明](./host/doc/quickstart_bio.md)》。 ### 进程Smaps抓取 -使用Smartperf-Host抓取单个进程的smaps数据(类别、Pss、Rss、Vss等),数据源为/proc/$pid/smaps,详见《[进程smaps的抓取和展示说明](./host/doc/quickstart_smaps.md)》 +使用Smartperf-Host抓取单个进程的smaps数据(类别、Pss、Rss、Vss等),数据源为/proc/$pid/smaps,详见《[进程smaps的抓取和展示说明](./host/doc/quickstart_smaps.md)》。 ### Sql分析和Metrics说明 -Smartperf-Host网站trace解析完成后在线数据库使用说明,详见《[Sql分析和Metrics说明](./host/doc/quickstart_sql_metrics.md)》 \ No newline at end of file +Smartperf-Host网站trace解析完成后在线数据库使用说明,详见《[Sql分析和Metrics说明](./host/doc/quickstart_sql_metrics.md)》。 \ No newline at end of file -- Gitee From 525b01e108737e3481df345fd8b50898c0f14c44 Mon Sep 17 00:00:00 2001 From: jichuan Date: Fri, 24 Mar 2023 17:30:19 +0800 Subject: [PATCH 7/7] =?UTF-8?q?README=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: jichuan --- README_zh.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README_zh.md b/README_zh.md index 7bdffaa..b5ee13c 100644 --- a/README_zh.md +++ b/README_zh.md @@ -42,9 +42,9 @@ Smartperf-Host是一款深入挖掘数据、细粒度地展示数据的性能功 - TypeScript 版本 >= 4.2.3; - golang 版本 >= 1.13.8; ### Trace Streamer编译 -搭建Smartperf-Host网站需要编译出trace_streamer的wasm版本供网页端进行原始trace数据解析工作,具体的编译过程参考《[如何独立编译Trace Streamer](./host/trace_streamer/doc/compile_trace_streamer.md)》 +搭建Smartperf-Host网站需要编译出trace_streamer的wasm版本供网页端进行原始trace数据解析工作,具体的编译过程参考《[如何独立编译Trace Streamer](./host/trace_streamer/doc/compile_trace_streamer.md)》。 ### Smartperf—Host编译部署 -具体的编译部署过程参考《[SmartPerf 编译部署指导](./host/ide/README_zh.md)》,部署成功后通过浏览器访问页面 https://[部署机器ip地址]:9000/application/ 即可使用Smartperf-Host的全部功能 +具体的编译部署过程参考《[SmartPerf 编译部署指导](./host/ide/README_zh.md)》,部署成功后通过浏览器访问页面 https://[部署机器ip地址]:9000/application/ 即可使用Smartperf-Host的全部功能。 ## 功能介绍 ### 网页trace加载 -- Gitee