From 02e0f4fa5b7e7a9d64023eb29aae9060a1ea5029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9A=93=E7=AB=A5?= Date: Sun, 5 Jan 2025 20:37:47 +0800 Subject: [PATCH] init ace plus --- .gitignore | 1 + README.md | 58 +- __init__.py | 1 + assets/ace_method/method++.jpg | Bin 0 -> 237418 bytes config/ace_plus_diffusers_infer.yaml | 25 + demo.py | 397 +++++++++++ .../86e6357922a3c13cf3d0c177d2a5c382.jpg | Bin 0 -> 120862 bytes infer.py | 221 ++++++ inference/__init__.py | 0 inference/ace_plus_diffusers.py | 114 ++++ inference/utils.py | 105 +++ models/model_zoo.yaml | 28 + modules/__init__.py | 2 + modules/embedder.py | 383 +++++++++++ modules/flux.py | 632 ++++++++++++++++++ modules/layers.py | 519 ++++++++++++++ requirements.txt | 2 + 17 files changed, 2487 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 __init__.py create mode 100644 assets/ace_method/method++.jpg create mode 100644 config/ace_plus_diffusers_infer.yaml create mode 100644 demo.py create mode 100644 examples/input/86e6357922a3c13cf3d0c177d2a5c382.jpg create mode 100644 infer.py create mode 100644 inference/__init__.py create mode 100644 inference/ace_plus_diffusers.py create mode 100644 inference/utils.py create mode 100644 models/model_zoo.yaml create mode 100644 modules/__init__.py create mode 100644 modules/embedder.py create mode 100644 modules/flux.py create mode 100644 modules/layers.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/README.md b/README.md index 9b679a4..76f83bd 100644 --- a/README.md +++ b/README.md @@ -1 +1,57 @@ -# ACE_plus \ No newline at end of file +

+ +

++: Instruction-Based Image Creation and Editing
via Context-Aware Content Filling

+ +

+ Paper PDF + Project Page + + + + +
+ Chaojie Mao + · + Jingfeng Zhang + · + Yulin Pan + · + Zeyinzi Jiang + · + Zhen Han +
+ · + Yu Liu + · + Jingren Zhou +
+ Tongyi Lab, Alibaba Group +

+ + + + +
+ +
+ +## 📢 News +* **[2025.01.03]** Release the paper of ACE++ on arxiv. + +## 🚀 Installation +Install the necessary packages with `pip`: +```bash +pip install -r requirements.txt +``` + + +## 📝 Citation + +```bibtex +@article{, + title={}, + author={}, + journal={}, + year={2025} +} +``` \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..422787a --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +import modules \ No newline at end of file diff --git a/assets/ace_method/method++.jpg b/assets/ace_method/method++.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0719d899c21f1231afe6924a1bec4b2ce18b26de GIT binary patch literal 237418 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 *=cPUL=s3?U?u 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 brDTDf{Qrw6 0 + if self.default_model_name == "": self.default_model_name = list(self.model_choices.keys())[0] + self.model_name = self.default_model_name + pipe_cfg = self.model_choices[self.default_model_name] + infer_name = pipe_cfg.get("INFERENCE_TYPE", "ACE") + self.pipe = inference_dict[infer_name]() + self.pipe.init_from_cfg(pipe_cfg) + + # choose different model + self.task_model_cfg = Config(load=True, cfg_file=model_list) + self.task_model = {} + self.task_model_list = [] + self.edit_type_dict = {"repainting": None} + self.edit_type_list = ["repainting"] + for task_name, task_model in self.task_model_cfg.MODEL.items(): + self.task_model[task_name.lower()] = task_model + self.task_model_list.append(task_name.lower()) + for preprocessor in task_model.get("PREPROCESSOR", []): + if preprocessor["TYPE"] in self.edit_type_dict: + continue + preprocessor["REPAINTING_SCALE"] = task_model.get("REPAINTING_SCALE", 1.0) + self.edit_type_dict[preprocessor["TYPE"]] = preprocessor + self.max_msgs = 20 + + def create_ui(self): + with gr.Row(equal_height=True, visible=True): + with gr.Column(scale=2): + self.gallery_image = gr.Image( + height=600, + interactive=False, + type='pil', + elem_id='Reference_image' + ) + with gr.Column(scale=1, visible=True) as self.edit_preprocess_panel: + with gr.Accordion(label='Related Input Image', open=False): + self.generation_info_preview = gr.Text( + lines=2, + ) + self.edit_preprocess_preview = gr.Image( + height=600, + interactive=False, + type='pil', + elem_id='preprocess_image' + ) + + self.edit_preprocess_mask_preview = gr.Image( + height=600, + interactive=False, + type='pil', + elem_id='preprocess_image_mask' + ) + + with gr.Row(variant='panel', + equal_height=True, + show_progress=False): + with gr.Column(scale=10, min_width=500): + self.text = gr.Textbox( + placeholder='Input "@" find history of image', + label='Instruction', + container=False, + lines = 1) + with gr.Column(scale=2, min_width=100): + with gr.Row(): + with gr.Column(scale=1, min_width=100): + self.chat_btn = gr.Button(value='Generate', variant = "primary") + + with gr.Accordion(label='Advance', open=True): + with gr.Row(visible=True): + with gr.Column(): + self.reference_image = gr.Image( + height=1000, + interactive=True, + image_mode='RGB', + type='pil', + label='Reference Image', + elem_id='reference_image' + ) + with gr.Column(): + self.edit_image = gr.ImageMask( + height=1000, + interactive=True, + value=None, + sources=['upload'], + type='pil', + layers=False, + label='Edit Image', + elem_id='image_editor', + show_fullscreen_button=True, + format="png" + ) + with gr.Row(): + self.model_name_dd = gr.Dropdown( + choices=self.model_choices, + value=self.default_model_name, + label='Model Version') + self.task_type = gr.Dropdown(choices=self.task_model_list, + interactive=True, + value=self.task_model_list[0], + label='Task Type') + self.edit_type = gr.Dropdown(choices=self.edit_type_list, + interactive=True, + value=self.edit_type_list[0], + label='Edit Type') + with gr.Row(): + self.step = gr.Slider(minimum=1, + maximum=1000, + value=self.pipe.input.get("sample_steps", 20), + visible=self.pipe.input.get("sample_steps", None) is not None, + label='Sample Step') + self.cfg_scale = gr.Slider( + minimum=1.0, + maximum=100.0, + value=self.pipe.input.get("guide_scale", 4.5), + visible=self.pipe.input.get("guide_scale", None) is not None, + label='Guidance Scale') + self.seed = gr.Slider(minimum=-1, + maximum=10000000, + value=-1, + label='Seed') + self.output_height = gr.Slider( + minimum=256, + maximum=1440, + value=self.pipe.input.get("output_height", 1024), + visible=self.pipe.input.get("output_height", None) is not None, + label='Output Height') + self.output_width = gr.Slider( + minimum=256, + maximum=1440, + value=self.pipe.input.get("output_width", 1024), + visible=self.pipe.input.get("output_width", None) is not None, + label='Output Width') + + self.repainting_scale = gr.Slider( + minimum=0.0, + maximum=1.0, + value=self.pipe.input.get("repainting_scale", 1.0), + visible=True, + label='Repainting Scale') + + + + + def set_callbacks(self, *args, **kwargs): + ######################################## + def change_model(model_name): + if model_name not in self.model_choices: + gr.Info('The provided model name is not a valid choice!') + return model_name, gr.update(), gr.update() + + if model_name != self.model_name: + lock.acquire() + del self.pipe + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + pipe_cfg = self.model_choices[model_name] + infer_name = pipe_cfg.get("INFERENCE_TYPE", "ACE") + self.pipe = inference_dict[infer_name]() + self.pipe.init_from_cfg(pipe_cfg) + self.model_name = model_name + lock.release() + + return (model_name, gr.update(), + gr.Slider( + value=self.pipe.input.get("sample_steps", 20), + visible=self.pipe.input.get("sample_steps", None) is not None), + gr.Slider( + value=self.pipe.input.get("guide_scale", 4.5), + visible=self.pipe.input.get("guide_scale", None) is not None), + gr.Slider( + value=self.pipe.input.get("output_height", 1024), + visible=self.pipe.input.get("output_height", None) is not None), + gr.Slider( + value=self.pipe.input.get("output_width", 1024), + visible=self.pipe.input.get("output_width", None) is not None), + gr.Slider(value=self.pipe.input.get("repainting_scale", 1.0)) + ) + + self.model_name_dd.change( + change_model, + inputs=[self.model_name_dd], + outputs=[ + self.model_name_dd, self.text, + self.step, + self.cfg_scale, + self.output_height, + self.output_width, + self.repainting_scale]) + + def change_task_type(task_type): + task_info = self.task_model[task_type] + edit_type_list = self.edit_type_list + for preprocessor in task_info.get("PREPROCESSOR", []): + if preprocessor["TYPE"] in self.edit_type_dict: + continue + preprocessor["REPAINTING_SCALE"] = task_info.get("REPAINTING_SCALE", 1.0) + self.edit_type_dict[preprocessor["TYPE"]] = preprocessor + edit_type_list.append(preprocessor["TYPE"]) + + return gr.update(choices=edit_type_list, value=edit_type_list[0]) + + self.task_type.change(change_task_type, inputs=[self.task_type], outputs=[self.edit_type]) + + def change_edit_type(edit_type): + edit_info = self.edit_type_dict[edit_type] + edit_info = edit_info or {} + repainting_scale = edit_info.get("REPAINTING_SCALE", 1.0) + if edit_type == self.edit_type_list[0]: + return gr.Slider(value=1.0) + else: + return gr.Slider( + value=repainting_scale) + + self.edit_type.change(change_edit_type, inputs=[self.edit_type], outputs=[self.repainting_scale]) + + def preprocess_input(ref_image, edit_image_dict, preprocess = None): + if ref_image is not None: + ref_image = pillow_convert(ref_image, "RGB") + + if edit_image_dict is None: + edit_image = None + edit_mask = None + else: + edit_image = edit_image_dict["background"] + edit_mask = np.array(edit_image_dict["layers"][0])[:, :, 3] + if np.sum(edit_image) < 1: + edit_image = None + edit_mask = None + else: + edit_image = pillow_convert(edit_image, "RGB") + edit_mask = Image.fromarray(edit_mask).convert('L') + + edit_image.save("debug/edit_image.png") if edit_image is not None else None + edit_mask.save("debug/edit_mask.png") if edit_mask is not None else None + ref_image.save("debug/ref_image.png") if ref_image is not None else None + + return edit_image, edit_mask, ref_image + + def run_chat( + prompt, + ref_image, + edit_image, + task_type, + edit_type, + cfg_scale, + step, + seed, + output_h, + output_w, + repainting_scale + ): + model_path = self.task_model[task_type]["MODEL_PATH"] + edit_info = self.edit_type_dict[edit_type] + + pre_edit_image, pre_edit_mask, pre_ref_image = preprocess_input(ref_image, edit_image) + pre_edit_image = edit_preprocess(edit_info, we.device_id, pre_edit_image, pre_edit_mask) + # edit_image["background"] = pre_edit_image + st = time.time() + image, seed = self.pipe( + reference_image=pre_ref_image, + edit_image=pre_edit_image, + edit_mask=pre_edit_mask, + prompt=prompt, + output_height=output_h, + output_width=output_w, + sampler='flow_euler', + sample_steps=step, + guide_scale=cfg_scale, + seed=seed, + repainting_scale=repainting_scale, + lora_path = model_path + ) + et = time.time() + msg = f"prompt: {prompt}; seed: {seed}; cost time: {et - st}s" + + return (gr.Image(value=image), gr.Column(visible=True), + gr.Image(value=pre_edit_image if pre_edit_image is not None else pre_ref_image), + gr.Image(value=pre_edit_mask if pre_edit_mask is not None else None), + gr.Text(value=msg)) + + chat_inputs = [ + self.reference_image, + self.edit_image, + self.task_type, + self.edit_type, + self.cfg_scale, + self.step, + self.seed, + self.output_height, + self.output_width, + self.repainting_scale + ] + + chat_outputs = [ + self.gallery_image, self.edit_preprocess_panel, self.edit_preprocess_preview, + self.edit_preprocess_mask_preview, self.generation_info_preview + ] + + self.chat_btn.click(run_chat, + inputs=[self.text] + chat_inputs, + outputs=chat_outputs, + queue=True) + + self.text.submit(run_chat, + inputs=[self.text] + chat_inputs, + outputs=chat_outputs, + queue=True) + +def run_gr(cfg): + with gr.Blocks() as demo: + chatbot = DemoUI() + chatbot.create_ui() + chatbot.set_callbacks() + demo.launch(server_name='0.0.0.0', + server_port=cfg.args.server_port, + root_path=cfg.args.root_path) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Argparser for Scepter:\n') + parser.add_argument('--server_port', + dest='server_port', + help='', + type=int, + default=2345) + parser.add_argument('--root_path', dest='root_path', help='', default='') + cfg = Config(load=True, parser_ins=parser) + run_gr(cfg) diff --git a/examples/input/86e6357922a3c13cf3d0c177d2a5c382.jpg b/examples/input/86e6357922a3c13cf3d0c177d2a5c382.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26389824212aabbf95abfec02f0337f2b542851c GIT binary patch literal 120862 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

Q+<)!288m;wS@1lY zaCX{w?!4=6G|pcUQjYcu#QiMg*kCr3efX4zYw| z>K?ZLY!a7E=MFu!?{)IR(+!=kAi3v_<$0ayJBe$DQ;w%@FK*n3usgvPKdErw5Bjv_DnojLYg@epLSkt4XW-`wyHgW|LvTf$- zl-TQfF^qQ68$)X70JO;ADr~4ENM%T+1v9&K<${%}n1$TIVdDB$S&PG-?*89iY^Hy` zGtHMs@X2{J(@|aL>v_HmcvLfls@)dV0x1oo%wdz`xg+$o1YZ~kQ=!hm~4F-6^ zMPlRqh5dz&m+OSa8+v0-StGTi-Wt7^lSlQRGe(WMO4XFm8+&Q#q-EJF&tCp2EFFtf zwu^Y&QK3+OHk%PWA_anh^0bZCyM`kBJ-x|Fq< zgXFMj!mQnh-}<}XQkpgyZFH&3wwA#(6s37TeErk}_F>!yulp;`#fb*T?FuyLTVB9?Wzy z3hA*uIjfDFi!L78)%-R~7J4*bOzH{wkmR zUj8~mo>)~0fXpT)X^sFnM4GNqUgj;5RFi;1fI&?Q@y~BrYdQh7$JGDVt%z`EoBM;$ z-E)EX0~bU4F+c26V5_(qvvf<^W>oSr&b@$$u~F?J@{Y~Bi8V1}zS_3izp)%{P#afvM$WcfMO=cAsX3KYX=#z;Fhk$kupsgj$v!j#J((~Ab0q1l z&2K%sT_fegTuU);cf{-Lm&DAaJHgq_-$rp^(#2JSjg@dyW(RoT5XqJwtn%UMcb4lb zu2~Lse0}}SUE`l$oqGY>LST&58)_C~YG=o(RIldZ$Tq={{l$it)xV=R!v zqCkki;4gUzBMFdC@x^bgPWN-)YnNjEUNthmN9H*oNZtTGULz0pVp7VOy%_HN%eEPC z-IlTFFqM(s&7?8n@!R#_POtrCR@@5!CwTE>;~kqfmb+atedgqeFm+Fnx`%pQ-ClN5 zJ=dD-pldUB@)?RaY|Ly-%w?aEn!MsyZMkWojKmWdlNnmE%ZIQjD(WVMV9=P;q9Rv@ z(6-0}uuHVHEQlIv2mvROw1~sZAw$GpDdc6yQ?iVzDmY6Dzao;7U%izCvQqd+iv3|- zyBFp~wle>mTePE^JECM7V_i8#X~LiN7qM4&1G$M0*+UDRdBs$%<~x%ba?M$bP~r@e zF6)qaSr8&Y&0EhO$O}}Iv^J2HLDEf;K_IGrgK3n|v57L#Er=JfYl46cKr%WIjc!mi zN}LgUOnOs`l9LPnQZh6K+?LklDPX|R2dU}&fq(%Hy%@4G{luit=x?3m5KX7|!fQLD z9?4cdIo&D#NeD`SRAxY0F3}5rE`urD?2VurZK>=nz35bTCa) z)GQ(hkq#fZmZk_@x`aK6KG}W%ODb3TYu&_u0*AG7souQ{p4K}Fw?#@d7}zRo0`>A7 ztCwTx3w1nS;)}&6=8l~Q^1IcK^RJJ3$Lin56WAvy(SWf5X9__zG)W;vprBE7bJ_GU za0;RndJ|9vg@f1tRgv~9jWn%XSQQBiahf7GpkLUxfgzq9HM3ed&9*d+u9Lr&L!gjt zDtDcz7rs=-tEfcloSV(0BD|F#i-_BvV-Gz!?1{UdI|*3%I(>zmefKm9OHM~sBth0j zzcH0cijY>KQ{qUGlmP-EsOYq5V1h9^r2koqOv1*9X(*|PZ2+XD;l^mnUeC9!tg$`O zH(fI69Zm06Us|4X_J2pQ60S*vv!k|S+N|B=(Bmj&Nfe=A7s05NF(bh?l3E+Bzg&|IUag7sLjhbq=&&PJF?;J_r}k!*yqE20ugUW836_@rZoc8IsyeOjgM|l zi<}|}B8qZMqMQRaDI%hyBWq(IAc+ehj>oLtx3pnOJ65IJ9az|THhhh1rdMI}zo-BP z^@@KHISHzcBvdjD&h0;Qwm=qKo+u?>TgkNU^3w6r@oZ|H@u=;+I(k~eZF&n=0!e=4 zFu4dNEP9rp#S{XdGy^^uL}MOm4_l?zJ9V+wion=cojbjwiubPanC(1mJ;|=S@v#!5ZQK^k6d_NAv zUP+|c?59yq0ZK~IqL_zcXv-Vag0X{DlhKn>q?K5eXcVQeX_5#eQ8Bwj@k)3}B9dqKJYauPsRy7Nr*qE=I;qLRF;0qyt2uqG*O< z0MNs9(2-awZ!U8<oM3=M-9bg)*r&~7M*s-+iN|zuz z&zXqKS{r}8v#jYWDWjt8{U?ukwP$YVU>Gt8gZ51bFajBu8H`K-L}l&+RI(8u5)EsH z5GVnx4e25zBi_PO5%bVMMLGkW0bwZERKY$|K-`>1n*|{RS&&QH-E#pz{qd@fB~jO=9UVJkzvJ02ZwRLoqAA;qBKoE zvo&%GemXW7s~E@7&tS!W{K8nz(9nX$!9Pg)D*-S{(OkLV&>F6MQ8C28EEfX;gd`Ul znMd^_UdtSdW3ObVn2gc%N&_YP5x%4#D$$~YgOZ{^|M#OvBNc}I6&d-hc9cj1rD<@| znl_NCR{QOY;O)97^u+|5QqTZ0)bVL7M#>r#c)(uM}&+X zK9?pHGAv6cNd{0wLe+y>3*;fBq2rZ8q34z)lGX(C$q@6KzYQ*+zl}2>pdh}wi@o($b*Ok2 z{wsQKOzrUxu-Ewe{ePjyuff03269w!TJsx<>qoREXOccYX%w)G-qL#*I|=DG+>48< z4!(Cs5cLFpZVMG`>C5YiLQ>lz%*v1Ay>xI^4zTS**t69BT{aKRRsiY_`vPaJLTU)z zU!YM8^aQ_grltP7IAK7bTCt|i6pl?RJrhk;@~HfI zo=@K;nGT8HO#p=>b2u2|mfNI7 z9Oqoo7Uv68z4pGL!gEDe+45CR)bXd$_(02T6X=~MwUgt`7Fi>h|%%rfftGh(A5Sigkc;;oiv)%^=O5S~O13~>d5&T))AXQbh#`8(#Voipqy&=gP z&mbOEtdFLprjrFXe*~56{3?bts*A@4Rf9n)i+cH`=GuZ^OuH~@+lh^|7hgm4DR z&3U5TVNF>Y`?aJb{$({tP-vA%7zNrheIbbZ9q&{u;Sl~wn*)5FleLGJ&yBpt9imm~ zZ}tPOSKfeDHx;9?{_^o+QGAHi2R#%I8YZ%SI3~fg5V62MpbH}6B-AP)TX+-@TCckT z{Zu6(zzGlCXl$$7p+tXtS-&7}&kD2rV0Kecd~s$UV4XRV{4{cr$o-C4eI}T>gr6(J zfoy<4#5rb~ZdDiUXmEqAH7R`(yR*8nlHHADhd|GIZdI-?F=FbmC4u;?)#j)AEebj45L*osF-u)Z}>V*^A7;T_Pp}1 z7}NIt^T&oYlWwG9YCEW5T}+PvqXdTwW_!ztXuvi!l*1-Dnuc7UKsD61e*gv>?mZ;o1i=(n z&=q~vEqB%-p4YU$JL5$v@0{bhM^c=-k+y$~M>Kd+QaFSY{0+E;jFj$gmPyH@!%D}Ztar?DmRW+cF$+hX@4mCmv5 zM~?+>x;=5#uPNilmOMOseN3Xw7(q!sWH)@1V?p=oj0bD#TjK%5jp9~|fOWk%K__V7 z0$$v8I1jt!BqnI^kg8cP(o2E$DSf5OL5aLtYbYHH$!79B-pmD_i*HxlkKjFlbl=1g z)yckOG~f;9kyD@e3{n@>OMvI#;8P5(7ON;FCwe^?B8!$5lybr=v=-*YKA7yB`*s0l zuUgE<$1>1jwd!c!4pdQrrqnVhJN>0`h^P1-S7H#3muk217lA^-FHUAq=a+c53`TzL z^sEO6T|vA|81b{kq8DLQ5dzO>aGXLYI~pNw$ra<*SiV;K%y2)JFaCn5kO?hWibCKI zHB)j^sqd%DRclHJzM?V1y|;XUiQ8H!TQ_`sQNDTma3ya4V?yDmDItlsU%ZRYTE|$8 z9{GZfPUvlJtGtVzEAwuMBZ65k5Qn=~kYLHiJd{ry4~8$XhL@k1EL15H=5KV4(yXtJ zb!4mOg4?M+Z=pP2JkJwDBl{}FmbH{Ys;Y&g&+kXH4hP?`8;#_#$RtsZ zE>3@Q4b`V(up9C)O~JZVncwqi)+AZ9_6%+cP`e_1nMeTDajxqhV82B$@`XD+kk2S$ za8XxZd({4=xu*E+o)FTh;W<<64Ld?T)(($J3lQ`Pqm?3b^w%n!onVJy!Yj_K-p1tdNh3nx0ES~#R@m#%rnbZ9wGxFJa z!tJ&5EadUx_q-CLuY=b!D?0`cl;@E_xQ@PE?*^ zuQ05FnhuYa5>@RL%0g|zaDKzRa zP`Z;;;N3@~K~g?E>%O07odoOLF)~#=tgyX?b=jK~-;^1XpHoiXm-0?i|HBh3m=_oI zyp$jb;Le=14QxJg;>Pu8?<7#lCj=2APaX^mUUBpM{06*3GhHAHvb33KQB}9uPGV7@Nt^pfvsYxR@jEPY!gRx*q9|EEjw~G~L57{VEo7N_ z9RUa-?=lOh(9jCcXigX@yp33}or>B7^%`S>1*6;M@p;OAYZ2d7fBd3X)7;nbQm46Y z6y6`N=O0hig6UDD^hX7HUj zw=1trY*fY~-Ps)J^U{^b7q6|fx{i9U?f8oMrGWB4_JT)jVkvIyVMaHss>l^qcvZ)* zqDzMwnAXDgv%BEgUskExHb8&Zj% zw|BueWW7$JoK7aOXQEx=<&IW(%31D_iV4~8%g>v4PU@smv^<^phb5L zUmkT=oKMU*r>tF9UYKLTB$GbNoc4e2t*DV;p4hw9o{cRx7UTYkR$_3NYe3V+mz9ur zOeoH6z6UBf@}cw2+xrbOXJijA9&6 zr->D3RcCI)t48;6{I_ zT7apUt|9al`5!A18F}{Uw z3i1rzxKYJ4G>*@o$){W^0%{$ab&T2R-BBM9Mll)EWJ`k@SgZG)FULU#mv&I=Pf;gU zEy8wDA1wn0CiJe&&i?@*U%x5nq5jbzZg9d^5u2uk#df&cj0kI?aih<5mo}uuM_(eM z98=<-4{rSu3Kp^{qsz*C7uuux;q&9)!cdICi}vu$$?;XS%@yb2g)^Qv{F!B9(5Y;y zY-n82z1FbRadxxp!AqhPZOi4e+fA)Rz$ox(c~opLwB_CjBeU{Py-mgQSS3qQ31RAgG_w#6jrcW9qIK2qV)8l( ztugsxULqo-3d7HAAWPK$Ywzx7@QP=N$^)mGlQ;iCD#ZIkog49ZzS)&wCP)T`KEPdu zo_0+Cy)SH!Zzfe}!1_kDwoQdZOCoo*(|;d!w~qPBTqX!pjP!{#JvZ&hQw!UQC|Eo~ z-6Z-%OG3>w`7EA_=#qcp$CR}$R1y%78eDdtqfVT`yTZE72u%Q?g?eIT<)-1Z_;-Le zGM{IFadLZG&CWEx@U)hU&^4So8k(QIrx>#yyoy9ceP689z79`CRQpuYeJnRGh01~s zCMe~bK1S><48V{yOhoMC0`U>Zs_mc2j^#DtvkXvzbnw;+ZfmjAVl-nevI$^J3}h^0f%VMUVfeBllUXa>B!kh&IwB%d@ZPM9 z@V!c z{6u4yDpA$-41OvE_EkuE-8BJ?%# z3E`701q~Q=nVt$o#P@DqxU$G=o|ac4+Ix0}F86b&Nfc;=1!$5yZVFVZa2T^2+Y##( zgVJx;p}V5%`UBsBftLQ4nRS)U?Z|CfRdp>d!9(6Fo^x;!g=VWbZY|jpB(vs6{TNVsze);=fTHKrgMn^!i+nPpz$M%Yt^6wUj@$VPa zJPE6Tg({0I98nQ2y*;n0ku@cQG@4N~k<1i-n zo?3?J-9Q1NOF3Ggg_b)!5kCGTmAM!QuV1vc@UB-i%BF~ivAf67UOs&?#uB!b%ses9 zpiv)rVR9AXL*F!*_0S94SfBdkaP&P--!{&5`w%~{3}f4R=o8i+!;raOXO7@hOkw4hv;|EiKPBRP{o%`k5-s z*K)~+kymJVmm0I;_>}H`yx2-PKIo!Lt2b-eERf5t82gQhumzv{KSIzuZG9lH*jvRp zqIQ;PTEGqSJ zg=(22IP}SxjCc>=MY80aGG){%B01-HUs{9eM!gibap7!gzYulM_$4{Se zue*ozT`0}`;Pa$RT0N=GisOSLF1xxms>1>e?(>zoa~M~PXT5dxlN88z97}!RGw9z2 zM=&j`Yq3lQEEK z-r4lFz>ZMM?CdCUbzcApP44mTJ7q;yFPViA0>*}*b7*w35U?GL;^-I*2o5yHh}Gm7 zuQjTd``E}gdW(y;U@Y>vdSTzz;epL(f>tF!Dj3U2gjIkM4hf~l1ggH9x3ybUt1yLoIG~`~Y7ohuEbkzrL$XPAQBZg=|f91ut5Wx5l zC*5)Beu&2mnH)?nv@jx?AC$aUd2m%fy}$?U7n^4r4555#56GHa3mH!Mh5rBoEgkVr z=M^RLhDO)!O+#r|HaDY^Gv>Y2ElUKaaFUyGJ!qCu_%*%71|7Z`6m86ugXAY}BErm^q2V zxF6HBhiDFg?rat?g(%@qvs6XP+s0+|s{UmR0?kt#u+jq4GA^EFo=FhlLiRm}|0|aX zOMy-$S?gaSGwsigK}6MR^zHE1$H~jjM~=o`U)K2H9C@6zP70OwLUzP5yH*F(BLDFO z{Ve7?3~OHJW`tqng-50cvAGFzcGbyfsRZ^o*sLG=Kra3P0xUALlqy^5+r1D23Vg=6 ze`+3K44N?p$_rIE@A}2FJEopO_q>Cn;%29E%6P~c7ZReNB);x#Sk|p5(Yx6-h}h<3 zTFu!m_8YnZo-g7d<6am)Oglas{?s5EYBl7lM6aDlR1Cc0RCDT|h>zx2=J?VLUlX2! zvn|%dVjcXnxFdd$5ygIi_xrOyO)qVwQy2aXs&2%`9WhDTFefurbENKh8ShfA8qNN$ zxo5+=hByE>yr|>)H0z4Y%|0T`ZQget35*`g99y;0YgiRjXpZo}N+#aR1R%oqH7abB zcd{PD1s$6r6i;L<3EwGZYv5Nm-oGSP-&IjBg}MzD3Fm8_cM9X$_uUI2^P6};6kMg#_cSH0qD4#} zTi-u3wM7Z*tdB_o@nqadQ$*3pF{1oV80jK{VTXp^MSL(GR7-jmmVN}u))2?rC^L>NGSRPFN6b^9@&O~Y27lO`|*{u9z*z;zaQ65&5 z;p2y=5{)#Rw%YzK${nEyf5<7_W<8VK(XsIscBY{S6@{HW^=P^{QG!C(IK(scNFCG^-FZwl4Euk(N?5`(D1v^ zMJ+ebP;*Y2%qO)j7COr01XEmYCE?*sQJhA1^9CDFoene{HcO|5s#uRbL6%YqzI}uC zg~d-RZXaGPpyfd&*}wmw2Nnfn-K|Q_Me}TgRdl(9hz2U|b#(KPW6^`m#UhV?2(RPO zO$vwv7gQFsl-YU7F?d%aO>XQ`7=T^u$r2DyKbEBr=#&_5S3Vo)s z&yJOuo=rBtde8W71JzPya^0iNf-b=E;R|aK{EPOFCkiX4>_qJ)1NKJ>j;c|L9N~I( zKbaOLnn#X~rHdqwg##ZXtW>^tr}-)#yB2LUQt{1a0_nAe$+(5le@5`V2H0$UpHYlh z_W2~rob9IIuV#aPIh=-t_4^hK+c`yb^kL^97+4Zh#M1c-!9+>3lmFTBPxsUi`x>;m zGnR}q(=kMk!{>tcVNv?YxFD26GzRsD0La%&%E9htXc_9H@~hD5vLs#4YKBTZKwDxj zeqqC=H{!1wA^FRA|k^pGCT^w}xQD?wd|fR1wQ-m%*zZB9F6eef{Mib#dRM`z{|UpQz8 zL`Th#?u4ELS=?UH+ntr4ANTO_e=c>^@{1ock-H>1_yhNL?!)(cm+N8y?__^~!m9tS z=Pdpmvg+8tos}4JBzYO*^s!)nAUOccX*X?PPKncOlp`>fFgMGUZ@@mNdk)tc7)M+} zVq%HeI!a7ZywfwYBHRFZUyn!M{b9Nvyu_p5^7`Prnd2o=&CA*g2;9IU`p8_cap+6@ z_ST>J2dKVPN`qVG4)3zmH1qT=?oAM!okKm_y@3Ie;~KS^#5ggPFjK|d*udq!v}5m0 z388U=<~cpfj5r*pWMz1dv=fFKBOWu&p~X4IsAvlq zpWn#2cYOw}atlyYNz1H{nK!zD4u$y9;&^fRcsqV){{s*tl8@;)e(ZfqoPDA=0VKGbC(?}7K_@6KmIK7kbui+8o~t40d%_E%SPw*OS_L

zMGR3 zto8k@IbaB3Ins^MF;QxyBfvP)RZ{6*G;B=!V-WSd9~@5y-;%gB{7L$W0kj$4l3P?; z)5dwKS3H0nfTcwS*xYxCG3w4>sq_6yysAPJf@krUB%nK@*nq(9u3~Z3=5LTQdEdDz zY$R`3{5{LNF9#?GLqB-qh)=rVFJ5VsttPdqmdg&rI=X+y7@k)3 zN~eFU9yfZ}pr-&J~U>qZ_z^`>S zPIrU(;2WlBUc4u1jLJn0rNAk>G|t}+dm=EQPE}Z~hj9Wdclz$zB{CWcxevPEH77-~ zIwq(qH2!(gj5ct**wb^+{)RXZwRWj2Pt{1$!FGFjevG3e67w9ffk|^*GnDv`tSSM~ zZZ~4rQ@n-uR#sLfp6dM;$=IISz^^evooZcu%S#D~+^j~r-(D*4b?g?XiwS=vyk%^2 z0AF2d@Bgs$)j@5%-`Bw@?(P%|?(Xgc5};_YBBc~4t}QOb-5ru(#UWUMQXojtB8B1< zDDK`LpYQu-GW*Aq%YGm3Hbp9+CNrT?1myl%)bqo9gC;CIzwrWr^=W4<=pR77EaoQ)-%sr8 zPUY458LTDKCM#L+0CInR4jn&PXM)42A8(zovQaB4CzESMbB!Ue@LX6z9&KqzP#x=2 zr!xeZA}IR`{O#nY>%|QfPM$3Re{dO!L#AKm1%qKgq0GlYKU(>SCq4AmOU*Z5vL|#H z-d7Rc^z*+9ZLQlo{K=0$MIiOYH-0bD1JgtM9nNA-Zm&+gpq|3vkcEQ8q5!kSSU?kj z@adAHaN~D0!i9X5+|H}GJXgB!yHX5W*?6SQR@#*^B@N_NA-(ch?x-tTHNn~q9P-i1 z{{TPfMYYrQ@P!RJ%uVRAY!`21+!*%Q}(c^Ui-X;72&iJRv3;~ z_TMmZ6=NGk>a@zLql$MdNX}ZcRD0S!CgRvAOwq8SDU_1Nm(qYB*CYWV{tlu!Om;y?LeyT zO*-6FQq`(p%cZ$rHCV+HShoGVX@g_tnSOBQ4jpauQ?<3VuPPgMl>t{7UB`kq+9*7; z&`cMq)Ng%qK?^^!6x~KC2$prV)~okCx7~EBio>)0K5j6&fBN$4)9WFJD(@ID{S?6- zXl-ye=ZBL-P_{#UvghJOw#LM3SDL@?j7xOQEZHl6kb=lmWe65FU0+}X-ME8UjM2$! zPJYsSTT&T)v7tw(_b9FPn;R!>Ld4=5XoY35<^%WO1?R?Sis`^>6Aft{TuSo_?pcL^poyt6 zN4micRQ65oHoQ!{z5jMrJ4!0iw%I7>5+9{{So%%S zRS}~Abxx7Ke>;+AU_KP}wAolm?cZt#cyDS%DPBzE$ z&88|hn3!vpAKUn3g4AYXyd}wH=Zh-$3^O^n)Wm-OqBQe;HQTqGNao(25H3w26ZEH) zG+ky{+(ZstSOznUIQe%NfhzCh6N==cR13ewDH_f}dK)nwX0Wz$Q*m6ta~iR2sQ6S> zx652e{h?{D9BSOmWt7im!7*Fc|NB>x(MZjQ&nU}w^q(XXwlKL>cO;fhlvf3)qR{Bv zUL=FhqQmdLZQVX7b9E92YcFwqJip{6nD}^$ce~HwFWF&6wbe0I#Cn9Y zUR1kMi~`5mf%>^7+`gfe&bd2x)&Bqt2_%uC(;ihjd4ASV7g;{fseqc}S;gh=(ZhH( zXPe$3IzK*<^$U^4Dt|bALTzGwMs6}lP3iC#QqfiYQyX-;+jHSr9w-Lcv^NdnEqVRy zx$kUdiH0_+c+8Tna=VMS&yn5i#SQ4|-x$S2u_UIr$4|WfBlluAo=u{tnB*k!y z>~{UgS9OaRm6WrZqz2_?4BVo`lih{3W_4{c))rPxgc9wYZ{Pkso%P-2uqzCsv!^c1 zS?^>N_e+RRGG6z(ghUAA_DErVQ=wiy}yH(#__Htt|ml5rYD| z+T?d%Q+7uxnV9d`QfM=%BJTy_31M;pvHF4CyAJFOs~dK)t95=w&k8lV&GEuGVXS65 zS-bA=+`7h05$fRHQw&&XI$@W@=K+l4HBtkph#TRtQ^U6sv5GE^5>P)b@(~hwWZV3!{!!3_U zb(WLfZ`?eTT|B*}$5NI<{{@Kj`zASJs&l(LC8PhiYj&T2&>Cz_rxTQ&0z{?{b1yZ?=IqRB(ir^ydk z7M=@43?V4_05iI5=G_2-RgQ*pY@eg(Z02aB#K&*%re_ykXI!^+k?I~k^O96sx9SIk z?Ed*)m;{S?mA9Rhc8arCvRxfHyC3F>ZX-0I^e&nA#m~2SW{1Sozwz%o#2!+3E!@0W zsYu$Jw&TNyHOBNeHXM)Yj37*6xf}T3myMoGhO8r_tA6}Y1Q4q;%F`n@g47Oo=ugqd zB=-Xdatb!SuOS_Jj&iLwe?3_RT+^=~$|*>G-3xE_?AZIw_?>C&hXo;L5erw=1^m^~ zUgdRt+j&sPKY*=`h29DoQHZ$GVpO2%^}hN#TItnJkiVR|B9>5Jdd8^i3g>lI+rz-m zMj;6x2lQ)GJ_DK^N2OF^#K501Qenycpbf(JNVVhXq~PG*N#!m_R^dMa=aXX>VH`{egw0Z!#!=X;IG>gNOyA(d8epMSX?gvU0-0grUOsSgHRzk&NEZwX~NYtB5_dd2Yc$(H=%gDA(Zj)M zn-y|*ouP#RJK|VDM?rs1A1)8Ely~HQhgXE`cY5DE$`>sX#Vo^p>GkO`g>SJ!3%ftk z`|UF&ZR>l>?{V#7%0!nu475M*vDsUdrrwmmnJ3T#Di3L|!M7Kux9aP1iiGLDRc&|v zIhz6(hr+@)fw$=N>g!KEAkOC+cJquNfFZm%8uq~2bz4L)XLH8*K3!MlS(FMS{+}on z9rb^swf;9g3k8*!h>2McjYL3E0YqxUBIKd;$-wY`derCfTk(O0naC=WiEoV{8$+iEz3`7J!ei|JmSaaGn$ zoc9JehL%hu{sWYq1;^L4+ZLRdZ3Ui~nG4k~{sZ**?)XNnQusVlnEV#os>qdgGP2tj z?v}&gZ#>YwEkw*XA4r-nc!vCx4lXEzM3O{Pm^3C%m3?{8p1gB(rc}L?^|ww;C_4a! z-;s6tvw}S~OU>%Fi976+hMbo`sstiG%;{^(JV%|5 z_;>#SG*!ai+8z%-$Y7TM2dA1iYo^qlrj|H=4msaE4WU#6BL$_U;+I%fqs|^o;<&lF z$#ZEK2FXNxdX?i@SYVT#u7|T-pSvkD%-+i`!naDc;bhSrwpnFvpdX)3H|r^HjArQf<7{dTEhDe*mh(FXY!g`I&Uh4RIiMbevq%Vp(fD$T~<5 ziCU75mwxY|rg`8S{MWCSVYJWx7jJ<2Sp!m|q+sa7C6*Xr=E6t#+a&zbe_yH#T#M z_prZ?$I?9SBfc~_-kELYO^3-rRx<@bHo01bOT8s-3H6hZ7!WT8%0jX%wFqD)2Oz7>E!Au z^8?KTZMt~+Sta9|pxrDC@{9^kO$(LL5^Pf+wju}66Pb*T^$3BysvO~oVH2#6qenI) zCf0Dlj4cm1y84cSPu~Cd1a$Q)4mA&1$e zAA;Wf`HC4AmoOokHO0op_RU5^Nibe32mC^wkmX6b!Tm$bx{ZvG0okjiAAg4Q-wcs-k<6R#OvFFw+B(Jh z#rID)=JJz#3%PjdlZdvLC<;3*Z3&PH)JSDRbp0l4Z1yb}ZYkBDdO=x1CXxEdjN!d? ziIkmB%p;+Vlg`odA2Lr7V+yGPy}=0XGK7jFvvmWj=Y$pqYUAihmsizaii*lnvO#@S z^4M`zb1D5Z&5<1}jFf`)(dHwa!#n;1M?>m>W96hN#se0Q9t?T?d|vFPv*3bJp7d#T zbJ((%-7mUt_7TH6`|iAvLI-Ps2ckO4XIem|P&=t)=GpE-o&eV)+w^Yy=_5z8cRd<> zf6Rz}fBTZdxJ^vKMd?V8SRTB7`o}e2!&_D!4IF>?>z7ocwyT$vS7)KIyh_td%3P9b z1BDt`cJgLm^M|@KUqMQqxhyE5KvR{T!_$)vJmOW)X_1ee;UE+`A)Y7Y+N+WwczQnF z;Ofh7nwgk(F#`0C@Y>RRj`gtNo7=yf0W5n3khh%zQbh|n{CTFE6zleuh6cLC^JFIG(bRsqQK2U} zS^cU3mf{J>gd(Jh{DQFegW`FPq`#cBbQAimpT?e^LA43Zh|QQpRoYF9E^oD1r!QEB z-mB(QK$G8S#7xtx>UVYm4z=N*eLM$rZ-;yiau?N(Djgon-5#y6j zT)r{2Vaeh6Ib=C#INRB?Kye-tZPIoRzZ}{~S#8U45#hk7bOUth0jzruzo;58j>q@<_ zlmD-e46%Sz9xDd=VC7V(NtmW2GKfT!)c`cO-)uwT%rxobn*zau9kY?ggqG$Lzreq> z!_rBgL2DXhN&A!xjMjpB39>r{CFU7y47<4Q?xtUw zzElgPFUUdFNGw}c6|)1fjH!w;&qhr6H5sd;C)RA1f77wSqOQX1jx^q>c=K%d)Kx11 zyRdl`v4v#cQlfQh_i>12v!8xWbs^mi$Q)J4o*H2y=g{6v=x;LKwf9DjYJnBC{ z?KA6tX8F!Z)a(k!07`sMKgx=4<{R+O<>6GZem_R zmJa#+)j^c39l z$iIzSW>4a#;*9#NE<$(+e(QnF7@t9vOCvV(z$r|N@efeR?#riS+r=S-lF*-7U?@|9 zZ8wlEtv@GPH+|lpU~5zqGfh6Azy5NOLUJIQ%emC;<%Lv{2zz6-QU_zsC+p<&V~0a8 z+%#{h1V(3CROV4*S})-XTWOe=KnjAU5FkcdmyHhYm_Xcjy&(zFu4E4-52MPiJDb!h z02n3{eHic#c%>~!7iu64f8{Kt9axN7t3{t>fGMehDYVQaWjCdk%XtDZ;1Z&!k?`_p zOmJf=n3}OdYFqp~U%_Vx-a#_h@?tx`=13+>Gnequ3Cz3pA<$!(%GC!Z&fO+U9-o== z65u;n$NU34ta$zH?^}LisUolKyH{V&eFV7)P9M=o>3iXpjOAXd_MWU|t6O3F{m#^x z9=ez9WId$jWjS|8i2ag_FVXz-`xQiMFDk+w#1QQ)!$cpgsIL;BD6V_o!O75V+>)hg z!4FeWk^05!P>dlrURM~3GatRZ>~UL6`EGer0W}KqGsP{w__u*Ke6Gz~Vd)T?EZTtV&EN8RZOUhTjxN;I_hzw~(-!J^nECOj*m;z@XBJ z#-G(&+Or~I2yOp(j*WemqPV}~angIGKLrcKqH&>oQQ-)Jy=S*%MTs}QHS#Kjpsjhc zLG|#hWob`W{f%z{>(~%~b4->H9@+Qx=W1_8H*1k@NV?MH(=^a|QS!z%MIU^QwwMAJ z*SGod*7&7~=9F$)ixf8LxvB6!fZ+U5X(DOGfcw8ieqA1agnAi06R~VUW=_Ouz-oEhj&i!JU zz4hQVrZd#1xyk)^K-||WdepbBQDTH?K1cmYElm+FdUn0IRde!$Zwho}pRGa7b3L$y zqKbb2MFfr0G;T1F%__k|jlWMmk2)^!7typdyA0!A_B716UAsGwLu%q94nqnZt4QWP zuHsURh`(#LtZ|vp=REWwsR|Mnj1)fKVoO#S0o=1te_eO~oD-F0m-M@(v6(Vh!OWIG z#a*5|xsZ0p+u~vQ+MoKBbh<|OBhlr`d>D7}qj52oeoiM4V18%7%b^c6KgTiO zFS#I4Uc%Q^Tf!yuA=Evm>$C7CB}YNI~CEhvMPP;Cl#&ETYyHXv8{*v~tIv~=P5@Mtg&H{gAU+HARmp-f7N458lJ}Qcm(!N@&+z?Tj z8ei8Abtnz&pEh{=4^T78phQzpz99WR_f11(%X*;p%$30p<8;e^0D)!CPn4L0D2U3x zaD>63J=b(qx7MYRC8sX9*^*{wO_lV^$EboGa1z%;8v+1C)1uxsu700d3z>89W>gnj zSL6AWiZq z1@Oo+*)+1MWg4STWj%SGvIKNt?u-k3}{KHE}h_;?i|!13W#d-fiV7=STJO_k0E}{5mA#a2D;~!;pG#-&X-73+Mm0X-ISWsD)^bY0!|yv ztgm`qQwyyDCJmMv*A~T zkfYakGQdSHnOS!z+7cAKic&vz7^_4@3x?|cX%HyJdsE0pk(s(u@Qf?Q|K$csGE${Q z$+Pp3zasrT>MM2K1#$Im-RtV0)mU3~(AJC@*SOyHBWSm0B)O%=wK7;AI9eXZ*(jY1 z19a#%W{??-7A-36mDZr-+qSHoO(!*d2$_m*zD;q)R2x*TDcy`@`He5n_>Ip2V)zfx ze`%? zN6ItM+PfeMR8`Gjs~M1z9Z~ZJgLPu>UqOfra;-o286fT+Ffw=u7dEq7i#tZPhpnKN zy0V{`M_%z~x8<|IE@B$JWi&>qnPnI&NmD)H^9^4oH#aQjpcWzpx`)a)M#*dXu6w6A zpoN{yk(_$_1KS?LknxDp;|$_83)q9Qn@RfKHb`fNFXa*fv<(K)!mdS1|8Pz0YL|pU z7+^S&Un2O**Q1VNlM7aya>POPM!G6h&b{_1-l~_tIQ;&ws5G$hytk8y<;%J%bVc>r z7vBehOjBFzHjF-jH>PG*bg7c_3dC}NwM+1(1xTH+qa(y;sf zjeI`r^lTX2yFhr+`6t07c>U7HTyIo+kY9yeAGcN68y{H$(a}6AHovH9X=Y7-rT-=r zN16bq_~(S0<#~Po^^Yu0jyZRDqDKaQ(4o$q}YNAvC$z4UOq zTPgSC-ay@c(bjK2V}@b3Q0YGa_c(?%7tyj}7Yl8C#DRWkmW{MNONq9olhKbsAIq$h z0u(@r(s6pJ)&U#=9x<#dDN!{Es>R-hut5mPNFm9vb@wvMt0nCka~ z(ueihpsMX*MITEJ8b$>r)PD&t3BMCpLp%8gn608Egqj#pnua$mAd;H<9_=2W+up~j z7B$6n#+A9Or4}rIN24sHIYjGxsO6)ajJ})#WaBE-zgxw*;>d8VI`DNMwbERV(fCR` ztGBr?A}AeHfqIM7Mp+se5HmPl{l-}sEQ(ATYp3U!d@Pip@xGh?ko!&|d`de!jqy3O z8cK5we2wq&QP6zL7BJ_&vh0eM#OZHGFIkzPOymM~ViJR%h#ikA=(WD$gM z0^Ak`57Vk|F9xBgU~FeNS+ZG**ixupqia-v7*?m1-f*E2XL_M~+e9(gl0Bv!q7qCP zKCmb(L)64x5I)*Qx(xU}sJ-a2;1wipEHD$4#I5@WfST4j{n+c-42!Xxm!17qmuZ4X zRgT7asgKUWz&fR#&Bb7paeV6CdW&*-qKRNrK*B${)?eUyd!#=t&I9=tk#&yGI=3Eh zqybw92{bro4Jr`W;#Si&*$a0>xI4)^(HCG#V;uFp-wQShZd)Aq2k4Gs)5GR->Z#58 zz1C)Zja%!-`)%OcWh29aK+(_9dgriz0M`lC?~t<$tTCZv3S`^1SEPp7>vTM?3|_@? zoI0@Zsc@^|yVl^de*j=e4#W#y7feoz^98liGD{Dv&Ww9&d7kDlT@7(EF|l%>na>7M z((%4~)U`gUp6*b))xc5y;ZAAHz)YLE6`aZXYrw)m$I17vZBP^Vk)lQ{TEvx)n7E3_ z+}Uu^E)skDt^MoG4-HnM)Ch~jLF0#N2k)Iy#HZ-sS(^>X8TTzSw_J8-dS_VP8 z;8F%Na_}}?&t!X=y8TkZuUDs}S)PcXGA=pLJ&bGUO^IBGi`=`gZrTqkuRzhfQ4sLx z;~bc8Ur5r|GVGvgH_=O}IvK`|c;v9{xxiXK2!u{MKqcEYIpr88F$}wY02*-7sqfxx6_`c zM5)2VLbOmk=EO@O{eU4ura+hjR>ijdRdkwiRFxsG66*ajD1F>S*CfN_#sXcG#%DN> z3+-=annn2*rlH9}Cnt`@t|c#+bj4jOi`p~Fv)tMn_&lJ9S&Yoe#f&UPg}fqwS#=u+ zfR#A>mV|yMHQs7%4POi>0yrAfUo7HV-(9y8KRPfAMX?(EZt5~Kte!s2n~toXGuWPX z=wiWDj(A1cW?I|MeQb`QGQaNV@QV{iTyjc(Dqst>kO*zexXiGI5@acA0^hnexE zn_txZ7nOHWGvn%V`G)&0keL>L6cC@XXb8y2*xZW!At7;Cwd8LXX_Qj2;Pvy7rgBi) zKw*_rvmETC6?}2k=-p0xZA+{D_6+qU^BcXXt9)GNN;qAK@f)UVfrt5h_=H5 z*DZ&x0cl{3mXE;_fr&;2$coYcCk%Dp%EbpvqwXEx_TixW1OB!oQa>ANK*_;L#_6jH z(SU$0&(|%%a~f@I{0_b7}tIa0+P$__$T_cx-6s}Sne8?D|# zZM#R8c%rNWW$QYQ`(P8nRA&@QLGfqJw@D6DVf%G8r1TkP>U9=3($J14N*!d0${>%Y z3=C}9ZhTkInNG8*0J+vZ^sX9-?Q4TS%2kJzHaCWQw;Dr?%C*ig?|9|r23Num(?`Y7 z_M%Tw@cdeZ=sDk2<{kw%AFDVaDW{5ApgBafxn5{it~!eU@Wm3;HhxYkITks*L7R_& zN1uGe1wjNPw!NA~{WIuHR)z9wO(E}bO043P%K7whBUfIjALjp|1#0bM7#i@`8o9i9 zE%=0NahYwwFk^sFT9V_?#FaL1Mz@qra)Hv1kBjX+iy=Tgr0$%XOVX5)11*b^yWT<0 zowdGF(v&)ofv0P~h|Oe@n@JqVzTe7H-Dv_}FA0ql10nGZZQ%)Z`xL{?3@M%^aCkGA z6_IFMvdvz*?qbgf2H-jb!l$%iM;{!&ThwMicE}dW;IW+%_yxaCG32Id-v_5`3?OI_ zf$+i#Lxk4sjT~%ZaCYMzP66*`Xm0H-7;Lbm-dP7mLeESfVU0qa4l5{KdP)WY5zEDg zHO8!#H&SV*SR2tw1n)}l<4U_R=5GvUWHPJ`3+_CRU|ut=>wpmLIpakGt!AzWGcm*( z{j5!_TJ<4S;YzK9vIz(=BcR1FOD_Wt+3iJ{m5)S)$E|=%DqmR7gssduXF@3pGNww0Q5?ZrvCq zCJT~C%woMeBd~YD4x7dynSmTKl73O>m}%xDGi5wEa3c^_f3@xW9WyVIDHtp@GUZ0; zfWuXvf{;xKjN2>TDued3;rjx&4Xc$$p0}sQYlizPyfUhOU~jev+~?Z`baH{b%N>4kttq)K zErOmcBBa#6W2;V;QaqtB#6hWX=Asc&X<)~I$*dv6^ADnJJoqPbAbJTRAGV02*c-9wV?w{!%ODsvz_iE$hKnY-Rmfp{NGtz81~9ek$KT z?4pLufNn6b4Qyu2jBaC?s6s80pFQ8662;uq=*047uRW^PBjN>S?1KdB)0Z#V$I>fx zs4tn=OAH&EzcO+D<|&RWUx0_~ef&bLUL4y<=)8~GM{;+FdvEgIzxv8BB*u@KX3ofa z#YLLs%XcJ55%bV{lI@Qt%r!|e0O+98-!^4cVF7HIGX~l)M3o%mQtD0&&&*k(VeeN5 z*5$k}6{;x)RVX4@1m0=S@+FF~#_s0%ao^8d6;qpaobGGr%`kL<$0r*8z7fj4E=s!M_F=?_w0| zqt$ig)6Gy~^e|lzU|UnDufZ13WW^H>%ZIO!9HxsXeU4oxP?85LU09}|&wtEg<^Lrl zK1>%))FBBbytc$|wd4gh8(2X*BXnT>M1hr`jq`<9bmg?2O+J6bH?-%6>_oo;y{56y+~!Sj}&~kJNd&i1MzB6DPQm*D1(2s4^TGfJYmT8@CQB zkZtRf^fMvQqTE@^3ZgJ(at!^PZ5K$7d-h|6^c)prVxI{^iPBQf&`IdCK+oyaE|eUH z*Y^mvGeu#jAibdFkT=Qvrgi31n~yAKZEFE)Bp z>Z^>%N>YGA*%Y%4r}R8~N5EQV{k|zrCEg;Qvy-&0NA_kDZ@{rQw$IYkwSjKC5~482nObEw7siGFOl?P#k&k*-*weaa;_=ISQQ^7o+L@L=c;gryK>*6LObgU z_60jPXzJ67)#%cG&oXaSV;zKK-N3kR_QVLdJzX(WX~!O1{%-moKnG!BP#Up>#-6Ua z@LHU>g|2XTeM5tewz-DCIrDEnnY*bvekq+;r4iX^<9@OF;&TwBe7EkId!Tp$cD__Y zm*VNX^%F#(c;bYHIa^1n`vbPm@F`A@gP=izL4-kuxhu3e9s>YN%mKNKmEwqiMGacvGNn)*N1g4r zPM5fft}di$*~eT&MG=3S`!7`Cky7XqM=hwz$@gG!)3P#;5&gbztdmDci+xhBY(3$? zMT@vcBB#>%2v%}uPB(;Ja>=C&;Q+}(>TeTeoiot=FhtkJl^D@jT!r}92{SPuCl>15 zVu}A5mm!T#+vL{c#5Cg^;ojg1r0<{IEtm;}`{#joyC?k~3`}g{tqMo6RgyhM^m!u9Cb5O-`y9}pN+JCwXPU;A>wtoNmo(ljwQ-n zHX#~M;#^<1H9m55AfSII#+9@RzAps?`x&eP@o&=&ie{@$1^PpdP=q9g z6GIC0Z%|R;hk<3MBQ+u56UZBG zAR3dOuX8*?rGQg-Z!z>e+amsRyzdqK^~u3IqSPRLsZ>ZYdV5MU&-v z$PMKyf{T>GO0&FLl-TsZCqJ1rQxBj9QhgcWR;4`6ErXo_urLC3Kb>z_U!*gl;~cdU z(-tCQ_8!!r4v@x#L8Zxc0!js$;;YW8^w%+F5YH?OT)oG6{q*}zP7$yIt)rwDY@3E( zsQ6>o$Rx1LGnaNtjVEZ(g94Wj_k-alRe3JXNPV!{wpjF5ZzOd9-?nkXS{FArU5m_& zYjH81TW$~;Sa2;JqCXOxN1NkPi#qN47NVEMH2}laD6?=VtS0gnkX%Zp_Cbj`#PR7elyJl+6aKDVoVxudq7@>-di&{Y8xWYU zgbql~Y$RpEzTWu9`|6Frm{fGeqSl{uWu3iF&;UVdKsPaweIF7`X2;82{T7Hbh$HFE zmqrk=b~;@FZ@rN#vG{yc4Cf%duxvM+GANFL7*)6oimWluO!8DQbAI2|+sE;;ltu_U zP@_Y{Cw}9g?U(!Cnzd3MAb2X8x45!BYxH)VLO!m9VTy|Tt1blOhH5wB(81PwqVhVN zSw|J>U`h#OE;2j<>bi>Y5!~$jYckNI@ECMA(m1!AmN{MqoT4Z=j$7EQoRebfeq5E- zxl!ZZ9p_*fh-{P7S|+#ka8Xk|zV7zB)h9jk`jg7tOcH{>0bnE_g<0-v6{1}AEccvZ z|FlqxSExI895~Qqmgin+*1D>OWfy?`Z&FuNyHbFuJjqovZ+1#!=9paCirFvVOsj(A zlza@2-nPkJvfBJ2$@@me3Y6Brjf}Ka4lYLpv0+>{VFd4Eeme+@5rWB z#3^4?QKAu-I=Acklg9Y-vOXRV`LW%Tn__hP;Qj`(3n!Z5Hg!8?XHI2Y3pTePr0X%kanFKbt>)a)(Ss{&WPz zz8@E7Jm?N+W1L~ACcYVuP6HHe@nsi`So>`3Eai<1p?}8b6c|;VRdSqT8+;?xk(#L|7dQH@(FDafDK{=MV`ooxy37wVYH%LbYLQMF}V6* zA#wsh_$JiMjoPVy(5`vC=mcUa+Ezv+_}l6!_B3h*;Or){+F)v0~ zvZO#T8Sv#1Op}nr*$x%6ynU#YXF#@za^{iCtNc8`wBA!V%GKLF%{mB|P<;XJDx*}+ zV1zgu9CNAG!_pnJ!tHnb-;~XHWBcrSU`vn2-gMUJ773C1mSjZoREN#DqtfV-dYkeo zy+a|)+~ZzE)XZI2`)GJ~g9fRreNev*JQyjJcMPcO)QE4${B=z*bO8S zct5m`g{duQuAgG!_QE}Nq1VfUKpO4z<7=5~v)thF7`AnJ@Ozj??{M0c^G{3nd7$34T8qIbZTKVq1QVNB?Ne-^rMk!M{i&YQ-8JD5PIWe zjMaqEGfefg9rLGG`O96d*Fn-s*pP^=t@8t$l!Y{Qwn`Hrt~wt{>?Boa3mNMf&CSS5 z&Vk}#&;4!bk~R8dV18wavkLm^psG3fFR2^!ZB^K+sv<~NJ-}$x}E#7NzM$l}^DoY)EEoo2Mjl5a!kC&cARJ#HOo*-blx1w74ltDlh zkdVTIRrA}4f^7V)Or2(pYsJuB#yR3(KQOY%UCHt7(?UXVyMqrR)CL2XJn2}FI#Wt;AElfb{68aR&<~`9^G*` zJ=odEOmJy~W%~9CL_-1hsEq#s0n`oSm%cU5l(<(8#gO@srJq=Yu>#V(<{jG!@}WOF z$PIagV^I1lLiB|o?i@%hI3@Mt3N}s?@NKpCq+O&`veX>mIEJJ`BVDaDni2BTj(p=B z+><`}8fzl}qTj`UmI5Agpw>WeS3tfJU~zYBORC$8TQ*{ILBJ5i(>9>5n^e0rG~Mxo z%H~&a8}4lePL`tYLj4=$>$Zu@I0-qflPPi?SVjnDTwKq+W>ezj+lS4-*u*H~ zefze}seSM>k9-7$1X04_#2AY8rN7@)H$F|e#{S_{HLhN?@o!@v$6Z{zrS099$%uOj zetg0z0Y4BG36xl7$PlOdDb+!0DR0e=Y++^IwCP-S*s4yjb4BXLv|x1B@Dv4n?BA&F$}^P2b9dd`v0E;gREt7yL6F^>CqBK?imDG z_OPp`FZ23^{sYAI&@9wDM@h*TpBlm{DlL0m!x+J0FLh1cWsqMf2el4!ghps`2A9!c zZiJ3HKd=^o@mLo%R|kI$fXPF-2;Pr*LT#3Tt9=m6?v!tRbqtT)gOqhP#L3DZq3stc z{w0diTTU=<;(f9)Rnm}|tCHsRb;hkKQX}rIaLJQ^El7|I-5;)NkJD5<^0GsY>P!C3 zfnSk_0-;syk8(I~f~??TWAQLl9H@GDf1cjx^sxAg+#lRlTvQAF%c3OjTg&aX5bsFHejqu54=urSLQMDB z4^bT&mQ519j#!IFt21j=z0cE*CcJxbY_^y=Poiekw0fgtM8T)ggdczg6RY%d1{HPr z+jQ@n2#UT<$WEUAbuXpjIhVzZ7bX5}mgjQN#wl76za?er+WfJdzAMh)`+UfP9-T1;pQ4XSM*inUaC7ltnmDu~fbiFJkWQ&Jow2KBY&92n)Oe0p7Q(ub7{?M}N&W zIh`NUzOS`f3-Mkw8VrKN3dra>@1YOVp1|K%CuP7u_&t34?*=vD2l-_6j^2*2&K<0{ zj_d2R+x(;tzxvF%AEx5IJ2DmDBLcHkLf%<>sIch(xhU6-6aGx89*q*gpRo^}_E~1B!hY)61|F}=WPg%sDS`T>Om6w0cmVJ@W9KX`0@Co^7 zTE1V^xu193Gz8vm}LMa^7T+I3*n8P7mQtmOjoX(QT>^lU?Z|K8lrNzD?#f z5b>0whFGSDD98)*Y&*-n`SX7?orhD?S-6H>rG+Ad(0f7>dhcD5&0PC$R0R|ytZ_v|mhR=wotr-)^P4&6eBb*%kKvd43(Z6?>uYW| zDg1YD_x(=bX0AL-P)N!L$H^~qua8>aOF9vJ?>a2XthaIWNnd=v(f9&zWcVXvU}0Z7 zC-bNMhRoiz&r(05_twXgViKUz@q@>&6R#xjoh^3RS8RKnI0;ScT$Iw99{#yPT{(lE zP97OtW^bkbS5fePzssuE|Fyv`qql~(UL29h_-eA);N0fkPsJPmFDEbn|IBCC6w4QW zCA1IrOoiSrP?ZG$Qy6-H!<@Ox0^-V<0vq|v%XHBu?6d8kWm5Dvf~jXLJec#!%*%$C zxPRm(W>9o2{PaRcW-Rw8z~gOtB2$e46e#^`Q-qDxkd8xb^InSDXM+^cT4?xNGDJ6C ze3)-B9H=F}=aVcw$ID2S1^%2n;lFlPH>C5YzSC{;PrH`)BX9dHyN z{uA-*>6a>Pq(N;p3tes&WoEL53B@7Zo@ZTqR)v4h7I32RX~fPjALs;m!z5bri|#Jt ztLs~_5#Da{C(7&MD&@DCz8TPJ9Mtfp9U#bUkE;P=CS5t=mp4BhQq0?lM2-)=20EZY z%A=t*qHL{+$lWg{)GGa#x<|!3BEYA79J%+Lc_Fo0dO}P`zc>T2O;ra#2NQ~7)kYHq zl6EA98$CL(k~lgOdYAv_3L|xlF*PKAdGaq*Q0Etd4`Dxk%G!6>KGMy z*XHPdLl*(#4$RemW98AtiJzKs;a{zJY$bY-E$XC0Z@`V0{+dE=ufYem zw$gevyaV+el|Q)zUO*-y z_*HSPL@q&13;BZff2Z#pGpJNEc0T?=bvo5}omVaOZHZ{sk;~3l`*@ioRl%SaN6xW@Fo4=iGQdb@i)*ITDP^`&(CK~6_gzV zy+}&7-3@{_zMP2gWVdT$V>-f=P5fj0MMN3%nRhlnQB^uXqW$-oBr@|SXvhC0`R-<% zfdX*wm1L%PX)4p1aHcEgse$p^qg?ARBL;hNvgd$?KUdzE78g3|n=V2fd1(U8=sxhR ztGkj%T!z6U8(k^l(Exdrbk3ymtf=u(0zUGAG#%C4I5Cqi*@5`e zx@Dzc&m&UF4PuAI_cmCghqpugky0~9XoSs9SS(~}DtO^G59~>HBDRxj|Hc>ZdUvDe znACE!23=W8)}9*yv?Nv^<4S`AcOA&_e#4m(tMRL&L)kx9R3#kq{d`0?o{CFe08Hj$$GZHRHwC`-7Vi`Vs3G%x8`?=Dt4JO3JUFl){I~%B zZM*)UYPI^+U$wV6OX6UFMKkD6sc9-S0%}|_a-;oNfNF*qRu)IBr=7)% zSm`1z*k=qyoYJZ<585p5f%+%<%$yW;-=HsqUf!+QEX3Fo2l@1mstH@ToAy)Vptp!b zoBAiapG^QMHU52cDY9svF24zuD0gSe!2*w0?g7_#+O79Z81At3*NLh32khq)xuCYBiwzC#L+)jzzRg0&`}(< z*l&Wgx)tAip2`|jvNtEdlJyBoOA_5&+)-4HCbq+^tEd+JcZv(=l?dwJ#;^#A(K$m&M z9KJhrV>xJw0D&t4h;+O)+wH8)QA<*dw2Kvd`fNFac~w@f14?lc`v_aAl|zmrLMyb6 zfL0ZDZ|XcBW>sd$A1XZRdkQi1ch8)W7yKK@@Hu-rN`D=STaKJ-cGlSBQ;%1bWuk4p zEzSq(-_2*$-TM7i@lNgM;!Ggz92dE1PYS%Hi;xN*>ZM{IY5B3F9|Q5dcUbJg?Dq5V z3_qrYj1siEj|A%lE!Zh^Gkb-PUf%93^3v?hctFVdN({@mHosyNu{o!ra)?G6_A@%&wGh%L{GX3|;513EKQuUCXCC>O_jNoi5>msY&r~koX8>Esuk+Yv_5n5Z;Lk4so zsb!)yp6dZ3>SuShOE0dE;#9*&EAwY504$igPhg>RnU z&sVvi>|H@)RGZse!v|MdtZPCvkB<3b#=zqGDcFdvaL4k2v0SlKu4h3$(yljKKYdXC zJpx2L;SWt^%9Ch`Dk$x2! zDtpqBJD=`H8Qugsp`)t8Q4=d7C!bMId|c4cM?#;Ts*k)@{8|QemRZdpBc{3D*u3yl ztUEH(2FDlshHiX_|9s#p5C3yzAeC_DA)I;V&4PR>r?a1HM8&HB6fHI0i9Oz_%s?a~ z;$yy!at5f$Vce%)rjR_I7;5#D{)R8-LYtKU-`I*c>1M!hz;oZb(ElVP?TAA>P?w!w8iMX&FJ#^P#a4-iKeQ0R!iz}qTi}-tY8XA|A`2t{ zd>Rp--EFGRod8Smp+$uvp;JuA1L1E+LcMh@jl1x&a=E-T{0g%aZ|BPG4i8!7* z+|Wi{V@lL}fVQ(db)E)!wW;ql0)i6}$dxpm$Y-Zz69V~PDTZF0WA&BQ|snmB4;QZg61K!>fXNI1> z*vn|`I}h6KCf!dVS?YoPII|hP^2Q_t=4jdtybofAb+$0e7RVv1@`OYEYX{S9M%Ak3A9TTbfX#1L z-}*+$m0f1IB_Kba=q1sAq2%WS&+xSTiGLP)VZr!Li*j%il+3lXq;1Xn=L%Dd#GOEk zhRO$R!x99MV+m&TpiBoR3H*FgR$+1`eO%s0Hodh4y8wP0vN1sXC&}ls0bDZIr^jT9 z(;uU~JLSLr;W@-Yw@J*U57(7D`;XS_Lsj1}vGTMOMh?Ru2b@kZwL-ARGLmC!cffCB z+#cE2r!algRAX+R&Y9h7HSdVo;lGBQAYOAs)8%?+gkjSeA4o^}>h*vI~ zPXM3yG)ulbE-b5q&x+Nfp+1JNP^xhUln-C7#Hn*w{*Ndp<*opCk3_(-gsb=dNVEad z&uhwt6p6)bO`ZhUc%~9T8Xd3c@5R@gXVh_`A>Nmeiy4{U2<=?ciiNC!WDWJ% zncPxj>o!>=M?Y~IR-*XP5ib@lHZG46Q z5|O7ImRtuKn$)YJR4Q4C)RrnrA_h-}k-j3<&$;`thiON=K4&M1X`8VrviYpOA~+DI zSUz(?n5rZvk3G*;)?qwnOT6NrD-2xH{txlj!{n~FPo>6~HHaJixzde^^DF~>Hl@%O z+(07-@P|F=uKXigx0*odIDm5vs>A8$9B;5~AJYpn)>?k;ZhWunoq&BUOv>carvB(~w6t?NcMZ}$RC2?XoiEVznE}EZorDO(H*H~R|D(o=i!Y+Ua-iy# z8E!T8G(~DX#*FU68fUngl_;y(_-xS{ZU$}4pgb~4RaWhuo_o~bi6WhFco*kf#|3eM zt85FccOTp^Xh*)ch;pvz#i+{I3H@Be1_#tB-7X>th0(3SZxmm!{QOFP{PWIdrc<%s zsOEHuK?+u-6|vGv?mQPt}wk zW;UAek*WxnXPc0lchaLTMd{UmnX*WJ%+|v^G_;Q+w=>xlpi29KLI(Lq;RmKyj4Tsy z7WotNVNsVT9trN0FhP0WLXfyIxNDWuL~D52XvUT6gZ&I~E#MlZ#_0jJOjTDpjzLnQ zPyW#zbRIrbD4ZC`z1)n@;dCyV!OmAGsV`Kq$Z?GiKf#J5Z|=j*dbvMvaeiI;L|O5Y z=987@3Z4J_1u1Md;As}(HzW=`u$KEm{}=e)@`e4$Uyw!WT-%wr$$GBvj}gq9*Yi9I zjJv$Fp`BqxYCqdiHW$Vv6nE1z^JS7BbKXoCYSo-ene;iX<}R?=7Hb|_MecZ61+i^U zkjsMCF8_Bir*N0IpW)q-Tc+{*%MAUH$vq1dHTodGh-nypwPMU*ys1~O8sqgrt-*x@PLCJPP z#Pru*WDM^Bx$dFTpsisS3HBne96kKt@m2}4RH4S{`-p@W+w;l0}h)<7gEuesyGn$`czfGI6c|lA=^%1LlA{^6`XAi^zn*cOHe5*^?v+1|GC-k}}EgOg8wcJxTV*g8xxQ9u*{Bt!Qbcwxr-Ft<4a zV~=c0FbTU9rZ=B<40qzEry?D{Y8HGfSf`gYgiU+Tr zXNz>nTQT#8J^N5MG^q)FmOgGJr`OLEGvBvmw|mai&Uv{Vd8W`oF|@Zwj9v$X<~3=C z@OW z+}``cm2(ed!Mz2^-O*dY5$C`=tj@t= zM7f#`B8gS#L~u@*V3EEI=Y7o@fT7iM&e|=;>N5(gIu6DLR*mALq=LmVL)ZnLa)F;J zhWAxfo8%p!6eib8m*4%lLS`!cwjZfP3x}>MEe9vFupEIhNpq_elv_vEbV~&vVP6R{ zI#~pni@LySorh6ivp9sTBx$9k&#Xq>Yw~P(^k-T%58Ol&bw*nq_RVNW>c6x z4!imRwL6<8CuzoJ#KSXYKt`9$aUEPr->BxNfwzt3WP_eV)diH0%Y`mxt>6XCXgrnh z=Za5s8m>hUDf;aCr_AErP%RKr%I;qy^*0-0Ew_kt0ZL6ckmZh@X-xSF^S5VHO3RC7 z7fSDPwY53!H3VD-;0hD106X?G7A}-s^ZQk^idm*y^@~NS&34b{n3VF%Xf973Y_@wG zQcE>t7Q}gM_H#>RE3)kM+C}HOY1ZSlF^O;Jf^yKp#rd@Fu_h*4d5_j(fx2F&(kYZI zL@IsvZ2J7a8Yj|x^7C%g7Uaf>2(J*^_dUz7m9%+~lpDZ&X_4_9H)(c+Xq0k-;Zx48 z-@ZiGcm#x>bKANV6=daJOuf|0z$Bqah*Kf0&+3igOcf#_)Q)G|=HeCj>XGt65OyJt zmE%hu{ktLXD95pYm<%>eiFt{9p4Yjz7`#lggt zqDk$3=LJp+^O~h-n=$sEb)Np?*JhW52rN|JqjQ zHn4LqItP=S7;W-*m&rQyrZ7L3+C+W8(oF5rQjHwtM43W z<<=6&qtC|X_Bodd+wIUMVQI0k_YE7JkatWos|(U3roH9U2ENazL)DU-^y|8gGUGM& z-PANAXyY1z1|2d>j!a3c(Pf2?H$+q11Ujjf zurAs;7fETD@7qo9q1R6*_JgX;PnI>7I%ex=GzawOy^y6Mzgk*QW`$DMSAJeVOO(y; z8KnqoUz2bFPJ5yo`%|IV#X@`{n}8;WQs0?!HP8CX64B8f;^jBS{8)h!qNOq?MNKp7 z=iN%ebJ)Pw%97{fH^P$WswL$1G?H#CTjn2#$n8RY%cw9t)=aKxhg%@o+*xIG&-f!@tgSIdBMjNqgpUU_O-q8I8|7+izynl>1kox z9n=Ys?W>2F*i(;$_cfrl`e}Ppf_Q$72tA>k@yaCROZVjfdUXA!FVeK6nzl0NZ z<=xB_FZ^AtAZ~6zhIuZw4_cYpKAGFoDV`RytjOg!CfxXZFXKA;ilR9oeuXQn^w73D z%7g)Frc-LkBc>Ulk5ejSc8GqV{xE%SxezxJ!`(&?!_S@zjI6aj zu9?rap40GKK&r`a1u@<_7HZ}+o6qt9UuTfoD~5i4H^O;Lj=1rGA?z=tWeAfVppD7b zn*4*9P^0fG8on2uRwek;zmK_utZY~fxJB;zb-lyO=qb%?=2bP=Vi{f`ERlmNi%rA? zYA-)hWqzNodWTn4*7(mAlk?t6BB7#K9*+jE{ZN$2VJ9%sZ=yfUX5Y>4jndJIc6NIxBRb>M(xrLDOZW#y7EuU`iA*ufvr4+ zvs~$0lIFtaf)%QUPkh$|8pg0chqf@^znR`jqeFk~-3l>%W4)*PSZQKW6XE%skv?C# z0M#+b-AS}>fKJ7!vMGbU;8*OzmqrMdwy*v{xt%jP^XDoB{>mn=syRqly1Wl^He?!+ zsF|+2{09O*j|DYuR;l18J0uY74$F@*7B-dn{)& z-uvYq@L$CZ0`}2s8O}X2hHxasl#BDG-@jjS=?wb(=SnIMDx`MJjAnf`ZQ}998;*-o z!OQ#YJSW*;E>$-_dB~yKw8`#HlDFafTe5K%%~9zl&DK@5F7)MVvV$z8CnED}4A9Ei zbmJCuXKCvx4GjNpY^2=JEi2x@1kmPOZ|08hHI07AOJ5T;`5l z+8udeHBzo$*JFLv`@{OiJ#K@Ps-@&jlOOcbLCxv8z8Bb9!uOiID_+D=6{KK;JKu&5 zQ}IBFWdy&a3cmuvm5@NQau^H(f3Au({EO$H6!N!f$@b;?Cna{Y!9DHRDMwgIcD{#R zLAT0wq8ZJBIo!&<;>@r>_1u5?DCOPN9Nr^df67goS-k*a4;l8rVxIhnSXO~CBX^ud zy}T5Uzr4vDNFy`De_V^7C8h^q_LNKQTHtXqgehL3teOCf1t`b>CN95j{IvLjVaTyi zLUw)|b{~HT%UamV-l&LkQHJk>5u*<46i|v=zTabbuFG8p>2*<`uExj>1_{Gt&;K;JV+%*DKV#Qf*?{A@=DRA(-dkYA+QNBy{C+*&2;bLU^W&8F%Udr9@1@;bP(cfVnrZZ7& zw$M6JruK8f{;D(dX21hC33mK;k-|bP>m6V@oTT$rSxOxuof*4!H zRhvd5mf>Ars>Bmd=0B*$8j$sVDYxE6j`YEnYY^IsV}_VsK*=u^Hi^HV z#s8KHlWlymZ{II@sbW3!`#KnFhbj0jwvfyeHEENsdr3;t=N5PicPNvro!q4MBgtCc zsAajpUfFUWaB*UpvShP$*>i}fHqMsqQ2MvZPXsH)=g_f-IZEKlF+yyW|GDC6aci~f zwiI9b>;Cs-w}te}aET%#fiWe7cNki*T5^UXxkbyf4jZusU7xA6kGMn+aDLrEYL8!) zK4>9jugJ?kUiE0JdjWOJEmPBC_qp$$pqxGvSBL_N zu+X(aa|wE@UV9}g`U@;-$ivI!m?83hzom1^-tUJ@o+~k^fA_g8f||AqDeUO#C(p{z ze-o@9ZGo5XAl}Tryf8MayoHsbCgRy-HQ$* zM}>8eYJIF?594lR(8a(^-~72!4XWtMX1oTdK|XJQ+QOHV(E%oi5d8JL9|tmr?}vFz zG!ZrS5lr|F!Wv_w;xmHN+A=+QBev7!Qa2D~)DSHFLh<8Ft7^%iP68IM6E@?BULL4i zo&>EHq+m9>a-OpgacX+riXZz}d>6i}2sJ0t;h7x)Szo+AJ9rWV$PmNt*O#NcoA8qZ z8DP2$uB;|N9>eR~b-&5vV(+0ZC=ofcobwU2n~n#PH$%LBady}}O0^KurGM1EU7l?Z z#opM=jfJ7XzQtP5L&bRM`@?s%A;g6dhzWaL*K2DP#E1Q^O@Qt9 z&FglKWhsK3r+-bMTqbf39@m@vLJZOKtl? zjuSu2;jTL)m+bMywBG9A3rop$>Rr>QrC;!zJ6f={#n}!#co>o8*BW^90g<)FeKh-- z7*d5D70qdQ9UudjjA9{=B;fThj}VTT`hV57_X0|Y!yCkrvWksH?ALv0E#DIPkbdl0 zCp_h00uZ)fwwI}1bQP$V8FI>1nopAgO_04~OIbvp1-*Cz$pGRhrf&+#;uC+aWL8us zs6%({Q}5BV*kx8mAN^q->#{ zo3q)Xu&bPyDRyJEH3A@%U15xn4uTGL!`-U?gVnWhKvn8ATwgl@o$)&88Y%iXGjDjx zSrU>bsFgJbf?%eA?>1k^j;A|UhyMn`JYXG;u{`rV0#RYBTh2(<4_nl`F~{<@d;(uj zRrMLZezagp@+@h-*a#h1nY(KC2C(Jwqn)WMX$z$KZhovZnH11v;)~vnzcVmYu)@;SDBi&X!W1yKl_v8&+rvr1Dam%vc)TT3*kSMT@p@=4hwXS%Pp zBV~p1F3pSw@w}Vz9}jW?G=UTV+V-on|5f#=wWE{Rr&M*1BFTh9^zw*{MDM;d^UiaQ)is ztj)vU8HnJ@H2!nd%(~+L?)ClR=vI^nrGUckLfJfjoYoR5i4kZm!5qK?Kv0XZ&3l{oa&2rh1+r^O z8;Pt@hN^ZbFbf27?NTz3PChh1H!Zu2uZ?A%m|2cjs1M9)sS~CTU&yD;e&jcp3&$~R*vkuG3Yy2;$w+TraR4d-(3eED>Ic=}N zmgS_BnZmluYJ8BE0jV!!C0vXd5(ws33pL|} z|;*}UuTIU}dyBZ1_b zaevdHg(j4RFRN>FBRMxDlGu75m`+_Gnv>n9eL09GiALdp_@*H znaR~Rfu6AIi~P!}S!?ff&Ux&c%rBuf0LBw0Qx*G2_lY*?E&V9p%Ih~=DYtP-V7I4F zz15n8W;?yH-|i=gn7(NGnW*`ORR>;ZJ*T*n;!~LEgx6}XzJ_qE>wy$@O+cp#>MCRj zD@PoLp#z&*oZ3#TcGeMU$C_YiOWP4}lxcukcuQs1H$PG?Id>iH>R&faGqi1>X?;y&m zTqMG6o3XmJ$JJ~uAX;*OnE4AsH6)U?vOylmGgD@holsEM_4~}wsHdAs=%e|DT0&geR*I4t4BXCWg^?@?MiRR*A`@MhC|4bN1Xz0Dl`r=~^ zXBnU`THhwDL!sA*YpYx>eGhfpWJ<@%Zj{pC$Bmg_L>K+sY1|v%{)bNF!$qoTIBo&e zqb+zpcTiccl`E$kE1P|5_Twdxid+?u9u5XsVZ!)Nl^Rz3*{zImvL^J69!n*X3J4_3 zY+b>3>l<>qh+h!nZL9EGK;klt5g zll}HYS&UGJiE2G%QM@4w0ErLCEabJ*E-Mld-yA#kIHJ;UoV#_6S8?vP_(%}yg<#}lAT8KgQ*hv8Vim;M zF=tG9mK*SV=yE$$`AnZ_<517E>xm4^?FGadb}HnF87{I}dCwPmP6k*_`rzsT$0E`& z&S^9);!(3nsB;|)*dAiR-Ffv|w{;56JFr?Ub?XtZcS+4bz9_AjdEK|pwL7DGc+%Jl zX^47nmeu;Eha0{!e0HfRPli7$fIBFRF_L7w8{O31Em+)3c}#;60A_MxB@Zpa@fg_w z{0plHW`SRtro-AZ$yM3hw!=|^O@|yhXo0OMD4}M0{VD?AHhwXT`Zj+bATwE%;YY|smtYo&EXuCi5 zD_hDTVk;=m{yGaRjH%b(A)!olE)J^A4nX>+b48c`M|hoAJV9!+=l%d*#j88KSJ-!Q zR2Tn=@3*Y&!hru=x%$eP=(GB$g_H`D{yUj2%NsBqb_=e2oNN$)gt5s8lVI&s8|58E z|EEdxfR*`kkwGzQ2mMJwzkZW0IJf!CT1p;T?9-wp%ra}DK>+r8qLLT8p&cc;4r9Q8 z8OWn`h*s6~2JzIy0NR9mttswh2_=qvvoodLE}@2C=H^+EDqP1}cK>#%;>(VA03nNc zVC9g&j<+eF0d5hZr^aI33wnbW-@46oa{e@&9>HBLttQxPSuVXC{cHK}2TIG> z-pYuKJSK_?qM0&^&ulUY)t%mu|0I1Ko=CPeQY-p&fzo0c%lv$<_>!MbctAS&K4t;n zC7YsNuuzicd(|vd^>(?1xA~DKBU7oHaGNz*`=e63piQ=5T#BR7qVYIr||; zdRaI7+S07j)shfUX+c*3<(C^ROjtDWx=VX;vfr2ozAbYw(^cT|*_bK0qQ4GQ24QU7 zUhjvB@&J)wV0W0qp^}K4k{~puRC=Uin8VEetz|Zmi?}8wa(n4hGNS>7ddn)mwmQYl zVQBffMVJqLkwvJQpsTo9=G*oM=L`NBK(?Ht3{r78*c?oS2fu4mq#^Lnl`v zQ6)Guv+jozz0!IsCaR&uozP-}E4Lo=5FwYM?x3adY}lU~VOS{Oj5Bd6X#7Gx9%C&z z68^l-0-AI(VE6JH?L~Xuu`4M~9*3OMVbO#A*-z${rJEIx5DOwAy0#ZgP&jv`5v*dx z$B`Z^j1Lopg5j*Is~c9=qEjuD&_kuZ*WDQ{mTg{UY{9o%n}~*Dids;}Hn#vDp|&&- zStLOe+eoz?fw?pJcd%pD@!X4z#Rj^Tv_`$FHVxI?EoVDZnvS_O`Jo zoCdb(&17q}eqa!2<&HJE2~D$1dpDN0>GRBV-J#7?UpTy#TQHbcRo8`lpFHxJ_(X|4 zBe2ApL7YH=#U)Y69r`)H){UaeGh#Vmt#^IO!-MR!@mEV=sNO=;o}cQ6N}5zifs5P3 zOnQ3W2n^7kK9M1?RrfeKd$}D%wg{60%TRc{|CS%AXtD!xQS9gknxk>B%!@4DLJFs5 zoaIIJd2VT4Ja@qF$p;;VH+t^pvD=@D1@CjcuB%rS-@@A<6S0o?OrLZpvwb5Zq1WGsGOfPu zuLZw#)l7Sf8~v{FA_Jyrt$+fHqXkQ<**XbT6_}EasbewwJcSf9=sXDesOS_zI0Or1 z3s)lwUsu~L_xRlQ^B<>#%-JvOmHFF({zV20sgHSwu5iw27K}o+)5+1F$OtI%1q-mUDgvvosD}@1!F5P&|@Q_ zQ`2ihmtec1w8;hf2z|5B%hwnz2T(Iic9T=z!Co#xKwPre<#=FVtlHAg+C7xT*3c}; z`?;{?+_az#P5obUAVZr~l+?@5!8aRY%3+#9Jup5t@aIY8`I$bDkLv)fn|X_PslzH7 z7p)7aH5ySy-BULqBl@@HZB5u;5rP(UqG2DeP+dHaz%7h*Pe7MC_4g8kLbUS7HOizZ zplaRBytnFn;wZng-J~?@&_+ymHN{UWtoB14)HaGFxg&r3VA^9?5WF`e$V1CSy5d$da!S zZe7||0b9z_E_{9--d44fP?gy1Y6-L67@OPO^`MtqsI7y?sR;mc$&FXY<~_O0-l8`> zf^xY+QfYKiZH%sjr2kO7=Xe;vetD*!ZmO_p5^zfhbzzfV#DsdcX9Ry>{^truzM?tL z#Liz+AvB9M%i+)TH{@=-3_9VJQzI6g(W_f=XbQDXUeGyO?tEWr%5&lRB$A16nj4;2 z59*{x4r^4`ANolE)UeI*io6=R5aqu+*)jqZGJJIv=c8AA2$bgnHbi-ka6fV|9(pR9 z>1;wAiQ{p*cbT~Op?>M*>a3G}_mbf5y3Kb<>@y>I`c-4@-6~SIu@WnuX)SAcE+R+S zN}l^kVV-|lH2&9$)%fgY^LG0Bq*{VMSRG0!>>H|tbKYO>Y-v}3M0z9Hk|5~D2gEbKsL9$jW|@B^*|_M0opeXNdi_{%AU4< zH_7qztuZZ~+)4hlG_ZI1h;6OW@Q#s5Xml6T~=tl05(VtS& z;RyMgcS+DBcAv(WrH?sLE9v3_hN@9u|1~#I-g&J$3afIj(NEk4EhDSUNo=S?1;OLRzkXud`d^hxN|i#{J7B$ce+DOXVj9n%#}W7?IWFMEptzl5Z#B`;Vh6FQfAIZgtd@N zEg_=WknC?vmpAjY#s9k?Fnr_e316(TIcPztT%euu0w-Vi8GMa0)-nm{b<%7m)8I{h9g*JR*otS32W6_uc9xm}ym%s6; z=uz@W9*i@4Lr64jim-Y;mdmd#UHSTgEjaHMii>J@V&DKttepWxivk zwRHNf8n|Jzz>O_H(p$Kdx6GM)b~|xILvny*tZtdFZs%8_;!-m4OM|X`?mMI!}~n-ns{zjpM7(t=sO2Em$HSNd+O8ViIIrF(WerV*3{4$^DwT!S~m5kv%l*Y z1}2`=z^dQ+r1-*EFmJoW_7-w=B8Jk^D(N=>apgNOO^Mr=oS$P!r+OZc)Qgm zLIh#=7$zRnGlsP-(q5KjwyC-{49RINo=ORxDEfN8px1XD{AR`!PO#IUB1+%oM|#?p zH6fB!E_*mV>UYIa@7R`&HH7l^)8A~i9%wO<+l5T=hRo_W>-Q%83{_XcETmqVK!PX_ zqhZSSQ!c3R^JMohfsLZ!gU9Z7s>@Ej-pP=Ybv=a!6Hu4au8p#5nc>kELTbYHpu zVn*@i7atDXm3ar12RJRdOtlvN_hX~RWgKY{mY;BWjw88G9xuwGTbB>U9|GyD z9VVH~{{}j=TNOE47VvpYT(f>v{hNnQKMS#9Nj|5$lVEtqX9;;<`Q0Hkb42$HWDQX6 zfWh#1D|KY(-xHhrT>A*uKnQ7tGju370)B^XC=?ShAHi-i6YuP7TQstUXcCZ$#%}|0 z4uuR(#!fF((4C0eqP|(5ja^W{2Q$#&Xa6za5(==J{E~^cB#zVyW-M5r%aZg$q z*cGn{$~RSMm^y)}X|TbiN+5;#S2xr!8^IpP6COsjJ%e+hs{d-;eJ4eIkW$ShT0 zg?vh_Btr<7WAebav6?D@!?WpC@-Mv6IJ0IUDf`7Ov&c)U7W7chdeA)W_B!My;|PkR z+6&|&5|~L9nF(nD?qkI~SBEkritGf)_IG^*r&Y+#Li&g>SW5X2wXs?DAJdArPUW*oTvIV+#!6V=Bly|n}HNZ&8_wgZp$)~I)} zsU?N08)T05-^h)CQhYlow4-Xn;g&F4UMv`$K=+#8N)&2WYeC`Z_`G3nA#FG6%t`7a zS6?`FXx>wLXO(kT)xuEsH>HgBC589Ei4^AUyZrb>|83w3F9IKf={v^{{u0Jz3%p8( zHgGp`*JLOds>yzX$pz1Ow)};Y82GPqcwgB$kf%N-B|v_D>1mxUodz=x@7ADnoWPUn z!!FCRrBXeDEjSlM>dSSQ(EIGXaXaD0Q`by^1wO$lij*0mwt8D31h2X9vY#$39mKY1 zSiNx0N?(_m65*tbdT$@G5H;pfpu&F)Z8JBYgpVvE&)C_+iI0!@T1v4yy{gE>9%KqE z`-IQ^HaihMH&H>#v@~*k2yoEIF>Tp#7T9;s&h8$B`Uh@AuPHIqAa%}IEWa-cqHd?N zHojCY3)C|-UkF5dO(z_}9RRK5iJ7;xvxVyBP@{l<8SI|!Q}3DE{JHXw@AGTqDbH@n z2rPsGPUuw*ITvBn?AVmHY`FLp1(@;ed? zPq}nsovH&aGp@{U^9f$CXgmH-6@ibLdeSHDtoq_q9(d5TO~gvfOBEoH;awq4cQ3)@ z-V0gHEu~>IG@g_r)?5p2T5c%bV9=z(2x?T{ImoN^HwBM)b4%_zMHJ8!JP`mr z!P$F*Xdghs#e6X1TAF)`v?_?u{8%1|2^F>9kbipvlN=G~dI)Xo;am{G_{-lD1o!Vl zX~+n)ggNl7Z?ua-j1k*1paZx>3_8y|8oKBmR^Zb9UYZ!(~{)eOU@MgPx z|G2MJL9CduBet5cS4FH4n_9K^UbSjGwjeb2*4SEVR#CP0C_#%>D^{hgr$tq1@%(ar z`3G{&ea`2)ulu^*@7LS^&g2c{oIt;4iUR^r7kBKnTxZOXGXag%`;@jXtD(lxQ8;Lx zm{nzTX1hqjp2uT_mTPB+#cnEzH#N)2?xYI$Jt6zqd2q|dl{Ptde;K&oDbu^MDF)$p zw}9u49I^Z&p;vqv4xYLf={fZ5D>w+?U9%HfuTd9w<}~(4XRRa^1M;E`i-&v-DiJda z@fch^&I;=ZA)16>UmZI@t=qjA=sZ;Y(*JU8-qO5~PQdkrSF3#0Q*K#p%YL(j@cB@m zwV7GRK5G0=;RDv~KYZ37G&5@?mqOE@_}x$`yUjjvDpnI^y|@CEoTlj6IYo;2N1MDg z3ft}voTpXV5z%c4`part)G=qcdN|Q@n;|fP=!vaq=-0nHH*3Ny_h3f$A#4)1ZvIGY zwP4l&U0Ph#WGSd=(nG{U8sbJD^eO$XT~20$!h*%f;g^sX9i55ci($hT8_B)dAM|P) zV4;~^l}O+7kcpMQSN!=YMi=?rin~6f1>?f_P3c+U!oj}^)KjH@mEk+WC}^sEVZauh z)HgB9ZI(rV_^X@(_{q#9E%)ED>E{M~jbjqhtNhgEN|ndQ6>QKtBcvV_o$E=Ii3D6vON4*d3!IMO>s5*)DQA(SjOnS+GPSLdGEmn`+}9_%j>hHcR9 zX{FGL`gO+Vd$+eKoQ3DPs6k7AVH%Jj+D9P*G=t-Zs)8q0GcIs!};fTC1UmahUeT%JmgXsFX)OjF0SZZ7=*R{D> zaHstak#2lV_k`PSt;HaE9@Hzzs=Sp@hm*WbbJr^}F(yWx=?f&Ng8B3Cr~9R;{$_=V znsw64e=z@%xlB+TX9>xMqIc4X`R3B>Lq@Hj)c^4|$z`DbGW%x_FinC(k_b-=ln|QU z%W}w>W=E9)7qR_Q+Vyzc8C23_AZXYfRTrp)lh?#=x4+V7Q_1 z^P?O1$BPT|NN0UMfr_SB_XxY=WBd0(sJyb-pl+;4$wGmH!{iydAo||LxxS08Ln5R6MtAV3tO8D2+vQbIB?pT-WmOFALPJVn4S~zhwa;Jaj+UAhXrM4 zd)0RsG*m0p&=kp9R7`1^_I=D}t;Xj<#JBK?NcHH6b*}@u-8*qNkO{!%) z*3GFUKT0*vY7K{-AfE96m(s@+JPtO$@I(nWXW6K+f?eEE-A;xVU*8&ZJK&(T`iyeL zs(A(lcGxoepm^qU==``ePvH>4lhhGe`BtaTo6_f^?3f#4<8#fGnKW|$;=utbEP<&5 zV(m8#1NA}w795QJ^XDUVA?q?axmZw60u-Z2jC(50CFdszGm6CNjXn;n4(f+~MQa$m z-^Egs^AArKbfH>rC%2d~-n0Hk7D?e@@+ne1yk?zN+_BC0h8VtZE&<^is^Z(IhcKRJ z-2;E4e$8Mham_N-G5X#~RL!G?k`d3=Ya&5vNY#@LF65PQhh6!2;`^gXyIX`}rv44~ zEMQzIaqjf@x0&munhEyo|H$Cz0r>q7EFWn-o$?%C#hw^B2!9dxO%03V%U%*L6wO*G zVUre-G-E69=>!P2wp3LBP4vzL_}O_w61ZSPX?q=GJxDkCB1$ z>ouW!$0KdPXqj+{8Xj7I-Jaygy8D9Xh=xnn>>m#I&Q)c_w+t)B3GFK=-Neae2D@D* zsZZURTZn&B-RqsQ%zrc{{d4rn(xlr_|7$z{D*SIYU7pcd-*uLiKt*>GXTg1N&hulZgQwiq|(j?Kb=v$uGUjhqzeNzsrPXvn7aIA}2tGv2U zVnwV6SjfEaIel(X=E|ErB#~WM1|VR9I}Mtom^Sq_0i`Y4)>}1%`T!3l9O0U(@b6YBVrF9ig#r0}+u0_1@e`_%<>a5oGQ7N(yzm&8YYxldW?zI`nQcbRfX!YT60(1YGa%)?r6 z3PH$XOl-Zo-frdE50lpU{o3Nd(s_2_ftz_2r1K)H{~E2NI5DS@ z8@MG*r^$-HP5sNB0J2u}!rx0<#7=93z)=InNW+;sGg$`>81RqFTT~^x4VoqAn&t$< z<3``%ZsQxcL)xaMzsLDi20Bv)u}ZM`Z?9|+VmT~)jn5!9+U0EiPmtV!0g@bNCMdYo zu_h6zfAK+J-quoFXUR3&%3l?NR=4%FlJUJzt7oec>2S{q^G7rlgkO?gAV2Gi9D$!} zwlN^Gjex_sl*ieQGc*aQsTYp-HW1|^So_^x?3^ zr&nA(fBA8Ub-Eslo)s*UQo&U35iWG}2)mpJi`z*PFEfKoc5qDS_mDi|o`8ct6zd9g z@`394tVPF>@BgwqU+3;pg<~_vb_a>RA0(I*wNPmT>Bf3>MolWmmfU!r+|qf|&?_z) zzcVnM!~&PPAJ^->EchL-pzqKr^z>u|3$77)o*^Pz$thKs%7z;P1`T&AS+U2Ppj`)EK;EWpAnvwPspOHZ8uzek!` z_GmbdkF0O76GCNKNWUDgm{;#(8C4ewQHu{cIpychHKRn<9-Z0x4r-+-HpeByYChEp z%}-ykD$;T`D#YPK@fMK}^o>Lkt1%6YEjnuHe~1O7)q0aeRYUqg6>Y>*h?v1op?zNYI82CqDFfl zcepH_S3-_8q{jq>^|0 zAl3W}0k!Do$0Fp6S4`GEj-!o&?Hg4KmKrIJs|k~5biqZC!p6zZ;FYF#P%(_JpuiSiLekqY5+xs0l&xYnvlX-~JJ zHFAz2$g?N2+peymq$fieBDq;b{7VD9rF$7x=&$6pRmhhaK&fw-3zn(Y^z$PfB@Ny|8E>#Bl`7@<5 zLc>EoIRQmR6%7Z_NSC^@7insaIXtHP@pmM9W5z;!cGGK?0#?yvz}pC)2x?@`%|~i~R&yFHQrV*2jv*-;D5^VV%cavMm%BswJO?}NsQ|KnW)SuhNRB1JWGaLZ{y= zo(Qb37R|mVIbEu90$d;;VvV>o%4tL^SRy3Ks>U3fZ-7BcyCu1I`{7=#&gi^9?2ai) z4Fsz&jynXC7p>q5ky_}1e+b^?l8uKcS!=RCW2Fu7S16WSx^1@`ndF_@v(F_HGWok; z&T&lHy;V3WzEUw!RW#K*-!QukXdRd*Yj(+XSKAJ;e}pM~Tp8Y$l;Q0NX?t9O=0hMq zRi45l6)atZt389)M#fk=tVY-W%6c`kdfOy07&UgkeVD#d0AD7QD%*8I{03ZbroGiA zX4FRFexZ8s?#zZ^V@bAY`-RE2#4w+gQok3xlWM*=^v^31{_{)>@;^Q@9>_ML4 zFx5>~kPwiDi4A^uZ0B6vJ(^K?U`n~C3dtSwNb$GV4U{Xe9_hKE^i(_;j61M2_4K){ zEkK29&8(d2z1*zQb!5vdHG&(|0mgWY0H|=eN6AQS8LasHGZcePVY4b^!`>2)%eeXH zYjvucaMH9?=RoV{_HMs{=i>-@V%})^9?;r4Q(HkKt?QYrVHJpV@GjrHNK`HHpWXcw z2PtbKDa@;-GcWhxMxhnvM}-!lqKp?-FNHbuM&|T~YGr>iAoMlsx|uY}ov#z$=v_-l z9de$m46u#x@}-NKjo?GG!ca{Ti!M1LV#^$d~fXiLDe^ zKY4oSC+DoJn_l8u*}~i4LC8qiJ7QWkAPN=_c`>#rSpPV8Tl;6JOhL+j%lpl1Fi*p@ zv1>8?ELx>|cJoYV&%N}zj%Iy=r%c2WuR-T53Ku>%cF_NykkX})zF}p`M9GqN41duN z2$mCZieV6hza2LEk4$gU*Pd{m)#QJDjMlCC6lR#u(Ip->2aD%?SWw07$i6ZAO&k&G zzTWW0;vpk_4gRe1n)~1w6j@^bue`EE#?w#JCoAsq1Ue*9yp=lgG_8 zE_$)ZT}MLxiAzala#h|It2pe2RYJCRT6y(uAL@BqbzKlmMO<#QE|{0PCjFdeOiq7D zkQUfQ{aIZg;#^h~E5T8d^}vCS#Wg`Jp2Ye&qooN(SoJ2ky_?=I1OE__ z&H>CMf7Z{3Q)Z*`CAN&BBHl3!oD99wcDK$c5WWbRS;k=L?a#_d5$HJPc=>=j9xYZy z`S5$ECPjUx>`rQO3v~vO4T1M4*Wbg=vUgn{&~)|tXkS`;zM^IA zyU_KEW#jOMX)rMGF;%AC_x$#p*3q{-Lg@NGG9JA#@`LI^Tl?$O-YdF&a~`pqEnt&Jmy&O%>n_M`l{_K#$vXcQJP8ngSy<*_{eCxG zQ*^U}i_{fNjG

1GIFNR~mcQ@-SYT6?y0qV{ix#_Av($%<_siMODf|ZS$wcEi*IY zL8}q35hUi3*eoia6KoL_W5HMM1yeKc_F*ze6uI_vjv+?Y5-tL7*v>_EeV=P+k7(tQ z_&igC>M_V@-h5s))zV$U@7=xWwh659V8O={Rinz|c;LCCd0MgOwy?sTr}a|TkH5Ls zjsfDlqtoKdoeMN4v%976va+LR1@Ip$V?fS+xRMQmcR(KPAa z(x7HP5ofkcc23`pa1YUGP4~ZGww+BCY17w`I)FPvpU*icyO*yE?d3*poFv+22TYd7 znALe*4LCFEgB3Kn&qM1)$AB+aUJy6Dy7CMH3}NTq&0SM}6%^tt;~8cCsD(a!T^4|s zU+F%07wY{nC+m`HYYQmm19@tjj`56>D$Eg}CeUhuokOn-re$_Q~sG->R9iR6VOUK=X6$A8B>+Ca2}pMRpqteSZo zntmmFvtC%sdHV)*nV<3)6S#w0Awb?LgJp^%l*mM4(_jXto~1g+whAVqXwTh05P%zw?J=dAt$JJW-^( zh?~yszpiF7dP&`BuevaMo5mnRk6eofstJ31rd&UfYsh_(09Y$d*_L2uUELx^id#(Mr#~vZg+8<*cw)Cb^D-)8&ih z^j&d}c>0$anmj;V8Og2;U?l{7&>C20up>e;6rX5ZE(*by^Rp!4PPfo5T`Yv1ll@D* z%AY5`-q+&!6b4P&knqAC@@d~v9Dd;>zFBx8rUdzbko(5In>PNvs=a649-uFAMj}~h zm5>b7?(!xCGJyIF+{JElnP#eR8R<0rb5Fy_!;O64gQHf`vcB7NxX&cY#Z=AGN+d4a z`OaaKB8h7|3DQoD{dHYJiGwN&)fP&b&P{~wWlVN`r1cqJV!YhD4t`Xtb_&1dsd$jY zKYQhx;vOIYoj>>bIwK!cvtG$prBLBb-Gf~(DJrE5gP7W-Md<2&U=<6w+v@3jTns&f zahZ3cR?b2r=aJBo@|smCKto&Ax7Or>M19o0utuU@K7WtQ=67%8O!00W1C5SmZ(?eD zdy-V;B+X*33suZfgJt7>{;rD_m|x89^h_jVajOtN=Q537QK~4$ZYz>IqYPhCHLjGB zOAWTQZRiq>Ug;ZwW*^UomW2jU&NYFPx_W1;DPSYvgBOFSZt?|6&&1q6baeCttj! z$0ZcTE6G799sGnZ;SE;1EE1|fG*6##12!JSbUPVA%O0-S$jIM?vRCe2RUUoOtFSs- zk+%cwgSEN(i_kQKPYb93ATd(tNHv4_I^(ZvO@KE;pVa>N7))bjh_r&Oy&d5TO`O?_ zx3?TnI@ps99$vnYZ!CzIMYS2FV3%Nhp;kmYTsq}!p+w3~zRo0fc$ykE!$Fan$3i5er82ES z(-0=zc=xk0SYYL&Kt(cNcjBv4Cc%J-V3`!e>?#RJnzqQ7o-~(Rk$m+#Wq&#_QM|B6 z{}tGoy3U?Z)^&S|KjYiMxxFY9x6$Af9Ne2;0F9Ou_~lcs5p(s{u&&>~^W?E2V+B6c zl}uZBlp5b@uH$xK-b$Wm(pn#?t6)nzG#*`1?}nP;y(odgdZ8Z?Aq zcHPJDxx(O)f2@r8wV1h}i{O)PHAv}3EpYwl zlrl@-!RQ;!_2`|ZIIU&wd+`+R{kpdLL8=|=bW@kH+FtaV7nr{)u-DZ{RjFt|SCQtp z6v;a-)VD3C1X{TDY|cE9xyt&yrAC!~o$s%~T66!8h}9)uzmlrP=4t?g1qmd~co}F? z3E(3b*V#6BM)PJxO;{b9)rlEPsukqkFIjZa0Ep#iHM^XuOsKK>XR&J4gS7YSDlQ#J0sQ0{%EHV0xx`dMt|FJ}DZ*RJ6Aw0P#MCAQ_zycZ+huMBU9P`KoLc3jK< zD~WF;Zz+i}Mt%^lTAx~&ojlu%Irzxe9gm*GvyGoHEz6e-3MvB$L*jD3b?lM`JsYI~ zCJXQ{?yd_y!^n^f@sJBS5Bl)t!OQyHYoi_uEsw{rw* zIK6UT*~(=J(Q>Yj4Vj(;*URmo)mZ7e8Sxd#ZyUsKmslEhPB(rMqn1rkuk+Dr`5^g# zo}P_cUd$CV;h;e^y|3ski!L!-0$g-FUsY-4gr1|?e8jZDEilZ$kCV1)GFZ^FzSS%3 z{*ZQy2*}7hg9hNB53ijOYvhgsB}f@a!w(^|mwZ5xN^jXruB|-e7{hzEPk52B7Ed+g z42jUFUB>RQyo@P6bUn6PqHC=snjq05oNPkQ7B;&cZ?w~P+@JcK`^NCotaa#4S@HxN z)XV1efkPw7<{b?F7tv>m?$cAe0|5W_=ns~|6~?2b3t93e3)dh;d58n4C`I{Gd?UMc zxHh5Kd-B)_&ZZe(sT?Uc?prw5hDk==&ik6BiL#1ukFwmL$HT5Ie00rvoFDGacVIV4 zh{t8Ri7@3U+7dHowOj3!#CWfk(^q4P>L;}#N{?cdrI!xMrsk6g>4Pfe2rmEwFuURY z>{LGWVx+=4`@2x1)d{ZdkUz@8P5>f_iP|RrkO?%Ky>Q9;`@}#jNdL}-*R^MHHVdJt zk&a|gn$11Lgc3vAN~EyEX-B$9foM7b{k+c>v05E63+t{uj3mVeRlVoRsWV`#9=bL6 zJk8gctovzH*LO@r6-nAXLhsV49=nkAkJ+?cB?i1N&;q!}i(~kOPEUFAxLr zSK(EklkoTO8iIwFKN9Z=6)7;!(^cWN2*At9fW;OC8esPw@tl-bgu823?b{>puCtkw{vpy9~qb9*^=>0lD2K1EcK@Fu$A~o)6;K9h%VUDU6Fs4$G zTrC6=s`yNCz^>Ee!1QsCvurMIdMEQeZ!~nxKa>0iBn+wfBohu^<-o1 zg~^f$V6{nGq{qFmeEp;8 zp}^RaBF9kVkF96GM!TLajwZJcVAn_$=c!mNab|b%h@P)(GD+jJNtu_8KD#3{J87oO z@jtJ!kQgMHTP{WyY9ew@lIsiU)d;_|0v-|Rr7VN|cu&;k`^%1O?$Ty^< z5wlsYyRfC7&Ztd3Th;eqqb0qOOFs3btO`ICTpq|QHDT&mMN)S2mW7L{tGgcMOHUuo zkkb`l6SxcZjM!MeuSmn@w3UmyoBN!s$Qb?U-Th+&wv60^-`6Z5d`=x$JDgCrz(@9-Zm+zIqRgu5 zu4rQ3vDrWo3_QHxeNOa`xupPKF1Au0`KyM2Xf+KcK3bWK>eRwJ*-*^_|ZZ zTaA-_1ypqzi{29-;qQvvTVk;0RNhjOxXaXJ+;!Y6ygzPQWyL4^Hc7!!o0Nz|Pw_u8 zaxw}sGBTzJ=_fNQuh+Z0K$Cu-%67xzE8^~IL{;8N{$Dol6q)!Jr9`~)Lg&h#XLLx{ zn)qS29!Plmvm_H`P~J z7+6({`%NXJ9t}j{c`gjk()wI%?8}wAG`Cp#_qE(~yKLS`WY?Vu$BoUd8(C~gk z)Slbv+;*~a`0 z*=5hob=%J+*Nwwl0$+?utS5EU#WuM#XUZDzkJ&pGmzn}u%D&8)KfxJZY-~#4l#Y-! zl+N|{rb1?ioR|R1w6>)osUMVB^M%iw9ezE%&H5$fXz4OaDBG10)>h<;6qM-K zH*fp;S8m|Q$>QxOs-}#x&y+9BYvEVhw+h9)B$+kKm=wY33Q)iBc!Gj**T1X{ik$k& zd1~{@{*N^D+5q1K&a$duwZ7kqPuC`!Mcf1a{`2;8|B4QI3a{6sZ31oVlg&J;p>~Is z5rAK=)$7_e%QXqI5)E;?g=b!eC$HkKKhb_&F9>$+Wzj+is9cwlu@U8^jL*Ri!Z_+t zglvg)Rt@4kC^U5ijbVi?#v?Gc^eBmNw{*Kz!Ip%KW{4^zvvA#@a@S>4!kz0wuRe1 zy4?`#TrKT+@RTy~+vflZ7-(>K;p6(NeP^YN@S9BWe6~!i8~IcNM~7niv`}}LCnn6? zDd8ey(0{n&4F|PT^rjuOHC~k$+Wu$2b#n)QFsvn_|8u4KYGA~0NJEO_S8;x<%hZm7 zb6LA2nf!E!Lt^&Dw+`ya9cV0%l%2-eKm8^x8h3??q*DddOXMKN8zT`G*}Lpzm0^?Dv*i9h7Lr%YDGi4fgCt_?523a2qI|1!<( z*a+;Vy_z&6AHNS~Qa55M@~^l|9sW1#hu-sIrH9gb3m7Lo2^Sw}k=ZX5J&vu!cPP(v zG}XE9QEsX43v!b$+(80t-#LPh%~@u?kNGN3Yq69aZF(m0&$KHuw?>SRU&R_Zs6ELJ z>Q|zun7cix72W&%&x`(IIXsiX0|nN4OTmInzG}VbKp5_2Z1=;d_iEFDWEXuzTA}U23PC|? z>7W`RX7@Pe|2=m^YX(5)wjECDDpn+26h=Mvw6A|Xg+sG-GSDa+ucr@k(l%eYcP>=E zU2DoeN-W>`g54!>;B_3sn4NAzN*iXHrk?1Dx(1~g)$Fh)%sEVIgr!7gMn3~|dH_J2 z*rJfm?1AiCh4)p8Ui49H3yug++M56wA8^kt(<`KH>t)J4i>2>Yy}bhyDZo$2NIs<9 zIm43^Tbn5mi7*(qp4Ue^l#k1DjtW>7S!}H*4sbmy4EfRKrLfyDbHn8x?fWruy}r5UDpsB+I3 z`q0$D%Jr>f;wgR7R}j|!OW_9R@22;sYgGjcX=6M>Gh!JtF%|XFX|iuV_H6|3v5uRF z3xHJp_KJ!}11s8lLkX~kOeSXJa8{>Fbk-_s>VG6qd=gAgd=@^ z{LHYeJk8(y-Z8EGDQAepk*mJ=)o}wh5BLLDvXp;$fGActvb)JlgY6t`H|59#@VlXs zbUsvF^OhesJBh%*j-;c$DU+?Uk+ytB)!z*o`;0}T zKYr`!fO_yp9@zI91a+Ph7O%!jZFE=G2ZfzL59*L@9i5#?CI69~_>b!m9r*r`B$}LY z*P9jJJapMrjQBD!?5v%}ur>bC0+@3~U_?6SjHP(ak9tSapmb$gR(rW~EkMmBOgMqR z7z=+%_wz!kgQ9&YmqnA6gu0sN_@|*>a36~UpimZSHvT=s3ptdL!8ZnOxNC8wT2%)#c> z(Scw7jYsghQUMHQxJ`rP(kLk68Z&$R&dTT9fjzy5xUBm+`&`G}N>@sGT$j=fZ5j3n zm96Bqixv*S%3RB+Y<#!QPUDY1?x|N#K8&;J&Ukj+atO!9T}+a|_FbYrPk1yNjvh25I*A zw$yRYmL~7bsYF(ZIEa;{<5@xwcYTv>>iX6+xb%)qxWj5vP2#|cYFr0I_bUD&qy?_^ zK)mZiFwJhbM*K3-E3NzWtD7<}wVJf=rf1OoInV-sJ!Bj|t?eEeF!~7*AjF)()Mn9T zJH2XcQ8K*&kI=R8VyP2mG6|EyfOCZJ-&RiOdZY6<+eL2?^(V*>LCu1<)339)V^0}A zYbW<529M0Hd&0--%Tww%Z-Cy#`kl(Oy}5PIXWeuF1IFgB*uH1~TRGc2#y(dCbTxd> z;z*|teZ~9;I5IAI`|PG1F}y?cxmQ)TBlsL6ht;htfh^3XsH?rZ-CtF#eUqVO_p5;5 zcuh2B#uj-NJ2U0MU_L!ywb{!Dbe}MJy;8f`FKHi#y$ZF?Wv2?#qHfZw!z;wFROcmR zJ;);k63H4}T|o9-wj_#O_=|$=MTTDgN7n1rXf`}4MO4H9uF*Am$j!;~(<^*Y!mE#3 zG}AeRhk~aD`tMi;Wwp)G*tAs3>BL>M%7oHlNV{72@#_bPvTO0nSf{%m7A+bQs_cY2kq)o3{3-Q+9IKN%U@p6O~UonoTl z!t9~W*tXIccr-UlqM=SZ+Ln^V@ZI!Yom<~Y#uu~#n`;*_5j5tJ_2R%VF$v!Af+SV5 z&x`ZBJ+kGSU}^HMO%~UmI;=#U>-xn&pz9%H>Y%_)!t3&SlPcfoA%Jbr9b4TnDC`px zp-?)s)zN4Bj4npr9Xak9SoRiZo3{Xt0^#6Yf`~PZtUwRz?dzL4Qezeco0z{|sni(J zx{v)yGprlsT_1CiJ3rQRCsKH&D-GcUR+9Hg_bqX)sE@oKXwNn%RoOX%Rcy$5Jo$5L?V08-!+g$0!qIx{dA|HYW_CeugAe5V<@+5BV%4`0};lJrLf6a#lbp z`3JE<{S?CHzd4@tG%V&uDp_sgTuwliwb9ZB(LSZz^C&S7DZ{$i0&S0aH8WP*HLuDp zE0754LyTa2(MP$~c7>4>Vf2=cwQZ)rr8f>7>SwKNW_S+MCXda{1hcd-Bi(mt>}IQ1 zI;VtLO>+J+u+vUIV)0^0ZprPO%9_R+u9UcnydMBO{L9+(mHX+O1`v=Vj;r)KOcFAH z>!os5)4_)HfL5x3&Y3Nu*^@O$QMZQ5-`AlWpYW{NPjRvVkadJm+a%EDSbZsm(*LYI_8+F%L3Yz9Y^=$sw|izd&C$?A9s=12tsEhOf+IN!2* zx?#2Qgla=E#s-If&Mtz`L4C(18lD6ldY!7vC`v*^~CW6R#FiwsRp;*6_b<#WG|6* z*O<;`iP;>xzcYyAt_y?jLq4hlMCLAmh1S74ZVVQ6qn)O}+#LJe7+|V`?=*;6j-v`J zI5@+0NARFxFnN&8*sKVF@p$7b`FG56S`oQ}#x8ZYF{n9-k*ncM9bS zxyQ1B?*gNc0W^s;f@y7&>jlL za2aHsW#DtdFWk)DWV~I)|Dg3U;P@X_sK8X@`u3V(KP)3vnE4lMhh0yO0#|$}~nF z=sWKBIMTBwCWJ>EbCA+zXo3^zR(dxH%Sa8V*NJua_>fj7sCyUfB{nA1^e(2wz4L~J zTO14d$ogS-<f#FB)RK4_Zt~h=e@{4snd04RLk5V`896 zLWI70zFw6HknGg)I+hv8TsohdMht+e)lfRl{`-_Aqv;~jP8x3>)`{Hbajj%$FY*_Z z09p3fzibehKlYx$1?bWV>ynJLU9Gx}1y{Nm0m5x#z_LmfX6!-0GMH_VR%zEJfklH6 zWOD3`oTU=8OqHXPd zfa_CaatI+J7*geR_dSjd;C~b*je8%GOa`&K+#`S4skp#{iiGr3aXOMXdwXIu?IEiv zP{*sJPl#F}6H&pX$VV|6o|u*;>6Rsl^I6U4zfckqvWk~500LrlD}Vf)_%(IdBQ}Lj zT5%3*mW>t6a_@q5FQmzj^Mm|YNdm+g70y%cENfy+aNbo2k7o5*DRXI^VBX`6HhL8O zzGlf!r0NZ=Rljc8pf`8NU((KEOE}qw5XAIQPT)CxnNyc<$Uhb;(5-(OK9m>?F{|$e zBKC!S2SmgHOdtP1j4_W9ZKmKk77I>&KOBXyM<02+S612S{D(Ns4P~j7@T5DTR|%|j zVx8`%TP8p&{0?ZDG5x-bkU6n&bXuJ|nr6upu^tD`=NX`28>3g^n=*wdx*)YEuO>w4 zoe0hGP>+%)-P%qPf)r;mLX?mg04Yi}-p~uHC+qZyvy>(dyx%%87vprde5-l!Fk3WP zY^R_pZ$_-VC?`EOibS+?*jNcY>gxPr8*A<6B z8Y#q>Fe(%5mpt!rbv<$tm0O?E=i=Q!UGn5sqvOC&lU1|pSA>1MiV5OrMQBby4~mQ_t{&)~e153ma4a#n0urm9ZWqb?v{y7)dhI}^DmhGh=>`?C`MBFR4zxFMkj_tUmh~x{rg3EU)b|r*E6-Tz$`UAZ^Ah;UzDeX3 z#qs4^HumjqSn9!69MfcfX}ob~a2*|1X=Sb*`1>5`RyQbn;hjUxm?>)NB6+UH)#Vm` zf{Ph)wlRHtrmpiNSDp|;G^OX5y`_}zS1UN#c&B%WK8-tcP12v9*LG)y90@n+*Kz+5 zD`$SSAG{oBAF^&f@QDr^=<#O@CAVu)r=$G*KG9Lhv|pa!Sy@_g!#3kI#&NE;AH#wH zo(p0UXht&)iWHHW;TJbHe_EdDjOB6vdHke;yK#5;{{Xr`MZdXQ{-Wc)Havcf6COxH zC-k+#L*uaxo>2e903{Is0{{a700RL40s{d7000000TB=(F+m_vVR0~lk+JZh!T;I- z2mt~C0Y4D8hS9DKv9>Dq$~M_r6J=#*>6NV^Hw}%luL{MpnOBDj#9B7|%4PjG_9QrY zO3kb$%F4z5euX4RyIs0p}iVeuzy)-Ne}Sr zI@#BT;jE>d;ZjbV7Re3_n%*9JgGVrH!S^eNhKq_a<`8Nd;ruEQKF?0*w-S@=dlpjq zD#lf%fA{Fsrj1AS6Pvvag}f5l*o}1;!C4y->~UHY;ZykC(Y!r;6Es>XHja<)4Vxk; zctXJodLWC!ZLOO6B_i~3IpGkWj5gS#Vn&Q~Z9bC5ho?~(YWyDyqKIgPI8q6d_YNLo z-HU4*gZw%!jDn(VPXlS_)27`OH%9f-h(QNfGZU?heKw7B6xAwJT0Wd1!=p(SiB6D) zppdF#J;w=6qu4`&YlB2I-=F*bPZlzKbW3NU^Fpo(#jXwP(8_Kvp_a^0wj}FA9XJbY zV&(%@*wmvMuDVij^iNTf!$_uvG3jj9Qb*${--794KZg+AJLz8fcMDF7TU{yi8@`E= z4DDvBqMc%@{1WPJ{{RIVh=PSUG@gdg_NYtL;@%->)h~pLr}WsdvY(|mE@5=<4j-d! zjfs|t53w2zoA(i7nu72%)`va6;9}XY_$oq^q;5FxoCuTG1b2ek8=A^36RcXO*rFS{ zB9}gm5zIHUeG~f^?hPg);pnhomBVF&r?ZNN=zG)P(a~ubwk@Hi#VXdvdc;o$_)E-8 zFT;bKJ=S05ci~)w5cGt-JBHO7`WsMU5ZXxojruCe8r3OHp>0tsTRa{f>5ce}u7;fG z!m=?mJ>fXci$rf_^CWK)4U8t+AJZ3fEBAs8DL>g!*iA#} z68JRG+KZ!P*2db|cTlk=hVISuR6HTJCMyUgJTY@;2K_%rlyhfze*`j&dSjyLwpYPF z2`y+#v(ghuQ$t6xU;c>TqtP5{2u&KjAsJf?jWWfdbhz3d**zEA#626Y^ysVD^nRN~^!f+&nX_U|8@Gi>hN-DUxi(>}1G|^lTkR@*hhL1w6 zP;W{&e{v|H=&4SLI*KTtLY|%rxY4n9EF!UMXXu8+(k0s(4}#MhXl!NSrq3y{P6*(w zw047DqB=L$L6Q*5D7Xct(5oU*{{RHUir9&$g|(qiiVliQDNdhQ@c!dw#lZ}4Zm5Xq z{TjG>D8zapGIaX}KL|F)(CL1L=S1B?k&S#4P@NL*q3fYm=*_yux=4D^(3jZR{UKKq zLldLl1w^2jm27b_QX6Yy9l?}(JS;8}ZISdo3?y)dR0D^9n;m(Pt(%uhI zORPuqq-fI>XivbKq&K0^{idZvz%WTVr%3v8y_TO2jDHRnbA97r_a{bT%b8Dd^P0(8QY==rvD5Z0kcq zrCfzvcxUOMMi{T8n-=3v0#%|%vKxdMY9nDAQ_>Q3l-7>`)!H^~`a58Ugrd-+=*!@o zLs4TxXqXxF3HO4gq^5#&N$8UFNwL~A#q?-W*iZBhxG$%}(z(7GC?uk#gJrSeg-z)i z%QjEKY-$}}9+GtAW}Y8t&~m&m&Y+jj&)}E;00f93u|a)|H42S2QAB9O<_H>HAqZMp zZmu2Y290QNwmyv5UkR1^F>G!#jBbvNeUFe>5yW~LO^K=|=)Xj~7KW$k%@DNBCE*SU zPL_M%oF1K6ZSelW5UcE5ky634h-FOm=z=DInR@6Y%cweuQj#Qa+gW%R_BV znn8_If$WF$ze0W##T7l{qf-vTfY*;1)Hm#uOkNExhKBWxR5zhu_H2%C3-=Y%hfWEL z>kOh*iK;ytp-0`0l7m5!!9NWM8iX%wOK@qSBsx8hT4Ps+juLGSpwj6^*Bu+sqfls- z^wsE5)IONIjSFVYu_ix)-mt~t3`khV*$qTXv6%aW$4wd%N%nZ7XTmE;b#&>n*udFA ziAEyo8n_e2ZFG)Qb7su+4EGBUV(HXD^k`zzA;mONIw3Y8bT**0JGpJHp3;K(bTrsX zwo*hoD5yd22`&aFNaZ+-UWPl0lUo$lia)wJA^VO9MD*#eMahOG7>1J_3qek^fsaa` zQT^eeBZMWQ)dss`t&VW7fjNGVo!A1RvO&NVf|5GL24+B^s>?V1`|3 z4OP-4pwePOP|=8jOn5_cLfb!?@R|`DDm&5qLdMe)HX1(%Lrg!hx_JxYEGsV1?0SU9 z7}9)rn=J{}@JzCPqIULfsI>Ik#5Pa7KI6H6g>Xpno&rUHdX3>XMpt7|!76Z0vZP%> z^ntg){{W(KMcrb1LX9ydG(J*jO~fr=sHn<$hoODp4Ce%yC&4d8r5p{YFQKguWbn~M zqb@&&o)i|EV^U=yrYe&G8N`HiVj5A2Y5t8+ zhBtJ?*p?+X2(d!Y%>hk1rXhqQUItFdgahjQ1rRTTIvNII9<;5GjMW9=Qi2|?Gf zs5B%uy%lpR8%NpB2x&1ZJfyTtLqq(|tr|RpxTz>3q?uV-83!1WS|m18Y-n#<8*EK0 zBx1KkWfBwAJQ~U-B^szLywXD9a}r`BL(v)0Iic%9Uk}{KIR*G{(}O%WG$H;8>|0rC zrZoh^RMjypi}T|TS^OS7EPFV~pXnc@Mvk4%=<(CI*M&GVaJx7>!ZpbqG3kl>@mND* zOpP1&4B;AoA}7O#MUD(yEztCEL;4;Xqv~OuGe z6y{RH#3U@jw4RF#^tf9a8PT`XyAnxZ#SM*Acp;IrB+D|@(Eed9jSD(IxOkXz%r#C6 zn+R}BLzw9Mu_~bn9ts+0Wq%LRwuHs8;jo3*gttCSdoCdgEu6$2DbC>xu^rh^*hfc8 z@bV9$`w*Nx7wAr-tS2(_D>3VwBUv$_cnxpVz=OvxiHF zOn!`F5oor1qj}iyoy#EB9X$BKC^8BC;up~!B*l;8ap~mC7SOal=;j#qEFlPEL}zq^ z-v^;8En@r`7{(=`_btc%Hysr7I;~(EM?4a4xXj+tD1ERafV^U;$}sy}$^O z+9a%i(8bClAmNXCPvMF z`G~VNR%4|&;gnZY+Z-bE8qMp-Wb7fMcK-nF!!C4n7V5R^rQY3nIvGTK-)!>xYn>>!|o!=1_LZlE{V}T+)3&uVHHUr>X`ozJ*qUikBY^G% zvE&*X!G`7+jd2yc7E7U3`1LNuaHa+gig9sL(T*c5tUQ;vG$%ci0h@|YR2}Qs%S$aT zn{BN{tm7LhZx-?b_~zkP{vnrUC5n6gBW3}eFre(`>@ar%#}xyc$5M(rlr-OL+TAm> zY1Bn!UA@FFevk(N`IXeHb>t{9$ubw5O3<3>C)XD+KZwVrKyIuP7~&l0q+B^ejfvy} z?c6DmR$>m1;kHuU1P*T5&Q~()cB6Nw4XDR33sBnJypP}s=HGG)_aIW z7Z!`eIKyUEsuZOKiXQ!mfvOBfz`Pm0{FH5x-5=D&Si-2|*oD}&?=hyNDK4b#+I!#ej{&8{fM@;$y-T#vR@R$Z9o;9m|Cdl zfUBSzWzhGdpRu-o0$4oGIFC!ua-sWzGzz=#P=eH*hY*(B8zUnj@_riP4UQ%QlUYvS z<8gzdrrEI=CYy5% zEn__O93W-|<;N2vS{|ZZ0a@J9U%Ac*77cSQ^Xxeda}`5L4W*Y+D5k7&45r@1)q#vm z5Dhz+T{z<44%GFT4Th>VxDHC<01Vw5jnj0WB|;X>1Zp7P?ShJM8i|#3O!ZODaHPCS z&O@emC@8cI)$tC)8_c4YWgq@JmrX5AbRxSZ-s48j?;Dy>S-O`+;PRrWk)B+~3b-22 za4f?P;)2`upv8ezSpNRN%SDwuH~r6_enVka&MCJt%Z8h>qh}qS9z?VS2C0^0?;jv6 zZk#cE1$}~`qK!XqTEX$wl{l;d*W%C>qC7jz%$1BP&%;y+x&Qi(uP_q!nWG{6SbP z569*MMH%X#8OZK51-!*WW=h;CqdT?&-L-B$My=fjyN|ZKOej7bMhL*wHqYWOcZXS& zg2lTb90g3ID`QKe)LbU&zn-B*Ns$Nh3c@NG4kglrwhah^xM5XLQ(e7b-A!i$%f>w& z$i`mJCsW|rb>wUe(<9uza`Ir9@eLfq16rG4gSAB|MtY9wvrs6fnON2%nu%oO)Z2TV-7>CSEkNK8 zv+D0~R6;b{wvrfgWIqrboU5AZ6?xXF)aI`Q0a~*6f8udkAYu0{@$y?k)Vj^Toyt(c zJMYOuSU11-1v|;A;&yJI%nJcdRnDag0P%PBegzn=dw`7(bv*^upUglZ>*T@c^Lma_ z0TonM&oL7$4#cnAveX?x#3hDe9pO+x6o@0lxL9d-m;sPzYVGP?96ZM;HyHx8>A>JF zsyrO1Y3#2(!LW*5x5uyyRfT;>B`Q`2Utl{o@AVkGizoSxTo?ktfMc3=53LW(LTg46q;ENq`3_rlIZ;$B&v)B+e6lrlrS&~guHclSyg3& zHZGe?Bl7?;z+z#VC9Of1FnsO@HUfd%a}3oMii#R<50Z=S+OP93Q}iH;rru@YD66`b zY^8VP17mMV9k{~UHx{-vcLjBt-7p6Fh2sP);-6k7IALrCUS>pi;<+P7&fo#eF0mZE zn@ZG7%hbHwc$YHaiAVJ*@%a{pA@O*YbQW_z=$Nxa7IU4{14Vwo14nT!?dGLY=AGAY z(O?w{M=mp&kY_gvsvT?DtLBJgT#0EA(`QHcnr}Vx42+3*lv|v*faC=Iqyr3QsorH^ zpmO?5hC#`H)X>`4E!UFui@kKs4km6Cm-@K5K8_z?x>;#d7+a>)9^9v~G5pJvC1s+K z?Qs_%vyp`P5EM-m{jZ6LPS+2QKZ&%l5(n-qAiD$+prh-se+Gzhtt~;5{7S{z+eqWI zU=aldlVOqfOp?4&g%hQ{!{72R;+eIyYgEU1wpmAT-9R=7Te3Ql!vS0eEW#HtZt&t9 z>!^7G0cmDXaZcfhOu*85>IT>wV_9Bc@;uWYHkk$4!c3Vl1-w$m5um#_$=yE@BVQv3 z0ioU0I419`@6*`O!?D-k@W*SZ#kg4T1;R4<5#tUMDYzE9AKW<$U-KI_y41W8taTe( z4Z$nX&r{Wbi=1k2P3q$)D$G%%wSFp610inNRT=u&mZe zT(~KYqC#bo@-Lavv2)Z|t8CJs?ADY5~wjk927aCIoGrz?g+ z;7v;1XCz0^kJf@%TlJ)ad6+Tv*;<* zSO!!9YV`wT3>T8ubr4a#iTB9Mb}btA8lmXK9#(_pt}zC>+^FsLXCXM6ci}5S3NFf@ z;u*CK+8z#nF|#4eH;}-5<_RQ$Uud=O9d-5TS4It)=xJBx5jw%tCDL`NFGlp}=zdvyrJ|EM!Qxr<8>pNwgSt&S2Hy5b) zORswJ0G9Q#=sS$TVs-%Gj)*I6DrCjYpVTPNAb4gFs>_suUatQDiC3bp5L!5*TaX)1 zB^Qvt?ohj;p;>heHO`}ENM33Kk;@&%?Zq%wT&z7qhkQ*h5L;C<2BI&?NRnT0FWFV_ z+^X+Vw?@j1ejUZ*SGX2c+#4{a>g9pEb{xY7{{S%;DQlO;7&E^o78G7S%B*J@fb;x9 z+qLNCT++5Tsa&J;Fwk4Zq6!I3UUe|No|(Cp)^r+}wl0FXfpu0>%u1^+@>9gJYO|ce zi}t_FqL?d{f#fo8ZGWhsxcn4yVTPz4*RijVw5K+w)O2)`P!8I^2t8o> z84Z1h7ETI|h6;(t1Md{R;#yY3Wd8udqfXu>E6dp7i$^dNtB)ev%2ohyeTbI@V`F2~ zK_rZSqTpaEo9;IpU^G^h>_KsLT0do|45XHiXHh0SlP7uHSZfyCnykVaxyTNli2zY; zOe@LMu^O-#7q(=SS`Pb|lNHdc_x4v+cvVE?2BE-5v|ADUzA-b~$5z*%tuSVfO+1>rU!22kqvXA!#wU*k?AMJ2M_}G`B{$q(?Fp$djOad9RO)sPxLv7cM z9K}Azl=4%Uj8@B8_&YtBP;RJJs$4T1UoyB(A1jzV962J$We7KH+Skaa!p8#&y&8l9 z^Iy!s{L1wUD;Y8o!r6XAphFj*BadFdWEtir1GD;rilA2NBI5r5GJ&^7C7BIM%}W97 zrrkevGK#gW4%B)p!>@P~H z+*WQ4n6=$X+$;Cp9e(Gl;0$BwxzT$GO5oox!e!#pZ zbuuLrUPUoL=Zhekvv{wuy&$&p^AWVDYJNa3inY<>%zASwU(_@`6d)Yky{Py#3G~J)7u{Um+A5MVi0EuOUh38T34r zQGQC?N>eqtc;m@h-L7gBxp}NjfZ)k83aaKOYQ!z_l5I@c-xA!`JBy*U+^eIo+@vt( z_=127Rc2sc302${utQP07evU!+Hot3bp{I6#Hy|1{>mfBLb1B2G*dXu&A7)h;=I}l z&u}t1z4qSYcGXWI=GbORPwreDyvvZFXT#z6A{3o zXb8jNaWz|%E~gfDM1ioF5*j&AlTs3?7~uQVS_k+QD!3DqHuWg2upd)>1_8SE5L$AM z;iI53-brN!+_|%ej(XXVQiM(ljgI9v6xgK${-dAmi~Zh0FI5MR$(Ja?oH?j(4VgH1 z)N@3kj~9fXryZ(Z$8CQxsAZFuw`T{)<68k`UT?^2J&u>zDZth{L^njVj4V-J2@uo# zK;vUDHC6+iN0wD-noc`)7eD@@x(4}SV`*NaMX4MO%rGlCfvV>3@eypLwGx8ru~5zA z@}XhEs%Hn|Q!IZ7Rn`h~#BPGC#AzrTYB>A-PmIcI({(k>s#IWj$FORTaSApq;#voE z@sX927qQhu>AkH>zDnHgioLT%D#bxc4jLgs<*I@d zYnj!+vAb(-Y78E+jwS59Xgid34dL!ERX~~t*kXX?IH-y|ayfVdf?~Pb+R>UlgaDq1 zRjNBa#o8kWW`~^h87o9l`BuLZdy>kdfp$Pl3db$Fo6}PDXS#_Jg6{ww99$Cx|Y4CAhJ0kc(3L?{*gfwq^-ml~}k0X{fu31w;yaViBBSGT+ z0t?ckmP}Z^Mpg$U8~seC+*9b{V+{nuS7Ni0!Au@53YgOR9ZS2Z1BBGIwFjxP8yB>9 zA5eOGo1)>q`(lUC$8WJWTosIvR&W_$_BjtP=1~egBJ0RFHX2(lgL>nr83o)Hi=5OiV?9iRfpZMgvx${s^W@JH&yw1} zLYl&_scW@c`tmfXuq7*3b*66HAUSU-)YDus@zC_laW&D>fwuc+5(?IB$fN zS^91ixmH%f=(>hfT(>cBf;qoO63fhM5 z_W2eNXhycT%ZL*06qfKkKFihHGw#vfuow_+G@P}=9BFFcA6`!)p~;v0-f-Ci6&#t@ zL^!cCg6p)^aU8J@D-mCzE~VHu)NRmoM;TBc%ZIq5D}`vXi4I8D5*LsNPIMIqxb z#Xf;ccysY}=-ZmRYe#LRg- zc>>4@D?AxMnOZH6#6T3vHHk*Cl@g@goCLa!g6SPpvkJ9pzRCgxjqQbFeH(zxQF!2q zS0@!P=OrQ3wR9$Ie=rqG4m$2q*Rzpc7~2&@#l4=#3DOlek5w(VENmEoLY=2Fk(1VH z_?G;5b}h;5K}%IFEVMOD$%UMYfK})*0-ST0?~8SCH_b3W!jV@~M-MGHtielZcGFK~?ikGTUTC=EG6cub@83~SFC1qMQza?8~PUz>@90qbO zdx){UyPFEHkizIORz|wIP7O)|%F~sU3#G~^R=z+`8*dI((fODHa_>Ol+qNoScGTPN z50RL>DyL5QuBD|kB!cKSDdX;&qts}5yV1jy_r&)rr5!NH>zfs83=C=pwN6oo$Xo@z z4z?;#gH`_kghh#KOpbn$4cU8Zwd1Iz72G`bH^~k%`2lwIn(-^RDB{SB(_y#vLKP`u zNFyM506DeUlYvp+Fa?)oxl@^;_upMh%o&%DEH-0&B}}fnn`|AFxEw=jEq|e}}N%28P6zO1vx$WDn_-ZiIJt4j$OxAr3p`E@2X$K1_sy*_Lc7 zXEY~3c6kQFC|wb`uLBqi?Uq_)rNTtB0GS0Ggs2LHX?31p6$q}ZJxW(Vx_Ew}fB{#V z@fh*!8K=0F6RDcpg@9w*dVHyC)pg^Mc}V+!*k!d+0LN4Xb*7!U{>{fLVPnCN)q(~ z#cie6lPy*o%KrdT)B^0uDutBS{DQ|LwJHpbItfdAOVh;4u-=uO;Ij&9VOGO~1pp%DYCkIomoStL)Y;Q1jw&^hR2b;y=AYf zk^IJCX~Z4ZGbB-GcbfOeg_%OA4LU|z^{JymRq)pgbrA9k}y;m&aB_MigJKsGRn1b|Y-FbQ%EHva(6WyXL}ucuwhZ8^EOiE9!R z9?s!$HcmWT7bRhs3vKiAHeeJuI5N|S2C~4)rdxag76h%(u(I280VU9_JJ(Ri8q_y% z(-PJ3qX)5j3js$5QDZP^q`oRxScj^6>~&svAAdItb2N^R_cT+E8F!IXo^){sChnm} zfffPV8mk}f3@)pF%mEGym?`e&3K<+MR`3E9>)Ajbq<}L1`6oN7%Pm~D00?q-%*~c# z$!a_93=bSZO@=*yb9K=x04}rnmAh^uSEwlmdw|nia`OtvfnS8Bp+mPd#0zaOnIad% z{mKG+h9gw*NVykhS92t=P7bFBt|g73Rd)*klDd{6Q-auxl%Q2fuOf44ujVv!U7AU+Qmv`V@NDWM^r9tq4P6U$ruiN^BQZ%e!*31sQmQD&v021J1g+$_ z^Vm~9+NA1-3{FE;5ct)?q}9^*^xOpp3pJQo(-yU58xDu2qPC*N@juBf6TY7n(*T+F z=thu>U17xZMlF^bDNY~YAO#Ahx0vjBxW=@x-ig9$;WD@%m)|s$rTLrDmvlAg1L@|s za*uc*xNFC9x-({7?@uFi3W&0r3F)#lpk+9*$6p|E%18{4X%7!xbBK>u?+werdVJC z@*P0M;{O1cXu*1v7nW||6s__rsGw}V;0%>r^A|bS^)Ab5qii=1kIZnewjp#jf0?5o zx0X4^YW7D<4IWFS8f!7MYzB+w0EGm1+bXEPm6TEo>o6T!!0`;6*~<_yGfo?xznPL0 zSCa#>?7YD$zK=&x0UZvC>=_tt1rM2C_MTyIFz4p9I z4I+9=h;b1(-UvN>mC_c)x6X(Lp~~a_kqWez2&#U-EKL|jADEd5V6N)_0Ma8HOeMRg zTDdkuGX=Z-9B0X#k<@+z%(RD;s&#!r-7@<_3mhfTqg{}DWtI8}l|{Gm0p)>{vI`$S z678y|7_MnK2QmJh$o2>>@IKe|HNy27{yUOemZf*$Q)gc|^-psVQjU6F{=uV8vD5w| zty?zd2N~UIlrC-ayA#jYj=`?v z47ApLfi0Z5gI3*|qp6NJSZk<5!1t0_R+b1{9QNuN7RN^rSUBV4yqiN%60i>gGALFO z(B1Pm9BQVn@hg41@;Pl$2YA03jQ;>JD?_@8G$8D_S2gpfEmJ%%Yzi1n7EE3=dEyz} z*CDBfFYq$TD8#1Kt8w;Hae@PN{mN?7ikKqlXuV3Zm4;KdiEF`~hf6s&jc4@$Bmi@J z{7sesV7ux9i_ix8@9ag+11jl?S%abh%tVnx0%OtY7|3>V@A#BqNEqni;=!qRi|(PE zW(!b%h!{#TqUmP8$md0S*veCISbQ47!ND$$4$cqBlnKHthaiPQIafy_MKrOXt^WYb zvjn6ZAM+e&(uzM&)K057Un7;dHwu*rL^@yYG)@{Ge2vPZGBAvMN)(Pq?5aVc&HEih zBZF7$$V2Us{{T~KF2T=n4*jo1_WKkV!t3qG^$l!RP%YH3rL(a)bMpu(EQ}|db|UN= zl*h;H3xL_s;Uz7F0P?+!6l{w+F&0`Em>=ktbriq}-0EJ}XdUl6au0PGIH^Xf#2UUP ze-#p4THX|vfVfs22T)mAT2tBf0G#F%c$7p%W(zx(@|vqW<_I{e02~jIS#Za8dYVMR zx3vjjl~rn`v39gQLYq^t!vgg1!q)}CEn5oiBWtrTcpJy+7=B8EsYabt#Uu-?hUSHA z<(GE-N<+@zG#cq*4PEq1nkvZA&oaPWFevsgv0<&l@?`~b&2qr7y2f)GV|lzwaxDy} zPy)}^pjamSoEShb-Z}COLhIO4TXZuMOE>=jWwbE47b^fz%2q66JTav~yCw6%Zo3^ii> znVJ=B2$@pC#MBkgR*sS&EEf$b9nh!S_B}q&Kv7eR?g?|Sn72}dx2?z2PzE*_Db%=a zS%u>Jh;%SMYQ2>d?PZbN2)kOBck?Q{MFx)#)*&lvDQj}nLM17m{M1a{%fhc;B2XNg z1wc_FE(xI5Fgo%V0ueQq(_r*My~#NbE-AVLx8%TpETVFKg!a(kelfx@fUoNwo3;5z zSYd*d58g3T>8#lwNr(=SKty@H%2-=Q?Utp({XvwkvBb?ak6Vf2+BxPFy5d@#mh&}- z2a_bTH3dN_sbd&({{YHen!aGiMCr#c!1m%OaIhWm+#n8*%mS6Y-!jB0W zL#cEZOjz^qgOwiOcKb0X(+{6lnV<^=2fjc9Wjj_**l|j36e|oCpzsLEtFb}U3WUK} z`zVD8S}_)dj%efa8Us%3zsyA|X)ydohDbGXcw;yXwRFDD;kzR&-_iy~z`OqdDk4bb-;9gs?q?%xk-xm>JWOu{N zv$d!%93C;H!L*qdW&Z$)T!e#f{6}B_OLLn#jUw1Lb#ph07kO@4;SEw?sfu0aNlYLP zCDAKV=|YQh`dc!Ua31fnIMkL>db(EVbio$T?6ePWga6nz`8~6)U~BB$Y=M|x+zq9 zdX%#jiz>cBr;Ve_3I_KhM?_$1?{RLvLz5E3Wj=5bJtC{{Sfhr*O1umpt1zn(*g%}W z&)C)wFe`(?w+4b*W2eN@Vv8aBn=x%i$iy#}Y{%J&ER49Q1@J&xLw0_Tuvrs8$L?o^ZJ25{8l0_9lA3@Kq<16u;5j#0KsYnPY-xH}HQ@Kk+qwm{Uulnl_jHK~ag1`b~;VAmQ|dRB|ynhP1?# zy}*r?m0Vk2sE7@1w*dk!><>^VCs*Ch?(olUD0>A@hp>;FS}HF~$uf>>(SFpS5MRjZ zU-7Xi#klGtPU9Lko|$km>)M>OR ztlYKnUBKg4#Ktr6!77m&Wt3Aonn6^ERdVHJnx$8dXL0 zc0!X1ve=^{BQN<9Cv~6=o-O7LWPsA0Luhadr$43udz+~jXJ}hMglzYRosUXZBekn; z$zZnX8A54Pa7%FzTTxX66-$-kAhZd1>AgkJY952Z5bp3QySB@`aSB)k5XGUY#d`rUjmpb-B@A=astQJns)1I+T8NBw3yRqqwH2rUg^*tH z`hbV=t-_Z0;-OjQ_=&90{?WA{KbVwjJ0&)2n{&BB)Zu+ZD^hV>vmnschY+TLq;jxJ zIpjRU1zno*SnO!MJ`lEd;9dQV)Joe`XnTxiVY*PL{#{wAQx%%#JRB+%<{=-r#(zZT8Dm2Ta zqYnjmJ`%&;zKb$Y(=JEkrJ}GKYm4>?pbJ3UZG?G*0f+EokYb$odJ+H#p(f7;;~6bX7CRnX!P;0aCnX34YZPIHmq# z>o~U~i#IDFzyf@9#&zQCI%ODI$)}|;R^G^B9hy0>NvPVmr{*O~$^QTZs)ZIN-u}x# za|6sMC9t|4^-`H=Ql}2{4joIlFSOLwjy$@kfK73N+2E`Yn!vxr*TfdEB^rGmV8WT- z!%QLat$rc5SwhTn3KKe7*X~(S%Oo?#P)M0yFlT&m6LjM1$)k5)%r-d7aLYoE+^#{6 z4a7EE9VUUh%TT+?qxUeSaoZeDDRTneP6jJm1isf)V7l4K5-ERqVBE$SVLW-qu8(tE>)wVFenwHg!}B$ zSUUJ_VNt^0wgk%Zj}H;$2)X1BVHr)S`5vP=$7V`?^#d!se#esSYuCrv1ud@afrljp z^5p*j5wg2<74-6B8?j^YGiq0#;T?V{VIvp@Y#UE*A_Maqmb$RmzLCHsIUXI{Y5>hW ziG#;_c0NJSE2E!bSsK*A`HFhPV1@iu<^@t$M>piFL`E9J6es|BW)=jtaC?t4oh$f4 zmRGa+hiMraIBpVIm3So}(6k$6J+16v-;o(^&VKZ_wt*J84j$*c^;Syi$avkQxffBtEK=8CRM~;(PGYKRJs#B zeqhqdwE^;tz(#KB)_E!7;XivI=*R}@Q?Sbn9y9o2XHE`IzYrWQbRJ@{Mo!_iYu}QN z#|&;Eipj&M=bS%&-e%s zz}z$bkj#fD)6b|tHS+u+W!CZ2*@+=tHR0T)RmZXH0eDz=Up3?w+iAoEL}5;!>Iex+ z=kp9Dat7C*#K^cUm6Sk1+fU^=js-LTV7&w|2sRY{9l*|kd@IuuHz>Lq0wD}m0H_T-Ck4hMRrRw0MYoHX}$vyz;J&s89y+(5g&Pm z+~BMoOO9K4gC{4uh1MFbKhzE^_1Q62RpYpz0cFZw{@JKeO4H6Emi8UY5}K?VzmXAx zX~WosqT1D515E(DJ;!|p)uWfmRWTVK!1uVlcP>}{gmlJmcKa0#{#UFZxVu`w@-Pyp z)?7kySYVj4J48qRvnps^RNeN*h;NM5AL=t})x!lAu2HW7UP+h^Pii2CM>@Xi*uLRK z9^*!qURnEkf`S9Vf8~~H)0dZIN+DMYzsv?&^0jcGVXJw5CKXeMYrz#oE|*~jBr+X5 zlmd>3m?gVr09-#0ND#@hH1fn0K+vv8QUmBf1dZUXeS(g*?`#}^=K5vboxuf|=nwN2 zkUxT<7PQ)w{-bVxC4@S_U|~MW>k6C{>6A1*tp5P`hQP%pWd8tg0<9ZVsKeyl0Z$3s zAPaK%MCw>BBYqfrjzI8`c5?uq3$=0NVU-52lai+^MzDDHdos-Ufbb($8W7W}gw8Am zFW8{EI5B3YmOEkfLmMFP?3opgSe920Ie=;4<~XolD4|vV z08uu`nE3}6z)Qsi^A)ZQWVrDx8|GgN{=Q44d*d6GV5Yg6XehUcvXgo-5o}x209m_y z{{WeV09(h9CA0%H%%_8+dFl$lSDtk5>|xdMmp@@y&}bST^%AKStwM4`AgQ4_9e6}l zMLg&_iV&?naKj8_ju7rRIH!{ARWx*W8iuIqSCOa^KalD28W2}t=k*`KbuH*zN|0zS zvVLYk1yNjIgaG2BE$xebNZ?^>yXn8IV4wh@ll{h6XHxnz3KT0RG)CM*PVIukZ@#|F z;;>Oa!~@g{tJ*m7(Ok9Kmr2mkyTqe`V?#b4f?P^n%lh z^Qn1T5rEZ;EdY+$c$UFe8Tl~X7$SgyR_L6GTIX;TwVpyXMrOeqH>fJk-91cgc4%c* zRMu~~SA&Ca8!Kq*f-PiLvALERZ!5Eb1CvMvXgwlmg5x?wO_%_4o_dR_~UG?fTLoE!^nt> z1A_km*imAsw)0&;V`-tw@Zcq)Dr=KlVav(BfAoc1;jjJ7*hSeOCdchjp+1cft0TQ( zk-=dWkP1h*Sp&U25a=3LHp-%n_?ecBx2lbys3~R|&=$1?K=U2`dxB`&Lkuud+`Gq6 z2rcc`#$FH|Fn%D=7;LpbT-LcAQzzL?Q8Iz|m`RY`%keCHF)QdjL;=CtPb(J^lZ|;g z40;Of{{ZB)cHRm3rd)XU;#ZUDGV934*py0uwTH3H1{!v6Wa7va0s+q^I2ikZ<4y{M zib{4_5b+EKxIV)vOqc=laao0hp!$A5X+`QO*)nN-v)6)M-**=zPh!_9?&YuW4=yn# z+2}BfS%FvRgN-<`fV_-CIip+904!%MPgN9~O_#vWM zmYwwUK`{}rkN*H=2CHl0{EQ{p4;Aro8)HRa_w|JI<0{WUn3$-?Q!yNoE>Wmms@+!+ zg8^olzJu&m#JObHyb`volh&a?0&$G4&p4Jj0r3E8EV(P!$$+pMZdFR3MqLa>R?<){ zHHV620O9EbfEwd8dj>JYzJCq~3lJ4o!gT-|Qz^fM$dv^&33CC2Hhe@HBWq3|;@-!J zLJ+;<*%;hxs^Xp0L`+x0C24>iRFk`Dlz}P{stzg9EP6D%mx%5fSo=AC zW>y9S9;D1RyFKawg7L+9eVEO=yv`V>c7!(<2ym;9sltOT>*Up+R@=$D(N;vk5mr<4 z*nmSwrzolN`k1U$XMbb4XiX%rSjkgSf3{FleCV{+UVS?;nIx)+8rIS{1#vFgbn3f~SjP?_w;F0uDLr=xP`$WX^Orv$g|Zz>A(Hv6tk~ZG z;g2PNlq(g1#3p@(!S$4v0K=K6I2?D>PR|aP!dwPg zc7DtZ1{wLes@vIxTgS+$V>GQYhe~YusDfJd4fx6pc;#^PN*7b0{{Vi%qZ?@Ew)`$pqz+=Oa!>_XnEUR_XL@Qoyw72FRSn*>I z*nqc9C5ryV zZecO6Ok_V~tn?aw!LLL#&5Hrr5IRCIB8f) zk?m_A?r$3g_CWHKLHsKXg}HYCbnJBjvsxQ6q#)T>`hx{ zEaiD-Wle9#u$~LE{UkEGDitE=c~>@kh?Kj6AH*Rwb)z^Hi{#aC8=aN~GoSl42G8R=;O9*~goT_siS>i%X~j_>oJSnXGixe5gR2=wvKtAd7k?pVH5^htRL!GZ-;5k z?bM^w(aoIPDgl5i3HBie2B&9|nNUE!J!8qGDc{?a%?zut?VqzuHPHsdET05i>ZP_a zppB{JT){H#K=LtI44fMvvw|wK$WurvVHjj`ySbWx2HRyi!=B|{lxFX^EuGzdUB?J7 zJC$bn;u-Oe%X=Y_rwqs)v4Fg{R79CGnt)SB4#{Q=0|oKyY{0s5W%&$>Y^v2UQCb&p zDjZjie!ydgC1%cJ5oin!YpI?Www?f$w)8n@{{W~eb+LXC2T<-~Y!G$~aq0!E<-dUW z9V*oh1kv&`?I54B`zmfy9lHswv#Y3;JRmd6@?>*TGu7-?Y~QR3m{z$DS-fg=R-rY@ z^H*VPrCb#N^(0wZD&0W0L-t2Kr6K3Jwqz+!<~0PY9zJI2MO%PT zVRV+xBT!z+(=H0DrD5!srj8j0l2mXpXYr_s#bUVplVL#QpC2R5=7me{LI(wcwVwgx z8kN9k_v8^yR_jl<3;rD+7I+EsCBc{XsTzQD@R zHrX#yoZF+w=*sD~Vw-NF7*8kWrL6J32L=?1*a}>w)E8IpUQB?jDjKM{X9NrHF+`ux z#L{!$aT^cG01H-!Cs7JhdY&jgM53EbM9W!}m7Gl!=a?7DmakP7_PfyvIa#sdcrS9C zgFF?2V9*?1N`L&AA)?9tk02QVZFcu96fJ7BM(9?UK-L}|((x6B##0BUkjS16-QrzI zuvd!PE;Z?0&BQggSX^(GW(1o%6%0Tk)f*5ZZJjy_AnKO9-R0_a{u&m5yvyZSS*EHAWR$zs$*T}Tx z6kI3fwPCbE)yvm8Wl{9^bFS2mQH#=&I&f_RDnBmkI4S{+N<@!R=X8ZXcHbau#9mk9-4syZ}roivXSWc&J9O6>3!at}q z3?N<@@~#ElyPHm)wCn6`VaChj?7CUqI+Bh8yakxAJ%}f2rfm9v3jGn(qT8S<{{Y-n z*C1*A%Btz7M5n2xL;FixLDZ)<*V$}jQ$*pd{fVAruA;g71%GLkY(Do8>d)mc{{T-h zxe#buN$hT6QA*R_kea(x( zGvfaMaFG}bJsqT347AV>_=@Y6qm1(gz$*vYTw13FqWE0$mKyS2Z?@xL)>rw7o#Hre zF*AZt(UCKWdB4^lL?Z152$UEWcfQ}K zHN6Goa{gjiyG(e+Kx<=~YGLST9Gu^hzC<#2^ZS;$tnbJnuA|D&vnv}rWY6g8QS7Gg zr&ADgaAg*&+_Ek^Mkm_lSRp}u2ZS;h)wc8O(L12R4X=#73{eqd1#o>Bw-I*(SQrOr zg#bWH-*S<_Jvd+-x`;Vo+H&{d2onpOV~d0uHXq|JLM#rFGsFR+FSxkjo4$yQC{}71 zMWfM8n*G4+MLa*;OPSRh@EDnaDI4HHV<|f0*+mIfP9Eh)R*g6YTn&y!zQiODhwpJd z5YEk6FQ#Z0vy@@bz+~0{c!-2cm0f!l&HzA{;nc8A#QC~LTLRs-bC`ffO{1@n?4=d? z9;LdvSfMsU%1{>0YsqoMbRUSa(!!;3>+6W^+h8+!a*Kg?e0fce`j_G2W$BJ_J#@X1 zDusE}^>Dl8J)#)_Yi)$dg*2w&W!08hWB&l;waRD#E{G^0L;nEgu%I2CXE=%%3Fta~ zimY0*0Roc@3`Wi-Px+N?8sLXz^(oI>%i^&QKOgD^P$SjE(2niu6vpe5 zxj+xq+%1k>@iVYru&b<9;d+}6cB5wuu$*l5DBIIKN?Ox^3I*rcY+(y;Cv_VA!k-~0ws!|?fc}R ztQk3O0|2>F5eZ^>`w$8e!>BkKNw~{R$pqj#izlH&%^gJSmMOfw%5`N_@00Tl4aOQQ zSVG+ugBB83%DZK4UZ_<)u_e82k>lXMEsOr7m z-||JM&JL@u#4w?tyN@cHuAxocsu&IT3|?y{u;Ss(1(}0>{y;z!TNJ5_^T=_~>cJ;@u$ak4PT_7}1S z_rsO9^W@yIY7V?d7x|e<8V(}4?GbAg>_KA6y|}4#uxERM38G!FTAQt$dnzHybee*! zETLFlS+tRBhzb-u4v61FNp$;OM-dAtO(DL5{UD}n<} zjTm6609{AeDxf#q?o%%rf6zt>QLbLtwgo>Dh2ioMb}nkG;xUq~tIrsea#m@eu88e5 zM0^YiDqLODFh80LLNG^;+^_r)WopZ3F6D_=lJ|3Ilc60&b}*}v?J@%L1>>>^spdE7 z0P3iLglU+{wBq)}pdi8Jjh2~g*&BN!V>}81P~&yK_X}uR4Zp;7!ubyn#SP`7q>08^ z+I05-Hq^3}=KYNYZ&yA$ilkiUwqFEp99IlorZaL}v1kxX8vg*1sbzx&1T;h&PctVQ zv+-5{z+Di!d7I619F8hoKw~ssoqI8X0}9v79e1C`GB=($1WnS0^4&sSr#uIeUxBn zyUKs07X_t<_=}z)Hf@#EzRFNA{o+!}y8i&guoSYcUgMzXtkxmJYzu2QOggeQrx3LT zEur}qShuk7gg20^9wK;zU7DvM4RSOzE-o*1{{Rp{0$R97OA*XVT6+5l$tWlty~>~{ zcA{yoVx@ofDduJrI8Z+KFXZaOA?pQ-CF|k7VDxRJ&&Z8Xz&+nAKpK1S zJDtQje$~Vl%N>kklk943)yjQ@sgaXNlqyCZB|A{r%bW5)7v*`d!7pT`!L-tHMrf`A z?H6nOM!d`yCpO0Uyck!qB4k-hr?{bOwcEHTg0t@=)>3H zQ7^VKSGE%2K)7#n83&^$*;#lt-FuI1Z;pOOw&wCWEQr!OeUz^89_Fz8brxvD5qbL^ zcjV@W31n{+W7%>!?d}YNJ^uj2swHe{@_mR^1iM3OBEwV|bMi1R zT)ttkGhxTcdM zA;d)+VBU@(1!=QzI*XzMcfgZ#CXOl&#%&?&;#d|CIsD8fu3R4V9rGs59kD|ybo&cybpJP?d2SM^67L8egTFP$$h|^~v zq;(k=3u9-(5ikJomCZu613`2Os^ysEYO=WaW~0X0MXh^VKEtqYFGp~FU>5q0*Bm)@ z7?5Og$0Foe%s46s3&*i>HZ8&Ujx*XT2&1ZsbMKci_$kDz%qL3$BackJs4p*nhw}!9KglX z2ypJ>DT17?>IjKv!eYZfwXy1G8nIJ>u8IOznX4xSeeMercsP4t9F?0XJ$}aE0_v*~ zxJ9k#;Eh(-XYyskWi5F0`x;A3H(ks`RhIM7apVYVce50wEFavs)x)O)^D96pcNNSu zi7ZY30EEh_FP%RyX5hfRu{es<3%_G%4q}v^9mHS(wEqAh8X4hf&t>zd7!lNj+v>$S zDA`2kv4<7@;namU zI$|1_He0i}RVk@KCS|%BPgkhK5cG#1B^nBzAGw{*gEq`mplk<>+PDpM$q@ykS^S`& zNEvf&-J1uy;fxz4RRf!VD;h0!>Z5XW62IXoOtoztzQdtv6pUz~%^_py_6oOwd1pjE zdKzwaLqTaR@!zltx+y7umSWU!9QcTAhw1vp)FXBO0J1>3CuOwz010&LcxF%;!T`jk z4+JOyDQUC0QBX>zX_fQIM5ISx!tz*?!*k|?n1M}$BXK!cyKxi%Iq_YvuAFBXxC$sz z?VngoYrk_2&ZTJuNY@6qmb_F@r`IrvO0FeM7t{;5jj)z45IPW0bu8F6=ty`-ap3!_YK#Kkq6)6~$sz#u4aj!*dkHoVH~VV`8kR+RMa3=FcH z<(C){S1$yi7nH8!Dq8`U6GS#~77njbg;$ZQQ1t{WJ7|bpC8vHuo{TC;?a_{U z>eF-{>5m_Xld`WBj#eBNwF&N12|C-ON3WHvA_i*e*i0qvNPxgc=Xx zU{2$I#0?XCu%L>Ii}a7XRc*+RUc{?4>4*^hiZ{`yDBNvpA3T@_gORiTMWfZ)H2^~(7ehyo3Tb)+6!-E)k2*EfuoWN-hymDW#GHD=>$S-7QyX{ zRB1|Nw+^qVq#0}*-ha%n5)4|n4@RRPnQ3X{7pjF;{{ZBGq%4e;=DeITdgtOF??uG+ z67fL5+E3vNZ^hM`zMv667~s2yVk2s9a7|!T62JR2E}G}a=LXyM4ruD2D7BIW(adh> z-NdB|s{PJKS-9yBwnB@*2nCaY+bpuRr?w$zZmbhiAuakNod~XF_9Jw+bqWz_Xce%v z;@XEJn3V%<&FCX+8s9;=ppAz$d1bdUz7ph7YqA<36Sfc+grFjUS0lwtv7V9Tf6O2_ zzr8s8!H65cALbz83hkJGm?6D7D-TMDRu&%JpTsi;E*9!r5<>2)@8LKdW-2VruuK4T zPsMi#V#_Q6{`?Tif#_1LM{L0c-vR5nS361o^zLrZy^M(dh5$|6+YbFA2RAIqWYCP)LM_4;SBNu-!-Ld-Lq@a+3f(IX9-%L~lb4smSu*8)W&A{` z1uGv?yTU1<_t{Lq(qq`rV9iZmj738f(ryoRUoMaZ9^Iv~{7aiL-c!AV-8z*^ca7i> z@W*lDE&ywJCtO%EdifRMl~BYbQ7B*Tm9b_jJ7o-x=1T+ukSMlLD3RfSEB#6kuz+xg)!2SMO0x$kL)g_WTJGQ@(!7k1 zvo^YEoZNRrg)jB*kz)jS}i4U9Ps$W zZ#Zsh&gT-XR_jX;C-8_AQ0cwLRLb4zV4#eC#A<+OJa_q)vbNU}nqV2eVglL)SMeyq z)Ec>R#iq%z=ed~!8un_akN8B`F7aMV1|`xt8Glg)0bst_V6YWqm3Fe&AvEqRPzUJD zM79SPvQr%MYnl1fMzCE<%=*rmM&K#D-*xFTFTL1(fYk|k!0K2!D9OK1k+2d-V$abU zm}pyvXYFy!rNKM5B%w=XESOvdAOP&;s{F#~8qWOx0BJ_aP`V#no3sv9W%~)huvn;Z9)#T-HlFV`(K@E0%R_?vgOO|#L!Dnygu}HN6Qmts3Dr86VRp=M<`y9uC!^TpDBk)103)Sbv`Qcl zp^yqwuM+1AHFLWNA6b?o#EN2ko9MFbEN* zdCI#wMx?8@*Ut>g^c*Y?ViBn)F?4-_xBxf1?cb4`s0$B~Lf&zJ$bnVIR07g@?>}y3a;ADCDRC;UlQyr7rx~@KyF}kjq!gWt4%Vkq9u8z z2M`_@XtHOz{dnB3aD~?_)2Z5f7=8~H(21Bg$D0_LOw>Ey-F0TusM1A z2n`=qcNKDFIj-Xva0Gb=2nJ@K0xnx|h&E3p%J1~z9fpiAX1@zUO*@OQ9We1-5HAQr zigLzbp%qv?AWs!Tk?J83+Hxn@^sw0t{E=ytz5S!l*w~tlgN{6JQ2OgZzqkD(3PP?! z_Y%#jQ$FqHROnT%16SM<8CVPf6)>`6L~%jVvt0gTauUF{&3-1t+KE-rA&v~sm&`46 zlv<-S-Yt^lUk{?aQPJxc0Cif@eba&fbSc*R{>B^dif}Ew8D zKsl9=QjZ}>nWvdbgCOImP?=G3*Y_!CRyjF=DIdgK&{wciIJbAi%R+NxHF^+oF5||7 zzTp?OM-zx+Qr0rdNkZ-3CJ+GU%0CuieON|nNq8h*-0aewPeOkFY_E<@e5riVf~b( zGQHthVa>!DxFM{&;qp=_u?RjabS$U}jz+3FO&l$!cJ~prDCtwjxtIX&CxG|4S^`pE z#q#nTDbTXw`ndl9+KgOramY~EvFAVBw ze2UDi!u+Dz704SUgLyd~W&-$e*N|QUo@yYj0BvO!&%a0uMQ3t??|er_UjitzqMNt{ z8@`Rxzr-w?WtGYt7ks_PV&SAan1cBpCDO|^Mdkv=$GZBtPXu07iu_6<4cP69wNkd{ zJTX&{gB|r9VE#duI-GL-Kv@*1IWa1FA>)OvF`_;BEcP=1Jra&YcelL zf)pqhaX~>Z!c}IMeUiqI?FhNDtD7BiU~l3mEUTuvzNHFY2RV9Wor|1k?lq+MvGw*` z2xdDT%K))&_Db;K6w&1JWm?c@FKV zJfU3JL@R0rgmK)@Gy_8bU`CnTs9Y%a$3cbE$;+G`&njLoIhdV3NIWT$P%Vuj&} zhylSeHAjPpwY98on6{#YWe#Cipu9tiyBecYAQ`>Jg4WkFD~8ud(z#>}{Fa&|Xc{1t zzKYp%whf-VB4^04ZXPMoId;H6%Q+sgr*8v=8_^UNfwn4#V-N%TkpBHhJ}t|6~L@9JctiWXPdXu=O4{3BA(-SG8Lc!Jc7uUD?FB`eX%3?-7^ z@J1s*_~KD@^=uY2VAjj0{Yp%wPY)8}1yzRru}n%KZVh)(p;oGvE}}xX6>IH^GELwQ zC5%0n4dS|$UMh=H0WCs|*FykRBVsXKx=qW#UPCZVu3}SKP3%KC;^pt zK=BLUt*tjQk@32x20hg!d3d%Bpv7#Gz4#RnhcQh{yQ{-kq zGbn8Ev1^q!s+Y83Rx1kgag0Gla(tF8U>GapV0qTt`0^B@?YEO@1X;ti%%ZnVkqxtD zeqzDDDp|={t2bT8md~EV$SH38h>ixgov~{nPZHLPXoRvH6<+@UaQf6$vYds&l}`IuAT0g2YW8%WV6t0nA3M8(Z7ME|XIsO0!nMoZLF836wPL}nVjAz9-Q#gq(M_(ssz z0O9Pm$sA-Kk#KAx+XmDxpkte55Sly7qq$c?E>$t$?3WZfG6yz&m=vJ3W$cz?3awre zU@Q)eU-_Br%K@j~lJbHc7x{_0fCd`zFA(G$50h;}cg=Ro9mP>?JLJVza>v%1sM4gEx9p{C4~lgM!{OFYjMcw9hNJDI*pX)F0O21XkYCT(!y-pDxg-- z(5({o8W)~m*&G;7;;x}=jp79-F3Eg=n^$$r(5oD}_CAH;ouVRT6dZb%g9@7b z${N6f+GB4_Dh}F)2sB+6Euez}J9>>OvLwy4!b~!^PHu?NZDVGBLXOQsZOF_U(CyP4 zRG}`rI;ms=u0#RYBkg4S3sf0xNft%gf5p23<6YG5Ym+I)@WR>3#IMZw zPNA9{xS0g~prf{f2vma4%jNkaZ?e zUCW6-l55N4wK*#m`7b@hD#<_v^AGuwd%K(5UE($0ZeJxE8+bO{t&zMBs_IZ*$`}6t zESC<7Ep^cI$y=IA3xxuKYu8X5F9+r%3om(%rQWl9mKD&H;E1kEZx_t9c(3YPT)n^4 zxU3hO&B~pJ#q|}bN1``~qXA9lKdFGgW1sFdV|cgEe~3^~s$OA|4$TiBU2(C=+&Zka zy%iD$gMRB(0amOeaViFM^nl)gXu5S0Oim2rh}VK*oI7Qqq{RD22_u~J^DcdnS8#5_ z30CF#8q_jmz$L=N05v!`Um+j^NZ2(gyI3cV&$8pIBGoqoAY!4V?o=ukUQ=@60#rO^ zuH)`>kn@%iw5+dPJ-Llq!G(iKD-!Ipg7lGAAyk`+Rx~YeY>gBE&|}0Nz`dCN08-T{ zR&o!Fu*{&i4*thw8X6MaabRSBx2VjfBnKLvFccSUOIDjGT}U44Q(rRk|sVw-Kn!$Qfyiy$i-px{H) zD*-b4_Xw}vuFeaIl(SS$%hcW6KZYx~dJp88U!pu7N9@D~*r7)NaT3nFivzy_)CJJQ zwZSB{TkenPIfSTBNBTyTgt5VnsssSWbe*HAKeo>V znjoQnCSRz2rKY1Wwu1qGs^&ZznlIZf3CQ$dG84y%Kvw7M7`)qPg@7FfA#JQF!8 zPg;G%A!U{qLFz*_kJ)IAwN(9|A)(22%JTe10~_>B zpr#yA?4eaY@9@WCvDO}agz^g2P}dE?#vucr!5UMu%C4y>N6nO;@hT)std2J-d5H=? z)U_-Djh}xpKqqhYJw#Af(Ma|d=**_iNC!hLKVhnk*D#QUyTY>A33$GqacESQzSols-SOarR6K_YDSItfJ8>gAKd#NtEV$l`JjW?!K zJz-IO#)JX0i)`(AiX7kmUuB?VT`wcxaS2tV)Q2Bt_8NHG6yQ8Z^dXFINLjdUpm2yA zCRm5PMaQsG%~QW+BExMYt!?}{f`)AkFCUm7l}OXF9c+!fn~!Tz#!yPZC^#9OMXLNd zimNQ@FKoRT>~w@i?iH3XYYjNKA^>Z;e3t=051qs5#z(ighQUdH<;8z3fb2K&UV?Jn zjbGw8(HBRUADLm$*x%9#EEdVTCUk_}p22Wiu*rb^m2vqCLqp;fAYO)PP<(PXv&g5Z zMaZncln&D(VS|M>2O@U_r$XdkK1MJRM%*jZI>a6W%%i0n+f9=_B~f|ypwGYs$Z-_| zvW!<16{3b8;R9$Ww&J=t1Fql#p<9&^T;c`)0CBV7W57-(6EA{W!?^BBU8&7iL!{k)wjCusZxg(Ks;mvK`J`zqgSk5?GE% z5{j66I+iR5-eMr+(1u1-1-3ix6$0P}KavMtzy%Eh8=i}zyGD`9P-%sSlYEXjm{z-A zOeU2|BEG9+5!BIJ4&LR}Xchfmz0JVbHf$cCs?zT;PERvBLaZsnJVZKk7*4-3&1jU_ z_;f-r?+qkll*n>>zM`Tjhd+xg)kfEDgr%b0j%a%-k(TSB+=Ct{IFdw5~EjJTtqUq{ws*@6KwTRa-xl$ z!zT`o2-Sl+p>Z})TYLWEVHgdXm81-5{{RSEA(j+Br!vb@2?sm$mbI(NzMtTP0CJc9 z#2YFSTy`}8!hi!}l$(7u!)LA=BBp}^p@Y}g`2(S#D#G|gRm#9cBFgrMY z!~$-p3ZdWB0lRsf$?FvwkWt3siUlds^!19CMiLRXqsfQG3Fy=&)tlO4HP=haarP)w zJ87)kz_t}&cX0KB-v@|`#R$GHKd8kau`7WsoG=E^!LTUm#quFbip-B6qA4cTX>QlZ z2W<6hx$D`4ft6N=l=cjT7SXQymiNR*uRhDN-zzEO)zL$Yr!*1Hm5azp?H(&yX z*T^)ixoaZ(5)cykE3+(E4NP!>XnDS11c+5r$^^<|Z$2UsmTm7mOWzHG2XeXaAW`a7 zAc~w14(4pI4GP8pv36{(V9TIV+-vg)7X%zFjvgYkEg^pX!?;s3Rq*?#2^7YlE-Pn| zm`d!*Vh>sBdU~tQidYI~qo?yk> zk^a1i7+bE7WM-xDcjQ~ha024n!}ah-PnHb$C6Fd{m#@k;USPr0C@TOC4rNQTb`&p? z#Y?UBr1-*G5Te?$KbRP75GlBX&@kF-Djd8^XbKa}o59?ns#1Hl1&HIkXt)1#K6s&E!@=?QBDcK&vpu2fyT4dY5 z%*EBTbmF^Tdkb_EOev&&CiWa6I zD*(E$MheQX1!GnDni^|x4UE%@Qq0y{sZL3FKZH0etsDCn<55*L$FRH+ss#N!ly>qk zj_lXSAl-z=H9_PifcW_N2CY`-h{KV6;bzMMpWHBn zw8aq;)#+jWA#k*;eT!wZxnsbB#5}ifPy$mJKmCPa*4owL3eOgdwaaqY!=v_t#SLqN zmI`cHZSepL$zb9(q!xo@jIv8ov6n~4C|!~?uAzX|lyIFx45sYOOWjpfe<+g`Sq%2f z1f>VN;Dmq>(7OD>vW1NmxKz2;xi8q!oIVKtiD?s8As+5hjoqfjZF7wy@lrSz^n7V+_6$hQd)vDz`23B!o zS4#}d%FTYD6wx{T`4-1wa34% zshsj%N-R}Y@%B}gNppqoeW)8Cj+<+4$}o01%=akFm{5Oo-_8LW{^e zDU|i^GU8PffgT408yn)OS~$6LK#g-p`G*D~c9v15&Svv%Qyn^i7I6bMik2j@VZ8?r zvZxj&O@I3c4ebT^zhWYS7LA^J5qcl81K7}-(4&zhXg#JaABA1QlU0^uGkhMd$IU~CP#!irJx>0$xxu7yY^I8kT=AzMlHmv z4gsLwiGs`=L@?W`d4=9CoB1ueR5?_FQG#Poa09c;2%va-fuL)lYxRS+A$zg*7KVlX zCGs-cbQh_3C0MLNJb^u~S-JsF?mTD%XG5r?8XI`_VF6)yClGw{u)tG6Lf>1|8mItR zUU0@KT2*OZ;%J}-*aqd=VLpxDQ!MgaHP@6tjl5S?2>i>FlYf|1?}M6&nHgj7wPT*Ww=0Kn+nY?Pnzwm>VLhOS84d z$fIc6k|-}bWvOay2M+{R^6amG1Ns7-QB#ylT_9S zg#o!r8?oe=X7w~PLU4pF$?KVhF;_>BEm6-g*Kfk5U$a$S`=^qv=nM|vkW^{Rp+FJ& zaX{cR5JJX7nm^<|Ag$!vSy*=K326B&V?u??U+N{S6{gqOmd-FVZYncHa6eJfr6uV0 zWHE-obaY2$R)A;`w%{JD4Dl@Q{{YBJRcP*1OpP|?C@XMyH}VLil|fHKIW>?g)oUv}}vMQi2MYB<$4lT3$irf{k%9S)BN?`UKvbUFO9if&6SShy5 z`_2GthiZ*Mkq$Xt)4(RLu`wLg~FPd zqqKz5SXRTBSxRPwGQ7LBu4-0@fANDWEkAJ%DB$t~OsHOT%K{DCo0SR~ZM;o@0?|eC zBwn5ofW=E$Xxh9~6N?xisb?0-X&doN2b=OGIRK%WI46VaS=E9sA**# z?rc08f83^31E+=uC4;_FQMv;V?YLSXlmvbx4h0p6Qh5?qCX#S!30qqew9_7XppWhx z!Wt%?BKuE4g70Ez)D~qysY6GFt%#+!1-N#o;&vUUwQxL47o8Y5xq1ecy}$}DYmERJ zYtt}Jv=nZxsxQ#WoYYvV!Dqt} z1ms%|8EYc5mr&Tl?9>b$Yay(}EUd;I5Ku5Qu`pa+mlG&9;`RhIOgFy}>)DF*^@nfD z?pII+%Qo^PFLlWquS1B)S`~&8jF^XqiYRVW3SpNw)S{IYuvx42P{xX02c5yXnNzpq z@*pAsL^%&(2T`%vTz;aGR20RYE=$fo6Bw|pwW=oKZIl<}JQ_v&Bgk~#0|75U4Fz*h z>w*Ie-**~f89aZ?0>zg?cM*l~2AI@wOAZt4MWWbhiAAlA;r?KS9k^p*domazP`1J2 zY;MM$t;C|TQQ_iJwUIFPO`%o93CQ!F5~)@zj)_NnuZY;k@;MPiB?aUqHn z9insMxqxPien$M$3#`-{54}A>O#&KH&-siH%$EI)C7^Ks03nwK%Ax1ULj?(c4|Dk>oBH-L%0@b8YaQYJiCs` zlYPfV1EOWJ&k)s!buyIf-tJl=+8jPh7#*<{yi=6v@8lK$V>amgLb@Z!@ctsw419uu z&ND<;IG}492FYaA_YFH%7*3dmcs-D~za>md=26=Ude<-cJuwPR2YZN=_boGB{FDi0 zw`&cYW5wjRV8G=0EjSXDRo%i#qI(Zgf;J&|V>nyWnV5l9O`Q;s<~Loz7e%sm{{RsgLC-6As8BU9tW|XV zSI8#5VYYjy;*g-<41F?(0G*9j4{Wk3V6ASRonbm`=LdRa)5r@;LhT@fY(8s%F_cBZMEN~YTV|QX(TQCSYf=41h)C?litg9MkTLkyZTxX@9fk5aCx!Jvrk z@ZwT{fbyQh!*>rJ7!|1aFr55=Clv%b@PR=xR#oN0ijK~u>Rn4`OCKFdt%p*f*^_LU zQJVtxJ7q>}EOfyK%_j@_7=ji?EAbj4h$+Xi@vvN9XzH3JiE!9;UiS4me{Zy)Hy_#-y@xTxLS^- z)$FJ>S4G2@4mpKHx9D#YJPiW(-fd1URusBR_nVm)8M5Sr1&fn6_5#{z$nFSKh^OyR ztk+iPgqRGSe2h%BzwDG&Heh)BD!Vt1nms@xs zwx61a-Kg7w2dakf4`1pcs#P!x0>^_LM(VOxb0E;o)<`89F?MbW6j++-8OwG3KnR!} zc7gS7>zHy~URQdEEH%~h3bQ_kbtrOL+tj=s23@F1yno1sMpH}2uyJQ$aSUO}-y{?U znqWW7D9{{)QBoI%u&@AE^d<5=%972p>=;GCEa>KQ*0d$VA7+(`+ZIXoM8UhP| zc(_Q!rnp?$o-C9-N%O z={?Yx6GP$V4I>+_>|3vqu_A!u7qH?abP-%+%s+%DEG?v6#s%l*FQJddD%L*tEj0Gz zIV~RCOqck8bTwBsh#sg*fyus0QKw@a#WlmYM^e>*AH?yE0@)}vPx+QHwc5D+PQzV> z-lqVCxy%J5u)#6;mRH7)A`}Zl`0i1^(1FzsTXiXCW(eW3j5!N|hK7ut#H?XWwW0#0 z=CTrtOtu@8fNZO(jy9TV13=BSR}s*Ha_#ahuH$EL6t+2Hl}bfm7OtRM4hJd3Fd1{7 zlW3ILZ9sOVIfEk#wHMnAkQ+DLw7`qOG**VQ%rsq@x3V(IvJ{Zy+Nb`gF2TOdL32Qn zRf-+Gvou}iRkKyT;s5}U5cZV+03sD}C~If#IxPs)K4VgjYn6u3G+Rc$mjKyVQN zE^Pd(kac-5^b0aPqEK5m~U-(m(MxBLpyg z@;M$*+rx1ZtXe^TliVk?t4v#uVAVp4f&Tzd9=DZ&H<$GU3;?Y_Qorh6+?3jEsGkm$ zFEQFwykh=!yZDG{V^vHAY3YRsHcPt_u=rjkrR7ogwO(}b1T0H{GWJt8Y9NX<6HDnD zT(L7U*L<9EmxPEm8H=>8XO-5YwRu9vAe=Bbs1FfUeZ+gGVtT|CSGQt$+$6;mtHAjX zyPsmLRgF2*Ew;w1eaazLKjK~5l}vQvF)neg&=+GNcYR#F1TU;e?{fi(2TRf6Bh z6>!E6U{aP2rI;DM<^U+-&>5ut#WK}l#jDNAt&c`ny!E}sWfUAf(Bst2PAx00M4GLEucp z*Aa_tl+Xp`dtrgnw!3a2V3!l9aQPDkG|FPp4mryeLk)Be53r`DK<7S~a)P+Ly|1vD z70Al1rnF|_l~uvd)Hci&Sf=h~_GoRV_(3aE$;fy?6h=bg?87ULq8qcH#B{Q;WR-W1 zlDNn%Kk=EC<#K-!S{OvBUZEI-rwMBOVgwxWF6-Fi62axfQGh=M4R}JX+NFU10C4{R z@=k6C*`CD8spBz;LTke+!1Op9g2(~x<_KDf9tL2qS)PNhu^p{m)%jCwNXm6Vx2Cso zLCz6YJH&S{MOgMbbIJnWLy4Z1Vo>j@wPKC-6qI%#I8n*LOv>;x9E+jrW0Z;wXe;Iz zb7#qGf{3_iW|LgXa45=`W1FV*AR{fh&hP#VVAQam#q%ma*Mi$C7h?ILXI(QA$}U^D zg=}7)apZB9`Sl!o76BG8`j%_?syyg;H&<}EF= zqL|&cc;0yKEsCVvT=YvPpmPH*a=B#!#hM0dH=R=}hql8sfpu3O^N~5T2RYyEPWk3%;$}Sh1wysryyCW+Pg{{&s zkqTOQfJcxUq0~r};kW4{YQ^mz;#6a8dnFIxQ02@Zg@2hM6s~JQEleuE9z@BNm%hOJ zHYbqjKrpImH-mv?c9aZZznGMKJ8V-4*#K(QThLxiDp_W{wcE4u^SB9oQ z{{YLB5gZp$QYLsXcPtbYSPM^TSk-NpsIt$7a=##fPp2^0MUzYXK1#`+3qHWx$Tx33 zMAKy0I)GVYs^B}6q^ul0cP&Z`VLO;smhfJnG=E7~kU-i?Xw~Upqf|eJ1V9w*;w_`L z$5C5%q*H#eY;rEUI+mKj+)b%Pa?J`+t6=1+v0A}63yZ6Hg3`5(9LhWG1Dq9mJ%BmS z)WxVX{lvQz%nMCX%{qv8D&KAevthpsV*osb#oHJ+iD3$ZC;5QT6jCQtDR_Jm;*0HF ztQvmAJ#h`N#}kyJfz4bK3PzazW%WkFQwH;xR!tJ=V^z2ViiK1h$h()SAY;R_B>)=- zZ*0B>Dwy<5NkY|0fej=W(yKTyS0$Pnr=k{i2D0RPjiRQybJW5UL902GDzLX3azPlT zj+}jrP3ozyVgck8+5Z4?l%vsJM{ymuusA)GHi1rFu^Cn(VU%hit=25Pk-LMdV%evu zbwi1H;!8Af0*0WpB3>b5xZm7LAWY6UG>OQgO{0tR5~D8m>A=b^pgu7Wg-v)&LgkZ_ zC-#@b%u_)k1-JvXb;%C}KUz75D}ZH-%s4Y)eSz)jORVJ1T9~R{;DrF`-eHOo{cp#U zn`Z)dG=_(^5y5Bx`W->;Q&kd2vm$dTX;+})31Nt-fVd5V`9NUet$uM8qqJUllrf5G z{eURda5&ldwMOijdzECx`MGw^wH?zLa~iJ= zP<0f}+!3QK+p=(By3|N_vB2m#K~g+01-L|F^s_26f3UZCUrykJGj<~KA7SuT7)>Ex_gabmRM+? z?ozo2rcNco+R~Xn+Bk$M+0QXRydbhu8(O7S0J58Y$JHA`)2o8-N)0yvh9XTJ z%1jVfRqOeL%Rt?Y8mNWaBo`Lh@)Ow7o6Cn$MGsRQZFw(ho1#*dw0Xahi$(>l zc#UaQW3?Sdj2QkAa3PYu`v+;m3)3tEvmRWyK}NipOI*|raDfmJyyHAYEJc43;4-%Q zmX*w8=D*yd3(Id0R~%Hq#V|(JQA4;CW~ENyJX~QzS^#=g3E4BKF(kthD$MkL#tWFpV0bR5v zhsjC-HpTM?0yvINe-jL-Tc5AQBkRmk$5B`u$#(deNuhL%zqI0p@a_wMp+Uqd9y0XB zSw$OfQ9~7sJ6!B424FdqpTZxwN{f=-J zVWLunzaetzK^n9dMP%G4CD~wqP$(J)1Cz;1X+d{-l-J9T>6EJ3T;EU%mVdYlS#02& z3%7Tv&X=L)HnJ7X>LFI={J?4Cy(KdWrh*m*8@nKC?uV6>a?M>DB0_=(Fs6a-U>59o znw49~q!@+(@>mZdx{82%6%cV|k)!dzaFJfDb8gu{HUVd+aLQhDR_bEIJgi)B99Nt{ zUN6u1j}_3oO0)~1*Rk5OVBE>sYTA^Dp#Enei0HZ%nNSqrzwS}kp>C>T@U0xf{lf9Y zGSWp&se-t!BK17co``E*1#7X?$!G7Wn&Pq0{{V9)0N{U^I-UOXxI`$Ulk}O$0aVj2 z7Q+>T_Z14ak*b$6L8NAXBpRu2lQ5)^HaPso*fy&1eMS_b=9#GAZNX}sFj+xdxPDFg zFj-}Mg+?bdH;=I`D*`e;&El<9IQ>K-;MT0K>O6oIO^?^#;!9|^YpI5g0bCFOH6CLO z){TFeU^hnp0PGYlo3anVj~nf%w2)pd6jPBh_F88bfm&ce!Xk%f;S}As{FTvMw#1t? zTDZ2?XD^;Wv}qf~vu?7c=3o%MKo~i9xQ*a19*{YD#vtiNFTBBP>i+<7EvyH*{6~RJ zvvD#S#@J;K^9$$oGNtS6tK%cQerB4|yQ~)zh6o1(9crTO3i50vuHpXxhPJ;ULZMlU zt5b(j3jjwiF)r@<@&kjG8M;&opwt0aJTLbPZ7y-dz%tX>_BuzHgad`@Yo{A@l{1xk zh9hBBPf=AgTK@ougJ?Ofp}b01$)__Q;@fD&#WK#*vIPxVjxCo(cnzc=!q8X^3}LmY z${Y6OP6F*<)lbcdz~gZOkTqM+0SS#ld(trk=~;c9%K*cX!xXI+lytIjZ~Bs!pB)D*X0;95uHgen?PC7`uqr{q1%uRlZB!581OT-_aZ=VSnzNXIX)gQx zz!t1!)%EOA1W*fU?MwIo?3^TFbgh?O%L_nLe+oK|ZAc&Be3ztKT?FDQcvkxjl^zf> z29hepcUL{Rf_$}{{T2*27vJNO;HtGT=lT2Vj6vODxgr+UZOxrTe+rI z>0$iFX`S8NKe^NTP;M0oe5<~^j}LvpnJJb_kg9K}mzy}(5T zUSM!B#lS}HyQy-9%mxhZQKC}n_%R1JW+{>pz^x&oQiAr^_Ypf1+v+Vm*^c8~I$%e@ zT^MB0OuO^!umCO&*d}emie-?zPDlzO%VzJ$N|w+F-Byob2`p7xO}<4%NSDZm5trKp z*GhX22ppA%GT#K^C}4t}w$T*zIY7`{g?F9Ifzk>(exp__O3BPhO9c;b4s@ts3Cu(@ zh6=<5H=#?Hr4`fo@-Ah8FdcoC(Cwav@xyS5B)bhiend>Z!dSpNODX+?595hdP^sK5 z;m|FRU~-4+Fy$)@H>uaBEcVyZ-ST_LB&`v_+sx9p4!efcOEhzHChC;3s->2)tOv2MXCnAa zcU;x+0g*+llVDY8yi~JGM`w~_;Z2d&143Q&at{BK_6m5I^ zHCkt>u?`Yx0Rae+VAzXZ|`S(I_sImTYkl*^72A z{ITe+6;Z@0Ux3{@fEECtpR_hygh0)ADOHk%q2wC#La!&Mu}X_zi&u;P08kU{$<4XP zQl8bP7k?r}(b<1rj^#o5U7V?!vT7ZX4gnpZv*9TnanNB%t7VP_op{3aTT^2!S_1nR zhJG`#DV0NaXqWX191j8C;!_D+fxoU~Az0fCXSiTb0{1p0v=P$uWa=oRD}2|;ri`Vl zRWMi=E~;26DKL(rnZqN*qHKA4CP~3@D6vVvOOOju+fX|#R~pQ!V{NOG( zF>v~YE$>f}+FRrlGhH~C8&)4;sec>bl$`FXh^SS7{M@XTIn*dYo6q7P-;GsZf4GZq zFx?9NS(yxDLDb3b50HQ=UdNe2Tx~M}Xh!N=-y1Ki&tNUKC=TUN)<9-&Rq^5hgEFiV z@o=+GlR6!l+^fr)Zyd|b4CUJ>paPsXG9eCDoy*2{_j?jyVadVVvmuN6C0h&`zF}yU zrJRz*NL~S&mX;DPQ6L*jzp~&3ib+I3vX6f;)xg#fT57QsBh;k)3WAv(9v`_ukUHB6 z;w>&+l9iD`QmKQvz>Vd13upiwu&?49fE2-Ilik5aC*5tiL=8ixcwzp$uLxlIQr5yP zxcEa$P3+|ju#&?&8L4I9joo5zMrvLD;f3oB8c58d6-8suV1?t68}T0ygN5hPS8~bb zX!#md348okUc+X|w0%dZklLw)@b_#)?iyo!0l^f~1BIj9W10nrPX7QiaZ6kq34gSZ zp~X~gUVnp?y4Is6k3*UJ9ZQmpLC9j_r)hHDAsJpwa}eTQN2yXa;d`iA2KO%eisiX^ zR)z+@a@tE-7d;TLhL-YW@rDWntzG0ZFfr%75Y9xNX@TC~Inf1X1m_Hn0Myu(U8OP~c|sS|YrK z&4&4u3PXCh*+D(pp2jx}y^sS0b=uYa=?F>RghjgSFf=f-9dG6D^Wxp z9f@m;dPLLY&gGy7LDp0nNXsK-9v6hNa zb>FiY#j>=`<+FBm2H4KNKrY!aaF{hQM)U+43ctb$(%k%o!HDJrv~H@k6a?XHdl!Qi ztKlY08r*GVR8cLUS@^}FMZ7~mw4#RKE*3a0gDvDULlrekR<%&jpoSL(xp8*a5LNYU zW>7V37=%(VT6e zySr;$M2n&1{QCk**-pdEwGgT{yuT$T0;*lN+Q4l$YSbMhQ6L8TE7S}$20S^L{NQGg z=08htaa!m>+XUPwz-QO_hS zLfGnE3m_P*Ie|)4pb(d!y#>6)fUwG(!>%WVANw+}=!Dxd2yK_~4_RFwQj1Yk^2=1B z$yxGe$vH2NAwg7In(7u-xvt?>t#U7jT^(7{5vnn`Y8X3TFp?tYCtXT~3aBf%C>~{B z5Hi~Zu17O#Nv>Xef&oQrJ?b9n^t%{jg%sGCNnxrD3n}c*(4ygg)Y}|qCl}On!J7@F z+KV~QGTQ;cZ>KX97SAYj8?Rp*PG~+duo_ywCMF|Gc+8=;EMD{M zrSw&j!TTFxqSx5Y_aiIAyNlj)gY`c7zxtdu>8Pk15oR*O6s+#!$`?*IZ~;(3 zM+fY)$w_!9Amr8o$MX`h6IJ~}Hn!aGJc8M+XFPr)HY;xG7j)a9+-`tZlJH&CVh-y7 zW+20^Di#!ISLQhryvzl8;nXbN0;T?-DDuXq0K=@oOACA;;irgOLwJRpu<-*d9XXqM zr2b=vfhuq+qnMNlhTdY`>(m9?kh?};pe6zyg=}iL07tx2)M=PSUhRkkOR%RIgs|q( zUHcvCpkAw~Wo|{tiIOye;(nLOmCc^S1?ln_X-;hJ2@!7X+zNZZ(uxM5eZ>~It^5*j0wI`pTxOIKn-Q4QC0!* zr#I9fCN_!D_0cWpw`$%Q=2m4#kvb9U@08tF%5cFRcMVwdqZ@0E7)eOmg<)P#9%KL z)9kGVt7LHLdT*GD-iEt8m6{yn`w#&87IlcK8|qX5!wr(xyKf&N&TinSyt&Szz$J`h zxD901FUS^G8N>w?%T|S0+XmRUqKN%WRn->}{{Z$-DQY6p=|$en7k4RAjen{{Rx_;o)2lQpH<#c!dC51?Nh5#3uL2W77q7_Bl^~ zqXT!ub)uK~o0m0X0RT%VIe~?jW^l|P6v%hlStzX|s+SvsYG6QvUyv(rYU*f*mF`tD zhx2mX#2*~RG!zY&$xzjiPNmQp0*~_@nbN~pe~A1A3EVe*#Ts&34aEUUY&ahn6vDjr zhGovA8gVtHu%LTg5uw@ooAif>*AO5SJ@Q^QoHb6_a|Ij*e!Yw8AE++XAzR9rD2<+M zW2FjPKkg(gt=07s$l(^FD!NC^>X<9JMQ9unYhk~p33giifZz?fi%FxCxt0uFvBcLO}KVSv+l%lMA+@1=~n1s?@>&ZIO$LS|7w!RAA)heaXbhj-}aFx0;2U!dOvm zL>n|+xH^X#cYm3Il^-mN5NDLcaE`+ojSU>YQ7B{iiiPEyptEtS)eBOp0>bT%KvgkH z9f#te^5ig74Bc4}UHnACjNQTUn_WCG=7zIeU$7xVmrtEQW(IKV@o^d4dN` zr3*{h?iaR(tb3HF440_H04oesrCNtOm0+|Bmsqw~$=`FxQINg7mJlJJ={$~#vNmv? zqoyJOU%QM}d0TI+veibyu)|qviBp%8$OM%#V7b{7C@3wzMg~KtAvPExyEmu7hD;ej z1@kjli&sT=n6Zbz=eRj|GVB=*m&|w|s_=CC3z5iq)MT3F@(5I$YqB7gU1}{f6|1{K<~(GX8!>F)M%qz{{V>AOy4IG%~mMXIK|4eHpMXU zk|l=vWy+ zP*l3B-;lg5oMtsoB2;w0%*Ay@qJt5`4)WY6MK#>3HomG`fgHCfN*5owN37zaQrK;c z>4JF|JohQqq|@gk4Nx+3xBW~airr@swsw|=q8A#KkP{=>E_Ak^WgPWkrDeeoYQ{5M z$6}#&G!opFFk)H0+u~#Z!wOh9OwO2SRtkQxMR1X}mJr?C51AWb4aZN&^h-o^3R_}n?bsGiGWK}pTiAb5pArYeV z_j3qjz8IFIeC8OpCSgL}M@RXIMJnGgaOD$;VUbP5Fjy8_H?kO74qy2)Sb@0MSg!bu z?&&cpKo>3>g^k#5tNg~s=%u0506x%NekI%bcxExIT7PQpXIv?*1JkAmfL)W%WDal! ztHa#h38Js#6heZW2XePoCvK(HU|>eI47qC+E*4s<;waX6>Q`dSRKaA%<(-=|dLjXk zYA-6EchBY@C=il^ z(C!+*k7e?Fg@FntYWb91#z(mJh?uxqR!21|GzY1HKtx~aBM}B`r>KPiQHa<+4!+8c zDzY#iV~SFnFINpHCE3XZCh186yC?B3zxa!_9z`RBz=^{*?qUH#bYM|VT`{SO-rP*C zR?OFsb8FvoDp zt#g(+g6(^|nv5@5`3c>O*DD`b+!i0^2WbWA<_e~}IWn46vxT{`@2=2YdY01=9ifxa zsYl6g?&GbfnJ_x{ny6xGhX1!zi75JCWra6t3T~4Mw9^5S(Hz z2P)b`R4cQ)jM02LmI90~^Aru!{9MR);fF&={{Rx@g0haK??x^t1>YYg07c_Dori)e za5G0eCitnqC(q2frzxpnz^dAmJ1yfAYYqyOMKamsf|txGbc4HQ^3*bVm#_fKc>Mg0nE_j|`2xbP zf_z$VZc}LY0@pC!f2bOQDvud?E}QRjdIcZEK*+`@oKMr8kC4%b0&CC2ea+;dSpH>T z#W*3bcXgQixGDqMFpN~T-&HPcxmBIQv2H~F08lU0!9n{jkFa~QlqXS4?y(lO3rcYi zim2X*R~O*OK^plqAHBzkB9R^{Cn&^GC7x^Cg3C|co$3em!I2y2$D#1Wuv-EL%TSTeY`g$?;LO>jG6Nv4)! z0IHOw@9YFEAR#lK2Shnv$cmycwo|-CP`k&my4!!5z`7f#8OhBY6E#766PZ3o3tFxq zqFb)wIuf=*#8nU9;$G2fX8f^0rbLHEiqWx$$$)S*gWb=0*L zDIDR6c_8qx<|v$IrK+0O5{iE1t(9R_I#@G^S$k$%D7OCq#B+GBkQU%m@8KK5wTJ#d zg$M(1F2$CXQGmmLxr39rlCee;xRk2l)bMT{;ha}eve?#oma;DMEU{?s;R`CUUK*Qv zd;P@-&oMV+@DQj)KHHGP&lfw;J3Q5S6a2*o^ zggb%A<5y5OOrGvE-F#U0N}$=5c~zQ<4@L=rIA##MLyGpUVzipnG6}oDPNRus0uPAm z3Arf!l-4Ptr3dpH)8u(CBE$nytiIeB2%@pXA!u+sKzJx#h=)f-;sn4sZs15^?T$<~ zuyHR7v9UD97QmE53>ItskuarWR>+#978Tnp74TtA7&# zK~-twV7B8;liOEP_O-qxlcYIe9SnyW(M3roZyxwZsA8&>=Ce6KCHJFsP!0yOneZ+>mSh0j6Lyn!_tY9%He9s<37K)GCW1I|GeS5G!D*(9s;!G!Agd^> z{fH8_7&3sT3ZG$E2I!-R=%1RHU}b+$)f^VyqK}~Ws3PvuhEd?6?<~ls#HkJ%FR5H* z-l}sJuwpcUb_R+itCg;4*&KrY2wPQIukk1ba@hX>xQCG%t*|c%g7#dx*uz|2$&`^A zNmYkNE`RHYJj1zs_b4DPH`J~PhVceK1%6{Ug-Qjt_BN}{VtsKE@FP@|7%B*fo}Qv@ znS)^Mzwtf6W7rI>Mtf(d=thoJS?tQ?paBE=xOVC}V5nuNWG^T#Sj@#jRU(C{WmVnlaI(l{vC|V# zZzGzSW6A~rkTHv134t?362Jgn5x{8DHX8-PAWU62A!u-5scA@o!->E~xMdo(-r-kC zS}LEAZew_;KmzS+*=4~`Fj~O5heE>LIEbQKwe;#x0<8RgV>yJ@4Sb6Ni3NpNOc(h< zz!0rouee16gG@%dhkg7Y0WTd#B^Zr^hWqMq*O78!SPp5v;|-Q|Gp}GBz$z<$UgPAt zX70F(6^=L5qM=g2DR#g>G^Fi6H1D8T)_c&OQ={wrY;6H;9en{vRKR=wzb&vIfG2p#?&Idku2i) z9mLrJ_PFv5L1KFg0iv;#g;2&v@epXYL<~0;mI25Lrgj%?u-h#Nbebm|u2KngZNw`N zCQ}4f8;yMz@)${yxVF3x@itW&060B>x;=e~x=I%naTadH?lZ;+fXoBgsHGKdZaK=M zCpX;4W@gqj>`MH35a8>2mILfSWL-Ip+{XM74QWr%hO3M%maykg%aT^2ITj5;fHChH z&*2PQVxhy_d0pIh+c)e2g4M$*NGnV$0go^FjJ<0%^)kkD-w;Xyg(4^cy1VD7SwhX= zDF=t)DV85>AUWFTgyDHEI%bQjQ zYSFi@A{TfKZ!pVB6;}kSZK7RU4Vvlz4WBIHVLO&LSQ5*@lZfmq7jt$Pj>YnzfCFu> znL(_MT>k)3qhVK%{p@VTt_P=aR&}#!V6l@EHeJ|J)a_07g7D{s;RV>ToWoRUD$KfA<@+lNMy6vs8t%h0OF%iDY{tERJuQ6ELu&y%1ah+*~F#4 zs4UpLtHiWgX6x}R*xdvDz@m??U`$4-zUQEPH7cuP$?j&Z23QzeKa5INAGQQ=tXJp$ z#RaW*#Gts-bUZTDY}m(fuV_|(;!y=dgiH=I5`rPKF_t`{umE-M`hZ{{8!>|_wVhNK zYOR5GIH}MjT{yTCSUvxeVpc3fq3dQ zK~i&Z6?{rPm7Mz+#ID27fB<=R!L%vZy_nz#+C_DZbKzUm03%mJyI%MHS>bUFJAER70= ze;W34y7Q@v-e6~sviGcNqT{q6sk|DMd0Kp%qSMp3VB1b(%GGlOAQ!dFLW>we+S`3h zK)&}8vY+BA2W3>I%9IpmFlw@e>4TQjv+P4-^9)hPfq-bE?{M0Z?!G}T$x3s%QZ}a# zAU1VwPRO-MLhQ>03roujE*Z}XN}Z~eeMM-54k2|JObnn3wB_OipeSBiVl`Z^5GdzV z>HxHY)Sbq}RrBH@sgWyqxCUj0jf=RprMDP@qeUyT$N?U#FzPxN!)^&&!YoqWArxaw z${f?vEOXm(%D4?$`HT*He#ZO(&CW;wx)ctny7oTj3&d)N6-Y=I=$$%VfoySN zWF1?Zj`R7P%$|%Ai!V?j!L3{};{`!o8i*#&YK|f^#xeF9ah3icnW_T?+;Ep`m$+){ zFER1tZ-_a0Kk{X&%S13K3&jyD`ATlXA7iU#-(g=J5Da>87E&ME9Gi|g*ijqh z%(QWMmu?oS3q@)nrE$}u2&`AJ5HG#UENdRq5^1dr+hQ07BV>YIoKB{)q{(bD(xG@ z3X6Cs{$&NSURR2kDW-$W;vKt=bV{_Tc+c)^bVQ^A*6sa4X+*r&bFzfXp~cqN%4h~# zAO_JKfKf$6!o^>cC`Q$$^QbC#U?l~M@t#>D@)~rV!~;cpvD3XQ>9e`irAPB_b}#Gf)`fdGb&Ilx9nD^(N$Xg%R+sk0s)`1 z7Qh);v2L5@RHjcN?w#b#cL<|(WCnIRM+^bUN1!Vei-1}!H0+pC%buzZT5$!| zUwwRt9+@TAmdS|4xAq)QcH=i-id_>eGugk)tTw^JFd*L>IFBCY*N$P9ju19STOide zt}C>@LRIqIVOSWhh=AJfsO8MN#Oa7NjlRL6-6lh9t>Wd+5~Hseq9xJtD=JtGOSQ{I zuri~zW@@Nxfb#w!g8~ge1QCkWpR*+LSW~cU}p{u zR+u4?S<#49P;(30Ge8t_N~UitLAs;&%%W0*PNoZ<<+Ms#?Wh?8c>K*SET$Dka?W_J zV5yo6)ow0JoZragaJg-YESgwD3OR)ss(Oze^~4IGTf4RtQ%%LBMOAeurJfl;0P+po zp)IV*)GDIryNZM;tlx2o6QZgg9%M+*K~=BHFH<`4Ysq z1aWz>)bCxR0_?6HV;d5&y5ra7{AOEV zK#-)JfxsEZoxWD2H3k-C@P({L(xqinZf2o@V6~q%p;mE~O{f*^H0vduV zdQh?qKf)RSIqnti8?b-48QYe(?4VE_JjT{b8KeA0R#lWn;1sgBUq2COtYhw72whq0 zm>>afhIwT+=^E^p7!6zuscOt0xpczRc&|xlBMRIhR)+bhV2;h_UzijaEf9m(beoG# z!sE$FaRz=&^rwepSTGGiTGd=!IKeL^M5bIOx~gM4@>T%_#^DMeP>F>NHEaH&fn#gt zrAqTb_=&N6F)R)tVQc_}jm7}RadBA<^MB%24bjX(fDcogZgUE1GPWK|*996zdd zfpc(4Y3G=08rwhorK6e8Qu6-M5Da$`iwhLW)fWJ`NQ|H^H}k)cCx#*nuD3PJDJi<| zr~{ z*D*vIzvg7ISjZIs-A&f>%xYSNa|FrzdW(^;IE@oaxK$4-DdV_j3%4_(u5!P`p~Fpn zP)kZUzhKEq3d8^`H|z_14A$$(lESccD$)UM!%21|PS1SXu=B>l~81GA$o-+kNMed`+^2)`;&GkDc*A_3<_7A;=Y$2T9x={=TlJjQOF4}p$$2w0D z98FiAxRhNY`3jkrRisc&vh9I*HwdAfuw*t_Y=;fm!knyNw9u!t1jUZ?19)A-%4uQj zv>3jhgs5^AzTV7frtQy?$RVccj$>Ti%qxSVxY6mD6d^EN18gqPh07Z_nFgt+d-4Sm zfuFNv(Q?DGay0;3VBiR8rVR|bGb_)Sk8`}Hm^SO1NWv`?dyb-rwjDv@pm4cBtA>EJ z?gudtrY;?zBX1JrPh;PTO}?wv>ir_18>Uwlv{Z28#J>_wOD~ukFXuloZoXH zOhy(_=h?B2UIZ|OW#gz;pWG;_(=g{1FnRVMU{fvi)N7TFp>Q)!rRT2dTsRq!*_h(T z_Z3qz5C-A!Ke>~R^*O_yWBErImZKO*dI+kpv{8*r0}I`86t>M0!v-9% z1qHFcNDnJ>6)aIqN&$5Hr~rk^?{G-QxatZGh!!4TZLgN9qOI3dD8v~pOrP}%0g$P4 zD(xdk6RvDm&Z+i034jVdxyQ2ZJRM<|%XNh@OGQIvH#kVEyV?z3f$wFbMIXf!M zse`k`X{bb8L}TAAaSh2v&#~1j=<$wkh?e3k5VMiTkPPf=L>hqM=Zv9DVp{5FomSwa zTp-FKTMo`fQD}!(vKzSv2G{{9yg|k6h@iN|Lpm-Mm`~g`SUM!=P>A1rfOb%ij$^Y$pAOp5pF7syu=em`WwD6a zod+>;WAofImAZdX0K<4$_GKO0P_ny<(?2=Yk+DvoP-9w!UjG0^L(2vpWBkr>#5b?z z2Nj4`az}T>GTX=?V~%3uEe*iRf{k1XfUDM`B8gRm_81QbA7zUvZf?1chGNvVml0{H zrypekE(Qs9yUFx`hYF4s5h2S}ca}FmN&%Ui(U>37^l$DOijH=Aa?f~lqB zMZ#K08Ufl~BC+n35k)BR#YWqp;Ch2C)!t&bb{K|e=4q}-l;wb!etVe=6GNz~tcNCL zgb^ZcgD!Uqfkm(eLvAAk(6C?PQFV^{m6A(_hT{yY59T(&0aXiWO=Nh6%EL7QySS_) z%wWNIt>$kUQ)vywO}CCE{Kjr9ybIe2DKx=HOp~bkA28A2UwX*ZU4DR#9yj#RHO944- zn(&5q2M$FkQ7UEkB~zT~`7k7|hM;97!RlSe zrkX%>v#CK-9`zcE2;EDVR^VG%bV(8r5Twus5!U)0H21X7g6&*I4T=} z^$?;}aIpfVG!$#ueF0mz-+o=3gYmu`nOC#KEQ7mhR!PV#jKX2kVH! zl9@#~l#L5v1-2Fvs0bqy02A>EQ~v<75H#SgM0iaduHl9}C2E*uQBfJ;j3ouO^sq#NcT1AQV2AYLJpU0ez|he7t|MJU-{ z=4_D20|Pm}4m+KRORVZ(qiAw$>oV`xnuqX?yJi#oB7>5T@YGvZ%@Jv?u@OqFjs2Ey z2!YwGe3gJJf0$O)Xj7P`4ObGyZDUBPsRPVNuLx;Y`2h>c@*K+pf#B{Hsrm9t@4DXmK z^($2YFy>Y>MP4|JRs%Swd#PO)6rj~I5d#2MdEyysh=sJ-#L=s+WeT~jCJS&viB8fK zU^m|5L6G$~Dwvq+Evz8x$R%HJ$e?z@&POM(wP4(!mTeb7yFNsbzKIJi8`*NNbWGrA zsCcb%Kq&53x}D<>F=;q%eA~>(Ry}2A-RP)ue~1mP>S~yLiYPM=Udu(ZT72qNjf)wn z=r+@c&{S&`DH`I9^#ny&y}ZVR3fE*67PXVel8UD{EJ7@7icl7f+|prA`G6>N>oS1a zXZ}S%fMD5tLvXYYDY(G8YWjBx_Ch9gRN2=ulvAAJuaVJ8YoibY!WfvS zy=!9o7R+o`^Vi5KFPER0XAGGRCC%>25Rp!;%9O&zLK(}%A#7J3K*iic?9D;3F0L^G z$jqSw4*B^pZ)jjO0SXnLkrwMe@}O&^h2+S*`nl5qNPz0dZimJAY z^^8OV0X1nu7>Na?WnR8RD>Nv|IbvhG3`7F?9l>nQZa5o=>5I|C9I1|K4LHP3P2V%V zXQkKXZG!&FDKe8)gm=?*a7x~_4LDb@ELLkDA*!=nRA^br4l&a+3nHGtZ64!TvCiGW zy8~0uz`9=bFFAED8K}}+Zm}H(8f6AczGqc0HJAmx&&Af5g4oNxrI7;alY(O)f1i;s zE)FQvy_5%21?cKt0ZO_^9EET%F)wB0`4D(#`hbH$9S~u*Yf{WrJ3;Y=@K&H{TW5SQ zIm{VWc#5pJZyjaUxJQyiHI5inv#ee` ziKK8bogA{waT@p_RB>@#`pO=0k8EzTR#mnz1Y8j{3jsg06tEpl%6HV{g&*7s7fiFG}L&TbCi! z5VWHI0CNa!#v*Nf0g9H;;K!25rku-w5}C5Ka-qCO@|yySnOHMwH{`PbGlwrE1`GcH zu~fRtx43~x`GK8*$L20~lTo)Qw122o-U41O+T=NbQWxwO@DK_fTp6@ksDIAaUzGIsX)42u(UQz2J1IW zS3^#wZBz`S#BczYzhDdvjvf0p3%3w3SnoO_kvVscCNA*cBMJF)1Zr};Ok+q;GiQ9m zHPkb#M%BE^u;Udnmo2r?`hw_7nsCA7U-bkovdn~Q4r}ZdDI4gOPT_>+1Enh+X#|Fa zm<&~G*lD<0g{T8!p{=aJ7I-4Ta=ipH3y1}R%GA1Pn9V_;YAa?NH1QJ6wB&`nR`oWN zXPog9NW2<`7dKzT6RWW-iv_cML@hI(;%pc$iE2b!kPS+^3#A&0lqzF+WnfuFf(o2~ znmd4K80r*O1hd8{fCcB)X}LP;T3&uYl8lLGWH8z>obp3^6^xfKTW|F%z`F)1^3e@r zP*xkGwycIJU{M=T*>&Y*+CRCAq4-e3zx&8-0zN7}~Wq1y!`%pv$|6tMHr(sKnb? zdzSo@ZX(w>i%{=~N3eN@p;w&2$Wbr5zmp*IE-u|-F1{w1qB_6^|7 zMvBe{aG~PW#iWeeZN|bMmEr=7*Z3f#p`rq_4Qr@{>3lxSC{c=r%3lp|MwUDinA!@c zTNz>G#v=uhu^mhTmMwb$ObS?>LfcSUbGZCQTyxX~5un1cuynAqtkr(w3Zp3CNL(4L z?Q`q}s4HM(W++<88F4a-#KtW$4&|s7OQX08f6N|0W&!G=M9^i$bsECgMQ$ICr)!G^ zfZ_(ZorWbQ+jkI^k?u4wT5DxZ!rI~uCCi|;!y=U%#A>9g#${C1?f93@0J=DtiX}IW zqpM5N&G!>P64xvu^K8N^TkFUQ#z!{F@bUYVLdr@OH8}8b5n)-C{{V=T^xVjeHN4D$ z+Wv^u*Z%-1o5xYo`zmKj;JM5!@BO9@b$XWZrWMX0#?FK?s}Eyt!w*f&+#X;&3bh8U zyqlT_YtIl94?32KW=`QjhVgTdHg2U}OjgeS0PIw)^5^=2Y|!5jUq95ouAk-=wgbLm zRi$pZjai`f1Cp8UA*6XGAdzgY-H^N}qT6>Cu>4#pg=*rBK;5s{^SgQAiEFiwv8up< z%Eh1uHaLQEL$W7t!`R-E-CQzDbrv!QgtP_uK~6qj1lz?8!9n^lD(ow>hF~4gq=|DO zOfrhNnKR6BR=DN%UI;GFD1_3HDztSiY9d;;=a|j+RYB$g+|zdj9E7U&ax56JGeW$& zl?G4XfDJrp&*mb6Vbwvl!m^#pHBE03Tg`ZuD{0ItB)(H~AzU$#M;J(eLhQPVz_E^C z2PY~%^1KgBQMK$I{rd`df0;qTh=EePUoyKfT+6dy>WJjA zvEhP-bJH5E$B-1EDkU%#(J@;1M<}6>vD7WPwCRXi&JxK_?2X~Ea&7=E8s=w1U{A*2 zQPr`XMvc+BxuoWi8{`FqU0CC}bwQ(&4JnRN19-Sh_9EKhimnzdyr5VhE-o+_7yE{} z3QLq(G(vYs|%#F1UbJ;2d_u4hqz3C^#;l43={D zDMSgJLQ-gNlvf5HW4|W}#$j7ZP+9}^Ef*K;ptmf1m;$Zam|dI>1O3Xz+P(-W8d+uY z6j8G_@f^m31EOS{wwDktu`vKO#CWz>Z@o$}RP63KD=CryjsE~hEDMiZ#d>G@OSOfP z;CN)CeRB39fAAW)maYPZt58HQU*=hgBYcx7P8{_rmiHD**D<&vkK*cT^uf0LhNEN5 zP-OrQB}N(sH0_N;an3ndtZL3Yng(kuRf}a=Qu3oM>Qw@uymg64(as>%fO%yo5??G! zASt`t5I`@xii`ogzzdRv`vt#M8g&3MH!chv#lQeDGg}-r3s;h0>Mx7k_Yer}{w7)$ zo8OZo8yFX-aG+IBCIkw$Jix%QoT}i0u%*Gs#0Aj(K%k`cmOg7^3L$nCyCY1JQ_kX` zWI3~B$krd!RKQr5o7-je5LNFZGj-ef72F#Hv+?`+gj+VNh z%m#~Yo9<;52Z$sa_O+P81#10E3o#If1$J}x6_DdkQs~s|@BaY06N$8&pO@$V0ETLF z0cbg&-oN?w4sWI|Pd-al-~JXwEvQF$uf)q_P{+^yRq2O$@)j3ZXMLbFX+N2PMRx3h z0A5mYigvTURG>0TtlB%U%ts9BSL)^6i zfzr(=33g|Qo5qWW4r(`?(}-HPeZ(uLl!;6^9mHK!{-%qF-J}3f3$@%L33hLbfgtdD zit7$R{E;e1eh*M)W4!SJKxYc`6+s*@iZrLMkU&0}p^?dAAO3~ zV$iKrX>`>^wGbIAn9h_dLYHJ3P!t;sEg2$$?iqOda{#rOBgdU#Z|qyyv3=;!PF|}Jog(RYx#+iiYxIg8do}iutXJ7>56Ym zf6xB_Ke);puHvKMZvBp7hY-5iH8Q*WN){PnKm5P`Th61zIltmqrc6NUVzZ3Ov$9z8 zT--DkUU!coUf<8MzjD+!`05Vr$5RZFlI-6-Olrmo-DVAH0`dBam@e2X3pl7Lsa5{~ zT|rD1UI)0F=~Y(&HvUjbvhit&ar>P!fd+qRCK2pXMNW4L}3{Xoi5b%ME9bvY}7oEk}0^Xzo~MZ;_Zz zT6&E}l}FgMLxe#ESMZ9(0lJ2F_>M~kDB8m*8?=CPu(g-b6uPxlH{4p+=3YPfk(TN^ zm;V6E{$tFq+|(ByYCnJYe47Ezr-vWR!rA!lQmUJFKhamQr|96VPoVsZL8Ww z$E03mDbsoR5Dp) za? zG3$v?o`Q73@~W}+et-K-xJ+{%T;8Qtyd>Jvj-_XLa|9HF#rug#b?Q#&q7*BQhXfm2 zo}io1;tdVIA#@lHWtR>d)jN&s%9OCOc`UPWr$-r`6A)AmW13lg%g%E=i;DhXyg^qt z_#&1u_HNij$%n|4Ioyx)>kvJ>qXaYySYZj7G6nX6GjkrO<}vfBNhH0GIY| zC0V~^U)iVt;?{Fn4dOYlDFEe&RgJI|#-+v>rE+Eq2gu-4I zib3mg#WaJ9n#9Ax%P(P>dABJQ+6wA%IEwQH4B|H1mKtoki;BZgEqhL2DOyoqF~AuX zYviJ^zwlyalP;zjgCg3PW61_3d=OSEA0|Pwk>UtLpkGn3yw(n*2FoS4s1eFL6M_I# z^_cBitNcXiDiOtyQn!xd`-BFr43|?IW1NiD#VR1ben*rO~49pe=t!ktY=c~ zVY|XXPCxiGwYjRemKQ@8_6>9Y0K>V=)TJ(R#lOUAmR?hd#Jh+8064#Y`Kj;!01d1& z{{X?wvgxXgDSGM#4x*)b3@5QKCJ0z%+b~+wy4-hbz9N)he2HAM+~6E$I=cR2Vco{F z4prg|8l}6e%1|hEE0_Wwdx3)SkK9RYwX*S;<2P{1X6=IVZz{_BpsyKd1uls4M3yQj zKR>Vy0Y$70EPhLs6@=U+b!$wxxf!^&jh#!QL!_ypHC)d$M(c~0W9*`czTw@|#Y~w( zaokJiP!`S^i*fUQA|UdY+eQ9m;r{^VCSc;>brmD*qWfCJ|Jk%|c_;t? literal 0 HcmV?d00001 diff --git a/infer.py b/infer.py new file mode 100644 index 0000000..88497c9 --- /dev/null +++ b/infer.py @@ -0,0 +1,221 @@ +# -*- coding: utf-8 -*- +# Copyright (c) Alibaba, Inc. and its affiliates. +import argparse +import glob +import io +import os + +from PIL import Image +from scepter.modules.transform.io import pillow_convert +from scepter.modules.utils.config import Config +from scepter.modules.utils.file_system import FS +from inference.ace_plus_diffusers import ACEPlusDiffuserInference +inference_dict = { + "ACE_DIFFUSER_PLUS": ACEPlusDiffuserInference +} + +fs_list = [ + Config(cfg_dict={"NAME": "HuggingfaceFs", "TEMP_DIR": "./cache"}, load=False), + Config(cfg_dict={"NAME": "ModelscopeFs", "TEMP_DIR": "./cache"}, load=False), + Config(cfg_dict={"NAME": "HttpFs", "TEMP_DIR": "./cache"}, load=False), + Config(cfg_dict={"NAME": "LocalFs", "TEMP_DIR": "./cache"}, load=False), +] + +for one_fs in fs_list: + FS.init_fs_client(one_fs) + + +def run_one_case(pipe, + input_image = None, + input_mask = None, + input_reference_image = None, + save_path = "examples/output/example.png", + instruction = "", + output_h = 1024, + output_w = 1024, + seed = -1, + sample_steps = None, + guide_scale = None, + repainting_scale = None, + model_path = None + ): + if input_image is not None: + input_image = Image.open(io.BytesIO(FS.get_object(input_image))) + input_image = pillow_convert(input_image, "RGB") + if input_mask is not None: + input_mask = Image.open(io.BytesIO(FS.get_object(input_mask))) + input_mask = pillow_convert(input_mask, "L") + if input_reference_image is not None: + input_reference_image = Image.open(io.BytesIO(FS.get_object(input_reference_image))) + input_reference_image = pillow_convert(input_reference_image, "RGB") + + image, seed = pipe( + reference_image=input_reference_image, + edit_image=input_image, + edit_mask=input_mask, + prompt=instruction, + output_height=output_h, + output_width=output_w, + sampler='flow_euler', + sample_steps=sample_steps or pipe.input.get("sample_steps", 28), + guide_scale=guide_scale or pipe.input.get("guide_scale", 50), + seed=seed, + repainting_scale=repainting_scale or pipe.input.get("repainting_scale", 0.0), + lora_path = model_path + ) + with FS.put_to(save_path) as local_path: + image.save(local_path) + return local_path, seed + + +def run(): + parser = argparse.ArgumentParser(description='Argparser for Scepter:\n') + parser.add_argument('--instruction', + dest='instruction', + help='The instruction for editing or generating!', + default="") + parser.add_argument('--output_h', + dest='output_h', + help='The height of output image for generation tasks!', + type=int, + default=1024) + parser.add_argument('--output_w', + dest='output_w', + help='The width of output image for generation tasks!', + type=int, + default=1024) + parser.add_argument('--input_reference_image', + dest='input_reference_image', + help='The input reference image!', + default=None + ) + parser.add_argument('--input_image', + dest='input_image', + help='The input image!', + default=None + ) + parser.add_argument('--input_mask', + dest='input_mask', + help='The input mask!', + default=None + ) + parser.add_argument('--save_path', + dest='save_path', + help='The save path for output image!', + default='examples/output_images/output.png' + ) + parser.add_argument('--seed', + dest='seed', + help='The seed for generation!', + type=int, + default=-1) + + parser.add_argument('--step', + dest='step', + help='The sample step for generation!', + type=int, + default=None) + + parser.add_argument('--guide_scale', + dest='guide_scale', + help='The guide scale for generation!', + type=int, + default=None) + + parser.add_argument('--repainting_scale', + dest='repainting_scale', + help='The repainting scale for content filling generation!', + type=int, + default=None) + + parser.add_argument('--task_type', + dest='task_type', + choices=['portrait', 'subject', 'local_editing'], + help="Choose the task type.", + default='') + + parser.add_argument('--task_model', + dest='task_model', + help='The models list for different tasks!', + default="./models/model_zoo.yaml") + + + parser.add_argument('--infer_type', + dest='infer_type', + choices=['native', 'diffusers'], + help="Choose the inference scripts. 'native' refers to using the official implementation of ace++, " + "while 'diffusers' refers to using the adaptation for diffusers") + + parser.add_argument('--cfg_folder', + dest='cfg_folder', + help='The inference config!', + default="./config") + + cfg = Config(load=True, parser_ins=parser) + + model_yamls = glob.glob(os.path.join(cfg.args.cfg_folder, '*.yaml')) + model_choices = dict() + for i in model_yamls: + model_cfg = Config(load=True, cfg_file=i) + model_name = model_cfg.NAME + model_choices[model_name] = model_cfg + + if cfg.args.infer_type == "native": + infer_name = "ace_plus_native_infer" + elif cfg.args.infer_type == "diffusers": + infer_name = "ace_plus_diffuser_infer" + else: + raise ValueError("infer_type should be native or diffusers") + + assert infer_name in model_choices + + # choose different model + task_model_cfg = Config(load=True, cfg_file=cfg.args.task_model) + + task_model_dict = {} + for task_name, task_model in task_model_cfg.MODEL.items(): + task_model_dict[task_name] = task_model + + + # choose the inference scripts. + pipe_cfg = model_choices[infer_name] + infer_name = pipe_cfg.get("INFERENCE_TYPE", "ACE_PLUS") + pipe = inference_dict[infer_name]() + pipe.init_from_cfg(pipe_cfg) + + if cfg.args.instruction == "" and cfg.args.input_image is None and cfg.args.input_reference_image is None: + params = { + "output_h": cfg.args.output_h, + "output_w": cfg.args.output_w, + "sample_steps": cfg.args.step, + "guide_scale": cfg.args.guide_scale, + "repainting_scale": cfg.args.repainting_scale + } + # run examples + all_examples = [ + ] + for example in all_examples: + example.update(params) + local_path, seed = run_one_case(pipe, **example) + + else: + assert cfg.args.task_type.upper() in task_model_cfg + params = { + "input_image": cfg.args.input_image, + "input_mask": cfg.args.input_mask, + "input_reference_image": cfg.args.input_reference_image, + "save_path": cfg.args.save_path, + "instruction": cfg.args.instruction, + "output_h": cfg.args.output_h, + "output_w": cfg.args.output_w, + "sample_steps": cfg.args.step, + "guide_scale": cfg.args.guide_scale, + "repainting_scale": cfg.args.repainting_scale, + "lora_path": FS.get_from(task_model_dict[cfg.args.task_type.upper()]["MODEL_PATH"]) + } + local_path, seed = run_one_case(pipe, **params) + print(local_path, seed) + +if __name__ == '__main__': + run() + diff --git a/inference/__init__.py b/inference/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/inference/ace_plus_diffusers.py b/inference/ace_plus_diffusers.py new file mode 100644 index 0000000..67a2b6b --- /dev/null +++ b/inference/ace_plus_diffusers.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# Copyright (c) Alibaba, Inc. and its affiliates. +import random +from collections import OrderedDict + +import torch, os +from diffusers import FluxFillPipeline, FluxControlPipeline +from scepter.modules.utils.config import Config +from scepter.modules.utils.distribute import we +from scepter.modules.utils.file_system import FS +from scepter.modules.utils.logger import get_logger +from transformers import T5TokenizerFast +from .utils import ACEPlusImageProcessor + + +class ACEPlusDiffuserInference(): + def __init__(self, logger=None): + if logger is None: + logger = get_logger(name='ace_plus') + self.logger = logger + self.input = {} + + def load_default(self, cfg): + if cfg is not None: + self.input_cfg = {k.lower(): v for k, v in cfg.INPUT.items()} + self.input = {k.lower(): dict(v).get('DEFAULT', None) if isinstance(v, (dict, OrderedDict, Config)) else v for k, v in cfg.INPUT.items()} + self.output = {k.lower(): v for k, v in cfg.OUTPUT.items()} + + def init_from_cfg(self, cfg): + self.max_seq_len = cfg.get("MAX_SEQ_LEN", 4096) + self.image_processor = ACEPlusImageProcessor(max_seq_len=self.max_seq_len) + + local_folder = FS.get_dir_to_local_dir(cfg.MODEL.PRETRAINED_MODEL) + + self.pipe = FluxFillPipeline.from_pretrained(local_folder, torch_dtype=torch.bfloat16).to("cuda") + + tokenizer_2 = T5TokenizerFast.from_pretrained(os.path.join(local_folder, "tokenizer_2"), + additional_special_tokens=["{image}"]) + self.pipe.tokenizer_2 = tokenizer_2 + self.load_default(cfg.DEFAULT_PARAS) + + + def prepare_input(self, + image, + mask, + batch_size=1, + dtype = torch.bfloat16, + num_images_per_prompt=1, + height=512, + width=512, + generator=None): + num_channels_latents = self.pipe.vae.config.latent_channels + # import pdb;pdb.set_trace() + mask, masked_image_latents = self.pipe.prepare_mask_latents( + mask.unsqueeze(0), + image.unsqueeze(0).to(we.device_id, dtype = dtype), + batch_size, + num_channels_latents, + num_images_per_prompt, + height, + width, + dtype, + we.device_id, + generator, + ) + # import pdb;pdb.set_trace() + masked_image_latents = torch.cat((masked_image_latents, mask), dim=-1) + return masked_image_latents + + @torch.no_grad() + def __call__(self, + reference_image=None, + edit_image=None, + edit_mask=None, + prompt='', + task=None, + output_height=1024, + output_width=1024, + sampler='flow_euler', + sample_steps=28, + guide_scale=50, + lora_path=None, + seed=-1, + tar_index=0, + align=0, + repainting_scale=0, + **kwargs): + if isinstance(prompt, str): + prompt = [prompt] + seed = seed if seed >= 0 else random.randint(0, 2 ** 32 - 1) + image, mask, out_h, out_w, slice_w = self.image_processor.preprocess(reference_image, edit_image, edit_mask) + h, w = image.shape[1:] + masked_image_latents = self.prepare_input(image, mask, + batch_size=len(prompt) , height=h, width=w) + + if lora_path is not None: + with FS.get_from(lora_path) as local_path: + self.pipe.load_lora_weights(local_path) + + image = self.pipe( + prompt=prompt, + masked_image_latents=masked_image_latents, + height=h, + width=w, + guidance_scale=guide_scale, + num_inference_steps=sample_steps, + max_sequence_length=512, + generator=torch.Generator("cpu").manual_seed(seed), + ).images[0] + return self.image_processor.postprocess(image, slice_w, out_w, out_h), seed + + +if __name__ == '__main__': + pass \ No newline at end of file diff --git a/inference/utils.py b/inference/utils.py new file mode 100644 index 0000000..2944b5b --- /dev/null +++ b/inference/utils.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# Copyright (c) Alibaba, Inc. and its affiliates. +import math + +import torch +import torchvision.transforms as T +import numpy as np +from scepter.modules.annotator.registry import ANNOTATORS +from scepter.modules.utils.config import Config +from PIL import Image + + +def edit_preprocess(processor, device, edit_image, edit_mask): + if edit_image is None or processor is None: + return edit_image + processor = Config(cfg_dict=processor, load=False) + processor = ANNOTATORS.build(processor).to(device) + new_edit_image = processor(np.asarray(edit_image)) + processor = processor.to("cpu") + del processor + new_edit_image = Image.fromarray(new_edit_image) + return Image.composite(new_edit_image, edit_image, edit_mask) + +class ACEPlusImageProcessor(): + def __init__(self, max_aspect_ratio=4, d=16, max_seq_len=1024): + self.max_aspect_ratio = max_aspect_ratio + self.d = d + self.max_seq_len = max_seq_len + self.transforms = T.Compose([ + T.ToTensor(), + T.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) + ]) + + def image_check(self, image): + if image is None: + return image + # preprocess + W, H = image.size + if H / W > self.max_aspect_ratio: + image = T.CenterCrop([int(self.max_aspect_ratio * W), W])(image) + elif W / H > self.max_aspect_ratio: + image = T.CenterCrop([H, int(self.max_aspect_ratio * H)])(image) + return self.transforms(image) + + + def preprocess(self, + reference_image=None, + edit_image=None, + edit_mask=None, + height=1024, + width=1024, + repainting_scale = 1.0): + reference_image = self.image_check(reference_image) + edit_image = self.image_check(edit_image) + # for reference generation + if edit_image is None: + edit_image = torch.zeros([3, height, width]) + edit_mask = torch.ones([1, height, width]) + else: + edit_mask = np.asarray(edit_mask) + edit_mask = np.where(edit_mask > 128, 1, 0) + edit_mask = edit_mask.astype( + np.float32) if np.any(edit_mask) else np.ones_like(edit_mask).astype( + np.float32) + edit_mask = torch.tensor(edit_mask).unsqueeze(0) + + edit_image = edit_image * (1 - edit_mask * repainting_scale) + + + out_h, out_w = edit_image.shape[-2:] + + assert edit_mask is not None + if reference_image is not None: + # align height with edit_image + _, H, W = reference_image.shape + _, eH, eW = edit_image.shape + scale = eH / H + tH, tW = eH, int(W * scale) + reference_image = T.Resize((tH, tW), interpolation=T.InterpolationMode.BILINEAR, antialias=True)(reference_image) + edit_image = torch.cat([reference_image, edit_image], dim=-1) + edit_mask = torch.cat([torch.zeros([1, reference_image.shape[1], reference_image.shape[2]]), edit_mask], dim=-1) + slice_w = reference_image.shape[-1] + else: + slice_w = 0 + + H, W = edit_image.shape[-2:] + scale = min(1.0, math.sqrt(self.max_seq_len * 2 / ((H / self.d) * (W / self.d)))) + rH = int(H * scale) // self.d * self.d # ensure divisible by self.d + rW = int(W * scale) // self.d * self.d + slice_w = int(slice_w * scale) // self.d * self.d + + edit_image = T.Resize((rH, rW), interpolation=T.InterpolationMode.BILINEAR, antialias=True)(edit_image) + edit_mask = T.Resize((rH, rW), interpolation=T.InterpolationMode.NEAREST_EXACT, antialias=True)(edit_mask) + + return edit_image, edit_mask, out_h, out_w, slice_w + + + def postprocess(self, image, slice_w, out_w, out_h): + w, h = image.size + if slice_w > 0: + output_image = image.crop((slice_w + 20, 0, w, h)) + output_image = output_image.resize((out_w, out_h)) + else: + output_image = image + return output_image \ No newline at end of file diff --git a/models/model_zoo.yaml b/models/model_zoo.yaml new file mode 100644 index 0000000..1c1044f --- /dev/null +++ b/models/model_zoo.yaml @@ -0,0 +1,28 @@ +MODEL: + PORTRAIT: + MODEL_PATH: ${PORTRAIT_MODEL_PATH} + SUBJECT: + MODEL_PATH: ${SUBJECT_MODEL_PATH} + LOCAL_EDITING: + MODEL_PATH: ${LOCAL_MODEL_PATH} + REPAINTING_SCALE: 0.5 + PREPROCESSOR: + - NAME: CannyAnnotator + TYPE: canny_repainting + LOW_THRESHOLD: 100 + HIGH_THRESHOLD: 200 + - NAME: ColorAnnotator + TYPE: mosaic_repainting + RATIO: 64 + - NAME: InfoDrawContourAnnotator + TYPE: contour_repainting + INPUT_NC: 3 + OUTPUT_NC: 1 + N_RESIDUAL_BLOCKS: 3 + SIGMOID: True + PRETRAINED_MODEL: "ms://iic/scepter_annotator@annotator/ckpts/informative_drawing_contour_style.pth" + - NAME: MidasDetector + PRETRAINED_MODEL: "ms://iic/scepter_annotator@annotator/ckpts/dpt_hybrid-midas-501f0c75.pt" + TYPE: depth_repainting + - NAME: GrayAnnotator + TYPE: recolorizing \ No newline at end of file diff --git a/modules/__init__.py b/modules/__init__.py new file mode 100644 index 0000000..7d1bd5d --- /dev/null +++ b/modules/__init__.py @@ -0,0 +1,2 @@ +from .flux import Flux, ACEPlus +from .embedder import ACEHFEmbedder, T5ACEPlusClipFluxEmbedder \ No newline at end of file diff --git a/modules/embedder.py b/modules/embedder.py new file mode 100644 index 0000000..f1beece --- /dev/null +++ b/modules/embedder.py @@ -0,0 +1,383 @@ +# -*- coding: utf-8 -*- +# Copyright (c) Alibaba, Inc. and its affiliates. +import warnings +from contextlib import nullcontext + +import torch +import torch.nn.functional as F +import torch.utils.dlpack +import transformers +from scepter.modules.model.embedder.base_embedder import BaseEmbedder +from scepter.modules.model.registry import EMBEDDERS +from scepter.modules.model.tokenizer.tokenizer_component import ( + basic_clean, canonicalize, heavy_clean, whitespace_clean) +from scepter.modules.utils.config import dict_to_yaml +from scepter.modules.utils.distribute import we +from scepter.modules.utils.file_system import FS + +try: + from transformers import AutoTokenizer, T5EncoderModel +except Exception as e: + warnings.warn( + f'Import transformers error, please deal with this problem: {e}') + + +@EMBEDDERS.register_class() +class ACETextEmbedder(BaseEmbedder): + """ + Uses the OpenCLIP transformer encoder for text + """ + """ + Uses the OpenCLIP transformer encoder for text + """ + para_dict = { + 'PRETRAINED_MODEL': { + 'value': + 'google/umt5-small', + 'description': + 'Pretrained Model for umt5, modelcard path or local path.' + }, + 'TOKENIZER_PATH': { + 'value': 'google/umt5-small', + 'description': + 'Tokenizer Path for umt5, modelcard path or local path.' + }, + 'FREEZE': { + 'value': True, + 'description': '' + }, + 'USE_GRAD': { + 'value': False, + 'description': 'Compute grad or not.' + }, + 'CLEAN': { + 'value': + 'whitespace', + 'description': + 'Set the clean strtegy for tokenizer, used when TOKENIZER_PATH is not None.' + }, + 'LAYER': { + 'value': 'last', + 'description': '' + }, + 'LEGACY': { + 'value': + True, + 'description': + 'Whether use legacy returnd feature or not ,default True.' + } + } + + def __init__(self, cfg, logger=None): + super().__init__(cfg, logger=logger) + pretrained_path = cfg.get('PRETRAINED_MODEL', None) + self.t5_dtype = cfg.get('T5_DTYPE', 'float32') + assert pretrained_path + with FS.get_dir_to_local_dir(pretrained_path, + wait_finish=True) as local_path: + self.model = T5EncoderModel.from_pretrained( + local_path, + torch_dtype=getattr( + torch, + 'float' if self.t5_dtype == 'float32' else self.t5_dtype)) + tokenizer_path = cfg.get('TOKENIZER_PATH', None) + self.length = cfg.get('LENGTH', 77) + + self.use_grad = cfg.get('USE_GRAD', False) + self.clean = cfg.get('CLEAN', 'whitespace') + self.added_identifier = cfg.get('ADDED_IDENTIFIER', None) + if tokenizer_path: + self.tokenize_kargs = {'return_tensors': 'pt'} + with FS.get_dir_to_local_dir(tokenizer_path, + wait_finish=True) as local_path: + if self.added_identifier is not None and isinstance( + self.added_identifier, list): + self.tokenizer = AutoTokenizer.from_pretrained(local_path) + else: + self.tokenizer = AutoTokenizer.from_pretrained(local_path) + if self.length is not None: + self.tokenize_kargs.update({ + 'padding': 'max_length', + 'truncation': True, + 'max_length': self.length + }) + self.eos_token = self.tokenizer( + self.tokenizer.eos_token)['input_ids'][0] + else: + self.tokenizer = None + self.tokenize_kargs = {} + + self.use_grad = cfg.get('USE_GRAD', False) + self.clean = cfg.get('CLEAN', 'whitespace') + + def freeze(self): + self.model = self.model.eval() + for param in self.parameters(): + param.requires_grad = False + + # encode && encode_text + def forward(self, tokens, return_mask=False, use_mask=True): + # tokenization + embedding_context = nullcontext if self.use_grad else torch.no_grad + with embedding_context(): + if use_mask: + x = self.model(tokens.input_ids.to(we.device_id), + tokens.attention_mask.to(we.device_id)) + else: + x = self.model(tokens.input_ids.to(we.device_id)) + x = x.last_hidden_state + + if return_mask: + return x.detach() + 0.0, tokens.attention_mask.to(we.device_id) + else: + return x.detach() + 0.0, None + + def _clean(self, text): + if self.clean == 'whitespace': + text = whitespace_clean(basic_clean(text)) + elif self.clean == 'lower': + text = whitespace_clean(basic_clean(text)).lower() + elif self.clean == 'canonicalize': + text = canonicalize(basic_clean(text)) + elif self.clean == 'heavy': + text = heavy_clean(basic_clean(text)) + return text + + def encode(self, text, return_mask=False, use_mask=True): + if isinstance(text, str): + text = [text] + if self.clean: + text = [self._clean(u) for u in text] + assert self.tokenizer is not None + cont, mask = [], [] + with torch.autocast(device_type='cuda', + enabled=self.t5_dtype in ('float16', 'bfloat16'), + dtype=getattr(torch, self.t5_dtype)): + for tt in text: + tokens = self.tokenizer([tt], **self.tokenize_kargs) + one_cont, one_mask = self(tokens, + return_mask=return_mask, + use_mask=use_mask) + cont.append(one_cont) + mask.append(one_mask) + if return_mask: + return torch.cat(cont, dim=0), torch.cat(mask, dim=0) + else: + return torch.cat(cont, dim=0) + + def encode_list(self, text_list, return_mask=True): + cont_list = [] + mask_list = [] + for pp in text_list: + cont, cont_mask = self.encode(pp, return_mask=return_mask) + cont_list.append(cont) + mask_list.append(cont_mask) + if return_mask: + return cont_list, mask_list + else: + return cont_list + + @staticmethod + def get_config_template(): + return dict_to_yaml('MODELS', + __class__.__name__, + ACETextEmbedder.para_dict, + set_name=True) + +@EMBEDDERS.register_class() +class ACEHFEmbedder(BaseEmbedder): + para_dict = { + "HF_MODEL_CLS": { + "value": None, + "description": "huggingface cls in transfomer" + }, + "MODEL_PATH": { + "value": None, + "description": "model folder path" + }, + "HF_TOKENIZER_CLS": { + "value": None, + "description": "huggingface cls in transfomer" + }, + + "TOKENIZER_PATH": { + "value": None, + "description": "tokenizer folder path" + }, + "MAX_LENGTH": { + "value": 77, + "description": "max length of input" + }, + "OUTPUT_KEY": { + "value": "last_hidden_state", + "description": "output key" + }, + "D_TYPE": { + "value": "float", + "description": "dtype" + }, + "BATCH_INFER": { + "value": False, + "description": "batch infer" + } + } + para_dict.update(BaseEmbedder.para_dict) + def __init__(self, cfg, logger=None): + super().__init__(cfg, logger=logger) + hf_model_cls = cfg.get('HF_MODEL_CLS', None) + model_path = cfg.get("MODEL_PATH", None) + hf_tokenizer_cls = cfg.get('HF_TOKENIZER_CLS', None) + tokenizer_path = cfg.get('TOKENIZER_PATH', None) + self.max_length = cfg.get('MAX_LENGTH', 77) + self.output_key = cfg.get("OUTPUT_KEY", "last_hidden_state") + self.d_type = cfg.get("D_TYPE", "float") + self.clean = cfg.get("CLEAN", "whitespace") + self.batch_infer = cfg.get("BATCH_INFER", False) + self.added_identifier = cfg.get('ADDED_IDENTIFIER', None) + torch_dtype = getattr(torch, self.d_type) + + assert hf_model_cls is not None and hf_tokenizer_cls is not None + assert model_path is not None and tokenizer_path is not None + with FS.get_dir_to_local_dir(tokenizer_path, wait_finish=True) as local_path: + self.tokenizer = getattr(transformers, hf_tokenizer_cls).from_pretrained(local_path, + max_length = self.max_length, + torch_dtype = torch_dtype, + additional_special_tokens=self.added_identifier) + + with FS.get_dir_to_local_dir(model_path, wait_finish=True) as local_path: + self.hf_module = getattr(transformers, hf_model_cls).from_pretrained(local_path, torch_dtype = torch_dtype) + + + self.hf_module = self.hf_module.eval().requires_grad_(False) + + def forward(self, text: list[str], return_mask = False): + batch_encoding = self.tokenizer( + text, + truncation=True, + max_length=self.max_length, + return_length=False, + return_overflowing_tokens=False, + padding="max_length", + return_tensors="pt", + ) + + outputs = self.hf_module( + input_ids=batch_encoding["input_ids"].to(self.hf_module.device), + attention_mask=None, + output_hidden_states=False, + ) + if return_mask: + return outputs[self.output_key], batch_encoding['attention_mask'].to(self.hf_module.device) + else: + return outputs[self.output_key], None + + def encode(self, text, return_mask = False): + if isinstance(text, str): + text = [text] + if self.clean: + text = [self._clean(u) for u in text] + if not self.batch_infer: + cont, mask = [], [] + for tt in text: + one_cont, one_mask = self([tt], return_mask=return_mask) + cont.append(one_cont) + mask.append(one_mask) + if return_mask: + return torch.cat(cont, dim=0), torch.cat(mask, dim=0) + else: + return torch.cat(cont, dim=0) + else: + ret_data = self(text, return_mask = return_mask) + if return_mask: + return ret_data + else: + return ret_data[0] + + def encode_list(self, text_list, return_mask=True): + cont_list = [] + mask_list = [] + for pp in text_list: + cont = self.encode(pp, return_mask=return_mask) + cont_list.append(cont[0]) if return_mask else cont_list.append(cont) + mask_list.append(cont[1]) if return_mask else mask_list.append(None) + if return_mask: + return cont_list, mask_list + else: + return cont_list + + def encode_list_of_list(self, text_list, return_mask=True): + cont_list = [] + mask_list = [] + for pp in text_list: + cont = self.encode_list(pp, return_mask=return_mask) + cont_list.append(cont[0]) if return_mask else cont_list.append(cont) + mask_list.append(cont[1]) if return_mask else mask_list.append(None) + if return_mask: + return cont_list, mask_list + else: + return cont_list + + def _clean(self, text): + if self.clean == 'whitespace': + text = whitespace_clean(basic_clean(text)) + elif self.clean == 'lower': + text = whitespace_clean(basic_clean(text)).lower() + elif self.clean == 'canonicalize': + text = canonicalize(basic_clean(text)) + return text + @staticmethod + def get_config_template(): + return dict_to_yaml('EMBEDDER', + __class__.__name__, + ACEHFEmbedder.para_dict, + set_name=True) + +@EMBEDDERS.register_class() +class T5ACEPlusClipFluxEmbedder(BaseEmbedder): + """ + Uses the OpenCLIP transformer encoder for text + """ + para_dict = { + 'T5_MODEL': {}, + 'CLIP_MODEL': {} + } + + def __init__(self, cfg, logger=None): + super().__init__(cfg, logger=logger) + self.t5_model = EMBEDDERS.build(cfg.T5_MODEL, logger=logger) + self.clip_model = EMBEDDERS.build(cfg.CLIP_MODEL, logger=logger) + + def encode(self, text, return_mask = False): + t5_embeds = self.t5_model.encode(text, return_mask = return_mask) + clip_embeds = self.clip_model.encode(text, return_mask = return_mask) + # change embedding strategy here + return { + 'context': t5_embeds, + 'y': clip_embeds, + } + + def encode_list(self, text, return_mask = False): + t5_embeds = self.t5_model.encode_list(text, return_mask = return_mask) + clip_embeds = self.clip_model.encode_list(text, return_mask = return_mask) + # change embedding strategy here + return { + 'context': t5_embeds, + 'y': clip_embeds, + } + + def encode_list_of_list(self, text, return_mask = False): + t5_embeds = self.t5_model.encode_list_of_list(text, return_mask = return_mask) + clip_embeds = self.clip_model.encode_list_of_list(text, return_mask = return_mask) + # change embedding strategy here + return { + 'context': t5_embeds, + 'y': clip_embeds, + } + + + @staticmethod + def get_config_template(): + return dict_to_yaml('EMBEDDER', + __class__.__name__, + T5ACEPlusClipFluxEmbedder.para_dict, + set_name=True) \ No newline at end of file diff --git a/modules/flux.py b/modules/flux.py new file mode 100644 index 0000000..6d097a3 --- /dev/null +++ b/modules/flux.py @@ -0,0 +1,632 @@ +# -*- coding: utf-8 -*- +# Copyright (c) Alibaba, Inc. and its affiliates. +import math, torch +from collections import OrderedDict +from functools import partial +from einops import rearrange, repeat +from scepter.modules.model.base_model import BaseModel +from scepter.modules.model.registry import BACKBONES +from scepter.modules.utils.config import dict_to_yaml +from scepter.modules.utils.distribute import we +from scepter.modules.utils.file_system import FS +from torch import Tensor, nn +from torch.nn.utils.rnn import pad_sequence +from torch.utils.checkpoint import checkpoint_sequential +from .layers import (DoubleStreamBlock, EmbedND, LastLayer, + MLPEmbedder, SingleStreamBlock, + timestep_embedding) + +@BACKBONES.register_class() +class Flux(BaseModel): + """ + Transformer backbone Diffusion model with RoPE. + """ + para_dict = { + "IN_CHANNELS": { + "value": 64, + "description": "model's input channels." + }, + "OUT_CHANNELS": { + "value": 64, + "description": "model's output channels." + }, + "HIDDEN_SIZE": { + "value": 1024, + "description": "model's hidden size." + }, + "NUM_HEADS": { + "value": 16, + "description": "number of heads in the transformer." + }, + "AXES_DIM": { + "value": [16, 56, 56], + "description": "dimensions of the axes of the positional encoding." + }, + "THETA": { + "value": 10_000, + "description": "theta for positional encoding." + }, + "VEC_IN_DIM": { + "value": 768, + "description": "dimension of the vector input." + }, + "GUIDANCE_EMBED": { + "value": False, + "description": "whether to use guidance embedding." + }, + "CONTEXT_IN_DIM": { + "value": 4096, + "description": "dimension of the context input." + }, + "MLP_RATIO": { + "value": 4.0, + "description": "ratio of mlp hidden size to hidden size." + }, + "QKV_BIAS": { + "value": True, + "description": "whether to use bias in qkv projection." + }, + "DEPTH": { + "value": 19, + "description": "number of transformer blocks." + }, + "DEPTH_SINGLE_BLOCKS": { + "value": 38, + "description": "number of transformer blocks in the single stream block." + }, + "USE_GRAD_CHECKPOINT": { + "value": False, + "description": "whether to use gradient checkpointing." + }, + "ATTN_BACKEND": { + "value": "pytorch", + "description": "backend for the transformer blocks, 'pytorch' or 'flash_attn'." + } + } + def __init__( + self, + cfg, + logger = None + ): + super().__init__(cfg, logger=logger) + self.in_channels = cfg.IN_CHANNELS + self.out_channels = cfg.get("OUT_CHANNELS", self.in_channels) + hidden_size = cfg.get("HIDDEN_SIZE", 1024) + num_heads = cfg.get("NUM_HEADS", 16) + axes_dim = cfg.AXES_DIM + theta = cfg.THETA + vec_in_dim = cfg.VEC_IN_DIM + self.guidance_embed = cfg.GUIDANCE_EMBED + context_in_dim = cfg.CONTEXT_IN_DIM + mlp_ratio = cfg.MLP_RATIO + qkv_bias = cfg.QKV_BIAS + depth = cfg.DEPTH + depth_single_blocks = cfg.DEPTH_SINGLE_BLOCKS + self.use_grad_checkpoint = cfg.get("USE_GRAD_CHECKPOINT", False) + self.attn_backend = cfg.get("ATTN_BACKEND", "pytorch") + self.cache_pretrain_model = cfg.get("CACHE_PRETRAIN_MODEL", False) + self.lora_model = cfg.get("DIFFUSERS_LORA_MODEL", None) + self.comfyui_lora_model = cfg.get("COMFYUI_LORA_MODEL", None) + self.swift_lora_model = cfg.get("SWIFT_LORA_MODEL", None) + self.blackforest_lora_model = cfg.get("BLACKFOREST_LORA_MODEL", None) + self.pretrain_adapter = cfg.get("PRETRAIN_ADAPTER", None) + + if hidden_size % num_heads != 0: + raise ValueError( + f"Hidden size {hidden_size} must be divisible by num_heads {num_heads}" + ) + pe_dim = hidden_size // num_heads + if sum(axes_dim) != pe_dim: + raise ValueError(f"Got {axes_dim} but expected positional dim {pe_dim}") + self.hidden_size = hidden_size + self.num_heads = num_heads + self.pe_embedder = EmbedND(dim=pe_dim, theta=theta, axes_dim= axes_dim) + self.img_in = nn.Linear(self.in_channels, self.hidden_size, bias=True) + self.time_in = MLPEmbedder(in_dim=256, hidden_dim=self.hidden_size) + self.vector_in = MLPEmbedder(vec_in_dim, self.hidden_size) + self.guidance_in = ( + MLPEmbedder(in_dim=256, hidden_dim=self.hidden_size) if self.guidance_embed else nn.Identity() + ) + self.txt_in = nn.Linear(context_in_dim, self.hidden_size) + + self.double_blocks = nn.ModuleList( + [ + DoubleStreamBlock( + self.hidden_size, + self.num_heads, + mlp_ratio=mlp_ratio, + qkv_bias=qkv_bias, + backend=self.attn_backend + ) + for _ in range(depth) + ] + ) + + self.single_blocks = nn.ModuleList( + [ + SingleStreamBlock(self.hidden_size, self.num_heads, mlp_ratio=mlp_ratio, backend=self.attn_backend) + for _ in range(depth_single_blocks) + ] + ) + + self.final_layer = LastLayer(self.hidden_size, 1, self.out_channels) + def merge_diffuser_lora(self, ori_sd, lora_sd, scale=1.0): + key_map = { + "single_blocks.{}.linear1.weight": {"key_list": [ + ["transformer.single_transformer_blocks.{}.attn.to_q.lora_A.weight", + "transformer.single_transformer_blocks.{}.attn.to_q.lora_B.weight", [0, 3072]], + ["transformer.single_transformer_blocks.{}.attn.to_k.lora_A.weight", + "transformer.single_transformer_blocks.{}.attn.to_k.lora_B.weight", [3072, 6144]], + ["transformer.single_transformer_blocks.{}.attn.to_v.lora_A.weight", + "transformer.single_transformer_blocks.{}.attn.to_v.lora_B.weight", [6144, 9216]], + ["transformer.single_transformer_blocks.{}.proj_mlp.lora_A.weight", + "transformer.single_transformer_blocks.{}.proj_mlp.lora_B.weight", [9216, 21504]] + ], "num": 38}, + "single_blocks.{}.modulation.lin.weight": {"key_list": [ + ["transformer.single_transformer_blocks.{}.norm.linear.lora_A.weight", + "transformer.single_transformer_blocks.{}.norm.linear.lora_B.weight", [0, 9216]], + ], "num": 38}, + "single_blocks.{}.linear2.weight": {"key_list": [ + ["transformer.single_transformer_blocks.{}.proj_out.lora_A.weight", + "transformer.single_transformer_blocks.{}.proj_out.lora_B.weight", [0, 3072]], + ], "num": 38}, + "double_blocks.{}.txt_attn.qkv.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.attn.add_q_proj.lora_A.weight", + "transformer.transformer_blocks.{}.attn.add_q_proj.lora_B.weight", [0, 3072]], + ["transformer.transformer_blocks.{}.attn.add_k_proj.lora_A.weight", + "transformer.transformer_blocks.{}.attn.add_k_proj.lora_B.weight", [3072, 6144]], + ["transformer.transformer_blocks.{}.attn.add_v_proj.lora_A.weight", + "transformer.transformer_blocks.{}.attn.add_v_proj.lora_B.weight", [6144, 9216]], + ], "num": 19}, + "double_blocks.{}.img_attn.qkv.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.attn.to_q.lora_A.weight", + "transformer.transformer_blocks.{}.attn.to_q.lora_B.weight", [0, 3072]], + ["transformer.transformer_blocks.{}.attn.to_k.lora_A.weight", + "transformer.transformer_blocks.{}.attn.to_k.lora_B.weight", [3072, 6144]], + ["transformer.transformer_blocks.{}.attn.to_v.lora_A.weight", + "transformer.transformer_blocks.{}.attn.to_v.lora_B.weight", [6144, 9216]], + ], "num": 19}, + "double_blocks.{}.img_attn.proj.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.attn.to_out.0.lora_A.weight", + "transformer.transformer_blocks.{}.attn.to_out.0.lora_B.weight", [0, 3072]] + ], "num": 19}, + "double_blocks.{}.txt_attn.proj.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.attn.to_add_out.lora_A.weight", + "transformer.transformer_blocks.{}.attn.to_add_out.lora_B.weight", [0, 3072]] + ], "num": 19}, + "double_blocks.{}.img_mlp.0.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.ff.net.0.proj.lora_A.weight", + "transformer.transformer_blocks.{}.ff.net.0.proj.lora_B.weight", [0, 12288]] + ], "num": 19}, + "double_blocks.{}.img_mlp.2.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.ff.net.2.lora_A.weight", + "transformer.transformer_blocks.{}.ff.net.2.lora_B.weight", [0, 3072]] + ], "num": 19}, + "double_blocks.{}.txt_mlp.0.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.ff_context.net.0.proj.lora_A.weight", + "transformer.transformer_blocks.{}.ff_context.net.0.proj.lora_B.weight", [0, 12288]] + ], "num": 19}, + "double_blocks.{}.txt_mlp.2.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.ff_context.net.2.lora_A.weight", + "transformer.transformer_blocks.{}.ff_context.net.2.lora_B.weight", [0, 3072]] + ], "num": 19}, + "double_blocks.{}.img_mod.lin.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.norm1.linear.lora_A.weight", + "transformer.transformer_blocks.{}.norm1.linear.lora_B.weight", [0, 18432]] + ], "num": 19}, + "double_blocks.{}.txt_mod.lin.weight": {"key_list": [ + ["transformer.transformer_blocks.{}.norm1_context.linear.lora_A.weight", + "transformer.transformer_blocks.{}.norm1_context.linear.lora_B.weight", [0, 18432]] + ], "num": 19} + } + cover_lora_keys = set() + cover_ori_keys = set() + for k, v in key_map.items(): + key_list = v["key_list"] + block_num = v["num"] + for block_id in range(block_num): + for k_list in key_list: + if k_list[0].format(block_id) in lora_sd and k_list[1].format(block_id) in lora_sd: + cover_lora_keys.add(k_list[0].format(block_id)) + cover_lora_keys.add(k_list[1].format(block_id)) + current_weight = torch.matmul(lora_sd[k_list[0].format(block_id)].permute(1, 0), + lora_sd[k_list[1].format(block_id)].permute(1, 0)).permute(1, 0) + ori_sd[k.format(block_id)][k_list[2][0]:k_list[2][1], ...] += scale * current_weight + cover_ori_keys.add(k.format(block_id)) + # lora_sd.pop(k_list[0].format(block_id)) + # lora_sd.pop(k_list[1].format(block_id)) + self.logger.info(f"merge_blackforest_lora loads lora'parameters lora-paras: \n" + f"cover-{len(cover_lora_keys)} vs total {len(lora_sd)} \n" + f"cover ori-{len(cover_ori_keys)} vs total {len(ori_sd)}") + return ori_sd + + def merge_swift_lora(self, ori_sd, lora_sd, scale = 1.0): + have_lora_keys = {} + for k, v in lora_sd.items(): + k = k[len("model."):] if k.startswith("model.") else k + ori_key = k.split("lora")[0] + "weight" + if ori_key not in ori_sd: + raise f"{ori_key} should in the original statedict" + if ori_key not in have_lora_keys: + have_lora_keys[ori_key] = {} + if "lora_A" in k: + have_lora_keys[ori_key]["lora_A"] = v + elif "lora_B" in k: + have_lora_keys[ori_key]["lora_B"] = v + else: + raise NotImplementedError + self.logger.info(f"merge_swift_lora loads lora'parameters {len(have_lora_keys)}") + for key, v in have_lora_keys.items(): + current_weight = torch.matmul(v["lora_A"].permute(1, 0), v["lora_B"].permute(1, 0)).permute(1, 0) + ori_sd[key] += scale * current_weight + return ori_sd + + def merge_blackforest_lora(self, ori_sd, lora_sd, scale = 1.0): + have_lora_keys = {} + cover_lora_keys = set() + cover_ori_keys = set() + for k, v in lora_sd.items(): + if "lora" in k: + ori_key = k.split("lora")[0] + "weight" + if ori_key not in ori_sd: + raise f"{ori_key} should in the original statedict" + if ori_key not in have_lora_keys: + have_lora_keys[ori_key] = {} + if "lora_A" in k: + have_lora_keys[ori_key]["lora_A"] = v + cover_lora_keys.add(k) + cover_ori_keys.add(ori_key) + elif "lora_B" in k: + have_lora_keys[ori_key]["lora_B"] = v + cover_lora_keys.add(k) + cover_ori_keys.add(ori_key) + else: + if k in ori_sd: + ori_sd[k] = v + cover_lora_keys.add(k) + cover_ori_keys.add(k) + else: + print("unsurpport keys: ", k) + self.logger.info(f"merge_blackforest_lora loads lora'parameters lora-paras: \n" + f"cover-{len(cover_lora_keys)} vs total {len(lora_sd)} \n" + f"cover ori-{len(cover_ori_keys)} vs total {len(ori_sd)}") + + for key, v in have_lora_keys.items(): + current_weight = torch.matmul(v["lora_A"].permute(1, 0), v["lora_B"].permute(1, 0)).permute(1, 0) + # print(key, ori_sd[key].shape, current_weight.shape) + ori_sd[key] += scale * current_weight + return ori_sd + + def merge_comfyui_lora(self, ori_sd, lora_sd, scale = 1.0): + ori_key_map = {key.replace("_", ".") : key for key in ori_sd.keys()} + parse_ckpt = OrderedDict() + for k, v in lora_sd.items(): + if "alpha" in k: + continue + k = k.replace("lora_unet_", "").replace("_", ".") + map_k = ori_key_map[k.split(".lora")[0] + ".weight"] + if map_k not in parse_ckpt: + parse_ckpt[map_k] = {} + if "lora.up" in k: + parse_ckpt[map_k]["lora_up"] = v + elif "lora.down" in k: + parse_ckpt[map_k]["lora_down"] = v + if self.cache_pretrain_model: + self.lora_dict[self.comfyui_lora_model] = {} + + for key, v in parse_ckpt.items(): + current_weight = torch.matmul(v["lora_down"].permute(1, 0), v["lora_up"].permute(1, 0)).permute(1, 0) + self.lora_dict[self.comfyui_lora_model] = current_weight + ori_sd[key] += scale * current_weight + return ori_sd + + def easy_lora_merge(self, ori_sd, lora_sd, scale = 1.0): + for key, v in lora_sd.items(): + ori_sd[key] += scale * v + return ori_sd + + def load_pretrained_model(self, pretrained_model, lora_scale = 1.0): + if next(self.parameters()).device.type == 'meta': + map_location = torch.device(we.device_id) + safe_device = we.device_id + # elif next(self.parameters()).device.type == 'cuda': + # map_location = torch.device(we.device_id) + # safe_device = we.device_id + else: + map_location = "cpu" + safe_device = "cpu" + + if pretrained_model is not None: + if not hasattr(self, "ckpt"): + with FS.get_from(pretrained_model, wait_finish=True) as local_model: + if local_model.endswith('safetensors'): + from safetensors.torch import load_file as load_safetensors + ckpt = load_safetensors(local_model, device=safe_device) + else: + ckpt = torch.load(local_model, map_location=map_location, weights_only=True) + if "state_dict" in ckpt: + ckpt = ckpt["state_dict"] + if "model" in ckpt: + ckpt = ckpt["model"]["model"] + if self.cache_pretrain_model: + self.ckpt = ckpt + self.lora_dict = {} + else: + ckpt = self.ckpt + + new_ckpt = OrderedDict() + for k, v in ckpt.items(): + if k in ("img_in.weight"): + model_p = self.state_dict()[k] + if v.shape != model_p.shape: + expanded_state_dict_weight = torch.zeros_like(model_p, device=v.device) + slices = tuple(slice(0, dim) for dim in v.shape) + expanded_state_dict_weight[slices] = v + new_ckpt[k] = expanded_state_dict_weight + else: + new_ckpt[k] = v + else: + new_ckpt[k] = v + + + if self.lora_model is not None: + with FS.get_from(self.lora_model, wait_finish=True) as local_model: + if local_model.endswith('safetensors'): + from safetensors.torch import load_file as load_safetensors + lora_sd = load_safetensors(local_model, device=safe_device) + else: + lora_sd = torch.load(local_model, map_location=map_location, weights_only=True) + new_ckpt = self.merge_diffuser_lora(new_ckpt, lora_sd, scale=lora_scale) + if self.swift_lora_model is not None: + if not isinstance(self.swift_lora_model, list): + self.swift_lora_model = [(self.swift_lora_model, 1.0)] + for lora_model in self.swift_lora_model: + if isinstance(lora_model, str): + lora_model = (lora_model, 1.0/len(self.swift_lora_model)) + print(lora_model) + self.logger.info(f"load swift lora model: {lora_model}") + with FS.get_from(lora_model[0], wait_finish=True) as local_model: + if local_model.endswith('safetensors'): + from safetensors.torch import load_file as load_safetensors + lora_sd = load_safetensors(local_model, device=safe_device) + else: + lora_sd = torch.load(local_model, map_location=map_location, weights_only=True) + new_ckpt = self.merge_swift_lora(new_ckpt, lora_sd, scale=lora_model[1]) + + if self.blackforest_lora_model is not None: + with FS.get_from(self.blackforest_lora_model, wait_finish=True) as local_model: + if local_model.endswith('safetensors'): + from safetensors.torch import load_file as load_safetensors + lora_sd = load_safetensors(local_model, device=safe_device) + else: + lora_sd = torch.load(local_model, map_location=map_location, weights_only=True) + new_ckpt = self.merge_blackforest_lora(new_ckpt, lora_sd, scale=lora_scale) + + if self.comfyui_lora_model is not None: + if hasattr(self, "current_lora") and self.current_lora == self.comfyui_lora_model: + return + if hasattr(self, "lora_dict") and self.comfyui_lora_model in self.lora_dict: + new_ckpt = self.easy_lora_merge(new_ckpt, self.lora_dict[self.comfyui_lora_model], scale=lora_scale) + else: + with FS.get_from(self.comfyui_lora_model, wait_finish=True) as local_model: + if local_model.endswith('safetensors'): + from safetensors.torch import load_file as load_safetensors + lora_sd = load_safetensors(local_model, device=safe_device) + else: + lora_sd = torch.load(local_model, map_location=map_location, weights_only=True) + new_ckpt = self.merge_comfyui_lora(new_ckpt, lora_sd, scale=lora_scale) + if self.comfyui_lora_model: + self.current_lora = self.comfyui_lora_model + + + adapter_ckpt = {} + if self.pretrain_adapter is not None: + with FS.get_from(self.pretrain_adapter, wait_finish=True) as local_adapter: + if local_adapter.endswith('safetensors'): + from safetensors.torch import load_file as load_safetensors + adapter_ckpt = load_safetensors(local_adapter, device=safe_device) + else: + adapter_ckpt = torch.load(local_adapter, map_location=map_location, weights_only=True) + new_ckpt.update(adapter_ckpt) + + missing, unexpected = self.load_state_dict(new_ckpt, strict=False, assign=True) + self.logger.info( + f'Restored from {pretrained_model} with {len(missing)} missing and {len(unexpected)} unexpected keys' + ) + if len(missing) > 0: + self.logger.info(f'Missing Keys:\n {missing}') + if len(unexpected) > 0: + self.logger.info(f'\nUnexpected Keys:\n {unexpected}') + + def prepare_input(self, x, cond): + if isinstance(cond['context'], list): + context, y = torch.cat(cond["context"], dim=0).to(x), torch.cat(cond["y"], dim=0).to(x) + else: + context, y = cond['context'].to(x), cond['y'].to(x) + batch_frames, batch_frames_ids = [], [] + for ix, shape in zip(x, cond["x_shapes"]): + # unpack image from sequence + ix = ix[:, :shape[0] * shape[1]].view(-1, shape[0], shape[1]) + c, h, w = ix.shape + ix = rearrange(ix, "c (h ph) (w pw) -> (h w) (c ph pw)", ph=2, pw=2) + ix_id = torch.zeros(h // 2, w // 2, 3) + ix_id[..., 1] = ix_id[..., 1] + torch.arange(h // 2)[:, None] + ix_id[..., 2] = ix_id[..., 2] + torch.arange(w // 2)[None, :] + ix_id = rearrange(ix_id, "h w c -> (h w) c") + batch_frames.append([ix]) + batch_frames_ids.append([ix_id]) + + x_list, x_id_list, mask_x_list, x_seq_length = [], [], [], [] + for frames, frame_ids in zip(batch_frames, batch_frames_ids): + proj_frames = [] + for idx, one_frame in enumerate(frames): + one_frame = self.img_in(one_frame) + proj_frames.append(one_frame) + ix = torch.cat(proj_frames, dim=0) + if_id = torch.cat(frame_ids, dim=0) + x_list.append(ix) + x_id_list.append(if_id) + mask_x_list.append(torch.ones(ix.shape[0]).to(ix.device, non_blocking=True).bool()) + x_seq_length.append(ix.shape[0]) + x = pad_sequence(tuple(x_list), batch_first=True) + x_ids = pad_sequence(tuple(x_id_list), batch_first=True).to(x) # [b,pad_seq,2] pad (0.,0.) at dim2 + mask_x = pad_sequence(tuple(mask_x_list), batch_first=True) + + txt = self.txt_in(context) + txt_ids = torch.zeros(context.shape[0], context.shape[1], 3).to(x) + mask_txt = torch.ones(context.shape[0], context.shape[1]).to(x.device, non_blocking=True).bool() + + return x, x_ids, txt, txt_ids, y, mask_x, mask_txt, x_seq_length + + def unpack(self, x: Tensor, cond: dict = None, x_seq_length: list = None) -> Tensor: + x_list = [] + image_shapes = cond["x_shapes"] + for u, shape, seq_length in zip(x, image_shapes, x_seq_length): + height, width = shape + h, w = math.ceil(height / 2), math.ceil(width / 2) + u = rearrange( + u[seq_length-h*w:seq_length, ...], + "(h w) (c ph pw) -> (h ph w pw) c", + h=h, + w=w, + ph=2, + pw=2, + ) + x_list.append(u) + x = pad_sequence(tuple(x_list), batch_first=True).permute(0, 2, 1) + return x + + def forward( + self, + x: Tensor, + t: Tensor, + cond: dict = {}, + guidance: Tensor | None = None, + gc_seg: int = 0, + **kwargs + ) -> Tensor: + x, x_ids, txt, txt_ids, y, mask_x, mask_txt, seq_length_list = self.prepare_input(x, cond) + # running on sequences img + vec = self.time_in(timestep_embedding(t, 256)) + if self.guidance_embed and guidance[-1] >= 0: + if guidance is None: + raise ValueError("Didn't get guidance strength for guidance distilled model.") + vec = vec + self.guidance_in(timestep_embedding(guidance, 256)) + vec = vec + self.vector_in(y) + ids = torch.cat((txt_ids, x_ids), dim=1) + pe = self.pe_embedder(ids) + + mask_aside = torch.cat((mask_txt, mask_x), dim=1) + mask = mask_aside[:, None, :] * mask_aside[:, :, None] + + kwargs = dict( + vec=vec, + pe=pe, + mask=mask, + txt_length = txt.shape[1], + ) + x = torch.cat((txt, x), 1) + if self.use_grad_checkpoint and gc_seg >= 0: + x = checkpoint_sequential( + functions=[partial(block, **kwargs) for block in self.double_blocks], + segments=gc_seg if gc_seg > 0 else len(self.double_blocks), + input=x, + use_reentrant=False + ) + else: + for block in self.double_blocks: + x = block(x, **kwargs) + + kwargs = dict( + vec=vec, + pe=pe, + mask=mask, + ) + + if self.use_grad_checkpoint and gc_seg >= 0: + x = checkpoint_sequential( + functions=[partial(block, **kwargs) for block in self.single_blocks], + segments=gc_seg if gc_seg > 0 else len(self.single_blocks), + input=x, + use_reentrant=False + ) + else: + for block in self.single_blocks: + x = block(x, **kwargs) + x = x[:, txt.shape[1]:, ...] + x = self.final_layer(x, vec) # (N, T, patch_size ** 2 * out_channels) 6 64 64 + x = self.unpack(x, cond, seq_length_list) + return x + + @staticmethod + def get_config_template(): + return dict_to_yaml('MODEL', + __class__.__name__, + Flux.para_dict, + set_name=True) +@BACKBONES.register_class() +class ACEPlus(Flux): + def __init__(self, cfg, logger = None): + super().__init__(cfg, logger) + def prepare_input(self, x, cond): + context, y = cond["context"], cond["y"] + batch_frames, batch_frames_ids = [], [] + for ix, shape, imask, ie, ie_mask in zip(x, cond["x_shapes"], cond["x_mask"], + cond["edit"], cond["edit_mask"]): + # unpack image from sequence + ix = ix[:, :shape[0] * shape[1]].view(-1, shape[0], shape[1]) + imask = torch.ones_like(ix[[0], :, :]) if imask is None else imask.squeeze(0) + if len(ie) > 0: + ie = ie[0].squeeze(0) + ie_mask = torch.ones((ix.shape[0] * 4, ix.shape[1], ix.shape[2])) if ie_mask is None else ie_mask[0].squeeze(0) + else: + ie, ie_mask = torch.zeros_like(ix).to(x), torch.ones_like(imask).to(x) + ix = torch.cat([ix, ie, ie_mask], dim=0) + c, h, w = ix.shape + ix = rearrange(ix, "c (h ph) (w pw) -> (h w) (c ph pw)", ph=2, pw=2) + ix_id = torch.zeros(h // 2, w // 2, 3) + ix_id[..., 1] = ix_id[..., 1] + torch.arange(h // 2)[:, None] + ix_id[..., 2] = ix_id[..., 2] + torch.arange(w // 2)[None, :] + ix_id = rearrange(ix_id, "h w c -> (h w) c") + batch_frames.append([ix]) + batch_frames_ids.append([ix_id]) + x_list, x_id_list, mask_x_list, x_seq_length = [], [], [], [] + for frames, frame_ids in zip(batch_frames, batch_frames_ids): + proj_frames = [] + for idx, one_frame in enumerate(frames): + one_frame = self.img_in(one_frame) + proj_frames.append(one_frame) + ix = torch.cat(proj_frames, dim=0) + if_id = torch.cat(frame_ids, dim=0) + x_list.append(ix) + x_id_list.append(if_id) + mask_x_list.append(torch.ones(ix.shape[0]).to(ix.device, non_blocking=True).bool()) + x_seq_length.append(ix.shape[0]) + # if len(x_list) < 1: import pdb;pdb.set_trace() + x = pad_sequence(tuple(x_list), batch_first=True) + x_ids = pad_sequence(tuple(x_id_list), batch_first=True).to(x) # [b,pad_seq,2] pad (0.,0.) at dim2 + mask_x = pad_sequence(tuple(mask_x_list), batch_first=True) + # import pdb;pdb.set_trace() + if isinstance(context, list): + txt_list, mask_txt_list, y_list = [], [], [] + for sample_id, (ctx, yy) in enumerate(zip(context, y)): + txt_list.append(self.txt_in(ctx.to(x))) + mask_txt_list.append(torch.ones(txt_list[-1].shape[0]).to(ctx.device, non_blocking=True).bool()) + y_list.append(yy.to(x)) + txt = pad_sequence(tuple(txt_list), batch_first=True) + txt_ids = torch.zeros(txt.shape[0], txt.shape[1], 3).to(x) + mask_txt = pad_sequence(tuple(mask_txt_list), batch_first=True) + y = torch.cat(y_list, dim=0) + assert y.ndim == 2 and txt.ndim == 3 + else: + txt = self.txt_in(context) + txt_ids = torch.zeros(context.shape[0], context.shape[1], 3).to(x) + mask_txt = torch.ones(context.shape[0], context.shape[1]).to(x.device, non_blocking=True).bool() + return x, x_ids, txt, txt_ids, y, mask_x, mask_txt, x_seq_length + + @staticmethod + def get_config_template(): + return dict_to_yaml('MODEL', + __class__.__name__, + ACEPlus.para_dict, + set_name=True) \ No newline at end of file diff --git a/modules/layers.py b/modules/layers.py new file mode 100644 index 0000000..6c5dcce --- /dev/null +++ b/modules/layers.py @@ -0,0 +1,519 @@ +# -*- coding: utf-8 -*- +# Copyright (c) Alibaba, Inc. and its affiliates. +from __future__ import annotations + +import math +from dataclasses import dataclass +from torch import Tensor, nn +import torch +from einops import rearrange, repeat +from torch import Tensor +from torch.nn.utils.rnn import pad_sequence + +try: + from flash_attn import ( + flash_attn_varlen_func + ) + FLASHATTN_IS_AVAILABLE = True +except ImportError: + FLASHATTN_IS_AVAILABLE = False + flash_attn_varlen_func = None + +def attention(q: Tensor, k: Tensor, v: Tensor, pe: Tensor, mask: Tensor | None = None, backend = 'pytorch') -> Tensor: + q, k = apply_rope(q, k, pe) + if backend == 'pytorch': + if mask is not None and mask.dtype == torch.bool: + mask = torch.zeros_like(mask).to(q).masked_fill_(mask.logical_not(), -1e20) + x = torch.nn.functional.scaled_dot_product_attention(q, k, v, attn_mask=mask) + # x = torch.nan_to_num(x, nan=0.0, posinf=1e10, neginf=-1e10) + x = rearrange(x, "B H L D -> B L (H D)") + elif backend == 'flash_attn': + # q: (B, H, L, D) + # k: (B, H, S, D) now L = S + # v: (B, H, S, D) + b, h, lq, d = q.shape + _, _, lk, _ = k.shape + q = rearrange(q, "B H L D -> B L H D") + k = rearrange(k, "B H S D -> B S H D") + v = rearrange(v, "B H S D -> B S H D") + if mask is None: + q_lens = torch.tensor([lq] * b, dtype=torch.int32).to(q.device, non_blocking=True) + k_lens = torch.tensor([lk] * b, dtype=torch.int32).to(k.device, non_blocking=True) + else: + q_lens = torch.sum(mask[:, 0, :, 0], dim=1).int() + k_lens = torch.sum(mask[:, 0, 0, :], dim=1).int() + q = torch.cat([q_v[:q_l] for q_v, q_l in zip(q, q_lens)]) + k = torch.cat([k_v[:k_l] for k_v, k_l in zip(k, k_lens)]) + v = torch.cat([v_v[:v_l] for v_v, v_l in zip(v, k_lens)]) + cu_seqlens_q = torch.cat([q_lens.new_zeros([1]), q_lens]).cumsum(0, dtype=torch.int32) + cu_seqlens_k = torch.cat([k_lens.new_zeros([1]), k_lens]).cumsum(0, dtype=torch.int32) + max_seqlen_q = q_lens.max() + max_seqlen_k = k_lens.max() + + x = flash_attn_varlen_func( + q, + k, + v, + cu_seqlens_q=cu_seqlens_q, + cu_seqlens_k=cu_seqlens_k, + max_seqlen_q=max_seqlen_q, + max_seqlen_k=max_seqlen_k + ) + x_list = [x[cu_seqlens_q[i]:cu_seqlens_q[i+1]] for i in range(b)] + x = pad_sequence(tuple(x_list), batch_first=True) + x = rearrange(x, "B L H D -> B L (H D)") + else: + raise NotImplementedError + return x + + +def rope(pos: Tensor, dim: int, theta: int) -> Tensor: + assert dim % 2 == 0 + scale = torch.arange(0, dim, 2, dtype=torch.float64, device=pos.device) / dim + omega = 1.0 / (theta**scale) + out = torch.einsum("...n,d->...nd", pos, omega) + out = torch.stack([torch.cos(out), -torch.sin(out), torch.sin(out), torch.cos(out)], dim=-1) + out = rearrange(out, "b n d (i j) -> b n d i j", i=2, j=2) + return out.float() + + +def apply_rope(xq: Tensor, xk: Tensor, freqs_cis: Tensor) -> tuple[Tensor, Tensor]: + xq_ = xq.float().reshape(*xq.shape[:-1], -1, 1, 2) + xk_ = xk.float().reshape(*xk.shape[:-1], -1, 1, 2) + xq_out = freqs_cis[..., 0] * xq_[..., 0] + freqs_cis[..., 1] * xq_[..., 1] + xk_out = freqs_cis[..., 0] * xk_[..., 0] + freqs_cis[..., 1] * xk_[..., 1] + return xq_out.reshape(*xq.shape).type_as(xq), xk_out.reshape(*xk.shape).type_as(xk) + +class EmbedND(nn.Module): + def __init__(self, dim: int, theta: int, axes_dim: list[int]): + super().__init__() + self.dim = dim + self.theta = theta + self.axes_dim = axes_dim + + def forward(self, ids: Tensor) -> Tensor: + n_axes = ids.shape[-1] + emb = torch.cat( + [rope(ids[..., i], self.axes_dim[i], self.theta) for i in range(n_axes)], + dim=-3, + ) + + return emb.unsqueeze(1) + + +def timestep_embedding(t: Tensor, dim, max_period=10000, time_factor: float = 1000.0): + """ + Create sinusoidal timestep embeddings. + :param t: a 1-D Tensor of N indices, one per batch element. + These may be fractional. + :param dim: the dimension of the output. + :param max_period: controls the minimum frequency of the embeddings. + :return: an (N, D) Tensor of positional embeddings. + """ + t = time_factor * t + half = dim // 2 + freqs = torch.exp(-math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half).to( + t.device + ) + + args = t[:, None].float() * freqs[None] + embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1) + if dim % 2: + embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1) + if torch.is_floating_point(t): + embedding = embedding.to(t) + return embedding + + +class MLPEmbedder(nn.Module): + def __init__(self, in_dim: int, hidden_dim: int): + super().__init__() + self.in_layer = nn.Linear(in_dim, hidden_dim, bias=True) + self.silu = nn.SiLU() + self.out_layer = nn.Linear(hidden_dim, hidden_dim, bias=True) + + def forward(self, x: Tensor) -> Tensor: + return self.out_layer(self.silu(self.in_layer(x))) + + +class RMSNorm(torch.nn.Module): + def __init__(self, dim: int): + super().__init__() + self.scale = nn.Parameter(torch.ones(dim)) + + def forward(self, x: Tensor): + x_dtype = x.dtype + x = x.float() + rrms = torch.rsqrt(torch.mean(x**2, dim=-1, keepdim=True) + 1e-6) + return (x * rrms).to(dtype=x_dtype) * self.scale + + +class QKNorm(torch.nn.Module): + def __init__(self, dim: int): + super().__init__() + self.query_norm = RMSNorm(dim) + self.key_norm = RMSNorm(dim) + + def forward(self, q: Tensor, k: Tensor, v: Tensor) -> tuple[Tensor, Tensor]: + q = self.query_norm(q) + k = self.key_norm(k) + return q.to(v), k.to(v) + + +class SelfAttention(nn.Module): + def __init__(self, dim: int, num_heads: int = 8, qkv_bias: bool = False): + super().__init__() + self.num_heads = num_heads + head_dim = dim // num_heads + + self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias) + self.norm = QKNorm(head_dim) + self.proj = nn.Linear(dim, dim) + + def forward(self, x: Tensor, pe: Tensor, mask: Tensor | None = None) -> Tensor: + qkv = self.qkv(x) + q, k, v = rearrange(qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + q, k = self.norm(q, k, v) + x = attention(q, k, v, pe=pe, mask=mask) + x = self.proj(x) + return x + +class CrossAttention(nn.Module): + def __init__(self, dim: int, context_dim: int, num_heads: int = 8, qkv_bias: bool = False): + super().__init__() + self.num_heads = num_heads + head_dim = dim // num_heads + self.q = nn.Linear(dim, dim, bias=qkv_bias) + self.kv = nn.Linear(dim, context_dim * 2, bias=qkv_bias) + self.norm = QKNorm(head_dim) + self.proj = nn.Linear(dim, dim) + + def forward(self, x: Tensor, context: Tensor, pe: Tensor, mask: Tensor | None = None) -> Tensor: + qkv = self.qkv(x) + q, k, v = rearrange(qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + q, k = self.norm(q, k, v) + x = attention(q, k, v, pe=pe, mask=mask) + x = self.proj(x) + return x + + +@dataclass +class ModulationOut: + shift: Tensor + scale: Tensor + gate: Tensor + + +class Modulation(nn.Module): + def __init__(self, dim: int, double: bool): + super().__init__() + self.is_double = double + self.multiplier = 6 if double else 3 + self.lin = nn.Linear(dim, self.multiplier * dim, bias=True) + + def forward(self, vec: Tensor) -> tuple[ModulationOut, ModulationOut | None]: + out = self.lin(nn.functional.silu(vec))[:, None, :].chunk(self.multiplier, dim=-1) + + return ( + ModulationOut(*out[:3]), + ModulationOut(*out[3:]) if self.is_double else None, + ) + + +class DoubleStreamBlock(nn.Module): + def __init__(self, hidden_size: int, num_heads: int, mlp_ratio: float, qkv_bias: bool = False, backend = 'pytorch'): + super().__init__() + + mlp_hidden_dim = int(hidden_size * mlp_ratio) + self.num_heads = num_heads + self.hidden_size = hidden_size + self.img_mod = Modulation(hidden_size, double=True) + self.img_norm1 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + self.img_attn = SelfAttention(dim=hidden_size, num_heads=num_heads, qkv_bias=qkv_bias) + + self.img_norm2 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + self.img_mlp = nn.Sequential( + nn.Linear(hidden_size, mlp_hidden_dim, bias=True), + nn.GELU(approximate="tanh"), + nn.Linear(mlp_hidden_dim, hidden_size, bias=True), + ) + + self.backend = backend + + self.txt_mod = Modulation(hidden_size, double=True) + self.txt_norm1 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + self.txt_attn = SelfAttention(dim=hidden_size, num_heads=num_heads, qkv_bias=qkv_bias) + + self.txt_norm2 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + self.txt_mlp = nn.Sequential( + nn.Linear(hidden_size, mlp_hidden_dim, bias=True), + nn.GELU(approximate="tanh"), + nn.Linear(mlp_hidden_dim, hidden_size, bias=True), + ) + + + + + def forward(self, x: Tensor, vec: Tensor, pe: Tensor, mask: Tensor = None, txt_length = None): + img_mod1, img_mod2 = self.img_mod(vec) + txt_mod1, txt_mod2 = self.txt_mod(vec) + + txt, img = x[:, :txt_length], x[:, txt_length:] + + # prepare image for attention + img_modulated = self.img_norm1(img) + img_modulated = (1 + img_mod1.scale) * img_modulated + img_mod1.shift + img_qkv = self.img_attn.qkv(img_modulated) + img_q, img_k, img_v = rearrange(img_qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + img_q, img_k = self.img_attn.norm(img_q, img_k, img_v) + # prepare txt for attention + txt_modulated = self.txt_norm1(txt) + txt_modulated = (1 + txt_mod1.scale) * txt_modulated + txt_mod1.shift + txt_qkv = self.txt_attn.qkv(txt_modulated) + txt_q, txt_k, txt_v = rearrange(txt_qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + txt_q, txt_k = self.txt_attn.norm(txt_q, txt_k, txt_v) + + # run actual attention + q = torch.cat((txt_q, img_q), dim=2) + k = torch.cat((txt_k, img_k), dim=2) + v = torch.cat((txt_v, img_v), dim=2) + if mask is not None: + mask = repeat(mask, 'B L S-> B H L S', H=self.num_heads) + attn = attention(q, k, v, pe=pe, mask = mask, backend = self.backend) + txt_attn, img_attn = attn[:, : txt.shape[1]], attn[:, txt.shape[1] :] + + # calculate the img bloks + img = img + img_mod1.gate * self.img_attn.proj(img_attn) + img = img + img_mod2.gate * self.img_mlp((1 + img_mod2.scale) * self.img_norm2(img) + img_mod2.shift) + + # calculate the txt bloks + txt = txt + txt_mod1.gate * self.txt_attn.proj(txt_attn) + txt = txt + txt_mod2.gate * self.txt_mlp((1 + txt_mod2.scale) * self.txt_norm2(txt) + txt_mod2.shift) + x = torch.cat((txt, img), 1) + return x + + +class SingleStreamBlock(nn.Module): + """ + A DiT block with parallel linear layers as described in + https://arxiv.org/abs/2302.05442 and adapted modulation interface. + """ + + def __init__( + self, + hidden_size: int, + num_heads: int, + mlp_ratio: float = 4.0, + qk_scale: float | None = None, + backend='pytorch' + ): + super().__init__() + self.hidden_dim = hidden_size + self.num_heads = num_heads + head_dim = hidden_size // num_heads + self.scale = qk_scale or head_dim**-0.5 + + self.mlp_hidden_dim = int(hidden_size * mlp_ratio) + # qkv and mlp_in + self.linear1 = nn.Linear(hidden_size, hidden_size * 3 + self.mlp_hidden_dim) + # proj and mlp_out + self.linear2 = nn.Linear(hidden_size + self.mlp_hidden_dim, hidden_size) + + self.norm = QKNorm(head_dim) + + self.hidden_size = hidden_size + self.pre_norm = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + + self.mlp_act = nn.GELU(approximate="tanh") + self.modulation = Modulation(hidden_size, double=False) + self.backend = backend + + def forward(self, x: Tensor, vec: Tensor, pe: Tensor, mask: Tensor = None) -> Tensor: + mod, _ = self.modulation(vec) + x_mod = (1 + mod.scale) * self.pre_norm(x) + mod.shift + qkv, mlp = torch.split(self.linear1(x_mod), [3 * self.hidden_size, self.mlp_hidden_dim], dim=-1) + + q, k, v = rearrange(qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + q, k = self.norm(q, k, v) + if mask is not None: + mask = repeat(mask, 'B L S-> B H L S', H=self.num_heads) + # compute attention + attn = attention(q, k, v, pe=pe, mask = mask, backend=self.backend) + # compute activation in mlp stream, cat again and run second linear layer + output = self.linear2(torch.cat((attn, self.mlp_act(mlp)), 2)) + return x + mod.gate * output + + +class DoubleStreamBlockC(DoubleStreamBlock): + """ + A DiT block with parallel linear layers as described in + https://arxiv.org/abs/2302.05442 and adapted modulation interface. + """ + + def __init__(self, hidden_size: int, num_heads: int, mlp_ratio: float, + qkv_bias: bool = False, backend='pytorch', + abondon_cond = False): + super().__init__(hidden_size, num_heads, mlp_ratio, + qkv_bias, backend) + self.abondon_cond = abondon_cond + + def forward(self, x: Tensor, vec: Tensor, + pe: Tensor, mask: Tensor = None, + txt_length=None, + uncondi_length=None, + uncondi_pe = None, + mask_uncond = None): + # pad_sequence(tuple(x_list), batch_first=True) + if self.abondon_cond: + x = [ix[:u_l, :] for ix, u_l in zip(x, uncondi_length)] + x = pad_sequence(x, batch_first=True) + if not x.shape[1] == pe.shape[2]: + pe = uncondi_pe + mask = mask_uncond + # print("double stream block", x.shape, pe.shape) + x = super().forward(x, vec, pe, mask, txt_length) + return x + +class SingleStreamBlockC(SingleStreamBlock): + """ + A DiT block with parallel linear layers as described in + https://arxiv.org/abs/2302.05442 and adapted modulation interface. + """ + + def __init__(self, hidden_size: int, + num_heads: int, + mlp_ratio: float = 4.0, + qk_scale: float | None = None, + backend='pytorch', + abondon_cond = False): + super().__init__(hidden_size, num_heads, mlp_ratio, + qk_scale, backend) + self.abondon_cond = abondon_cond + + def forward(self, x: Tensor, vec: Tensor, pe: Tensor, mask: Tensor = None, + uncondi_length = None, uncondi_pe = None, mask_uncond = None) -> Tensor: + if self.abondon_cond: + x = [ix[:u_l, :] for ix, u_l in zip(x, uncondi_length)] + x = pad_sequence(x, batch_first=True) + if not x.shape[1] == pe.shape[2]: + pe = uncondi_pe + mask = mask_uncond + # print("single stream block", x.shape, pe.shape) + x = super().forward(x, vec, pe, mask) + return x + + +class DoubleStreamBlockD(DoubleStreamBlock): + """ + A DiT block with parallel linear layers as described in + https://arxiv.org/abs/2302.05442 and adapted modulation interface. + """ + + def __init__(self, hidden_size: int, num_heads: int, mlp_ratio: float, + qkv_bias: bool = False, backend='pytorch'): + super().__init__(hidden_size, num_heads, mlp_ratio, + qkv_bias, backend) + mlp_hidden_dim = int(hidden_size * mlp_ratio) + self.edit_mod = Modulation(hidden_size, double=True) + self.edit_norm1 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + self.edit_attn = SelfAttention(dim=hidden_size, num_heads=num_heads, qkv_bias=qkv_bias) + + self.edit_norm2 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + self.edit_mlp = nn.Sequential( + nn.Linear(hidden_size, mlp_hidden_dim, bias=True), + nn.GELU(approximate="tanh"), + nn.Linear(mlp_hidden_dim, hidden_size, bias=True), + ) + + def forward(self, x: Tensor, vec: Tensor, + pe: Tensor, mask: Tensor = None, + txt_length=None, + edit_length=None): + if edit_length is not None: + txt, edit, img = x[:, :txt_length], x[:, txt_length:txt_length + edit_length], x[:, txt_length + edit_length:] + else: + txt, img = x[:, :txt_length], x[:, txt_length:] + img_mod1, img_mod2 = self.img_mod(vec) + txt_mod1, txt_mod2 = self.txt_mod(vec) + # prepare image for attention + img_modulated = self.img_norm1(img) + img_modulated = (1 + img_mod1.scale) * img_modulated + img_mod1.shift + img_qkv = self.img_attn.qkv(img_modulated) + img_q, img_k, img_v = rearrange(img_qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + img_q, img_k = self.img_attn.norm(img_q, img_k, img_v) + # prepare txt for attention + txt_modulated = self.txt_norm1(txt) + txt_modulated = (1 + txt_mod1.scale) * txt_modulated + txt_mod1.shift + txt_qkv = self.txt_attn.qkv(txt_modulated) + txt_q, txt_k, txt_v = rearrange(txt_qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + txt_q, txt_k = self.txt_attn.norm(txt_q, txt_k, txt_v) + + if edit_length is not None: + edit_mod1, edit_mod2 = self.edit_mod(vec) + # prepare edit for attention + edit_modulated = self.edit_norm1(edit) + edit_modulated = (1 + edit_mod1.scale) * edit_modulated + edit_mod1.shift + edit_qkv = self.edit_attn.qkv(edit_modulated) + edit_q, edit_k, edit_v = rearrange(edit_qkv, "B L (K H D) -> K B H L D", K=3, H=self.num_heads) + edit_q, edit_k = self.edit_attn.norm(edit_q, edit_k, edit_v) + else: + edit_q, edit_k, edit_v = None, None, None + + + # run actual attention + q = torch.cat((txt_q,) + ((edit_q,) if edit_q is not None else ()) + (img_q,), dim=2) + k = torch.cat((txt_k,) + ((edit_k,) if edit_k is not None else ()) + (img_k,), dim=2) + v = torch.cat((txt_v,) + ((edit_v,) if edit_v is not None else ()) + (img_v,), dim=2) + if mask is not None: + mask = repeat(mask, 'B L S-> B H L S', H=self.num_heads) + attn = attention(q, k, v, pe=pe, mask=mask, backend=self.backend) + if edit_length is not None: + txt_attn, edit_attn, img_attn = attn[:, : txt_length], attn[:, txt_length:txt_length + edit_length ], attn[:, txt_length + edit_length:] + else: + txt_attn, img_attn = attn[:, : txt_length], attn[:, txt_length:] + + # calculate the img bloks + img = img + img_mod1.gate * self.img_attn.proj(img_attn) + img = img + img_mod2.gate * self.img_mlp((1 + img_mod2.scale) * self.img_norm2(img) + img_mod2.shift) + + # calculate the txt bloks + txt = txt + txt_mod1.gate * self.txt_attn.proj(txt_attn) + txt = txt + txt_mod2.gate * self.txt_mlp((1 + txt_mod2.scale) * self.txt_norm2(txt) + txt_mod2.shift) + + # calculate the img bloks + if edit_length is not None: + edit = edit + edit_mod1.gate * self.edit_attn.proj(edit_attn) + edit = edit + edit_mod2.gate * self.edit_mlp((1 + edit_mod2.scale) * self.edit_norm2(edit) + edit_mod2.shift) + x = torch.cat((txt, edit, img), 1) + else: + x = torch.cat((txt, img), 1) + return x + + +class LastLayer(nn.Module): + def __init__(self, hidden_size: int, patch_size: int, out_channels: int): + super().__init__() + self.norm_final = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6) + self.linear = nn.Linear(hidden_size, patch_size * patch_size * out_channels, bias=True) + self.adaLN_modulation = nn.Sequential(nn.SiLU(), nn.Linear(hidden_size, 2 * hidden_size, bias=True)) + + def forward(self, x: Tensor, vec: Tensor) -> Tensor: + shift, scale = self.adaLN_modulation(vec).chunk(2, dim=1) + x = (1 + scale[:, None, :]) * self.norm_final(x) + shift[:, None, :] + x = self.linear(x) + return x + + +if __name__ == '__main__': + pe = EmbedND(dim=64, theta=10000, axes_dim=[16, 56, 56]) + + ix_id = torch.zeros(64 // 2, 64 // 2, 3) + ix_id[..., 1] = ix_id[..., 1] + torch.arange(64 // 2)[:, None] + ix_id[..., 2] = ix_id[..., 2] + torch.arange(64 // 2)[None, :] + ix_id = rearrange(ix_id, "h w c -> 1 (h w) c") + pos = torch.cat([ix_id, ix_id], dim = 1) + a = pe(pos) + + b = torch.cat([pe(ix_id), pe(ix_id)], dim = 2) + + print(a - b) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..dff0fa9 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +scepter +diffusers \ No newline at end of file