From f092614130f134e4817f3ba3e70b4293854c5cd3 Mon Sep 17 00:00:00 2001 From: td <thomasdesgreys@gmail.com> Date: Mon, 10 Feb 2025 17:51:53 +0100 Subject: [PATCH] partie REINFORCE algorithm --- .idea/misc.xml | 2 +- .idea/mso_3_4-td1.iml | 6 +- README.md | 242 ++------------------------------- cartpole_loss.png | Bin 0 -> 55569 bytes cartpole_score.png | Bin 0 -> 50935 bytes evaluate_reinforce_cartpole.py | 59 ++++++++ reinforce_cartpole.py | 125 +++++++++++++++++ reinforce_cartpole_best.pth | Bin 0 -> 5800 bytes sujet.md | 227 +++++++++++++++++++++++++++++++ 9 files changed, 431 insertions(+), 230 deletions(-) create mode 100644 cartpole_loss.png create mode 100644 cartpole_score.png create mode 100644 evaluate_reinforce_cartpole.py create mode 100644 reinforce_cartpole.py create mode 100644 reinforce_cartpole_best.pth create mode 100644 sujet.md diff --git a/.idea/misc.xml b/.idea/misc.xml index e557d17..896e2f9 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ <component name="Black"> <option name="sdkName" value="Python 3.8" /> </component> - <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" /> + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (mso_3_4-td1)" project-jdk-type="Python SDK" /> </project> \ No newline at end of file diff --git a/.idea/mso_3_4-td1.iml b/.idea/mso_3_4-td1.iml index 9b31378..94860ff 100644 --- a/.idea/mso_3_4-td1.iml +++ b/.idea/mso_3_4-td1.iml @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <module type="PYTHON_MODULE" version="4"> <component name="NewModuleRootManager"> - <content url="file://$MODULE_DIR$" /> - <orderEntry type="jdk" jdkName="Python 3.8" jdkType="Python SDK" /> + <content url="file://$MODULE_DIR$"> + <excludeFolder url="file://$MODULE_DIR$/.venv" /> + </content> + <orderEntry type="jdk" jdkName="Python 3.12 (mso_3_4-td1)" jdkType="Python SDK" /> <orderEntry type="sourceFolder" forTests="false" /> </component> </module> \ No newline at end of file diff --git a/README.md b/README.md index 88a21a5..b47be3e 100644 --- a/README.md +++ b/README.md @@ -1,227 +1,15 @@ -# TD 1 : Hands-On Reinforcement Learning - -MSO 3.4 Apprentissage Automatique - -# - -In this hands-on project, we will first implement a simple RL algorithm and apply it to solve the CartPole-v1 environment. Once we become familiar with the basic workflow, we will learn to use various tools for machine learning model training, monitoring, and sharing, by applying these tools to train a robotic arm. - -## To be handed in - -This work must be done individually. The expected output is a repository named `hands-on-rl` on https://gitlab.ec-lyon.fr. - -We assume that `git` is installed, and that you are familiar with the basic `git` commands. (Optionnaly, you can use GitHub Desktop.) -We also assume that you have access to the [ECL GitLab](https://gitlab.ec-lyon.fr/). If necessary, please consult [this tutorial](https://gitlab.ec-lyon.fr/edelland/inf_tc2/-/blob/main/Tutoriel_gitlab/tutoriel_gitlab.md). - -Your repository must contain a `README.md` file that explains **briefly** the successive steps of the project. It must be private, so you need to add your teacher as "developer" member. - -Throughout the subject, you will find a 🛠 symbol indicating that a specific production is expected. - -The last commit is due before 11:59 pm on March 17, 2025. Subsequent commits will not be considered. - -> ⚠️ **Warning** -> Ensure that you only commit the files that are requested. For example, your directory should not contain the generated `.zip` files, nor the `runs` folder... At the end, your repository must contain one `README.md`, three python scripts, and optionally image files for the plots. - -## Before you start - -Make sure you know the basics of Reinforcement Learning. In case of need, you can refer to the [introduction of the Hugging Face RL course](https://huggingface.co/blog/deep-rl-intro). - -## Introduction to Gym - -[Gym](https://gymnasium.farama.org/) is a framework for developing and evaluating reinforcement learning environments. It offers various environments, including classic control and toy text scenarios, to test RL algorithms. - -### Installation - -We recommend to use Python virtual environnements to install the required modules : https://docs.python.org/3/library/venv.html - -First, install Pytorch : https://pytorch.org/get-started/locally. - -Then install the following modules : - - -```sh -pip install gym==0.26.2 -``` - -Install also pyglet for the rendering. - -```sh -pip install pyglet==2.0.10 -``` - -```sh -pip install numpy==1.26.4 -``` - -If needed - -```sh -pip install pygame==2.5.2 -``` - -```sh -pip install PyQt5 -``` - -```sh -pip install opencv-python -``` - -### Usage - -Here is an example of how to use Gym to solve the `CartPole-v1` environment [Documentation](https://gymnasium.farama.org/environments/classic_control/cart_pole/): - -```python -import gym - -# Create the environment -env = gym.make("CartPole-v1", render_mode="human") - -# Reset the environment and get the initial observation -observation = env.reset() - -for _ in range(100): - # Select a random action from the action space - action = env.action_space.sample() - # Apply the action to the environment - # Returns next observation, reward, done signal (indicating - # if the episode has ended), and an additional info dictionary - observation, reward, terminated, truncated, info = env.step(action) - # Render the environment to visualize the agent's behavior - env.render() - if terminated: - # Terminated before max step - break - -env.close() -``` - -## REINFORCE - -The REINFORCE algorithm (also known as Vanilla Policy Gradient) is a policy gradient method that optimizes the policy directly using gradient descent. The following is the pseudocode of the REINFORCE algorithm: - -```txt -Setup the CartPole environment -Setup the agent as a simple neural network with: - - One fully connected layer with 128 units and ReLU activation followed by a dropout layer - - One fully connected layer followed by softmax activation -Repeat 500 times: - Reset the environment - Reset the buffer - Repeat until the end of the episode: - Compute action probabilities - Sample the action based on the probabilities and store its probability in the buffer - Step the environment with the action - Compute and store in the buffer the return using gamma=0.99 - Normalize the return - Compute the policy loss as -sum(log(prob) * return) - Update the policy using an Adam optimizer and a learning rate of 5e-3 -Save the model weights -``` - -To learn more about REINFORCE, you can refer to [this unit](https://huggingface.co/learn/deep-rl-course/unit4/introduction). - -> 🛠 **To be handed in** -> Use PyTorch to implement REINFORCE and solve the CartPole environement. Share the code in `reinforce_cartpole.py`, and share a plot showing the total reward accross episodes in the `README.md`. Also, share a file `reinforce_cartpole.pth` containing the learned weights. For saving and loading PyTorch models, check [this tutorial](https://pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-model-for-inference) - -## Model Evaluation - -Now that you have trained your model, it is time to evaluate its performance. Run it with rendering for a few trials and see if the policy is capable of completing the task. - -> 🛠 **To be handed in** -> Implement a script which loads your saved model and use it to solve the cartpole enviroment. Run 100 evaluations and share the final success rate across all evaluations in the `README.md`. Share the code in `evaluate_reinforce_cartpole.py`. - - -## Familiarization with a complete RL pipeline: Application to training a robotic arm - -In this section, you will use the Stable-Baselines3 package to train a robotic arm using RL. You'll get familiar with several widely-used tools for training, monitoring and sharing machine learning models. - -### Get familiar with Stable-Baselines3 - -Stable-Baselines3 (SB3) is a high-level RL library that provides various algorithms and integrated tools to easily train and test reinforcement learning models. - -#### Installation - -```sh -pip install stable-baselines3 -pip install stable-baselines3[extra] -pip install moviepy -``` - -#### Usage - -Use the [Stable-Baselines3 documentation](https://stable-baselines3.readthedocs.io/en/master/) to implement the code to solve the CartPole environment with the Advantage Actor-Critic (A2C) algorithm. - - -> 🛠 **To be handed in** -> Store the code in `a2c_sb3_cartpole.py`. Unless otherwise stated, you'll work upon this file for the next sections. - -### Get familiar with Hugging Face Hub - -Hugging Face Hub is a platform for easy sharing and versioning of trained machine learning models. With Hugging Face Hub, you can quickly and easily share your models with others and make them usable through the API. For example, see the trained A2C agent for CartPole: https://huggingface.co/sb3/a2c-CartPole-v1. Hugging Face Hub provides an API to download and upload SB3 models. - -#### Installation of `huggingface_sb3` - -```sh -pip install huggingface-sb3==2.3.1 -``` - -#### Upload the model on the Hub - -Follow the [Hugging Face Hub documentation](https://huggingface.co/docs/hub/stable-baselines3) to upload the previously learned model to the Hub. - -> 🛠 **To be handed in** -> Link the trained model in the `README.md` file. - -> 📝 **Note** -> [RL-Zoo3](https://stable-baselines3.readthedocs.io/en/master/guide/rl_zoo.html) provides more advanced features to save hyperparameters, generate renderings and metrics. Feel free to try them. - -### Get familiar with Weights & Biases - -Weights & Biases (W&B) is a tool for machine learning experiment management. With W&B, you can track and compare your experiments, visualize your model training and performance. - -#### Installation - -You'll need to install both `wand` and `tensorboar`. - -```shell -pip install wandb tensorboard -``` - -Use the documentation of [Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/) and [Weights & Biases](https://docs.wandb.ai/guides/integrations/stable-baselines-3) to track the CartPole training. Make the run public. - -🛠 Share the link of the wandb run in the `README.md` file. - -> ⚠️ **Warning** -> Make sure to make the run public! - -### Full workflow with panda-gym - -[Panda-gym](https://github.com/qgallouedec/panda-gym) is a collection of environments for robotic simulation and control. It provides a range of challenges for training robotic agents in a simulated environment. In this section, you will get familiar with one of the environments provided by panda-gym, the `PandaReachJointsDense-v3`. The objective is to learn how to reach any point in 3D space by directly controlling the robot's articulations. - -#### Installation - -```shell -pip install panda-gym==3.0.7 -``` - -#### Train, track, and share - -Use the Stable-Baselines3 package to train A2C model on the `PandaReachJointsDense-v3` environment. 500k timesteps should be enough. Track the environment with Weights & Biases. Once the training is over, upload the trained model on the Hub. - -> 🛠 **To be handed in** -> Share all the code in `a2c_sb3_panda_reach.py`. Share the link of the wandb run and the trained model in the `README.md` file. - -## Contribute - -This tutorial may contain errors, inaccuracies, typos or areas for improvement. Feel free to contribute to its improvement by opening an issue. - -## Author - -Quentin Gallouédec - -Updates by Bruno Machado, Léo Schneider, Emmanuel Dellandréa - -## License - -MIT +# Hands-On Reinforcement Learning +Thomas DESGREYS +## REINFORCE algorithm +### Training +The model is trained and as save as "reinforce_cartpole_best.pth" and the evolutions of loss and score (aka reward) +through the episodes are shown below. + + +These graphics point out the instability of this training algorithm. +Although, with a bit of luck we end up with a model that reaches the max steps permitted by this gym environment +(500 steps) + + +### Evaluation +During evaluation, we get a 100% success rate. \ No newline at end of file diff --git a/cartpole_loss.png b/cartpole_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..7cad046e53e3dc437ced97578187a3be5b27a466 GIT binary patch literal 55569 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A#=yW}dhyN^28IR(PZ!6Kinup(*>}W* ze*N~J!(-wqC5?yxCNUO4(Lfi$z$s~rB0mHeSzQ@7GB7%2baJYSC<-V^I5miPWoS-e z@z7sl9^|2*qUhk{;i3Lc|NYF}Y1h`=e168VIPKhA>+gSU&sV*hTl?zFo0)&l-Kt*u zwZ2cli9@kvi`KvMW?<HYV{J?mK&&NG9T`116k7x?om#-4(jwr*k(nC6AOu!zq`|<c z*dpK*B`MMXl2KgC!{q>ynGnXtssNJl&~6?U##~zCGsECuZ1vl%c~4JGEfWU$EsKR! zA=B($&1c{3*W;>pzPr2owl63YRw{}#EV)_n>*eyh&HQ#5vpE%)WZfyhU;FO<|9{(a z)s|d!X7q^S{r|oG|MOeh^Ydp1f4u+ypSi{RKR-XeU6!`^*7?sp#^(y=|9z95TfCZa z-mCb(ufpFgmj9da;nuyH&u7b~?^<x{eRb5TyZImPe2|&^;m70t-EX(uKG!Q@cqp&S zSM|Ct_dfpu-<tgbLE4+%UR`okxk>YkTd!0q|4OM$wiA4^Ry&T%Ri7~nX4uB$XZciQ z`(Zxo9nyI_4&JT*|2Oa1nVDtN&oo@Od9!!zx8L)oWqp^PFL3zh;d#b(ljZ;aIDU6= zzg?EO>Y?(xQO=AWn-p%x`9|3)%~-ed*{lSEt>3=g&cE%v%54_oCuRAc9tH~{?S4F9 z-d^@L>ihoxf6wP-nO(B+m%l1^B3f$q`+d8u-)^~_Q@r`ZbNm06Aw3J^^X}}pXl5>b z^_{t$qL?bf$L6;a-Q_l(?L3&>b=}NcgTYhm$9_+am4ZqP$9tvI&9BZeIi%ska7{UL z-tzt|{wKP<y4!9j3B-MMn8L8eeAV6jNn8h}@vthKY?}7b*Ga0)f~nwe8*kqA*z(f- zzwf?(qxSt?_4}Q<+io8F`}ckQ`R%%~yROVFy%zaSc>WKU4R0Hm`3h{Sz67{G-Ec@F zr(qK_@4xM8Nd`GwKl-fS6~zDhH2rS7{h!3|C;jU#%`LxI`R;D{ecfBnf8YPV@As+j zeUFy;&wp3<p;?|Kd#c^nmHs==&9xSPD}HQO>FYc3|9@Rin8h7D<+yD5oah||iAT>H z^W6XVe*gb{zi;3FC+1T4*z(=(_xlctto+(y_xX(RyWRKyuDf0Nd@i$K@84V7a-+AL z&)t4kY)@Flzuj*(bzA><(0rGf-zH#7Kfld??e%*u)js5o=Xl5X{nPpSf5sWtA6PnB z98_+(F8%va6*D`Z&aLxG@7J0p-rH08?uf8I&o8Zae<wKe75dwLonqBo?A*@B+xPPF z^8VfLcD=qculk+jmy7cMKD6hZn`7zvyXoR$_ucdVeOZ3+^@hLSZtq@S_jUEVY0-I{ z+aA_#_`c}<@qO<ZGN<*~{mR(>xX+qxz5TlE>5(Ts%h=WI*!^NrchkR??EinB+n49> z{Tg<0U*d`E?&od$XOw;YI@@=)8Edx2$6v|uHEHK9pUZ5o`T1$l-<lu4R{JwNDlU82 zD*o)Z+AsIzesi0$xs^6tNZ(!Z@{!%=ndf)pZohj?w(iHnyjNFNzRLOc`q<0sh5M%$ z?5|i`b}MuFgPQ$+-{#*v(ka}W9mUx3ls%%q%dWln(dMSozLpTDpZWDpt2%hh&f9*E zF}S<>?cDNvC*Qa0`|&irzP>)({khVwf;}83OtY`;(64>zo%ed}c0M-!j?VYB@2d~m z85MAqHGJU>I8gU6IZG;jo5gyc(0&<9qZ`kJ8;bt)*L_*6@auzq{m<^(MW=P|n(zO4 z*5MA9K!ZRHC<L1sS7%>ecaWhsnVm;s!hQXo|KI=ri{J2m<??y2^7j8N`+hq9pOHk0 zR_(mR8;=z~70mz8^Y`EP{ru~AKXw*7PT;z{%$J+(L4M6+>37$n^GnO`mQMeD-2R^+ z&!$6n%kRs|uq$3&8@)YY|K{^{w_^(qvi_{CNig{TvA<r1Lo`PC_@mN$S*zFH;Z&a! zuton|{ewn!HYXWN^^5v;|9_rmKmN)tz45@|>fXowR<Bn4spc1uXj+-bvHG<Bej5S7 z9mm@3zARj1ny$paZ}nn9!iKgVJ729@-IQJbI{N;p_v{K<AF4W6?EHMry7@ZeUycRm zAKDez?agu8@ZLJEzC*b3o`7TZ`@Q8CrYoATzC66ceb4$An}0O6+Esr#ss8*sck+h^ z2M>O}SO5QS^L57c>@7Sk3*MH$(68wK_o3aM<?q8u-g=zxF4mcW5{GER>hSe^cFgj> zZydjqIz3h_hPjEWR&>6hBZ~sdx94`>cRp~xel<K^mgU!*ZMX9d{?@($O&}j44;5DY z{h%zk-u52zPnm4Sj@OS$TPu$JeN^0@{PE7Eb;T-cCx5#CuO(!n!Fnzp=E)6?thxSn zKbKhD+6gM54?fU+a9ZT|*H>4y@3%ERx!}ytyC=!&;1*ehwHpNAh}&_@X4=LiAScYj zC!l`oaf5#LoAUR2zdyUJz;N-}=JfM5(k$=gs^19yIn|$ZX^H2-jS?m%0?nE8mh)HF z{Qvj2`SF8`mmH2H8qBgT&-);e#QxiL?dz6^<^T__7Jjy~iHF-nw<a4LGcCQMF8A1W z;%}zO>i&GU9xq`(SXag+u}JvsuV1Uf)^f3kv9#{_uEe0o_N8BvgMCZ)cFt_iLY=tu z*P7SjuCCBb_`UCNbNh2%MQxq9Jr)9Mqt<xHw_Uh$y{Vv)BW7cg>%OzcukZV|)gk58 zUxl<nzq|P#q86U5Dre`FdXl^S$jkKtyMC-WH_vwWioch<^?B!=e!YIboQ)VG$N9I? z`Fkeb&p$K6(9wF{?u7Ny%j1v#jhl4-(%0+p^Y8Q5Iv!ah*5EEznW7M}wO#uC_40k6 zWv?&uon0fXSlIc`L@+2dWy3*{mz&SqMW;Bo@tl0$-g<pTSJQOw115rXfv;DJap-cW z>25pV%x^0a<Ie42?GTlyd_%uRAe=#Iy`o$+zZ_e=&&P~JcE*l_2mEHs)&Kd}Xs*`P zCu_}ieWq!4Sm5s)8<T@={pG(^_}ol1*m^bEU~9+c&J~lcKePY;)Boge<p*~@WIfn7 zx#2p;p^H@$4L>}d6*cFPVVy<9hq@Pyc04lqtP0EitYPQ>^E&=N*EjJ*b*2FR4-CPZ zGp4_^uGsQ%M@-ku9ZUjBOmS}W+27wOKF@o^cv>(+<@{gY-bQbc-{Y0h9>K@lB=p-M zA@ae>OMlt!`Ruv=V`9pE^BTSfvOP+E^{vl&g71C%Go$dpMx_%j3`&P?H?92h_uFm# z|2N{y{r30$-rI6s$Y#-xj|&b~H~w{D(2L%t^P`ZpF?+tW&GZ}L+>uU?1pa0!Eje{! zdioV92S#SmJ))nw#p8Eah~3j?jKA_@YmOklq)mR4oI<0hS<~M`?1iigI2hiR3O>+0 zxMd;(<By~Ib%AduGGA{L*W{8sl6ys+?W@W8%k8%R)a`$I8sz3SvU5B?Tq1G6MB<v~ zLf)i**Z2P`-5}=2-({S3hU41N#QC+~ZmNICNYah6d=PlpFmc)P2_Jv-*Z)~;WyL;k za{k<vtjD7nIr6{0Ts}YU3fqyz%Gr#r4By_}-JM}CsIW<m=k`Yl`<6u=+6>cmB86=7 zuCI&z=(p~{+(T28CfKc6-r9KQH@E(tfGg_+FV>&8{eHvuo%sGAu7Udx-g5gZ7umd` z9~6l0=jVk>FI&;L=U;?#*1_Ma(v{zoKK}B0$9?a_`KliSx*0^yr%ZY1&Z_9y0Zw+4 zI2<G!RQ}7=g+?C~`Q9z|V569u#Gl$jFS@kXY5Y3GzE!AU-%Ee(9W^R~4W6LfYM<CV zO|*fbS!s{{hb^5Mho#gjR<N*4abS38w{acc?;mVwy!Xm|+9UNh&G^>ys3z<HqmBCg z>a35l^FtWEy}rI4<X58u*P9u(%=g?`{)bn&lfh-bqeDyW`XgWXt>wcyejfPUR66O~ zouu`9zeR0`mty2N^%d%VZHA|%$I?&RsT;nYsJ=wz;(RryRX#To9y7;piirL)`~Dxb z8Ltk6bc&fN<g9XKyRt$vp{6p~>r@jXsK)9#r7pIHp=TD;v8``J3YIb%oD?aT^!(-F zd;T{>3~W3s;;-zoQn_->PGUpNgHo$!Gm@J=yFZOPJVno@z3kT=_I2s3G9JndhnF=7 zW;FhND^g&|C{fNO(WsaBerDbM#mgEV@_zMYynQ}JhH*v;m&Co;J?lR#2yOE3h%E43 zvst@+&%dcYjK4ShwR-nG=#FNBi^$`Ry(VfZychS*nxG|YcB7^6-_Pgl_so6nKCtkS z%sMiAVK&!c?KaI>MUDzWGZtRANOU+{_>EhBo~Cpx*BXW?3Ic1KFFj%r+;`(VTVse8 zgQ~B~9EAxg=P$SKmH$}e*pg)+x~$n@L*B_IFENWSo0NSTF-wXX9X2urH?Ity!+vqU z7za;<DC--Dw^TV?79C_<*U6w7FW_Ox*zxx<OQS-T*zudS4Yl_LS(yB%eerF05w@oG z3v1&IkRLf7u{9=WN#@!KHlJVf-ZJwMhoMVEvOLSQh=RJ0Gfuyj7h_qp_~u(^+VgC3 zn4rZKc<RTSs7K3QE4m0nGHQZw80Qhcxk<JX-;PH)`237ixy$4t9u$7yH%nq`@~Neb zjXxT899hs?tC(RR`}yno`n@R&8jo}SzE^VD_n=c=q<$)^!URU<IED`WjvE_H45o59 zFuZ47*Q_PVv5M21dGeFWUmLzNZ!9_@=+2VFFUJ!j{pbeY9FN_N31U8`<?rv=ewcJ1 zyZuj&l2`$MMeau4Y@3gAPFob#`iSgcmuatVXqR|zJx_X1w1mpm83$`48QCv!ICwHM zpVwLz`EX~mz$Q)0M_djJ7n>B+?})eX9MRpg{e^o|McaeDt`5w<7A4#-_hfFqF0)=g zsC@x{%hJY`Aq-0M7x^(af4A1*<(a1UU`_;o$910h{9lBZIB!}%@hF#}ya#i$9qW3j zCa(!z&yPvx^W00{BR0d6;nT0zCI&zJobEevN$PHbW$72k1zIPuv8{KHkdk=9?fTFD zj=aq}kA*D@1Zwy;*eiO%Y8Fo8zpd;K{x(D$G@D)Ka^TB}nd$Q+bxs@;*V}jHZ6(9G zh3p;-{;X_zGVPi2JgdHO%O|W7jT4Sc(K~cdoq=)RiH&iB%vLRjK+QNIe)lNG4$UAI z>jZ}b55%T%NFAx2XIJyRSyQ`1nCDJKpNDgzu%rF|Kc5>7j@a$c`{%Ufm58i>Wku{q z83msSTg2rYX3pzjN|IvUuA*@4K}Sq=N7t3(k1eCXfveEDVB&fq&lW>fnQ0uix}@hb zu>3gKY??D^ha~gvc|q;v9QGO$R`VqV@2}tYUAB=iBAso$@Uj-gJ6o>{EfH;CP`$2D z@xd-Z%1lSlq@m#8@0RnE{%qL&<5BnCdAh!L{&nr+)K_lmy72zP-i8oOfu>K)K5_M5 zBLA#7T;B8K*OtKZ-*y%LGVS=im!)5cWv@!pvHyvk3obsNa9!Z?=^u9-E99!*Y<%~y zU0&~2{{)LE|4js)I23tX#2Q+*gn`EgwrFWEa4rOm9YBT<Km!7haRJz10Xx3I0w2ar zJCr}_ZQ8H=QK#2!@x_cSzs!4XOYG0x`|KJEYXaAjS4<G$Y3UNjqqRjEG!N)=yma_> zofRVd%cSsu$KPkyI9L<7E_7aK{4gCftf9-?cVDDoWdgerX#7G>X1^vw@IgKo&=`n~ zMV)ywL(Rvd;&(S5mwRpZ^Q1qU{=ejY+psNv>;M0rpM8DZ+}p|hws*GO&U@Ww^U1@! z`rDgDwbOK?pZVE-4FUCecFirncN5f;%)7cO)b+Q|Je!-cWj7M@X6J4ztbV(7`s+J8 zi!YX4*q$H1{eInV*57aT|Nr;y<?{L4cDo!xc7%*ULc{JqpH721-LFI&=313<xy1he z_m^3){LjbZyZ3&-cYAH@ZnOR8FS^UW<+J(VU|#hl!#wAP!S?fZzjp-tS*q@r&42N3 z_xpE#)^APBb8ne^zu?Tj^X<0V=Sp8+)7^i*Ls0q7wCKE->-PVvGEY9nQ+`x5e8<}D z_ip*lwKCoBZ+WAUL$PJTH1^}~(*zo%v>6`$ZGP@A{=%(=&!$A6kRgfpc(1g%-v09k z8kz5kMdv&e(~T0bd3S5;>f5E)WAFa@`ug+ln4*)ajobY#em<Fe*YLQ^<a!=H%O?Wm z?{+>H+v<u4^6N7h=9uTlT`((r<g#^oal3roj@=KMxSRgJ-}zi_`)R%1BDwc>6ed47 z+Z--9r|#FwcP+wx8n@C<Oi(<ybGm-KoXx*4%kAIh?fdy`QSG`tpS;QsFtUqm&AhfY zTD(NekW)GTtZWBp@G3Ka;o3}wBU^NCiRs6!`BwC9$z(q+o3aJY?R<InYrpH>;w!tI zyZyjt_CBju8s+CKpNr(qx2vrx$g2=wTvjb#^Wos4+IKr1^L_91uUWLh_wv5l-w$N2 zMHNF5l9Wh;NQ3L|DZ&k3z++^(@>~b3gd4uvvF0Q~RLIHff9=EIC2*qG{N9ZG!?PcA zGfCRl)zr;D*vwwt>|mC2W5WIAxwp5eIx2X$FSh)0!C8_8G^A!?A+vwBBZE@ByiJY4 zo*%KhN;v=3zukJh>8%GdGyna^{r2yc`OFlm_*9dbz-RSB!94AZgn7-60#JK;k%>Wv zjGL511=B>fW##Yh<^6uUUEh;=^VP6u)}-QRXJ#J!Ww)#mG^Qmb-*^A40z*5Wtkj+t z*Uniy?n&6K($v<_{G7jYL44)Ysf&sg1Wj1(^I5-nP<AU*z5LnCbT_r8d&TE%nG-V| zl`__-|M}2v|7PE(sp|~{O+dqjTn~QS<zd<|F@aqv^7Fr4z3;Y`huwabmiR7u^_^0G z-}3ymG3n-lP9Cv`Kh9<{5PjpIlD)6+?&f!!r`tSzrW2cKo_ek^oS*OA)24Q{8@??9 zLDviZEMxFtwGK!&%D5%;{r^AXTe`LDH@w>t*YKd}?%zi?yH9dY3%O&L(kE?{z4Go9 zsh!i`msQ=%TctVM?C*IqK_?F-i@IQjWlgdx3<VQEKWC5IHhY%r&h78?j|w;V`$x{P zUp8ya{T-V1_a6VVJ(Jg$a+rPg9nbRKl5ktYvw2$F^S+1Q<}Wf9`)usau~G(FjAZ$^ z+?Z4JU1Rskn-i;dr{7rJSpI(B#Lst+T))3{_tTxvPQF~owBi1b)<%wIh3?bBlf`z< z^uEW<GGos7mfP*O?<z@}{eJsrV+Eh*gvSaBoQg|=;7(i_&bZ@abJO*=`wz$SE?af@ z$lQXw^B?ckhON0dA^*Mo$KFM`i9BJ~t8)%X|NOuI^ZJzF1B;*Uoop}WsOvf5vEQ!A zOcMlxETIM5l^Go;8f33NW!+wOn7wRzTH@1NO&QJ4-*0=K_FSHS&aNAKcUSGTRhcnw zYVDTg>#x6H{rT;4l3%Iv4d=d{nIG2t`JbyNEx@vLkI8S{>W=A!pQk_V_m#S+bNnK+ z2Ztx~@qDfWAsd)Y)s&2mJgPde>LmN@f6xE@{gd;3?>Xl?%!`XXF9}Xj`hF$ZWg|n2 z?E9Hrwm)vAf4cqftFYf|JFENumX<N!o%Qvp>pTDaO3iwnWqog7v&`PN;!k?wkvWG% zKAc|v)XVsoYv1oub1nxbkEif-kmP!Hv9Q>!*sOCMJ6R`QdG?9%ox1sci979E?tVRV zM~IQ*@|vja8#8WC5^Y_P_ExgxU~@!YtzNa&{{O1{{(3vj-Yhh<+$eQ)!c6bazwM3x z`tH8Ty=?z+{fK$?>+UUk&Z(%&4UgqDD=MEn{lX;hd`IGiH8&jjKUm%ReWC31=FO+M z9AsB8IzLK#c;j{v(}#9*KHh)-o*sM=Q@10(cHL)r9Uu1W!&gcy+5B|ZsJ^k?wkLsQ zF55YsUFTNb)nwpQoC-_*y`7?_{Qds=3{PW{pX+a)y~n}h=I;yFDmN?adO0)P>z3(< zbuV*+??+6$uf`N`?&H%kX62(VrQfeRIsf_V>o$+iy)#_*<kp72xA}`~-E}v#i+}vF z#P#RjiHi;RzFEyUq}DRQ>){Vy#u;2?3yvM>>doSEaJh8s;Pbne%f1R<?he}1;dtbr zz>UQ1ioe1vo^88RWhZ;KJ2PxU!OyJg4_`{=ee5#*sS#_d+MA{F;lRz$+0ok#YkU*$ z7p{N){qX0GW?OrqQeh{LrHGh0%J%8$QrB~$;S6!F1<P;Uva>oGduM%#tejG7;r?y1 z%T_o3d2?+J!<Bm$ccg7<Jzg*BpS|Zp?Dg~<$1RE*o;)w-;s0m9<Z!X-^~RSk)4KZ{ z`l8*=&HMkQ`q+(F4n-9+c(RVzIB_e(5xcOK$luZPJ>&H6H<jPh@49xiZIwdPo6lFC zI4zxE(7c`ZwfNJIj@NA-*WGz~^g+E~(=~w?f^3r_PS@>Qc}HDcpG#>0BU88lXYTp` zw>cPhRQ)}6;C81+mJ`RvgV4gMw^LMl#wMTcIjiR|#QgjBYtrlAJdfV@R3D$RMR_gP zwa+)pX4J{Kn{zt2{J-^gjib&hnFjVa+Z(diEY$=4Us*jNBT8B*w7u{-ck$=njvi4d zx0hVM|JASfa9w%+4hEag`;(h%{~7E2k>gNYD~(8WH(pF$$WRmf^jG($&DA}n>h~-c zEs=dKntNN&cj7({oyyvqS=XP=48LQ(zS=C~@>SbIJeT*}y4)VMXHvX@&jLmN1#2|7 z+*x(a{MLiXzO%V59#ek4@9{eM5ShQ)Y!lm`8)cvLDt#uiiGQB5V#|*Qh~&Y$rrx`I zjyLxK(beWVs@wNVam>`@4rg)FSjTYWie?e>t#9A@{ki`+EqVC<xnAw5x!1MLL+_Nn zh$+uF{>ZfY{8^1Yk#CZp{>#?n`WYPhw!bJ~f{oPw^7_oUlm84{xZYR)WXPYgUbHlS zZOruh%ZkMxnQ~g&FIy_u)AV1zKBvp7`r+1NUpW<zu*1uhu$(Ji45vbt?mIVU>1wZa z?~N<|r$~j})}Lil>hYyVBd+7Lw%lx~EiXUiCUNj=%zeu9i2sn#|K!+(ck|8`-3>k( z=RBoNxZwPyf2U?^H~;DUR%0;xMAY=1-Mh>bTNsdnyJPkm3ogs)Vh!J{Jb5br2=pZ0 z4xBDtztPP9g++qfg=gJ5bq}X*_qsLdM$2`stCk73f;G}IuiLA892H1uHYz_M-x1S# zsn4{VgKgvU=170FYkpjT*VS4C4j`qXuNn-22c7p6*fmf0b+{^EdF-8ePMPBVc+1b6 zes4D(zM`j;uV1@l!aTO7fQa3S)1@y=o4C91!<q$Kr2pC9tN3=vXZq6Sz2DBg`cqnB zjT&ve7GHBuD?VQ}jX@{fipxAlRyOCzoF7aVmem}TvhJ{|<WXe57rk3CVsX1!h04Zl zf}Ha|R-C&u_1&U-!p;AWM!)b*pM0fc>g2!cPE<N3R%Oi)aAHA(&5n#tCIL}9mbn!- zrL=0^$UgMEQnt{GmHGFrtIgf>*iT*NJaJV0?Fu!e|NkpD-<Z5W<jJSa*H>H-Fx1KL zSGAeaB9Mes{&cg?_GD1HKQFgC+hdu|gMV+!3^|tTZ_%CS$7{T#|6>2dHBt8bYfMER ze9bPdJSW`lAaav^p5sd8HJ=%mnf~2X_w-Z@i%HI-*YBU*=2Ub+O1a(71R8#Cmwz&E zZk(O#>7BO6ckll`cS^jox|u`hUk+_vc4^c1b88-WSZ)^F>3;8v)5XslvQ_tARWv`^ zU81+?{KxJ5=l%H~*I2ag^;2E;+BDlSTJOD*;*!!shzJzt?>QI8aOih>@t1|4j=z6@ zy7GJi$1;Ikdn4ZXUcP?N%Hqkp&DR?irbu1;bhB)JrXsuZ0k#8{4`jD=&R6wc*k|Gv z^lI{ZDak+l`b+&<lP@1uF^v4&@qE?o)e{f33tXx|DnePWU4Rs!NwU(fUcNHBa^Y&{ zB-Iy8Hyrpo+<99j>}AV2v-<QM@%103_X#`8CfxbHdv*8eD}Q(0KCvh}qVBTp^Qmv_ zKlc7H<oGioL1>O}@D>j#UVUw?bvLq)Z@oS5^i{sNon_8}zwhdwGcI@KP?Xuv$eO@) zqfts&TkoBGs5GO*)MKoRPN-$JP4}+eQL;q;-}T>ocWc(D`NZ_j-LJEyY=cCLM#RQt z5itj=#amgbUsNC7<#0vp*#8eaS#h&u=S?=yNpOif%;$f;KtIn;ev<p^w*u=?6GBfE z=YbV3qAN}*JSvIq7yR6PZYi^ERo|TWE&88+XHE#Y8OPkFC6jphaFW2H169`*J}lbt z=A!1oI`f$i1S7vMS1xA^I&vesJMq`;Z3p+=Ub#c6tHawcT5a9DMulS{KYy^Eeyir> zF%>E0@r11K02giN-Cge2ecqMsy{hES_Q)qMi*+M6n$_#A3BK}MX>YfhjsOc&z$>=) znH9pNR^m5)^80D*YGVz)a^rm1zX?KR`uoFlO1^yAw)K81hl7vvZL{2Z&Eo#EoU2xx ziHP~}ZbJ33FZPN{wjm<Z)nzS9LddVF&Q><zMyg!;@(wq*?95+#YCgLHQ~3Mtt+i4v zCvRmRIHn&FW_Gv7=jyu1c#mH^&T$7c-bq-g-*_)yt1c?5e(|7H<>rL-x@FT=&emz; z$hf_XSMd1P6NjF*Ua|0)$^68ysfa^yYwKfk)&wnZJSw?VEOk8h^~@Kif;QdsWxQMS za%XN^u`=WJ!{!Z_Z;0r%{+(9sy(jbVEvp5q>kjC>GT!(?N{l5TVgLSb^CCntnpiIV zu>O5^>bD7#vb*QrJ*>~L^i1pw&m~2B8|6id`d^zp^LlbJc?pA3%M~$1QPHtt8N(I1 z11tVidu+0~GbOXT%dM`&Y2$&-oD<%b8TuTStI4%t+)<ZY*d<zVf6;^o{8Or$-Glpt z&o5thU;9k`@4u5?A6BW{vej{Ry#MWGZ+~Cs-#C2*_m<~E_Z(*GwZHszvSq?8q!Lwd z(>FcdqIF7)5)<qB5AsGFUw(VhCqX;A%)pEL%Bn<{K73=E5Yhgv_jOV5ro^_D84Wh| zyZ%0^o7}xFaiUPk^Di>uEao>pzcTHa^}bXtXp{aYd8MStNgmw~D{s{%3f*XW`L>Gb z{r{!?KAJ*DJf5w6AFH)Sz$pu<a`N%`lDjmaclsRdbqp;WPE*$8b+7XLbLGiV*WZ5e zA$QbE_3Uy#h@6_W$6#_t(qEed0i!^VcaBTCKXM*;`hNZPc9tJ359H0b9UN~x@H}Fx z$Z5*5VV%~e!^>VPUaGph?2gp#ssncVGh(?4j_^9aO>CK<g=jO%E-2l%*Q<eHVsR#; zL}(*(@N|vK%WmhaG(CG@<<a1UC)$^D3O7tP<35mIu2ZqNrfp@0<96k<-XcbCdDhFi z^xEn#>Z+Bgt6j;^A|5!w?6u})!GpU@?p0@-i@d!)=f?A=#vuWU$Z`9op(ekVB_V{B zk3(%r#O2(;)UyIHi@wj@yv4%nhM!=!Z`_YOg(W$=w+VVNyt>os@m}btu<!L2gXRTW zpSuQS%kQf-^wsi^*6PZb@X2-C-;e)3=Iz%mV*33xb!j&5?B*3F=C@v%7PL-qYl5d? zYlY>a4e~7<2lQP-9vl!+ySC@0S;%LO!_#`54O-of%rL$3ee207YhTW3vMTlceSG;! z?I}ueC*#XxAAWu1`AhgTzs)@-4lBo7TQpe0?E_b+_MAwbdFxp58g_+KZ$E#UDY}h8 z@J8Z#aYYqGU+D&;q-n+F1<mS@xDLqQ{o*uXN#u6LtKJf3nOnYAEzIiJ%f|EQ#P(-? zv)A2Ns61V9$D)e5v~${={nJ$H#ST{<`rs@6dX@4c%cEPixm|bO_hsVAN`Ixe<5dUT zO51Oq&#PVe!s1Dd%cgflndKac9}$HU--%4t1?%pwW=#m;y|;MR9)TyHF6VkYlW7wb z@4gosyyY%iXNO|fHS?#dc(Vmr_vU@PrM{R|;nMMh{fqM}R~|Xt@m#J=KY?Xs3QNar z#$d7O6-P?AX4-$1n*Uwp(Bvro8!^3!Z3$v$3um)#$x&_zVTb3~Hw}O0YjHWu<@lv7 zXj&o2(I8X1i}&Q5!y5z-uMk^QS>?5Z;Y;P6Es45|7F^dYtEp<+<)m5UFJMwOH!-A2 ztn<OuZ|SNGizoc8uRcFx&x9-A@6WkorxGr?bk4zOts9@J!@dYPX*Hups8!>pZwzjn z4i#r7EcV~7I6YpXZ0`f>)z?IG+mD}#V>ZjZ$hH2#rDd#BzD1QuSp>%}6q$LbtzB@c z?-$F7)doCs&$;U4`NmiH`tK=r2}ll~H~m|JnR>WQSd6gcnJ?MR&lhgL8th`Ms4I!& z$)2sLnGP%ULG8OqYi^`Ru(!$7?mD}!^74Wuv+sSsd-bU0H#Wbo+zwB;k5oC|UgvvV z^xF5DzY8)LJ4B3c@ZYnaopo$k!Nni%p8uJ_6rlY4qNC1P&PkECpFcHT^IiCjQA4<I z0l(rBBX|#fBXdy{<BIGTVw?xQJ!JZD<96Fq)+rHF7`FUgXEIM|wt4`M+%oy{%8g56 zXU93S7b?9q=bg87T>#e+)o;I_m7brbGP_UfV%yjLZ*qDS8ao-Le12hKcD8eEl2BSi zy5<6|?t5YSuO&G%Um|K5_9wgJ*UV$MlFhJn#-_FtkuEP@nLYW$eR!Hn^xl0ICyOG^ z-T@6iT$8?4mTT1|mi>K+tf<AJ8GoOhO4z?X*N#moVE$z`tBjhaFNe5T7TD;oOu2Mt z&aJ%@=G?k9_3!ds`@d>lVV}0OE^No)$=)2E{P6a9S;0DRk<YwNt3xwe{f^xpmn(`> zy(P-lN-Udex?|m5ww!B|rXDQWoO``3)8pZS?0F}*-~V+dr?fRlMN2$emVe*22!^EI zWC=UQjy-jr2TcpsTrtYa^V_#NVC9jh`-SV-<Dx5d-pe!9f2sT4A0@EGSwU%|2})Qu z7jGATek)dJW7^($hOGQqrYg+am;_eF9CCPRzE^*ee|FAN0YjPgmua`x@xJD6ZC<a- z;o!2>ZDYaDR|)n$nXeuv1YXsvkvr*C^x*FnPX;CTB-@4uBER<>nQ+XVoqKJ>=7W2` zoy)rZ?V_gZ@4KIJ{7T|KKPmbCbDKYVZHvGp#Bk7?2Xn$0lB~kcEoD_$=Js~$kpNrg zYZp2}q2VF6=KI!{PV;69>M<xD%h_$VWU=6vkax1qi&+(dE+*Jd>AyVB`Nn!P`~3zr zOahk|ds;r*HitpRDtqPKD>{FYHm}%z-kayW{JqWRO{d<PeEpo%s`(`qRc*hkF29aE z$L-DW5vg7%d0(YCm*L9JJ71(6w7a%=Y6;&J+xpL2-LWnGgi@&Gn#8$s%Vy_-oxt}p zpyQeD_gy;m^|f{J)_4ET&RhKEU1iFvu-o^4tBE%}y6G}=Pt}7T9oHpmSv>wGEqT82 z_m4Mk<Q{)|-hN#?_+*cW+7cUhhx~@)wmBCx-Bp=BEZObG#wfLmmyt1XfmPd^=h~ao zvRS*&M(#4YWXyV*Dd72M?d@hk>oYHNE=gQ|-}u<OdG5>dw*Fnr#HcaPx8r`5Le8q# z<+T%28O;jIBi6aOgdZ;Mxb8mvi*kz#l1EeC`)D$3jEFzCba_Ln)cN%N@63!iE?mg% zc*4uP^nQwchwkYKk%>$Np$4+qx3?<FFI=EqHN|_v+UEENQ?ER?*?l}>cePx6z$yFR zp$ZJMZSu}*UA#LdB9S|={8{~Rv9(L5lvr-dI?>yl-nxwU(C5v$EfX>j8N4|&igAT) zVid!z6A`(~@7QY1cXRcr=GUz{D>2D5dIR6NIOevk>FReS<>qoZ_c=1Ao?7zv-ouMb z0>P8M#U$15so!(gwtvmt%VmZ8PnK=pq%eW)xZB>m$fU)yKicTt>R!$pm$8O(tLoQ; z>$awQm-Gq<@glOE!CNbnxeP8p^+4sB#?RFCs%>)$XUw~r8#r&x_VBf*-?x7)6LUFq zEBnB+T(O40m!1ie#l=`2JiIQ>a;jGOxwxJH6O+T6p9z6eZEJ#;PPds8!*J?K*_7ud z-Z`DtYxZvWv1-AAs#Ra~%cQ4q-!O9#5q3I+R8=i|x+wN^;}p3fy|=wxLJcdV8ec}< zZS%Ni5b(?Q+hHrC)7^?p0*uTYCpNsjHDN;3kAu9eTQeq2*5g{zu<?1b>(WxobHY<= zUMdH_$xEHM^6iSPlOu~-s@^8-^T_!7E33NV&!IndWwX!UtI1z$rLA}b(f^Y5IsJ6E zcDq=^E#{2X$r;WQSoRd}($$*bSS?x0bYYr^u=AIKkXEi4=S<66xZEldzGT1Rs++)a zYaYMY(~F;%E_Jlqv&7@xUPi%}#hYBJ{S!aziQ1QN&8zDrM**kEMmg8q8G33hEl3H> zCz$)d)jGzE*N?NTAKx=<Ece^4I6;|bZuSLrhCsfvam?Eu%>91)+KQ`80o{G~l23CV z*bvhmZew=!-K^u&^`36xVp-tR>-N<D%%t~aT5<c?ALed6AMK;Q`Pij~KIXI?s@m7u zxQ<n6*1LP`MfT-oE(cp%>2L-mtB~j4nq5^*t_g0pW9;w}{w8I>;ZPx+yW8x^65+mA zK>`i6$M&vU_dq>o*6&y9%WlVh{=xF#X}_v?!=`P9t6Jiwy%4c7h}V+&z2|6&ZCbCs z2FtbjN77~CP8~>XtQr4)|17yGR^pVhmn}d&bX%K=ra<~G-Bn9&9^>aqJyOF|;L^e1 zveOW3uP#IBRKC4>x;+MsO#ERI`;J@*lsjyYlKWVA@+)VCTblnj|BIf*<?f>GweRJx zvx&jG_D!+e@PAt81+^txkpnhcm0_*BhqRW>iznv{);#8Rc5km@eGs#s;fU#j+%0c! zZTWE_)Jkq{KpaEe{WaCX&T+d9RBF4omHnN}?Xcw1!Hr)Z@oxS);eSE=!mjp)eN8J; zIer<g*E{{5JAXs}<z2s*zt1;X|Nh3$(@N6?1TNh|j1urI+rD(o_FX=l4z{c^&t#h& zWg-|O@?xjIX)i6GHnI4==1w-A>kZp4Zp(J|v~qm@qFZ^*Atup9SvP)ZO^%6dWDqG7 zd2YA)z`FK7!RtT7bU1`JMee#JfA#ls_Bg%DwFy;cm;5UfD3f!Fl9t*3I)I_>!$J0U zUE1pk=KsF)96WglT4lF8d)>}uD|Xoa%ZE-YHq}Dr6w5v~Y|6Q5RQ_t^@?Em!cP_r& z^ZDGnHJi^BtqxnObu0bTlauc@9Of&&owK?3cJ}(cG0)G<?cO%MS$2it#%9fBk1u`b zJ9SY!oMGPW;yuwj_Czow$;OLpn(xohH|x20!;WL`&AWYXuj6%cxu6;KXwBNsSHHHp zJ`MY`bh(k|@8ipF-aVysP`A)#YGlKt{9l%TRh7h*E@V4Q^tr>n?AY6E*2|_%r41Lf z^VfyAi#NZ&`q_-z>q*9y``cSgl)!#1dvW1l?VDuzV$g!p+4lAOUSD57|8`=#?47mS z@6EcuJb1ZZ<BHe!_tz^t>a+h>vHknK>fKwjx%cPw+x^NYf6&Oj3$(^G@o?MD+HW_H z&n-Ho`SWeX<?{Qr<>j|Bm+#EHyliK?T-Ax(?RU%8MQ_jhS$par-<26R4t{x-9=~z7 zij#WgwcrDROak{5WAE{{mDU8FsIz0VuySG8xACXc^DjMO4H};6FBp0)E^gg7r*6YL z{nqP(-=;3x{i^c`Q$SO+T;)zXmIc0@pReD0xKn^}S!19c-|IhzSR|KKz0GEIzRy%~ zKhVwp*2HKd9@({h^13Z1MqqEt6`wI|-0t@ov}#iziy^+{!=Jkahk1X#)ec+3v8O_y zFyUB_<UwicyqJgK9}sh<rz&-KmA!pccDFQqd)?n(f9$5m6m{Ot-~abh|7obdmZh&! zXV}VqVHxX1Hvcn^M2|8FT;2ip)r#wrGn-GiM4H`R=Ud(T<<}ky&S|yxY$EyvKfhg9 zsZu|G+lmzr4eD;IF#JBs5q7fa?>Y^?uD|{Jp1ziLW?8f(PU1UH_0}g_g)V#ZANf+U z&-MR<3yt=$cs#`X<L3FgYkNO=<z1L-k~!)35p}zVRbO9;+RQW0kNdF9cTU8g*FQfT z<}VkIDRBJo-}d{R$7MHDr!RUdZJt*Wowsvo^_Pq8&BvF|uiIt)utm7*o1{^SN5Q+N zr>Bc=<$ir_Ew@$ojYF;6(Y5SZE^iiOieFKGx^^ln<BHRhUhdj;&A_(9CVv+%)TbQ^ z4As06F3&3W{&{`kNWkQX3r&9AHx26UuHE7zsiW1oWxd%)Q-3w_hW*)HdGDl^V|~T8 z>|7JU5clgu%5Lu@gT1-&tN+ekHmmmQ{L<L;ZarIxsU>qJxHT|s;A4HT%y%}Ezs#P} z=-jQLAGRkS@B8^y*{z4;-j<`?-OK0uS-n&#|8!EF{lBvdXkE7J?Spx{--=cII}qqD z`}CaU^Er#&US96ce~y=bQUABMx7ly6-TI90O2-Yy&uxw`Sro+Xo!<F~%VEu7Crkai zZ7=s|q}b1AaFMeF`6n$xp;4lxalzi=z@;x+HmF<<Ty!S<_P1MHEDK!Bze`Hjt=0Lt z$MaT<XPz^+QuW*H*01$Nb-Q`(S#&x+?R(w2Gw)B6lYFPpixv|mk%m$Y2E*R&2A)52 zjZ(W_-`u?X_X~IXS5;qL2<GJbF?#SPygtA;>pK6e%yQ2oL8?!_Y<c<J>UZ#x19~+X zP7@1SezN8FzIiU(P*rf9jgezx=IyO7OOvDK@Xn01Tk8?gHFL#@n3Ju`-|kvIiQAzw zuP=C`3iq4hRVo{fGWE~1)xWmp(far7ZTb^Dw!N&IP<E49@hcx|f-ILq$Nt;-`}eMR zdn<eW+4X0$&uJ!bTL&a3v7hy0zRc<H_T**L*uzCn4(h$K-I(!8LM)8eX~N$>Oa+xE zO%ryQclh33=gaM2yHtAWj3@^y>1w-(5QfhDTRRS4{wJRr*rERBpy6442J>94B}sy- zQ=)D+x!n7<=Q|&Ny!Z>@x0`&IzuCDX{@2S)r&p4F_e(Vx9=;XUpWC4Mz%2I`%YSdk zMEw0e^9$lEMs+oc=dV3D*u2+KLE22@lJ=I|+tVBsmZV(xbG_je=K)5qAAcUSEmXZO z1e#=WJ*aF@@o~|FzcoxBo?idMByi6Y<kZ}E(X5ObC#NPp{UpT1viZj6gC!<gj;b?Q zhbb_))?7PW@{BEXrRx7VN~;zgNj*Bt>B%~YrnsEhGyX9$l}sv{TYoWpSs!TJqg<Bj zfbltt!*6#!pZC+m;KPmDKab_h#p7!V>*SX-HnzY2cwC-;S?9x(pO-dTzF5$FXNF<& zoevKWGc&Hdd_bW{A~WFur;F5#dwZ*QzukU+US@*F$pw*}KQ6pT=-a_0Ah^h^OE?aa z4(AA{F@&$<J+dtKx|u(xLu}=um?)`+5cO|08&>Q(7IerrT2(3L((OC;S&et6Sndkj z9C2$YtHO!9*Iz$<P;0sM_X>smi}V!J&-(4nKEFZl^Y_Pk`eJY0Jr*DQxSNml!Kta* zcU#5dUVxVAKM{6}ulxDb^<|Wbpb3kNO}z(;Zs1`iAxGyAitP{ltlvI4XY={Y36~23 za|Nb(Ca`Duyjc)=^2=hk<;53+=exUbIQSgQe9yz9q{nsh{etXy8)x5fIUi*xv23QI zS?=y_;h~a7vR4B2v?N>RT6@`K=`W5@z5HR)y=CdL90$H%7oB9-eKl)tY{XUZ8NB;0 z-gAmw{i9*ESG|kCC69tX>zo;HOoCeJ$+F7rd3bf!CZPuNHg1O{9F^sz8yQ+Ux}Cm# z=5&bPz`%3)jKJ(|v9s4XYw!G;a6&htZ(IK~w?&5*9Z|N4Ec<^>l*2*g^0AHId*|ev zr=F|M_FkT~_|(ItiLa!!z1FE-%P!d{(Iy_Wt@fac=HYBlkHzp7U;Db*TGPrl?h|X+ zRTH&^VNTGdecD>>(x60E@X2XEgUeBNa3VWs&B~~;^J~J>Ybs4;fB!B$wJ7M;i_El* zUdy~w|0af9dbwspl3dyE36^EsS0!Y7WIH!>sIB7a5&PF-A_eQCRs2|Fs;%j~%yFlw z<#pl7TucI~``&ClqE}tw)p<SR)S(xzct8z?M-kP$64xZ#DqkKE$kg)45{=lYnF&cA z8jLSa%SL$Wxt+|<aP==<@Y=DvwAyfwT#-~wQZUcYe<p!fGZyXHqGI`@u=C|l)7LK} z*RsQUO&=X@>RJmdJ9~XwLFGZ^#jFqdLvHbAgBr|hO_&6NtHG6<gqdzfY1_V*gSQ?8 z3e~N@v}?*|52lXvYP*Oa#)@Rts}U;eWlt?NH8)$X{KnpNm;RLg&DVu?ug$zAsl*a| zp=`IAw1Ly5#v?B)VjuogKg$p6HOcKe`1#bo;J1057lMoWwHYfyrWY`FWUn)7WZo*! z@IkEA_i|Sz<BH`xr|<F~__EVhUdM|;iM8|Y{z*kO;wDec-~78|vs<$`CpJAocloln zTaUPS92U;l9=Z9R(<DBZO{cS?^KA83+QI{R&HV^12E_@N7O*b(w#tRmp+Yu%y}nq( zWieN7y_@IN84B0zW#eHo$e9)9!|l+yrnlIhLDc5W&xBoj=D4!Y>IfAw)Yi;+<;akw zzac{R^5q-Zot|Ech4b{E{Mp>bk?_ZN_m@VI&+nge%U$2HnM(!9-rEtg*6Ze;y=K7J z5tIEbDk<FF(00bM%els4?%$0;HV3}H8ppgX>1*4C%qYVSaYoDMOKP7@dhwglqioIj zR*e@$fjiSzI0zd~G579L*|F|w)NYj@T4gpNhq+XLS!vj7{O|r?5fi#_qocWfz86QY zMplsQhh)EMhKbdaP4waZ{~`2ENkN&n>ce%W0QGxY+g1iw>px|g{^omWKSN8!mg^0Q zmn?E-h4DD*G_iyoh^sWd)2*&hKi^JV?9g;)cd72XpK?A;(VX;Pm)tU=iQX6O)Mrm# zKkLP7hCOvZ<QeU&ay5U66a~Nf`?S<KRbZ0L6pufrn}wUcZe?I}n7@0=kG<|KR+(|| zbhlv<ciR-5Ob01Z%j?O)k2oEC=0@c|S)+Qf$s3frdA@v;GH{V<_r2Vu*xRenC~6R^ zY{4@(ollH?KEoQ7^n3SbPYPIU<yPE${gmBucXgdDyF+<@&w6Zn;J-lmiTfS@_uu`v zGvW4U<KlyyNgn>q`|tm}{`uDw6}3-Rai2asd0=R>_uF1~6I)~#U0!GK<fJ$Ar<Esn zepw)|%CIr)^g8!BvBw^({r<_KaAfgbHlBM5F{ig>J2NyFBnBt2`h;_EGCQ(w`hRcw zG2w>vf7>Tyx%n&#pZwu`oh4(%@e8+}-1cVLvvkMw^Q%)%|2polbz-){PGg578@JT% z&-^7G{5Ijpo$cLm*;BNqBu^CURB?`TciGHb^X%(u?!#NGk)75kZV+<Hqgkw>e@~1+ zgZ<v8ODAP_Chon!COlC_)PfPzjuBx@;+=S`DtFTPfYT8ZN=psqDp>Kb<e&H_U|(o) zTA5*EgPms3!zE#y(<dur8|=T5m+;T>Y7j%xO{R5)>6gElpL%%ndPv=kJvpyj9>=Ag z5?adSY4oI2gt4P^{kN_EL$3=y)0kw6NK0AU4o#lIw)dYm_ksC$rSupAf1O#jMAQ7K z7AUOtw11N_u!#qSRrTk+O$<}MCK|}f%CI$=r~I$g>sDtd-ITe}%Vkc8#Yz{OFlo=j z#SgCT<cN;YUEc8VG2?X+{<!%Y*H7QGOeiv!x#hvfziq3y*Srp&{OQE&wi34&+wJ`S zZ`{tyZFgVf###8xkDS?eIiBp3mki#oJ@jjR`*Cr$zsY&r;teZm5?4<;Q@gr|k>mZs zy=**k{vc;XuVQ&%KkM4ngCzwX5>_`0W}jxeaW?MUyTGV<Ym69Yd~OQeRJY-lhwiid zQVovPQCtq(dwRc_PBk&vRewl9PBEZFy0d>z+P+!Wl02B|^UlY3EiJnEcZnHn@b_`z z>U_`y-o<y*I5^BL!}rf%63Bj@6Z@zr`(29teg++0r-sC{%9C_%m*qw=oZ6!0<Imf^ zuz3E~oi_6ru3U9Hq7`{u{qlmTE&}1wGt+F>6fgV|rMtXA*X)wGS;ehM3A6ozbZd`y z6$r^!p7q;P>~b<&Z`togmhK5T4`B;O4qv<9ns_%_YRivHEA7`zcb)BX{-xO()gEx= z`TD6~GsBh3TkM=AjUAVTHkYaL9G=h-bfYf(h;T#w2M&kG)6-Zq3$HJ2Qn_?B?arT= zCu>;}4r~%>2x{}09kSSAmr$m2QBlHaW+Mp|yHB%Z<tOGy&ky`5pDOS94IT!KM^1b@ zEj4j{CWmmt@xRtF3|^0t=i0A{xzPHi{KM9zOc$oN^R;a;f0}jZRjJnrW%alD>$UdR zd0y&2u&?5%!|t2idgkh3o_hA0h2fr(JF}WEmG2P0(m3_`l%)(cnct#S*RNdi{o=&; zLUR=E1#h&t7dOc{Zu4U0rafB%8O-?MDRqI#tiMfezBf%?d@Zj{;&O=G-gZUvQkdQg zrbk8pzct^v@$>YXWs5vgas?WyW?f5<dXbr^(3!XRf@%8xJ9_gNrfdzorM2=|W7R2( zuvhoZ)Rmt-30nK&Q+?z*MiItUyqRqcaoJrWHV4?)e*Ox{X0<=kb}lMw_U9AX-<(yy zE#`SDiWDFVmmfYd;i^5a6_fbI8HYX!G6g7wm)_e^#3az-d-Y|?m0J^XqWmxa;+e|B z@|Lk>`xcq<{TBNB|A()WNina!__gh5!Mr6Ny~!$z^YV@`FIRTjEYcwCvr2r1+pQzF z_vU<l?(jVM%0ch7vX#CHt8}aGu8Vsvp1NkoB^yMHG@h?>T>K|es)TRfy=3mM@%|kV z$|`~DJ&tMT?o!JSs@a;6_<`wVX4L$Lrh;1-Tn_kH?%E$B(D1?U7^7*%TiXXVo)e{x ze@HVm{~+-&uH@Bxo#hS7bx$o_cyZZ8GoRVnDQB0j@l<WSe(L+I7f;?=J+eNv?{=qX z_$=5m?<|`KZ#TtXc>Z-&FT<aovJaU87R61pa=lgJxoydT>WuY_&ZqcoeP0{fUe#V1 zns7ofqOUrHwQGHv4#U!8hC;FC=0SPB{=d^_{&UuMc4$iS@yt$<4r0n&GVSwKe;@s< z{Ie&rOW#gjy1vs-`K#&F&xWTyNcIOS&khlX%{$p_xOcYB(RsoW$LWdAu>l9U9Ap)> z0@r)YRm$C^5*>7iMPbs#SD8`s6JwVwSlqC&ZiCE!**Jj)k0u#*j=XAqjnru(JQpms zJ#LUJ3w~x}Y^%=j@T+Tpz_OOjF4YaS-kd47yVr}{pZ=udNQsr^yhp9(cNWz<yjrDy zYl6VtZ7<JDoMeN$MBroA{yBnECbZ4;=9(%d7s4cvUB5(DGbljSMb7)e;eB2V%Q}x7 z`LeM#ZUevB-}M=@uB9h31vGIidSO{qS65%*@~Ge*^HQb{_a2^PO=w>xb^OQeJ3MoC zsqB~@Zx+mHFqe%ZPKiH%|A#N2b!KWz>^yjFD0%&FG}4<@b<S`sYsa!yy`w*OO` zy>5N@H5pNCFk8NVGu`;oB#sX=R9S;-i`KEbiL)piY1pFd+O_VQLh!td>1MH$bTwDp zN}Mmw<ERYEGgdd4J+qhEp382`65jORao(R6yA97S-D9@t^n7_kg<*a5s*+WD*-PZ! zc$W8WnQg>)h&Av=1^*-;bFV%Rm-@+%bQmjipVlkt+={z>@cOiMyi?}%s93{W3Jyid zzn}J;5=r=UsJwZ_oh4gSw=%pjwF<A}R(L*Zi}Q=G^CJWrjGnGsKC#5<*^-363u@yG zI2>$!UvC!8{=;O@H=*Id)W5YqIcpVO-MZ%t8j#6LJ$TDrrh99{*|U!)i?M$H1e#-6 zcILn=Uyg$+cdkuQ7Md3?^v`nA`KGvcf@vJTHsr1lao*Gln=|FFxcO$f@u?(6*{!o% zUUvUs3aDl<WbM(ksMHCb_u-aD^sGZ46N7^#cDxG)m9V8Ej?<gEnXlQL`uCyc$itd` zh9kCWOXo339NAqR_5EU5aICUs(}#VNKTPV{BqwGs^wuo<{_B{C*V>IrkHrnnCtZVQ z--p6p>87g3*M=~>5|No9B)W!SN~Y5cpGu|jd0URI+#|?#jsMnj)$@y&&sz3%rr-BT zAq-0I7ryy__Vpu9hc#<AeQ(&>;_3L$UM8BKk>|wX_G-(&^9&)@|GQT{>FyP+nVUA4 z%;n>m_-WEB^;2;bPuCt0*6Xh?aMp`75zb9VYPf64t?XNnU9Fb*O1jmNIm!Eiqrwa( zIfJDN3`ZX?74LanQ{(xu((GyF0d3IW#e&8qOafOuQ|h0%b~8^Byj^`^eRRw#%_dRN zgaZBjySJxuI<P1|+^7G_*znqv`o)h|uVDIIn;-Fc?dz#oiu;yaLM+{R{E&N^#p28h z>$(_1=IP93V{2}5>0<kB$|<MI@OVlb_u=i^1WVf(l_tM6%eA^MzesMWE#IS`O|`op z7ng0G4q8T2#DA+;O8g4Lv5j8^4r&EIO#go3?~Dx17aWBwwh3HYOpR5JoEA4TUE^DK z<>fZ{yHm7zEsFG56Obaod-|u_%QCHFcj<B_G6nc+Iy3Oi3lnJA6c)gJz+~s4nu}*w z81qb+b1U!iwyN5vOaf2OrTlkJ<~q=A!xXT7Zcq0TgPo5yJ`-;c;$5qJDw@g6Nyc+Y zG*d)*^$}j@yO)E-Zu_o0@H6Lr%ggf>Gd#I8?tXi$xARhinV~sSSLTP1+UW)1D;ci5 zZYwcp{-)u?;I%2iHX?&jV)?f`iG6?CIx^UdY$emOuZb(U|G#KHli|w5v-f|7@0k=n zBX7(11)tTAEu9xM!()N(ttF2lla-G|cQIV?ysFK3`EG}j`~Rz7g5`2^BMztEUh^<w z!R;kxUpCwnX^4bR7r0MhxRSbO(gJ1XQY&Fy4Mm3evjYVhf{gsQ9b|iFi^R7IUy)=> zY@QV%#i;SpKcO&t-Y=E~>lO%2kDhmSslmt4oD)(mrH|t-U7LDNYVHZ?Ye7vBB@0|t zJzm;X@2RytB5)`1_L|NaS90z5s)kG73QJJj+78cru}0o+uDsiMC-?Zhu$c^VzEn9f zylOcX6`;gbapKIOUrH5E8^ju{q|7z<NgdblWG!J8n*VZAeh1ssZx%L|I~5rCU(5J2 z{9Eh)P%3FxTT#p_&Gxx#mO8f-dmm!sI9b$D<$nF)S{B={YaOrh-!@OI`kOaH@dUTW zllSX)_m&*LGflXmLqY8(e5BwwXod67M|Mx&-QsYlwc~J@>&A3(vjew7Jm>ly3Qafc z^aUGsF?F8b!f@r04qw&TD-W;pZ=Ah1W1?nTiIJz{p*)%HCs)t<+RfVb-DUU6bsHI- zgalG&ZZ1iEkm+iYWBcLix7PE%svX~N$mzfKTKlrZJ@MO{FXqj~58Ty?LXsle{%{=W zx1Xd7Z|(f>vV1t*YC`<$4Jr%HOqN-meJhKxLo>mL`DC)oc_v+kQUkXj0mq#A;j>S( zvE2S*Wjp`nD?v}z2M1QNGIo?k7GAh~Ch3u&Z<C6l+XJuS%R!%CMkWfYF)U5uW%0FL zU~fLP;O*qgdyg+(v*7LQ4SI@)0;HF9>TcqbIBo9%Utjn5<0^NCd3QqgZw+F!c)0cH z&&LK^RbG5{WJprnVdM5i=K}N0xbEp9v4=y}oPBD^xI%lvkDR~9oX*DYwbSQo4oNXy zWb}A}a_`Y2%ClOm+n%u~u%s3T``<gEa^vg5#7dsj-7eG2&3CmV2`$-I8nMrtMdao_ z&d*;Xvz4DsW2^Ge(qL(rh^Wt!-$gI|xyNsp@mvO%x&D@ZS$~@5-;J`6U)C^@%SrBZ zQ=u-y*N_}=m|WlI%M`Hw^5>gv%Nzw&L>sI&{p^r#zjZe5%L8pS!6}{-zD9kBGBf`w zGGP+SZo804i=tDi_i{MY%zN}LSSQ$Fs#MKB{vBBb2EDx*x%WTr6LB?|@?&%EwPTg5 zYCTL9{sbr?l1;n*!q@A~>OGltZ%i_%Ym8^`Vo~5>7MpbNRI<zYrd6B=OqVhVTxWU8 zvY^7XL5|_^0_E9(UlsU1OuAX!AmDi_)|W|O(bk<Sm(OYO+;EzCiOwR|ZQfZ6pRt{m ze)KK)_H`>eTjh>F-(~Cb&NmrcVSB$VcXQj;1Ji`xpW$@SnW}(r2fNtj+xmHbyx6Y_ zGz9T+$*g5jSk_QFQ?tWp0qcT!UA|mFCvH4%&2B1U`q1p#DwN>Kx?tU$hE?o^4p-Lg zWuGbJf9S6MGo}2%$R#^hF5gt*c_FhVA#th?I9%?y->J*`Ew$`*>7=q)CjQKVH~$KG zPp;HeziVoABkXO<Rm3`liZgYaLl~0g@?DVIt<n=8;32e{b%9D_t7Fg0luiD==Xg1y z7+$Tsu|%P@r#3D^opln2L+mnLJ}diMfw7Oc4qPe?>j?4dS`z1&`|ufC;QSraSI?i3 zXMWZ6Mf<N>4Rr?9?J330M(u^aSH8{mxTR}am3W<hmSl(dlAuXnjDD}yc)X)ce!3XT zjKtZ09w^_0Z!$QpEyu`_&j4~$!rOis_VrT|SQp&$FKPn~N+nHh5;6K#S!=nB;m#B% zhJ7Zx6&OC&JZ>m0`X-m-+GdfkOZND@{|TSD9elJO#aZS2yFKYb;GGSdtABXkJo&9k zu;JId(}};O>T(i%7v%0=rfDScSK_D4+p>;h((KP|_S!jjX>teoB+l0Pset67HL6RQ z1VpVJmNErYe_O<|V4jv+Qse^G1!75_mG_ky_HX)mXTcnXE5Qk#tPcuAZwQ4m{8G}@ z7HpVw=DYq`9fpTHr|xV1l%&fkdz3fZg|S24sjB|Zk3-J`w;xowz%2N3pS<RyyGM(- z@6U3G?{l$CSN%JC34Ezo|4i?D+CLvnyOS2RLDiAlL4`$ZiGU3cbDy8M@eWO`0B#4} zBa@nBn!Z(bGU!Zab8CJX5??LhQLFennah^XjxnOM-R0GddDqW8y{^K_!*jV)ms3Um z+WW)r-*<~OOp4jF^WyiIKG2HXE&Jzw6PtYA{!?j^?()0qR$qN#)Su+>Cud^9WUp&G zCY8Y3Lx#zPD;Zp>I09BO$b8OnWKc2+Juu56)7@p=Itisv=1Xc@L?<|3u+yI-eI<yY zFQ`$MV^Qbfr~Om89PT6s1(Zu3pLczACF=w8D<zM7o6~QeE$v;`$qfpZ2P%8*Tjtd1 zeEXVR^tJV)tYYx5TN6ISzOY=iqeYHq<qRE-we7i+e#}ilj6OuX$=$yr@xzHwEr!w( z{i4g9RSy~&=4>i({b$G)7of}7A!78+GEvdGL#QFbXZ^+O`HvPHUC;5dNFlUqZ@-t= z$?q~Vg&V+YP^M^l%vCzid{9A`Gj^W9w{|0@fK{hW%zw>0t+?~Yk-Xehin+c_-uL3R zp4)xRKm66fE&KoN+i;sz<=U}rUP5yxBLz=xpkqtq>JWx3eF?87PIoQF4$TKE^F`L_ zZgtGoWC+w3b>VcFeZzbu!<9ze!qY8VU&m`PXnRgpjFWhhm+kkZ%CMp)O312%y)CF< zg?8@5x4MB0UE+Rcrnd+2%x8Bw`a1LPhSv{_m&e=3i|qenv0}+JQ%^*IM72a-&i*!O zfv`<B<BDKk2ZpTo$~O87qL>7}*1Y}fc$HZ|l_59I+~tbePI=iIN(W7z?zp7PpsHoX zx!3JEi^4qSPl9IREB<SrUo1B%NZpbBV@C9@qTGvhm+l3zD0nG*h1j~Ry=Sj=U4GeT z#%rIvq-}0T?0@b2z5c#b9Lv>&+s?^cuh~5j12PMjC$4>|d0QoevE$bkCa=Yw*2@}7 z8Mwq|HD_@;s7%~;{`rB`r@0-ZuXc9aQu)4^Ia+0|pJfgA8|{@-J{)-QXlu-hwo5V@ z7x$#NZY)?;UUL6xT658o*jL`_jNU2}>Q>HrQN4A~$9J<9#4fs2dX;}htndn7rkN@S zIK-wd4qEqgH-Cd>X^wNeDx&B;{-m|lfhW7_lo_X$(6?`j519g<E6A8xhg<B6ViLIQ z|Lv#3O5GJpL2)xFV7E*i<BUCFT6?s9$?OY?iEJ?K*kN}~Wt+*DU!l3%Oy+M<7j0Ot zA3fK88^|FZRSGxDvcAXY*%`VVzx`aB?Y+VUdp(uRYKax?z1J_cPnov6{tDCX&MOk| z-sqNujmwIwRTEogxoHbEysDYObS>1QfM>-th9f1@Ywg%$Kl^OZ^<ucS!f)m!E8`_< zYh0^CmM)32TvwG8b+T4LJ~k-FBwcmlk*f~ZDqor?>ay-_3yzi--lFi<lXXFya=7o8 zy;1K%?^!EcwRm*n{x2V{KF2HTwm3crJvF~->m7M^U0JwOCY(B0_p-b8|1ZU#|0gfF z9+=7agISs3xlZiV`ks~MpsdvT`rA*1wX7XN4f{-EH9AGjHMhnE|6DzTNr1ETZLLS# z5fz6eFN$AWxATrFTDN`rRgrz$*w4-~&Ae~Ekl{!WyCpb~A{Z+!&Hc!laGY_cm)<X9 z<=3U!jFwu3d`onY>*=`7X>T{2JOBK@f0I~4hn&ck1uYD7zK1z7C>2SBcr!R{xcOYz zn?X(Hg09sDR_0upB~PYp^V*~1v3BA4kNx{B-}_#hQxfi%FlDyZ8uvqW0+Ibww_IP% zaO4x0Pqeat^ZNVDX1qRAJazM96<zmyovPrirQqd>Xh;b@``A$XJbo&t!<y%lALmuC zQ()jXXDax2`~7oy<$5_#>>Nm+fBxY0Y2po@>?PfNIgJ8chquZxYIJU#ykPmu1oeB8 z=b0mOH+&PkzWzw}%{wiuu8Fd9-EM81X381K>F`tjeWMD;^jr?VP3QH`EJ=}GbZRN@ z)H*HKOIi!_Oi#jh5!jU6V#{tXtI_*kFZ9JqU1g@|zUw<981{YhOLVlk7T1`?>5u?& z#<QR(7tRAqn0L9dZ<{m6iNP!Bjmm+?i_a@++H6XB7rpw^LFde6T(i43Z1LE&%yh!H zC4W`389Tgm!Wg`6nyo3ndOY!Ga~+Rx{(QbSmqZ;VDQ(?)bhF1ML=E(j`%m}1#QU!T zG+s_+u{{B*ho=}8yz21a2n_IM)M(-eHG5-b$Z^@^MQQK;mu9E(z7^dKUdj|8l&sG9 z((;Stl5d4!8RzwR7A;)*P`j7o^2?rvE!TH5xUlyBo~3o<gxQmildG>Euibg~z@p;@ zELn_yZ5vbhrZ(-FV9~x#&~H;Cyc6Q{{Dyw5Va1sz|5aW%zMGcL&GcdS+%DDy=OooS zQ?oT0_TN-tSZvb}pEcc&;Z<qx@;kEr3}qj#M6OktXuRz87t2XqlefIsb<&`tZCcy6 z2U(ZBB^$P=|2;TiD}&3Ur`^9rwQ3s{=bz+s_#4@*7`UsB$C)W}!SZ9zb=KOnFI3^Y zuBwDwvSnY7a=s<<)1Fg*h2y(t>G3DGXESy*7Juw&Vwf_gbgM|ihYThb^&7cKnXC)q zu2+D@95zqylVglH`9*V*=<DJiO0%*#oBY0fotV67DPv*seeQ_q>0Ey$JgS2jSJ+Em zb-BN~HfOtMtNfFrS8i``3$s5avN7cIjIB#P?9!=t{`XJm<WJ}8cG@M`u3CZ^{1u$` zL#*wT<fnQeg}5gcwgs;i2=UCx-?!cDf5Z_dUDgMRvh%oa1#Z3~wod%8NrcpwU2aR9 zJDG!WZ~Sfu@aX!Qb8A!CR=4X6ZHfxZmM*m2aciBt$>t3EOn+sD+NGDYT+eB4UGw&D zH)G`Dm9~F2<gYf}|0$v(^zVkqFYjj6R0l12S5UlEBkL@@snGaEyKI8M@2uaaj?Czj z;1O<^G0&wow6f>u_XX3K0{AlygfnTs-DSCVUEnH>DUais)27{NpK{E*>HOwM--&^I z(HB{gRxM?GKdqKGaT34(gl|jal64s-uHF=N!cukO&b{@93Y<6BKDeA+l6d@H*oxG( z)3f(%EsEV|t2y0n((j20%ddF8efT4GIn#$;^Lqu$=a$X-4O$Vh?QU80_W%EW?=F0N z?CJK$-g{zqm*w@_e&g6CU-@KW-nTc8_%CcqJ$+~8@_Dby?i9Lj|9sAR_vUj}r`JY> z{$aJL{FG9DBe5NPcH-Nu*W=a|KR@Ss8?;!dqUEYx>r0_PPX~r(nexd(4OXipm;{(R zZRTxT@r_B~`gNJBOG6kQ{mQ(+{4_tA>wq7#H>-lu%E_O;ObKF)0Qp$@?4E+3S-ZXO zE@s_hW@FyFWw~I(im+haCvzqpzjSZE#Do%`un#YTdJSU#vYF0ZT6^@>scfJ4Yfn_K zWjBKo=Q?M`9W_6TzJnGn{e4%yzc~3=PvQD~zg9`xRBV`Sy?uknHXO^(TCWjWe)ioV z!*90PS=%ocobz_S-Bx^eSLx~Z!F**4jyW$c-_Ul@_n*JhL<Sif?fdI&`DR!-xAIo% zOl$>Z1c$5?-6`At-d--;P!;=F^7}F2hPk#(0w=djHY&(k$q=*sBlGU)vm2bsURJlh zUp}o#?8B`GcdvL<Us7eRsyy<m_o`rn)$^r3p0|ICAKte~EPQ%e%gyu6b>~jsi=Uq# zzjIp=W5v<r;O62Rrc*(AVVyH$#YxraEO9#xJ~XyIf8QpZcVhe6h>c1g9yuOqlr&Cb z$zStLiciMkLhi<+VtE%A#n@h07rT2`Z28@*Yvbp4zhc_)t?u{R>Gd&S&s~4JwQb3X zPxV3*4*T^vOK~w~e^?^Re6`4Qg~DI96G05Wt}!OvvgWOdO}_K%U_^Y{`^A&8xS5xW ztupOc8##Y2L(BH?_-G}MXrZVB*}MO2)O7vrSuMpFp<B4_b=+wow(9>$A2?12@w{f7 z{>8xH$%d8}mmMD5-a5f^=cal;hF9`!D$*8p*B3JUxio#>lYhUi@82ctZ*%eOw%d8{ zvg3cx+Wq_8?$5WMpPenfCsSD6FT~xl{Kv!g-Q0RR6n^}lSN*PV_nS@L7r*sNoA1)y ze&>?yuNR9CKECX4e|K)dAx_udJd#E#7Up{<6eh4|*_7Ng%eD&45t=vqp?HJUdIc7R zWs{y1?&WY;a>%1O?s`R-4`apQ1(B-X13md{LuxlXkKCHK`0m=YgxKl(zP<W-Gj?~> zf$Yq9XNe|plS}j57?dPdN<FYC^81)@`?q-W^}xCgPb&$-Sj8pxf84rKIIVQii_a?2 zV9&Lv^IzMR8*QF=s3pNm?Dd~2(4sAQ!z7mv%XH&nV!}T!ne11jKEI~uLw!4+?45nT z-$iecbqF|w?WmI4HPPGkUg#uoi|gflm0fXh!^!Hcii-mN`7@oGakB7N_dTuy->;=< zGZ=ndx{+CdXX5$HifG^L`FEA)F|>GW``);9rl;fIgz9-FueVN0Vofl;z9Y4@?*Eq9 zE4zQN@7SWwD|Lx!L)5*<jvCA5U*fC(Ckb?WboBife6n!+!jc7l`j<S~`rws%(QB8D zZyHm$K}*06fDV<Bt$MN0HTU`a`hCB@ZQn2Z=l&d~4Yj|&9W2XUyOY^eYFAG56j1lh zHnqj&%q2d?73}MDt}!HC-2H61sX#;3+7Kzmju&s1WSn0;WA3rls%2a|R2SX1&wXzD zq3B}WrFkI?uQ+~wU;Sk6)p;dP-m!f9cl5#3zg59?{wr_lw4E~jWFN$Jm5Ect>5278 zF|GqvA`SC@o=LxRGkt#S6}F4tR{Ga!{n&50yx}EdPEAQj(iBz4>P27lYd_i?P+%~W zIQdwIMIlQtyRIyIC4)=R9g~E+vqAg(j#Oz>%bz$uLuBu_AfDh$k%`TbQA$xhnZN(m zwtl_paO*P1fh^zi+3S~H*}d(%ej5Yd$@i6)<|==FJAb#y^zA`%{4;{y6s!;n`pS0l zyyvz6hHDEMT$ZfkWjZ*^;UgFHlo;6Jv_C)o*mbCUV{Od25impO&=%unhbZ$ZFRfFP z7F=JH_;AMp;qy)mueN$eayTs6f8mAe`=m#XE2oHNb1^BslX7@%*}TxnJ7~)e0q0+R zYc`1bMk!TAHkr-7<bG@NGTuw?1=of0mUM}Qd}jFe@2En-Mn8f7i$fM}QO>kjbnU63 z-Qlecljbe{2X2~`YA_t{lYPDIR@UkSsq%AkEZ;S<%N2l@_`SZmIvlY)tvq;{52sD# zJ`)3W*^+<>UTHr*JY45H+srjHLBO)d#NY#q60gtudwZK-8}RzPKBg{JGp)sOA=8F{ zEG{O2zzLr$xEX)cDl@#5(vVno{1O9y_Z;m!5rd$l8^0ZTpDp=uq-NUAA1SrdBfMEI zZ~A81l2{d@{5F$Cp-v}+dC&2pb49@iI`+6f;QDu6&Yq>_A$zw?oB2*Lk5vn@ed1h$ zs==9##oz8{%7j0XaeMXaK6bkX9&iwHbUu(MuhLZabm}7;FAo;pgWEv|B+o6ob#iXy zvzZe+7ks}{eBL2Ktx<Nx#|xIf7wK?X$#%xQR?hBE5NMDN`PHSv@_;{2B5KRu9re?> z96l}x=@JttWL0>jdi%G;eubS3E?)(z<)$n<&E@$~@tV-ZxXj%BZ>$!9ni#XpgSZc5 zEj@Yh>+;jAjS0IXJa2ro|FwLJa^n~Ichb}AV>~qvS$LdUyn5b@H1mm4hd=K2V@>b| zIpo7y>CcfuTNtjWZh0_wLK%m{-2FP-j2%a|&w9L<$zXfis-P_mKVr|gTv*YS@ILtu z)Bjy}G-?=aS3I00x=pOW+ogKx)|Z<yK<U+?;_<43bCzm<em=!!+P8m4Cp=qrHr0}G z1*^QvL;3ge^Xp?gl|ET`9GL98#y1OTV&+8Pd{xKrB^SE)u4TBhWo5v@1(7TZPF1V5 zIZQRlU=$2zxR-Tl`GL4P-JJ|yo|d#&oan0mHan!`?X-@6fs1%UjZ7}hi(t^|x7K<X z(hM5!x#NF%%9g$LhAO-MIo*z_JO8<A@0@)1tMV>ZryqMQy6{-xb?oi0^RvLg0693Q zx83iiP^zZ`%R-sutO`mwOJ$h?rf)dq!f?-GOU7=$8tt|a)65H(ZxwnUy!oec1E(m5 zLwxA;NbgO;4dP#CMnIi%R!@Gyw<S}Pw;Y$fyzy$nD{1Xd&yW1F`@3^fTTpq&kE8#e z+gm8!@5^|`EvIE87k*Icip7Z{_UOpgD{}CTWX;Lu+G#Dzr!u(QVt2gce<0`VCD!*( zmT6^cGSp|VEI8ZD=Dg{Z$$~4>Kt;%(@1K`46+C+V{?^@7O;0X<v$-s`cEj$gJh~bQ zx}v|O4&{hSX8LO}Y(2g=O0()h_>(zhnXRU4IH&%fcqi&#yLzzwx+m-&GDmLrK4k*c zB#@JhK7N?W4@nR&<pR=tZ@Dsjld-gy5NV0xI-s0iwJ_tiewG5m*6&A`@o_%>rdaIt zE;)#mN#JtXH=AIwG<AmmS5|Lm<GB{JalPUhHg?bIOP3mNJ?{Hjah2hom8JTt^2K*% z@2%em+PVIJ{qi>-ZT?-{{$WShU$?q9F`(7f$Q}HWQ`0n>H*_+yNr+6E{&>RA_=fE+ zw_F*bvNRd$Q&<#~tl!$Lm^@3&^7>0nmIqH-PqHc$vETX}^2l?Ih-?T$_R1UA1=6nn z@&t7W>I*`(-4}oRqjW%7XOiTy>)fvv$gVl>x;ME}$J=OC@0YLLzXKW4c#lKRA(FF7 zP(HQ6OpEWEg)W0CqwX3@mIr~cU91n*+c15&ExTHsVPd*2czlqZZ71{FN-a<IU`?yF z9BY;)#XC#bWbdn;1e&JrZ|KQd@VZj@fOGhbjUY?6*nTL8TgLKGJO5hR+l=cAi<>_m zzU_fDO)I-WFf}4vguQx>-;Y&CV~aT)q)%2pn!A+g!-X_~hH@TV(FTbXlbJTApAYtQ zo#@qgJUD(g*iI((E#fh^CSU8jX1_yVLLhHR*37;7XQ$5C{9V88MbS_B`My8pFTU?M zGxhj~C)b;H$DQCju>b2qhBH#|r1zz2ug2kBi!5$D4v=+nSh8@7c{{_OlV^`I1zdL$ z-Q4|G+YxjaPgl50wCX|W6S5iSjg#_nKkfW^Vd>FdJ+*i9@(gcW58x5JS2lkMQ$YQ_ zRiR6dx_xS&y19Abu`Perdw)-St6lW@WHRTeRc7V;E%Ytynf#FFU#>i<U=sNG_EAFr zWy$}q{TNnl?Mk{T(y+X=U!CE7&Zn-7)hWDUO6G4X4QywKDy>i~iZc3UD&jm<e7AoP z<Bum#Tz@9V$A`%>W=t<!aHwN%x#3*xpjAZ&Hhf_`ZTh5e>yed9e|uXpRy=eTexnwY z44<jLz#KFsF|ktSO<@#+7jIC6Er)~b8l`V{{cdtQ%oMw9mR$Jh{0u*KrLfhL;_Osb zNj386O8%DWdU;CrQrn$ro)tAg4?l;kHLCSrQG94Z{DphFXRH%nn;r1Dz5g3Wn6|^w zqVpTVn?Eb33LuS4ym=s)mVGT;jiL0UdWiIdZ_fl8-0y!1y7(==TwAoEy>#6?2Ai$F zHFlr$-Y)LVs<6m(a?^>#YB?3Tb6hLe&UtE@-B`<e^j=h?#~qzqPu7J0o%v7tU3u?k zEjZ8FT(SAPo?4~-#$|!w3l8$nKgY~1cQEUz#+E<j6@Co=el|{ji}1Zhw87Ni)mtr^ zzInLJocFKmklb=s1(*5Yh+iq#u>WOP#AdZ?GE4#2Tr*cMX<}Due_LtrAf1)PY~9bK zwz%U_3GvQ`Z$&4YE%Em}lq}4Zv^J`Ami*ie8(!EM)@Hwt^|_`{x9{y`SJ8}p*DF0P zPWiA&>#F9qJLW}o1$9#vD#OPWZz{zfyV@o8C2=o%V%v#B7B?PG$Z~QxSecp6$M|D& zbT{h)z9@mi4l~3o#m~vJM~W|9JIO@G>S(*fwf0ojOK%>`((t@KY2*5ZGvdV6b3Iuf zDC>(KiQ1}^D=!zX!|-wO#e2JF)ZCk>AFy2h*T1hvnF@~1;{9e6y72i5)`LI)SNyL) z8dW?c_S4910UOtG=K~2`OJ^MsZRpVHX}0wfuXWcm&Acw^WU^JH;rN{}9fpSsH~$U^ zW;k?Mf_*;2oXsXX8C;%hu;u^d7ba79_`-u(k;~?-Wc_9;ayfY0rD-7ySsTsLGfP<# z?3Eb`<Eq~$ZPKsndHKb;;{6tep4T7!z1Cl}WUTNzUsxu*(ohC+rsNdePpLhb(k#Iz z9%n6DzGP9((N|xXHuz3vsL42!y)ZL1OOv60Z*IiJGM3C6wX>WV{w>c;+_TN=2qTmG zn@WWbo0-<juIr2`2BlZAdy}UgOc%Vk`_i|sEleBU@3{W?__=ilPQPB<Z>7$2n*Gh* zZrdF{H@ENSIC1IX^A(fVUS~MQ`^&2<=KuHaNabQ`ca3E7g`Hm}I!*frb`sBP!N&>x zyB}=~Vw5ml8tcv2p}@-f>C4U9RhkTfDMIX>Jy*g`ep#URS+(tJVq~MrtsQBqsc&9! z{+8-G`9(F$#ydKQvExriQI6{6KXz69XFIhF=c`BfTzjxktH00AeWr^p!(+8N|E@c) zZ`vNa<-6n<Y;a`TiRp$c3-m6B_`dnI(4c#_#vQrxpUJ_WZf|(Uk=s4XlR@r&6U&1= zTr3JKt+xEj{%m5ps#0*)t4QLS@HbPD*H=^~sN9mA7Q%4ox9;&Up_gx+_hcnawt3lb z<jC!wKdn|jI6{k_{5<&R+CRUp3hh9%2`SvrssR)Pi({m1GC%E@b>pjZVw-74;fCXm zJGg$wd@H#i7RtPJ8PkVv4_$BPzBGz3WmWjZbL`>0WmhC_X>|%5owCT5-$pO8@oT}3 zw5`j`W^;qWAzdK5a4D~8$>aq`qf~dw)!G>BieUJqb*SUy7X6mhan)TiGou);asAw9 z`S_k8TJqpwT*19PTzIdV=BX0CEgGOgY*B#itwod0q-ipI4Vic2;q`EThDDb=WK_&& zZSyKR@>A@;vrG!>GSR}bUVEm0ZK>rw`tMeC(g*P*&s&qY95|aALWAC&KmOM@_;M1* zp^e}5zP*25yfXg5+N<-@mw5cT-f)ZCA+o4RJ|5m+(1?C=T4JS5$=q{UN#YaQZ(jP& zwTSm??Z%Gk%gZihDpkist1?Wi=E==pRUDb6$>4wD26M-yjKUX&Np&Y{Lni$fe9iW@ zvZ`-Re)($2NzXS%sh*n!3YLZEAL}pkUi$Vy_WZ5w?n<vY5<PAQ^L~(f{o6%KuKInF zxoPNsizSDPUF~fI6z8`xOj)pbN9iWduMd9Abzs={@7L?RhldXRnrWDPYzMdgo(rX~ zulc^cx+{Sll)>8=T3)O=I(>886uH!>EuOb`{9O9d?oA;_oZz>8TfW3hi{d&k|Ng|a z3^pIn36@P3kDRf7?Ifeb8D`s_uPnQ@K;zMxk2#z-t_S!CwaZrq>)lt>*~k#`-c+bO z{L~ND)1N%|<^Fe6%By~#B=n-OLH6%q=GRizd>T`lR*Oz5)5@Dv5@c&pr!LUYE?YL^ z_07%cAO25L^}Ykz!op|!CE)wV{`xzywO_BMy}!n29RN<}4@_4DRGV%TY)M>p{jKNi z36b7cXLfDxjQw@u$se;R^POgYQv<b$0#}Cx>oZ-bDoB`GanT?*=X|s4|Hz5;_1PhA zI@)itHQG#^erW&XOY~%2AQqdsXz5d#7wY>|SrXg+%>L1RDSy}f#LAX+tTEb4zNFj{ z@mx|>@W)Sqq5Nj5xOw)qH4pwr=kL8*``r3I=RbLyiVe4`-|zjpZY^8cf}Dx^j~j!h zKiR)y_1~v!77Hb6Tzc2tC%T?*S?yBZY+>DR7V8;$1UPzC80xQ@E@Lps-jT5Dl}pS6 z(=E>(=RVZ=;qbNlsiE?**P_3ry8bTk{IM{rZA+qVtWe2;^GB{<=5|=~{j=-D_L(}W z2cyFGmI>VZsKcTlH2LwLLgpnNkm#;^qAXwd`T2SNfA;ToJdRoJH@E43eDzz??Qgf; zUS%82|Hc7S!w59UW_@{@6YLT5;R4Hg10lyImUEY$oi<GG-~Hra6T_5kD;g$U(_nb3 zR2LDl?ubE2Q_{wD&YJ}rUYpfT*q?T1mEqT}THd1%-X4y>(mie45~cw4zw;(2C2pIO z{AEx1o~bE^c(RK=ipTlL+Wt9xwsvdSeM6}~8ApCTUe~XBwfS*56XTDy`L(BGi%zP( zTRJ_Ci{<_j&&f^S0vEgOwEceP@|(L>ki;oxlIwZ)+VdMCLgIO14IUR4+)gl3-I-RK zxZu0%j9ZWO-i2#1-0$<yoV=9bOQqFnO$Ngi#~j_;x<WVg@hRP%#~wI8vf)x<k?)s@ z(|T%okE)z_YW-h}<3PTeNJG>b#aQp9CoCs%9jN~{TjbACE4R0Qj~BJ-uqf1>dGx2S zUS{H}gCDIM8Dy+VG7NbCEaa~}0qVK_{I)Ik_OAFpkHoXiUt_ioC{qwzT_fqta81j7 z`d2%}tE`i@yfT}?qPiw#x8nV_mFnHLe9U|o&Z}!JPskQ&2x~dKs7SSqas5Ku^SbBL zlo`U;XnyJDHC?4NQS_VXmTzyDb*XOv1!ugQg1hRAR0)BG8PB$Vmq?p*if!VVs=xX{ zVpp?fcBXyUGKXQyd~o+$U7+DXGrwKI>FMJCy$)~raB1n%?)%ZqZyateydLt<J6Jqx zy;|Ado369jIi_S@$~8FY-9D+{Qd`m|v1*xXB8%2ck=wFpRo9guhFcm5^BLBp$sO3y zJZElOyX#Xg9_B?C=downZ(>*!w=QzEmQZA3ymPid?XUkTFFs`_+Xj9qY&bBjIDvP; zx|h-C{{1;{`rv)g;W-+tBCD>YC^F2S`!B7aZuX>3P^XTQ<-sh|>^rZnwzl5j7Sky( zzhARi+9YGbt<|Lm`KHMJ@|I)zaO~jbtWQsKlmkFZ3Fp7}nH{q1z?ZdK?iy%_t1R7k z{Gh_BEeqDBGe-FGFW4I=VaF&jRZE?x!>wBGPr(VMJNoO|WBPSve@jI<e@g%PKU#JY zr-SY_g?n0wZ`%$T@l-H;bUt%0dB)t^#Wf$qEB}{>E(m@n_jKLbz-5eQKN}Y_U6_`t zvb7zQIxDUOy6?1pzsLB;|GVY)OF@?`fp&*CeQk){U1nOno$p5DCTI3&2Znn~SQ1Qa zb<Em9bD~AhzvzfIco^}dENE9;bRnr<xLG{lUw@ZSZZFdXx1__1l$IWLsFJmeJM~U+ zXTI2pFU7M@v)}O5<@+5MF?musDBiob2F^Yjt@@&Lhd{%2{!V>{^I1{%7#Y<<EfbcP z%Fpd&7g)Ktpl-<(#hZsfY4gvG<95%M`JU!2xVyW&oL#1%;r5oy$**s3U;q1&`2LJ< zd9oXrQ``Sd?QdBhJIm<DVTEO@TGu);GX7W|XQ|(~&C<L0Yi#L)gZ96kUHhK-rZDN& z;?B$`22!33$L2o!^falbYYHFpqQJiYMZ04TFtL5rad;}UGtc|@KJjaOJF*J?{a?Zq z(7knHv9@r->W~AxEDNTTcPC$Ze$jlXR{NI4{}nDtzD&qE%I)j9D$svs3it8%EKCKv z-)`d$+Sf4I&+24s>DADK|5pe!<*pShTkz(>{!fYw8)wAJIm?7`&vyCtezxn~O5fKl zTh7)Qt23l7Xa^l|^(^OM^K!8U?XdRcoSD5$7s7j0wSug8Y;EfwT(z9o#AOtzP}-r` z7iINr?*_F;Qf-s6Ja@d^dFZ)>>TNAY_B##?_g0;YJh$N*f4$%Wl~Busjz8>I=fr;a zc<Id?h9gogpp|&S90x#mF*!12aM*<~N?ICC-=6X3$H#*u1=%gK8rEU!_5Yk|XSl-5 z9+VftJ$Hr}+xmO)a&rQV3eH4L5^mUaZ_WC7%WeI9{4<joxED`jy1<rtC5mCuE+?6q zuQL`aEj@gpQDV~ObLPJB+!yQ%_O6fr+;jKJqYdv{x7O;PpSq`6RkR^$%|rG>r$wJI z9TDQPWM^6MuQ1}=ggVyxiS6${E?XsI;PNm1;D=>aN9}k1bcM9nIaw0+*ZsY7EjnLz zN#oCp{dH6F-{07{*!tIt#aHL8We0`sWt)yUmxJ8{nY1*wbunDprXaaR)*?;s<lg7& z_so=jk$7z}+nd6qLSa_(DGWV3FYI0K&fvy+s%2qo;}Wf%e>OVlK8tENa%{S-)luKt zWY>bdOM(}D?WomXQ@b!XuXgF4bDleX-aHh<w{b~^zy3ABS5Fn6^3)2|Kjf?_Dsp5{ z`ee`TcIGVSfyKM_B!CB-tQ#3vRxsLthUwqVHvk>8U7Tjdz4|q8*@8C>9+UK+KTi|k zKHzo4QDT=7BTwgS)$keHUUnC~xBTaIyFX9suh916oi9y$PpC?`DRUlpoW$iI+p8%i zsv+FwcTxGOmR{|WZA<~{)K7LyRN1*S`F^*Cw-&?1X~*X&YgVmQUpBF{A;R+T743iX zZq-hy-nCMTooC|zNQQ%5uN93QOs^YF{#5YCPlKVgm0O(c+O0(PQ+#{R9p^gWrQ~vW zLnuqYF5Z<1Zw@f>^Uv61@cd<?Y!;jS+}G!4#a-rjpC++3kiqVaU_)S|QQ`}`=Aif= z+MPSHTVwoPJWM}nn3;du+p*~g(*@;glNMe6o8T*Z$?#@zn`GUVhx)(%fmd;!_^;#e zN_wZ-FR!)NWhODn>=)*6sQ9~X->+8*f901o{;#io&SZAH=G*_(F&a^)yzg(1TE!Qt zUz!ovUcdTY_)6!kmsVZc7d6Fd>$zFY3q0nC3JPj@HVZjkP;+|nWQs!3G#8<X%_j~j zPHa}0RPyiVIlJ%YY`_02EBiL{W@TFW{`s$Wtxqp6D=ROXe{<&hKXu>#?iGyA-@CQ^ z?bhpUZY;Ao-#Oe|=w7VAP|BB(y~|~abGe$sminZoc#b5086}2``$ML^t^JztUrX-f zlZ@D9YvXcWXuh@KK48MqvnMQOHFxfDMZr*wU_RTd9!;}9uA${?FZ|EX4DAq0{@V99 z-lcUf$Ep_ZHKE<_ei+r<S~S74X6cW_)2)nMc1v`n4~1R`<-S*8F3`a7gl%%pgP*&( z7;o&Wt<L}bcKdhR|7t!n9=LyhclU3qtaaIz)#j{s8aFXt-cvN8rE-<umudU<WG3A9 zNIVtrtM%0kgZ$3@cDuw+Y|7uFzoq%`+q>3$Tu*=Ayzoe6Rmak4Oc$Q%>|#lnrQBd} zyZ7+qWN+4lka;PVTTa+5OI^jkcW!p8UWn7yjeGL<CjS=?3|z~w$8&4Rloeus{yp7! zc$ps8*3LB|myS!+HC&p;TX@eo|JL@EoG<FvY*+VnXBOf;e?OGt!1|h}+V?K|+vkc` z``dn<0va8^anzTwe8HOwqH_frtS(01+O)JW&$so(hbJ!eQW5&jJ@cal8b0V<KE1W$ zQe~Z)!6Mb|iZZ7z_Amwf-stJ_)N>m1p{RNNFVp|Hx|XlK;Hn<ZH{;3w-t5}R>2Llk zX{{1%FnG3Yz2NkdpQr!2YgJ&VcHXsdM$f)uoSDh(bL=xuw>fn0(79mD(Xpc2agv@* zeYhfn`RyFz_iwj*{{~OjzGu7CQ^0<TPlEBZqfqbxt8$Kc*_nyIJDeDjL<01k9~|I~ zn-#a>(PRg9#+_^3TXJ3q`aWTvws;~-Ld@pq=?p!y)b!iWZ9Y<B{_k2*iu?0Lp0^Ho zeiwVQ>6K*eml(}ex>bdpTX&rJmGrbp!lttEdTPSU>}lLDlbRroJO57SK<kow^GsxU zJxsu^<F|UD@V>wP&*IoOpi9~QC7<O0g<kI7f~D(<+mB4v=Y1zBC)Tjxi^Gdl4xhUW zPh?&`U7<GRw#3#==O<riGRwNPT#|Kx*^{XmXHRs<HMR;Iz8|IbJv+GIrQz#OZEMUw z?2HNCx^6`n!>%JyF)4p-rwV>u(D}YSYDXy7&)S8z`?sVzUoi@GSloR=Ak#`}LPo{E zbxsU@5{8Fv7oFDK3u?z&KkhO9bKtFh%|q^c-TKF@H<(M^Y24)e{Z6akmUEvEh6F_2 zaQpP3ck)Xc+2k~Fsq4umLHh2(l{?q24#>@Lysg7zkY_i?o59U@@^t6t30(&EoBiLi zEcn(kW#WT1JgwQjA&!&#vRD<C6}-(p;(G1+e!+^Lv9Bx67AdM-oAK$Yc(J&>)wzAK zz5@F_I<IZ9QCZvk{Jj>7!VLTReeoYIu8Xy{w<>-0WP7{y>ouF-tOBP!ho$RfR3@%j zyS#6Sf--N8a%IQ<)$_DO8#Mkg%qY5ay8f!MK*O%0n{EGW1hk%JxG}D<Hu7)*Ij=n0 zajN>if9sYW4cEP}*z!eH(|!rg9F|2oy(J;q46#YNdYksmTXgK`Vbk+IdX;C38V~9I zX}$UT#I${TI-<h5v$ynXFlDl+NLTz@7sRkj!oF@#KIdg{a?Ab7u$#@c^vbMnfloIu zZTQUgvHe?Ol_b-@*az{#Oz#a^#2R)L96h$DzxmWrjo0mNLJft#=h{6MXb4=q<mrXQ zVG=(N-~V5|po}RXy6VsQwTJ)ik9<1ms??9mH~)8PuM%z0+Ze_fWApO=+9w|s103J| z+8f5z^W$Yr+?IwjOeG?hZZ|$=I>|O~zb1q5L0Jv!EeTDDtLIrwy12vSg_+46cag>Q zNiP>N^Zh&E7w%PD*>djlX2a))w~03t)-YTa0XgN>v>2haf(@^)tPria`$0T-^H!%{ zyOb_4@zn?NT++A!bA(uH$vKPn56!z@d(Tg2*>z%v+Z%1xfBr9&l)hhN)Zi|;#lUo& zbrP>leK3PslXXB@#(I5~s_Z~E?P*&soP8;1;kfhDlnaN2BQ8IR-zFlhP;ze(Z^ZQz zZ_g`5IhZyvObHC_nQ-)A-zud=E=87KR*1fd{~*q^H|&L0kfzUy($_n6CZ69`e0s}D z?NwVF4|43T?bQfalXzWRTij*;_2*W_W!kJP^S6~WG1iEki4YNMc(3Dk{$hj6;m_u* z2}(PdQ`^^Va5?X1Thy>}_Ld85mpS(IuMQGi%(~#dbg}d4tqfNx>&yxkOurpy>yWL< zuz3~}TcFbQMb(?ULO$2@+Q<jj{HPA<zs2bgGvmhFWB)E|oJha5_VIy9=QTg>)w{~+ zFg>FC&_6rD414wM|3BW6NxxdRv>{;nMOT(L^EV|dv*J@&rtbrBPB{-_#iLGjw_}3t zGLDQlj#vkToe5G-o1t_?nSI4Q@9zD4oaW2j`zD=U?c<{EXHm8DMlU$1YM=J6JXK`U z#ju8L`h+f_lYu8bFP+^j`_)HydcC5aoD}O%pIc=|*_Q2FeNgq<qKbkmZzg?RI-C8` z!i$@0Kc-z@DYD|*_1elpd+slVyp3}lK=E{3paFC}YLct*Az2OUFCCIyECmhIes4(f z<i4B8!pQg{OSg5|=LPF675^@BPw-m3d~NQ5-2r)v4{ee;tHChwaprbqFBNyi^Ww(& zA<wUMxySRz^C&zBzo~H|-RXSxZ%b7J*=Sz9$zL^o?faE?^4I_O%N!UU75d!2RjS3R zr%@`%|1Q08-c1LO{=%T@ihq5I44#!cm{Zwz)t+z^GE@AeCBMxevv9Ux!wJ(8)9Lab z%N!ZL)$P3SJKTxep}OF@;nTkhe(~?jdYa+KD6#FDqf6%#jVC{il4}0M>fa0vdi<WR zuxZXEH%Gh6b@iI}C7(2`Vog{X(Y@%r_R{+wADZ)P-#hkR@MlfgT(8EJRd=VGuU=VQ zJyAnf&GYTUpR<_^1VL5vPQ#)JE>G9m6(*cA&@Jh<WT`ooXL?$|=xxpa?)NRzUT+I2 zt8#BQYv^ra+8_|9WXV;zPlWgA)<v1T-+Ou9b90nT%M^KH?D*v7dCiY^U(eg_-+e^& z+M*Y!dOHN%w?w>C`1kFS&izA2*9B{Sux_6_<<9XF^<o+2%q=AnN?Y5X=W`u!DPTXv zmpi>7M!WXWfhh%15gXgN60Eg4B+RxdFyy{Z&}I0#Vkz(419n`3Gcs><-pD<%nqkYc zTT}Nf)_C$WHkzxlZ<p;nQQzzhVon?!liVEbgtcnlKA-aA+*U}UWxBsS_Wz07ZX)^4 zE#C6avY2+xdK?lT$8kt!M*gRk%UiZ6UHtIJmvIIMs7=KiocL{(zl=aj=E7<o<qP3g z#M%^8-d~V%&t_cVuAAEvx|laG;R!dZ^4hbFm%&asGG*W0zH3V7r)Snkm|W+o{@CEq zm$7)kch29IstKoJcwg*Dj92Eee$>~nf61L=tT&JT<r2Mr^$2hCvNpX_A9kN-D*1Qe z_QYjNMLXNzp>fxU^Ir9@BaEM~Z`ts(&O$IE-{HuF?OaS3ZUt=#X1cKJ&+7>_$`z|p zTkp16FnwS*PuFL-`1)p^d-lZV_7{wbLcAScZ{lv!k6o-V-_w8REr+@U(;Y{mM83}w zEN>BO*rBj{#nDg8XB~JSw>&lBhy{0ve}T)aX<;f-@B&utJU`z#ftp_m{jW}M*>N)D zj}ybLW#5*3IP#3=P?}5LZM*qaOCAaA_1JtU&sl~s!uwzdUq|+C*|n^#l0W26o!om% z>uOd(=>m`9l3i;jp8vA=cC%)<^zSfDP#wheB;?lDuOc5}rS-1q)htQ)73=$;d`-Wh zgy0#b+qxcIr#%p<(>Z>w{kLN=`zv?fY5yJ`_29sI{u2WHWwXQ^ZA=qb7mGDi&Ccz~ zGn{*O>0yV>tXmJ~ImfXoEW7@;OvSZE{QJ&jR*gZt^>ur;EMScF1r;C1?|e);`FzTc zZ&#b&URJueKe<yQX8%$7dqO=PO0mp;r@ytD%5?s+c+QX5^v1X1eR)Qpx^NkT4-2SG z^V9OhKE<_r1tgw&a%cbQQ4+Ymf_cxYhPmIGS4_HHH9L2~RGEM8yci>z@>Z%%6xn$D zN7{17Zws#!^rj_R?GBu9zQk$!bT7N*EH+Hw@~fctn0#6C1Lls2dp?KGf3Tx*qVwEM zjWy?VepDQtb)jrYW~S>RL^k~wQ8d9NZfYJ||DSbRCS(P2ayW$F6TCIGcEiJ0vENnP z4rD~+y<X)ced6oE_$^mYaqZ@<6m3|sVcYGAQ(R9s#jL&-bt>f0)#ckJF8lJt_@zy_ z^akBkY@i~2YJc~);v(stHP3BBe$AT7q}+WglVR%r$PFb=(-*#-!0inxxL`pLy19Rk znR>~l*00V{Hw0}t9KxR}F5C4XeEUMD48|3`skuFO6nH+AfA8BWJ#o{G+!JdV=1kki z@Fyj-U{UPXn^wOIwB}s={dLmYyd|sre){aXzqNPoDv<`gjbg2<mHzL(&bqJV#jVFe zkESv${<F(g`JOuWm%2`e+1{X%{CXq9o`-GHf9fx_ipNF7Y|FZ;^?uLibDu%0Kl4xP zZvS#?YxZ;97>RjVGmX>x%HM1}UNt*^-_GrSzum5$9$PkZd)eDt7pxAq^MC(#zrH^I zvak79&>?l}%irHycw8IYs+i&Q|E~QPUcOJ6v)(E__m`hgc>k$wnBJE!GxBs(on81? z6EqEOf<p9a_I1(t?3c^u-)s+lc>VkIy87fa^S<@7YnBDSmk<49sd_<uht#>s4Iyh> zdoS#=u`Ep&>Ur=w+4;^3%c5oG!CPmaS=D^{)75O}+l-T|L7saa!?5q)uh;j^S-*et zcJp~VMaGJAmd`7!-|bjzUh*O!|I7@-dk5L&-^f<ISa|gK^|jH@-|qc>@7_drxtG1t z=I1~oc-!xm-L90iD$!VHoPA9vzgu_P2fdw7gz`^K(Tv-kcXv;(`Mn#`HWvRxb;=jK zInWuxH;KQ0-s8Xj-sg+FSJv0iHF&g~|Aaupx_8V^AE|pWyn6P@Oyzv;cd2JfBHx%j z31vvSbtTU|NI@%MXY=(#B?Y<{av4<B&SlTJx9-zSzv>5DALWV|zC8bXt@dhRP=r3M zeEBKr%H5(5ziqu`rF~zyYcnuJobhyV40*)n_Oo>VN0WZdz%?<#Vh#PvGr%d``Z!a; z&reV9fv$Mtl{7kH{pZ8sZl;2lmzLgBo1OFM>-+orcf7l@GWc)(lNEuB|NIuHk<Q%` zm=UtUy<hHLSaj~wwUL{T?XN#78eUQTc5C>@!h%mH)vMj*YfCaBML;zj-_N26E?3{r ztZjO^&18A@1x5$?35pD{f89^FiZukic*yl}*Xq>3rlWbz#+(itj!$j=bKS|&L-)e} z>ds8=X*aLF68q`%YrFbN0ihp#pd4%$z5U+0up_@pPF0`E-BMt^+5csB7+1`by{n_l zmDCNmC-g1Y&dizzDnia}WUzU=<?^0xy<I2vuVqzm`}@H^dXvf>lj`Mj%RYf_$NpdT z{M_8VwcqcWf3a};^I^}%<m11-@BjbzeY=~e<NCP0H4`Po-#Oe=+@{G<5^fRuG<s>| z#`JD01%}`Iq~aOm>cbV7;^xF@rKl{q8@W~ej0(7Jn)1g(Hj{x{VvktS-YmvjXKucA zvws0<F5IkTZY<r9$sPWdwby%%>(dOS<LB4)J8A9Y)pyekc+573<ynoym#4nQYgM@B z&T4R|;s&+8i?tZ!E1w9~bBXV)bKpMEE?;-!{LRfW6%QK!t&p>Ly=L>C#eG&<Uw)jL zs{Oa#%#EGVO?-FRTdAn@2L~GeS<SEem6@?~L)F);`t*r2%=6<ezjugiOsTT;aGLOU zTetyl>tv^>1Qth7q{!b<uz1V4I7X&C{K3R$tJ0=Qn0&1LpT9LY&2z);3E_+{gwACa z1Wb3@$nZxp`yk_W_M;p^?{y31y<Z9b^x4HEzxL~w=WETDUsb(k7aJVM5H(v(dM=v} zPpr%_-ap5VYH>84`mb{!WBI*4w=CHi<r)md8Vt|R&3#?_^K|?-HJ=#)G1J5uE52S0 z|J{E(<C(06_LmZ^b=Us;KUG{<WUjleuBzxo0}o@z9Ovpo8sf+ANpd)Z`$uzz{C=3f z)$_CGhT9)5@BXaGa8$|NUCM+1wh6bf!7Psd`!(P1-o5XN*8L5-6VA6}di`+~m)^Ty zdDT|aqRy?Ns}CQol8RoMzxc1Pu(No3A+vJ6!0RG=-}FX}3GY{IXMU-sA`NyYJCDSJ z|G@zh6dQko4qyFqTYt}oruzN5%Ni`1Zj|k@Q5Ime@W|TOlzDs0hPQhrgz(*#1i5mT zH`6YM8^=`x-nQ@m@5>m`^e^6fN#hoS>QuL?zhPThJGCEtzNVoQvFp_T`wJGZ$=Vo5 zrGJ)NZE9BDX&SM3%3-n0n>!Z$ZwZ*##n*9I{rEZU$i9Z{FKSd70!1dV{?PkccA&5! zg_$*hkM+T()YE%BC#$tSYGCI3Q1^NE{U6(xay<EXTwdQU{nnPufA*Ke8g-(!tk~gq zex7Y@A-f>EK~zU(+F8xza}Fs@n6qd(>%<MUr)nETSzV%|O3FAK=E%I^TpaT!g402; za-Bne#Gj=MI;>1*^W3F8>e6Pt-S(#Jmfg<4%QJf$zU_4hxqU03|B1ItXWHz=*^e(B zKW6<s+2yyo+LXV(i}tFpth?iXIcA?wm34x<^QOk<?`60g#H+X@4zRH)*Bx%-{hXTs zy3)~}Wn<$(lMg>WKCaCcuVCDjlc2Z%PtpFa9o668ZD~AdxXXZn{rTi-wzMs>^XFuQ z=bMJ}ad12MFg|{g;4ksiiTl8c=Lg?0)~_}_=i79*?GBfN`_~ew4qxt1`j-#oslVwg zG4z<S)Khsub-Z%I)?nUsweJ>-vMy&6H*-CF>}Y>q@h?Lq1FIijemK2q?Nz@w=eh1L z6@iAm@p;mWGeSRdKKv<tWhsM*@{8PUH;;)Is?V!fv^~LbNBg5UH#hH1?z22*-qgna zVCnR@S0+vO^7sG!Gv`oj+09nB3zlxPnUiNdQMuat;Cw&(&qbb&LObmgoEf?zx`m?{ zl-8fH(^Gu3;nuZCP%gW!BoO;Sc_Nz<j{)xtu`+8zr`ErQXWyPP)_Z?AtDw_#ON36l z?85DZ50#UhH#1x5Rp-<ge!s@%#wM;G9lK|KTKz|_7jI9Ts-N)T5AQ1{hG(Ln_O*7_ z#QBT;Z7en{XLS?)$|%XSA?Dr$?Y@862ET+;<v+i8&04tQ`&E&KX@RFcxhwH536(Cg z0tK1d@~^DUix=x3iTXS<Hc59?!LhgnH+MXcPu?5<Rj1aMWm)^uU-ym~KYm^<ugA}# zP`5jB;dW(T|6tHKpGZUJ1HLJ;mn@kZxoq!Fkh^S`dGVkk!|A8IJ0I2Oa~B;@V0-ge z$jFLA`R<wxw*}l8{ylj1hIPTWnkgR4FRi;@+D6p5Y?WDk<k#2#WzV#n64pfSz9)aP zDI&8ZCTaDo_gBBxJb5(r@ISlU2lX-Q!apAUd#v)jUs3oo{yQJ)4`11Q=lrEU)~Qb> zc~?ev&0B`l$Zp$Ga?U{^Q0kHEyZ;~MTTi_+aag**&d`Bj+G**cqk`Lc^zR)jyLDXk zNVLGSBaw;Q75f-+x&<A=x%ZkJXl07?t~!2i>Vo^(JOB8JXqyVJ)4Y@QNiH^t_v((P z4vOs8b|#<rGU>h+)7qzguL6I~;<)j3%I35tgP2X5a#<86JeoE;=!=OeQqPC~jzQ+t ztL-~p`Ey$y^nf^`wc@Pe1;0~vdW|y5f9`(Q7ipLl#py6TAwyU1ztxc$H|1}KN=t={ zzQ5HGmM1nnqC4wqyA$7<=KIrDyPJ0v)U8WnFHx`$i1&EqkbP|F{JO9`^S3e_DP((p z+td{`YOHu0y)5q*@&0wW?4<rdxgg=#mkG9sQ@Wk=C8GB9*2w+d(K2U`fz(vdGU-oI ztZRPTc`s>P-DJY$^R#dF?jx3qp1w-#&RBA9e__GTAFf|NZQXH1Dr(bI=AZi_*pD-W z_vbySeDy^@c82DKl`2*nYHqIDCfs1oqqSv+vwjh%`2`)#v9Z<^NW9yAo}*OZfTO)` zN{b^CQ^5Z6r9a}PFED?l+q`_Ljb5Wy8mRbr+AGEBV0rRYMe(`gsm0gc)g<oP&&O4! zGs!<A`QGuTN4=GmT1~AK<~)8Rl>OfAi~qhQ@s12hVh2J~SRGegb}m`q;If<Z#et#{ zg^9l-xg9LS9w@b@FrU8<O{-NRe3$KS<*{B4$W&D35fW&q`m!<T#W{f)=Qj3xFPJ1* z|9$_r%H5o%kPc7O)|+oVns3i9??18V#BtUxwhueB4dpL)ek&D_cdxi%sx+f$>-~eP z&Oe$Rzx&9oGe=Lq&2m-g7j8{hCwKQo`&!GbEL9TO_JOhy`-*%O7(U*LEQ&t8k5fJf zDQI47%Mxg~mG|_@Z*JLyOAKLxzm704cKlHQRV_gY4IQtd8U%U%{N-a!;5@N-^X-Xj z5|-Q6cmIgh|IW(7#r46$jZgQRljEXU7uUNzc(d;$%L4B;3$?b%DD5d^eERBQZ}LIT zWwvvV?Bwq){5I2V!BN?5(eKiA8B(`MR;~iIpP>DZ2LI_Ya{~9SjLtjQt)qM4amaiL z1%~(;LL3Kd*U5wweY(IHExuDWHA*|_$?ofc3{eKU+1r(QPu={KAac4@#A1Q$f}^SK zLAmmG+!z*}s^h=9Wq)z!))h8hPd+Bf{?U)M-E~pX<2n0li{}Ro{a(wloH-u8KG&L2 zgEiU1QSs&h_%PeIM~AO&`gYq{E->nW%0ho0freWxQT-owGVQH>x^4BV5GTGLGmOqb zx?suKDh%>cu~w-a2maq_717x7X;TcV>h5x>l<@3|bM-q+#D#)a78Z7H)qFqQe%`6y z2Tuo{xl+1dRm5}l*9SV*tv;*3H1)Yg94M6>kkd70I#H;C<Px!l4-A*<swG@KxMyGC zV_YG8ymadNzPna@U;fu^4mNO#$eSgg7;MKL<IkAk_;l^vJ`;`Wm-vq|>ZzO;SzIgD z!*%QW!50Oa6_tyu0(=C;r$@~GaxZ9il%VFm#@-<Nc5!8w-RJnPHJ-{1pY6!<$uID& z?)S}N4U>d>H1m)XM_G=?Gy6Z!4&?KzPu#NM*fxO%tHM9^dAu#l`DRLqDRyXtYcxz~ zYGJ+|!0_xUdqGVvOTtdGgr|PHHucBe+g}p0tb6eR_Qm_pvYnaw_B(_1)EzsH+&WVE zlyyPRg~eXm_d8!mo`3D<K`Vo+@3V|M4y-WVwfjVEk63!=4X3HQB@|yG20-QZIv$;4 z7GwA7+r+Z3VadIjiVUTXc4VL8YMi(4$L`|a36iV$-c|{1w+r7;yMRF__0XOT40rY> zTPbJjRZF_;%rx&g_o%Q#<}`SGe6G%KtLLm6Q!jq(6l~aV^WX{To@u&z8{4=WiaP!) zvD^~QpT^~IhV4N`!|fFtuJ_Nq`TXl9CV}5F+k!!9_o#%N<y54!dtvSNgwusLdJl%^ zxIMjeNNuSz!>c2OB6Ds`W<NA9M_?V7XXk8oahsQXuP&7_8LSUJAi+54yZiZ+=>-|Q z1`^xm^D}<V7oT*#bB{6i8>=_3Q*K^W)!%VR=FNZaqOWxq7n_8KADP7`!Z`Ku8N1f| zBHy|hlfA1;<jb#j-<zoW^PoX_Tl?~e;|@=z3O5+N)%hNnI7fBT{8`IZ+9C}*&3)f| z(Rgn6_vYD`g*D4un3w{d^Ui&iQQJD<qLS>>Tdj(DHQN*z5@qI!mPx;IWLTu_5tT8U zUshJuvQC0`(#04N{)n8@4ldK?^;I4$JLjkqD=F4sm3v4j$(Q}p$5V=yy9B0M=|?aH zpZZiMP~9Z5Y>IG0P=yjGMJY|XY_e4ysW#I7XHZpEaDBmJwj&8qGKoch)-Y@dJtWk= z;_bwOubxu{CTG<2tpRrhIxb37*8ALE*7>)l!;jgERbh?KlfvtsH-EV*ZCdl<9Jije zOm^E^?!`L0X2mm!?tI#iu6*qv>%whqlMZw&`qLJ>KG=_;>ub-Q^HB_5cFI;WC*(YU zkBtV~6&37zd2?mmyE%9Ki>0oH{k)|lFw<|-!eSv+zn%FZCyh8)Dzz4z;o8mnRe@o# zTXR(N-x`kaiO1Pbhl|Tk_cLB0)Vh`5EkBmkF7jFNGuDpu-?lX=EDP$+B<b%EsCsfv zN%@0-&n=larlwErx_pf5y4x?NvMiY4f4WvCf0Iksoe$E;xxMV~an6YCG2WYJx6M7( z${@4Isxe{Lg?Tmt>x3nX=DjiEd?_^P*^5+FaDUxz-g?%ApEVn<CD_X!3VmYueX&CP zhj3f&xoIV;yH>MCO}qTF@}XAy&7bYkM>a3u){Z%9qjat0!0PofoB9_q90|S3TdlFA z<-xYsj~32hs9C=B?;KDN+1)jorTJTGr7e64<i)=E8E089s(=5!Q*G~)>bobI85vjn z7TE1q!Etw{3lr06y~zT~iChPQ?#=q|`SI^!E~Y4EmyW+ZAEs^gi519c7SaFXBFeGw zaZBx7o&VD-4~FvgUJPbT3Yc~{jQzpxx0XfA?wk1^nZ*}!ce-=VtN?~4CjQ?sd*<~V z+x=~B5mUjpcI`jMpVnPt3g|P;EHgzK%e}b$s2XGAAIrNFm3{x4-hRc)6c8@G%gRBa zukgproj!T0OS(j^o&mM1)-wrk{`~asL%O$cjLwboFS1yd{}x;vuj{sH-$I?bnE%lw z#TjNXZ8y57t<|#Y3$%#r3oKIj{$BcLpK&RZrufqdTex~=@Xp(_;K|M(ww=xlJV$k- z7+!TV_WWSlIe#ldO<B;x%}Z`x?LeBT`H`ZSaA>vv6AvSQ=GdQ_jEpN*^TsO6ab(Lk z7evN*czm*9P0+0Ra<){+ziD-rXl1I{+rJzem;XL;>ieSihqX8?o6feK7O1|c-pC-c z@Kbtf{G{I}mR~LN6FR(1SIh3clJffha}4fR$1P3sNDvA8RFU{Q=_1pI=y0}N>F4@C zuhhqYiYV2yEaK8gMU=yPe@hGJDV-mUlBV-9zkRjV={wWZ1Dt%{6fF$OWlfImzGnES z(PCru%aZll`T<TkF8}WPiZqCYq@4QgK9gxX+ZN5kCno>vS+_^qb{C5xf41;nncKp< zA|0*T{>ce&Pi1HkpI`Up%J1ew8Zj(47iqK13+DUy@W_;x+`(R~3ZD#)Djv8R$TIcd zrg!(kS&s|cOxyY2;~0~`BJua!iz|_;8=DV73JivCw@kOHP&TNVF4DpLcNRy7FYmkC zr2=}*86DQUeI9lFV`ZGN^uQ+2V8M@Xha4DoxfNb=sCWC)zx72EzlfNF!i(o`ZYgH` zY|jWgav|n;)6zzUnsbJ}+Ko;c(`$v?4xdtN4L$K++RXIDMcqavy$**vWnV?EF$J7g z(uoT@5j_ReYAcj#=vM>{j6kO)|1D!t@RO<f#nyOn_mTtqoc607;&Qk?Mck=B$0K9C zlk_9y>B~Axq1iK>>4It3WVT<%i*_7Vnky+F@acWshDA?yU%a@+!`oTbXf9XG)LlXw ziiI{VV_v*o?8`sbd-6q3QszF?U7ThWAfqN0sG+tggK>p>;n7`gpx9h`TcGQthZ%e> zqws(C!7Z|%K5W^k!*qFz=fM-Kao+v!A{aX|6aMZK(z~3V8=CC=hh?de5jVKNI5gS! z-hHT(es{b23p+1)aY#f~gQrlE&zyU^{r|F)<)7vWH6-Of>e?MQL+;b(DF<H6V_UD@ zuPDk~Kk@(azm}>O`uyw4PpEEvaWVDozQU8Iwuv@Onmr>e+8e1KwxM@Iv$0m;+PTM# zE;sBmJ;24Zervine?*ID!@4=@En8M}NhhiB$ZuJ*;kE;##F4v)(^@WZ{IgOKFuT9^ zUFH3tBX;b9sgaj>?(B3ta`S!4z2mK2Q45w|%6+itT<JuX=JZ~%+)Gw`KkIh|xHIiM zm?Wrr*H&l6wPR(O+AIB|`s9o3vl%%qXYI+KCf;(E58mSb-p9eBu;)h(-?Uu&t5PYi z0{wX-89Oqy|L)@m;q#vSYe(ThdoCt{pQ)e%V?R?t<;TC9g&H{SmPbT=ReZp!8C+tv zXjhmC^WC;-Tn-yU82eYs-7`yg%Tky-eeu!RY0n-d)KAb%e)50kKlKeQlP22!nYZ}D z``$nC3g0hQ8F?p^w|qZ)Np!(Y_<;Z8c@G;I-t2K?$nrO9Q7Ke+jGC};>zqC7L>tyE zDet(rS!S-{BBp1De`w#!h)me7xSlCs{)daAOT=!R?{wHVYeDp!M3)<3o4uCYUAg4m z3%eS(ljTOw4?8d<shqXbW6V~!<<(}qt=hYeYx>2?C;t~Fchu_D*ckHm+}<&v!>QlS zi>vdF`$w;73fD#7&rZ$%kcOD4^SOBPV5HBK(mnf4PFQE@CjDD&dv6UxiR#|>_cAAZ zZ{L^fHO>8~CBN9U<qSHkxjUcyjqUuC`9Mf**AIv9HEz2aSHIU;6c&2wYm?l}=@ZsT zF&vftR@fP*e_pH0RCdO^s~r}X8voe$?7Q{!N4%%Ge2j<7LRN)clNe^~Q$Ai%du(3c zrN7H0e|v5hg;zisj2ddEtiEgs&aNy?d)U&{_UY5E6~C_DdFD~&?z)L%*N(!n`-eIb zr+MBllm4W|kiN1jS|t7om+hqv2XnTAT)&EfXKoc*@wMq|h|7Ycs0;t*noVGS@#@T{ zA2T*ET#1cTneczPc9rS_PA$2GH~JS{sNH}2){*E>G85~ZHZ{U$>_T`>9gMR1QW9cy z<G5pvYDu)YHbZP^zrmELns;|7S~d&J2Bn+zOaamBc4%2%b_$=aWbjM*#`{HcCaj#2 ze(gm@wHoK&=qp!$n<>a`UAWt2KW|d>W2u+U|K^MM-4N&xuoZgg6t1xRq4F%2690o` z3R_cixu%6JF@lG}9YYm?hDQtA4~W|TTU2DCnH2Tg`0CZeevGf*PB@@(>?eP?I)i`y zN-4L{<S@wCa8{1XPOoz&4)<34Tl3+ca01_2`OD%8R+n~sSdkucD8hg5u4NsnCG(c@ zMK?U$RDCdGZ+41+qTIr%X{=iqa<UDWG>;qI^=!Su2cI<ja$@$m^G=t{|1C2N?Re$9 z=bC<KIKMVStP?}$o1m-G<`?S4>NlIzZM~iFyYHDR!=es{d-B1_Ta#WcfA}qLgVdo8 zu`ccl6CLft&N1wnbRwf9;AHlG;n<pm!RC+J-X4CP^^@(s&B{4j6~zLl{xjcoLz~~D z^|PyVU;c?^)vc}Yn3!AreYqIFZHr3H@<j2bJIZ^enU!v13J6#BR+t%+A3R53W2@a} zNMs18=T-iX^4nOqD=qfL=6P3?1^&Ibut@&*=f_Jk**WfhTO(O{A@GUf;*Te0i`?Ir z#k789qv4iV_Gz{+gmb6AzR-3>?~@vX|BG)yh1CUtk?+^U?OylDq$c_hyrZ~opRK>| zb}v<VH|9xA6WRAn`}Sos(}k&*TZB2+-Fo|J#e{2x>-0pn9?EMLZP>rhzMjdTcje!r zgj>G#VY!}*_9_T&Iv;s^6907d?eeSAW8BUQyzQRWTCE-~ED?I;fY`Bh#%bT&&%H{J zojQlHWc4wdgtbdv$$Bn6u{zQUUasA$_Yc1#S9Lhx|9Z2Jxw@0iFJWB<E@(}*T)%v& z@KLz!?Kp;8G6(i>IFwA9@O}N0r_)6KM&{OM${K0)tjgUhbNR&C9`BaKTXILO%PQ|2 z$oILtKQ$$eUGK+{?ZJn(C9j#{-F|=Vn%V4Y_J&4_FH>=~W9NGEi34u`F6QI!uTC|J zQh%sF>Cj}Qx6iiB*c^Ibou>Yd@9~%PHGD1_79_p=BKl~_G#h8G13_CD)_`2_yYe*a zKJ7n$UHc0PPn<Gs<r6x~Ww-zDI)#4^`ZJ~<?`4nU;&zandA;#v{EU{@sn;g4P2C#! z#FydLI<3qS^DOTt#Rq~k`{7mL!s-vN_U+bKbl|@Da{X=oE2T6)Wc+uT@IIAQK}+PT zqf}$f#?v9GoB9%UuNj%Scr3V~pbf4Pv#O^>sUN<5KKt?Pxm>KQMxU1J+X*Bo+&OdO zJr8T-Q=O<sESGdlYU4C@O%9$=zUQt#SxK+c>uzJpH-?GqIR|~#?s|~YTEq7z4LLx} zSBG3s>f5_HU@hmusUjzhUDhX7)@m~>4RB%q^)v3?eO-pYwHebD{c<+WYJ8pm$*gnM zvm~s|4SVx^tD@zyB*`ROjn}oa^myNtvlZt|FZI52z+=y`spZ`-<L@f*89rHCu(e?6 zpEG+n9irbfoew^L;`ssAYB_k-;(WW{MONs{S=Dx}&8gQNTfgskH$PuA{yx`%<!3dR znbOWZUF8yM8N?xy@Iap>Cv1!Hy|PNt29JBwzh944&1(F+$Ld0Pm`l?W_E!@#eryvw z@1K0(zO>uAH8U=Lly(0fFKg@8!n#0K(%B(p(G3^<>PojA<{#Wemj!%QW4Ktyclmx2 zdvn~$uRS%}_rLu*t5!oC5lyZ)HNT5;X*`&vAH34yp~}-+)4pF&uZ(6fIx+DwyY}>N z{yThgPpcl5uMa=?>EVvun}i!Yx{g1en7e`L!<}}o+c&qiGPG>%+Ec$aSLMy~tBn`! zv)P-4x7<1Q#XyszEcaE<Ma%0RJ6$Z9GdMZy&c?S-DZ790Jr}D})lAd2xJ^b;3`*tU z*Uk!u+uPo}uO`zT;L9t2WKFg3^2VC&8s|<b!^_$~PiH#p@L)W;PL{1o{kzT`w}1XY zR@;64-dm=VzJ}q5$6~va3KNb$f92mZL2kZT$}1@+gX|RPHM~46;%=N<-?~L}IB<kk z{@*6j@Z-%ceUn4aN+vOE3_ZBQ+-?1v@0ttsonji3IC{$%CLDOr^>bmBq#Ntkzh0uZ zDn%QD&NOiwZIpFVE!nGhUpGw*DP3K+G2U6>FmdIXyVkr~e(bO9)~$7Q`}i*8uH71j zEldoJfqRM;OO?&?a$0t_?vk!OQ-Jd8Ev*bw_O0M3VO^=JVX$Fdy--Bna`U$u!kiOU zMTIcz=DDnzCn*z?u#;)OeXqB{A^D*1J#Gr|A@}3AX+<&o+duo0CWC6d(9WZqY6Y6V zw&hsstVeQ>k#5t3J@#7~o$EOBZvR`j)={f+H$Q(--x`LNl`C!37}@J3ZMQTEPmOIm zu*L9S5W}=ZzAf5YKYKCXtvbi{&;FO)Hg~ONK^2FhR|yw|R6mtOyN4&F<h?xQu;=Cd zeJpPp-~9J|-lsHeec!eh2lwf|e#ZGSaBuPN2b&Mf-g0k3?(rU9c!FQW9R4Kx`qp!1 z&fGedn#!K><!=v6Ef!ibyZxK+W><y9GNF6zU;iswQ53=M7g8qav`kD<ZnN7qP@BrH zp+kpdL7lyH(Ar*y{>T#ki<ONk4$DFkFRgKZllwyOThYSL$6{WJO1!-+n=J6{f5gef zhUfpgue6%(u>NC}^EO#oM|hBk$Xi-C|JcIzb`t+<kw14|uR6Hz<O-ep-}TSmTprq5 z!f+8BQ^5^I4aL1d3OVy89TC*sR}`qUChUZn%iis4E{idJXnuOIQ)bzPt!}d=-xr@P zcD46-GTm#RCR1F4!*?DvMx&*_p0P1zye%r(v8pPTvETK{(zsV2Zn)&FFynDQU=evg z{_9Pv-JOa@T;wL2r=&SQI^_P!n_*Fg>o!^O6O}E{I<%`l@A(xet5tyvCr{t{{p#So zpR01Emo1o7P<H=N#-exM5?L3lKFsLSq!)BC@$(dwCr^^K3pYD}!b{*^?x%kSt?Nub zd~#OgUsacw&=Y7^QgE;=BYTeVZ;?M|zSy}lrFe;od+wUMh<9#M<AE2`V%Zz_nENy< z9lvJRcG3Q=c;}CltLghp`|rf>-B!oCpv-o{j*mB2mOi%bd>^-Mw{Du{BiKOfQT3G! zSIo5CxB1LZ+QJroY?IB(<?~7;AmKQ*jpN3pj@BODo{$@<9Fn@3-K&#twp9r<Se#5h znEv|O@5GDBh8CL4cV{-SoS5=z#!dOk{l>}>R_|m5MLHDvuV0N5RNP-2p76#0Hmjn+ zr0zooJL6Y+pXLvp=z4ELV1~3r>{|A)HGFPYH*eXs3cfPc&XaY4S=6*w79p9hUMg~I zRPivbe4CiYx?uGx@u?@)dAYXuhD@K(Qu$;?YHyD7l^2Uau`0l}@6*3X&I3g+`1A#| z7?fLHNPRxl!++-1*<OxS*YE$;F!9ZEF8}u9{kikgL>qQ_U1$5o9jn{d@Zj+4lYhN_ z9@}-wEdNVTriRs}7Zp=jKO{`aJ-6w0ped|a{phL1Q0h0)$F%nQuIJ9`FP4OHZqPpP zIz!$jnl)#wnm~r{^60Cc3i%h+R(W@%OX=ipf~5WDMO(Kr91+<f@@Bzz9nF4@RoByM zL%!@RIeLG}OtVWCzorQ`u+MPfkd^qm*;W38_3v+O*Drrxd}1?0&70nxs`Dic?<g{8 zhgxrE-8D&Gc_&ipk_*k|O}e;<*)saMt;iFpt@TMwwNb7Hp^V1QZqKXVeIwMR{PzZ? z3#u>t-v6!I*gJ<sOL5}*WZ|o-e6NBmc5YqDaOSnh207b|Y(@?PQ=Ws4izXgY`?CMq z<<({-6GgeU|C(mldoAf4o7?}ARSZlWg+_~l_RYyzZ)5InW1Z=EGTkkLv140hL|<~) zyaTP1bBx`JKEs+TBJ-CpeVA0Ylu4lQ)!)`YYnN=61$l3m{^mMuq|Hz|or_b1UBNM0 z|8Ug-wN>5@dmiOSN2r_tEsi<F?03(epJ~Do=Fm$&<{#A3%=+TTZTE#$@4BhW^UpUO zmhO<#oVM@GuUc)z+tTTG*KDlqRn0l=9m(h3Vw2c?Kc{@U4RWg9vm^fC;`43uvJPn^ zZapDt;<SplbUXiS<_vdPfe%Vs-mWrWWm;powxuT|;fi5)igb}SgZ)y5HSS9?9#5Sq z-%|83=fxa*4zt)0Ve<*<tMo<6UPlNtOp0n;(USLhx_QE~Tzlh3CpSKvR<Ow?pXtI> z?cRT9E1O`s-#>^^L+z|tiT(L*^EJV`w(e|90dG=Ew)1N<Y_*v9<L~|Z8ZT=a1i2El zMO6*Hw(j?sc3$dc+a4~58<i)12Qysbx8JqbmEqiv1Hao|B_%$VU(Xu)?f&aeP8nVn zc?!M`@6{!AS+0Khel_%1<>EQ@FPs;1w|X?`v_Ci}Jo&l4?#*v|LJdCu@ddBP{CJUR zLr~GSZhOt$;+%6bzU|XGA^a;@`_8A*>-=*MtDIiLaAny+A%TYNw&G$95(^o&1qCvl zeE;LNSni}0P+#w&q1(OrOdIMZd}})qy!rR;zPk17tb8ll@_QMMw9dHapP<gX>f^W5 zn;EXSidY3WuATVwMb{MdW0r0Pg)yQ5p7*c8^HAlZvknYlpPm;n7B1&ko8iQI%V4W% z=z&|4oYq8wgJ$E~ZwJb*u`y=+o}JXfG{t(tX_1@ynhf3!p^Nv_i@9A;kxgNdt;{N` zzrIjAW@G)-%{HA}9rkZc)s+*j`n*2XkvgYz^RvsQjT1NV{b0^Ysl3Ocu%_Y7HvYN0 zF4XfJ5BG^&{7d?7)PuEAD-)KB!JP#PpKdkoKYL2Pv$Aw)FvvU)Y-vmtNV>X6S98g$ z08l;>VArZnIQ;uxsYe7uQVY|IZE02pNsaq6%%_=d0<97Jb;OS`!hXSQu7By^FygD# zaoD;+??{*Q4fib`hdQhT1iMza%wt{f+M?NE<4m_{&wUw`_^;&sHh%p4cYo$@*%*e$ z`OzVUh&W@fmD%(7(}x$9_qMOA*%o1{%_uGExNORWlZ&IaFu2^-{Bspl)3H=p3uGv! zOW#qp=iJfdCJ^+H<Nd)k6LU|jW_ZGpP^)CStF&*v%k$-2d-pu-U0G`u*txpCxsdr0 zzxbpg`Pjw=J+9R)K9R>Gx9e`0FWH#P+oxGJ*M`%f=gZBvZZ?||_cQ2qD{P5517Fi> z7sb$Jv5MuB%bP~0M-$fRi(H@l$EoDgifPqt?5+wz#$v3ZIfbkWIecG?4AZa1>Xt0X z60Fx`@V>}2!Ls3NbBF%*DSBECiq8x;ef{#|=h3GUt=YW{Ek7>5lz73#a-lqITIix# z7Y}VaP?yHpVS94%wA39Q=eTceiEn?RpY`9Bvn2SG)V%%08VtM3-oBD8IKX&MeBTFF z@Sdr<Uzg`sU0&wPy>@dJ_C<{mC-eoLotgPqw))M+d(UR)zuSK<b$aZxwXxE2l~Q&! zJ3yyjR?p7cwQ~FGb-SzfR)6QSjpKah@bMy3z^BKHCfEp8FPPx4b-sc!*9Vq0V%DYI z7v#bUSsuv$>ihUkPAspWKS^+bZ*Qr`)Rar#O4mAWYh;?Rr1OTx)ZHtD{+TMC5NzSN zT)6`j_A3>O<m;Lkj=kEnMo7tKaUFYZ=if6{OSF6MOjnv=!;oCFdvAwzo6q;)<S!x{ zSXdKoPq1dJ_;S(xw^PoiCnxWL*3$@XzwBpSsU5aPV_h+g);R8)FI2wZM+T#Ym}a2M zS4P(bANMGzPq`)%62Y9_^6s8sI76AdoLIx8=PUM}in%Ctah6Es`xV0T*ElnJJo+?w z+C}q{s~dk?Mrm;E@?crq7RV%^{I^V!=@I|pgrfMOrod4B(^`#^ZQ<#4GfszP9jHr_ zHJYXN{j&-~s{Mw-bIr+K(>x2fcI2Lz%dkZ!ZqJSX>b)|Sm-g>3c^Q;H+1KpjukY{U zW71z;S^3Xuv74yhGA!#DgC%NrJ?hflv-jJr)jupOem<F8%P1udiqO3ciM>IcUQ7bv z6Pvd9X8DHq?za&R5%hkMCtt{-z?X9?K&tVP$O4eR#MtdB^SK-*sTuw4y5Dp6{6(ig z2^-6d;<o1*+G-(>-rrg{L9X#f<oD^df$cT6bJ=-5F6UO|+p|xBVd;GHMfWz|U&z<9 z>1F9B6^7HD-&SOFKUO$@zf^%C{mhJq|0k>Y&U$kH_zL-V`jMMdw#d10=I{SohPj53 zJFf8l|9{{2a_jFg*y0CX#u(9eb#?e}>+U0aDnHMvWAEzz_Rp!j$19=byqrqOfp?A) zmoDwn^|~-+@#D$D-f_{--zJt^OuF9Au;)65!<T;6TdU8A<{ExgoLc^4{uJkJ>vdTa zj%?nuKO}hapXU4W|I&j#EOh?=?CJNeh69(=-Yi%xG(n(5ph}=7DxxE|<BmJKK*RmX zb!)5K`qOSXaP`b%%I9X}cw8IP@p_TnpZK!(5?em}j$MC!Pjs*QD(x?Y0x#_&V}1lO zJd0si7r+0W^}8L9_Z;T4UbExP!*=;^#ou(;<ti4~uVO!E^;+lsip70gw)={ndi|f@ zd(m;j?{~X@|7@Gp$jtuhb<MAp)z5eTdbRrR@m!P7d?Mnpk{z01;^sWFUfsQtRJ?#U zHnvfa(Xl6eVmP~ZXO@qfe(jnq#|_-xrs+hzyB)dX&&oHyKFD8LEWvS;&34w)u5AJh z0ucqT%4^LW!9n0)ZTBTb?Q8RwOZ)cJzs&cFQf^8NW?r1pbL(}t`U3aMiV7^Y+6pIX zdt{i_<X>MIUhvW4)7zt}_f?r(^>69DoUJ=IAnV|x)YX48W548x87$I%&#NEyMUTzw zDeG}J3(FgCw=1qRxYfAuS^y|0l&-&j9shrq{Ux<6OF@P8>x+NwpVvfaF??lY{aL)u zB~kW+jBv?oGZsDzrZ-B9TKY_9xIM58yz%vX^^3EUY}6|K!=DStu3Z^(j_KyUZ9)x8 z{#k6Sc4XL97ko*Qy(eH1+u|7G=v(tVQ}@r)J@8`JgIAvvzc1C`sonY3>TBO$J;4nV zFNp<9lzMZm+WgVhZ_aj;Ei%_^zgd@x{#sz*Zmpqk;h^X3e^a<)Y#3r4<FYjvigg&y z+yAe5pB?{umVN2!%+s0)+~o^?Ja`pYcjHBIrem~urA+ufz10k|D=b7NoLDQL{r?C{ z{m(6|r~h~*^>|ES7SsE-HTBmvnX<p1<?1#cIpw7B{Dr<FqlXmh$^)+1F1zPvzg{lB zoSi8kXM%yNPHXV_l`;pp<vDLzze;XW06CpCvTSbE@w(|ko9$x+cgdG7lxDA#og2?v zx7scAscp>V%NFZyCmW_k#Lam0jrB_7wweRWn6C(d>x+%ej(^^6ILvqN%gcw`%pJNM z<m&%?d}MUv$OHMzZU-^lsF0ZD>F4L|+i_S!?m&j3R;%gqIYnIE4p}YxHeH@3(3HpD zn#pqa(n(PdIq{s^ia!DxAHQGqhI1Kzp3qdjC1tf74u5|di0Wo+jtZaS#^@o%;`2Od z{>91)p`>n>FGuHT|NPJUwff)Z$F28`3ckLZ`rAO9ZC7%@;)MO)o#xM3bhQPqmPKqj z@w(>wuBN4Z1ws7|Zyw&@NqCUEojv&Xt;d3m-5ZLiunLB=n4`PEtTK3+ZWxtx#n z!OrLNUgz%pdhK3^pz<D8ZZQ#O|I<lX5}1oH4c4S2yk*jNn9h6V>Gb$_;ezGw@69zc zFm>^tn3Qsksb8Z~CRqAc!h0^2e(vP6jUP7ghR?mF#1zOEYueG^SgiVH+k+*SpHEF_ z5f1HX(#t4dWyz46_;xXaO5sn}{w9Vg`>mE}$z?b`kYb#!nRw)?zrUVdxup5&+8#cp z9*J9}uVla2ZojY2WVz{AolN~zjVGl?LZTZiCLf<*&9m?N(k++7#Sd;<EAPgjzIXeU zlvwHN_)v@Yujak_wP>N(hd*<j88uo(&9-=MmT=79eAaAVhxNxJ!nG4u%(SiER({6t z_z$-W9~kz0x#T_9?ZWT3+vm>@-f>!Q_XUn!Z7&wqs{D#lxb>v)#*r6hzUwYb(?1b; zu|M`w{+{?Fir<ea9cq1|>v^Q`%J$n#j4PJ!D7EW*7xsW_?vr`yDZfiL@+t<N*s`E! zk9W3fi{6>4+%SVf>SbzDv90xQ?eA;pO%E&PaC~=KM5*p~+1x7jsULn>Pp<g#wV=>d zro2_-N$HZcavSv6Hhf^zn_SmX`g(O&va*fB+g)ZG)+an;ZEe`3(-)s3RPpcJLWVW! zJD88UtMfkYx}bDTg(HID#p>Gd2Pw)gP8l9??eF`%mgUJlAN?H{_Bsn*3bEtbtt<W~ zdCm3mkbozPv_EYLZPt!aKVb9WJm=@XnR3@NbQSf!<V!SmYwlbtX>2WEtZ{3@3$Y2Z z^X5dv=*@Ne^7>@$&VY-#C!{#fWGuKOd3m#uQu=QG%*}7FDXd@I-}vp3lyZ$gR@9x> z8{YArU_Z*bH}<^fimYqfVs2S)LTWX$ul`tknAL`X-Td$2>*2rGU9c^=9~Ti-xlH)% zQtt-t+1VX0r+MATZDgp)C{bYes*x08pL|5pQnaBZ<n&3~!%PAGu~{Xj*t#~voOrxr zhHy-6-BUX~iAFJjUbdn?22=IKk4wm2y}x}+d$#T;tN(W`E$Uv@_*VMo+6QY+;9vE5 z0sjs=gU{O-nd{~rj(pwi51T=;E8i#Z<VRx3IVR=cN}2FYWhv*{{N&uf&aC5U^4UIn zlclcI?ZPJu^qwAFl(3z3oA|BQUh)pPdW(9uePC2sB6g!Dsy1->LDmI2?f!GPD`U7_ zp8UOaee&-e2`sl-b_Gt%%I--1Tk9O5?ilAj+v_%0Tu9_=KhLR5tSStP_gTEV-OVEF zar+{xi>JN6YQ;aulDi)-p2UT`jVk%A9>V#WD=z%SlfoZduZ}-B{e4H4Z97ZylgT?) zRZo;(F<-lFQ{au<gB_2RPrZl|n$?&W{*>!&x`&4?vvK_1{MTNAy?R^+I{LXQWB#98 zdMaZ7ygTC2E3)U!jM?P3SW)R@SoD6Q%?ZbN3VPP2afLqDdM)!T-6vGvO@5->qUnlT z{x9NtdyV0Z-6H0rj#X2_>*qzmyUXs|nGf;DCc9p`!a9FSu7=*iZuNW7pE6$<&N%*R z5l`p4!|5x^bsJjJ_wp4*XeGvrGX>1PUU&P6;H|HvE}|<0g8b(c#s7G+&i$jQRl4|o zS@HC(6`YHddlu|{&a$)rG3$<h@dvkLEN*%%Z8zU{aw9MIfsdPKy=MsC@~dKJcah<X z>q+NZXA1s}GYdHKUDkc;CZDt10$<8xIp-R89e9zf3mbHQ)GU_&>9AW|C)=^pzuNl+ znO<r~>79Ec{N&tCm1H03opW9p8f9DzKF@JCd56rm(nMQDcCRD*(oWr6x86DWm_X3^ z7fQS?%NgI**ysja@V~~|wfqgow0TKlPxh5ex)8dew`<G#Enzy%YGS{py{<{&zLc6E zzu5L$Uh$V#uK#40<sQAKmGy+L@M`enn$sFP_1S*=?~yF|$h0d|epyAnoXu5fgKv8$ zT<u|Tlh5XaPTh#iU)S8k_Fm({g&TR2Cj=+$TlCcFIor!=9vmU_?i%g*vLNmA+nB34 zh09XjzII~x79M<V+k_+Q@|!2PG2|ZkQrG+MzQo(@bL*F_UZmSGbBDtF>;KZ8*nN7` zpl6mHqOk45&j*pK_UHTTT<jHIJt@jKRdVW4k2y<@xJ2f82A)0o_n76{c$I|vi}pq< zK6v;%L-YD7eod=w4lJ9sw!()g`K8)U^GEx?X4uks$-YK~`*n-}D1F{;khyDGqBo(% zN0?Ku-)?sw_iq`M<i}p&?~=7tvTCJUOqfp8Uj4mQ_OIZUi<{ql3FNe`)i_Z*!@v3I z>g&J6`)4p_gnY^AVp*2^bX$*r(udlNFU9wAH}-aFotbb*y64%Urek(`h1a<+Czr-G zP0-oiXPfrD&hieMSuP^e$ZtRQ_JHUrJ4J<rs;-F^)e|l*oP4}+!sY&h{XBo`-xlZ8 z%{R4lO?b6aXwrNYM#djcZa6SR-In|<XU37q@}|yqL#o%MMZJw%&&R7in3-8`TonJi z$;|57e}3`n^6MjleP%nxr&RjPc77buZ8r6jMASRR7@ybIFDo8Td=hr6L{iu4;!93l z!>4tYVmi7r{(P_f8vA=f{Ga9V_or^2s|K6Ls7blS)R^|ZNi>)vq&_r@b@}Aux%*>f zIKCeAIOKOW>DIw@%+WKv5>8bex!rhP;nR$HQs3h~?$dp<;eBHB1h)h4u0Nghqx9;( zsmy9O+fP55WjE!w#L+A<1EXd8(>a_La3`o3+~pI~jTU`%tfitX=%K}(f1L{9m)m-N z-Tn6GwyN@;T?Q;>5d!4`kN(ekAoj1&;oo+jugdltrXfZ*I3Ip^A^e7sy-~*TwMM?P zdjIV_=@mAYPaYG}*l{7uAjo!4_3{U&#I`?PwB6O*(Y<I}wr#jawyM)B+1>fCxoywx z>1SqKQT;c}iHlpH>5e;V(dG{`v@D!$EV8!kk6FIZW6#Y;OWD(zeoJ(@He_!*!nW*6 z`;2>s-R~IfsgQ1!$z1sP=zH0~-79P01@tei;CRJb%)CsNO}AXGiCR_Oxpl(9=1{{G zJ9b9#YR6@Z-b~GnNvVCZH6wqGv(IbG-Mm5~^-Csh_+7qJ#$ij<l+u5nd@j7+E>yKD zXu|JX68kP*RQt{$Q_W!2c;i1~n%0&F*BFcIL@peZJ!qH4+^XsjpYuO}^MFZzYB>+* zEH;HKR#@hgzq?rY^3o>T3kn5GGkIs_KKN?#%dqFb)YmGDij!2Hv&?n+VpTZt>%|7S zMPcuvjWc)i3Mt>`3wIU{I)CGDbkP}|U6Was={{a`yM?ppe%KFlBZJCo_dlQ3-4>;h z)!ezcjwiP3&41TJWqF-ku@kjVf6?hJE%P{3t9+kxZ~0o-0?9{<wJ!%4DBfV^W!kB^ zt6zi3^Kg|EvvQZzUcH(hr+gJ(|C>~Fv}X}-uA_i>r2KqdxtOB+&jfGfPH@=Bt=QZ2 z=DLQAgZjK8oj9>4_mXz$>z(+$b${T_|Iw*D_g|d(SK#`>qG^xi!CB7X(ofUkwy4k7 zxm<hYq2vs)T6b2vHjW)OSD4@tb7Jyj`7evtpZ~~hyXOCV7PreWmp4fSPWXL7^U90T zz_n?%OI1pwcXfW|(p{P0)D<K7<wL7-UCfa^A}8Moto<an;?U(Axf2fj7QUo$;DKc4 z?`u^@7S&oOW(tYl{T(*pclsB;o`=$Nr)D2o$3Ekc=$F=QeHN8<0`=QgPioP7@zOA9 zS^b)ph5K#n67NlV^w@J_?3`m~ecx|2h3B*{S9kloUo^Yj_JTq{K%y=?!#bm<cB{Hf zt72zZzrSgDC(MKC@@Xa)`DrIR?ph_!isJkserSu7WygueiQgUadXD8avn*S{nQ1m{ zO-%3~-jLvzogv(n^Ax@ZD&FzQ;1<)}@&8-U4kw95Cdo5qC;k@I)x8j4y0GfJ)W_TJ zd@aJ(#Yx8;SYBzk`u8#AOF9PdWwswL{<NOT6nx|tLpy^($F$!cM6cYqKEdJX`hDw# zFRM;J#<lHQL-X=I#|5|Z@!O_t_jHQiDSSyM<MH<_mIZQ0g`U{GSu%^WwsFl|-nh9x z6HgYhz5RHh*Y(|DliTZ>FI3jty2jPGEmthIW_j`I$xUJnR(IK(HXvGIokr4I8(Wfh z^E^;c`JPy}YU69~8*EQ+#mZg25W#l-;F5$cmwSi532(ct!YJ?LG>bR)PT#cN!p#3J z0Ul~6{@Q=xwPH49uGVf`(ztW4@BD+V?=Sf?U+ld$^;aS1Tsh;CtQ((LFaOpHXjqiH z_Y#wG&!h5=bpcx&prhPen_o;0-RIlD{q|v~W)2?*lY+R*yK-3xKe_F%l^?uZ9{W*n zgPlM?Yj<klum53A@&;=cY`LwvP&bn!Q>^4&zA2M{a^xo)$9J!<O*q>y@7UG^6TV|- zKUpkG|C%9tX1ihYrJpN37skD)lDZxyb$E|;_5^LMzkQeIB#FW52!@&SY`@lRS6p58 zalOd3jdF|=^3}f=8eO>YRq+1)%o+C;V)b{2^~&(g-gP3rO>UZJWBI~8?X|YMV}-6h zlM%Ya@#4<LEEa`jeGk94D;YV)xo>aFVOzq$`_L(Rr9%Pp&h@|bUtc`5J$hFg!)whB zKc(Ep8#fZZn8T|mhVa&TZr?wy5xK?@5+^)0t?2$di#NYGwx~LV3+#Pkl&a9{#~RVr z_T2O0+J_gqBa*j!H%&-;Vw|d0^SbyW>jLgdS&r5;r(gf3S@$gnx^AcU{lAsUiItb% z-ua?2-?V>S$jw;ofFJE8@?X0BrD2)W;r5;#7H=CbUCVju<p1@>^_Kfn?;ICtKen#_ zfak*<yASP)n9(J6VU67B2_kbvX8O4;;GKIcZ#s+O*%QCM9xO?TViKs#J<H<uIv{76 z?^n|mTk^`!YcHIWZlUnNDR%k17kP3X4+TrkDJ&99*9M2O%i=c<KOQbt71lZ$<*mxd zvAj;Z;S}qy=3A)_+zvfLS#N%I=rJ#!azpaPvX7Vci}(HTtjw%>(Aj#;OKNwlP>YH7 zC+Qu!s*EeDn<xK}DXlheX1b{Eu;j3U{ON~3uXmW7`f1H6(!iN9MV7-Z@W;Z%s!`dF z_IETAmEQ}hmu#J1clP9GX2u)28L5mM{yN!}49jaAXDwfT(amf2qF0$|3E&WQtz#}z z*&p?!^j-Z&+1~=4j9d?%SjT*gR16PrVCNG#`|_M`ugl^&`zJdv&S-GE*%+WZJ7h|T zP{WDt%}gs|GG;TWSo6={cA}nl?u<LNKYA{_zJ1*xq3im$-8OHIE%2Rv<LnL1+t(DP z8Fgq(&SF`Xo5AQjOY*0#ifF?O(E}S9DqELSm2~xd6V73idirNB3)cY_lT&<O&Wf-s zIK4DJ+5OQXrg?EcxK}gt?pcvCx7z&-k8N5!b0bTV^;e$ez=sbn7XL}z?|;yx?22_G zWA;+6r%@^<!a@Eg@)cJysGM98;&bT)QYd-sKDB+C7t@C$?;ghNSuvqWu;*XqGTn%< znB#swPZX)RozDHT^~j5Pb-6#{6!)`s+)t2_OWJkyQtYX0ffwK10~jWyxz}-Tef7!V z(Zc@IXWfuOrR4sdYl~)2*nJ^<)>Nlu-AmoqH=Ht$eBL;{>6Mwn>4}${*2(-mF7heN zU{`v4{G_={^PjP5MtEdA4%xHr*uMHnNzzVIj6Zb)7`EwFr7gReG39f)kOqVB1r2L~ zReL7Mu>|}O_$p=KzRhVx%!04{|8C9OWh}<ZwBfw=`!>1BPfuiCobx#$liTXcES4mT zxo)hA%Vt0Q`u}58LJ0Sp-{*fNxV|WKn#KE5H^bj*lC72bZe$BC#GT^ZxAleFTfOrd zA@`#cL-dZ!VyHJY7Gvc-D=%Ye{bh#E_GRZL`FH%dHkEZ@cUDrt_YIQ&YICZC?uFEL ztu>$ix8{8i!z4BLI__)dI#al<%uoJbglxftJoYP5>t4u5Z1;Gr*!%W`plHU!w*6%$ z{5y*`^~t6>+sSvi<y<bh+bkh^;74~?tb(ljEqg=5FLSOLgmE5tem_d0>P(#-m&2tu zC-NJaHsoG(EkX(U0Lj@;6h6E<!@qa_7N6TnTNbV;c#^B^)e^AN;=`{dMophNrZcRj zmL@z*D!eH%XK4|GD*wlcVjnq#qwcr|e_8Uv?&t@WD>u%Y|90kbxO4|%$IrD|ld{cV zDe}r|K9=`7Pu6h$j`<w3nxARKmaR<bA2$W{TgT3g*8G+yxJ3Oc$M-8oPt07S>?$|) z0#kten-8)cr!7kyJx?8}Z1gmBV>bQv`Q^OXEhfsJq8lz6WLm3~s`i@9s9GF%{(hzt z<BW!?JB<cjYV7y>!`FPA{`U9uYupY!{~{ZW>zg&U$kY`lMw$D)xs<rz|MjvL2Tsgf zBYb^sTsULAWkS$Lvt11_|JQH-b2~$Fy2#ySd{<9N{r<Uxqjf@>YaO>pLoR<>PRwTY zUO(G;`!BaK88Cj`!MyNpzf6s4eBS@;`TBaRzd1Y*YFH;@9<l4j*PIOJtRp}9+pAwC zJ@Jv-+$#3eV)OaeN1y9Nf1SBK`gqfhH`ZC(%Fh~4{(IY8^6|543vOSDY`p%ycjv;3 z?!PS*&$j&$(_rw74(xyae#=4z9|zla4iaA{H|x8tJy1S{A!hToUDLeu7%lGhG&DNr zuh3!m8e+2OazjBOTgzmdZ|6BbJNHk0+;gvyfkoUlDkGAeTS8LMXR&mn9OIuAsVSkG zi_YG9^jM@}$<2xPn@oMxRkUAy{4>`~q=9qAaoHDtmpY!iH{)h&jA_XEQ=9z5riv9X z^t{@6M3GDG$xb099aGR0@X0E(B|n@WO*?qmX}#h5#|{j9vwqaQ*jO|tk0qg9UH#Yg zhxXV0bvivQl3FZqi~WLGD7$tTJCnft<_T$Tb=-H`)c(H}yd;HWtw;E!zMATd`+fWw z^`o|(vN`;@%{TUm{kPY@4_j6yytvYO^tsm!C60my!SZzizr{Ikzw;HJ!!vJ>!j}lk z5^aluyY}3b^|9=JnzO<e&#VcGn<dAQc-`bzkt)MSOODJmmG?JFH+p!8U3vV|I#+{1 zIH2G9!j$j!np_jp)kWPdZV}v)U1fAiE8)SB@7?{LJ$28WcSmK++8Oib#kUQiJ!`+X z7Ixa09jSOb^>Ci`vg$(V%lnOFYwn-ea3P2H@N!X?O?&#EZZ3V@-JfhVV?r9+&mC_% zeQ!;wvZ-Ir%bLLSs*wGXthP(S+k1u@`wE`EznK}ryQ=W1A!kopWXaOPofqPoIKF(j zsuQtm)ei|b)yD<5m=hUqB)fS3-d^|kkCO16ZMCh@%q;iLzpp&H``62p-xeypNHNNF zeEHp*Ls2CfDHJ(k4O|2kRv-KIwNaNR>Chh4Z<?yDB2pz!E}VByh`OP4uP*T7yLk%? zEuE@Gn_B0yFcr9*{!*&??>vV?P1+r|{)CspcghbNIdLeSbw*0)o_6w&<~=la-e%Bo zJ+0MM{6d)4v^f3qT(<Hb-z>TGXV3q4F)t2FiyG8j`)-)DEOH6Ug6t_5TSXiC_ZnW` z-#hW3@oy0urrc;tCl1A4UnFxER)w($uF6SdTID)jq%FfmqqF0ZgUhSu%Jbynvo3Br zJ~gr5K77s{V;u(j7`b;EO?=9qW_<a)w&iW9re(Ll>`C$*^X<^x`f`q~gyP~?;oa+= z%Us>MYwj%8GOb@fJC6H)WOEaJYqiee>%YK-zq7Bm=BC?4$Z<G?FYM$F(K}syV8gVe z-sJZ+8#VYImx(I22wajtPArEPH_x&CQh(*yDGuAJ?RkIqd$Y*xVMt6?3R5@d(fV@v z>cZtArLT8-EnJ>G(KzE^#{!#w$969bzN#1SvgfP+uI(4XB@PLG@86MHQF!E|<nazw z#g+-jmdc&KpXm%KwgNtCDZSd$e*eqoH(NL+zYOT%S+wYCmr3S)wM8el@^R_1ysZz{ z+>$OIbv*JyqO+X1@N0_&n<~HFYO?%%q|)&?-^#kaY%O07#U+L-j(;w{6~LgT@ZMU$ z?LKI;){16!pMF;cMRvaaY(X{AjqP_O?(X7!#JQz@(S=CocC&(O*L0^kiO-&M<L}c) z*&N<sY)k@WW@`^}#U1%<Xv@l}*kZy~X<wht$eO_PX&>{+FY3GEIg(m>928l0m1P*R z1gAtx1nFJyzpm%};+&L3?dJaJ-S=0=IQRHPO<TvaE&I-$pxv`9UW8Q$o#0k!5x8XY z<nN!ktRfAZCw}v({H)wyBY1(yx8=NH`JNZOStmOuI~14Q)m>s*cznWw{maeftrMw# z5&hw*bIHvObH#LhV(VH9FDL~)I{I?y)blL@PEynN%-_Gcfysce@_yrz%SSoy#%bxj z{&Qu?q7RmTo+a*ExJk@8mfiQGb-{ygh2?u+ye;;9$|q-*Cug(uN8Putiy!T2=eph9 zuz$hR$)SxE*}43IKJB-^*OsR3=}H2nSjT(k??-}~ZF}B3sNea!NxxuU{pAghj6(i( zeXxA+OEGTy!pqJ{FV6S-fB4K$DE&>p{hq*F?iXF$@{+H=Rz8j0fB(6?`WgMoJI6G? zi@u4U(5-$tChgL$1xvOv3EcSJA06leinSBJe_C^EFbGfhF8jjzy4`zjncS71j@S3- z3OZOB@M;GiU-7~A*Lr2|Yn{^5?ab~~AGxS?j_uaPwKo*rl{j`~cZt6~@i=1p)*Ij5 z<x~_~COlJo|NOnq0tO$4dF2Ya(*%-Mt?`{3%b0H?*r~zs)3v{#{$3XI`o!rs1q@cH zpT6+*@TMZ)4>OnPW&ADAyKjFoLrJk^!Y}3X&)=_sn6V&}`_R?xFBTalys1`w<j(Z7 z;YYXN{<7~PF7mgQW#;d@b|m+_uXbdb^99k95~5pP>^qvTACo5E*IWBvC25j?lgHnQ z&p(%kfs*BU>k9%?{o7}3T(L*idpV=<Unh<`|Kg^L|2dEwu{I_k@zjo>4*v)1tNOG) z%1jYZ`1SA0i3ofBi>+b}KWx^rhMvn{oqjA^(1~NE{im9L=eW2Iuso?`cM@GI7Wv}C z!uS8ruRYwoUGYnfw*`w;e#|9(4XKG1PPW^F{`}}`x*(K);C)>93GXX{;w7IaJU<h& z=Z;;BX#dLhkMHt_-Dn4;bc0H}`gB&-1g1?l8XwfQ3$C_^xsyNVz9X}8YJKIiwG&QU ziZ$c<-W=m_V|7Ni=#hKjyx*)l7idN3yB}D5UT?KXt^3(;+b@QO2#M!DG}2y}A#GFX z_;KsA+C7)-KoQ+|^3k8U<)DZ@%BNyk@#57(rZVm77)y<mg-q{l?}i>0wRK~OwP84N zPfwOjZ2CcFfrP3XcH5<j(>b5WGxeCgTXpaGv2^D12fQ*EEuJ4vS>!97usBv09Od1g z%kO1YF;;xPTV5Ui|JU`sXU%S(v3{|jdC&DY?p<jii>_H;Sf1Ua=?~hA^}~r*bYIZb z?AB?$fB!u)E2_)A=6+8&{~Y($5aHVrEIu<C*Cf0te!Q*gGGlQjqw<s+|2jWUt9mVS zR4!1#U10IdA99lnD(eCYdzd7_W$@bb_rE#>b02V*uf1}+<g)MHxV=@C`Fp=kE58<* zUK#)E()2y9-H*Put$oV(<tAHW$#d?+$!RP#U%$Qiv!?u=bF!1G;L}I{<v3PVOssF8 zXfIN>qh<QJx05IC%>FMq&+AxGhyGq4H@^Ck-yHcbuC(6ElV$&9S$6-8$%-9(Ea~$c z?#<7UzI9m8i6c`ktMcDE@mWy}Nk`uQ`FvjgUi|*Ly`TeuE6nc{G)Jwr*?Oxn;LV5G z`+N1cro`X-y=t?vyUgUL&qLPT291Dj=UVvr^M_juYagcEY(E_??tU*tGAGW!v^&t` z59_ABEsL5RYVuDmZ#6&3=^eICvyQDq2UJ_wTzT~;*570;L(Jy1-t8ZcNmnzo@o?zc zgAR)l_OnpjvPNd>t;P$E&fPnfAKUx9H_S5oDvN|&?!@wsiyv!s8R%N69_QQH{%dQ? z<tR6?K-(BTpU;Ql-29E7bB3rTN6i&*@+b~m{kh!s;ufZYe}8`dv;TiJJf2r~|DR8% z|4wuiUmd>wTe(<g<>zNtQ`n`9e<#1+eVzAXt2~$0gZ}nFQ=j8WQKJ2|uTQ0WAGsH+ z@ALiFUc2kN{~s;iV_dcW-QTxMBfl+GmNYA!`2F>7_uudJAJir)CTmYLY(29w*oi~& zD+j9rYeFc~hgYlDf197YSj<|0%OS?2y~p)**w4zc{5`)X#vkQ+{Cr8PV2gm0hp_|W zjU!AOOoI<Z_A&@LaVRb+3t%wY$iO1;a`%HK?ym2FET68fuiJXI+kr!|MIgw!;$L17 zBZsuakN;m^UOqnCD7CBn+s*XfW(M5iZ1YM33)q!f1e{*+&)YvchM_6%?ygGfw_7H^ zXYUX^cyY1&?a)()WIF^vB?5T3fTdgkWaU5D=q3lKENh027r_hy@ARahCY{(_SME1H zJ3IUNdlw$I=7R|apX4p_AOGq7T(Q}SaR$T9MhUR+mG}oX_tpe3s3rXU_4VJmW^In@ z(upQ6F-0XCw;g<MIs3u)Ik6vhpHur`n=ZWd*Sx}e$Fd)RH9Qk}v*5<dkJGR4)t$e2 z;Ju~wkJxnP{m*kAe2=l#U?}D)|CRIL`yAds^ENl%FE#s6eU7c}{MKeBgXIOw&$D6G za_ZI9)q7X3-*@Z3cNRO?q&c#G)@^RQUu^cFdY!CDLyLeDhoUbVtAZjZk|#SddVpf@ zQc3_gj$2G55lRyHcK&|1d++-CzpwA5&CY!$TXMniUiSLEY2k{3Ju;S;tpELZymx)g zQ|*1V2O1ceo%;X(zW@K5Rr$L&f3Mg7o&Npj`TBdm@BjZBpa1L2%Y~(Ozg{T6zY^^K zb>EMp`c=`O1JsX6rdOPvuFt>r@|%*kx2{@0Xkgw0J{tPl?fmzDzbv=^y3BXBSXBDe zRiXDPpU-`syZi07d()!xUT)34elB`PL1M;S%i?Dh$K|TmZ2$Re_V4w@H&drqW?x^& zyY}*%JH_X1?`_}zH@CjtMW*J%!FvlFo4fiySFhs*l_B*!J3k!a?mqn^R-HX`?~l0B zHye-39X<Y2Hl3L@;T&k0++JVvyH{RcT|NE#wdnlH^tq+ezAx3UJsG_vV`A*oDU9mJ z{N`F!`rG|n63lR~;&Jc371gg+F5kl`tX82ur=aP3Z+^{T`xhMc|33Ebt^I!Yy0mT8 zmhYFm^(%M3-8Q@Yl;-jk;fn6^wOg+5F3-=0uE+b^{1J4~&)SHMi*}r|d_L##+Z~Vl z?p;{uyw@=K*pEX`FF5n-+U?7`YnA_g@Aq$gHlIB5@9Zf2_djp<+ijn%N?ruSv{&3S zK5z4wSH|MP{(#EgZ@2I5leMmzowKR)|6S&~^DjUDdcD5d`u(2G+t1tmZedZ_|N4mo z!@I55<L))Fa(8_^$SyA;|Gaz-uSkO>vvS?@`So=l?S6^8+i;lg-&Bp2a@q`rzuG76 zkIvh<bO(>EqT#JyCzShtd|&P}^O61gUh{hz>ps8Pe7*{F7TTVlpP!3QpJ>o6uK#Vn zdCvi+n)L#je}8}1UuRtUDx`jH;9|F*-wPky%UIm&6#m_|>dS|1x3aYJ&(1PEn!02P z=rFC{x9|Tu_I@W@!j}5)cgw%G@kl<Bt^4uNmGQ)TD_I4G!p65v_Y2Dc7@l#w*&&_3 zr|@LQ)y(B{pY;b#e6^A3!`$+FAE!TD75KSX{?CEmm*@X`a=-3DBm1AgaNcENANC(y zp;Ty`e2nM+?ztwJlj`Ne-|yI;a&ppzDhbs+f4|-SdwWLLcJ-#n&1pZ+OIw%aWLRo8 zT;z{gldz0oGs~ZOm)VcsfgK;X|8+?N!=0pV-9IL>XZ9)FWeeWb0CiW7ULt$l*Q?>q zr}g*$DXLGI5YjK&uzt^{uKjQRe!m}{U3t$_eeRRLpQi8sl3)Jv($U|~%=b%H$tav> z*%`4!q$fna{7&J$#CF-Rm~S5r^Z!;lTJ)fiy(&DWu(e)Vlh0kYG~~s{soLSc{wvRY z>}Hey=tyUsors>xghLIQi3i?W#wx5c+^eCf7{%~uw;y{Af4}Xw8S|TrD?TK=pWw{* zk@eoD)YCs?(>YiZ`W7(w$a5XYaX81vHT~Jy+2JwAm@9WBv@tARbD}fr{=U8QKeq@v z)SZ86SpF{N{pt9BoAiBHxDMQEzG&xjUukJ0)W3d=%lkze<}mrmKUq`vHaq_F@&uDP zr&j8&h_nCwX7f+m<s5yYKm0yKPd`xm<o}~@-1>VCyx-+^Ado@a?9Tkn%}fUA2}|BL zaqDT^JAUO>`2Js^VvSpbv>BFiJh>K~udDa_$z=aIt_l*Fg7d21S&B7Ee28`Wv(V$@ ztrrZQ&+7hsJl=geLAd$-HMQc`THoi{R{vVenDbBWtf0Hh!@u9Q?|=Gzj?#=K7rxbe z9Fy<=d1n4Ex9<8@Mptu<tX-eaS^oqF#JL7uo+BRf?P_Zjo3v|s+#>l^g5+d;3=Xv) zaAXee-J$DwY(wM0@?T#r`~R*C{jk3H=7Bf+|Nq;^{`j>1{x{()m)O+KfL2pIU(_pM zsFd>j!^`FK#jYQ`VzBN`JFoOJ?yM)j6j(MEA1L8llQMz7Wo6kd%a(&DI99E`U;90_ ze*V$gm<cxj|9t-U_|LrT_IXTff7VSdez|n|uj9OL&U>70oXZ^~^+1K;2e_2tdwFf` z?ERmW`I(fPJ}grHC}~%-L;p`s!WNbe!7ugyp4b0Mk`B)N5O(<hhg1{4+VLH$Z2o?^ zoXL{A;r@D-J&de|B}cE?uKMR^^U)<<B`fXxytlH&XAJi()b?Ytu)J`=l&9y!#N^Io zCcly!>8^hm>&|aI%;ivb{iNm3CzJnjCA>L5<KdydGmX>5<RK*n2~`We+GoNpHrqKD zW#n>&ITc%uG&4;Q2-<#TuJ!fT_xA3-f45b@$)iStfm6|!y=uauT-hp@>s(vpT;^vw zahy~ZX=s_Si}}&1ZwhWQwO=llg{o($_1{~x^^L3-qX)-HW2pSA<M#hH>OU%}`SbC3 z*;O-;6_e6IW|q3E7PekIQ2lP_aq-Ui|NlJSn_u%-I`03!zuo<}H4`|F2m9Mzy`8uF z?VqpZw{y+chp&%2`c>U;&I{SXBZB{uZ|Ch^8(*@i=I5tJk0k>4{CL#8ckT9jx9b0V zI<5cR&-(3_3ucQvmS$gHcMo*5?EZ6hzuySoQgh-sDa7UA<Z)Nfo#Ef{`akXE|Nnlk z&foucTlv$e;Z@T4dp4S<o)Y<As105?nZN(<x6k(~9`pX+sOa2Qao*;0&;J`;qS|{v zHF4bTvbUh)9xI*O`M$EMZgbr6a@p)Xpu)8JQK$N!?-rlW81DsLNWCz3&%a-<_vY8W zj=uNcVDsMcdzHsu-`%}^`^~i3mC9~C8ta@n6eB^cgO%0_`xIVmyHj*JpycJHqxCY6 z-pwgK$7%b#`u^{E<?nVr|FwNB!=ID>b&uxO{d!sTRq6ZP^7;Dj6j)jtnc1tPbGJ;~ zUhvTAza7h?v*!0>YGih{#{a%`y^E>f>#M8x#G-Q^?)~*@_0dv>mPeY)=Lki)aVSPQ zFnVyTv{qo~2UT##dL$SAc(J(u&vC_f|Ned7-#)MSqN{kN{hx>Ye{Y8|@JX4RxLx!4 zEVz!HzpwV`)bOtJhp()&@sHS5vhx3*iOTM6dD(T}HqRGjeemSu<iDkB67Hr<_TAIW zXQlDQ#);!36D07{xpqh~a){~2y#X~}e}7$H|MvNd*s7OH|9vuHdGO-m;=iQ^ce7o! z_waBks$@e_iwvX2<-LavvdhPmaos3-zxVqu%bEpSgAZ80+mT!-JzY2Y+4J9D-`?K7 zgHN$#iz+1bF<nSy{(O*K{zt#_orR0OH?qrp=yq7Q>y=jghP_{}MgMyo#!&X|&P`Bb z;*X%E&vnoW)1xbIf{J;j_s{MB?~G?L%DG{XKRvdLQ?&6;#pB+(ukRZenfI&=Uj8fe z&^C@G!OQ*X61m(Y)6dO$x%cO@+4o}0?>@b+-ZEj$LI#zVE3yLd0tIH@ZY1;nFTCT{ zy+i)*3-^B~q}PQ1`uaM&W}j%o_1N;c+n>*?{#Dr^P$ZDIIqj_0y7-fzGdacMDi&_P z8Ws)d3VQ49Tylhs?d_{~J0A1ZOHcd_I^OyBv8!dTW(YWKYG9fmaH+uIPNGSlfK!Jw zD3A|>(v#vvP*YQikITV{qqB`^0;oN@<m3Vd6;Sb!X#@(`76GSOJRo_+mI-R0+zILm f;8F7UKQs3}&cuB(`*|1`7#KWV{an^LB{Ts5%BR2= literal 0 HcmV?d00001 diff --git a/cartpole_score.png b/cartpole_score.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2787e952f0287524ccbb7e3ec24a1df766d3c6 GIT binary patch literal 50935 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�&-*1MPCb_qM62DU21N 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 literal 0 HcmV?d00001 diff --git a/evaluate_reinforce_cartpole.py b/evaluate_reinforce_cartpole.py new file mode 100644 index 0000000..507de93 --- /dev/null +++ b/evaluate_reinforce_cartpole.py @@ -0,0 +1,59 @@ +import torch +import gym +import torch.nn as nn +import torch.nn.functional as F +from torch.distributions import Categorical + + +# Define the CNN architecture +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.fc1 = nn.Linear(4, 128) # input : size 4 environment observation + self.fc2 = nn.Linear(128, 2) # output : 2 possible output (left or right) + self.dropout = nn.Dropout(0.25) + self.softmax = nn.Softmax(dim=0) + + def forward(self, x): + x = F.relu(self.fc1(x)) + x = self.dropout(x) + x = self.fc2(x) + x = self.softmax(x) + return x + + +def select_action(model, state): + # Get the new probabilities of action + prob = model(torch.tensor(state)) + # Sample the action based on the probabilities and store its probability in the buffer + m = Categorical(prob) # create a discreet distribution + action = m.sample() # choose a random action following the probabilities + return action + + +def evaluate(model, env, episodes=100): + successes = 0 + for ep in range(episodes): + print(f"{ep}/{episodes}") + state, _ = env.reset() + total_reward = 0 + done = False + truncated = False + step = 0 + while not (done or truncated): + action = select_action(model, state) + state, reward, done, truncated, _ = env.step(action.item()) + total_reward += reward + step += 1 + if truncated: + successes += 1 + return successes / episodes + + +if __name__ == "__main__": + env = gym.make("CartPole-v1", render_mode=None) + model = Net() + model.load_state_dict(torch.load("reinforce_cartpole_best.pth")) + model.eval() + success_rate = evaluate(model, env) + print(f"Success Rate: {success_rate * 100:.2f}%") \ No newline at end of file diff --git a/reinforce_cartpole.py b/reinforce_cartpole.py new file mode 100644 index 0000000..94b57c1 --- /dev/null +++ b/reinforce_cartpole.py @@ -0,0 +1,125 @@ +import matplotlib.pyplot as plt +import torch +import torch.nn as nn +import torch.optim as optim +import gym +from torch.distributions import Categorical +import torch.nn.functional as F + + + + +# Initialize the tracking of the cartpole learning +# wandb.init(project="cartpole_handmade") + +# Define the CNN architecture +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.fc1 = nn.Linear(4, 128) # input : size 4 environment observation + self.fc2 = nn.Linear(128, 2) # output : 2 possible output (left or right) + self.dropout = nn.Dropout(0.25) + self.softmax = nn.Softmax(dim=0) + + def forward(self, x): + x = F.relu(self.fc1(x)) + x = self.dropout(x) + x = self.fc2(x) + x = self.softmax(x) + return x + + +# Environment and model parameters +env = gym.make("CartPole-v1", render_mode=None) # render_mode="human" to see the render + +model = Net() +optimizer = optim.Adam(model.parameters(), lr=5e-3) +gamma = 0.99 + +max_eps_steps = env.spec.max_episode_steps +print("Nombre max d'étapes par épisode :", max_eps_steps) +nb_ep = 500 +print("Nombre d'épisodes :", nb_ep) + +# Progress lists +losses = [] +score = [] # store the step reach at each episode + +for iter in range(nb_ep): + # Reset the environment at the beginning of a new episode + observation, _ = env.reset() + done = False + truncated = False + + # Reset the previous results + buffer = torch.zeros(max_eps_steps) # store the cumulated reward at each step + probs = torch.zeros(max_eps_steps) # store the probability of each step + step = 0 + + while not (done or truncated): + + # Get the new probabilities of action + prob = model(torch.tensor(observation)) + + # Sample the action based on the probabilities and store its probability in the buffer + m = Categorical(prob) # create a discreet distribution + action = m.sample() # choose a random action following the probabilities + probs[step] = prob[action] # store the probability of the next step + + # Step the environment with the chosen action + observation, reward, done, truncated, _ = env.step(action.item()) + + # Update buffer with the new reward + for i in range(step+1): + buffer[i] += reward * gamma ** (step - i) # cumulated reward + + step += 1 + + + # Add the current step to the list of scores + score.append(step) + + # Adjust results' size and normalize buffer + buffer = buffer[:step] + probs = probs[:step] + F.normalize(buffer, dim=0) + + # Compute loss + logs = torch.log10(probs) + loss = - torch.sum(torch.mul(logs, buffer)) + losses.append(loss) + + # Print progress + if (iter + 1) % 50 == 0: + print("Épisode : {} / {}".format(iter + 1, nb_ep)) + print("Score : ", step) + print("Loss : ", round(loss.item(), 2)) + + # Perform gradient descent to update neural network + optimizer.zero_grad() + loss.backward() + optimizer.step() + + # Log the progress in Weights and Biases + # wandb.log({'Reward': step, 'Loss': loss.item()}) + +# saving of the model +torch.save(model.state_dict(), "reinforce_cartpole_best.pth") + +# Plot the evolution of learning : reward and loss +# Reward +plt.plot(score) +plt.xlabel('Épisode') +plt.ylabel('Step') +plt.title("Évolution du score en fonction de l'épisode") +plt.show() + +# Loss +total_losses = [loss.item() for loss in losses] +plt.plot(total_losses) +plt.xlabel('Épisode') +plt.ylabel('Loss') +plt.title("Évolution du loss en fonction de l'épisode") +plt.show() + + diff --git a/reinforce_cartpole_best.pth b/reinforce_cartpole_best.pth new file mode 100644 index 0000000000000000000000000000000000000000..5706316c666e436c7335a0c56c9a062e678249d4 GIT binary patch literal 5800 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 SW(5u5F>o+&Fo4uU)B*sjHVpp& literal 0 HcmV?d00001 diff --git a/sujet.md b/sujet.md new file mode 100644 index 0000000..88a21a5 --- /dev/null +++ b/sujet.md @@ -0,0 +1,227 @@ +# TD 1 : Hands-On Reinforcement Learning + +MSO 3.4 Apprentissage Automatique + +# + +In this hands-on project, we will first implement a simple RL algorithm and apply it to solve the CartPole-v1 environment. Once we become familiar with the basic workflow, we will learn to use various tools for machine learning model training, monitoring, and sharing, by applying these tools to train a robotic arm. + +## To be handed in + +This work must be done individually. The expected output is a repository named `hands-on-rl` on https://gitlab.ec-lyon.fr. + +We assume that `git` is installed, and that you are familiar with the basic `git` commands. (Optionnaly, you can use GitHub Desktop.) +We also assume that you have access to the [ECL GitLab](https://gitlab.ec-lyon.fr/). If necessary, please consult [this tutorial](https://gitlab.ec-lyon.fr/edelland/inf_tc2/-/blob/main/Tutoriel_gitlab/tutoriel_gitlab.md). + +Your repository must contain a `README.md` file that explains **briefly** the successive steps of the project. It must be private, so you need to add your teacher as "developer" member. + +Throughout the subject, you will find a 🛠 symbol indicating that a specific production is expected. + +The last commit is due before 11:59 pm on March 17, 2025. Subsequent commits will not be considered. + +> ⚠️ **Warning** +> Ensure that you only commit the files that are requested. For example, your directory should not contain the generated `.zip` files, nor the `runs` folder... At the end, your repository must contain one `README.md`, three python scripts, and optionally image files for the plots. + +## Before you start + +Make sure you know the basics of Reinforcement Learning. In case of need, you can refer to the [introduction of the Hugging Face RL course](https://huggingface.co/blog/deep-rl-intro). + +## Introduction to Gym + +[Gym](https://gymnasium.farama.org/) is a framework for developing and evaluating reinforcement learning environments. It offers various environments, including classic control and toy text scenarios, to test RL algorithms. + +### Installation + +We recommend to use Python virtual environnements to install the required modules : https://docs.python.org/3/library/venv.html + +First, install Pytorch : https://pytorch.org/get-started/locally. + +Then install the following modules : + + +```sh +pip install gym==0.26.2 +``` + +Install also pyglet for the rendering. + +```sh +pip install pyglet==2.0.10 +``` + +```sh +pip install numpy==1.26.4 +``` + +If needed + +```sh +pip install pygame==2.5.2 +``` + +```sh +pip install PyQt5 +``` + +```sh +pip install opencv-python +``` + +### Usage + +Here is an example of how to use Gym to solve the `CartPole-v1` environment [Documentation](https://gymnasium.farama.org/environments/classic_control/cart_pole/): + +```python +import gym + +# Create the environment +env = gym.make("CartPole-v1", render_mode="human") + +# Reset the environment and get the initial observation +observation = env.reset() + +for _ in range(100): + # Select a random action from the action space + action = env.action_space.sample() + # Apply the action to the environment + # Returns next observation, reward, done signal (indicating + # if the episode has ended), and an additional info dictionary + observation, reward, terminated, truncated, info = env.step(action) + # Render the environment to visualize the agent's behavior + env.render() + if terminated: + # Terminated before max step + break + +env.close() +``` + +## REINFORCE + +The REINFORCE algorithm (also known as Vanilla Policy Gradient) is a policy gradient method that optimizes the policy directly using gradient descent. The following is the pseudocode of the REINFORCE algorithm: + +```txt +Setup the CartPole environment +Setup the agent as a simple neural network with: + - One fully connected layer with 128 units and ReLU activation followed by a dropout layer + - One fully connected layer followed by softmax activation +Repeat 500 times: + Reset the environment + Reset the buffer + Repeat until the end of the episode: + Compute action probabilities + Sample the action based on the probabilities and store its probability in the buffer + Step the environment with the action + Compute and store in the buffer the return using gamma=0.99 + Normalize the return + Compute the policy loss as -sum(log(prob) * return) + Update the policy using an Adam optimizer and a learning rate of 5e-3 +Save the model weights +``` + +To learn more about REINFORCE, you can refer to [this unit](https://huggingface.co/learn/deep-rl-course/unit4/introduction). + +> 🛠 **To be handed in** +> Use PyTorch to implement REINFORCE and solve the CartPole environement. Share the code in `reinforce_cartpole.py`, and share a plot showing the total reward accross episodes in the `README.md`. Also, share a file `reinforce_cartpole.pth` containing the learned weights. For saving and loading PyTorch models, check [this tutorial](https://pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-model-for-inference) + +## Model Evaluation + +Now that you have trained your model, it is time to evaluate its performance. Run it with rendering for a few trials and see if the policy is capable of completing the task. + +> 🛠 **To be handed in** +> Implement a script which loads your saved model and use it to solve the cartpole enviroment. Run 100 evaluations and share the final success rate across all evaluations in the `README.md`. Share the code in `evaluate_reinforce_cartpole.py`. + + +## Familiarization with a complete RL pipeline: Application to training a robotic arm + +In this section, you will use the Stable-Baselines3 package to train a robotic arm using RL. You'll get familiar with several widely-used tools for training, monitoring and sharing machine learning models. + +### Get familiar with Stable-Baselines3 + +Stable-Baselines3 (SB3) is a high-level RL library that provides various algorithms and integrated tools to easily train and test reinforcement learning models. + +#### Installation + +```sh +pip install stable-baselines3 +pip install stable-baselines3[extra] +pip install moviepy +``` + +#### Usage + +Use the [Stable-Baselines3 documentation](https://stable-baselines3.readthedocs.io/en/master/) to implement the code to solve the CartPole environment with the Advantage Actor-Critic (A2C) algorithm. + + +> 🛠 **To be handed in** +> Store the code in `a2c_sb3_cartpole.py`. Unless otherwise stated, you'll work upon this file for the next sections. + +### Get familiar with Hugging Face Hub + +Hugging Face Hub is a platform for easy sharing and versioning of trained machine learning models. With Hugging Face Hub, you can quickly and easily share your models with others and make them usable through the API. For example, see the trained A2C agent for CartPole: https://huggingface.co/sb3/a2c-CartPole-v1. Hugging Face Hub provides an API to download and upload SB3 models. + +#### Installation of `huggingface_sb3` + +```sh +pip install huggingface-sb3==2.3.1 +``` + +#### Upload the model on the Hub + +Follow the [Hugging Face Hub documentation](https://huggingface.co/docs/hub/stable-baselines3) to upload the previously learned model to the Hub. + +> 🛠 **To be handed in** +> Link the trained model in the `README.md` file. + +> 📝 **Note** +> [RL-Zoo3](https://stable-baselines3.readthedocs.io/en/master/guide/rl_zoo.html) provides more advanced features to save hyperparameters, generate renderings and metrics. Feel free to try them. + +### Get familiar with Weights & Biases + +Weights & Biases (W&B) is a tool for machine learning experiment management. With W&B, you can track and compare your experiments, visualize your model training and performance. + +#### Installation + +You'll need to install both `wand` and `tensorboar`. + +```shell +pip install wandb tensorboard +``` + +Use the documentation of [Stable-Baselines3](https://stable-baselines3.readthedocs.io/en/master/) and [Weights & Biases](https://docs.wandb.ai/guides/integrations/stable-baselines-3) to track the CartPole training. Make the run public. + +🛠 Share the link of the wandb run in the `README.md` file. + +> ⚠️ **Warning** +> Make sure to make the run public! + +### Full workflow with panda-gym + +[Panda-gym](https://github.com/qgallouedec/panda-gym) is a collection of environments for robotic simulation and control. It provides a range of challenges for training robotic agents in a simulated environment. In this section, you will get familiar with one of the environments provided by panda-gym, the `PandaReachJointsDense-v3`. The objective is to learn how to reach any point in 3D space by directly controlling the robot's articulations. + +#### Installation + +```shell +pip install panda-gym==3.0.7 +``` + +#### Train, track, and share + +Use the Stable-Baselines3 package to train A2C model on the `PandaReachJointsDense-v3` environment. 500k timesteps should be enough. Track the environment with Weights & Biases. Once the training is over, upload the trained model on the Hub. + +> 🛠 **To be handed in** +> Share all the code in `a2c_sb3_panda_reach.py`. Share the link of the wandb run and the trained model in the `README.md` file. + +## Contribute + +This tutorial may contain errors, inaccuracies, typos or areas for improvement. Feel free to contribute to its improvement by opening an issue. + +## Author + +Quentin Gallouédec + +Updates by Bruno Machado, Léo Schneider, Emmanuel Dellandréa + +## License + +MIT -- GitLab