From 416205ae7a40f105ca9a08c68b9de69759cdae7a Mon Sep 17 00:00:00 2001 From: "tuyang.yhj" Date: Fri, 12 May 2023 23:40:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=90=AF=E5=8A=A8=E6=8E=A5?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .idea/misc.xml | 3 + pilot/agent/json_fix_llm.py | 166 ++++++++++++++++++++ pilot/commands/command.py | 173 +++++++++++++++++---- pilot/commands/exception_not_commands.py | 4 + pilot/configs/config.py | 12 +- pilot/json_utils/__init__.py | 0 pilot/json_utils/json_fix_general.py | 121 ++++++++++++++ pilot/json_utils/utilities.py | 81 ++++++++++ pilot/model/inference.py | 2 +- pilot/plugins.py | 2 + pilot/prompts/first_conversation_prompt.py | 3 +- pilot/server/__init__.py | 14 ++ pilot/server/webserver.py | 18 +-- plugins/Db-GPT-SimpleChart-Plugin.zip | Bin 0 -> 69410 bytes 15 files changed, 557 insertions(+), 43 deletions(-) create mode 100644 pilot/agent/json_fix_llm.py create mode 100644 pilot/commands/exception_not_commands.py create mode 100644 pilot/json_utils/__init__.py create mode 100644 pilot/json_utils/json_fix_general.py create mode 100644 pilot/json_utils/utilities.py create mode 100644 plugins/Db-GPT-SimpleChart-Plugin.zip diff --git a/.gitignore b/.gitignore index 0b232d95a..78f55da35 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ __pycache__/ # C extensions *.so +.idea .vscode # Distribution / packaging .Python diff --git a/.idea/misc.xml b/.idea/misc.xml index e965926fe..4ab5f746d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,7 @@ + + \ No newline at end of file diff --git a/pilot/agent/json_fix_llm.py b/pilot/agent/json_fix_llm.py new file mode 100644 index 000000000..3ca8f85b0 --- /dev/null +++ b/pilot/agent/json_fix_llm.py @@ -0,0 +1,166 @@ + +import json +from typing import Any, Dict +import contextlib +from colorama import Fore +from regex import regex + +from pilot.configs.config import Config +from pilot.logs import logger +from pilot.speech import say_text + +from pilot.json_utils.json_fix_general import fix_invalid_escape,add_quotes_to_property_names,balance_braces + +CFG = Config() + +def fix_and_parse_json( + json_to_load: str, try_to_fix_with_gpt: bool = True +) -> Dict[Any, Any]: + """Fix and parse JSON string + + Args: + json_to_load (str): The JSON string. + try_to_fix_with_gpt (bool, optional): Try to fix the JSON with GPT. + Defaults to True. + + Returns: + str or dict[Any, Any]: The parsed JSON. + """ + + with contextlib.suppress(json.JSONDecodeError): + json_to_load = json_to_load.replace("\t", "") + return json.loads(json_to_load) + + with contextlib.suppress(json.JSONDecodeError): + json_to_load = correct_json(json_to_load) + return json.loads(json_to_load) + # Let's do something manually: + # sometimes GPT responds with something BEFORE the braces: + # "I'm sorry, I don't understand. Please try again." + # {"text": "I'm sorry, I don't understand. Please try again.", + # "confidence": 0.0} + # So let's try to find the first brace and then parse the rest + # of the string + try: + brace_index = json_to_load.index("{") + maybe_fixed_json = json_to_load[brace_index:] + last_brace_index = maybe_fixed_json.rindex("}") + maybe_fixed_json = maybe_fixed_json[: last_brace_index + 1] + return json.loads(maybe_fixed_json) + except (json.JSONDecodeError, ValueError) as e: + logger.error("参数解析错误", e) + + +def fix_json_using_multiple_techniques(assistant_reply: str) -> Dict[Any, Any]: + """Fix the given JSON string to make it parseable and fully compliant with two techniques. + + Args: + json_string (str): The JSON string to fix. + + Returns: + str: The fixed JSON string. + """ + assistant_reply = assistant_reply.strip() + if assistant_reply.startswith("```json"): + assistant_reply = assistant_reply[7:] + if assistant_reply.endswith("```"): + assistant_reply = assistant_reply[:-3] + try: + return json.loads(assistant_reply) # just check the validity + except json.JSONDecodeError as e: # noqa: E722 + print(f"JSONDecodeError: {e}") + pass + + if assistant_reply.startswith("json "): + assistant_reply = assistant_reply[5:] + assistant_reply = assistant_reply.strip() + try: + return json.loads(assistant_reply) # just check the validity + except json.JSONDecodeError: # noqa: E722 + pass + + # Parse and print Assistant response + assistant_reply_json = fix_and_parse_json(assistant_reply) + logger.debug("Assistant reply JSON: %s", str(assistant_reply_json)) + if assistant_reply_json == {}: + assistant_reply_json = attempt_to_fix_json_by_finding_outermost_brackets( + assistant_reply + ) + + logger.debug("Assistant reply JSON 2: %s", str(assistant_reply_json)) + if assistant_reply_json != {}: + return assistant_reply_json + + logger.error( + "Error: The following AI output couldn't be converted to a JSON:\n", + assistant_reply, + ) + if CFG.speak_mode: + say_text("I have received an invalid JSON response from the OpenAI API.") + + return {} + + +def correct_json(json_to_load: str) -> str: + """ + Correct common JSON errors. + Args: + json_to_load (str): The JSON string. + """ + + try: + logger.debug("json", json_to_load) + json.loads(json_to_load) + return json_to_load + except json.JSONDecodeError as e: + logger.debug("json loads error", e) + error_message = str(e) + if error_message.startswith("Invalid \\escape"): + json_to_load = fix_invalid_escape(json_to_load, error_message) + if error_message.startswith( + "Expecting property name enclosed in double quotes" + ): + json_to_load = add_quotes_to_property_names(json_to_load) + try: + json.loads(json_to_load) + return json_to_load + except json.JSONDecodeError as e: + logger.debug("json loads error - add quotes", e) + error_message = str(e) + if balanced_str := balance_braces(json_to_load): + return balanced_str + return json_to_load + + +def attempt_to_fix_json_by_finding_outermost_brackets(json_string: str): + if CFG.speak_mode and CFG.debug_mode: + say_text( + "I have received an invalid JSON response from the OpenAI API. " + "Trying to fix it now." + ) + logger.error("Attempting to fix JSON by finding outermost brackets\n") + + try: + json_pattern = regex.compile(r"\{(?:[^{}]|(?R))*\}") + json_match = json_pattern.search(json_string) + + if json_match: + # Extract the valid JSON object from the string + json_string = json_match.group(0) + logger.typewriter_log( + title="Apparently json was fixed.", title_color=Fore.GREEN + ) + if CFG.speak_mode and CFG.debug_mode: + say_text("Apparently json was fixed.") + else: + return {} + + except (json.JSONDecodeError, ValueError): + if CFG.debug_mode: + logger.error(f"Error: Invalid JSON: {json_string}\n") + if CFG.speak_mode: + say_text("Didn't work. I will have to ignore this response then.") + logger.error("Error: Invalid JSON, setting it to empty JSON now.\n") + json_string = {} + + return fix_and_parse_json(json_string) diff --git a/pilot/commands/command.py b/pilot/commands/command.py index 6a987d723..36d3e324b 100644 --- a/pilot/commands/command.py +++ b/pilot/commands/command.py @@ -1,36 +1,153 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import functools -import importlib -import inspect -from typing import Any, Callable, Optional +from pilot.prompts.generator import PromptGenerator +from typing import Dict, List, NoReturn, Union +from pilot.configs.config import Config -class Command: - """A class representing a command. +from pilot.speech import say_text - Attributes: - name (str): The name of the command. - description (str): A brief description of what the command does. - signature (str): The signature of the function that the command executes. Default to None. +from pilot.agent.json_fix_llm import fix_json_using_multiple_techniques +from pilot.commands.exception_not_commands import NotCommands +import json + + +def _resolve_pathlike_command_args(command_args): + if "directory" in command_args and command_args["directory"] in {"", "/"}: + # todo + command_args["directory"] = "" + else: + for pathlike in ["filename", "directory", "clone_path"]: + if pathlike in command_args: + # todo + command_args[pathlike] = "" + return command_args + + +def execute_ai_response_json( + prompt: PromptGenerator, + ai_response: str, + user_input: str = None, +) -> str: """ - def __init__(self, - name: str, - description: str, - method: Callable[..., Any], - signature: str = "", - enabled: bool = True, - disabled_reason: Optional[str] = None, - ) -> None: - self.name = name - self.description = description - self.method = method - self.signature = signature if signature else str(inspect.signature(self.method)) - self.enabled = enabled - self.disabled_reason = disabled_reason + Args: + command_registry: + ai_response: + prompt: - def __call__(self, *args: Any, **kwds: Any) -> Any: - if not self.enabled: - return f"Command '{self.name}' is disabled: {self.disabled_reason}" - return self.method(*args, **kwds) \ No newline at end of file + Returns: + + """ + cfg = Config() + try: + assistant_reply_json = fix_json_using_multiple_techniques(ai_response) + except (json.JSONDecodeError, ValueError) as e: + raise NotCommands("非可执行命令结构") + command_name, arguments = get_command(assistant_reply_json) + if cfg.speak_mode: + say_text(f"I want to execute {command_name}") + + arguments = _resolve_pathlike_command_args(arguments) + # Execute command + if command_name is not None and command_name.lower().startswith("error"): + result = ( + f"Command {command_name} threw the following error: {arguments}" + ) + elif command_name == "human_feedback": + result = f"Human feedback: {user_input}" + else: + for plugin in cfg.plugins: + if not plugin.can_handle_pre_command(): + continue + command_name, arguments = plugin.pre_command( + command_name, arguments + ) + command_result = execute_command( + command_name, + arguments, + prompt, + ) + result = f"Command {command_name} returned: " f"{command_result}" + return result + + +def execute_command( + command_name: str, + arguments, + prompt: PromptGenerator, +): + """Execute the command and return the result + + Args: + command_name (str): The name of the command to execute + arguments (dict): The arguments for the command + + Returns: + str: The result of the command + """ + + cmd = prompt.command_registry.commands.get(command_name) + + # If the command is found, call it with the provided arguments + if cmd: + try: + return cmd(**arguments) + except Exception as e: + return f"Error: {str(e)}" + # TODO: Change these to take in a file rather than pasted code, if + # non-file is given, return instructions "Input should be a python + # filepath, write your code to file and try again + else: + for command in prompt.commands: + if ( + command_name == command["label"].lower() + or command_name == command["name"].lower() + ): + try: + + return command["function"](**arguments) + except Exception as e: + return f"Error: {str(e)}" + raise NotCommands("非可用命令" + command) + + +def get_command(response_json: Dict): + """Parse the response and return the command name and arguments + + Args: + response_json (json): The response from the AI + + Returns: + tuple: The command name and arguments + + Raises: + json.decoder.JSONDecodeError: If the response is not valid JSON + + Exception: If any other error occurs + """ + try: + if "command" not in response_json: + return "Error:", "Missing 'command' object in JSON" + + if not isinstance(response_json, dict): + return "Error:", f"'response_json' object is not dictionary {response_json}" + + command = response_json["command"] + if not isinstance(command, dict): + return "Error:", "'command' object is not a dictionary" + + if "name" not in command: + return "Error:", "Missing 'name' field in 'command' object" + + command_name = command["name"] + + # Use an empty dictionary if 'args' field is not present in 'command' object + arguments = command.get("args", {}) + + return command_name, arguments + except json.decoder.JSONDecodeError: + return "Error:", "Invalid JSON" + # All other errors, return "Error: + error message" + except Exception as e: + return "Error:", str(e) diff --git a/pilot/commands/exception_not_commands.py b/pilot/commands/exception_not_commands.py new file mode 100644 index 000000000..283e618e1 --- /dev/null +++ b/pilot/commands/exception_not_commands.py @@ -0,0 +1,4 @@ +class NotCommands(Exception): + def __init__(self, message, error_code): + super().__init__(message) + self.error_code = error_code \ No newline at end of file diff --git a/pilot/configs/config.py b/pilot/configs/config.py index 7d5ee7eea..57650fee2 100644 --- a/pilot/configs/config.py +++ b/pilot/configs/config.py @@ -42,7 +42,12 @@ class Config(metaclass=Singleton): self.milvus_collection = os.getenv("MILVUS_COLLECTION", "dbgpt") self.milvus_secure = os.getenv("MILVUS_SECURE") == "True" - self.plugins_dir = os.getenv("PLUGINS_DIR", "plugins") + self.authorise_key = os.getenv("AUTHORISE_COMMAND_KEY", "y") + self.exit_key = os.getenv("EXIT_KEY", "n") + self.image_provider = bool(os.getenv("IMAGE_PROVIDER", True)) + self.image_size = int(os.getenv("IMAGE_SIZE", 256)) + + self.plugins_dir = os.getenv("PLUGINS_DIR", "../../plugins") self.plugins: List[AutoGPTPluginTemplate] = [] self.plugins_openai = [] @@ -57,6 +62,7 @@ class Config(metaclass=Singleton): self.huggingface_audio_to_text_model = os.getenv( "HUGGINGFACE_AUDIO_TO_TEXT_MODEL" ) + self.speak_mode = False disabled_command_categories = os.getenv("DISABLED_COMMAND_CATEGORIES") if disabled_command_categories: @@ -92,4 +98,6 @@ class Config(metaclass=Singleton): """Set the temperature value.""" self.temperature = value - \ No newline at end of file + def set_speak_mode(self, value: bool) -> None: + """Set the speak mode value.""" + self.speak_mode = value diff --git a/pilot/json_utils/__init__.py b/pilot/json_utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pilot/json_utils/json_fix_general.py b/pilot/json_utils/json_fix_general.py new file mode 100644 index 000000000..eecf83568 --- /dev/null +++ b/pilot/json_utils/json_fix_general.py @@ -0,0 +1,121 @@ +"""This module contains functions to fix JSON strings using general programmatic approaches, suitable for addressing +common JSON formatting issues.""" +from __future__ import annotations + +import contextlib +import json +import re +from typing import Optional + +from pilot.configs.config import Config +from pilot.logs import logger +from pilot.json_utils.utilities import extract_char_position + +CFG = Config() + + +def fix_invalid_escape(json_to_load: str, error_message: str) -> str: + """Fix invalid escape sequences in JSON strings. + + Args: + json_to_load (str): The JSON string. + error_message (str): The error message from the JSONDecodeError + exception. + + Returns: + str: The JSON string with invalid escape sequences fixed. + """ + while error_message.startswith("Invalid \\escape"): + bad_escape_location = extract_char_position(error_message) + json_to_load = ( + json_to_load[:bad_escape_location] + json_to_load[bad_escape_location + 1 :] + ) + try: + json.loads(json_to_load) + return json_to_load + except json.JSONDecodeError as e: + logger.debug("json loads error - fix invalid escape", e) + error_message = str(e) + return json_to_load + + +def balance_braces(json_string: str) -> Optional[str]: + """ + Balance the braces in a JSON string. + + Args: + json_string (str): The JSON string. + + Returns: + str: The JSON string with braces balanced. + """ + + open_braces_count = json_string.count("{") + close_braces_count = json_string.count("}") + + while open_braces_count > close_braces_count: + json_string += "}" + close_braces_count += 1 + + while close_braces_count > open_braces_count: + json_string = json_string.rstrip("}") + close_braces_count -= 1 + + with contextlib.suppress(json.JSONDecodeError): + json.loads(json_string) + return json_string + + +def add_quotes_to_property_names(json_string: str) -> str: + """ + Add quotes to property names in a JSON string. + + Args: + json_string (str): The JSON string. + + Returns: + str: The JSON string with quotes added to property names. + """ + + def replace_func(match: re.Match) -> str: + return f'"{match[1]}":' + + property_name_pattern = re.compile(r"(\w+):") + corrected_json_string = property_name_pattern.sub(replace_func, json_string) + + try: + json.loads(corrected_json_string) + return corrected_json_string + except json.JSONDecodeError as e: + raise e + + +def correct_json(json_to_load: str) -> str: + """ + Correct common JSON errors. + Args: + json_to_load (str): The JSON string. + """ + + try: + logger.debug("json", json_to_load) + json.loads(json_to_load) + return json_to_load + except json.JSONDecodeError as e: + logger.debug("json loads error", e) + error_message = str(e) + if error_message.startswith("Invalid \\escape"): + json_to_load = fix_invalid_escape(json_to_load, error_message) + if error_message.startswith( + "Expecting property name enclosed in double quotes" + ): + json_to_load = add_quotes_to_property_names(json_to_load) + try: + json.loads(json_to_load) + return json_to_load + except json.JSONDecodeError as e: + logger.debug("json loads error - add quotes", e) + error_message = str(e) + if balanced_str := balance_braces(json_to_load): + return balanced_str + return json_to_load diff --git a/pilot/json_utils/utilities.py b/pilot/json_utils/utilities.py new file mode 100644 index 000000000..c8d207807 --- /dev/null +++ b/pilot/json_utils/utilities.py @@ -0,0 +1,81 @@ +"""Utilities for the json_fixes package.""" +import json +import os.path +import re + +from jsonschema import Draft7Validator + +from pilot.configs.config import Config +from pilot.logs import logger + +CFG = Config() +LLM_DEFAULT_RESPONSE_FORMAT = "llm_response_format_1" + + +def extract_char_position(error_message: str) -> int: + """Extract the character position from the JSONDecodeError message. + + Args: + error_message (str): The error message from the JSONDecodeError + exception. + + Returns: + int: The character position. + """ + + char_pattern = re.compile(r"\(char (\d+)\)") + if match := char_pattern.search(error_message): + return int(match[1]) + else: + raise ValueError("Character position not found in the error message.") + + +def validate_json(json_object: object, schema_name: str) -> dict | None: + """ + :type schema_name: object + :param schema_name: str + :type json_object: object + """ + scheme_file = os.path.join(os.path.dirname(__file__), f"{schema_name}.json") + with open(scheme_file, "r") as f: + schema = json.load(f) + validator = Draft7Validator(schema) + + if errors := sorted(validator.iter_errors(json_object), key=lambda e: e.path): + logger.error("The JSON object is invalid.") + if CFG.debug_mode: + logger.error( + json.dumps(json_object, indent=4) + ) # Replace 'json_object' with the variable containing the JSON data + logger.error("The following issues were found:") + + for error in errors: + logger.error(f"Error: {error.message}") + else: + logger.debug("The JSON object is valid.") + + return json_object + + +def validate_json_string(json_string: str, schema_name: str) -> dict | None: + """ + :type schema_name: object + :param schema_name: str + :type json_object: object + """ + + try: + json_loaded = json.loads(json_string) + return validate_json(json_loaded, schema_name) + except: + return None + + +def is_string_valid_json(json_string: str, schema_name: str) -> bool: + """ + :type schema_name: object + :param schema_name: str + :type json_object: object + """ + + return validate_json_string(json_string, schema_name) is not None diff --git a/pilot/model/inference.py b/pilot/model/inference.py index 532be9c33..c62b0e255 100644 --- a/pilot/model/inference.py +++ b/pilot/model/inference.py @@ -72,7 +72,7 @@ def generate_stream(model, tokenizer, params, device, def generate_output(model, tokenizer, params, device, context_len=2048, stream_interval=2): prompt = params["prompt"] temperature = float(params.get("temperature", 1.0)) - max_new_tokens = int(params.get("max_new_tokens", 1024)) + max_new_tokens = int(params.get("max_new_tokens", 2048)) stop_parameter = params.get("stop", None) if stop_parameter == tokenizer.eos_token: stop_parameter = None diff --git a/pilot/plugins.py b/pilot/plugins.py index 72b0a13a8..5f99e34ff 100644 --- a/pilot/plugins.py +++ b/pilot/plugins.py @@ -207,6 +207,8 @@ def scan_plugins(cfg: Config, debug: bool = False) -> List[AutoGPTPluginTemplate List[Tuple[str, Path]]: List of plugins. """ loaded_plugins = [] + current_dir = os.getcwd() + print(current_dir) # Generic plugins plugins_path_path = Path(cfg.plugins_dir) diff --git a/pilot/prompts/first_conversation_prompt.py b/pilot/prompts/first_conversation_prompt.py index 8f26bcc54..9b9afc025 100644 --- a/pilot/prompts/first_conversation_prompt.py +++ b/pilot/prompts/first_conversation_prompt.py @@ -38,7 +38,6 @@ class FirstPrompt: def construct_first_prompt( self, - command_registry: [] = None, fisrt_message: [str]=[], prompt_generator: Optional[PromptGenerator] = None ) -> str: @@ -64,7 +63,7 @@ class FirstPrompt: if prompt_generator is None: prompt_generator = build_default_prompt_generator() prompt_generator.goals = fisrt_message - prompt_generator.command_registry = command_registry + prompt_generator.command_registry = self.command_registry # 加载插件中可用命令 cfg = Config() for plugin in cfg.plugins: diff --git a/pilot/server/__init__.py b/pilot/server/__init__.py index e69de29bb..909f8bf4b 100644 --- a/pilot/server/__init__.py +++ b/pilot/server/__init__.py @@ -0,0 +1,14 @@ +import os +import random +import sys + +from dotenv import load_dotenv + +if "pytest" in sys.argv or "pytest" in sys.modules or os.getenv("CI"): + print("Setting random seed to 42") + random.seed(42) + +# Load the users .env file into environment variables +load_dotenv(verbose=True, override=True) + +del load_dotenv diff --git a/pilot/server/webserver.py b/pilot/server/webserver.py index 6882cd2fc..db538da24 100644 --- a/pilot/server/webserver.py +++ b/pilot/server/webserver.py @@ -20,8 +20,6 @@ from pilot.configs.model_config import LOGDIR, VICUNA_MODEL_SERVER, LLM_MODEL, D from pilot.plugins import scan_plugins from pilot.configs.config import Config from pilot.commands.command_mange import CommandRegistry -from pilot.prompts.prompt import build_default_prompt_generator - from pilot.prompts.first_conversation_prompt import FirstPrompt from pilot.conversation import ( @@ -39,6 +37,8 @@ from pilot.utils import ( from pilot.server.gradio_css import code_highlight_css from pilot.server.gradio_patch import Chatbot as grChatbot +from pilot.commands.command import execute_ai_response_json + logger = build_logger("webserver", LOGDIR + "webserver.log") headers = {"User-Agent": "dbgpt Client"} @@ -172,12 +172,11 @@ def http_bot(state, mode, db_selector, temperature, max_new_tokens, request: gr. if len(state.messages) == state.offset + 2: query = state.messages[-2][1] # 第一轮对话需要加入提示Prompt + cfg = Config() + first_prompt = FirstPrompt() + first_prompt.command_registry = cfg.command_registry if(autogpt): # autogpt模式的第一轮对话需要 构建专属prompt - cfg = Config() - first_prompt = FirstPrompt() - first_prompt.command_registry = cfg.command_registry - system_prompt = first_prompt.construct_first_prompt(fisrt_message=[query]) logger.info("[TEST]:" + system_prompt) template_name = "auto_dbgpt_one_shot" @@ -456,7 +455,7 @@ if __name__ == "__main__": args = parser.parse_args() logger.info(f"args: {args}") - dbs = get_database_list() + # dbs = get_database_list() # 加载插件 cfg = Config() @@ -464,7 +463,6 @@ if __name__ == "__main__": cfg.set_plugins(scan_plugins(cfg, cfg.debug_mode)) # 加载插件可执行命令 - command_registry = CommandRegistry() command_categories = [ "pilot.commands.audio_text", "pilot.commands.image_gen", @@ -473,11 +471,11 @@ if __name__ == "__main__": command_categories = [ x for x in command_categories if x not in cfg.disabled_command_categories ] + command_registry = CommandRegistry() for command_category in command_categories: command_registry.import_commands(command_category) - cfg.command_registry =command_category - + cfg.command_registry =command_registry logger.info(args) demo = build_webdemo() diff --git a/plugins/Db-GPT-SimpleChart-Plugin.zip b/plugins/Db-GPT-SimpleChart-Plugin.zip new file mode 100644 index 0000000000000000000000000000000000000000..03d995339313799315ce5f5f8a424d83fde76d00 GIT binary patch literal 69410 zcmcG$WmKKX(l(5{ySuvtcXzko?ykWJ7ThfmT!XuNaCdiihv4u*&Uw$wb5>^N{Q34; zO|#d%c6ZlRS65YcSKsndz#u39@1K;yV%1;&{QD0U00Dro0j-$4GOd!iwVjo*keR-N z6Ro_Jv#Gfay^1m{0QmHQmeI^xd9R&ap#cCvegXmj{Ay4BSGy1Z5CAb>{%Du~?J>#U zwo7O3XzSoaXJ}&jtB1)FEu;Cj@?QT}4?IyamR$@mU(Q}odBEdfT@H+cY^==)#$)n> z7{A!zvM@SZ84jHMJliv}0{6Yn5}( zll#GLtrXRvkUR`F?wz76ih~>)7KNoBoFC+&OgI!pgeWMFh#Ms??xX4yPvqD2ShX46 zh@ND=aDS%pRfO&QYu=3pf(7g9$d|+Ew8b=Tm!*8~n3Xo0dfRVx9!V-Ic+G1y94$5} zhvQbCN;8X->8TccBtD;)Cg36RqZyCxz^;_KQW$lw6Hh4)aior&$+pR%NhDS)(v`4v zZ-UE9fkQw$k9!=y>E<27-=mxQ_LT7N(KWHsw=`z|Cun8*1>k-VAOvpk6zHu$ur%pU zQ&xn6s0@^9mgxUMl%KRCb2Fe3prG%> zeQ$pX?+$8UD*k9EzV@h(i_gE7)+t3O2aH=5C%nz_WDImx%j~fgfz7}h@LfRlj1hW= zHxb^&_(Qc*7%jjuR%jmuSFZP_MN!cI^pp@Xj z4Kn+#Jcm)GptOhR{+J( z6|2-~%{)KMcmjTnJKB&U0FTbvbix-f;=~e<&v3xt>VuHd(lg*7BHGjqN^Q2r(f0;N?jX{WXTE@_RN7sNNXvmPQNU(&v2Ihk6fxmV-LQy%Fq=|~BFdu(AX)*e~vCB-EzMqCSR zdOL@~0uhXrdT+6pHDUP)mV?gbkW@gkaVE=aI3r=@g$ z|24!x<7#^_&_T>ivr<7jJC(|Gu+brFSz%SR1f4dA9$!?A_2G+w!;WC%m6&E^uq%U^ zO8n4s`={4OA7SBcADB3ov1anS8^Q6<%a+iQ@Snf}@IjQR>o@oAN@?S{2A4v&{P~5u z*M88xlaLV2NF4>}&4|5G?e`>feWNGc8wquFWdwxels?k`wUMOLrTZ-(Pt|q)n~#Qi zsD`F`272c*(yHh1s=@M~fub>h$q}#tE3py$?@;-N0hBffIz9ule+d8)NJeGQ-hUt9 zn^_3%U}t$7()+Of81SEsE(^#%nFVPHArV<6k^h*5soz^%ZABT|B?g$*BQ*q$+RqcP zE7oj1s#yAUsQr@FIJlZ2EbOX!1JDm=Vw~p9un>B|o}TzdQ04@mB5?hTX>OA0C(@cA z;75qLeY{@4dZTUthU_h9%;ubK=D~VdUAUVOQt>-L_m9osZS4e&YOI0!CN$2)2(Aan z5O}7$u(ggc>^krbPQchwGrxd=ViFk!edxsBs>P%A)BG-U9#I?vudya=%GJ#oyE<{h z+97mILsRtFy=jkTZoR_H25_^gY3E#dr4%sng}vzuJCdEylpL*_tL^RS@hQ{?URy#2 zk~APPf(*!1ucOH8TE~(hr+w{xBr{wE{QTe^{vNk9$ep`QF^IY|OeXeg9@A$hHpBjh zKs2l~YAEGKmzO77B=mWEEb#c6E9oP96~r^(Nu$Uk42!VfJ!o}TRBix zkPUrUGpX|QB^^zGdL5{W29t;YLTXWxP(V~CbZY7)*B#VK@%o`U8QYv37n%5v|oZ2eQCtpv72B^{E6 z4wQ3iNNYKlK{>@yoh16guRYjJk}%8!q`A?5MMFO1n*BwQSVe+SQ3Wev3`EJ|im@p! zLHx6&`h=jW1}bEZ^JYMbgk2d58=3~olOtllxQAv4ykI}bSWI!Ye&`*Xw}Hzi0nBmh+77FH3232M zCXe|Xb98-LcF*l`i)3>(z&)oitXsRcs z)8bb&6-rew-iQTUMj0F4wsJJ{scS)yGGHsLuBi z8~~6pfkSzic1K-RqpV5raGe=Sdl~~g>sX5%oJ1@`s69cm(O2w_AFK=^)gV{72+4)< zuAR(efM3Z9Rgi}@2d-qrPcMe4piCHh-M%DhEtCgxWEie%p7-@mZR z){%11ehe5vV<$>2;P6lePN)GLAizozS)2pYA^t3y$R)OGPjM(sOOM=qc%sxq{Bze7 zjKk17#!~|{(y$1~FN@Br7~3W5@U_3t29Vk7=}Xs5AYmU94V za?Hg9UQ*K`MP7kq=(GV=QiJ-a;99-$iu?;D=H$ldx;Lu7WAS^GY~Jvr_*<0h-0U1| zEsPDF=$vf-#PYwuDnU^@YKj5D^R~Q#CYN`-VZ%>0OVJlEHFGkpEZd7(VTW_6dwssw zMYa^-HBDv`em$a~J0l*!zrUmILCJE&YjAhaOcf2JoX zTuyLCDB9oa_6Tc46O0J!#F8E1qS@Hs+*BIBkR32Z1VlWx?q8KpE$KFBi_y8b_@MJu z{vpnV$HdCIm7!7ucc>QyE9*MkxLkK-*Zg63CvDQ5^r#N83hcEFc0K|7sPllhT)AWk zH>pnldhRPqZU8~6!$od$nQuCHcGqVoTb{J7@qvP!6z1hG6yW5#r+fJLXKqSWL!n5Y zx_VGJitRu~HaI*;3P|fU$|-2NY^30H(Njmf*5_4TBruRGqv0n;1Ixy%Hyjqm@6UuPg@h=DB&N>VOR?x7Q=Hs-G6Z zFWQVjrKD0SJ&wW?l(8{=#AG{CotG+@NwMA-eR7}rli1B^PjCle_8thFX|Ohkas?he z%F1cNX_n5VUo)|V*eXB7KCe|C%YD6oRGc%p7tN-PVZ|}_dJ?B2ZJt6&D&Y2lo*%>=H(i!Og%YppO8S*(6<)o z9i%BRE~vROg@D5w?)AAdeV2x@byhEBo&**8`CMx1&`Eh&ieUNK=hJPwCgF-iwEAvD z3*t}*{+QQCy3PWekaPXb2mq~7aJ0*QVYsEx3zT3c8scd)0wPfV9s#Osi+&6-ToHxh zoB+p)uyZCcP6EVq2*k}dgAhVJ{BS7S$smR*Q!BHndl*SzjCz$a zbuk_$k8?weDw_UE70E2ckqqtH0jSF$GzLT&D;fx>>!|@GNYCwSI>`8)gOn-RXMV9b zbj9e?VEHMgCA=Rv$s8$9I7A~mlq}G2Q|>_NJgt>4#_UNe(lVnLMN0DSwuKljJ!t+{ zM{7pCdKmD0CspANmsaEoaLXCwN*9@KJf{4YLiLT^vu-G=uTozscEy|pL*z#$0kuXc zW-8d2HVs4@R;X`@Xl$X@8aT7#)T1~(dfm^&r*e85$gvJtf0 z`2JY$qKIVq?I-TT2;%DbS^B&oUkg59k>-1g3h5a7zp9!{}U z-8=gCxgCr@dgk}0^mo<%UgOriNk+6z&54jw>6CntROmt>~D}Ikam_%4?25o`$l-o;BuRIke=Cj*lHVS#scfX=gD?1&O=qgdAg7n*NulMWL&?A+$WG z&RAzQqeh&$PX(MA(!SJkgjjH4AH3B`91aN?5m4BQfv%6~&WvKLV~>~ZsTWUQOzEAq zO$}!I%WpWfJzA#2W=9=#Mct6*x02JC?*#QC0hJ>I27DBmpN8q^zxJGc=5i1C=5ZHC zE9;TU^kQo-+-m-1CPW%A55ZsVNZ#(TOTEdxlK!Wv(fl*tI~ib+)QP^mk>OqCzb6Cy z+Y|D?HS~1GM&@suN&gC?|HFs5-}50Yno+Ks0VeSF2}-J-5Es}$PhT)x+77uW`-3yx zY@P&4bJ1Wq`N$1M(YJZ4zB8{2t`4=qKE}$9NB-DB&Ctlvb&506ASMN8T>K13~kg4)WAoATYXFp{z>l4J-qQBUD8HN3DD=Q}z+pbO{u z0$>GgY!33%gTFROFelOAd*rD5Pm+0r`VI;vw28=UNY2d`$~4FpxvS7;2J~gW#)MB5 z&Bfi<&EL{rAFFRp(BIM4y=%w3e+%W_G5tN-?4bX&cc&;KAS@$7XKnN!r2is{vsPZQ zU1UJ;xz)8thPOn7v}kT6IPoo23Jl;R;gqppp|x?4DB-9x<;p!SU*o{%$7oq-Y+jq& zfTXc3&j}h)s)=zXRK5;Kh*>7q^t)Pi&w^smpnz|zi{60CW8H8lw}fs|_-u<;x`_lM z6C7Xx9aI@EqsOVelZAsNYq-ce<>xy`&;yr+*ap*wL^y-l<`BgE9k-6{t~UfpQ1^WD zhO@%#daQWTV+-xdO@R1tj(ujvlNyTDAqGj~TJK)g^>o*ibA@HZ5zmb^4XJMcq{-vs z1Z~px=W(byya>Z%GBQ}*TvdopU?f_WF%8z%=#C!9@)K`?D}c=6wvUXDw*42_cHlTK zP{57R7*n|n$16k6@-H;Q3e`I@%LioTRz(S7JDSkE(3JJ&>T2Ay6L{TY)UqijEn6tq zDq74g*wZ&vav1HO;_CzwvLrz{8<05cYTHjid1K2#PbB*7rsFM>vtZ3@C6Kj9&A3da zQ+-RD5emf*$x09_OMjqa5xc_$2qr!i2KHEW>vsY<#FDH_#xvpUoA#Gxu~Z3}il{cs zx8Jt~RyJokc1^9dV31B}yew<379XLr!cwN2et=Gm5ZRM0xULfGGU(;4Db5-3wwlCT z7QIBFSA((4xVFrI5$Ci$3o?^~KsxRNXokU)+IXTIqqhEG;m85fI9$c(K*b@U)WT`> zjb`r1mT$KBWNPkF_uI{F(99Mq2SS*_No*wb%vBm1W{bh2%}1ueINyy|nYIthMRsfP z-w8?_*>NiAyFCE!lwR?KwWmg`JllA<)^IP+40tL9qa{y#;aT-rkJ2e0uA==C>A+~O zGZo;{TOe~8!xnzomQCRcHm^6PzjONcYzGJbCr3kPYVKriYV-fLs^1;VUo6e7mDi${ zKOlII>FOUuN6RJ&1BF6y*R~e3PbVTu*Y@RNA}H+o(8t3+oo#Ugt>k^bM^MP z^m5G8DNnZOa;%7SpP_E398oShVHr&NYx(Pm(r$avhOT$g0e_^B%+^;s zArx6&_r9he10}YljB0I;w%4*!zevoY8W9{PtKu!;?M!IaX^}G1!KOL&F5AhNMS00N z(>}`qO-()q$&VRTE*PSQU+kGx&UC#Rd^~P1;<)$qTlw6Cm#6n?_;pm$DJEEH1Cb6f zta}-h>#0iX+^Leygj9vLF$bj`?KtC%4$SmGw6|4_=_D=w)uVbP1zl>N1eI@RX8a1IYMxh;Fwb`1|8zoNbAr?6ksAD>GV0 z%-D=Q`MbbF-APa>8ANqu++5@h9FjBa9vsqF((`t)s`$TOrixeP?V7vHw7WEF*`9(L zuzj1Cwv09ABrv%EWN=W3kDSeH2k^l#xQ+&N=Uq5HynYI zQV83tsd&XEtwqQO?ZYYLuql^a? zcFAi=*bQmrnOQAr+%z~dy=`nK>~vorzO?QIqq4B`CiXO+NK00E7?1cBU4T>##!HED z&Ot`+ql=+8kEqbZOA;tpu%U zHnOFy+BV5h-Rbyhf?g-AIPIcS$it9(HKrR2Kll2+kdp~|ZLpjLQoL@+e&e4q(4O!i z-gBe;(7K$`M}p#k2Hjaf`b*s8HmmA#RmK9^S%KH@(J=3H56j--su<4!{zrr47Z!cw;@v0g-*NxImRr+!Gn zz)=djs?pqgw@|kT5J{skM>atZNCv^GqSBBwmR{sMjl4$eD~6E2pMv4*RoH9F>lseguz&<9!v zgQRrWP?guIHm+X?{K+^}kQ}kUu- zkEEVsR*F+2n4OR@jI~tBKw2jj3Hh2>KW6rGndBu5g2VLaPBC-=1I>i71$`)Vw}9zV zXUvVEwDKuvK_(!>w6c7KwOu8mL|?0<*d7yEaq|mXH@ZUB`Q;O&loE=T!Nh#qdU(>Z zJixDhGGBEVf!6r-V1WlCMPKXIXGcJ4qvh>F^W!ts!VYqt;UZ{4Tznr*(>RDO&$+ao z#~Zv3gczl#gIgP=_sf~OP1-9UM-Zjwm&-Q5-ddjGHZE+2v{6pp!lP^O)vCVB748(S zVVmG63}~CBq;twfjh<0gV5~IfTOpLmStn0O>8AI@d~$vI*=KI|^fL0~`SN16`q<#= z=<0d7fg^;!+MeFd;mzm6b0}+&KkQfw!Uch9w^&%4?pH3{OsQNqX$dXJKgq4j)jdZ* z8vHeUg#_wF-%`=8W9n-kQ_9I#nLQN~V}^-=Wrw34JMOe`ND*y7hT$|?@kDXsl;?y2 zr?=B;QEJuDPk!bI=(G=pDIsl`M*eQV0m0At7RtH;JSv#3pDTM|>1x2Nal<6fDPWMd zf*GQ?Sxc-RRE_z;tDZkHFMRbYH{QwM7X$!CY!?>11;7G|?ehrwavFtzSi#BkLWbCi z0)cBeSFi=+@Cac5qvuWX`8si2Sn()G~R?WnpP|ZvA(rT-k;onj=rU2K{~ebsiJ>`ZV|ksT4{J;A@Km1{DQs1 z+8Uxcadq?F)n{%UAy;Aj7I1h`hZD>%nFUGT>S zISx3G%d88_%WAw=;l34=z)}c5tWxO*W}&K)95^5wo90ewR9yqLUKgS-r_PLc6G-(( zS0F}suxLF(O8a3ClU<&kv8dp;IYd#x(Kq@ zGJ~V~mLzIupTH{-8D6%znVCo$FOM@+yO^fRC?Ig>BPf$UCpWtQ384%d1SMssQ6h1C zj85x(ilaM8|F{I`AI1%xZD-vtdJ?&dl^8w0i0+sIfU&PO$SwD&;O=ME64A(!1a#w5 zxZh00DD>B5++DPFXO`SjkT8<1vJdf8x<~X9x`j4qxBJo@xfgk|hlG#n7Tc7;CO<(y zkWp05Y%8338IDh@RY}I6sv;C2+1B4nCvXnMPAtMhFf-}#{KF7Y|+n85dsLGLwM=T0CGET)1Jvrb@*)PF1HTgxr`PK%!;PIWzu*PXB@p)}YPI4yi69q3Y-*glKMCG%C}AxsDgn#Q-m} zoiZt9WG|k#0!LBKZ3J;`T@r@ps1Ja!%2mnAkW*OO^HQSy0&ULzlbC>2`tX@0LhA$r zBt)L#(hMZ?TQlW=h^wxtgidqg60Y@0FJH0;F2v>J)&0W3{SN4yD4kQ!1l121NyO-3 zqoPp1F3adtVr$Hp=|;cS3`qnDMdY)VAC^P*JNKQfmHlnT*#&pgpoRVVf zGJ^c4Ip(P~MTmSu_VIAF3hv0RQAVTplfmU6PDNnfqie{z5GBAqA|zcp>;b@h^6*9o zznEkH(#mK_VbF8oo#(|Qjme+6`Sn&@(GB)i=GqBxiD(W5IA5R`)`6P<5I2|ChD-VY*k)tqJKUx(_mKsZwaW%FB@PU}kZbKX&ekrX1RFky1Sqyn{C+yq_|z1Kryv~I zi{{)(L5|Jm`-RTV&iXjB>5%TwX#Gk{k+ED$$l7jM`57VxNF&zEfAKa6rs|HQJ_j8Ci5@jsg;5RaLK3yJy98rQWhoyBIRLRR7w`s~qV<+3-H1%;aXjv^QShxIAcqVzOQ`r1TOA(2{Y2j!ioAeEgMdTk`LirEFFY@jzSR9vOUE*BD!LU(|uI+ z{Y2DNj?e23;cD`xwjG4iAYw*BT2%f^@Nk|9=6#emYV+aR!FNF0Ih8dY4y+SABo_da zTLY#O6P@Mc#W5Yv9lB_Xgeyvar!8j3Fdq@tru5otG{ic5MWh)`KTDq<_Cox*4#85k00 zA$k-H0}8|^T+7cG_<+GF(p=iwyE|eq-8X8EjIABbl>JA5q_*k?9C=TJ*Aj33=3!X@-7oB#_bfgrDu+6F(WDXvv>V%9~aH zBqLhX)dneRtzeHz@DP##E=@`mj;6(xLg&(U+8=^$(n#1I44~olp>fS7RgQg!2b|O( z`ZG7#Y!mG?>$gE6)Fbm)AJ{y)5v&xH;S4@L*UesQ@Z2D_65bh$>U$%0+BEo^q-F zoO%n|eoBP37z?oeJht+<#t(YI9bz5_oc8)T!sg?~=!V&{8$<>xqu15l284m$Ltq7I z{4>!5N|?tj8HjdQ5}0Yj8ql*FbK@m;Fm%L}+0xU64Dv#enSd%+-drf1gn-nF7O0-? z&dlX#O9A2OD#wHAF%KGO7PY=aQT1)I88n38a zdx{f0*M3W$Ox;rzF?lm7`#oGOF>vp9YDAq&^A^dJiE;AFc;)gi(I4;|e(Hf`gGIf5 zC(KI0=D|_fCBvQh?cHp{GeqJnity7D*avN4!a zD3rI*vDU1%^Q6%2E>Dqxbq|L{OZ!Hq%{d^iOXlOXjUTTH{aE;*+kn603q(?uAY0x- z`*bT?1?~U^71kNheFs?b@lSB&?#2$K#VgpA>{8hoO|RXs zyczq|+B3FR20&mmT%#s_uh>&27Y2mh=9NUp{|V4Sga>XOH*E+y^WK_Jb_5-W`>Ma( z{zh8tsGlzmb85ytF3#NU^2;bEC!ZT~L`@J05s_5NCQz4hIT0Z@_?zH`9atxK!J7puz^o){L{WBmTAw*LFWxU%rOJO6JM%Xci`eA~dUB zcaosmM>eT2&cM0yz>vc58RqJ+LYtOyqK_PBJPKXc3r!h4!)?W2GU@XwGMoLzv68l> zu$N){>7LZ(__^cBN^=zJ0jh*jZF8OIU`k7jWYUSKK20W9HOUtzQ?{L#mHr=Md#h`T zH!JOE1{?vE1>{)TKL9UssR{h7$U~%sCrVtDKd31327L)0;4hKe>uBU$Nd@D$_=X5g zk3J>Ra=i5cN9aa=8>+EJ(ep_zrvgnH-o0uu+I}0{qg+%ATc5*`t7na(+V1m|AmOd~ zth5@-4ann~03fssF(WUB*JIs84|20f^>m9nh^DYNCcTUBCQu8c#p9>TX@($ZV*r#i z7G;~qTJNd;a&yMpwE~NS$?x}yl>^$H+oHX!IaVBzYq%NwS9DRWn>TSBbBh;`z}Gh2JEvnH$&*JAxYPr2<_lQYcZdOy9p+*^kSt*qb`K?Q{7?+nDG1 zF`m{_j1al^2KQOWC)wN}5qS36)|(7RDxQP|uA7Lw*T{8$l+$*pXNtO`WzR`#SK%y` z&KLU~T>lpOjYVZJS{A7|#geoX zl9c}xTxQ3w4N)YAr z``sR6HQ6lgwA&L68pP9S#_r%xZ}U7#@ss%m(gcG>;!tJC0X8K(%rtsP$pny0&!7AU z(bsZIEY*PyMg>6?>I8{Wk7r))O7dLpx$NxZ9J}i%97``NxnN7E{SZE{OfBYg_US}{ zAF}K|#C~Cjx`zWf%OYp3X2%t7c-*iKxHD z*?YnX2~#P-W&`sL61{X`+tai-{qY?O3bpgTR5?u%MW!}dj5c13xVt-#B(l)wNVvn) z+Q@4|X43N(^E55P#SQv?NNNMbx!Lo&{e2rUjV`MN{q5Gr`)1?6wjtk+?f|5M|H!m| z|BnCnXQOZD7yr5if?uv>wDDHn>;KBK|NS0k;oGt7-ygg>INRv{YoC+O&h0b`b<2@Y6F?)&N}0aiXG@e?fHCx1dOMt$U0^nBAK!oD{Si%4fuI0%AO(+A2_i?lj;kqN(Sc)T<(f7X$MAsGIh&E$qGRr z#f@v|aO z!>$PY#JyiQH>X56ow>p6{8p?;+Z5*dWby8th&Wf$LGBg?Blkh!+4Cl$e0?wK_0@MQhdA0c zlA|+zbIt5NWj!t!Z3>32^(6j`|+S&{pIbB|*r^Z0z89`QX9;E7vt$fCkiK#{@1G}x(u7Qb!_(cJu;*aZeFlfh18 zAifelF(D?iFgvJbw7EJ(${gv_n0`R6N)*DT-FOS=0r>Tp`fff0?m+&m_%>D{QFSu% z)5WV=+g4XfXTHtCc2ykv_N(}hdb{UCEPi65Xxs}uJw}1$IoZPw$)=eifbi0mJKPpx z)$)OJaj4`b1ROE)Eq1w4H{CrVe;pxa_QWl`u2#vR#-Y($ho4A_kv$DKIQXj6J?%N5 z0WP4MhAwzFWMfAC3yzKO$gmDE;yrLaFQ9ToGyLa$9`368{0Ev}Kfs7Di+_%d-h(XM zZ6HvLL01zf3Kj&#tynHd?!#ze{!u@&bfgG$0m^3DO2y{MEs1mYF`Xy-ExUDqMTU`) zWh^YxvuF!)LZo4+jD(q?Nk4uzy_a5^F4ZREhoi*po)FCJ9-gx<4)lrN1v7_wDD}bG zO=)~}ItgXDL~tZj&}r^4&;S{mz3-M6jqy=Bx+yzXM%}mCjHxf9G9iQ{hSHa9+z+MZ zDd-|+G8k2uM&qcr+0yK8hEn5o6aihW)c0Y*@CNX^B@`%SYV0>|NOO7VA{{}dtSfM} zY*SiJ?&QYW3B&S%peJQiZC+}_j~cNT32_!wh8&sa-E=$4##^{!xKWVi;W~P&Z8kR3 za;)aV%`U$BK`*KGr<(OK)w2~Lgl$mJ>0zj_34u!my4|>5_RQy3jvDYO3c2vxVbJ^h{KE@w(jU)_^-A_OSO!|-pYIZ z+qVDvqMzQIHTwG`%J=hc`v1zT`3nOt6Wwaj#g7nRxuOJ-05{7)sfeLP8a*5BMARdx zaX_~mHNV1qcTycoV1Lh8&FnY_n|!{c93W*vpM0v658)tWkfG#ND3_n&+3{6O8HviQ z2+u4K5{NpGTL>aRNnI3So9|mjTt0lqYf_j)wOm9|pr53y(MEM`HM-h^s?y2IbNscZyIbwq^TpPK^V79G-Zb-$;2*5`Z{Pg)?(-M6wg&HM(T;!k==Ym&|Fe%qe;dL-T(x^wp!i$P&OiBQ zYDt-DMG8q7>e(@I8EMMdF&P><3EEAdH}SwBsLdS)-b9J{|rngTz}8e}6OO zmkdV6j)o5Ac24HDHori9m*8D%zmWubWJqdQMn-``lD40IlxBdws76&>W`IV4VxXT! zReWezLPcIqf>xGpkcMJlcuYx+Vn7Yx0AR3y$b53^U(mCKf#dVN4eWhze+~WrFpJG> zZ7u(e%>Q55I~be%3H!gW6aNz89s55|7cYqaNxSAYM#iqcQ2!OrzTMFK&0KL#fRsm8 z!|2OE7Yq12lfqel3&1OVNN{PBT}4T&`Sd?bX+d&VTBUI&g$t&O zN8lj3)0E-KjS<&hk<^Rc{VXZdJTmsiYI`X8VgpVjEp-u}$XY?-$~Cq}`0%L+5p?Y* zwvF=u*%Q`9C*W%w`h%4F4^xqwX?$8#KJXWeJi-|!(_%79A0abOUBvA5N6yh1w(spU zhNEq?D%RRdW3#FOpgu+T3t#8K{XjDe3P13&2&Kp#VB%sX<(Rmc7ma?;GYg+QTAglf z*Kc`1^M!CU&~|((DDID!*TGX&^_BW?{^S}?#3(&k9{EMsPcZl+roo9+A}s&Ds0Enbng3T(ye zh~YZGo_KnJ8Ep{K+YcnSnGy7LS~PVm%g;uTlWB`UEy8Zw$Nb z+r}fK?Ssb)oIL10Zg%?Rf334ly6R=d4(t3r=NJ++qX%-0`9V~(6fVyYSGIgmB%n>W z{sF7V!roD_Yk%rUqaQSHjYhR{-t6{%eZU>Km3G%#V1)RkgBSD@Y_~vH}5Z&Nh3UUy^!vhyB$~QD#D#fF0;$ z*0}CdU4WwXV5B4={dMFn6!nn}$!c>HgKYClP!Zkdn%#Mdw#{e8m_~Lxr5^+S=|0HbNd$7)R5=exznlUP9!FsGMgpil_}BT>{d6 z(Ct8SJLIGrG0QY(>0u*fa+xXQqk&A>`2BZ0Wi2F;^anIo(j{4R4}8HWgFZ9i{rlw^ zW|~lyR8J-n`Q%v?LCtzraF@9UCiM<38O&mFRRi~k^<+mnd_;HF1@2baql{OBxw`hj z{IA@2Xv1bRGCXv0o(?34Fk^(yFar+riY#YO+IP_{MK119$;3U0>54HwCc!`u3w_;ziY^P(b_k49i z8ClXri+tSkQV)gT>9O$=o%3X^Q%4==UJ9Lyf1H)o&R2fY2I>wEL4?BzXJfw+I-F<@ z9#`9}D@UU1hig1mlxzrv^E0Hz5&Y$q zh3AcG;KbQW)d%E*R_?i4_^>5%_SdQVt~v)>V55ZX=RYdb^|Umc1^W! zF|$jrS^2&z@z|~;@~jaGUHJX{8~(+ed0dqA%nmK?BmTRi=hg$uV|&Y&d^g8`80tUY zZG6A`|35fMJAFe-V{5Je|5&m$cP(lB9LxuTogKfHBp}e_`qupEB z_7(xiJJ`No|NFPwt9gsOYv0Oy{g)xfpF6C18_GXKiN88@F?6JJ{rAne_r~A7-fub) z8Rdcg!GIFD(b~T0a8RUTXD2?HrJ{h4r>sV49v$2WDM9gY276=4eSYrn@t)xmMm+o? zQs2GPmrU_RovDPaLT$OkkD=ilwziVJ?OK`r0AFi*)fG{EIdj<4jlb8*O+M_kIno*b zpon8RgMCJ~8;%;$uP<7ZYPEI<5CDtB#zhRR)Oor*5WKi2(0PZv&u}?C;!VbPIsf2O z?w5431^ zC+SDUMWK{14pt z%NGsMng3gXxo-6Ln3;Z|o@EYr35bUMx0rGI7c5xIo<|L)HKVQ{RCPA)E{_{VzoHk@y7Tp{0im{LN5wv>jB%|pHrcBhA8hpi6IEe>J7JrhmZEcnJ( z=9uEuMYtrD9>(Sa@x%EmsaxV^JS3&$xp2Hx;sJwjau6mku?Q)6tokT_C7KYy?k2lX zO#473MTvsekBS1!l+B~t6pC=_tF5%>oYi>n__7KCD3ffIQU>eP9tIL&*O0-lGQy%# z=K|Rwu3ymhpPnwA0?_vjoV@KDakO>TqjJul4lg$kX}EdXA$lS&1W`IHfq2Octkb|1 zTam|O^$!VtG9a#Tls%J!;D2v=w4sTC$f>L$3NM)q_q&x;CUqjBQ_xy>_bX?}rxR7` z!*?SYFoda8V0GAZ5K#;vxxk($H;)kt%o2qgNhIm*nO{KTk*^PlPxnsBY4L^#Z8Bf& zR}l<7FO@b{fJAJIsdc_PN`%6S3@gGGT!lR`rCftyZ0(TRA2F<>e9=J)bz4G5@-Q%< zU1FWXo_E~Qg$$I7>k_FLRF77}#bp?3pjK8>Yh7do)_r2(oQkIlAQ0GM^l=S zkxC^QsVH_ov#fG#MqpU^AOv0ft_-qyn^&zlM(VA)60j{< zv&Og+j~JyF=O<%0%+53$GcQ+Xy-X03c z^Wx!_iD4IMP_Y1GWh#baQW!DC`H~xv7VE|C@G@`F2mfyZ6g4qloG zqm*Ub-~5iZs^9naqJdQpH!EywPAUF+&k<)W*f!v$jljjZ?`i|SRKTg0vtDun0)Pca z*|mV3W1{!PeAT6m&Rp%yQ(7`!U#K$aAr9GrCcvr5BHL>h0Av@Kcc=NP5;$Eh|#C!Of z7dr|;>yh!aY|4wNsANi1XN1y)}+!~e(ITSnEnWoyD{Ah)tta>NLj$+E?UEhI~1jDog{j%@5%X`xbif2vw7 zZL1~O&EWVTkI@?Z{L=%c2j}hHO4m)RE7AL5t`+cn>@7sWekt|F zz85Mtb?Isz5W_inC%&aKEjX~pq8<%sySAGp&q@cLidT5Mn_m-mR$|*_gn-KNn+y8G zIsG{Tqy@Mxs^4%<*0x5@fH?ENT+`n~ftk_L(EcA00Gw-K#)n@uCkcAy1a(ow3|yk5 z$yOHO)meT#riMA6vtC?|Uh?`pD8zA3sq~n=W3q(;b2f3vg?@M7bV7>{gVR~J@2CDk za)7`d_>d}JI8|(!*DUbPenObkmRLmV2E+3Bw(VdzzK?nhBZrsxV zwl`-Uk4nVf2nfO6Q27I|KZjxcfTw>?Ht~-T-P+vI@V~%%i?qo8I^t3uZ-sh`xVCs@ z8Keq@Z7lR-C5c!GLz6Xj*ghVgodMV*~t0!F3BzEIR;v-oF1O>ilD!KbPd**8Tf+{#yl`gZVd$*l&OL|6m-;%Ge%l}Q-)r<+QU0Hm|F=x}A1nQ{VER86tp5*@WBY%E90UD-fZYGV zo50BWAFT7|LjQj#q5s~rcq^X&MXCP}9U}Rc6B_@44jKRN9W7M+qowfn{eMGO*^Pe_ zxqoeuTmqo`H{R;)-TsA`v74clv(Z18k^ZLRKoiLi1*lmF-Der(gnwOhp=(0YatF0X zT*+pQ+fCjLS&TGgOFR!AY)gg8M_gPqGo;8fS0jb8%#pR7`4|azN^5QIJYadw+E!}E z)`7uD!HP$5F`8e~7;RmrepLoGZ*U?AueGY$O?Yj%#*gj zi#a0(7rBXBMfItpdv@A69UJRGvOk&G6lj=>)_wEX^j~Y7QvmyY+w&hf@Mkmt4}d8C zy*>Pe#((c1{SR>b0s5bn`i(?}_1`b^k2cuBN^&ex=vfLxV|G~Eb2VND~VXa|0cM4UbMn$P^cc?MXytr$N zYdcIfqzEH=dTufdUuv$gV3m+Q!R&nt%xj@lC~yTDTz%C678!3u;V9!W`7pcqQDVT~>sE@zB94KC_{1E;IQPi? zs6(igsV!#(lbL}9wqx(!AN!sjJ~X>=r>cMX)56o$z4gWJ<>=hv=6nZDRP9_A6)FA9 zb!N}2J)Pzt{*(^8vRczvo6%6Kp9QlH+R?=Q5u6hXj0JvchKf}^%t=zRJJ65;F&Z21LF6i|0ZfK0r(*%Zh zYUMKn=2UY3!nd`s*haPW2c(5ktHIYN|~kNeqY z^wX=%Yw?KG6vqoSlsu)VXLH7NKEK zLoiZeq9o*y-Ak)Rgm}XH{ybvHXL3nNv}r?SlxOa_uX-gUZf4a4j}*0D&EwRgMGA@W zd<81hEAu8T^%V@{XzsMgqUXCsloNAlBuWC|0vaV_OoJ@!c|(0uvx(IjVLfXYB~0dK zG%#-8%Wp}gQ}x&Bsq4shP`yl=*H;3ACE}?mTXVllB>iOQbX}j*sQr>WQ9{ZK_9i64GA&O9l0D0zX70E-)(#N*Hh=A>qF+QNEV(7`G; zw0ixY2yvqV0~&MgAcTqsNi|Vh{IJU32`5IOJoKuRJ(wc%E>8pNMX1-Qc#q(te#j@q zC3XpYx-5_-V~$4fXFTR`mHDAjWYXYo#DqQi6gwJewZ2C0FM9@Y_c6o?CV&JVoVco9>`MjJ3Rb2Vl|e%yM?Q0S9>#n(%9mXDq+-LaqodO!@?%^) z(dUa3N|d(Ak2s2wMB9+no{@omN%3)Fv1}hnuJB#q{XkfiuRRqgPUxX$p`S{4qBC9bl|`b+M6pfS zkNUw2Wv!NUanregrPQo@ubev)A?Bp4?XHnm)Atxmtco1AYkqm`GbITK!BGI&N}5w` zfB!B#w-|fmZE@J z)DT8Ql^@q;aqCZ=Nb@%|L#PdKg?kk~dGms=&=`Rj|)Yj7Xeiki{V;6|DrC z@sk2-8~I*-oL?TZbJLB+5k1%Cs_9!@lJBT5xNZ0kl~}d()ZQEOg<|@wFnELc1r;}W zdA2WwY_;|d!5hTsyjTk{6eS>cRwwK!DLcZ6CeG*g>3 zp*9mavU_u4xplX@>RjucKd(@E`mkWRb9D7xVlM>4z;fPwa)Bb7KrDRvcx=X@GUi=5 zEk^S4biKW|(nuS&?yI9sYG!m6@N|gioQ(x8s!9+T1z>1vc>Uf=`W^2+z39sR`|HEb zQ#jkf0-dg|ki08-Yi3WV60Kz}a;@u!O0cvEfjqEfhNB|enHvV35u;&$U>|A}ihNBB zMRaaCo~CSJM4m!6V`^72h)Vnc=u?Q9!4)c1wAD&Nr$ApuFo`Q-L`gq&-ULi^1d`OG zYGG_};+mS~-VfI#?JFJFMDGwrO4U_+=P^`ZopWSkP^sceER$9#B#-1fi5#+lAry5gD=-(eG`EJRa>$;(c5SrQEPpOMS>rbneBk0(dk)Atw7IKz*M zmolLTDhy0xN;tq86X;M(#39*I4r$+c~_1#{+&_GvFFzb^t>wuyWL}Ku`hnq#8PCgKVLPrpih4E6XMiH`bIBCkeAZZh`%vlm0H@@vVd{y}|c z2dkzyGye+XbEtG^qt?To00}j8gN0E!H7)6=_OqbH;ToA%am%yWkT~p+Z^7COtcV-K6I$(hYz53ufuwj6ai2gT z6L;7aC*yG@paC(cRK>$BF`NMt!bmUSqZ;`tFZS;y8H@WGG#I*Vezu z_127*tDQS(cM4`hxUb*=*@^Amyry2b)%5k0_bZ6deW2*r1=dz#`2noK7T|W_w;K>$ z^n|L%C;Y$;^(pG(Y%^U>&EPEU7%oJ0Bfa~H&O*wgpVUcyR|iDC6P z#raH}fqF-(fcPQGfbVi?-f3{FXOJk6P;k+Pz1+3u8@U4ikVc7iy=eDzHMOl+nAaX` zVW%25I||ixT49l@zt;>iuF}riH6QF&fmmMPjEyW<=$Lq2kSes*Oh-!RU@UW*smlHC zSA?BD&`NP;{dLHFT7RbTR3QVIXJL@C{sKE-@Y$ctuvl?}-7QS~%ZKk@`+$QCZP$Y9 zh}N9DUAvF_W*s6tdX1=dV_>kr!L+10@|Exi#+e39WlwLhP!wTF{q;nEJD0CyjrYc9 z>Y&R+KyLD?07TYZTysYVsR>xZk1zU)Ndy=7(!9{nmap6)A_24YWl;fhem& zw4|oDhgLN$nDT3})yl$#1$H|Pk`NMpsn0*~XlJ6i4{X5&%MHtesT9mZxf44nDK&i$ z422;!Oc?@Ue{A2YFYFD@?HHO+WDp6(=XPx+YLGet4KSSC&QJ3R}C$B5JfZiQV zUKyNu$FoG-sCKJ@Y{{~+LW-pnVm~9rZz1f1ciM?J-lJa-+n{5 zVeaeXdA+$iRq4gip)w76I2^!h~o);y!)47@jf=4HYzed(#PUf^SWrNn?4A8 zWbtQte6pxe=>PO)4=!pMVIlzO#+%mvwLMq|BqW@_o9*h`*;%>U={p&k(foeKs~n>( z1IhpsxZwyDUqOjbfLbXgW(PqVW7D2q{HSB4l%2$i@`2hYpzK=wU zeY3|%2M#kX;0r>su!sWdI}PggRN-tPV}0Er&1ETZYu^+X-8tp6a>7tv6HKhhz1!D? zu)a%_phjfDatMA?ls|w;Z9hKOA@zS`?pG0@FXAv>%0x2rzGIyXP>JZ%gUe}!7U*@L zi0=K_x#-QucYH4WT8#c3`b|7RvJdak0Rngv!e5Jr4haZ|_jko(;%IGa^G0Dw>bBS%NIpqE!i7X174V(8mXiHYJWXRpWBc(L9IVhnnLy^G#UnJ0LX0#K zxzjdym4zGNM(i`z#scz9aG#H9dA(xh#!VCpYbBOz)+#c=4$6mLQa)7%&PhyYKX};x zv|{#97Jo5Xwc!iQX8uNJpq_|?HlXD{QvQ|O4OGIDqp?TQjn1n>4Jz`qJ?K6W+jvQ8 z*C7n#Nb6CUM>=sxC6?x-7YZJjqF_*20ZmR-PK?emT1+lFi3*{`w~%61iom-_;%NF# zu%KOAh}a2Rx@%lM z%t?``sY6v(gpRMyW5AmXbgB;MAhFvP8U@Oz_^;}8IY}?ZhIYF@p5Gthf+~cYi{Ix3 ze3J)l`xtJ_P4LZ0{<=BIg~uu{PG}FTL^5|MGOL8+r>QZgqhx*}8ya~QCWZ4-t{1wk zZbk0G=U9x7A>4fLlVlgKc{6&V`PzSe-^kFoaI#5~j6e+n&F3pWxIuV<>fPEJTRGtC z^nn#W0K+P5JZzhMZ|T_(^GM=Jz5CAOOChlpV}7{_mmP+JMD&SEsT@+A>++nkF*OH^ zT0K)rJ&VDb2tQlDCxLY%&?`x&9;IAFkw3oP{;q(cc%k|5C9AcAG=w%=uAK~f(ii&V zEo=_5pqlod?3e0CXIMwkJNIO!w*@U3(JR*y34zPQ6ZJKKA-E9Vf8 z*iB0#xSo_!H1^}LAeDBbLGmzKG+=ymNZQ1c`5Ekr;imXZN1&uOBw=_oLeB8@m)Gl0YuGawV^o3GIpJ9V zeV3*m$++2rkgvhf1g*bUKn9yGMunK}#%!q*INmDShPQvRA~MxCGz^-Q;i!}KK#$IP zxqG^K&&B@J=gI+St$eRnmLA7~sSLqi*Y)WPZ4U+$7v)xeU?4i@27mc(Oy*;*Pj0g` zxZXANSJzdoq8er@wISN1FLtZ96p|&5TxsuG)qCI9B6xIUG7Nen7O}T7kH@C6NOr{3 zptB?e)j@tIpy<{oaG?JDRmrA%M;`%rHYx-zjKoXO|7s5D0FF?g)lBgt;ZYT1GN-QL zAk8j%gL)GCATSLbiY!kgg9En?5>B}B7LozgTpXHj4)H7!?u}a*>xo0=bko9Mj*E|= z@pN8L@a?EYxRGQpbV!R__gpUj=8vvS$Qe-ccEe=YO(US_CwxA^II>)ZwQV)Zirpms z1me|n_9+27*{!3Qg6}sY2SVoFkjTkcLy;C(m&)abM^iLYIP^RowqSTj*K*ekI2Vup z;sf~u@b9Bg_QN8n9v={!*&ZN(*Op-2&&}YZZ*)wDOc}F9$Gn|vw?ou~nHz8>mDLr`R`AYZgXH(Po&yaPm70Rm2 zbzn25I*#jUjffozAuL)@ubR*4!mG*Sn}MEEMjKC`W0KWzlMMvB+4huIYi2|jr>leX zb$eH4M7=$fIB(U$^S$p9c}am;y)wvdSa18X2hOF z`_PZ23S?@xzSS%1%EN27KrPF5@Gi)%pg+V>oDSKGP13J9U`AEDBoD1SiFyC1TVQ-e z{X#SMC*R{5x6sMDLH9!?BcNp`f?ZDunF>$~G;r z(#Tw4YY+m@TrR`;koHS+9;O3KE1cLB2_H0uG|GawU^zo;C?Tg)V69Y2hr2No3545Cx|b1;<7CSmNqSU%s>j>74#2d+fUO8gi6wt2tPi?l~yrrDoeklF)DCv zgAORciO%O%cJG9Uw`9;|eMqi#=S-DOzOU_P-W%1Nq*fS04Zo|IdJpq~D#~Z;=Ygn{KDa46)s=&w9}?k)^-+AP2ydiG?7!sO`N=n8Q(GD|8~i%_5ZCvRBn}9w-emUI z(wqexPXFz|3Ls58{XZ_+`Tf{8NNGv|z#8vm)3I&G7#Q=7_DnO?DOf>*Nl_xCz!uZr zAlndC(}4sNs(0|7n8Q3Ll{Fqh^zQuZ%w}~>GD(26=+KEvn?2UI(@i-UGDx9OPl3h) zT7|#7dLIkm)=Iuo>gOs^6;EPx^rTdMX`^Nc*aH=!YQg>xwyCq&lTTcUpmbj8D9=f0 zle;;PiO^wejVT&aTBCIDH>J-AV-XlMAXc;lA%n_U+zQypmdkP> znehC&;>P+4!|)wQDC(1PoEI&yfRebSJ3Xk%YG=dDN8T-|T@LzvG=pwLJx;>5n7Twz ztD5Jjm>!b-uhubx5K^<#oI9DHt&uZ~!agXjH|?6G2@pM1sImlq#K<2ikUzRydA4ez zpkHwsdR7mCSy(Ds;T|EUP6d2=^7BVa&msHq=79tS*7SfT{ zLxmS=SBRpXMDXQ7hK`Pw6i}?b^|~^@-m_Ze(!i6Z>(tGh?oJ=Sy&0Nnx^I{f$I5?s ztrF1&LB5LH03qUe(TGo<6q8uNQ5tf7?v#pWFB)uVH<}D7z84VQwMgWA*jJHbI_983 z6c&Z=IvgUz?5Bx(ch1&j*z$|Y-gnJ^t%?6W=tN*pB})|^O|K4r0d7z20@2_p9nYY6t}r~R(^PJ zKHg?c*PC*!Cut@auK5nHE|JU-QC&a2Xxolop0)r+AlG~klO>!4-J2-PfGxO9jf(MN z1yXfbMQH7ZVh1$)jGDe~T;`8@tki~2$TP0U%!%J^=$JUzydk|V14SL4zmBV&NGCfa zT>hH(PJ_Ac3IlBTZPR}ZM-IS1asMX{#oE}x^q;qV{bpw89W5&xNRQBe@q!{t?}^mp z$&{ATj&)wt^$|PQnloVJ#}Tf}l|}T-z2~RlkfNJheNzd=Z4zJB)`HYcgJ+QYB{DxD zFU7kZRCH7DEdAD|^>f_Z=#gz;b05N0L51R}MvGAuSIrm$JYBR-FiXlcmsuvQu(3Q%2 zN+zY?N1b~|4SctDz~=9EX;I67TfycbI5Fp-&EI$>3`;0!xthzQvoN$c91hd&C$?l1 zpe|-biM}|vyE%KFI`vsSJp|rzVr2hdJ^T8FWn%x=(Mch`8=Y5x5Z>VaYe5tPp8R$V zU#&K zJ8Va()8gB)4^}Ca?1d8(x^!XYtkNEmPPA*j_>~O`P99`{yG8aZCbbT!^LGK|LhgS1 zFYLG~qGN?3bWZt%cPa0EP_obshrp3+PP7X#nSZEE#OJ7v{v=b1oMt)N(Hf~LjC*SB ztB6q7NAI_{lVU{8hef{*w?41WOKGR-VC-&gR)pwX>N>%6G54tw2?algTzMv>PLlKn za(?aIKY5&Dt-M>Y8vR9!J<%lv@*V*B8|;5A5FLOCVFvoU3yFW782rZ(j5mSUIXjyD zrYM4xHY``^VSIRBQ8msN>nF87wUyTe$zxDOFb)iV7+}p1`rOXxV!|cObvGzmp2X|@gV^+OyJ`B4otz-)av6ko*oPi+xY-l3enBwsa1*%QCRFlGsm-2%^@ljC3YNjLEhifnr2N6u>hIdV2B)~pKF|(vE z3#p#|`ZncE1JW6sVsxGbXg%%{nwbLXJv5J9^-tb0Sn<=&;|Br}ngoW-uYqO*>Sur<4dvHCBxc2b|c#(|UjbP1_od^<$DfHqFzf(BaC|+91lQ|e7Ik1XTWtO34E=LK5 z>_6sc@s;Fc%m>&HSt_(}k~WgZ5}|-#mw4_213%KL`hZ3KSHEg-f&|Tsoa^cNWAb*d zG=@pZ#jp{6r$X#4r$0^R>F{ger7bU0xj!Q=t)D})ac*JqC`=>0^>?g<>h*`j@66q?TTpO+=yz2WW`_~x7!Pj~#%GBQDlfd;^AMA0 zCatyMGk^q=y1P!S@wkfKZ%7ph$T)qt4d88$@9V7Tuh~qXau(&J>7R~~XQol|5TzO_ zPzuK6CFo<$U-BKx@`ibn-=eI<1g zp-vU%9ZXHsfh^TJ6-Gt`X_x9zw{F;wbJ3V4PsodCy*9``fiWQ!9yovXlRCY``m;c= zh+3G`FLk@4kR^3@V_vQkg?@TX%~Iv~Y4- zgB{T%s9FeHl8!BwE7aF~Z`Ghh%v#Q2GWmW1HM5yQyE%`l?e?kaa$E~GJzbYSGaetA zeN`8)^%+wIyR8mX){EHn%fs`Xo1DK$aCW22~5`L}9P!Q1%83G{-+6WP%AHCuA z3=i^gOlR0&uFjp3;p>m?T`ZDpyLRVloh&Y0(`h~p1<_aHaeY6r^WTe*JE%(cL@MAZ zS@}hZUq&W>jUqigs7~Xwvo9Ni!QBO^*pS_YTHE7Fjmw)DyqcgM?+`-46&2L|pn0ro zV9nAH)`hp$0^>ddOvk*zQ#>;ybxMesK9HGP8p63L4IYIZAhX!t5yHe%jcmb)<*AE! ztApprypCD0INMA)W<9g`?sdM@=TqqppH`{%Ns^+N?Pei`YTKSsW#R_*ZAHZ#1FTC~ zly#b22bW;gLSB^YC(Ro&A%YsenpyAwJ zXX+AXePdq+2g^-9N2_t6q^Ef?BV42p9fjO8ar++YDmwqeZ?-4081eHa6xM24Pr9;Memp4V(^|Ki2+Rj*Ww>zdsDTO);InmWxb4y3!BWswb z>;(x4GnYMQ@j5f}j-4TjzRxVf2Tg2H+^H|5@ke6HZ+{JMU$Kw@s8V{T>ES0=h4R95 z*#gGv&KN62frJL(5M)=w#!OEqY`e_vdw#K8$2R-5pqv0uxNmoeQT@#8dLxj~Or*(lJdMM>{>DlpbXHqiS$*^Ent?r`O+=0;M+DF3 z@nwju#2G_`?l5*%#+VoZ=YkK#C02coqQqt0Gm&rx5gnQ|GC+Aq= z${Y#>jY^RUJQ>=V;o71i_$#qW-8b@~An)?uo2NO{h<=oeipXR71Shw9Sv%!{TehNG zun306DX|3fUM4;}aiY?KEb{oW5=JX446ZnL125&h$$%c@JE0QSxtOJm{Y6(ye)XAS zX(vWAv#Lay5v(5I8Dz`gU9VG!9nc|C%NrXyEDPh)-k?iFdPc>$&-%CI9~(<1Go9g= zt!jn~@eynf5$Rb6*|Ds0QsMIAKXkJTH44*BadH(Lex?H2w@So)hpS`yXo1}_kwNzk zQ)&ACeVwn?Wo>&*6x3tzp6nIH@+6!Blc7)kAQ@#dUFpF-zYQ#Lw*F~S#*Fm2p*$iG zi?c(iwNqtmBN5nM4>h6X@fq9?GuH3EoG;vu6sYvn8JGMmU1g%B{9o&%p4v$AQ+MxgBAWD55z%)HKIRThVtUK$1G2@Sgw)1@afWENpGKO zJ-55@f34j{`i4g*8w+iY`$@QVQ zybwDUmo?BSHBMrWQX{_aO_Of(J7DvdIz}t{ZQriKhT9Yzvt3lA^+gMtLj+aB8SUJQ zStd^OaFyqkdA`}Fqije_Kk(Wbe~Xl!xrcCEEh+~}X-IjF7miu~7(nM8*9_H=HY=7X z8q5k{NLKg7X@GNCn_OJs5h;iyt&b2c&Ofh~r9D_!moPSc(Gx^8u9=g`R~hBwi3>Yj zGT*EX0&V-=p(8_>mt?hq-)zmD6+KOeB$_Yr+x!Bs|o%6AJMjzmc+c? zpQ`89sTC^NF(Y}bw%09}E#j&@!}1|Z&V|ld4Ecm*;jwQ=0a+yE?#SfTBoA4-vzBt- z%!$e?dl)vA^3JPCBWCt9QL~6P&B&Liw{2?IJv;C27kKhGi`5}zStW(5Ol&SGDwi@1 z4;I_A;PL6hy=YDuC~#_*BHlNx=1}zSJ{DXz$FCk*tvXG>n5~@5S`u(Z>|)Vd3NaB! zTt}*1$Ek%`+TXv(-hV2)_|(y=`Fj0x-{R%xx$AyRuzax4N2LVU;nK!rSZg}z(%)EoV+y~g(H>>&&dke_0 z|35TazcI1$>!7}wvA)rt2%r9ko6-JQ=g-IW-`4$&seoVWIO+eB)9atZH-9^T^RL4P zzcGyUYZ<_m^R`a^r1E$h!}!|`y^Y5Fd62ULupzO(kKX?$?hwG`*uO|bbRCVIoXl-Z ze{0IKR(yPd=G%ni7?u1t0LfUr^7SYct(Y_|fJY3Pe0Tz+##c$hMCPllfsTQPMQj{y zvcJEyy@j~AiH-+DDCq7!y6>zYEF`Q;Bs}Exy@N9x@RUs!Z-oSu@n??0kIi*`8QV%E z;NHa@HM4mJF(SofxmmzU<05$a0g=3`pIrcN4+JC>%AWrxz_#DE{)hMeGbmH=KtLk@ z|3CpStGrR;=?WQ}=sR0E{nsq#-weJcCQI6`(8Ks%yr2eOlq3(fz=}b^V9?)ISr~~Y?$(`G;+?sftD=y4N>C4FXW`LQBwDuBnkky(c1!yh=ZhxR)v|T3&G7vw zsq5C&%N>Z(%`#qE#v7>t4HlzedwhPLkrQ+tzo(0?D{3v;;O6o*Ke87x;j8kWFW{yc zNWLvuXx+^iO7O!d@pc8ZkbPO-7Ays2WgdTE?BN!K)(qGqmCY@*f%!0LbD`%`v$b}Y!zojihJ33&2;GE|fs>T_?8NQ*G2tiexd}4;cyrC| z8PeB;*Yt57oXu6=@`+Dha;!5=y<6?AkAVtZzL2=1vn1!bSZgb)gF~6Nx^RtYeM^x) zYL{UOKsaT#qX7LXgUKlyUz`Y&s3q4L5Y-!-vh9sFJ{NFYB#zD)cafk7cO>qYP3jYi z=y?&L_+-AQidkmeCE0MB4s&0|!!*<^7c8_-nVBM;0_|;PO?;wkA#M{)Ubls4HRQ&E z?g1o0@EPbmW|rK$LKg%HDH!SEo*c9~FC!!{`AiV! z$khlIh)2gCYX_DfSoevd=*f@n4VpY)3gg*x@dmm2r7)#yO=ARv@kw0P0>iAF!@P0M zqTw715h(LAq$^-EdL?tocpJpAgGo^OSkyoxD-G-fc%}u1zyb>8BEsg&IvpJ~@e^{R zX>u@=Cf`Yyh>MBXngSD@l^RTZo(%V8;bkDtg;y@PAljK%AP;o;fP^frB7lk|w%+7( zg^@K2UY4R>QQ%6pniPZYpqh{<7X$~gb0|^l&oJ3#<@OmE%9vf}b)(i&`}T3C6s-1v zu2&0vu+K>7Fc=9y+Qk01 z%J#2=!G9VO{wIa=+j#KyUyli|DQ{TL$e{qPxU^5=CDvEBZb5C3_#ku;|3KW4fH1x1 z0xM~=Jw{`R*bNa&@USn3=+tqT?o0=YdRuAU_=2A08P9Cq+5?8yCkNpN;&bH(kYj!(N+ah%6YUZe|9DTpwgIhR(?i2a`Aif|ra#)7qbVz5 zK(ZyEv$&%qkCJ_h4@2I(c8{?DjJL6)vm7ilXy2uzcl5qkHrT9lxdlBWAT-Qv@SI&l zv&D|pV#1500~-m7b+dS+J(n6t3FkU~n&eQK-^#4+fVQU%pX7298p0^KI_2p2_Tl7q zFL^}OmTth%8GKwLNlL|33;FV4VfX1vsa~mY*_bK=L_3tb!z~s%lTjgYWk>#n9V$b=yzqR3sJ9pL8>a0Q}g^R{o?N*qoHqr zaIIjC=N6>Inj2j|dOZPS$0UZK%9d*-B2^NF@%DMDk=}||Z5-%nCZ==}d!z5X!{I>j*W#bsWOm{zg@+yW}nf)?8~$Z?B? zj8yq`^Pv+fF0v(BfR^>=+@nx=>ov0y(#^U|X|5$Bmg^;j!WC}^NFP_cC%~07lFDSZ zY9!E%NmF43EW$DKR?KW{SmlueaPx}i8jh`J$Kw{GXVlW9$)B}jo4#p|w2p&zo)kq3 zSg{VZl)n$&O`rd+5Vt-X(FTmc^rTuKp1JjfD{5EhJKFjpeIa$4@Ov6{|4Ha|@>_)p zRF;J#78CN$U!5Li;eh)QfI_{g%^wQ&@+W5B5h5TUmj6hhbal-EC;4=B|EW!M0P>)J ze*R^UcTQc>c83+A<4F~PlLC5hQ76E~&ne)%Fggd;<2@P(O{6soV_}>UEC1B%`j%J% zxkdxYAfp0NC<*WW)z!{u44nU_emrIHrwsE&G|YuAm1d*H!tu(^RlX`hs)Z7{aC}G; zs#M!l9~y;flcR=jg(i*L&g19PY7q8or*%Am)z%`XN;ZO+vIlo0u8Zf{0Nvsc&DRk$C5s_9YNLa16=rk z)iV%WnvU5UJ<8OiFCpm>?wHGe__bT6T{92yQ;syI*ScLvuTHCl`#X{w9+Wu~Bp%`_ z1Nnq7B~kfee9bw9G0{ZuZ<)NRe{&;y`tX5Q)V zG61F8Vk0y$MoKRd5d`02K7I8L7qPtotBJ}4S7>uh4Aa^gFMwrvq~vHBZg!D3RQ98E$8}NXKg(s3^t1*YcfjoLh#A%y7R01EY5VzO8xj7GoG8T+k+7e1A4g`vL*N--wVQ37D$H-cyZF~Y=>JCFqlGWw=GUCPDjE!wRuj-WU#|nEkH*r*urpP zEYl5@RkYk3G{n2j1$66cL`rKqk$RXG9RJvi{fg!w0n%!gag8DqJ0KITW zXN#Z+Dd!2SOAqws`=f8&YxVQS35kZwt*DMWFwm_@^GxYK4a1$f_HdC?+$Xh9!wR&uG@c+}=m!ZBj!yhjV&}A5#5@(pK5yU0Ik>ELm%|B&XU@v><<$07Svk-r0&&NfOrpljpOw?#q z!8KjSM+xaS`0@Se0x7}8i>Z9R0r?}LeQ;rO-TgLsOz9Wi+>rdd@J7kH9jSOdpP2ME z$jaG_=I3)Lo^go51=7++p$AmZemT+@9UEhqeLvibqD2)UlDm%u55Jn7wfDhGX@E}6 zn+y2EIsBQdBKCd`Hg%nYoC^z2MVjI1myEbK=5Y%E61ENqNS zY(}hX4F8VZ7&sls=+zBac>Imz2SD{W|1)f)-@0V7Cn!I>j677J%=(bMFObPK1+nDQ zhMw*SC_LSlvyvdgJeW5opGBhw?;Q*jU z&%(mWz|KI=VWMxs$jE5Gz+gnr%+Ahc!p8P*(JKK`0idTG)d~loND?l83>#9?poUaa zyCf&pz(6K^0On@pHZp~*5c#PCOWgM}!_ju#9xm#vqV2Mr(`{&LivH0oT@y?kJQ-G* zcYQj4(GUYehtG}*x;=&q1_r27Z;nZP`eSMw?*Ou^@qBVbjRag1J6z8yqP07EEyHoz zdo4%!6LRz~?5N`TKV&`}TTK$4XDJJ&e^QKov9)B3Ka9}x=F@QGegLw|6GwT&(s~_m zS_6RAFU0;5%WwY~mH=WK1A2BwLnbB@BUTPJLt{2p1`{@Vc2;%+dU^(C6BA~3RwiQu z4vv3|b2+`SC)@p32V8rHI4w02=UM)YQxo_-Jqt46Nnt1-y zCSyWz%C;$^ctVs&2I&)M?FoM!FT5&Lnd~4JR;~+{Z>9l&Ivaqz>L2{(Z}q3QTegAF5s$Db?tfFt9ug}_r~PRmIrEA>raE!9+th6FS;v7`^Io>F`S}^vgfufL zX(PJ5w5^J5-{!@rG$%D%0M5higQU%B^1bQxc;ox{$J0a?iF+CjA`7NM@qmMq3~S^M z>l?eoy01D*_E!83w!>-mm2d&<)&x})YYxHR%%orpoIr%IjNq4LU-K}BKT|8^f9oEom?OXZp zs((?wf+oA9W&Gyg{5V~ECZ77h!@sV|B6-Yy%$GKcBQexk|Mb&njA(c%maaidw_l}g zUwfx@J$ta6Q&qQJ8$j$T7>-a57s{@x08%ySI3?udAx*s4?5Bb+F-K0)#($ z#OlR1h5CxetKvqayA~ccyOS>EXOrxgxHISY?{hc-+A8aK4eqbBJlM@!&odPyTG7Nz zGHI2wym1wGsw{O|YtfaCtL$VZc+{rn=w1_ppPFCS2b^_nXtN2_X500RH+swyO-co9 z$JePyFL&QLW?1#DoE_}$LohL%rn5e&S(w=02iLaPh@dBEKe-VXWlo@GpVD1MPs}%M z#;8rA4yoy??>%|Gf{tL4>OGE@LsECx0M$xzRzbGGQ6qU{V!(U>jz2NcbEwwWi&+IO z_{2aj1~d~!D~Ice02<)O2^#Q|N34To)<_Q_{k;*$9;~7=S4Tss_>*%#XT#~!OwzBn~`qJO8T>;(|0#Zfm&~F@&ioL1VAKrH2Pc*?(fJ?A+ z{;w+Do0|TzcyCvzylLLs_rK(9z*DTWLvs9rk^mzC_;-O&&E}#v)mcs{FY`dwb9yA@cEKNaT%NMNufgM!rxg&Uh9FS8 zMIJP7)Rj_aGD9%&^zc#WuqmzFP)Am&(mVAYfKv}6XJih_tsHaZEO25-JJ&A%|my0H;8n1 zcPb?z0)nJ~G=fS=H_|BGC=DVlox-;s_v=33@2Kqao`1eE-nGZvYd?;$y{ z-yH#$jwPK^NX6#6sswywbKOH+EpkcR$^y>n(gp836T7BhG!mCrPuBR>)9_mxGb^jY zb=+!Z^ZQ?t-7bPxV5AK=9!wD`R%(N+lUAH=C+)}x0ileaO>6GvrCBs@nZuwAE38gc z+^K|{C5ARId1qMnGrpkYB$byS&dkISz9&;*U$C7BVtji`h zBAFa1G~Sl!3^tB0R(u$BjUMfF%AT|Dolsaw3FbBzW$%?XgGSr5!^V#qzO2L(tuIb} z7G`wOwvl^r3q5p#I|X@EwZr0_rs*`&x`JwR!?t?y zI7c`FuMR_I{bM^RlpYVX`l@LPCxgDoxxLvA?v?w)yml>Gx0)bq5?j;qXgyQe*g+sR z7L@_HK4v*aS$QQ!S#!tO;s?bW)t()^JNU1h6wq+p+fO7Yy}PYeQ5K3T*}pv) z^gZ~b81?*B!WT-ZGPld%0y-MmQH8$#-d={m5N^d{Ru-<%d5_h}F4UD5?u_%^6v<9Q zzPX1_T{)5x7S4yVmPWE3B%QZIj{s84l`eQ!I9^fHA+OA6mWtKk#QBeFyR;v`(% zAhcJX-=w%}&JU8!1m4OZb5T(aZPlYZA zqaQ;`4=#W&GjYz96Hd5q0R@b`k3%Plw3NF`{_QkD1t*-LjN1 zaNH|9T}7; z9Mk;uqit&H-Yf*h$xtH{3cv^Sn5`clrq-RuK(oEK(v;Ybo) z6q_7RGO}kgqyb2*ABr|sG6d4V_db*;Gk<_Z56ep)O4j5D6H~7urcFJ1inngtpa;TJ zj8h6kBGhmrDMEdy&FOwK!Dt(BYizRt>l2F~O-l0TC2J`{X4t$W7dsZiDiruUS55I| z_Xg||c$-n|Qg?+mBG$Z%0`2+F+igg6Npg=$K1;cYhAa0DLF)F=jFxb*E*MKzPtzZf zF*qR2*7&Mfr^X;XdUIOD%0jpgYX_%+7*=DG$Sdy;4;wOb-pw8x=+iE`s7`JWe82%B1-ghQ8RwDU^M7#uTqm)*JBMB>{20{rrI!BVLA|-@2HZ&5Aly}4~%wl(A8q1ZzsVnR$rtUqsRrq|uwsYHWhp$#@EKw}Z!s{#*%MUeXaQLversbWa*@D8M_a$F9-Di)U@<3Y5 zh#L-Aur`%*ER+RBm}{r-SeWcMNDHlRtTIIkJc6)AHnV~`^bxK|6wOXBei_y0eMm8Z zQPoVtiZ>XQg~+>5Pn(8Vue2BO4TS$GuqNK4r0!MQe%y~ z#4agJ*_^QuTmzBcx#K=Z!zWl6Wy^~KUsDjZoMJyYRUy&fP(PpzBc1+ju ztO0||*dLPBm|n5U(KFRfeKz_NI|i`1V6++&qnIcT6@kQG(eR3UBmvvbOT==SJFcxN zs&k@mE2JsiAyv=*vFE*QPk*0XKbKtn;$-Vqmy#&&Q988AzQb*@*+!pyxG!oIA45hh z*#_;$HOCe1U4lMcYU@3~9qZsuQ`OKb;EG6RJu#i6=BC73extxMW#2tOW;S46EVbTQ z=yh+et#J)+{j_pzRX9paVKK>33`bGWyR$abSdHuBi?@0_jh97l0;6shmP-)0+P+#8 zU&=t{9FZup=&2poZgm)XI;AW-ZqaGet)n9ZlD+q$%>9<6$s;E=jco(J>IXhYJ8}G9 zj2eWz#6OL!lnd)?q|*#?GKOHS-LmTdsaMgxsr05xwiMG8Te{sN@8ZZCXS!->2&1>8 zX~rb8Yy8?Z8;kx4J^eayw`s_c@_UdJWg2y=@ds4z^olCzTm}Qun5UI5u=$A8l2L=H zgqF#UmJo!y;uPE*$dMd%ALEw3Xy~=%GV>K~g^%#2z@-IA8YpQtPM=QC z{d}iP_~mY@bXo3aEBDbR_ZnS?Em&i&=M(ZaF&0$x5X}^rHT2>4S2xv01dSr82YMMw zb*CErM*L0VcUe({M4udKMm=%o8|iO06s;}XPT5abHLf^R58HUO!T?J+ zli}`?gVvm%y0)q9_{}m4ZGEyzX8AsfQQ3vefo(#vFViN}3{^!P_62g8{^Lk43qq+L ziIewaN>OXj7HdgI5SI7+s>CGTqDMySS9?4#Rtsae_3429OFL=EbV(K420S094xbU_ z1DaNxJBB^)CXGu(7=&}Y%}_dt)UZB;aC~uR({DJQUq*GzvxR~y;rW_Dw4OyWT%8La zX%|BUa(o-AnuY|yCn)8v(0$29EOO#WjwTtz$KTw-GwsB%7ht9wCn$|9iUTq&g6(rJ zkvzc3DdNHlUOaAZSQ3)()}(TlJ>UtEmBUz?NhNw^-cX3W+VmlX8a1W#lJ^yP=eH-% zb{-~}3c+{vV|PO^ne4Q^Cw*4zbCjW9fBu=ef`Z$GQJIa?y4>qNZ-&3U!=R(V<>{k_ zl`vcmZo!21x=nf6G9R^WAa$fPd@UXGo-~;j%FIx77Pbr-gI6ipDEhQ#<5m_MuWx7!6 zb_eJXdzMrsIG(8j(F#DhR}>%zHLd`B9IE@OS*X38CCR|kyik@$j)WX6Znh@fn}^#g zrnc|_`+~)df(Xe^?tW1V{=(d`u;%4fDQnRFjNxuc2kCJesS}mbJ8nC*=w_AV4{!ti zDe960*b$GT?-+&Uh5D$IzKqfWo^q%m!qBOg|M&y(7}t=Oo9CzJ42mFYEC+X8%JnLdnX_42_36|%~J zU3dscmUtfZ4~)y&n)i!pMc3xokn~1w!DnvhQo~b7y%1}P*Qp7RIu?d2!bmmFQ7^=D zXE|=7GVc~vv&9t^V0j|-kb~#L_zbljdBpxPw!z9WP?*CLN!QD{X_HG#Mt&lN!{vNN1}_Uw%V&N(9s|O~B%D z_iQoX&RwU!D5(1IfcBF3f_OC(m8jgxGxh(9*#2J;+y5(K`@bt<%UZ`0Q6c6Dsi*or z>NyB!`i#D)EamAydCFF;OSAlID9Mgwb~z%dYBKJ3d4uPE#WJiK^b(?tf=BhKsq|g) zuc-48!#9^rIP+Ut)y`0g4GfwB%3K6m-1YCH4wZ`uctpjh_FF8bmSW$64@!62gQOPs zo|YKszaO+onxVuC<&c>!IG1G+id?x(^?c-pNn6?@p%z$-nqIC6OFQ&e`$}hZgIb=p~r5+lOVa1=MQulj+?ma+4(O#ODhd zUX+e$$=K#tH}IgR+7Ft}xM(25ry6fbzf>?LSWWa2m0^Gdj)L}Rwj0zQ7-6Lzxf5)1 zhy%Iql4HjGsKw_srYB~-d!2ojy1mP5#~K8itrrdpkLbBZ77?B_;yoXXdExc)n0UT-Hy>GNyS!V%PFmJqzi*cBZ~Eu0`|A4#a4bxpoYh zYxI`cSNKwz=-8%BoDJ~=5P|(|-t3Q&(>WmZRF!n8n1R$rSPv|iGHEPBE)U0vQV^0i z&V$m0ECd!~6`Jr)1U1=%8t*yW#}8%oLqt_+cf*2touDV5!W<#Fn;>cw!}>KMh>9Bd zpnUrZg_wQYd43ParVai$nK>>b4kt>fu^`Y!L=U8PyUiRGd%sWwE?u?Qw?PU~3> z7b1EEpvwtGVabz%nn^x#ksq!(-k-G0UWGN^;A4ed4 zHt{1BGwy0NPe?m;9dIIO|Ndg`m*}<{an^V1>7oVxoD&;q-#{v;UOk>KU!(} z3#=>+<$XLgKhkZ~;SZ1?l=p4&j~p*#%84Q_Et7?b#G4Cp6j_6M{ghYOp1`zP%8bE) zNPe@K{mxgOjA7A$T*T55yLk|21QjTa$%QFYav-TPTCRZgma=p7K$r4vskpSlBffbj zxQfn0xEHV@qF<2HYxU95-ki9pJTm;Y>8n2w=AD?6m*QZWX~v{Bg*VGrnkaI70`YQX zmDwsCou+K{8Ay?8U?-Gv8c704I@<_);FP9THmnujj2+5GI42%c8@Y)3-MxC04nlh? zA_&(}`7avn8>2C5TnOk;7c$5->PZ6>M2B0e_7f*+Q`i>NDLIP@_iIMJJmf9M@=cJn z8!9Ujzn{ey`$8*_yUr_=wzRf7GRww%e3;0|d%N52F|Syf?7kzZ3&yGAB(^V!9&!(& zk7t&QLXFC8UiVjSDPtP3LoC^!QFNzk}wp$-;c3RhXoqHeoG@SZ3 z`A*nIH)Dp-i-=Iq9A!N`)pm3yZ1;T{LV4o1 z439wF-oE~E<~}Z|OIkY9bt^(?V=E}-CEjGvbGLpRKmN9i5V<)IX=Y*pp@4Fufh5Yo z2U(?^6(v9n`XpAx2H1@2oDK00)e#vG)tMf~AP|i7d)SixnSrHY%rIqw0vGw)SGnOe zSM^VFB%i)L@HlGHA)S_q(f<6T9`k)OalhX^rj~qy@UKP-Pat&r;PH05#L+%R?BIm4 zGLVm0l90g$wTsYYS$Ex%B9u^hl^yJIk2{tt1A%74vS92b1cb?PaEYoTmN}EoS zj@|n7iI9!ZN-`u4UYg4>@$CI}ItjGWN7Wm+{l!@e56EbT%|S5~p($9ktrWK-;W0mZ zb%|4jwzizANSY#l8lOR?D|ea7WM;A0eU5YNx@o?mUpG5bD+?sbZM8_<*n$1TsTDf4 zkprQDXai~SZbF|3cP(*t)Y}7oA*vlRxsvecD};ohaRG;WDqNR7DFUGN1O zX@3N#Bjx^maT-;sM9E;92h0+!rRY5SqR!#TlarI{uc+W=Z7b}$hzuWRVv}KrNes4R zz^lG|f-!_KRR>#-{LtoDqJa;?Hk*?%!{UvyGekKf=pbnCi?Q+{6Fh8ngGf2+XOq@$5N2QF8(TvbTKB3(?^KgNZ+3(lDNw$j<8rIU z1<$wK3ND+G+QsFpIXhDcUMOw*sak%*=X6q@{yREBySRlBGdbam0=RB>w(a{&d2`P5 zd0)r}&?}MNL3_;ZuT9~+M#_SL!}SVke}ie;^r>C!#wREGsjUkOW;Z0$!ToIqJ~kB>QTYn4^-LCKQJ*TwQoP<^A3LQa~#L0=#$EN;ov0R zVD)G;TpltPBS>jo+3~DZyVkpu`B2kz;+s&e$dXR=2ApSVg^rKQN6FaB7cZd9^67FE zn#Jo4et!o_%vloxt_33Y%bwrSncLBv2xdgQuA-UF62G_i z>9<=#XiQukuofRjmNb+*=;PK%D!p>$x1ewtDqe{;+@CDVnvd5W&n=AX4eEh&D=oFc zQok$U%|QQHwLLzZqw=%NTp?oy2JKW%Q;8$^d&n47vt-{YL_n04(9a?4Vu{U73pHU`t+Gf)5;JzEwpdU>~+vc zM_`Fl6TIMHcBEAHi&;W_-M;<@w~e;%Vsye*qF|}5RhQ+qXbl(@Kzo=)h*D#A6;uU$ zoVXL*a;(ZjxI{N>e`l!@2}#3Fmz{O}Q-ZfU^MJg@PREi>o>sy5X@a|EEk)k5y3THX zk{v3tZz)My-wr2@prfC1v+dxr2`U6Y--~}K3p?i>L-+cfxaP|t?&r|LnQ|7oxqH?L zI#Ygu4gq?w68DQ`Y&&`eqvT-~O`elI9H)D;ntqScx8GKExc7Do;!~Cix@0KbP3!nP zojdPFzvQqg%NU0}He}kmWdIpsDSlV<0gb^TG*jxRl^K$59t|VRAmU@)%m8scPnl@R z%Q88xvjk4Uyn=@L*6=xD<#;)@_`*+cQUQ(a0%@5(@Oy`Bd(Eb><$>*Y;KQ(D_6@4C zo*?Ss<$gvMCT6Wb?cv=f#Lz+5dD)kCe>J8!d)ID)sAoR}p^upfZMKg&FnjnYaV4J` zLy}ooDa-io;-_JLvw}KAd-dc+BBts9-M7a%;w|FkT!TCX!Hr|IOs-kDF{9clETvXL z)1(U7bJX!EZOp#6&ppo%JFOhgFM7{?FD@)+&Z<3KJbicP3B-tJn$nwi{DmF}tSK7j zeQ>FO;X}Z6oGPeD4=fh1qgAgQvOyLV9^yCPYa1t_3`>ffra-zdvQc$x9!~0HP1#IR zSkW*y0}Xb6a$awDp3asQx(rZR|1X^L>GoG5Hgg4$c z4f28x4*Qm8t!^M9pmE#tVQB{{Q#qU+;bYmaG$`1MVW4P!&ewLQnr6cAW#8_xO(q2v zn=QW(7KMPuY!Vkeg17?}+vyYfXe$~6vxJxRf(o+%2Z7LLJbw|z`3%7r#n7MP;eNt^ zxaxX5tx+}tZfbgvr>K4zGRqbL@@fXQ122<2^joNM#=d%$uTiGa84ZzW(=Ev#a!Mj_ zwQZG7X_={Uj!L0lgZ6DVxBYNnJ71kehpV+~z7{Y-#Iwz)d6@WdZaeF1)~hF;+*u+| z3*RW_1$Q%%5#AxwteF?ql$U9@a&>+3EG}ctDb4=^NQr_AaqlRzD%Y{OrzzPO`Qoe)> zlr89z6K~=;GliAy=+3luRF}u^&EE^A#At{XqS#0ox<#$WIPYtkwnM0+%;f6Wau~-3 zRIvJcctNc{Psv1dX%N!HzlU5ex=S}*eZfKD12OdI?lNaXxK8iRj3Dn(lqTVcZ~+}V zt_qa;YH@9^cYd)Ohi{0Rbs`7T4zD=bYh5dqGNe85vd^$gVHh38kqLbT*eLH&#IMp&|r2mcWidw5?zXSPUD2U zK?uC_M*fsdtgJU14a(lWu0%CT5d#drzkn`IM&|` z#v2D=Eigkp(<}Nsz|!9mQ#973`k?Q5;7ksxQK+q~yC`=B8$52n>xBDyo9Jp}CcBMZ zmgcf%p9Vm0-7QiTR51ASFx08PCD*w_iQ#-O4o%ETqs8L67n9a<9>=tqe(xh>&|`k& zEJwR8$<3(GcM@VIrtn=-AZ~rp>fu-N$Ui>J{7BZj4g{g+k%6NneaK0l2tVV^xpCyY zfq6`^Sj7H}&S0Hc#-P9+@92v>PtH!R;u`6hw)GNinE4?L3^tC&wnK@VAZTOjttLf3 zQdwpL_WCNnm26f|Fk>%7SFJD-1oQJ?g^jUZJH4a=9cg*=<(?_WT!(jA`cSyh;UClb zX%v(Z!U-k>xyQMu18QehtE19X*!V%Rl#!4$g2 zEu#bH_{HamopeFzbDhxSe;S5KB<$0eCu+Xw01p~zy!d@wDH2yC^9NhP7dBX%rTF%f%7&p|ULw-jDkDQ*Q(;jL_|)bc`1q4!SD z&?;2Cu|1@0+;v`oK=JVL$B5h+=YG_{VnbuxzT=97mE1vTsUCB|zP&%NY{oS@?D`+0xQd z6=ylp+m}u(4li;mvXlPazV&(HTsX-se!H)&`KrY@qXSkUj8@pd=NJO0}+Osa6gU)xp%myHp# zsNzJI*s9RzqlY3#) zJzFrp%`K>haZEfSmKoIO+VAsFO_QnwaShY;j#HN6)3qVd-8U4Z&Jb<&S#|5IL6m6a z@0=1wHf@*?vG_vz21MyFN-T}@)%j##YHU|%IxW~rm&*|04Q)J+0-d<~7Rwd8L~UO- zDzGQ6iOE!qeJ1H=ElOc0<$=6&dy=T9HpcK1trwYj6@kymUEJJUgb;snn(Pgt@O-{0lBjb7`G;>a)$&=o-o!~fZcp3x z*&Bs}9QyleEOf^yHn=EjRf zE#}VRz6-d3?ua!X>ABDamt2jLshOo0C+mFfD4Q9+X})=SED(9k{j1yf#r}dQm+Ofy zG>#FQ(BCy(?23<7>*}q#qvm;`;xUvM?~aNwm%j4L{`^XJ0c`>v+OCWn{aKTD8T--G z_YhxJ+Oq`aSB-bPE?Ln9D^ZcY)$Hp<>75_7?6+T@53aLgDnO4t_$D+IR&I)J_M*LV zx#03aR&pxTP;;l&8}|30w)y^QvrGGT(S8N~z~z>g{PG6uR^8=~sk+2v*fA|d6fH_U zx%DUzEu)?yK@zh0yYbazPuJDcte<1C46l%;<%g5MwB`GRW?0L_6jM;8MnK)edBRpk(vB$wr z$1@Fwd-S@%oDHjYa#MSWk&EDk+5^(@SSEy^Y?V-~Pfj#*nE0x%T~DIlo(x9sWk0xF zCY?!M&~rp^?ZJEzpB9~W5%wY1{Psz-KW^RH?CMKMhjEQr0iHXXL|E<+=10b?o96nT zlBfFheV3VHtmF4+gIpKcTpmA=;H*ur*vG@HBv!>5)d{pwYwJKYej8Yd6^`VZe(b+U zu75#uD~@0hMoPm?mX*qGHd*U2l^Ow-TBDJ%OhBp#m6Lp#Fb^MPXiKrQUBPI=#wSl%l?BvlsV1SNJiF5>_tH$` z1^P%VE3T1s`jc%ceKB6^4h}dmpGqp7h=(;K3P!%@V{I$ao4qvkd1HyWW7-}Hl7+2} zh>CV9PPine;V(NSneS?)$OV%-W|aaW4zNQyRxSB6OBU(?oQ(l-ioHWjF7ZRb9qi< z6_SQB`h0lLBQ()AccwsxGeK{czyT*@)s;<715)*q`df}ClIk=$N>Ap`w)iv;hk>B& zQ08&HnF#0MhON&&ap(o%d$s|{5x>J;t_NN$UbpK%hf<*`7`C=GLfyh|C$U8|J52CF z5*P4FhGP6I3(Y!j2kF~(d;TJ}C!*Ja&BoWA3UNo3jf5^o*-9*(f`rnR5vq#m*wTG{ zQ3d0CFWZOp;`rDEC&q zx^2iZRA@n^G1E(kj}L<4J^9=2MlcfPf0k|4Snf-3Xr^|?@U@whPV!SY=qwKB-mY7S zO|tWitx$jv>5IHy{%qxyuR;zA472?ug?`XEq_uy&pnxm7K|M>-Dka=sp>}U$2%9Orx$#DO91r>sb zN%706QT36D)9&HCG0qCrLa3SB?3C$cj5`M{`D8c(0>U4}n56npKgRE9x?1h;DTS_d zh6<&A2obHD2l6=9F~hyv)mm|;y9<$}6X)ni{`?bK<4I3d@hkx+l`rVb^05Mr*qCE$4EQaNlh>ijc?$Gr;h)^Yub1y@!|A=Q+t`kpIgm*B~xdzVecI4!~Z6ie#fHR5sMYoDcg>-cb3l=R4I zOkRuQ0Oo8~1QJ<+oJEkw@2qmL9lOr_?MS^hjE=bfZDx1z1*m#N>obqt5l|?y83axm zhr0b)h5v9@u@%eFY`*pC(909m(r&$$CCLuXY+IhFS;7~>drZ*{3kPvL<1V&^J}2c8 z_W~^&&$bBfJ|8u4-?q&=rebi}@5%TqU3&>r_yjhk{fW*2s1{~NM7eg^V=fHU^A<+a zSW`(i2e(0KK^m#?5HB-XSuZllf$8R9lAT%Rd;pt5rt}=Mt%wR6rQ->g3$#3e)g%yhc=R-J;PWz%IF<&qm;xs z39F(4jUm0`*?Sgx(US2C`HvrP8Q4@KwiFD`r`0~r-*<48 zip3LsmGM=iNZ);PY^Hzt{Cs+6wSDdrdWi_1-Rz8#OmQuo#mmcgez%v@aYJO+RdMgy z?+^0HY)?$xirdYivQBLdB}vWZYLGO(AC9=>MLX=f;ghvu0Y6JrkHI#Z(|&3#L{_SuN#hg$Hbnc3VgBLDz0`Zf42TyV@qvnEewwmO=(NwN~@*T4C z6wlOXxo}!0460|IpHhcojbXti|dP6Lm{$JBRf zq)NT@rJ{JK_^sx_$V8i7uc+8#I*A(Z3EO*4R_OU{LTKMXiBT#sh&hLx;o3|)X`-fh z7I<9vs7G%_;I<%;s$X)ZWA}dY=ONT4t-PU^-IQY)_$OnX?>6bbS;bhNI6#baX>^^? zNV3MB%2En%!Kfe+weUR#w8v7W3GcMF6F2l=c_*FSc zrL8E=*307+mbX-6gd<+(40s6VTQ5HM9Qs@3(n@bmR8z(q*N{i3BX)DC5#3H>MwE?* z$?!cCUX9sT`pEG%#Mv}Iv_zXELGEnZ&s$BI&pU^ko0{kI91hRNi|HJ=kGNe34=!2j zt(ctB$wJsO9ob_afuc{)V74=u`yY5^oI@Vk7Ufw~%Z8>?Po~DYUP!S`=_)Lnttu2=# zs^G!8c(a9_so%W9knhp$t+W^JUdSi!<>q1B>U{T`OdY%t8-b&k@v3^!!$9Kaqv8^V z9KnI=`9Q@?)c~T@jG?rmEI)dcW!{f%a}yozif=G3(-el#=bq%ZrKADR^v3<%_Y?$T z!FeP^{^dPl8Emyi6=7v#J?gJX#3mKHwhd*)i%GUgCA&Jj&QMJm!Z1-?IkKL(>(o@c z)xLQ)nH4-t21VXK7gUxQp~T`83X5z}(iZ0aPkM_`U<@PUe23S+T+N zXRFiC%V|U2l z>L8G|IMAKHoWl0$5e+=G!PW{f@wS&*+4~4AkGAkLO$UqH{kNaq56(D5V&bGRlXIYF zPJ!c+APz3LuL7B-xaw@UXwcCiwi*;`C>kyJ2G4cNF|%LUeY>+gC4J82AP$<@c-(z7 zlxyJ2yJvGCa?n%MqR>S3eD!uFab{C_C}&_J6*ME~S%1Kb6YN)s%1sb|pxyc9ohxfi zk?XD$C~mLgmXU{@#CT&J*5w2FvhXqM#^EkTguoa}kjCp$x%4<1Us#r!^j`C&C~ZNy zFjmznGyI`1^d3?NTkT=Zq**I4Xcl35FzO{l%sA6q@mrbtyMcA&)>1RV2wwzkb2$ce zp7^MXY`}GdvcDfIUVMBVoHOY;51As%m;eS~{6C|81E>1As}9!Do*w)kL{lu{Lk@nacd zO#x;b7V+Nk=S37+o`|dysyLWS8kG`8=fa1tt4X4B7mf_lKj(D4ck5VUh{%$uWUN*W zW*X|2{mQ6PM`mK9$|Y1b{mi#dm4niNE&TG5M!n;9Z@#HM9?#r((Zi;KmrM!XUvjX- z@l_F13dOVP32-bFEvNSqH9B1>o!jj;?!{F02 zg-dBLu1svC8J&zV;z?mbp->rvaGM9)_=9oR`7Z5uU+^%py4I?T&#SAV#9NNFFtDIs z=KH38V?Vof$Sjga#wIdm;>}jzyo{eS_yLY+XX3<668J#b+ov% z7u|t-^-lbS+Pa8?R5|SZMlv|mt8hd3S)A(gLNDzGcBeOFqgM}HN8g!ab8RUp=Ngu& zyb|ibV8y45vBkCICY{7;QSR@eY8ujgXXPp?o!2&Vr&6&So^A}QNwEHWKnsp_<4eFq zG%5%s<1MZaOioOLu|dVsU^1hD=uBCYaNY~t(LlL)9P{ufA`PYSW|hqtUoUkr>Aaj; zFA@HfsGijVu3uQN^p2E%r7U_AseN93RFhg*Jq1c;dE|ADhuF1tM-Vb3wpdmeEml*3yGvUS zQ(-h7-Q4A?F8;iOd2PVR7GAo_auw0UscCt7?w!v#9476f8i-QNJV7GKtNj&`n_(aVAd6pi5VQc~0SlTdIrsq~bIJuW}P7VhVhj zJ)Sc&nHMDvW=;@OD!$;*(wC{?0JS&IepTyh0d#th%!j!#YaZqYCkc1+4l=c3d{P-V z&rPCO9D3f1bwWD$U@AN2S?u+ryrg+=m@UMnzr45e$9=sa(~+($3Po*`jWN;CAc@jKM!scrD%b?l3& zwzCo#K6ruj2{Z9Xp5#=tA{V{YE)CvZ(q3uu)@^5Q@6ea7L#L;vJc2s29_FL4WL9W~ zMs!y0;^qNKTA1De@~=YU-EQr>SouXV!%7;*yA+nZXrzp2f~W4=0qPGTnxhE99`9^X?3Y~S>mmknVFE%c zvdXt(QXZLavkaxbQ5nt8@yZr(bfaf^BW8DW_@=hrbzii~AYIB4_FOGcJ-xqnbjlaf zQ!>?@1OKoA7Aa>pSMJMBkpzH}JSjnK{{v*tksCdDwxw*`^>K7Iqd>RxS|8#Mp?P z#mJNk#Li*D!o~K-TgE8Rd*_~z@rerH++L47wu(W%N@~&c;}$Y>2o~2+B|i zl{``mVb?};-jC(q^d^o}30IyIc(d&wvSB&P=ev>9ny|57jF*RKO@piXoV_}#Ql(m| zLgv!9sjjB+#LL^);P7a)db!;B)8U(nvcV1`j?Go-Xf!w?0`5k)>g*i!@I>Y%&5Pw1 zx!FRHAH~;@UU02Sc)PAZ9y%5YbFDN5#nsAS%dF>3u%ppgDU#kcePqDGz$0tMUtl-R zPGJz#++In)!lA{lz`UgRC`8oJTi>x48>d0}nNlattp>kEhrT$Zj_^%=v;ywpqvZS* z#xQ^VRb-{^!*>Wlu5C~o^$S|*3(Z-q#$3#YPpHQ#40)uyyW@PGaxR#51e0P+h(78f zHI*mg-7F9c8^HXu=kz{_oj;(6OxH{vO&Ea!gGBjTN)J%_$5j4S@I>INuNBpe#U0}F z5Aj@gdfH$_pFhlHdAi@51cG@hra(DyBE6Bsul)3FX{t#X27#r)-Eqk$I!?(kc6{5P zBf5i1U$*-jos~S%_<)OzFeJK7`$U3bM^m1`eOJai`(iphJG|lz-n;zuH}+fa|IMpu4hw zm^n<$SWS&sO*z@wxlDnS3g%{Ptj6ZX-0YktY^EH>EId5sCO1e55C!1`Bn6OAe2)a2 zL)zca3if?iO5z#bAdQ6EzOcw(HJKn?dpCAsn=2qAKiP<=t|2#F<7`?Mjh#=lxl6g< zagGrVUW`3BE#Jc!QPN~SOGRnUtHE3zE^KfPr%XClw=XeZMX#au<3UbTbfkihW-8;9 z|IqPEJBU8Ypc4ptT;a~6=Xi3yjvDYuE45gR)@h>hFK$jHo?3mEjw%sKuzz6n7z0}7Mt=~hw& zu~;Z;I?5=>G4#@^bjkO>XO>k^k$(R{hVk+l_v0q-ya}x+&^&%Gfrk6Q!`c`V`ElR7Qidm*p0c3 zS$T}ixVSis0AX3p*ttzO*m(ZRSTbJp*R5&r`=?veuMGDE-G+p^NCE-^T%Z@>zhC(- z&&Wx_1PFa6^*7zC9!v%KkLYrnF>|o9a~hfOaPY93a+ z#^!g9B(-lyG9E{7*rnUYdX=Xue9`_U+zLtRAC)DFsEXYk+^%-4=zW5vLM>k=@G^Zv zyMS+qhG;;qd%k_|k<_9ByB->$g$(!7CmalNX5nw|eNej|VHG1AOXx>6H2GweO@)sX zx;=lki>+Re>B-#KS15GviR7|9J0+j`?UCBbfZN3_tF_wp+picIrVw1nH_GHc7HMTv zY*q{62520u-+7A-GhC_Np)h{5;g+J`RwpiDQ8(1%-QJ|08ozs=dzMe1?Htl9AXf+M zcbRQf;q-v1zMJd2A;HdeHE9O;H}jt(2U`aq%j>_(D|N9dOqE_+`n6U}uUAfFDml%!K6Bycher6 zAkEM!KhzsYPVYcA2GRuF2ek}_%gUlpDYdY_G|0o8ytSev)-{)HJAGzcR=#wDYg%{i;Do z06sUU;dLz!^8a{%w1kNG-(K(wccqtAc&kbyt3W@-EZf`5EWKNrn1{pvEOy=Ly1gq@^wYC1`H$N%oCS3pj<35m3IM6tNMj#+k3jQ^XgMZ)o zu0!yDK|pMZfd4IS%qXR-&ZuT(=V)stW@+T?%BXDX_ID2+S=BWi1seGM(@>)<_ZQBO zp$*w>z-I&a8-*buASkZj7dcQ~+rMh#3Gha2oj^ zPfkE3kY@GQaL#5(qas^)Y=2jL=UPgAde~W!X4`xfQ8L0#?4FC#c*Witje+RDs_%As1 z``>ssP&3%7>0GT{7XX$$ATG@{yfBpC;W>H%x#q!X)tOu!u1I-9)ToH9Nf*EjV#QZ zP5##H4Q+{vrA_u6fLsQ8&DHU5GhhPicaT4%bg}#!@fWk@&m*qEantP+zED1iG$lcSTR|saMtJz^dd&$Cx&1ppa5!XTVgF;?1?%*NmP}*Htj7m5*aa+VUhkFO zgug>{^s=?GcfH~{e~=J7*j)W`1^*_#V#iGpNY>xseGmA)tCP4G_=*M^`2Cxa7Hq%G zz*5vx0H^?P)$2~9|64F;H+zG>1pJYt`iGZ--+usw-ol|42Wr{SPz# z0un6F&rW*PZ#G5Jc>W0KU<{r-{-@>(*h#?=&<&iG-pVB(=;RRiK)XKJK=J+&^d>?5 zk0BK-<6upay^D82Cw$X0PT9LrOfw7rJ9<#m^fQGx>`Bdf5!z&2sY*)B>h>pSDkiK z1fKtoxPKLY{TuRstz7FrLw^6L{ad+z=qBKv3GOERhH$xDz|`mmgsoT2nG^8g&xls` zre=Soas57^15x@7`UsA|+f6gTl;AI+>*jP5{i9mJ*(=RV8Ns67R8j!uS^*>QZ}1|~ zk7rXvRqVI8zba?+odCE@PX*Ax?_Z2aU{!;Q1$CNyN`C^NmILkTh?Eo1dIJLPCO0aV z^kaYkgXRF82g~8L5DNgv47BUoZU-0Bq%A^0&BP4O9PK(*Ov>)e1e}-&dV&Q{+hLcc?$t z>-pZZz`1ExfChg5!opyjpXd7PxCY9bMG|k03m(G%LjEyD{U!$Zv!)?cZ!9rzR^y*Y{Cm%` zx;ZYe>HOcr9lSX%uy^}UaDR?@u3MN#?Z$e(9#?`Rtv^ItS9fp07Qfzyvu}fHmzQ&`bITAn_Gw*QW-TKjVJau$iZc zt()mzYieKx{~^W%1A{y9)vcTBQ$w=G9|is%z+d}N0jv2B9r)*=16&XD$FnJt4}4Pm za=vH&K1Ba(ALP51!Ek?o{h{U6;~tD7VDbeo<#Aqx4M5ZSBkW%>{Qs<)+PPTVu*~ug z5BtF(c;lYREU*|vhW#^#aP1p%0I%LUn;9FqnEi(ww%@X%L;^an0pg(Rde|`f2OR#= z#ec{lMClk2AF#y?(0H%e;vD!M_=5}lWeX!mM_VsPBUckk#{b+N$~8$Qmw+Cau^=D> zukmgb&gGJPS6*CzzFQm3fXtOISEIje{C`R=f+7vIckmow9o*w>k6@Sy(t$57gt6% zM^hu$|5PF3LVNm`0D%m^GT?36AJ1lhhucj_0Lrj4bGG=g>+&D^M}MPmz~o>3=0D_tj*fKF0Jw-g;3DkTH1ZVK?YmLm1^cNZP`Lg-WH9;l94;Q%+!F=1 zU|6p)81T6vga4IJTrDYm-6xhG-Vh%wJ)^4wqlu-NiH(Ds>p#>4*b9H2O0P#s8jt?S zt8Q8UJpqrLT@JSkHZr;6&O5mgBNVB)_s<~ z;&M3wQNKt2)rt|YDf!O}U|$U;U*!b;@V{DP z6nyCC$CDF)0jxs&dU*Kx!~dTZ>b=SWT+j4sF+1?7tRGKKfKl{6Vet>Dn_i^={$9LR z5$*~FiU9xk-%c(^SyG(MgJPr4dCd}uY2P)C;Shn zg8!HAW9)BAOI_s(?l9L*_+R5{KXPNP|FugvKeM}boc)+O_?g|cqwv?* zDNf#)-GA+X|5bM21)Xar->v-_`|#s9$$JgEE} z;(?Ep|9CbEI6*0BibZ2e=x|ZHiRR{!s`2qVOw4{DH-fb;_%!sIRUBG86hAJ=E1-IKiZNO&Hw-a literal 0 HcmV?d00001