From 1d313be98083464b7674a54d5e1f93cad44d4417 Mon Sep 17 00:00:00 2001 From: umry8364 Date: Mon, 19 Aug 2019 18:33:25 +0200 Subject: [PATCH] Add a section on Robot in the doc Issue-ID: DOC-534 Change-Id: I62be1a4b8eac385015dac519023db4fb7e6bd4dd Signed-off-by: umry8364 --- docs/docs_robot.rst | 238 ++++++++++++++++++++++++++++++ docs/files/robot/robot_logs.png | Bin 0 -> 23063 bytes docs/files/robot/robot_report_details.png | Bin 0 -> 108388 bytes docs/files/robot/robot_report_ko.png | Bin 0 -> 51909 bytes docs/files/robot/robot_report_logs.png | Bin 0 -> 66181 bytes docs/files/robot/robot_report_ok.png | Bin 0 -> 45089 bytes 6 files changed, 238 insertions(+) create mode 100644 docs/docs_robot.rst create mode 100644 docs/files/robot/robot_logs.png create mode 100644 docs/files/robot/robot_report_details.png create mode 100644 docs/files/robot/robot_report_ko.png create mode 100644 docs/files/robot/robot_report_logs.png create mode 100644 docs/files/robot/robot_report_ok.png diff --git a/docs/docs_robot.rst b/docs/docs_robot.rst new file mode 100644 index 000000000..4d1a72489 --- /dev/null +++ b/docs/docs_robot.rst @@ -0,0 +1,238 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 + International License. http://creativecommons.org/licenses/by/4.0 + +.. _docs_robot: + +Robot +----- + +Introduction +~~~~~~~~~~~~ +Robot Framework is a generic open source automation framework for acceptance +testing, acceptance test driven development (ATDD), and robotic process +automation (RPA). This framework is widely used in ONAP. +The full documentation of robot can be found in https://robotframework.org/. + +In ONAP, Robot scripts have been developed to validate the components, provision +and run end to end tests. + +The robot scripts can be retrieved in the ONAP testsuite repository: https://git.onap.org/testsuite/ + +A Robot pod is part of the ONAP default installation. +This pod includes the robot framework and the needed scripts cloned from the +testsuite repository. +Additional scripts are created during the installation in order to simplify +the launch of the different tests and are loacted in /opt/oom/kubernetes/robots. + +From one of the kubernetes controller, you shall see the pod as follows: + +:: + + $ kubectl get pods -n onap | grep robot + onap-robot-robot-7fc49977fd-6jblt 1/1 Running 0 9h + +You can access the robot configuration through its configmap. + +:: + + $ kubectl describe cm onap-robot-robot-eteshare-configmap -n onap + +You shall see a long list of variables set during the ONAP installation by OOM. +Please note that some of these variables are set thanks to the OOM +overide openstack.yaml file. See the examples described in https://git.onap.org/oom/tree/kubernetes/onap/resources/overrides/openstack.yaml + +Verification of the ONAP components +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ONAP robot healthcheck tests have been created to give a quick feedback on the +status of the ONAP components. + +You can run them from one of the kubernetes controller. You need to log on the +machine then perform the following commands: + +:: + + $ cd /opt/oom/kubernetes/robot + $ ./ete-k8s.sh onap health + +You shall the execution of all the healthcheck launched from bash script hosted +on the kubernetes controller and executed on the robot pod. + +At the end you shall see that logs and reporting are automatically generated +by robot and stored on the pod under /share/logs/. +You can retrieve the logs directly from the pods or through the web interface +integrated in the robot pod by typing +http://portal.api.simpledemo.onap.org:30209/logs/ (test/test) + +.. figure:: files/robot/robot_logs.png + :align: center + +You shall see 3 files: + +* log.html +* output.xml +* report.html + +A new directory will be created after each run. + +log.html should look like + +.. figure:: files/robot/robot_report_logs.png + :align: center + +When the testsuite is passed, the reporting page is green. + +.. figure:: files/robot/robot_report_ok.png + :align: center + +You can click on the test case to get details. + +.. figure:: files/robot/robot_report_details.png + :align: center + +If one of the test is FAIL, the generated web reporting page will be red. + +.. figure:: files/robot/robot_report_ko.png + :align: center + +Lots of tags have been created for healthcheck tests. You may replace health by +core, small, medium, 3rdparty, health-sdc, health-multicloud,... + +See https://git.onap.org/testsuite/tree/robot/testsuites/health-check.robot to +get all the tags. + +As an illustration, healthcheck core traces should be displayed as follows. + +:: + + $ ./ete-k8s.sh onap core + ++ export NAMESPACE=onap + ++ NAMESPACE=onap + +++ kubectl --namespace onap get pods + +++ sed 's/ .*//' + +++ grep robot + ++ POD=onap-robot-robot-7c47659f7-tt9w4 + ++ TAGS='-i core' + ++ ETEHOME=/var/opt/ONAP + +++ kubectl --namespace onap exec onap-robot-robot-7c47659f7-tt9w4 -- bash -c 'ls -1q /share/logs/ | wc -l' + ++ export GLOBAL_BUILD_NUMBER=2 + ++ GLOBAL_BUILD_NUMBER=2 + +++ printf %04d 2 + ++ OUTPUT_FOLDER=0002_ete_core + ++ DISPLAY_NUM=92 + ++ VARIABLEFILES='-V /share/config/vm_properties.py -V /share/config/integration_robot_properties.py -V /share/config/integration_preload_parameters.py' + ++ VARIABLES='-v GLOBAL_BUILD_NUMBER:17175' + ++ kubectl --namespace onap exec onap-robot-robot-7c47659f7-tt9w4 -- /var/opt/ONAP/runTags.sh -V /share/config/vm_properties.py -V /share/config/integration_robot_properties.py -V /share/config/integration_preload_parameters.py -v GLOBAL_BUILD_NUMBER:17175 -d /share/logs/0002_ete_core -i core --display 92 + Starting Xvfb on display :92 with res 1280x1024x24 + Executing robot tests at log level TRACE + ============================================================================== + Testsuites + ============================================================================== + Testsuites.Health-Check :: Testing ecomp components are available via calls. + ============================================================================== + Basic A&AI Health Check | PASS | + ------------------------------------------------------------------------------ + Basic DMAAP Message Router Health Check | PASS | + ------------------------------------------------------------------------------ + Basic Portal Health Check | PASS | + ------------------------------------------------------------------------------ + Basic SDC Health Check (DMaaP:UP)| PASS | + ------------------------------------------------------------------------------ + Basic SDNC Health Check | PASS | + ------------------------------------------------------------------------------ + Basic SO Health Check | PASS | + ------------------------------------------------------------------------------ + Testsuites.Health-Check :: Testing ecomp components are available ... | PASS | + 6 critical tests, 6 passed, 0 failed + 6 tests total, 6 passed, 0 failed + ============================================================================== + Testsuites | PASS | + 6 critical tests, 6 passed, 0 failed + 6 tests total, 6 passed, 0 failed + ============================================================================== + Output: /share/logs/0002_ete_core/output.xml + Log: /share/logs/0002_ete_core/log.html + Report: /share/logs/0002_ete_core/report.html + +Onboard and Instantiate VNF/PNF with Robot +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Robot scripts have been also created to provision components and perform end +to end tests. +All the robot scripts are hosted on the tesuite repository and deal with various +test cases and/or components. + +:: + + robot/testsuites/ + ├── aai + │   └── aai-regression-test-v14.robot + ├── cds.robot + ├── clamp.robot + ├── closed-loop.robot + ├── create-cloud-config.robot + ├── demo.robot + ├── health-check.robot + ├── hvves.robot + ├── model-distribution.robot + ├── model-distribution-vcpe.robot + ├── oof + │   ├── oof-cmso.robot + │   ├── oof-has.robot + │   └── oof-osdf.robot + ├── pnf-registration.robot + ├── portalApp.robot + ├── post-install-tests.robot + ├── update_onap_page.robot + ├── vnf-orchestration-direct-so.robot + └── vnf-orchestration.robot + +It is, for instance possible to test the onboarding of the vFirewall model in +the SDC by running the command: + +:: + + $ ete-k8s.sh onap healthdist + +If you consider the ete-k8s.sh script, the following testsuites are referenced: + +* cds.robot: cds +* clamp.robot: clamp +* demo.robot: InitDemo, InitCustomer, APPCCDTPreloadDemo, APPCMountPointDemo, DistributeDemoVFWDT, DistributeVFWNG +* health-check.robot: health, core, small, medium, 3rdparty, api, datarouter, externalapi, health-aaf,... +* hvves.robot: HVVES, ete +* model-distribution-vcpe.robot: distributevCPEResCust +* model-distribution.robot: distribute, distributeVFWDT, distributeVLB +* oof-*.robot: cmso, has, homing +* pnf-registration.robot: ete, pnf_registrate +* post-install-tests.robot dmaapacl, postinstall +* update_onap_page.robot: UpdateWebPage +* vnf-orchestration-direct-so.robot: instantiateVFWdirectso +* vnf-orchestration.robot: instantiate, instantiateNoDelete, stability72hr + +If you use the demo-k8s.s script, you may see the following options: + +* init_robot +* init +* init_customer +* distribute +* preload +* appc +* instantiateVFW +* instantiateVFWdirectso +* deleteVNF +* heatbridge +* cds +* distributeVFWNG +* distributeDemoVFWDT +* instantiateDemoVFWDT +* vfwclosedloop + +See :ref:`Verified Use Cases and Functional Requirements ` to see +how to use these scripts. Some of them may need specific prerequisites on the +environment and may support specific versions and/or configurations. + + +Develop your own Robot scripts +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +A dedicated wiki page has been created to help people to design and write their +own robot scripts within ONAP context (https://wiki.onap.org/display/DW/Robot+Framework+Development+Guide) +It is also possible to contact the integration team to get support. diff --git a/docs/files/robot/robot_logs.png b/docs/files/robot/robot_logs.png new file mode 100644 index 0000000000000000000000000000000000000000..c078d1700d2506fa46243bc697fc8835823d1250 GIT binary patch literal 23063 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 literal 0 HcmV?d00001 diff --git a/docs/files/robot/robot_report_details.png b/docs/files/robot/robot_report_details.png new file mode 100644 index 0000000000000000000000000000000000000000..f23c1776bba5b8cd1870c730a89fce7e0fab0398 GIT binary patch literal 108388 zcmcG$1yok+w=cXvln_NqLRzF#0cjLLLPBY!L6i`XMp~sC0YOr_loF5zK|oOH2I($A zy6;@>|2gN5amG3KeBT{+5BKmTTRMEL(0 z=Nx>;jQ-bS_zTNUQcevA{&T~5>F~Hq(1sm4ukR<= zjm^7Vq}}?tk1r)9Wf08UOm3_YWFO~({C&AH)FQ`hjK1sI2q5TAc~OF3x&)suR#%frBsn&bBs4p{W4(_#su zF!Sltr`Qq_5{Q=;ht*UU4;*pjVLIR9N@vQM;!mG^R$slsWW06_cZBm%iC1Z9siRER zwY9ai!lI&_qPmBlo+$FfW!`jNH^8S6Ezj}$f*$xOh1tSjkulb-y=Nn3AMYl*AMSKn z6x7_kc=2L-L4mS{hQ?MKdqJnN#Bn;$+}zLj9M|2o$0jDym6er`&CKLJJ}OPUIqnu& zd$=aTz_2v*DNCoWPokjuPvCG-vao}E{?E6Z+G_oE&KnFApx>+c+e=gpzi_pZNF$gZeYA>iep&a)((hRE+TmMQCy}pT7aGm3nVOxA6A=-CgOC4prZo}+ zxpLErWY}|W(r=+F4g1gLrpak&tU7?{mkZ**jREt>oF>X$93n~(MAicpvRFQjhKsfj%t?Ck67NpT6Yno zzO(a^#K~UTbArdZa|S(`ihF;)bNifFT3T-OYg>OA8>0yb2pFt!{oJszykNT1{n9tK z>cSO)Z(=3HZ})yt~0K{B}6^d%48vkzIm>r=Dp~k+ICyVh{Gy_Jl96SW2&>n{=fj#mq6+ zJfo+v@y_5Woc#Av?OL~r`~78>+J<#GIjk6T)YR0KuDeztCxL;1-UXkEi)Ri_ro$x6 zqaSMOUsK)5sdaIHYgSxRLei$Fpx|9FP@vDP`I*aZVsVjm#mUx|NJEuf%z535kqDQt zwZPuR+4)dtTYb#s(o*T}(`jYJpyja|T*l^88%tvToeCLHyb37f~4* z=Oe~l^Z2G9vhyZzLVjv&XYUsUVj#HfqAR@JjfgjI z7@mbu^5en2Z*Y{A^0Um5!3Q@~#LJKEOH?uvQ&tIFWRjp-I!%jRH; zGq9o&Qugo0Euog{HfWXXh;(62ELEiZ^XCturW5MuY%dR%T9Ccv)<^HO z;kR&ly3~V<$|;=MWnOG+Pooc=U0nLJMcnqD3knIfuEvYLC?0i{TfUAhBqU^e$TlxY z+&7<5US6(oY>|6lqploCO+}^FkB#W+>Q)%%B}sjMT={{CHH^UMT5tlo5}9lFGFMF*B-|QUz(cE_V@Rf+f1LEnx6J4cXV__5IZ}& z*mv(z-oHnXLbrWeojMO{sOUI&c)2#o?}fj=uTr9LN_sjLR7G+=(@VYtw0iSGu{WMxgu*U{+;VXd)^nab8%)lN2`gV# zNvSzsx9a)koT8wxa2s`+0@ED>1G-Ab)j+7T44j;bi$(oTYfpZ}(vQ|14Cs5NXn(ds zw-T3rZLpZ@4$k(N$DySmX%%nwAx*!@C^56rR~cG&EW|%7Oa>10>eZ{~J1Y+pM4a*o zLj%zs<7;;CH6k}_z~uV7VJ9`r_q$`R%BDS)4i?c4Vxpof+}z69v{Y0d3de>^E&4)r zd$I-&x0jhqat_3mtgWrtxVV@YQlakS9e(`yaq;B%&>`szLn?vz-Yt{kwq1K7LWjj} zX~RVL0lT}4Ze)e(Zc=-A_@!uLwe6(#rHzw=W$ubH&3v5)hsSx}(Z={zK7+C@YZGoZ zWk@`VTu7JPUr=Y4EB}tSuKn`z3^rO=1Vuy|>+6xXZ{M1ZlyUlAqz?QUf75uV*hDg3 zI_NSzBO}(>*jVAGPp^}bXo5pRCRbNOD(vPN1Ozn7pAsRp2TSY<34(-xG~lg@^HbB( ze0FV?78mIm7%<`9B3>^x=jeHOE+OHOk*{s0n_v1b@nIwDvoZQp-y*I$FMs?zF*SvG z=FFMcxVTiyk+N6;%eYahqn#0JauG+44>!f4oS>+U9kFQlEF1(lLSac|uC^r)$?tTI@e^#2#^ZY`fky!Qg0T@V$X_w^Mwmga(RSRyf zEk0g(NO)4%l~AN0@ta4nj5H+6J5XY6?^2HT3kTu1TNvh0sdS z0C?;_;G}_L41V&3o}UXPyJhWH)kcTJDIGI2HbVqXXlN*4>3ZlUou948Giey$oOY7G z{ySo=z55N_hW|&Pik_#j!m{Av2(|y~w~glZv&MfA@W8(#Sf-4zD#tICQ2VO(*7LQOH$}%xms0+o z#PQQ!p+ycBmRnGh?cvV%2{P^+1JWBf7-N}i>*ACQ@k>B1vHlF{PNXLM` zO*P!xXo$Y;p>p=->~?Rj8nmZ|jt=G7mYyEsoSYmy;{O4LDr5L<@eELK*9LmbdE(J)Tps4@Q2o5>8nbFRkcAbB&|*RAE81)6Whber0SyvdgQFrNg){B~yfLlMS3fPRO<- z7X0mbRtNbq90Yd9@Qd=x@9I}stv0mBi}(nrUz=kxn)QjsYsp@4L_9q`Nk~W#1nL%k zjvAhfj7)h&1qSk{)I5Wyzb6&iw)4>*FKnfF7Z&v6x;BeC5D*Pr88SXPKmFjoidPM* z>qbYK=fvYFwcq7+Stp_HpLZucCf$+xjl-6r-#g-?-)iVJe;an)S*fZaIJElRIE4Mw zqOWDL(U0)Tm7u{vE&47hUL)^9>w~RD0DL}KS-nnxp zHa@XT68n~xrI^hW7DC6xr8LMKE$`z#-;pe% zq!ij#3+!mw;qMA_J>lDbE!8)4W#kSP;Ys_^6}U9!h2 z>KUY&lUeD>lpn_B;dU&H)rb%g6L)3YBg4YRo<96t*Rr=U{ov7~K)Fb!$)o+vSTR=t zs1_StGPJkZqNm!T*~?#SG9h$=g5&_dzb1+}b>^rt+pmpMC@CqKkEmZG3gDwGD6XZP z5=8gu&XHMo`X&@Njq+0B zB3`eZE;6w3=H8xK8?U1UXbnrI0WO81kr5^t85vq!^E5s-q{~Hm-`g}QA_pqC{^yUR zmKHfwV+>?-?q_3>am#bSwJ2g{*Z6=SNBi^1Y$NI!X=y`KWyQ6QtHbKQr%_@&xH+Fw zRjsG>$X|N?^5kysc!YjJSi4eUQDKkdq=y27%AnHF$*_yo)+JY!9RuYy8lBeKZaQ9! z2`E|!5+H@?`LLVqlJ+)BiuTS)?Z5EDsBRA3?=w&-sE`V|X6@og(BE`*Mr{`P7t>2}}! zmcImg{=2G^^3!`kZ=E|1#dLmD`!{q;mXulrP5m(veIt&EL_MG&vLothuDsCv`3k|k zqHFl}_~GFn#RIy%Kjqx;Eu}n%u&}V27Vi3k5^zaRPfu1}z5y0b*Jo?}nfdu?U__mL zeN8}bZRUPZD7?FV7668KWF&FEPL7sY>F3X6Q)=Sxw}7jp78YK5`SRs+J3G~p_Kpq$ zKz>qiuiF!ZUIT@@i=OoMT)efwx4*S_W&cm_wZwPQ?_^u=-InnS<>|V4`z_;n?R?AI zHZO|q&sXJ*)2CbFU?yTdU}JA8I&4|jZnM77U6)pL_1tGFd_>ms&6t5)mKH}dFu--- zRB#3-^?{`922Y;&!n!d$+S@=7Y;5eo;bEheQ0i|#fBL+8N8z%&7J{;6n(qzge;47dghV{2eodz?xo2Ynx zK2aQUuYu;#)qCf!R&>~5+KnCH>vHidlAs{MDw=pw@`<@>Nz=xj|YI5-g~J z`% z%yNW5R8%KFG$Z4h6a%3~fnG>`{Vj3|iWL1i57~S7?wFdg{P_8Ea%m|LdRU60qoaW2 zoja3@i@3zZ#Crz^3=9mCTx-D;H|U50cpiTXccErhRb-21)3Gc#Lb;xhqu)j9Lg+x} zu2{hGAtWWuDBXiXq-AVYoPL9e=^QNe24*IvyZJhdMEuUlX)I!v!W43erUVmoFGlnWSOoH;2)NDaH%%@7Y}M!@qFh!TtMmZs=-8QTCvctgPu0 zJ>Fb?-e;Pm8J z7Q~2%2*NV!@laHWS?tb0ywvkFa5rAPeqCfaBJd+Y=+n!v1ofu?Zrto098wAjxSz#D zM;rc`X?<>E^D;4!`feyy07#K3t7Q6a7*M9Q9z9A0u~4hX=qy6V$43H{5xtqfKcQTw z0&xXSGzA@_!BIztNUhFEIrIZ*57cu*zriMoU z`{R7AB1{l!Zd~TjLR?*4D?mx}&A1oCz{Z9L;#hd=W66hi@7@j3q84$)y1zk3jFdbZ zQrR2s?ImeyYGMI^_UI8Ma*HA2+piWp1VC1}d&Hg*E!F{oW2CoTI|U(-d^gHm6MBLAE~fohJ}9t1QID} zX_U7HUFK{6@grqHxp#Sa`OMy~hF6=Vv^yqg%g%B^ousCwCJQ?kmv53@(`R~daT-*# z2?{#z0%Y*?wMnVt;g01Bv~nQg4cwP32J(GibAeLwJ}b-b&mUWzYG;%!6&4oO-{Y=H z=hL%XzPas;RvOC}OJh9`E4s-pU-pGMV7xY3abc|G)!Fj~78dNE-{5{L$h}NPb`{xuf8fCL&MnUxD|XXU>(H&1n@+|l~<I4ZJz#d`Amc)1JFH_aHMf)7IJ~+l4!mp>KM?>F+vCqrWya zH5En5yQ8o;P(bSr8fn80{6l%r6Vl*~FA+X?@`ULabWABJ`{M%#VV5lyxeOHshT#%3 z;-Qg|NE9J(=~k-wXXKyw6JA|-O(0Ikzz`rMd3?Cb45com2G%FAQ$?$1>i_np#xIsM zgefe{ySlne`#(@r+Am_l5&|I@PdWA;Bhim!30hDg3d_oxL2)M}CcZj4AYwfxdbBqk zR#;rzP-xiL+kd*%qinM=B@Lz2sPp}8^WU={Y3geKS-V00vKtO%dwb3vZ{q$Idwv|f z{|EGLU_tIFY)MH;$%&N}d?4b`>KW+hP__Bl%0Jwy=x+Cd+&o;DOB56VP_?kmp8e9; zcm}YlpzVxo+Lr#KN5d?~|8PN1e)DeDXn7mh3`jj#0yYbs^q}d|Jbd_YZzfXN+XY_4 zUN^xL6%|FH9Eve!+oD;xxGpaNoq|6J|9kU75N&O3_$J!f7KTgN@$vDWAMM%9%*`3? ztPGj{s^kw24xWHDd-nWgoT5*kJ`qw<;wdXD!H>(h`E!vI0@WafbqvTX6TG3CHs1smbd*3I#~d2fHFZi7--9FzjpG^RvfU*G4Bj^_|)p66)Yw+P|$ zyiQGJaDMRu1Az_F^-=pKif94nlJlFBT)%OH5Xu4wD1H8{L;<}!S1w;Z2Yd=31wN1h zF_*1+5DY`10|ZkE5rOm2SZXnVApfE~P!LcM_ajk+tfHcVT*5Qg<0e%E#W7L7+v;nt{!H?k114L%Hj>by%C-t~ zypWA!GZxzFHUAh<#W)vo&=#3PJYF2f=zF{j3nR$asdxn~57msHKYv~i*ck%>WGV9I z%^S3;sAee{0@WF;bYMpe07*cDkC8yAxBYlLj+{{wWaP6oki?7mdNp_eqi#HHHvl;i zl$_fN3i!x>*JF8K|3{Cd&-CGs7(aCh#-Qfh*sjIj(v4-&+|leNM%M+i3I#&vrho1z zOW)`FV9@$I+q27#;!%0yX3gp!MmLZ%m&d(MxAOcIIii-&AT)DtjYca;N?hiz>p4qc z*wxkrr5e4{37#G4K^NLqoG0~hBazK&J{H2W>sM87qaXM}V)S)K6nktneQC2z)OWA5 zguCljo~}RK8VP@X*fxBc;wN{!x-og5*;{%nX4!g$-LX9KVeq(-oqBsu?fI|=jM0j};j!~7qvzvram(85!A9gJN^CHZ|`u9IC^7Q7+Ob{whD|%yfWrZX(uUMx`1`L{_p-=SB=hOogInqB=s}x_MP;NC-NqN@qm+rb=w`_5XW$*uF)UTB3)g%S_xTglwrFUD zyRGY-_{1ZgjqIvHv$~6p)?F#7u9i=&uC|zR_Z~}0^;+&okk}nWbWfMtR{4MMZRv_0 zk>+0-{mH?UH)&)4M_!ze@Pf`8Sqo#D&Ry&qt=wC9(NP*(liTgrhMmMU^H;-XZ!R1c zSVbz_oe>jySvwfbr78Ygj=`PEU4QW6_+j|U-R7RgQ6its_on%L@2>oA#kD_9@|Kr3 z*;?!%n3=n)>*`>a^`YHgy>)A6I6f*-Q(n4hmT!7Qjk1XCoxlH^p7dVPJ?qM7J)5x^ zG1jzupOaWtRdwA9oVdCwmd`fqjNeQS-yHEgKXQ9Bze}0ThZ;nph+%Y z24H=eT*#KOp|R1YI3a-w%oq@-3ZVQDBkLer;yA?Jw7!V&@aB|%jf&SUl8g)we_x_} z_3G703&2J69x5tt3hVx0q_v%Z!}ffl9)n8UO=}PJTJqwgqW&!l;Ns$fctL9ez=gXT zReYKh<=6C$mF2Z3JMm!La>{PdoWJ-3o5k|-sKU)>7w=*Z;cbsE7@fW8dd6SMOZmKU z@RFJ8bZygy`--7uW>#U?47SQq^cGfLb5;EhS?r5%53~fkDY}?xZfls_w$`B)(TZKb zMDFgC+^z_Ien7kL5k=jSc3PLP`uL-MT2h*NQ|$+~JUxVGhg5rE$^X*E)3*(KPS@`} zpOVLDu6}kV0*9RR@#}9_hu)iOeytly4(N~MN_(*`?Y8O4B%oyH_d3HPgqJOjU2*=2 zq`pXrnH7$^7~zw;MJ%%b{H#;f&hnbv3RTAyzmxVxvfq_onso^7o)gyEakQg45Fyx? zp6%>8+h*eJJtEB#{>{MZ!};;I&GLtNmdC^93mey)weEDQ>Sq|Dg0gC+!poQ#GO%-O z_Wzh5ULYV;*VKTneI9xq@L^);1Gm6bMC~o49>nji4-ao3UVvSIas(6>@+1h^of~)C z47qzuK+b~zplRA(9zfNwYH$z2Wf`FlH@7E>@IIfo1&xTFl@*s=Ghb@F);%IQIShgg zw>34%&R}1}LLg^wLEmHl+BpK6;3P3ubHmKovemkE^5bKU2QU1Z7wEJ(25rgC%Lq>I z*3mRJNRjCd$F=nljK{n@9J+?EaT%Z6kNw_c|KaV5`s(zTG?iHLrTYG(aas{4SKh#T zxM6s022URpjgP5_`_^QLciYMH315sqRi1)ZhQ?f{)5koYr^whx%n!FAe{#KM-euYcWk2S@qvmG>4RHw=^do71OzCC)B%jVWZ`gqy2CJB34hM>m$T?NnUbJwLA_ zI@502ocnT{g9GwZ`%Lc}0FuN0fWqInh66-ME&9BX7 zoQ31e=s{D+$BGA z#Obr@!Ts=-ilpERep(SF(T41#vTQe{RYNP*X3vOMFB;<~ZOd;G)$TNV*E+s8|L)#L zYmqlBbK{D;Xhhr0T0vFhL;N#h5#bz|x0V_`$Gh)qD3!;kV=`NuLA*j=&CliTboKY) zDD@xgEzYD-ZhMGt1|AOP26H%(OvS1m)J|~2)gX-x~gbMs`Vf_cPXBHN%GO3-`y)| zuZrU^a!t{l6f3}gAU_Wrx9It#WV8bn71cUW_}mXYweGGu<iTb{IInoP@$G_z>YLjppD<4jK z)|pIfNu1TX(WTD99;L>J$z4uyn=w~QE?6k>HJMnHe%yyKnY<^y3xjP~w3an~9n2Le zvTTja5*dbS;US~)+Fz3&I`@qeeT)kz+8MAXr||Dw^$8@E#=hr1>URG_34t!PL7yO* z!oj$uR{WyjW92Ig%K?Rl&$z_L--YrM>lkuq997NznV2K5=8&@*|FS3gcs6G08?&XM z#m4WpnTUHYVh@jXXGo%2e<{6R)X~gZ9DOE~;G-$>C^aLEeA!9DTdU5<>gxeR>1yB4 z#8hEUs-}fm<4}Uyir305RrOu+v_tzQf_5K~*JnP4M=?p?wPF=674V68dGXng?e_)j zDwN8)$7Eu`Hgw_yx5eke-(IRc7P~V$DzF6%S0SEK416@R=YUXL4q_WSZ=Fbt@^X)) z&W~Cw47cN3?VM}y=y+oEdLeq1T*a z4AekwZ*S)TH}2y{PE1V9LYwKkDM}!E(SwhB`EtL(algP5P+SU4yBK^-R!2Vj$uj0{ zPzXHJs%Zuq$MRKW$7%YCx!b?XrcO1@qvYl{xY4t673M#16_yDme+h`c9zq|tZ{Pm* z{repwBL)x(UxDglk;Od&jFg75m>5l6Urh_;!@a+n zt2y02LPFm=DF*roSt*1CjDkUZ9UX<6R-<$bsbqT2FOhHVXv%Yw;p*B0ijye>Iilj@*`quU7PBPZ41(tc z`8Q#A_zGY!q_Zf&oafZ9O&D|E)$Q)-VZ zY4HQmIQp$7lLH7}B$qDHxp{zXL^*vasELG) zNc%QAs*{%fiM~bioqhikD^3m$Q_x2Fo(=L~LT7yv6%lb8q%bTmaO}(=u}}h1G0HF? zHs$Zn=22nVlX(H-J?J`};J<)-)kLvJZ5ANhES2iQg6UlBi^Cm;cftUe4$xu^RLxSx6(I9E9_>br&Xu1p8_0_ zOoUhtA@ZpFd5VrUNLx};5Cu}x(vp3B?g9e>u|UxjB@-h)!v?I1vNj_PCy+5QZ^?vG zJ$NM3WzK;dEaerL2OEO~DaOo6@w1QgS?_*#)l6a2PcQW zagkEfu2=rD(=P&og3tb%WG^Ba&p<8Ead?~ z52!>r%E{te3td;)I5^TFQ1fSJr@!3Op+z&X(%HwyM-BA|AQvNl^=@#sov6cXsaO*H z7R0gMj*{QIcQ3kGRa0O0h2{Kfe-;6Ow~szs>1It&Z$237@emi-+Usq~TisVqKX6lX z63=G0UUDuy_Mj26^#;v-vFdkinjZmeH$-0-VY5)SsP1llVdHb@e#m<5nh%<#nK_4Q zID`>XSVh&<2_PiOKru~EOS>AQ5OU?FQnuzha?9~r-Fykf$aa7$5s(*dqwOEosSOPX zpid3F*Bm`v->MSWBzJrFs2!hds&?xQF1e;2=NW-SC4bBMT#= zH#n-^JD^T&fs0H`*ad+)Ql`de_8y{u^!Cl}OP9HHWZ`_t${?G!;799msVt0I1j2JJ zw(Ofgm%F<7PYC7j-Mfm|)-A3Lmj9K{aTbn5n zH#>U}EM96c7qvmB^@-c)_4_!@%C332KxKOx7Z*3;@R}U8!?p#na+e!RF>LWTNL=0J z-FNF19qVxx&%L5=d8kQNP&O|Sv9$T%*Z%wb>H{}^$7=bwq%hq|`!3UysHUE+`RNw} z3(5sDQc~~1VTB4&4{iY=4GmY+?92>;fT@B3iAx2Rf4Ko6;A8?hodnPg@icJL9)x&+ z)HqW{+NAaviX$37+uEX>qsVLXkYJ@>Uem)sWi6qcE*awg| zQ&S@W9?@m6`FyFD6;J>MLL=_x9~_Kd4f4KZ1u#6gd(T&g`AdsPeqKR<$xp!_3HK#vmaYmQWq1~u`4e(kcD5rcz3sInU_`yy(I9cL!H{Rw#9k>%%yO-Kkv0Tc}eq_@V^ z=>WugGw|Yjvy^F<#_J>qBbqn6I|+z5^{Qjhd^+qhsjc5__VV(9I%1GoJpey_W{36g z=V$OhZDVdg@L2&_fU->4ROh%#=>W+L!5uJR@jg?TcGu-jt4c>YLwcaZarIGY5nn*o zqP&!PVCekBm)G_nsLLxUWkQ16*3mH&tUcC{lzb1%DYNUeV2#d9Ox%KUUMemwPJ8M) zpH|kK#i3`};i*2KR=JrXFmJ5-HBUZrUqM-!%xbgJWt)xk^5t%jp1%zZy~8_yo<*Wk|1Wo#-eHmSMli9fT7Vw-GA#MLaK3m#t^`z49JpZhiJwpht2Co{_5H1b2;7~NM6!h=iA!c|!eQ~#^rzcYUaOH-fHe2)?0Ij2qQf*Uxb5KNEdSaCU3{FmiANLm^j$@1Ya>{+O)T>aym~* zSCk?3#}9?;JUsXJZb@xlIqqvx)zlM9%AIEA=FWoXh$=YcVjf4aFm#|qLqoF#z~cO> z)5;+I5pzaXgQ!M$eg$66a0HYURVBE+Uy&I z-+sEiuMfU{>9e6XkROv{i0Fh$2#`{`yf~XHsWO>B<7K2$X3HjVBKc`B5tk0wt}oS|8RV4EY2*dpP}YsZLK(%HK7bwug*5V=Q@Gc3m`UJ zV`pc-e)DD)$Z_9~pQhz{DuxyaJG9)9DtYpg(!4J>x=>i74_&SU1Dey$OKo}0s!pPC zy?U#htc#0^=)uV|A1c1asa5EOPD41;)6+LZV>)c}2V_}^=b}h!5rFFbNA2^*il?)i z4x!mx;yac$xna@;upe4y=H}*lA+cU*I~&-% z(R=Jxh{wRt6vp4&(sFY!(g#9tqE|$ndB)r}6@#fo%5wY~$dki9wDKLWM*`V+(E|Xj zdS}=|Q4GHsS>OK_cd_8#C$FOa+hMH#l7?2^RTl2)?!H7sgbA}%f-8;jaJ2&@?9S`Nwa4b5~I~Lxr_HN$fl#2$nIFCvSk9 zS0Vii4FVT=55W^bz~6`gSeWo0rsK6@hyjG-Aieb(bUuJJ!)2C1>+8?yYjexM=7vAa zN(l%8s~-0d#+s0c%?=3}i1!(on&Ln>es6D&4wV2U{=>42??Fe$cz1r7^``g0WDdYT z#EaLsc_J-LyaANg`)X=fuvw5>VD&?;2SE~r9U7pC5mKS?E?L=I_wQeVsD>9fhx9^1 z6hH}yHRRMwKQa;pkc6)OEAa>&08Km^f*lU0-U$2WiU-4>>NKEx5HY<{Qs`G!R(PD& zM$ZNP0`iBd_9N87_VthiQ0q7Qc9N^w>*?OhpCm9}ougA}j|(0>&b0c$X(QLJpi==STL$_MI|DN*$)VF4!NYXeW-` zXpYr0cG~;ST{ls)J9Y=6KwuDJA|NBwLv=^>yC3m42~d3$jbuVM{-9MPY3d5#h@6sA zk}2{wLj*KU?7`30wCIF_rrrx_lM#7g;lRxmsKn^#oi9Wns;jF(f;b0kJ4FeupRnT! z4jEaDZvs)jR49#DAk4%O1MzEw&_^iP-szc{0*jIOcu&TKe_kZS!pU8_ilZ z{0Cx*zy-_Q_OGj`s9d6^4!QmM96H}%XlMx23mU^pOp%5_cumKug+NCzG&c`~6$d!= z`gL=$P&ko_Rd7!!(4GBS39f^0NXP{U&@uOJY;HD=Sl5NX`slBe*x7nmVoI0^F&+rH zegWl!i;D|_uvOg$VYCv>5ZjoTn>&ZDzWx2l=8!9h7ns8aU8&M&SQd(S2=F9hXwv17 zT>8&ZB22{Ap?A9oCZ9^Ieo;b2g>(s-m0Xv1@yX`qChvbBhNkjn4M94*#2 zJsMkkBgsqLFYSyDo8KCZR{Lyo`*E1N=>4J^{-Mb{}2uA!LF9WWIaX1*g6UtO63-pe`{oN@Ztd za}q`X@W*%$bATcK{_V*|ej zFark@mV`B6Veo-j#K2GqgFb+vRcvjq6B44G7p8vHn^iNo?8aaK#vDdVX6NRJ2)kf? zwgRqCSIHR`dcg1D(2{Ac=kE`?plO3QF5rg+=y$!K$6x2=?J}h)PI??M{@EicHj!n8 zor9IJ&iZ(vyYU|02!}*%LapGg&uHzPn*?3QM~948DRet3mE0K)JCj*G@n(%ZsP7y` z?y&z#I%%;#SfB8VVsE`Bm*cIGpmV$DG?pvMZv`*Kq$MVzL_vP>?BZ5`hxLPj-&N-J z!7vmen^s^C$bkm(I}0$Cd$6;59+u?4`E3}t%DFdzlzhdeb@PHt`Te89f8?_Gr`XNU zt9?+xyalPmO$=gkdxK z!Z;p`qy+-VAFcDG1u##}V}O8EqLStzFOP>(LkKUT6O_Wj!s|ObcOl^HE&RLgRQ%bq zXG@|?4(`?4{o1AgaUsm92M2~scJJ~>0vIi6hFJ6lxE&498X=#jRprR(aeC}DGdp`* zS(yNE0~)LY=@E^D#pt=@v>*35wzEU+b%jAMECf3FW%wm@UKHuGOEo{rZR`E{9VCe7 zlMQFxc7~p!8NR$ci;rvfIN3Nckyy$jSAy(-T3mZ6VP}<8H=5k#=`QT{C+(MRdkd6V z@_e(nbRvIvFRje%teK$uF5l%HEu4FI?vXE17`fEjC)B!9`dssobx#P)d#A~J_4&E4 zl}3Vb!bZ>hiYUWEc$-Pgw$lGgi;ZM0If38eGOQ`!A}jr5HB6TRLD)2tpyAazhEw75;UJX zpf1)N5C=%D??UvWN(4fglhe~@&YwS@o{^CPOa_SkSCH5)z$gdkQg@sW@96fz-4GHM z?jKaTckj%57bUe2ef4*hFDg9$-g^TRlWV~_ke{LKcwOYtRA;A7OXZ?+fOY-Nm#_6w z(}FFkVbh7@V_)8{zUG0dw^Ch8T=7OHWH^&79R?^~Ih{MdD$^Y7o%53Qdh%n2O*tlx z3!H{r0%XJGkIKzO1z-j$y^EF+q(gd;f3k~1v$C=p)PDf5snBHX%d|Y)S)E-=JmUqi z%I~GBpUq1=j$JGjV8ci<3meXv@0|aZ1z?kexxIvh z1d?X8ohRP%Z8Szb>0w)2_UKXux-EfDM?!v!L#y!Ctb6Cufs=!Sk1S&YZ~|zPDTO~F zNXG+;uq-1Hyd@1G)ct^r=G2rCB)Pvp z?>#s;U<-Q+NP;c7x!`Al<^hb?p+jizKYYN4kxpLV)t5*}(jEV8RhfZsj+T!}fp|EG z8;JF#aegV5ehgD8SlxKt;a6L~G}j5FI(;AGxxu44oSDm z#(~efTa&aQ^LuIR?!?4|7dlx0|5uG#6z2{X8DqmDnfU#i0QL#gHJpGjCXl%N;QR?; zKaqoB^zi`A!vZJj1df3M2wm_bEH65(+T=MY#n|2e7o zL7pwpX?IOGS~+dNu^qzzV%D)>_JH+n0}3S?W-%(#T208NtgAFu<>$WDls67`6DITs zd`iCT=3U8Oq6&ZFz3b;*l5Z}P7VV-sU@EY#jIJ6;;)80BfTCSqDi^1^jxGWfa3 zzcAT`w z8AI#O2vLTF^^n$Z4IkDuEW@umgwFHpBEs7n&1*N;?;UWP$HcR5>#?2lyiwk?jZ2@N zu^`Rx=j#Eq%5`{Vh5`8hXkIcmH#hvru6CLc z`ygD3$DX90QhcP$Dly3#lvQ}+{;odWtD09`BgIbIJ_c*L zx%nInfSR8MD!}k6`qT%gsIVYmH0=xm8af(gg^dr|DLo4djJE2OAq3U;jhUD|B>qfi>U-NWFr&;uB*#>|XbWE{`8G z!sPTt(BbwD4`KKuU_75w++j1@GQRBC4px0IJRtyp{QCNOJ)C45KLI)n_NdP6`N9%n zmm(zTerLm?xqv0l{2(Ux#Pv_zp3wHwqojS2=BAKFj#8S+X+ z;E-pa!|=wSuRR9q=0j@gD_|}`A=DyoVdw-jA#mUfVN3x;02mV0Lan(S`$aoQ(m!j9 zV*OB35(R3n003G6ctA#o1EiCifNW`5T5?taJo;2rWC(`Dkt3L_WyUQRLyCGWT1UYG zE*5t`D1=H0$^xYBjbSuUfhp1~M7c-QJlqV= z2-&O`EN)ugsy{n_ib^H%(0!pUv^h5QlWSgAM zdf@!JrttXe4qX4EodHj`L~2=)_l_^dzPwnG@H=e`WDk01;&4s-w1#G zPFFx!tOC7p_jT6zqvOYOr=@jD#*E(KWm1~Lt;9LNHo-I6gVC>u@Nh361u(XQJ_^Kn zZ#_lHa=C$taGLtR};JE*d01-Ss@h2FnnhAi=*}(Hpo_nfIMZ z_r&9z+GCbiG$7flS5n_W)+Gzb46MxwE>ewh{Nl;q6+DXGj8Ss1YqNcR&~8>uyDt7C z_=mw`1Me4S<|elidsqtCWS+<|y}^6KGj1)8b$~e-H#qgv!+MG83cYv9HF@+>otQ)j z+09LWrwES(YRFa33x^?;uV1AShrj*!fz@KOzP;@u#qbjTfE^FokFBk3=clL2&&F%1 zAsg`OpZLRb=p`CWiHV69V5|Uk_Qo>Ijo`jh$h03RF9OR4joyRC1JUqinB;j0;Nb72 zu{d)222Ws#h>T3*7gyZOHiNwy2?v2*h-$iFi#b_I-7jc@FN9#+T5L-3>mzvZ-JE`j zp}QiH_#N{)up2|2QNiG#D}KLjI;NEuYh_i!f)IQjTj|QCFTp~O!=$Tlf4vYnOK{%c z$z$LASNU$#%tevyMTC;F+Nop#--ugb90!Dh3Bgc(&C}n$%aq+cswdPxTU&9dS|(u! z0)%2)hUo_e=&bN04oFFfLG;ZZ2C`mGmou#{c4q;P1UKjb2v(qoA`Y5cSeO`fqvfG$ zY)xQ(qMcO~cJqYbMQ{*M)H7Vi#`#VJK}Swbt$ie4fj`7B(?);4Xzd`D$7arXJ8VwQ(Joh0-8|^jcZ3jbfmCGdv*yA1)9uhubV9MuUZh zkEVP0!s5!zMkJt4qT39-WDLZ%f-2eL!0gl9-yVT*(2WJ|*wW5!F%Q%FJ~V^hO1>PvYnj3@ib~l7Z$5bAJUkR=@z#HY~U1 z+Nlw5Utc4bR)+_@pkwSsFkps*h55JGSlWFsJ4NaVB#yiQ$9w_e4jskfI`{CLVdk#F zp3vUpHm!cky$$X!cOeu^A3-@^M*p^9d04WPM!r z2vW%%UjwuoT6Xa1v{(JG*57QPOz02_%c;sTI!W2b3Fj+tm&7q+r-Jd;;qchl?2X*B z^fMbEnfO90<9l)O6aVT*y&6hlCI!>TofB3|F#_*Pe;CuA3ggl%rl+Ud+v6l+{yYPV zl)AD;35VVr8Yi{xBBOVSNTrc1e4TGkBnf|oJIcs0qd&zlbBg+JzO@@xU6T|WyQge_ z=kLLUb39krBNqy;5TZvBtytI*{vRCWfBIhTLT;`>iUHC_w;2N2f`o-h61DI+2@Pny z0&18X?OD*%rC-f&jBE$V6O8QC++2C%3dl0R6k&aDZ%J#}V3ZbByYQ$UeOXXy8^cO% z#g$;*>XkpXGJbzgzdK*}Xb0RLCLJA}iPhErMctb~<@mP!!dHZhnIaVp2o))nqzRc) zib|8_Ni!-+qbZ^RY1V+!T%tj9nk7=2lS-Ng&GWE-r~iNN_xtvG_x|>~*0f_jO(8c^=1aI^u`hVF3hv4HzqAq-Jk(l|bz$r7^_(*PRQlz0PtVYzx>HnAY6E_Ex*|l3&$|1Y=Q@;AxRBum ziPouGOBCt7}bRsT|q zxNgT_SMO{uLH;greesG-Zs2AH26mVNaVCKJAdMHGJ)bg^4oivNPe{lWS0z;3as8%E zuTy0qLt_!YJXx9#Z+YG|7Bsrg%Wx}of0sVRW=Kj+R_7?z$jb*#pE*N^9UYL{V>lCE zh&wX<6aTP|@JYcZLp#{9#h3PQ|!;@VTN`#V!f%V+Dw5lagcP zdH3xZ;tn1tYOH5s5x&gx;h|XCM6zmTrsd#r>fth7VSnM)tF=1fH0FCFMOS22-AKvE z#g+ms@NF%G=SVlj#>BwZydEn|8}>YZ5gV?Yg&9+lbdZt31j!*SbvgSM15|%^VE~0N zX&A9}J9&84VAr)>nC=Q1I|`+r+0U$PaJ|_AB_qOm>puxEl5+v95o+cB{bdj;fUI!` z;^EUSY(K#Ru>nOv$$b~D-dtG-zaj9ei8j|LR##HGk0cxzVLxIggwhdJR{`|(6b_5)ZXBfQIv0WQKR#t8x##~fD zQ{kh)vXNME93?V#>Zd_Lj{!KhW1(<)f4#qY>n|L5VDR%-^JcjKu{peN6wrenE|{=Y z=Ne)jfF$S@YEVG^C#9rlwJcBzb~k4p&Yi1PkTc$%mXQirG{Gi|l$@}F;n9KmVkw|B zN)qu^-cArzy5qf}k!eS`0%{O7y`A{vXGU#e!r$-rQTE%}Td~*uDiaOwIo>t>;_Dsv z&+0CGntoDO`jJsVRjzravn;l>AU(^9av9UDQC_s>yE%9nzPqPdzGrsfjsNod1JsC$ zii^7^#c?4fC?Ei}nk)7mZJ;Sg6}u0W3qHEmDTU*)U!Jg^peS@AW`N(GzmZceVi{>WZv~PnfQkb zRRbKMP?$^i?UC{S7OsJ<1nUbJF+1Gd72>lz&Y25f)y~MuDrFQUB;c9s`~90XY_OpM zYjuIkl-!cSLs0w@*c1dgLYIcoL`MbFlVc&<5$b9AS-9i2+_EK9Sxi~ufW1_o zrAA~#gbqZF#H)l(nb={v`}*|o^vLhs>|mFE*%O8N3o-jkrcHktQ&MOEza9cHhG5Lv zSHjDd(Bw>aGLv`}5*nf)Cw3q5$d_2w{{#)Fd3TAZi~I!B8U}SBf$Em8Wx59`;_G+s zHlmQqy!q#ni6s^lqqu`GnizsD6E{D;vY%-u+54;Q%~~{hqxMP`-(53RKc#Kvl@ukf zsQtZ07Ej+azt%3t+uZk+TkD$Xv&(O_*-l)WdogSkG-hdP_So-M&OP$KuI)kMhZ-)S zye0Vp@b3`g>-0#+6c!P?-{)aSGM7-CvVr%|m*gSD3w~GOn}aNf*oaRVxcSp=#nR<# zB%L5bG^=+3|CY>Ei=JWw3a>mAWi${T|Le>pP8Dr!?I4e|oO0qfx3KVpG>wFCUA3`M zYUsooAI2_3u8udSY(5?Vb;0xGmI@T{2~H}blR;ERGiUG>lRjv1=IR=+TvSzcBTL(| zB}X<@R!lTS_E-PjabA{x>W9DQF(f`Dn=N>84d>rl!fwpkw#pbT@R42vE4sD!q7)TV zFGwx&tls(9bKPxnbcHvIZK<&KyivR0pligS&HAm9oqYLTa^||+s)j9^H|(}iL-t?) z%r*4{2j73XY)Svpsrr@V#djEaovd0}y*uQ2-rsj%ecr2Rz=r(n`l@tPs^kx-n05!_ z|H$w8Prf8pb(ZMCggs41D#!oWE_J~Y7WOPaJf+fs*gitd8yg$X%^-{8cDpc-T5^=l zT@LbUc5B48Xa(r&>AfD?!;fyLdC-w-^D2A;9UdWz$(+BxdWVe{EO@s-29pzDQ5E8G zYDifeaWyL`!n@{z2~LTT6B8370zBkEUQjoLfEit)D|7~UK2XZu1@;@k58wtJ6qIha z!R_5U&VI^+={|gX_Z~cWjVOYv*RPXop=l9-NeCk&u?1j?K!d-v>AMth14k{rXZt~& z{Ck%?ysvP2e^S&mPh13noBUw_t3wC-nfaDjxOG8qHpR~ulSn>vKmw|NT3f?5pEm8` zKY*<{_JwSzQfU8Bq1uK+{%;hECzP#x~ZRv`>`<8rGI{Mr6~*jjdf>CC(`6 zpQl=})O9-MKpOJx`}YF-KiQF~n!?jSw}5TehMNIK16IJcp6)8R z8CzRhU^q*`J(pmU3(+32;6UjTc{U%FK6 zd#wKOr?CyI{&UfR% z!IQYUm~nCC>eULW=U>Vv8|MNHeE=s0R8&E8Y*F#?MS!K+T3hq>u+L8ZSt0MY>u@JH zwy?pIoK$zi`#nT{fYVO=8Y!ZnouDXy7H~k4Xa?vaDZQl{wibuXg#LU+gHfdVXRyTV};I`xZN`hgNu&4xw3lcm)k(3Pa`7wnbnK$VH4b1V{ z#-QwDKYElIMtG(4?6&4jvI8c}O%QKDh{^sjw9L%R4~uj~N6QbHG?`jVdwOn- z%9NhQlHrbzm0-2$QQ+C42guA}8vON6(B(w(!=0E_6*qhzTN+Y|C>La*dU!EG^1OtC zgjoFto+fMp^n|B?suRyRML{;BWHJjP7n>f@QX{vjCT@7+@iRuFDwlf{OPZRPskbCF z4BIjeQS+at0g~epxuC8do1D|8r1U=uiqx8UpvhZ+)D=T6oTOW{3RT7y*d#te3Yr9O zlX%Y$tVW`?>F(~nG4z2m5eCPl2C2=t2^OG-_xO_!tUGjH;O(Iy!k;4mGqc{p6GXIZ=H3=Ut#OP7wn zl-I^$l;(A&aluljhWL`hHO%!smzNX6Y3S9Mk)o|yc|U(@_VCf*Oi~o9J!^zy1P4dQ zYkjr*StOiTkU?=FXc840iozQGdF0ILA)*MXDOY%N zc(ig@NO(0GHY6U^TuPH`^n@oF$0Fzk@Fky|kz~;}IJhosFlZ~-DNh7k5W%`XLa3Z~ zU#@vy8dwG?0g7&SZDKh{VHO`}SSvwOp8+)^^{QyrkQhOI{%ug&T^sp*Ho~Z=Hc^Ydn9;FAdIetezvG3E<#_NN(_1Uh6Of>j(vItB zy8sjK6T75iY8pFs(JgfZvJj$cbII6RN%jbjVL^-Blwo)+Vm~S0Ou6BS)lX4)%1{TO z_jvgDv1#oGHCPGg`S|$A8z-_AEOos0zYqpt+112SX9mEJ-a-7d-kP&#&q|+-!o7yA zM+Z@G*r}g}qKLQKj525sd$5LsgD8;%Uirp`+*V{}dN~(lp)iJz?@mgJAT+SVFAHJX z?c5?HULAKp!`@vR&y1kg6ko0ETY_ZiL$-)uuk!{YqnI!7&y0Y+_gNlImgZS7N}E;k z9toTQ*LqldZs^3q$v|*p?yM3y4ecgwD8t*a)fS<_1fH`NMFxq~!~GV3rlX}di6#&C zvl4oJ0hugZLJe1%qFA)vI@7cT zEkA4`6{*sWp78e}(Dwo3{K!}UyT&j$e{HCfqN1X@yT9$Q`&TT4OMg^kGpTGv^LIQB zM+)kCXz%y(@Du{HrYNI|kRt5vQ~Y4ZNN_T25zBxU;f#WSa>@1d7rY9WFT2Afw-u^y z0#m1?oWxd`o4pXz3zHiSh328P?vp-0<%0SF3mq?p3T_1|6X=`S5o+7k)<%+gz}3IS z-j>shC6D5>0I^z7zrx#qLn^k4u`f{=g3gVwR7sNKzOC&xIm0BIm0GZ?E~PHTsnB?~ zx3;y>P$a(>s~VD;HMb>QK(w)Oa=KcoD>Sd(dY~0fiVx05fY7ege+a_ zmdd}Sx4zhxvqmVI#R%F9sEKl6b(#WI;P;si0~81@gSAZ3i0~h>{mTRit)=Aufmul8 z&|WUCM(T7I|r5=q@8&%2|l9HhIB2b%AvaC zl7d13xQ_<(*^E>wHjEtijEwR5L4-a>+EokI;$FW+pxj#mRy0=xtKtnw2q}eXX5UKr zV2*uc3v>|4UomfDpg!q!ijH^5ix|DGv)`vK8xN+p_x6?{T0Wj>%^ALguNbFag-K|?oC=h|U30YYzXw10U z|E)`rn!7q$@lj)=nv*)FMl?<-RT}I-;gz5ehk_HrK8s6>$d`Y*0bBW0hufw-BVH^Z z%vzc*qBDU3s_u>X#ws-w_sf?D_mzBl?UW$eJG|*tnVyY(c53PtlD7-}@~W^wRXGa9 zKdt;^zy7gfc<_%L2}tZ}ZKYu7$&pc0W6F)s$Ov3aJF{yEzGaX6%_g=7 zCngB2qexmdJ}XRm>)fRBB?8~V6-8o#690e}LFAw=vbt?y@q~8nE_##UCJcNy2tyZ9 zMo0(qE?KUNWT>rQBh=lY-4B&x+G$tQVVJkv4f%=(xq#tpVI(=FX4XktrO2XCP z&qW=k$Wj0~(5x4S9lI;A!}-g$+ym{VEV&1Ug~EFru2`tY{HhyQ z;gE96I2YzsHDH69dZPSL#Za0J%|RrqUeeV3${3rutoPTieCi-tFCo|q42_LHQE&0- zp#k##q#p;6YYp}O?OSae+KAD9DEmVA=^tJ;HWwOgloDphwVaE$j{18#EvA`(cW zjji0_==imTp#pk{9g={99HPw7ZevV_K|ge(dc0XfOPIxOS$m6&54?$t9Cd8Twnv(Q z3Q{PS=HYlyLDLDL+aDFw5=-;Yw=|@+IDJN0RDlwVk=nw-Ql6F=W6|zp6L4BXFBm<_ z(mYL=^@M~sig@9$Nm`uil9(I8mQi2mwnw7qfEI(b_XolOb*4#s-DY0w zR6E21J+>WkH83)I9~j7V1Dmq1w|4=fp4opc8;MYv9qTCoSdFr6n>`Bk0H7@DS+;!K zyu3y*HtNG$+YjZMbVpwa@BpFC-@gm>`2))8k1CjDj71vf8aL55_8u0$k-Xj114iA) z2KxGMu~pnaPN1QlUID>MW+ovZ0h%IG^5ca#4ljRLG|tJ&c6`pApJ+lqVJuP-HLxY= zfS&b@8-@Th<6>eSVTO*PG3#NA#3Su>1`c05()eV%PMCHkq?c@DUyFls5A`N7u>x~@ z{DB-j_VhHoo_;ynOjC155X7|JXLiZ#-OP`NX97l%;ZMk^XJBARLhRn#$dFr)u>TvH zn}6A|U#-xR7#l~&#|=21J`|hne{Y7!lz1|DiAO>r6jetOHf_G!l6mN^R3Rgq1;`jw zUHQB;A~Nzl^y)(u?#oxKICTH`M})u@K)YES7Z+ELKDQp{df=|$nBJIPWk0*{@b?FL z%1cYNSxS;%=x~~aDV4G0S{wodfUP`UdH?vt{A9~}^yQr9J%QFFZ(wc&n@NEDUL@q- zXfIxiM>4W{0s|tdIfF9_SGz2JtdWPtdTE&AB;XXh^uwC!>Y=3K!or~@@YMk-Je_H9 zrQp0@EU18jJs$ejXjUYk-arw?Ie+s_z4d@xv(xuf*5n$axSpif11jG+IXLd%u^Rb| zV#*9G^4z-ve23G#P`CvsMVwI@MOA_k{;+J!Q43cz5b}8o#zD2 z5_h-P3FUMaH$8bXddx3X;ERT-*X|MhzRUD&0^V=bw|g|y*OS;Erq3!WDnzU%omR;- zGBkAMdZyveEIaAXfCZ#K6B-^?AD>#moDN-ca}UJ1UU84VwjCbdh^F@OJ~*73!YyQE z+^dv#MZZe;cg^W)K*NFcn3xoNS_ABVd=N zvo9C68QY92iK(M3t}xtg3Y4`7PtKH4GlV8c8l{WiU)y!A&OhjT3Et{Klvl)cEipf~ z2?*l)_3OXIF$z{jI2CmDkB^Td0X1r3%5-ol#UpX|u#o%d=IL)gQkhH#lcdg^@UpHt zd&USWme#ZVYDXD^kA$^LMwcgqP!|Ar+~o{m=f(*-N?057KD!lBs(pb_-k>c)*hfuxjF z2@OwXbH(jP13gn*AsptE3vtI||0}&KWNFDYXvU>5!scSS>v$mZ`vZ<>t=3^P%(u*) zcm2m|;QvRVj#2%)1SP(2sS9>86s*b}!*$Ob-xxdW_ecwQGx{>cYDKpb&xWdcy>X5W z?7?S&(UTLENU@RAOZDblmSAV6p@2o+X)p0Qalr4y-p%=CWzs$O524Rp__*i`!r&w# z6^KI%4JP=CUuZ5Zu4Rok8GQ*{hVcZ&jMy64e546~i^B=BZVJRqX+;IWWk95;`-oaL zyjzA%3rvnms@XPx*oz!5V(O2cFpD3MYjXN_vR&_VQ&O$`e9dJD%dfIL01^RaGR3$& zV~k7-!Gx`~1gk{)=rE$vQ@M(L-3g3)8q0h0s%7xiF1sxmHauneRs6d^j&E_3@D3&H zgk9&Gl9KUroX$V)J-G#SM3pBzEYP?|3t0GbBGTj*2Ih0pI!~c?ApT+SHIve^Z*A`CRb6)Y^$ibBQb8r|K(j z#0e71Cjm%^odB>Ovita)=B9)^RO`eM>w0yp`vUk;M49Y}_e@G32YcX#o&%E@^l+n? zymEc}581Sv8fUGIKFX?g^k$=H1fDA0KR>fY(oTo)u$a!hZC>2P$(hl%>*%=B8(bZpxT+aHEb%ghml6o!Y`TM{bD9KZ&mIL&43kwTd z=lN*;@lx-Hn!7lD^Z5n`leBT@*eOJqg3pEm>e%TAC+XOKuaruw`%B!M$$Z_^_rE4( z{u7?&|D7)--;v?OqB4-G!2{*Gt)cUoh0yzX#QdlO1t|f}Mc;fue5RGM}~A_}`ZDt03M9 z_d)qGpPqoOPrdyF%6nl_GYvmz(?cggV?|KjA8gU7@9g z6CjzzHZC!=iIC^iDS?y(z=? zjrw>MN@3tNahKCC8fOLtF~fXM(#&A_F@ubT2cCG8Aa6mOy~BBnt{cgV`iOwkK}L}bm(M#;C+~3LaThhh|LXhv zc_Gf3dble~A#`WOkP2%#tH%~U=#e}vjA{u!YAJwifuRu+5e zrQBgsv6z|xjp4!k!I^Kqqeq zQ}OpBO5Eay=HJU6$ZV+>`1L_;xrUY3?&D0a!o8me zRUiESe-Zb$eL@y}Ke`Z+x;kI$UjAb6h@&9i?x?D(kCtc^OsMfYnYWu-{C(=Ijn94m zkusseAtwZ_-kGDH{%hi4!%01~Zj0)BH@^bl3Jd_N3@XM4P+I3UfBF<%Gz_F6|9@Rx z?Q7OGQ~94ND;#C<7bSp%fR(tg4aJpg-9MGpF?C0!K>N4>I9}kVCv-FVXC%t62HV2r zV=SzdQH%zJ#JdBX2?O--KNnRwQXFlI@o4iu!!+ z$q<>~zE76NckG029^fb@nBB%eP*qMqmmtJZL>2<_;Jfxqim+iUB`GtzccJVi`Wm=U z9e&w?oY+$GKMJcy04BK2tzd-s|Dd#zpOmrA{@<5YjAUmI9_y_kTW+DcWi}~_C;+rl zFu7A~yLT^xyZ6E60}tf)64I7z{WG{Tb9Wc_lQA5i!Sv9KLqv>u21Rh8{`h6vmsSxd zNTkN@eArPjwUr{YC*pjTv}63!$EIMMA|dfI_yTUkvVF6i z6Eq4nX3{#>ZqDKrL+Z-N0Tq-CTT?BXW323de>x5pVPNlnN%6Z3AYdVo=?6&qf_>|4 zgQFG81E}@jnIs4fxtcKQue&Yz?UgN!HXaJ%UkAZOC@o+Ki|fxJ4FP*NyqLFf6$>z^ zt;ge!FXmMh;V>bk93UM%;9Mr{e`H9tZ9aP}sJO&4RWJS}(2aIv+uZwyR0SgCi5@Nu z1?L1AeuUDB9Ct7^T(NQg5-$Py0p#06t_d3u_t8*foGj6KVA$e1U@_^r{fv_h^H({K7 zR4c4Qb0PsU%PHbwhNKri2*i%OzZaM@@SjOZN6feWXTsKEeoWp$uYs(f{&McEeLKe~-m@Ru3Rg(m6z`Y4KmA+k z#W}~Q>K(7%H{Hb5=3K=Dvv1UV0*$)mOPjy4s4O6`ga~8}R648vN`(ohgSroZ zyxI3@_Qg1@1+I^btcT1RL%p({x3rh8I_%V>WlTRjG9nP}(6;R9(;d1KU3z_$$A2>@ zzYcPvdE@am|0r+MNJnUJ=smx=@@t*9wyk1S+$b$b|@%wsymZq zDlU?bCN&V}tw<(0L2rRqW><(cB7Z7w&rHe8$?@SQ@j< zbwaSHvFH5TZna6R;WzWsQ*(Yxo?oh#tUpPA=#*+(vvNkPxtxYw*dW(v>f+e1uKud{ zRdc4sT<>m}$ET0!14&z&2PfS0JMcpe z0hmSw+&$L;c{Ql(ofoF}|Kv3j;orG9Gv zXnAbo(V&Z8anldQhDrH`>}*fV9zD4wXp>ct)=$Sy@z3Rc?;F*M6ZA#(vs*ICon}VG zbDMAe6cp+X-gP4}ST{*=X*+G?-lvQ) zE{`QH6wbJ68oY~9!@IlNB5SxZ@=x^kl9VQfxTf&c{fz^UI1L6jm#U_n-CF;rPMXkp z^9S!czIgIENBnYLRzYG?OmBwxtz4Uc0SV0*{Qn)+$sHYH!~K3H{Qy7okh zqX~D*Z2af`3TA`3k)j~_fO+Pv(;Ygi6W?p>S+q!uZ#NfZ%^6MLYq6`VuffMWu34}! zYOuwgkLzS)4&!&HuigAR%=w}=e&Fzs)eQK0eNZVWkg53DdoGp1>=>bK-l?gRq1=Wy zSN$%>J;IP_A%)08!AtL587cj#xxxiO?XN%ql5~F1UAnruQ|8bqbS1KEVPN<>4H*Wm za=&X=uTs=QDVsEZsAgy==>C+NBITzhEelZ?JIwx-m(FkpkIz4r;$RW6rURhUApr>X z?(JjEmYJZsphxcr-M8B-#9j2rpx?gM+2?e=8fy=}a#k)3jmxy*Ni?jVFLBHgDu2c+ zaZUcPu=-7!5}FV(cRqutlipohPH4V$O^?1^hPZu$DeeLGOZSEI6{A)#A3Bl6s_!-B zJt?m~dz1OQ=G!|e;q(+8lgaHsHP`Q-%I2e(OR^W6zYbbh)Q7(?Ps^~mAF(Q8+)~_f zrK8w7b?5zx4NjMiF`U=rF6b-RpLZ?qxz3h)r#QN}%I3TZ`ptPb4~1p2?^QVO%j-P2 z(pfNB#~ru6ExA(YX>JqkF#76h{>#}Kx8IeiSqs)aP?pn6nHNlRuu2iqR2tV! zOL$L3XiqRQOUWkH2`7BLx^DfeFFPIW#c(K)G6YA04xn|+OQ0w+cMj3N`JX?p27W}O zKag%6gydij#(c_!aE>qyQUo+dBIovVzC0gcUKv6e-B-N`!2=1jBCH>hdGpD9QdQNJ z5TFtH{=fDJ@EUI+JtMPz00xi%DX8%HZuF~AB$I0h7S&%7ewz8n?`qO{bH@JY)g0Q_ z*An%r4 zkxj0Os*svxSVdbw-N5jliuXe%E+@Sw(&p9Z_VgVXx_P*xtEZiI-}&8s?0E&xc_%wZ zefF0zg`-?bQfBxj2^lB9&;T3e1olnKDlM(kQ1sE{Ej(7uz;Hl~yuMW7+gF*?j z9$)~!Pqp5qCp9ae>5p*9LgRw@?yXH&ryudJ*D!|cU)kLT!~`X#I78h+rX0c4P>*4T zI06W4P(vj*W6qk`>i=^H60wtF-;_CTgn?h1OhyBE{{ z$Tgo()^nVS`Ve!txNZ&eWQX4TPtl0+M@+6$nyK zWDH}UAj_i!E334jKk3oY%dS7_?L6f-)7W`lY1@j=8L`%pixt~7JjRtg2X^OL*nUc6 z=882Lp1!>#Yj{{z-{CtwOJs(eY{$t{Gf$M}9aVcZ16~;~U7Ku^6*J*2(l}E!{-RP~ zhq)%R;q5xteS2(J&f@%zH*x81^^>>uiFq~r z_q&>ty#Q@?J8>*w%qco>7?aWXkr}Qzn6 z6M}x_+Tf2PB$v*e?_lxNb?~#=?t;^5J7Lm}Q%_rm4IIi4FdZetIW+)|3(DrD7C*Cy zr6@oDIJ|=wdj_V#BHiV4g}^lRyUf!GMa3A&i-yZwC+25k9>1h{koU23s=v#DC0FfH z*m7mAvc=HsS+9clwp{NGR7-3Sn~ z60-jqurvMzUGfdSdu)mcyH34OnESp{@bl0W6Bo}N#Z&ryJ2!7uYBjdlc4;oqwer{{ ze(rNRd-$(SUVwOIrPkp22QNchcEoe)p0qXQ`?Wi0jpnR>@2eejyfbDL zQTpt8Ti4EjsatX)z8*K9*{`2-c(F-{#fdAGf$}W=&8~3qk>2O5YZISqf3*iqYFr(X zPAISG=^e9?jhXo3+a7S{Ol&_QVZXmjRBt#O)1Mgkr?>3;4^7r=$Dr25g&>ZE%|>U- z-Y#D3Fcw>BeDYz2kJqn@cV32Ui3{wOR91h&ET_6KVR1@$WYM`XChFeXwyUoBIp(D^ zF(V>Mk#TV|Sw<$Qk>Y_(eXsp2HWat8~b1M(Kt4jF&=s#(mEMs_Tl`)lcjZ&eLQ+^bC)><{kiR3 zH~MXO(c+~JwZ>zh3GW28V;Y<8_}OR)vypVrtw9T8XAq;@;2>T5%cQy zR?!8f8OQ5e{eG>YsFS-HRNn1m2>Da=YPwLxOd{ZZ{NlAu%B7~o3cic)`ObeB4qGoK zo^khr){jkc#!n*I`(k_h6oX&A>m3b=jujhE>RGIdt(eQax-#AM+xRE`MVXp3*_h(m znhoSPUNL;_rE{+Rsk*%9rn-^m3&ou+^Eh_GPVJ;lmBQiX~7Y z^MOad^t!eJc-S4bD}~wZH9cGZ{!SK;h2XDGcb+DrIYHW-LKzAjAZ7$V!1z#ISV%lB zLJ<_LHl3)E>H7P({+jI~iaO#)j~)fr@~8p|%030LlFMhip6cqZ zbP@@{Y;?3P@I0_v@E$nu1{zxq4ik)Kq7?R^Gm;17SBX%tD(2)MrfJ+@cayip+CE~f4^^hx?ACeo;+-$2dq z*pB2GLZ$?%P!z=dfTKBUc@G^LwTy1TmhE;XJ4XZ5F&UHrT->Jn+p#yYBsu_dB}m+E z0D=n1xDM#EbcruqHdH(qT|7XvhX4$Xao+NGL{;&kYu`l)fN)ATS2Tn{qWYb|Ier0w zT@c`tAn@o9A5>&`_wSFuXzM5F+wiJYDBkuWh(e|XRt%(j`{4Z{$2#HC9E$Zy5MQ6F zs-8h&a|Kr%!3E*h|9&09xl()`VuUE?#Rb49k=Lio8kN1@*%lWUr~EvP%o~35i+e)e zS=%(hF?BK433|on*tVPu29zddY9kPHgJDMcnx~bTO4={f#)|J?&TuOG72T98^$3Q= z;V_z{v*4E^giHoI|G5fuCqKEVeFxq0pzyHemr)mbU%-K3}}qB2&9PuU;00&2JebP>hB?}Q>oU;mqiq_cFbQ2|V?bp2z z&NYQ+*3iy!OC%9DOH!sWgq(xYx3rW) zJ^d0!B?W+y|BM1zOb2htNmXN}rW%A;M~)udM3LDL)xCbM{?ZIgkMGH}bX`dA3hCX#a_`NV$Ksmed|KR>w^;GT7fb0Yb+qjCa zz{h?=Bj7{s@2x63sK`df$K%IaFc0Q)p(x4AqX~nKtF)inM;aqokQE9+*Oe9Oxz|gP?^b#E5cQfF6lN7U`*c{q~EP9CQ zin<`1CG#;x6+efaFJ5^bf$pmzbfTrD-TUPz_DlH=2^uyInNacUOFIw)L6rIdAL7HpC`e0| zP*5e308t8$#Dm;yCzlz=CP4I*3me_9Bd@`pO94+uk~W7XPc2gP@ZCDtx^;I@(EmW& zb02junfXIW;^siOq&T=0A|8?s3b0su_LvgfH!xW*r9|yUXn}(v5<6Qa06g6Xt1izf z6)DB83CQ)pcf@RVhTV_g`a@$qgybhKDB>DSO`TYs_U9x}{+BodFnnWUn#PB#G$2^b zpG?IR#>R>vV(Tu}DAJlAf@kFx3stX~6Ksm@ANMhWpoNiN|6#s}QrmD;hO&()S4_)e z`Q0I0^W2uAT+H+_?tZ=V<2OrUdF?`1#N@Q3nKvy5mx!)P7wN2IKyj~zpRyY&HcXX~ zhr0)llwNhz1v2x^9|-axYQ01uko3Z2JapPMF-nju|6?h8p1%}s{+H#W8M?IwAd%o$ zboD%6a5+&)DS?fSzbW_ya=$^Q$lz&H3o3(t-0~%r$=e&84{sL zj9|E2dk*J_Oq-_u-L)Wz(1*USrA5oQ$xbw;ONqs+tap;*d67bdGlR!zgZ5)S!xyv3 z0vUhVJt|oM2fzAbrmM2>^2aub-56Z0#7`=l04$6mBn<{kUm7hMQtf}dV3My(d5-FSg5s?Os zjt*o+_@!i)JPJPPcI>FFNb{FODioQyijdnjTo5TN_^VxCw=*&`=gQA&O2Nnj>X#4p z?ya6mtRs!zp)(t{gmnc`E;@L+$pH91_tz#)b^}UdGk+grVxHSQs`|!c)>gD^GRCun zYpsTa!LZ`Mzx&%w(S_#W-V+U7x4Hh@M12RZDY*=i9elikf=WI13qE`P*x!^Dj(p!+ zX0&3(3R3@J!7*Wxme=&-1HFb5>iQN)di#k*$@#5&^ zlPCF18?)>V;an(t@jzv(U6;(v^z^6r671@Q4)~xP9IsFSucD)4gV%uMO`}vi-*zO} zLrKDB7NYH%&Fj}oE?>U9Izi*8i2X!deK86}Z)|5h-QA>m8y{%$!%8YdWa_qGHGMD! zVRD8nR1f^hZ)2-?*Ir}au%QwM;-`Xw6ArR5?^9BIqU&%9X?4GN38eoS&Kzvjdp$w} z0?tx!K$+@hV1^uJjl&pcezmyW^Asb900m5{qn1C8G+EpbT^E8S;{hGCQbJ_bTuf?O zXP>$PK1nxL_A0$0+c??pC3+|7d(fi!dX|H{5sF=Mk z^#sWznf=Nh*tN6_Al-9nJ1e7it6|*x@XIR&t;jXHi3#GWvDS}ENnwQj?g=gyw&iG+7EA|$ z_*BNu&Tf~FbPuGJdvMK>V;3OZ!ELG~TlNbP;EprTF}I8qU9H1ly$$B+1s=Y?>*;T z@|tU$l(nz2d&d&F{;x-C*^EMS#nO|1LZR>{L-)YxUVvsnBmMe)oDgS#xj$*j4ZOD} z*h3%tHGl4r=@`3)ar=3ClCn)7|WFd9I)|)wi%Xk2q%m5cvTuw`XC-HXX1; zRLYw~^)yegH)oZV{jepS#0lgbefQlI!rotENPssg`Y6;$WcFCVU5{5IO2)VdjTqH& zYup54?5NS)S)`}9V;Ds2by0(!n)ZFBa!{v`M-J+C#2R>!;X$Z9BLM^PX=1X`lw1(k zzqMa8>Ypn>imrdR6Rmyosr`b_j1sFCZ=TItr| zUB&f_Yqs&zF2bQk6r_F{48^vh{3%z)?n}v74LeqBiw%Xkrd?}srtWjXay<(FI6m~Z z8zwz3lhc6M-}d)A?SHlXwXOQ}cm5(%@PCZ*fMN*y7?E~hiq}WvPVVj8hBS2AV|l2J zYCIP?X36wI_oPKK%L7wyh}9i&0c;RC5R=X0#|1DfYTc;$`@$-MOh}6fe3VW$X}^EsCidIBabcNn3fhRrcV(iQqk0-2?ko4 zJ8Z3(KtQ=5k@cE7qVTC!Xfa$-S7KbyxA3!@U_I5vbD}$kD(2XF+MGXAroT}blcpZu zp$*C$85sg9{lM!vL`5$<{KUT0-kZ#UJo9Bju<_>?hb8u6@aIm$Dcp7HB_ zd!?S0*R4MljNfIL?Elz+dQgWFDFivYV3?u~TKo{6Lt_gT`xx{ym3W+m zg@q}K#2MglgyMfEeh`f_88AX38sNs<`y=fU8=Xz<0D@npx?g)~TUvU_iBHo4{3N^w zhUGA)Db$~{0@FD++pBn^ae0+3J2wtg62+nti`E3_0U>Iup%!7~l z8s9iaDt*hkofe-cj;;pdG|W%58V@wcD;c`aD?DYv zel_x}y7oy@42f%`6 z%CJ;YMfv(~C({Il{dNhb7t|Bjcg&kJd=6-4ov8?w@N?U+eY-5q?nrE2hp&Xb^?Qxl zlwa?307ROBNC*=&t#yZ+DH_ErT6qkdBLlr4hwrU?y#npzMV!K@%*Y%FOo%{kOL%PT zIiNjco*^{#dpMqbdL8GEDFA^u=MlPjkMu{VAo#~)x5bLsb#!%fRKmdxSH*d9K%pEA zhu`vAE`BX}r>OOxLXk_%K02ZX)dN;!k`laAfI==nWD|||YK_z#J`L5-(%9U00tWLV zLv1I>EHnJ%1@vJ(=*ahwfX1d8OLd7x)-)}L1?5Jq>gmX@yY~53mu3DQ+t`~Fy<(Z! zy0BxpYhF2Cn|=83%Ix@nfLYx^@(*ig4Az@xWSlk3y?G<|#Dk6NJ~@VHy^!Pnnh