From 3f47928b66f5beb5226fcf5bd1542ea16af2d9fb Mon Sep 17 00:00:00 2001 From: Justin John <34035011+justinjohn0306@users.noreply.github.com> Date: Tue, 10 Oct 2023 05:56:12 +0530 Subject: [PATCH] Add files via upload --- animation/TokenFlow-WebUI/README.md | 33 ++ animation/TokenFlow-WebUI/app.py | 381 +++++++++++++++ .../examples/cutting_bread.mp4 | Bin 0 -> 847997 bytes .../examples/rocket_kittens.mp4 | Bin 0 -> 561320 bytes .../TokenFlow-WebUI/examples/running_dog.mp4 | Bin 0 -> 1443849 bytes animation/TokenFlow-WebUI/examples/wolf.mp4 | Bin 0 -> 378711 bytes .../examples/woman-running.mp4 | Bin 0 -> 1285788 bytes animation/TokenFlow-WebUI/preprocess_utils.py | 333 +++++++++++++ animation/TokenFlow-WebUI/requirements.txt | 20 + animation/TokenFlow-WebUI/style.css | 91 ++++ animation/TokenFlow-WebUI/tokenflow_pnp.py | 364 ++++++++++++++ animation/TokenFlow-WebUI/tokenflow_utils.py | 448 ++++++++++++++++++ animation/TokenFlow-WebUI/utils.py | 121 +++++ 13 files changed, 1791 insertions(+) create mode 100644 animation/TokenFlow-WebUI/README.md create mode 100644 animation/TokenFlow-WebUI/app.py create mode 100644 animation/TokenFlow-WebUI/examples/cutting_bread.mp4 create mode 100644 animation/TokenFlow-WebUI/examples/rocket_kittens.mp4 create mode 100644 animation/TokenFlow-WebUI/examples/running_dog.mp4 create mode 100644 animation/TokenFlow-WebUI/examples/wolf.mp4 create mode 100644 animation/TokenFlow-WebUI/examples/woman-running.mp4 create mode 100644 animation/TokenFlow-WebUI/preprocess_utils.py create mode 100644 animation/TokenFlow-WebUI/requirements.txt create mode 100644 animation/TokenFlow-WebUI/style.css create mode 100644 animation/TokenFlow-WebUI/tokenflow_pnp.py create mode 100644 animation/TokenFlow-WebUI/tokenflow_utils.py create mode 100644 animation/TokenFlow-WebUI/utils.py diff --git a/animation/TokenFlow-WebUI/README.md b/animation/TokenFlow-WebUI/README.md new file mode 100644 index 0000000..8439116 --- /dev/null +++ b/animation/TokenFlow-WebUI/README.md @@ -0,0 +1,33 @@ +# TokenFlow-WebUI + +## Installation + +### Using Anaconda on Windows/Linux (Recommended) + +1. **Clone the repository:** + ```bash + git clone https://github.com/justinjohn0306/TokenFlow-WebUI.git + cd TokenFlow-WebUI + ``` + +2. **Create a new Anaconda environment named `tokenflow` with Python 3.9:** + ```bash + conda create -n tokenflow python=3.9 + ``` + +3. **Activate the `tokenflow` environment:** + ```bash + conda activate tokenflow + ``` + +4. **Install the required packages:** + ```bash + pip install -r requirements.txt + ``` + +## Running the App + +After you've installed all the required packages, you can launch the Gradio app by running the following command: + +```bash +python app.py diff --git a/animation/TokenFlow-WebUI/app.py b/animation/TokenFlow-WebUI/app.py new file mode 100644 index 0000000..214c482 --- /dev/null +++ b/animation/TokenFlow-WebUI/app.py @@ -0,0 +1,381 @@ +import gradio as gr +import torch +from diffusers import StableDiffusionPipeline, DDIMScheduler +from utils import video_to_frames, add_dict_to_yaml_file, save_video, seed_everything +# from diffusers.utils import export_to_video +from tokenflow_pnp import TokenFlow +from preprocess_utils import * +from tokenflow_utils import * +# load sd model +#device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +if torch.cuda.is_available(): + device = "cuda" +elif torch.backends.mps.is_available(): + device = "mps" +else: + device = "cpu" +model_id = "stabilityai/stable-diffusion-2-1-base" + +to = torch.float16 if device == 'cuda' else torch.float32 + +# components for the Preprocessor +scheduler = DDIMScheduler.from_pretrained(model_id, subfolder="scheduler") +vae = AutoencoderKL.from_pretrained(model_id, subfolder="vae", revision="fp16", + torch_dtype=to).to(device) +tokenizer = CLIPTokenizer.from_pretrained(model_id, subfolder="tokenizer") +text_encoder = CLIPTextModel.from_pretrained(model_id, subfolder="text_encoder", revision="fp16", + torch_dtype=to).to(device) +unet = UNet2DConditionModel.from_pretrained(model_id, subfolder="unet", revision="fp16", + torch_dtype=to).to(device) + +# pipe for TokenFlow +tokenflow_pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=to).to(device) +if device == "cuda": + tokenflow_pipe.enable_xformers_memory_efficient_attention() + +def randomize_seed_fn(): + seed = random.randint(0, np.iinfo(np.int32).max) + return seed + +def reset_do_inversion(): + return True + +def get_example(): + case = [ + [ + 'examples/wolf.mp4', + ], + [ + 'examples/woman-running.mp4', + ], + [ + 'examples/cutting_bread.mp4', + ], + [ + 'examples/running_dog.mp4', + ] + ] + return case + + +def prep(config): + # timesteps to save + if config["sd_version"] == '2.1': + model_key = "stabilityai/stable-diffusion-2-1-base" + elif config["sd_version"] == '2.0': + model_key = "stabilityai/stable-diffusion-2-base" + elif config["sd_version"] == '1.5' or config["sd_version"] == 'ControlNet': + model_key = "runwayml/stable-diffusion-v1-5" + elif config["sd_version"] == 'depth': + model_key = "stabilityai/stable-diffusion-2-depth" + toy_scheduler = DDIMScheduler.from_pretrained(model_key, subfolder="scheduler") + toy_scheduler.set_timesteps(config["save_steps"]) + print("config[save_steps]", config["save_steps"]) + timesteps_to_save, num_inference_steps = get_timesteps(toy_scheduler, num_inference_steps=config["save_steps"], + strength=1.0, + device=device) + print("YOOOO timesteps to save", timesteps_to_save) + + # seed_everything(config["seed"]) + if not config["frames"]: # original non demo setting + save_path = os.path.join(config["save_dir"], + f'sd_{config["sd_version"]}', + Path(config["data_path"]).stem, + f'steps_{config["steps"]}', + f'nframes_{config["n_frames"]}') + os.makedirs(os.path.join(save_path, f'latents'), exist_ok=True) + add_dict_to_yaml_file(os.path.join(config["save_dir"], 'inversion_prompts.yaml'), Path(config["data_path"]).stem, config["inversion_prompt"]) + # save inversion prompt in a txt file + with open(os.path.join(save_path, 'inversion_prompt.txt'), 'w') as f: + f.write(config["inversion_prompt"]) + else: + save_path = None + + model = Preprocess(device, config, + vae=vae, + text_encoder=text_encoder, + scheduler=scheduler, + tokenizer=tokenizer, + unet=unet) + print(type(model.config["batch_size"])) + frames, latents, total_inverted_latents, rgb_reconstruction = model.extract_latents( + num_steps=model.config["steps"], + save_path=save_path, + batch_size=model.config["batch_size"], + timesteps_to_save=timesteps_to_save, + inversion_prompt=model.config["inversion_prompt"], + ) + + + return frames, latents, total_inverted_latents, rgb_reconstruction + +def preprocess_and_invert(input_video, + frames, + latents, + inverted_latents, + seed, + randomize_seed, + do_inversion, + # save_dir: str = "latents", + steps, + n_timesteps = 50, + batch_size: int = 8, + n_frames: int = 40, + inversion_prompt:str = '', + + ): + sd_version = "2.1" + height = 512 + weidth: int = 512 + print("n timesteps", n_timesteps) + if do_inversion or randomize_seed: + preprocess_config = {} + preprocess_config['H'] = height + preprocess_config['W'] = weidth + preprocess_config['save_dir'] = 'latents' + preprocess_config['sd_version'] = sd_version + preprocess_config['steps'] = steps + preprocess_config['batch_size'] = batch_size + preprocess_config['save_steps'] = int(n_timesteps) + preprocess_config['n_frames'] = n_frames + preprocess_config['seed'] = seed + preprocess_config['inversion_prompt'] = inversion_prompt + preprocess_config['frames'] = video_to_frames(input_video) + preprocess_config['data_path'] = input_video.split(".")[0] + + + if randomize_seed: + seed = randomize_seed_fn() + seed_everything(seed) + + frames, latents, total_inverted_latents, rgb_reconstruction = prep(preprocess_config) + print(total_inverted_latents.keys()) + print(len(total_inverted_latents.keys())) + frames = gr.State(value=frames) + latents = gr.State(value=latents) + inverted_latents = gr.State(value=total_inverted_latents) + do_inversion = False + + return frames, latents, inverted_latents, do_inversion + + +def edit_with_pnp(input_video, + frames, + latents, + inverted_latents, + seed, + randomize_seed, + do_inversion, + steps, + prompt: str = "a marble sculpture of a woman running, Venus de Milo", + # negative_prompt: str = "ugly, blurry, low res, unrealistic, unaesthetic", + pnp_attn_t: float = 0.5, + pnp_f_t: float = 0.8, + batch_size: int = 8, #needs to be the same as for preprocess + n_frames: int = 40,#needs to be the same as for preprocess + n_timesteps: int = 50, + gudiance_scale: float = 7.5, + inversion_prompt: str = "", #needs to be the same as for preprocess + n_fps: int = 10, + progress=gr.Progress(track_tqdm=True) +): + config = {} + + config["sd_version"] = "2.1" + config["device"] = device + config["n_timesteps"] = int(n_timesteps) + config["n_frames"] = n_frames + config["batch_size"] = batch_size + config["guidance_scale"] = gudiance_scale + config["prompt"] = prompt + config["negative_prompt"] = "ugly, blurry, low res, unrealistic, unaesthetic", + config["pnp_attn_t"] = pnp_attn_t + config["pnp_f_t"] = pnp_f_t + config["pnp_inversion_prompt"] = inversion_prompt + + + if do_inversion: + frames, latents, inverted_latents, do_inversion = preprocess_and_invert( + input_video, + frames, + latents, + inverted_latents, + seed, + randomize_seed, + do_inversion, + steps, + n_timesteps, + batch_size, + n_frames, + inversion_prompt) + do_inversion = False + + + if randomize_seed: + seed = randomize_seed_fn() + seed_everything(seed) + + + editor = TokenFlow(config=config,pipe=tokenflow_pipe, frames=frames.value, inverted_latents=inverted_latents.value) + edited_frames = editor.edit_video() + + save_video(edited_frames, 'tokenflow_PnP_fps_30.mp4', fps=n_fps) + # path = export_to_video(edited_frames) + return 'tokenflow_PnP_fps_30.mp4', frames, latents, inverted_latents, do_inversion + +######## +# demo # +######## + + +intro = """ +
+ z>f3U^i>3nw25MV5Yt?c0JNB=!DPkQ)C`FMR5~{4H%1AZGupsT8rrn{+`W@`bS`e1u^EJX2%)vf4k+@v z@@YqD f*%>S224hnakMm z-6== X3@kwBh$F7D^4UhI z;z7I>oxT$-LOCstx0}KHu1|JBr!MCg^?e8}xt&MXK6-l>QYg`e*M 8ymG8b7MjriF%X^;f8<#{v(YI|{KmzqKlDh}Dp)3GnA$}z}wj=U9x^F{Bh zM)6l$xBZd9BdVgB+V6s{K^30iLcfguWEXKS+Ub^x+bTst6N!!zj{iX$W;ATlcEn&= z{&@|oB0#6kF98an*XcedT#6z3qYp&B1;}rM&X}!q-9F`m-Dv(RdskiXgL$3sxo;k$ zl)`xEtsQb)WO-+swBiquX@87xKOFV)I;RoiY?pyp;(M3+BE1?7xSnr3w-h_0iQ%x0 z58c~{957uG+#os64F;?IWP`r$Im=-5qt|d7*{|o6x6yAq&o(=OEg=zI;hhqdNJM`5 zdT5zd<~D7pJOq{NeMj|#LNCOT5CrAQ*HqLV>#{)J(;~2cp;YKIEfnHrj`_18?~R3d zSKAf>9jjoM75=(pSbF23m2@lEz(*#Z4^XRRM^Cok5EZM3Qm#zz?~l*0K+06FUsas1 zl8spI{-n-0M2G{;t#KtDhRLaxRv(p?7c&>atqqp;OczPsb#)(pYdVmD%}>}x7RTc0 zH>8M;bp2-1Cp!x&Tv7 K7n*!iw|tkjf>i;KX2G_c8+WfMqFcv_+aanG vNSopl#wwzYQ`4CYS z`R91SEXe*@3XHZ!w!OkU{G0x~nmEViu@*W2T7VmlxNU%_cWxb-SdN4I*FSqg_^{R- z3gw$+JRebZvEBbPK5R@0CW6QNN;l _~RzYvq7i)S%CB`=XJH4Qw4OVukv7-0F=Egzh!$ z+Tx%P&V`X_p&BjPCA5FlySLX`E8~uO5~-?j!MYsf;n*1(P|N$VAchyDFF8S$plUU* z{5$TUe0ndBVTL(Q8ou=MENOE_FtL_l#_z=k;_mgz<;WcXXIA9rtX$nN+(7aaq|4yO z*eLoFS1}Fq-!;^j$!eh}jqkf{Xx-ARlQ<>m9p-Mq;utF6=6?Rw=K*SO%&$J9o@q=Q z9%$&t(xUm5VGiepJqau4VC5iK6)w5nx6nz=HfO_e?}WhhvouBe*0QeHsz@OIqMRt@ zF}_k3R74)h(D%>~z)J^hU6@xjolK!UNUC(_4h?mqcbsabP-&Tt36Z-`8l_x&W&_9B z X+ApCRKh?sXTiGQSoceOdf*t^A=nVV kzi|u>`ob%b1E@+gCWoTWtzgPc*Jukixn`G*1>R zl@)3YNj>d7M~aK+g+~qWar4$NCjSrX(YMXrmD7$1_(-nHJno86wVaiZpjeOb0#*&A z4H%}9wf^Nhy^2VoqV1OgbHoVQRm^z1%V#@Or0s24`GR0eSpLoloYFbrC^0TJ8XxP< z5}@a7>F*^&u^!YNW?IxbV+{9_1iKToE#g#( oC9SmNI!|Mcw~Je9RoiB% zYBxqrd!p1onh>ryf2Jswwo-my$H~uViVG}MuG;_}tQW? l3xD 4l^ z*n>nL8z>m;R*ltv4CqXQA0Sl@6?0yJO~89cK#A1ocnk@8iht^>yb_A67H(%kGd3VE zV2?s9Ttuevb`694kEfa_qf{Bj2kt=ymNkr5r{5CC!Q=nNREIE!f@X%>T4+0@=3B*T zKLRaP9Oj_9m)F06pFU38TQEfMFTbIm_z4%doaf1j$ns5xdLEo~+~CN$ySEWbf6 zE~j|g6!hpwBR +kXtTv&YU?$wbF`P&)1mv`(tUMAB427F4v{2yZntMNRVR%8qWyx`iX0F7N zxCrZK?XEVbJJ|UA$+H4}?tr#S4|0f%U=XDq2TkA1ES-+8-3g-?#H{9($YZ#;s%y(Q zg H1QN-*coVLzji-|4?SHp{ryl76PFC#+~R&WC(QB7<~bt1DSxMFZ$~_L)Ca zzhiUoJJ$LZ%4bYxuA3=BfVwNhsrMHzB5rbpS0&w>SI=n0vN^xSOS(}0rFrDFQnT3o zi>}OSTzFUHF{gZB|N1rkSK{hf6QWjUl?F(SHo#oe1zYX!7^_Fx_4ml#O4gOVB-g|p zG_OsMTHo^$%1FBV67ymJ*{^ecuO`#FjRM%frtLY_u`3=L?X@@+UIk(cbS#LKhhPW$ zPl663w;CK3U6;mNN$~wgNu!xgGzdJ#VmDpegXRGxFBkDmtYAK(-D@kR>ZJVwQHY@C zpvJjCxhx@;K%WN1wL==4t65`~K9=jop()n&%D`QV&D^c#nj;kn0aIjJn?ufAZxRBN z2g}hnxIHs3LKv8OE|==T= l$xUFn!T}QjiZOd6G`2P&@%1YYDGx}N@Jf?0Cn<{bMN}qbs zo}$TvTGoVB1Ra!|WR+A52_la(M!^<1u&(UE$%)1gY8GRv&H67qtVE<*KNdi?CGq}~ z9TiSY^oL30g|C7@FUOAH^FrHIwl(AfJz1?IjHDVe60z3X7rz^52afKx>lo^$1x)d- z3#e0!slYY3&|Q4Sx_!SI^(tK@(Pv?p4J!&*vy7&(Q190tst$XOw~n~oKB{*iph&c5 z#%KJdo8F-|<8-m~h6CujV$NY3hydz5=(<`GOuZ%45$QW=G#O;*oPt5==P&tQT08|d zKf6PlP&>g-CY(?hcBK@yGZtRaZ1b *l@umgYI#x)1aVp5gMGHyKCY>MWg|FG~jSV z55H;opv!m-ri>m?&N+v=A==YPA>3V#;eI@u&2^Gt5Hn4qx2XeJtyZg;r`+Yn`;8Fp z$g*DW=dn{T6m?8qUxDbRG3K=@hs?^(b*w?cENQ&!C^2|=bD(-#C|>xS`*6DRzpQ z_(H9k5ogiCU<$ F^<=rqO9Z(gb54KXFnZG{a3F!%AWX@ZUa{_# z9vo=PakOpK`#zB@M P-(UwD#Olnv}8k3OT}yo!Fpn6w{pcm(#Uw&6Fn^%e1`eIwt( zb`;Fde!dVz+Bq9Rj*{G7>TX&D)32A9g@gsB?DmylVdcK*?l*Cz`reaY7$&qjxy!+- z)vCIVF*DMgME-DLxv#hA5SLlLc~0L*J0mDb&}mZhYIa${3U@R-bfM()#yl*=F(6#i z|0;(jNKSRj{Uzh7xlT%ps0vO{tMfq6nHuIlZe5D{l`jE(H;Ma^jK$p#fWDuOexC4v zg*TbXnSG^NH;8dLdC3zXN}Z20%FZh-5h449XGXppT;ba?Y6Is%%7L8~ggd{=%$_Tl zu7a^=wO&e7P1LbwA#`#mhNpynWZ5fqVX>G(1v$Dp)LdWM&QdMOZKHa2T5p|z)TI@r z(B>_Qi(8sB0O@qZFPnKxaow(2mU5?UkMnF3i5;Xz0rwX7kT4_rQNM)BR|DHb0>TPW z(yC3aHE7Y2J&X5{pOjyQZCvh?TQ)q_XV$i4JC8kH$n zd<)F4V!`0Q!tOlP=!Orwzt{?MYH+%Iqu~M=S2cG=27I8bb=56W@@MLruSPNPySX~* zY=s@-IlqR-1JROO=2C;6f|UmB4?(RKSX=3J97bIpv%sC#o}ejJrFX4gCb`{)t|-9y zedZJWvy{M|RBOPG+VJ+jOU40g3kBgULy5fXp7z(4rC__x_YmP&v>F( z(IM2=xaLVuM;l$}hk}b2-6L&NIhOHWK3~s=cywz00p0SK SHTR)C`s{3wa+ z3B9&I@+4Prk$y5z-*OT@Ys+VFMLf1k>|4epNb~4(&-#Qa^VR1xYJ+-~*jxwLyu+N7 zkL47ses!hx^`^d{67N*6QlUt-QBP&`3;3^HYRsXs+``rYKVNEhRdh3q1l_YB+}hgy zpf#U6ZN8rKlFf*!S;NgkF6p*#D?cmw)qUONRHv*Lwa{}kLyzRQ(jxC;K`oh9q4957 zbE5p#NmCE7!E;qp1`O`t5`zrJEqg=0=lRcf6Ls8RlCZ3<2j$N8cUSjIh*ED2G=T@> zmJl-}<{kr{>P~D=EtIfnWhvVb3f^PKfuV42O-m~!dXHtR*$*ydCyff2F|$6MowUR; zMcM`hR?&H;WIcnORQ1*;Mi2Z$Jqcth`kCnE?JaMLZ^Cnr&}Fqcy+*Ff7VVntg!c^5 z^Q%lPd^^x;5yb5g4JZjni|7hiBc(pZJxf}F(P#hJur!C->$p1`VQ+%p!}k`yffQ@( zd$8wF%e4YG0!3TJ^Z;Q_#(T`ED-wqM1Eje&YehW+zpC=nKFfgXe|k1s7Ta;5v_xkg z;Sz&iuUCr=)Apjn%ZKulNskrOUKjl{AecdwCPV9)8rTNDIm6C!s7L>$YSdA8t$!J% zrmUKXKMMMdGbTV-$%iI0obx;^cxEk3{|hHh!L^XJYACWKj-r(AJQOXlNK1ZKI}!C6 zcTC`R(UiXK4s31qfi!pK-Pt<_k-BTBk=|AW4l~ish0-gxUi(fD8Qhj^Qua9{Ph9)o zPRNtvfbTI~R3S938!&YiZeI5dU#xfc5ImoP>bwdFXY<_91;fM$#=ms>H;aab?t{&z zcn}M>Vfu()(XAfKvat+B@UU!&B6htJt_@%wg9$)2ygM?zcJRx+;GqHEzzUUe$#u7s zT&uIMJi{XN>99z8;5PVI1*y+eais>-k?_eISqt`5t(DJy2(jxju6jA6!J0t(UAlg= z^W_+5Qy@7nrb!+RP1KF~!EEmKjau7k|M+R760&OVZd5{j&jwZ(fwuhEXNI)Nacu^Y z7g#K~B)Y4DgP6^a&ppH~!yV;g6!vs=r@A6>=r$(&qKaX>qxwKYHne%77cM`W3Fe3( zmsr{k=Btj#T0WLaspHgTz7(12oTza&UkewJ>QHviXeriktPh0ASzxqz^CA?#1X^#Y ze@>>|uBuJ3ee6<&&VLlinhz19jB|i+kVG0Ept$ys_caRNAhpL+q*{ece?~laq|q9l zvG!fl$Q?#7!1uHpx|pUKx}<{JZ8kxucThU94M4Lo1H`Djy>?^Xc3`=<$EWCv$>U3Y z>hzQn8CtLfbS@5UnXU8TJ$r4QbQ2E*gy#wX>J1A5syPSWm^16lx3E0+7*zE*(g59i zXlA}sq;hTf<9w&-ZVF5 N>%aQnT=->jKOAtB}2(e?<5YO4M{Bt4op& zEcx|J#B2g`7$0|#%~Z35ZO0m2UeXg1Zn?!Tv|d=!a3UNUs|JL)rg00td77z8a)7UI zr8%`bTGh5xA!8oDOUzzSky}oLX99D)US|2taL_Utt`E_v0eV$(k{hjpBf!v$mxi9% zA*hl8!3|O%8>G=Rk&D `BFg9xWj%^*5E+Fds~X&37k*e8h7D TV9IEI&T|=Y z8TOn52#fPyZl c%~X6N`NQYP zYMAd#B6xPefFc o1 zZhUhA{qpC =ykCx4(T% J|xvxEO?{UhQ8hz7ahl&GPR4ZPG~sMeTtxz6 c#k4nq&>tpCSE!ssm;pn=g-M;ndgq#hcmY;IrVoYL0jMd)6YR^bHZ%YYrZ%9|s ztjnlQr)AzdJ@y2H-yygf4g)>z$1JS0dvyx=x(SQV&4`4?5fF>E>6S`G>QtiV#?6l3 zcwfKg!z}!~kVCrQuLJ{z(s9J(Jzic8o{%nD`GTC~Y)EV0kk3Dn57;|G?nv>sJUkLq z8ac0{{doOJ|K3DmB3%ZOyWkc;?a_w`IiHIjhYXLb656@FPVHgq*fl27DiKKHqV9t& z?3~fQzhfQH=Z8V5V~uXNilWVpPM3Ry>XC6EhV=j?$xu9Yi7*QFLVG#UB;r-bGPo2Y zl$9cmfNOTyBlf{XNZ@TyIS0GD8m1hd`v0luO~Al)Um9G*S{2~2qun_y`pZ;PGM>{f zJWewHTkiYTb_14 A7E!9oM_gCuC(XjrCa)Y&b93Roqo|~%k zfl#se-0am-l+TC)Hc*wgPAt9X%ym>ScbEw>=V_6?Y|~n6@Xg-~g2rA=CpaUWpwHSD ztyJ(gkA;aODyNIQc0YUL_Z@eQOY+Sc@ILlEK;d`gQs9LM((5TJdf!4}iou5N_tj;C zfSQ}(y|oHDrjYH^*PQ-im`3C^=QoNJU&nnT)jZIBk8FazF$gcyWj=|H97^YdRG5UP z{ ?7=zrMd+qj9luc>5r7dSS(-2%Bi>dieakn$D%$;lgm*S9T|!92&C*h3 z0EG5jXb@I+;)4QZ`r=&m!_IBVb*mp&jYEF*ypVUw%-8rHaisqSMUZPPa@bx^XX2a4 zI621!L=4>_^@(e2>&Po9o7>Eqgo+|>!dj;8{#LM|tW8x&1CZDf)Ia3=+FQ`skiNVZ zsDh*4>mA~<70J#v LMLl@;<40*S;yKfT zn*tu8#keG2nB}k1Wg2}2N9Yk~?zgL!_UCiy$D!1+IHigI(E(DyZld-Dx&U;)CuAMF zcXM>3!uMH;vjyedVN6$oOxtobfNehJp&VOv3AtFGBV2BQJ|!1@Q!^1@D$L*@w1Qvg zOwv$axd16!gu^j37>zDblz20;6fp$mPk*MB?SyP`i?-Ph)o@js^0BN2#A>_sqdStK zKAhV--f90p>Um+x0)@&okNswVYV8M;D(J%4mQvGPlW9tQT0dms6OJ0QHmlY;c~cGV z*+jjgi!|B3?(tBVqE6bQVUoDug|A_gnjn{7>8tQaS&e+^B2De$2-;t~3Mm)+#O}dX zK6HnbZ^9m}c%*bwAO&w;r|E}Ojq>S;KydZS2UPLE%#0oj!Yd+l=Z&4z3#o)jx@2pp zd*_)qnOUUl{EqiUEPC0@4Bx5qe(oF5-bL3d(yS*{!mvw+J(x%0a3Hyl1|(7mBQ2^& zqixQ1jvqNfplO2ja7mkxxjClTk#0H8V<0jxQEZe$t3THet+0l9y48|xp(1pv r9R7AP7o&f H~E5J<}SO@ zo*%x|zpYrF*AHw$aF*Al@&F{SNaN2LO2L1Y8qC-y1O8r1l*UITTn^}Ah~W 9o)Wgut(AU8m@kEih_BI! zXjRY30?O!jIbp{k-YV$qU&@aO(w@4ydINo3@K{(*U)RtLZ;UB9{yT-)_)4GZejjoD zAzK+#8J3;EJrCo)nXOfjWIh(+d>(HjU8U<0kTFwQwYC9a5-ZyX=dIXCPl%4~Jnn>a zaL8M_70(#X8&2VA+2^}IRx=muXRcD7b2X#Z+baITar{}|;6ITbx(SPLk9&lhu68vs zJqG=FpS|HLLf|4rtx!gvrq#+(7JVfc9*)N|$iPHSN8IRZ!ck)7971i~e*kp0-$=y? z0O<+wsMla_1=JQ+=nr+zRqjL@ztQ%^iF&}PFiRX@(Zd+thszkdN@l-rT8s4-;?{5B z`%aLp-NK9wp GYPg@al z%>0IsUD_hdhx4twS|1}s@uUtpnp6fBs Px}6z34~n;#^Nzgc!0ZDvg`(3%PO@& z6-=UV#IH$#tW8{e$p9(HBMvVaERCE$&xVLCVH!@69uUhf;G#6bvgar(DZ|DPO=N`! z4sgkA?W?!!l%cYE<&vbV-2h@#Wa|hs&C-} ~K)ZvV;rV=Fqp{7vcWh3QB_)^l_wM;EA+PK>V*cGPMAov-R zm$t8cX(_RV2tcJJ3M5PPUmYg6y#|U-PVy7AEuhd_DLte@hs XzoikI`+ zz!&iFzuqY|TZIG|p-rFA>C1z=R7od&7$+WnkRGU0iv&+Jae??l(uT>y;fdfRUOGx| zd|**1NM|BlBVPPGz6)cGRTFLeoT2H8&rfbmS;jt%k0;eb>2u2s1>u=isqqx@ZS=Ur zA0|L6G6>o_jsZB`@Lya4JTxTeMF=JYI0B*f775V9s+WdoHxzmf7m0b19OMu8$`#Ta zX(%(YWnHAg`{I$jHu?J8e;uYTm^*X1j5c#GUwk4?Hxk!kmOtI8yb)Q*%vYS*QZjnf zZ092ItBHIiC0^vlsTsroSvcTx6|`S?K3CEgtT2I4J_VB5MACp$WPe?W28rs#nJNQW z{;hs3IL@NNcTfq{Xq 2FQf=({$#y*k!>ZEM>mDbA1t+fpSsRSLFJ_CsprSF1hp zfQSTAAvy~SKg_jN0J1^6G_Af)G2#?}GsQs zQk8pt530)1bUijN6s3l7t|jlt@~xkX@MOde&EVZU;a9$9yOMQCrdvhrm(f#-j`Fj? zUCE%!<;*)s= (KlJkZFFnF*N*ZLDG&MsTOnDd13lR%g!;%>p`#u|s% z>&!hjEdpCh7<*R2y@S4Di$Vbuh*Y)SjQL-B>)52!r<^Lt%xP6v@@IXr?w|+*-@KP? z?3Xg1eWrqwxa6t)C< d^ *Z-qk#A!@!j%BT=s0V+xwFym!@>8xpS9*2YTx!)dd zYy&zlLgKZD#vBQCnKVsqM?sEg0fyxnkw)y-eH2&i`M5y5xgmN{0`wNXRoImK*q=oC z{Kg7=roJiMigX)KXn6ZLU)({iTyk&K4+htw+;eHgLF)ZD_?@}tF@2p9j}>;Y%RP*a z;MrhGI4C#B;}5Ozh*TRa`o5+LVtOs?nzjFcqO@AAn^pj4YxW@(O&H)Zb?}+neJ^t< zW^x^X(aA&A9jt7-< B8r< z@uZzU=UvNc@eS_g3{vnY E@R+5t3)t;9Xs1Rp65>geF$H4tg6G|$c5 z1P6%aPIkNYTM>?;r$aU#unur$3dx)yXiU@m168` {1HmEFF-2gs= x%@jqc-Z9^b$QEq;6eB=i`Arr)hN5<(>76 z?Qi=0z-prFo?;G*Ok9yhbgDyVi0|KD`giuxcyx5 UB42)U38PVJ$iSC$s2& z 8$B4x;Ho<3kWA z#hm?|gEk+!^XhKFot173yy=T O7MvXrIZt;HYMW|wCH8^u(8Wt0| zp+g$WEmOLmjRza4ecHRjfhsq0!!fdrhxrx0bybg%W({NR^iu6uW+jW?tNQ4B7{_0{ zY|+Qd5U_zIMANT#;lg`obIUr$w$q_hbO`&mOkRH1drupbR%31Nfy{fPVpG%d@G4sI zqVL7Ap4ofJRx18MG%PD!XN%As<+)aywVf9@v6zFv+<5Hf2w9k`vAye#O_BD(P*m$1vj??AI$+1Vw3-*FHljp}9baxOl^ zuLluxEX#L^xmk|rHInnovW8k%xe1c lbB~B%GEox%7D+SQ_l_) zu?oVOGVO|ad-Tf LuSl^t@ qF9*Bv}_oC#2d^&?}D% z6@qv^q}Lcfuwpg+8(Cg)|7>H;=JMPNn)H9QPa9v`I(=H=t_>H0Wz+qdPk)s-USb`X z@%J0)yn#8x>_2*L(-x1chhR5QYz~Pbvx7-q@LfvdZpBAon;G7bLkFR#?S4xwsnLUR zR{_6ylD}+VUk@xnM^3x1xDU v}w z4&l0{ v&+_im!RCG`n5rV|bd2daWX$>m+q#1L^)`N58 z-!Fqr#7c(@eS{)_!dAX}=ec@}&0ZH_B5Ukr14aB-3JudGs=p}ZpB>#*8?9iLVIrn@ zS=JuMxmq%|!_9_)!ZW@G6^aYyK*v(jNl#6)t^Hw-+~Vw7?0bd};It6g(tK+-ZD;Ko zjC8o(-)xgemEbX`l{3%jKou&$E-`!J9Rcxrv$1@hJPx)bS{XH&`V4hOd{zJGV8i!g z@j{Vs3tst0wnf*~P`1;FR=i|xIUJmL>Fz|7^p@MSfIVLXJVm-6OeXY**(biuTE0~D zO~4=_$H&m{t7m*EDs2_9?BEwZw>lgJcv3xmwub+`UwLpmA3`GI-U ;<05-jCe9Q@yRN zb!;u61B@lQ>C?!ki+nV}DFY{m+p<+w2-m|l8x|d|ji7F5twpi*b}(+}XwP|SqnBB- z(ON#W(FYuU)xv6qd~w;RSb5j=e48WQ163KD)ytCj4@%s$Ei{7t)a@l&pj(=I6)8jG zi^A3+ a;c8}KdLVbts*m95p* zLBRL-`uxJL(K%7?*cR!NpJidEEB;ROcDypo!GZ|d$2~-Z^<&zLll^kj>q!|m8%I63 zyPm80;GK$*M%%GP2>CCEiU=nF_tOw#McY+18bz+{Ssla|?6lqaX$Y%eDnZ+qO%uOU zMd- sRaMoES#J^-O?%-$!B3J*=CZc9`zx>p=}vf= zjK+6f`_gONqy+R8PQcS1lxNT*#VG (-qg*n7#!`L^ ze6l^%#bcuYJ+F3rrkh=}tr@t2=V-w@-kQq*Dkrg1_I#et%6!!=aWhtJDhY@1qX~Gs zeeSAK-{-tDG3IR2s;G!hjznjJPAEuS)YV$)Q!uZuKTwMi;B%5Mk*_w4T5-Wd9_vNV zr5kh0vHE44(w+Sy>WiQcmtL-qG-0`IV5Q98uee5T-)7|0wx~61X3_v8UHYeROYM^) zk0D1tGji)B31>w~w@`IDIHf!#r-rX~*Ebn%av15RD^MR+ImPRUEZZ74KLqgJzY z2QXO4c{@W=UrB9=Zz%bFuG4W`hX)AV&Ot6`HJ_W3NXk7Ehquo+t}wGZ210L~bQl>= zU~gpHq0HEsly36@OU0eSGV}hFe}4vh&o>Y=htH8N4nmT)yi1u9W-Xm$@1_Z*V@4TT z#h*N5Ha-f@3Fyvovwu8D(96Q zPoJKt8~}r{Pa_tBPL5bEkRj$A!TVa@g)46K1B_=@*%s^;n;7&%e0{eAjnu+VX#-i^ zsS=vMBr0(4Mab3DitD|ap-R*#|BnU|Rot&|&9Eh)g}NW7lfc3UL^GdtKs}2UQG!el z)gHj?;g^-5sp@H!L3TXNyUry0_+@zc+PV7S9zQKmYrp9$(K#8 =KV~B!KHGL2Wc& DNmMUzvXb1zfLe)2!>aPG3ePhc zhLKko>b-#Cx>>i&y-}8G&i5Clcck+9Jj7-RCDNv;L66(J?-eXM__v5+@D<`4e~Ud& zfNQ~4B9P|8ddX{g#$!lX+_Yw$+!Jch+> C!Qkw+=WbM|%IpOu+~Ya?+=Vr8 zUsCK=2RnrOhEzW#G4US0qME1s;yNu7-zdyl)bvu;oSg1-Jf}Iv%J-hWXc-qJ-Qi12 zVAcQbpdmp*CiO;t2*)1mHwa$^E7}>V2r!rH8!mt&6sU-MaEu96p|31a*?Uj5p)&g$ zCy@XDn*o8>_FjosczWmo&-v$mEkA6mkwgtOSg3zn0<~@%Rdb+x4X^-Nz7g_`S$5X= z dZFFP3MdPW=9VMr_#Q{Q%CT?7#Lw`$IGs%3$ zMJy7z^-y>$qzuW1cq6;B9YS}7N-|2mtWQBW9{QA$(jg(X5AS!&3amf1$F+So2ve^> z-I TQ-qCNa&TR>2)&ub)$Gd;qkZT^PcsE5~g>1Yn^)Y6q0Eif8Y z!8tQ4Ym|MNN!CR2Na_(R`i->QeBudSbN-a^5$%ACUkwRE_)GGxQvN182uyRq3Zxy2 z0CJyV_xL^0ZRnHY &$W6@~IW za)AmR*r#m{x}qOS&Ij@h;e!hM=dz7O`><8wCNB`A El~!OfobrVTv{0c?7d85cecRj|aav4Bk|?Xt~M zivVAx?3ZU^u7|~V=+|2!ctao+xUlln&GsG_FW0K&NF#%c*#BqSjoho69`die9n?$8 z`ew+;ayxv&MB7|jrRo(FJW(@Hc(1kdsSrXVY_Y-8q-nErHpY8gy;0-)9+cQBw0c}c zP dZBP=n$Ih*G zV&1LF!1BQ7bgSGbEU;sF2)C_xK_o!cPjCboeNB7t0tQTUIe1%{BOtU+S%d+Hwf9r- z@&4B@;5sy#rLlt3$hGEFRzQ&$^ol4W{x8%2RfW!+9lMyE{N&vA!jl|)x@QtPy*4hW zVg3!8y^N6HJjs^?Q!hOefK&*l4PNA~QhdRl`u;fxGbhDS_ 4F$5+B4r z^uhu9& ?BDYDqRU-NX>xy-TbjUEJ850W;nsVM{vJa1Jk?Dn Au1k=>S25nI!h1%dN59-h4%l7)pXdyUY4;08*JE2MJ;rCqB$ka6=%>!( zKtc9TpNQB2SEj7m--jSHC(qdgkEJuYx+ZrQ;57!#Nv%4wTA9?YjcpnyWpzypE}pSO z!O-tHTUqAVf@285ObqdO#q}wr;Gz|&G*nLU)%@Cp=S+G}C>t!O9+HZiW9%hZUyl|W zYJ>R$g4%f`hrhs804Rr1P6&WOt7wo**hn8!qkf>n&?eL}D01NMc?h}|uf72jRnxud ziIm8UdLw N{MP z2-uMrv~O#)#rVqIEN>lq!hl)uOAzLUQ!L=M@QhKRQ^Y}9_n $)pA!wPte7=V#M6Bmf_`t67bOtZea~z zSbu~$gIhZ%Os29!a9p&O@Iw7c=kfJ5eKs4^!R_5yT}F9RwyWS58|SA4aOIjYNCPAm zLaEIz!<8eG(t3}Q*XU4NjQ_oC6HM{9`W%FLPL_K)EOQU=WAqKFWkW?KW>jG(Z$?Jy z$m2HQBsjeJ#B`hGk8U!N%&c-A*GB*(FO4SFOau2=$(27=nh>p7Q;n3paVrEbg{e1r zuOc-OVm_O)<@5Gob-BYzz6IxO>|le$ znQ rZm0HTCS%r|4TMV`|{k0 zz{FIr6ECr@ptN@PZ+(pP)0@^ep|o`VQ*O)bRPw%hG;0Ios_3!4`#{Zn876ZzFBpo% z<{8eqUXdD^tr*g}vo!LiDx!^IdJ95u)G#>Y>GO9$=$nkECk*jLUCt;T_qpQ}l2IHt zr$@XbHIZdjBUxv34#MRH#@cMd0P^0R4V@_;l_2fW(-|Z3@Mv7)mOOx9ELZ_mRb~n+ zLN&+4lAF%V4SMrtf`#yb5s!b%57JVDLmv(?-2*!d+Xcg1d~Ye0Wzg1S4}Cl)h>+Dh zc-f@u x_Z3=gQ&9$??*PgE z-CHg}%d0`AqHZLqAC$}m^S7@wXrW}S18Q6dRJK!^!g2IZFi7LqT{eUmuvB9(-x)Un zRFbXvw{t97=hqzFH*hPj&+j|2I }7Joler>dC=4*O9L*gFj=p3wQZ+#fC2S#@;ZaV>h;JH3P?n%7?aNcLuu z1o`fgEqQL?3+79c)Fs<9{Gnri^(q_OT>!k>*sYSDCBVs}P*yM&NPj!pd5BA$1g0rs z8{cjC )~QhrS6rc%OlvGAWf=G4Ebc)` z-%g$1OnM#D)}Cb!DdY*xEj(wdS}`wa326Xg1V9rwwm-enO^MHm#%KMaJLPLQ<-h=+ zMeYi@wT1LC#)uq=HlF)d5zF%GFt6FlUb@Esw!wpDsj`vh$Lgxdz6&9)6U_iZmSBq6 z1zd0MD#bZ=Q5&c!C B+^g!Vh(x&izN5B-1lzGOpuB81I)^iW1X IBXeF`h zB2rWXENk0Ey2qfcSIGwKPZV2_IUh&g?F~j)@Op0xs+*x{<$PfP=Z?ShQV#p* j^iC@k)CPs;8F&?G@<5n9_nj8vUee_3Tapj`yiZAzJ9vl)hYTxC~PQf zaQQ}vd)3C3-&}+(c|C_`#w@L#$l;o S&kRN_&2YN3 4ZF4KltY~3th=i{X irJKAMdd>;NTgH^k4 z=NXbhM_;821buuv-SnGINv;;Q^g(4mB#gN0I2b>L`>a`%zsKUeJ&+;YF~?}AqEXan z7yHsex_falT(6kaM!37b@PGdCUy^vzB&UJ5C;!sAAFdQ#wix9K)0g)qWlhmRd39*V zT!54%3wQ)Bl#$0wrPLi}ZPANvVq_6P7MJcw%q=NP&bWVDhb&Q@_R1AkVeqtF4Cvz} zx4YmE7rAMk#&0V#X1>xe&eD+J#2wd_UnTl+x%BKP(BRfS4vX=dLpD7?D*Ey+R`Zjd zI~I`j<;?bMfL*|(2cbbp$l^zt?gq6vjCr)7gbWY7d7fg*tYL!5K1;6-*=UV+0)Qr$ z&_Uh+%8Wiy_EZS@JCU590|50H6Xbafns6Pq)Ww;`KrfcGLma;}V>l=Adi969wD)R( zI=~l>UeN4{&bU%(A0fV?_3x;QMgs6b5G53$3{wRVn!bkhDbC=?0gV|4bR}f4k0kYV z#7TCF&5RrC>*%xYt0EK%Nt7TJKY?t><||NAR};8nfd5nB@j~?mnN!6zW5LYSe@fYH zA5zq-CutDDN2uJ^&wgiij^N=ga6k30y9jPYSn12cFyP(TP)d>dic~W3sclG*IOlJL zpYfIN7n>ZNb6O)e&)-*w2R&6qWDk|hD2sk`>L+j+1(7Uunk+5Br@T+PMt8ck^0iDK z^pd3izy*_1V?5qa>F~>q@M%=|tKq1on?nm)ojDd^C;V*e(ai)~$bt%B_EnUhjLt;K zs;=R}e3eC0ILx$DF bRnhZ|s9 z)Gi~xFOL&T++B;fi>VBgdLbWIPl3LlOBpy RzV^ z A0CgDJp%4F6CPy1+Xcvk$2p>x3kj&EklOQjO3ZGhQr(t3@_s1*0mzn+S{w zUqjb(TEyDxBZLcOz^?O_lXv*5(ze7w^uLs#>qh3NcQ>`4K$ht@78s&)6bM#E?IN91 zuWLZQ4dMieIw08Ej?&@}hl2-&V~7jjJ{%`|^=mz`dvUC 82XSLu0WXO41$33|HCE#Hj7p(naP5Kg>Vn2;3=d)Q0F z+ScPDkGW&|Hm#0o_^~FcC6?w7h}=_mYaWuJeQcRRfw5QkwE^`#vuCb_@4asD6a00B zQQsA&4y5dXfEVMnwb=ip5lR@Dw9U6=-1{oI5>?@#K%dl7Onqv^ws323n#NT_ jxa2d>fH48?1mQJU}_vq&KS$_H@k zePL8#R)W=s-Fxy!AC*gGPeWWjJ19E{x>5s%ZtV!t;zCV*9_g}|`iiXZ*)#FFO^(lK z;K7(W=w(Hc;@{f;i(>}jURVUT(sR(gFcDg*AGL??R-q)r%5}bLd*xF}dX-)v`;jFw z$#n>4_5V(3j8!CT%VK~hH!o}PT)`VqSDhZ?9rYvjtKt5?og2u(&h&g? #eRG z#jgnE4E2IX1>Owatwy%rQr(eO6!}&u@&{@t;P^BTHZ03=8ER>LEVZ7&;_%aou}c7X z`{64WysP91)4?AO(d(_7A6?d-RgY;5UT^Z6z0B446q0@wRU#M5_%J;VuQ4>+Ptw7S z;_v;FQHy}Su~6VA6?MP8qFX}r*4UaSX`PnxNLaxHcUw6k*}d4gP|pc&Fq2>IEBWDk z;p(e?=jrWhx_3FUQ=StvRAqF$Asa#U)^r<_q2-ri4qZ1Y6KfgrKLR6@q^x~FEHmQV z1(BD#u As;Z=^bUQAoaTu6I2g4K)9M0 zu=DZ3^9tk$Ae*cInMiz+wNp;XtKeIEBFP*ttF?O3Rc!o>1B*T(2oK@}{+#wioKYEU zm}Unjy|XhU5Z`_-%(Xpxk09g`(&bQRhm!%tZSAs}k;*LtcH=|p6_C7MbcPyu&xA*v zR7j>^3+R0K=0@mNHqQ8{dp$Svl3*s|z_YZ`x7Uhg@Hc_cQ}p=ty196mU=7GurUrbH zz}Y#*S~Ib85olYgL1i$wEFbgiNmGw`A8><~YPU7L*#9#qFQf}7z5`4CJ$~=lK>}M_ z4J2y|%G5?!$%9Dq^k~zfl+98{u7YHbtb426hZNgIfow$D7a1Y-pKVAn2%Vh>lNI9@ z&+K2jE;aYMmkxBBS^V7pv|ZG@6q2iaBGh)a!ou&*%9Ic1X_2K})qD3m^M{LkYcQ22 z^Pai_YL-B(B&q_E1b|nFVhd(krdnoPZ17oGFiHGIxM*(NA#{7(iG=Aq(xrN0e9hLJ zm!xCXC?S~rgvYQM2-l9vu!Y*49>*2Pj4HAhwb&yNpYbi%V&3mQ9ccC_vy*wWg$xdt zF>ZQ+!$e#h@tgd`RM~1b_?00D1d822N^^LN;}bpnP9}?xI<|5f(Q$GpSM4`9A+M6Q zkd#V>eed)Eh9<(%2r#zGh5i<{?@h6jmJxT_R-no=UDiiZnPh~v4U|Ejf&7Wp=`BKu zsOpx(T*koFmjoU Emev2rJ5ZQ0MtAHqlaI|rHuxA=^h_sJ0B zrw8RedbB8)SdDVk+>QEonus2>0wqV4wL1-4MWy{dsZO!7n~qY4tC#xhuJO7PA85R> zFI;hyjxC)HTul;kU+QpL_|PoiV&rh%9(zuW1Y+LcGS`t)VQz>mKf4i<8qY`ymoYo^ z60*}l`_99Hyk_GRLi_y#Lz{MM#>dgu@B;x^81JDb1gcKUM2@=tQAoARa(!zy^^#8f z-#+SpOn*HyuvuW^`>8aU!e~JPj)nVqC_Ag$l+SctNGLrTHALG5WDz-1n2CTAL`PDO zJ_l5xqKWi@nhtZbjgi0BRkI%jS@bn}TJnCZ5SBc6@uefwvK0=CzQr(SU n~Kmc`R7?Eem&{=V+}-RW+5wa6g4VEdV^R~f<5z9 zMF0Z#C2!+A^Ws)E)OPCt-jY;pjI8>b)pq!&h}=*4;-EmudXY$B8+CFoaplQ>>VhQ5 zE+`)Z1}L`*wO7usJkh%0b}y4Sn9R?S?vq~>6vrEo0>6>e5Eqi8SlvV~Ikk`DIl8eM zI3mY$-LA=}lq)f;UDvz@wa!4oyy(`@=VYRZn&9B$Q&cUpE2d8rP{ZqKXn#MYu0S5^ z;RW)ej!*XArH0k(*xzd2_hJj|2?*3?*dB&rlHaY~Zq?gtKwQ-%+E|~D>2A^~eJ)!P z489N9t=4)L9pZrALg38NLAi^?P2CasQiWODS}puQ=4Sf(N}e# S?9b2hbJOlLG5l%$T za`&CZvEUFa19mo=^3Qst(*Th?Q!D_+EDH{!L!@Vjv@1cLL+hPD`^hM^*FG{$n|f`U zWG>9L`+5JOUNdRm+8!i5K@V(7u#jucxdAXf4LV5%0Xg{;tWj?4yMz|8U7A;wRND%W z5Bw!d+%I=MWKbekcB6}aLV_gY8-&iXp*a4W4||_ga>)r9RH7z#|3^!1c_)^7% b>!B|Ja<`IYu_o-|m|yKZA>Wp@IBab5f6&(~a$X`jBqkvbbnUmo7ExmEI|T|Lh0e zEy?sp-GUT$f!X@nm1-XoI5slDBTLB*!Ph390f9&teUoo$^y=r}3ZjH^UUKEfV?!i% zJNc;r6ls^bi{?gsr&n)R013Fjs)}$ETK?mp$JJi5*hYo-JMSw*8HI2ZDmRD4>
5kaR5uI>aK8vi9 zePoBsqDdqJ-*14vZT?e h}h|y*AFU-CIo^I`OFWUc(<}UIE`AUk!dH1XWKM|JA=kx zlmK;s*3nSn?_xQdvH_ z8ep%r;<4jlzBQ-LkKa6Bly-NfW_k3?&pM>r#QcDkf7{1GBOJauzS%PcJHYHue;xgs z!{ova!3x>{d&Q8sE?i><7zs%?unj7vXjWjV{{{?JSKzE`$%A-$d7Mt|zteU^NdC5E z@s5m74!o0Tl=5D-`_|qkatEicXo+PdBG6-18F>RF<^hXq3FR!qoeGHcQMK{7MUH-| znnKBG_TNCO^pDmgje=)8Y@XoCujo_#%~U1AXgC>0Q~Vd|Y&e!D2l}(7`IUh}_%l-? zL%nOFCg<=_es|No9-2^Kp}%DX8%wXYS5aqz;rU%D@=UPuJOfU%3y4gfSY1_h)Y_rW z^n+SA04(mC+(5^$(W@ln^U=ap=PlXlLrY|s=QFp|q=5_f?<%Cw^phNq<)!nsz;+ed zAu+oE027U608ko)i#`Z^2@PS)%S!lM-}@7phdS{UJj z=BZ 26PO zlB@o=6BLP@_|1EQy-|5CK8~&k!JI&;rqDpKRAc8Q{ueJF5%caBy3brwIRO0Yq^G3D zz-~{lN|bhs6m?9w2mqBkXDC`uJlb(1*06d94pi(nEv%Z~2o$M|^(YMp@!kEsM(uk` zt=y+JjKN5`E~I*F>Ze-vfvOuQXcg!eHyHt&xyh_40cN$CT5LV6kA&)FS$QG0m8UM_ zZ?YD}-(4ahH8rB}iu^53ZF@0tWrFa(5` kFWQLwRR4VvjW@bwFK5MUNkI38E83^9g% zZ@7}*%=`mL2!}evv7<^)fip;|#>7oE^Y^;q;a*F{Oxmzv==f8oZO5&p^JO=P<`y7o zW>>%2J4s<*tvxmwh38^>$k!`SN(26?xnp3rpMRkqrmogYN1irtb@tbzwlp`VrEjmR zFa(CTYqHqJyJ ?cHDy@_%Mj@I}Lv!?e_ljQIYF+%z$C>`tm zzlFH5XW|a0yU$S&Ue1s(U}8 dF!zNX|E44WooCm2xUd&LjmG*+ zCV=YCp;;amq=%oYC;qXEJzy~Fzll4pxbF%!BN3%7#(h0Ms*+y@zVBQ9=H%5>i4RQ4 zhY0xn4qyAv#$Xb$bvXEb20)ppJ{a6MJu}AIg^t^8Rym-JKCuzP=ZzA;-o~B&&Q&JI z?RKb`TPMii!-F!c*E1p@B?Dw{BJymlb28JtBbqbT=rRdxGj!do(HT3}IRC^rm~%O} zdJr^JZquar=|UC) ;Ka2jvwFwX aSq<2GG3czOG%a0pLc6QZFoph)V$lLQ)yMe}PNK~`>VEnV^F@JB$lEd<* zwsa{8h?F1pdEJ{0)wdCs^KkyC;rz?2Hqpiy)Fz=6>-KL40}tNquLw)vz2{{Z+7@{B zWy&oOTk4v)pB1d{D+3L>39d-S(mm-a*??KFZ`FASBG;83ug qcS5z24A`bt5`*!eng<3pjWKEv?#7`mgn?DHv^|I_`g)#KF2_^G-HE zXum<<=tru{fD0kcYzQ>x(uttyN^E#IEGtv*!n8oIKca=1GS&(;w`!%v=AQ43G$^dq zgT9!sbh50T$)ZZICl5YUY7VpznF#cZP>vWAxP)k(>Sz-pGPy553bRggErx`!_E4{J zeUt>*&S0D5#A7z$k*+du(9rEfjoGf6`4tf9w?L4|*`uS~CNZw`TA0CzzYF6~zc;@d zZI9e_Br) zrn326w!0F(XXUDR2zr~79ysDfXB?OAN86_A4q%fCpu?h@S$&kO;_@s1kBE)Uea{WW zX#7q%$`cPlcL#+Qi9~4`0M)_uG9id^+<7BZ@OzkbB4@D4Uc_po041dK{)T3<9gO45 z1#L5dbRl@C%9Q>2$AlRTh-ZE&;12@gTe^_xcUrE42br8-jufHOi|Ij!vzm=778T=z zqSrWN+vw^!v@7*#PWy_T>a@e^l63KXEf#>)EL<_nbZioLri}}JOl5RR*&c~!&@}cmZOm#PS9&fM<3jJQOI{>Zn4Gh_+as2Nmzy{ z8b@mDtXR+*BV~a=wx6RVJ=O^SxPf6Wp!k{>lqpu)m+?H+*Y}+(gTlavbqAH0ryzgB z5nW7@7vN1WiPQb^&Arr6ozo;ngTC8dc1e$Z_IgV_GF;fI+63Sxj#aD3?A tB_~fok?I zb5bBV+a88Kxgq1Gmmh*8zE!D0T~x=Gi86xIVRln1D=zDqCKM5=NJjxA1Z= 5b4i|n5*K_`bmNQ zsJ*+GNrO0)T>jtpypNIKmNEh`;;E9x-YlDgFSkbrDl?CfDN)8XYFZ?=w#sizG-G}k zNGFHmKtx7kZ@hB#f=q3i>m4m2@Kc2c_X*GqqF=)FG00)BqeS+s_W3UwC{Vo@?#}ql z@^9Wl%l1ve^D$J?8oP9;3IyG2)E Yr{Zf|6CbI)JVvLa!B>9?AQ& zG6SZK64Q5?%Kw++iZP-@2`rdD5=FFjup)eJsw)>>WJAjV&0zUi<^W7~$+qECY)W@E zTr=onHMMj@1c4LI6SncVOjM5ZUW*uyn=XPtv!!swBw<8go_<%Dm{lbZz*XL%R=U*- z4xErAxsU!t*xcygUQ;Bmu+ovDMV1I|V @@);BIEG(vIzk&i;E37S1_6EIJ7&9k(KFEV-8bW8+T@3+Q= z_Piq*ndyaJN7mBCcB#|uAtH^-uZP5$QntTitbxXb23igznIx|(2*H^l_!CKcvzxBB zUQO!3Ks&Y=9;j%=Vc@Jbv}k% ~2O;C+o*bSdAB%|oezmu!q|El= z*yHziVCh{^*4^8rinR3l(Z^d*rF()DwiDK{dhD3JU_oiNYCnJfm@hLQ1MxnOE^opI zKQtD&lRN6|h~U_Y7AV8R@FmObvl@@`Rtz%a69#^WATuz YqRT@g z&OVS QelL2jT|_V|_b}i|oAUzXQ@o6Q zWwg+iI`b@?4?xYrz@3g@>WENd6%G1hqa&1t6eVjWR{X%i#Q&86y2K^YMG^5?e(bF9 zq@<@{KvVdyPs*=O5nbX?Z|_gk5{=S`IL=M9q%VyhRZSjX!Oc>yo*AxRkk=px2CAbx zNXCv-%VQn7@7=oSQ7%3FyI2ee=l$N1RN@good+PVC}!s+hR9&zu@4frR5j)tM~-1> z!nqZSzPU4}yUu2G=Sl0TH3JvYTIxdcbpYIIuC0gjVTCDEzjL_qTW6&jN6Jv@T~!x9 zu!F(#>=JJKr^?QTj=uLcy5!u U>7fzWIL_V>w9Ex`dF|o#ArKEbimV8cwi~gG z^Th}X?ukJd583yBik7{b`}?`+Gg1FULZ+8^^VWm^iTUuP!ps4}Z~I+@yvWkH$H_NJ zB;=B9&!ml&xb1QW$hpu-r_QZ92f!p``xZTsMsK^tTm+MGf$?a9O~112CqKp;657f5 z71y2vTR?}lgr^pr&`UyQ3XK+*2r ^t<9T>g~{FA`lvN*$1~)OC(0*4V WhN+O$na1e6G=ki!)Cn6o#O(DIsuoulzdl |qH%ow`lrfGww-rt9> zVh_DioYbp>V6}t!39CQ>1VDW@(D2y)50z&|`ir2kuWMYN94}O$q@A%7kEAlx#us@I zQZXsD!7BYVw!u7J!2>Hvb9Tu3sHW-|PI83aUbFE2&5Ws@bf^#G=~StNk8MSp2wr4C zq2_XD=m5 JD=TkO(pkl;daWn?dQIDxj+!{3vnuazcqR{ z^Km5|l>dgM#HL2s5XrzyT6#iXiD+_uI~Xaq!0?4uz96A!Y>Vu|8Ivz`?IkElsp08L z^5<}087^!n+=s>+UEpPA;SCN2W0}58xQuV_*xq_tI0k5&H0_)TWiHdPe6 M*Es8eWQ|kp?UVcgAil^ejt$WfXH}R5a`pwBK?Ql-A^(kLbio0ZMU5Icy^gm Nk}Nv*9r1G=Nt2(h> ;qCbqns2OIU6d~G2FUY zjlzRecn|oa{dT)R nlM-tZ{At={ri=zy<{jX zjh2)4-hW{HQHxD>WOtY+Hh-L*uIdbhO&Zkpbo9N*#NRXx1{6Ow1N`T!_i7KTnHUZ8 z0nu5XoV{YvcNtnHommvqFBb%KAjgwYs}GJUKxok7Es3ysLYi9>%GH)zKh(80_U@wM z49k(?R4Vqaao)xr80n1ni9Qt~kW>lNPBA*OZ5o%aW& bg^VEmTR~rOCyrt0{_y?1JcJKIc>u 0w#bg6d&&j+dC6#K;G56*Yw{L2M8)A7OO?WElM2Pa$`<(Vj7zH^39jrx4l z@hPHp-gjv-iuv8%$Fsp)$i1tnqkz1lqW`nzYqw0FTN0)J#*Pz8fRN}!`}03}>b15R ze32YJA1hdXUHfXsoljZ^e=Tn7LVqH|?-)YSj?NOJ)Aks{&Z4xH9P!Q+H bl zH~iw&VBm^~ak)zzFuo;}_s)JL-VNZk*&VHfT1%p~Y2Ncyg$@#$ES8dgVi%3^-KufhxV)8q$;@#mwt^y zdzwhXQ;qw4#oC1Vc)k%uH^u%sLiNu%-tA)wd`|?{Hfv;;l6Kv0hGpoJK8m}=LI6C| z1u*2E!2b YFC+H8+SI_kenmEdFQBMVUJ;WCO E`DYuuiL70Zsn4i_X- A>MXRHk zc>cv20l2S(L}twK;H(bwh@aoaNGxF@R@1ex6Mv|G22=($M#q?m6 o8< *^#tug0A6PR!Gn)a2;{D%B)dJd@R5r?gMJs0a6OlAPX(`EXbd&!RBg=D! zvnrzY DnL)ce9*?rm@5$1E}E(1S57*Szmy~5 zS#)fS9u5LnyyobkGcEA=&v6`9{RXXz9QlD3&9K?@$>!SMLN9&YNU80D)|;~gNt?5p z?SD{Gm^6XuE0X=BKfaqXFnAp#h~1~O4BT1oQ4BmpopvA*gv0eK*wmn1@4TN&yN|S6 z83C=+RK3Epq_ug-c!XCI*-fPVXb`~*cEJAIp}cjQ1r0=D%Y s ztM?v%sf$%_B}vh=as@3ZK2?eZW~2##K`9$(T$BdTN5r`ms^jqE(1Yv2Kc*1fu;g0) zQQ6-vg{EG9Hq}zsmB`0pO)VF^>hX9XSr?MAlVgLARc;YAu+O&ra?KVn4sw+^@-;Hz z1cu)mu6pXNX_UjO9}3R_3&@*7qzV>e Tx-zC8=o--;jom1nYS%xVW?-qcje&=W@Bwd #?h^DDFwP&3=zxik!ZMIzTkJ;fORdA}_Qj^4&V>pGo2y0k~N{P~x zS`T1vs;x1QBC%}vi64d9YD!Ch)51Y|b~d%nCiuPQAz7#9f|cb8n(&PkJKZH6pl<(l zJ@{&L>4g7`(E<1r8udC#o;BL@4;5iq; z_LiozMB@tK-tTYedaYsVbP2_P)Y;&FR@uu)Y#dhv_-G$5Z~^&|c9O=>b1;yxcHP73 zuxL7BYTZewwh_uvw$C-SQ6(^g`K-)x7y>nS`<3A2WDp~op7VB|uueSkjd1y@c45*h zK6T9xIAq`b=+tjl;3k>-rGA*#;-v7k&;hmnrNeQ0(heAgw2Ev4h)73nw^xB#jvgh- z_kvqIN7(1z%%ZbY;VYFDAm`NgN0~qM4FowIJ_E9N#hCn_cA8U09Rs*mcis?|3hWuO zmNMte5t-GnyQP#8GDRPIn)K#?S~h@%1>3W!$ZtfSAWw34y{u4t;0C3A%IhxZa3 Z z9c9;1!|abwySl3SHFd_Z-J}E-Orun!17 iN>G=aG$9#gO65 zixMoa`8s(_yy=a+eC&m=Z@pmf_o=^Ap|{5&W~8j{h2Dw*ICXKQg!TKHwCeXE 2r)(#ra92Yb~HmvUbP6^M#!!e!&kI9!7LDi zHKL{DLc7c$=7{r;Rqdz5&6M0PQx7Ug9f(*Nb~n$g5hJ4eug^#EnX^!@vtvcoE#!L; zq?Lr4Mut_q Jd@o{{v8uRau7u9 z(PV!qv~pdC3y*XBT?_8SN-(YJ%}a~OEUK6~r!Xk9Q;%P)gFmq7l)rFRWAeTreqC7$ z*~}zxQ1HtNdrBOj%NGSHOLkQe>^ALXLls!JX$ARKIWB(C{}MsaL?eEk*2h-D3wbqY z1WkD EtJr_qdza=_05M82JowEGtXwuxO_=8*-v>W*e z5b<>eocp5-h>!4n7TZm*-^8O9P7f>2+GlMu2RFwuvBt(eD~bbhgU}LD039~+F7HjM z%R6Wy7?c1Y8pZ8XyN#h7?z9wMlyz+;PW1SP`(Y0ysXsE4kO+}$uBba7^F{5AfGkEP zU~STp+n1)l@O(gT2@uJ4+H8YF%h{%m;O;h~7GE0VXLJ!lP+J@EWf&eeW3aEoOsQnx zpyM(+ix5b)e*8651|P3VUuWoWdZFEq=r(geZ~~sFn_Zn?RkKNnJA9#I5TZKCW8T3Q z`uxxsawGoM(}7X7z#3sK@e?mf4gXlfH>I~vI>+In*I;I@>9T3OrH^yZiA&8z5Ziny z;i&*fsA*VbJ|!|n%xZ5(V*2VwvN}4jnyh4(zAOpOh$-wwIxuc;M>S=$L)w3v)@?EQ zIP3lE_E+vu_RdKCd^s+R3zJ*@0gf%P2>bPSiD|laE5|uR%N1k1B3i5&=PSxeqjB-Y z;vm_XF?XYTXwmX$$~+C1hRwj$p-o|lR?$xni&y;ji$Wfv|Bj5wcKGNx@7Fn@c{p~S z^SZW;&t;>czpX_Sw?hwmY;SP`6Zm-|A@HgPkJ3qA`1+3SAMDkB*zdo^RN912l+=^& zsC*wvigKJs)38Gx|G=21SVIH!*E(dbMGlTuc}RIp&`ZtQtk@TG0f0rEi&1=VYORlU z#H*7$kCKmAB^sNsk2enALQWFV0R00W;wkGb46E1HZf5{HK*YZ~OBjz7i(M6@W{wqT za^qlT5KmS|opat=9#Fqz&i*eg7gR Ziaw$y2X|jqr{fnwUjv?>mP6@4y8!onid@ ziOE8X)Th O>BGL4Rl2um07ZZ3OJ~0KBf_$!(DoqSz42>cX5rmf&Vj zRpj08Jk!0g&YJVR=g;7?WJJeMxA6SN2YzPgZero@6`Tvd?O`WxDf5GxXTg}EYF~=d zg+ara{P7*13#Y0d7MLk(eCpk|BbSaLW!adeyN*wD^_G=eaM0HiCUYr7bmX|NQ}^w4 zYX_VVN^hi9J;wCP6XRDcRp(L1O=L>K64=?@=D+LAE1P?bcrB!wnjH`A%OMdl4^N`r zabs7c43(!dRqS{m7^?M@dX79kFzz*T#!V7%wYN5$IG>HWir%srACw5{*i-$3-`jT# z$&kaoUTi1!b|^RLe4E~-cLKZ9J-Aa$yVv35EGjyE#u07^wbOosIWR92z<69HS6Jyb z?7k^gtQ=V-mh)HEAeD8~e{HJ0 |D;uPEp~ z0?*&w+85K^-xm&^M4du+@FHOhd)XZ^faki_Lrp <%BU0}xteM$Sx(Q}vxE!I| z1J#na#}>)DiU6^91N|wXxJCN$XRE83ag;Tt*u4Q@q|PD*)P!4gzidBfBSx5Dct3nQ zwcvZ-#y9HZ zPLwaj_|G6nOBW qF(Bc5A!-uGZh_B&LE-RCB4DszjU9?Jffj+ zY!};rv>S{X$%L3$q77Xgatz!E*>}LkfSu`D6`?hR8zJ`(Im8r?-nLu9`4IcY^JIbI zA<9;w`L-J-qX3pVUCz?95YD0t9IQ|FreD1}{$xEC-Y-}ah)Qy+Cxccxz(J`q&c))p zC^ce9FDTLAEqweVc3qZC$-Lf#h@~V5(UJK?aEiQM6C$ g31= zow|?41~CWB&H1?77FW=>hFvgF&f+*dpR#d+YhK_vO9S1@!CKp5>41)UkjBtSuYlco z)R8kdL3D)kXE_v`;TOK&(Do(hOkSygA?}M?76c|R`xhJou1*@($^I2NgmZ~ZN>^>W z$*y&DNX;O31+{d2@b)z2R@WGZ`QqnX!zj{9q0f`%LNxfveOg9QgAn5$&wy&m#&O;d zqf#%BhUZ!1Cr{`1L~9a6{1FR>|B#G$F36-XM3EE)8b0W?U^WScbx=|CZTm(K#Abd1 z(x1-zE&aX%4M??XT=;ZCR)^@mg<(z8kBO8Cf0Cc>O2!?Oz75iECYh!ZBy3 Ln9Len7xRZo= AkWWNzW4Zht`dF;KJ0!M6dR$s)T5irW|FJTo%9eO|vciqeE@JqoetA>H55 znB)E?j%3e4CCkJ6+phSsn vb(tu|Oy%s-EZ`G|7FawaC` zE@I%Gg8vlBb!N3$@1QhmJc#|0B}aJP|0G{rLQ7Jwdq4Cxu`ipARdjXe4qlry?%9#- zwna-U*Fe8+=&k_>sdaKr49Q@|3V)^eq8k&zNlAJg#sPIyOw|g$hT4=>ATP*&$$sIi z`vgLKrs4zTZ)r2kpTCNhuiWn}`N=QD4?t|cHCyUg)!Cfgq5R|jbes+8Kc{4^M*< n_$jmaY^$do(V-F2Kc=h`{~sFcofK5I<|# zjw?p*BrEV4TKAHZt5$uV L_AMGV$!C6t_3uY|+@A_=-TOXP&uREg|w#s2Zu{HL7PoxzOw7 zDsb#OtQi0RCYogca3Uc9EC2M33oj>t*3wn&7{t9~NooNfviJg4cSwEz3i{Se@7YEt z|3-W6?AYp!2jqusF$UI6xIB5h;fa1)I4!dC7(9(4!pgXn@QV8LDPPR-tFZ;DzNuw~ z%?aJqn{CpHIR$o?YOGl*{)EOPW#doHyN?eY&>hFMYZRfe2UwJ9&t_$5;<4hq!acxd zNcNBFk|9I}u7YErg3`aOB_p`^>U7jhmVd{j1Z#n69-s2y7nuVyyW#p9`dOJx63^p< zv)fdv@2-UN)gYMP3#i_NK;+6qk~|C3$MW@GF|E{QMpMAd2Z1c)!|Xmhs0PQF OVXt=fX>9exFO_@x`hgU+(~iTmpW1b(42L<!BU3_5;Lk%SUypD03; zEgl+K@u<|XpP~^> gzLbCEw zMv;_v2p+9%9wf%RT@vMa<~m5q9}9%4uFra@Ikj6!y!n>eV3vN=g^VQ8*AS#{dYi3I z(>7}@_2wN3$^$nVl^4xtBO*zwX3d{W0^~A5ZFpp=x)T2 z&2SE@p&2C4l9)!A7{+nWL@Nmllj!%#@+ LuNK$A>lukXodI_cWs zJNr0Awr!Z?eC^78j)u`~ (Km!eaM*f5Bg3 *OtIw?GN|M>2J+Cqk0*ymROJmV;nX540%{Mtr~w6Cy5OKS%i&DgVCMP5#WHH}fE zST>|IA=#_de(e#v%vnT@>e@%=XiY>IO^211u{DJWkieb-n;8dC!qYe&80abkYN6#& zvQN*XOPhK2DP(iegA?;6$D@wNxFnZE+amWjLi~9u$@HZZO=w@B#dYu>K>-R!^gq@Z z!fDueG2osJ#T4ZDl;(#}TvU!>8;CL%pdH_Y^_bRp8u7R?a}ts)y~B!nY(f^v<{QrQ z^!o7W2VV~dZ;J McF^PSG=eTn$LRmYH zY}wp=HE4Gyd&5~K9h9(Zd9M)56|z*0LLt~l1KFuzI*ggPzgzWBdMY^b&7CNz@E164 zb{9&g%4=;o4Y&u9ZrP5p;c{I%Nql4q1~-d(D+RlF*Q5^Hop-WRtoTuEEyH1Mqa(LJ z|Bunu9jPf4(b@?OAuQfWHQ%|zKAqBeVld6p+yA0|U?)SPfu+KcPMWErIReWKy?F;a ztAzXZh;P}0GY?8V^0}R6+)ecyA<^#y;SBUZ2SLd{ICv}dw1aY4S{=vL&B_IJfb#Yt z;acLN3h1n6cD+~|Y$y5I1+c9>7MaeS-_C#95-{BlO`;N94J!4%Wa_ruT4w^%41;c{ zGMGx=Tl{ee4=2F?dN+ %nL1^FuZW$=?3crJw{AF@ z(p}SqTE7_K(MEMTij-i#<_YcS{A^I0m{)1Hl#eug>eSb#8qp C$5M6;QScL<@lo|Dkenm+|!_1oqEr|V+_%62hGyZF^=VNEZw_5$YVuPgzy>btW zvnxRbREvCU44-w+A#H@b7=$w8kqpL{JQiXUv}ZL0XI%S2|DWx~28u%OJMv&bC!g%( z2F0fadtl;&3{c$R|G)L}O2C3u<@;IV6wPK6LhL-4uQQv5{r~Gm9)*&XZs{x3M$m6K zjtV7Q%<*Y%!7Dnufm60O-j^@2N6Rc)l1s)Bc}@Ju(zQVQDv{{mdrk6<#N151c-K4K zt2%Su5T8Wc1H)!H8YwE#l(h81DCqCKoh^4fo$S^QojzXwbxOUPdx=4Ior6&h;uff5 zCs0~-G>0buS+5YSHHP^#&`_>*i%5!|JdKp@(e@-;0W-cjv((5bKvIm+LzbNG{YZSh zXzwtB;)739w3!nRDI_R_L%d8Kr1!=CP2cTEg;>)RpJU>fLcE}+JR6) z#lQ})3|36jS;P4Sf5wciKtzRo3200u4GT#lefJD*(|qyXn-nxlNQJAVz|ScYi|@6m zXV{4)mhlj oGQ8 z1IEKMshzA{`v^_a0xXJR>_uNY*%S`V?5zy4#G=&2V>;@(VX2dfm1d1}u~j{+!+Uso z&jRef@d5(%z8Uv+UK7Id^n*j5tAWqy7UC}@xN%j|xJ$uKy^nS+tKPE%0tyd7Dd#Az z59U38C>?yuMtJuJe$52)`nm#K1}wIPw8?71N{arpBZ_r(&Zs125T0zz%z^f*3`P$H zK2tnV^R|d$siQL~ w~Rfbs;LfBs}1EW*i(8M9^*`{t~wG8#1l^~Nn@MN>>76j#k z7a@QDfbO8Nts}WWmMhV{{zY5F2!nzZ+>uallW68B zeyGs=oGSvE?48UOqVyI8&lq^E&$hCXK&A*?p7<09&!Du;JRVTR$n&5~F9i#@s*b`U zjZfESNJg^Yq_aF@l)7wu7kW1R_M$oex&$)`uLK=`syUYwnOW-DQsId;r+OiwAXmkA zJOk>(aU&6IFmmwQJSbNFa(F`;!f_@s8q|T0g+}GmJfVF_l@8&{j7wV>$dS2fagOcX z1AM=n*kQ=dzPzw)h?=+1)N8tz4X1#~z?{<8frB%g3*LauQS=hWe7}MqbBZ(MVB|55 zPg{bc$`-|Pn*hEeYTDh)Y=V$9xu?%+S9JQM57O<0o8z*e1dtJ+)jXJDm?!HhzSZhH zVCj^YAsn>WbwcpQh_Xix^806T^j&IuKBj?LM7obM$g9-yi{nW{lq1(cMM}9Cf@v_1 zPL$mFqJ6zXUH)N$;K@*3^>nj->|?GSeBe-~9_4DCkiLx6X51WN-O=ObPfMF6nX|4* z`cA8SOjYgB7GIvlQUF;N-FiquvG2^^2!=D60Xuql>L5nLh)^XZivC9DyV`X!_Lg3x zh6AibFs%j7m$I{Bv)!|5tvzrDCwHRD=a+e3F2GSxW=R!Ryz;|C(d&Q*1SvJT1C(4q zDf*QIRQc4M4q)kRC&Rjd`hsBDP^g7;`o>e?h}nx_`V#mas}%eAHK_f^-x5Bv0wUn% z*h23~el4^mLKdLV^!;e+sdVlJpO(M=Nku|EAh!95L#qtN^yo`RFMgZaeJgEa0o9*Q zeG^IH{hGW8btbjFUi>GQe=;C0o?&fcRP2+QtcHwcYn)*5wPNQNTZ{311H_|<_*=$a zj}Fs|uM7uSY(95<6slW=iw`tG#t{y?8^;3FDIE{6zIGbv6>5i_P32^#7|*VvBla>r zwOM~&o1xoBK+L@VJc57$Jej>#=pGl|*UhC?U$VQAS1Q!^B<6|9Ih|~UOP9@J+g&>k zTWiv^cmLk>DtYt7ILLtS=bL?W-+kc$Mh=%-DvMUi^vcw)irew6S9xR5(70`!xHsjw zALPH(H_p#zAth%ajN%W_i1*ZTzMOp0HLiEYt_8kkulQViY*e0y%T}M{$5x*PHBS#6 zs;Gjbrn&wzz99>&8RYDFCpQZZk FfbY z1R-?N+i3d91;;V^(qo}SjCK1SHN;7#Dr0BKN6a$dD75?eMnsgD$sq4Jl88w2)Nv+h zR0Q}*ZNu2td42y>8^k0Gb>!d?5IC?P*k)GMKWe@dolh{3@*}>8b)O0|GOT%)(^U{L z{QO*OalH(3Rwq*>&TZCi`1pbtbCs3H8M|Hoz={<7MeUYuO-~6V!!enlf88=!TNt** z-8Dl5_$(?E7HJ&N0io$Sy6bAOShi_N&1sut9hpu%N1-w6ytotQy|kT>$>)2y$?@|A zfvQr(gD^Ug0V>Vae+0Kn=*!r((swF7jR2_I$gJn`{^&m)T;05SVOW||d4E{#QBR&6 ziH2;pj$w|ra+`_Qk0uUKQU?+kqY%qbHB0%yH8B%kt z)o8J0aU=cU1;@J8 ZhAQbI}xrb_{#<4n-S?^MXZQ2WLL)_7!CJC0`~ zPrVuh>iQbNV~7Yn!{nV7xYx6QD)@Du(6>XQ^-J4n*Nv`2PBpgdDi{ Rp{%yj1PbXVaJN^7=8~wBW@1Dg z{^Kx_#!&i2r9Jd^eK
AqS;ykY(wT!v{K%X%qiF$YVDcPcejFiU~qtc`{ZyB z9*`` dV^ d%HCz!A!MhG>8@)lYU2+Q%ao)wGzN2;DdR;@p l|`^^*urzilWb z7R>C7VE3cX1~JYr!j?0@tSh<0?hhH^pL-Y3t;p+65t2S=4NpdNUV8A<_#!Ax(En|m z`cU>bAH;#>mIJ;QtyNXseY=oG1Eeir|1MXvjn=JX0V?f>TZikCAGMTYSIjOrF*?f0 zqNk65aa2d3 ?qM6 zdJ^e%wnMlst6HNMfcTxWcj|WkpMOIZ5|jq-GI*AhGeoMJ^1zW9oS>2MmQr-)`K8xd z_swpZ__O)IQg0p?4b%9u!>0?MY$hvE-HsN$>CfSC>=}W(kj;ZC9rMY6$_o<(^q!Xd zcFTi7rTR=D*fQSVBY6S4 I;Vhw z1U6oqXiuvB2llD3c*qrx;hw^^r#_0S#(Yz+#k05b?A%quImH7gnDf-29zY3oMuep~ z7qf7-@Gy?Gc{AIIm2r$ONs*>U{WppzG#onzOKU&ZwsnCL>B5GNvB!OzDTgIfBQ{8) z3Oi7G$+pPfs*OQ$63^{-yR@y@ImTRshCnwNSBG77A#{GH%oX-m!QXn#hcFV`u>3jN zHufFj Ejg`~2Y(JAQ)%?AZ<%31@tKWkebCeF06^27ofCEaYgB)uIU&JxtGG2)2 z|EE@-{YR7dkTv1@Eo3o9Yr6mB&k55OkPsw4+>;1bZ6`D^N4IlLIc%>#rd_8B26QFP zU2`$eOT<^aK?z(?^onhbB4iTcXPBXHySpQ#H2G;!gd-hZ>EP=->9Rw%s;z2ohkcQk zN-=6%c~}lC6W@F4YohUgP?{=#?C_>-w06<7ay+Y21zeO#a? 2;bEDN OHa)c+}~-VwG6pc}Q{( zXxE(TlhG`v{~sf&DNf!gOU;arp;nGFu>Bequs-Ls=6@3g1evOEJ`?D9x0_h%RMjO- zTj}w2mzF}|l k6Z} zB4`SS bLn=g?ME*#`MG0jv}D=5Tjx0zzuR?ofp(=E6v(-~Qsm}k<_&5s z 9HBHmK@FfL}sT zoa|!|IEP>Y==PrB?glE&JxXD_Y2TQ&V&~sXJ^0);5ee9^x3|Z8+}D?@Ch}O@*5F)V zn{E X`Y~)g zkzwc#8z~4jj Kj`64aVN*kH6A|exVwM7 z5p1T#x7o^$(vDVVOp~Lp2DrdbG)huqZFTdR{pe&*{1<~7aT;GL9`ubKN6HnRS)=x~ z5kgR;BvO@8iZP?J?BCGM+Ap#v=@4okiU4;m`v8VMAs<<{*46%E`ldc*mJIFze>Py5 zH-rRHU|2wjLFdJVePT*WW{TdZBv=rp6T!=E8&bKUQc}cezUj6E!%=Jz>fk)UvT3ws z(Kx8!(HcSxfh7B$CuRq+beBQuOw@LT+5anC{>ug~c`H@C$zd)~#o$NI0rHOzs%7D- z2IR%nK)iUG`Vj}r@`5uv<2E{KFDAuki%f3wCBq}Q>gb{T?bbF5=rVfqpz-YnHr=By zT8gGFF^GvjjR#u60Rvf#>yC;lK(NeOfDTm)!p9kGgO_vf7_Q)`MyW@@-b@vuF+>7@ zUi}3oY8xR4pP>bsbP&w#CE)wVFo)htw8wNSNkR{K%zkXzS_X&Us)KPuaqt6gl&Ug> zFTOEPlwVOCMt$h?%z`=WkVcW%92&X-<06pY?#iwXWG1T0R;$FZY`b#g+OS)IBzfc` zSr;bPf+1E9 ;| -iEI$nxA=#;r} zL9f~!^lF3&rf;xZ-NmIwfOO$pA@57F>}Jc<=v?AgOrNdc$C1myn-ZrrLJ4LdBR2fW z`&;cmQ%Q{7^EqHdL!YF=UN|BRlgs=RG5e?mE?+=wFo4Jwwb6&gu>U+Yl;Jb{$FAUp zN0n%I%uzWgijnwq5BtWdf-@{Obene0%lfUWY8j$17y^}>)As^Ak)Wa@*A(?L-sH5I z-5j?DeXjok{NXcE8_y>9`AtCb3r!5~&7}8-gdjsr#G(Bwb?-_4u%wod3a+{nDC2QD z@4sYWFPAEGS1Ld#`k1R)W<`UK&N(3&VLQhE{s*!CB!KIrt+WQwTi=+*B ^fjaRE8zG0C*cN(hzkzL2HxGRaDN zKnbN9APn=&e&%5Y1RJ^W%D(ug(<65zA4_8rQd1WxLt?Zp*4Q|v#gu;{39?zp6DAVu z4~Ltivage57ggq`eq-9*MVP+KfB8aI2KW6{ TZ*~3TarHX%56h8{EI%HlV`?HTb>p4NG zy~Dx|uLmz@N)2)iJ)dv1L%eG#LXO{}sJtb3Q!QXUR; $^U1Yrx}iGMtWP z$u5T7N>;mJj%?-K`6^4Lya@wfgG$w_)Uv=@p_}>O3~>22EW8xg1<6T@;;T7(q6#F~ zPSS=#QFZjO65m~fdCg*2TxDiDkNjh2S@nqwqMtoAP=#UL?@sGt0?>QpkB-kX_x xacpyCq1cpRdJpkCe(eHt%bS{B#CLv-^^V$dedq8B_?DX|_@@DwL~O0z z9gbMGm>>6Ce(4eQ$c)X`^3~Qc1eO;(&{}qMp?Gljs+3E% 65;#=O&h)_+5wv09RW~OPmjs>1EFFe-11dB3|OF*lgyz}ow3B^BRS$N6f;a< z6YTBoHAvl+xcXHg2-yns#>9X==>!+)C_>&*pFwXWhXq!A@KASLG9HdvufZvT^D%ls z^2;jLnoqXuKEs#Y^u@53RA%{)DR(~(^9~@`56mw^mpz3N9;P#sHnjuBl$0!yJtUR_ z;MoF&@a&!8rhI^Q(-rLZs);rwC})GbQE1Q%-3bWZl@v8&YT@PLdZfwSVCWeFjXh#N zH3ntAwk{9bCYol^py6Fl26vo9CqkDL@&WzyY@|EJu&_`-;i4QThfHrDU{b*!C5E6c zWo1GY$(%YFS4cby^Q$9lXfujL-FPTB>cn7mv}VF$sFf-N^3Q fEYD) zDnc00XUwPMfpd!?|HhOK4?`!pD|UGZJCYFguM|wxr678-mAuCj8dHB=SgKd3&lxme z^<&EZgUsv&HDxIj0cA>aei%z$)yspJNJV${tDv=xf9h{j+M
qH zhnFi9tIy?rq+6Ze0kKa~zn&4in~~Axi{8uZ 75`ajm3Ex3<5Eh{LX$B2;cQ zxa~f?Gvm$eB^REa_tP&jd$OOGk9-YPciXS`DTa={Qn%+ZqzC8kjeIvH*~386>cI{Q zCz++flngtPci&f)SikYP-1|o`kaRmnUgWT3KC+iX S7??V%)_Q4@3Qq3;f*V~HwP z^AH;$L&F~UfTc6g`^tSG6~(j{eqF=QG4VhRlr>>9NJ+=CD*QjwK-91zw3Ynx|NR+$ zkPwKwFhaY&*5;i@tIyp80s3GV> 0uza-{UPao~Z zeVH!mbZd*fHj|$Ls*?4EnKkMm4c0CkqkY|@INS!!iLTVRsAzJuz##tbVP#fx>dMab zQ`hncz#Mo$&E7fw {_2jYN|vG<(!iP-PQ}w+ CE_{!CKUiobeQ<7NGjr^33>Ilzet_FAR)7Y7Lu(3}>x4ZK#P z_8SYb*)DFJpf3T412L04u2B1RfqXRA`YdlKA~Rcgdx$5^Qktaeb$8^|F<?xfjH; z&QWjhd~@#Fbk18&N1F^)f+ MTi!ZW=w&t&dberAy{c0;K=Apk3 z3|~p}uR{Q=^7Ey8Ha_7$Vel`(Qg}YdU6N{2H867CE5C)9OBwqtRu?3po6o%Q9O4GO z0B#`^^sO%UyfANXp65RJF^-+J@BA@rqpjXq9uksBEw8xZCJUd+87|bewB5*La`0Vc zlPQ&-M99|Okg;S>!eh|JK&NrX3e?6MV5K*AD7_ET0GBi2i65N`U`EYsAY XSJqt%3Vz_khlJX rj-mi;utJac+3X-wpk|uJ6GR_ogyEIR$@c~c z(XA2Pjt^`Hmw=geGG{DcvK)o_y*R%HuKd+GS=aTo?VZ0xVCt__gOG;huRHlC!TqYi zR7}xBG_Nn~A5KBQwtR}gA{_XICE_Cx= IHn==^++?S2 zS-av! U$+A?9&ZG0t6x9^ zagyBet*S_>5u89Stlsl^sT9E1ee@NLf}%&v51e=389rURBwVgfNQI6)DQ;eBfS|oy z%I0Ci#B7x7c)9YaCI>NLNR4vaPofJsOl!UC=f%8u@}X{wdUK#v=)3VTfX?n0I9@cc zGOFFGCjs^(;L$^JF29%}QAoQ@?TY>7+RU7%ne|6^0QW9 |}+!)vXi1FGKN_*Vf%w@5Hu4UjVTI1qPY873ypTV=+ZkJ+cjlZyQ2)gmj4 zQb1z?O7**Ptf)ovUYq51p8<|XK&9b2rIJi5s&~N?gMw-(rxU#JO%C`Q**B&*_@M3$ zSVlpy;fqGy#8^9gD~}bBC*p#mQ`cZiD9+QlVAm+WYbYbNNN Q(Pfc;R|9`LhFC@<$E5n15&emy- zYu&dH0FdsQoiPvI9hd9(727(@J&-BEL!JGTRaDXm-K`tJWR#679NN+FDVFj=0@OAq zJ(2c&dAJu@kn^DsT>D!aX^1jfYJm7u+_z}LjLtTx3|3>2xFo_pv-|wx>H>E5Nfj%S zi5DE@+%;p_+wI)A%PG1MroSa7as$WgT?{pKgZGHqaM}3%$^Soarelu7^5)b^8YSxH z8JoZ<0ollfC%CyYQm>_c^?&ynca$?R+D{gF)2I{9sjh6Lk#wGU%7`!l%UjhHW`2+_ z7kI8~4iW&jK)F@LX3gsXo?hPx)mD6~A9kLKqL_<46ej92K7=q8m#3`W!sy?A7#-At z!8?%hUXuZ)48G3hjT^`ViC52`g+6sZV!tX?OfJ-$8%DKi5JZjIsTGxnz}+f@2$fWf zdI#ET8Lir5(Ikf9000IiL7F6NTmNTIY;xcP$VoaW`>Uu`WWP7TS%j-D9@(F;NaT^H zjP@|NAmrNk&f^E&EKqb_UPq0Hl n5CCtcZ@ya-5~P~K8@BQN;fClW@cEAn~L?+WP?PC+0n$I6}RyJSB*m2 z`odmx;j{iRR %EI*&{7H_!be6$DS;MN> (XeEy5S3K~vzw{IYuSgCQ=CkSk%B zS5JI6%*GpQ$ZQr$D>b@;k-U{GQZyz_s{2kNfDQ8Ng@j^z%c4!N8M|6Mqql8?8nsCQ zjlV`Ox@Vde&R-{Bh&+wdz|eZT;1+rC){@*y@f3sqJ?^&vaNrU(V&z9umzAAliDd|B zqa0lFgtQrozgv2+2+HGcq#jfH7-&Yk$F^xFrF2}>QqQ=^XmA36iz^(NL$ii&_lix2 z0j0U# Q+uX304*ts z>MGnh+#&?PL_L`1UT*gC;v$f( ;Hz zW^ )iRp* z`B}b53}6$ItM9Y#w%^}euJ&<|V}1$OlTc &lFTT=i_qF8Bo?n-l-#Qu^Y2IMnr(?Cc@(fw&t^{q62srzDscB&y7Rjb6Z z;kQ2XlQObTO6SsUpWX8rs7E1kv*hF5m%cn1ZxZ^8Nd4>_9ys|lB;>3)_fCs<;#Sqe zM$ KoW4V>?tA1(Qydq2$9WUiFCg}+^ zk3{IKq3*6-{Bq6{O$_#t+N*o*^M1)7IK=%$kG5msC30c#T=;nfKh#nhITtgBU=J%y z2HUsg*}p}$8bbCsW$mk@tNgsXwKnG LJ{UvPe-IVXeAq4=Gn-`hT>kUM|gz4 z&gy&zIue-u{fw=iPEe;sh8KG7z;Pz>Yh{|-_iOdFS0V}C-|84OEp*!AQt#P?+K{{d zss{Urkf9qv$`(vw=Q6pYyu7nrRGc|PA?_6u ?oZ=e>A`za|1)E)065M zq#PVZ(R~<`hZ0E+$0MVf_82@FrUiSkx|I7VhMz`BXXyT3iJWUR*jCP`O++{Y-Vng+ zp#Z^?B#s_p)lZA#j6+VXaTAb!2~y(4w)6Lc$G`vp2FyVL0%(!3EB}5%<;!!m3&+vw zVb)us^EqoWjmEPyE_NAL{QNyU<-C2_ &tOta2Z6i}{ zgq)S4?T5|hL9aLgZq)AGsT{BNMZ1&5?6Q0K8o`%na$fCsy8K5^EX@7d 0pRy!EzeLYLH&9XVxfM-rD7^p9{3 z5$xk*`XGA8g{_sdE<4Xv_#F-(=qbQsG>7X>Ny7y05?wH^0FvyeHnC6L8HswWcZm zsfskFQ#ltgz==F7=%3|}G6C=~diHuJhhfNx&ZIOzFVfzT=h@q*xfzw(&F$E<@Do)u zHJN_Uff_Lx-`J-T=5b`llzSz07e9liaSA?WV(UoubJIZRM(1p^#!d%kxP3B(t?EUM z^0oT=M#p}@xj#uma&6}wRh~fNwey}l5vj4Bl3}ka2varAPW2}(Rq`vuNo5rRpsVDI zF65`T_m }<-r)>52uFcA}nD=BZ<`Tz_*YN|6 zG2jwR{PCFviRjIQr6OXw`3>HD0a0&;nesdR{`FR|0#c8PcA^GKGI(p1CDJiuzAS*+ z(-;L5uF~2+&b5_(FKflNt<`$$!xXuckM0w7K=6?n13L)=%KG8IcG)8k6FjlNz(cm{ z|D`j_18Bm6Gf${