From 2e101fb9e59eb57ae69ba59e1c7cc0cfe8078f07 Mon Sep 17 00:00:00 2001 From: duangavin123 Date: Tue, 25 Jan 2022 10:37:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=BA=90=E7=A0=81=E5=92=8Cdfx=E8=8B=B1=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: duangavin123 --- en/device-dev/get-code/sourcecode-acquire.md | 160 ++++-- ...n-tracing-in-synchronous-communication.png | Bin 0 -> 55441 bytes ...ce-and-inter-process-synchronous-call).png | Bin 0 -> 8563 bytes .../figure/service-calling-process.png | Bin 0 -> 10296 bytes ...e-delay-in-the-service-calling-process.png | Bin 0 -> 13147 bytes .../figure/use-cases-of-hitrace.png | Bin 0 -> 70787 bytes ...x-development-guidelines-on-hilog_lite.md} | 4 +- .../subsys-dfx-hicollie-development.md | 194 +++++++ ...ich.md => subsys-dfx-hilog-development.md} | 48 +- .../subsys-dfx-hisysevent-development.md | 11 + .../subsys-dfx-hisysevent-listening.md | 152 +++++ ...nt.md => subsys-dfx-hisysevent-logging.md} | 6 +- .../subsystems/subsys-dfx-hisysevent-query.md | 179 ++++++ .../subsys-dfx-hisysevent-tool-usage.md | 41 ++ .../subsys-dfx-hitrace-development.md | 538 ++++++++++++++++++ .../subsystems/subsys-dfx-overview.md | 8 +- en/device-dev/subsystems/subsys-dfx.md | 22 +- 17 files changed, 1270 insertions(+), 93 deletions(-) create mode 100644 en/device-dev/subsystems/figure/call-chain-tracing-in-synchronous-communication.png create mode 100644 en/device-dev/subsystems/figure/service-calling-process-(inter-device-and-inter-process-synchronous-call).png create mode 100644 en/device-dev/subsystems/figure/service-calling-process.png create mode 100644 en/device-dev/subsystems/figure/time-delay-in-the-service-calling-process.png create mode 100644 en/device-dev/subsystems/figure/use-cases-of-hitrace.png rename en/device-dev/subsystems/{subsys-dfx-hilog-lite.md => subsys-dfx-development-guidelines-on-hilog_lite.md} (97%) create mode 100644 en/device-dev/subsystems/subsys-dfx-hicollie-development.md rename en/device-dev/subsystems/{subsys-dfx-hilog-rich.md => subsys-dfx-hilog-development.md} (81%) create mode 100644 en/device-dev/subsystems/subsys-dfx-hisysevent-development.md create mode 100644 en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md rename en/device-dev/subsystems/{subsys-dfx-hisysevent.md => subsys-dfx-hisysevent-logging.md} (91%) create mode 100644 en/device-dev/subsystems/subsys-dfx-hisysevent-query.md create mode 100644 en/device-dev/subsystems/subsys-dfx-hisysevent-tool-usage.md create mode 100644 en/device-dev/subsystems/subsys-dfx-hitrace-development.md diff --git a/en/device-dev/get-code/sourcecode-acquire.md b/en/device-dev/get-code/sourcecode-acquire.md index 2f00491cc1f..2e29260d044 100644 --- a/en/device-dev/get-code/sourcecode-acquire.md +++ b/en/device-dev/get-code/sourcecode-acquire.md @@ -6,14 +6,15 @@ - [When to Use](#section10881513459) - [Prerequisites](#section102871547153314) - [How to Use](#section429012478331) + - [Method 2: Acquiring Source Code from DevEco Marketplace](#section463013147412) - [When to Use](#section26661067443) - [Prerequisites](#section17544943123315) - [How to Use](#section954619433333) + - [Method 3: Acquiring Source Code from a Mirror Site](#section1186691118430) - [Method 4: Acquiring Source Code from the GitHub Image Repository \(at 23:00 UTC Every Day\)](#section23448418360) -- [ Source Code Directories](#section1072115612811) - +- [Source Code Directories](#section1072115612811) ## About OpenHarmony @@ -70,7 +71,7 @@ This document describes how to acquire OpenHarmony source code and provides its **Obtaining the Source Code for Mini/Small/Standard Systems** ->![](../public_sys-resources/icon-note.gif) **NOTE:** +>![](public_sys-resources/icon-note.gif) **NOTE:** >Download the master code if you want to get quick access to the latest features for your development. Download the release code, which is more stable, if you want to develop commercial functionalities. - **Obtaining OpenHarmony master code** @@ -91,7 +92,6 @@ This document describes how to acquire OpenHarmony source code and provides its repo forall -c 'git lfs pull' ``` - - **Obtaining OpenHarmony release code** For details about how to obtain the source code of an OpenHarmony release, see the [Release-Notes](../../release-notes/Readme.md). @@ -178,121 +178,167 @@ The table below provides only the sites for downloading the latest OpenHarmony m **Table 1** Sites for acquiring source code -

LTS Code

+ + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -316,7 +362,7 @@ repo sync -c repo forall -c 'git lfs pull' ``` -## Source Code Directories +## Source Code Directories The following table describes the OpenHarmony source code directories. diff --git a/en/device-dev/subsystems/figure/call-chain-tracing-in-synchronous-communication.png b/en/device-dev/subsystems/figure/call-chain-tracing-in-synchronous-communication.png new file mode 100644 index 0000000000000000000000000000000000000000..585d8aac7b4857645b78ab11effbe900e5350f9d GIT binary patch literal 55441 zcmbrmbySpV8#Ruos0dgnN(iDzIv^>MDj+a4NDd(a(&!LMgQy5f$4DbEbe9Y%qS7EG z9V$b2N`Kd&$M<~iyT0}NsmlQA0>uoV((Xqz(1^ZlA3l8Y#upU8k^V=-8Hs0M&GwHHexVzWH7a}dvueN^O5C! zYdd=@OT+^kt5aNpwD2hjPHLKV|2$7b^fWq4UB`x6=%kyz&mPxJ*8^z`(jmU_;<6si z*eiaTrzfSu*naYTn#z{9;yjk#H|+Ms+4IEgGR@Q4kQO5D>K&c2hz30y3Ko6JtuvMI-2J|`>n4Iw|+>?SFvL{f#Mh}W*KjU`KZCL=zf$WF7wN`tO$Nm`2N zQyDUpR@jI>TA*5mE^RhAsIBIZ7L?8+8lot9KaTT;6oRcK?9G_-C#p9ypWgI@vg!mT zm^aBQo!ny;WUAF9kCwYRR3#u1f92>0mfN_u)x3cLOb;tt&MJr`pNr0)CvM;!k$c-9 zCeAw%_|dzX`TgWYn*&bVWS6U1ucLg41Qorx#x@hlw@CHq^{*ZW?pDJy;d2MpXv*Xss zTg=b!|4eXks*t-A?RMx%kH}sdeaT?i_YxKKQ9hSjWCg3my1F~>{WFPvy>=Ay zn4Hr!W3e~|TUGqWH=T(&a zU*@D&l^^pC*_mIVXrbuO{BXl}Si`^&vqC11koCQQP5vR@3HbxZsdR^j7tqd=2=+yPlOAZ;$7xj2b||OtvN!T z_wT(uK+To#t^X(81pask`POcYfYbXLs&fr_MHxS{%#G_2h`t)S}t*8Mu6(f4_7`!S-tQrasRBvQN+0 zS#P^Y+|XF>w(x58?&7ij@cIP(fIhR^+!^g_qc4)&XkA3p`7dt?r3s|3nm*G@^r{M9 zcz0HCLjL<1;yC1x3eCCVg*Mg%=JBZa4)&TBv|UqOQadF#A3S4Kh;dsgk#tbod}Uod z*ptN{bLmvUt0t}!SEFM;nVS3DY~469!}`>bOi)gbh{%ITM&g#*)4rLQV<0FxDJ}#P9BG+1rS?=UevX?^Ryd z@!90PeEGq`NOf2GJzF%Il!8L9!pVNI96x#Ovw;sAymw{*XZyIaHBwWl?blKx=RsoP z=$M!|_uUP{I6)#J^f4lA{d7*%?$@0+Gy)2alYRn2fhot&aVW*M#ER&|%3>>Re8Tj~ z9IjP)>f+GYTV5n2w*EdotQT;Fk9E&vh0etYJyB@72&(`$I^)|A#{RnZ)0Zzp<&L(q zeMP>UY@E8~Pups1Ya1Kc+1aN*zBnEm8@r^&wt86ME!X|qZdm8NoptO$vV7EoT7P3B zBfI$_-B^B$Z%wB3=Q#Cf&!5*UGVgkK$D3_j{zVA0VuRYnix5@Wm{HJ^5YiJwZ^+fAFQovZi&v0crE@87?x?Cz`&V>v|bUpYuvCH`CD z;vPNqLi6Pzk&%&mT};UEx(u%)C)_sh7%amNV+NVksV>{ck7X1T_yd#Rc4Rk(_jcbe z@m{~aSkD|ckoVy3uB2sOp^Sd9Nz>bRo$qai^{VttetDqNz7{-G)2K zfSm5m(O|dumZ^0Jx4l?P&#smlU&)4tP1Bkhc3szXylFco$Ljt3xwO`XvZ78PFllQ>8@`|9Kpo|u6#s`X5ZL*C60|VQfvqKfmD-&%EGD?ZJwOE{ya&jDx z#*%M_xWB8~+bs*V87O(T7mUGRLKUNLT*AXzoxOz^92iK74hp)2Us_+e|TEIkT^+TPh&#nSKRchtzQ#h)QpP3f zBVijfw#KoZkPAaN+Z0xu+B~U>&zm=)PN#;SKYwl*gmg9L<+D|dsjvFl|K4WYy?$^| zw@7nC=MYW};dyUV1sB_1TYJ}WGH!1>1+AjG%f_r8wlq@hb)kaD14ZnSrIeyTcPbR( za}A1sZ~oJ#Pbp;)FCZM!09ig!7^v)ZjcKUATE zQ&UdMQNj8O4?@sEK?xOP*Y`E@L9t=3C8wl3eE5*Y%ETPj>w(F;O+}se)>&>GyH$Hz zRg!^7>_J1nc3b>|#fPzuQjU}Qdz%>HvjOYN%N@Ipd6}WuF>iV|gY)|dQhfXA(~|0I zSEn%KS_q7mmR5tHSkc&z&#yP>i;h!JP|yfiHw_>79HBPkwq=FY+lzYh=?Oju-5A7# z)`F6S$5QD%tv2ORg+#b;9FJ~Gken*?qY*$nL$P(|PTBCTDy)^43*(zo^HtpUwjeY4 zR9d-62vx`O1(dm0`rk4%TI=iUhlkyNEqrglaGrw|60{vV-x)3Dz8j{Yx45)~wzahw zuB><(l_n}7CDo8nQBk4qzGH7c>AW^$HdKy#{TjJGH@H4O%xQa(-}3DXG|p*tiki>7 zu24~AHMGqnnNVELHDI~yr_>f_uF6N!3Zf;Z_^9RIjjCwk(8dKO%~vSeI_9hP^xSVt zvZN@+W$#RjE>^m3albr3=oGn%q5Y2?=7(ID$C`~B!y%3_&BTP@C!%~I>biLz^?=K$ z?j-+lA_fc*krHKlN5|Is{QT^!Zl2+1sA%LDg?~YXwLJI#*?fMtB@dO5M#xV(S$C0iEC<8zU{ceR$a1O%7-3<51OnD zTm76f_L@r+>J;9jWz3Wun2?8VrB2h|xL4k;)XQy!G;(8zA9x*j(B%=@6)ocWrNw6&N zT#5QdFT}syIEQZ+4K_>-t@%3Zye@$_?&{+E>eVaQ6lrN`Sy@?m`R4li>a$OKdV6v; zaD`VGwuGE|r*kC`jo+2-uOBK4Ypf4p&e5-O+gh82|3caVBO-j*7jg^o?&qM*WW?8= ztmJp!_d$i%y!$wJ%z+*Avo=5<7Pi!W+K9K#on|SAB>O{6%a@lG4Ok{vqP9joZwSu) zoA1d&`O^r@W#m)_w=wKlefs>FiJAE)sql=YWlsi5`*h$AT?MQaBL@E{HP`vsU;{o$ zCd7z^L${Ro=1uM0F1Y@W|IaHQJ*^>*2ttkqCsM^$D_yc1J<<%#E#Gg|9aVrSl)rUQ3g{@U2Gh>pHUK}yYIwlp~{aB=%9$%U$}{if+}g^gVs#;NbQ_u;)E$EL#4;T5I>g^bH|F!LAG) zftiZ+-MUgu?faK7{FgB9TU*1-t=lW_3y=Q@^=^%GcO9*}|KQ7`vHa({-^H}3X!tD7 z@ms7_^E?cAsIQmzSXJC$WEa9zYRmYLlpTw-8cM1! z4-iv8%9RH>+@CI;H&@H4G^{_pb;DL`rl!7SG#{#5K}u^$sEc+q_w;C5Tg^*9npOUX zh{hsRsaksI)5YLTwb3vAwHmIQYg_Zq^~>g6FJHdAs$Z6UG2@%%@Z8Vw?qpYQ^8*KJ zxeHd9CWEB>lCVy~LJ_w3`MoXoY-?-sNZyU_!;i%r^_ z6;a#EPez{~bKBiLtzO#_vwnq6!|Ro1z65`wWnF8ytB9L<$-}O6f9mGoiLP(~F8ei$ zFAw9oQg!>QtE)|&6Z7VFXHDN%?KD?8+52rT_vL=4x^6+%5;xge-6VTKmlv(o!-E;4 zVJ~~MRU5~37UeTr{@Hn~UG8VnuY;}YGZ)UE92p($Om*{`*Ko<`9M_e0$L)y?pmd}7 z%?tNZ=*+id9@K6;b>7;#M`&W~|*b*c38jl6D#?qa*gOWj5)7Yq3^S zWL_`i)3zpMD{xbqtmRpTEmwhx6qQvinpI~+d&+S&ZQJXTW5jTnQE{1ob^6%&x@MU} z*UnB(Qgp}OUF>78m+kE?nlA=rf*MbUHE#ORC?1V-;JD1Qhb*Z2W!P8lSX;ok7a4ie zwvCZB<8E@`-iE$%yS_s7jMzxmdP=Jj^TtSGz%aF#-rm!zeOKIUf1q1xkDsf%)UX}h zn1zxh6`Sj~QF7!LP-K;hUTix;?;dQ&s&g^FNZ-ZSgIXePZzC>|s@?dwP+7@}^Q3Y8 z;&NEVr+N+>16ie;!i%4>FIUOXzbO`=w&*x_?c;b;kmn_&<9ZD%qyGjbA-p*=v`z9d z<}*8H3SoJ*B)HcRDTmPEx7qD&ia;N25{x=6`Z(c+r@3STCyoli5zC`Np(~5ee{q~j zLSjI=EYR_XQD^yviWH)mxhv^@&7C|k8nvN{&@4)mm-2qF3_C87!lDtU*ZTH$;;1|J zR-LbJtz7W=@VVFc!`^m4Qh`Zt_YWfoDZVQ=pG<|8i0N$_6jrni$djMm!KNDXup8U8 zIdEWtckhOXh5Ci>F{zdXH?3i*wi=T~xBA;WIV-NvD8-C+q~%t_H9ewiev*5f4bWFevJ zF~VWPJfxPe(#7<0T$d4254zmzP6OCAfCc%zvLrGQrLpa|acWQQ^Hhg5wdkZRA1%3o%cak#>Dy8@MBrQ`%f~TmRmkz9d4)#z2-PpXLI=Fy`C6K9EUPaO*DSn zZGG;ESoG3U48q^vpWbELM`d0a>$@9OQtdKy!0NSHn zB#0KohK*?IkIA&E$aWGOZ(L|p#&q)v8IQoH)HrR~TZ6IOcXnE3x_DwX>(BK-f`6S? z+$Cf-pY)psY(yA$sp(dw&UVXZq;s(~dEAY>epN*uX^H2GJXP#6g6kg-+b=21_H#z^ z>5%G6B7XJrh;SUs$Q5EmYqg`(_B6LT6jx~k)Enl)*lB1z-(1XK#JH=LS?dZOt$(hc zwbc^u7gbhPmr+eC*NhuzFb)|R5%G~BdH+kotzvs*JUaH9MUitUe=2Xl?Efyn84EYp6_7@~1TbLCF<({7^9EkjxT z3iP50{Ewd4hWt#p^|N7aZu73_+<6wRv~$goOnXi}Bj@76l=WGR0~*5aoj9`?yfX-2 zC|mr2WK&}@B1nN}KVGP;>Se>|ah>j;tosI%?%!E13$8ZNTK$ZSi>?V^U@ zT+*@-Mhp`hW=OQM!Mm^F@}!D`v7%zv)6mwEX8H(;Q`;FDal*?T)J5iL-i$k~il0N4 z%0k-+nL{gh|0AT{ip8k(@MKy_D7qm0+N#(s^{U>Kr+9RC&@cxEnV7fvYvVI>oO(n5 ziK}ntUox@3K!v|SMUrM4ISic+X*73pORL>Y40Z1>(AYa8&=$X)p5(&ijnaPG2|>}a zH+p7=TDcIRD4G_kbNI-#`?E~90>#A!;~%?E8}aR?bIBw=ZIU|qDtHM5bb!zkMPaq8 z%Vx0`FOEH7@@i&`ymZPTQuAdTGlOr?T*+&c87IchpCX`A(XU_!7t_P>`20t2B_!nOYK#X+Gb zhXt(C`QLKi|2UNsF1yo^3c+lhsfKv<>g`(f5w!3b=c92ql*6u!wyUZ1rnGkEXxMx! zoTNG(f^JFX*xROOU}fIbY$!?QaXnTlQEO{;sSK0P{ayV?sCOmh2C}Ug#QV(dOj)&Eej@OG+-c>;Ufdo7=I~Yf&4nQM=i7tbwYAM%MGwl>^7&Rc>u8q0 z>D&_*$xu&g7rP>XyPKj3<1?Mk&?gD2sx6Zjc(fVs6ICyxFG=;>r;Ywx3>!0gR$D~XxR$klCa93V~<97_#w~F<>LM@FTJ7>*4EG!3X zZ(ly)wi{&Sk77JoLYR2GQ0SH0hzo2pu^y-&q;*VaA9&&;&v~}z@DfZN(}^!6==!$f zfZ~IY#e!%baR$sAauPCl*^)S-cdQP3jSkB{yK@*3sa6M0a++#Av(Ii6~M^T;Y&MUQvA3C5+CuZ0BSo zrd>qT-hI<-k_2rw>plC>50&rChiF-tLv(cr-|xWW~d)xm6CtG*{naj{LfrS-iX zF%5zDB=V8l3-dR4#>Ix*_FOq_=!f_5bh_C2Yvd*_Yg&GNMGz;ne349T8DX+#v0D8U z0j^cf0%$Wo@2tbVC~Y&CFTZ|9U>@rf3$K|9txopkU@Um4sUBh+tomk#N@TL)cpahx z-oLNXFUm`lN~_x9SjO;oZEs(+=*}*!+6xP{-K=sSEV*?Di`_7bo9R(bo9xNniOtdp zLQab`NPOELl*}fT%|~+Y!_1m4O1C=Xd9tqRA)-ReqEVpM+ zykl_N6XRkvP|)2uZc%5v=yp|a3W7(Snv4IuU0x%$+S^)mXb2iFmuW|~d{pDZmUKlJ z0+KFzQtSyS?2K^4N4gKaup=OsOx=R9h|5)4H?o#)QqZqb9=Rl&+`d;Qm#jh)U5YOHa3_>@NH{|s7G*KFNIVG1PJW(- zth5K8@0;?lrI&Jb@?{viak_~gjr+n}k61n;-D;(~?sKoC2yt4K9Y?@FFaf>21t@`( zFH3loL8D0aEQEIecMu=Ce$EG_?G%c(vs23{3-*pG+lrvU9ln?_z^)!*G&(<5v)7?_GsZ8rsb9f?fqdoO5 z!%j*@X9e_nC*ZGn&=Y-M1finhOFo22Ax)KKH7Yl2yEkuxdYjri;2UCCvJb*2X|i=TOof5;GgvuYSGiYMrr@NZ}G2O!M8>Ui1n2gUE6+z>Q~QNvmSi;uf1rz zO^c-#u*r6tMjsP4(rVT&9;I^1T+dB|IG-jzuXDVQy6Wqhfx^k%IET==cgUMx*>1em zpU7LQSu5DzOu`3L>Q#MTOo>C}-3jHe*m&uF>A%bF0OgsEBHQtH5hs}={I!|45Lr99 zJDEX92gT8RyFwDr+yF{Qsq+~mYQYVLvq#YNi31Hx{j@jN=jV?f#Z>fnUXt}%^Ce}p-=8eD6J=(ur9kJakQy^7eR(-ccHZKMZmNf@K^04c zr`7sjzBLGGTbE3E4`USxa*3LYDR1PJj7xvM+tJa{AuuFNg@xUdo8R)`2Th@g+lSSN zw?M$xU!KuBy~?uDxa=c-EOPbmGZK}9qoSM|KU%wd5zkx@8 z@Hp`J@#AC1j>*W#q@|^SkVK|DR4q*&h%{h60!hJQH@P`GH$Vw)X$# zo_6~MX&AeP+va47`_`<0{m0NyN|0L|@9oNJxyQmq93&xISX~XnJbU(R$ZQQ{GNMz%za&W7`)ha2&oU((%?f zOny{U)Ta4xr7JcWzSZ|>+UmP^?^Ft&E*c`w-LLf1Obpf4)oljKq2C6%(-gsTJo=q^ z&5s7qM+kZd_9}*1Av!SM+uM7IS42d&p{1qeZotK`Do~VF63aVNl`oq)&h+FR32n^G zblop zW@dJ-0T0W<;y&IKp~`}r>3=`}_WA?Rj=D-7Kj7r#^pmQ2L`-C%dK5Q0ha_SN(}{h} zfML@uwUd#PQ`2*rE$XHe3t0l89xH76l>raZ0<&XeP|%{sLj)(PPu-(AhAs@~{KHemx~QOQcCdkmHpQ1^M}v8)Gzn zQp*#G0lwk7o6EZw-QC@f969otFMwW5FV9diEy&4{nv(L0DxHYaN_7sfSg+StR(Qo6 zL8HQoUb)GO&U0_|GqX&J#I8HVU!AS{dqD zaPMGkSO#VG{{8z)DsZu!XLn!5ZY+E`IRaG2qt*to_vmoW;9C5E@wP?n{?0LDv%^@(6Rp zhiP2=F-}iEg1#5j*ebd;6QU@(0XsO>6tN7dE>9}ahdxS41avp(iXlWqnN6=wT@Gx7 z$R}v=+vw_Nhe7chF12TeI*>`OpFlxm{0rInP8>Ii>^$(np-O@dlx+!cur#EjU_m3Y zY!vrPTOHFu8fkJ_Rm8Q8*efhZLUW;p*InolCzO8A+i8u)aO1VNF9rF%L@iNBnOh!$ z!e6aGamY#n@ve>mLnwlOs`11g2#PKB?$-@I5Gi9p-dvd*EQ@RY3boaZ|4ok|x?bpf z+5xoViR_vpo};1h^noQMC6KK-nt4Cib$$?TxnV5G?`o6+zX4RVzjc_1X!FXIE0$13 zV2u-Gk=2Gqw)IjW^2{_`e0*V^hX{JAhksI161YNqu4L&~#m3DQ(e|S9+l)HuNt&9P zj2I3OEFJNe`S|XwuNK>2gEnRkbkcI zcMtr!bWcJ&Ui@n&=Sg0;vtu)(e;?Psg&y;#`vxMv96HIufD!*HZf?+luD367An`m+ zXt3l-B-)j}NB?6V`p0C%fk%v$8ERxH9|w~J%Z4@O{HRW`rQ=w{Ln%LMCS!cgSLg-! zMhs2i_U3dBcBm;6jYfk3=G;kwI-~}fkeiz;w)-pb(>LviPutH=;1fT5w(7~frML6l zo1Sc{J6kuS%``LucEED5wCKZJTHW*MZ&^GY>^uG!vIIH=kYBPkBq1Mlr4HMG^U?#Q z{T$!@JyK9Q2M%^ty%>CJ@@*P79!tY(`gOTg%*G%*J3D(x!;y_q z4~ND>YH5{B@L7DT8%@`b)GFN|w=T4K5sXY!t$!M*eBZ+6!ob&qgw^9`!-SVbf@(`V zeAl2$5_DRTwVnrkE-5=nTu=g_rlnmQZ;9F3-I|Y@mjnAtwq8ZLs5}z6yt;ZVZ}u`G zWA_>YCnqCwjEtH{1D(Y%7gnemw)tV0jg#vuHFT364MJ%xieI{K#pD?a&Dct z`&~*X(>f1&Q_PLWx6L8Ni$bW>5zO+Dye3WOS>MnJsqg7`ZO?*%ggthh zp(ZW2rfaG4?EPEdaR|<VZ$hh1r*A|AjApG(S$7B$JYnsbvR;u1S@pJ1Aylg3(Gr z!9UGD4yqtr8{+WB7Np&jBFo&bCZ1O5cVIf&T+asp01rgKd%!?g>LCtoWv+c?9 zQBLb~*Iq!3;MXV{1tM2lP;Su4z^YcVsn$TlZ^;!|)>dZa%N5NrpBqtmFIA~JK2Q6> z#!Nfk2of2XC;aex7sr*wLd(YVAvY>Hs*{>y4ovktxvb&f2*1 zbW~o!x62KemzR(3oh-syD&9MDO+WAr=>-~oNGfuX{UVu&-e6!fe3y4D=B7OL|n)Vi9~z%r;J8Yk4D6c+Cdn4?x^4%eg8;7ck}%0 z7x*bhw`^_j$#BJTi;zjO({$GRk2N)5@gzBM5!`rCUB@u`Zr2OucpkQdE)|+}EVUXn zgtF#u61*_Z}=#~Ha zc$`z(7~q@#MG@}RdoMgD3 z!LWL!<|#_b(b3T>?p>VhUn6&99lQ?Lrz%-X9w8Wi-<^yz+udGn4G`TlZ3{>5Zac27 zS;u<0hoQdS$|aJi#b$c!W6lN`u0Bh z&etT8H3p2sHaRg+;!u#XU%zhbP!!AB3%NGdTWA*IRO5{=DJv7(7!8rC`jQ%b#C(ir zF8|pZ@8&209s5&1FlX7-L$9gAMnKEZLNkWIfc_7K(6oU?J7zDV)@14h&jv5@wFK6A%` z?Lcd3d#8H8Q6{#i#WMhShG)!Ly;-JvFQSjtG4;bS7NG3%dqzH*!*`Jrz>Bd80t;il z+vGCyu>0N)SUth5O|aY8PluA+x^)XCmf(+zKWk|Kha{g^;$>t^kbHekWvJ|l4a_WH zg*CDUv~Z8w=;1@isM@ZsBD0QUFc506LEX50`?j!%2%r&He8X8U!G|U$qB|=c;HE}~ zbFgZl>&>+PUdBCyzU%6}JVG~pZ`rG|`!JSWFSPcPOHr}mI(w&vqUSfQ!Tv_$?6Q(p6fXMw0$4F|c9*-KF9=1t#N z+3&C)bxaHxGRu9sE1#^+*b`4+qNw?%Hpb%whL3p3+`e-MO4_4e3-^mE0rcWh$6Pcr3P^zWB16Bj9N|>_<feBqf|v3b|jL|Y+1hRuN^4x{br z6v{AB>sGqpCUj4Q+Y^f3nDsut6OU@dLy2DLR8`#A*!cYA%enivpcm4Jxotl`c1D_t zU`F)-0?qI_%+iYs3xQ|=-o7T`&&tZSV9JXK3At0sbc{;<@}ISZin2YK5;xjKdX}wD zAMhh5XAWZ&Q%~|UqQCo@C3+N~`%Q-#O?rBIN%q5jQa`_c_teS{xpN`7abaNr!q9op z>O#*OTc}WGZ~JZ%V2}T0>*Chfs#cyg&|}=H99sn26kI$ zCwOr@oXF_6sX9d_B-lee6)QB!nIzSOhB^k}Cod=WJ7RB5)&c(#N*f5#Gqzoysa5cj zg03$?@_1fTd_2S5yS1`mY~L})6o|}XXRs>2=zyO`SQiO zf<7(C3u^cduVoLHzP>)((cGNBK5-9a^4h?sPZHOWm2pthWaSafw!p4Iw!sMXYio;M z$l=ZN{fV*BkU>z;ac!noa_hxK!ZUxT$I~cp3j%jpP)R6pN|ES#fulYB(v1J`!LUQb zhxeybncr;a-^X7L{o#AblRzRl_&?(=;cNDb+x}S+_yNiv;VJn>rta^37l5z*{F%V< z_L6})zBnirIGd2~wL<3usnKQ*)h=EhF@9HwnI;TxOH5s=J5mdLtOr!q{cp8v!{-A_ z^WeK8Y%}Qb6eMs7zbR*WX@q1tqB^cFSsdYbNz%L9m0f8ydH!(5crgl7XnU9|s*Z~jJ zIc3Dw%4C7zXI~%Pz0FH44~X;AdkWec4Egwx zk(0Ev(P3d&-o~aT%l0H6wFYEE);EAas(LE1={$0>veaA#9yvKV1qHTBN?+kf$>rB| zRVbcj6%~~vl`&R#Y^H)?Zaney@z6%7S?(|h{lEY%5&%wU1qGAT{gqx2NB8FFi#f{B zvR}I<@1op5PQxF%siE(BuOZHDGp!wtnwY^cn|l!SJIUzRNkI;?C1`xcwY7J1j`R5(RqE=`7HS}h?GB7{f32`B? zLge|(>adj*!t2?yQ7rT|$l<;bEY5bE?Y$cK?)6D+$C}zOf)M@@Y?m+J8J>li`wHR6 zM#K{#o@VgFOB%(*#6WFga~Ba2!IBXA26PSgFd`yLl0-DC`8^mgu+tY=Yg-?AwF!|Ez4L^5I^ikI?k5cO=<{@8rgF2kdtp>g~V4~wj-hJK7K zH>y9qe4M+>66hN#=SrB8kS-h)L@pfJ2`Dzi-nqLv5pc}p4?&A!85S^7Lxi39^m)0x zy?v}Tj+1a8O@{^Z5$N!oy_M1W5Xgjd<-{)l58z5Jo;!Dylh0;oz~EhSq#v!I3h5bU z1vMS8(kqw)ab=9~^i^_?0^!{865%Ru{suyFaVKX8Zr-Q60A zZND})DmJGwNQND)^$^&{K#8o<&;sV9-}~jQcJt=VhGAIxxxOOyJ+vP`K+V{usqr{> z^(Z(bq+@;&xLc%?zNgWGR(YBefg;yJ0BHr~qWB-Fp=zwggRq$b93O-@cwX zOzJ@*$~9zXBM!C1G)1KJrBWh>^V<>P!#YO^oa*no^}2Ax`-Yjh{(m#A#9$U8-q*gE zazngge$%cW|EJ)cxPmc&rnp~EwTS*yc`7P65EH#k1@h9#w5g61MHn5n!fZa_f{?$< zE0M<$#{UScq`MOQFDy^?a=_^svJ?AFgY@q0+aEy~CCI5NMTG;GX>R>~3CL!DU!tPY z4s47>3e?cn`HcptK>15F68uPz%xVr2#3#Vsk&$eSVKC=VQPuwI6$%OzgjY0f{So{6 zs9)U%rOg)!!Uv{7al#*T8wa;m4gP1Aq`eIJT1!hy|Eb{af1Ac1eKHWqpu|9U97z}= z2rA&8$3}9wAqW4oygDr3pD+8Pm0r`A+&{SayIm3FrN4a))JttQx;b!Z%RZqAb2`#+ z2&E~%&*=tIn>K#ZIJNQXSLhr++bTtXm6*!i!LllltG?IU*qN-owKKYHT|B9}=(46oMv24Msrq*wT`cLW^!|c&#k9 zt-he309w$`sVS)D9Xng=KGT8Rsjxy-V8PJT$RzU{E&lanTh>5 zhAvc1K}EXdQm}U8mfW`0q+* zZCfzn|HCll1_lN~f=@IW?;hjf=8k>(;~11eSOrk3ctXJUWxu<>2_8F*SnavaG*wg6 z31F@%=tV8{5NF}Y78R%7%>2BK$r9X(EDr(S5`D17t0cB1VX^piVVL)Tf`(&Go(GRa zVj7_w=V%vALGU)jh?rcZ=eO*Er(h6K&qnnEJlh841GYN<8V1($iM@UEy#Mv<*U71Q zkCKtSdG(5m69awy7zKrcogJk-Wfdb@Dx3q$h2%|zRf??LR%x>~D4Gl70sm060;LQGns3hzLvaw{nG>7f>uf_1_x+_XU z&A+t+aYS{rzLTRP;drA8W2B<+;&Yh24>kN@T1o1dC`SkaCeY$jHU^P`K{D~>QGf7U z0(#?Qs4I+j;JX7n;sA~~g9mGfvgb5T9x$nXcsUxpC)RKdhRO;U$|Nqk>wszn=m#{* zr(fP&Xn5~-ng#BO0i$%IU}b5^ygNI_+xsqz-~u*7a`EsRC6iHZVPRo5wsa+Z_k-#` z2nPW>;wIwKuPDK9S&;wN6fR5ER?T)VeN^n84B@>VsN3JAWn?16+$))?unO_`Gu9Ia z{^1&AS)TlM84$8~WH5Tw7*>iPozyWc?6a03FjtoxMIZa;Uh9|;#D_?4mb^Pc7@r95 zg0CP9kc4a=Jxz5Baf}ik;XX;mClQAoTTSV5PY(~fz3bgiGP4%6Wd+fS|hsI{Lw(e>&`u@BS8F$e56{WFoAtka(^qr$acy1O91P{etP z+GVB96)A8ttNQNR<}43)p>Elf=&oMgkIGHuL_2(ia}g+$>~Co6|8nw-n1v5$vlT@BQeih)X=c&=?VgG8q{1E9chb#t_q z^`dOY=X6Tb%;Z+s_Q2!JFx!#Ql;62LC0(cOKn~zC-Zf=KOA>n4)S)ZkW1CiX$#Hz z&;I4!#i>1h(k;?l-zKu6uhN1tF&PrD68})~#YCy)M#FPf*7fGEorTGpIk5-ik!3kU z{W=vzJAcih^l#1bPmXWYhe(Y@ z1id>``9VB}N*3!?Q{klAfzZ#+m~5+gB&wy=htRdt&_rmV^>-%P)+;@waXMhlM>180 zhKBAlH7F_W{gnTL&(C}`?ys<$uEsjnJ2#jSHJcz=>P<;O%aXNv2Dh@leuA7_#9`+A z&kF=*K^&3g6%erYGr+!ELblbI&Uuw>SF+F?ODC+k{&c0SUAG%r+szv{q%~pS1MLpW z#LWFSff&Ai%ry&{%U~HCC=6pW+glTu?Jf9R^@`rTljQJZWs_-tv5LNKz4Z1{(A|q> zz4_RH07Xw`?hQ6Z0_OszCh>PfRhgQ32@+$|)BTmM&KnkE5?9g32wkg=DO4d|$srBM z(23-#sy%>#q?S!>$N#Alzc_(E6crT(AfL{8Q&6yC;p1^1AD{3;&Hs5#Nh^nlu<(_9 zARdIb7iz$egHZdrR^eLmAU;|gI9CGyqaoa>|_wj>g zxJALr!h&f}?z`$V*=Hn#hzUfp&;k{_Jl?8^L|!)iQ?B-Z7kr1Z<-j4`ZzKMmXyRLh zTIXR)bPKaPMIghV3LYZezq);76MgV#WFpmmPSjr_9S1Mh*glW(5`}(64Ac9!YPy5? zL;K#Z1LH*h`gn4}Q0~pbk|z#k5+%b5yc69Tif|RxEipClml>qg5A^J_rO&zNX_;7E z>X@9ZJs;JI3wp*A*nnKc@uw4*NMp;f8-o*R}M8vKrNnXhs*T(Xj<(|W4YBB>)53vDqNJuSyuSr(_fS#&Xu*xLl)Q3n&K&Vb#<#zlx#t9`1@Rg7sD!nk~ zC*BR9Zkk%cH-bMXa3fQ@h!kf8ygWp9L%HqDaFsjAu)DjvkX@Eizu89$Wu;JY(D+J0 z&*Hc0V_EM7I>N{5)jkOh!AnY)icW`Nz5vd^1Ehg<1ZW~ca}vjK=09=Aaiccl!T;8O_X`RENRe6oE)%#zztJZlVE{RKKC%4`#sEEeh~GK_bj?3y2tK-w zsV5CJ7N?Y@OnTx%qMT(2SW({E1crq0KxBG&5W&eBNV69&UhIHC__=818l3J}ZsGyW z6+`^<%`wHDTjj)$c?!FANC6- zcMU%UEbOms-S7b~#RWfwf4L{PzXvlR*)+1Z;Schpq@+Y?`?eGQRt2at)P5$QRmkFX zY%2J`?}in&_{QOAj{O(<5QM|4GRB_&NG5n-Kt6x^1eCLsq+}Ys6p+F2Eyx;1u^}8LUeC0rIT59-9^k z<~R{-3VQn6wW0{=eh4~p>dtIk9Wq5yLtjRRjWTmPwjJY$I4`#&D?*m$>4ZNl)LXzT zEL;v(knj>j+N_(iAWdN(E&h-MgW)pr|Iqg3aW%GWyAcVYM5QE38A<~wm4p;3mF8%m zqIuM$Spyo0vd|#XB$c6*Mnb8CMrlN)xs(RY`?%LCJkR&Ndw=`)+uI-S>&a@Zd)@bS zo!5CD=W!h8@yU1%jU*M6^oO?v-qlDs5l&uR#8F0M+zZ==zy^~OgDDUnA0MDqbW+TA z+3wD`5P+iB#iP2UWZUoOAXvX(dL?s~&L$BNe3RSV>8MM>ytgK~?0fP8LT7Xc-kb>+ zd#n0qHRCguUzN{jL}dT?@guO&_50kkQkajI5mEU3sZ(DNOy1eobgE61?G#@U%f8iS zJ1|WcjEr>Qy8~LRF$IG#fi})8axuTmj>%uY-ulXk?b`J;tDo^(Q)DbNWn;7- zO0;nJEjO^2EA`@4(xQd4*MNrsQc78yoc1#8T_FyAIk^D4WO^=gX1KM%ZmCRN^x`4# zx1=UIW96O$O+>?Sht29xc~8$-JO}`}kEh9vStQcASH67tGVNK37WeWkaLci`vAHVa z)Zci%y)-=XEwW-Fb!r>hfUKf>VhaNBGq>#}N5+Hlal`>t{rwW>jho{G*7C|3fxZG9 zm+_78InL{p$`>)Xa_O2tx0wC^hOUy&oqTNImzkM~R%fPF)PW_{2mj6quT3?%{_nEPU6M$- zK;0i49`0?*8N<$4R&xPnUO+eHzk)3@)EzD9dfyGG3J#&9T_r6gQ@p7kU{FPnw@JXk z2>drnPFxvmLhx6BmFOl3XNQo3ccqZ(Pvg0a#xVvt0}_(==((c0*NPI)WZ;q|c=cFX z_YTCj*`bjN#xV#aR}Wq==8v1Bz5O$o-;rbMEBR;m-l4Xn+3jaJ!OvZWM(`SApxzI{ zkbX*_-IwAoeHJj;u z{wH7P)!+xz&Ceh1X$2bi&h{{~O&d3ULH9vrk3)ADw_Q?njp}nE6D~4Q0=l!~?6$>^ zD{;^=J)kBG#enq0eZ&EbjU_o!t*YWN`q>!yvb8M#&$O(4IMrPHpLZB>^*E`Y*dXPh zvkZtF%0khnArovb)ncFzk&v)9A(D-Q>sG48R-lLSDR<57?KsT>#Eueu^BZsDvSY}6 zv)|ct(CBL-m2RsqDM?ah&$4R|xO1lk32ts)p3FJ~V5}c>pYbr&ciEYG_yo4@gS%TL zBLz3ih_m0n?Ay!k@guQ4CM6?LZ@K@vf^JZ5?GOm$BQ2}^0O3UPmThryb_>;gRcZ_0iF1x%-9xGtSs=RrSay{n}-vmpscf5c9ocYOjK(xYPh{EDUb9?@@pV#q z|NM63WcVRlqHL_Kjg5_igF9_6>t{<`Ez&F#QfuVz7PhM9x*{-0YoL->6>EKkI?bUN|oE*O_(P z+qcUt9Kpl<$*jW2&c0)^7fjgjG|LVO^#E9faty>QomB}}&;>?K;pXP{qipA43yX*M zlPXM}&G=Pc*5Kjc3DAC^p9m>AnJWT@ecQr3_en=1BO?fbfb{;5pNEfep89@UDopAB zk9*!-Vi7syxLDGOjzUe^AA|b=u{tLiY9~XgbKva43xqO@09?bi&ylD>_}Ut#+)n}E zh!gGwpvAHmJmkXqsyqSHQZ#0^3~j6bfPgxS;s!ICd$$ld%_Tn{*rUaz=-{X5Sl++cl++bem>ci*g!Gvv56W5@T2vu1G{?n~{w?$li2a^5sq^OIs^V&1t+6=b4UU7${Y zVu|n5vt6aS*`1~Clij6HjeANNd8R%EYot`JOIX+8I%%nU{^i0xX8q1(_l}L<+9@-p z@*8%Yk+{A|I-LLu11fH7e|&Laj7iwuWYazs%}LnQIey;R7tB`w%URbw<;47zoIafm zLg$#sP{N&^F62zgHM9(#pdMB6!6E`mCzGx{lUv)=dPT~9w~D|-T)=Th#|7^-bDpI} zhQ~=XZ1Kx>2p*2rlWYP}Y#l>dwOW&1+?P(R7v2l02g)~d#nRg)jq2CsXgc*jqCmLw zpNj@gX{DBt=CT#6dyn-0UMO{1F&SoEYmC1hY|?MPf7|YcBC3eXp*QcG?>J|dJ@8Y% zhGE3k_PMpjcVm+Wy}fSMJOM!`wvxIJg3K=2_gR&V*-3v_toyDEl~t7-XQDH$dp4-p zIArMcw_DEdFcJFBlh$2p63o<_Zk6$B+NZX*$0e^5tGvu|%QoMON>^-4v5r9aQ=eP6 z&#?ejAE-O*Zp!JgDt-TSSbbO505tt&q4WSFz9p86bRLes`8F(oDN;=e{s80py#i< zqy4&n3ZmX4{CD|YQRvhJC@{b2vG@N(14?rRKO%5W4J}d2$1T1l!RK$#{CVCsF%nK@ zVDk8nR16$7Es5*12)_4Suek`KP=W$^%J4${`|-WzW3R7`ll-27FgN$}c@X?!I;#@6`qW&Mtm{Sk7}wTX8p#fCUMKB{ln6XQN*+mspV>e8Jr zwpZ+P<9e&6$`FpU2%UO)v`d1=4t*W9Y|@P4ZP^cpt*@eaZ1%6b{@TusqDrysyE=W6 z-v9i~eTNuY+e^Qjq?u9~pU@Ni%sNf?nSyKUMUj1angR(?~a;D5)%ER}8cL-S`U8HeUc zsoY-g-oowPdumJD%%(bLM(>(~CBBIj4a9p4pDJtJlxyuZ*Ex?zXSh zDB68Ackc&}J1tHHVmZdPoV(RM%!*fb6qLtG?(Va+Irn`z?TSR%tj#*B`CaMx!=)~z zD64Sl?^ZZ+b#i)2+*0Et@2t9X#gCD22`fSJXYi+;uDb+z}wV#k- zo8z(I_2*>_r<_wx?_pS5W6SwCr|NJst7=tqe8Ja?8}^&*-@Q?%&}$jV(vp2urd2q{ z`zYS&b^+bl#Xr0kjx!pypEgNMx4u)$u#j3J>WG9+_lRAC6=~LAR#}<3L1H!iM_bOp z54I8g3guNISZ%)Yh1_4CEcvSP#w3iR-eRbL|5eZK>24?H;#>vd^8yelu9gGyKd=q$ri-9fBB(ZTvzHMxEbF+_)_DNpJiNrNb zJbm>wrff>o=hpiqSmIM?NyMF?W5tO{&#JtFmgE)l@o@Goeaih_=)KVDy_p$xCD@!FwP+l%6oNCcmig3`gM#Nw1Gylu!9lzZ0LYMvd$0w)y<= zA z=vq6XUHSLz^Jse;iafRS&Q!mT(a|gvp&PN%mz>V()u)GSj#vQe)xLrd(F%pvDq32| ztJMWgUc7V(_P;;7@g0eqW5eqW>ZCn57GNU{|NNVs8zGZjU@-Gmjyv$er3GK$M*^KQ4LD>nDylk+(dJulx_k1IfwBdFSIZ#c~Dme|>}PG~LRT zA%TIDkXY1sM3mo%j^40tUD79lVg_MweSQ5u;)S*5N9cj9J=m>`oz>OVK@K5oaZOA> zr*4E?ffNyuymth=D69JP60?i|1?`h3b5K}=4f2(|6qSR?+s|yN3##z8Hlscdfy`CK zU;TvwLvyTJlcbO&LlEfhJk(YKwwS&tz%qr+ip4Cf8#aVQP*yqOz%`rk!@*kPutEo` zOCfePbwGJl1VHBVLq-+++qNBrrj~^+G&B?h6Ah6^CsKfItz5QD?#L0M(ycUo`WY-r z1)eH!5xaYOYNTO8&bw#Nue+BvWTV8a)YjA#^_-akC1vq)Cg{$}P2=x91_cc%ewTeV zO8@MYNje74FX)YZh&BtCHWh%n7`TxlPr~Z6azI*TCpM z3c`uGnb{#%NTOwAWR4v>#uO+sZ6Us6M+%ge&!3A42q?A5$L-?cihcO-omFPw`*-gY zMwA8ehARO$5_JFSYPGmsfF**)!B_cq6UDFH3KFV%rVl8d^xNc>(xk_@zC-y`{ix@V zsc9G7u%RT*12({5MA&&hZJQ5(*$irX+ebY`cTcc4bgRpT*Vbw{u!R<}vav;pp!=}4 zL`C?}_O<@UB&$(+-nUNExLtlWZWoHX=cl&q)VH@!H_uZ0&|lXzx|Y7mX)?^v6D(Ee zMkMntf@59|lU>y2XkG1i(tDW0{q+NCVyWV}b@7=fNl7>^BXut+&dA7smIqx=z=X#$ z88#_2?dRUOasTwxiL_72m&{B}8CHZ!)RbK{kZ-?kGN}K_{JJ97;IO#;Y-KOR-m_z# zvzkr&7nOT^FU(9chG~O>0$uXTxd<8OdLV~Gs7Y4*B`RS20YMfqZOgQ>tS+vKu*?RLdvF49YAw%St`Eg0k6;Y+U zyu4dAI5?Q+y1zO^KIAh=MP8X(&TOp5KKsFg?Vqj(JW@Y#!YtziWY;w_!^6X%C0^Fj zP*%Qr^JbzwzkdD{An|*u0i`7+$0ucKp58uw

U_+&98d+Z|EtP9`Ol+=kPfR&Ce?WbcYe_iAa1zg?tgP&O(@lYk zMS*kYNUD8KTSv#_#6$qe04nyyix)RNzls3vOGBJ38@Hz34;L75$tx)Egqr~{uAJPz z|J6QJphn+(*{W5mmM*Qxx>_=SKq2C;q2WjK5dbeLVnPl;VpBzJh6uXIZ(tig|Au{T zS$FQ-S`MElua7$$g#-^#j^3+c2sgMW@(bx%iG7eOv%s5E_#pNkacWS0wjb{~x-!e~ z)Mc-aIC9V~jX>sL_Ld#f=>&9U-#G+`_G`@;ujd!CZP_v~q`@=k&<8ZwAHD&z?O)GbKAZ z%;;$QQ2%0bda_yPnppO!Z?F9k2Na`#+$#R{1_DG1a`b!WZNPKSo{1zVUN32LRte=Z zes}Z2A~h?H7wpv1i+p8?6f>rLJ&xh04SgY!J9g}#@i`#*@W>7HSfHG22fsu4LMi&t z#0|p*AwcUTTzP{ayqb}*<`ugCfwJc2J)r!-KVg?|jNSYle8q+K`1gc69^G{W3lGhq z#7mae)|&O`gH**In}kBQ!u!t~j}hQ6Fn>fm%NeE$XS84>r`H?@^A9v&dHLnIhs26# z+hKOZI0U}ZQ&VoqHQf`{0NY^mFpjPV(51^4ofBz&68 zqR7cdu8eY&Vn=K1Ic7S?L!X(Lm>?ciLX9D4Hfsb~GV3NAB8NSNnc>Ww6>Z7nyCsYV8N3lf^MVj0p9J~5wJ}KSpbSbQB^{s4go`3%29UsvetR%jzak? zMc4!wh;-;~+Tx4`xW)HJiCCUEbZF5y*r7xc=-WJ>idoGbT;;q=x{nPV@wu#ak)KCZ z6jJ56lnY5vS)nXB$3+@UPSc3p^Mv;6>Oc8WAeFZ_-CubZlCl47o_0FMudKVfdxrga zE0xROS?NCMk;#Xy%RzmlL_B9w47v!@5rsVnLBpA? zaX(*Np#F9m%}(54jJ~*QpWW1CmH`#+o~>J9d+`-qTdO58!njN@`8igvesb!iH{_(I zkxikkE#C`m9sh`ODwnNzQp4SEf6~1B53FUBi`ivdp+wrfd-pv_Si#)8cP~Dk zC-BWZkIQ@_T9BIn%^$@qh1JoO+gJ_K5GMd4zbP)}jk0nA6AFD_3o9%1Ss2GF`>4WX zU0kwRQuc(_xr5TrYV6d8KviB^ntlFfyh$Pqe;6DDGTHvR7xy2yZqfn2?2V}pPWxis zz-}6|4jjPDd|Der8tdvhUCfG`kRbJC2RGQPV`fg!dGs(X?Mg^U?VcPi|Kh@U4s3PwE{h)QbiY$3l8}LOT9(kmfCdxt=7Z=Bx z(_=3_@~i&q&W#&mQc{iyzxJ#N4719#f8ElezvxhfiK*#v(M~%~D^V;KqD)yz%A@D6 z8U07r!p^@I!4?encW0j#^@E9Q@U)+9BW4CXw?i%qWBvfFxBl7}&xcrz1E8g1Kj_=7zorMk#WF2%guOh|H z9mlo(Vc)Xj zv9eGH+#r#-gxgWY68ny~gON9Lztw;rx9x1Iw1*qCIwg;a9{^FH{tr z;`*$?Md0{^um~NTJjioUHTrkuoEHN+rNGL_E?0-wu0rgasGn~ zRVW`p<#p}}I2-I}4`JjH^h)(yjIFyD5#{%47|&==;LrHDnBIflB>ywU#wYo1;4IZs z!snyTqtiXK9%Qpr(sm&s{Di2@U1ZOkX@_>JQSZU)*ObVUMwIr9)Wmhq;RG*Udkp~? z*tiwjg!CrJ|2T0iZtI93c9UfpPTieFByxQ7U(kLu>weIJ0|zet^&V7IH(8KP{5V5J zr9g)ux~{d1b{Y9+*LKn@T1=&2@d&M=sD`C3-7T3)0m0!57v4{ZHn1fBPNxL+kKp5I z+o`Ou$VQ);nPsH2Pa8eIdRNySp*)ckRS*e;j-GOyjnMWR(JawNm6e!uHo`0XDZ_0OKb9v-8 zsi`6PuEFBCtMuChm2V3looKrrl6T@{+(=Jcr%8!Pm}r)LN$dHjgGR@KhwBV0Zwggf zd$jJ;F}rej{m(5@p$DboDq`a@o3G`M$5-hczEYaNq%=K5s+1Ub8`0#RY2QXmzBDQd z>hi8h@bOySwnG_)mxgC&^b=x6TREJDXD2?{N&5X&$uennlv-K<@w+jpC(CbGqYk5^zurbpFC;1bTU)!TIovZGw9B%@ex4C>diC1CpzVj+NnYLj#%)*M6gduy z3cn40Z0Ne4Kc#ly&W>%N0!%!c-%fjYutyCJ4!tt}B+i~7(GeWbUH3TtyGGHjvq4kJ zy}VE2O@cUDOn2FKKYKRN;F#0+V)P;I^+toE3<&KAj+BKZ5T4q^)TJeoZ@1C$<9lyft+EpU!L;E8& z^XgBiJMgyp2liyyY3uF~tgDd9{(UAIWiCKEqxA~y4v&XPHIJbj_=-Ph1-CT6P15%8>_E8 z_M-Pfs^Jj-n(DV>%7O_;PkaiUGY07HaGBA5!nuU9Re)*6zLQ5k!s)G2JB-hub4N~Gp}m3FJa zV79nXNAfN{fPLKXI)7X?METXFpK=Sau@8K$1<=LP%>$v_^fzV|_q?gc8G8z^D-Fq! zBgrB^i8zU$elM*J3TE?!&jd`Z8-8@Ua%#L%YPN*;D6z5V*HHF15gK3oV|x#t(c>jx zI-Xh*W6yL%M&1yOP3d*Og)d2`1z(_q@^}9**s5apL{p*2cJuUF{>iDD81hnZTSs-u z=GM(Ioew!xTwU)6$Is8*Egr`np6|by^J*>yGL=X@=KnP$Kfa}0`e2(B?LO0M!zEjy zMpv(jjg8A0xPcBw|5QWE{Yx9Jd9pScUGvn)yLYgMHYKHUVq~b_!1eLVIQjm=_fBP& z738E&&5WP4E-5Ha5~AB;W_G`L!}X$|P>-JxipBO4f(b&-tb6JCOE|q^sJ#45E!w7x zO-K8~Q*}Z)-rwBR_nE6HcU$<4(rL~YVpgM1?;Q2~<mlq)j%@o0=>zqExoK$08-nV^ zYZrQc_SuWhNB!Mu1UDV%AN$#pu5FnzCAzkzV8c3wO_^JcT^ky@UsS{&LeC)}mFt)i z7`ioR9apBgS=(D)*4AS46|ejg6GIsNo1*p&)!w{4DuVNkNG2Jv*KXd_xQ`OWIm;n= z%BEkZOTe>h!rF#;&D%R0c~?nG$GK0YhtRXsbsehzs**;+W}Q+J_V&)MYYz4D!drTV zG}s%PML)Yczkfqd=xJPC#=u1;XdP*{8{h#gwWhU*@OX|0NJru?E!1qx0Jr^ zOb<@DAQtknN@PB!`N|(Ee!bT!?2f=}=-`%U8^(&2>#r6ZH5HL)S<(7TS9{wIovoL4 z#U7uixYBkx$=3G<(|Ar$Xy{PUx$j4q1{5W#VwesrG_6PQ3)EsZJT7{wQV9msO@>S;SLY zu#uivbH8>XNbuA$8&Yr7xhC`D49i{{=~br;@JjNz`@(g@&&7q@e>NZ9RF9iLZXd`h zlQ&;cVXHbPewFIL0@049<+e*nVOy~A^)K!tP((&95%MXG3+X(=Xl`Qi_QQwF6Dh#z z$(g{5l!!V|81>u+WuAV9v1g;e{B=-yEwDCNv0_ERuQvjOrGP4p&)4_dWF((*(JxMk zJcfE+5+YXdsQ1Oi#=y7$kz~h~%tzIr7-?E0Gc;K+|Awna4@S({{6jx zxdDtrF#dvGR4Auurs6P1`Awl$79!ULwkiFN-0Es-;ES}coCX`3IB|$)hv!K~Z;-g~ zpk77(Lxn79qmD|^ubp(xM3N#DLwS4m`w~AFE6{DFydTk9d3TfL&y)1>zq^s1f1BZa z0;P;^Udlqh#^~?&`1qlQQ>-?yRXQU@SZ8)c*wORdv(p1{LWa2pdu?qIddMjiEs08+ zOUH5DwcHD!$hNgb`;{HNe!p6+!+nxlhyNr`lM@H|S_`>f#H=JWtvcE)5(+quVXKUU zK$=uXT(qdDrqvo|Lt=&E%hNU6e2(HJ$$hvdQ~B=J&?|w0unnF%%a(>Nq;Bu=zT;N; zSlc`~-6L-e`;K+NLo_7*lBg9cDl6l#J=Uz{&YQ_L%9OYQ@2%?_T#huqF}fD*eDFcy zk1SHvrIC=m;;{L_nRU0L z_ElVifU2XEPJa`x?sHD5NFnL^r-!r8t8U*BJ~@z|WBAmmIh4byg@3wB$*vV)<2}c$ zmeoMrrfH;3ttpw2#f~2&?Pi(v-?kiHv%=OUIB#$8-rX67lj_OhBTBb8Gi4m@bF2s6 zCzcIHN(qR@E53P6eqJa6g8JWS^6F%}*G=1)W_Yxys&G!XZBaSs-8j(ksbU=^7+2*# zer#uKnd0_RNw_G)VZ+HozKv2a{ru`+Xvpk(p7p$%T5*!OnfS;hKX<9kpWI!YWOYLh z_j0n{y-QgNxZ75WS-J9N|BTY=dl&=|{P$bDuPe&DNC~x%Kkg}K8`%}LA3F3YC z?=MbzBUSA2I9B}k+nV;+|NW-+opWLO!{D}d@s^t8sL|k{-a0Lx2+=s7B^ZbJYo;(d zfw&($@vUYC>gowIp)~rW|;l5unjlY@(?thRXu`OMC!gU45%yjYR zkOaNQ_gbsht&5sSP$D&u1kC#ydUg#7N0-VyzuS1wcmAWCmo|QkJ%+ZPhev+RV1sYo z2L4qD-dl;_Em>8`>1ipnQzf5%k8z0o;JrrErzNHquW3t8UA4~A=uffT8-G~`{n8Sp z-jP_25(ZVnv?;ge9sXM)537^=qEjo%baTW<(sU=M(`KFPGd~%(neK%d!0gPxO%}&R zlpR0?Oz$a%QWjZ=FiT8b`=)$&oZ()SM4o}50gHj4=Oo+Qe)1Zt{P+>QUh6=GZMC^C zPi@o|-v!#`jqhu@7+yJlSunSjsRY`g_m6Nz~@2@R>vH70A*6YUalH;$%D?p*?G_S zYDQ|}jerS9j5(i%FVRUprV+Lq-F^xTLga9X&zD$8srxc>9)&NzMW7U)EqL?|47}JG z5WJ6|5To* zsZUVPeI`+PR{IgSDu7sV__+!T55Hm7pXyFd6JCk@g2SRQD|E!?uWRf(dm7S({fkOL z=@j0*TRWu|hLI4N^a4<@T6K_k3bdp!p^aM~J<4Djg-RnJFp&L@nYnpGwnK8yfg?AF zP)x35nH-syOF&BS>{)HsXEZ7ke6I45AMF`B+GTvbsm#yx(yYzR&$-kZ?G)Q^Xmi=R zU1xt>Goa)L^lSFw`S+ae0uQfMX$&TjaYuxl#~<@dolm(gO=D$mQ#l*rwc7<1M}!|*fGHXNqnEf z96lY9k(tTc2cQmyUhe2&@NH0_d&E`9OeKRDCM&Q$@S78!bL%;wV47AhT3|8Ie)OY4n164z34_zGHp-@bnj9a$ zRsJ1N&S}aacyM-?ef|L$W$mc_fvr1PH9#+Ea1_&o4?paN(()-w?j6GDW&C^G#?h1g z`IG&?XwcL?Z9rT#vJ2|{V=sN*7%(i~gN3KrvdLxH^5t)?!Jad{b=9g1qFc(~(EtZU znk7r5AYuZJ_~!K^E-Zgw!ary3W@TwT)QeIaE5@gCYD7zU>TQ;fC@(VjF=W&QGHTno zTs43H)5Inq0`og&t9DO1GITR{co8L=WbE%Ak%0k`FX5{6ij^m6K-xTIKshP)L)|`) z#ZcfG0>fb-3TyISL~44`e*rn2^zi!&$|2K6{-(7VQ#?B%UJHWi&xl<(# zGna~u&zwQ~CTWX0+z_Hgt@WH{N>}n+WM6xk#)iHPmZhp^r-+2mN1!ni73U1xZ*3nXz|Bypn;$*R6nifAz5VWZ1B#YEw#b9 z8*U9+($YQ?kI--3ySK6Lp-evA(xv!KVlRDNePBVlK|9x#y>`8ILcty*v8OY_(1XEf z3BG!6Zf%AEXSrz2mBQV8GDcX{%9Mx1$j`9m3lsPN-&XhaHDqG0(B)A$pds>OJMl3EPJFgM zapDAU|8wWg!Fld2NzPbSR#sd4R+ANT6a+ZkclBJl;*gCO%+5^0YDLZ%pm<^xl!=!O zQ!!9(w+{T0PVCKr#x_(yvc_YK>+C;>0HGQL5g_ONi9;WNY|j*XP8IW}<$4nck! zl6k_(Dmpsr85xR?eED*)-K#%z3e81ctd>iu{qHh0IpZ6S zY$1A9kek3XwydO$1nI{=kbMzCclB5PZ_fUntl9QKD(Lf*a zLH(WRXfT!-LhF{1QTOooMBtTl)v*8m{W}jgchaTRY@e_};LMDv1INXyDl4l8bRM+W zR<9(5y!vUcUa2|@lfGuSzY@BU*K(ougk0m3fXnv15LiKShH8hrsmK>1?UIj*5Egu# zvrX@h&O!F#UVlUOiPPV7z{&tA9%iv{w>>W2)7_1!Ra?ceM_kZ78c~MOiYe;bwuth0 zdqPXloO_k2 zw9jxjDP$c|Zge~HPLpp0DvF5m@4&dzU%mF?K1NPE?w+)fzQTwrMzFyDs`uND)*F>b z2$5q90Yj(BKJ2@Hf3uX7)Z=>i%Ay&PE2h1gpL|q*DWht>?2=T8GiN;I&SZbihso>Q zr--uwAlQWQY4g@!jMoG|l0yf=aA${~E(}Dm=Ry6!8N?k!2S$U12$>d!BLy#6ETap=w>Q>=5^SqIQ?$z_Dz(goH$c!Q;f1M`{8_fbuW;`GpD) zE03H9W{vmpTeKfM3)A{ffBp1)+72QKM9R|mUB45lC;0?dQ0LnEcLp^~Z`FDFbnNa^ z#ObkU@hKu_A_6?k+~0_T^uPtb6~qxrK=?R)O@fJ|_66zgDqx9BBFM3jB_rqKYSOOr zs`Wy|CZmK*B7y5t9utRHK3&%N0{&hiV}J)J4Deya4QjwQ*vG}$UR|~C*C~h?A9DPi zV~8%FL^qLB8M^iOq$KdaHi+AszzY#FAtzV*YvkKQ$*#umRG&P;>cdX${iSyDWCN5P zx|9TsyjHzpUKI8loGvaZs;#XRmyC#v?6oJq1LX@{@M{_=tnC@Gw6s+GfK6BIbJ22zELMzzmBjshi4cnC_=f*`t5Gf0X`=A6DL@E z5>_Q*cFFebFc~W(Cmh6i`J!CA?&I>yHrrNvy0{P)LFD}Ue$e?wsdD>BRA9EDc7 zuO7N_{9Cu$xNc&kJm-OzA7=qqEqA4AhXB)a)2**3bp(v=?IzX-GP9UjW>_~odt+cb z(QxHU`?$(R)(aOd{5$#Lfo}1`hYuDaFq)(zZWVH%n1Q$N-_MvDAG)GdiO|oGJTW!? zGxt#Q2RI5Py8WzdX^|2V8q}X@*EcXU6t%2ZQ&;yRP9dZ?9}~3rZs^D5GBLb-C3P~-~&5ALmpWQhWH0kqM{-y&HF)vXNV3N9f2hh zC^b1t#g5d+j{Kd64HNjRppb);=7f1X$R<8^=T*sYT0Wicj_=E*-@nd1y%YlazxsB* z@;8L$T4c0xM2{@-*u&IRD+orhYv(eR?7_eDltf#mLBTCsjKQ+Jr>mlJEiBAPkcE?r z3r-vEz5L^WP+b+Nj7a-%cQ*JYvC`Q~dh%<#HEEoox2~ zYHDic=E+6RAyCVNiz(=Bxe*Q2=qY*&aG}dA#waf@uUc?!93vPS6|;nIDS*_Vk&G~@ zF41u;a*r*L2*(`V=Z|F#F%XDgI|_@6GGkH@56|`}1JZ*B4;q$|td=~2-2mvI0q5Gu zInDEam`I8Y{+J$X8TdX*G&{bO(TcAjx?JCQ9AQ=f!|`==7r{=vJlf}5_IGk((vkaz zPq0XWVL;fCS$o&td;+-+)b*H_WwnL)e!99%Xs*9`9#2VKJ~avGoqJYym*SSU) z!tI6P#`T0|FZh&wv&OiET|;B+;257gvX9>%6^Bjx9th^Qr<}?gfxBKmeeWv<}aOl5e9gw+a3zrwo2bN=<(L5Oxz5`g@@G z2ipSR0seAyJnB6^ck5!xB@l5Z>e`t@hYn$ngV=~kFtF6G=PGetLBue8j+g(1cLE-R z%MtkV^ah-ho+MoRi)nz!79{Y>>jF_U`sf{geIS#xJv4~Y^cSyoAm1LPq=ye1G193) zKKzJmmeDahNFoLSIJ(Bbug&NcLv-!=&MMHAAW*LnquiAv7ma-7YZu9^q-FtsLxJup z9XTWdj=zRHWGi%;_*sxm$?cf8|IwL}(3sGw`3L{J?Z;;)k|EkSpyQ>sQc6k>oM_&Qm*b57-gT%l zlO(137eReD&A_wkHcRK1)REd&o9AFj-M-CQ5iNN7AUZ05jNTX=mwL{`237b3sNpbl zXC9RATC?J@CUPq{aKe8gTro2zAuet$6O)LjD5kCW*Cj}L6nlg&_8c$M4^YhsA&BMg z6zPsenh@+NbmZP{<>dvh@*cRls)j$TB$lEFCVhuce)zxqLQ4V<$hJN{BSXFEoh^07 zIaGHzZ0L)vQ7TIMwe~|R?${*DrL+APxdxc(DVQ-w-QFVzo?h7U8=PM74>ph7I$u*_ zO3q_epHI;Y^X!t6Y&QOehK6uQBzYPd8gg=_n3uNxRa{R#XR;)Ww_Ng?PYH(IxM9|t zTGdtE>a<12OhHakasU4PCr?J0T%HxzQ*e+Bty5X?&>)@F$Eg8CVsf8H`U$8C8Is^L z;|~%FQh2!OC3(O2_;|wF!#vc=>59KUL&S(&mRbX9z0z=?HcS{)VSA548qZu}&zdW{ z<@aS;aqHavPpqmX|CLo0uJ~A9UA<<rV6)}T|RcpkESVbuaL%BMY$!$;KJy#R3H}x6B zlTGXN4rDC~SdVK#ene2^$h&(f`9FV%l(4e04*mR@qQOhN%xxXzWmyg-Se8#uy5#fH=H zZ9>6-o+HBM3dItSq3d_1zATY~C#c$NvlBojj?JiO=YQY#+K2${A#(dzfsT<)?b;b5 zqrI3j1$r%7td(8%_qGTM3c?&GH#buA3bDPNDG$K;xe=hm9ox4fce(NM6zz%?H9aG3 zM6HZqyuXGL&A7B>WZr;{cPJm)BsMX-&EvST`3PZ?bM15AC{9g+tWLB;iH%ErI*^Ei zdF0;&WxM|)>PzAY5g|En9i#M4WbHC5r&oZ$%0qJm4}$_MQsOr8c*yZxxsA;C+PLoP zwcQKIf91Jogeo*({RE2A-?4lST%;m?8}Rdv?_~!4?2O5&sr@ZSNBXI9EvJ9xOaD18 z1k)AZ@bl1fOHB@?c-U&U(LzYSQ;D%>Y;o1^pJla@8|$n&TN78oL*Tyy^}1;g+t-U) zMJgspz-g{rsMO76TJ2QyZ$K@ha%m7f! zCRY;sbph4HCY=W)Dgv)#7qHCMVA%TOXkU% z6`{K^m?_x`{%eaX5|fj6MU*QZ#y$H&kT4BlOFrG%ojX8}L!96@ytulO^j}c9kgt^v zhZ%lt@c4B)PtRJA1)$b$$4_1M-Ge!d{58RtOj5n-;~W3#6+ko(Nw+DE?0n!N98rE& znDvbyCKVypoo^wpL8|>yzW+HUFT2;!1Z?N^*``$_GYJ^XW@OYj_z-y90gd&a`_>TV zND0v{0b}e~!rlk1$tRR)OjQ@sPn|2)J8%64+Z?lyvVMa*VV`4;o$-~Te$@HsDw0qL2zF}q%9wvz*$7z z`pl^08pb(%YGq!#Hkd;cF$K6TSDmUFH3wXl`(p_`4-N&Ut(LZ*BUweikP7gY@TjTQz18CV7}6<@49;25#2Di!&PYXJ5S7KNwbF zvRrK-IaN zu?)ojz2~2R_3ycM2!r~#v|XMWVU!(H;NlBJokB2YMQ`6k|I{vHHO;bb#}Xbr`T^oO zpEX&>xRmOP1J4c2G_5nd;^*rdgfUIy4~QNrTyhAp(8vS{7S4AFj=vMJyf2GJp^fu% zH3JAJgmP72_hTd-Ol#McM@u%qA+h`{W&{kKDKPvaBxtr(yt6N5DrpnJ)B%}S@C#~= zCp;R!{j8eAL;0qsreuRy4&?V9MrY8EA2)rv)#>sE23}|t1g@PaXsKCAhRt@P0HAYW zM0Nyi6)|ItXr)rvc#A>lIXG}r3jrEomZn_4^X?y9;grEvT5@>-RE7x05JEeoQM&tpu#lUpNoI@Ql;0XiVPsp`<_)ZgsLe-e9efjv= zGk~BOgj>nbw!a`q&|jJeH4H_!=^4s?X-g5GY=3re!p!Mc7k3K_C$36<@BkY-$88z< z(U(yvsMgR1fWdf$i+k%?-~vXx$c4!LydS3A_S-#)`kC(x}cX%xytRMiN+ zn2tmYth}5)F;+0E+oaX{`)&gj_fl;CGODW_+wwR??~IzMrKNf%gXu$n5vD$Mby}f( zGSc@|LhGufb+c>^OpKbveYVgL$GmZ*)*~Y$NL*9Dsz~M-CN!7^T!TPUbr!rc{hiw1;Ewn*W+}S6d#URTWhx#`8%P0H5f-`#YT9uTvS{ zd}8X;Nd5h)BYSH+lmyBjtbvjL>(|4>zu$U6%o2tw%lnM)B4LiV>nF(cXU?24D>!lr z0$9ZkpxtJcmJTVUl>SP&MU~CxDlN2=-+upocI337VQh&}H?bt=uX#VO!Efp1 zLB`X`>FL#G8OY=xOj80o!{dht$>5ZA>0s;vzPF4q#_pmTcG>#a*4=&Dbs#Sj;@G%d zn2!SLFdAW%L<3{5k|ww0hyZv4DVfa^7~&@5xaKGnmM!W9ok@dhC}`eN5-oY*>^oI* zjT=40R6mHq|77VI`bOoL*l>aF9nU?udnDQ^q+c43<)=p%;0{ZvBt&8S&R9rdX6=}S1ul!{pIfWZfxYt zSLTbfgaVybC50kj^Ydh6T9Xwd!($M;oDzuuHd?Wgk@|)(1%Pjy()d0JF2%b$Qu=A1 z0(S(<#(v_FZ}z8PqsSJm`tyFO^Q&X%&~~Y@pJ>=S|J*JAg3{m4r_);|I=n~kftoXl zXo55`*NCtwu+P9KtKpH6yyY~D=V@)zxsRaMLb}2Xy%-}S~4zgK|1U1 zVcj}7hq=HgQ5pz^w6wn4;G4Ak3Axsd9Bw~eqGZ?pi+|w~Gx<@w4y`--3qz>euun9S zM?l|z=r_k>I=g|)MVTj$(DVN%D$5_fh%R4mU0q#${fPu)%-4%rNoK;#HCpy(^}3wy z8JQqtmd3|;uD2dI^dwTqkj9*5E{0QkdmqLZ(5{2Ou47KqVA72nOg=ATtaz@qV+I3M zc+U-sSKe4bG`}c|i|JWyAuI*XO=#sJ6UOdq;sdlGjMUV){PqYAn!&=~L>aBR{|T2R z_t_s}&a+8BcUYkjSqr#W<0lWb!tZi)SoILv`=ARz1Dc!r&sW3h4C7t)2@Bi5zRYlM z(+0EkuMHk!FvQ@{@5>O!6j444frKYdo{(YZrR3&_N>T2TS6-i@{8lu3(UN$sZ{y}} z_nhhQ{K!f$na;d(75ws@&mv2Aw7&^{30%X-834BAG=RJkOmx(oDa{v9TL7mY+!?wP z>g66kh4dn#2bjBr+NybWu1mOQ`n2tjdN(o9gL3j;p_MXtkcZOaq$Pcvr2}u{)T7ma zl};BfVh}1PtB!tC$2ukEb(J@UaZ6r5*ylO3S0Hrkr}gZpwcNv8SQHTX9W?nAkTB`N z0~~&o9*xptExv;8pw4Z4d~4)UB0*$nwp1^I&)v-pi0K5TwXNXTH+9Q6TFhm5>l|Nh z|E#i(&Q$UH-)T`?`Po+Pp|c{^&Fg>cAU9aBC9!9zep6b|@<5H4W|-*i6D>hQvpzgL z9Lnc&u78>?ET_oIpZ|a2q%`{U?CfmM4pf*~83PgK12qGXhw{*16SD|krOBg9!? z!g1}I!OmNl{Gz6>pJw$4y>GanUfST&i8h5|+BKFow8~{#fol`JbjcYESi#0xyLvU} z%6t9o;uZ-E*-^|$)-E`4uK~FTxIvEC!{3>W%tl0G^bVhB@pX3;8u;M1Te55oXJ@84 zmA6OT+cZkh;WDlD-Q04~`Wb`GI5^+nA^;r=70Bpl-*Yo4DCo(PojFbXjzsb!>I^^B zRQ-Y(xTz$>$BVOD!sP`)?ScvBZ8{KE0L8?3GMI^ALhv@$ZoTNUDgEt^)I7|kU(Rk^%#obAu< zSr&w(`)?l#Tehdw&uHEL8wqFAQc`yjB4BrM)we_4Gzc^IHrXY(tW%dnow18G*nkDB zb@XLYi^s;sm=_!uetn=iFFP`$VMRaD_@amjd>5?$kK)d1-pg~)ql1*rgFbKzxM{^L zV{}~BTu}O}$}R01d?PgbN9vizZ`=o|=NH|j6c#3XCq?S1`hO$!)Lrt$G#?3=6x@C5 zgedM5P5akB`r}T~qc@QIGi1*%B(05#Zb)j0QSQY$nB9;~YB((s^0AMG>P60Kf<3vx zF29j%0wkaksya()#^@*=|2sMQ2ZTw_1N)}_Z@vGnipT$FRq=E81H|fk&8T#lA;9P% zmR4N|mpzoJKT;PFUDr!j1@8Q1J>=Y(yV09cFS8>oVf&Y|Sjm5cC?DlMsFVH)5GoL3 zy*7<_WB9z`^u&lYY&iGd;Q=s)<^+@g2c?!j(0PDf7&5uwpdi?s&Vnf~QLRUh(PJ>B zN#r1{sx@7?TN~|Ug0y#cU=dLqU@Vf;2g$L^`^DTR?0sHt6klTgWk!vWfyY(;q1kr#_)mccEX@1pM1n2!u zH5XDSzusUJ5@8eU5lR#0uL6`@(vs6P$U4yW2_nR% zU&;s-$BWm>^u&jOSn`j~`Oe?F15_45ngLMdpHiCym#gc0-VENY*I-SZ%{6-G^i5fD zn$WtP4O+vzg4|%OoFDsWZ$?DXcc*6Aa&aV7PN)-*J(Z{6T zT8rBq^`gTfctryO|DuGUVKll|$FZX{uJWl#sPMV?DGZa3E9M{_Jb3@b{&BOGEqClK zYU{VB=nKdkmY0pqg-XrNSlTDuJ_&wZ@cYN`_RoD*7dspe7oT<(znl=dXGPth^6uT0 zhF3~BJZHa)Mos9u972oX|;dLeD$HVQ*u$y2l=;)L~MAef=K6M^$H+xwt2k#m&r6ZWfp8{LM;&b}ivG zv=O!n#U4?pTjs$8@y%Z@MtdwLZI_Lm`gr#Gtk}Ld9j{!MjH>+5P8xo0=RKqE})LLhJRYi$d1kO#6J=+ z>_V%45AS+9Hj#H9J}4zrH7%wFSByxT5gkMaI{ZKpnQnpG2SUzq>QXQmp-=T4&W7(8lGqRC*I7E{0yP!iVg@081z_VqG1iP=1|8FJ5*IEY- z@#QDeK4oV7uiCym9LhF)TP0H3OC_aE5e*4hlBJ@uOO_f-McGouSh6N!g%Cl!Vaz1zeG|K+~AX8v12PH)t= z``;XJC}k50=dY5_q_$OnX(Hp}Z%qjFMR{Mj4-8*UjvgO>;lHCI-bc)V3Bi>c)>W&v z9zAb;`4T@j${`yYo7`M49bi=K&idl1st1EE?$Z{M0H=c_Oz`W#xbz*eK$%}hg4z&7 z1ef;0$O7CK;boHL7>OYYytK4NJ`)H+!=eZ3cte0u&R@6yp^8`n7;u|^as1LscNA{` zH7Xmt&-(_6_l$%=W)6J@W}E89$q||7LT-`We#g#n%zj=73{oe0r&c3-c7}6i-7lA- z(o#MKl02GSS?U}X@&NI5pZ!~W9*HLJW%y6o7{)x>`*^yEXMcf zEJ%hv1FK?z#_Ni~^;bt>{QCmlB+Isrj>O6~@1HLOyBB1kUGQC940HO}4x5 zNNDcJ*vqW+KVl(75D8)6!qT@ocrY~hug|GAY@MXZ`F)#M433Tfw6EBL9XJ_|y4h1@ z;Zp-1q!+}O2yqcHRm2&#lnGldU{X`(yuv)BHow(*{t`G;)+OkBb5>5NY;h7*23wGd zXb}+KniQQRBom0ledCJL+0A^q~zCu7iVA--EFtX&M4EF3$05~`P^6kW_ zp7Fb}5Brn?=SZIARibh(ER?=bvf&5!*oG~Nhv;JxH}tdQAC&WGQ5_G<$J6O;l)+9B zy|g9ET9%Uz%f^O8fsr7(M`Y$4fzoub^nY%BneWXxW4Y3Y{GQaIj})6~z$=`c?FJ7ZOg1#< zWZk)Q1RxRqe1oy9E=hzIqG9I?g_@E`g%2ay0R@S#sRNdgRwX4ZZMHi$Zrlh#zp)=E z`=S1H?NxG^H(=8uJ#LN|vOYc=ZfMIwGf+Efhm954%f{H$9^5_z0ZVy!cZrEeZkPe?c@4Ed=>( zQ?#ePZ5@hOVvs@m@aDxJi2^))Z!NWA#fs*{O&wx(4rW3*`~_o!pTOMLQpa3_t>X|_ z_U%;pKzR-hRuFDWai?i=rklEC9*SfPgoH;)TI~k`*2yUYT`2Qgfmg0T3KGQ{kf93k z&_allpg%h}=(6H!K)}Ie1JCD(WBLT3KQYm=;%Z=En6rbeZID%pNyh73GWa-#-X5^e zYNMHUUFtR}hDz6ctE|M&Aci=CSddlkZiiy`$#n(6)@dq!@0IE2PtM$2kpAv3*r$Hn(NpmT?BPuB4<3q}f(m?uVI&lBJj_w)eGIJKqO7Es)wfH$;QiGe*&? zEBgT5z+5)v!GoHo&UU+Zzl20$)fp(n$onx~z1p+I7TR>}v4G&LRNYav>Nj_`w*LH4 zJD}QU7aUm~mpJxrOd|u_go&STl-{q1vrdSQ4<`*mOz2vn#Z94^LRtB& z{x|3xV_;E-X{BTS1JNk2joTe#GqP|&>U))sWq_(>M?^;68td!)?5CTn60<)vb7xAq z_4`yesk{T?;;GE?v{zh(=WT=2gZww;?sO?r#l8`1FC5Dg!zHkFxKZ~FMj9fkhVbe?%Jyg}i}v~X z{mAN)8Z+GE0QT!wZy$sA3R5}T3MxT$L>@IdI*Jjf#BUYSKVUh7JPVB@agABCXV(IF zG0GYGbgCdy((20ar+pq>U`;dL+;Ml`we#JKb6gL6DLm6z1-X2C>Cis4$AA0w@x0lF z5W&L`V)Y)!NKsjNxt_}_ytwd`aCck_TP=prtPslZ1OZdR8?3Eu#gZj)m2KJAdGMm2 zqx`e8mA0q`ZHD-xgj(&KaN+~@DP&Bl!Sswu71(yX7*~5rHp5G>#q+4eWx{`qwa71q zyr|XUMr34iWgB{?cS80&2tAZ6vw8FW;VbbgxfDaLO|8!b!eUYytZU1GBzhuHf!?aF z($_h2>RMh+NE6lyva+%_p>$;P4nm&pd1idCGL~VjapBCVd$*&LS%wKJZQ5p@h!f(g zVM)b4?gad4NW z&s3SgfuC_Y8*_3-G-T`GZ=+1-jGV!#`2E)Wsgs(?KEaLBx+Ikrj;WK?Bb~Vt>xAP> zo;&f+=gM4|hoNISwYIYIz`aVviC=x#!wkEr=s=z-7?W{4-8{H>Co~!tND&V%r%M3& zmcB6bwV<+vshXYRKfe*?b@}=AUn48T`S4p%WymfT9CS(D#HVhypCa=3)pSy#9d{6FR!lvt<7q zc{?1*FCzd}-T=`#*)Wl07{S6&p4k~zC=`o>r=M`}`S#~drhO`PY>9MraW~0DaNV$B zx2ZiQyfiZ(KSuAWCowgD-K^5OX?32Hf#{=q4569`tldFAC^Yo3P31=CN1%5fOb`bv zAN@1)?9;wtvQB3P2_H*g>`n5QtkA4Px(N1Hqwky*K=4seE zYCn9)svI&oN3rqy`SRHU6?maAgt*LGtnKYJ_wS!QcW$V;jZ_45Fhjid!nlaI(W=*G zpatgc=B5exvSI!RAr>6n=}jWD73WZq<$@eAclK<4s6@jhFwM?7Y;YMBta7u|7A?ro zGK5C9>jtQOYi$*tnCE92Tv=@)0lKi0KD>}=t#6b;Xz701LBgo^gPZ&3tU!|!u}owC z{*NAhdN|7MIE+Kqct&1*D@Tm-$(=;UxQmiF{O_r&&<&<5f)ogLXLt6uKw@kyCMQQ> zjB>rAV_?yJ?Ry&8+G-fHyPbh)uY`u>($qg2hH(r8H~>Z6h8DD+pI=ti_A$ykWRhW0 z()?P@&XVgMr-OkW5npcIR5OQjF7dW!$-f&M90ctYGqNQgKG3|2?#g|dgV#k5H@Wqe zGDRpeiObqc8A4MV6_fQC(*@E_4Q%0LGQ#zc-UB2#Hif`GfS5XLc(H7 z*nsL?8@!MzUXZl@(Tv6}7``q}PPc$FIyj^Z&!!&Q?re2c?bz$}H#avBU*%tb zcLe9y)#&#DYIUvENDqQuXy`xaIf1vSOQ@@}dJU-yD_=4Ck$Hf;WO-<|$-l`AJ!}P9 zz@Of~hlA%@kq}0V=G$bv=-5D)BcAgf%7s!zNTCHJ1u;?-=56DZqiKW`F98iLNEJFP zU%4`|6n>rmCOqkt6^3X$JGE$sgZtzOkX{5@?`J7;94!4jP9k^NmX~Sc9q=984HHmC z>w1vI6w^+*_n}4!FFO`bemEpOmC~3x5h)EXswPRj!-v6+`lzh|I*@Uig|8+-dwfz; zCX9nW8)rgY$SAZ8vz1VU#cZJFZQ1fnazumf>;_QnnmRj^s%$~BNU9@427%e5O*c5< z;^?Snu1r(VKVg0HWGGKtWV@AtvyIx_^3R`54dG4;R`Uf4&&on>cV(;<-ek%HZRm?) zdVdg{H}G?+nenku*Orqr$vcO~1u0}&%~Nwym5qStqLTB%5bS<;K4M z-5v70l1se#S7s4Q#*3yApymYI!oD2jvHB9TigyGuKH-No8UpJ@N?pZj!-pHkx^wm`g)~0j*$pCX7kSacYycrTAg`qpvE(y?!cC{y2+uGJbdmJFN z2rW%y@@;$ZMU)0K$<=iTLkbG0!$H(H&&X|@ccUbF+ljytiX4I}qOC{u9_S##E4Ts` zD_dgruBYR*JQSJ9|Erai)(34wPRJ3ncc>Y+$>$U-R9@4sX>l)=(V1Teftgo*xRQ$@N&tGOJ5;-cD z3EeHgKyL)HbNg-_>{LO@)<0x zQ0BA=S>uKj#eO^!gC}vjYSiSpNLJTpBn{_rf%YbBAS4Zw! z+M4Om&H!uv^5t15EMN+D@gkS=#XOH8Z23EWe(}QyW_PBbr4WLN=wd`Rpq2E-)fk0G z=AATb3hh?{k;KJ<*7FP9&z#!pDTWnaOCQO)iHgeF53Th}T{j(fR^mR>>fXx#kD&fQ z{r?fv4;}X^(fXeT_2izdZRd#YoqfcxDSS|w-oaX7bI}P32%Y;VJBZIU@Rf=-1zRkF z=f@*-1Mz7OQJ!mxpNueH@7Z)iof!SrzzV-IYJI7$oQ&k!i3qbK>4pXVqBf2##sYZ%Sc`~IzbZ__*&Ve#fR#xae!3ZHDWWd`g!ZMo z{kID$dFK{ak718N`A5{aWx9HLcb1r#q`%TKMwjn^j$&1%;_;D0AfqfseC9!LP(@cB zbrjmtEgG03Nx9;M7tkTn3)(8j6U#) z(g&AnG`pc91JVkJu{TqdjSgqpRy}Cv%!aJp0iI!CmO_EaH`PtAE2DUt^yno z;d-A=&=X5m^M5N`3u0H(J9)AT1{zHlF&7S)xt$jqOR&mtXt}jiK@}XWwFG68jY2j7Z_AT|WYZ)$<6 zlV7aw+?bP-Q-(PfFS=*ix4&+rHN%RXc*6&M1i}M|pFD)eY zW}uN_l<$0dM##S*nCU=d&8wj_&nWJ&+-+-RV}puo+VI&q+^r=z!>Lfc{3fMn!W)-M z)I99qNhDf-;&ggWQo;PJM~}8jOFvFY38cswe}8Rz?l?R1<+Y@DJ}kr7B>bO;M@H%y zN>#h)mV)OHi|5&2=kI(-1|SBR2&Cm&uaUhQ8uI<;Din8a4ADScUJXtWn3Yvk1AN;x z=IIWuMWkmvJH82rxI^Ad+YAo)w^NG=L;e`i>oIWr6$A!KaQ`~mJY5L&nw7kA!(eW7{f_4R}#pH}ov(+4+!KJ^n< z&R~`3i(AUe%C=JFN7$QG?{Sf3l0B$|@SaS5W%71RZh%>x;{7oNGiLtY8`GnEZqB#< zRC8l@%+$Rl>ICBHPL}b1?O+0nr*=+aqZ{O|zhrk}R>;&Arc_&Nv=I3=@Bj|4=BA?H zTSqoR(&*R>Vgq&8yz*Y+X5&(2JRpu%FFHXr@5nx0on(T4hcH)u^Q|Za3@~((9-=>> zm~z8Zh2FG~7r0pG>s5Vor@OdpSSYM=fHayxPBDJ;6$0uovH&!MK}o=I0s%YD-QZX7 zr4((&)_X32JeW>~PX~k-*JC{8XY;L7apu6Houqnaso8dNGKAi664ykjVNwt&zJiz{ zv3~uo5i1Z*t*nI9*I%=Ud#xQqrf8lH@{19n<%!XNp%LtxekO)-G2?|y;`ZGe>Js|L zHtCWk=JdRHyp41JyD?Kz&Pd?uN^?0`S(GQmsOEcoCUV?gfKZ>4o&EL{%RF4hv>7%J z=q)ya+g31}m-kmys`mgQj7hF|U+IUc9gP0*u~99bPU_+lCt4J`v)5xPTV32=gHHI1 zEa%1bT$gUKZd!Qt{YRe3TiN-(T`cf@b#*s1m=XkiemM?gK^*?T;mH1N&hX@dO$yll zC!)Q;$A=NunD%iuXsK+e-{Wfdf=YgR43punC?bpDBu=1WSnVz@GI(J4W1mUBf?fD+ zreWeipV8uNWpCdu*4c5#K+1Us1`O38ag}2(kYi4|@V+jE5&yFr?bf8 z9p)23Haa>wtT#wqn3?|m8jg;Ses!=|LhBi+37X;SoWepv`qk-RSAUMv1uQEcseQNn^mUHq z3lxQEo*NdQ?edg;x{ReS4Fn8=?kponbHwWRTFQfMnPBeTCd4wrE7yBBBzGK2$$ENQ zK@Ndh6|TMCB0MbcDS5?tB+f%}vrRi?FYu=yvz;z%B*6 z=;h0oZ-1uxjM+JtV!~yYT6L=V#MtAW86!nH-isD2xE>mM(9rOSbBEz@6;kezhvX}W zm?mO0$os(GCivV>kfEs)46CC@zn=0L{RDW6S%CekX=?e-h}|B|cMqXvs~a=Eb`9`h zK@7PsMm`fiA}Zn}*;^SsZZP~PF0KhCJ;QM6h`Y)tAf($s9xv$epWiQB300m*F_)V) zwEGUi4O`))DRunBk)Vu#FSCf?{mwDPt4Gf*E#pIx<9_guFqmZIS6XrD|2QUj>m zuJvbHFeu=qs`^}T;-`9`+Uml+0g)1G+z*f-lmrB(jN_TIahAg>R>e{JuNQ*jYsLtj zD^!utjbcAv^VoUM>hpJdy$#dI-@WSDn$bnh>|W0_1VW<8#CdkDImxH*RzuoQ7Z2`q zLl_fzVqTz~r4axz&KW>^ava~h$hNjMS6_thM~7)pRi~m~)6FlaVTRNU4XaP35I)`^ z4?$DBbm@}#idk68#fv_ziM&NATE854`eg9S7lELVJlOqcZu~6dIMem`!_G9JbWzJo zZyiL$#s3W*fjlTisAbTM!}u05q+RK;mRT6yr~D3@ET2ZN zY?q75JWrJXgCnNq)1`fat79>1@v$_T92~hON7dzWXIOi??bJ;K^mH}~5jtd@v)%Z{ z%Tva5`W%&Vw0FEhd5S>({ks3AU21|QqH?6 z@v?HvpYrW@?FQ6JgMCTA>npj9$}t3Jtzw(jMkyLS-Noy>X!3iF>OdgasRH|#cw}8U ze(IsF`ul$XKGuvge84Bi&~@torFdY-+mM?us5UuM%7^T(g{9Bx>N+_p>hrSOk ztXkY$QAHk z6l~bm__j*79ZD)tqWJ?h;$ad^5opIn-MiNUgskfE$SZMggqwK-hS(eW@|)3;k@NnQ zofOr!$kO*O#LT#6rC0W&_Mj~(6EIe@TFezU@LXo1;3c~{UjCAmo|v^VLPxj~26VvE zf^2LERUe!a+6!K7J2r1-SV(}}x?$5M4VFF^;8;we)PDM8B_ShI?I|r*x@PDxrl2rP z0^y#03I<$=s_}rV#$l8vc_-y&o84DQIFj$TamJ7lR$0QYhC~eKP$)u;2{v8up1!E;6qTg;e{qAvjXI>MfHM4plE)nTaQC*!-x(!o$fWxT~ z@Jiv)e`2Y6r8aI~aIw*gue=FE@uY^bveejE)s3LXCe8~KkgKqka(Nmmrkh}AXQ!}b zEpFy;YuT}Diecg5HhJX1s@I3iCosDRfZQ?2kHQ1E_K0v8F%!PI5<&iOmP5eh%Qs~m zW96@*Idwu8&W!hIdtm!hLj1zWZlmzi6iSf$ro}*!68!c@cVu4VqpgvCPvCC#Y~1aY zJH0b8;Bo$Vdaql)!YW{_wwq-F9ALU!Sy0);&MrvIS^%15-Fq*F(QWJDY8W;eY5SH+1lkZX8Zdx(ut8bHEJP=2DHi2>_)f2Be{))O|@ z5?YM#z__3}1*Im3FpqF>&FAL6wDs6)2m|(BbRxPnSeeflLYHQ3lC#%^-qgK&_YU!) zO9}ut%f2SoGw;I!B`3KwVhchaO`Fo6U;+?u*)rO2UyG}|&lXmY-+6TjAaZu}tN#9# z9Rs}v>YM!*o=RFBSE4^V9326gm`Upk;&!YyD{sS{ZnVQUwM@ z;d8JXPHzpz9Vhhm_{0xVnx~^^d`XN;ZCnhDZ^Lg=bs%NP>YU5>lc-tgM3A8?ZYbDD%ReN zIwV+_q)Uf9%JgQyDnV0Mf5_>-twinrtCe_+0HNg4*qu2mT0LweA!t}f-5@Gz2g|i~ z3YvHiHO(RKg^qsy>Bi|>oe>8%oK)B8)Lpyi$l> z8$LI<9g}9C3NRim8WV$U0DGT4mG27&$r+BxCXw3PL5dE)E|^^BZc)QS$G*ZXAOn$pZd_zHIT`A){K;p>lTT|(W#@V zdalp{g8zc&KJx>fdZ8SqaS$5+kZVHc0h<06vm_gdH7DlG$?VzTWkDVT5gU>ZJCU?vC76>T1ON|8u z3p`1v3>W=_dTbw4lVE>5fO19y`asN#8~twyyd&!N_{fI>AQNZY-6_Q9WbP+!%lh3q zWG{0G36_3&)#zy`xnL+(5OUf?ozGhH{10#~ah=tB5iOOe_95~d;!2?YhEr>6%G508U`BPb|nZEa0PM&|JF@bvVQl$10iB&49AV0Cqso}OM>TH3grTgRimP!Zf|c>Q&S%wAH~GP7#J8bGc#*yYAPx! zN=i!j`T1#RXoiP}{rvo}u&~U{&7GW_)Ya8LfBu}Cn>&3DZ)j)`78ahKp0>8O*3!~y zX=!0*WI(T^4y1U=JyWhQkxPN)s+}ympyaa(j5C|kTHgDd-s4|>sfPcSHSsd zYSr?(<)QC^(N^}iYSF>WWRYfkYoBVxl`5a>snRmb2wQ5I_sFVebpJ~AhQ`|>>%p

{bl7 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 literal 0 HcmV?d00001 diff --git a/en/device-dev/subsystems/figure/time-delay-in-the-service-calling-process.png b/en/device-dev/subsystems/figure/time-delay-in-the-service-calling-process.png new file mode 100644 index 0000000000000000000000000000000000000000..d04fc58ea7b7f87148d86f6c5cd3423a042a82be GIT binary patch literal 13147 zcmcJ0bx<5W&?u$Q;uLqMxO>s!9PX}%9#UKi#odbA0mTo8B8N+H*TX69?ryKYnfJb# z_x^vG$z+qAB$M6EW_M>3sj4iCjzWwA2M31^kdsn}gL`-I4<1K){}0k15=8#jdFQGw zD*;zEPWm4P!CG8N91gA~4)xg#@gI&rRZ&y=?d|O!3IqZb7Z=OQ%F@u#L`Fug-MqCO zyfyE?#n$u?QPO-*FU}oWX+3!Rd-c}S)3dU&qG$>-_l@Kcm)$?RE$mo%czQAW*?W5R zAn(`uyMH62aq;@@$snprHK<)HtaEzpG^cg>XZ36_WYY83=*r$@W#9Vo#JYUgjvQw>ETJ|+2zsW69qN3k(D)MX*Y3V!@$o!unwy1@Qr|yDsg12_4J}| zejz2lAfRR5F(XsP6v!?vQPt65>*l8A?%8~L-gJ6?`1rK{@c8ih`u2GAb~*ZX-X|-` zUz{Bn8EE@DIS;=QyBK_XIC#4le!JiO^XJb$g7~J>_Wx^) z+|-pd{*mbaTY=lC&W``L5weq1soiw1wcw%)64iI+s^UtTq?va ziDj;7V?UmZin|iI1;;IsP45p9Lv~Ggm^<~CFME;$QSXXP{}jKzy`}FN*(LS0tZCM6 zpF_21@7z~zEffA`wok+q-r0YV5O{dprZpa=v04qN^D>N{jcge9)7zrp-{AUd*b$YM zmWEH}-G0?*#vy>|80I)0?l{4E{rWqrzmkE!EgI>HI(=_PT8EHd9c#Z1`N4CE+ zM6A?nhJ?PId~?tpZ`io{xKmD|dTk_WQ~JyJ7uYPRgzBwv^E1 zF*c9A*>V9J{`XPJYZSj;#oc^`M0Le(JEmVETAgXTp%xWrMG4OAswbN8YGoq0?X)}9 z$&c#Eg-L2=JbTh+f(GlYMNJO^oyxF5o;268Y%S6y0O|<$!Dne=iK={979l7;z0l|- zW|Jw-nNh*q%C~l86-ikNhz+yvrX}xGq)ZdAAKlu%epu5+=cMPn+qf6IXu`H@JrV#1 zOk!S)noSiri6WVCkZL>Dbv-4Jw6Ihz`$U*DZ2U{f zWkdo@Ao{1Cs>7gnHl9JdAbCb!(CB7?NtoH&cX-eTq+Ui)@pNtcB~0pZAfEmx`Y(Bz zfqRt8A-k&|p>DuUe>~MULa$4%VDju;0IR!8CuJ`}Edttm*1jPwecc(t_Yvqs$XbaB zxg6wOrvfAi_K6W4`t`2FBt9ir>Y!$~eD$qpM}e1_)TzJTis37qiNA!Q`` zjq-EhtY3q9i^#@18Ux3amoIl07RVh>abC5!Vy`!sF7t1k%!9KLgjDZ?El@N3!VoZo z7g2htJU{TW`}^G-Uf%4C?Kq5_WKvsIii@~K6KREBadaRBI}vDBBSisD--n|whHtDM zj?ef93hXzYKRNnyd``d7K~Jsj!RZf2QE}=f90=&;k=zZ&XkuC`@@10OyNlvo3(ROWxW1p9Qt_z?q+74Vh?H^68bf3$4Rki z740oo4x&xKygj}7<2v_yPlXME3EpPYrT+a`4gpz|MB8TX{EPDd>@9Ao)!&_@QLK8!0?r4Qnv{7w+SW#feCZ0CT$qCNKmm@saULcz zeUl744lMEqCK^ZarX!!-35FF@omx?Kn5u_=O!5j*NYC_})s8 z`K}EC$cm4?hqiD%N4?iL%m$5dWSeX-X;RA(_Xe(Rj<$3=;bLWD0&daOEv2DB+@hyO@k7b~1zO6=wA z%I{?N%|8y2u-4%3gnZRE)E1*3;7UUh6<7TxB1*{m?NE? zZMu_i!d^^kY&l6*!+(byou0~vvtysSjkgSaq{iGTHxBi;*J+CPSUafV2lN+--MKV! zD>>5f-xujMb(>T0dy*Y@gk_(n#WIG)kmqNjHW_Rb z$uA{52@zHrAk(DIRFVCp=S8F$wkAW}mKTEq@uQW+Gak06ZiP~xe-7HQL#P~ z*R*h4`sClX;CFiaWnLx;rnO{fhKNEBz}xKz1(TK8#vA-eZqX=ESw`P)AuNpU6g?*G z(?%bWGWY37HJqrNT0#4BXU_2n1?pRlFM2pnQ$S8Au3zqBmE%HzKT@hGSitbYAT zi?=`EP%whTeIXfE7@gW{66>59umhA}iCMTnlEC zwfU+TmrBPrnMHi}Mn(uDOT=@mVsw zOSAA=zRZ^^mQ1sBdAy;fB*`Aclo2oUu+bQxA?nNiI*KWq^}4R2&_RX-VyQ;anvIpH zIF3xUs0mt_vxiJ&M?F0+EHpvbsnc&ExzSTT3{>3j2SF<4_J5z0Mum9!@MOQ{exD-7 zVqq*G=I3WCoxoO@Z$Wxd+xW8I>MafOw0F<@TXoveVysng$ujNefGu$*G|)YM{)i#b z8c`IhaQoL3((SPogwuKHTGbY*7ZG}xBB7#bel^IuIN8LY7nhsZGEo~I^=X9nQRIXDH$w&0Fan^&*>^zQ z>pJ3&e6NiKnopDh9kI!@qKb=LvgRx8?|yt59qb_EG-}qHCfjR#jb9~n?g_RsA7EA2 zU8a2?+p;3sz6`B#&2}sjjZE=*8#-gGvR27(3=_&WoSeSBEWFm}58CZqeiQvxBa1&?J~ zF`4*&_gaS?sf`J5)XT>4r?H1u1*AvoOXGT@<_ya!_q&Ar5#EDrtK zRzfntp5sZc{37v89GRyiF{%5ZSXXu8pSMG+H$q$^kyO@D~=$b0@R731y@!7V`|L&B(vOT7$ zPWD-=O&=NWEqz@wZRKzZQ0T(D{pIy!8QzojoMGrarqNS(2zbUABxzMT>o z6grC^CNCsQBqq34dg^dR;m><_mNJ~wqy*dE;KpEI8yZb4GmM-9v7ht#>1u$`ULMR; z8QF3sT5tFRpOunyjv%(rjo~?WC?c80kq>)@rd{z%x@6za+&no#Xnpedx8WVidi|g> z6Tgb4za|-5M(eg$Dof}g`edR;6OX{(C_JUwc4KqvzNm6zX8dwck&ss-f*gcqJSqg? zFm!7(Qa0XVFAK0baUEFdY$M@_h)*QP&Fv`A#PYE6LOo5p*@+x98s0{Zg*bzjc*g)I z`u5(ferjp?+8U`h=7}+dwvD#)bK5V??b3qt-))N)pJK+L#!{{a5k>dpzhN%R6!7E&2(J$(@y zS=xAA%%lMs2~Da1?6AHolLM&B3UV>XHZxl|nUL8$1#w_Zm*orVFv(AY&OPcBFi~14 zOVhZuqZDJHOe_2r`G7uS7cu-iE0L1gq^@L+Ca&rqQ!7JQ+BUQbl%dUoUaIm@Qo@-P zOD&K`=0H%%eI`@z;zVs)Au%hn|N0iAp7V3=q6=rBofeg4*_$a3UHT}a?|ZX;=fvqf zK(MMfXPJ@RMl5BK_*~wnJ`Mm{BxNXYSXCx(PoeqM75FkZYa-^t`P`dehp`G};k)l$ zb(K>2ESA**(fU}5JU3!&&MKm!0f{WriLx+EZnnPNG$sA1=>bvt&0<_lz%(86Eq^YT z=hpjKorSEqVycV-3%W8m%go*A#JWW=Urz|NCdsH@3!;MMeukYCedb#T=PO^>DZ7ws z*0M1(G;l4JBmP~cWzU?$hju;8m`q6zeyfo*MQX#WAa2gu*E{But5T0ba7P%8kaSm= zZ}0@JWU`Vqt4fHt3@P&gGYlb)^-(DN`cyx~m{L3RcJb}fF%&Duu=iWjxB5_n8uP*) zG02-MaCRIQ2a9^|73VnY@8Q8>V61NUob7r_LS=`0tf|_P{&82R(TMhg=Fh@=M{vH@ zFPRaHQO)0MmfYp^-S>GORm;o1gmfQ&8d^j<(y@wNyxG^Q5 zBp(MfhoxT8bjsQ=OI>)eDrT#<`#+kKNR@aYa?eQyBFC`xG38+#mE`|%lHdDB{LS-( z@|9KFCi|l>!M>;jg-Y>4o8LnZJBc9t#VwB@0Rw%fqJ?-hUMoku0tGvKtC*6727`pD zue-GKVLtLugzz}S(VCE88Mbna%-iw4!ip!phJ-=}RiHKNECx+_#k7~Pq_Sn%xIRBG zHd~pI$;VAEnt9vH!ceGF>~RGK1{paP8n+V6op zC4m><&nVc7XcQ#Qm^3|;Pf51je7w<#8cefB?AC7tDxIPKi?($c`dE8F;@Slbyz4_O1>NEJ!@dm*~ zJej~Pv{EACc`h<=u5?j+5vTOGgdj#RTdy6jcZD8-85*y=M8rTpWKoA?m z&``NRac>;@3fMu9`sLpDSD{K1zh0bNyk~Z#63UCxxyW!R5N-6)_!XBQA=MpGHL~K{ zwv3S7|Au*C>HLasap#wd$o=hG-@;p|TxK^ox70ehI>kElM&>)% zRj6OhPr@nY*3HsickNfo;?5>+4H`Wf&WQUyPG9S1oiqZ^mnk|{s<{{HI-dGeo>)iz zk__mN)sc`(oi8O6>MZ*FwssX-BtLjlbsv+g9$1JjZCG$BS#j1e_rg*cpK!ckB#=nO zZ$ZKFr?xPjT-&_ta=%}kH=Fxi-Stu?X+p3>?8&V;FH9#RL9RnjOoJW<@T%Nn>Gcxl^!PacMzB6RU*sYj0`ggu@*Ic_HWQ%u)zM7W z(N4T-Y=WusanJEX@KN-JG;hf&nqxS@#*D|__|DJgt`#xFd$4KW9M@5wqOfoymL@T(fFSFe2#>0to@^JZz#n$`m zlpPz2&rev#X_R*|cwL>Ama>38(vV>sq`Tr05q#CSA)%OKqVvx9;|BbSiD6DySLXSx zLld!aTeI|HzuV;M6s6S~Q39lZM!S)e`)JtO$$=!GT4HoHucybn-TEeUlXKKbXLF#g zU{w0;PJiOCZcD9vTlfBgQ-F+&9Da=dNoRx4=H&(#Q`*niyiwWIF^FRkPE60kZ z<>rLplu!P?VtA&Hjd5q9{pGX2%g8aGS?OAjsz3is7)+UbMe;m56%GA|^sNxhyB;Hb zkM|Za3Djrrm8RB_fcV}W#CduGy;+p}y@SBFWRDG2k4CDQ9jN|4P$)$G(3V)Y+Fz=| zqs}Jt{*PSe^@vCs+(^xw*^7wQNAN_b8-#I90a=z~3(hOucN3m8N{p+hPwQi(;VKGFUp`P}z)XZ&m%Zr1VVT&V+*GCJ$LqCszczJ~;4!qoDS)aTb-m1bF5pYyg! z`eCet^H0&lcRLYg6_%1)*b=A(EB8E*YDwgsCC`0H_6?+<4!ayYONJZq(^cM0``(LH z?Tzbx=dNrF&a{rX)O(5C7;YCxX=K6lC0+a?aFY^6YqXHmZXl(XLHpU;#+MKeubnys zKutyh19IO?3?r~2%&0|&+&pj?Fk2q^_)2$1t`6?XQ{a5h3zfP^ky=Kf4rxZ`zNsmFF>$2OM0(-HKLv2oMMuK zPypf7_i3Lz%m-&8-bx-kqAXCzaOspoUvh_DSXEj>-+R-W%I?IIQMYIy9)?%xuB5QX z{_l6(tdt%!-&IUT`%Br(kV3^n3D8{Ew%KBvW>bYQ z*1WQ^2MaE=kP@cz)tMYlKI+mGnP~ADp<%k#KblVBU339j)nGA9- zHx}a2)H~$AjMbkhBAdWn3}Xe&aT%@L>I8Z)dT2GuwAY|l%A~|#S0 zPH5}!Q6+>VsmJ(s<80p3M-_r(eB~$wqO^;xfTA*LI*t}38_Wyo4RvmXo(1**Vc{rxhp@9utFlG2L+j?(?3|?!=%{Ez!BKw_4|vX z%k=d6QRDu#Q36F9{Cx0q%oe}Ngqk1?1WU=RItJ8{oUx1D_3B?`CT*$+1&T+n{8wyE|?$3lrQ#{5u~nEkmMMPnKjzANr?3m#c0=2NVlpv(DfvW7RfL z=2f)YliJD%fd8m71I?J*`(|`H4NY%|X*zp0l_~%Y)#XO{5Y;mLN&lHcnEIPTQUsL_ zD;Rm!4q~C0iAeNustrIteZqCksGHm!uSKtSQzwBgX`j0Egb+S^&z(2}Zw@m2&Y4dK zZNYQ-WOy9yWabz$YK>=;jm}f_i_QILcKWG zQIfaXT+$pxkuF)%G=N#BRIWBm)n6-saLIVlDb&`lM{vtdx=aTzIrGAZW4Ec{5I6iI z2ork%05MyGv`Q|hIl3O0Pc8{J^ce}e*UdzFg2PA-h|hdiXQt0Gizfu@ZAhO>bz@Ut z?9TW=T)^v9VGic{$z{Qq0Wyp#_NLH_!J$yU4-cs4#CPQ$Ql3-Bq;@!xcK{F5!U-2k zdH$;OulWH1O_w-Oh!WbOjF?jY>I3?g_p(KViqupsV6c*kT9gvm zhcqtf&G?3b?1WkSPw0q$-|Ez9OcLVKd=;hv@D>FW5D(M+?TLq`I5%cgxs@xM2X`3f zI_oUEO!I4`czt4o1)_d0T*CAablM04-mW^ZE6`7B?2N6l^OEHOq_1VmEC#pFr@RIT6(Ky6ewR zrAyoev()wI+q;`Pbrr?iuCxu+OnYfZ`;U*5v3?FKBT4ghttW4fgsWtCEoq;-L!X5M zAMR6c0ffglN+jptVdZTsc6`)ba#NBOy@K)%@aX%h2dwfATV-i%GjiFBCA7U7sSvWz zB@I7At`q`kt~j6bS{4t#K?&h!haJn(5yXhJMEh2cs%wTAu1Z<@nsmAp-`J2^9yo7; z0swQs*CFSs+Lgp10PNn&|yd#0F=7tiz8m(DA90R5P2YW%)PrywJuPaEq4vTzsg< z0=&U@J-hG@*8;?OJ}%ZC5j4Fhrljt+2!uU}j2W|{!>%@|(%v8j1@>(twdU)_iV7i1LhI~%YvZ@$y zYK3eMd2O|VF+76*daStg4Gm0OF&rQR4{Hjs5yff`;xr0Vr(i1hkRHO2qMX%1g_B;q zs31rUcWQ$yNUtTwQ^jpCYnOGu?f$#QGB~NKsUFDF0MPm8u>6_Q);-pq+c8vH?tg@2 z8~$%6=zpxn4X?psm2v717aFW8m>Z7IniDx6I}HP?%j6G!F?>){5TXGbH<*$zoh{-# zheO_^#l(a$CsdRjm5sIO#X_n#`^HMydY1q(X|FV7i20EFT zs`fl7X3wc8D@gSi*c5n4D`r9{{p~)}HDy>YnR0osvCXcg@SiJp)3JOf3Bj(EU$cg>!n?KQOk$dy@+Jj2Z z7D&Hb+qX-VX!;;Kx$~DVUZ=h%gP%0;!VS;(fXx!=cCmM4enX4QV*W0uQ?`LmqG7e- z0^oo?`27mhu^hdzzNyrfK5%n#sB-^hkbFYFX)HY0Z1&NwboK|@KTIoYJ&Bvnu-4{w|d{o>%nRr{jO92|M9$p)NT3m`yy{@MmP{K8y{ZkpaYXU_suPB;??XAPY>EAzU>vp?J_4< z4v&{wH%zwkOZ7#~6jBX*G%$e^p^kT<&$wD&Gw0TB;Gk&bje9natSIg3s4{l*<{B%@ zM_n9k&Du2R^ODy-enM?6glL5a(fk`=x)-bS-6+1wnHq&^IqjYjudhszp~)J(vi_$c`g>ZPwun-ta%^Jo}<@<*QYsGiB` zBb)HRSKRV=Mi#bTs5NsRd(O|)q)ZTAJ75G0dz4zID0VwfruS<#a}xn#TYK(rSzZf1 zd>=R0ZaZ36HUOZpSv^9Qa=|6`Rf*#l<&r<*;j-KMt<%t74BrfmPEYT=M1t3D@*X|UL_^j@U-*o{Kze~OvQ+cOs5j}lhX;q$UNZfBq&wOB zp1A3HK7!}_Q}d$rxJM3uB*;PB20s}_IP9<47iEJH4_hT17ZvbpK@lk1ujT1wi?BT` zj$$ChJM)zg<4h1u*)@D8KGmexQixS);AHpTngau0&2Lwq-rGu-`cMAy-&4U#xm!JZ zFSd2(;fIv9i^04;;&JSb0P+SplFWi%_ckg|V8xIaui@&Sl@S?N?H4M=&Hv*M|3ARJ z<%JM77C*(YD!aI5H}%4usULDz4sh-7VrUikw|moVXj|ji%jA#G#nRF-c24c*L|T$b zuH=vR+I6;EK^#K1SbvX|?JGZCNl1oe|Cxrqj63mV_5_yX*IRv6X2=LRc(jyd0qUi0 zQK3_P_eWt~iopC%=^IgZRW3yz8SU`6z9dFr9w)@?JK$o$JZIH0g6Ozi9iNbiD6N^C zbFHr1fo|^4Bx*F|?W03LercL@01%uiJP1t0mWo}Z)|T#SB)sPxVtL&iKM+LwlyKA|7y$l^X0t_&dr@obLzqIf zGc4L0%B7M^dvGU{JjJqom2yYJ;F+DMNMM%u^W;luc-i`6xg-=KlD4&E5dhH&6=l#g z!~b+c?g}XQaU87kSdXElnVgmjNThZKY$m2cg?RNpMaIy|(P}6G zpEU);DgCELZji-M3OqE*Q`QXifll2aeJK=fr7+GQp8GYyx`mZMtzv^VoZl5K#-Ay$(k3vZul&@ z|2YL7m1!JH>DRs5?nLL!%X%pU`fXM-Tyuu| zLF0m%_UYBcola>W4UI7oBZoH_gFzz{BU+9y1MuyklnB{q&^cYLr@-51}C9xAPOYb#(X@oNK(W9bXIV38Z;B@=uc|+^*@_obRF1C zz%5NGyK0AI?j2nxXokRP9l>er`bpZZD&O(V5z${Ip*i;qyHLFRG|I%rVmaohN0#mI zR|h>&LhF_BV!T5!I#5&U1!76(LX^@chpYMi-r$c{X#`djKadhA>xJSvsl9?rj`yN_(YA5|@m6t_!;45NSCrbt`^-w<|yuMyVDuj;?K= z#U86G)@AKXZT~0Yc9yBpWEJHAFOIP}aFvn5Fa&wv3msJ6609INh*69rKG!WhGE%FW zl!Q|483wlXKD5kJ^|MqzWJw;_z3xx6+LkDiXcM@z3L)KsD=Nu+dM9Y;ZRz9HIt@iRbw4Pn31Vyv*_*%d6%p^O#`>2c3AD+-EuC&af?qoFF zu<|iJuO}-pcF2T;!Bz&ZKuyWt0QQ?`xt_~_ab3QfLy=d>s4023@G|WW$vY@ywl@JY z@+tINf#PWJ(alh@>G7l@4rKB(SbI6By%bV&O^vHQvM@xb7DXHrOg_BqmOK>%$;KKA zOC+n|U>xC%ML}H%BY90idjOQrWfsuOF8h#JzqtMT*raiBJDKftfW8oy;=%oA+unNsg_z{*kB!`n;xWk`8?Gru~Pm1r-eeE|ahx+V%^tLM7S(H{3VN5ntBZt0|nlC-Ggq>y6xa5vfpJmsE zBPMY(sgh0T=v=ZRrrf08?FTY?OAcp4ocfWZz6Sm?CzNyCc4s2yQz1vqq2%9y&69(L zkw4^Nir$-wY)s~Y1TM})DdHY7JV8ji6R|*F?dIK|nw-?d`}4RHl&xI}=Zj{1QM5RD z;qUW5C|`^-`12(63wKOSevpGvd)1{`4mVk|mv_)}%<|}O>qsxs2s6bSqbe9R9!Nnp zf2KlZS%L)V9?|ci2zN)#xZRE4nKd-UHMEVAA_#+&64{h?qUGVzQSst6tH{7%XVOaZ zFke~RwBbK$Nw1?{)VW@Ld~00bd?291Z$DUd4I3ZpdMdgmQ~M_ODFRax;H)-8vMz*n`8o4z{i(GOLv1W-sha_0j-lV}beqpJ(iZU1~G&$+gTZQ)jL&itzOcB&pTpw8*`dO2na%cHnfMnu}wdk`51 zu&}Ebe1^;Yh19(R(L%FX-G)q-aqD8l*p#l z0?SNKSJEYlR)U!V^igui)PA1k_!wg^_?J&G^CKX};)jMAZZIM94*hYHpqfsGM_u_! zpwVh8C^|x%(HnC%aAMhqqg4rLiK0&N#z&S)%HDbnn{8h3dswT7__tfdDAxx5YB@uo9Xp6wz&Z4DAjgL zQ#~-uFDT^KoD>{9o!4%wlMRe8Q9|Z;fY?u(459#rs-mP45E1aIKXsc~i3ayjEwhZ5 zm2B&y$|9^9@3S1{Dg=F z{OOp}|D-#tSOh9i8I{O+V3$c<8Tv-2%*AG9EsEGPOdwn(Y?f+hBBi=oF<=S1Z{ixX zvgRfyAX0RzTm%oN1W>k~I7{0WQuy|c5fi}Q-XllOn?3P=h}*Et(AD}XNlUz?BVBo3 zi)$wsNwxbk9!&!V6UW*_yVqb14~bfoC>ae6sZqKs(9jrWcd4!5R1Q_vb2Ec5{T9GX zL#oJ6h4d+HIY*lLpy2UV;`fYZ@VI}ucpuH0ro@ujR?(0;U^%1c7U`$R*KYqW+Y*7L zubU*;;?MTI^is&TBTH6i!iJk#2oRB^o#iWnKGxaHF=p+4q?=42b~;mp3X~K(!%qK_ zQfG$82xpYZTr!o&#Qb}v2pf_Hz;7e{qUkpkG~EKC)F@oFAS9{!Ua!6pgf)NJwAoWt zLZK%^&FJ+bI^bhiaw`sPH5uiKW0*0;3Z_t^`2zg}8V1|CLazt-^n3=Z7>TT*pT^5v z6~;#5#wWg|6YI-^&O8QZ*z@nI*y-D(XNXFv^KSOE=kxg2MKfBt3LO5ZQ{81E5F@@P zs2N;IbV(I(Ir^G`xo=tNojMD2=o$h0m^(exRUDsN>)rf~;G(h;PFO{vZ+<4q5r!W# z;cns$a>t^|d*A_}vaC;DC073m$8YjwO}eF*ZseBwIlFsU*JQ5a%iAK}L zXXFh!hBT5Df-**uE^0R;%XUqr6Xbzg0WAd>0U`2TgA6T;?-`0whb-bUGpskX|ue}s7&HU>prX`ubrIwE!dA)3oeUT%*&`#dN4|1X@ zc7b3!nmmR!2WJyUH1di6PNK@1j#2;_gXWS%gFVui@joX3U{^Hf}V^L(6vUA@;)lscyo1g~T! zWcTP5@8TJhF(t$Es2kj#W9eQsOViEwk0;W(8aIAkxQ=MwLMApyeQdyG5ZB^=*}W3e zEo;X%yXzlvGM#1+0xz`8dFsrpg@8m9?j3pyvFe$rEO9xEw|-PqHu-RsXm^@#-+x)Y zQ(|#;U|{HT&;O15PSO9YHuvGF_n9eZ#|k8&q370)rqF!U&C{rOZ52oERqA0reMW7E zEkoyO5t3XO>-MEikGxa!Z{wb7tjwpdnv>Q8-rZb~24AhtfSbYJwfjQi%Y)8Y0_Kl$ ze|SZ-81uV}&HM4Bw`kuNhaDp@c57SDUg&Kpev2Ns=+8A(DWL_9tvFcXfo}i}J0&W~ z6P|LPoOg*qCI|(3W^6w)zl~UYeL>M4Q)2?i|B+|n!4Zg<)nG0s&Y`dUv?Va*MxZos z&={y)#;chi9x6Bh0hK!@_Yc)>-ls_0dYkkR18BfKp^dQbu@9-diVamvge}lpQ-=84H3%KtO5bF9HM|tRbR@;h`!#< zP80VZIp`A~{Zpa50A{Zxx*~J~)9{jHc9)8OIuxJxq>QIYg&!|A2`!5_+xi<gM&s2L%VN&n*H_U@$___X%yfptl PVZZ^Tm8GgAOoRRx?HL33 literal 0 HcmV?d00001 diff --git a/en/device-dev/subsystems/figure/use-cases-of-hitrace.png b/en/device-dev/subsystems/figure/use-cases-of-hitrace.png new file mode 100644 index 0000000000000000000000000000000000000000..20e4592ac077d3d7b63f072d3d640732ac9ee3ac GIT binary patch literal 70787 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

Vs^v~Zk{3sjeH}oKG*g&5fzp#E!xV=c$ug~YIZi zI(0Qq)-WMo4QQafQe7}AU(YUcXc_&y-3F<92kMQQ>!Qj!0s*bB>AO(V)vX0xZ%%HB z7mspYZSQGjV`93{T;FFxaMC&dbMfn6HV91a^av2rBA4+;S2o_1dzL$N46xn)-59rp z2AK;juDZ^aG9}`-?w|4+wC|SgtsZATsbxOPlBY2y0$v$zOXdi{Ek)t>H|{x}Y1crX zs~rjSfR2Y=^dIen$xs6G$M!QAmYEmxAkiIWayqyt%I#5q)Eu-XRa>sy=Hu3UHB z|9M~`@!`S%lTLp~C7y}V|1%nEEN9;+IFceOpdd+@$4LmTMUz2IYC`e(q>ifTY?oj< z(dm`lfJHt2a=lx_zdAcsV`Q^l*}E<*z%~5~bCzT&$Mk}-IZ^vP7i)+iLpLMXiU2D> zpr$Fy{e z2$!Fpf(-s&f{Db=8L%RdwnhFu!NIrYZSHUk;e)*F8oyaOXeQVG3R6!eu>q^=$^3d1 z^k-GX$4dg zAP@D_ukd{94MUx7b+on$B~8bQCgh@9>XPZbaAiOF&l#II#57rNZE&7cS=jyE;o$*R zUxN1%hPm2KUbdn5)E!&J+tQlUI0}#&?iqBN zVCTyfeis3dRnYc(bl+_*Weku&JCg$*PahVJ;n_`w1sL&H6Xph=;q+pk%eRTt+cK@) zco`R}7LCL?_4OU4YPa1iveqfX4#7NZq<_q7)EuU-g_zh0td_NKQUCi`1JLBrvP#pI z3o4OM|1BFUy>|+cHBWV+FweUknc%1`{286cgFb^W&k!E3uJ`-YN1YpjkS9;Lw_nkm z9%#_9_A*%>OlB9p%gFulWS|E#diB%V=f!8)Ua);;}5G3mWE}J-WM7}@~la^8s7bN zPN61@Ji-#^xXJf`N$%_5XX}h8E6g?Go3UJWF6*~_N%y^esrzNr@T!`fgf&kHGvv#o zgm9~cvE754@hHtq)46ZJV?cx7al!+Ousw*3C+-$-VyG$mwtTCae!u$C@p$dKLac)E zJPdbzX>=VYhOWt@sCl4{?rKS}V&0BlRrf{Skv2N!&nf>!RVSyWw&_uhZa007zPU=^ zmGX7|dY7%}#X{yDvgTUsis~Q7%*TV>(ed>cmz2kyxV_AVZ_2nF@S7;Bb3aY54mwVY zpmPPqw!@m|5Q)f}(Mf^D^u?1VkT&k(4->d$g$ag>Yr>-u$ zw|>@Z_Jbs2jvNYtSlJ9xn=DMPy=I!m~#zD+fP8iGBL_CNUoi@6Sf=i$5>^ zQdt@jmdO1?A1|%o#bUdh1)9%9fT?B2+(>X%4Ts+22?sEfz}uxJsjLz=%nA3Dn!~Yt` zZ3(~=x+6VYj}&Hwv}_>96(0AG03@#7kZo@xg5S3zhLtp=NoIQc?&Fh9(|mlovRjYE z?bpA;J#4TMyz2Sk#UfUC;k~6@Pes0?1dnla=ZG2Oj=}KL@i0>xwZtlgP-E2m3tzGz zPzZ}>(QR)}A*4HnFJ{|Lw6N?!9>Pi@FKlF9Y-A~(F+vmL2Xq6byF$jApT%dtY%S0eII?rq0LOf=9HT{#%9Zd`CymIL!CSLm zIRbjf_TRxA8M?jj@@S};$U2HdD}MH<6je*gM6|Pms$_D>AI2vYcowvz%kX>iMxvN# zHzL?7DyjjHXPc9EaefVYL=f2Yp-~ZDkPQ-)yV_1s_oRh?0r$&U?qO4I2R-R+cXUv( zNlfsWZ26B9g^@SXb77w>Yp#S93F?XkIG;E;aM{oZ`HBSe++|4k&&uUHV@o-8e)Oa_ z3!~xCFIl5F$HPW9mh@L_nk$2+O~sJxGhpb&kP;1UfRBTM6jaHasgUNw%brzO3y@PAee3X>;^apE}O_w6?8^q$@2(O$cikJO7Z)2GAbn=XS z?i+*#TFjZ1?`nb(CelR5fk4QPZGJqtVa}cf{#RBol=Jk>Bj!+6sGxI0Jg|P3!EY2Y z*I!5zrDZQh#_4h?-K$jqlDJEY8L(9S^|_RYhxAFEv5SF#<2(MDA@?PDJ=_@b>@2WB zvgb194OW%>Q`+gnC4+t?%yw2usxA1C45@PuZllo6-@9?S=n(!+R>y)?=|R>i0owcy zZM0(~V+6p^1_?;GRoYn(GsN#@&MxyOC)x4cp%9dk6=6gr<>dTH0oOM+u{FXa#{oAt~J|c0SY__6^X-iI!mYdE4F!!O%k(iWK$8Lv?-CjdpkvY z+cXBQI)X_fK!DOTV4G+pH==_uh5}M_+f0*BSmKM4VmcBM$94m^E$`2jKMj}_`O5_P z(!=MJhPPZU1%2UDGk_%Rf19%RRqsn80?1=rAqm(SCN%0tM4SuPJ-9PZof6!xLq`6y(? zam)*+0jkIH5|)(bGe=@4E?K0Ni=Iu!*eV-G&yafffz=rc!;0>pB+m?2f-4$35vn)d z#q1dBefeKOo?x6qL8#0h%ot@wKubfKYuflz2~{47hOMNjX2W>@cSR_wf`ejkY4zk0 zHOlRtq10xr5-VID>-BaO{7QA4;=5n*^047PIfkOs|Io~xvl8$HvRN@s>VNQqmuxlF zacH@jEHuPn&)^467cwVc&C+iy@2xe3xM^L~i+`nrQ2Ri_-aFtIq_9O11;5kb zto?Ty3~o)5iXbBs$E3*p%EG_2oSd9r*b(*!^UzzOBC;T$yeOq{P`bgpq~2qai*|Hf z@%@*?CmMsM=%3$_H)pWU2LGUBcC){zoAk)JklsU9*EI0wKal0J53@u1c>2&OI-~Jl zda)q+LbWyWQ{}z;J%O_r_tdK{(LPM3lvHip|Efz>Wwy; zjaY7Kep!+oE_mB}+ILdJFf>AGTQP^DM^!bu9>TRErSsAD)JdUH$(s9(h17GHDD93P+`b1MDkro1ebj0xh z%R1W@Tra$F2A}s%V-2CbqI6iysUwb3Y z(pbHtn|=G*mSi;iVtw&qbX;DL$1@ePoBVyRs&l=;<)aaH zC57Ubp)W%VsoLrP$Tqp&y>t92>??aF@;TrPXOzY;?Vc-Fb0) z*q&KTZ1xid@EC3&&;>cjpG|1nlph-%WMpnS`i8ZPdGZc_m1SDX)3+aJ>aeh>3YGaO zB5C+wU~Sra*e4BNMWoD&aIB7Vyr_dW;oy+Ohk_a%QEQ$ICn+R~7*?YzNgG0m3WpZx zVO^9y0mYYSJyef&Qr_85yJO+&URzHX4%8X016{FdU$?~k-tj?TsSSMa!ka0>cLMyU z)Q~A2{-Dde+EVi24K7-~1zi8bCy~o^Vn%NUi|!)nOmls~5Bwj5BWGe-&>Zj_JghPF zF*{*};mR!K4hCh1V01J0r)()+Teg&JtX~8qqc0OL`w|d4C*Q9`iI=ftjyJ!*!vQig zP~Ja*d@vni02f)C3P`z(>0|!xvej_wa}E^AG&XcnNxEb%SiK_OUj8gdLx*wBulQjY zxD99khOZrqB*yUNaR6i1Y#F909#(PgjE$Cq_gv6oqV-$-V%@piiALGARxj$^aPbnKkWWURLy|C}MZFZd$8?=Rgq142o z`Bf=0gb$x~;q5BCg}5O~A@nAW!*SN7$8jf-^%M& z=0pp3Rrj6Gyh4LSYtOXeNgfja%mmyTk`qgmTBn>Cn^0{1OTs&Sa3&5**ck<*%BqYR zTJmsifvZyQVTm6vWQCLKT*;_kPu|*TD^Q+lYlXSd8Jqc!ZE06Ss>}V z6{7t5D)fPkR>*D zVnf8j5FIRN zeAiv@P>CfPftEh8zh86C_uuZEFV{)^yRx=SXee|RMS1c5OtlS##&_*7O}bk~Yf@dH zE)_Bci=e9Up$uQ$dcj9SoR84ldayPQ3UqoCY(?v_u1<4OX?NA~({}#PApLVZ`0Yg& z8^m0JNpg-)L7ie1_|D};a(W-qyR8{px`i|7VyS|rJ7{S zqcEWe+uILq5V` z5K274K?rJ2%79}Cl45aRXQEE+Y8HabriA$1AN=@5y_O2}7qQIjtgUy)>zs6lZd5W~ zhLMNUE#u2gYb-P-phUM^kTcH4NtW|8rXuKhev8@UNa4%lt_X{|ga$ zR7O%EzP|hJGE1anqtaST(Q`x5=w-SX!A<-f36sSUhAdcl*~sBBpVOHXSlYRuGi>q| z9h7Qpfm1mBVGe^CiODh&j>(ZtN^@anICMXLEQhDU_(OtWJ1BiTlTTLJ&f+i6d|%T= zUi>)M`)6Lte1Y<4nNay;>0m2MRklC>L&n5?BKD4r9g^VeOm2`qh}neL`{T$8`oiKe z8s5189`25BTq`pw%Z}k*xh3*g93BQh@om=ni90T0zKeL3e*8IS74LZj8G+y|&{i?+ zU-!=m3Y)Ws@l~(ErhM^Q@%CVfVBJO+)1rP7A-sSxP%h!c*Rlm`26sJjLJ;Ymfv#hKI^s9nQ(+m}O=0cE1XBm4g+TxX zcaZAldpe`gIIW03(d3@jbJ(~*!wa(v0n_QVSbjp`pRYa}zCAn(0(MG9+v?hQ-lR_T ziPT-F;(^_?76e!WF|vKZn@~106I>v`oAx-en%bM3g zTC2y2xY(y!M2fw}okN}BUZZe|^M){@G!tqrcRZgLy6K~LbX2rMDnw5$NhG*|`?Ufn zV@SwxSAbVE4WefGwy?K*&?k!7^y0 zbw4H3Dblf@k-0L`Nk;qj^Jf$w_Yczp*I%y>Ne{-^3vEp8~I*PuvYW`m_U6{xbg=ZC z%T7n|bE0(Sh!6?xfsHtn){4WJ4#5XqLBBT41_;r3^0_;Xu+p?}D~|bdqP%A563NZO zWGazwXi-mlmgH_;BoWb(MZY~-qk~ncdpG@KnOX<~LCH|tCMEm8QgGCe^p0(31J*cl zWfrxu1cL%;bf7!v!?>ON&a_NoiUlLE4REdIHzzv^=g*hqyY^%9Mc(dgl*^~_pCr<_ znrM1kW>Am>Wh`80wpyCpRF-wSR?MpEelM-Xg<%~#))ZDXgjBYDBlTVSUE^XZCcsAW~P8 z{t2{nlP*D?NMo8p%km=*lwuv5fI!ZJ7>ckzh64kw>)3~mSio>}q@jYQMPYlt*5i#g?tdq;RMgVG{ zS{jB&YZ#Z0lR8pWsM0#;VhGLTt1m3$;pf{(sJMtB%H;4Yh-)t;$LKSQ=d&TEZXt)k zhkYjeGQ{9>C`g&qtcFBDn&QR&&Mk?%vjB#%FWvPoX$&Z&Lm@0CfD%s7RDvX({PK_{ zfz)!{YXmkoC7RoOFgNKa(iXk&w26$e&4P!S|Gyh zZi<)4&uI!n-zzo2;55$TOwO;2AD%63bRF!mA!M(h;B$q7byl{eRMa_kXS% zE4g&IQie<-J~z6;DTZqZ-uL@}qhEG-s8w)%&GM3Uc3+R16C{yj@j5@zDG}^U=!u@p ztmfGNwa6fQFG)ySQpN|m4Z2l>RtQb^gIl&1!U?o8oIr6H(YzM780f24!fk zs#&gezN8fc4uTC;$OnP@754~~^#A07da3P%vn(Nmc8>_PrB?TS3NPu){Koi4sE0b` zoXc+sZgu;zUeuh!2mLF7Ya%g~g)V3$d(7Bx!@~WVw2N#|H)%{? zAM;C-L)UnNJ8vJa*cDnjlMYV2_|OYvNO!MM-MNoV%2dBOE9<)#f;U?x!$I!p77QYp z-2i{@l-P^f5C;ock{V?p)GBO@&kr_<4+#RHB(KK?{vTQ284uSNc01Z&jA)|^CVB}n zM6V-yCqyqXdQFHDy^A_Zg3)UtL??u(A)^aPh%Q7)bfQF=d;H&f-!J!@-P#)k1>Aa;>wrKnOw9n(ZAQW!4QuQQ3zDZ z%^E@oAtSlfK9$o;WTy`A^Fec2#_I*ss<^QAL~G|KS#1{m5OkxsY_Rq2nfx2{v(Z;1 zVls}huY9WejdYOAW(Do6PGW6|FS8XK=;|mc>nQb)kF_6i-z7kVSI=Hp3&_3^c9-4-U<{U zGFnO{*A*O=89Mylq}|7f!VM zAT;s5tcp9102!-lkSRh)g?N-|on%MllQ z5?MBWIZ}Qja-g4|UeK&J*j!JtNc-|O#Bny+>f4p_{?dojFpP}(lT*DSa~(1+vErB$ z;X4FW>j~o+0>XhkwlG=gr|+sbTReX}2Cyvm^^qL=f{^u`YmID&N=^2Mciku0;)aOH zJL!XYYPcVboR{?crV|sNDEak_Da&u?kk~#$LOZK{(&`Pml2XvQ4G7K8+!b5*B~Qu$ z#)0kQvOUz8G=2~M(WTFLzfkB6^~9Y_nKrV>6|a;xU)w%p z@uspQtlygJL#5@@gZ}z=4F4TzhLj@o2PiKr4Kgp^ptpWi2jDxs#+bNo8=o-0i4qqi zN`}y@kSb40WaWo=Ek*a~I($3fxEs{@qtP*EXYOe9ui1Og{J`^HS^tF%?M)Q4LO`mQ z9jSWwe>wd|8A3sttkbe1!BuARY9BbGH=_+;DsX-jJ{jYk`;60LsmH>5jSI-p+b&t?9EGq@cV=x9BTNZze&2F>JsA*& z{MLT0P*}qIS0yG1!1(~Qb@Mr#K%b=0Z}sh~5gr$=)6u!xa&wRNguB#|OL#S@fISMp zOkr^-di~8}ZlGzEFcv=CIPvT*3=@1jn z*1-q;XW9nR^zH1QqzEC95Hr(BwiLnmEn;>588~e18AxV6eclQPhH=Wg-kcNC%L74W zbr}bJ&nz=ewG@eZ_hEwiqTT9n^Y!PZ+KKRu^3s0pILYE@) zRg;9wm0<>Nn-b~EBRFs7-RQk>-nLP|e48<4ctH(YM7eR_LLFrN`c+>*w-K|enA6q;z z2Naus-+A?m1M~L02$<-H8NeT)GrSN4O489>whRb<4rC+e+mkVxB5fz zbLd;bc&ESBHWS!gDR_k^Il1&W*9zr7&ft&=BIPOk&WJp zMwV2LgH|SwkJT=XCwPU}Ny_Tf|8Qn;w4vf;QbB&xmh?ZKq?W=s4>9Sfwv`pgiV$BU z-U8{kzEfw1d*k`*^4t-HyUZem&s|=gPd*E+dep>xtL-nIkM1PqgZC&M10}Bp&dz3- zhQ8bp3H~h*xBUz6)SKFb5o3;x;V&{%b|)?_P-4^`UsPTvnFl(60i+HiE*hPbga0!YJ3D0KMf2AfdaK(3t#*955>khVM+ z&*L@U*pGryw*a0xEjxk$s~GK%lD`g!*1z)5VN&HkV)ITcQ_p9}YIC)oi+_5QEEW2b zV!dhj5hnFIIPH9M{Q1?Td$H8cYqHUodeAe2Ov+ZRZG2!#(*8nMd1~*ymu(i5cO$3d zUTU?&n7!Xo+(u;T@)pUgF#hg-yAU@rNYU}#%`vBo6^A*W;P4rZ3+w8xp1JVcwij9Y zaHQk&uRL*ND@#y}?azIuV@%iiR>_&GQ$zy4#e)Q~VS#=Ue$;@l^Dgx<;Qo=-j&A?$ zFSow+g~^=z*Cy!}A4F2=gS`+!We~%zXI#ydj+nG z3Vt8XyQ6AzPOs66tB881_fkjc{p(&r))QXx*M)M9dp*aFtI|rzv#PGE07UFL$=2-G z{hel!*xS?XSQF6`4YjqKesI(u^c@h8+IEiKn11}tSmTP0^&J?kijy_Ufc~t7ZLH-M zh=+aiD!3OGGIz92JT9D4V>dhd!rETXrcY}0B;@l5kC3&y{Pn6ep3j%yqZigkgNbz6 zJdU2JA@Av7+b*-jF_F=uyCR!v+SCX|2>GlPj=sdKa}F2-%q>W}{tu=Q6i)?DXD=Imy<~2Orm$uV<<)iiBNF{8?Wkrq4ZH>cU?BXeC-Naq;@x znJg7>EO%7=XA$u_DPRE*U!AX)D&)B6UYtG};R%zR&ih*$xb77uwsg6mBKHv=o35RZ zPD6``L?cxj_9pHfb=4NQcLx2bR(%&+B$ntArFW-}rKb0^k78%ma%X=f9C?r=I zYj<|o$njcf3_Y#iWDM@vtmVH?H8S2Kdz&p7e7C78{P4==6VAsTjPcgGLI!kKbkq$e%~bZIDsudE%?35 z9;eG#Rz=vo$Z~TNI8O|8oYY!YRCHl$T>huD0;S`FR(Rtb7Kn(oeX9!_tws=7JMvTT zOTXhvTO$1G2jP;fiXBIgoH8HQoKQ&wIo>3dXP)4&w!jj_@|E{%x#T7%G?7GVgSYBg z9fy$QlNJY=(0o600vP+z^EAB&}(N zF@hHY*}9)qyuS)v`zRD#02ecR;)=kk1Ebmv2|YwwrBPbUc5E8QheC6l$vM1i>X7nLbMQ@5*nhdY*zv< z;EcOdP%!z8fTVI=D@%_Fg(Mlw2O{HL(vI*Pn5H#br~x;F?#J- z2B=e>tNWjCdpGv=r;Unqq{aeBjEk;>%GSfkkd;6P37sxtb%;as9-`*1dO%9=cqcbs zdSFN)UTJ4twD!ySvrmS5&%TK83+Vl8^b?vY+~SIX))KUPgIjOOkZE@ZC6MHleQ`)A z5zD&ddV;?p*L07cH&liPH*2*M8*~}=_xf?7RY@&4gwH{d;Zf3_h1*+_`N+0PZjXYb z5)@oOt(wr7h+n_qu`yVt#-Z=l`F6GGtMb|RUlgBIek-emH@ zQ&LmbKyo#i+wKbS8QQB&uS#Sy+uI4+fb&QFT^9eYGe@zvP#t%TD}GJsvkALwc)%D` zQ3gRxzVM6cbV?XeDf^!6-iN6f&wb%>JjB}$q46DVwND1tadN|5KVz4OQq+}~-@aJ= zke_mP>umRz45)Pg-x|Vbu}`^3%uo@M8CrIm-F=|&`d669ZYMJK?5w_!XyYukVQFDG z%wXh{bpbXvM9}l|_oE0I!qjvM$IwSgc1{d=q8a;nYL3>HeNtC5%S_i9*8mbZ(g7vL z4UQz>BJy!OX?FP01gn2+_+kaf(^_DhngPJ_1n~2owKPk7fjIz*pY;af!##e6$48C2 z*6r0+&c!vnzeryt>gy{`z*HQazY}_xf3XbT*uVWN`r~7fLT=x#p>q2TH3Ga~zV;Q2 z_C;A_^Y5ndj9p-ML+}_e&H09VLx?#MCS5uDf(H*iOI?9HMk=_I%`r0q~9^V`E?eVr; z$H$_qW|BiaV*(#LhMW|{eUCP9d0LBUAQHQv1x>-!7-V*S_>KC6i+v8v@!R>Ii!t)@ zX-@JH5f=1W(^r#LY;DydRW+hsvX%#mX=2x|urt*e#O-x`okA`$mMsKg`Nd1IO(o&F zzj?@11PYY4EYCs=k6zv7&>FP<#LF6uUXN);krib5fm6FVw@p60gQ6S zYLXbHDVRM`FdhjdqK6>NBsF?|@`JY4emdG&&s`uk5u632TZ9bAL` z2SytG7$>8VU_U>nOM zkGd@ANhTlu`k-yPqk-=Z0^l{Mi@>KeMy%KzCA8h;Uwtj?YaT{=Y_RZ;0nr!S0KQt3 zfX{p-Wy5-qVD`aNZ=0G9pn#NorJ_aLLekEd77A9LL$B^SyeCEjc~Mw-3Ly=`;)Kl~ zc&tWk$?JHswi65a*_@gB&>MGbC!M}rvxs;uvThuS^|LR~s%*(dk}|?zo0k+3EH63L zgzQimvbB$Q!3C>qsu#2;*&(UT!xJz%CPA*o$E%BHg1P!zd$}jY8*uh(8&-?Lm$Wb- zxCVkj2+Vhq@>b(7%K5j^+Ov(e{cD4Ad!L-%^*F)D{`-kBNe+4m4Md+sEy&oq6G5{3 zvlehv9n;~nRN)unzk7gGa_sR&v}V{+(<1Pfwa((`o5Kq0YUA zQpR2Pp_ONX9zPGsyi@jP;+C}x?cRINMf7rfMuuNARNK7bJU%Sz(hjO%zOX=+$z2Uq zycbNLv@*zaoDzpC>+Amr5fJPELHNy_e?)S;V<+Q7xqF5=2G%SHB!Y_9+e6LLj@6{+ zw&?HdYzg%Z^-2H(>q0lk<*Pdu-Y}4k!P- zT>oWh_yf;?o(Q}Y3L+=Q=+b2en>iY20|D8GQY3f8M%JE$O^1`m!#*K5d6~x;DUYwr zjx)w&qd*dR_c&wP*6gxGfCdQEn;^6ZI!YnlPhXOZ{Oh>ze*W9PgL{bwgxlsXAdF_j`8bPg)SZ<8 z-^-LPMGoAFM%VN344rf3$sl`>{{MZhi;PK9nSyxy_cSsBjRQ%16@%Vl+uhbtF}v?Wv8QV>-=O1CBE|fC~Af-+tl+5neWGLkY}P!3nwP_S^L0K8+3z6CX_sk zy+I~m<%s{q9)OOjR6=PHjJ7=^J_GOk{W{+d-(c29RrD>tuLXb?ft41)=Pmk9I`@}F z>Zf{R;OlHaJG>2R3a=70%+0wepd5**OS3$Lw7@tgKynCM?Q$qgy+*8~s%eq28TbC* z$NB*mbjw1;ig1FJsBc+#S5MNk6(y=?p#XtvTr?q)lo3J!!ox4l;QpUa zr2$SB=^7Q{>qAZ$;*e><5~&Kgc}Ecp56949&!0bkoVCxs^ka0<0h^H;qLkfmiG4g% zXZP|G2gT0SDN_c(xH%qPb~ubNECPK{&VWn4mk^J-jeOxL54_MHB5nZWA$m!Zn5qWe z9^9~Oo=QRRHd*fo2Z}xOa}py>VKebf`?QE1U_vIzi@Y6Fw0kvw+`t9-dH@-X`a#2a z;Mx94)FtJGHQl0&|8CNDt7=c5k284Q6n#1j;oA0Ami2B@ib!qkSq=mB#@Yq=`k(hd zJ5$Mf!da(W)ZMKRbFU!(dfQE$gl1)xH8SX+BfxXsf)Hr-KPpDI34S<-+qxhOk1RA# znW6p%84<^P5g<6gZ|cjBjGkUrO(ycBWPq{mC%QG%IZDRUU-8^GI_Ton2cGk(L%n$)4_MHx)okQuAGvQhI3?+pHuRg;J zQq?+Rf&%@d+dy6cCqqF17l?Xej%7F6|MgM{7`?3`@5bZ@u43Uj#ZB>f-$R0D$r5`I31fT-GVo>m5AJ}A_(JCGcEP~Lb zUgW4fV(mVQF z8EHFMP-wZ#r33IicXR0yU_=U_zE&h08^d4@k zfWR;^3JFH4eP=y~QTo|198?9roez+w)`W zbYAFTHd*2G&n!|kGWPuW6c>C}M>3PPWOz?#Ycxu`IaP37yh*QFo?6kxM%lj+v0~qb zFAyFWRL0XXpJHx^-VLjgp-*kzZLL&#41m7#O7uiM*F;(jdP*R9midkf;jfUbg9{!dio+CnMM$W-IBn%^M6 zRV=+oVGR@ZGk_7bLWIP*iWSGH5iM4C7M`r-(af9|w&W88neG#?xDeOPMS}GA)%8uM zMpJlpBpt76KOW+xc}^-2rta8OaHYT`yRDCD{21v$GE)iAYvOX4gna$i5y1ago*9H6 z?Y?m2>5HPli~>>M=p$8~7h-S~12DZMZ>zz6{j1yNSoOP6IG4F!YifZ2bFnkd@0yLw ziG<<9;Gbwemd5KWm&Y6nwoaCy+LidG=Dwm=cK}~e%^*g31||+JiSe-?wtz2GAaA|< ztx|N_sFP3;snX00QyP#mYFLiEeczRC(h%F7JZi}PZl8Pd_Gdvj$9<~Gh-Gyd^r^ZG zPLFOKp>540q@aQOBY+CYz)A?3E8KyF8=&sQJDU}xLJwlBLKka6> z?Dn|>0G5kn0jaPgKiNP+Gh8kw3N8LMaCDi6duHC@&b&& z?a}!CzBn!{Dpa`>ljN>C4EUec9nJ$gAhPG1&_nFn+NF$Rkc8b`v-Th~9RYB-Y@s~F zW70SA$px^G+W<>?5b(VowyFy|s@SUc09jyL3DblbAftg2z?t!e=?n(aVu;d03#!6% zf|V6lT_C5VIAy`e4w?e9uHm^gx0x`!DV5qQPJU8Nt5PWdY?z8_K{*=f8j%FOpB({m zp3?f~q}-<28xiSQH3M%)z2n^BJGIAI&!28oTk$(*w%Cr-!?$5-Y$P)MFQM?G%fqYn zyeEH%zp?&t)fc(`9rG?Gw}1o^w4{5*$zGJc>rcuUPK7G&Mva#RO1dOHcL>USrL(d- z{f{uYq*a~CgBE|xFAIxXwPfW|!R9?V`mGcbkfHs>Tv9BHQaNUdP&FOhV;ea^Bf@jq zVGjsgFz=Ut$#_u%Da3TPk*;Mieu$}4 zr$#K_Sn0IXEh`k~+iB#Ap*?}5{D+8MCL+1qN?vE%IK}PPgzL2g7>2|*7 zi-}uvo7PG8@SKbu0Zb=Gb_u?b`jIF)n`z*HCAO0J>m8EquXo)2bw@aBg38$-aE2KV z9B5-A*n5GFwlHnRX7t^}6s@bR_{|*I&n! z@m;#*{m#f9Ae|D`xydU*BCUP)AcI{D#&F34H6ae~Su;FVu{u3VcYY%}a>EFhS9qKt zwTgLq z3tP$aA!MD3!%mDdN`nSEoA@CFbN59puPLHQwSTlJ*#cG{>w9WrF7rV*vCrQMju@!x z8gG#uO2>-s_hw?Z6j=zvqVh^NGGsSbrUZFI=e{Cp=hSnO>pjA|Qac+r32zgdC;;LE z^NG_GZbLDS<@j~*$yCfuu=F)I1%|+R{}S|>n;I6_iGl~p{0@nM@-`rSSlO{>Y|aI4 zKmWJgk=JUSbbr%q7YA=tHda+|H|r!FR(O6>*k!5xF}>TgevA6w-k|x$ zR+(?*lF{wn2Qn^wd2&AQ&;PnE#2Az6&BZ{~@?+LSA8Dt$u3IWVwRYn+-`Dj}E_d`L zACWNXJEo0s*5&euiQvlshw3q>qjsJV8{HYl>$RDrD9}Gk66uzE4D6gLu}r14Ji>uQM%0u|n~4p@;;}DT zF`OvzogJE_1U3b;j#?XZ2kzX%v1d0T0c={o*LuF;(*Ex%*nX_wETIJERJ2A9@O+0S6(1+WiQB{wahP}^O=U*M_wA?lR^y)4Bi^Ig z-hMg+C^8CPHAOZu?OKrv-q`+V^fel{k$Z~_!g!+JtE=9-V* z@89KU^6-TKqmGD<<)`LvmkRd!08-dAlH3+O4Wcl-i{z*C`dlVDeMIYsYh7z_-r*=@NYT&c~I0A?5KH9>0tST zKZlY}Uqa8H`ER5a*lwX=W>&oU9gZF9EumU1iLEijcxO#yg~Z*TtCV%5*#bTn*|`<4D9X^VO6GM7pwD@ml;CkdZ4icTym*o8PylzMEz zg&Xx-ZU7S+NUD4$+hchVt%y0Fa%xe%eW9Yn05GFD#a3k~!0kSvryFoc+o%+MP9eF&!tH|84~o4>8TY%Zy!u;w0jt+BK5Zm4Oh^C~ zej5xHS!0Yxw|r}Y#ubD&_X`q!Dhpkdd0?9u2n9Z!vMjOuI$GcDpTvFM>e zYpK}?{aM@z0l>-g^1U8y`^9Z>M^bzmuC4Nf$`Y&CJ(4f_+NN6;u;qD?OMqut2#_OC zKnha%YncgMbwl2R#dB^-F;jW&uZKeLXeh(M^5YxzAi&o)L!xdZfI5{NEQU#)X|lEq zqPuh6Z)$~!{=8hto7G_Cb>5~Wgb@LR@EZ>sY2Dn}X}o0aMlpEQpG3M7+E=oMn=mdN zEG$PZwfq`zS8^1sr9^^DdsP*3GiWax&xmkieLho zty&cgRXuH0Jy|0v4NbU3+yBvFwc9}R-EwDhh`IKUG%FaGAwqQ}JoKfL1Y62{q9VE0 zqo*eBk?WMc%NZ{P9;rq;PS^Cf$`O(_vmk=L3;LYxFH>}kD259HR7C1Zk z3apwr9lfAcp%#l%G*uV*9z0&qIo2=nO7I1yuc*Geh?G2%q%KGMaoo!|pfx9Cxt2xu z12y+@%jl+W#OaDXg%8gzPH64;SlCvwA7P7%xOu&$1g#*qAspdt1R|17c;h}}0_f8Z z%g>H4G~fg>^Nc*vhIqw;T4D#BdWZeY@j{(+2WL{FqjJ6 zz$aG%0KUq7wMOa8B?RZlop!%*o^T)5o1}Dn;WhPWRxzT3`Bg-RjwR(C7ahwJ%_)sD zS1*ScC|M}oqF}U@+F2St$p)nujLA2vI~m6plLRGJ%WIEL+8L)qM2D8Kr+sdcG{NIh z=I(KWQBUT{1f5dCGr(DCgY6>R*951!QnSx(;^~?cq79}VembEp zG3(Hy2#6TFsd|UFP-O}iT@hCbK#_>#leazkcGb$UqX5-><<|PPEFJC1F zFnW)DQ{MQa9vmlQKNp@jFp@kz33M4y`HbBE%A^xEPxMuVb%$@fK>~}#5{iw?2+rH- zs}sQXB|lSjkM%}`rnPOQ4yeZ7jfsWEo&NCL*HcpKL%zVewJvc1i||%0|3ptJGMD>Z zE#Y*8R`#+v1`W?fk#-&UVy`+ZvAWc>GU*P~hUj$o|e3NXOHN(zGWAD3>e1lIxY!bAhVv&+}P#f)>i| z6860;v-B_b~c+1Njq%e$XHwkZHRTzssZ}TjOaxU@ z8iU*-BDy-t!}?s;-o=vC&K+c2+kM6vvBN!+$m;sgPn!EY?(`HC0gPDAzg4ii?)CjX z7`k+BRKmz2kLfI%PPq7gUf$;b-RjEQs-Y|mC1hF`M~R?LLJo6?ElV_UM*%ZUs4>9? zJalJbaDq4YL0Rbf7`lZWj{0%D`Lja50L4Y+uo`cSY8{WH@0*#r&zwMyw}ZFHAWrR- zm7Camk=L1=Kn*8^ssD(-RkN6-a%KoUn2R4ZOW`!JQOpllj`+;w(h$C6ayp2O%#M*D zBC1u2*T?D)*WG9Q_YyzcQx?e_QGcJDm9)2ljnA}9VIWE^P$x#4jJL5vyFi}AR^omP zzw|d-KKtvkX!IejsEtfHL-_!3!>+%p0H{f%XQiN$UuPeGS}Znnm4us6 z)}=);CL9YiTVSJ$zTxPpYxrJey^Tp4H+Nx4tKdy9Laq-{aXhvNJlQ+7vHQ+li^j|Q zn*Ba-kpARK5o?QZ`u-iO(xV7=R#kbFbc+vF4DZGw3w6NGn#<}y&@)rctt|1c_^U^Gp_g)(g=U@^#UoT$hR`4sdTT~CCT-7rYs zz_GjUv$g8N?a9~!$Nszn#fV|@4-L!F2VZLH$apSgJB!c$IcYjgW+mc3t~E9x+|DzL zy`%L$JnUl|CSRHq^ZEMkdQMEVE$geAIs3&$Lv0!;7fL_gh@i+(Nl7s(k~zP|P*ES- zt&kGk8y<@!2KV-!;+A7^pQLPC4cYMurj|QsQMBtCz>Rq;5b97r&C*q=Clx{siRajn zG6mI-binv{i~DWWM)(zvXfM=ec%tlQ35O6xE@MvjwCRhZlVJEFydx359Cbd?6fw}c ztJ#h84%}y45ddM>Ty)UF?!F0RBMWkwm^U`T2HU3u0d`K(tGI1x^U>34v0Tlksct=5 zHb{4Kld_^UxnhV}WXiE|F7fP)!)FD|=41;}2!DO3$OeqBeO)VDTxc^$4Egh(Vx69( zRXDi;InWHxndfKUbCxU*dh-Cg{iE@-`(mCK<8%F%oTRn8yuae#qOTA&gD(xSAQFPP zchEzH#3XAY_>{H2t<9uS$72aa>5C0FvJlPg&|h>5)YFiSiQW{Dyol^wAj-pk^a-5f=w zb@9*661OA-@5BE}L}qa(CJH73jk9a(%><}dxJIviH0lmcNb%mH>u-+l^0{u+JTrZVLl}XfXDWBa2Pm%}Dn3 zZ8b;r4|xByqb4M1oAcV!F)K8ARzOb2VmyKt0Va^2$!IJzFc59B0P! zg0q-4p03K7jjtx?wKM$Vyd9p3K5)6!cP-*#TR&WVW$&IK7Gw9x)Lb-g95U9~TbhI} z&Ijj&PlFH&2wwSMI;c>X>}$JNyh-60+GVQN?Md?GJn%splAxR1kIu9M9OYDZ^$1Ub zO29t;k9m3ocLrh2G*t)9MF?m9D)Y}a@++*{<(R2$do*+}E#?EX&o67b%nzXi&QxrWX&q>5$>B3qPNup7bu?cLrei5)rwdZ_&D$ocBeu0hBZ^4m z$UUWkx3kqpw{Osu>Ci(Ozhyn*<6$Bc!tSvCNztugnsfL_P`(PW@xsP@hYHD~fvw}_ zt!-?<9&zeKoX$+Uhn+lI{y+@28>)~G98D3ZoxA??iP&b-O-PxBafS81!$uR3n>sY? zVxbPNjy%1g#kaVNY{Zb6mxPsJzhl!WX@sf51~_Wh)5?Fv9KGA?_ngH7;{@7CjN|8+ zpeLt#xoDS+ukHZr)#vKNt?vvQ+h6@_~lX} zx&N54=5~G`2@!1{*kYQjMyk3nu?W?E&8VS7$oKa6ADb>l5QxL0lk}FT|G72%{EgWI zHbWOCA^0k$FWN_&<@=Wx@3`(a7us|#<%xQJJYR11`o5SKvL}7Cmfrahh>tVAkHp;a zE!0RT!%{kHn87oe^mM2x#au!({DRq0owze@C#LDqywiyR$?uwUrY{w10`xQAK9cZW zp=O}Az^ZpOwa;gMM`zDE&3DY^)c^6+Z3{JS5+;l2)|k~|8`V^4;T7WG9fIWCsUlZA z>S_E?7sDM5ojh3QlhKqQHyO-t^iw%_s3e*R6vI>@;v?_A7ai`bhL?<68zK_|z|uV} zb0h6aRwq~GC?)XjkLO>vx?#c=~TjDEni>sax+GV^MZwjDqKVJ`nl==1^m76P=T5 z*r0C=v|#UZn0FwZ#yiT#C7yh&VqA z9EI--WOomKfDEyDzLOeXq{x?NpL}ZR+wZKH+BJUBPQF1Ol{ANf`}}^>DaC$5I0QI$ zmU|}W#Wj&8yR7|SGB;EWYUm-6mSO$6&5puELvnf)Nm~C|FW-WT+Vw^&MdF_Tbpj*| zuytGH+w*Nc=tAzE01k5Gu@2w0WLLH>C4yI7ii6eGD|_Pp@tw$uH)zu0kRMpm{Oxu_ z_>{YT_J@DM%PIJDsu0LOJ!*s`a)NS8%^-Lauvo!|5jp*^`>X+@Vo=!~Y-iDBty^KF zn38VTe#6oZ8Qr`9j#-q`(^$cFV&b6(h z2+AWOozUWwdJO`CJFRt&CdK4<-I0Z(i16OniF`F1@>n&Q4$g+3RlJ%(Tf<-I1m9T2 zw2HZdhbK|qw>?|hj|Gx}8-Ol-7TE>q=mfTy3qc@Geg#fxO}&kYO~1U65oaT&;v#{~ zE-`*nz*QDh`QS!seXUyhXk81#9Y?KBe7sQ?c}4Hyttx&I_)*C{pVdY@jES?v-Ohwb z58oIxo;&s1w=}m`9{ZZmbs{U?+D(IQU(O#)Rs8Q2r%4zi9pA~ysIT`pb%g+0S3FR0 zPXe*MjX7;$n~QnzLem-lxt&q_q;{Uyt>JYEGie zNeOcE>PK$i$sN+%(I9&1Kx#Xxz`Z2 zq{xTAl}c_UgqWctavdr6I*MH0ZboK_GkoEm)@~f6Ms$w4+$ePK2*?}BI477jHvWSz z0ysBMbFt55q@2N2hJerXD0@LClQuPjhl6mGO|;k!uU7opk8)AcZDu3Cl!@|j&nFc= zR?weuJuCpvhIvP)QL#|-M{}>pv1BDk`_F{%+>g`+VYULy0$Vw6!X*DgEN6J{hY?mG zjYxhSH0*Xu(t4YT_WZW5=WU#;yAg~F#*aeq&K_rqor`KmN~^D5?12AORpZxS<{hu2k3;o@1wy{tYscL`^Fpvn`!%a|uOpiVXrK1mSKh~b$^ask~ z9++K)qc!gAn9D?<4U|fG?Erq@`M>E-x;ae$&bT03)7T@rnsxCkw334UY`hpVNtube zy?$)PjYO1IEP*;j)fw@OKl4yX&%Rb@85lJ45umKmf5J+qzYgOCa_h{vB^-SrInmw` z5KI09qy#`s)pBSwnLg0kiay+kQrr7DCx@bky&ecWF;1pVPz!o7qK?`yxjos&kPE+? z(tHMNQ0R8M-%dgeo3t-BPm;=nIm(vTEgr(8LJFv&(rp7V)hYf`U#1po72I0I)_05a z-tYk^=nw5&>2I_ z)ar18yI63D{AOvTt5zhx6mIGIuC)Bo@zj@l$x8~?0lu<(%u6DAa_1?PIRgSimIdZWZZgL9iHiC`4oco6TizziNU~Wm zLT1b}s$0qLo)NURC6#aj_{g0Jv((WZPD=I>bVDH+fAC~ZObGDM-ZU*c|8qDjl<4v6 z4HDag>;_~5fEMksKF3-xqad>~JW5Ie)a!6#x)hWVXg`>4X%6j?6L?gUG(JRSj(rnu zka;ME!~*6d!R~HCmIdoyw%j<1qpq37QlC*X7{AK8bIPd%HyWU%6-l6uRVB$G-tAIo zG5#F?!a`t4d84%S6-L+^$n@3xfs^}5goFnEyUd+v0&?@*rt9}$2!30Da%WXL=>B8r zeXiqcrft?Akcq%lDMTQkiW@@ql;Eox^nM|MANAqRQfKH`VV_j|rrhyos@TTkcABcd zv)qnH8xBCR&h?wHaD0|5IuXL4LaH_Ge_2YYYByiGeBLSRx39m&U(_NMc73_INdP7b zXUhu<^>vrHX&iW1o|CQUg2$)dI&~Z-2$XQFccLPS$3!g0t8YQOR&!=5cr|$e@nTc` z>zt*O+sx;EU!GZEOaRw0mf39w~9!A=tet`WCK;FJ&&)}5`7eGv~6THr?&6&IcV=?FW|aux}MxM6yD4S9J?US2 zY!qt(2<1ZQws|rL`DsnxYa3*asl{m9!j)IpV+e^T2qA6Dkz{#l|A^p(Ix^8v^(o!C z$~OLlN%MzTLOR3)2#GUa3!BCMK7(cypt^*qxbX0!%sEk@g)&t@H7Hj3MR%tHx)gT6?zhntO6Z^#k1M|PzwTdX$D#Z9>a}sh5-1)Sc4kDo=Ry1 z^qYns<*NAV<`!J|`B9qTv>B;v3ao{+fR|X_v+rhr6dG0zT%NCoBJ8Yh#^e?o{OGHZ z9ubu@KvsDNkX6Vh)&U;0G%YQH$h7`(46rJw1)H$iz>fx)y|Mx8pBs# z3JB2FmT{MbK;7%!^ha35nRnJ7rR9w>$6|Yls?8c5C)yI<#%Rj`W8pnqwX$4bLZU^B zxUZNy4C7*i#WvXHi`XG?Qka^6d`}ocV;9sMI?KokZ7LJ=XE7`4lLs6PLc^jr#9Cg# zYYjw8LG=qj!3cRQxf*G04?EQP{$#Rwif<#XO7kuG$EdSWuTY>HMh~&tIS8&6KFy7v z{3L-XtJ(ML|LyQzmW$vWXKBC#@BASe zIuArbG2vg+C+8g^bT^lTCbonkmgu8H)VSGXd+1MtQ1t0P+V^eJ`lzo3Io?4BFW)b zZRgX>x9x#M_0r|zs39N*MZ4Y#E(oDwn4zc=T+6?bkF#wxn;Qjc1`hz4_YR@eG)@$% zE8`eQS~JxW#Oig?TY4+u+U|O9zUBu8dqo=~#@Ax3Wv1i!38=GGQsfS=KoDkd+p=p8LKC&c@qpJ z9%3bD8XUCT-N@n5fVsHUf1>E$!1m8XiNu1eip>mS)4!S(JeU-*D`&u@-)GMRUML4% z0QXjX`6Rx{u)r4SI679k9yQ(h!}LFUXN}$`o69}w;V4F5sI}?StkE0CymLz(k((tV z6r#ciQFXSHL`X0FcyS93TIqrJ`hJcVfzaOi_Dkxr7x0Rlq2y=TOX zyg$_z$l>(^zOyxDbv4wVPFLU8r2Gu~`BC9hjU9vk-p91q$GKr$%lJ2^nzX__++3Fm zeucIXJ<$kYxR1y5B_H(>i4$Dzz|>*_gdc~j%6ky-G~N_5J!kCvrsB_fz+Z^ zWK#1^BZK%_!$Zh>-(mIFJu8H{v<{Cp-ajBx$xyl!4*s2gR&A!=E%p*{690C#r&f7O z*R%}J(0hi49!{8k`IAKFQ-P(1zb&BG))~~Z(R@Wn^niyXr$V0K=WTN`xBEJ{(9GYq z5fsihA?GY6VOSWNI|XWjwHCW*Lm1g>`OX>D2dTx{!nt)qWB;!Rb!3*~b8I&G9&2*# zcV^hWWolwf7zV8|g$nNg+rDNaVX(+Zo8GPi1pZ|v8D!3rYfhWd_#bErifd$>p4FZg z4vXi6r8}N;A5G(=raC_E=x7IMNAiSX1Dmq?bF84+L z;>iUl;E{GvM;t=z{?4C~v%fN;A zuYBk9Ej^S1mU;go6(S|t(&EzB%7!_a1|@UYyCuOS>|Im*8Y~(wHVgCKqav`e<<9TB z=Pp__{*et$@FCzqbXH$&zIR$L;T^`v1om+Wh-7}L8^7Ki(p~>h<~5A2za@1VIOy?N zr->XYYFUpIDT~_INvQlOi$vl?xB~TFHSd2V%Mn2&y8yAbR7~FPX`>^6ox>z^#kM$L z57*+=Y9DA6P9zeO8zGy^y50jR96fD)qtzbtfuSBQMW9HAD=prVKU3>U@GEw zJfKvAp87Bq_Aq*Q+D`K5*cAJ?X6o8G_G0QF&-$!mrHTxw%i#--B59JY8I_Aa0VS`V zf27Y(d1Q3j$G^L@N3#$W70E+vYn0q1jEvDa1kEAK+4_bFn9LB8=LZbOOMUAp+Fl{U z@|lK+jG0Q_(}(SSe!nJoje$mZ;SJd(o!<8v)_-Go-%K|_@TVTKHnr5|iTio|#f*#g z@VZG^y8Zzm-xPZq_neDrEd2oFvZx(BBE+>IGI70jJ_!hPi}ZPK{%Ba=_xc8**++@K zl01zRVO=_Un2a_yAE|eaO=&7_0T&mW!@q44m%sqS<6-M)fp<#1H|q?fvA}lIK&hHM?_`RnghAk`^_hD{%(xC#gbc zr)0#U;oA9 z5a(D#YD)<1J6U}GN=RY5Bt*K3pbQ`-ZU`Qb;i4II`|Z0W^{a{EUO>q;6~4IqF|wBL zdV2ReO6q1R(=?LZ(S zu9mShl-&fEiuhDhRux}9l;cJw{0G^)knDP*&sv3wIa#*Ffaoaz5<(u2?wOEhUUaqI zCrtTTpHX0kKNF=DwV~$#^K+S)@L69k7&cotD!qs_$`qkLV|uI+ZpU7CRdL^#p6Ijs zwR^xtH@s!N^J4w2fZ9HZ0~ko32zeSDXm1|Dr-RCQMhtm*rTi*XdmNHFqr{DIH2=#u zegLucTWGbij?uJ-=62+bo<1^q+|N9sx{#kWCtl}TanbE$KU8Tm53>>fn}30%afIBZCdbiED`-1`gc7?zYJD@J|cCxj5gZ=^B)g$ zSz;gen>zi5?_uM*+`$Q;BMinyImjO0gE`!f2da3$!C{h2rb#81&@EsthS#$6B`ZK2 zZ%K*m^SlDWZ@VYnrV3>mSV*3pJ08c%F91-zTG(ntJO_)a$CZaPCjUDG>pB zxV!k~P*^B?*z=I6qtn}*^&wNf^^?A&6m2Gx8D0c%n@6`U#{mS?DQMpX+2e&Tveqf0 zYx*ZE|hBrm(QqV7|f6d-rQac%qimms~6OU9; z;>xb~BoYj5LjDY=$A3?5;(QHrYpEZJ^6>rGaJBVoy@Li{z$h1L1-MqQH{UAK+l4kf zVo5621oC2)Oo(_8oaIw*0j(Jmoy|u*%&nsWWZF}5wyP;ZK}&-M5?CdK3D~39Pq^z8 z@!$XcVKt5Xp&c>K4rGz4**X+=1h;>cRxmGD{xOXH^rn2ank)KivCaESin2h)E-*$P6T1HdA^6<4>(=u~z<}+*%wta3^(Qsvo{%ZXiwoyW4&%)ji=d_ZL0R zC_jllWB}gj_%i^KPf_{d0cnciix2x~7NDkbXL5;%#oxM0!-waw2X)__aIcvtk4cA3 zy`|#?g9vDJOg25uvt0UHWz&s&A>T=74coguRptWKPaTZDdGyP1Cw>%Hv!RpsT6rI+ zT?PRF4^h;KOUH?8fLr-0m*_Vqe;igI5DD|-Rk+GxmmJ07Z?(xVtn{?;*5d;zE*8J( zsOmNE2HxL*{?xGT?hIg|in;0Doh;>l9jjrvytIftWgk>2#s zL+d3Kx0$t@$`!+NaYB;OJMTz+7dc5-fajF5aFC+NSPAz!Fgs8dxu3_p=5+2~`_*sC z?tJK(X^=IyA?>5eB>U>sH#^76+W6I=XtcM|bq`en?f8VQ%WSbjzWpS4gMtOh6U~|%?`IxJ#hAY9 zyON$#v6(t<&Us^D`-+CS#2TYP))%!i|F%Ah_ zPOYyo6}aTWmS%K~Gmd&QLh<)J_$N~K#z_TLiN@(5k@C%y*22wF^91DiZ!f=7h{s3S z6a;L<%Z9r89|NUcdVJ!k0@nv|`AcTL z*oIC1iTljEi_sfH;o>;CVhh+e*ufvJcArckB!F3W?9A%k%FYsW*6S9MBkXc#LG8tC zT&uu*yfeF2*3??uoduHH$lI;3i>&yz0vJfOA7={BnQ}=8p_*GtNy{Mky8m}?fy8F8 zO(7)|D?S)hOG_Q|5KLR5riTw2)Qk_XlNa7?| zaz~K~IrW$-{vo<^Ek5UOPaLS0KsY@QVk>2b|AH{sAhm-U%WfSNTagN+-xn=-UvGyT zY6Hb23uMIDO;|)9OezyNN!8paA|+m`{^tvj{68gj4O;=wTQ^PH+tyPK4N{>IO&#XKft2CT0Lm#;EV6n z8+Dn^9e=cT9>BJ4Bwr;-!gFqt>4mcZ3BxhPr+(Z6xD~ByKWmTjTTC{q+Hs*+hKo4H zIWZOi5rI@d8eKvq)`$@|;o%KnUo1j1L&iRxuQa?%nB;JF3mFtcu2XtfNu zl?o_UN!-8y;oS)vA&ZctrA7=nKcLMuyUeD)W}aB~{V>QES!*LLr6?9cdKtug5Qj99 z7P|3&Z~#PrLyGslw!eN^qv8g6Dnio@*EhT1r{=LocGLL?jaKSZ4 zGeM0LNwcRdt(?5|{u!rL0H@Hym=L=1no3KHcD6Z1T_Cfj%cr+``&4S9c&N4HDck&x z8&l+Hbrp%oRLW;>5&x~x6RUs$pbiZi9z68~bx=eu}Esjr~s-tivAIMYvz= z+ED|mQwm?=J^b}HDwAK3_ir2RwjbY9lE}h;{XJAi26?cnmkhJ0c?6|W9PaZV`uqY~ zY7!!^4f;HQ&U9;Klv4Gr&vP`jaN3%>$ot09%@nu|h)F|^j9o;+k7HLFh4QuT5<{lD z?^75q{+2;1_<65?qJgEiW5jU)D92nIlhb?Ij|OrUW$Zyw4AtfuFGz?-OV7dr^)6*B zBCoK@tM+N8ESA1ZA_7P^Cpi#{VQ2SW`yG4d}~^^zhR85eHR+AWNIOP11|^@UZMHk5YH_GbkaPAQFL`!H+>3_ zvRwVfF5+>=wZmb7>t=kUlYXCm-=NcL&Bt{O|DXx$$?^p^Vw3Ym$mg92vFuiuN9g;w zi!#vK-k#ukIn!*dZYbl`rzabYSr?#GQsFNe&dN>@Dc7qU`TR;D5*T>S-GmswemYQ= zwX6FcWQ4=OpUPHzU}z6#?*tch_1Xcg0TGTXJ$q8X`1)_T zER0NY^l<9r+j=<>?@G-pf9pFID{?8d@=w`bPqRdvC@XpC-9gM8(_J?{)%C%&Bwg_} z0RK9^L-Me`OO@K03ieJun^P>n0#VjXXg3;=m?Yq3uIc@ouJRj}o{w5iX$-c4m^90- zlGn5$@GDdoQ{+CL@>2Ok3X{ly69HG*{?pg2^9mUcJ8uxC?Xn zf>pF;CQR}rf|Us|<=Qq{Vk}*pbid;)?f>ZM*}R7R`R|f_&(Bgl>m$} z=C{MCV_plDWcGyVKa9pVa+nLw=#toEUb?vW-`!ij6fu@vUCi~q%Jwd==<^AhHF|61 z3>7@jKbscD2C|+gekNpV@(u&0GF}F*k6?05oDJ>!lI*&WHT$RkzN(ltUFYCbIxb1a zhIq2gO$NumgWPBrTrQ0@*~KDxGcf$4Sj`J@gt6!o0(^qSsr#>#9@WB;(&ky#op=45 z`3F;p&G*0y)kXlKUe&B3HI<9py24c z6PTj(LW>Z<1W~_fcU=)B5ubLpjMoRSW|?nE%YZEO$Axd%sdyjn4L`b|eBaw>FF9rR zx(!!{8veT8)o|_5N7^q7^s2VlIX*i%N=~&z%p_!B_6ahz3q?; z@P?c@0YV|yyLmZ!OCwRiK1_H-ko;JSFH0{dpRtwujwu`xj~Oil6wS(>R+Q{k?CBUW64R%`s69C?2ggrTCDY!8|jU@BIe1Z$${tF3Z)84^oVoY%`0cAqUKnC4} zX&aaX2yIcz1P^tCuW|yvZc%QlHC4TpwKEm;L`{p*FV`$j-H5b)In&5I9shYEkP39k z&rD|7b(Gg69xr<(tkRg#fPVlwi5#do|0+;YxA6xHWW*eH{}agi!Jo$nCbY2R`<-oO z3|hz0r<&Y+?$N)s0C;~;W&k|uT<{JcrDA1nv_Dghq9{oPpxKPVeViZuWATK52>;#y z5e9)*+z1W(d<&VrRN?4da@bBCBlPDN-OqnA4e#5jD*j)zjsSqx5qw7NES!}niyvwF z)v^`2oWvqSIaAAF1Z2+0=C!?@DFK2HJxR|AAzncb>c7b%&7T}$RKF1rbc}S`3*Zp! ztydQFKCcDyQoM`OW9&q{@7j_^PNE`EF2PO?g4Yd{<89ilOaKo6NZ!D#B;nNG9Eizb zX0(UJm@mD;KxxF~#h#u;I{w=Ce9C$wwsr*sJOqK)e$HUaBZqCOFIWrtgYU1VfL6Qk zrGi6Lcn}@22e7W)7*+OATqbA=qI)tKM(&=oB7c4d7D?pJ%0~O zi&N!pwWee;Wbc|2mQrC=PGH@QO$>pMJoR8Aet2d2&pO^%jInmE`%a9Ki2v5Dl5vt` zH+qt=rT=)B1wk0{k?jAwj9MqoNBK@CDu?kmG|tem#m~VfJCUPK(nt)p?$Gd&`Bo~^ zyeOBXa)H97kjd-UIS&7N9}a9#z?r42ftZNu8MM;C$hs^!gf7}2kDlZymdN8D%%Cq# z#NzWigFeTu8=iMTck5qXFP}dE*~WEkKDJeD{r7aSzn>ITa;KfbgH`4+OM)mcq_9Hn ze0Jzl>QxQKo73MPm6FE~!hJGc0yUr^O-tw4%}s%8Pqe8t@Y1QRCd-DTAPX38T#{tKrQx3hQ8 zNXCgawWpFKAHWtA05~ITRNDTlnST3``gND%X#JsZR3_8IU*4!x4!LWphv8-!9oRsq zcUL+jswXuaw}dWC7$fmD(Nb#I`Yi>Q4_Kh?>L3lW7A05Ke;pdOT)1bo+yMNZVt{;u zNBr7WNY%WrW98rS0kq)(kOPJp$9W^b%JYveL~-~3#T2o=&E}ij?z}WJrYt3N?Dsaq z1j@B+fE!SOVdR32aLWcl4wRsQcU+_rg(;>!48A3d`Sc!;ZznxA@+*@2*(!10sYHD~ z5XVozxR2mKy)JeD+apL*{}5nC>%S5P9tB`h0a&9*R@qREdJO~V7{d0=yEd ze|ZO(d;_2*z#o90k8)t(20#)5@Ix2IgZa0AKf-r)5ec28(;h$nt+6RzUsVt5@0&64 z31t8G53BNENFKRXfGF^4*7qh|;Ss95?RUSP*8S3@+?I-czCwfgKy7YyneMaSXbWNc z?;br&z*T3juP^v+65l}uS+YA14!X$t_2pxgn_lAivPRY zc~(SJ9KBwvg{l#;nb--vTk^&ZsL)S?hBrO zkKz2Z7zu4C`g-(no*GJwa#8Hk~KCG;|xq!kHBR>A`6aSS3LpVfqbz8Hc(iX^0 zJ)SsE$3g~8?n6yPTmtJQiK?z0kX-Q<3ZH6lvSF9n#cyf!e~P6#XCbZ`Rv6gWR-%V# zVHywb0>ik~*^o4LHa#(3kq$HNiZPFnb9@Lv;=NEgDZy&;_68kycP16vVijeePx8Kj z0NFq@)An;vQaL?Wy0ezw^=m^E31Sygh(NB3q=_#MZBm7tHL@0!)|){jetnl~)E=rEgrWv6iwyx6Y$ zQd(sW4W1}L4~57YQ2ag_GUHpWQiFQE z4#FQ4KgzjZkTxo^?5Qt#)}Wx|#9X1761xvspzd&K9NZ`;#*8`PmZOiL2oNVpn(L2~ zf4%352;m<_4&0aS$vBp^GcKEV6}ZEbSm-c_h8sL??j6W2T^tx_{8-}nz-U|ZUZ0<` z2)DXbGh)rGkqgqBxKW2gh{${TQT%;AJ)n{O0N(kH_r!buolW|k-ut1+e?QjGgAXq1 z95zQ2*UOz_-W;W1&+TrM<6zoiyC%kv`WYBZ!|*!ECLVujJ*XkkGq^SnC5%BQBEY05 zvFx;-lefKk5`Sr6K(Z^gYarK;89i9e(8V;G2jldjM!9qSwdN8^|J`a*r0y=`?CCyy__1zucO*MFlLVfw=M{jEV^v(_X_bt4cS8?ySBL&O% z)$%{y?5+Cf=3pk5M&euVMMWl2Se(zt0m2Zx@|D@%Q-YWeDL)+Gp|^$#)92lJ(Cl$c zD>W0=+n=h0H$D^j_sy}yw@`?ybtpYmIB=w$BE}CG4-~}ejJ24K02zVf4n8Pr$`$}a z6nH0ppPjyJXa8kE zfZG^7PHfkEaHGr=u6TG4CCqH zpa|*_S@WeHq7C3{TMvJ}IW)mMn-+r(o#9g8%Q50Os+4BpyUU*}COjUi)!OwPe~+j= z>EsTNUc~qzMi|@}V5}%uq_n*BLd}SrkiG#*hlPRQU%u%7 z#*-Ug6TD>V1@yx+JUmZ5k1=s<46Ey?1k*Vl?OMIn`nY8$h0ayWA)md@J4B5RmNK0L ziFm#?tB)+)aSmgtJeI=V3rItOmm~pkK1=4-s(tQqfqTyX?&DIwn{>?YBPo*w$;ulR<6Ih)ph6})FpB7K zsi=6EFv;cI(8oG23#X)Gu@55WlXEj@XGJWhA0Ky#Z9F?ue^D#y2&C6(Ca`N9%Hc(U z`SsQf4CSmqu6lPgQxd>_dOB7+H6}lD#6U7VYK=?2vtj50v6TR&mlUo~u+GLv@kjj+ z^324Ake0+WxNH;BJUGrd9XEmsQYp^`&&lfh(f&(lX5+@}Ko#$KqP?)p+LPR- zQbdx6>3M)zZjrOPm!JRWhx!@hJ95bcvZCZp=8-$2fjigyR>p|tyra(ZrEo8ziMzfj zzZIlH!))*rxEdc09{{)w+LYeMz)=5&K}lhbgKQXl=+q+!l(pIoKVk>~-#>Rf>69jV z(K!D$?;DWvA>Z<-e&a*R&X`xQ0&cw?)RY^0@wr_8J8mYA0E!?{K7Qi}Q02yWFjkAABX$65izG0c zl>nYUBTtT@6C>fZwXSK6bjagTzdD@mkWo(F<6Y)`G48mGGH+8JT&>u59UFDv`$U4H3BM%ZCI5*U>in&6n1_Pk%rc= zsBM0e*;maFmHuxzAHV|sTgLrtlSs(-D77%~_TcAt-ijqz}y>(#+OL&t+Il8Knz zCjk!Z$%30E^?<4>fQP0|`6za`xBS;iNjKK{-`#ryly7v+Z^^02+Xrlu<#n77gERn0 z{w(H9FcQ&_dW1hPoZqq(iZS+nf)^TSuxj0wNuM z3-;rcPkZ!%Uc7Ec*gtSev%&FfiWxl2FO!C^D(O|?mIqo1Oq4i_gixgbImyqvl%c`D zbnII_(U*nG6R(~aGDeV4CA*S&4U}~IH%EZl(b67;Y_!#3Zh_!Q!S7tF#rBV3(cf3D zcAS6jOa9Jm1@uq(F{#e|&-G5ks`@(fkXVg2Wg~gcWDQ`5VM9k{IFK?3=6<|(0ro@X zh2r&|dBUqPVZDU)AQo-MQIbDXP0fS$j%+fiwf9LHV2Q5{mNrZo1!3N%8x5}yK-F$s zyA6fnGAZvQa6z+04oG+9o@aXjtRJtM zvL#q}u_mX>peSx_C_`tsmymf#^Do|F!TgEI zxltdZX(C9a9DHYywBqW6n?tt#=$?ajs+S>lVX~Cfok0;2p&Z%YzwR~tkV}CI4UwEB zrRd|p@x2y=ArEN%vja374j#0U5C&hbQ;Gc7#ymQ(6TNBtUr=L*!gvB@ns8h7$V;<$ z7mgDLW}tL@CFQR%mc@j6YSj&^L(D0YR)4l1>%Mk^v6)O$Ncpw9)%vsEc&4YQ>ai@x zxZvhY-`5}S4=9UK(Q0w-R$;GgZs`m@j;v}`&jHv^Oe zmJyzVx~WXWg$imFElTJ-_1~GcKp61D@ue@~4nqRI#tGM|^y>Cv3oq1SlX(I8{d|tZK4VjEq2%<02JpOU?>V;{m3E=W{pp7o{ zg!vNoiMxUmuvF({kkd7f{sZaJUUF1)Or2S>+__*%Cb8_peINfGP6o~l!;h%+UeDV( zO&&etd1%&n4R*SGq`aJ;^R z%LH9}sQHenkHp@0S17)>My8Nz_k8d3op}!em)98#Y^?(1wP%yU-a_-Q6eO2MxaS zJB_egCt>59eB72}qjQ?!NKxYRhODfR@S;k5VRk^YeSUW&bG zavOJXrScjsK3K!haG|OKLJ#>$gHNnvOU^mYElgOWod6LZoGeeH`#VdH;t)m^!`F}5 z@@;)9$oaJY*(Ohlk-~R!F95us_3Z|DBIiEgNwPUDMQG9^Msanp5=eSV7Yf5#dI{O# z49rG^i+MJoEIw=|%2ZIcib4V1qU|C0-EIHRMVO6Gi$NFRSw%xo$fj_t9{mOUEiUKi z0tl7Gihb64ZpA29w_QuwCZNmnFiQy-f!Pibu%Nei5@zRmaiN^cPsc%vY1;7o7f-*b z=x+DL&R?SsF5QNu)c;sv*njiuCrPf!_DM{Fe*jA-EEl*NlTPeb9(TkLMs{10TD`e< zjHxzNd93;_#|BXAnPXw)LI7Sb*2nJhGrv_yluqe*_132CAJz~B zz@)qTQ!TbCNsIH#)S$g_Xf&nA(kGXp4`pB41(w*&S#M^%hT1b*V!`P6_qIK^Fa@U~ zB-YRmh3(hvoMFkeALs9?ESJ-lX}rX`CCGmzC{?630HTJ``Yv=L&mX+P%A=JVU}rO% zr!F(bhp&$qHoes6paN9b=FBoo&wq+lm3&RG{1vbg3wz1S>~}Vx=Cm;5Hr%mtF<2-n z77ZwJ&#i#8yCpI(hX0>BLt+&-DC1({Cuis{jGdynd>ilxKyqJ*y zsP0-=??LOHT2gpL-*kMD^4rfscc5hhv?Ahl7Gg+Ctg7h!!FiNOT@v&!5~Hh-{c}98 zmy_H6ozi&$1NdN4YlWgHg&z5rybK`ad1a0dli}CuX?ol+K-`HYPn0TUU$XM4>n<*s z`Q*-!kCQwq4s`t~t@i1QZTG{})7r}KS|6~>bP!mcoiECUN@tn{JPT;4KYy2v+UI=z ziOloH^D#;UsFSFY+Akrp%xW*4hSbFsIddhQpoI3lT#edZ{wU6fBbaQlzdcF84#7Wu zOYD3OZPAFeXvxL&;I@IHOF?7cdG(t@Xv3?eLUx&RE%Hpj?$YG&y4l+{vdydhK?=BQ zpC!~OSmvM6RHWEZw?5Lr?(mXXgGk`Cnosm$@Y1IacE7yopbyJTtLuM7fc#-W!w*Vk zbE&%Usya9m$V;X5?m(ptyOs`G55$3)r+9t+_vU5*M3p9T>Z-pFN+5$03c`1|4I`o$ z`L72CnoAttiVS_$L^$|?B1v1qGa2Q#dWGXiyXrZ+x*Kkc>zEcj_42&9f2LP@@7!}b zZP~fxohlRbJL*v$M*p46bTr*@#zj<5v@5y*-r#`e6UkL94 zgE>_7+lyFi4gN|IWm_x!(V%yO<=vs@7bgr$>1&!XU^w?(J!&uSt|eQ^2$aR)!{jV< ziO6Z%cd|Mgwbf8LuCF1uw3%;Sko$w*rRHif*qxssk!b%|u($r2WCCkfeFF##_IHvL z`{a6!^0K343g+m-EeFDsx?85jOf-3S*i>V&3x#vyjA}#fs~Aq`|X#5^*K`c<%`<->iTCISZ9)H-S=AbX;CU)K?vn_0L~~?9Z6<*n?$8k)*tL zYn=;eZk74>OH0x&;`5PN<8Sm2UgLG^HuQ;hvI7SAygUa75v29zLAc*m|JRqnO_NssacLrDkn#n*ygC#@EH$UV;Gpb|cnhH^uy?}!p zPDI9YtKnnV0? z+#S9Ss2={1_W=rZ)`8*|5w?o@&e?Z!F6(W3^2D2j??&ESV<;zlalO#EB^q!d>4|e|VzP zu#``xAk|EknE@-6CV=NefY+Z~lS_!Vn&1Bfc+x5Gp+JlOBzmESVW+!t9iHmsBgx_&e|utpxqFKyV(3epXjPj7CqR}j+$a0=qdS1!5?+^KbfP!+xXb-Z8JZAu4Euc^|7ll>nG~zQ;kzg7VP?d zck!l%n`+XlStK0CJSz&Q3Oyeqgj)}pxcxngX|6&j3WK5)u4;?40c@$d5~~Tpu?!Y=_B~tP}MR{`hw3;iHaAzCmtSl%iXs15K-sNn2TQrOPZq^ zP0+7MECojM4!d+gfg`!Wb+Ibvy^$=r}L8{U}cmpjEUrNR!GVYc- z>shyALN!_-&{muT=@e-jf0r52Wd5!4IJU-==ht}tDwc_OPNCtw=(aYH_+vKp!6L!!8ERT+we7HN7nQbJBW_+YdV-*_-!#R8foaQ)69}4t7$|czfI4Rajk!h4V*fu&ed|0f5 zsGI@mXH=2uwH8I_UCZCEr_(IaUsyud2{G1dQK}RiHWcA@)n}=k<5=PHre@0ro?X#F z)ijb(9wJXRVuZ>~@dY+ns=H$Fm3qSS$`;a|ONuQQLL=gyz0M;@2*s40OVSf3&_W-X zuY{7ucH+d_tUVm^={R@@6(GcQn5*s?QZp1^1j@u2zb@8Bz#>4>A+-^CF(yh;q&$B& zLy~8Y)llPfFUpXme_Y$Y`1PS|w^mCV6m_g4hD`c#j^9=?%Nf4NM&|Odq<&+t<;sds z+2DpvCC7mel|4^;%6+9hp4{XyhIlEM&N#9Yci|;@_Y&J-p#ws&Dt{iUQ}0KvkL8xZ zLi^9l4A`++1RdqZT>n~g0|Dh%yb>9HdkqRHhu9H#zyomfeY&W)47PYVn8X)Jl~OzB z%t8C|G~CkXq|+V_k+I(57ANVMP|VUy zFM*+9Qt10ya7ryY$igt>eBxvMI5TgvFr1Tn&#{7_H&fm&*Rl639q|T$hEV@T7S78qw2i^3=u(ZwhZwY?afFJNyWyxRZN}?!@$!S+ z`u;Q4i4I@0bSzI1g9~5Fx3>c#dpWF@73+!CV?o#vP#CRiD2p*b5{{v@fj%;Lt$J$% z2^l1q7W+xs0&}(e*dmHhNS2Qu;9!ysW?4F}`Jt%kU6^+wtqyuzU&^b2@b-$7y$3i# z3$s2$9KoJ;HmJ9OdEtGkFBqLARc+z;``GcP*@UfL!YFc*?wY9aO7p)Xi^o|9>Fqk$ zyz7O8%By2AL($VR_hVm=1VM*TK)Y5UUHThp7CRpN5c(XUrjkc?`x85LuG?Ddi>fK8+?`xf|>YcCec#KA`|`00_%P=Jap~Lxaq44{4Dm`oXM^vH4Ow7XHeH_-u8`MMtTj)_Evj@r4>;& zQo1TI5D#9mz4R{JK32DvyrR@Y32qz0x&l+=^RC8GTcIdFY9yW8RSIhEYvt!%7B18| zUyg7~WyL~pF!lcZ;##kDk;RHTex0YAvFgModDL2auHD|HuqxEy7uVKU<39Ru!%iWSoJ>#4rUYHqG8A?bX zmzxJEb?UPEI%N`a_n7M)H_M4UIe#Y?@=7cFfCzWWj=2k{YT&%po{zSFlH}`P@VS4Z zOLU?K%=KqjP2SWdSv+aW;tIPQt@T2kZ^54jCRZdIiwztGIp%1f50guRM8$N2?vtsc z_N{tczr8mAg-sPw43LB_f1@}#UDdP(RAs4pYKVKPm4MwW6+hulgSa3lfm-KWEm(?ATAu>S)#|OLV*xKd3)V!m2V1ekF1`I2`!o1k`2b!`7T7GyZS5)q~ z;%dz_Iw=py%!l&IV+rS4>F`SaRE{p_IL5ka2tUD%yXG#-`}|fKoRX~rd|w50R#aN2 z^`WZc*vxyh+19B~{MhcD8Q|NrupCiqI_n64tsJY7%b%F){#644G6|CP%QU2+=DOIO zZz5Q65u+f_9NBSIxk2NsuMfQN9N+rGv$L+4KSIyj}hPj-s$*qPp`0K zUYr8`gB@_tww|lgo&d^or@k^pTh1EXpP%ccV)I@KmJa2_@$Y9d8F~~r;>uZdmj@44 zTAho^a2jIH?ED+nlEXUyb50rSpKRO z_v)-Aey}gTooc^a^IP*9D=vAfeYHn=0xdn1IoxRcsK-viaMPl*InMRXR0>`KWKx_H z#1^!yi)h#oU-Yt#V3iAaNs?MEP0l)-`?*(7^Ve~|QUHu=dcL#DF^Ro+!$*=lEo;FNdu8$b{KYl>JwBjZs#FspDYw-di0$T-#k zIgalx$%$mi>Oo3vElH7O$T6l2%F*9`t&z$EGzCBNP>3CChvoEYyb|vpgwdJKh;h;b_x9( z&ucUAH3H7mMQ7~$1Qj^Bc0h32{!SsVL_YLQ-O@pD?vA9A0&>Hthw-fI$+l)D}}(!MElQ@Wvh8OO-8|xsgOre4r^Bi zQPa4?nE^XDrEu^@;kA?Tw}0Er;dnHAQJlJ*RiA6Y(Y?!yRUa)yR#+?6AwbhybxG={ zTbO4T^hgJ9v+?mr9hj-=AnLEAKEXT4A5BwE6q^bH`Erp)TED{A20#A;;z-&v3A7%_ zB4*&cya^hnfVyAp;ie$cqfYIqsA6*%v{l53k!;L ze`?0Ywva#5D>wWxS{y@pDHoEN=*vUju7@Z@wI8%$f$=;{LRXYGH{uTg%<6O{7*d2% zup&l>U9Gx6)VMlLL&>}HygSf}aQqfok>4s)>%%J<{9a z+rC2A6qEcPWfv6mUAv;D&P)FS)SqUL+lGzhn$xjjVvYpblWuc&YR)suhBZvgMSq6` zfHuXwtY{9kspPt{%oxJx7OwXTFHK`52<@F6cMrMnXBC!lVgvBP>7a3#maE(ua z-%U3KRC3g@%AxMxyK1zbN@8@S$j(&f;XShnrn0a>?(~9%%hj^fm{|tReUlN(rp~@4o3ueWAGE|x<*K}akc0N7& zqSYoUQcnk3RF70Vn9>i4P@VH154ka|+*h8NhbfkP#)iT)Y_q0*zSn*1&tioM{7CNL z5*zV`(!DI&c?#Il~u?lVb~G zoibz=MYL6v39<5mMh*9ms=Malw64|i9Dl+vKHa)Jp|fE|%?h;=wCy2dfgXQXZ?bNXZj;~!ynJ@eK8qHR6}exti}ZSL`wN?cjF=MbHDrVf zb2q3M=UTx#rfDH2`>ff!{kH7IlWaxv!h8ww#CORyC3as~CscENgyx>*fFWrvJHO#d z!+auhh*p<*kM$k1tJI4#rfcTbS3_{A%h-#N@2ysQ^dcj(?p>toDFvCIJk3(Eczzdl zhlMIdjpq6SA$*74DdHzdc!Q)#(=Cz}tZXuunDS~{(G9)36>@LmD*|ys3V5vY)h#6OIQl{&edi}S|wnY3{=7ARTaw}5D$QonMk zf<;8#p@03dYZ%B!q2o5x4LA#!FA$edSKuxEN$vT;ZWptMkEOLMiF!&ti7HN$t{|Df z!k2(0S7tsdY_Zz@WWudla)&Em;H{Qb0@&zfrm}(E_t?Yb8^e;jjXaC~d(BMmzk@+~ zr-m|pE>{<{`i39ASAi+dleX;9-v`?m{T7dGq=HChZNkEwB-7F#V=W!E9W^th@Pj6O zU2oq4NkuAhgk?x7&6k9pB(nOcKmG)mhWr>UBP?eR(L%6mFbMt}G36+Gpb+*o;w5-L z?-e{0uTGfas*#HM!ITA*!F=&kC!?#8;19CSs{N#~bj~e5i|RWcZluU1#lNrgxp$G3 zAKvfW5mrR=p}W?iEheVGbSW9a?ss4I1<9sPO|G>t^IkU|jelkfIu#A*2*jejtM`bO z-}UyoCDzfOE!4H4J=mkP4xjSnk@%_WMU%ekT~BK>c)1Z3B&Baxe3xV(IrsXDv+BCj zXUccV#9_?hv+;PD%AaMPH3D#MSUdjK%L39w#v<}*v`rWvnEkvaQ}^15wC_yD;S3`6l`p0SUGAEB3hxj zx#;(91RZ}iLDrd_7Tg&$nJ2j9#7-n~Ayp@xBbKRoD>dgoD3C>;`2mOgd2iU^noEi) zRbv!ATDdn7X`@)oFm-k$1?j6jNWO<4)~1kWXCRL zC_ZNY%t^0;VwrftY9!^GnAVGVuFzn`AbSl5?=5OLC)E&|Vx6f;JZ1x_43p|;8(NXh z5E^=b@cll>c;WY;BBc-eT3O1KA)w5b`O`SrATfkr`g&>f6OAEWQ^FPtt&JxwAdMnNDofyfLz@^B`0ySB;v%` z1&{@$MSAAO55cG<0Y8VtZ_vlLFdcHGpjt17_MW%U!y_s<6^y`q@WN?G^lX|9_z+N% zHcPvtXpv@Yl5b@Nt*HCcpD;6XW9gb<8jIy0bAv!Fpd(d6{$~SE4o8*$kwv0{QOQ7% z2IK@JI_9ZkVA7=gL*@8TJb+)pY(RJ{GUbGX!+VsLc`>T-e&Ayj;9d9)0f?(>jx`ae`?ll@+i=zXjykY_|BMKj_$|C#{eThq8Dyo=*-~4|HXtnmV;4NrcbGKSTX_{us)RtTT4utbl|GFmO8LZh>SK@QIT& z$=RRf4FH_n;Z%lC8PJ{ky~@KiFhXfbd8VhF7E{@+Jc{CW1Fekrx~(t)fKL+R{U`$n zf-*Jp8a65%e2CPFUjK-^lxS$KO*q1w^}i6RUg=Z!;yR3VfTl1dO=t{t2Vmt?lYJZR z-Rna-pEUrM4f?wivH~I5RG2d{l_dgVIk)%&9~8_|F=^!JTOLOQ9o&B2f@qw(+uzj} z$FMoS0GMEC$&dT^!2#pE2kImz$8ps|K+d=HzV~~d9hBJLu3>)Oy_{jPG;86J2KYIF zw<;n@3~8XZv@kXE;j9ocmlBbCQAGkt@UZDyndz_mS(0LcNaBFqhEjvYFT{ zILf>(z$JFWJSYFTNHWy8J;o3z0onHl5j)43c-$gO_zCia% zLtCc*SV8@S^%5e8-ox+h%loevAjgIn(h%FqkBU5+J zvO%?yrQIRsC{<3BEtpB^G&z_pA>Bb;wCGE(-ss+-+w>r>XNd-h?ib|7M~zt}U8%Rk z$h0ShxzMo4!^L$~iGC6W3l0K=WWzh=+OK?|B^bvAP*yWHi_;zcv5SVc6IBwO0OC1{ zvW|j6A=f+i{Ejj{X%ST2&F^4I87Wn)ntwsKTaUTINFx&`(H`=Ar^!s?oqT`7iWRGZEOb@Y(Y>N!!P39Zrbwlq?@pS6Ap3v#DiG(=7q zCsaenS=Iy#WvK*opNl!ciK0;r75ILBA`W;m76Sah)%N=1DISFJd$|oB&q*L<2oW{Q zJ=8z;(k%0(kl@aMIY-ss=}kF?(PBTEbqJd3e@uG{921}}^Gi5F)fNokgl8}xgIlwk zEF|vDI^&kmx4&5ff>>ff<3q79a5_{>Rgx{~HTxS6osknWWTZXgdjz<{)MxJJys ztPC=IIW>IQJ4zWwnp_Ph#XzH?<8l3bml*(ff0DMg`a{JeQTjz}kv!bV0T0QGWW2V0 z5f27sfZNvF44z-j1rbb&y}!a-9;qSTZPN!D8n#={4@w?pcE0feKzOQP6(b&f9ePKV zWOKR&!W>@sMCnf`##MLDSprxuWdQI5g`wg*z6XD0J|v^DF7WYFr;lk=rmk9?e(*?kN4P$N!y1S9 zrRJCCP4c>`6j6Y1u?-IA&nG?3uHH#qr#fVOtS{y;f)jP}ZP!;aVHb#dqae3dHUcu7 zcRoZQXRi6au3jLEeS0jOyY5(7f{geHYGeCROwfGh^A<27&Vik>$pUp0mGqOJ@3PS> zO4L$SKVxE7#+N;Jqjq~p# zO~P!T+QEN7!XOR^PpohoCHZpekbgS^yCNCIgu;Jz@P$iEa40m1>3+vqz0{GKg@vvi zJQYhFAh#gjzg}qfp({Mk!uLPbpWldGJ_5W!YAH>Ow6O1wG_W}@&seC{3JQO?5MFv@ zgTcmrD1}>5z;5*j^yO))iw^B&7px^Ri`!DM z9J!BCN%!q^4|y=CMx6&ZJ<(GB&%`mc4iG#vy7KrXxj;eTSFmF{N1?(H3~nkG^)blT z2)JlkE1ZxHpuA|!PWHda0lb*_m?j#QCVxf2!jSNYj%dfyAIp*uiCFh>pGO&`VF1sp ze~ZK(b)t|*j?W}$pQt(&=cZ3jeO(sf%H!Nh`Ge@kF*S_bP=um{9=pMJcEHB4`4ZjH z^p&WPF;O^}rxXkZ9Dd<;z%%(Yg%Vwf^gR_zi|im|kdo0@UjuzY*E=<5uChTnPN-0q z=99cZIH1E>3Q)mZ-MgjY{A>HAf%ql_gf~3>2P#qbC}~$e-u<;{Vtr}_v(8rok z*jpA@8Q|z8cYRyV`oK;TybTTs6^>Bb-I*`QEchBLFA+P2nCFXInrUZ-dp5`{6X!oC z{3dT;r%l6R*YC|Dy{+i<2cYD=xx*&?XEag3XcTr#joRA%!2P%o4{^)}Y4nuA2N3{7 zIUvtG4+DozF4CP@X6T@O^zk;)!R+yWC{TWJN7;}Xi?!h^K!UzS3y~pSy*hVs3jZrB zVSjx)wWbzxJt4>f2#?FyA%47q{fFDc=l}Ier{Woi&ZRhp#55grGHO>d+ukqcKJOtSw)wo+gg28JMHxWE zF29lL9rq^#8;#JuThAZ^~`lswmCsw7sO(qgEBAsyCl~O{@~vExG|xK3GQMR~Jzd z8^QZvq`ZH zlW~UtHe%Gj2@X;fj8LtEX@u3bVbDy;e=M`QxdWrECE<7X2Uq$U*Lx+B*T0tP(mP3A z+apM66ZD^eK}EnYMz?)8u9Qodkqw8tZV~AFP+B@VKb`9u&3>?&T8aL((ZXe%kTRo^ zK3Tb=8)f~E>81;q)^PrCx9`<(Y1T^Ino+5+)hc>Y016}fp4HwAx0P%di52$Z(zT3? zW^bNI=tO=n{G|8JP#T_XOK)T=h{5sKNL(C_^W>NPCQaKf@5~B!vuC$@uN4-@dpl5w zsSCJimaB-7Qr>%%(%<*!8*?UCL%^WUCox-2>$YIprJdg31TMFUVQQ8jdSnO3u_C%q zZLHi1^t?mwbr=jBWi#NHiQIstiHc9fDsREWOdu(XA^54sS1)jk?vjedSXEpqFyp(y z#w0*C1vqAm01qw(0M1K#SO}s32+zY>0yUp zdUQdnqK~IXo|TW}s+JySe__}9{RlAcCd(!P{zM_dh@~i%hb{+c64nREZ*8UjY1AKR zG)sPTCR~wQjrapRq@Ef!CK3$Teu5Ew%<<0=UUqNmsx4D1+Azi&o| zgzEE4rg4!jms|qg0ZJRSG=RcPg`dpH0Jl9gNewtC*Kdu>c%slKWmAEQr4v?bH6(Su z?@8{{XJTMq9S0r(?+Rvgtzsdnw_ai$l#}085aWa>1N}1ks{#&y${MQlz zZwxTNu;5H(4QM3;aMX^OGVNts3W>B{Ufc@deem)e{bg017A}g!6xb{Fp(;tU8txU} z*Iml}=vA8t6{>zNe*!+X1WLJR1avgq%x)I*_%vq25CAvTd&@E$j!qLJ^x;&rA@sbS z)u3fnR4Ab>n|VLkCtoqr{D7H5P0+U9XS>g?p)Lb1|GMhPbe6B50KE23w7yLjAkSEl zokXJzjn3a*Pr7fvDzsWzT$mM*5fag_Cw7A+k%e01<8^$F3dLJnUw>P|2Ww&|3YGAb z%`{*p+Ec|?1wI5&Em;Lxs{hfs)|t;O#)r=##|g@S>=Rl6S^g1#f4=*d=KuOHEfA#h zpLOU9OzN7E+G(G|3Stf^AKlVMX+eocO%cFa%S64iU9)F$Q7+rB;yGjMzCV)NVKvP5 zxEvMYqc!e{Wu;kAO@pdbQ9SPz^Y-G`8atQK%T?y*ST?0L}<^7*l*m zjlH8JmArgG;$i@aE;c4qZik*5aLKxw0(tb~ULH(yzP#D@Le8Eywh?0lw9QlVvA9$R zSu>$y?7>FK$%!eRNyL#f0Ky;BQ;LKALBmoBSstjLilri4e=wBW=Wi)*Qa}nZ__2Sw zz?bT)*-9V}dI1YOGS!|NP+q|76>b?Qz`%xIA$jh57zT#C=KGebZ*}sG2Fh79G!Y=B z{P&v9^D_xRdH&Md<_`%3LlEsJWLGlEt;sEh^l9ay2uYFAtow3V-9WTULdE3Q$)Zd~ z`MgApECt!yn66eH39qd8@B9NS4MCsF9ioi)>TVZla||u{*old&*&3MCtO6&>MpNzf zZ4WUzJX58|R5#njDLS~TP_)>}q;CfR)yiP?t-F);ttr3lw)0JR=sYy?Q$nhqmEb1? zY_|P$!i0>wY+Fv9_=AYnBSf8cl(3+Z66S9K;bC8UiKFt#^K-!^zaHWF_ixSMKaz#s z;uqQ`s_d_B=I^`IRs6PAJ}K+$&SBnPRxVemEYq-5{`GwNOX;LmI4{{G&yOSsCH^y& z(GRiVUNncDffI+`oTa6#mtk-Cf-^o_iE8L{h-T9j8#kK_t4&>j9k*is6W ziVtwu!Z0M}LBgMf{{$J=iVnf0R*A5Wkkz}4rceFEr;S&XXP2W}CR-1+;RJFdLtqpA z+)-juX6brDgLIJHekS|N)yM)C5`iQrmQIiajYPczs-dTZ zYyvaYDt`~U9Qu6lRrhrp>p|!()kobFGXk!llJsb~*3e--io-+y<{Up99D@m&pKl!* z5QOlYm_^Wpb@SRb*C+L+4BNKR?(}1MTUk3Y#Ters$#HnT4^n9tLwFB2rQeH2JkL50 zDplbI#%LM4kG;{+D$LB|@O-Yx(sIzG#5a8&y5n%Jn^hfvU_QfIpl$I=iKtjuvT(3& z8(jN>H08guur_ReTM=^ZpEmbgUDvj}I~04xSnS^#cfX3)GP9uw-m4&NgN7NwZoLnC zq4!>&PNj_Sk=}=yPkAF;q(ta_ufNjdT;8pMbJ)dl&3N<{?vhwA3i}N!zkZ4vWN6ZT zys@~rA1sr~)Qe1FPSelX!-?6DFBqw(QoB?nQ*K5F&tLV>^K$3ez3e-Z^QNW14YUm- z0qsm?ByJ2eq(WjC41c)VTzw5%n$|3eec%KdY3Y$RkwYLlrGHyOY)Sg4 zg0V`%g-@T}$C344S;Rl%XO=YmG};lLILJTo*VlvW|-VqbGy0S zk7CqDAGV3B(%T7$J5po8Y&6VK+26k#St$0U-2g1c!agBkm~ z2r$UlM}Og>UUN3e7D9a-RG{yIPkBI#haXLel1bh>!2JZ51{Er6cl-bTyNX~v+cjXx ziSR~5Ld9&=n@-nf6K@bGy$uY=9RGdRrItwh1Y4&f9P$%JFh5eWW2`1pHsR@?Ug+Py zLvjOD{){_$ipkkRnXfaZ;`xCKd>9n_EkHOVv$r4#+Nh_TK!>A{xHwJ4Q)DGKat7S- zvj4l!=(}`+*f7yq{((sx0tplISVL$-x zpOhqM(OJm99IrOZK_L?!S7Yp-wx3>ZH#aqnMRIJ!a@Ctc|4yX-ZZsTCaCyu+JyMXO z0~ZPLba#DJXR#;A<@4OK=5aOosvx;DN|}=g)HZ*#{5Jq{SSllNnp6(k>`d?5l{!m+ zIaR=9CIp5;qL629{<{!dDA=($^*5Y*{$j%+228t0V-*L9(?$(J{W*LWCXG5YR=g1qyiQXp9772>FaIcSm1w z|1}>50f(c=Dx1l<#h4_Q9*p1yls0*xc$XFmDl{;6g%BhH8X#N7`4SD~iSW0T4)^-* zukZgA&JPj}AqUsceY`#*GaQP%5Gf<072X#E+=mEw>=U|V|0b&NE@ugqAOyGPi(%u{ zChPz1790)-l@|M&-|ml~FFki1xly9U&_`gEBp5|P5MUe4=Zi*9*V|uGll+~4^G-Ki zlSyIs;&J-&cylF!7ue!Q2cRfnJ3jIo3v= z7W1}wDasjNb)FjF;}e-%;&Ku$uD`6Y#dUKM-u8A04ckv6KI!>Z^uxj849t5w`v$GB z2>UEw^)OyeOj2gz^?k|KA)5is?dahx0xUz}kgst3FkwP3_6f=)z!5EYl^;gI{3eeN zvMO^#Fjd|uy|V1rQyXUIz|S9vvL!I1vuttJQ5Nj!n;U9Vl=bqI&IpNurzE@}hO%nW zLB9OfZ)Y_i;)S7T0Ym$-YQ^QIez-or*ZH;L@e3fx9Y8b%gUb{-A3DDdylPkU;e7Td;zwZ z`nPuhSJlH;h`@>wPL-#J7_LOYhyFHbE)}upuYj=5+RSa3g`5a5JZj2qkP0K(wSzzm zRJVHcIAxbpI;Tb&fKbC|W)NYX6-^jslzq|N$v#WU*^C67P5O-)xu5&4$_?hRnO_{? z0|>nw&2s0r3alQ1y>r!g6w!XJCH92D{F38vt3@j9u2l-1XC(tJayRDs68FumoBl)b z66#>9e{O?6MlTgevDc?5cqln3WW{od1~{%X!1*OV$a2lD&~9HumI(1cdDlmOA)FE5 z)0|~7K==I(#!%ynqYYEusli;`i^l@@?B1YA&H4-L$Grh$$C)n(CbdgtQvz*bD-D$^ z=fVcP+&5+`f;uVjMC_BfmSNj#ALeSG`mQsrq_CtlP1w9er}4U7cqRxp;piGGgh@nb zOn#LqUyjQ8D7u{d-U}rcdnG!t3JOpU?W4c-j~y3x zI0)@n6y0`G^*jtGoxPzL@VmCk?>ca8zW9lXp9g1H;CaOOzAf7yzuKg*qzE4wK>`{} z;%}uWR06r+#Je*6XMe0C1`Z#F|O9k@Cub(`s*gR7SwxQ6YNO2ZnFqyeiDObcj z0*X9w^2?IejtrTW)L)sAcctG5{Vt|pXOh+%=@R|NVeohVx<+Q=~)hSpn8AQvcAuf*$O1Cm3tGo z-YotbxDe9{vV#FL3q=u$TN8s0=@>hea}bqeFW!QL)p=5=^)1SEuZ>x=02GV(ZbHtJ zvhRW#f3EITEpZ#qjX^lPUooe}co=xBn;zp&Q339b2Oiz#C@idtMDfs@UUF5wF6Gx= zMuvJTvt_KiwAu7-Lx0qPBdSheLn0!sA)y^*yXqYotr>;5Z6b4^(EW98Gy;usjCE&d z^kQfDCHAk7#`hxWxZ-co*CO$SJAYu0u9k~>Sn?;GNVWQ{G+f}c zXgLGA_WbW%dOD)c(qHcLX^mzOrI%_a4T{BwTDRP8J;@fGnD{jG*J>1R>kkH#@ll~m zQCaR)7r4<;zL0bM>A4}ijr)-~)3Ld!NW{x$k@&oADv&@Kf_x|P_1!LWw_0ZMt#pyr zeNtEtjkQ|oHBU|W*w^_q6Qkih%Pj#zlJo&uKw4aFcmwX!Q_`C-lE56|qfI!ik)O=> zVv!+iERKnAbm?Mzwkx$*Aj_gau0dEVr+8BA!_@bTtLTrS($>q)_g}jZy1r}^2qX?5 zw%wU`6?cBA&{?Uwa|1r+C|gIS2#W0!L@5zLjst_<{sswF(+B+o{sYPSqK8BC z`iWX?u|+aA77PWOUF%M?1#-B~yaY0gz;k2pmW|%&yh*26!N0-$Q*;bQruvU{*p;i;iAA3zV)&k_4K9$Heh=TjXGdK9_j#IA=M4 zrISA9AFJqQGtB?s^1a>5*nBFvgG`mfI=MV!b+3GU)iK`$gpIHa_>sLFpeMztDh} z(0+D2P=CJ-Be^UaUz8Zhd};y3bmOZ zW#8ul1dDYNZ_EaXoCmz!@Jw&_t#1#P`B4tPwq-7fq&6>({~BlTDO?RQmpg!)#A&%5 zY-iHP!9z17!TWYgGvF@JX`iXn>-xH7b*yOUvMQqr|0ROMf#y_ROzW$|z!E~r<~DL! z;dZ?@UB&n+R3I^;<$dP$aLUI@T1zCrtLpQ3_^h;IO@=w1^)o|JzuU7-qU(!Wve#ah z=$FbTjpoKvi#O829SQLjk3VBMjbLR-81=!=agvn=&K4Koz>*SrA z7D?l#m2r%dI<(&V6)Cj)dse+rt#fE!GIrZ#GWMG1n|42r!^t&hT|+NBoHbjXHq!=8 z?q^~|%k;N?-|edUYEp3sTr|@b!?j?&(bV+ zFVigd9DbxfWb8Iq^6UmC5RHWv%Z}2H-;Gh+HApUPa!7H&q^wmpAFmE()2E!eHjeon zaEyCG%ifET2gP0slkEI77;x_MJ5nq@`lB0cs?D z-mZmYsW&brk_?|+w4WJoe!ENIV(Bz*&wM_g=xq$Xp%%RoEBI4T3deB^f^`)WYC<~35 z@obIqbW;{@laEyO)xMBYtqpMk7HgBC_bjW%*g@j-Zcd;g`R(BxSG{$wrkj!^r~nNv zjit7dQRpL=srt`M2ftMR5*#LrQc8yra~A?mniyG|BoJXL^^R%N=oVS<+d3WPv?XlN zHxdQH#m9JzIz^;{TD8uD8ZXbkaIJ@fCaveX5rv?E!nu>d&qwU$XpPeF3JY$rx$ zzf@hfSXNSMF-(S~N|ESzftYi-Oj|d3l1GgpH1}#tR~@H0y-Gs>R08r{jVdHTWIn}J zSKnz+oVVZ2F#Af~3N6*(O!9PuLChFioizP5c?zSMmT<1Y7uQ&J-EBcgt=E|%xNFMf zv8eL0x#oR%PJOt1sJ+_bm0O^Tzsm8{Wbn&P>(F{_J>uh1-#^g9tXO4CSx-Zw=VJcZ zS6JM**_XZ>0iiPD`(mBtbjrvOFMe}KRJ3?bX1;Ra z2fgP*PX(l>0B0H_M50(?ZW4GU#@j)!x(-Nm@iUU(64!)FNR<T&S`|zjM z*IH*Tp?XDz@v!9V7r9j|N78+k=iBL*SE%ku2T|GciVY1NOIB(E*9rYX;G#Nq6Bn)% zE(@9f-oBTzU(fXM3U`Q2WhCOYL*>MChS~SV^^W7+p1%FWfT+YV`y~hp;rYG>=lPhN7S0R^FRaxMZZfy4`5T(wG)V*gsTz*lXF*tQ@{r}XWAxe z6MolBI(8@ZS>9y~Qj+`&E4f`1)&4TG%X$84 zUk#715qTbQLtbk<<9!I_{&><^x5ejU%_IBUh3M*|^t2fJ{?+T#PScD8S(xMQfJCeD zn4(;Vm&M2~>v3jY^;j`s8qERkZ91hHKaW>Pq?yg#U1T)YemAA}so4~4iiuob}3W85B<}x9Q4${Bf~E zDL0CTx0&(@{&wU$yvwM7L!a?NrYz2va*^!p*6-OF?INf6?K)M5$g_3F4Q3Z7Qq5mR z_nP;8e%Ywgym6JR$fbQ1qNd0EJ*PkDxBB?0Io4iNH$V>rFA=@~;0l_5mJ4CCFc2y! zuubP%&merI+z&&ko&*}no##c1>8D{yM(x=sS$x<{Bd$G+e_p3|$TE1ES6)x76f!oA zQJ`rSu6C!DNmPHuh+Cahtn35hlyq5%Ohr)%TjxKht*8i z-50;An$Q?;s^+dW5-h|Oa;#VTMlH4$(Y9CpG$*_kB?iJ8@wPXUE~jqert22-7+cldkJ33A8M^||?4w)A%P%}g0UEqkQc-ZQUoaSc!QreU7X^G4AEAO-x@S^d zUcS~tXD3Gj-X6r}u4N=f#{*#co945~3I={YxWij&R7No7R?&L{6W)^q4i62J*|A3# z+qkW4lm-m$`i+!E3}diq@D6}WM{cA+JjFD9&ykDARZDgt(mLMp8)K5ABnk@_|H5ai zjU2RZfvVyhawBwc5oc=TDS{(w++uB;*U4Is01-&1TPOZ4Wnc%ES3k%G>o~MDwCtzr@}ewo>hn1 zB~n%~hEDUM>k-&ALIF=1kGE%;*2|(nhdp1$q;eZgY7xo~kxwEp5{Li@5L?0d>sBPu z*V|a;Rr5>4(%I!_#GYL+1-T@Atan__&t(T^6?qKH(V*xcanj+4)_U$`PsZV5S7y$6 z4yyIA5Ygdv;KpGC9#k;iy*PI8+WL+E=^6K7!m)fW)3+)i!=#%mG{*N?E>lEIAW>KD zZ>&wfi{uiC_1uXZ-tP9(;y)YYPKe&&=q!DA?lq$D-~_(#z;`-n+$NJk_xS;l`=7O+Vi0KCAz;8*FlC8ie?3JpEUw2y*!4;TH8oi--r&Bs^G1@OQ% z`NM&x*o5hBEH0rq())1rXb)MBOMfd({ad*#O0h#&{?qR`tv<2neh2ebmx|;3hGIMBtyeAF0sJc8uF!DXK%d#L`U|7Q?PIOhGpz z0X8%L)nd^M&PY7?`Y+-FJAQlL*-e8hLLxK#Rx{*oOH|eoU9al0yP6pOAMPiIw{gyHcmT)rV;gts2%U|6#bt`eZ?*5gDLt)@T3 zJsAcM?7Gp9dLP?1r7|IshTcM4NdqJlBl%NZsq6J1K7|HUO-au(<^*x_e(!BzE*iAp z!q*3dNvccU=(boFyUxE0--HVH^ayr|Nq(vguVuT+tHmbRAbupkYLRVnKK(L5NPF0! zWTZw(bm-n1(3=fE<97NgNxft`EmbK`h=Ix+9%U(O{Jwz5x`_O^lp zwT#RiyT>9!-u7+w7<8*xOiiG+qGCq=J1;tMv1y|2zr0jxF4Lu2`BczO)3|IdX$R-i z>MKW~i$rGH9_BvnONfZ;v%fd_c5SI+s4myI;}@@ui&js@5uHai7?-PV6n8*vi#+W% zx^~M&chQUb3+9!ZaDR&{f8ru9KdH{oT>bKt+5xZF@v4z)ydhN5KuTA=eLk)iobB*4 z=Lbiee}-V6WD1DZM2NB-mmOa$3Oupl)r&C)#p7)b)i0IpX^!2rnq{{g6qtG3cA#h6 z2^kmYmx!q?U467s|J`84I|-3mghj#rlH0*(#5uj*?)v1JIi#Z+3%N%YhD;x0A=KKs z7wTM~%TS`Jf2WC^L>Lh(S@Iek7Au(r18>9mWMEI-q)kNri0ZJjLt$zw-+nsuD-?FF zuZ~;eM@&jfl_8M~L^m$db#N&%`Q80rgqE#e@)BHnJ-lsUTb>LO(X^)-K7K*3 zpsl5@2HL_ohnl78gP5ydOrmF|*tZJTzkeM!9^OD&BXip@vvutQ)|M$&&lSSfJtFvp zvu-0X8^ITjPQ_|D84x_o?`9PCoZ4!7wW=`nmJDG?Nu$#^V-c%7M-HFaEt5rE(FV-Bb8657k+%-&~F679mIJ?Sb+p|qVdqq zTI18)rTSZNAERtS8ygzjwn`vyhaTk#*nRc?iX?{f+e)oZCugPe!~cq@bp`_kk6}+Q z62C#}m*@)SjOrKZt?(sR{djSAYkYWV5%RA>?o>0{^n2s=SstSb{N^+gz}<;Z|f z{7=il0UTb?ilKh{kmyT&{$T#aH8%`30LNZ3$G&wEnI+q9@MsdIw~XOEDTd{ZT)^L`Zt2u5Qmy6Va!=ymHEG^YQ^-l ziKIq<5b{rZDj;A%zsgg(hs~`BL~z@3a0w*i$u*#1siEKdwBpi>g#HQ(bs?g*@MxH% z4qe}xXNfZa|5b(0nZ6&sM6LNp!*}Gp5Av9HvI#WE_|U`kvM|BY*FftPd0NCKR$38@ z2}~kwK?7k;guTmIkxJmf(gS}?B0+_fQ^Lzq)HHBO5Jgyv)f?ZJ(V-KF5pwF9N>Jz$ z56HRZl#mujKdN9K*7v0Iy9P7?&V;PH+>>1S-wcbe_B*Rrh%7R!bWy^qcF~fltVqy0 z_L`ry0GCy~46fwJvTx;@Z~7Wm2PEi`wBu@ur&E{q^Ev4+EZU}(lrC@ow&4XkS0XHD zxCQ2t!dQDDc%ZhJ38Uq%c?!l$6+#faM%_%lGTh#-JH@g`;G+?N5MBBF!6I{IcQ|)4 z+}xap^%(>Qfu}T`A>Q@}{Qgc3bZ5mc1fG$cK=A5VFZZF~6?zD-(sirJmHb_!d!aFw zN&4s8-nK;lQZbSBG_yG z=m_$$JSDr6bPmBY-&AixbD!VOE_ccSx2_5b`NmpsLQm*Cx>1&(+$XDfCwo4jWp9iE z%YG~TjOe1u3&6}Vic#Y0O>iPTulo)SJFYK_)e|x0ePKwnKHcSItyMsD4ZetF8M~wM zgAN7Y?Ur}7Zt%do~Om8d+qT>PG6|6hn^DAwRy$qm(>GV_j--N zvSZ-Zb9h#DQMEIK2`C}o*k)2EWq0fl zZXAWa``gJY3nWLRwH=wx#GQ!RNHCd2`pj3or9JrTn029aJ**PCDF|oc{V@?676q5t ztk+I#OX;x>0xtOX0QNA{Zty-&g&f1#mYVH~=UR-=b}rymV9bfzOuyT7x2VVGQ+U%R zg(V?}y^b-k4wi%Gq`aFplcJyIsdR@rFZSZ1zqL5%3dYqh|E6~q;#eRSh5%BV2a)t`=aagI2HJ~{G zkAq@ZDMl%GC@Q0|4{wP`ZjB;c9O2R0nJzcy?A5fBfct+M`wVOtsjp7OY#heqYrE^S zgRPaM(xH{50x%oQL`agPK4zjIBRtTILF-Is#U1wqcP|QG)prCG!p}ec(2)^vP6xOB zf#75Oa{P1IE;T#UdFF9$pkU`9VL9tE}{nNh2m@=j2HZ2^gw@01NY5y)`n!N7}T zsVtQ)o!8j6wylTb;4kqdbMM)33k}nSv?DLBcQ{PS6N)y2xVD><0jHNdl-$|1#^78yTt;p!otggZVrIcm zs}g*$^ldK$A+pPtJL5k#&5UdvdTd&{C~mNSBgFeLq98=LU3?>=iZNZZuovOC2!~HC zr>FUBwN;K?8fy%(!iyR8zuZwEuK9{oI(~8@d=!TMRV0TCp*b9}E~2j%s&dBaDF`UaIYjXdTtV8V{(m{2r1uHqs*KKfw-bM&HJX1&QA}awrUWMHadI{aV zbhx4Zr1WXh6I}L_IPUtcJr%9J96MBFe3p_QF~ah`??0AO?S&umJ_L=c=5IqFtD zDh5)wRSnlaL3pq9Rn+@6*mb$IchQ|V2kFNc>bl?-Et$=`>beMR-QwP)pZ6^=MeN7e zG(QBheJVOAdRlcIfHHkTW` z_p7>)G0Nifnl{?a z=gW2!iwAR$VjRCCyq#_KI@eApD5BKaXc~UvGyiu1KjC=8m2G!D-(2q{a3mtObXXq$Z`n=z6~|;_i?zBRWmXj8J(rH*+vc{ zvX|*+q?s{AvrH*^|Jc4zE)uIE4(phkH4F8-*%#soYEieD`yk>q58Wxg1gQ9uGvMhD z6Bexmi{nhH*CYcktZ!jQuit5l+7VaR7dbK1mZ zH8iwnb4-HhdW~7k*X3;@c9_L*=1+kLid-~Rb!&01$@Hkclcv7eSQj{)4k9lx1{|M& zNO-A?5bTN;m;)V6p`9?FTydsSY?_Zg(2*e!Yx8`VE{bqFWnR0N_->unvm$2sO>0LB zD6)lzom`&x+p7vnb66hQdR?@WfxHMFc*r)ddssE=ukeL*n#LC-?*U*#Q0!%HEOSdV zb|$U!ZpBWp8%!v5Fh2JZ^?ZvBFP}_M}}$ zr4~{MXEbL8O_>JSWX-b^J_xp|sDq}7g>;Q%hSe(l&CS0TOGum7UptA#V>Du^OG`bw#NY5hf87I~=@9&iVV*E&Z_l^uqq@4L` zw!OO3gM6a4Sbv}>!qONl%(0xt#Cn7ZhoF;}NMAqEU@!9n4+w!o^!}+oAu6f2uE-CX zYIpPCxMqweSEOxKXP@l7sB$k*h6TJP*d{rUGU3ijDq~&NB z){Om(S4}ZN+!+blP&RE0=}5N{fwA_rh5{jS>a?E71Xs;$Q0++gNn(`E$?J&KYhDZ( zl?T5kg+N7B?Kg-wW@D*pzN$ z;Zr}$wz?HIKIhUb`0^%q0H!B@6^7%SRxvX}89kab!iQnPzWu_76K9StsHH$qfL*V% z@Q9Ld#p2>K z!!Mq=fO=X%aQJjq^=c$P&C;3fT3j?sk#tDJm}x#&^2Rd8=yuhtBS#_ebbUTtr7;Jq zl*G=A5qboCPs7jxI~7kT;7!r`>-o-VlW=$yDH>;ie+y)q=R9%}V{30-7DstrM9mau(%0@*2?ttM|FH#&-fh9@xH}D`^$@FASC?UdMbY6U0A7@Kclh0w z9#!4zeh4kV%mpq$_0yRG!rk~4d2hZ@H3)yTRU72x+9yFin4 z>}JPx%SECt-FV+i1e`@M~8lDpvA^{P{ zs5;}v4Ii8&pNa@Pa_*$OxjgPfN_?mdsD2jdn0N;VKf||GtXzBvZmST54VrlKc>HNQ zQu8`2rRE))`>t-qA0?7vao&0C(mnoUjmE$o`fz!_#j5!-V(iGLOxmqi(IiL+D)<(9>*&Zl_+mO z^)3P5Fdk~A@A{8`svAA~U{R1uDS7n{`QQIO*;IM4)c%SDZ8dJVNT$dO8L_<$BaD-_ zDeoMN?93+FTSD%ATM`$q$;&1_A2X)HUFZ1!)oYoEX%;(Hkl|B@`_<)mRiVOKP!cRZ z%?hAdS{SfgXxlI(sst_0k=x9vK)ow3*!K(J>-f*r zz;eC=ym``TtCb^LieG*gY(HN+d+~Gw?b)^8I+Aa?hs<8<5#IObHL%;^0_s{WUk5MO zJxyi|nyNQ>LjU&{48{vy)9+`q&Mz(mnQEmRif?8EgqF@u#e+$PfpzATL+9l z>$x{ExBBpiNJR^%ddeuT@iDlU?Dm;2Kh22egFSGzww{}lNmxN){<`XfW!LBGWXyWD zVb3`(&#S*JPF6{RBCglP8QAvOa^=fx@h)o)dFCmiJRWW}cc1y`a(}Uwa^#c!w*7Y$ zS8nme;tTh8%sm!#nx*eoe0=0#LlZjzE#UHsO5>f0TCala{zPWQP50hd^`7rg`RldU zOe1t(*}ii=vhjIm?PG;?V3&G)F_|)!0pn;z7DDF9eg z6|she9EkxCR}Rl zc=_|hv6{*~7dG9$FQi*`iJ@oX!HC&g8r~%e#JtdJ7jCdgbMks1pK77d@FTT;<;X)KBWe!Htts{X2btxdFH`g%h|MT*oTYVgJMKC7F-& z?7t{~;I}@u&EW@+)b2HlG$(?5@8n?xEY(#T3z@Im?>5~~?H9G?y8QH$+u6@g(Z9dn zW1nF~-BsJ z&S&?TkCI?zPk~GSxQu{fK=&TDH7H&*1Wt(A<>$}ca~WKIawskZ_JX+<^_lg!@PD2T zGIxm)a6;PgMaFS%Quvb!wmd&OTRnYlXxuOiL zD-}E~ZiStAQ8b~UVS@y4Z_9qQOY7t9Ujnz#Y`+8Ciu1PJfVD6;YL?j}rX2TKUAyN( zDl(P5phm6A!;IAp4J&_aXky8zn2=a6YNX}F@GWrRVgXvt&>L;Ff>^` z4_yRq&k20E=nzZOq26T8@Dn>uI|hK40=Fy?2d*oapd#}YI02_{C$D+O1q120PThDb3bNKG_jlT1k z_r3nWY0swFzE^(EmrwjZS5*Fjw1AfXkpRcv5)q(7JV9$$uJ`4gx4ysS6))4W)Z>Eo u?GQsPp?(r@GGd4LAJ}>+MhLc@_|G0uc2u*~|3g0m5O})!xvX +# Development Guidelines on HiLog\_Lite - [Overview](#section775017517390) - [Available APIs](#section114412157402) @@ -6,7 +6,7 @@ ## Overview -HiLog\_Lite is the HiLog framework for Mini-System Devices \(reference memory ≥ 128 KB\) and Small-System Devices \(reference memory ≥ 1 MB\). It implements functions such as log printing, log output, and flow control. +HiLog\_Lite is the HiLog framework for Mini-System Devices \(reference memory ≥ 128 KiB\) and Small-System Devices \(reference memory ≥ 1 MiB\). It implements functions such as log printing, log output, and flow control. ## Available APIs diff --git a/en/device-dev/subsystems/subsys-dfx-hicollie-development.md b/en/device-dev/subsystems/subsys-dfx-hicollie-development.md new file mode 100644 index 00000000000..8bfeecbdde0 --- /dev/null +++ b/en/device-dev/subsystems/subsys-dfx-hicollie-development.md @@ -0,0 +1,194 @@ +# HiCollie Development + +- [Overview](#section3432134085116) +- [Available APIs](#section139261151145116) +- [Example](#section1589120102458) +- [How to Develop](#section13905646534) + - [C++](#section9797199145316) + - [Thread Suspension Monitoring](#section1734221332) + - [Timeout Monitoring](#section2186947140) + + +## Overview + +HiCollie provides the software watchdog function. It provides a unified framework for fault detection and fault log generation to help you locate software timeout faults resulting from system service deadlock, application main thread blocking, and service process timeout. + +## Available APIs + +**Table 1** Description of C++ APIs + + +

LTS Code

+

Version Information

+

Site

+

SHA-256 Verification Code

+

Full code base (for mini, small, and standard systems)

+

3.0

+

Download

+

Download

+

Standard system solution (binary)

+

3.0

+

Download

+

Download

+

Hi3861 solution (binary)

+

3.0

+

Download

+

Download

+

Hi3518 solution (binary)

+

3.0

+

Download

+

Download

+

Hi3516 solution-LiteOS (binary)

Version Information

+

3.0

Site

+

Download

SHA-256 Verification Code

+

Download

Full code (for mini, small, and standard systems)

+

Hi3516 solution-Linux (binary)

3.0

+

3.0

Download

+

Download

Download

+

Download

Standard system solution (binary)

+

RELEASE-NOTES

3.0

+

3.0

Download

+

Download

Download

+

-

Hi3861 solution (binary)

+

Master Code

3.0

+

Version Information

Download

+

Site

Download

+

SHA-256 Verification Code

Hi3518 solution (binary)

+

Full code base (for mini, small, and standard systems)

3.0

+

3.1 Beta

Download

+

Download

Download

+

Download

Hi3516 solution-LiteOS (binary)

+

Hi3516 standard system solution (binary)

3.0

+

3.1 Beta

Download

+

Download

Download

+

Download

Hi3516 solution-Linux (binary)

+

RK3568 standard system solution (binary)

3.0

+

3.1 Beta

Download

+

Download

Download

+

Download

RELEASE-NOTES

+

Hi3861 solution (binary)

3.0

+

3.1 Beta

Download

+

Download

-

+

Download

Master Code

+

Hi3516 solution-LiteOS (binary)

Version Information

+

3.1 Beta

Site

+

Download

SHA-256 Verification Code

+

Download

Beta version (for standard systems)

+

Hi3516 solution-Linux (binary)

2.2 Beta2

+

3.1 Beta

Download

+

Download

Download

+

Download

RELEASE-NOTES

+

RELEASE-NOTES

2.2 Beta2

+

3.1 Beta

Download

+

Download

-

+

-

Compiler Toolchain

+

Compiler Toolchain

Version Information

+

Version Information

Site

+

Site

SHA-256 Verification Code

+

SHA-256 Verification Code

Compiler toolchain

+

Compiler toolchain

-

+

-

Download

+

Download

-

+

-

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Class

+

API

+

Description

+

XCollieChecker

+

virtual void CheckBlock()

+

Provides the callback of the suspension detection result.

+

Input arguments: none

+

Output arguments: none

+

Return value: none

+

XCollieChecker

+

virtual void CheckThreadBlock()

+

Provides the callback of the thread suspension detection result.

+

Input arguments: none

+

Output arguments: none

+

Return value: none

+

XCollie

+

void RegisterXCollieChecker(const sptr<XCollieChecker> &checker, unsigned int type)

+

Registers the callback of the thread suspension detection result.

+

Input arguments:

+
  • checker: Indicates the pointer to the XCollieChecker instance.
  • type: Indicates the suspension detection type. Set it to XCOLLIE_THREAD.
+

Output arguments: none

+

Return value: none

+

XCollie

+

int SetTimer(const std::string &name, unsigned int timeout, std::function<void (void *)> func, void *arg, unsigned int flag)

+

Adds timers.

+

Input arguments:

+
  • name: Indicates the timer name.
  • timeout: Indicates the timeout duration, in seconds.
  • func: Indicates the timeout callback.
  • arg: Indicates the pointer to the timeout callback.
  • flag: Indicates the timer operation type.

    XCOLLIE_FLAG_DEFAULT // Indicates the default flag, which is the combination of the other three options.

    +

    XCOLLIE_FLAG_NOOP // Calls only the timeout callback.

    +

    XCOLLIE_FLAG_LOG // Generates a timeout fault log.

    +

    XCOLLIE_FLAG_RECOVERY // Exits the process.

    +
+

Output arguments: none

+

Return value: Returns the timer ID if the operation is successful; returns -1 otherwise.

+

XCollie

+

bool UpdateTimer(int id, unsigned int timeout)

+

Updates timers.

+

Input arguments:

+
  • id: Indicates the timer ID.
  • timeout: Indicates the timeout duration, in seconds.
+

Output arguments: none

+

Return value: Returns true if the operation is successful; returns false otherwise.

+

XCollie

+

void CancelTimer(int id)

+

Cancels timers.

+

Input arguments:

+

id: Indicates the timer ID.

+

Output arguments: none

+

Return value: none

+
+ +## Example + +Print logs. + +``` +timeout: TimeoutTimer start at 1611040305 to check 1s ago + +----------StacktraceCatcher CurrentTime:2021-01-19 15:11:45 Unexecuted(-1)(LogType:Stacktrace Pid:27689 Process:XCollieTimeoutModuleTest)---------- + + +----- pid 27689 at 2021-01-19 15:11:45 ----- +Cmd line: ./XCollieTimeoutModuleTest +ABI: 'arm64' + +"XCollieTimeoutM" sysTid=27689 + #01 pc 00000000000174cc /data/test/XCollieTimeoutModuleTest +``` + +## How to Develop + +### C++ + +### Thread Suspension Monitoring + +This function requires you to implement two callback functions: **CheckBlock** and **CheckThreadBlock** of the **XCollieChecker** class. After the callbacks are implemented, you need to use the **RegisterXCollieChecker** function of the **XCollie** class to register their instances. The suspension monitoring thread periodically executes all successfully registered callbacks, checks the thread logic completion flag, and determines whether the service logic of any registered thread is suspended. + +1. Develop the source code. + + Include the **xcollie** header file in the source file. + + ``` + #include "xcollie.h" + ``` + + Add the following code to the service code: + + ``` + void MyXCollieChecker::CheckLock() + { + /* time consuming job */ + } + + void MyXCollieChecker::CheckThreadBlock() + { + /* time consuming job */ + } + + sptr checker = new MyXCollieChecker("MyXCollieChecker"); + XCollie::GetInstance().RegisterXCollieChecker(checker, + (XCOLLIE_LOCK | XCOLLIE_THREAD)); + ... + ``` + +2. Configure compilation information. Specifically, add the subsystem SDK dependency to **BUILD.gn**. + + ``` + external_deps = [ "hiviewdfx:libxcollie" ] + ``` + + +### Timeout Monitoring + +You can add a maximum of 128 timers for a single process by using the **SetTimer** function. Adding timers will fail if the number of timers has reached the upper limit. + +1. Develop the source code. + + Include the **xcollie** header file in the source file. + + ``` + #include "xcollie.h" + ``` + + Add the code to add, update, and cancel timers. + + ``` + std::function callback = [](void *args) + { + /* dump helpful information */ + }; + + int id = XCollie::GetInstance().SetTimer("MyXCollieTimer", 10, callback ,nullptr, XCOLLIE_FLAG_LOG); + /* time consuming job */ + XCollie::GetInstance().UpdateTimer(id, 5); + /* time consuming job */ + XCollie::GetInstance().CancelTimer(id); + ... + ``` + +2. Configure compilation information. Specifically, add the subsystem SDK dependency to **BUILD.gn**. + + ``` + external_deps = [ "hiviewdfx:libxcollie" ] + ``` + + diff --git a/en/device-dev/subsystems/subsys-dfx-hilog-rich.md b/en/device-dev/subsystems/subsys-dfx-hilog-development.md similarity index 81% rename from en/device-dev/subsystems/subsys-dfx-hilog-rich.md rename to en/device-dev/subsystems/subsys-dfx-hilog-development.md index 762d0fca327..287e312ea2b 100644 --- a/en/device-dev/subsystems/subsys-dfx-hilog-rich.md +++ b/en/device-dev/subsystems/subsys-dfx-hilog-development.md @@ -1,4 +1,4 @@ -# Development Guidelines on HiLog +# HiLog Development - [Overview](#section8154107175019) - [Available APIs](#section6748124155012) @@ -18,61 +18,68 @@ This development guide is applicable to Standard-System Devices \(reference memo **Table 1** Description of C++ and C APIs - @@ -270,7 +270,7 @@ For details about the **HiSysEvent** class, see the API reference. #include "hisysevent.h" ``` - Add the event logging code. For example, if you want to log events specific to the app start time \(start\_app\), then add the following code to the service implementation source file: + Add the event logging code. For example, if you want to log events specific to the app start time \(**start\_app**\), then add the following code to the service implementation source file: ``` HiSysEvent::Write(HiSysEvent::Domain::AAFWK, "start_app", HiSysEvent::EventType::FAULT, "app_name", "com.demo"); diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent-query.md b/en/device-dev/subsystems/subsys-dfx-hisysevent-query.md new file mode 100644 index 00000000000..979e02f2662 --- /dev/null +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent-query.md @@ -0,0 +1,179 @@ +# HiSysEvent Query + +- [Overview](#section279684125212) +- [Available APIs](#section03869128521) +- [How to Develop](#section14286111855212) + - [C++](#section162045551743) + + +## Overview + +HiSysEvent provides an API for you to query system events. You can query concerned events by specifying search criteria. For example, for a power consumption module, you can query required system events for analysis. + +## Available APIs + +**Table 1** HiSysEvent query API + + +

C++

+ - + - - - - - - - - - - - - - - - @@ -91,6 +98,11 @@ This development guide is applicable to Standard-System Devices \(reference memo diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent-development.md b/en/device-dev/subsystems/subsys-dfx-hisysevent-development.md new file mode 100644 index 00000000000..7910777bbae --- /dev/null +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent-development.md @@ -0,0 +1,11 @@ +# DHiSysEvent Development + +- **[HiSysEvent Logging](hisysevent-logging.md)** + +- **[HiSysEvent Listening](hisysevent-listening.md)** + +- **[HiSysEvent Query](hisysevent-query.md)** + +- **[HiSysEvent Tool Usage](hisysevent-tool-usage.md)** + + diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md b/en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md new file mode 100644 index 00000000000..3144455e1b1 --- /dev/null +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent-listening.md @@ -0,0 +1,152 @@ +# HiSysEvent Listening + +- [Overview](#section315316685112) +- [Available APIs](#section0342191810519) +- [How to Develop](#section123181432175110) + - [C++](#section2016116181902) + + +## Overview + +HiSysEvent supports listening for events across processes. You can register a listener to listen for concerned events on a real-time basis. For example, you can enable the battery module to listen for power consumption event for power usage analysis. + +## Available APIs + +**Table 1** HiSysEvent listener APIs + + +

C++

C

+
  

C

Class

+

Class

API

+

API

API/Macro

+

API/Macro

HiLog

+

HiLog

+

+

+

+

+

+

int Debug(const HiLogLabel &label, const char *fmt, ...)

+

int Debug(const HiLogLabel &label, const char *fmt, ...)

HILOG_DEBUG(type, ...)

+

HILOG_DEBUG(type, ...)

int Info(const HiLogLabel &label, const char *fmt, ...)

HILOG_INFO(type, ...)

+

HILOG_INFO(type, ...)

int Warn(const HiLogLabel &label, const char *fmt, ...)

HILOG_WARN(type, ...)

+

HILOG_WARN(type, ...)

int Error(const HiLogLabel &label, const char *fmt, ...)

HILOG_ERROR(type, ...)

+

HILOG_ERROR(type, ...)

int Fatal(const HiLogLabel &label, const char *fmt, ...)

HILOG_FATAL(type, ...)

+

HILOG_FATAL(type, ...)

NA

int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char *tag, const char *fmt, ...)

+

int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char *tag, const char *fmt, ...)

boolean IsLoggable(unsigned int domain, const char *tag, LogLevel level)

bool HiLogIsLoggable(unsigned int domain, const char *tag, LogLevel level)

+

bool HiLogIsLoggable(unsigned int domain, const char *tag, LogLevel level)

HiLogLabel

+

HiLogLabel

struct HiLogLabel

+

struct HiLogLabel

LOG_DOMAIN

+

LOG_DOMAIN

LOG_TAG

HiLog

+

+

+

+

+

int Debug(const HiLogLabel &label, const char *fmt, ...)

+ + + + + + + + + + +

API

+

Description

+

int HiSysEventManager::AddEventListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener, std::vector<struct ListenerRule>& rules)

+

Registers a listener for system events. You can listen for certain events by specifying rules.

+

Input arguments:

+
  • listener: callback object for system events.
  • rules: rules for event listening.
+

Return values

+
  • 0: Repeated registration is successful.
  • 1: Initial registration is successful.
  • Other values: Registration has failed.
+

void HiSysEventManager::RemoveListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener)

+

Removes the listener for system events.

+

Input arguments:

+
  • listener: callback object for system events.
+

Return value: none

+
+ +**Table 2** HiSysEvent listener rules + + + + + + + + + + + + + + + + +

Attribute

+

Description

+

uint32_t ruleType

+

Rule type. The matching scope includes domain and eventName. The value can be any of the following:

+
  • 1: whole word matching.
  • 2: prefix matching.
  • 3: regular expression matching.
  • Other values: invalid matching mode.
+

std::string domain

+
  • domain: domain to which the event belongs. By default, an empty string indicates that the domain is successfully matched.
+

std::string eventName

+
  • eventName: event name. By default, an empty string indicates that the event name is successfully matched.
+
+ +**Table 3** HiSysEvent callback object + + + + + + + + + + +

API

+

Description

+

void HiSysEventSubscribeCallBackBase::OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail)

+

Callback object for system events.

+

Input arguments:

+
  • domain: domain to which the event belongs.
  • eventName: event name.
  • eventType: event type.
  • eventDetail: JSON string containing event information.
+

Return value: none

+
+ +## How to Develop + +### **C++** + +In this example, you'll be instructed to register a listener for all system events that belong to the **HIVIEWDFX** domain. + +1. Develop the source code. + + - Import the corresponding header file: + + hisysevent\_manager.h + + - Implement the callback API. + + HiSysEventSubscribeCallBackBase::OnHandle\(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail\) + + - Register a callback object. + + HiSysEventManager::AddEventListener\(std::shared\_ptr listener, std::vector& rules\) + + + ``` + // Register a listener for all system events that belong to the HIVIEWDFX domain. + #include "hisysevent_manager.h" + #include + namespace OHOS { + namespace HiviewDFX { + // Implement the API for registering a listener for callback objects. + void HiSysEventToolListener::OnHandle(const std::string& domain, const std::string& eventName, + const int eventType, const std::string& eventDetail) + { + std::cout << eventDetail << std::endl; + } + + void HiSysEventToolListener::OnServiceDied() + { + std::cout << std::string("service disconnect, exit") << std::endl; + exit(0); + } + } // namespace HiviewDFX + } // namespace OHOS + + // Register a listener for callback objects. + auto toolListener = std::make_shared(); + struct ListenerRule rule; + rule.ruleType = 1; // 1: default type + rule.domain = "HIVIEWDFX"; + std::vector sysRules; + sysRules.push_back(rule); + HiSysEventManager::AddEventListener(toolListener, sysRules); + ``` + +2. Modify the **BUILD.gn** file. + + In the **BUILD.gn** file, add the **libhisyseventmanager** library that depends on the** hisysevent\_native** component. + + ``` + external_deps = [ "hisysevent_native:libhisyseventmanager", ] + ``` + + diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent.md b/en/device-dev/subsystems/subsys-dfx-hisysevent-logging.md similarity index 91% rename from en/device-dev/subsystems/subsys-dfx-hisysevent.md rename to en/device-dev/subsystems/subsys-dfx-hisysevent-logging.md index a50973f8b09..b0acfd53ca0 100644 --- a/en/device-dev/subsystems/subsys-dfx-hisysevent.md +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent-logging.md @@ -1,4 +1,4 @@ -# Development Guidelines on HiSysEvent +# HiSysEvent Logging - [Overview](#section77571101789) - [Available APIs](#section13480315886) @@ -27,7 +27,7 @@ For details about the **HiSysEvent** class, see the API reference.

Logs system events.

Input arguments:

-
  • domain: Indicates the domain related to the event. You can use a preconfigured domain or customize a domain as needed. The name of a custom domain can contain a maximum of 16 characters, including digits (0-9) and uppercase letters (A-Z). It must start with a letter.
  • eventName: Indicates the event name. The value contains a maximum of 32 characters, including digits (0 to 9), lowercase letters (a-z), uppercase letters (A-Z), and underscores (_). It must start with a letter and cannot end with an underscore (_).
  • type: Indicates the event type. For details, see EventType.
  • keyValues: Indicates the key-value pairs of event parameters. It can be in the format of the basic data type, std::string, std::vector<basic data type>, or std:vector<std::string>. The value contains a maximum of 48 characters, including digits (0 to 9), lowercase letters (a-z), uppercase letters (A-Z), and underscores (_). It must start with a letter and cannot end with an underscore (_). The number of parameter names cannot exceed 32.
+
  • domain: Indicates the domain related to the event. You can use a preconfigured domain or customize a domain as needed. The name of a custom domain can contain a maximum of 16 characters, including digits (0-9) and uppercase letters (A-Z). It must start with a letter.
  • eventName: Indicates the event name. The value contains a maximum of 32 characters, including digits (0 to 9), letters (A-Z), and underscore (_). It must start with a letter and cannot end with an underscore (_).
  • type: Indicates the event type. For details, see EventType.
  • keyValues: Indicates the key-value pairs of event parameters. It can be in the format of the basic data type, std::string, std::vector<basic data type>, or std:vector<std::string>. The value contains a maximum of 48 characters, including digits (0 to 9), letters (A-Z), and underscore (_). It must start with a letter and cannot end with an underscore (_). The number of parameter names cannot exceed 32.

Return value: Returns 0 if the operation is successful; returns a value less than 0 otherwise.

+ + + + + + + +

API

+

Description

+

bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<struct QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBackBase> queryCallBack)

+

Queries system events by specifying search criteria such as the time segment, event domain, and event name.

+

Input arguments:

+
  • queryArg: event query parameter.
  • queryRules: event filtering rules.
  • queryCallBack: callback object for query results.
+

Return values

+
  • true: Operation successful.
  • false: Operation failed.
+
+ +**Table 2** HiSysEvent query parameters + + + + + + + + + + + + + + + + +

Attribute

+

Description

+

long long beginTime

+

Start time.

+

long long endTime

+

End time.

+

int maxEvents

+

Maximum number of query records.

+
+ +**Table 3** HiSysEvent query rules + + + + + + + + + + + + + + + + +

Attribute

+

Description

+

uint32_t ruleType

+

Rule type. The default value is 0.

+

std::string domain;

+
  • domain: domain to which the event belongs. By default, an empty string indicates that the domain is successfully matched.
+

std::vector<std::string> eventList

+
  • eventList: event name list. By default, an empty string indicates that the event names on the list are successfully matched.
+
+ +**Table 4** HiSysEvent query callback objects + + + + + + + + + + + + + +

API

+

Description

+

void HiSysEventQueryCallBackBase::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq)

+

Callback object for event query.

+

Input arguments:

+
  • sysEvent: event set.
  • seq: event sequence set.
+

Return value: none

+

void HiSysEventQueryCallBackBase::OnComplete(int32_t reason, int32_t total)

+

Callback object for completion of event query.

+

Input arguments:

+
  • reason: reason for completion of event query. The default value is 0.
  • total: total number of events returned in this query.
+

Return value: none

+
+ +## How to Develop + +### **C++** + +In this example, you'll be instructed to query all system events. + +1. Develop the source code. + + - Import the corresponding header file: + + hisysevent\_manager.h + + - Implement the callback API. + + void HiSysEventQueryCallBackBase::OnQuery\(const ::std::vector& sysEvent, const ::std::vector& seq\) + + void HiSysEventQueryCallBackBase::OnComplete\(int32\_t reason, int32\_t total\) + + - Invoke the query API in the corresponding service logic. + + HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector& queryRules, std::shared\_ptr queryCallBack\) + + + ``` + // In this example, you'll query all system events. + #include "hisysevent_manager.h" + #include + + namespace OHOS { + namespace HiviewDFX { + // Implement the query callback API. + void HiSysEventToolQuery::OnQuery(const ::std::vector& sysEvent, + const ::std::vector& seq) + { + for_each(sysEvent.cbegin(), sysEvent.cend(), [](const std::string &tmp) { + std::cout << tmp << std::endl; + }); + } + + void HiSysEventToolQuery::OnComplete(int32_t reason, int32_t total) + { + return; + } + } // namespace HiviewDFX + } // namespace OHOS + + // Invoke the query callback API to obtain system events. + auto queryCallBack = std::make_shared(); + struct QueryArg args(clientCmdArg.beginTime, clientCmdArg.endTime, clientCmdArg.maxEvents); + std::vector mRules; + HiSysEventManager::QueryHiSysEvent(args, mRules, queryCallBack); + ``` + +2. Modify the **BUILD.gn** file. + + In the **BUILD.gn** file, add the **libhisyseventmanager** library that depends on the** hisysevent\_native** component. + + ``` + external_deps = [ "hisysevent_native:libhisyseventmanager", ] + ``` + + diff --git a/en/device-dev/subsystems/subsys-dfx-hisysevent-tool-usage.md b/en/device-dev/subsystems/subsys-dfx-hisysevent-tool-usage.md new file mode 100644 index 00000000000..65e7def2d36 --- /dev/null +++ b/en/device-dev/subsystems/subsys-dfx-hisysevent-tool-usage.md @@ -0,0 +1,41 @@ +# HiSysEvent Tool Usage + +- [Overview](#section1886702718521) +- [Usage](#section1210623418527) + +## Overview + +The HiSysEvent tool is a command line tool preconfigured in the system. You can specify search criteria to query system events that meet your requirement. Using this tool, you can debug event logging during development or query system events for fault locating. + +## Usage + +1. Run the HiSysEvent tool. + + The tool is preconfigured in the **/system/bin** directory. You can run the following command in any directory: + + ``` + hisysevent [-r | -l [-s