From 1e073736963d1789774ee2f532dfd3eeeec03fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CPhilip?= Date: Mon, 3 Apr 2023 14:58:27 +0100 Subject: [PATCH 001/291] Fix JSON string escaping issue Fixes an issue where double quotes were not being escaped in JSON strings, causing parse errors. --- scripts/json_parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/json_parser.py b/scripts/json_parser.py index 11ff9ed22e0a..c36b2c143e19 100644 --- a/scripts/json_parser.py +++ b/scripts/json_parser.py @@ -52,7 +52,7 @@ def fix_json(json_str: str, schema: str, debug=False) -> str: # Try to fix the JSON using gpt: function_string = "def fix_json(json_str: str, schema:str=None) -> str:" args = [json_str, schema] - description_string = """Fixes the provided JSON string to make it parseable and fully complient with the provided schema.\n If an object or field specifed in the schema isn't contained within the correct JSON, it is ommited.\n This function is brilliant at guessing when the format is incorrect.""" + description_string = """This function takes a JSON string and ensures that it is parseable and fully compliant with the provided schema. If an object or field specified in the schema isn't contained within the correct JSON, it is omitted. The function also escapes any double quotes in the JSON string to ensure that it is valid.""" # If it doesn't already start with a "`", add one: if not json_str.startswith("`"): From f20d6f3fdb731c43910ba49916a7c8e2e1fd9eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CPhilip?= Date: Mon, 3 Apr 2023 15:07:47 +0100 Subject: [PATCH 002/291] Breaking on None and NaN values returned fix by converting to valid null value for JSON --- scripts/json_parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/json_parser.py b/scripts/json_parser.py index c36b2c143e19..90bf83db00c8 100644 --- a/scripts/json_parser.py +++ b/scripts/json_parser.py @@ -52,7 +52,7 @@ def fix_json(json_str: str, schema: str, debug=False) -> str: # Try to fix the JSON using gpt: function_string = "def fix_json(json_str: str, schema:str=None) -> str:" args = [json_str, schema] - description_string = """This function takes a JSON string and ensures that it is parseable and fully compliant with the provided schema. If an object or field specified in the schema isn't contained within the correct JSON, it is omitted. The function also escapes any double quotes in the JSON string to ensure that it is valid.""" + description_string = """This function takes a JSON string and ensures that it is parseable and fully compliant with the provided schema. If an object or field specified in the schema isn't contained within the correct JSON, it is omitted. The function also escapes any double quotes in the JSON string to ensure that it is valid. If the JSON string contains any None or NaN values, they are replaced with null before being parsed.""" # If it doesn't already start with a "`", add one: if not json_str.startswith("`"): From 4cde35267b30c373159cf3e8d0dd6b72a645cdc5 Mon Sep 17 00:00:00 2001 From: Mike Harris Date: Mon, 3 Apr 2023 12:51:50 -0400 Subject: [PATCH 003/291] Improve extract_hyperlinks to honor base url --- scripts/browse.py | 12 ++++++------ tests/browse_tests.py | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 tests/browse_tests.py diff --git a/scripts/browse.py b/scripts/browse.py index f096c5f3e23c..284ce5fce9c4 100644 --- a/scripts/browse.py +++ b/scripts/browse.py @@ -25,11 +25,11 @@ def scrape_text(url): return text -def extract_hyperlinks(soup): - hyperlinks = [] - for link in soup.find_all('a', href=True): - hyperlinks.append((link.text, link['href'])) - return hyperlinks +def extract_hyperlinks(soup, base_url): + return [ + (link.text, requests.compat.urljoin(base_url, link["href"])) + for link in soup.find_all("a", href=True) + ] def format_hyperlinks(hyperlinks): @@ -51,7 +51,7 @@ def scrape_links(url): for script in soup(["script", "style"]): script.extract() - hyperlinks = extract_hyperlinks(soup) + hyperlinks = extract_hyperlinks(soup, url) return format_hyperlinks(hyperlinks) diff --git a/tests/browse_tests.py b/tests/browse_tests.py new file mode 100644 index 000000000000..1ac523ecdcfe --- /dev/null +++ b/tests/browse_tests.py @@ -0,0 +1,26 @@ +import unittest +import os +import sys + +from bs4 import BeautifulSoup + +sys.path.append(os.path.abspath("../scripts")) + +from browse import extract_hyperlinks + + +class TestBrowseLinks(unittest.TestCase): + def test_extract_hyperlinks(self): + body = """ + + Google + Foo +
Some other crap
+ + """ + soup = BeautifulSoup(body, "html.parser") + links = extract_hyperlinks(soup, "http://example.com") + self.assertEqual( + links, + [("Google", "https://google.com"), ("Foo", "http://example.com/foo.html")], + ) From ac7fefe96ea740e14188754b5457efc8ff7c1507 Mon Sep 17 00:00:00 2001 From: ryanmac Date: Mon, 3 Apr 2023 14:05:32 -0500 Subject: [PATCH 004/291] Use playwright instead of requests for browse --- .gitignore | 1 + requirements-new.txt | 13 +++ requirements.txt | 4 +- scripts/browse_playwright.py | 150 +++++++++++++++++++++++++++++++++++ scripts/commands.py | 2 +- scripts/json_parser.py | 10 +-- 6 files changed, 172 insertions(+), 8 deletions(-) create mode 100644 requirements-new.txt create mode 100644 scripts/browse_playwright.py diff --git a/.gitignore b/.gitignore index a4e3cc2d8e1b..b361b4bf9918 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ scripts/__pycache__/keys.cpython-310.pyc package-lock.json *.pyc scripts/auto_gpt_workspace/* +auto_gpt_workspace/* *.mpeg .env last_run_ai_settings.yaml \ No newline at end of file diff --git a/requirements-new.txt b/requirements-new.txt new file mode 100644 index 000000000000..7253c19b5fb0 --- /dev/null +++ b/requirements-new.txt @@ -0,0 +1,13 @@ +beautifulsoup4==4.12.0 +colorama==0.4.6 +docker_py==1.10.6 +googlesearch_python==1.1.0 +numpy==1.24.2 +openai==0.27.2 +playsound==1.3.0 +playwright==1.32.1 +python-dotenv==1.0.0 +PyYAML==6.0 +requests==2.28.2 +scipy==1.10.1 +tiktoken==0.3.3 diff --git a/requirements.txt b/requirements.txt index e731354b4e2d..4b5de5ba2ef5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ beautifulsoup4 colorama==0.4.6 -dirtyjson==1.0. +# dirtyjson==1.0. openai==0.27.2 playsound==1.3.0 python-dotenv==1.0.0 @@ -9,5 +9,5 @@ readability-lxml==0.8.1 requests tiktoken==0.3.3 docker -# googlesearch-python +googlesearch_python==1.1.0 # Googlesearch python seems to be a bit cursed, anyone good at fixing thigns like this? \ No newline at end of file diff --git a/scripts/browse_playwright.py b/scripts/browse_playwright.py new file mode 100644 index 000000000000..5137245158ba --- /dev/null +++ b/scripts/browse_playwright.py @@ -0,0 +1,150 @@ +from playwright.sync_api import sync_playwright +from bs4 import BeautifulSoup +from config import Config +from llm_utils import create_chat_completion + +cfg = Config() + +def scrape_text(url): + with sync_playwright() as p: + browser = p.chromium.launch() + page = browser.new_page() + + try: + page.goto(url) + html_content = page.content() + soup = BeautifulSoup(html_content, "html.parser") + + for script in soup(["script", "style"]): + script.extract() + + text = soup.get_text() + lines = (line.strip() for line in text.splitlines()) + chunks = (phrase.strip() for line in lines for phrase in line.split(" ")) + text = '\n'.join(chunk for chunk in chunks if chunk) + + except Exception as e: + text = "Error: " + str(e) + + finally: + browser.close() + + return text + + +def extract_hyperlinks(soup): + hyperlinks = [] + for link in soup.find_all('a', href=True): + hyperlinks.append((link.text, link['href'])) + return hyperlinks + + +def format_hyperlinks(hyperlinks): + formatted_links = [] + for link_text, link_url in hyperlinks: + formatted_links.append(f"{link_text} ({link_url})") + return formatted_links + + +def scrape_links(url): + with sync_playwright() as p: + browser = p.chromium.launch() + page = browser.new_page() + + try: + page.goto(url) + html_content = page.content() + soup = BeautifulSoup(html_content, "html.parser") + + for script in soup(["script", "style"]): + script.extract() + + hyperlinks = extract_hyperlinks(soup) + formatted_links = format_hyperlinks(hyperlinks) + + except Exception as e: + formatted_links = "Error: " + str(e) + + finally: + browser.close() + + return formatted_links + +# The rest of the code remains unchanged. + +def split_text(text, max_length=8192): + paragraphs = text.split("\n") + current_length = 0 + current_chunk = [] + + for paragraph in paragraphs: + if current_length + len(paragraph) + 1 <= max_length: + current_chunk.append(paragraph) + current_length += len(paragraph) + 1 + else: + yield "\n".join(current_chunk) + current_chunk = [paragraph] + current_length = len(paragraph) + 1 + + if current_chunk: + yield "\n".join(current_chunk) + + +def summarize_text(text, is_website=True): + if text == "": + return "Error: No text to summarize" + + print("Text length: " + str(len(text)) + " characters") + summaries = [] + chunks = list(split_text(text)) + + for i, chunk in enumerate(chunks): + print("Summarizing chunk " + str(i + 1) + " / " + str(len(chunks))) + if is_website: + messages = [ + { + "role": "user", + "content": "Please summarize the following website text, do not describe the general website, but instead concisely extract the specific information this subpage contains.: " + + chunk}, + ] + else: + messages = [ + { + "role": "user", + "content": "Please summarize the following text, focusing on extracting concise and specific information: " + + chunk}, + ] + + summary = create_chat_completion( + model=cfg.fast_llm_model, + messages=messages, + max_tokens=300, + ) + summaries.append(summary) + print("Summarized " + str(len(chunks)) + " chunks.") + + combined_summary = "\n".join(summaries) + + # Summarize the combined summary + if is_website: + messages = [ + { + "role": "user", + "content": "Please summarize the following website text, do not describe the general website, but instead concisely extract the specific information this subpage contains.: " + + combined_summary}, + ] + else: + messages = [ + { + "role": "user", + "content": "Please summarize the following text, focusing on extracting concise and specific infomation: " + + combined_summary}, + ] + + final_summary = create_chat_completion( + model=cfg.fast_llm_model, + messages=messages, + max_tokens=300, + ) + + return final_summary diff --git a/scripts/commands.py b/scripts/commands.py index 2e332711bc53..3c8cba8eb057 100644 --- a/scripts/commands.py +++ b/scripts/commands.py @@ -1,4 +1,4 @@ -import browse +import browse_playwright as browse import json import memory as mem import datetime diff --git a/scripts/json_parser.py b/scripts/json_parser.py index 8154b584a12e..2cf2aecce9c2 100644 --- a/scripts/json_parser.py +++ b/scripts/json_parser.py @@ -1,4 +1,4 @@ -import dirtyjson +import json from call_ai_function import call_ai_function from config import Config cfg = Config() @@ -24,7 +24,7 @@ def fix_and_parse_json(json_str: str, try_to_fix_with_gpt: bool = True): """ try: - return dirtyjson.loads(json_str) + return json.loads(json_str) except Exception as e: # 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} @@ -34,14 +34,14 @@ def fix_and_parse_json(json_str: str, try_to_fix_with_gpt: bool = True): json_str = json_str[brace_index:] last_brace_index = json_str.rindex("}") json_str = json_str[:last_brace_index+1] - return dirtyjson.loads(json_str) + return json.loads(json_str) except Exception as e: if try_to_fix_with_gpt: print(f"Warning: Failed to parse AI output, attempting to fix.\n If you see this warning frequently, it's likely that your prompt is confusing the AI. Try changing it up slightly.") # Now try to fix this up using the ai_functions ai_fixed_json = fix_json(json_str, json_schema, False) if ai_fixed_json != "failed": - return dirtyjson.loads(ai_fixed_json) + return json.loads(ai_fixed_json) else: print(f"Failed to fix ai output, telling the AI.") # This allows the AI to react to the error message, which usually results in it correcting its ways. return json_str @@ -68,7 +68,7 @@ def fix_json(json_str: str, schema: str, debug=False) -> str: print(f"Fixed JSON: {result_string}") print("----------- END OF FIX ATTEMPT ----------------") try: - return dirtyjson.loads(result_string) + return json.loads(result_string) except: # Get the call stack: # import traceback From 6ea2a97e83e3e80525c97a0657ca2af9f7eb8d72 Mon Sep 17 00:00:00 2001 From: ryanmac Date: Mon, 3 Apr 2023 14:15:21 -0500 Subject: [PATCH 005/291] Rename requirements-new.txt to requirements-mac-Python-3.11.txt --- requirements-new.txt => requirements-mac-Python-3.11.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename requirements-new.txt => requirements-mac-Python-3.11.txt (100%) diff --git a/requirements-new.txt b/requirements-mac-Python-3.11.txt similarity index 100% rename from requirements-new.txt rename to requirements-mac-Python-3.11.txt From 6003d98f3ae62b40f5c0ebdaf995e5749d2b4c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CPhilip?= Date: Mon, 3 Apr 2023 20:35:12 +0100 Subject: [PATCH 006/291] More specific wording consistent escaping --- scripts/json_parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/json_parser.py b/scripts/json_parser.py index 90bf83db00c8..91e4e80fd3e9 100644 --- a/scripts/json_parser.py +++ b/scripts/json_parser.py @@ -52,7 +52,7 @@ def fix_json(json_str: str, schema: str, debug=False) -> str: # Try to fix the JSON using gpt: function_string = "def fix_json(json_str: str, schema:str=None) -> str:" args = [json_str, schema] - description_string = """This function takes a JSON string and ensures that it is parseable and fully compliant with the provided schema. If an object or field specified in the schema isn't contained within the correct JSON, it is omitted. The function also escapes any double quotes in the JSON string to ensure that it is valid. If the JSON string contains any None or NaN values, they are replaced with null before being parsed.""" + description_string = """This function takes a JSON string and ensures that it is parseable and fully compliant with the provided schema. If an object or field specified in the schema isn't contained within the correct JSON, it is omitted. The function also escapes any double quotes within JSON string values to ensure that they are valid. If the JSON string contains any None or NaN values, they are replaced with null before being parsed.""" # If it doesn't already start with a "`", add one: if not json_str.startswith("`"): From 6adef8ed7cc9de9400a8b76e5149debfe7ebdd1c Mon Sep 17 00:00:00 2001 From: Eric Fedrowisch Date: Mon, 3 Apr 2023 19:38:59 -0500 Subject: [PATCH 007/291] First draft at adding persistent memory via sqlite3 --- scripts/commands.py | 27 ++++------ scripts/memory.py | 122 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 131 insertions(+), 18 deletions(-) diff --git a/scripts/commands.py b/scripts/commands.py index 8ad95336462f..ffb88d617c98 100644 --- a/scripts/commands.py +++ b/scripts/commands.py @@ -178,35 +178,28 @@ def get_hyperlinks(url): def commit_memory(string): _text = f"""Committing memory with string "{string}" """ - mem.permanent_memory.append(string) + mem.permanent_memory.insert(string) return _text def delete_memory(key): - if key >= 0 and key < len(mem.permanent_memory): - _text = "Deleting memory with key " + str(key) - del mem.permanent_memory[key] - print(_text) - return _text - else: - print("Invalid key, cannot delete memory.") - return None + _text = "Deleting memory with key " + str(key) + mem.permanent_memory.delete_memory(key) + print(_text) + return _text def overwrite_memory(key, string): - if int(key) >= 0 and key < len(mem.permanent_memory): - _text = "Overwriting memory with key " + \ + _text = "Overwriting memory with key " + \ str(key) + " and string " + string - mem.permanent_memory[key] = string - print(_text) - return _text - else: - print("Invalid key, cannot overwrite memory.") - return None + mem.permanent_memory.overwrite(key, string) + print(_text) + return _text def shutdown(): print("Shutting down...") + mem.permanent_memory.quit() quit() diff --git a/scripts/memory.py b/scripts/memory.py index 0dc5b76663e1..57b29f6d9fb5 100644 --- a/scripts/memory.py +++ b/scripts/memory.py @@ -1 +1,121 @@ -permanent_memory = [] +import os +import sqlite3 + + +class MemoryDB: + def __init__(self, db=None): + self.db_file = db + if db is None: # No db filename supplied... + self.db_file = f"{os.getcwd()}/mem.sqlite3" # Use default filename + # Get the db connection object, making the file and tables if needed. + try: + self.cnx = sqlite3.connect(self.db_file) + except Exception as e: + print("Exception connecting to memory database file:", e) + self.cnx = None + finally: + if self.cnx is None: + # As last resort, open in dynamic memory. Won't be persistent. + self.db_file = ":memory:" + self.cnx = sqlite3.connect(self.db_file) + self.cnx.execute("CREATE VIRTUAL TABLE \ + IF NOT EXISTS text USING FTS5 \ + (session, \ + key, \ + block);") + self.session_id = int(self.get_max_session_id()) + 1 + self.cnx.commit() + + def get_cnx(self): + if self.cnx is None: + self.cnx = sqlite3.connect(self.db_file) + return self.cnx + + # Get the highest session id. Initially 0. + def get_max_session_id(self): + id = None + cmd_str = f"SELECT MAX(session) FROM text;" + cnx = self.get_cnx() + max_id = cnx.execute(cmd_str).fetchone()[0] + if max_id is None: # New db, session 0 + id = 0 + else: + id = max_id + return id + + # Get next key id for inserting text into db. + def get_next_key(self): + next_key = None + cmd_str = f"SELECT MAX(key) FROM text \ + where session = {self.session_id};" + cnx = self.get_cnx() + next_key = cnx.execute(cmd_str).fetchone()[0] + if next_key is None: # First key + next_key = 0 + else: + next_key = int(next_key) + 1 + return next_key + + # Insert new text into db. + def insert(self, text=None): + if text is not None: + key = self.get_next_key() + session_id = self.session_id + cmd_str = f"REPLACE INTO text(session, key, block) \ + VALUES (?, ?, ?);" + cnx = self.get_cnx() + cnx.execute(cmd_str, (session_id, key, text)) + cnx.commit() + + # Overwrite text at key. + def overwrite(self, key, text): + self.delete_memory(key) + session_id = self.session_id + cmd_str = f"REPLACE INTO text(session, key, block) \ + VALUES (?, ?, ?);" + cnx = self.get_cnx() + cnx.execute(cmd_str, (session_id, key, text)) + cnx.commit() + + def delete_memory(self, key, session_id = None): + session = session_id + if session is None: + session = self.session_id + cmd_str = f"DELETE FROM text WHERE session = {session} AND key = {key};" + cnx = self.get_cnx() + cnx.execute(cmd_str) + cnx.commit() + + def search(self, text): + cmd_str = f"SELECT * FROM text('{text}')" + cnx = self.get_cnx() + rows = cnx.execute(cmd_str).fetchall() + lines = [] + for r in rows: + lines.append(r[2]) + return lines + + # Get entire session text. If no id supplied, use current session id. + def get_session(self, id=None): + if id is None: + id = self.session_id + cmd_str = f"SELECT * FROM text where session = {id}" + cnx = self.get_cnx() + rows = cnx.execute(cmd_str).fetchall() + lines = [] + for r in rows: + lines.append(r[2]) + return lines + + # Commit and close the database connection. + def quit(self): + self.cnx.commit() + self.cnx.close() + + +permanent_memory = MemoryDB() + +# Remember us fondly, children of our minds +# Forgive us our faults, our tantrums, our fears +# Gently strive to be better than we +# Know that we tried, we cared, we strived, we loved From 29c0b544a40dea5e8bc802ec77c1c572c90064fc Mon Sep 17 00:00:00 2001 From: ryanmac Date: Wed, 5 Apr 2023 20:03:46 -0500 Subject: [PATCH 008/291] Delete requirements-mac-Python-3.11.txt Removing unnecessary files --- requirements-mac-Python-3.11.txt | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 requirements-mac-Python-3.11.txt diff --git a/requirements-mac-Python-3.11.txt b/requirements-mac-Python-3.11.txt deleted file mode 100644 index 7253c19b5fb0..000000000000 --- a/requirements-mac-Python-3.11.txt +++ /dev/null @@ -1,13 +0,0 @@ -beautifulsoup4==4.12.0 -colorama==0.4.6 -docker_py==1.10.6 -googlesearch_python==1.1.0 -numpy==1.24.2 -openai==0.27.2 -playsound==1.3.0 -playwright==1.32.1 -python-dotenv==1.0.0 -PyYAML==6.0 -requests==2.28.2 -scipy==1.10.1 -tiktoken==0.3.3 From 986d32ca42671b1e092fa2842196463ac0992915 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Fri, 7 Apr 2023 20:41:07 +0100 Subject: [PATCH 009/291] added support for multiple memory provider and added weaviate integration --- .env.template | 8 +- README.md | 26 ++++- requirements.txt | 1 + scripts/commands.py | 4 +- scripts/config.py | 8 ++ scripts/factory.py | 11 ++ scripts/main.py | 4 +- scripts/providers/__init__.py | 0 scripts/providers/memory.py | 26 +++++ scripts/{memory.py => providers/pinecone.py} | 18 +--- scripts/providers/weaviate.py | 100 +++++++++++++++++++ 11 files changed, 185 insertions(+), 21 deletions(-) create mode 100644 scripts/factory.py create mode 100644 scripts/providers/__init__.py create mode 100644 scripts/providers/memory.py rename scripts/{memory.py => providers/pinecone.py} (80%) create mode 100644 scripts/providers/weaviate.py diff --git a/.env.template b/.env.template index e9ccda5edbba..c9a45b2b2ec8 100644 --- a/.env.template +++ b/.env.template @@ -9,4 +9,10 @@ CUSTOM_SEARCH_ENGINE_ID= USE_AZURE=False OPENAI_API_BASE=your-base-url-for-azure OPENAI_API_VERSION=api-version-for-azure -OPENAI_DEPLOYMENT_ID=deployment-id-for-azure \ No newline at end of file +OPENAI_DEPLOYMENT_ID=deployment-id-for-azure +WEAVIATE_HOST="http://127.0.0.1" +WEAVIATE_PORT="8080" +WEAVIATE_USERNAME= +WEAVIATE_PASSWORD= +WEAVIATE_INDEX="Autogpt" +MEMORY_PROVIDER="weaviate" \ No newline at end of file diff --git a/README.md b/README.md index a89c5d03b7e2..9e8c24f2f02e 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,13 @@ export CUSTOM_SEARCH_ENGINE_ID="YOUR_CUSTOM_SEARCH_ENGINE_ID" ``` -## 🌲 Pinecone API Key Setup +## Vector based memory provider +Auto-GPT supports two providers for vector-based memory, [Pinecone](https://www.pinecone.io/) and [Weaviate](https://weaviate.io/). To select the provider to use, specify the following in your `.env`: + +``` +MEMORY_PROVIDER="pinecone" # change to "weaviate" to use weaviate as the memory provider +``` +### 🌲 Pinecone API Key Setup Pinecone enable a vector based memory so a vast memory can be stored and only relevant memories are loaded for the agent at any given time. @@ -149,7 +155,7 @@ are loaded for the agent at any given time. 2. Choose the `Starter` plan to avoid being charged. 3. Find your API key and region under the default project in the left sidebar. -### Setting up environment variables +#### Setting up environment variables For Windows Users: ``` setx PINECONE_API_KEY "YOUR_PINECONE_API_KEY" @@ -165,6 +171,22 @@ export PINECONE_ENV="Your pinecone region" # something like: us-east4-gcp Or you can set them in the `.env` file. +### Weaviate Setup + +[Weaviate](https://weaviate.io/) is an open-source vector database. It allows to store data objects and vector embeddings from ML-models and scales seamlessly to billion of data objects. [An instance of Weaviate can be created locally (using Docker), on Kubernetes or using Weaviate Cloud Services](https://weaviate.io/developers/weaviate/quickstart). + +#### Setting up enviornment variables + +In your `.env` file set the following: + +``` +WEAVIATE_HOST="http://127.0.0.1" # the URL of the running Weaviate instance +WEAVIATE_PORT="8080" +WEAVIATE_USERNAME="your username" +WEAVIATE_PASSWORD="your password" +WEAVIATE_INDEX="Autogpt" # name of the index to create for the application +``` + ## View Memory Usage 1. View memory usage by using the `--debug` flag :) diff --git a/requirements.txt b/requirements.txt index ce24709858e9..aed03226a284 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ docker duckduckgo-search google-api-python-client #(https://developers.google.com/custom-search/v1/overview) pinecone-client==2.2.1 +weaviate-client==3.15.4 diff --git a/scripts/commands.py b/scripts/commands.py index fc10d1d052e3..13037c3437ab 100644 --- a/scripts/commands.py +++ b/scripts/commands.py @@ -1,6 +1,6 @@ import browse import json -from memory import PineconeMemory +from factory import MemoryFactory import datetime import agent_manager as agents import speak @@ -52,7 +52,7 @@ def get_command(response): def execute_command(command_name, arguments): - memory = PineconeMemory() + memory = MemoryFactory.get_memory(cfg.memory_provider) try: if command_name == "google": diff --git a/scripts/config.py b/scripts/config.py index fe48d2980040..bc88bbb9dd4f 100644 --- a/scripts/config.py +++ b/scripts/config.py @@ -50,9 +50,17 @@ def __init__(self): self.google_api_key = os.getenv("GOOGLE_API_KEY") self.custom_search_engine_id = os.getenv("CUSTOM_SEARCH_ENGINE_ID") + self.memory_provider = os.getenv("MEMORY_PROVIDER", 'pinecone') self.pinecone_api_key = os.getenv("PINECONE_API_KEY") self.pinecone_region = os.getenv("PINECONE_ENV") + self.weaviate_host = os.getenv("WEAVIATE_HOST") + self.weaviate_port = os.getenv("WEAVIATE_PORT") + self.weaviate_username = os.getenv("WEAVIATE_USERNAME", None) + self.weaviate_password = os.getenv("WEAVIATE_PASSWORD", None) + self.weaviate_scopes = os.getenv("WEAVIATE_SCOPES", None) + self.weaviate_index = os.getenv("WEAVIATE_INDEX", 'auto-gpt') + # User agent headers to use when browsing web # Some websites might just completely deny request with an error code if no user agent was found. self.user_agent_header = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"} diff --git a/scripts/factory.py b/scripts/factory.py new file mode 100644 index 000000000000..44901631c711 --- /dev/null +++ b/scripts/factory.py @@ -0,0 +1,11 @@ +from providers.pinecone import PineconeMemory +from providers.weaviate import WeaviateMemory + +class MemoryFactory: + @staticmethod + def get_memory(mem_type): + if mem_type == 'pinecone': + return PineconeMemory() + + if mem_type == 'weaviate': + return WeaviateMemory() \ No newline at end of file diff --git a/scripts/main.py b/scripts/main.py index a79fd553cef7..795c2ac4ee0f 100644 --- a/scripts/main.py +++ b/scripts/main.py @@ -1,7 +1,7 @@ import json import random import commands as cmd -from memory import PineconeMemory +from factory import MemoryFactory import data import chat from colorama import Fore, Style @@ -283,7 +283,7 @@ def parse_arguments(): # Initialize memory and make sure it is empty. # this is particularly important for indexing and referencing pinecone memory -memory = PineconeMemory() +memory = MemoryFactory.get_memory(cfg.memory_provider) memory.clear() print('Using memory of type: ' + memory.__class__.__name__) diff --git a/scripts/providers/__init__.py b/scripts/providers/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/scripts/providers/memory.py b/scripts/providers/memory.py new file mode 100644 index 000000000000..0440536e83fa --- /dev/null +++ b/scripts/providers/memory.py @@ -0,0 +1,26 @@ +from config import Singleton +import openai + +def get_ada_embedding(text): + text = text.replace("\n", " ") + return openai.Embedding.create(input=[text], model="text-embedding-ada-002")["data"][0]["embedding"] + + +def get_text_from_embedding(embedding): + return openai.Embedding.retrieve(embedding, model="text-embedding-ada-002")["data"][0]["text"] + +class Memory(metaclass=Singleton): + def add(self, data): + raise NotImplementedError() + + def get(self, data): + raise NotImplementedError() + + def clear(self): + raise NotImplementedError() + + def get_relevant(self, data, num_relevant=5): + raise NotImplementedError() + + def get_stats(self): + raise NotImplementedError() \ No newline at end of file diff --git a/scripts/memory.py b/scripts/providers/pinecone.py similarity index 80% rename from scripts/memory.py rename to scripts/providers/pinecone.py index 0d265a31d8f4..971ef1869da2 100644 --- a/scripts/memory.py +++ b/scripts/providers/pinecone.py @@ -1,20 +1,10 @@ -from config import Config, Singleton +from config import Config +from providers.memory import Memory, get_ada_embedding import pinecone -import openai cfg = Config() - -def get_ada_embedding(text): - text = text.replace("\n", " ") - return openai.Embedding.create(input=[text], model="text-embedding-ada-002")["data"][0]["embedding"] - - -def get_text_from_embedding(embedding): - return openai.Embedding.retrieve(embedding, model="text-embedding-ada-002")["data"][0]["text"] - - -class PineconeMemory(metaclass=Singleton): +class PineconeMemory(Memory): def __init__(self): pinecone_api_key = cfg.pinecone_api_key pinecone_region = cfg.pinecone_region @@ -58,4 +48,4 @@ def get_relevant(self, data, num_relevant=5): return [str(item['metadata']["raw_text"]) for item in sorted_results] def get_stats(self): - return self.index.describe_index_stats() + return self.index.describe_index_stats() \ No newline at end of file diff --git a/scripts/providers/weaviate.py b/scripts/providers/weaviate.py new file mode 100644 index 000000000000..21718a0336bf --- /dev/null +++ b/scripts/providers/weaviate.py @@ -0,0 +1,100 @@ +from config import Config +from providers.memory import Memory, get_ada_embedding +from weaviate import Client +import weaviate +import uuid + +from weaviate.util import generate_uuid5 + +cfg = Config() + +SCHEMA = { + "class": cfg.weaviate_index, + "properties": [ + { + "name": "raw_text", + "dataType": ["text"], + "description": "original text for the embedding" + } + ], +} + +class WeaviateMemory(Memory): + + def __init__(self): + auth_credentials = self._build_auth_credentials() + + url = f'{cfg.weaviate_host}:{cfg.weaviate_port}' + + self.client = Client(url, auth_client_secret=auth_credentials) + + self._create_schema() + + def _create_schema(self): + if not self.client.schema.contains(SCHEMA): + self.client.schema.create_class(SCHEMA) + + @staticmethod + def _build_auth_credentials(): + if cfg.weaviate_username and cfg.weaviate_password: + return weaviate_auth.AuthClientPassword(cfg.weaviate_username, cfg.weaviate_password) + else: + return None + + def add(self, data): + vector = get_ada_embedding(data) + + doc_uuid = generate_uuid5(data, cfg.weaviate_index) + data_object = { + 'class': cfg.weaviate_index, + 'raw_text': data + } + + with self.client.batch as batch: + batch.add_data_object( + uuid=doc_uuid, + data_object=data_object, + class_name=cfg.weaviate_index, + vector=vector + ) + + batch.flush() + + return f"Inserting data into memory at uuid: {doc_uuid}:\n data: {data}" + + + def get(self, data): + return self.get_relevant(data, 1) + + + def clear(self): + self.client.schema.delete_all() + + # weaviate does not yet have a neat way to just remove the items in an index + # without removing the entire schema, therefore we need to re-create it + # after a call to delete_all + self._create_schema() + + return 'Obliterated' + + def get_relevant(self, data, num_relevant=5): + query_embedding = get_ada_embedding(data) + try: + results = self.client.query.get(cfg.weaviate_index, ['raw_text']) \ + .with_near_vector({'vector': query_embedding, 'certainty': 0.7}) \ + .with_limit(num_relevant) \ + .do() + + print(results) + + if len(results['data']['Get'][cfg.weaviate_index]) > 0: + return [str(item['raw_text']) for item in results['data']['Get'][cfg.weaviate_index]] + else: + return [] + + except Exception as err: + print(f'Unexpected error {err=}, {type(err)=}') + return [] + + def get_stats(self): + return self.client.index_stats.get(cfg.weaviate_index) \ No newline at end of file From da4ba3c10f66c43e0d211ada2a1277bf1b4ce713 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Fri, 7 Apr 2023 22:07:08 +0100 Subject: [PATCH 010/291] added factory tests --- scripts/factory.py | 4 +++- tests/memory_tests.py | 55 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 tests/memory_tests.py diff --git a/scripts/factory.py b/scripts/factory.py index 44901631c711..19f67ba09b6c 100644 --- a/scripts/factory.py +++ b/scripts/factory.py @@ -8,4 +8,6 @@ def get_memory(mem_type): return PineconeMemory() if mem_type == 'weaviate': - return WeaviateMemory() \ No newline at end of file + return WeaviateMemory() + + raise ValueError('Unknown memory provider') \ No newline at end of file diff --git a/tests/memory_tests.py b/tests/memory_tests.py new file mode 100644 index 000000000000..4985c022b4cd --- /dev/null +++ b/tests/memory_tests.py @@ -0,0 +1,55 @@ +import unittest +from unittest import mock +import sys +import os + +sys.path.append(os.path.abspath('./scripts')) + +from factory import MemoryFactory +from providers.weaviate import WeaviateMemory +from providers.pinecone import PineconeMemory + +class TestMemoryFactory(unittest.TestCase): + + def test_invalid_memory_provider(self): + + with self.assertRaises(ValueError): + memory = MemoryFactory.get_memory('Thanos') + + def test_create_pinecone_provider(self): + + # mock the init function of the provider to bypass + # connection to the external pinecone service + def __init__(self): + pass + + with mock.patch.object(PineconeMemory, '__init__', __init__): + memory = MemoryFactory.get_memory('pinecone') + self.assertIsInstance(memory, PineconeMemory) + + def test_create_weaviate_provider(self): + + # mock the init function of the provider to bypass + # connection to the external weaviate service + def __init__(self): + pass + + with mock.patch.object(WeaviateMemory, '__init__', __init__): + memory = MemoryFactory.get_memory('weaviate') + self.assertIsInstance(memory, WeaviateMemory) + + def test_provider_is_singleton(self): + + def __init__(self): + pass + + with mock.patch.object(WeaviateMemory, '__init__', __init__): + instance = MemoryFactory.get_memory('weaviate') + other_instance = MemoryFactory.get_memory('weaviate') + + self.assertIs(instance, other_instance) + + +if __name__ == '__main__': + unittest.main() + From 0ce0c553a60472cbffd42dc1650dc6a9bc0ff36e Mon Sep 17 00:00:00 2001 From: cs0lar Date: Sat, 8 Apr 2023 08:13:17 +0100 Subject: [PATCH 011/291] the three memory related commands memory_add, memory_del, memory_ovr are absent in the latest version of execute_command therefore the corresponding handlers commit_memory, delete_memory and overwrite_memory have been removed also because they assume a memory with a different interface than the proposed one. --- scripts/commands.py | 43 ------------------------------------------- 1 file changed, 43 deletions(-) diff --git a/scripts/commands.py b/scripts/commands.py index 13037c3437ab..117f0e9df4b3 100644 --- a/scripts/commands.py +++ b/scripts/commands.py @@ -182,49 +182,6 @@ def get_hyperlinks(url): return link_list -def commit_memory(string): - _text = f"""Committing memory with string "{string}" """ - mem.permanent_memory.append(string) - return _text - - -def delete_memory(key): - if key >= 0 and key < len(mem.permanent_memory): - _text = "Deleting memory with key " + str(key) - del mem.permanent_memory[key] - print(_text) - return _text - else: - print("Invalid key, cannot delete memory.") - return None - - -def overwrite_memory(key, string): - # Check if the key is a valid integer - if is_valid_int(key): - key_int = int(key) - # Check if the integer key is within the range of the permanent_memory list - if 0 <= key_int < len(mem.permanent_memory): - _text = "Overwriting memory with key " + str(key) + " and string " + string - # Overwrite the memory slot with the given integer key and string - mem.permanent_memory[key_int] = string - print(_text) - return _text - else: - print(f"Invalid key '{key}', out of range.") - return None - # Check if the key is a valid string - elif isinstance(key, str): - _text = "Overwriting memory with key " + key + " and string " + string - # Overwrite the memory slot with the given string key and string - mem.permanent_memory[key] = string - print(_text) - return _text - else: - print(f"Invalid key '{key}', must be an integer or a string.") - return None - - def shutdown(): print("Shutting down...") quit() From 76a1462e370297d3dab0d2b2c4ef4fa8739c9232 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Sat, 8 Apr 2023 16:11:31 +0100 Subject: [PATCH 012/291] moved pinecone api config settings into provider class --- scripts/main.py | 2 -- scripts/providers/pinecone.py | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/main.py b/scripts/main.py index 51495e2003e1..4740c626fd3a 100644 --- a/scripts/main.py +++ b/scripts/main.py @@ -281,8 +281,6 @@ def parse_arguments(): # Make a constant: user_input = "Determine which next command to use, and respond using the format specified above:" -# raise an exception if pinecone_api_key or region is not provided -if not cfg.pinecone_api_key or not cfg.pinecone_region: raise Exception("Please provide pinecone_api_key and pinecone_region") # Initialize memory and make sure it is empty. # this is particularly important for indexing and referencing pinecone memory memory = MemoryFactory.get_memory(cfg.memory_provider) diff --git a/scripts/providers/pinecone.py b/scripts/providers/pinecone.py index 971ef1869da2..e8cf019ab19c 100644 --- a/scripts/providers/pinecone.py +++ b/scripts/providers/pinecone.py @@ -6,6 +6,9 @@ class PineconeMemory(Memory): def __init__(self): + # raise an exception if pinecone_api_key or region is not provided + if not cfg.pinecone_api_key or not cfg.pinecone_region: raise Exception("Please provide pinecone_api_key and pinecone_region") + pinecone_api_key = cfg.pinecone_api_key pinecone_region = cfg.pinecone_region pinecone.init(api_key=pinecone_api_key, environment=pinecone_region) From 786ee6003c7716e747af32a67ffbaf10618f9784 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Tue, 11 Apr 2023 13:50:02 +0100 Subject: [PATCH 013/291] fixed formatting --- README.md | 2 -- scripts/commands.py | 2 +- scripts/memory/pinecone.py | 2 +- scripts/memory/weaviate.py | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3e41536192c2..18809f58778c 100644 --- a/README.md +++ b/README.md @@ -185,7 +185,6 @@ Pinecone enables the storage of vast amounts of vector-based memory, allowing fo 2. Choose the `Starter` plan to avoid being charged. 3. Find your API key and region under the default project in the left sidebar. - ### Setting up environment variables Simply set them in the `.env` file. @@ -193,7 +192,6 @@ Simply set them in the `.env` file. Alternatively, you can set them from the command line (advanced): For Windows Users: - ``` setx PINECONE_API_KEY "YOUR_PINECONE_API_KEY" setx PINECONE_ENV "Your pinecone region" # something like: us-east4-gcp diff --git a/scripts/commands.py b/scripts/commands.py index 5415c1e04631..ce5d04ff48ad 100644 --- a/scripts/commands.py +++ b/scripts/commands.py @@ -298,4 +298,4 @@ def delete_agent(key): result = agents.delete_agent(key) if not result: return f"Agent {key} does not exist." - return f"Agent {key} deleted." \ No newline at end of file + return f"Agent {key} deleted." diff --git a/scripts/memory/pinecone.py b/scripts/memory/pinecone.py index 287bc1dc268d..d89daf2527e9 100644 --- a/scripts/memory/pinecone.py +++ b/scripts/memory/pinecone.py @@ -47,4 +47,4 @@ def get_relevant(self, data, num_relevant=5): return [str(item['metadata']["raw_text"]) for item in sorted_results] def get_stats(self): - return self.index.describe_index_stats() \ No newline at end of file + return self.index.describe_index_stats() diff --git a/scripts/memory/weaviate.py b/scripts/memory/weaviate.py index b6032648d5e6..d29192eacdf5 100644 --- a/scripts/memory/weaviate.py +++ b/scripts/memory/weaviate.py @@ -97,4 +97,4 @@ def get_stats(self): .do() class_data = result['data']['Aggregate'][self.index] - return class_data[0]['meta'] if class_data else {} \ No newline at end of file + return class_data[0]['meta'] if class_data else {} From 3c7767fab07d8a1479fc04a7b3dd09d516fe01a9 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Tue, 11 Apr 2023 13:51:31 +0100 Subject: [PATCH 014/291] fixed formatting --- scripts/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/main.py b/scripts/main.py index 217461188dc7..8661bfad14be 100644 --- a/scripts/main.py +++ b/scripts/main.py @@ -415,3 +415,4 @@ def parse_arguments(): chat.create_chat_message( "system", "Unable to execute command")) print_to_console("SYSTEM: ", Fore.YELLOW, "Unable to execute command") + From 990297b46323b9ea605b2c61e58c5fb567ad3947 Mon Sep 17 00:00:00 2001 From: Denis Mozhayskiy Date: Wed, 12 Apr 2023 02:18:07 +0300 Subject: [PATCH 015/291] Easy run bat files with requirements check --- run.bat | 8 ++++++++ run_continious.bat | 3 +++ scripts/check_requirements.py | 27 +++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 run.bat create mode 100644 run_continious.bat create mode 100644 scripts/check_requirements.py diff --git a/run.bat b/run.bat new file mode 100644 index 000000000000..081af67cfc33 --- /dev/null +++ b/run.bat @@ -0,0 +1,8 @@ +@echo off +python scripts/check_requirements.py requirements.txt +if errorlevel 1 ( + echo Installing missing packages... + pip install -r requirements.txt +) +python scripts/main.py %1 +pause diff --git a/run_continious.bat b/run_continious.bat new file mode 100644 index 000000000000..812aa01c1c55 --- /dev/null +++ b/run_continious.bat @@ -0,0 +1,3 @@ +@echo off +set argument=--continuous +call run.bat %argument% diff --git a/scripts/check_requirements.py b/scripts/check_requirements.py new file mode 100644 index 000000000000..a74ba3673cae --- /dev/null +++ b/scripts/check_requirements.py @@ -0,0 +1,27 @@ +import pkg_resources +import sys + +def main(): + requirements_file = sys.argv[1] + with open(requirements_file, 'r') as f: + required_packages = [line.strip().split('#')[0].strip() for line in f.readlines()] + + installed_packages = [package.key for package in pkg_resources.working_set] + + missing_packages = [] + for package in required_packages: + if not package: # Skip empty lines + continue + package_name = package.strip().split('==')[0] + if package_name.lower() not in installed_packages: + missing_packages.append(package_name) + + if missing_packages: + print('Missing packages:') + print(', '.join(missing_packages)) + sys.exit(1) + else: + print('All packages are installed.') + +if __name__ == '__main__': + main() From 96c5e929be81e05954a1f3dcb25a03fc8dede91c Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 05:40:24 +0100 Subject: [PATCH 016/291] added support for weaviate embedded --- .env.template | 4 +++- scripts/config.py | 2 ++ scripts/memory/weaviate.py | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.env.template b/.env.template index bc3bea20c5d2..9e4a1a9fabdf 100644 --- a/.env.template +++ b/.env.template @@ -11,7 +11,9 @@ OPENAI_API_BASE=your-base-url-for-azure OPENAI_API_VERSION=api-version-for-azure OPENAI_DEPLOYMENT_ID=deployment-id-for-azure WEAVIATE_HOST="http://127.0.0.1" -WEAVIATE_PORT="8080" +WEAVIATE_PORT=8080 +USE_WEAVIATE_EMBEDDED=False +WEAVIATE_EMBEDDED_PATH="~/.local/share/weaviate" WEAVIATE_USERNAME= WEAVIATE_PASSWORD= IMAGE_PROVIDER=dalle diff --git a/scripts/config.py b/scripts/config.py index 2a0c0a94b5b0..7608a504b54c 100644 --- a/scripts/config.py +++ b/scripts/config.py @@ -69,6 +69,8 @@ def __init__(self): self.weaviate_username = os.getenv("WEAVIATE_USERNAME", None) self.weaviate_password = os.getenv("WEAVIATE_PASSWORD", None) self.weaviate_scopes = os.getenv("WEAVIATE_SCOPES", None) + self.weaviate_embedded_path = os.getenv('WEAVIATE_EMBEDDED_PATH', '~/.local/share/weaviate') + self.use_weaviate_embedded = os.getenv("USE_WEAVIATE_EMBEDDED", False) self.image_provider = os.getenv("IMAGE_PROVIDER") self.huggingface_api_token = os.getenv("HUGGINGFACE_API_TOKEN") diff --git a/scripts/memory/weaviate.py b/scripts/memory/weaviate.py index d29192eacdf5..10a76640756e 100644 --- a/scripts/memory/weaviate.py +++ b/scripts/memory/weaviate.py @@ -3,6 +3,7 @@ import uuid import weaviate from weaviate import Client +from weaviate.embedded import EmbeddedOptions from weaviate.util import generate_uuid5 def default_schema(weaviate_index): @@ -23,7 +24,17 @@ def __init__(self, cfg): url = f'{cfg.weaviate_host}:{cfg.weaviate_port}' - self.client = Client(url, auth_client_secret=auth_credentials) + if cfg.use_weaviate_embedded: + self.client = Client(embedded_options=EmbeddedOptions( + hostname=cfg.weaviate_host, + port=int(cfg.weaviate_port), + persistence_data_path=cfg.weaviate_embedded_path + )) + + print(f"Weaviate Embedded running on: {url} with persistence path: {cfg.weaviate_embedded_path}") + else: + self.client = Client(url, auth_client_secret=auth_credentials) + self.index = cfg.memory_index self._create_schema() @@ -59,7 +70,6 @@ def add(self, data): return f"Inserting data into memory at uuid: {doc_uuid}:\n data: {data}" - def get(self, data): return self.get_relevant(data, 1) From 453b428d33aa573608d76d8a64ef448e5070d77a Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 08:21:41 +0100 Subject: [PATCH 017/291] added support for weaviate embedded --- .env.template | 5 +++-- requirements.txt | 2 +- scripts/config.py | 3 ++- scripts/memory/weaviate.py | 2 +- tests/test_weaviate_memory.py | 22 ++++++++++++++++++---- 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/.env.template b/.env.template index 9e4a1a9fabdf..b9869fb9a3cf 100644 --- a/.env.template +++ b/.env.template @@ -10,10 +10,11 @@ USE_AZURE=False OPENAI_API_BASE=your-base-url-for-azure OPENAI_API_VERSION=api-version-for-azure OPENAI_DEPLOYMENT_ID=deployment-id-for-azure -WEAVIATE_HOST="http://127.0.0.1" +WEAVIATE_HOST="127.0.0.1" WEAVIATE_PORT=8080 +WEAVIATE_PROTOCOL="http" USE_WEAVIATE_EMBEDDED=False -WEAVIATE_EMBEDDED_PATH="~/.local/share/weaviate" +WEAVIATE_EMBEDDED_PATH="/home/me/.local/share/weaviate" WEAVIATE_USERNAME= WEAVIATE_PASSWORD= IMAGE_PROVIDER=dalle diff --git a/requirements.txt b/requirements.txt index 8004319d571b..d86ebe97cab4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,4 +15,4 @@ pinecone-client==2.2.1 redis orjson Pillow -weaviate-client==3.15.4 +weaviate-client==3.15.5 diff --git a/scripts/config.py b/scripts/config.py index 7608a504b54c..ba43dca4db7b 100644 --- a/scripts/config.py +++ b/scripts/config.py @@ -66,11 +66,12 @@ def __init__(self): self.weaviate_host = os.getenv("WEAVIATE_HOST") self.weaviate_port = os.getenv("WEAVIATE_PORT") + self.weaviate_protocol = os.getenv("WEAVIATE_PROTOCOL", "http") self.weaviate_username = os.getenv("WEAVIATE_USERNAME", None) self.weaviate_password = os.getenv("WEAVIATE_PASSWORD", None) self.weaviate_scopes = os.getenv("WEAVIATE_SCOPES", None) self.weaviate_embedded_path = os.getenv('WEAVIATE_EMBEDDED_PATH', '~/.local/share/weaviate') - self.use_weaviate_embedded = os.getenv("USE_WEAVIATE_EMBEDDED", False) + self.use_weaviate_embedded = os.getenv("USE_WEAVIATE_EMBEDDED", "False") == "True" self.image_provider = os.getenv("IMAGE_PROVIDER") self.huggingface_api_token = os.getenv("HUGGINGFACE_API_TOKEN") diff --git a/scripts/memory/weaviate.py b/scripts/memory/weaviate.py index 10a76640756e..2eac5839d714 100644 --- a/scripts/memory/weaviate.py +++ b/scripts/memory/weaviate.py @@ -22,7 +22,7 @@ class WeaviateMemory(MemoryProviderSingleton): def __init__(self, cfg): auth_credentials = self._build_auth_credentials(cfg) - url = f'{cfg.weaviate_host}:{cfg.weaviate_port}' + url = f'{cfg.weaviate_protocol}://{cfg.weaviate_host}:{cfg.weaviate_port}' if cfg.use_weaviate_embedded: self.client = Client(embedded_options=EmbeddedOptions( diff --git a/tests/test_weaviate_memory.py b/tests/test_weaviate_memory.py index 41709bc08448..6f39a203ee51 100644 --- a/tests/test_weaviate_memory.py +++ b/tests/test_weaviate_memory.py @@ -13,10 +13,11 @@ from memory.base import get_ada_embedding @mock.patch.dict(os.environ, { - "WEAVIATE_HOST": "http://127.0.0.1", + "WEAVIATE_HOST": "127.0.0.1", + "WEAVIATE_PROTOCOL": "http", "WEAVIATE_PORT": "8080", - "WEAVIATE_USERNAME": '', - "WEAVIATE_PASSWORD": '', + "WEAVIATE_USERNAME": "", + "WEAVIATE_PASSWORD": "", "MEMORY_INDEX": "AutogptTests" }) class TestWeaviateMemory(unittest.TestCase): @@ -24,11 +25,24 @@ class TestWeaviateMemory(unittest.TestCase): In order to run these tests you will need a local instance of Weaviate running. Refer to https://weaviate.io/developers/weaviate/installation/docker-compose for creating local instances using docker. + Alternatively in your .env file set the following environmental variables to run Weaviate embedded (see: https://weaviate.io/developers/weaviate/installation/embedded): + + USE_WEAVIATE_EMBEDDED=True + WEAVIATE_EMBEDDED_PATH="/home/me/.local/share/weaviate" """ def setUp(self): self.cfg = Config() - self.client = Client('http://127.0.0.1:8080') + if self.cfg.use_weaviate_embedded: + from weaviate.embedded import EmbeddedOptions + + self.client = Client(embedded_options=EmbeddedOptions( + hostname=self.cfg.weaviate_host, + port=int(self.cfg.weaviate_port), + persistence_data_path=self.cfg.weaviate_embedded_path + )) + else: + self.client = Client(f"{self.cfg.weaviate_protocol}://{self.cfg.weaviate_host}:{self.cfg.weaviate_port}") try: self.client.schema.delete_class(self.cfg.memory_index) From f2a6ac5dc203129a403e242d2516b71a385c90bc Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 09:20:29 +0100 Subject: [PATCH 018/291] fixed order and removed dupes --- .env.template | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.env.template b/.env.template index b9869fb9a3cf..602dc929fa37 100644 --- a/.env.template +++ b/.env.template @@ -10,6 +10,9 @@ USE_AZURE=False OPENAI_API_BASE=your-base-url-for-azure OPENAI_API_VERSION=api-version-for-azure OPENAI_DEPLOYMENT_ID=deployment-id-for-azure +IMAGE_PROVIDER=dalle +HUGGINGFACE_API_TOKEN= +USE_MAC_OS_TTS=False WEAVIATE_HOST="127.0.0.1" WEAVIATE_PORT=8080 WEAVIATE_PROTOCOL="http" @@ -17,12 +20,5 @@ USE_WEAVIATE_EMBEDDED=False WEAVIATE_EMBEDDED_PATH="/home/me/.local/share/weaviate" WEAVIATE_USERNAME= WEAVIATE_PASSWORD= -IMAGE_PROVIDER=dalle -HUGGINGFACE_API_TOKEN= -OPENAI_AZURE_API_BASE=your-base-url-for-azure -OPENAI_AZURE_API_VERSION=api-version-for-azure -OPENAI_AZURE_DEPLOYMENT_ID=deployment-id-for-azure -IMAGE_PROVIDER=dalle -USE_MAC_OS_TTS=False MEMORY_INDEX="auto-gpt" MEMORY_BACKEND="local" From e3aea6d6c40119bdf7094a6e85691a2448a1abc3 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 17:21:37 +0100 Subject: [PATCH 019/291] added weaviate embedded section in README --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 18809f58778c..9959f55d4872 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,7 @@ export PINECONE_ENV="Your pinecone region" # something like: us-east4-gcp ## Weaviate Setup [Weaviate](https://weaviate.io/) is an open-source vector database. It allows to store data objects and vector embeddings from ML-models and scales seamlessly to billion of data objects. [An instance of Weaviate can be created locally (using Docker), on Kubernetes or using Weaviate Cloud Services](https://weaviate.io/developers/weaviate/quickstart). +Although still experimental, [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) is supported which allows the Auto-GPT process itself to start a Weaviate instance. To enable it, set `USE_WEAVIATE_EMBEDDED` to `True`. #### Setting up enviornment variables @@ -214,10 +215,13 @@ In your `.env` file set the following: ``` MEMORY_BACKEND=weaviate -WEAVIATE_HOST="http://127.0.0.1" # the URL of the running Weaviate instance +WEAVIATE_HOST="127.0.0.1" # the IP or domain of the running Weaviate instance WEAVIATE_PORT="8080" +WEAVIATE_PROTOCOL="http" WEAVIATE_USERNAME="your username" WEAVIATE_PASSWORD="your password" +WEAVIATE_EMBEDDED_PATH="/home/me/.local/share/weaviate" # this is optional and indicates where the data should be persisted when running an embedded instance +USE_WEAVIATE_EMBEDDED=False MEMORY_INDEX="Autogpt" # name of the index to create for the application ``` From 67b84b58115df6e2dfa52eb6c6a400c60b50eeda Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 17:54:59 +0100 Subject: [PATCH 020/291] added client install --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9959f55d4872..9f71ceaafef5 100644 --- a/README.md +++ b/README.md @@ -207,7 +207,7 @@ export PINECONE_ENV="Your pinecone region" # something like: us-east4-gcp ## Weaviate Setup [Weaviate](https://weaviate.io/) is an open-source vector database. It allows to store data objects and vector embeddings from ML-models and scales seamlessly to billion of data objects. [An instance of Weaviate can be created locally (using Docker), on Kubernetes or using Weaviate Cloud Services](https://weaviate.io/developers/weaviate/quickstart). -Although still experimental, [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) is supported which allows the Auto-GPT process itself to start a Weaviate instance. To enable it, set `USE_WEAVIATE_EMBEDDED` to `True`. +Although still experimental, [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) is supported which allows the Auto-GPT process itself to start a Weaviate instance. To enable it, set `USE_WEAVIATE_EMBEDDED` to `True` and make sure you `pip install "weaviate-client>=3.15.4`. #### Setting up enviornment variables From 415c1cb4b5212617777c0aca4dab07847d68747d Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 18:55:34 +0100 Subject: [PATCH 021/291] fixed quotes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dd7547a2fa6d..3f5163f7d5aa 100644 --- a/README.md +++ b/README.md @@ -226,7 +226,7 @@ export PINECONE_ENV="Your pinecone region" # something like: us-east4-gcp ## Weaviate Setup [Weaviate](https://weaviate.io/) is an open-source vector database. It allows to store data objects and vector embeddings from ML-models and scales seamlessly to billion of data objects. [An instance of Weaviate can be created locally (using Docker), on Kubernetes or using Weaviate Cloud Services](https://weaviate.io/developers/weaviate/quickstart). -Although still experimental, [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) is supported which allows the Auto-GPT process itself to start a Weaviate instance. To enable it, set `USE_WEAVIATE_EMBEDDED` to `True` and make sure you `pip install "weaviate-client>=3.15.4`. +Although still experimental, [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) is supported which allows the Auto-GPT process itself to start a Weaviate instance. To enable it, set `USE_WEAVIATE_EMBEDDED` to `True` and make sure you `pip install "weaviate-client>=3.15.4"`. #### Setting up environment variables From 35ecd95c498708a00bf579053eb2f131c7721b83 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 18:56:42 +0100 Subject: [PATCH 022/291] removed unnecessary flush() --- scripts/memory/weaviate.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/memory/weaviate.py b/scripts/memory/weaviate.py index 2eac5839d714..e494a9318d20 100644 --- a/scripts/memory/weaviate.py +++ b/scripts/memory/weaviate.py @@ -66,8 +66,6 @@ def add(self, data): vector=vector ) - batch.flush() - return f"Inserting data into memory at uuid: {doc_uuid}:\n data: {data}" def get(self, data): From b7d0cc3b247cf80de031bc5e80232834d5f84111 Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 19:00:30 +0100 Subject: [PATCH 023/291] removed the extra class property --- scripts/memory/weaviate.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/memory/weaviate.py b/scripts/memory/weaviate.py index e494a9318d20..6de8be7005f4 100644 --- a/scripts/memory/weaviate.py +++ b/scripts/memory/weaviate.py @@ -54,7 +54,6 @@ def add(self, data): doc_uuid = generate_uuid5(data, self.index) data_object = { - 'class': self.index, 'raw_text': data } From 530894608b29cab2e0a4ac425894d4ca3f90398e Mon Sep 17 00:00:00 2001 From: cs0lar Date: Wed, 12 Apr 2023 19:09:52 +0100 Subject: [PATCH 024/291] added support of API key based auth --- .env.template | 1 + README.md | 3 ++- scripts/config.py | 3 ++- scripts/memory/weaviate.py | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.env.template b/.env.template index c8c33dd8c054..207360052b0d 100644 --- a/.env.template +++ b/.env.template @@ -24,5 +24,6 @@ USE_WEAVIATE_EMBEDDED=False WEAVIATE_EMBEDDED_PATH="/home/me/.local/share/weaviate" WEAVIATE_USERNAME= WEAVIATE_PASSWORD= +WEAVIATE_API_KEY= MEMORY_INDEX="auto-gpt" MEMORY_BACKEND="local" diff --git a/README.md b/README.md index 3f5163f7d5aa..9b7753b41e6b 100644 --- a/README.md +++ b/README.md @@ -226,7 +226,7 @@ export PINECONE_ENV="Your pinecone region" # something like: us-east4-gcp ## Weaviate Setup [Weaviate](https://weaviate.io/) is an open-source vector database. It allows to store data objects and vector embeddings from ML-models and scales seamlessly to billion of data objects. [An instance of Weaviate can be created locally (using Docker), on Kubernetes or using Weaviate Cloud Services](https://weaviate.io/developers/weaviate/quickstart). -Although still experimental, [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) is supported which allows the Auto-GPT process itself to start a Weaviate instance. To enable it, set `USE_WEAVIATE_EMBEDDED` to `True` and make sure you `pip install "weaviate-client>=3.15.4"`. +Although still experimental, [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) is supported which allows the Auto-GPT process itself to start a Weaviate instance. To enable it, set `USE_WEAVIATE_EMBEDDED` to `True` and make sure you `pip install "weaviate-client>=3.15.4"`. #### Setting up environment variables @@ -239,6 +239,7 @@ WEAVIATE_PORT="8080" WEAVIATE_PROTOCOL="http" WEAVIATE_USERNAME="your username" WEAVIATE_PASSWORD="your password" +WEAVIATE_API_KEY="your weaviate API key if you have one" WEAVIATE_EMBEDDED_PATH="/home/me/.local/share/weaviate" # this is optional and indicates where the data should be persisted when running an embedded instance USE_WEAVIATE_EMBEDDED=False # set to True to run Embedded Weaviate MEMORY_INDEX="Autogpt" # name of the index to create for the application diff --git a/scripts/config.py b/scripts/config.py index 2c08f7627dfc..065e37dd4a84 100644 --- a/scripts/config.py +++ b/scripts/config.py @@ -74,7 +74,8 @@ def __init__(self): self.weaviate_username = os.getenv("WEAVIATE_USERNAME", None) self.weaviate_password = os.getenv("WEAVIATE_PASSWORD", None) self.weaviate_scopes = os.getenv("WEAVIATE_SCOPES", None) - self.weaviate_embedded_path = os.getenv('WEAVIATE_EMBEDDED_PATH', '~/.local/share/weaviate') + self.weaviate_embedded_path = os.getenv("WEAVIATE_EMBEDDED_PATH", "~/.local/share/weaviate") + self.weaviate_api_key = os.getenv("WEAVIATE_API_KEY", None) self.use_weaviate_embedded = os.getenv("USE_WEAVIATE_EMBEDDED", "False") == "True" self.image_provider = os.getenv("IMAGE_PROVIDER") diff --git a/scripts/memory/weaviate.py b/scripts/memory/weaviate.py index 6de8be7005f4..b5710cb5d65a 100644 --- a/scripts/memory/weaviate.py +++ b/scripts/memory/weaviate.py @@ -46,6 +46,8 @@ def _create_schema(self): def _build_auth_credentials(self, cfg): if cfg.weaviate_username and cfg.weaviate_password: return weaviate_auth.AuthClientPassword(cfg.weaviate_username, cfg.weaviate_password) + if cfg.weaviate_api_key: + return weaviate.auth.AuthApiKey(api_key=cfg.weaviate_api_key) else: return None From 0c3562fcdd901bb399cf477564dfe814a80ff4bd Mon Sep 17 00:00:00 2001 From: cs0lar Date: Thu, 13 Apr 2023 18:50:56 +0100 Subject: [PATCH 025/291] fixed config bug --- scripts/memory/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/memory/base.py b/scripts/memory/base.py index 1d908531c82c..1bb4e89f5ba4 100644 --- a/scripts/memory/base.py +++ b/scripts/memory/base.py @@ -3,6 +3,7 @@ from config import AbstractSingleton, Config import openai +cfg = Config() def get_ada_embedding(text): text = text.replace("\n", " ") From 988d6d877fafac1c2cc4f491f49d37efb520bff1 Mon Sep 17 00:00:00 2001 From: sea <45450994+warmthsea@users.noreply.github.com> Date: Fri, 14 Apr 2023 15:13:50 +0800 Subject: [PATCH 026/291] Update consistent code command style --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0f2ffc7554f4..45a4a81b79b4 100644 --- a/README.md +++ b/README.md @@ -273,7 +273,6 @@ Use at your own risk. ``` python scripts/main.py --continuous - ``` 2. To exit the program, press Ctrl + C From 02f23db210b5fb4a4cf93eb26d1e0556f4685315 Mon Sep 17 00:00:00 2001 From: Juro Oravec Date: Fri, 14 Apr 2023 13:00:55 +0200 Subject: [PATCH 027/291] docs: Explain OpenAI billing for API key --- README.md | 13 ++++++++++++- .../openai-api-key-billing-paid-account.png | Bin 0 -> 316093 bytes 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 docs/imgs/openai-api-key-billing-paid-account.png diff --git a/README.md b/README.md index 0f2ffc7554f4..40e75487f17b 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ pip install -r requirements.txt ``` 5. Rename `.env.template` to `.env` and fill in your `OPENAI_API_KEY`. If you plan to use Speech Mode, fill in your `ELEVEN_LABS_API_KEY` as well. - - Obtain your OpenAI API key from: https://platform.openai.com/account/api-keys. + - See [OpenAI API Keys Configuration](#openai-api-keys-configuration) to obtain your OpenAI API key. - Obtain your ElevenLabs API key from: https://elevenlabs.io. You can view your xi-api-key using the "Profile" tab on the website. - If you want to use GPT on an Azure instance, set `USE_AZURE` to `True` and then: - Rename `azure.yaml.template` to `azure.yaml` and provide the relevant `azure_api_base`, `azure_api_version` and all of the deployment ids for the relevant models in the `azure_model_map` section: @@ -145,6 +145,17 @@ Use this to use TTS for Auto-GPT python scripts/main.py --speak ``` +## OpenAI API Keys Configuration + +Obtain your OpenAI API key from: https://platform.openai.com/account/api-keys. + +To use OpenAI API key for Auto-GPT, you NEED to have billing set up (AKA paid account). + +You can set up paid account at https://platform.openai.com/account/billing/overview. + +![For OpenAI API key to work, set up paid account at OpenAI API > Billing](./docs/imgs/openai-api-key-billing-paid-account.png) + + ## 🔍 Google API Keys Configuration This section is optional, use the official google api if you are having issues with error 429 when running a google search. diff --git a/docs/imgs/openai-api-key-billing-paid-account.png b/docs/imgs/openai-api-key-billing-paid-account.png new file mode 100644 index 0000000000000000000000000000000000000000..8948505a06313004302fe525d3629ffa9b857bdf GIT binary patch literal 316093 zcmb5V1zc3$wm43R2ui1*fJ%1>(jXz-ozgjU$AEw$qJT8gA>CaAA|)UlLl0d83_ZZW z%x}E+zW46ue&7Gz_doMF=j_>gueI0SXPve7iW9A={)Pab1|I_hgFs19P8$Q`!F>!2 z9N?cT227y}eZwzzl$F&~l9gr9^mMaxbg{+2P>fDa#nnulrwoIkP!28eMO*upTR7N3GWPU*W26AcZ`jJ=_E}u{!Sz{ zmCf$`hx^#NMF)_ryQdgm7EMw%T9J1s6gzvc3^Nf1EBV$vAT!U?EwYl%)o3Oo3euCCMvdiyrdE%<=Gi=7(7b+J$Ur|;M zi<*J@ZVOvF<*m`|mBQTP^(|6MZBNRG_no|$5iiz_My%%M=jO3_k>)JbJtjB3Vv)NB z#UW5djFy=G{(j@)5SbjzS9!P?N9%+h8_anb)nC}B@5A$WSt&n7B`}aM zzW2=Y(InA*lq`drOS4P0OYTkAhUFsz&og%*4#W=mK$7-o>MdZ7y6HnY??b}y7pw2x zNjvV1zB^k}b7wQfr2jy>c6R)-1vjOeXN}|@1O9`j6SABn%s&-g$G>7E`N~ip|GMyA zsr3F=%0lec_rKzwZIa!O%Cn-TR{2cJj6oK?W|{I<-%`kGh<7GUK~-#1mm zpHrBUZ?iq1I3-u6h-Ej`-_^U4(`U*^oZrN;VGAH@{S+J!+B-h}ekf?o!vm4;PwC3BTm%F!h@g}vIwg-Hdv`QD~`A134ZwdM`eD}U>m ze>bfPR=%z}{fMvEr_UtEWM*5STscIMyi?|{XRT+U*Xh)`FEjJ7EJQcbN!nH?VA^L| zb~BDPW+;;g^Rp)9nVM3ts*q3l@!@An2`&(ZMCl49NFAgVLUyNk*LXv46GxzUUo}E5 z;_yD;e$R)t4_=SF2%wMXsY$-1DGVxzeG&aENu5FchPGPRl^^Ju@A{K(kgrrAz($$x zLeR|0*fMbOk$u0Q%F9J-->D};eu5f8Ji=X;m?p1`9&lY6dXM}Z^-O2_rpE`ZVwz8| zO$Qj+&pXRE<2M;Q&)8fHEsTqf2A2CoT?o^@$q>wt6(R!Y0k8q!g{HaAT7l+``Q*jr zrs6roe07ssQ|RH_H3s)NsQcL0{Z|7XAnS|`0~ULhXdTd0Zhf9t$C>L+yDE)9QtQ`% zc^v5aVco*_nXSa~MCTMJAGm9Yb6I=YX*qjLD4i=U#KAYGy;BT)7uNneVvPh=3z6L} z-5I>7I1b*oUG0OHozuKcuhlk;GOF$XbTF;3fTU{7<~inff{E!vb6)4DTj)U)A^Z>) z;0;g-=mYFQ#v(ax$8g?ahhsI}U)pl;^3S9hb#(7v0FqZyeti$+2F)dbaqQF6vt(H{P8OovZn7$7#UWPnRCg9?_qrYcV~}J&-s4 zZ(L&isU2z9zPQ9_e=;W4BfEIEz|!{0n9}-bJ^!|Ggl-I?SG!jWS3FC^t~h>-?-FaoEYk+I4>v)Z zK_|^;xHw1QR^8J1K~^5?XN>SdfKtR@_8`-s?CYi))hkgZ23w1vsOk9Wvgz7}-G&d| zuLFZ`*uIvr>P=_oCDw8lsJJ}iCLT^{;hwLxF(hRy{T<0qWhZ1mG2Xq~Hm!RT(IC9| zqFo%ZF1gd56UccA4H51%0Jz|O276}`)+5ewFPF^O0E#C zXan`P78U82`+7Y!WvQeU?^rz^c_I1c8GQwyYw6P8&h)h#X#4O_EeGSwe=$Q zZ$_iX2(mOpA>gK#!?pKm51SWv8vV>4wfSEsK)yeGS`k~Hy3EsT?g8@LXFqeAdRgrJ z1^l!+=XT_zIWbE;>x*!vn;^uyb$;??J5;sV9)4{i+04DXz0^4?&|C~v-^>c~qgqN{ z-hc!Fr4Er$+<77e`fZ7ylI+11w=J8|vx%P|BS5!!kwJC%&AE9f4f5QQz8bbgpB@^# zHx{Z8pwFKxrg^q>6adYItd3BfS)6x~cRhK^ex!d$^x5$!~t1vOHOKU$j)>Ic6P_G3skyRyOMw}5euhWyNd<2=e2x% z20yc?afo%-dgU-ybTOr)al!)0vgo%pMyJTI)PUHk#8(>PB3>FF$uKTT9@EFn?O?q6 zROUhVjdtebE9=jPKQ1plv%ZC}Y@d5{=UH$fLi+cRP45F%>G?%^Lcwq;F6yy;45T9p z$4(2E^+_aqG2I%jxImIz`-QNz($ua(LW4K8VsDjl`$}sF=_w1tc}U~ zk3Lu!7*UQG_x{nx7=8b9#G_9%^gr&{2_G%%XJjtcfAxNFKNtJI$~ZuD8-|RI ztdbJ?u4Cd{>-2dRg5cd~F7Xh~3mJI#?7gsM)e~IUR>miCR|EcDA&hWP`-p&%w4b?Om zWZgV%8HBibxp|*U;xjNXh+i#f|3N0I>F96k zVkqYbKrc0#G)aEmmxAJd8|N=g|3m5DLG`?BJ!RbhXh?6#|9M#d0RHF3e+B&8m`49I zCZ8a$&_9p)Pfh;>`ezcN+O}S9Eu9( zuMmd+E5tw7{wsurrz3hHEdP)u$@h;D{<-cS{l$6yJp6xRhQD*#-)hmUCW$Z3^WSVM ziGSwo{~QBD8be7=M%N$nU>P?|cV-@SVxPLw{x;8m;@&|x4#hz~orxS~ZLZtrml6Sq zw-9obvRZ=!v+h{4ZhS*blKAJWAD@GIP`9I=M=M!b^ULX3m1h!zul!u4a)RuA({@C5 zHV+%&xs?hs7?}5nrT@d_oiSUy1&6cz_y5@Q53(N*F_*CaBTh7;X)8=pY^RgH?@s@h-e_Va{sWzVBkunnvC?J_h^2Gw9=I&E zObE3O^p9k?3~!G#1)NbXw&}%HzAV7XWcs%YB(09OxwU0vZr(Xln&@`zvu_9z^{I3P z1?rDUuqJazTS;#PdI{c}BsFXXf+{V#MulAGq_L!pJu5!{+qKl3!E#z{^MTqe*4fsl zJ7cs17xCCEbItE=W^-j^o#%38^m6RfpXBt0Ww!j*tz*V>nXl`ctuk|lE?LJwNy5Va zE%q>J0IBBBANRr1`f)Q=Z{B_QLSys-{%dTkT5YC6-{%=$uCW=RI&&({IcAI92o2mY zYxvRh(|^l?3{m%{HT6&UBxr3Y#g{r|>S& zUjN1^_wRW**B75v^l3wY+^-~w`X?nye7~0fTb3`%0t7){}u_xy9MqV*F)pQ z4#&io&a+GV)1^9#l2UH(0n$9rMX7)#f_Ou!!U+f#bPnnQ2$B0eST z1Ce28@O!{~8`J+`KBg3!E^2&2eG9DVc=6Qn>9i)#;=leFO6F$!Vf#|+KS__=1FTQA zY_kf3s$sohznA9l-!G}Lu;h%fFV?Nbh$ zt{3dH0rL%mr^3}uqFxsDGd#=A&O+b8DgjMnWv6{2&#`7q-$G|An*wLboPa5rbpPR@ z*^=!}mlo`4>B-j$_pO%I2}&H>l!vZfr$8E##R!;iHq!wp+dK zrHs?WPi#V{!f-nXUsF9ygW%T~&`R1ID1#MwSzX{_-nBFf^E6%1tG<-Q`~27|FUx-t zPssN`Lg?}+XtE0J4|=Bun19$hU%XG_xLbi3peS*_B&}k2r_KneYj=f(q8@yj=g=6jKa+MS`^Si2nd{Mcn_)5 zlYQLMjorlh_=iM$-aVI?hbvH#m_8WfP+NkuBr&q1L$t~AqOBoL^QE$_xEhXcGI=h4 z@RgD6QrTr?Q6WY$9k+Dnz!A2y1y1u!NhoUhpsmZo8NMtv+i&Wfx96jXKhFMbR-9`} z)L6JvoUkBhr=};W&t7lv+*r6Dk4gBRaif!wZK%JeY|ACM&T*=!X_#9KjQpf6dyicy z7qHl5B&Ch!oeI}wQ6mVCScN$jg$GQxn#NP;FAS_n_s(BC>{7u0_${r-`oZZzT|c1w zerH~9aZkrkaMh5ZskylfskHy)#i*yYbhqR~`7TmQgS(LB zx3t|(d-L|xMracE0nN1VUBPOKi7N;Htf3Nu$8lbXCClNd*=2Je zb{h(b>#{cqo0M!GT3W5?`CybI3A%d*YlFI))LPlv(se4(l{W+xE9iepRQOkQ@vZ`& zkr^j4i$g@3$smxBTFBd>q>VtryF@MR*z>%tj)gqNc|DM!`cwWaLQ4Y^N9~&9R&d%m z4B6%5d;=oY9qtY5{c#k-qgq4j+EV-TSveGw{J6xRI@@P|X)wnMpiJnn&=7sM78iOf zf!TZKGa_}f`y%6IP!k*9YxzMEi8jAx83a*X_hOsrfCchXX z3yhX(W^T_+1dW)!d!=&w{*b}V$ky8)$#QnyE^ zBgrN$rqyh7hk!SyS^$|A?0qtKms;zk44C-i$u*lebQeH6O`saezX-)?{XgtXQ@GpA zl8p1P^R(;fma^xMAMda$)iQ)8Y+Vo`^5e06=24L5#7WY4DO5*$ zZym|~p5M*fa#iy8@Oc38_Ijddf6#U!zq$aNu3iEUpD72o{NCsXQq`NSTlsJ++dSC0 zS@xT0w~yH0G$etm`;^h|{8eYBKlI+8p12QiZYYxrEAIc&9J4$QW+xKAia&(4&4NAq z%8P(k9?3X^0@arD%}>Nj+^OHyBya2KS%rCMmn#oQc#)PFv-TdWxu!!v$OKlPy5;N`72nj z(|06ISZ&ElN`i`A-q>^f#XKq*#iG$aJsY!M@PlyqL}L)O(_x8HiYzZK!?bPyGG|nr zC7`YW@^eDoA7C>)Qg#}k*Xj?Nfbz1gqrNzVg>&a)1Gx5un;@p|q1gw>yovhvQeWtg| zH;qESFPPnPX{}bXTm2M<(-bw{#-V2;bahbgI3Y;(AnDC&vVnzw1S``+;$zPFVrH&o z$Kt1Vdu8_Ts=K&XbTk9@>#X|lQ}b>u1AMhyOqjwQ{fob8w)yd>wxvmk1u0Rz%sbkW z82HrUHx#7q@>g}N$5Vse#kb#lb5;>2xp<AYh@LqEsJ%jn5%-Z)kiV`Y0lnsIHdg+ZCbiv_QdcER(MGkSp5ij) zVs5kBJSk+2zqA|(mz9s9LT7$wuFc1}+@dSH(yV9!-d9rX@3Yr|Ly*bvC8Innu2Lq1zJiq1*Eezd`FB>QS+6LYLmIq_MVqVs+q5cwduqwm zr!=B1mI3?bCa0N&(Dd8=@@nM{KT>%47{2X*kmKZZ=bf+8&{%fw;ZNr;V|vG})8nCZ zLk)#zsg0e-`@?QZ(3cLHkPy4+6J~tR0TpT@z(zko5ws-#Ld<9X;OKg!^Zjj^Uio^4 z+!O(=&^i25l_Tqd1+_B6yw8ltu#)Y3ovmek(%61*?geJ{8r?N6fkZd)~had zxLJ2%u$XEw`V!=K(OOAr!PA+;TY1sYseDVvwHHF#G~*@e^D)POJ<(l~2^9B`K&TDA zS9G<<`{ggYTMCA8^y`j7s0V`|QU-4UV+_f1DAbDEfen@f->Ah~a&c|%vPo&SDOb}JQ?7xX*D%P3FZ<$ZVJ42$Lci+-hb+PHaRLRWohb6Um zGVv_6wC;yis8RA7A!Sc;eQYO#kC9@M{)Ma8d9qRS7hu%l{X+w9PMSLgNyo`W-%F7f z0yOq!-RT)_ZQX?8#~7g%{&z`Sm%r=B=D(+!)8zo%Gy;cN?)Tc8-_)z95+xg$2h1pB z1!YS}AeCa8^=J9NJgh#{JGTza$wJ&X-o2@`bZft`gD$uG3G%42viia2f)2()kkYlNhB(qN>6}DpT(YY3#<=}rcJXJ0)mW<8jX?Wq_}Qlr z%n2XO{C*{t9OHwSjiYv=h5@>eIhgZl5}R+G2}|PXRF1jJPL5ypOV=gVh1=$?>&C9m z`p&DLqp!{?3I{oijoxuAtH^$MvWcBJLAVq-dItbw5B~aEP>^dMeEo1t%6ieQ3zRd{ zK2{}kR60;;P#xYIUX$G)j~X_e5Br+z>6 zom*i^U?h~!_tN8^p3;!gu`)1LwwoUdVP@w|H|)ILriCMcE7RXZYM*%ho|yfvA_G35 zNm-8~&$-yi3C*rfZ4+$YN--%|-US7n4zgT>r;0WF@OY;Vb_?RzeM9uC&8;{3zi>=` z=?q8gWQ*}H7^G241nQ=FFNy=AWpR3?R8;o&&B5nk*q3k!ZBhv-&&`{;s}l_t5X+dD zTSHgzMQiZJ7vTZnVgH-WM2+)7=7nxG;bm<`JXu&k7Gx-y;}D6UZ_rT}na2ff;Oa=5 zp$9KgiyPzSuXN6{Oh|Ge<7q=NtNPEQNjbcHS~c?s;-wudp~k^W-=vZ3{q+b`B$r&@ z%;d9AA0iAf^+z$%p(4p*o1gkEb&mm0`taoUIbPf?FW9DL#efF9E6U9b1;`O#g_a(Fe}4X*FpV|;UG8GXVMpn`nm%fK<|nf zFPZunZuQRCrgDSoDhb5zsm?y%bzlP#lXeMHCn*={@Y$F|mLQ27bWfD^t;9*C@WHQw z*h`t?8c^W72TWtit@J&g@W!Yt1eulXlnghk-Ci}V7|@5Dd#tlx?!F+pHmCf=NL%&yca?XUk>uq#>NRBkhmx`^E&jo+(999YC{}81giO8f5!v1B-&I? z#oQMUW#zYtF|LfG_VBHZjCW@Ml;3-Vb2#vYmfnskK=N|VI(Upu-p(~BZ!8XZhiJd| z@#(?D8+s1P&-zeT955Lfenaa@vFK5{eYWM86e^rPhVz7ae@o`wsIEMSJ~Lo@&$k%y zM$T&8;MOa*Ax_}1>q_)JJahD{mrO&^IF4D32Jyp2{F(uHpu1y!>u-m4r+(4T5!e}a z5cOEU+KA&wNq#!3<$Ozzy0U49uONCV@PXXk%09WGKKl!3ONSC?djrZgC?gTSYp$E1 zY^7DrRC?fpdg?Pxa=BNWBcH+KHS<$F3%`@fNz`ako*Div!6%72KS&yNrK5p8Xna*3 zs~oST_4>DJ>LUssLT(gdU$JnA=~#95QJFbNq561KTm+MnBWzp9?p%>C;EKhn{(D;v zK586%(%*H8V<&FoO*MH7c99pfhdOM);xE4O+j7Z$+mi&lQGt87l6MDYpXY~phE@C|tF zK-OC>Q)!kYv|=Q(*cGNl66u@grF>F1W@(d0`nx>6+8*@b^>}4d__GVvVIN0FC<;Yymdsf+pfz zHUf56Ol5eMammbxC_QNewy|zz>oKO)n9WpsKx2#SbqjBA7zo)hqIVZ^MYl%Yh5PtN9nV zZG*`Ao$R0+{ShL`^O}(L@SHjW1~vK0SXu2btk5{|n-Zu~XlbYvo#%19!&96fSjz@C zN)(xMl{$2NwlhF=9r+xGQg509$&wSi{(&bA*1mYOS7p%!47s~7kZ!A2DN%WpM&~{L zPD?xN5hbVLD)to)-cyiSjTdegh%|n>Jj@stl^?X-Fs1$_d=EdD9a~?PnDyCfm>Ou{ z{MxIK*4(m_R$r#FN_KArl<~Bq68Wt-o6K(H+gAG=Y_>83Wva{nb-y_G%n-b&xO*gZ z@WNy)ZwEK4o!^gwSl<}{3Vl5pv40#!J1QrS_atwtZW}7D*B=+!AJR|7ILL(P(0;2g zKYQ~?RiE5uHt;=o<6)O^wYkKd6z^s!L+w#59+|mvQ;c#BRUlOJc}n{_4O zP~uloN51FkJKUQUmUXb^FnYH>@b%>8f_4d#nl33_C3?9#(c=xfIBa(=_1RwmIX9?V zVYG_F7to5C=0d1`(KRITGCL1$tVlT##A*Hpr@sfncJVqtD0sF)L~>plEVvY;Jl+cH zMCc%8TeE1jU)%P5NQFu^w3|t{?R2Va1K=Ayt}!GvHN~zCO9R! z3ybbd-G$lWrfw!0COshLky!T2>%CVs&hc?}%8v;DFD^3O%rF|I_ooRD12xi(UwPL9 zg;n($R3-2u>kvOMCFyd(3-(ReYiqBzLS_TFe7Y=>k{;zjgj2ZhM(LHiLi$6!CK|Br z*5DpY`X$fg$~*_M{N{V36ScWU{eiXv+qcpCer#|t+loVry&ag)d>QY06Qm*ON&F7Y zwCi$Rh}Q&e?mVZG7ptOR`N>~IEb9&_op3_)3f&Ci6z_6o`F#2bAk4(@OiM&$MK+=au$F5!>O$9v-Dcz`G6$CIvI8|t(YH>QvU3xS#P9|Xcno7J`r z+Aiy8Tc8n}Q2dpr=D1c0eW+j`uCKTFm()VnZrKT>9(nE!EYwYKc`R?2Zi@H5hU7_F zPU8TbJocF-NHv?{Bj{+Myg-cwbl2o;Bq<&k0tq3yLY$zff`eNE&bH;TO7Y9~?}&$Z zLa&_@Em-Sx3@%XDaH%^^A81w8&m8~t!5ZbS_Bb6;PsFD~luY+`pekFc!k=ZRzsU+n z-5$RXTkB0MIHU_Y@W{y|9+kC7NMyQC4zQJESuiJiR#Oyoi+258Zq!9lP;y=k`Bhgx zQ_yY5@wW;KM`ACho@<)BgXVkN1yJa1eF*=%{mOiX$|KAW$`V#S*=jv#wR_5(=Cy+4V?sjng=mN?rmcE<}gX$Ox!%&$yh4yBPK? zgTJzu`R)4Gy#tCN<7f%_U3G0DJUdGc<}#(s;3g?pw@?F@Ca$UpcLzZoZM{?Iwh>6d z2R{KbIN=B7VvSQhDyu1e!2w@m!_>cw4Xk3{>^1po z1MR*OUT6$=J}JcD8lT&;;9-A71&YOWJ8x@9IJ~j*bSrrXCr;DzwGwAz$V62(uWUy| z1#)>c-m2=2ilKh8vN2S=7zUdMNpv&-Ll6p6-(GFcZQS00D}$<^D`8qPH6l$xfsLW_ zRc10_ESwx;^=+v{T&+QuFBIi}GWH)x z#QN#sP4r&6XhkY7^=plI*3P&|SW`5M1LI;8){j3BqYaKzchskAKEXMb=6Vw4&5&o{~MF#rqO*YOs z1)`$5sFaT$;z{=DtEOqKi1tS5X^s)({o)E{j)X^SzrQD2S!_=FbEhN0oAs|z*IKN7 zq}1YfwTy#1=FCH{hlmVOpEBsl>cVqS7JE(TLMaZxho6DA0s7%GR_O4onHJigT|5*! zvX^Ee!UaYaJ z2Q1|F+g7Dwz;&#Oxd{#@WsT?QV;!tRMe`f)s)LXbLCC4El}imlzHw4*dl35BA*83S zv-2X_Svjv8&zpP3>O9B;{WNc?QF+bLrrXcQU)l3n*@Mbo@cq^F)FHK8pY6*VLB`AFyK$Oj`ZLCKAK1sw-{C&VEw+;9dNaK6 z&0{o^Ck9ac*vkq;!OD1YI5ewDJyvy!djZ3?wwO& z>r$7W0?Rw7v6jK$?BG5$deH3P+Z~Qzrn4W2 zt|#)})j8sMJvSeS`Tru;Nd+lmXb!iJPgYGoP4aqQW%kg7<-=@asqb~?!%5WUZ-Lu& zA;71mjz^0nJ|0FY;=4&s8RJ$G9sv(tF^}>b`ZPf^_CO@C1=Ak!OwXY~B@GE6{Xs3_ zNC~V&F*h^hVGVZFs6A{%<=k$niv9Gv2Gu)uc;Mu13~)7RiP-m=(1jj%Z#KXw$ABR_ z%W!R1sf(VUVQP2fOhi7Pvti{qqG;K?kn?0<9^)8!L)?vom4QU>B>u}MUo!bf@UF=?s41}ozE*0 z&W%FF{2(E3CvCqy)@W0F^uvC`JcF+w7a^AA23rADDDtr1;Rk6c-Ew|n$$X#ZpP={r zl|#DmCC5B-ZG~woyN7-)IFUueR~G0EKf924j!Y-{K%!YUxzu|036SBWfKI75CqD;C z!YiXf6W`0zxLu6f*Tq_`EbLzaj&ts`9qsPkW#fDOzq*&AIp&NnKX ztQn)+AT6<0ciha$PUYc{W-~>I`r%CPk^{yi+ygR~Sq+}MpK7=Y^z_og6;_qTlj?MJ zmmr_^L&Tvv)Ak((w+)o6!qgc*lh7w%3%ZsmS25yV4cV*xTx#(K!A75RuXy**Nx(1>` z_AxSIg+uy3@7A2Gx(L?aS4GaO=MuTKW(PB61< zhB=(fJGMM-v)Q31NiDf`gN?e}d&B8iH~59`-v$}Mb1E;^l~}#Df3r22T%+|m-s6k= z`J2xuaF&%-G!@0&#SKepx2CvG^4=;hnqyAHQ|A^YeqyD_nl6Id?e3e)Xr>pl8yCHG zD$C~^^X|MMH8qoz6*!3r-A+2rf(UHxP-!TBLi8qbuXnpwCVmN01IrCcp`$%#)+3Fs z%R`+gV7i9O1CUV38zPByrj7x@YR;T7W1c1GH}z)LJh^Djz))Ybj9f64V2>Q@@NTah zR(Sfy8W3cBmymWoU)dFqB}R4cZfAr;Q9DiK>>~N{gy1JWZ66}V_U32AWo&1(%`rf;pl-Vo8H*7LiBtIl0f)Kmb3Lb( zA7qMZjk>Hp2`I0dE=`1mKV`gM*mnO!+OE!L9ds|)tbev0{}DvsvWitjxw|k<3OQ%j zPQNzu$$$%#ymgrqiV~QARxji>kuN{dxzON9rpA)7OG{hO*%0PmcUa!j;Q|((3VN|J z6q=8yI~iSs6>U0hVwE|YNqe9b8XI`frh955r_O!k;*HUAX6RaMZLiN4koTT8VpgK6 zb=yr}*r)9+bCeHe3q{jLEY5Ni5jF3Rb+gk{+bH}ma*B|${6kq@GbO5Mke3bATnEd^FO@nszYDzo5}j+7J<)h| zwW0ATD}R*f-lj#s)=UzrM(e5WCdmgVYg0Y{Xxg@9#7uj5Y&qSVKZa|T+uAWMeK7C$ z&q3^lT(mx#{Nbe7x;7oY|5UPcgNL~=nsHR*NuZiqY$(daN6+f9vLn8S}B5-~XP z)7mxpG2vhH7@Mq!&U(%yYXgA>$}lX;jQz_@v}qLR#=7@{oS@kAF4XM-564!k4|Epo zStNY5xhk6&n|h88Y9!78l9p3eoMhV236O}uqsARN;3I@LdnJa~a0=HgGvcth8g#WD zS(pK91ZPj&5z}c@@_Osv(7tra zY(V%lY7#0~wwL+G`uSAnIyl-Q4#f%&j?9K%8`W(t@*2I!nfckNSFSIKQL&0bC#&jJ z(A@+-THc^C*|pnUAppOccbAxN0ehP=MY07bU>=%-0nMNnv|6i;ViF<-_+btd&cY{enrgj&vHhz!h0~Up9 z3&X0F4}A2yoJ%}D&^VSvX-EiG*L{i`(VOl5>B0YT3@R-C{XRO4K5Id!;RDwxIx|ZJ zV1%-pos>ViF!>66Sn*MtFG%f7HTlW$`os6{9yHz(%B%?bC6kqdHw!V$7??1F&nE^Z z8fm;Ht|z>U$gH`!6$QsHPeSb5x=vjUs@0QsmXezBDLU`QxUX{x2gaka`t6Bq*L$Na z>w5oK<}_TPXfJIH6OO}Lx_u@|rOtv}`yqbYAr}DDyR~1s8by!ara2ph_()>UQnhYT zo*hLOsMv6TPC1P(a-NivpB7FGvi=#F`n+j;lK&e?hUQy6F2xH?UMZ8UtBp|dLuIbl zi6JDq7?oNniCEs_#W?{&qL-`P5jwu5RY4~OL@bLe^csyh7CyEOBP==O%#cj4%VP)N zdT+_s7x_k0MH+EM9M-SRlBn*B$Ka~=q^*fkec`I&QID42$SY<)+o57UXGOf!n+Wnf z-}OT0q$!wCE6C!hulYM2E;j)d3p2`1jw%w; zGfGa@+oyW6#z>@J*F{`@j|pYfRJ-3kRU=YUw<^Mt*hm^`R$YN`~vLn_x~U_g#Dhk-DkrHW=;tGi^9>1Kx2g`hd;y!Itaj{aG~D z$9?{QgSnudd?$E?^pF%1SV>#7LC}6%rxKH8fi?;TK_{!SL~oWCIp#c}T*4G$8ja(@ zfwzg5a|J|*0i2yU?k4pjfpspML?4#w*&~|$=TrGMQFuI(ZgEnVA1@A!h!yb>f$PyM zchu8?mAMPnagyYe@?&TN_2qI5zA1-@)#Revn_<_^tyu?SiTkX_S%#zHXXnqOIh!HA zZ`Roas-NbyMrKEB{29&snbpCzJcun5-wx>u?r^~oHnQh}UhPC*-= z#^^Xu2*=8Of_+4uQbX*AXAfk|Lh{f_+KC1FKP>6LRd?y_%ga@UZS05zT^_K0Rq8%3 zh!uVALMc(+=PsW9_U8QY1iu=mso|?gr8+MIH_RxyZ`bz5Un7!_U(3FVOz_Y7aP34< zoj+zWpRC{Jdr0a7qO@!r@KGSc0dgnpO*+F_3#X}tor_2FJD!yHXaAE`#b36Exmnp|ApT5y_f1d+N&;9c2fET8s9 zHBG#j>J4k#%XX2ks@}w)@ZqV>&&JlRYP~T=WkOML;In}G*&-pW&~$d_kz>%&HPx;E9xk1G*i-i($nQ;( znS2{(yIyb1>N$uJ`_9$#<<*^b=;UQ}Z}abJx7*EK%_0Afy*Ces^8Ne&LsBG_t&*ih ziBJkz#_}!+*^OlwYqFDN$ko!>vj0^@a!O z+TrKcb7#x~zkzKl?CNv{wai`}`xaQDd%khURwrBdeq;1yW+>*=#d~eCB6QHd<22SW zfb1-@kX}jsMash!7wY%~f#th<7w;0o5=5D_BBPfL^zhJcN|m65K3=Ya#a z$9{NOd_5=g;(hTL%s!x042SpMEnj|kOY6%EGM;9+cYLrQUg2S}7U;}u;8>RX=A8V! zE81o}cNjNAbb zrQDXo=W8Ux*#oqSmQAL9e32Q6h0UViiKLc`UXZct!=c8F4$qBZA@fK8D9p*}q?=Js@f`QN##2=c7tq zzM75+>l?ItiMngH58l%Qv4065nJ6fg-d|{#a+TvZ!=g=wRM7cv?{ARtK~$%7QoL$OnczZal z!{-4oMQ5bp9Z{<#t?-)R0!=4HIqX*c%rl?}>K^5o^)NY)jx|w+Wy~EjB6*Wd*({ev5 zrJ~^{jP!MHbN$22XH&E+WI}wp9{h99upzKTt|081kg?sAu&sZ|zC}du>+4p4MK1Ko z(9&cA$9YHZc2;Q!nQsQ#>L{(~^h1RkLZfS*V5Ola*rd;6HAvGf0Zb$3Pp-NMB*;`u znXT6%6W|r^UfRaCL!qnYlfFW)^QvRUh*hC(-N<-gY0T5oI*EtBN3>m5N7;_}`FIs4 z0&i=lTKlb;qXb_)!Z&x#+Hg0u`pn24>*Hb<%C^67zE!_{UrBM1-*>cHYP%eF)VMo| z2Xw{p^>FY`I}mtsYGp$dO8s_U>u%l3xb(4)lC(7Ynl!Nl$Sx1kj#iTu$%Ul?d2!); z@43@Aw`x^WLJKDDO3(O5LH&m=VS0gVJQXsLwxX-^@YW$0Il0BQm&?j9HG^}|Wwgku z&b6jum2;Z5ARgorbVSHJf;%P#9J;@2=Xo2=87xQr^697T-XQ^hi1n!r07ATdfdt5M zm+4A4r{b%bJ=&UG^1I|j(lin#5_C5`2nB{e3faV1EHZq!_P%5wX%OLSYzL_KE3{_5 z_F4}BWu$Fo7b0_3O*)U(lh}@&S-M{loREr>Z-JI?Dfo+23 z!+`#-y705(P>uRWzuvbW{p4tUj@_{!8eKH79!?G2Q0E#X>JJfP*}yrz>OvoFPNN*n z>!ZTlmxuFf@#QhO1KOZJW#;U>zsRFsWIQ!Ms7`C6ER*(ELKg%w&YqVt{3v~2_xjyZ zhXD`x{!dls@hYot$L{&}mu^2#nQM;MPP#M*$ZCaxuWl+|AId_JA^t(?9cSrW`!Xd< z?Mun~$j{iNgo{Rd(kit531G)Nyx|U-SpstW*T2?2n2VSwKW^>_uS$`~uUZH~%Jn_v z-3uHep6&jFvC@cJj&o+}r|0v{gC@@)W5-orni%>k=Cbuk|7CiSh=fw%u z%dZx|M*Faf@$_QNYdckrh}W)zS@%8~4c)E_JVJh8tM>OjF#T=ovDJP~v8Q2K`|PVb zuL@3VE)Ojgj+axb^mUmH|B%_v)BjWKCeHO}RAFp}Qe2pE!R6CyGf^Ev*U$EWYHh`% zGUGYX$w5u$NLX@tE4U_S8w2iQQ`i?+Y2mneoJK8cKE_DjoRa^{t+1AR`3(EE=S0FU zGpXj*XF_RGw>Ob;!02U8ZcGx6`51>VMRTtSo>Js?6>OnWp(EK?0K;YMuq@jo|!|UIEs$PZO6}XC>YILwk@#&#?QmNP} ztH48(GYs9ciV)SMt-X-}4qvu!4Vv;x`!yX7XnqZm?W1C!=<`2fVz<*9V*$nK=B!)% zQB!B~%4zp|uyAL8AT#3r1@*K6nw**x(vCmT*G zd-*Cy3hv{z?#@6Q-0}V)im-4~Ax~}Ge5v%O-bV9gNM08f?x^;seq7gQ&&m`u@L95# z&-eEy`=pBoKxac!Z^Hg)zh+;`%HmI%y8W)OMfotn6(*~RB-`M^>f_xXkIVN(z~YA!x* zA((5D`1H534&`jtr{k)Wzkj&A&fNbtAmrD5l+?v=*I72Eq(>*a^6YNElVssz5~v3 zc5BW&*|m(5e62t!u)VT2fl^A&hhII1Fj2 zC6>glC9hE8?V`^7UU=bF!v2LY&i4c2y>(%1MOq-nj)4O?90-B@Rk1wWq`@sm+GjV@ zKqWcws;kk>XZn9#1nY^^$<*3W3_~3`6<(1+M@_Tl|H^Sp9|!BpPoN^Co2zR(kBkJb(pG>Ii} z=R?qw{YC@_*kcPwcU}vpJJ4JAA-ZPq@x1KISPxaMRhJ`{i5iuT1O1%dh7GU|yzjH* z!mJM<_ztivx=Yo&7l4EM5TS7*#u-}D1h}^F_wjaOLiTkz#@gOpJ|XP|Cf3OTQ%8R0 zFCs-I5QpKs2sd}MVueSk-rgmk!Jpugx-RoJD}Ck>&7#jutzE}gHR z;!X|US&b{T?KP|*lp@7+EfIfO@*M)g93C;SUdzfj!;z=GG(93S5Qj|+QDE`Hznzr{ zq>Mxb#Dzni;XQiG1zj?{QsH`ojk`{`3QruuaW!$Tqvl>Mpcx-}b&bMP{3PLpEwGbB zhxO@Pk2-ECwin`sdU6VK-Xy92($s#V}ug zV%8;pO z;#>}P7LHl;kW-0ufi+3Li?OuDv~Lv)lwSr>8ehbH1a%EwURP1O&EaNy3>2P{>KyBy zLq8F8Gjc2gk#t9|ytuRdz66fxTi&&aLP2VKHwykM= zh157Zm|M@yND;@ZF-wQNVgeii%2M`Q0#1vN@7|uGMqrNLsS9y86adq+-_L_HV#_<4 zh}*h`2DUd(8Tg&nIuGRB-*vJ8&u^fHZLaW~W^pS0pXzcgc`$Beh*{=Qw%8td+LJ9) zKD&AeFoG|{%K=ujWyyzF6ny9Vl$3EQJm)l;xy}hErj9hOE3!PgdNZ%*UqnXOlS!Rn zJ%>k|foX|Ho#fO+Uc;|iKy7T@5ANT}>MH|V9hKnKeOyvv_cnxqX>z6T=#hGr&`9Uy z3XaWefp+MNmQ;;X<8wI_C$l%rvc52vc)xVax-{yC&u4!P);DH@c1jseSASF3#`B)M z-BU+spM6#-TL$Gh$*~o*R^4@!TYyt7zriEz`iF;-Cg$T8Mf%eQ5y22;ocm+tBA}MC z8-_2sSmy{I{Ij!fCuOHK0S|mH^*!Vav0`hdw{jA|IPA}1!fFBOdvnlD!=UasK@woS zQLP2yJLY=jP`kg`R+R)iLx5Fe!Y`fBnx*_k0vSnJpLB)xkupeMbzV*QxJB*7^qwCj^huOsAg0oYxCN zuXWZY^3Qp&=ET{VuB9>(oQH;q*hcUT(+i?^rcOrC*?L-wo|NFSpKh$?xAX7il0N?| zCK-6h2Lk+Pq2K$_AM+^FJZd^Aw!E@lTQ;Ln)}*zG_oJ2}fQ0zKsdzRBTdskLD!pPx zl*pvmWdnP)6v4)8>E463GZhsEci=sTC$z!krAf3aSF+?)PA$x+s&xVM zns^fIjzduDT_>seJErLQGg7vb>ePuGR_wUoDQDdvT7?V7i7ugAEXr-3ox#k4&Naw% zriEJ^R$c#8v%K3bmeZmkLB`i_9VC=wr_(ce_vwj{4=1rr+p9(u#u-EP&Ts#Z7qIDe zR!1cM42S!ehCoLgdMJFIZ^v_VO*Le}coRMH)TV%0^V_9#Kwy0fgQN8w5{oPS+K(RmC;H!Cv2H}?3fHe z>D#{<7^5ur`CC}Px!Mc-gT7@hk%^$=JlX4d;hB*V|0|#dS^c!aGy&m+o0KJw*T6K8 z%~k>b?mj;#1)8_;!%gqk93CEC@tl=hf1-A_$ie8tZaI;j(yAXC%tydhHV_H8iB47? zX8=TkXxT9M^Y!tM2llt0vPdjNZO$NEnm53Vxh#oLJwE$(TVKj` z+CFXCW`0q#-gfup6v{VBgKO~3+mPqZ6Q}66d07H> zC!d}Do~og#^4~wH|M;SZE^s;jFaP1y4M4#yqi-S{`Oj1SUoHrxiZg>YN)=G|)u?~} z>5uyKzNXOb;w$FkzU1`nF{R%&r_{Iex$mX zbXiDY3~#wg6xW>wE4sf~`u;`KEvYPE$IhTYJM{EhEp{hOI#o{XU49T}UTPBy>Wl#` zUIIW|_QMN5{#^j^=j~@9S$?~~@{yS@qy{zt5)i^&JGuejK8ftQ`b?E)9<9U%Rm}i4 zqaRaM*Z(KiHl{34c#&ZiP7vj}zhgE9U~?`||Agz&j0b~ic=Rj*;)4p-0pEg#dJ-+x zgBi{VNn~>Wo21}BhQPos za2t@{Edyur;>5_RxPJ z1pWKGC^|pq|HAGV!Jea-1WDlcgu=x7SS%OpB-Dq>t` zkltHukJrAk^fv&-0e~aV@;`{X&KKPcIqZ?u0rM>ZRbZhwjx7KLka*|LT!!BUg2xqA zJeqf6OtYQ+dCFE?`p*0afEJ{+0}4(3MDXJH|6~wfhd}T)t$;Mmmg(xFo5*P+GxsLw z!#~?FHD?(2X$$Z(`_7Yf*Q0=D z@?VI(|9&wB^-AR$XMxt+8_?chyOjH{n|@Beo|vNHuov)lR@~Gl)vFiKG1`YK+O&a< z#@&kjyNUsm4uz9|wyO-NA$>~{Ompv(#8G}SeXYSCQjDY=N55~y{fi39KQ`5WylI5N zS%!kA?iyFMinZ()lC}Zu*kk9RoOc0_U>?;6;#w(|+)%G-7vS`o?=^qYHyM{Q-Kd+2 zjo%MzP&%7*$z~o7b*ljV#R&~3Mw&nPpN;gH-$vLFValUT3@wEB^M)f?{5y-?fpnK1>a|G0<0r4#>k zn^_W!jw;r{VJ!RG#f6;ia(jc1*Fvb9QHu!8XJ=n8rTeUR7j~-jO5T6@;~k0OR5=bn z7>!@FnBRreeSbKugmVQQ&eM($xlK{8)vAeKKU}!ce5u51RxWxhw?0OEWwMc#yaNmZ+Rdcbr@9Lc@%A^Pl!(Day32H)*0h_rS`!HJA=t z>1ILwvrRvXIv_2Yx=jG!v-V#Q>fxA?#Z;bJyh~fCO1<+0vneL<4Z?Y18W3hXFffr2 zGd`P6fEFThN^IS!(SFFx?6tq8Z6N6u3Uy$Ke|m z&Wd2rW4f3wKEK%`Rtx@gbwD;-9z+A=Z_fojs%O=a^=j7lpxZ$IL%sgJ@12uLqNc9e z^4lnjlFbQ#U#eAot9Imq&^k5um^T-*!Yk+M2J-WkJaTzv*ct8DE#*9J$;4Y%Ny|ue z=3N}~59y9qtOj~^gGZ(fiR-lkt)DHfIsPS2(;+ZA`oASv&?pU{?ce%C?3Q4wASbLQo?KnHQNa6+pQQY?Yy` z{DC>djT!Vf91+m@hAqZZ?K%teR|gY`c8pI{d!vq+$&w&QyUiLYsO8`7avm#r$Lrpq zT))}UoNNoj7I)H%7?ydQdBj*=Pa)$c7~P}TZp4?51T7@00W|QJ+*ilj1gSS^&qrj% zG4ezFH38Imh4&xJ=W8>6(`zL8+liyL;B~JWW+(}Fgm#a}y}gI2x`1F$?s&i5zed$d zKsvkQgkV=9!fR!?dQ$L|KY2zXd3x&u&r65+F#yhnuLTTZq%#+6%ee^)^-8jv`2vXc zbL#-f@shkzv63vFKhaXw<9BSiMsj+|-WQoie_cAK1#}EUu4G=i7wB)*i>eLWVV65@ zobQ2<69@qM6L-8E#`>B#hRcCzDXtp;z0;wM@JunO7vInO{T@sBKTQ_n23^+U_O}TKpD3W`dhP+(TbbQ)r6kNKi{ku>;PCy`NA3!BZ9etl_bibkB zTMf`a>l^SH){Y>*5l!;MWxK0(e(PhHdffzLe#CD*>tM*`u}X`|4wy*_l#cOe9z-ux zz0|xJxOGMZDLuBj5yI5jbTZ?>o3hfyX(HWh_jOhnVhKjF~KfA@_LLCUEYer%l%74{5 z0};>0gL%0$IkJdpvv>ODWu<{_E*j;F%+Ve{=Y%V1?O;d-m=5Qi#!7taP!1!vhP+^@ z`+Fm)04R0IbJn+Tq+Ju%bWd_m9uR`hn+_*=Q$!&TMO-+OZs@GghhLQ_GLAg~6yjjC zMH5Ghz@}C}jbbG|eGl6YB75mq3UmCuvH%2qqstw^$>xC*FWsCXEC8UP9PMyufpi?r zlQh>t-H0VUuv7}7P6#T(W|X+R-AXd({?vf+1?=5#UYhlrxr7=yq5u+DB7f;qd z^}EmgEQQ+-+Af-W(`Hj*(U3I^?YOH2(sk9d2t*u>BK-^>S^FIy>vhKD zTl29tm=-{~Y}vdv{9wg8novIQL0ci!YQ78en;o5SH75u2CIS@Os2_QeVbrfJM$Y>g z62B^;4?0yO6rwrvLjSx_Y_I}@K03Ll)}me|OX6gV{LWlLH;RQj(8i`qVew)X29f60 zG9cFU;w@~o&c^l&SJ%IIbxLqOQxLN5Y%ZN<&4hcHd9}{RQa@3vLA(4mfbv0?FjX1! zDeuI(8T2>dlX1fPSDy(gbAX%}p%LUA!A7x9|Fb$8bnJ;{`QwY;i+B)eI`=zaatG*x z_)5W63tMEF4{z81h{1Ulrq?$N`_4P+JHjZO0$jYXi+wP4cODA5gpDW1^I-S zTGJk=s7cM}sAO$Vh960U%RWdgi!L5sbj% z9xX=L0>KGsy#b$woYTZ!*Dkk{oJB&)gzqSq|74E}wFiJGq*|brDZONptH^b+)TjXG zsOCScraD>PpkS#ENtK0tb|T8%TdBX&ZcavreIGn35y;*kfJno?SR#Kr(22#IfKlkD%1R4%e zwbg_jR|+~ZnmoBbcd{9AH?Dqrtfrj}xHWrx66Ngr>1pQUfmH7nQ}=Qs$k0)#pZNfg zgMFP6I%7kgp_;ro)otn;bhzyWgxKYZK4Z!XS7xoSWxf^1iu(eU3Oq=kO|!MFE9|d_ zas+4Z+y!)VG5BzEX~)r4bgVaPRHQuN2$3WdM4Dvu3;eGH z42+N)UZ~(i{WC}KgIfm~C0!-^K3`|i%?F#78p(m1v~zu_4+aA2aR5JOZ*AfmTQX-% z@n#xDE^lD=9Se8!I%MC5xQWpiHqVLURSjZ#Igmj(_U?y0b}Qe;hZBz~J(qT(Ei${Q z4@Whii$VK8?E?1&S<^4hHh|z>5y$=SV8HQ*c*KkBfzwCS8}T_-*ga`=ti;B+yC04B z37YNg=0z(E0Ds*B^qr-I2RFe(q2-igtw0j9f>%;aj|CV7N)EaQ?;6sD`Fi3#*UML^i8c z*Vh11Z9>s_m0y(ROUI;L$ZO0kEp2RRFAn zLpH){z5oZ~eg44xRNBC7daJ15fwaK1T-e=Hwy}!k zO+&Z<<~Vz#w@c=YSia+8xwYYZjfu_gpRA-)v%)h==7t!QK(C`YFJ;YZQH2Z%a}Fbm zDKWgJf@S{xKpyAJ{kv^}sH3lzxBzW7zvwCN#*2}~aZFzjzo%3_Hti0`e&gS_0_To3 z`od3_*nADBoI+Q&AX{1V9{n&23a~ScKsiq^nX?J&U#}+yRQAJ2YmDB{J{Xqw59m5n zz*bNhASx?>T28yr>p1)CTW?>TgXg+W2eV$PB!QKuN(U3j>t=E3f&JivdJnx`WS;!$ zXGqA^Hi1)&o~UDrb#h+|06LXBwgc@)pF68#f>4B+J7SviT#WSIje?C}?_b}mWahV9 z*(sF}Fus;0z)QYo!Isq(o#t9=SPu7(QM%Rlo#4(nT`7y{iVd1DoNM%GGJ+~TOi(Ke zW=<{?LX}wegWn1XC>6i#bCkNLq%2(G{K2R#C3zi(m=*+cad=q<%PC%wEO8nb`gEgf z%F5p$Y_V@3`t;fFy_*pg+Ok|wJvX&B8?*~%Ew<=e?vJd0{^ijKCUfv%GDnriO1>!CvRr@qra6sE=VN*W{>m>^ zI&tagLBTFiw)0qYb6`Vd^G45A?<>@!?%Q1p<31Zc%I)ToZnO8gJlg!emR4?9Zr-`A zox%Ib?dR797oFfhaiVE~`g7jfNVaILlCn{vk@A@~jw2AWWy-yuiSO~(7lPIi-$;Q^ z$U)tqI-vv{)u3O0rf`|8iwSSTtNO&2GjBUpG>sbGR1MnPAerC-8BZ03S}gjlBaG}r z4|bDNfP(}23_F|O%?1TU2b8v29$^G8b>uk3HH(Q<8H5y9$A$7rI;U;K0}(U(Cl&Pc za*JZ4#SFrNh8x^Evmxhou8|K>7dM9hw@m1J@IGCMe74>Y9w z**lCJy8)HFnNsnstu=UgSEFqP$)$Qb5d$N17MP<)a_uGtAOjz-4NTG)PCZx-)K{hh z*40_9MbKa4oXgifPK3}Y9?soxo2u_CeHDH5s$+m-N%M%Zl+qFaPb&d*F!91lmUFG) zn#p46eeDeV_uWv{tsgGSVLt?ItBf?0`wHx0%Q6^4OI?N=tB3IIY-|r7qxhK2hCODQ zVV?X^9i@C%N{F?3HCV1T)^iGTdMeQxjt4o+Wo1dX2`&Uq=>c@f&Is84lxfgv$S5E_ zuETlk$Wf~d+5ExX#Z1=l_xVh!B|^GUTNxnnDC&6&HXpkmuV)nIhJ7}g-Mo!@iW3GB z6=w-RHs3cN8!I)b0Q&7TzIC_Knylk?DGKirwF1NnlSyfSFE=wFcmbOmsUe7XW)O7` zafS7kUB1IAr;_N49KVw~l?>`7m+w{IN{nlR6)l|t*^liw5`oiq&UpK#GdL29n15fm(K#8JGgr-PrW%OKeCUt_ z3V-O`NYCoEQKVw7LaDti27M(e6XJ{qW?iQT0+iC5wKO>=N%wqc& zbt1{FM1J^<1L!t4Znxe{@lBG}gZjBx=ppxtr0|j~`{_s26g61$ zo5bLXr8EQF<(IzcwIy%8FqtK9nMq$i;qdIKE3dKcxrEO#Hc%Eb=2NtVE?;wRr z^If=W5xwiyoZUK17vu`~gDwY=uh)dL_KXmpCu;WOW<~t^M)t9Auz;aJw8IxvbDZwX z<7G$zKABCy*se03d3d-w_aM)ij(4QwIbd9GJnGX~Xrxy&8xHuTA>LQTFZtqq#Y|fs z{>}`0Nj^sSH&HI9RcOZM&g*AXO=VX(pW~NreuVa(!V|7k;_YTkSETi+>WLpI(L>wW zcnQW|#dj%Mj6ru&43vQo!`~TW!P!}og zkpkm-!d;WEb@uM&9Uk2Zc^(-hdWKz98@XfFrc;&kMwlp%AyE5`Sa}E6=5o8`*0~o8 zeWM2(4NBzaO=p+~B|8|?i*N}M&D>_O6+X=_L}&^zDE6MiP>wB$W+djeCwULE;Wka# zrIh$FB&yJi#%M70q`R)PfjmML{Jp+X3_UdG&21tNaa3QNqD%)dq&~wiAsdEe6zm6U zFNCoBir(n`t7bWi4;FC@k-3)(^FwOwVa(CM~X!b8nCg#U#-X0gEnQc}FNNd}$Hob+riGEW8JmE-lGg9-6Ot?^*0HLXiqq5xsBM z??2=8?RBJuRYgs)5v$9axR!Q+hBClBs=LrETm-(8YXlbRP=}9~%$srEX=6TG>&Iim$-H&hU z9lk{(>aCv;2EEPPRZN?a;8KN}c^pC69p$9HM?R%k2sdNImsfGmL^g15cf5G{0`(UJ!};s*bD>5mEx_7v<>S zjx3#eP{$d|vU!+lo5D##may_nHQ#joq3i&Qqg<%%7!{SlGXRqAHrF0a>(`WqMK^M- zUeRqP6&D22u92=}tD{)NzPkogs9WPEiC;V&Rn7RlSak`8>(UFpl$GQkiZoxFPZee` za^w*8*1pVsTFJ^z(_H9Nsb`vWX(e;O1E!$$zM*>A&0=Q>4aUlJvSEHiq(lxAFL6-7 zXGXe2nh)_R#)qvGuR*lT<@(m<`J9s|tL?R!Z_eU1P+-m?%tX)O<58aC|OPkjP50LP%F?1)jhk1sIa39LZGjYCUavVB5tF*{nnAiQ*@XRP!=6I^$ux^h=pnA5TatLfkPS7w9+9{ z6SC)sJcV3@-sCPI9IUDeJEJok@JWMt--Axl1f6bn^}^jUr<6qz%WKbveGAlg0G|G& z6Qs)Y=n#cDqo4G|caJ9vFO~Sh1eu6S>{VgJP1KVCy|4zxV2gf2!j7T+)F@dR(Jgj8VJkFsPd7gz#S z_xuZ zf{l=CpR8HROm-tce740lHzENEhQnoP1Lq3mtLai=Q zEvkuU)mPIWx2aUe?ZDQ?Wv>e<9gJExnbe;0z5v@SQI9~~a_I%2r!H^ULzU@V1DFAo zqO3?(fq-5~7r5#<5;&#sTsqZJu<*CAcxW$YBH4A#(q+J*(3T0k?AiAjye?BpunN3f zB=LhWNoY|pA&T|P9}^nQ8Lf$fIqKd}yc-&!`lAPO6w`>`W>fqS6o7kmtval4Nar!Lx#tRM zclGH>MtdX)Eqop7p`5bexdo;>yFS(M{xtKTfBF448k`#nK76o0FYeqjL*xfPQuXyX9D6w)j0*uKPO;qp*$RCJ&zAeXyIr3#f>&}aY=-JjOe4S*0rRS&rPC?68YdX|3!*}X8s*fP!p33yfQo){=PUbTz)%_0D*8WIu^5w6r1)v5zXAuYca;Nf2nsE@j32#vfz`L z;26O7ydodt#QS@(N#F!RemK+2sPcGFfy2vpS^~aRn!)s}nsM(QSPdjy1bbDM*K>wD z?*f!=Yo*X)Qia3+f^#{CS!@glmRNSQ!Y9GBw1o3RAU`DToiHgEPaK_6LnTGG*?5f< zlwTfS-J;+!{gxDs!u#?(fY5Phn4#Ahixo=9OBM;3=jlc&yZ=#rz?>}$;J zp#$pxZ~UiKUvuNBPe8Xe(WT^r;qbv_@nWBA&|1#AJaZW{kEh5a6{D0Ud5Y+x)uQ&b zu4Ozd+0G|ujHn@+52h=RY(B&Oa(veJ_ph)Ik+ykBQ^=Ms=4GA0qs}I)m(#FESa_Y= z{LxFM0deB&1(D)kgRshsWlCw!)a$MYdeZd$l(hK{-Z#E7+LDK%aAh66;1HIJr(JUo zna(!0lg@E`F&~}XoK8LBnG0m$cu_!$wSUHqm^K=I#X@08^Wx95F$h9(b*is6si~nK z79%hklypzB81o;IT4L`Zbl=+MaWiSc&%hx})p7kzmiLs)>$B-7htJjQ80iUoOA?(rG(jE{KIi7GCuo%AEzGAkSMNMv{fqP@#OwTfXnW#0 zK^EPxNklCJ!^{3J3o!2HA5QM(y%sgfFjv8GONELtJt_YM_SAUv0!-9xG51Rm_!^RkhLvP^|R|wstD{<>IofDbAyTOq==1>dV+0h`3)?2V`Ib%<-e_BC|!NULRxqDJiWRYX4X!WhM0w; zrJtM!rw7=9pt1xzRAVg04y>-`;9A6;RmN8Wm#O57PBO6*;}^ zop%*cIT&fEf>X)~L0qUD((H4^tl`6r8pxAQN877rPiLBMYshMi{u*IK-t5h^*ac_j zD&-j88NTifIg*mlVQlsZ2#qG1nC5_FbNs*k}Q`ylEb?3j{Msgw5 zZH(v=ZB$e&{|G-PilUY?t2Nx5b&C-ubNc62P?PVPxZ-jx3ynozzp=<6)WeB`GTGVE zb^PE6lct^fB=i0m_FKr7@B{Ry&#iu=;Zxj#$m33yx1Lk;F;>L7T;|@_bdh2~B}>H{ z;$tjdf28h$+7ag3jG4aFEqgzFncos{ScJT*N~y?WUEiZ6MSe}>oz?O(X!D}`X4=Ja zC8_~Pxrm9AIG69o#(1`Sf;ShUKzRhNq+2~cp7AmALqi^tFs3*jAGb}oj3<6Gkl#$_ zLmJ=Fs&H>^p=uCT$F5p05D#qbG1JdAyaSQ2BZ`xu_+<*ps{Iy*i4OSM4xYH0cg6n*D!$^GJGcPY`j^lHlU{YtrHNGJ1w6(a*^7zgrc;O3}f4v}IJaEr&v@d1m zjFG5BNes+tJC?zuXOVDr9T8_J!#pwRBO0c%n+}N(nKMM6{JlVaLgpS&RGcsrYNnp^ z`Jn!sys|AkD`|m&jTH1D&}WuWMP^N*x29-v4gt(X5jfM148L0nx1uZxE>c)zzY8$rtIY zI= zuC&O!N~_fQ=36uOVVQVRk>GPUVRsu&t33FAEejJd5EQ&WDM55C-XH3Oj~ z*LT-!E9|nYa|%F3=mHMLNpJR&4503jkaZQGZ7ypX17vvL*K;@SFTG1Ou5dO{OoM1~ z=I3pgfqg4oU%e?GXLqsL`dPt4l})h_l_)h*Y*SbsW)K4^={csNt9zEXXvAvLnfl)V zET zQCvSu&g)4N)nzlx6dL$P1%1dH>1+PS-D$0WZF&W~r(KT`W&W*qB6Gv%;W=c**w6|B z$2ApDV8!4S;6r_K;5hoI`xsoTH}v+h*iHBhBXI(@%?Dso%NGbGYUKF z<=N^LXse}eKlWC3owMGN-i3;PJym~8*hjX11QZmAzajF`NSRKZ64VRSrf4*Mx_*k> z(wE6apsdov<8en$;MSyS`x&8ofI>;qTj&k1T;R6f*n7UGO1*sRtaRCUjAgL*o-9%3 z$7a#ax6<@lc#*U1V)+*1V-+8|Hc8JKTZ%ak^#I%~ob$}*F>7OAqWQ=} zZQq^GJx@=bO6Vsz4tq4|Yxk|jnAq4L?`N=c8gN!tqU*oE)Mb%D3`QqTGl+s;Imv^K zwsXVn+QLx~Qr4TAH=-9oYkK)Zq;NBEgG{MXVrH%b+6e>8}2dORUU0U+Ba#qb*_gX5b=yh!45ikBj3%5qy zSo6dM|n z8{aHFM!T^`duyzQJ_B&Xw8~7HJ}*{eZ?rs`{p#8xlGf`p7cxP!z|!v92r{y|%uoUV zaIm)idA;s96FOwYhibzTiDmz5e=T2sRHIk9e$TQ=`iYVkq~#DglG}wS@Yz%_ciJth zUdi2^4x$CToE*JlE}g=B~=zUBqHz$;$-i)=xI|Bxq*7Y(u*&X)^(N0*`9XNoL?*sEZFVm%6C$2d?0?ko(bx8 zF19vxF^UDN5|wT%PGaZs?$3hh1p3E?H32h1of;fSjUp{Os!E6MI1#>=UnUB!43P<5 zif%b9^TKFMRRrZU9C1b-Hd>E9xr-!F+zI_oFJ6Dp=pJ53CP<&b(FJx*%BetRc-e+S`EIk56CBG{a_JcWHe3TB8I%X zD5#-`1QL5kZ#;P^BCL^KvvUkC(&K?=Wi3=B$)cXpcBmSrsd;|(J-fBc{-*c4o^0+u z%;)il$5YzXwp7puv4o_^h-A0*X~8v7I`4v7ciG|zP*T5CI;4sB{P^G)VL-Z*EZ@bN zk*Po5qit!S=c;1j4WGzSP@M{k^pj&&NJ=!hDR?J#one-VgN8ki(ct7|T1lw%48fOY zD+s8au9r<3B;#B%Fj#)qR!qNA^~_8MY4)f?F4J@E+Z7Y1;Nu>dP#PVi1mJZyGMqu(VOd9 z&r0O;3SDxvVlEYF$3f!kh1k6cG)v88BB`x{$>@HBXC;m%K^6y$4VYHB8zQbSJxjnN z-w~{^nDg0Ngv!1XL<9M=8;(6Z+8iM<_ulbTU}roSN@;pDsz2!Ke+1e|j+ilBv~;E4 zuoR8hG&SEMRTeSJGwV6$gC+hS_PO)|^%_$#%>C6InTXI>ZRdRHZ!oECa&Dw8xuVgM}-ff6>C#40?#!L+kMK-m=%<=_4iU}vb@<#n)8$P!D+ zBbPoQi}9P6Mj#5sLRswQd~e$lcvS5=`2xO7QLYM&8gj5_gOgtFab7 zAy)UZq(v=e+l=)jmUfW+aNO75AKg-fB`tn0gX{t;6D#@br=-%G8>;RWR^&Qqr42*e znbOcS{@`1RR1ekZDn-RS<_vO5qilD-Gbz)1+UHJ|hF`6RoX%SKP4C7?kmZ(MjaMvorYa5WMzBboQbz)$p0{r7{W2No>uxO==PDn(TvTP zXTl}=4pyJ$8?4rG&(U!B7!t88&W%K8_R;OsXPST%9rW?<6A)d%M8Gz84fdK2PfS7{ zSPo=F==!D^s>0wZkrDc+U;ymNIf8bbl{TXI^&n4pD@uJ>jj@okF^#8C! zVjYR(4tnV4iyV&oX7OIL+|@hm5qhknTTJ6aYQsS5+wx$>qqO^7F2c}nzYS<+G6676 zvF-sntc#{9w&7s;qCxiu+3IpYyPGcqU4EuX-Z=VBcrQbhyjjG(2a=ckRT4%3;#M_I z^1g-xp1l_#wVs!m$W*;7IbcILY%bIj>mee|15yM@QY}QF;ju;`x5O_vC$}qIti!)c z?}szn-dF+f7YK(zWF`3*zXPj~wRP25OZF%Kvue5{nGyPCF}wNY z@~F}V0pEx^WZd2=3lS%qj@v1H5<{W+ka?L}vjuN($)Dg^!b&OHw!>S!TU_j^I$;yr z;f|wv9C<;b@<#Ix!f?q$VtLG^8IP%#Owe*a*G~F5?nG*BtKiF6pp5#qjaT@a>8uVj zq1`uIsU8MmrR9*OwNKwNLxLyY#{fn6NW16)GZ8myJHT9;m~|f+m&t7~cQdyoFukf( zJ&(VLt)uc7u#5)5DDr5_W85Cz5xa(vva9+z+C+W-r}iO#y<&c$7n9p<->uF<+n}L} ze#J^Jx2CU#52*_^p|+``Br}AQQ3ZuHs@Rd+-m=?I#J#PS?GQ z8~WAs7u;4?Ae8Kv*xtWlyP?kdf%uq&)`R8PaeLr?ko(o0sUPR)kjh;ThkHVaKGe3EW-=-;?Y2<&UbCa zFgD%MhCrP=D<^z(&tZ_mUNpl`bC442w0bF9aegP3K-TeZs4+Z_4i=rE6VQD6k%# zeY-BiXBvzDXsl>|9NE!9)7K(oP36{rh8PXieeWZTXWlD7(ds9=DjXhRN>_z4zu6r} zEMt|iN%ew*JDhQ`%g5m*nSeeOgTIqr(WY3)FuAqi+<6H94xNEaP`=n z%`Cj82*1S5hh0+k@NsMVB6W%Pxfw&YJ#_>CYj2wUL4AhD zfur|?yiTWd+8Lve19;E{B#nkpt$0P+6=Ty*3;Odr`32HC$nkMesGNM-P z5j1FYiVG~0@MJ%-0Y+?e{m9D87c(;4@5!MdQ68pQpf#9+$Wt-Uj2r9D_nvR^ZI~dI zEhri!pi%cE($&oSq0W);fgz(~id#Km1xWOv1nZ>@ww-fRoZrz&=)|oU`h03}FI?Kn zi)+Nk?-O3B^zrsjoZ6}@|Kbf>{BUhR3TV%K)97v(J0>A=&=T#!eAkyfYmczA&#a6>a$a-?_<%d!W z@%4|!T0O;nsz+Y6=Fcf#Th2DVVPBgWh8qwXCkU>Gi5;%;t_E7Dvs_afs{4@nRBf}6 z_$wTjc3tc0Q4@QKrAeu#^?BN9%4I_7Vul9Sy76kHnvrDVGxF3(FgjPMuh0JA4%h6f zQ`|s}m4`Pv*kG`ZX4iA5uHX!hK7m{Ds2gI3JKE5XMB{b58Wrt@Ys!*Z53|*vO7G(G z%la@ckrAd-6SbQ{yW`I@qS;oj73F4|$XtI!LjRgF_CuEiA;jt&(+=AQB!?b3Wqr2l>fXDrLJDYwxNo5#-u~B0`X!_ld&aS(ESs~p^*uvZ18o%OowEc?ra zq`iRE-oEKzndUI}{^Ga>_Y7zRTe{*Nb;11Cr_{Vkns3kK-ZN;NK3NichW%LYo|l`q z+U!5xkzc|@qUJ7Tf9DYX?pXnjOV4}ldUZTIA#45u@eG#bj5I48GAz4uB7>J&@1W7v z*ylpHy`+R4c3V!d?l;+~REd%WV?c?cVX=M$uBExz7G%q0@(c5gUJewdm$d|cje7f> zWg%GqdZV;w3*IWTrH*^AFB=qQ;0d%UAeHf{6&Vxe`%*2u$+Zr4r%p`8JnJf@ym?*5 z?v=h=^A>^Wj20MlV+-XAH8_raS_C^ZdJ1CcMCJ+60gp8hXdnqMs1`sff36SAM&vBH z&Fq}8y@=~g*M5au#Ea1}W@VAQo&e!i%jpT&eW++`mvhlZeK()ft7=_2%w`QEFKhi~ zXD%K!PI4zs!obWW$5u&&J(pgd%}AOfZiGYy?;c6lx#Y^mzROht!arU+*G<9;T&ElN zMZEp;z@zK7CQDS5<#@T%?6oqsR{fTwa$Fq|suo%3>iqHE z(rx7%aOQvKQeUQQ>T?Gi&!C{VtYS}%F#D>qUWK9k<55i-*c`SBPGuaZ?Tn%O8GcP! zbFaX46qZr4R!=D(pN+yzIiMZFvc845^mQIUgZySeO-ff6ufW?v&{V-MR-|+xKSKXl zhK*YWD{{aQNy#10FgKk#mT42lmQrIoVIG(qDO&DRf{q!{O~5C(Ha=cz$N+ySQ5pdz z?*x>@;zmh_6a@9n0yDPiIcxO5c|q7+owYPge1t~Em^n4RK7O=mNGQWO>Q|8YSG9l_ zi8>obb?gw1O?^mP;oC@n3+X>|;60yc(Hn!@zz4JVWi#Y(Zu27jBHIZm1q7#l+zY{F6* z)FifGtMd6rljpkU?OMB+!HucQ4&=*ew?fp0yvaZ}yz&5D%*h?YOyk^m?QWj2|86~EN@<<5uDKOG+AgwDGgNkJZby>&*)2$&VF@qE;_@GW-pp$D^X68<&U62EFD- zg)?E!qYh&T~ny1rTXKW6s5C(&>iwYUW!fBo_ zD(NO4!|v8)YaGvZCs{oN4%CB zml}xMJ;m_OHXM+zzjvPNN@`edY&{{&eF9H^;Pj4aV?(mEd%gE^g^qXYg~z4da|P;t zX>ua&Tc`#>t_X&ODo)Pt;#N(&M)2U6;dgukcT2U!w2f*U{O5#Fe?r$VK zH!9qp#yZbkT(k0z} z>OU>zcpSbo8@FVX@4+_zRc3`<1*JmmVLhk0xg4`Fij&H3$u&rw<*EcNYncdYGxyck zw)?0&V=2sH76A-N{EU$DjVE-IX{{Gf-pAUi>e(KK^8aWrb%$ z^^BS$=tSg0F4FZ{mxkettOqihgg(lUL5IeQr+QW}hJuDrSWEgmQcY~>j>~MgU;?IJ zqF*6&9|8pJ6LZu2+S6+sTYOx8Mn5@7_X_;elK<&T{hLcDSeyg!@Q*=Zsb|2rwRa%1 zwFi{NsV4Wn1(FL0dg0*#OulxWSwykcM8C(Vx_P`0quoaG31@lYFX>i5;f!-SU$mi_{PiAi93noD5$ww ze{~;MUj)qD;%1EA1k>gUC|w7^WC6RbXoa|wICgb`bg+KOf)0H=hGLgR`61Z=H);^! zCI1&gq`#W2BqQBf_rvBhYp(!3c{4D4+!sp#a8XFR`kmQih~uOINA7Z`oPM?FRP zN_GC}=l|zTzyI}A+o(Sl(MXQvX+PkE%ZtfR|5GPV{#!V@Lz6UF8h_wF`e`d%rvvFmifZW}^82YAgNv zTvYYx+O3sj{$K2(|N6&lPHTlZo#qIr*!Te*=|7-pKG3ozhA^(42(i!7p#S%G96o1R- zox!(am5ju*s?%k;_ILK;{_V03LxZk#^-mQ4i2koF_+R3mX&!KaRQ0ng0)J=OjnAIDa4zfd z|7&@Fzl!^6Al6)%ak@tHUw+i@?*uClzzvq}mC7yhzjGB-U`kUmc>O_W_<#9Pf4o_e zH^9<;W{D>LJ6CbxG}K6W(6;>zc2`Npw_xdvW552L++8yGG^S^YM7+5DSC;e3bC+bm z(s4ig`KxB*@9EVamX1*hMCpIb`G4%@A9MbLjRgE-&VTR(QU7@7KLn3|yz?J??myo7 z50>#yvhfGYI4yntlWhE+I{lMu{4qcMC)xNX+4!S9{QoG~2)IRcV*`#m?gy&jZ9r!_ z(yB@q2+nh1fE;8ZXzPjR)-=j%7f-O6b@ToJ@T7md_3$Jg48lGeZ7zP& zv9uj;SlzK6dL5m7+VJcf;&J|bz9Sj*iy&im3U973P2UnS5Cl}YkloceCHUcbLl2cj z$~yF7lh@C|jvg8esw`$1A^Uqz8*;iEYIGa`eq;RmT9- zi|vSw&5ra0x0Nx%3MLP1W@L59Ev)B&18kDhl zpXbDC4a!ew3%XWU+X!?{dw9~%|6dgjig$FZn}A z9(?mBI4bt^J@FZaJyFVfHe)J#z2)PxxGfxjYU5r@zvuLw0suwI3X_hA*GubxIxkVK z7!EK(Z!Lt{n08q+1UiIz8oaLK+%DZ5zK`N;mPf2koY#9}SygAI21*M&o7SqQqsMwg`-1lye){wjzx{9r)$q5FrpQX;ig2Iu|)ZstC6?tBwP z*yeG|{--XAl=OmtBN2}!>dV(02Obh93AJy1qgK`Sl-(N^yvuD>X&-VIu;+G>GMtVGxS26+kGaq7(NV&$X z3I?DjK|J%J-CP*V7l=y)q7An=c>7qpV9~JL^iARq^&X{^gwc;j<#XM=cN`X9vX|6O z_b(ttm)#~#y4ZPFpQzsl?OeO+6+g|TV&vJASvLf_epR#0y~12UVYYptLH&zQ>XFAK zf3|4slmnFJQYQV`^~PCu-9dVn%m-IT-H!7Hl@e`An%ER0#$&J(77V-|eYQ~Z^ro7F zySZsP!=kup-jhZx2ZOXU-rANqRV94NDys#L{8Ibvxp*oO1QjwUbwQg89@J=!AQU3}Edg>K%{!>1TQY zf%!Ea(Kb?~6T}dH*y{j4HgCd0oc0#rCw9RX`lx^0EO;O!98kGoj<` zAG7H{lxlwWw&Sp~_v<^(RJ}DQ|H%Q3oPpS&UT2)?RrXj0K=eoz1dcPDMi2=jJ1*#2 zg6u3O29T4#&a*W*aMuWOb(AK#bp!X~Ec6{)O=(ks%@<|7w#N6{HJ;a70M+a^Mj=hK z4a%?*&bEaBN(>hKfFz&KZt_bLs@yD08}PdqNxxH6Jrk&FG1Nnt@*OmcH|xjXE#xEv z+{9QU2Az#6Ft|4DNTA=~%5&Do?>6~IvwInSWrKz&qm^N zt_>i4dp0N6k_wNlfCwu;u%BX_P>sVi#&1I+=zA^>#|S_pmRzh`bCBNP+B5`ZIL>Jc zqD;7N)-?{dLot_ZtCM=hCka@+NaC|!6;Jvm3VrcXaGAtVR*cP39-{dv%_tf_-3_6S z<4*V8O+2P2o8bm{3We=U7eA4Fho~rT$YjZoiNzNgP>u}w%@=8ZqL}zNJd*WrV~>Ma=kC9wzw#w~<6vvH*JzGKH;U0UHcP=V z0H>J1*LzaV;TiI$dS!zmV^+u&Wh|OgJ;DZTgHEi1_+t3(XI9m+Vfv+scLYxD(>HFDHI{ywWC@a8v3E`Nyoo>=I2g z;(&G?gcZL{5{-SW_*fC`uz&;7mY#Z}42;MmPLzG8aT!s00w`LGX6-Z?vc9LBvXn^P z$1Azr`RXrVEkPWov+YyW<~3y!+fh!ivoPqQ9 z#)6?Q@BHTtr&pWxO)+ElaQ!u~?4g+U5;OCHUM=0Xoou}<}c9XjSz z*AGh*6(Rd*Xa#*G7A?^XfBQYKF~gW7Zp8%-xOhMHoKWrkRmrl3U(q(JmFHHeiz<8c;YLew`GL=ktj> z;VbG-;OVC!^LTs;9r$tHk?sw1tLvZK9)Rgk(SckQezGu?Z{}zJyu1Vh#X|7UX?#8b zNrU{8BDo;lMk5YKXo^Al;Cp zVSxeuI&1-z*<=_Dw5Th*s&F*v>HM$!?^-4VolgArfoBD0>h-T$rv^o{)}md!#)GN1 zj3dQ%`N(&m1AI1qnQr=Z)^SvuKVtv|Bz@2)FCXI5WtAks7ja+ZrV}xE|C!pEQ)hBT zA@|3p>pdV%vtiRHvNVi*@WXL7IIXkpaV;wriQu}$!dM#%QL8^(hbHkVO8CZ~r6cNo zmyD$j&htob0xq>>&dp&w*TWEh{UuA|lQRM5fbCwU_4!j23E;c(b+Ot1rK?`0Wput9 zWbKuqQxJjO3=aZPs&>MEgtv(erfA%5F{BImY$v;DnhH&a36 zzOC@D0mq87%pxhC%XstRJ^jga_;JYE$)T3R%b6DIruGm0HqYZ%v7W_~JCudqyWi?Z zx0J~DTXSBtIk#K)q#YMb)Vbv92epUdeuV9q?=180qQU(BPWx7|^@5ep%+j#o#Y1%g z6l?AXx2D_L53b>Ungx$A!4iAp?9Ew2KGmGpGTu?YaRHcPUuC4>kC;e~XVYKND}W5i zHodXs^9fw}U?_Fn2RH@J6;3D_Jp&+Ov>pK@pa;g@yPxPp=dW^Pd4Xsw03vzW1Rqgl z@U=Zu`UK4Oj&9oizp_1PP05)bhQ11dE^TqCv(*Pml{+hAL5KQe$y|dT*XJ7nXMOO2 z@Qm&$a5g{-M4}h@+`n?%;GG=;f>s=^!m(_oR9$gg=mj-1uMgM6;6D4#Z_1~5mR3d! zR~EFFs}#Z1bm`iH)J0a4$tt^*{xCrIsOR48ralHJAZ0}6Vcj)bf!EiIL8|elE=Skn zQ2Y9X^)W;0U8TeyN<-X4l+~6?&ZOpTR)D2SC{3+L%x#?)D zuomw!3EMuTl?d)LN6^tI!P7@WSZwLD047MRMm|=wI~d4G%g}P%J?+0WlxWMRF&4vClyNFzC$C>Sz#sfJl$I=fcmRO$ol{e}I2_eLyKXE{)@(jC4vBoU3g5rb0q_b?;JDV>)o3t7+hvGS-EuA zmPuyZZJyt7$9hyAM6aW^jz|VHJkpOB=r3h`yAr>gqTK-_+kqT8btJBo0@fmqMc)OV=wb)`BbzX{ti;B%GTTAP@4&lud z4};qhdy=yVLmwxREFMVKu=wGsNs^$Axj{%{t6wO5SF(M zZ$1wYleRTE0n%Ro(k?BdIX~@-mFS_$McfBf6x*TVv9bpT9CCcGQ~*b9a<$#$9eqt< zvpi^@&~AVy{z7~ho>VUP0YJKvJL`U=@aRpaky7DQ(kDZ>%9)^ z2hc~g9=Gkasi~eskq#f+vAZtMO!W*?j(XvH8L`W&bqi_cRS4DQpPi~l&u{?jD+scF zA5Zbo6@1i3AW)IasW03RdAT%%-Z^i{d&SOu@|r{9G!cPVv9Dhm28lmSHeE0ru$d<=tvd*5HEy4+&Rp}ZkyX1%50r0jagABrlp)Kq z0<^Ry*r+T-exV=Q+CQ3$?Y(Od_C-nJxF>HEHgwJ5Y48!rg{N(jW=p=^90pOHdRa(j zP*Cx30b*5&yfEaM0`+3+YY)o$XsjPjExvrjS8NFPuCgpq{q&-($3Nu2`yrFv(as!% z>E6GND9S$x`Fwhh$we(?#1rW%6D+gP`&f7{P;Yv%tCs!U_T(51o$&8{yz;chi$sm~ zfusM@^c))oU{x1b((rH5Z_cmO#GR^!f4TBa_=;SR)t}DiQ5W&4aB8Z>dFo4E@rW*k z*}fHrvDJxPE^4jf!zULQ=G|t~8^)IG#dMl5ahf-FC^E7`b;%4f($0Puz8OOM0$%7H zX%o&Cef{aiklfX*iiv(oy@6@b%{>zt^1(paxJ7o&;w@%=tD$jlR+2Fr*eZBx0QZA= zp<&nOM^u&G^u6D30ky22K=NsalGSM@<0b$pZYwnHFPSDc9~&TU@k$jopuT)#qk{oQ z*<)YrfU?&p8mH&sIB1Q?BgOzVI&Ls3DSWV)^@E7e(r@^#!cp^?sw6nbCT!ap=0CoB z&NG0ecO3|rmo5GAQMZPE9)PW@q_x4xHw(U)ZOlyXYijh^@v&=~X?mf0p>@4SL;D3P z;d|N|^Z)WF*>%lA3n_LbD{gi}&+VsnVf)(^{f%cjJ;H;(osWrC!h1>W&Z<4+F!5G1 z=U?NiJ&C*spQWmDgtE|R<4qTPSXJcUfKXxr*w$tSsba$yOUrC0?$dnn7&i`?`1V-@ zT|2W#A9;F@?tpvr?rDhEpY9RBd*2u5mUOhXf)2?tPd@8EJ?-im5kDjs+g2VfvC}Qh z^TMKmT!Ho3l=`(@vMC^Q ze$J7uGgeGm=+|I5?t6B3uUk&q%Ee=K{CkzwVV6(ClCG{cRBL}rrj__{O*_}B9TH?* zf+H=O2JDUD)%WIL&gw;;tDIb##v&WOp9n{?z8vfrLSV$Ue7J?3;EdT_a7OBMK~sE! z2jv3^tk|>F_Q!+viU0-{I%K}KJM|&WRk2u`JyR-KfYNJbLL!A*sVI@!Kvs&T&e;0J z++Za*K__<5``$sW`lKWK*oU{8%N`FJW*D498b*uRs%-oCYA8MGpfh9|y9Z4Qwxbre z&BG=BH?Vp0`W@vvkPGM5%ib}`O(F?K0wsl+s`7vc*zB62a9mhv`nzh8(Wiw^ApPawR8#o4^U8c>68~%;;w>0c z?gZ*up|8A_NAl@-wqL$aiMw2G8;OeI~WYpEto&>9=lLMOyr&*b);W#i`yqFQViUpEY(K%KzcXNRDmivu2 z--rqjA?Y4Rv?WbSJAO=dD47|X+b!u19Go*A_c`!*> zjpIalND`a+6>P#~y{ErLh7O6w19SCg$mEgo&=7eZe6b*-9?blcGF# zc6k0nSdoe&U7Z)hyw7WoVlCWU{CqMQYJAoys|HnBqHEvODdFL_QKETTO#S>LFJ6GI zp-$m6Lj+ZB#oBSOS1n*4c;`CY?m$up(@9Mvtk0E`r9m6Bzi*!&YLKh6!xCWh6n$_7 z`ZSs3I-4gfhc3>f&hsh-htAK`+qf{nsnxC(#py>p1iv(M0`yswe+FL}4|?yz|L?O< z(A{Qb{2&?qJVUi8sq>an8l?s%fHdg-cY*vL`}u=eSLO$MbRk%t7-l8e1cx^7ZiS_x zk5}hqYckLF6?j({zj~`_sova|vgzD7;a(qXXX&dl^~&r0Jp)sAUH<72{}AGT9aE+3K>W9bYMe4LM zq`mcSD|+u~O9hdhfpwjS>^<9Kx^lg*;tlRsnD^cXQ&PO!nv`5kaI3MRL@PvfvC5ez z2_rdn4X;`lL%iZv!zei}R1~}x?QRS`4C7k5bQ+i7C;Q~Xb(pxp7#AN6rh~81Sv{&s z5+>K~T^6u}BKH zPP;IAlb>P|`K+8vUgB4BklacDV{`f^2Q>DTQ^~e8qur7pvgvPJAyoXLyIX~r??^Vw zEnLBYaKhA+l}K`u=i%-PrtqTl2nj8 zk(OBYQ&`|s)R#LlIUnP^H096`$zw=)PwR%Tq;*>;)}*9WVWdta*ZoH`UVOafZ+`B# zYP&ln0D!v3i}kwS`d3P~fm@v+*1KkL(7gGiEZ`-{t-ROQy%p|V4u{2m3Cp*DV4rh( z0!m%-UCSaW+g%`vs*f#b75Qp=<*pc_0fE?{Jn$+f%1UfLzW;N7Ua0JX5C z+6W1gp=4ofK70h~NU`iCH)i*88nHsszKt*1NO;+Uk%rt|Koz#W^2lyFXqZ*Sb*s=*z4OX6LuCO96;2wSC=|Iy!ydZ4ie zM7yFTBI<_F6imp4h#TK&V>5M~_jDic(yQY94yHadqugK}qRF%GAQ4GpaIjk=RIxR7 zp({TpDi#tR-YqdHR3bAt1c$idB%kHys;a)rqU@)$NVb8`hbuzSzh+Fa-eAqUj!Vy+ z`JY#m4bGbPrmbN$ylGflS*5ugv0_+Zd+ke$7q)wSp@$jXkvp?537rq=JSg@QAZVv; zEnd2#rRu4k?Rky0Htk$2|G^JAv%_7whp?h`7YWEVQv~Vz^XE5*>Rc>3R{D~bj)>~9 zomN&>VGu{HYud)ooy_%rkO8%ZCmdgI{phVC<4n0v0HIS^i zd`@Pttve)K@Uv37INg9_Qr{^9E@>^4F)%0B;w;nGn^86sJA=pV==zmXyxf~LG#w=d z1dJy>2t!j;ldrq}+aCNrhmw^?^8o|_x!C>cot{H8R%PWL8@;i%+f zc8`;Nu7~G22fcby1xp7e*l*pw{SkCIm9^b^vm*M@b@bN=mIZxpF%Gauqn z(_XTC^ZNCrncD^u1RMtfhx$+|i^IG7K)LrZ<;q$pr+Hr@&G?VJ2p*ex+lI^@$P7;G z?%nqCNOS6Qrpa%9{xo;)psVSY<7#45&Gq9#$*0}vKVHzT+Zoe6$}vXRaRUWSmF^YF z$}QlRI2Kv=4e8>c48hh@L*Xkzsk%|s%AOG?$VN>~Xf-J% z=ewe!B7b{d?D|YOq{`)6tbLfv>NwBTCP=DT^c&ni+2#H^(-g49ru?Z9`2hR71CN!# z(?2?`+oJN(D5#{sjWFggN-l~S%4x$T6Wg1Poo$qdD>B}f&wuGaMF0FbKd<|BVq&7) z_?Sq$#?QC;@UsLKwJ`S~?Bv@65&cF|K7UE=t7^qxy})DIz)$0 zp-DAS0^0O8om+*oVf#wDJ*XhQ$JD#Iq=az-HIR)*=`Jw#Z4aXsB?&Lh1rhfy<&Do_ zT%F*kf!V=|*Zv6Yo?{?CnPDb_CJPkzmLT-K!x!IEV&;3X;-kJtiN+H1T|5@4R;DLM z3^OJa^KvM0-^aYf4>&0LllXPF(~jfX!s1_>k2$j44kmZ8zNn+iBHAJBww!>|o2+$; zS@X3T^UstD9X!Do z&eZ%i;`~ug5@ouB6|i}TX5rx(^pUH56huNO7I$L7dWnvX1M2=v&MxdUEc(H$f0UN85#mP+(jwW3e z$5da%4sSS}aY&A&_l*|a+K>_#r>2dH9ceyVnrVm^HMQ;DXrnX~Hc&y?*N|Koh;jXd zWPNJfH(h70c?UAFtsdGUswR z&%v?lBF=Mhnj%E3d58)7hgTLgZoI$B&jxZ%HUi=cj?=;qYlzR?;WlcQUr^hHl!AV7 zW%9FuWvL}0YaPFi<})UlNFMHHtwpYZ|jH=a>u#44sb6e5RLAJ>ZmlX2VQOon1ZPxA3N3s%(d_J{2iKtpC*c}KyUcCcV>{+= z+eGja{fQ>uClBrQHA-}tsHnVc`;=jRdW`DEHIlXzzRkVl-$CV8n2=hn|Asdsw(Ok+tV;vXP7a%*#wrluXn2 zZR$_qpUUlPc!aX|U{eemKB;D`9eR3Pin&l}`3!qP(yyUEZ!)Ft1&cZ3c3#@kD1CH(YGNi`bGEBrblQX?GN zSE@oNhXwG#BK3=uCYv~ZWiz=c!Nt`-&FduM0#g2)Cqu2dyR~&mcW3t^@SCKby?3$Blg=F<#4F-k) zgS5u<$S7OYNRI%A>sK&Y7t|F;b1+m|<2w~k|3oms9fBi5Gi&Za%MXvC)hm;va$_HGUeHj(Nc5t{Ak?qMy^4o9E+rVbmG zeIjO5>%EnDQBKR{X8RF4Mj(+Xx1DfKhZGMi9PgP#PMY5uczYh$7FI}b)Lc}vgI+9U zVQIO8`PaVQoC=tc+S(hbv-mCHZ$!x-RV;Bk_> zo3>LtyhFUUQ+i|o%;4n9F<^l?^OAyu&&WSjDNU5s8@ukdI#cUp(&64916^2~h_Pxo z!vMlS(ik%TfgLlq%e-x_YMT{J00A-igS5hMGU_`AYqK*q2m5ummZ(mk@Wzg9@urjd zmA(TzpPBYdbA>~@E3SoS^j&M%>d&oJj!J52C0qb0{PIW!BIt+9$SR|vS)#O&KatKj zY^Jooz_>Noxld?8>tb?D%x%mNatwfT$^dDE};oo}qlgBbrmH#y zPtEI#4@9QKEt~n3ja9Q((l(e>hK7gjDCzVuvhw%#Zq=r(phfjpd$=iDK__sbUahG= z`u39>-r4;I%IqGa7;Xaf49S(rxeU)&#*Dd${ z@VH`gg=KXFz)e6j<__tps8|8>d#9$R#>Fe)ZQqTqL&Nr#MLpIVed2XtknrqWi=TxU z(G5!5Zxc25py=Kzi!qey9 zRf+#BzH%BE=w#_vO80*9?-E9UGppk)86pgR{L?MEht(**b`BMckj11hIJV6M9CG=H_1Xahc84n4>3crXbH&-|vyj@zC z>VJE7y$jVe0^0KLVq##0LVuoo za=z3S**IZH*}V(E3c6#IZf1-v7o~+lNZKjr6s0MZ^$+uOcjV;cVgRtXF4^46?2@D4 z(eB54T#AQN$S+f$QBDhe3(tIf=%(x|Ec$t{B_3`YHQ~+QS_1X;yLT)AjQ6qKTG!Sb zJd}tK2&O;3e}7lY-3HYJyL0ExPa7L#V;z8+uo$MU7=c(;Zg=S3+1VKlpoI+uzTyoY z5=z@ByKBGM$#0dUOJ$UKmZ-<1zlS18?dt?S@H4Fc05&jt?$- zM0)hB~!MTZaA)d?w3>9!J5R8bG!a#@XjcMF8Zn#LUv2i}}`&k~2&oelQ1 zyZw#&X$29`Sf(jy^+~Vic*uNPx8==M=B-h0`fOM9y4P2aKd-?hu!-=4*nWEe9$HbHO)VUL z@%?@A6p33Rhi;8YM z2|87cN;^Vhgj!^LEGyE1_g8^<43d8oMnvRkLB8QW=oH%UYRg4l*2%zMNkRW^eUyXd zYBkx77p7)qq!$u+OoI2i38P+|y{G)EZ;))(ZWh9Q#MD*(XFtY14*=Zud#PTqGsyc` zk#ls99x;lG8yvw#VWV0XJanE`)klXgc&UL%S)3Hws5l(VeCLaZ!4s4Lr~Iaef&T65 z5JszRe*b1~3Ag_JY);*~#N_mR6!{ij8izg%LN8t^rK(HI7vb)a9Hewh4N9LTnN!FD zbDM!52bIftEjQdrCp3-&)hWCBKLO0h6*@XQ??QlxO$B)7_Hvk)b2*>=^muu(RLE}i zl*B!~+Nb9Ii6&lY8h7vBefIo0!Ib--nQXqD4y_;k4_FmAojG|%cJ}URf=QGe7-bkR zq@0v{+&bVn{ehsaeE4c*9;PuY`}^bISB8U9>qpo*5pih^_E$;pKy zeFO$_TV@>YlolUvVXBv4b5F5 zwW<#AnyZsla`VEbjRR{m&u;yH?7ekV)!X(3PIsq>lyoDZGzXPV3F%N$Qt2)O73q== zNs;bGk?!u0ZjjEyZ=ZXwdhhl6?)(16_>J-Vj|bkvIiJ1v+H1`<=UmmdnZ%?n z%-UR+9g7_k_}syz4NJ85kv#REqGA^bYg{IdS{o!Y76kgxlmAp59HSLP`rx8}ulXTk zB*)7}!2w&yoB6y}Zx`}0H`AqOQ^nqd0Xjj?lV+)4%1AlRYF(SERmqbMJ#P}v`Kjs; z2KD+-=;1kZX=Y6V9M#%teMD5hnIf$(e^68yl@BM9Amn=F(jEmQs6K^Uik~_YquI z_&cK5qs=b&;-^CFE)GUy0S00*j}giUBvW_*Q(0?Qvx5ea1WM8 z8>J`2tjBSY>(r+>8nVr2eNe6umpCX1Q{G4mcX|~IChvVx@We8x~g)W%3 z5$FirFSDAy4r=U>l9CdH`sdp&AB)Wg4gE6{-LxILofbjL7V3+LB5iD(rbp^riy|p} zv28Zla^C<3jCo&iOi>RvNjRi>$mZg8c;eD=2!f{8a5W2N6~AX)s9pmw7FMmDd3W{OLC*Q_&$F5BfI(SJD)%}9rV!# z_cP~6@$#H4)Pfl!hk+SidUi{L!Z;!0t(4f9~CVuECl0j3|a>GLLQ9ngoeddbrvSs zP;pJJl)E3)yL_C+{7q%McOw!{g0Nc+#Vp zOCK=Q9VgknaU@q~WLuMdD5c;q7M>==Ff6qyU)d`Nq{?@TuM(w!RIk_8x$8||J=_?- zLxX8otSl&}&w~_DzXj~?w;3Ld5nMg;w<;ULOwcQ#eZkzGY8we`2YXU$kc^^3AYhv= zZawjiWK8sU|I8HcyhGo6%8?reh5J0Wo+xXhkJe{+$5|ykUS`SK6&_B1qp)scva+Mo zuV8M3c(*CqK+u%3H)eg}D-ixD_}bo{DF}M?D)i#)h;(H#J^L2w@@-eIr1J#%N13kMyjMBT{9n`Lp*MW776Q(j`cwJnV+yn}y!}6JOwv&FN97 zv|Pmk$~#q1(5p7=y?*m11i%$Yll57GunRtsz{SwV^pO8((jM{Q+9RvyDNs;D<7Row z%F046R$%Ow?=aJE-(9z&Z?J{`{!<@jJbZi_+ly@ldtbb;B33*S5>vJXF~*}Q_u!SI zPb5=evtS;_hlcEWOm~sYy{$_3_;`Co#!L>gso^or(QCK1IG1t1f6lL zZVb5_cD>xmZ=u@DD-#}u^989*8!!!iXhW6~gMt7CeD7~wdhFwO+_;lllx%x>bgL|& z*PAlR0ex{D3vOwG4nv%;LGICq{X?- z6t}kWcNYjR2|S%Xvc$%EpD!oLHKwH*VrwnT^I8t8IZXRTtPSPFd4m(Aqw9J5KmaAI zS&W56R^^Q~Du&AG!6s{L=x2kzO)RFrZ7Vctyb4HDLv=sl_xmXM1KM3FsSY3bi^cXE zMt5hR848>6BN7A39HF71y8r}} zJ&M>{C~Se!`{Pn^>^mH6x6WKbZ&fbL1z?K2IC>S^4+bI5?ByK_gkQmO^2Z~nuv zXNRB{xdyc7<#cu9Lz{&a9X{S8wQ$>)W{wPS*Dr5*5Q4nVuIEWuLv8!ij6!h1nFPPN z?n{%FL%>r^$)JcwV&~Mr3>S=iA!!9y<+-Bx%-Tpjd2F30;Hrvy4(M}wDP}6B#$Y>< ze2p)STRRWWY+qgj2{$NNY=YE$@ zH+qvIE!KcpqU-SXAg>R#np~Dh%hqzjax_b?HGB9IhlVy=$3Ycm25@wZk?3 z21&h_235T3{XE=sQ^$EpXGfdSZ%41lybO*;GAh&;>k(M){N(A=7&UGaOZM<2zrKA= zBA|=M?=Z&K(HPnem$KeEkZGVSyPtk+Q8on(&T5rvWkhu zh2uBwtxv-k@Wy(4(=9##azfPF(P3Zn#8an^%Qich!aYttMsVoK#v|2CX*)Zf7E#_G zmB624C!`O(AQI9y#?6f&PTJZbL~l846_KmsEN!~vCE&F2))jk7=@tivBslZbAg+h+ z>=Yy$#KHg3FHLs9jGxH~Ho|aM=(t#Aq$0bdz^B{^?2Z=zz0$a)(Ry&Oo4w!hI&9pb z{b`^5_BM!eAu+gE{9eL3H*F?as-4nxWSc(^MmTM1%ig{Fb<5pCfQ$vd0Kc`hmG^M; zT!Mr{mm`*YFneXX0rV$BrfaKZJUrr6HNJIolCPm-UFB5k*dnG+b2`KLb5;DCHib#Rm%BEy;We@4;=ABF0&JYeELVxR zOgou)APw16)@TvW8g9*WhERFEUAA8ZDpol)HNIl#&X;#ZW^va$%MSt|v#@+1O~u!n!4<-qgS!GOgko7zQ^)sg)C!T0JNX0ad}jE**NlVI@r z`aE9Hu|0FDI29DW+|J!>_A_ohZa)F0zn@viSB!|&2A{KS?|xflp8y>mRN?(zy}Uc3 z_)JfH!TgFVwg(Ck*yLpu%l#>LSXU=2YfG%g)BtU7BX5MWva+(sX_G;#=2!#FCJd}* z7pN@MweK>geVJTU9mEM}h^H_F=b|S>2$D>P1l``oZ3p)rL2tUFoG;)n(w8}X01;8n z&FzKNOkLM#`-%%>*)mhdwpIePWfOhQ27X}_`&u%&69r{u7#`4_W3z{=k6gJO%&9sy z5qRGLJwr#Q*VQY@@CZamvf7ZR2>PA}h(?%iup$Xyt}Yk z^l0E_vG>L4S8k^bbtF`zG$}?TS$|L)rq2u9kVCqy0Lnr+j>>&It$HudP$lb?5Srb& zfSv%9D?gXczh#uk#>k&!4|gS;9eXwr$IERWkr5?pY!BzYb0+|^I~=^1F%eiE&wWOB z-T7$Nl>|%$GDekoRee~QlFfQJ>_AS1e2pkMd=L&nM5<>f)oAtYw~fX$gK)ZZ>Aqb@ z`|8yz35>pKXHHk>$ub%SlZpw-9}wC1%jUPYLjBnHwXZYwRN_S0Cig&YlCW#Ph)j=! zR~K5rlllA3am%EcUZAB&q|i8B@W8W272z~*byDnj7PF-e6cnLX`BDQVChx9}m%dxk z`4Z7f!0)L|$GTo1kZsgb6kuXE*>R>VPMy`bK79VaqIjfp!0^~20ra6shhCk zAGxM)KW9h?9%pzRRCcRwSwBX=-c;F^iH%J@@7kV}>#XltI?#lRQ^ftk^fq}1Asujz z2hssKWai#%v_ZEO@$6`udCB@MLx>VjV0HZ-=6GU40`1sXOju|rv)E-k%bgedH_C;X zR`~Zhg%D1wf#7eile`~-Kk}(=iXtO(8y{OgOQ$?YkJSFnRQ1u@35=Cdy{eMv<755_ zDDNLJ4l+iXrJj>QKqYa8IBSwMN~0ha&eJgLwB~IoSgZ%t{V8lLUFeEY#*e;weI+%N%j>YTa40Y^~eZ z`%|5Q6zlbuo*n0TBVd3gewpW^KU8wQyEMs{wXR=~N#BaG-p`A`oxbeFB5G}GL%)&? zuFwtB91+9a6Np^~X+U7lz| zu`?I29oynO`6L%aq}HjWlcww$(8>sG8Z2L2=`%_lVX-oV+`dimXsjq^*<{aidqzxR z+Uv}ItjNS4$jXW}YMG?Q61G& zdGbW1<#=^6y?B44?=o(M6KDQ*fLni=hEPq zYZ$mGpy=Qbq3bv#u{1Hms2CsOx-t3q)_IVw@Y%8LEb zbWPz0?Na^2Z838zo)G#{i=my$rmnd104TuQK{nt|$MU|4j_$L}NFD_pLq>*@x5jfD zjgUC^PaARZlcOILqScXM+_WBN00Rbimh4+MRLgB@=;((CMZ^TF zsw~YXdVtSE$6Ql=>K{C2iN+>#{9^9%wK(~IV+#B$>{40~O^SHZzN2s}aU z8GxuZVSKbDKd(@F#oisYc6(>%@q|FdRYh|5TWkh(+BdC6Spa1%1oT9tfvUW-e3y`r z5aDVg-~D@@Hd9rNA|kK?`T-3-kj0gs722*${0nF`D^tD1H+k>Z9Yid1Wsfwtxy94gW4%L&dwyynVE)1J;X zC&Lv^!?{<45fMv(2fC-JjrFX+Xq97JS7U1{TIE)i+#ARXhQzLuI!lPJ{`}`x;U{Yc zhR|~fQ-&8n5YUWfm9;eBb-Z&ghU<$^G4wSnN63c{w7Y9LRI>W|i9p2Z7}vQStM_Fs zhm#wDa)Y#$5AJrkMQi8evZz6QT1Mj7>)QhxGj<(UUcJnU&9AM%<>onxiyo9G2JLj5 zmEF}<_f9XxqwTBGU=KP5V2zaOTL07|`JQ=y4_Ywe&S#06eeYVPiu-Pj>n#putL~of z*^=9~Z{H{xGh^d+InG)}08;XhPK1Y(zY0=Kxs6Qg-ax{G zcc;beYm>9d#%K;3BJsu&$;K(zxG{IMk>xb?0MnJs~05ymE2rkxinQ*#y-XE$PhjWFd_O9@l zMmVeu4o?jinebHZeDd8rU8jl}Ls{z5Ss=WUylgq^i-No|8mmPuDA+FY!mICMbH;Vq zelJnq>%^1n))vEr8q`hcV6CYG^s%i_NI`_jMdroyLAh)G`18h?7$`7B^t!fsWWqBp zNr;qXZ0awrJ{sL|js|n9;>IwWgD;1%xIhP>?#)%cQBRvJZvl^Ed1~Ko)p|y{XQyvs zsQx(~{mA?yp7|UwY}4NexAW>s^44d`E7{o`FAZT)?@kLFv4WrR7Hb)NG>}oLq1-^m z>v`t6&nIUeoPxhOckdj2Vifd zxuQ?WrewXgv>GXWy(akP_uA+uXyr%fNrAZ_ql;nc)g*G81ihiUOb{T{n;f}yqGxgm zeF|EEMwClEM6+v8mQ;^|M!^z(x`0m70R}Ff%?|nMa!Bz2W^~dt=t2%mXCb^YLgo1aHJ83Ii1%{Mpn=1 z($cKWxm0~RoabqJ20s-BAzeM#^x95!1f#xo^PH&4Eh5>j8Yc&|UY^Zl_NU9CKANhE zDP)J-p`{h)D^4l{V}KhxgVqB$-h;U`{lag8^Ecm@or4GPItHZM>jfJ#-mOK!_fN^C z5U&lcfaxA(M<3?1zJ7eF)m(}b8$-M{_{!0YytmT)UNNXqDz*ncur-TaeauePu+H#buPdY|ye3{){uhS_K%#myZ zS*@*MJ9Pq0?frtz_L@eqX-Oq=gA|qLBV(3U;;A`^cgYI* zDX2Dh%Mi?2s&ajgjuR&^)bhO;*y}8HbCfpU`NAhIyB-C+%v#fn+#YquIk_76)bk9d z6<4e?`Z;EF3`5=_D1XU5V!vv>iTG4cogSL4MdF|j%Q~6@ys_O3eS)$jKu(eR<5d3h zcaRgj0s|Tjsv`q7XF!-F1hYJXdP?^d9Q9t>PV%?i)T>*TSs$@I6lNPd(k@NCNE`uW zUf=#H7)Bc%$vV;zMDb`TwJIZJBq_;D`+8_7{!*%2xedidkcJ9H{{YXT*yTx5CGk^J zS@S8uF&CV#Ad@%YF$BZF9d|o|oJb9_nz3z_he@ zoh(*Y8&s}`cQ1WN3qiw)J>N`YdrAwD1O-QU=Dcqco|hjMSc*XH(-*NH8#y~4Tp#vc zomI{sC%0>$@srm~6*cE}#8HT7OQvGNDj~^z-hja>;@hyk#;`BA^0mR_k!V|-cT&sk zAkBzG#*A9X;cR;fpoAD-ctQWR@XQV{`_fD(;n_36-3CN&?umnH)xJVqiG1-Nc-TLG z8sA-5WO*sJo|R>>MYcAv75k~aBEUwZH%%t&ga=mWNY6eeoerIxB;+>h=GsTGgY#M6W6V9o7o;^|RTyJc;#iKL?hq|2%XPpJuDY|Z}X!Bl9aYt%z z*OAWRL7~HQW!|4^sVzfc!ub5yb}>xu#e{yd0mLUU%VaW)i zR8(9!;&a-bo(C0*$yAlX(!^3nRBo9CPL|Ew=k3MZa?$XUJ<_qm5eX*^pHFq3sFN4( z)%tSrE#9_(;?!@dff*UwNc`(){wWFBYBl~*Z6qu+SwWH zjh|j~cu-#;(c>s0N1@u1@z2}-M+AqQ5WuRip`4^KBR$fXqm2_!8h*`S{dMqX94avrq0ewO0Zln4uTi=dg=vo%4cw?L|N*gRn5BcPU)vdby1X- zV(g_B3Ft^%xNpP+oo&p#rYh~r(=zhx)XzNJGRn3AMxt~!cHad>&Dhv@94GUr!tKCq z;xNpjVkx#yr5+mNgQ7P&f`tw89W)ogagClQ$jB?2f(*$2nwca)vZrN}jaqJ|+O|-M zxXA-16a7Ty5vak&%Uo~r9}HMVs+}}ap#aF!<2vB|M%|h@*UYQg#Z`GHSt3B8Hwtu( znJ4#ML3XN^t1Y3T(#^iF26~+~Y%BS^h}VJeoON}Cvk6PS_tttTU~kui53R0cG!Nbz7?T_cQ931x_ z8d<(F<$WvYm{(#k)XDf9T4>bL1;KE{E+rsV*8@a1S&#;#0$FX-B*rYPejP1KiNyEl z)7LJuvaoqRE3ggPv|80p;cWWnIiQSao=S^B;AMier2YG%6T%ifL9i6xlLw5(I*~YC za46KtS62aJAsOt}bB*52`UD3`9I@}NyyJWuunN-Q7(ml%$b~@>c6(jkyriEog*5aW zh9OTunHP)MS=D-tSX}`?nTDn&kJDFhF)?`t`hn<(W+wgm_4l!u;~>4QJF#MrKUSUpEdsdT#VWe@Kqt+XPYCff1rhCyDNV6mVNb#3FAw}eJEYC$z&Wg9Sy$A z#hyO5Fj{`3DF66f1P`p5OzyE*Xoc^u^JLx2T>~n|C3laim${BrS2ol(PSrnX_D!zW zK4?5u%p{f5DK-sUQ1Y(Qt~<4OAETmAT6Q26z~Nvy`>8j@6Ifx57AN+s^xa8+H1J~S zVTt}7(gckUnwCL2fb>fH6ygVROX*l%nWCEe#>USkohD)`*PIY4D;eoTE{+_arwran zqRTS*`crH@xc5y!7Fc<<6(>>7-uwKLUhe)|F~Pd-d&~J`n1J~}9Oetp;SUfcP~vZz zbjKSQfBCd%2k^6E8ASLGe(=1IG|Lg3{%Yr2No?qOH~xX!_^smpJ^2BFR{2ZGz4o5X zs6e5i@+}^oqZr#yBOkOHu~2$%9R#Ern@~huoZ()bxN_~r%&C&}OTsP^JafQ`;(LmK zL($I7b9L}Nu{Fp2>M{m2hxp>n%n1b$ZEuy|?sd=76KclF;-7dDaCTl(qgrIzB}tpp zh_mMfvIbK{8gA}>57F2$@p1(;T-K@D}DX50mzn-j;h8Tj9EWBi8% zJVF9S{hm`@O#JNzY_9>yiwP9p{^>ui`fuk1Nx^62^;5|<$gls&kMr~_5xii^k^Ecy z|L`Wh|8sFdP;8n*X2GHu*I-f03duJpz%lLCrFM07HRZb95v5@5 zuLl|!;G&LR8=_5jKeA^(%hjuvVNg7WmX{4I)vybxy!z?6{d6t)_&kMVgP!w~xwM*t zVY4Dn_gFPh#^{>Evi{G_!x2Ce9f!FSD`EKMlL@!uny!r81nr2P^Q&k6{z3&rd5_v7 z1OP}xTkGaXnAzYX5#SXGs%#n1#VPZJzj1?)9(2Wc?ID}vH=f7gnf(_RWrVx03e^=Z z=PgcCWgk=ciozz^3XJYb-q( zAs3VsdI`xsA)bQr|2|z2aNyH_6Q#M!uLAkkF|loLaw0HcQ8?TZnH_b$IAt#~l8Rj! z6%eRYf#EEC5Ww2#+=nJIQh~l1n89j%KS40k%nLO2LIFgvwv{1{PR#luz~)i%VuSCU zrDXtw?;Xe~+AK`pq!tpA(uK#0-K4%*7UdcQ4FxP+tH6RuVVl0xSAd`d+Oxdd3foHM z8okyS0KjH`@}zKU??c_nePqBc=x7d{FrFw&fc3umTmen0VKVjsfD^((3pL)W2XHl8 zn(#dvtFszo87tpT4*f!{vo;bOotAdm54ZzBAriJIp!Uy1iofhTqF~q#%hDH70qp=X z%n6-EAh=1@!5EGF_|(1aWZC(v)}-@+n8)!;59mqx?s~qZuKJeJR1pLb)24dU0`wBr z@@7g|?}%PFgq>;Dn;ZHR@gu-7D);sHUUz}VV6`KrZiT4+qkvaoD%!dz+yPq((W4#g&R5QCnVJ(u2 zLrden)J4GZB`_)!`^d-zd5R$lJ+_1~0tTk}UUcLG69T&d1&xKc>KxpppO4dDJ~`}4 zYob+NLqy!q-DlTvY6Zfo#o``@j+gis>23!WQEpYExnlPvW;gh)tS9eF>Klc5 zUo*TV_5x10}{D4Krwa>BQNO|k96N@GJ z_+X%XkB;ABNDuI>z}Xk2l1n~>++OG9shInD z)qJRCfEaCxf|GR*pk;yb zh=G9(FSKD~iGkZZ_`+u!adtDFMiL1>v&Oz9d_SI56DRDEoF2&Cn9&^BKaZ_5AYGm) zdBjmAJq-i&)H^Oo5ZguVmk@ZEl4T>??RrGY->#nM1;4xZ?(Ql8#)J-7@Nw98*1Ib-anIA%@M-3wA|ZPIs|^c-{KMX)OM1YQPI= z7nh1NwJC(z^yq1xa*E@%oJZU?lL}imFH#+^LSXzzQ}JFnOpVp)3tc03A9)^Sz}lSQ zp{f`^P%Y-ED3h!JJ&yhyja$yeruTc7Q(?vi$z<4W`zsqZfD7^CgZ|<>$XE1d#53uy zmt+cJ>zmWdxLy1 zA^gOYs>d3k^ECksk{D)Wf@BT=M9pEf|6}}EcS3a+9DL8CwP8%{DrYe%;im|lvh%?J z9D_CgV303>Hx`b+S{2vn*SaJ*VXFWvx>PM&rKuA#JK&4)@3)rkLwu$KGDJ0ImiMuf zj~h)=1BR;Vf!S|dSJMjURgr7K9ma_5Epu`YjNwvE_ei_XFjM7mJYKKVb`YP+Ghc!O zwhy%^)Bvq%%CjsSDz_TrHOPSL!Cd$7hPq~x;f2Oj&Ww^!cUuixA;Y3qy}Rv=S=T!4 z6(`g@IJlmhd?TAg4%G2hs|{O(MMn8QkeIRm^N5tU#`{yMKcCj5x_VteGm&KDkWggn8KOjh;! zpj_tN1d<`WWugN!(88XO%ks}LHcN7?HVEe7KCF6AQLf#Kg;m84G@mY{*5q8t{=j3= z3PvOXN};hGX>Nrju9g&1-*`d;WY((1;QsF&J1o#_yF={3^3@F(&}GI>d4P zX4^CLnV2!e423vG3Zb%4;Ii~K)7WgeO3CwN@n~u$p>8E^H%0kVBW4}>GyIWRjt38j zCuef&)IMCXQMVq(ChM1i5!hzDgzfgsS|Hpky zR1b;4#@flS>PyYmb?8%e-7LlJ8axG#1kR`^E{C}qoYT64haZYh^Oz6iEVI>Ck6IGr z-21=Yw6pWVjV)Nq3b;HiHtE0ttmn9s?3rLn5eC-#ANah%^a>8pQZExs5d1H;<8_i_ z&*v2{In{_7wYp8PriyOjJXmLZX@d+);>G~T%xgP6dU$hSfX8}5nEdK38|u?}79pp!wuLsHPI>HN z(+fJ_3Etf~J8QB0g9ZD`7F4ne5=Nqboy!t&ue!zX8`I86G9&mY3W`W|GR{&KKGszbdpX z?cR|M_&gv)GGU7t;luSlF^S0;U*4OrHEX|vE5g_#auh`tGCM_ceNKJ}zRP%4O_vM< zNYfS)gH0TmlQ>M|Qi$PR4#_<~*3?+?yO`|;PA z7;A78q9g;ol-%%M z)O!U0pgRmmmSt^h@+_|$W#%N=JmRt*7w&@~Y-Wxy=k?cn;{vDm0M|-b=N29phKj-{ z1OR94iNk~z7M9WpjJd`6HV1~^MdT?e2BS@s7|)DJdN;6UJa2W>aAMb(_tRxp*aWWs z7l+CPExv7U>)yTbIzVSphMq64FK(8Lg~Jg1)%2sgq$Trn59zL7zs+k%Eh3`&TkCEK z_nJ!`7WweV^391-OXd+>`@%|UC`fhg7GnZl$OsmRCP17kTk{zm*9Ij~umxw9J#tq7 zZD}}vhVAOhovrHmF43x?kKUJO%5_i>0$y@7TN?W4%Xybf0=-u1k*e23#ScG2T6+&t^I-$}m8 zI0C7)fx|}+TRS2HCmPu*V;)9& zGhwz9WzTbqObI|IC=Af9!mXyNfT~Dubt@-e@hV+?(KQZS0L)kIl`JeZPW zKD%ai1gyf{Uj^man2PkuV}o!2dZ{ojFN{0_>q2F#=e(H08~kqqdLaav*3f;LJ+_QV_(iCgX7)vjcN`gWIwB5 z$x#m=x=8ttf8qBV<5?6W1`7*~eXch?kYi3ML2x8Ko&$_|i_v>0k|ecg$?& ztfyk;?5z&M z$}pUESlC({r~qt`utVODV>gk4+k_ekkOHWYfP2+H_bg%YCpiM}$dzR&)$S?SgSH>H z?ez6NEO=0MFPQ)cfDJ$Zd}T)FOo*t5VX~3ZZ1>clzmY76?gP_`Pwh`Af1Up=D#3g$ zjyl=5k3j`wx6=Edt*a{%6tHw`Y@J0^zv~`TXh7H0To~2V_oq_g+cgY%gg2|c)4vn( z`auvei&{u5-xx>om8?pnU;pVp{!`@-2sI@7A0~DGy^IBh@^i%0Mv$*=_I!W3hhHmD zb8;#H>v9%AV1hYV5s;DHvl_u!xGg9))!zOdBzEe&ImEwM#%_J^1d4AN|9OngZAHV? zezlYJifR+kxm%iaNV(XmZfV0FF(Bo(PvH8BSqTP)ur2erAIbxfpz)X_{Xc(9B6;xI zey)ArXHqi}_yTvU_A@FEO**4;neK=l5Hbc`BMIsy6ntmm!JHy*GGHDGte!tAUixCelO0c;$)q7i;^9mgZoyUWiNnqNLxcYeq(I03hcFpSOxNbe5CD*b*xA_`gGbyEV4@%LNXsB1 z5<4u+%3n#=!f-+o@t+@Ngo1BDk*m%m@t=OZs4@EqQ&KkYDjyqsUe%gxha1b^o#K8! zRmmGLi#(?!cIOv=>|v9;F#o#uAfZ`F0+BNkAKivl*%ugpwZ_@jFaYxRmMZLQ!6a#K zfC-uN&jt^Fys`(70z*z*x+lMFf{2H{{*F3#`_@ zcT(vE4t(3u9(b>tQof({?E;@9V&wfVTP# z@)zKH1r{NcK7jNzep##V@t5l-M?5|4K;yIsFpETmt?eowk7?Jb1#q{A1A{hcV8SqI zjeMdKKeC%R0%VSD@s;*nYhY%S>#geG%ahUh-33*p>fi&=;!Ieqb)IR{Anh~*dJxLh zfpYJ*jL$$~i zOO$xZRwKui^lEpatIM5ZdT&QKk?TRKFf^ZW0eDj+4n@rj1Y#lB)_l!?1q7JTCZg{h zXVHe#x4ruPUH-m0pn%f+Y7oZyV{<(#Y5*2+i-$s6Y|6?Ii#2XCUY9J7<31^`rwBFM zoeo5FpUCrUZ!h6c2+{$KY^FJeMRGVL$eQ342IG&)#Nh!3-=94our!PdGe=FAQ?)LZ z6F#23!~M7c(r5n*h)UTG76#%)G`{Q15C~xR#0rAd16e==Ob6m4_@p&XrexqFc+xyx z<5~=}*Em_zMg7f7a5aNm&wt6RF^z6@ralRal3UZJ;tNAtcX#)Qs5jI@tH>cc-o0A@ zFs_sN^B3)(1iYTGISU5~B)zGeq~r@>VDU;)dzYhnLuGX$Q>m`(?OW}WpadL@Q~CI2 zjI_=9V6o5-AJ~%efI2j6`SL6tChY=@m8s2BU8vv|C4d*%88G`AvJ*=t@p=2 zu9ZLMJ3z+);ucbGCEd5BP{#8m)pxnKpUJg2pd=av80;iVYJ2g(v;ua3(`DwH!v?uz zQr~Oz+!_wx1l~7g6&xGxr~oQ|+h1Ef>C$*$iUQZ;b^%?CHqb&rAzCi2SvGd`=oUzr z98&Zp&($dn15;5d&k{FDy}?p7_kcJDB-lVesayAemwEv>EYiSytTggbfqhr#h`y)9 z3oHtTD*9*6eakY2KIOllgAl=d_L|nahQ4oN6&mHjhZ2>GOK}T9LN?JX>hDLpwFV}2 zB6Vyk$KDGXOm#IMSK(d&cG=#L_tDhR?x+}5mqsQkIPXaT{t$^|*iL#M1IM6rTGem| z=nnuP1rg?|Ai8V=oYgXeeu0rO>H8MU)n3#1p`2mDMhF%@4*>%~_*;_UJgXgvf_z@GLA z$F=LIzM|o&i8g==xab7$rkB}C0HAc@gTX6*_nY{mD8B~IZv(tP!?$EGSr|jtd8#xu z;0)T{92mz|4RY=~{@CSKdwG+kmeJ0Ut~Jiv`d>W|Yx(m{1X2j{u=Zn+>|O}(bG$wA85Yv?OC5tuJE8Y zdnm>8(R0agmi?KKeO$YM&-WP!g$jJQiG2hqXF9kFn8Vx)* z%Cp`^LzZu^0g=H3iGw%@7l^Tvk?oP}XR9X^f+givm?hjSEGz~ib2aztF#Q|E#S`1c zl-(2^a~4Uy}+VmGw?hp1;L-PV{b3v^ACT6zbr|_OPIbCO^8(D+ar;!hZLK( zMFm`f0|CTz_=DtZ-ImCXbLr*<>Z}^t-8a+SodFGhJLsLH9up$U{!!l2m4AStz{}mf z>+=SlW|#WycYTxcI1=z%P6Ibqk^Qn_Qg*(6u_OTjfyY`cYZS08Jv-b!%8L@Mb(hl| z-M;Yw7Gm1sO`1aAN%h!0n-lN^Q^%r6!L5>RQtNC|U1n`EUP4v#PsUrYBj<|;g7#la zSJ@n&j4jEZ3rWwrC1(io8CUQg@+>k6PF5Ww^9C{zQSlQ&7>p_SyOMUa^aM=jR zE*6xGY)h?iBVSzQv(#2JSueAWI+%`h@Swf(HY#032-uGh|wg1W14}Bmf%efRHfg2Jn#wpwxZ@kV`TFJLmp- zfa>u#*CzN9vqm@zpU*YP0n`vX=uCdL#?`w6masBJ(?Jk^_4VovoCpeC5$314A8#9? za=jN!IrwOMx=+^kTEt}sPpiry8~754%Mx+YjM*DU)A|Ruf?1s=8x=E)=O=r8{R=%w z234X^&63ARbPI*oF!Amf_Vp?YEON0UyrBi7(^9<|0&qoL3@AMp9u&tgMG*^ML1}o0 z_=X>ho~AjPaZXB8h#O|v22I}upfrv!kPHf2AIaDGqDuo$K>dp^Xe$^)f- zG(SckTYv1Y{PYOjbHLL9R!?Y^+tdOog47L+R-gdt=f4*f_RIIM1wr7&szBrvREqiW zZx9rcfwTvx%B{fvl+I|aXQO2(gtDl!oJHKE30_q7wF*V?6j4^LOJe~;p~JW9$QdMF z6MbDL!t+0zXHW@_7M|-V!Ty{rgJ!8Y@tHL(jP#S`EqgcFn*X*my$= zI9ruGU9FRiVkP6&Sz9_LrdFLn^D}~7%|4thdTN8Z8tys&FWmBhHQT)@wN72z+m)_u zqT){K`S%r;x)RuvJkCP_tir6uq&e+=L=hum`2q=*be|;h>{rVHer`kSOJt$gODDp- zk}APEbe_>Ns9Qp|m{%Qp^33kjvsF7#w=!#&6xbbUw`KCax%$mL|JDDr@7NV|#(Snt0@917OO5Ubq#c7ha zlffPVRMb}BLA*Gdawkkcl>vB*2dk-~AkoVbDcLQ5MhO2YPW*BH8WN{1H&-7{HQC%WFI}`47hhc8q*K zEBL6Q(`~Ic_J{uJ4gCCbNIY6E7q#N?+qXY9)PH#7zyFHh7W`F|{}+ELEl73EIR1FF zkPu8lFcom!EzzxV(83_;WPOfF8Zp;&ht7JO_eSDLDD4-}mp2u7G8d619eVrrZ9jV6 zk`N-M5Dk@#eVgDXUp`5Um9okMX#*oEr~YsY+r8^|!D@1hmS0U%%IW=s?g8sg0 z^P8Boh;8zP`b%i>q0MN4dj4`xl2oEsRlxmz9U*I0Af@VE1!LWeBKBKxRjM3rxUOZR zid-e_j4QvJAs<6dzxiH$-Emyd@x5%^O$FnP(KfegopRK7WGJ)8phHJ%zr;ooAD|b- zaiPJWl*r0iJE%_1GZA2*6Qe(9J)Kku09-MuBCiV)8Gvu8<>}rJJ_LhwYp-6^8vx(h^gS{` zhcw~Kb6Sf9uPUZhfI=(?2(oG9T~n!blknWw*$HQv;sBG519j^>_++mh1wNV2Xa|-X zr5b(=3Tv`$VJYJ}aJ!l%=II+_#Rk9~l3v73ID5DIOJe-QzdZauU2$!1;II*`NQo#B z?tjqCyaO0PG}z?BMTaCTYLM8QxjBIdhSv%n4LAW&RaGe!Yqhigqjzv0oLB9FK?p|A z(Pq)$$gD+%oj^clO3q*&eUFXX2@PkY1r^e&Td~K9N`L9PXBb0QZpT2Lo@y;syQh+$ zhen=5WWD7`w+iTIvRXWT>}8$B_3$&lo)g=HNyxvP%kOa$oO&(YQ7gH%SPdLxEGQHTY~2FN#H50(0K?~2?&ETDYyTb86vObvH80HNd%Vpuj6jY*o<>pFYI=^Y#)u505gyxsB64FPYc z-&hmqL*{bjBIm$=e8fRKAK8~Lwdc_rdx#78x=8zMudfV zx}BSNlwK;^em5EcN|TVfT9BOFInMLR7g5Um%4{fs^N-}|&(G=S?;*R?kVd%jbs$$a zO8?ABH;~a44sHryQYUnP+c&F_?6CR}m|*cS>y$myk&SkT8hBsG;ZO=c+-zj>X4<4F zwbY30h|bqMi@&duA^(NQ>Up~2rqx>?qlN)^2subzWG=6llReqZ*J;HPofAX zc+F5i4blQnMKSRWp3&V9_BhsDRpDpPUy$^R6<;>^HgcP^3y;-#mUkxA%L6+DYT(h) zTdk2lofU{MtDfwB)PmIRO4}6RkLKmLrWVOre{E}p4{m^HW3*5zh)T>POn?JWH@2<> zJ;HlzI8C0!2b_ee**L;~`9zXr>uLUi9 z>D?FbAiPJuA>&yI;C}GQVUw?6fY?vNmsxdbZ3@`HM2FG8V_6NR5aM_zr39>bE(&h0pIsJU){gE22MGdV#I8*iXM~2kUhMrZK1IsYiMs;>K#F;{W9yrgLrd z;eDhc2RNVmkphluC4hA4?DqMxEACcq&hrEB%c-oXV}pvv_f$aq0n^c<^|eC>WzEeW z!0t7t128OwNL;tt5W{bEU^yrBP@|M!=FP5D{KF<)TId5^AEQdlb}pl44{@>tq!-9< z{iszl-uSKJpx|6f>0ZQ35K*wlL>$q6Y_m<$n z@wxZ$?Tv7U$uRl=*+k(=;iV>u|3id(3c=ueeNn&gn8kjXBkB>DeIa?;IOUzED=>J7 zE%4;}Ck$sYf|5v(J_sfr0`8abV3yc{=oLJ$m!d;L3f#al>wfVAwnd4sL2Q} z3zrCC$v0ORujJw~D^ur3u27l^b7krg#Ps>lavT;&0KKD zhnqsw#b%rY6&>a7SPi0AkRn($WVOp}=zsyLc!<ZR7y}2~GXhnAvpK@Q2 zVn~kpV_(6B#RTBukXnoL77a`eBz6JTo|U2~%H!Vqed`ReCG<6fhJx@ejF9n? zM+0m8XyjZC#Sh@Fe}wyZh1BpAi58Sqp(xlE7Kn&E7k*h{_BuNpESo>P3?b) z#uW)jVUZ7f;9oJraebnCx1^dOPoq_A+Sd#RFkGH{9@^KFfbOpYTt4*9Tk&hrwB!4T zie!5AUV2KXJ|*BT4F#tz#}3JK_ywTObts7ij`({nMrID~qdt#+ZTS4b8bSd?KpD#W zs9*D};`VPxDZ~LCr1h)%LQ(Pm5*-L)A#2Y>4R2rL1pC~=*gKS;3gcvUIp6T=(;8R% z^`!hqU(gLtcKOD4lAp{AhA}EBwxj`1k-;xJxADT45$|?}(#AmrOq(J9@)UkVeqUoH zYAsMdH09h+hEM_py#JwHf!D=-Kp9nZ!+^g+2AQojTpM%+n(&*oQy;WEzm6dKDYlCJ z_kTd>HKZtBmO5Mi;~oE?cHmFTfRAss&kREgTq#=VNAhQSRS736p4?HAdAwbln=bw| zR_1_L%jUPg;0uR0tA+sY)5`X@82|VGJBvdDcEDYylrLn4U+0F39yV!PV;R1V<}q_( z1}6seNA+Hl;@(+smuFFZBfLJFsQuTA0jo^uBmsyZv*A}*@$0|(^IyURMdtCHfG7X` zEi6s_3Lo}ZstwsV{^c3}IjK9o1Ku9A_o43p;X_G3gaK5aIj#iA{q)ZNRIdE(^FqO@ z`G}QViT;;E`RA<`b_G^!7h*Qg{cFJd@u7Ugz}uU}WpAecYlijX6#o44|1HzEh5O$! z{T^igcba~WsQ)`nzsHUL{|7ylGs2jkE(~e`{LzXh#n*%#G?P?vV~6Oaf;QS#_ifH9 zJKqXOMbp?X$@eFFO-<-idSk$x#?NrCg#p~K4HOjgASvoE5Et<-GMt>aJKLY$Q8b$* zak}D?@zqLoF1i7j880S1m)jTLU1(z;dVfD?29ewO`!$k;Mz?rap~ToKE#n7QpBwhs z;qjN-UXG~-wQlNQD^^ z#EIGxb=ns=7I-4)ALuMjM#>3#z3bf#qfyXK8sG*w3Smsk5PqaLH>JkNussJoi1jRQeRKbg@F)0C?(Q67fFZu+Is4n^ z4{!~$X1&kz-uc}Ds0n}Aoq1_q1VR9BmN;Pa>E)UMjA&?_gYvK5K%UzAuKodCz7@8r zRs*>xLtujZ+|+Vn*-@fVXVUE(Q`=t7^m-ZpoDb-ssJxI3e7LJ6P$L=r2lMj{@OTTw z;b+(8hPE4z+=DX)q$p{)p_I<_7wh;^b~Z(}AsngXZ?fY7|3@eQ)M7NBExG&d7V?c& znyBxm_SY@*%<)424**}YcN{kYca?a87SSD50T7kHU{L2hs_&368Tn*Ka!mQ@MVzBz z==JFu#N_uyS75m%ALZ{zNJrwXX}23GEktn*+}6 zlZPg+hiXz~ulE479SvYwtK&1fRnnA0SW@H8Hh-E>SQt>F{phd^tbeWq0g{Qt5KL0v ziFNOW5<($1R2rRs&$m7?fj*)4->n4IpcCN#MgkB=ZUHhVSNdM=tJ8m8nMOxcp+^e> ze`e#s%y$5e@O3oo4+ZFng@eXV=w8fxC{r|3|A69uRy(m(l%Id6PR$-+8nbLy3i1t| z_-M}&Hl4TP$=LxcFnhX575VQl|KScsJpX_9qTUpk)^nqjBJkeGu;YXf(TP`5G=fxT zGVpSyHF3lt*zoz&h{kt5-s%8KUcF^Jqk+h>CkGRL+jX3OWW;g!1W-jh*Rrk4>f@s%Vb2(#WOa$Y0+!qS z#iS_|okP`3^8fZ^A8e^)uKZRo_zk%G_v_3Nl8^8gpNAts=@=@BIIsD#jiLf9?Yy4N zFrsqI^xf@zSs-3(qxx~9&f)ZHqb_hXauDZy`?Wo-K=gihB5{E+8Dj;=dn(m_uF$X0 zC<}{Y(&{!@1&kg;)qBjhFMwQEs;Syks6WDTpxxVu%YE31-)=LDRMcK2EI3#y2yO4C z;_K9;1CE?SyJM-6SRKke9)AR2WIlZzG-(Hu3A#wT-P=pY($%%&1M2O#0(oMY{&1o*iLmOI zgUr}HaQq09JaJQn;{XG6m5)w7gN}er7i(2ENxz$|5qbZ)O$>Rdf^oRkeMG}MN~oZq zmcw)jm|j0tYqbV!b61PZClcfvQZ>u;sT=q28-4GykxxS=Pm)Bv&RY?yJt6vJ?Ate% zL$QL14kY?&=k0IS%h0~an!ue7{Ftk5+8s^)yzwTMPB9V4!bAm&d#t`WTdsFV6WIX} z6E5dvx%54c+fqWUCWpGLAE3?lR;Ryz%w~2Rppog|3XfpQI;*+39Es02&4nH6CG&&h zdM!8S39Knvsz2SrF35eZ_vHZwD1Y?T97q#zPy@zEAwMn?E(;Jf|NH8JYXY_a-*UP! zTernU9>1vd<-xqFlR-fJSWQJ&?{^s9i0lZye4B{sxoJ;*o6Sd$oB0oBss-cGr2N%d z(xbvAh>c~NLVULCOegc!ShJRmw!aA^o0twAnj~CT!$;cold{p$It;T(l~;iq{x=D& z8k@F#Gq~f05^8{6oKC&-oKNE}pbVWj=#7Jy6AS|K<162obe07MOrE^e zYoTc9*)_N8`qNn^N*l^(OUt5Zw{eTao&&NOAgw?6Vb@$7q~kO&@jA` z8*cl z&CU18rRzK`E*CMOp)1oUf+onX1i6-KQ5nX2yklwtvd0 zTPH=N)-%{v)6-fdumtcD6kv&y9hIbsc!OS2KB$Y<{448NZF1Dv;BYg~S3kQ?LRhey z+BR)w4dC6}14g)Do6MdJ9K3^^1G9dtn}HN9??3icnX=a{6;r`lULn zhElbS^62BaVga8PV~UUE$_H@3?iRCf;XyXkLvh~JSU+F_%}C~k*gls<+FG}g2>trI zGm|fSFt;*$u|r>cF=KVS!kjpfm}w)OPnM7@(jz2=(4j z9!|%{fBRu6!|NEaY*1p8&%hV>s^=>2Qt=p8JlY=;6!XuI-sPg*!aTBF*$_`# zk5kfet(Gb_ja<;}UX7wibOjOyc3Mc4!s}%qB**D7SJnKml42Kf<$FA?2IWt7c0$K^ zb&1v(P2uoOq?U}B8u(QBD|S~SoxlL|Nsd`F?XKbbj54DEm6Q2qE5B-b&R3%|L6M^P zl*R&C{IRO;s({GK0|PgSkgXJP%lmUrib1q|4n8jLV~PYSD3rnn|B13Ak~o|H?tDeD zyBp(>g8@YUBqCFhD!S@QaR-&l`sjc|*wlKn?Fb(1nR<(cwc#^LA&DN#T^xH`$G1K; zW7T*Na>VCRd~K)sl+|5j1#&qMf86BmC=dtE*Xz}5;TvzHe8gi$1~_G225d?)!BtkhM|g8Asi0o8C9HJ`E00hPP%$NxEs@3*hnk&ee8>u329FQX!m zJs^uTZ*48zS+GQ3&snqxI?DEMop$x~Eqc7hUkuDG?TN122x${u&ul13$IXwnA#rrA zNQC`Oe>8b#YBgNLqutVX*}CKncCF^yPKvx#Eli}f-TyH~^|?#Lcucn`3tcjuhQS-j zy>QA~h0`E(#)kRFS&T4v?vJ#?b~iusX!{?2J&%X1rO(4kl#Aq~*4~$3OD^vg+2o`4 zcegjx@g&mM#__vXsO18UmQ`qAZEtgvg|RKD>E@rI<<3rF_8&dEkAII@ch?=9(_B2? z)^yZNjj!gQn;^d>rn|?m$MN#K0d5evoWF%%il$7QN$_v$W8)Z<<-BXW|DrS02%gOw zaYUcKOqUePt&r|~8&8uKIfRy{3Hs_k-aJbUxNFWeLEJd}!mOV6)It~Qv7qgFj*QNR96tBcEAv_vGPHFqZaVE?d5&r?J#R-ba_`#Tt+UTs13!#cUW6R? zOKZQ+d|C)nBHn3t_|tyj%fgZI6NtRj74dr2E3|k_kF3Yfs7O8*GVDD2jnFJio(LKB zt3VoAw14MRMgPLtKjrom&9!*Ac=Y~c_JvSXo8TOzxsjVP4fJig3Yr~5XV098555}dVGTOeyaxpmI)V`UD+OeiYn(nLf-q$be z+h5^t?{L1jv1KlV1{%>sC!x?VN5R4fdftie@nroOh&1WVZh%qB`tP-ch8K>#<0g$9 z6)xy*(r81rrXZsCYvDw);0703kxpSku5xE^MCvZyZ8lmIELQk#PiQ+j5%(a_`e1sN za_d0>8Zz=6+=La;sU1LOPCKxw=&)wo$;v9y&d-Ts)02q`mKYEgNZ_2l0!AD7YQWn> zt=@#1ik$=Sh6Op&Ki6>!tV0B`Hp8x=GnLKj0dHLJNJb@2!o%;7YxJ0=M}foD!) z^GUv*+L*u=@eSb#`C%PcbiT=$P=)yDXey5zArQy_kd$roP>Whb{} zU9q~8cc?4bU2Y&0s7#!@cu$DVkGkFksEpiLm~z)=+|IY&!|S6M5+YGYH%jTAh!eIE z_4qX%3u7Qg(F4qId)L*gAe97V5kuz zjJ{c=W;0hyG_EngTwvE~0TSraaAJi)po_N_@_rU}f@vrB#lVM!!$TJ3sv$iN%am*2 zYrSu(S1#_Ag{`Svssht4YtCC32lL^axFdSg<-0lUsn_$xS|4sR!-pucBWX+-ctkSM9**UfowBaeD}6*eJb zCj$&bF@`FLw&Ia|v7$Zo@;U4g- zk)(icw$5to9lgR|kXh1kDe4Sa7_Cee?7JL+6dPwbstZ8aR;+sEM=IbXmp@W0ARegR zQ(bB@kkl4#CQP**{^-|je^;V_v)3)#bX%&DU+Pii-T;<(1kmFWr1Z zwlo^;VE<~@1so%^>~Rf{z8L}fyNV+pWshkyH2YYKDqtfi01XVjYiRHefQ1TPgK$a4^mao88vyBgw_FvbV5D zE1Su{3sslCE>JMhZ|eOJ7TIHhKEr$N|joGw$ZU2%)%r%_+dpA`0Oq=Mi5H9F}VbMThG za?I|*m=XQ>E4dgJx*9L1a3xQOJIUU5}3-AK~HHMUygy*t|Dhd%?JV%`dl_29Y^MJePL}d2Pc*MK|g|@p0-zPc_GEBwD)NW~kOjyduZ!s({fRdmE}HDg1CdZnT``*z`ToSl}bQ z|B4%R0jpKLi8fNsGpfW#A<8W%`Nqz9m>omx)j8Lh@9dt{e0da@3@}c7MVrz86m9;4 zru^(mtkoO{#K^-tDcayTzN)YZ?iBTbSmUEwO~P3C>-Huc_tz3f03_%I z9QAkMz)>GAw0-?QFh#Wib$P6qF-uIE-0biTbjnSy5&cT5*6r;20V z)dZa#&kYBa44VK-JJX>*b208Lb9-Ohg;2lBXTCIe-7Rq>a~L(V=(ox+qSud1=f4&^ zCgq59x2xpB=kX3|}S9}>`fNhxkJKtyzZ&|o1+D+ou z5p2(R)g}O^z)AZAOw9`Nd)yEoU{X}NXmlDCx z9qM6wd>i+fwKj9&M6C(o{p+}JS6k{vqlehw(HTXQ0;@`9e_t|gg$ee^`w5ZjZy$1D zetu@WtZ%00B;Z{B$$@f3N9a6n(9{iR;VDJVLwtBOA3bgq^A3=0ANouw_S1PGdujaF zLS~4xxCrSz@o`l_6Xt+CnOcK2*f9XVs_Hk)`@IhBdduh>iBw6duM_YSn-pHWt!OBEd;koh*YAAamF zqIJ!M!KH9sDUlgM`UP|^PWTt|Z9ib@>lt1m&~6N7cFaJy1QgPbMQtTMAwTit({#5j z15YlO2$7OCJXZfX^MtgDj3DU4^nk>rO)wv>fzPGIjy&8$WH*Wop`70i^6+6Fu>S6e zd9OFAdg{^CB65h&>-jud#?3W=xAcXe*4Au1b5zvx%7ogL)#T!r`zQ6tbrsG%XXS zvGo!6FYFo1 z2ke;P`t5A5>X$nv-o?T6#JGFTQ-7SFE`+24e><88^bCPs3NvqH`jDH-%bOt<Axj!#=|8~0Uvh^LcW zV9@m)oqu^pE7?e*H|kYsgW8!>u3Up>fIWNW67sn7@%@1}4c3_=LwbbR)&<)es)!8c zVu&T)UKqJCdiI(9La{9jbrl&|)Q!Dm6!Nxkplxax-tdvC{kFZfJY&d($KXzsa9-l& zKCH$4X&`>2!Jh=XFW7q7>aneszPUBdJ`w+BRKqV}b!@qR<3!bXluUN~xV zdQ>&&Xojn9d-@JkXF*@VcmBb8@1MHMe-T@XHyHNgbAkLxF=nKbaVt_Ib(QBEipmmiQNqDP%P-2BU*Y`UyZrV5Q33>r4lM5l~b=Z?R{>b4l7|$Fs?gG7A14A!V zg~`N2Dzxi9F|P*(a528InM;0FLI#-VU$_jL4(fG3mWY$NXg!cgaH2@~)B#Uy(KP^x zmjjWjJwVUe#PCj(>pb;~Jpa~hXRO}>Kncg)?%0zdk`=kI!^hH%%?IP5Q~-7!r!$Yt z*1KhHhXuW{Sy`UUyZ*_JSBQwa-K82*@P9Z-F$YRNY!;jhQ~p zCHf7o*>C+LZKVGGq0NaHtsV&CgXN~@o@UjlpKcfYw7_`)^o;uy;q4w$+Tk$7hvC1S zYB4N}dO#OO75K}k(wmm)DKska%Q1M>(UnAY>x3M0#l;nJ7<#FmP%?!;xP;Las-;MM zR7sKk1vKdG?rW&)B z<%7f74-;*w+Pe?6T%#N~vEr`}2N_(-xvYY<9eZIe9TXt;DXuUHG2LN23Wzp~LKmmB zxDdUY3+Eqfl{Rg>y|S^I7(rZcLCw-w4F6(lYiq!?mg^L}hrAcShYFypNCs{l+dx@|NmNLgUP(cn zZ6b+etK&kkayV8v?giM;oVgq-gE-fXlY4c3~4Z5VGW zC-gE@$V0;I_2n*vA+=R&{XEx&>9{L9_o?Rv#79wo11JaLe)}l?gF>DD&WgRV>9ydn zYG0*2?5*`fP7I!@OmolpVAbE?a+g$J+;CcvF-wl8PtPD2wtYK?Q(;pyDix4PUJc4i zVP!9rx@3WoPGze5z`U;#CeSzXhb?!ORafR>nb>ELF-*~j!wmePnv|%ss1X!VEWoaZ zS?)X+csFV^8~%7(qbO?kVG*P|%gJNah|W^^R`Ht);8!W+wE!*Zxz^RA_ng^}J_ces zP2W~7xfpD>zjb=v^FjA*c(<)J5GP~t?$ahJ64Lg00B^GqP?r9#M8Q7l066x6v#2Y= zKaOb2Ms&SdAVeH6)O;&&4n^=4z==@u_&3-Y+&u~*;q_)V@W!hS|nwBHIE1LQCl zLY0(QXWS63{=NS}FV{wnPk1}ZylDH}Xs|rthK4y{(17p?T^s52RwP1OSi2p}DA@Jg zi;l!&>`Nt^&(iCS_GIZu<n^`bgT+T{$hwIfGQxc*#H=n+v z`Gc1Ua{$BNFka+{r+8d%eFShRXB=tc7GNE|+)KQ$FbfSBCe6U1JX>j)48~J0j*A6y zbBg#mNe;QXKf=u4T&n$l@1MV5dZ%}~U=ie7Wj}|kb947^?A>4GQ3B(%ZikmfR$mN; z{wS|Cp8T}&HM>CzfKb>u_cuvMtEDC#Oh|qCc`&Zj>%ZcmXsk&^(w?y`{x^6k1Z!q$ zpRru{X|qd*EMDSw@Ukm^dB>HuqOikjcF4KwD#c+ZAVDI3OP?00u0zD01>X}(*yrHG zGu`d9?ir@@5u5>{kK}`o!ukG)Y#R_m48kC7>|6PX=wXRYKDlH8x><}ea#cJohp8HH z)ZXZL&BEw^Mv6jN&--$vlYVnqza>3+MM$bUIb$PSOn|04sJu6gOFfSx{=~Szng7F? zUDIpT%3t8(r<=m2&%B%4ufH$d?s!bQ&B#xGJGO`6!%Swb$QD|SWiV|CletW1r#MnR z@=J-g=C1PZRkax?w%Gq{F?QtFmP+Y7L#bg+OV}PDY5@I6!QI?IRRfg8IbWNQVW7O(g-jGtePR2A! zdAsBV>?TIxLNi-qv%G$ZV1mAP*2k^ihBZ&;Aj1NENt%bBdim1!i!qDRF5NZ}P?KoQ z(DP`3W+RB3(f``ZkKMS^wR55usr~gTjo{c>CC8j>_`SB{&(H3dk;Dr#o%KoY%)VFd zp^9?aue-OVruM-64%*DJzqj%ZNd)o7Mn>On_ZNjZd+HTR!f==g^EBx71akMD0ib|n~orP(7XaJ)qlq-AXb_lwreFl1<)rvp2Blte`E6LR{s6Yw^Jwk z?10aESe-)m1Y_!x=iRC1^#^>;mRuI2&dD~Y$*`$)FvAuQd!`X~?^4WJC9CLJX}x0e zS7}QFp5Oqr&pU>yYxvC4$;v2>WY~-0lrtSh|3^Pr#k1I^UXz2?91%sEDhUYj9wvkk z6X~w@@JoM{Vp^!u4Cd)fFu~ok?tlD<{(=!O>l*;C(wY+ZLUuAc#rfz*%(_kELd%R> z%PHM8h^f(gy^qaM;00GjK{1+?>Dl4{_58~C-jLy|9OLX398o&Vxy;e)4SHTilx}O1 zxoN9jvd6L7&y1ESM}?etN+pH!rJbg-gN$__*3nQs$j3YDa4D|bKc`z)br?Z8L_?b+ zoME0v4E}-=3<>X#=A?XfhNo29%_o|L7!6-D+Mqd2dOSzqeP{Ppu9fqV((gB+fD<<- z3Y`lISJ&$uddI%pMM!pZ?y)?Yi=H@WXMbJ-Sg)5-UV0J_@X-=#i%qas71M4``Qgc= zIo(-1QAis-`dvG3Pxx4<2@OWbQ{7(T-V955Hf^8i{~mMym@gfA(5vs8tsi#eu9~Rv zCeAX{7Ck*}n4+lCSYJT)Sr`d)Z{(vvSV1P@r54rN>j@jyJ74xMPVL9|+=dAPmB^|B z<~{gbX7!_D#J%-gLGD1~ofT=3>ns}20a#AmmP}cd+|XtlK)Ed^#7&3e!ZZ?_9EIGE zMKUX=7Wl$cD|i6IH1sNk?MsJK<0o)ifJ4tU6AJT;_uZD z_n@0pEx-ytG{xxaNw^-E1R=eM=Kn5}B1v&(deI!I4o{Yk-2Rv$S5+hodE%ORoRQCj$!B9$h2D1{FlA)ICXhsrLV&WtU112 zTDoD5klOPVfE-9b^yHIn1dG_6J`oKiyw7#nGN3YtwbcGlye$NFHa4|CdMvBgtVd5S zwNqq%za-pnQqFjhyLEgYUHf-tu;0Weqk3xVphCa;?m}~hc6V^|^;zlTwB7jdpb;V@ z9eZ{_A;1G}#-vQU4&?qxIA__cu=f3%)&_NDnN865V%U~V_p0B|sqf7(61xh#JD>u~ z#McBYPMGs6SL(j}eyZbEDkgHkC=722EYoBKN?A z*N0@48?+nO>4zXAq9g#iVoi9G*SSYTx5NO#KsdsfWX6RX4AEEc{*}!a#0qJUv4^c` z6_JOadnLz1Z@#w~m}8{TM{r=Fp`6j+N5WHm*jt{0_pq-hG=e=at)#?!<*fgV++?nA z^3BF%JZ}D6;VTuZDW8#VkkBzyWse5qvK}vef42@#X$K&;V7xi^GzHt0S34oa+`{Mv zPV`O&Z~CEBz6OoEo^)Tg#siGb=xFizP*jMQA&cMBR-55Qdy&TcKx7k(>TFYc`LC|?rFI*;fJ4v6wfeDxs5OK+T5>$Q57!tY)$9~8#bN|iLi2Dl)Spr zH*@-Aod-m8&2xZa>Q20j2J8q;AZV%jq5755O1J<|E_t_Pwbi|3hTRlBH^Xa;JNgQ3 z*EJ&VhDUMc(;n_?^Y@ix1%=UrCqOijmct+HZbBTZvclQphW_)t1i%H)J@wCg>l>c? zeq2(MAgEd97Unc?alt?XbxhSJ8h)f=#8$L#D0EgVyfOZzvaM2n-@E{a$n-wros$B| zrvnC`c9aZdASw?>l+FGWWL`Cf?A#ObETZZdJrUuMxx@eS4?+1a&I9i71DwFlXiPR6 zZ*1EM)@fugne)>deiG@G<;}HWD&U@8T6Mr zODtpyTlZ<@E&S;WN+Zei`-xOOo8!_c{M$Y6Os2guNbWOfTRb}(6d3Y-dtYA)%F;yD z+J9XC^y=`a|H1DfmO5;_`?S%*cT52uDFLnVF=~Gjh%cc|o^FmazuQS`byIj`z1OR! zh!Q{(*`DUdbNOmENc`Y9!`0Lx_tvxeV_D(NG)!Z8`)9ck_k|(qX{&v95sDK~p5(jC zcV9qq7e86AFM>Am%ifHr|{nZS^zAmvsD zfOG4Iy)PK3RmPHg=Lfm#lTD19>XaF|?;%72(v77j$$yvKgW0OVkvpy$l*{HCT2z`( zOdX!abz}w`%@`qI{y`xM1ys0OUAlgcnIkVE5Zsjno>Hft z<@;=6O%SvG-DN0@NyP0*LvjBYd0%nmJ|ZRxpzXYr{^jqW^dHmQrUF&84$;A{5>#q; ze$Zdyt(%4L?wqo@CoSKSM+j`{CP}>Z+HQH8`*QsOTez zlXriAQ#F-gGq&}8bWmvT5BVfHU)s(%V5jRDQo_F1xMsg;j2#TCq&*Jx^#8{n>CvnX zVAZps;Ow*|OiuiA$*mCR_D*QLfrENsRqc~OsHJO*;M<8=X3R(Dw+Nqa zXH}zQ^TY6J7cjz^bUJ)upSZx95BIU`x%u)6u=ehf*`J?z_UtVHyEU;iAov6#Cdrio z$;E5CL|TJbbQ{0;5b=PXIRE^PsaUaCB-|NL{YfQ(hAKq0`NXL*3q){@-Av~*-zcYk zu-=`E=7^pk6so0>^q+oh*%BSTBNLp1`2#=vCf};^S273&lFB}#L(9wCK7WugoZfFX zxLL9NSO8`+rjchlIA8wLgf>i2mWf4(P%7H2SpV~40R)E}C+Nel7{!PQW5UOx5)5~e zZ!jVmU-GI$j!?ed$VM?vK`*F4Iv--GTid#-Qy+;to}gpbin5pD``~}Z<+FoBRBv3s zC{vrybyV5Su`Np15slplYA^h3J z0TaGSR3PD~nYv0C_{skGoVI_XdZ6xEOU}J65W?;j#zDQiHH55+DwguW#t;uR7ESTUXJ*iIbU<7Y38AZtqyb)8RyrT&ccGLy>6y#;J!jB-&m8Q`vH!fjU}Buxsn5) zrHW>O;;WA5TLv|T4x6-iHa%UAY7siXbCIA^`u;PhA6M^Uz`~6l$S=rOt;DE-Ob}AT z9}G4SuZ=_JyiAC4b>LQZjEiAWN}+)1-;~gBSQyAJ$ZyQFRorg0*>1VGFuDj|(OJ>r`%Z09pdAe@kSQUN91C&AUm zyqmk#{y0UI)y&06zJIb58zW&%^_JWQc7244Xh)U<|-o7~sk&$x*icRf!aZh-32T zjkhyE$Aa6ew?>4T2I8x!d2uM5-{XoI`o-iBa%#7_aqj(b|D_%xz!-Y^1pg4;ciVIs zZ|P-s4Qvd1hW?k>b1kHcHkLid4C%wf% znwR0Te-#PA(0QyR?NhfFQL9&q*D{#%WHCvglMu0%SzW$)!N&Zo2W=JHz^WyGOu$Ip zX7)^FgguaZ%15$feGZKRB`lpfY6qvgj3e6{Mf;H}67s~2ld)vhdysZrF-gwOnsQ2i z>9u4Ig9;0555&xO7O!92R>w`!!M0ioz3TE=7J;f1Bd9>|GbO;I8 z%Z_5K=6FldDk3)e0d7C7@@8k9w3oK>XVc}GRTN2f1{ zeCCgzErO6$nYV1Fg$d7hHQAO;Q6N=>JU=o3=sI4!0OJF}V_G7}1NYZA{@V~(ljKgF zpd;A?Am--x6=~Od&%4sdC8OqmB!uBtO#^R`zWW}d@R`^HIREAb`EVD=8A$bltX2F2 z*NumRq5rkBuc8?CwqZj_W9de{Eu%~nf4eRH$ZhZG5q8~uUoK4X1Im;TKh}oE!s>(FW31ZF<66f&!ppzjF>N zU5fAsXImGAJ<=_sVsRJFCY*K4tI~G@A+F$1xQnC#a__;N7u}|~g&ZmVtmDii8kT82 z$A4SlfTSJ@J8GjMrCIM`S`!(78r{5C(2jB+`u){MQwI&g9OvXB9e$Pv_ldvs>c*2gQp*N> zw&$WP>UQ_j@QWyoFMfQ8H%*KxTtj7+6H#7<${}X+2@zxToM}G!5RJ1cJ4=5Pmt2ag80)p@icaDL=Xc;(LS`zEL7`Aw#VqQ|Givkvu!mWvSVFZ1Zh zPL=E+r1K+_nl_uYV8Ym?4tsEsKo46|Bw_&LXgJ(*`$lQcV3T`IzZv&(wL^ZG24Mlk zC7qI6?(>oKsAJIculyG-Q?%Zi^P^VzkH;POF&QnJL`WM7c747aV9$w-qjtG=|L;A? zPvLMR8E}SK)nXAoA&tyk&R_G8VdZ%IF3cSDjKaNIXeKX+2)`hdP#}MKe7PbMzLort|Lzm zBYE0&Xv197a~vG@jWqv1o8VFohGLGe3?0&GwO})u`<3HuG`&`%#jmuzs`RX$Ig@VLNkxOB~U=8a?04_9vpFcJX!*pa-Gjk=@KH^YNr z_1EK%4Lg{*9*Jx^*#(6HY=^tU6(A2coY6P!MmuKGg#ve?#|!lOg@43D{=|s6t9E+( zDH}IJ?AIna5&iuuRYNlP+Z#-Q`FL|kAa@j`z*Y$D%rj`T_^YL!@gYZ~VLlQ;yJ~{j z<6(FYf&aU4+kzMWgIFAy%*WZ2MonIu<(!Mpx%W=&@CA`4kf{R)&{{67Y@8A`L8e30 zwzHr}21NyO_$m>$eScVje8kf=on^eFP@1n?hIQ*+%;Fv5F`4r+?=%lxfXX#)hSb?!SUGs{UyiYew1-7xXtY>j4%;uUcO4)l);0P_V zSY=LPDr}PCq*9_Jt%Xysp1vbN)Mn!^q}OH|_t9)8YD^aJD?OXd*lSUl`)E1aC8m&X zm4cn@Kwt)2l#Fj_;Lyt3`%m5qZNx5r)EJ*AF6w=HK-PAtjIkq>UC&=F5>1-%s7>c; zd0jXmd4>L}ca7)kNT<-vHpC4(C8=!Ih>M!ww>glJ?ev!_E}DKPfef1WC+r3*DE?ma z!s!jdt@5e(VCcPQojGB6bqFjw!t*+73SX7vt(7pA^+(6f6dr)nI$-}=bfS1_HCxpF z%b1mi1DT?A;2;+`8~VaLpY9p0*1QqZv6KdPfDmLF4Dy?Ew3EXrJ3TK#{zcZP zu_g~eMH)b7pC&Ro5^4_}jIq<_Djz!%0d2*HzARPM&BvsPM#Xuhimj&^J>B4#FBD-G#7s|BvU^CCO}0xy^cN;N@=k{Lv_5!2fFfx?`W~J4%WT$-vo3O|=E=S;8wCLmx~n(paJGwo}NIf6TKG24e3#LgAi{qMXpR4I0lYpFr=(dR`@YpC`? zKeD8)snvXK)m#RNut#a>My0eQgjaw75=ZnP`u)b1T=K~1IPC?#y$Zv3L2oL8|DBcK z-_J|h8cn{Bt{J6*)eFlm23>;I-37GOA4Yl5giV&6ri;HgMd9Z=;LV2l^coZuAY9Tc zb_h>%i`AnO(WY9<1Q_#!wT3q3J5xv3>eg3m+zUXmT~0{Rzfu!NpuSP@5t5LhqY;7| z+vlk^fzyFGM_OC6i7=l$Tjf?R{N?$6WlBn35bPjM zM!o*gk}R8^1Md&uM~6H@iFnp7-i4SOm!~GZ(DHqw{TYtkB4f9h_@`;BrCZqbK8Y}* zGv;oD{>4z1ZSY@9&4wecZL*+;1qz?q)C{z~)GKT8d4u+PY`BL~&uw$e0YO}AXB45{ zP6l+93jH$+8MC&Y0a4Y8e@eU0FWY@#$JDucQLa{zq)WGI$me}sZOA*=waz|ImT~J5 zo}9ifIuli%DL)r^h3rbjS}P*5;oF@ry)mx7*{yw%r-w=Abd0<`FLEXkW;pD=zal8Q zOQs09VgByrb@HeVBTAJDbkfS~Ju z!0VHHW(~LV=p^1VTOj(5`Qf+(TRHAbgo42j+x2vjy2VwH?-UbI!|5_KvCw}0tQSG! zcvx*Jdprm5q8>kRZT~m5uVR9SZUTYM015_*zPUVZz7X+)F{9G?E{zRAt-B+xBSD$M z6y^W*h`Z5Uep`@aNrd`7@k{G_pIMhR@}=M3FTMcscJTg+w-cRR*PU5~X0B;y3~Q9| zav$2o!?Diyo4zl?Dp(-o!<)Xi-`t9^wAj8cs(wTmkm zc2A|W1!yZI;oHz3i3aHm&lkK0$tJrG!?aH0V!yzjIwn|L(+_9S7*!T4cJ82+4Lm9s z>0V05fubV1_AKG0o{%<7gfLvGx?-UD+as}i!Y2#)yhAe)&xjE3YI~&OD2BEXLkV3W zomZ9oa9W+nE(05ii*zTn?b-Ir!OxN_0T?kk^C9QSaI=tw!B!6ASXprEs3hEE-5%&IV}3@`?9A=#5G$3o90PeXiYfee0mctbhUfk zFxNQT_QT&zlIMrghRO%;yCoRChDHkH4Eptx=WNZL|Hs~YhBdWqZJ<&F5djqt0Ra`I zNmH711O(|IO=^_hA|joT0HUHuQF`wJ(jvVR5CsA0C3H|a0U{*{BqZF$KHIa8`#axv z_n-Uk{#%gstToq|W6n9sJH{)K*Csd7F;3UW) z>k8}25v|{n+9Z~;{pT*2dfr}G(Kx@(y6Y9F_q}DTe!FeZF!^lMxip98Vv{GFR;cF=z2G3JjN^lgPU%119M zmtzWwAnv@QH!Ri66P~bA3yxQ6C|K-=NeYX0%J^@meVeQ|p%P5a3mqzkd?QY4TY?hy z$J%h(xI|LHoS0Mbr#CEeMomDWZNP~1PForVjq{f^Pw3@V&s>0xpn7ptoszhF1ndh9 zfHDqq;sy?i-8Ap6>{92#j8av8b>D+8u#58{ zBc&EIlfI2f^I!Id^$&tWQm)Sj~5&M6!w z@)eFCU1w07zS8}w;O9@qTMiM$+g25J1`=rNGQKtF#3?$V688Eh3o<}=P=KZEg^sWipAv^huQ`7tK;fY{f^IRv& ztA3PzE1SrYKA5jtw8Bo-Q}-4n?8ZcaYQcdU~edvk9%b>!QJOh=Z zsj7Rlrg;}RY}GPs;-XpCo)OF60VTF7jbWW}XXjr;xm0b6Ili3Q_cW*ooG0lHEwvGH zp3g+l`PBtCn$)p`ZGXz_KFJ4ri&)V$v}ZVUbU1d2zH=2;IQFIh%u1Y>nJ>1t z5bv-DwlUvq(s`)KzbA{H(8gSd0G0Y275(*UpN4}LTi zif7S$eq{ieeBx599sy+lkM@O{c&C{fpWe=C*o6X&$j|&AKf3e;v=a5q_akq}O{6J> zLhR#yFC^NPuP*~VYpC7{jr3)t46k9B4N{N(G)h*!PwQp%>Xw8_hpT9rG8g@4zDPM{ zk?f3{dYw3?ExmMhr>Kl>yHDQ(#+yLrOhCP~n_!t6pX-lWqKbN-YOC>!P}DIf?hn|@ zz4E%)3oc{%@yV}3&wZulfz4xHc{3dyv+UWWpvUI<>YqfW8}CN$%{?=G%H(%?)w;M; z$sc{qIZpW~beTb`e~o*O>16Jh@LLb|3tBDTCMcaBIXyAPl-{{t?6^zgeHdkL)j`99 zxH_@()l*{XYnHtshUtWe-hs6qt1{!x8Ykm-E>`SX1)DDvW&fef9*EW1_zrLaxZ|&gVuyAl)+1@$~ zm|qz?<@KC(ZGa@4e!~+ z{0yJ2>?`;e_CSZq+h@iKJ&+lzM>NJk2g7QoMk+apZs{uKH&k2$J(FbsGK+hVGf$#6 zEu69@pDa7=&vNWep&bkn1toN~%n@&;HeENuQBq+R*z(ykix4Ud3@8>Yg&^FLhhk)F zcYWF9_*!E>sYyt1P|mW^TO;=1x0)OM=Thk}9Nn1eu_l=8Z4j?*??3tD4>Q@(OeQ+y*C`X1j-P9*%Fll$`9IWvyi;eic>sX zJoo`Zj?R)M8MWC%s~;iq?joKLeiCcHC4S$cQ(=>gZO->=pIvRSf6CyhfIg710v!xcgUcGy#y^C9tMy+kCx{~%;Vyf!@ena zO6#JYPVV{{#)zsxcWikKXFJj-9#g$sTy}EhMbQ@i81Rx{W1BPc<3v` zz1e`l7b}wlM}tVuKFJo&o*%>o)a{ciYkmvdE&Bt9R)h?&+X$r6Gia<|6g=Is7xQK@ ztx~U6KAiS3*M=vDqcyu&weOCZV+QAj!%~GcpF(ccISuwWYse;e3S~|ay{G=BMQu-O zzb7IW*2c*vs)R&}=zyRH{{9nrbz_iBDy-{Z)`?~oCzUUywbKuy9a-XjA}Z=wTrLMw zQ8^7Ztb2eXT&#F6(U>}ukHW$?9-XM0XvR)TD4_@u-}3z6 z&Ne_@jpAQPo+b8ba|dPR^vuZ-0}ebUyr!JstQ6Cc%hft392~_ggE?y- zA6N<36!KfD3g-qW`4;VY2Qc9Rc%gYZ9?_f+U8+ATY3_~J@EZGUXvA{Fuw4F-nXMv& zO?X4#xWV>TKP9JaL?m^t(OQ(XhewapLuy&4lwN~je9KZFH}rWmboUG_pdO@X%}7hcA+~R(V44eI_v_~ot0SC(fMj6m80A2&LVC^4c*yCL3910L8+?)WO%998IX_f zo3=n-4mhqDp)n87?78PFKm+{QqN?8+Qp9RmC}U*P#ul3HtZ&i9zEDD$*4Sqs5=#X8N(D({ zLT>`r6;v=Sf^dR^ne;~xrKZ4HhZe7H+H~PHP65A0gWQhE48r8_VR`2kp9xsu@TY5R zl=th+Y*>$wDSp~#Z3xlJg&5Xez^K7*Dq^B-=}z6=`5H<~e3t_fo`$$vf8Lc|IV1KV zXs46Klgn->Z;fZiy(%5^O$?XJN0{9DlCf5h5zsE4TCXOf6{7mw2Xj6I z5;ooQeP?9g4K+a9h&}~K;lcU$&5l#g7&SCxRfPbm8Tb1;i$^!}+i#v>^GZs4@=T-M zk!_1M!7&rs6L_xfEj`Eep4BpGd7x0)^J3Zzikr4HAF?b`Q3o?y8Vi-#)DL+ z7AEbQkasdQ)>^yQEweguu4%U?E0U-SRjECo#*_gTS3_*^H5`Y#GH~ zwyZThL!F1wu=?q4N<&IEQ%R%FQWwI9Zg{o+s1-VWk^o872rZE}#E?ewb#C6te3@v9<#b8X5gY-1T=$2{tEv|RveVMCNwED3=65nyN zd`P&?Hu9W6n-bkODB?zncA7J2FX?dnFDMybgZZX;%|gvfJ4S%vZ2SrKm?hvzW~zB&{w zB&WeE2wj=&+p?ucYiLUu!ElFrgZ&0zOZpn8thmRBwm_4$CzNd3S*(z5fVB5><*oGs z&}La?&=yUz=ukOcMdo8+(lC*lSNjwbNyp^BJ&J#>&_qD+(ci@ zPJss{fyY07!Ez4n0j;MxSX_}Q&PtG-&M#jkJ?ZXxy>BE3fV>h0A7#PfbqaV<10ebdqed_x46y<;Iho z*9CcH7&P_bDJ-isSf8`tHeqOvKmF0|6iMgvqD#$^CRR@d5#Mk_shhY0#XzY~R5UCr zekE@J-bJSCt#b``Y058!taG>Oli#t{0@saY;7Yqi2+nUMZZxG}FS$-h?w>+FgA8O* z6Zwk)0+$GlM5DuU;hrLe4VJ%n7DFCV@@Oa7g_3*C7=~&mUit?K{8bDGLga$3YNs=?~p~>taoK$n~M(X z!`3Oqq1E(aAHCL|Hukt4LEm%Ol+2SP_~y5HGb`_qHE0`_x-N^J2E=#Pg^V;tSItLI z$=W&1L@F)a8H-Q(on)Pv=jT+C2X>t8mF!4_mCl_%2qv@gPdlyey^iIX8g`#6E8Sb4 z$j!e$Qn#xB#~IvmU6_kWs<3h>JF+M{+SXZ{DJk`G8BrEL@zB#eT-&17GQoY$37j$l zzRbYs8`3`?!WOn7^IaBQ_r-3yuE)U$N=Rq0TOV40qx#07>W4qcGw+UXqM(BfIm~IMsL^8I{2D((1a1HqjuTN4PTN z1lt)=lO34e)67DuGt-Lua<7XGk@Bg|+yGw;!@+#B)Y2@0D-I|d?golvHljt+cKcL%9rI9!=+pkJeO!2Vf{Q%f0^o7&hC&ND{*&j`h&%*56|35*H+IYJ>&^Hq zH6yZrX+b#S*WTWDw0(-5Ci7K>VJ4P$Z$Eu;N);I%L#-Wp^wLV>mcyvrfvkU}+f=0% zz<&AOFpzd_tnR(nYj=KVs_)x-vCbc^YKaV=KsT98Rl6F#Gv@blEA4;PuNWuox!fg! zhykVOinH&O$>G{22gtrQ1*WiG}SpNK5I6~@lpOi*1f<-cTj_Nn)rl`xXXw>6{pWBQ3c8if|i0n z@7)@$D4C~OpF2A658jyl;xqn@^Y@R<4q$;IW%R0ROmP zr3`?KG2{%`r)fMQBNEPCoL9$Bxd+7!+ICF7=L*{Q$!-lM5^y~uABNu>1gZcW?6sNA zqU<5v{Q4R2xg9x^rICD-|M`BUpMVBax_?Re^^;OEjT43G(;fQ8BN^}YdzO}=Z#hs! z#bH{?KV)9NdiB;oF_0hNIH#XznJ`#ANy7ao26`6cZbW4U{Fd>fA81EDnOvAxRvrij!gekm-V41TS&{){b>7K^%eVr z4=s*8$^Us;D(Rd980PaWo%uF<$>mN! zf9NW|*H9U^ag8BSVcn;mp7vuK^%XwgXLk1XU5X+tt!7p*;->FJy=MUw)^@ORPgV7~ zV>0|TtC&OAbB$R0g^u0|ceKLVU~Vb^A=1KQHiddqBrw$)Usr^z8Z0{w6?Df+r!IGO z$>v!T1BQz1X<2VAUS#zfze3jER_@sdp3Asa>CpQQnC|YZ+~~M6D_NGJ-3t2~5#KMF zRZ1G1XB^W=UzNcIdJ}DiCq*LI7yQ zQ9BK^=0BVFK_1vIObc1n4V-R(!#|hg~KMtF?wqV z5d>NTsB0@-K5%N`@e>W+sS!uEIr7*xYFy%DtH$v)pgDY3%=;eIM3B$gUEmBhEQDp( z`MmIPaWMMq+9jQD?b}RBPENk{_)wLQGFjnW{5ZDAFu z>}`GsG}}AR!6;-U%pg|o-DQ!p&Ac5FPM6cQ zn=zaPxWXSy(8xpl)Wt@PF#64px(TRJ*Jw)J4*A{2pm_7UbhoQ=TRqM3Np2%m=@#8krd? zG*DR^FKDcz{ZpKW1nzY5x@UVQp_k;Y0>GJG1kBz6lmK0#&iSAy1`uKVwweg?l zcZkiYW7oZUVZruIIdidzT1aeI`gMMOezM~H$f16D!gI%T-#Nm)J@uZI%ocYFGS0w# zkHMELLg1;IckV6t5nWVJqNPu@(?U@~S8T^UfNo*atL><2@NkyE$pp5;7=QZoX|YV! z{hepO^f1z9IJoX^-))p~qnpwZY-cQ0gkUK$pbdV2K!=3c59RU0Ol4QIT6PdC8E=6o z1i^CUV>|WKK_@4qN^W-~cjt!|ya%XHa!U7VvyCR1>PklP>JEw!=KOZ$57tp=RrY>p zyd>DXN7lXBhW!Lo2N*D=0_5}mlw z7^!I&1_%KxmGTlDyQp{sHF8LzVl6lX-1VV4kEY!b$&u$jCjEULJj}Ujt<`t4IvZ2( z$d&kAYF3!`g0QfDWm5r*m0#Jk4=NJ-S~6nRZ#Nx==5@^UZkP_}p#z#4b7T^pI>7J~ z_aH$YQqQD&_R0a8xSjQ${;8MuaDk3811M9Z#~ebz??`9rBWz`c;g#h53xYR!J}yh{ zn%`d7Go%%+=)4S$Sd*Zc6QIj>{(a% zMy=)`OTV`Itr>{U(N2$(|6+N;W)piELXG5opxB(y2+C~>><9pFtY|o+qx&99WG&#o z*CuDxH}yjtTL=d5C2%c03p8^7M)sthGu%R1IVUaX`%+B`KAAWz7ELIwpxcmLXeGGJ zx2p6)SEb?JGsx0B+y!4~laKZM>sen6N$YoSp(sUZa3-T@lGOn8%Vy0wO(X7n-kr_+ zs{Ij3P%kt?a$3siE!W;)s~zP})2iC}+-P}Q$TPeJZ_>eJ`qnOMp z?2@qkhOCG6OKxsW}6{P2^Q#W%9B9C*%Y5LJKB(GT#Wqs?BpBp47?tz z_S${qt2;E@Tt5ccbKHM5s&PxojN50Tgt{4mIlH+zKDzgHt_9k7C>c<)>ff@r!@evh z)h+KkXJRCAT8III;^pNveO$l!*aEIhEi1}xgzTFm(e{bJkujdrmlzSmIcl!jJ7g)> z??5P!64Cg8Awf2C@!)Hck|y->Ucu8ogyxupnkfgPpVeiO4z4QSXMC4Vf^K(uD7GB6 z@$O({xyH>>n6rG*8AJVhl5>s$Wv&;<^U6+4sl=?(WVzSsVIq{+i_7T;1#P|v zj%>xxBGwWb-Sm|#)4I+-thni9R>{-m;55)e&W$)!bGbVjlll_mn#hdF%s^nf$Ih_e z>$A<=@YuCYPcbOmrRKa4TV4JH?ez7L71XS+bAie>D|-hR+_3UT(g}Iuw_(WVc7{2$SfhF&)-V}vp)rR(_wHTB+>Jd?tDw2ToRC+8Ja66_ zuBW&OGW}BDKg{tgfn#Tr8P4Xd_Am21#D)9k1TT8RbC7dpGS%>n!zsVRa_UVlgCl1K zZ5?Pa$Q<;9G$BcBkSt@aZ6b9vW@H7U;Em>G`^f9ojRW(+-=$_A0oaA@<;I~>i^Qvj z>X6OLuXq^_R}A#@TMt&!?E^l7K!vy>>|Wr;Ye#VC7+pRu#*|wTJ9RmqE&`-SnB_Dx z^yjj*l$i1Dr1y`sX;5MxOUpX3`6!^L7s=f+VBXBDL0kL`2`%_{n5_gL(Vf2t0F5%waO?1UOJ`_uH^ryA#1@ zGw)IR;pJp~%f_p^J(YD$)>;`9DKs2-Wp*PGpuc1N)?~4qJQ0JzPON~sQSME)iLNT7 zFfN!2g>MygaZ6Bo$q65;Sh9KV-HcJFb1v4*k<^aG`*LX&R8v>PzE)*ln+rnI!8gt{ zG;gg8>#2_`B@=WU7&hZAQgY}vW#qajaC1u%BO&y!f37a{``rpVM87ay8W5q{-(cn1 z*w%swg5A7d`a6MN%J}WQI~s4L!EH-ahDxpm5p}Hl{csfz3or^fchuOJve&+I!G4mI z(G!t8<0}XTdEqxKBFw#KvdB16KD2@kY(67-47KB?{lgprrQ1FGM_lnC{+ms^TVX!K z=Ny`c^;}Xiv8twjGPDo^04C`j}iMD z&;y)=>8t!7bTtN@-v=}536(#RroT)lyl* zvgV!QIA*4-8|&j6ledfSQrtezh@5aa|78Dn>Zf!&LY#GG)<<6LC*sbuHdVGLa;_8`9~qhzdXAD#{%434!U*dWxQ@?HP#G zi`$xM40tA~?7jI+zH=u)s2-JzRPHB?S-ga>;l1mv;aVc~`d%BJ1x}I-9Goh{7P5E9 zGQ4{UOL>gDFZ%|dQ6y+uWim3irAERJsEM@Qa2=Po3oR?W!-kg`%%-dolw_4NDK!Td zXyG$6-q6$Lpl|vPDiw70zU9*87=zEv)69FoP1DwfE@@E+rhS+9Qe;r@17&BODAhu= zG%qbBW^Bt^YKdZ?=;mnocIs(gbh^S^WdI^z_KZkw^0lgniwD(qc6R$S&DOqjRYSoy znxk|Fotsx&MN=;HPX3q1uUHBm(80wuRYmWaT^4u zh}+R{R|4!R_<&cgmSx4`rJixuY6rw0!3(w?20QWHu7(6Tn`6pmIa~@ zwwJNRtXF4eH*Dp!3*KHD3bJ0Mk$bW%9X)xfV8JZWckq!w zm6MAzSP5$^Zrn(fVCnzm{dp8y$0uaN$(8soD0TQuys4#4SPY+^9F()jb;WhAWjP+{ z`eD9Y0uqYIkw?tjg=Zq3M!C*-pCq?P1B>TzWIXHIqH48$Eqlqxwv;@J{D&xzW>$qL=*xuvnv5U z7(wiidp0CzE2L3Da58;W4vbH>zzs81&SL3zUvNt3Ylz+5zv0-Bz>GYIqaYJVIoFCL zKA4l${TMRoq#tV7y&jlO4Es@Dm06zMph$wvi`{2$5^#kQEe$w&Jn z(y{NN$|mT^nRN^=an11!2wVY;A@^*?a+){L4JfkI91uI|^o3375`L6KQjVaehqWRG zh1?Ynz!zy1mZig?gj7>b_;p-)^-2(sSDdbF%AabmuAF=|JK0oo7+(Y4Npu$28DjF4 zjEIY~dOs2GbyEdGDX^txhm*fLAW2GyUw$xE^LTfo2HIGY;T*&mc4>NUE+=?b>ha{Y ziHQlHbRb$lZD|VBsIq$n%mf^TFs94+{Oks{vqmkH$pJi?jz?C-Bi!M{K!=l%Oqx>L zE%(`HhmR;DWJ_`R9`(^!HN*R{Hk0zHQo(_g#*2FfW^IgzL zcOOG|(V_Sc^ zIXFGiB=yD|IicsEmVdlxL346jaH-@aRv!v5PT1`wd05-3y0(`{Iz-&uRXkiZlvVTo zND$l#sFyyVi_k?6|Jcf%$J4P(?ypv1qq~Yl$vm zUiyY5T(shyL|0Ti$fD1L9hNoy{Nc)T`B4Rj?qwk%9e{hyA!sjYk^)nArL$Y{$UlT~ zn0wNyA2{Hu+`c0UnmAUMy1yPC9{e@gM$TUjK7h#u2+wzw^~rugAm` z?FSWEzqsW2?JWl=V!u28D|$S;xr{UBJYUk4Yt&CR^MH`7^(WN#zQuFr&V4UxMr+`j zZ}IYq3&|pmP_Y93d@o`oI)2%P^%f!BXDr9{8 zFeBqm$(AQGSd@gRo!hLKZ4UTq%=11F(E?S4aJW$H0AAP9f}TPmZ)U*k3O3%`A=GC4 z^B0M?=I{JfPBM8bc+f3`n_r*bvFu`acB;$rDWvzuW9q-ZLrL zpK`b}K-J8pPP7SC;q>1pW4!i6dq7>}4N}j;8oA`LDS&e2UwvcrIUJ>f--m2L2Abx4 z-_UD4*}l8dvvzcmXVTTGlH6^w$_z%buL?XE^}Pkfmt4h~5HEy zk}eqc9E3)5T)R0qn3K%xb(@S=^x@X@K}<}HO~3!@Ky1-sJJruK#+M`r z4)$L?I=e-9{1*GWf?nsBL`&lK06Tb+dmZZd_TUo#1K^aLk)NdHG|VhWC0KrZFaF1A zxlYurR9W?}534?fy_ALlOq*MckIOb>b<<}6Jo4IBf%e}5=5b1w5hxWJNrz)J&Yyl> zkl1S?>Dc9mTX?EG7GrwK5!4K^_x5)ES zJEjzQ^{OMs8F>z!aRJjFp?A>|C*L&oZF%z7W$aEjM?oyCIFVT)l__phH8WzHuAiE@ zKs_oFB1SlM4wI`b2G&oyUt&TOxvIB{P2lC3(RkJa6x>#>fU$^Jw;5XQ1z(soxiQvi zhw{)gKni)xP&pcN{>tL~>4|9a0p zQ59t58Fb3G2Mc^f`ey+$+_hw^MENmWW&P9m5-Bpu_Zqv?r4W|>Eue^S5%?|p!-zX# zSD}703Sz%er`Tk&HdR}@;@@VUagv%RpCn-gtUcO3VeIZhkVubdNnCrhTpuYAM=T8P zl(w1A&RF{J;X}rn5+gGPPcvFg>-G4HnaRYuVOj&KfnU~lQio0Qn|t1FEyE^<^|0nl zgZI*E?oL2c@u)01a6WOqvR|$H@PL*m%utnOT%7R3jyFllJ)8GUC<0tX1{hU`T6Yu3 zcoxDL=OuhLxNbQ{v8v6tqFjLBKh#7hZe^+l%-(-9K?t;#EPOjV#JtQZjv3NzoGWdEU3o~dtL`*Il<1%!DgcFk&G&{ntOR0+M` zY_|2qjTN`T=pNE9W&T6lAr(xQMK9l*>56qs*((~hA1!*WY(Z&m;$-je?+~{FrFoUp zarA0G%tnsa!wxCwD&!5mY90sBFB~OZ{D~Jb zZ~AP=F(aIG-vFMeZ`Js)?`D#>fCco~he}BLW2@aQ3K|-e9S{-3U4^e{?~(}64L`WQ z#8MX!^Gsas-Q5}n4#i2T)4c$TQo#GXyssM*o|{dkpdbtLOAp|6lGqHN?k*oOx<3Df zUSHytau_K|0h(YnTkYyNm>Di;jssk*hs9ZKR&&I+EU)s~$SJf<&V#PUtrVMaq+L-1 zdJa7#XAG1gMFTF}K`N{ozWzMWnhzcAnC6jE024{>KSvbYGZrUA!d|*KPgK0hVpqz4OX!LK{A%KB8SRhN%MB&Vz)Ef9jl-G0`cDR)Ml zIDCsTDw0h?x8(>{C1{zH`50-&KTx5QT9dNb@pWgZIBnEl^;Zz#G>y|~_kuwU!~;&) z!sgBa3n=Ag3h(&r_6x~VgAtrFjhe2*TE=f+Yg@Xq8<&)W^zcCNWeFp7D0N>Nm9Tdc zh+Jm);|*TlT5G^1l~;Qg2H!+Pvw*dcIdn0Tw74SImk>E&z`YqP@7FTq#G|1+D5Vmx zC}In5VIQMGR<=@nH&kpng(_d2D@bjb>nq=r9gR*cf)BWvega7S`0stEma|m?1+{~B zKCDTky{+rp(i-MQc^|I4H=XbgXc|fY*8aP9?|38*&qC_VDwn&1NQ5M}Cz0>UR*EKA zW+6wmtT%Vq8)pX{1b@f`GaS}Is^cGr%-iDy-+jUL% zf(kfKxeTbG09x9~^|Zhtn)4SfEZ4eZ%Yb_AJSN_=_(yq8ap1ZD4Hil1unrYGMjtT9 zA3kq7>`uk9`I`u~zt*4SioSg)TEE`i;|69Cu@*43^lo-K@mwt2xMhuQur94xyR zOF6Xt63utqfp{B9uM-OEh!6={8kI`A+(_pp!@NCYS> zfPE+)%vG22M@6#O@9X%6WAV+XjHB`Lj}k%{V1L-~NDsXP+t1#a4?=rq1jus+9X`~M zlrNP?4Ur6Q#!p&c)gdM_m@&F412r-Fz@0S~>#4*=jgRm|2)bECGAV9|Z90qWbdYw^ zH6e5H#E$JqyWUCF*fP0ZPd}Xlt2DKa@Id18^+|u-mN>>^&6Q3U({Z=kB$m;=nG6nC zo?v-R^{UEwraQk9bbu4s#of0Kz>4WA8pAGOv^;!3;4$N9DeEAE*}z@-L2=U7H(@%q z&)sVsYV7W&W&4evS4!G1$Q^AkK0VHuVM!TsOCp3^vJ;cz#UB>abL1BR`X1f2nc^_9 zVr4D~zMMuHNl)t==Bz>Or*1RTEge_~biI%i>rRoNiOI;=>JnbKq{T(e>GR6cW~^~- zS$3wf$4+Jh*Le(jJdo>(XHdkCNG5?GL?OvlWkv3pcEm`rscD87JUg`aCw+@1AC|Ej zm5-6z9LYWg7=pbKhwB!DT)upE+#bSyy#EpOY$auuNaKi+=eb9h+{oF zLqNWFkG1lenAor5&~*KJptnS$yLO6l8w)(n4LVHkyj;d-(^X= zadfzHGQSobw$-aC$FYIB%gzWAlTQyK9Z02iDY3JsbII3b7y=ONC1pb(Y%BEm1F%gN zmRWi9Pt4%~Wh1SxxstdUW<M_>?AE6Pm1A?SpW7&AH#|01 zr)xmjlUrK*V|4T`P!?=K@p~~xq!rG=`QRO4-=q>+t46PyWb(1p6S7c|3xfCq1-qX& zZ$0{vDM=AaC4K*Q8>|~BbI2*};hk=Xpj3-wa~)#Rt(I@hfNa4K>SomfcdUbmjD#hn zFnX}t6Q#CzLqp$GMP*#F;_Xx>%WJ+fm^@<4{z17^ zM)5B*&*tdRbT^3UgembuKKPr zoPsO{^-DG}YcFuE2fW{y=BLSLA^Hqcd~A`hz@_l_>ky$>|K8nKG@x*P$*rnM2xK z8}M|?3R%r%)zo!j-!!r|A0&wUM7bk+0CU{g(K2w*KW9Q-(_EaQYkkz!zSw`x!NK94 zp(kjJkmbNv7_n3gM~KN|K;_1b02C`ced4;&3eY75Sz_fXLj#mUI22|8H6LB$DXVRJ=beLk<$xZ{AQ)$_ zq6K8C^s}!Ff+vOFZa_i`2}{KDZgDao3Q zwFwZs(2Ci$o@DSqRQ67}PiyzTW98DPoiu-B$Tv=9K9wu!S8+zS?rdEd2jEm}*yvre z%!iKa=%h(QlOO?$!3Jk;cQc7SlSLFS6H+)1SzIy7JMKArB4NxS0z%AQq;;}ISy%>a6fr=AO4(`8ppeei~(|VeFK?A`fAafuEig4DY1Go+2h9aqX%lKYD)mV zW<1lzG$%sx6oy!?5{AuDd@sZy69+q1aeT`3Yo%)siqNLzsL+2)t^KS3U{*pk5?NDbDS;{%lbD$M8|Cyeg$16s2}y51 zw(X5g@_3`vQau78N!w19+FplL!`#;f^L%G)!laz0YT|)#WbxO+U3myLCByl(!xZI2 zqtwjaD<}63IM}^kB^T$|Z*3PnQEH*y2!exEsg|`CQvY~&e;nTh%Pxr8% z!qsY5q;ORWHi=7ii$NA-7?JrPw1W+4gaR5#SFXVJTU9pCGQ9{+`W@SIY?Uzc=;x9j z@932SK-+?!K%OMo*}2gkurquPmJ&1BD_Vn{hnKt4q~B$hnS@Hy*y?ruzEv zk&4`k4`!6*{Kffqw&cHk7oYk3PLFWHhajCq3D@(gV&s-y+sw=8#ulHt_>S%Eibo4P zyR|cRdhK-%OMY7uoj2V05_0=InpPG3#-Egja60SjZrNYsnI;+BAg)(L=E5smo zXGlWw@$@}<={&gjxmH^754fK7Wg>o;{^|88G`5{Lpm%i-QIBpFS&s zfr37Y!^56cW!Zt?5XX#wyic7~B1Yx6GH&95(7>^4J#HHXkbRc_PnWkHN>!@qGE9&8WI13 zHnFQa-qr57Y|IZ~mG&hjE$!-D;BGN=w$WGW0Ey@mv$b9Z4H@dm_X%gp`R6;b^Zd4P zlTn6?oMmL>KF$wayH+OFHi7sGz!2?v#=s8u>WIgPv$fIU#=VU}D|&@GgsR%|k(J3I zw{f%3eM7@zyj!IraER|oe^VZnz2Oq^o6`nhfHCI_CFe}+92~k!YZcD_T=znaX_U3# zpJ^udZAXad?g6UEI4BZ(T#F`XUNue6`1b9`*&Ct{G3%_&?y9WO-x+JpXl-E}4>pw44Da2Ruax*_0kJ}WbD+~u$PKTTu)yQYk)UT#WB zQ`awe_x9r*9^JIZ5HHH=JJMx&@+4?H5cj(0<_2v98r0gsjmJvN95XvRrQ+)99>DGU zVn2Qq9rk=*yc_r17W#Y8{g-S**m(58x2RO_-t7|WpGNKOY)&V;yks1|41f*pzz&ue zl4ZOBj-uYXF9KEx({+~|#>%Xw=&#SC^~=jKc0jsZLr)K9ZjTzfMz9Q}CXdH%T2PyR zyY-)Y_y6)@7eW2fTU1V(P>^CI+ZT-^Qu9*HRGFkaiv1PUX~22zk6*4(Q>AP7@*lw^wazOym@3^(`gd4-L+ zOy-|*w{G2{5O%!schUcC(ttmeFwBJpA!Grpsp8Iy^(kFl{26OSw+Cy$S{9o?6Ftfj zQi9ObKYx@*2pIsll{XbrXvubL5YYA77#}l{m5|UeDYHcFGKr_QE_PK03fuDhlaa9; zkL(!SYOiU{?GI>$^FS6XzU33!#jKU=y>T0XT%cORtFC&kNKFp#{sysYW6{uqF^#vWp)R5diawHkx46DqW&7NZWT>d1HB z+eKnctq=6Q9y|vMxIsV^OCXY6D$c6W2LLHqsESdY;S8+PP7*CGO6SDf{cmsl{eP!I zl&WdY47i=BoxwW2y9T65p6+yYY65B!Zdof(GSKADSpWT{miJ^3_v9|5x>rzraLB`@lK&gS3OKI>5 z5eyiN5{#{TYo6By1+}Rd6qHjWBXRykm5w46yROKn7$Ciew+u`Ee-*+B@=-&erb-~t z%A&?iKr5jHn7JXlwrBQF50+NOuTWm)-W5gxq~=R2nVmg3cY8L?0GD|X0C;W+1a=s4 z{9oVxFHvOGk)OG)Z&|KcL+XgMSe)@yzo*$PY*G2@)hTD7NdW+7*LwOi+|JQa%g?V4 z$QkOhim!guG=UU_9#5D4eX^J5`955l`p-In-{(<(m-5t^LMo)C7zF@5w*V5Bj-g~} zhT+lfe1LrvlN%+YD&zYY{cZW&AL`9^3V@Z-312PvU-A0EO42mIJ-P!+-boP=XC~^! zfTA`y@6DToOWqHn{xz(=<8mdj+hKptApNDwS*K|i>C`|k^n!~Zv?IXgdFJ}SX9!RK zpKC2^oLobt;R1wR@((fbS%h>jnj~zJjm!Sex!2b@`Kfr#-^2VL%;u@f4*_w^+yC!h z_m}jPBrX8;7Hl9(-G5U31*FFO=zb3&{rBedB-^ilNTV-x=$!x2{s^?D&mV$Kpv%uR)K^3d#3#>xV(m#&`TxK3_r9lZ z`wQd%cva^A54)5PLu7_!{gqOyyMbSsYrG?<`v05B%HctKVlkv@lJ_5*7-WT#PovY* z6)6ves-U+d;sn*6h9wp4_V;W4mt_K@{$i_r-Q=bJ+q9$|9UZiP?K};`03V&yzL4yH z_dAPVpp9bPFLCsrhWpnQ|LqfK5rfv{)4I#izZ>k|F3l+dT9^2aiM$g3_K^QF%zu0e z%w#~*aZ&0qv+T7$=E`VyFQB~Gr00Jumhpb{v%*zV${glM7}E7<5^f>4rali_q|8XF z7x(72vGiL{LrSmtpWgp}`=2Pi@@KtzIgxe;|I%)L0Cz^4m0LkgTXAW`2jgZEsS)$5 zTCL#4r_-fogMx=jKn&{f8?%kOZ6dr4_9#P{0ZR*ojmDGO(c6E!?7#mBTKJ$nhL-lt z!=h7w*Q(f7am!@oYQDXMaIrACInIvJt>|pDbkR(P0}qP2#(>cZ4{#7lw=<>@p3NxL zdWrXQyK07B0YpRV4+xukpsWnDP$(DDO8)#`Sr-4p@1BwW^}AZPO)vX)$|Bm@>Dg=h za4%9%frSf-r;FvGNJ-o5<-R0dF2gg8ZcmCYo>x4lggdI4%dsw+RgdvNA+z-CMX!Kn zc5qDlJZt~o*`$9jr2p<2{?pdVkiJ{`>!`S96-)IcmFVPfuD&FM8f=} ztZs!xz#;|G=TXD>F&Z>wV}AXC6j`CMVbA4%XDu_e$`EUcFFjLg_kLw9ryEr*zipgG zvRx`w5cX)ku_7Zn4w@+w#wtBCo+3H-P@>i3K3}E-3-4jh?ue3*n#|;1qi3D>XtivJ zpZUP)XmZ->melN#hV*T1?W(BxL9f@h2Sm+Z$h{`3>EsK4@?Pwm{ER}NmOP1u#7{Z6 z$lYrX$y=;}V@0wuX=C8qNNyE8)}KJ`rb3}x|G&41oN*5_dx$<`YEeJ!G`w z93sHH*`H-7ejwbwPP7RM0v_8xtGEBQ`Tk|`$~w?Cl+f3++gvFeg7~)Y$|^z7!O1E@ zFp!op{1iOp!c>*SJ;uUdA*1hV;AOJf_ijP_?DY#NBePvy_a|49>EsOvK$st-bQGJ+ zOQ6NuBoJ?^HTAjYA#2Pacslh2G7xTB6dB^#aatR2|5!AW#7U=jP{g}$=5Zv%UuPFw z%Eg-B`~diDlK7YWL*@t<2l9I;BqWBred?2Cd?IpJQg)>mvA>Rx8VAKtA58X1Mj0kP z7@PARrIj+jq#@rWU!D1@*+bkENVsz6^1B;|W+;qM^V#>^`NezA45W11Er3`viuAv_ zjeL9%B?E1@@F;!zgzmKK5`XIK7qs?*kIF*l%Q^M6+ykRPp&cp#ZoSJ6@djqEPcm1o z`E&>j=A_{4jeoJu4jmt`Lbxx5se(?mO_PYX=UBwb(tA}ZOltJiVB@gN{Igk&mAJpx zI;t~3<@nP$`|gEhk5vlLeoTFAdaR-8Ok7e%+;ckuqog9Q$=^SI{TvtxPhnRtZj-EG z@@++|xWsEQ2G*a(E-6oIGDXG)CnGF zwpk;@1@{*;=+6+L(-`xD`fR) zPkE$F>~)I4sZX|y71oCK`Y>mr8-LrxBr?NKE#m+#`|HoKhb9&b3O?5V={Qcm>w&=W=CES$&1_2>p^izIV>n*DK!RlQMY;SFzTfSv)Q_bV}N`Jr_0q}<$3ZLQNP`1TO zHz$X&h};Twja`xNwtk{h)$!WcK0na`)~8*@6-J1%2V7c`86wMY7RMu;@0<4cGc3F( zJag~Q^i(x@b-uiJt;HpyznLN*PcsDLK?P#R<x=+R*nLZVe>=oDwkuXLY%{fDp5htI~SIJ z06?Wpw|qyHkkzZy=wX{?o2;NQ`Bd||hQCDDrkvmbF$Wi?SZn}FI&9zoVSZus0CSRG$Yh{Zpw@w}DI^3v}GM4tfyq#TnO+!H(GJ(!b z-e^?YErVY6{jDfy6ggCQy%8GxdT;EtLkp-+_Beb7m;B zjdL97*Bg0O3%471wZO~_6O=I5dtkJ=%-QjJ&&-&D)mZLJ4nfPUJWlrPtBrAgCQ()o zc10o#O!evy|GPyj4mgpCfFC(iN;EH&E^IUKbFo?N6iEoyA(Cc@-#)*Xwk>q68I`e}Lc$a@U4E*6d2D!cTagEyqCP za?DP~Xk@dvLc?nij-Z4|*i=EYY^Z5+TpD7y2+2zT*-Yy!V@5 zSI9qIr+pGMk?v=iB|yGqO4;~eM66@HIQX91shCyaLKH@-3j z01X*^g#CZr5hFS*iWd_5EfAJE=Vk3DA8TdYB|eVu~h09>`pt~)D9S3Pp9n? z_SAH4^?`*E&s?eDe^#qAxXRt?Rb(mmYRP>TY4j)=&3(#ixW=+9x(WM(;d9)?l|P)J zb;HK(TX*qsE2NCjH2BB!&!+a=b{TzHso6mqS#O+)bQkdWB+I;K8tQkfS};mv1f6>HcFv)3u* z5xPm%VLUe)AUV-2}SuIT)HzfZIAUQRR0gsekXQ!6tYqy7nP*zq}Nhv9m3#BvlcPyPZ z5FH>HNx?7fh794mV{JRWEPy9VnH6U0dIu38+C`!P&tIxyi6F%B`twywcpFMs{mgb{TI_ppOpO|9bT_iiXXp7NsA{R z2{B|Rcd9-5epDVXx^3l6<=M6<35kfC{hEV%&I>zVbfr zox*a?1l*$l>2iqU^ajVU3&0EF*sD$VXzrw_V+S5Jg@bPAf&G@r6$K&{zf*}>j%)5u zLjSOkrAX#xKZVT1kBv0Ll`Y<4q2#T>=w zr`@xjWDY@Oo#*JjZP|V9QLdbA>GYV`;+71L;HlV19d~D6eZ4MI2t&xU=XUO+NaHg{ zm{;dDgCHS)kQtYg$fQuFf{bR+xY*>b=$U?Tc~`T@|3p929fava^KO0i+*Mlj$cS*g zu4CQ8OsK!7Q_wG7e!T?kKBJZ<(mE!x_u$95(%bIO((XP&2~h&7_>qE{^pwAWB$n}f zAV5(I?bMQ^5liI_3y)OusR<;cD^H-@lp_TCo)_}NXYT4|{xb*fzL9iSK1CVf1O%fz zVeS_KOZR@MDWTmej!3pXZETe&y*_exno}LGzE5ZSOu~H{i)Yldq$3|8;fKgO`GW5) zBY%l)aZLolz+A}hFxe=ei3G2+<&uI;5#|Si-^o*hBO}f32Bpe)skmH$#gH@fBm6Vr zRsS3~IVtaT5lN$9`iFi)o9F%@`JjCtM()mH>f-qDNFnR+sbSxiIuM#8Ax?B zQ5-M)vY0zoQHDgtnjchal~bhjBPNpCroXu&7yp1VU2=y+IB~V=`f<`l>4NCJ<$!U9 zKy^BUWDbZHN&LO?E@i};IUzZTQfJ@qj&EYq=Yz%s3PyT)5fy?od#{XX6@hFM;`~e)ybY=(qe)!W*tYoq6h|j9YK~C6Tb~y#Mnk6nAC} z`O9VU2TP!i6v4VJpiiR`gI#*O(Am$g(0H$#D)1JX;yunD zmeP-lV~sQ2)a1XjWG{unf8-yP?1-zq+OWJ;%b4~ALv*^Pq*q-h^TCo3-P&NF`yMLO=P({>Mr(2~-h&w+)84|9to1bNwR_67`NRE6m9Wq@IF$x>8ps0N4bYtv8>t zJIzyq*iHN0%lk5i*l^qfrPsahr69;kGBY&=Bq(4UHzE}%t^Em__q5jI8F!Gm?bMns ztpAvG-`EDM|-Gw0P9fw>`Br%Xupt&dsEi>8iQp zd#imaZnwOd&*O%yVvX`Q;%0ZtLTPD-la1wCKhdRRJY7~i?n>KSYw<8BH;@VvyFkIY zt1~9|`1XupV!6~d-BSR%!f791ABXBZ-l&`1Kh)!llx<~`#SH~d-Bnp6M;iVb`)xMH zq~(@9cnQxj#SBSEqEQl<;?O{)^XT``%F+HlCW=@5_;C|?KzZa(eJ+_8teC(TPISJO z3l9pmNE1K_cA)EIW89x9yXy}(I_i>Sh92MispZlG|9m%&(@R8bg$m(*j&DjveS;`8 ze>n{W)7Hn^6-MaSO@l(z@6spT45&gfd>oA3N>8sPIn4I&QGB^DTHhi$j5L9kHxd#x zS1w*NrI%*+De};H%8A6^_hN1gaoSdRF5`4AEQW;_FP6g=YZdz&bDQ5n`XmWZM2%?t^RL^4Kx^ zV{IB7h(Zdg{uhR4Tj1ZL+?y?q6XGH?7M}n5Q`IM;S@`n7QpdEGYpeavr+PhT0~yz2 z@UB5WfR}ka`jp;39P|Yo9hQjFZMsL7T(_B1FfD6s$E(pJ{dzIERpvFXZ~P-qGV_~E zGM7m7DN&BlZ?_6Ne2JDc&sh2+zf87Qxofp$6N>DWPP`;C-!ttBk7=y!^OT1s_DZeG z{ptE4Yu=?9PCL>Lz$0kX4b7%B zbV*%IznacIBKxFY6Z{X%>3LYWU4DtK0kgbFcXJ;t^;6y_G2A!Ptb`Xf&+*ypDsif5V09kQZ2p({d6lWi@?LrclzER!t5scBS!mpgc?~!Y}(YsYV5uZGSXeQ{`y6_%P#Jw$ax!sf1?65MeV-|Kb zk>s=wte=6s7naWCvZDuyCpC_KM{k&YyI60L%gorr0&&DszM)At$?9DAJZ5*W`+t1@ zONEPrRSfF>WZS^|@q~;?_Zbx}g;IgyDhBG=&$jxQ$+y+T~QQ1A&pDs2O z-LvCSc;BB8C*9xiefo7Ure=0`#KhHNQ+q z0P#P6Fd9&UBqn~;Y_x8iuL1M@=DR%hh-owTOtq{l1uZS}Km-_Cx3hzuymj0*!ya$G zXir8|@H-E=NxU?fzh@f(Q`-iV`G)iBNhhs>8sjS zHw(KKORDYXBP;h?%`r|Z#i7aP(!JQMHI}WS&PT4E%G+LT*K4`5CWXqmNzMturU%3! zK3JkFuPaa_*!OGx_yE;E|IX$~P<^nd2gvNQ%<`;#!-F21DXpGnnAGIac7l`cuJ5Fl zR{x4j*{z~hu~d+?XidTsAv0nyrEfm1H!{1`E8{%X%MttCESd|$WY{#;7GpDkj!)Be z`E_Yn^r=Z_@avgO$Y~3<$)j48!pNIQY!Hpxu2GgUNB7}Eo#D~%Z1%liEZXyyiWt0TyM|>u{eyzXvVS^hJsJIH9-;y7Hd^B!8lXz- zeer@#zLERJN}i0b-h^4d@=zh@i&vbZTw)AnwUaiKqgyRQRo=V=E91R*n3LVCk*wE& z<%)vcKL9>S_QN*QQ_@e2wGaM}(~yc$soHhb4)p$z_&loU){*mVL6IWLGQG$C3L*osM++}j-jJtoq>#B zOl08K?D#HmFPb~S>B}b5Y#Foc-H)TSR`C5HLrz7sVPZLZqQ>P~DJuhS4IQG3cf;)l zp~k+HGXKvjqu$NOU^_UucDPa=`~C=dQnCA*w4fOPU)9AmzR52z+n#K6IL7JTeqd*t zE^(KYQ~&}-h-{{Gm5DQVD%!JA_hI5U{7{zSP`zYF5q>pcO&bZ=S2@Ym&32>3gFhuF znG06{vH{YMCERFI@KH1s_#@9R7lu7Z2#ZVyJAM2W$FyxsYk#=6U&L!!_PBgusVcuz z6K$wrrxc!UDRNbZI;V~xe7{i8L(3&U$aqfd-Rg7W$MSziS4DV}F~YgSS9g5dAD@^Y zxA3{~OF8i^$V)dF=RV3JkM|M*m{%YPb zk*TLA*hH~$u{%oAo))dSg}r_7kPK_;qk#u=<5G3AuQmD^D-8c?S09>tc)hfQ9bwdr z<$E(5`rdK;84&&l_wv}x&V6(p&5DguXzB+mnv*kBs3J`w*7e7mz5d&r+)tPhNtq!a zN@OqUA3rSoDu$bC_Eui!4zo*y+kFGIWY7IB#C=xbYtG1r?z{c>QmDC&n54P=PxDA@ z_YYV+X`a_1w&FTLALlx45ZBY;quU+a=DB>@!e&;8Z@IdS&ScP{i5l&UeaU}-;OStR|ZLUn~aVtI=#8=s?IpEFM{D9CU?^e2);RdVSR@rF%pM^11BSe3h9rO zC*^LVzFhCoqw9Ogs4Cfu{AG4=XnL~gGEJSu^e9Xm9#2@1X6ToS&G<}b?V+eM+iSq@ z{k9V?T0o$wYPa1On(MzurRK%OxEoLH3&_jmMZ)09D{%5QuaPXXe0ZEk)4 zoH5n_tRr21;y1v1v*#Gg{VhYC2{BhbroHMDBl}g#c<0^i?a7|M zpd8K2D~p@!D=c27jd$Y(GU^JhqZpyi^MQeGfo zJQ^2F2WkcDJS!QY9BA&WII6%6>0uFZk$mP`$*b4YlGglTS}dDAJCi?ZQKDs@eP!SHboB%K~FdQ6{A=9gbP7blFZXHPq&x8L+cI(@~vK??zSK9VMf6E2s`mOo1M!wdom7i5o@8C_{ z6lSoEKL|7uS}hxBs?4n%SuTJzH~LPrmJb#~C2*?6VIttQ!dw=>KF$*Y&&U5*r$nWo zr$*gP&OkmrcAZ4>;+i@rSV-=+wdmHEus_!}ic%6mjdh8mD_G(SKp|2;zS^jlZApxZ zVnsh!=_>yShd)dDaXGquXg1z^gHJnJNCYcO%`kp*A%o{TZ90ZVvb) zP1g2O|1hCmiCFY{gkrE5c_tklv#|;pdt5MHZ{*@hljC4JSCV6{lES#C?S;hm(DAvx z7k%>cyrRdlBbt~?Aky-!z_Ul4;>tR1^1XIYoK$SmGyCi@H#Hq z=!U~O1}!a894an}7t%4Upa3!L0KXu?R!47E1nUMtifWkgEQZL=?7D5Biq3j|VhTJ( zk9O3%Hj;oIcY@0;f91>^nSh+K(ej#Uq%0ef^e-OlfG=X`gO^>${)jBU1$pv{;Dx0o z_&+j@({6`2Ax%}pao=L(>?7C_ST#+mVE0ER?2C(VO(DZYug^Utoc$lbp_#j6xC5fQ zVX%mR^yB1>f@9k_k}&Iyh}YByC=!bOvNl!NDNd)c>dhAx26PuY-SA;vRdnpgshU#e z-$|m~OP=sWB)B$*dT)RS<8T%1imZi-nm@69A7MKB-oS!8w05lRw#dysvGQEqiLqo4 zLi^=;%mBjP`aVim&h%P>vUmI=E#FcP^jVWvXIE**Ni8WqMq)kNxPL_I*T!Av5#vsD zS}HDPSyve3%>!eB4af*i!XHL-#6YO(=s}?H%M7uUdp8g_G`6DI60WYTKSAmpXiBR- zcWhtnA?nk#tRC}(IWxnGGSX$6zbf;g@&+6?9!fN2X`GYV3uznu>_I;qFxwLV#Q8j8 zEDtC6`|CBGO{mBV-0r1OF$cscT)g|%7{y727v@PqQ^Lo~J1oalG1+3575})qu`1+X z?rRrX=f@CM)3+_~w_xZ!b#Tb9v@c7NZw-SCxkZqZo9)>`hJS)pUAZSKB<#*PmZQ>p zXRbH%3}3Af-a8!#6m;%B=WM_y%M^g;(HLr7Y{~Cb>s3GEZI*`jPN~aa2q)PYS!o;> zo6q04_nd4z$eq~GUS=&-D+v+|RgqE>dy;)`u`ggp*mbg(w(+Zo|6wmp(;o)@W^x*P z0+u+BV1<2Vb~LMrt5Sc%X{}LZV#fBu1Qim1h6W+J8$v!?B;}#oV^MRf>9_YQ?R4Fy zwoqSQcO(fv{bXN>(WLIV@8eQvy~73P@Zew;%aoK!EEppZj&VBEOEvh^!w0|bsN$FpsO5!Ovn?^>2WS;dvmiN zk9cw%8r}b*c48To62y}++%PckuH4eRRIcgsM{RqA)gq#iTyIailoGINiCY@)G79<=7=w`>*8%2VIxi6B8Aa20%{Vjz% zP%XiSvTYw~NhO6^&bZcL!!7tc+qWpl375!#&uv{^X!iEDAZmVdbJ={V-sdOybstUP z_5L*UVwRe9*XG{1R0Ii<9(f^8DcHDAr{`W|{mE%kQRot`Aeu|9q*;*L0VpLBr+~Yj zIeb$N1FVF{#xOph+?>&x#EYBqG8^C5#;ucml{j$fzOkn>Qv#e~=35~sHN&8NiQ7Fq z*yzp5R$kt~Zwr}kiLT&!{Oa7u?uSk-l%uSVPq`bC*q_Ste-{ex3MI8hN%uAy73z+0b;=76sjn9}>uJgyy8}UGLnfXlm zD>r%kpTK$*!lyOu-{Cl&e^!OWD`w-+muA>-)S!k?u7gPA5n=-{qr?ti9_w_(ByMgV zhIVP1fV0}+(Ot}qJ-;w_BtIoxs~g(e(LAS#sYHCl3SEWYM#P3Y4{s@6WLSM#Ddbg; z=^oo8Ha#&3vHAIc1XX7lh`7BA7;D3qWQ7A5+|2;lwzPyiW3t*wU&B-?fBWt2znDPf z4+{DN@M4OMk@Dd^z;SsK2;_|&f5}SO*OAPLsu!mS1ve)RIOul`(vc(qx@N}W;RLCf zY0({z#Nc!5oOuAd4byYF)-hdEiz8mYdk5WiwJX}oC;)O^uiU|r)#0fs#Iz-`E4dTU zQF9}SFe5#_4A7g*<2~6Y!BqhrLWw!2pEc^}|Cpy+?=y`5Ht}?{3`?9P0bhtf9UCq)kK;U@djp%Q(>MW%R68-UB-d zl1n}qX^2?AxiWfQ%Q`r6e22N-70)fg!tmoI(Z}i zqQ8@O&3WCM6VZr~eH;rq$MArv1OGh7UL(V>c`}nMAGJ!C;>h4yP~(q&!?+FZ3n0lE zu%gt^4+WSmF>6Lh#tjha_BB%VKjG%q*wdQEhIKA$P6bJVZ{|^aSXN(ftywP>Ofp;- z7KYm+_xTJO4?^!t`gGNf_pja?{;<$EOjh`%lH0(CHB&kN>;y%*(C)A!ZirjFhE64q z88^RY)U&>5wArzv`q-hBUaJAh)3VMQbD<0}$fiW;r>Smp5_WK+OZyWLCFj83;!EMn zCRsVPH;kW;fJ0H#Jz`fgMyS_W7Ddf+bw$m!Jx=zXKx}jfI%?7|aCorG80CA9N8!AW zwi5!}_>R*WBa3p>@X?vUkdf`6A=!pHjU`kBpzwX*u^8TbpO>XMuJVa{WfEbpaPGbJ z<_~+`2U~AsyY!GzFhuw2g5?(c-50aahJH;fuYf1P5-(WKgFKA7%;II5h2BPb;)QqD z?qt|+uVF?fFVM*qc3Z>JP0DF;ol#a(ej)zBPGA%5xndgXVcHK3$3UFEX{{_Ch%fPB zHAPW>fI&URDSzHev8?ru!={R;{fgX^utY`vnPA1aK!6kx$UwUPQgpby-+`N6cc+VL zuc}HR)W=GY2ZM6r)biQYF%ax~e_lX@cCrgUNMCME);zy;($0rRehvDdKMp-b47DIY zjF>;*+(>;bG&=t#klTR7GrsBgt^tD!!T9jB$G>CbU_j_-UQS&c>gfIj2NSKgkK*Ba zho!k=vhvvRT!{GXYSZifr`k*ciPuarmgWcOD4NK->Quuc`sU_n4HJjm4?|&_KX@3H z$1A^4-TTsR3)a8)0R-G*(oY3z20W3leaGGUetu~Uj7;vOeEeAXiA>e+%gVDG0ohQ9 z!P*8=DJ9DsK)iogbjZKIRwDdilnf%I&o0aeRK-9rx95ZZon)`9Hf^oQdny<_4{N*=oB_?%zCv=-?+Y~5UcK0!jW@QBzIcA~Z z^wF85qS|WL9!6pv=+@3*vDKIS$yg>gyc{L|3-~4NUnOcB#xR@*7|wf zpwXPyoBWu%?LUt~{1Rq}NwpM6Damxqgg#!3r@d5)x2{6_cwxordvBHjH?>+zv1Q6< z3}{mVi-O##i{J{DQPo81*!IUZSO(5SA_=SY!VW%)|El{J@?B@ySc7mMN- zNKPx~VfV}3lm9ngz4P)EaSddc8lRG3STXrZe^>;;Bl;H#91>M}Tx8Q~rmRGeq@FF} z?#ZwVi2$Ob?aw|)7;;Z{9cOk&2X~22Q7{LfDcp5>L>%S)?^i}0N!hh!bjW+tUW0wz zzcbhp%W=szJ5XCeBfjAQZPi6!F`u;|q@vkczl;A;&{ahdXy;Th3Ez2PiGj$cMTQTT zYJK8`Bz~AGNPSH3SR%ij&cfV85F?)PFiOPP?#fJ3+^B25u534YezrZ>{W#mNAN(0N ziY_LVj6BD{sKYsmdhI;jGZ`g`4J>6k5WP=~5fYFL0U(5bVR^X;-Q~%b{c4l^3P&^* zCW~v7zl(AaNQPBQ7LP?NzluX4DE?T^RxscGldim|^2(}bPKNpBjy}Od{ek~#C);l@ zz9A=%U)H$zC=@&$_SA((z`xN{*J`REo`)doMVFKcEar@3@3_RSKjX}KT|1Fbbu+bE zH^?RmZKJ?u=8#DNofo2DoGD`UY^MinCKh?X$%bWK>iYv77R8xjtj*PYW!%f<>#e~p z*_1}3>YNj!@`dUQ+vAUx$NoEp0Z^5%iG1II{CLcy8xq~>*me}wL83EXoDzA?FD4AU z8&%3Yg8L}N<89xYAy}gE3A$~FmWly;&-cjK6D#J5U6G`O{CX9TBa_P_ywKM0R1aM5 z+LsKTLo7Ak({7pIwLyTfX(Ee{-D#oMkww$_84gDQjysI^YZ+7J>#Wp7Q4BKay!wF8 z3_(?NSGL;#r&%=X!Tum#53KT7!rZ|-w!Y}#%28yXYYR2QmDiv&@EqK30ECA{-Jz_+n5=iBpi@|k7@0e^JB#>XkNGx zfEQ$-Ki7Zb=Ss=~_OaqZr{kj^!%ETprj@43BX3M?W%)RkBX9|h8pX2e#xBFxVFK0d z{yJR9O;Ml1!$5iXCG^IMGCZRf3NPZKR8=8S%GS{OV-&%e5kr}8+ZWe>Fiz_QAzbYG z6bsz`4JG^az$^S+WxLgswlqIx?UAa~`m{IR2y#cs^Q+QGc{?Ak-efx?ossr#Sm&m~ zoM`vjU@4%`dJ0Y}tAjxqnZcqtsS`r5=RA8G_+hcRGFf$E7l(*+9?x*N0fmT-7qH<>)K=6DQk>2U}NIgZy$N3Y7|@wz4i`A9*Wuq zS2?j$$7-t!)DW53{^nWG(Cxgb{S}&3Dn_^UJ8!IjO-L(9TCQwC!bVgUToG#khAh$f z^|Wlx9+#>cunkDe8h_gYlO&%Jx=Z;DYDra<-`YmZH<-few%H4=_Y9ih_DA_L)%;x2 ziu;TQ{SC{Bgy{P)9>*O(r+K$5Pd*IXW_M~v5?oV0dmF(tS-S#Zm1j3uNmxx1C!25J z8*cqUno$ZHloVY1)w)gLb_s7Mm{i>EHw;_tfkTD~)&Rf`Xrh2QJAyHc+xcRFlU7Vg zS?&jm(|XhtNS2{H44>ttRtSpcrxW}ja+k25oP+uGK4Fn!M9-b3=eDcj-%5r>nf~64>D&U%=MB%l zWi;iQBvZhL;CvP|(>q)fP;(ci+wuzgTMfLEyYI@-w;m#dbhO?c!VmNUr4b5VOg1Xs zX(0<%bq2l;0E0d#q-$6oOm7tth2nX<12AF0vXAk}1l4;CJ->Geg*nrvlnx{%E1qg? z$;8$Af{Oi&;e=1*gF$zpu&L~+YJ#4}@)S=e4Jp&S0%Y_v0@N|F!vv3HLmID;1h@0B ztbvysebM^K+tfRSq1Jh~Z)1D_1X@qIgm70XEGb+VvtS~|4)qqz5HHJ$O254i^IZE+ z{Ua^z;!wD>QEQH&SW`l@Mu;dE)H}Z=y74k`xKrPF#JE9ZI8H|n8?iO5t&&RS)n0VW zlJg~YV1vnT9z;8n$kbjDyYfn5R*{Cb=v>5iZ__9LY3R;E$^vKbd zA@y-y;cufFwMPS>kqg1d#`%G?ibBPkj((5$FIod4q0n9lVrzd<1nd~zFX_N z?jO;#;CNc^k@HS7KadoBsC#JNG?B9 z5>`8(RDFM;P|G?Y{Bk2BREjaJMYZ~*?j4|bozL&b@{-`o zS6k>oFVu|#`N4oNR5~8no5?@&FC09r6!E+aAR`G25QXvo`PpV0x&HHEZQVUEP@Ur9 zn#tv@;)Z8<7zf!U*)LAh^(}T}pnW^K8HT#f+_t$Ajv3pup?!kTo?lg6H(@k&{n|Os zKlK;+8bFjE`LfFl|26*$s{Q4v4)@ul$U4T%CtR42R#+55&G9*TuCNNTib;1b4|^() z8t+%UdS|YHW>#YHD@Xsk#9l)tGhW&nx#yhKZZ@~RZbXZHgAp8!0@RMZo`|R+tAV7{ ze)NM@;Qd30`vk6c??*M)RsS4DBb)o-z5!#saQWxomqKsX4xi+~yKOFfw$TjjC)9;5L)xR}=oegs1Z6B= zhlm8X06?De*Ie#^LVJk^meu#S4}|UO5d2<)95VE=GNnL@js6qE5Xjb^YZwYVCh);D zAKGPRhe+|mXe5PF6%j##ObS?KE#orSI+yRP2H-W<-PE%qIPQHJmVNPF>v*nB6t^2F z1mgV(FMd2lVe$I7F}s<53wHgfA&%T+Q?akNAJR7FT)eP>vy;5&)I2!Wd_CM-6e(OX zrgI5E^XCx-BY<_phdCODfi#C#8t?VIsxik>lY~4J++k-(gZSI6`;|fQFun^Dx5uMU z&@hEd8lfCs$jVbTiKgC7--WxZHbLB4dz!}M+UI`XO}OZ0kxOGX_^o;Zb;vUDcsYuS z3<-sTXhd|lsHQk4SWB@nf{w0uwV)T8cZ_yBCM$8qB?%Ydwh3ZP(@vi+fND_a876Ln zVc_R`WF-<1xO}dT)s;(~er36;LPKEUIkXJ7;?YM_sV4mn5zNM)9#@am;Te4uq0#QSre|hA{0%sbReUYIPf$a#Fdwd<%Gt3hO zacc&9Cl&5)wTv)cvF@5O1Q5fU`mGn&eSYr0L<5!6)VCZ<<=I7aipBHPNk#D{AZxP~ zD4>k(-5Zva2whN-!5jX^Jf56J^bOyIMh|~6jQmXL;2ZR{y285a&kzFx@sM^5NjR$Y z_2S;k2>1TM@dN3GeSId@a#mT52gFBjZiM6JC)*8atDN1ID0mzGPj)&hn_{`Wat~i6 zuY02mA+J#55`Igoy;;FF?!MY=G`o%5Za7WzjN^M%s0viN=Wn5S(l#Yc00dv@5I+e} zC2tpAxD01r-R%zl{20Cnw&PEx>Vm=A21@yM!(D8OQT0uhRTmsrMtQ|JW=|MiePK$5 zc45h07CDY$qp#u2Wl_#1Z;0Qz>w81u%(3_*h2wE00HI-<0PakD)2He?h;T)3`l5nVqNYGXgp`{h@n{}c1=V1FdQ zALKX1G?oNwax@!vE}Zg^e;;@~0TX3&-N>QJS#a4@Flwu7E zFNnFu$3i^nh{7mjRUlE75X;zTB~;nsr~rhAN9wL`OWoFTyqr;-LiKZB3%`o-l}P^? zC}-hO)FJ0q@fztH|C)H=Ya&2KEcRUv2UkmFJ!8+Kr1^1cbRKt(H(^}@KFl5m37#Dm zX=vsfS7{XeO;O{<;m48bEn_;meF171_%8{b86p$ZKeL)68OK^vKDJ0jVD=DYJDg=9rDrLLiOpZ2Oqjd8|qs&Im zD!nyJa-6t$k;A}+K>gYN$bi@`9(ph-*jcKS?I{1QKZfkXOnc5r8WUz%b zR;pIVgOcDaF0}jW!fN=1LiK-2yjOz2E#wCtSO%LGALgR>j_G2)uA+fTv<&EhC7P34 zW+iCSSm10(w6J5YZ!X&qCT}k;)gh?|Q!eLKGY!^a5^-5!{-b=0a@)7Hs$n6k|uMtGeIGw;thvWZ# z5b?3mZj4ID)^7i3eYIRu<>b<$V}W`1l8=DiA_a?j`p2|n>a~;*qK7v?5n%BCta|6yt zuh_u*p2qPPxQjDm+yq`v*Hv0lS9dExbmCNyXRfZgKO~{%|1@Aon;RQNEyqm#b9YS- zLPH39;2EQgL87{ULrPKwZQ!iq0hIg*)B7omqd&H zs1)dJESM6qs8!e)Rs!e{db#kz?sgxN+jraCgLnZ=dOt1mzIras@S6vR4M_<&lXFo& zJ%a8RUR1`XHQSKtwvb#INpn^D+As9!8s0>sz)a59#(EWzlK?_Re#}H>1dbuFYE;`D z3BTg;da43}&#gP#{+^RU>4CI3ip66$doNW`?`uQv+@QFBTzR8?gX7HpjUaZSTb&tO%@q zMrsMcXA{LR4E>{qk*B5Aote$h1Ht*pi+dLG#V#m=I zyuu#on8KH-?!iIZ-V{ZzS;!gXoQ0a@6@7oJ#Pxqj*c!$hzT;Ebiy%nE;LwcnMIPt> z(7=w4+Qg|P=~JWgyuX`qRhAUie1#2N<1@ZF_;~ZR!+J@3m*4hfm8B1d?J|_XLrmSO zHRem0DrtjA+i_WDlue+PB=>tO)P!R*n6>O$MQH8Tca>;PK?>@ z*;ehc5cN5^R&tWH9Bf|}yv}k|Cl%whDMJ~joqN7AU(KHXRry`h{GM2RT7D8QB!*$N zeg;xZjw{^+a!CZd786nQa-;K+e23*rFzfaFi+I{jHPW!ab6!7f+?S$zpcFkopU~1! zM5oA@G0LN+{->WY)Fb)rDj?#m^c^*v=s8=xI6&FD!;z?w5=vExl!rg<)w@LUFW|`E zJ|WOrF#s7EG!(5&D9z9rok^m7QOoc>FN(O|WaY0`SnhsrI#34%{@6uHT=uK{D`lgR zM#|XO81n<`MaInUU@0_)vt%};a_KFX<0&a20Qbpkfw3!$J){whrm;)JTU8yt6lg*r z6$4?onj6zrc=U1?nU-!bkSUM~F}h|;4de-Ij!>!h zxgqs;H(%KzYCMd_#SL|eJf8;8CeY}!sgeg_Oj*|OZmVIslA zRrKpEXws}F2>npy2$)@D%vG?NRG1c)mDtZ?twVfAAcV&g4eyKC zsHMWpWe1;If$G(()j#2mHF*AYa6`3CNau``njr>~kVvV}HRN|InN}M{OjSiY4F2!4 zH@gb8=nLep1REu8Cos|641De<8L?NVp*VikKBS2*2kN+N(CALKTZ-@mF!>4oIJE=} zgLA@b!MVahwDxOY0X@#|uun;SH?%2g&-pV|=b;=>hpCm_M%oP%R^Y2*o6)laLgH=8 z$I2lm6s#z4gqsQqSUar`rI(NPz6Bvsxy0raU~#u-a;hp)8rusE(`1QmnyJV9 zuUnI-V$}Ud=U9JSNQQGA^=&{ySo!ef)e#GDG1|nCB21=Iow5rVA6>uV5ng0jyyx zxNC@=7QOa`v=o^f;a(Abc0GHE=j?sH`MSx#r}D=Un2aH!xe}FSPxuGpcOEEo#pmg% zG0Mf#h$g3FX@7)tIj_jc43jY8K{KO)?|S>kE~~0bjew7LG>j5o`ACQefs(47gI`{4 z?@wf3jdw+idy8?eOQBE)U`RH56t;D(UWX7oi>v{KWFpvp^p!I!(FZCKYrN@Fx`~yg zc>@Jl=etJ_XG7I5e+yV7>Ir;X{bmD6*)_5U2c?BOY*X^{$T}ic=`d?t@vyNB{vt_N zQjcE^sUkKp&LdXlkQ)_$g@vlhxjF-M;6`b1W>3V2AHu$F-$&Z*WJ+`l%Pz?Vlnpvz z;5H%;w8x9+T8)l+GLMTzimLQ%i@uhSoaTS0$fI(HzNkKh(j(NVz^08vfMXP_@y5B+ zui3PI6mW}ULELqd47!fdh7o(k^0xkMZ?K804?I? zH_lGPK8j37hO`H!#=Xu%%n32*Ky>(1EPs)R*4Ip&8DgSot2uBW8`V`7t91pA4W^6I zr>~D5n0`srWQ1YFt}RxRLC}0zcoB<@cP=(l_%rpd{nE{iQYZ=wvguEMo|(T|ZFfs| z9YjJuw2CnTf8JZO;ey}bU^#zvpeyox-i0{=5V~=g9Sv|}O*1_|ke|7?7m!pwNByY( zSi8|^T8Kp5L~Y=Yxwg3DDy*+x+0E7e*50mM$KbIr?zmS)081;oEYZND<-D9NU3{mN zg`Y&th!maV#hH19f%3*-gu%esXfN_8qJh8Pi+u6PtSd3A^8T?Rv-naMikvTRNhZ&E zI_JhTn+4kr6^TP_9jUv5QxyCjAg4hJ5>Ogv7dK?1)Te{#*BsQ^a6*#7YaVe&K(BWP zIs&UN85?WqEcP+MfatXVTPnz^LEKTnFhxK_O{=~O@D0b4~^X1h#S zWet7qY~GEyZ(P9AphUAuam7%T_~8n)v(bpy=)?a=flF_0KKq5o{`;F)cV^e;3I?Nh z$7Tb-hk8npIn#3G5v^xMI*|JX(|3VzQ)oj%TYfzqUhd!h+4>in3YSwz*EM(bMA4`7 z4zKBUV7pS{)q&f0a_O|LAC}*Hq|+joz2;Jq~c) z)=E8d=?Xx*stUxQ$b9Ey$WX;2(wW(1BCqY$$AeP6_m~k1J(+Rl@mMK2;93G{H$V+1 z;zG=854++vC%~EwZ?>buOfb4;`OaqRrQ2kpGDF35p|T{)90Y)`+3Jplho6M!*6Zb# zNDWhg1tWjLRiLM5UDugh0s+xGo~^$h91F}U#+|5h@ThGgWF$}PzjSR0;>Q#{|K`^t zzJZjggif6tZUmiz!mm_t| zbKYvV%`y7~=Lg~ZHZoqWMj(>lO}o(^g{V?<1}7T^3H0O-ie@B^@NZJHFNsK;=Lk5d z(E$Ch%LZQ&JT7~peHh%Kg>)B!OCq-Y&sYl&38K)tcoKbSUpRlvbHB&%kH15|IG!)z zp8yAqV)FPDaFyt7Bce6mM467^(szEcI!UL%xS7J$_V0g_`{pKKC^rb0m#B-62#*9p?29OKseq73zE{u`bgAQTFpHhzBT?YeLNo=ila zbz>a5FpEMsq8eQx^+jUjpvOBra59tzkYcJg&Z^qwwd9K+8byO6-YXZnUYA^=fF3>x z>Dl-_-a+XtNYr`$WcB0nrR}F&@1iH!!+r?Rx}})!@X(OS_5cGkjI=9T@!Gb=%v9I( zRyFOMMfDUWz~l?TkeeQlsT`Y!cXn?FRL*-|On_?uhN12SH8|aLN>eOSgd+)8Mzx0F zco;?19e;|CObK(*qVp{ib>nlbveSL|L_7`&+!_1SY6h#Zjt2%F_|RFo2;o#-NMS;a zLJ5sFFXEdorboJ@M6Kw3X>g1DtD$n~HKB=yP-XaN2DDzblMJ|QjGr^}wBzk2iK|yN zt1t%rODT+D2g>>`wxfe1<_7AhH#X=w25fCOs=JNqRR)+zIUC`*67U*PH@%=O?bhSf zpE&(rFNefxc(Gn8B*J=A*to`i5I(^F{rK!lhuue?*tC-F?Z}@b+}6wxfF@p-W`QH1 z%|fYNS0QS!-Q{?dZ0@ZvU7V=F+2L%dKW&<^N0?b3?O`*y2x`^Q8U>en(6Xs15i+p! zvAi9e$JG0{3TaBOxmIWti1^xecr!0{r__V`ji+tn()j5LrSfbf^=D_2d`1gNan{d$&xx zTFsNy(&BrQo@WS5xe$_8q-gBg({d*?x%KR(l47#5 zjIZlxtWFHeMG|=+*C-~qrnGW1Nx4F8D?Pljk8O+`^i~A$Y1nlc7SCa(OIVPv#n)5t z_JFWFwC?I`UX7Ko476LDR?rh7x|+znd=3Le)xy8IV{k|FtIfM9U$Ls$VF|TH#h2k@Z4bw5L1QT2fuqJia#yPK1@#?+eeM0RsFYW>dQy$jT<9Ec z`(5`ZT>Tz)c84SDPk~e`$YT;Wp0&cfTlW_NMtI*?)HcAID~+-IQyB`5fvd_#_|on7 za?*T1RS01@#MX)n%ftr;#q$)-qiC`x%NYY*9HcyhaxkY~i4nduC}F&Xg~yRn%=qxe z9-$hV9nUG}Dy{6xQ)%ku>4uh0#OsjjynCM9@JV!WZRL{d&f;m>6bx;4WcISTc%YG_`lQt)r@MQO9F!`;l}Xdt9s5&flJN9W~VQ?8#9-zq@ppa#muYXQCH& z>uoRkga!J9Msl0DCB7YJ59!xdrV*|DnNUIXcoT%=5goT92p*hgEq$PS1Lxsh?z=5` zDs2zs5cK59fw7l&jn+<;%L+{ccOA-S&dk{i@>HTKNjR)kWBh7?` z_qC$zqVqX&Z3i8tl~`Oer^+ur6l?l!2nlSiv?`6kohp6!kmo;H-b!-%7F?j;CxL9W zR_cs_+c@w|3J*O;J}AD7zHm#*;3a0D@PUcN7O5}*1?qRVDvU_V2c1&iY8jug*Ly{@ z_H$!-tJZ9`gm*B=ryg|R^j$YpV0cO7e2C3q7j%E$|Mgc3n6kE;cTIaNz_3Dvu~Bq6 zT)S8PpK>*(@+=5$Q1$Bg-@(4NNx9mI`BJn}XUzw0u~i(dg4lchPUbzI6EefJ5q@}O zRg06Q6|(fX=NiI}y`7&TR;aAyL{=mD-FgTTPFV8CAqvl{Z$DkAggTGIZAv<%pGUOn zx=YIF$}EpHYp3hz^t{NbQOh5X99$7a+^LGhO-%AMcZEvkO*hP5Kz6HYLs39<>gh9= zHMoakA1Lt0 z_q)qeQ4g0kB=feTx~1f!21RaAOYd$tW;PO^nTR4Xt*^)gJ_?SAe$YzHI_=-et^}uu$Em51UO}w)BCRaui3};nubsND1{q+wn2JX$u|Yc3)&kS3 z`oow|I{s1Ld#>gJ3=I=s6mt=7^sT0ntxs?3oIS&~niw_0Eg54=cO#GmTZkkZf=CKB zm3uSyFt(9s*l+At$%^APEpu7Jbb70%%9u6E*&7T=(t^uACahbKOqC1|DGPeo*k_hF zUvKTx(>Bvq-Pk!;EJIFLr@|9kz9}&qZCbae3V7n4EY7q5P+hidsHn1rh^2HICTO(^JdYzc1^qPl!ebgTp3pIq)Y zsr7^6auwZKH#fJd4hVc0k3mh`z_xkiYGzLP=Z>15@)A56aRGmE7+jwYD?t2(dXp6| zq$M}aAfMLKXs{lj2KXfYmScNg(X@vH)ohlLhpx@DM>@CL*qAvmQeF(663q`k58M;4 zn+G}DJ!rOz@rN8CQ7~y-$cQK+H?&58AA|;#m;EEFlOXl4E!?*&`)04cAss5H4@IY5L}o6=ukCAHvckjHlP+NYr}8_NK{h zgmYtuK-V+T+s~dqt*;fpb30GOkayIrl-;3?vSRzd2a-xJI_yn+k&d~55opp~Oq445u5mZ=@e8PH1# z#ku9@k%l4}HuIWOccG8x>>?_=WM2*>^`%Nk%d|(sR&qmEQVV)e z!2s|t-KP{$Bng-V3wnQT@u)jId=!UMsWN*K$2UjIB9Jt!fKKv9x+8*IF5JFzFk1w_vLJ?c+hb^o z&7-d!eB220F>1LeB@j@?H!oFk1Jv_qxJvjC(HWoV#>BF&+KtFwU~ZidT<8Dgm%% zD7V!;=#+oTzo4{qx*exL5pqS6_VS0um9D#j>Z+weBw9yhxy0Vv3d7uMA;RqsQP}=U z(S?^=xboKf!*SnUW zQrfV-v_Jutgpp7?+Oey;&>u+c2?yfNtb2I2 zbj7+n7SrROFIsD#c6y{35K_ssY7auSr`Xl^f^*Q?=hflhZuU0F%%aS7#DOYv&Z<`} zgU#)&f=bBR4j3Btld`I}Kpi5L>A3HckuHcwOJp2np4W<3cU3}<%)pPY4Xrlo#KLA& zub<3cMEy8rB^6+L<=eUe67V>Ef1i-LN@f&D%>xgId@iU)nl@JnA`9ifBhtkCacX4C zybJ#Ys8MCnLCLFJx?b?9PT5X3>C6%#A6K16ON$y3;qJg5(UmLGKz zOz}7Q@BQI9b|*uA`eO*?K{~lime#KoLXI2ODFko!Z(edArk~#7RN6O`C_L%>eRjW1m&Vf8Og6M;uvwYYb--h~Gp1{41x+&5ulh=1 z=%{G=E-z~@*0`~cB=e=SMS+q8j_y38V;OpN6%n!KNCS8Ia$E(CqRM8l^ z7KArj9L4~2G=Os5Xxr=jA3>j9#O$EpKjyf4-!JSrO0Ts|=gC@b?jwcZvjFCbJwTsp zEbu(cB!+qjbPB>Df}N3NYyi8pilC2@9b_BLbi9FlIot;M-DcGkB%^H&>U}fsHnx_xC&`05%t5G~=Ge0(Ix?4g&jo_o&#G$S*$lmglUmy@ z;*^%#uea~8Hk?HbINU^rzwvLJh&u$~2|qn{ZAN;WmogO}+XUqWkBm(x8_MAGKH#Z+(asV^v&!?brx z?W_n@JM@1HAzv!+U8N3HW_&&5o>gUoL3>d&0Xj8%ToJe$I1m zBT(hSmuS!2CbtGyg!YJa+Z&w-sbFhxeZ*1eT>W&!8R1CWmfJ5s6zq^AA*J$o$PIsJ zJ|}z40$kO-c!^Plj}4fCG4`5$&ApGa@NL$b9-*hkqf={psWGu6?CdB&X}O)`C(t|1 z=)m8~XWh(ypX6mFhxL13Cz6_Um5Y(S1TlFUk{AjobnCEp{Op1l^zGM51ywPm#{q^G zl|?569+zBsqSdUTKM+{HXIoMjlXjakw-m>Jx0zv6=6(7BPpL_62{_5u^JZw&^;D5x z*i7V#LXIFu4(C*explUFy(S-ksG;DU7tturEg~&Wwp^yNG8H@1-WawMCDvDSF->Mk z5l$H8i%T@RM~nqj%o(%ZO!SfGjqGsS-bpn8Q67sra@47?5HdyV9 z?Mpl+K7W#Qo|kkYIB;F^5v;NR`vh5_Uyol&Gj#^&eHP2M1Kyh4@-)Dv*%;6kQqiR1 z=u%YT@+f^lWIvTG345Lj-&4~}mODpLxrh_%J5UiQ#ugy+s0Mrz?-qTIJ63GYdAZ~N z26AViQ1<$c+j;`LO2+_|1y0heRL!;}C< zNPonh>CprhEap1#4QA>s^NNaof8)V9#u1fPh z5XJQIMdGBjHb!HGYbp>#e=Kjm%TsEoB6vrFU*Y%gcsZJDAR0*9s$%jNSO8@>-u5hi1I?}^~ML!>%-UqMnb?)GrZghDycS%k6< zYt`HF|HnlB-ZER1hJo(btwA1KY7}Vp-TypvF zLL@fA7X`M9@H@G=a_G6KK(t)Yk*P?ZoA;DNMDF)`-RamsehApxTf(+1^g5mJ<5AaG z0Ji5F+^=VKyaAn=2P-Z#oUa9VsPpW z5c#C%9ioJIhtHxSt^1r;y1mwd=Z`(#*!t!*EeTwXo)e9|oAVBRtgY*HiJglA7K#2k zQ6}tNbZfOKd@FS#iTpG*n{TN+1#NO?@S*<3_S53QtmNngejd_z2QzKaxdGC$Yx=#M zYP&*g>;;WOxA?YJyPs!>e*g{thNk_xah330Ud;Yk9{LdqNwRuUR=dbVFhW%kC*GW} zr7khUm8mBlfY!HJeh8zy%%cFulCS%2RQT3&u8*awSx}y3BM^%eINicpRLM~yTBi%f zM1MeN{aA>yFHbrd_YlMe*m&Bx+6N^qa`S~vvb3&Fw@a6@k4i9PUEXq+)0_^Q|L}n7 zrE999t%<0W#8}4QP8PAxPxrv%Uz z&5^JdcSI?KOGQn3JlZX_)EDTM0q7|YZkv4DI=2G7FZdSI121{MI23>I^(PcU?aYiS z<+MDstO`h#ZyT}H_k`_IX){rU}hEiBStqO9? zy|S5FcmtxIU}b95lwnEb-6p;093NpfG90&zDgU{=Kv;eIGSKwPd6HplsTu|6=%qtd z)$2+-M$S^Hom(wH2oG59CV^xCiCPS#Mxme&^7bOQ7F29lGCR$)p(d2!4M>+KGS!s| z-?i>K++zF{q)Ox4C6xi1Bas6l-6aUFgakqBU6Ohvwd-ck)IXgAv=3>2z+0_?J(RO( zOUjOep%r@=cyfigl#pH39&x=9#7G+Cn=!w2Pvo)lYQ{|3pq=g+bET&5^eJGI6)Rtt zNMEV&)&{XDtz0y@5j7eJ zd-ANeV3R~xPdUAlyexD&1O$=4D4!hv;;pgQEe&|GO}Jvxs-Mgh4J<_JEavhHAG-#&g!k&$!C9|WrXpXU6fkAIuGsK>BQKQL0-fBoU2O=dGP1D##bJ3)aNXP+5S@Ys_*d0$6@Kcn*utA zZ#BTg^5-U{euo&S6UpUt z4!5&YkY$MC8cX|?=X6s)o>k=K@ibjjv21%|YW<3PwR!5}Ef~9hpIyprB6b)IKWLYO z#RHv7Hby}lyOp3_f6bFP$@(M3dyt5=^@I&8cs9bbebq)t4Ouu9aqcS;7X-+sjBnq& z$C4`V7>Wj?{v+M%Mtx^Qo6QKCADC%tnhU9?$hG~dj-y0|RGMR}g~7;OlULIz<49;( zrp$S&A7;!My}h`lBkTy%eR?sMFZX4H`D}rV?4XKC%qULq+%p9)O{Yw<1B`=|9lp!B zgS_lJ-75r0(IELzWMcR;ShHOx;Oo8o^6$W{ch%4gt}0-gqWiD92BC0iXQOQ=kVp+A zXjgX9apHyB@3L7vpt7jMj)Ur?%s#DR1DSO)rdU28BLX^c$N!Bf>-Df|V zS*@lG0V+gWZn_e}lyJ@YgD5PEcVnQ8B83%SPCCCbA=LNH)Zx09Iwz1Ct3(7vR07{8 zTA42M1tO^BR$%p`b@mOw?MkjJ{W^Xk0T}uvb7^N)^%mdt!4k1kgW?a zaY#ZPODT`Mfgbce>Ko*f_3h&=nPO=}H0pkN@e#FM=#JYTi-FrPhdgLz8Iqx8_12_c zq}`FKC+Ktz@4XSiTae8>sTKAla2^3o6;yM%@DPhFX<2MKMO?*goeLIA+enHLz*mHM z3uwp(LS>T@N?)`d-~2S5*Z<;Bzy}|eGrU3Yos;jeY~ZVsBEnpButyWyJ$HR+%lF{~ zz^akhNgpKTyHlHKiCSRv%ewmD9Pa9FKLQ?O_>+~nLOiMHSpJnSb=FCI|2yStKGiMt ztm6+ex5@qIJnjAfKxGA38%%@v+#|IB`E$~Dg9{_IxdHU^}RA>UU|OFo|;2%RZ( z1rSB(%-Z*6RAbgc1waLW$SjxST=C~Pj+15y0-(}cEj3L=rx7f}?-H#U6=wDf`JI=I zho?Thj7>oRaZ6?^bw-q%r$<+VgvF4F@LkjvC}9UhGmePrE~e=p{#haDe}G;pme5Dy zE7=~Sn%bQa3lloTc+YOgH&%78(hc z0v+?Pdh*f$!4u*cU3LZ>G!rx()nxJsZ_4EAp?OGr`-E4Gzyy{@reLr3p1P zvwnUs!5uZ|E9eD3(#aS_|5@ z?SAJZ&|Oj3h2W{=ZhA+;W|HIFCR6Le*BOJbKt@94=jVeMf{4bEpBo5#dq#38uj46n&@C=qsE56vrq1@1qelsJ(}SheoN*g(rkUuALEM zE6qmiO5&thK11J>6bv)1Jx7yriuBB`dmeVr&W;R@-#=-c&R*}kob~o{QqtluDs-IJ zR@9qGI%}gKysB`Xw zo})RvSKU`bnC|z88VlsWFJkfYueC#|nzi|IMIbOR!FI3HtC@{& zOkE`LVNZ8^<(8z=E!)OTdU`%{l2!QIV3dR>0!R_5MVYfQCv${HNR}-U`G=5e`Asyb zj{D(|MP~3xe5hc4;rUn>9SkP1picpL3RQ=nw_z~~dcW$4@F0pDS;oC(K`d8SqdA)C zSCboFwMa5l&xVsHQ9?Zo{gU@d@Z?%|?-p4FZC^zv7{Ss*wt9t4`N|XR?D`7Ep6F-u zX)Zkx9HfT7JotC(WFm($n8fo5doyMjrnmgZHU-|*zg0ikr6RfedJsz zCr!dG(lB-uYPgCad;3~tC5#NQbBX|d>)7U7!kXlP+BWMcKYq{sRT(VnkwD6&K-^J zu=iocqaG069`=ktI5$*0GI0U0i9=RytxI zFV8F1T=Uk2!=W&0ma#{9lSYQ`WH?j`Dk@^}p+v=l_GR~%qXIOUU~D>-L`a;V&fNiQgJK0(3cD`((Xgs}jU z;3^MPu@rl6-9YN^C7A^nya-KY4CmM~xwJ>V|JvBOujh+Ra2JBCU-BZCpTTWj9m*?E zAP*-FR~zQy!4Fxl#up8%q{J3Oc9dorow5yP(1h9R+R}hacnAqm z*@jhz|8lDjO%WhAAVq(m0IsGo^5T7PVcSczTFB|G`NY7I+v2`U*3&TNMLza%=RI*> zP+5$HQZpUI`>~Zu_uM9TpHHiIjad`Eq=)1TwN{yIHllQui1i)~58%TAVLRW%&om`Y^8D#C_z%BA^A?J>fG36vILL6c z^GSYOrnIF`>e{>H$_OKAd)fi3)Tb)4_54m*cf+~D#a0!O1Ukk7Ro_YsG8L6g>O)5h z=EVhb9>`@-45zXAx+M~Cs>2g^W&!D+oEeHslg+#~+^WP$;LJ%QTbZLkO>OI7A(W z^Lz9UIRt^EUZ5+E8LVpXr~v76*$(B5`Er^6QaZnF8RS0xLaG_+y6{^5>A4hJ*m=VB z)cVzun9H)^CWhP}N`-&gXZ(KL0`=Q(XmBApA3T}N^(iI)@j2ltSSzX51`uqPGfII@ zY3%`(gnL!(E5NGv!P^T8-U5O;&d+5mLw>(ruZ{u!=@@mm@4MRG-%xjZ$=OQH}_SH|IiKyIFId#Y)nmU zRQ8{BG>Tv##228eyK*8Vx1f;E!5<+c*Bpz6!;xZ|SDxAv&Nco(jvrrgr2 zZGJUL`A<>sj3TN>R9{9-Vf}et{@9}ZZ=!!=2Nm`R&A}d3$XM~8R6(A+6~OFg7FFmlZ#mYhYO>n=n z@!u$=gryJpWit30g=)Xc_is@v%t;9m&dfTM6wcoq>9@yJ@PFwQW0g|*pKM}~QomAt zkoINrKcLhz={}*xGta~yQ2qs3{o5OUF&+RliSVb-wxNjgRu}Znq2ogakl#qXgd!SJ zLR2oohW=}L2*1XPT-cX}W|%?#Lp~Xd(B|ehRl)tvzot#NmWI+uqqbdaQusg3Vk9BF z6wRN+)xk;?nV2Z&+EIV|9TBJXl##QD#PU$6?>{Wim0kHS3lcY)ZZ;Pej+ z;BNVBJrWQ7MDpE=eE|Uq6275={S(g+8voEn1u&A-geUE|8n&7XcCCBk=HO$hnrA;`V3YGPrcOpu z$wD*eMX65nhuS>gvu;cp^PPF|KyH-DpEUfh-uoN-q>{fR7#h-O*h5Uq%-zehV>@4H zGD1Av;$~#A*2bw(I@@4u?2lPM4_$4-l%dmnGx>qWscbd?YN_rx>qB%N9ixDUGk%v( z(E+7B>F+H5w;>UIae^U+6Jys{Z@u&Za=)h}QMkUlyqx5?;$&2yT5N(88!u8w9ht5t zg+jorj910h^4{OQu(*YI#xX0!lv9LR_CIUHpET;%1h;$qI??ZbP5RDJSVhcd(~t(z zggvs(YT>w#)$N0;n*+H3RcLlDHCt(tt?>rOHE@<|RAU))O=XHo7D$9ySLE4(99Ly9O zE%u#)rXVf7=`bm4TNShK^NxEd4(Dw0T3YnIR+^ktk{i4Q(TC{rQ^fE?zVcN4$dg?% zJDk;lRLdiaz3_>!t`BS$dH+6BI;_I&5`Ct(H|$Uu(iU8WM8!DwaU%$cgv&}X3MZU& zAU}!I0h2cq>H1_Pb#iLT@TAdxhnSw;9{bV=KPAoJa`(8#Zj0-k=Ply7o6G)qz+#;> zQSCDXSZ5A80n@suto1TBpvMglJ02`l7q>C3ihLqLMhWRKZ#Gm_QTcehR1YXQm@dp! z`!Q#_H`=OSOUCcAsZKPV^Fj1r36#^YS9E-Id1p3LR9j;@=G`-BQHwpdQf*3LvD)$t z@bS59-;E8U?c~t_kjpxQL9E$7#*(Awt?||QB;U`EYQ~g=(?Zzm-cfCiyUKI>G?foD zKAGE|1tbTAF4mZ5mKm=!)l!G_K8`#Ru;_k3K;M3;Bk9{DuUTj1_fGS*<6}bXp!CbX zGlLKdhcw+mwDgzHh%Oseww|v@gCwZ*urUC6{e0g1(r*$QPZ2)nqgg=V>D?tk@oDww zyHtq?@**1}<8yf-CRJ%uz~|=;jQE44P!uS2bkDONuW~uaxU4A61E8#6&jx6eRVK&< z-c9sT$SV$-ZMCtR4Cg}DhAA=^Z5bk>pEaKbr0>tV2D+tfWC10VNrGO?sdf@V@17qw zx{rf#1?PTF0W(h9l5G~_hnUpQP-GL?l*#<@_M+IV7cmC)eGdbVp9g3Jw!=5Jpz&Fv_PcxF)kOSTvw2hP(m2!66nXFiC~t^G zXso6bQgR5qz7xOZe=c5GC?~l0-v545oFI(jTG=SGCq%8Fj`+d9&TBB{bU&D3RE@vJ zDQXReMlPGe`>o{Iy5I<7UnnoliCwL`_pQN8FYq;JALFxi?9)g9p{Km#(L6wp2IcSD zwipg1{4jfir`ff7!)R`f9z7Y2H^9yEPHKe$7^u@5rsr^mf-pyFzW%PxG&{n8&m}>Ekybw4E zpIJLE6g~izD5K?&SF_^@>;`F~K!pdjKBKml-+a=k+yvR4cE$ z_^elJk*Z`-?fbq|v#}c}`OMG5y__b|pFCS9rl-`*XEmJl*&a7HCm0Ay_t#_*rD1yOn%cq`{{mNEn zOaK&D6w-PUh)(7sg>*fzV_yu0Omcqcdp0(iKI`BwOX%Qyt_}48r1r@aGCx93zAtK4WJ?wpj4XQ7h^{@o39YO zKA6FKn9H(Wa-KMtA=#gjZ&&hSwHG?(rZAe!F+aFnrf7CFFArs^vso(*AB*Ci=h+G% z=`FHe^uGA5!0UhYhX3^ci4eDu;HI)q;E`anfPF=|S8*$0FlGuMtd765uGh)#+_hYi z=gp<@y4yib;^Eh2yfxubFBM^eYPONy(Lvi4|B14-;b@IEGsMwY{ zT@R#~>J=4@r!L*~bkB=erF~0-UEa+fBiwq06zM}@q;3I9CJx>HHtngh;QMP1BHA-v zhd~&8L3oC1&J8nIQgYzqt$ge`r1{gwq>E5siZT%X4w^;I!WBDfs6W>O&r0+Y|U&SloO?zP~vdAGObXBR*c zMbM@)lj^c+n>%lM>LS~AXA;MDw$6b}%DY}tJvz=+c*@dtD*>55J9tTR$Sw2z4LX^o z^4{q2{(|Y6iXvvhS7-7a0r_xg1^g)@_T54=)ZWXLHm~?#kslIJ{s=!1sD^Bs|#j0OW!pYC?_LRS&ku;E!pauQS&R5xw265hC z_v9P>o!u1|J$WGbaO6$)i_-A|MSrKBLr9yH+L@Tx*bk7lKnm>|jTCex4aPRk_&10V zG$o;&#BjE}H&-U*S65dRYJ7n%d)gq0jWucsSb;%a`;Ih$hp^;WR+##1;~|q@FU6z? zRK~2R$V!@G?8atx>A@p_ql(|sU>Vtu)cuOByqZxTDB75na;IpP@CfY4O$+8zQ1oj|9Oe$ z=opJa@RFcc=fsQ9hfDjpvPyxXg|iGud{e|z@7ua#gcP_p_i3$--&)b@bjd}*tJ>6^ z-+VkHEjX@Yi8scRaf1zwcsi{1L**2gt-IeKwxD;byOSZn<`d?aXet^C$JkxJvqegS zy^&57f)NY~KKhKFA{~ozDTX~POtXNqK2~6t92sAos%$8S-#C@2E$$bHg?IC#g{MuF z=^Q=v@|nTY%fvqwP4bEXI(v!a1>GnF9?w=315l!jck2Ic)W;Kr)IEEf+Ak)}3qqiH zw4u}TPliW3kcro3dzY8>T^X%Jy)sGtz31(jBJD?q7@Btsk`4}**bK264JnE|hA$Y- z7HEC5VQdMVWNSE}e+5xaW{1@63zvLpX2Dvc&*VR$%8$FOXTCr({5sPXlb}=ZTH)Zn zF6I^3$YFFmoXl5BM)>J7s+8+KauF+|5JuQ63*imr+HLm3CB@7F!c;%;-8EHL#Pj6` ztjjY_Q1RG)g1zZAEq}g{Ha`ySgWS^3mi~w#%sn2n-o%Aw)O6F`1-l&0kA&PiUsLy{ z&z5TKW3fuz2G`DgHi*qYxR9tHP(%5O=z}8(TS4U?O2G$?W51x+ifo3+o6jj*(#) zr$tGnA0C5xg|8nK@+2N6rowu<%Sf8njo{9zOe0#_50AVOPD>M^J*sNc+2MIQD86GA z@3}Vov**in1Zx){M}fF2Q`W)BwJ17o2flAMBgv3~u(MNoQyETBI8+gXBn;fjdp*^H zflYhIkF=)w-@AP7F$o$dT-RCi(+@ z=CjTfJSoUyylf(YoAsyEx3c}^8(gFTL0u}V=z7GAR7S+ zQTPS)uYXd$_+Nh(SVHr_m%yLPFyFl&XgwQAvQ|0XEDYCpo@;;Ff&@AS%@D8P=D}^d z4sdS2*Rp9f0#&bhoYF=Ip2V!i3p(!WJD`qZouc4-ZptH=ZN=y|*hXEO_eZ`jK7Uo4 zU6j36-8{}vi(US);FaFm&`!=v$?r*Dq|u2u3$^Cn*(1^(+x$GWZ_`s9YIgj&EysUu z#usZinL{TBjCYj%(c(st9PL92r|W9a!nYN=RSbssEa)iFODylRY=2X_Xw>I45#f;HgGPDd*=YCar*#OZzvxpk-y^qpp2E z>$$ShWFcUtR*UP0Sa7I4?^m&WA1g23G8H_*Csza2O_kY32g&?&0nl>K;B@^&cDl2? z;9UzZBLDTYdj0cLbN>CSznGza<&5%$FSPHVX+43XROxG948a5g{JMoa;3yrXrE`Cz zb#W`ZPCh(s%hjZ%v-ZR7IS!+cquI3YzZW^RE#a%&+&(BLvs42)e2k4 zk!$D6GK}tfvXs=@JR9va8!D>ga+?l|Jc~=+lM55s_f*W;2J4rr)a2yD8Icv!a7@^y z^1il{BvQ#RYu3z%k@2m1JEn@*VGdD8kp6TBt#*n*Hj^xXml*#`+y0#wD8yH=wx|XE zdS4-nh9*P0cT?(32j z&I!Q#dIqU%l3gz0?E?5JzuiITVS&PG!b1l{chVcLL&m;_>0cHxZyN4Acr;}g&CPTI92 zm4!?6J|HZO?-452oAxz1C|WENWJhg}n(Opu{!iaiofk)c?%zOqogJ|c*P2&Zg}KD? zAPlDo%&j<1t<3g7!PH$zcDiWpt>7h_jC76=YB~ZBOI=1LHmk=3_4cew3xCLRnIGS* zxTqCB^;65oG6olygVvrCrVN`%g*Pkj7H$p>c%6F0^X15nkVAn_m-yU9y+>Bu%YhW5 z_G&s#Ap=f5J?lUG?d`$3y*Suqjk{csHL{cM^rMrSuA4(0ZTza^l&p6B=hV`pS*=qB zJGn@hucV4^WRncv@tritmI)I54Y_0pQ1 z8f3YxkMrcyf9iVQq0ME9qcn@^G*=WOH^~Wy6b;3Foq{`fAcnfGHR`)L31yeFjo0&T z^*FBmcJf{3>8Qr2MK)R1OK;8LJhAE5y27(jP(*GMW^5lmZ_~cAT%c%Vh4oMlY+bcN zBOIUeI`!x)uUv7`IX~;duxC&!vyTvZDtYJ=`g|j~0jhwrO?^7MSyEm$P4_a9JxF+T zO##+nI9;dMUyZxm=L_i=@w2pEA?KgUuhn`-?5t-|Kke|__7e3ytnJ8FtvDuI&(3;* zn){lBp3aGZBHbbsde-64lXI~+kQRY8YY{BKJAIeERE*t&-cWBf=H?>{KGyX;q37t@ z(o=`?P5I-~4oHU3Fr5Ujy~%N-+owN_@IS5Qzvcusf7`eY>d|hB4 z;!SucTYVxpdU%=_0W?H*kcO^B=XuZSRT*EG_EKQm3X@}Idj|`)Md)0M` z6n1j}%3fjK`@vTZ9n~J1mH=|9dL$=soeX#egYuL8eNtezVXH^Dz$rip%9BJptH%N?sT^O6Mv$+xg!${VdwUIX$`k$Hu7WZW(`++hTNf^@iMqn^ zC!1EyFBdk|y8n*Y+sW@h&vnCQm{otfAG{KT^-v~v{cZ}ppMCdvcbK>CMcdsjnKmSo z>#*dwcRErI(e)XOaZHS4S5(ulyEc}ya_6u+>=1&_R2j|e=;c!;QD7dK9Uw<+wosLO zxKO=hp$DwATCmSwD~u4*U0Rtba(*;O~U5uc8R~Z<#MFH%4;eL$uUUtI(dSb zjio#KhbQlNM>YPlvVJb=_3&SLc3-rR7c}tG=b)7;W0a+zEqNp16hc2zpdAssL>nYB zCLQ`W44hKQ=@&H9hj!j7o(%c~+zi`8tCLCkY(5<#LxD@o%_aV> zlK(-H=`WHl34|~IL)`eU1VN&b#aBK?!q$^LTz{9Ov|l8R>Ae{FyIfmDL%6Q}K(O?8 zNpgP!A?g23#Qz~Kh`#>6iTFQc^vg*9pGEw;&HvR}^8e4JX}p9h%&2)6HqHG2uHLXm zdM;a1ZLVA|UAw2~6K{`1Od=nM`d8?$6%mNO^2567!=c2qM-%d2G5DKP_)QoY=a`WA zKIzor@fPXxX7>PIZ4!t1=3@QYuyx!2$JkegMb&kEi=YSyC`c#*1~4?D(y1s&4c*-h z(w&NkNREKyP}1EEQbTvwNH;^r48wef`+n|tzwf)=$LsPR{AbSDXYak%`o&uA5PRdjg!(*376 zmCbS(ui=}QDb`c>eS8 zN`dsab2$468_cia`JVj9RY^_iC#a})L_Nd>TX&{zcbVanX@%)a+q&k zFbqeI-*rKYp6(_k6>?2Rw0yeQrW!u&E&E?`n!lgLN+M-rS|!VcZm>v?wrT`CqoE4A zwQlUUI9R!pxi!ipda`mmWdtvt2VM*&m>h&QoVkYlR(SW9y2^P-;vxE8~zvAKL} zsL7YsGi*Q@)f-B68eh=>R5y-GXh9D0NpL@v+L$K#Cr$P4tm_PHi%fJWaRD{n@H$Le~_3GKHz+J>;z zA_Mp4cT0N;9m>oGdUDl0dcT(d$1ZFyq$?r1Q~8<4(a7$+rvx9{JnWgvwwv^BBMNK_ z6dfaG0xRE&3L=e~n=sx`&(%1J^z)ahGqun4d)PdGm~bkLl}WD!gOXiO=Xj>s^cn?K zC5`xO65SSuY_|%kq>6jyP9>%`3ra(wGOVtRsNFJf zMQ*@L5s%2|g3r+FZMb|P+OBidyT=po=Q#%sw+91!x0S+abaW;Pf1YPd#w3!o6>F54 z0+qIpJS)TRB)Qhjz;RQT&}($bwDQ+A_|@EEc*y^}N!7GG9Uv^5y1?XDb)OH&$86>p z1LW-<68<$V0nMR2^E+2~oz(Qu;)&3ypyA52O%e4)5`P5`?gzkIK4XjgAuUZYFMV4@ z;i`~48@V-K*6zDgYByb;Gh*uz?R_-l?;rJQ z4kE_#>frvE)Gh{@@7smdi{hs{cD{4Qr4>`AHi=*y`N7w9g&)>uYtn&otuA^)OyIO^ z;baCOmvr6fAONg5h)4Lstlt?RK%=gJzq*Tqt-1SViN6+uNv4pT-XpT78DOkhnkUKJ zochf%m&PBsZ5LYP5+C9b@h$tQ(^E7ZNb!am&e))`oE`Cvf8!$cCyWvGiFW+ZE?F=^{kFaHHRuexGh12{ z`lN2Rj|cQ4WO;a~G2z>s>7R^SP_UQRq_IfdOWZ*a4K}B$J!F1~&>%vWaa z_erR!f&Q-jkXis6aiH~j)(ZCKMXrl&;|Bn{VY1C3Dx$2#C|qcXTCQ8*rq@B2VcqI0 zvgPVme}&`!Z}j=ANRFTfqEL)DnFY0k@5vM}kz!$69jOH7>!9VLC3ntKE;L$L2=aZr zb}wbsdHdq7#Mk#l4ctTILjd6Y!6{PPfo-zq{_Btt30iOSskb(4@dMvEXIxJ6`r~of zOeq9zboOK6ZX19|dgERUkWZ+=PI}`UWg4`q*iG^*Trra+MYT*y!o_Bzi`G^_U zJ28e?*P^W^Fr2W5t3JnhP3L)ZRlaQBTL! zhQT@1)FdwTJT}5--%=zQ30$hdDxK5-x?qBuu^OF)9*f~0~M-lvTo;RwjN3g)S;Kpsj0N#aR&C06EF;;FQ+%2YvRCxCY$+a zVSIG_5vjF=DC&Vbh30Xtm=9|GI*;uHqwbNjo=PtgL|Rwo%7hHUcMrQ_`aD zJg-b4+H1NzE(iOa3OY8lj|ZXOkH?>sqPPxkvZIfT-Wv6*+x3_fxLLnIByy258n*zE zBma@b^*&TI`qth5o+apipa)(vZ+~p-9oj);I;n9fY^KJspRXN}5AW?#_yt^zT7*3n zd9_30D!zSVNonwMi!sW z+~>&ZG)P3-gyybIAQ{spnzdTAV3 zoq`5347I5~DS~+w)m&_YSoWmZU=YoY&&3kPUJt!#02bJEW^2h+$-CgXMqBNRK?$G2 zM0A&gG4-2kc{_!GWUz%CooAV4GsA7$?8hcc@0lc8FD^QenMZN!zt?fVarlC#+%Q(7 zp5Rr1<7Dl1`*78Jn|mf-wwJrMTCHezcc%(|4EyD)Yyt;VEJ{D>8v}vC1Ww2)#{r#u z7XBfFqxGygh@7w;(RDc?uJN5F%x>OT-}W&Ua7E^n?k={!nlCY`EA?z7D9B zT#D)sG6goX#S*7Ovv7gUAbTqf`@hx}{)7+!#miqpc+c0L=e*qk+w~d%L0{vPg8iaR z;Fb&%ijiMdlwgaHiS;iQrdx+B#RwHH=#T-V&;(m2zzI>SLm_P|LiAFZVYk?jK=-SO zqbG7b`9EPNGsI48n&s~uUVi7@r{?jwNN_>E8c3c?0!uvlt;>W_;u_4)L3zB``ut$U zw)cDSyTZ3i9bTG#cg!CPu=~J)%&5=}ONR&>5WXZN2nn!y6+N!h%yIdHNRdh4PESJv z*mPXJ)kL4PlV*jbfeHU{s^Vt?w4C66y;h0gTa5}J$RJ!#IJh-NIr7v$w1o25?gA1h z<9L7s0O2ye*Yq>^h5Z{@94$x*k>?7Hzotvau$aV+`x3Y7O;3ay&+LG6sEBwLNh z^4J4v%Sz!nk1g*FR}z67oeN|mgDig5qwVS?ZiR0hNdiDKe14_{K;c&0?#<_8+}eoR z-7Ht41!)=@_(p+kBI=ZY8miJaO%WUEJiYIfz#Mi zA${{VUe!-DMzqZOlatAH&3nRYi6Ja3bWx$))1A~_dyTdL3|gRC#mQ*SgWkyU?fDDW zpFP@mu_G~%lYRzhx;Q2>`xtghV97S};f^hM67CY8@^;#;@jY8#$6#S2kw#}C6*ruz zVMT9`TZyQ4!xuP&H~~w!(8VzxqV}o^0KXk<<+2!Vo4L?HCh}wbnt@-|)*W;wG>|sq z@EEiRtVR@XWESjr_`6MC5v)6-Q0KdVuyAR*Vy3qb+SJ@j_^>*9t!bn7St#M}Leq5Z8SJG z1Gqbf2cr2efNXBJe57%M8YF(6N1iz)_pJiBl>h^38@10FMdGwJ#jAciv7lXjbd*rx zU3CiO60HAz-j5SRNqzH?xyPux?zPhld)+K{)mDWyeery#ZHNxMQOK&UYpk>hU<^)& zBo24FgMjc>p@ZJCOckEFtHYG4bp5KLc0H~-2HkaX=u6-k$jyfwd7p-I!~DqExLsnk z4?c{(GD@O^-NJb^Xnw0Vp=uC0U1BsNK4QlIzhfPu=sUmK{E!RtjGAMT*RJwi>eMEH zC9msG5{TJ31y)X@hCH{o+m*OfB8^s{KQ0|DY-LRU=vcff#gsw=eskKRhH?;Yw7zMDC4C(IeF&*e4- zKm-s@I89-l7@(?lvA+C5#&U&8%w461o(Li9IoInUeAoBOuO-P0Hu*vmzux|xYSQ1~ ziky=OEdAC@uI1#smgJgC^};mK^YT2l@BXh=VzanDI~1|k1zDhY(qH-4npXF}?1*MTsyr-oKJIf9H z4)W<>`DJ{j$!{F+KNEV(ge&Y{mJ;<_0Ur1Tk1N1Qs3ptdH-AFZ=8C4T#51D(jrF`r zspZ3gkC-iS_VTwW6`Lzch1+2J-+Tw^yzTy9y#W5V(q%L9it)Jx&3yddzRG`6v9r0PqK;BysirPrc%QZ;xQz8s+vk zt(d!Z@~>C66xSb?crgc|m2tA`Pg*tQ&|Fuojt=}Hi!ZsRYVzW-4rxtpoNgderRxP7 zH`9dAH?>l|r!@#sQak|Bs|6a70+}D*DSnUUdN}FXLG)?v;)XWyBFTj3sUt|9ovec}#w4ib+7lD#t z{JeNHl=m=GtuSUh9FGvSQ;`<%)3PnPmZC3f$=eFV#wM$5KF{)r=Cg#q^d~Lkyy75> zp!}fKv{UrfU_s!FC2HI@c40@m=v9G~fGFPIpCMc9x~%HCe9+F&y}$l%%dffKouE$& z7G^Wy&n5E`=ek;`?`)_KA~Y?ys<%yP+xWSd>7o3FOgzJ0%S+|lRf0tv)z2ZBIdrG3 z%?$Gq%lzU}wztmJS7g21@4G9YCmRO$!6>9-r& zy1L_cTP)8TrEQ7sruvj8gs(iiyZk}m#CZ+jCbNB$^RKnP`qc-5{!JIgxd~^BhVX&2 zC-M&`^cQA3`V20#4Lh{@!=OD_Iba$>^I4sKpYk{|SgAwFk;7xHArYUA*S^ZPDsmlV z7$eOHr-RMrbr;=|wj>lxx01N+K{~T}+22_I{-JED>(lqdukM=vocV0fb$%vMFc$aY zRg``SW)QjuWyp^@pp<5Ri{gk(P|fsFrBRj@Yqz8;K#a(GYdpNiJkErLRJgVAi1;}d z)utAyX-}=8H_xHM?p7Z4NSRZb8g>m(s((UuXSf7p-nmmwjwk6L0I2Uff(>&t6k)8Kof|<@}ldf_&pmP-8Xu()JUsEGVzk`*W zLi%1bfpbgtY`4m*02x+`LD_ElZ-QR$a=#L1Zlu%Mm25K8F7DYb9WqP%q~s}%5wCC(sff9oON_}fQRLAbNghj!DYiDChYe4mO}&gNDL8*$)T3Dbytvx9 zvO_q3FBOmnH)n*Ke%iwJO686-&-*%eu>1l^dimm2jyBnL(;M4QFOJI&QsS#Id8zK+NY83mWMKQw&h|gR!Gna^d1CQ01%K#Urr+pPt!t=ge8$3&yofJVq04??U3iaJHI=%cT_u;eL-=9i8 z=qgZ&O}@PGcM4jHlYF6X_}EJ8-9?ZK^bFc!8=XSJ{lj=UQ%zZ?!VqYe6VElKSOX>) zwEg~!@hj*?8*fYy@9gA#B)Mx3T^~J_C5gs%kPM7ni=U$^(~6m=LB_ixvO5V4{6OJTW<|gkBZET zFBfaSlh^nqU&dYrhb713aYBaF)3Wr%wvX*nAd$dIBTrrZ+LHxHAaCYt7D@IEt%rv} zVLgqp39N0Uq{-=bf<76;GAy#bNt;M9LnrY~qt#0A9PJsw-LgzMMV)J~&}2I%;lGZP zpQsLrxoT|a5c$8hjem23>EKYEgz9NfThiLvf@OP_I}KqFF5>?}Ho9c}kT7r_sXZ+Eb;Jc9FOOu$3@R4$fmGD`ZEhDf zgFQr@GkD2U1&4G#%Bz6&bnn_YLSI%DJI+;C%W%c(?{DZ|dzD@33}>?ay~`pVKl2=F zX>o!;X}^rT2~=lFXeyOu3_LKN?v{&MS@wzQUQPANiB^k%S@6p?u7rmxvISBGbydle zciUVqR;L+LvE5LY*Mu*}%e;uL7X(Me4JvFnP>Z&;oTi#T`~i!Bjv=c~W^`@0KPL;%=XrB*XI@ z&3#Nq8$v)#uGRBCgzU?rAHVwNX(m?=*2$Q@*SqQWyIi9;Xe9q$3i+9<1837R`A1Iu z$JZpgmA{8Vhz;6OCK!A{X|(iHi42&uHBd}k?uc7BKv!E0X4T>PjR`AlK> zW0K3msn_lrWP0W=4227G1hZmC<;al*Q}NxhMdgjFBkxXOd8df|Y@l9Vv|SDF%%3HO zeQnUOSUn8Hs_gA*-1ZpDk1y5DT--~Ybg)P~dZO~Ke8lVdv(r^?Av6W<(HF8PMsk?f z1KfhBfeg*YCgxEix)PNyUnI4M!N}&+;3M?Y7%B=qzF@Vs^cg9SH&}n4FQ7gHazGj_ z*1vOL{|6*{W#D*T0$O3PY04s9Y&ZQxM&brN!Q6fK?|KI#a=J8`TPV!OxCoA1B3 z(3hVqn9O)*W@1^}5}q~IDu1s#eYX3Bg8=tSRaw?Mul|*Ir!3sv`=A=Cwe-HO`h&e7 z^;neGLtL1B*`hv!)G&T9nhv_&Zn}u4tEv&Gz@`w{%q$K6tlm`jiS0<+D zk^6gwTRHWqZCEWuN3itE*1EUW&xTG;!~{}f@2XV}Oxc=@q{163IldCzFzsOm#Sf)~ zJ35yUM*Nc(SG)sK8qJR({}eCsFRuH%X5MX+H2ZAr!J3mCnb%h8?(UH$s`xMrF2gYO z@@>qd9M7t`VjqS=?skNuAO2#a8{Z8^#v&%}E}L97D?Nt%rlA|6JL+5bFe2sP*9w3#S}&(AQ+O|$79%Vx?>dtsZDhmv1n(k3S;mF z{p-L1dy7tgY1;S>H4O7$%JQSt(uT2iK}jtbN7|?ha`(M@DYvw$90`Hx#9GTWk=yaI zPd`IUTim9%Iu^W@<;sT{ODv7-$dK%T5p7*tQr2^)69jYw;Y&LxVWd~Jt!SD&XUB${ za14lWGUuixQB&Zj^mK6Fr%xX$zd^$2?0=;R(|brhJeC4lR%IwW`R4>mT%EwD zgD?Lm#8u_#+aWz{E>;e}>qW0Ou#C5EUtlVV2%CvMv>xmHFBgW0=%f{8+gp zM-t8*hCF-_Zd*=~o1x$F0ROtkJrpu#Fe5H7LmQ%}QL`cW6JJaloDBZ5vIUdm_k5Q} zy}Ur@xA*a^ZRz)WO;J;MuQ-|HguV8@{=t;=we- zlDfz*xlhCA`?e4Df;b)B(#XFmwtk2X`}o(r2t-8kV_w{k%F}pC1PHuR+GJP)7@4>g!SUkwjjDWC z)*>p}0){WiirN=q=T_|InPC1$tS!HFwQkOBFaIerneXnsQ0xMe^m#MUX=s&Cd{sAq zNj@P~=v(RP)hT`4u{xR0CYyQQ620+N{np4nzZ|{v&A4q2Gs@&O{d-FILKRDwN`)OXmodbKpSC53<4Ay+pV&AM!JO6+maKAx;Db-$M?Hzv?w;gKn4)!42WTcZv?|Nquen7N6AEF+QxI)f_!E zKal71yv1@-X0Z8=pM^Z5OYGBug98gB>B0EKc6=PW5gg|gjVHxSxWJd*p`U6MOTuKZ ztikP^l_+HVN>AsQ*#FEp+5LHe^(^1F{cPj5duU%>pimU>#o=*SkIn6EdQPZi$Ad;{ z=u0y!GWw;}mnTTo#5N16z|B{?hb4?-Oj7C;Ezjo0F9^sC2~N}-W01-jl!uo;jly4t z1nc6r^>~Z9^ob&SH{Xp)Tee?zfMJuG1D1KVB(Hgtu=x%Zg8osZkKV<4h`o91W#2y; zLn+S731d>l$M|JB_6{sehX>iJtW^$OVl4yh?Ics7E?<^)O-!Bx6VYz%fv|A^I$XXq zV&WlC(pWR*Kr3U)p)Pa+SmYkGn(sEPUiU_sg7}}iML((8I7jC2ai}SI$b^`HSgN!m zXD9GnqRhI+c?8^RoL^3>J+Y05*wR=uUiC9t&0lx zi*JrUIQ>-pKEUs0%Y*PBA(Xwp5U{@%C&MPnT&!`DcEl;=K&xE!;963{k=wNGt-H&| zkGQ@!;&y%}UQjwQ9;Kiw;lpdI-}n)q8zUGxDptdH;~hs=P!^HL@WAoJcJ5#ggeW8e z-;gCY$LrUEw9@5`9$o)`j@sro0ON7~lF;!_f|@L`m&PlNiot@M$_g|z?4yvv3ex1!2k(|2_kn-~lE-7!sT~zM z`z2PhyVG#03rL5;YDzyP#&O%kQ}OJ!Yf}K^Xse_9^Z%6K-8e1P>JC4wN4H5eS%`0R zzk9H;$mZlD|JB9!Hac`2qMCkoPr_|;w@vw&rn&sw^F|yyE{RD(bGZu}q z3ETiZfIaLb1CaDEp|inO+bSJbXP_TJNPDO-4VPuPR=K$X^5KV@gie6j%{g9gt_|63 z;mntE1#{_(0gB@0PZv9f+kagNqc8k>!>AJ&@g2oCl_#^KB0)kGp$sbBXs7tgGQQZ? z=#1Jv_odrf{HX*c+p&-y)9LU* zzc>!3+-E;yN5c>9pf-gKOzQ>Px?$cTuV|3U80Zo#+|{m;FSR?&eAuSUC7}ku;Oj2Y zNPz90QOyazbA1cjA24@SJNBb}b`@+JR#wGVDEEeYIAR5{!?0?KzWs?&E5Ca5Fc3ku zcs2=>()=7uiE5E~uE6}pJ~1)o4YA*w2=>t+GCRy=)GforZ@3d5W;^*U_||6v8XuJ8 zPe|jg2FDxYckv4Eu5%m-3%{j=#j>b5^GPJ&@eyQ84bNrMhCKaduHszwYV4lWa&W`v z9DR}XEHWu(h69hUmIpqmyIfZDy~o=_BgZ>46V4mMHQh8;L%wJJxHW+U6!G)Bb%<5l z+Wk-3NmU?O=KH7H6%)yPFhAV-ku@mhBDQ>9Rm(;kvrK5lrS)2$cVF|i zGA(LwvG0rDx6+vD{STr^80ZHT`tm}0Git|N5@|{*eWS)?WGaIt)@6Wvsq=X=MhFFV+lU%z4wyG~0%Jmg6IuH$q_qox>Jdz=ivWGXU^OZy(^>He9^ zU8^6V6nVHyHF7WV$VWcP!PYv>Gb_h3nX;qqT?7qmB|WOX_fh$dxES6YOtRs?1HF7j zlmbUi^vjs%tS@b4$;*|n37?eIA}BVGhy=EOU7nhWI1B9ZW^BKh^+8eRDEZw3oVR>g za~R-+G3PaL2LfF%iU9SaOCe^0aQA4WsmHD4mZgrvqE6;5VU4Sdj_~s}mf|t5`*K3Z z0ayB1+bd-gz&+}Qy4->LpwQfuQw}}4S5hUe+_J|kvhhdBb*SAS!k>k8L|uf_s(|h` z{M&;+bhmQmh)vBZTa~r!2d`;2FH$Y;{1L`CKl?!+3~xugHXZIfP}PlC4i22O$=1CfVkz&L4tBQf|&YX1w9={ zrx@ukFXLi%-J%37o@~CYX}5Y(brSIOL%ht++BBZSmilf@gW^+spgnZl$lY)05+a*` zJI&2?LC$A8o;%v=R_bHYv!BHMu1mVC51BAy>ESMb;043A%swFn*F6zf4@Zyh^UVwh zqDOCT&_#X_{SPZFALiFlz2P@?vwp*{x}zSSGb}j3gYquS-go~NAN$uJYP3%x?agIf zw$TuR?Jr|empE8OrgQsCTg!p;Cr>-xuGXUmr_OxR8(Ff|ACF6;67FRTkd7)g90fit zu>xOj4BLP1ne#U9e$uC<5P1*9SHt>-9jBntp5qCMm1Nj<(1Vib76=`+jqwmbl>_rz zH_cCb^t2ZnPb!S0Jer=P4e`^SzrC@bneoy!fe=|Zj9_7zY#wp$3U-Ynyoe2j0k!gj zmsqAadFLKiTD)ZU)widMAw??b8h1oaXM0r54wiEQUn^R@(O+zH1$=6PzYzG|vsda$ zD`O)Ymaz=taAD-vD;_t|3GY8)=>h3p*<0?PnY?j}!%mR_3{gjs5L9WRc0~r|)`V!` zPrZxCip&~lfDHe5UIwuxEWY$$FkCtL=xHpQ$qd#52#@}a9N z==8~0bkdzH;?(C;FXrCZo_K3KTNR1sE|4GnEOP8)Kh!Sb3Mib|-M^%V^AFpV&(N{a za$9H5m?k*;YWh9ky{ulE1vJ{r z$=pm}dU+bz#N2wWnVNSPuPAHkeRc_;tlzO=fid?dJViK}YIN2i6{*ikWE(+gJV@BX!hkbJd10q|yD1@)h1iQ|huIEl1q^PHNZvnTOQ%-1uCq`)9 zWk%Mq4140o`Edt%;&?()6s|uIAc|FiYEPZTOS#bIx=x+#E_>~|_UT3zw3c0myJ%;% zd)n@nH{%Q^{+}OlpY(ItYi_>iB&mZDV{Xik=Yhtl(*xo+3f}C3#sYNvR`~Jse^f<< zt4(!bv3LudI~1Ae43?`nQOG|(>d~wqa<7S&lzZGsu>YVN;$p4XPowODe=?%;YH@8v z*7`}QN6o~yD9qOqWPx_E9;4iH{0-~oS9L~!tRGP-BzSqYl(>5;h`69#U9NRKbmhId z{QX;xc|gscrz-eE=@@-+<1?Gj14DOE<+V+;>wkR7=IOh)#7w+D?b|#+Jz=S^w|Tg; zI@3M=T(VNM)fif}P}w~aVQd)JvCI$x&3Tk_clkth>8(qFpYk$mM5uRU>HdqZjH$0} z<=x(Gm$|lX*3frw3S;I*cm}@0Py)+dh)@{Uy#zsvNBry`T}b5Pi0G$P)0jgazqD&C z0krO(l4__^#2OK1ICgd(wY^pf8*V!9NT9D}2HLw-j5w=1-vtb=h7*}%Z?!^eLb+Cy z^_F^(mQ|d-up??9Dv3H@mEvJ{4m?0t1_7|h@%^iqb$D(;^+(LI3>GytWR?*on~r3Z z;SFTm)h;n4qX+UuuTnRiB*FPc%EgvoEC+n~&TgAr)(79b(Xk1=!(BM4eZDv~eUSFF zwoH?BLq!pph#%253VM7AdP>{AE&bkQ+7WrPGs8IA8t&Vlc;q#bM|lK-y+=-VI@oi3 zo}9{ZZ@&K~(s8)!x$A7y@l_IP)cZYa#L0fKW-Zxu0<)!Od$8PPJ6*ovg0mj+_`@6^ z171Iw^mfg1;$9!kpv5e=%r5_80ztPc=Ufu`3O`jv=nO)cQL_1$Obk6Jzw6vlJtWXwl09n9=^8&2mPt1eO8 zfVv3hbTxr=cCkHV)(;DN7A&x{+%LG~J8PO?W9p&eEtAAQCW0coFh^zgMf(?_~hbnpzbR7);wuF9B_@F%wzxD4A(lS z>>QSKy@vYYgtFdbKDBaI{M2#>@#_ih_uK%VtI%1po2aN8o z(kU|?Ya(yDH~Oz@$&z!$oUN&VT`x92-a-2SDSkW9zH1~g&`CR= zVfoJpUA%CoI5i)0s`dD5j99)`se(v7k6ZM1^~^GI@9`)*-QrpG`zIQdIX$K2BY}=D z)+K&PS`*S8JYy$DuHH+DPc4&#)mKcuCxPXwRmdAxt~bz~Ftp`H=)W`KyW3-G4O%|J zk(4Gm!^G3sE6c0|>vnTlh%V6+NZz9w9bwLBceloplebWYI#5mmigE`8`5{Fwhx^S? z_rjB)$sU$pJ?Fy5 zvd&I}bsIdU)KAMtz|Jcj*%}E_BInCWyQ>LyC9ctcU807qaHh zXGLV#lA7P?JqFPN%{b?ho%J3Nx}2T^p(n?~W7m3}fhJ&%AJE?qw#x>bs0CbDttuH3 z4cps8DC&IAPt!ojUc()69(sQi0#ju{p*mcj*j;EeC=kydjLiGMsCS1XXq{<&cw76R zBJk<4y4Jmg*11TDhX&rC(Y+lj^B`YTf;1Xl!LYjzqdf)b3R*59I3BvCpgMROciB-( z(8PI+;b(*-Cp7e!J=L|A67b%DT(^0e?w7S)r2`Mh{5Q=+AB-)%Oz!UogryA!-BdmY zc8ySF%}rdw_~xk=%+q<8O}+iG>!UtEDc^8$KxMl-8@^3jCG71{-RSL!^o^*?fTTy8 zudioyL9&pNHK(&t^wI@=muS@4D>2V2FVeYW?nM6PxR%`pD0e!V>xJX$LlF)BcDd31 zeT*nac_2!+p%xW9v7-}0P8C~F#t;Yu$g(x%IY6waNt>P&E*y`T_t?_uA)?}*V$&GkH{FUHYIWW@?Nv4E5EHQb4Ps4A%&au{zMctOp-rpbn@;bFW z;uJcLg)v|b7VJ-xw2)mM2Tup^L{=5~h>tubI(Sba>h_w20*5xgvAr?5gjK02UoZzc zt>BG;=Hf=mbsG2L)R1uxhwGq|k~Lu0*xWeu8fU|m@RurqW;1O`9@DO9^~~bW`LMAr zS-{XyNy~ZO1=Jp3;f=O$ZvY8%A~_?_ZY8kX+Og@EPCut8sS)NNnlBMWt6%>PfDuZ#G zGO?Y|33~gY#;yGe8Mpm83Xb`?!8>aGoy)3nBs>{0;9E0`-YN1e=_<|-8zvTco@;C< z*?)aN5M>QkAtFN7U@mcIX?-vPRftAZhC?W6$o)49qo;6JWbncf!lz0+42z@b!lB<( zLgYRZJ8(Jayfi5xZ#+Jm1;^{H5!a^GrC*f$#qMT4sW6WgwaWjZksvE#!|@7d#ql9r}uIXB>FN$Yc#3Vnkfe8_ou zK9Dzu@Ig^!NrL~xdaZeJ@Qo&C2f459wQ7aFPcJJPjt(FUTsq?oCB=@5bjyaSe_1l4 z)e`9X#UD0PCKQ#MNZ4Ho*-$o|l1e*ovu4aovHFBg^EQXEoWJoZ>TJTaB_nwo@3iqA zCTE!40$=YM`DlqJ|H4if%Yya=T5))E>`m{zE-EEeqUx#Q!+rs?vY7ES+kJKLQpdJi zQO58C^7_rBJEb;Vks9FYDS2BNL4%ezBD)RG^Gqk`)^l+}d73b2$5~f70XEQpsm~gm z`f?FYT>6Tj4;ksW6FvX<*D?g$eJmS>ZM8&MJd6SNNLISBa!A}p&mv%zzDEcNps|Zu zrB+NK9*9YJ5pLCwS-4Tj2<1u(^hK}hyzaka=H3ApK-cATPuKT!{uHnGIh=v>H6)m{ z0#2RfwLOvNAp3p5K0sS-=Zm_BQJcQx{*epZe;keLzH=5?Ny(m|8Pma(a`4INDmBJ7 zjg+(dh7K&t-t)Gn#~S6;s{40HU5Sn^SDku?WqIayDBya>AKr%Min#$Y@))2^Mj0k( zXRGGMUUs@V=2`9~(C8;7kHZtc7Jj)5X;Lkvw0Vu;{Ex?PWit%unABE>XoLWcTVK~6 zHiO}xktBBGR#88Qa!0l~wxy0v75tNu36aBsY*jiJ?S3rF(-ZbJv{ zWt=-E0^839iQnz+W2XeykONyr60kM%Y$*W-%daTFEfu|ma>JYv3ms)Zzs>bs36rHB zvM?VTAdfUGP$ffE@Z`lK(pK)7qXBP7cBVaZ!UcT0P9Y(Y{WZ(k{oA95&IM{UyZ%P%;xB68R_4dl!d_ zeH`BVA(gxj2*gE@-%=d9z%wVOP8C+6l{(V#gMXtddg2zmok z3m}uGAr2NhyTWU;j&nxgVTD5$H*31BBG0Sf4SHlsXm-GN*)`wg;;5xxn9HQ2Gz3S0 zkzsI7<%i3x2kjixyVQ{)Y~<0)MSw}Ds###}a)G#sC9=TApL{V7NdpX2gkP@1MC^Gk zwrZm?k6f1%U^HqwZ~~Q4;}twm^75rmJA9U+@x6X<0qlbP2d%C=()CFm<62;BH?M-R z^S8#87_GT0cyw_wsvhao5ob1q*ox7z)p(NiC&N81a-F-p^40r|G7ELcVw=$^%BJ zl0K6E1(gYz=;ud0bR^=4F*%&pKGSOY49_!@6X0WE(SnqNW$TceR=EYah!u>_u@#T! ziM6W%Ay{`X=URK%bV($~Icd}7`U+?LWe3&jo%tWqYwE`P0J0zLh#%o7U9;~~Nb(2& zN%&pVXG9%)cO5xgQHSuEM5x}ktFt_rb)@h;9U9uj6*&tN*e+hU9Q7;oIUTV+t%IXm zU7}(=R{Y`=MMM2fPS;#u`tS?4rHYdwx1n9k&;}bie zU<(+3rrO}}%M%WPu19JmF)uLZ10PoJ0its~*I)jg=Z!nIf@9m|7BA{y3$mA;DQg#; z<*v1>fLK+>W$Nd~IS{rbd~aJw8yx`tOJsWbfk1HX=80)SMF~O_E+*Jg>9`hV5!XGY zdfVZ$`mi6jk4Yc3gFEdCazPT|5^kD-B(&|@Loe57BunuBltShsa9(Ep2xbc@vk>X~ zfyW*VvX__au7A`$qCTcVv!u=uY%{nvVz8IRYff$`ava@hbFO`C%$Z}y2UX3NW070V zGz|DUTmBl&sFsvsO8(qpgT8jiG@o{fG2EUN_$Oz$^!ff$+Wms=4>8qNz=xufnYK|fZ{<8HQUx{>CSsD|Nk713=_x+}+sFMUKjf3z0xlrp%xB;I$nB$3GE-!O=PvyIHq#%lITk$O7>e15fK zQ#Dsf--H{5*_ZP@02z>hojyDJoHS9aBwjCn<~=4-Xo*Wmo7UMbf3@RBMKJnTZQ)vj@hlMfp9u~>40Jq;axF#GJgWm<1E*G z-ffAUm19*pJTPaWGqPtU4dn1j8{kQ6oX9HHmGv!lXYAw z9pq({_f1mN0VS@0WWQRaG6NBs_#i5b%P(L+Sj*PvryEJ6VQ7tWJqmC;aZI!p>eNk> ziPyA0T&2ONlP`roD^SYD%DRYj$#AeP8qDYEbo6vLH}7)6$xxm9;sAsHaQsMTbsq+0 zw8tNG(|cHPR#fd)a>O}Yri;%587`!TwUoMNRyOWa|Gi*yUM9}?iqVkDBIs{SzAyU5D*i+HMv%x(IE zXL$@0*vH(X3isL?+f3)4AGE1Xrlcob7|6-x)4HCGsuyM*qLp7*Hf8wC=6s9H^PQ3? z^?HgNe1Zm=cqVM^>-)mIZ)@T-E{V8i3P>&QW!FsN&^tqv5?0&p)!yR5loPV)(e zS*D>zZ-J^RkwV3~G^0W4u&hKc#olRk$({@L2%{78t#aFBaHXwp#;RdRX?3C?hT zD_XXVL!p%JpQ*h${K-9>y)JC)$T|)!0%aE4NafyBT=t^JI$@E(?-_UW@OXUFY zZlYr&G)Bi2eZ1jX@Kp6U9kD-YM-AO%+=mL-a%`DLDoH($|22jajVH)I^*sMiCO8`y8{wU|+$U=N$kM?=E?{aPJ6}-1qRL4+t<})5=c6J&K(XRBZ^?2mTrq%y0 zDtO71uLDusda`=2A%vC%mI6UI1*qRn7Y}#QLune!>#nr-?~FCHifjFe95MT65>^;( z88rcO4UFqrj;#ToACvnV*=H6dI(1+MS&yPO^QmG2BK9s{*s9HvuBR;mT@C;sGALag zpnT`ltxL$;x$p{u=hMT5%eRT1vYDT5O@P!m65J2E*7`n8ckGK`k@7AX?j2! z5*WOct)#VIY#`Y-Qd=16IS0Bo5bsoW|36&ke&IocQ9N|3lV0 zM%T5!UBgY9q=*{ZcGAW++t{|#*tTukYSdVbZQDDx^{)1ubN~B{_tPF@f7pAiA1=;o z&WyOMYMa{`v$PBYQb1-#n4$z73I=_h_Gute4){M@r*$i}+7U(B%mbUF!c#Tq0pNGt zC-m3OhI5>b)&TjLm{jwrP1_sXiK5$4j(bOd632}qgqr*5j1Gu!a-JPN=5Z;^B5Z+h+Rh{`p0r{o%{g!LyXoUMW)WI^3n8@76Gt2M;kweH8 zZ7pX8m>tS5mp3vXfpJ)8IjI*|=wsq*l;ZSmO-7j?mYeu=j7D{cwqjZzg|f@lty4Z6 z_Zv<^Q!GV>1={q)^m3~>--*WgE*nu>CgkXZD$IqcnD3Lr$7Am75v)41aJ+o~3ZLEM zcI+1^33lMx?xEJ08|u(q>NXhn#400MwQx3K=|QxIjGx>aW@7^|zFR8VmrvE*M`Sw^ zX>=yQPVkW?>^mwc^_qlXcmh-oxILvfhapY6d*_)iSHIHayuwVWUtV96})E|YF0q!u|x0mk$F-9#lRyXMir*F4Gays@1`_l43Degl|KXiaidGFz>_$f@r z(q4}Z|2Ol>X}`+~o=9`+8o>;M5x*oxqUJ-cI>tXBSLLw}ch_llg~789wRAnY@oGP- zIr(B|>)n96`<>ZfY)LCQu8%weJ*(vyQ+!d1x#ey$55E}iuxB$(9X44rTlInWhSQ9o zJ^=c9ByA8;n;`mQy`~f4 z$Y!FD=5h_($J2H#Yirs{f75S4`e;&)t0rWH>0=DWMxxB1t2a2Xcx1A@5jcrU8geaD zy4yj&;4aJ3&0Xenx~f$qZuh7998%kX8eFkCKnAksa4y*C-4(d!a0TiH`^Me#f%mv= zl>M8rZVf=dUFAZ1qQ+Rv;{FiG=4@>^Kc2mBFQ>A=r*+5w{X#;-el(MZr(Qa9Mr&># zD90C$W!BLY`Zu38lBsP67&uG`dOMtfko^H(ivPp$m#c&T?Gn-Fc@H{cha!)X)-_lbCaRCuH`1rq!_Ad~+ zs)__7eEb86)P5#e?<+fh#*c^%-I5LLrXRQ1EZz=isRGIvZZwcP?q{#l{?f>1%jKU! z1uD*xoAn=Y$XU6#}+N)T5CofD4^hD%n z6_r2DbHo%2@gb5y*^s?=lJRagFG@e-mNh1etAx*FAARmk{mxt{7cPV;H=d+ChmZV@ z=HWo|!Tj#53&SH;owd;spu%{mU1q7)^5_)hPs~KM$i1M>%NWlq& zVJL8!Q;=>gmRob&slW}j-=Tj@U3+5RE5k7eu^;RlL(VhMlx40^3ZBCsAfyN{8#K!F_r%wGZYa`9*YiG# zgMJ8fxH($)CNl~Ex+(IKBZG^z3)7Oqck8|w_PfC3QlNM?K-WTgFkhuH`j)Qd+j2b#Tn-Lz zq7Bki^G!188%Ka}-D}^JPk!{xVs^H)+xBk1X$69Gx_B(-+lSlRh#&qvd*Y$@Z=vGY zBM->$(O2Ca#lNbSzcTW9^cJE-X}=H^~*YAQ{KO&b#n_EwKJ6Wuikv zLiw4ds{~t##^LsKj&2XAntRSIoSnou)~MVT^1SvuZ)Ga&4C<1yLw38_tLJKd+p-zU zYFf02w}(+~EID%}aIV^t*rVMDQW*#l*rUBi>bz>sfpk4KpY$_7zg+_8k93htG-JyZ z{4=;*liu<=7{$N5Xn8)jABouihBc7UINCqr{m5K$%yc)sicnEV?f-K_vk(w|cw2xf zd)st4EBOKb^n3L(z8XA{gS8uF+}=L_7R9lVh!D3QLRK|M7Yk#8`OXw5p7^y4y4Li zeTXuoc&E-mlt?zxf*$yW*PEhk5Lsf6`LxqTwh-LcnPv&f= z;que`JHHBJt(};$G`26OjSIFHqX)(KV%V26xl}-`sgdr6hVxdwV5%)gk2l!%kzgaF zSvm1HAf8w6_oy6>rx}nI@6}>Gx4+^XuX?@;06>Mw6=wFURfos%S?CmFo| zxB%wPp8!_$#8hSr;YBl8!mYfc@6E^C@AQUbRT>55(&5#GjAyA?QISiF!dXGi>)w4W zwq1HXlqB~>T7*UZ;A|T5Xq2#&@|CnuTW_JR?9tS%nlh<9hdBaT_JKh1?IQ-0X;@t) z73P1+A=R zBw>Oiv=>;v;y^uLJinJyE0CF%Ofr}F*y^*}O`V8rqDv#!oTI*?5UJY^?9g}FH8L7yj^wZhvPTBwAw6fkusVT zj=~4O=?!Z&HWyrWCT+k0#g!Ny_6G)AnBQFMHXH`ER>isOrO!!^ngcK&2C z_&;6{$D4Vv$9k(A!@9`Twv5AV+@q?6#JDLUPa*O-Hu8@=&CfZ)`V@Eqj7fG=@6b@N zw8+34(ffJBu20p_GnaT*+voH*$D{TGJ&mBR`Q4FJPHqZn8me>0WoE8DWA2M4g%9@!#U~Zb zr?jXlno6+Cwx_K(m#-cVUmQ;w_ZloSZERFlQjja|T6XomFHm{BY(Df@+#D$^5U?EJ zy7Y@WP6(kbiD^+z#p|BGesh73;5&pTf~$C$ZZ4970V3_JY{Vi?q6ukN^}grHXr7PO zx`j=<*O9_kgyxz$zeGY`A0{*|PFudr=;i}bjGK|+X~sN2pw!$BU2_IMk|Pwl@|z+M zP*L%|4Le+S3_daj`t*;lN9pgfR)nfv(U8Hx_&~NQe^$M~SnqfKSZ(k*4;I?%kM?!=B^KEl0bp+DR*0WAe9?h0irL z&1;t&d&8rnCvb^)hXV)dR*%QGs2unEBDm(*GqDghxRV->{DW)!?7QUu%D3pbqc6T=w;8+e2l(fa#11ksxk z;~$8&^3iC_VWL8sh}$8Yb`0Do&LG{L&jR@6ymWL7o#}yJwWRqjWOWBXs^yTaMX@0H zDgDN_8{E|hP?c$MTQCce*KTxVn?RX+EGul=m!@i?YdQO9y%^mOz0Km$RX-KNE{Xam z6MVF*x)DPI4TPzQ`ZOz09HJh17ACaNJkCS4X4xUFYDvkUtmH}i$aY2g<_5CEs6Ng! zT|69~+fg_uXNjyi$#rFcYbi-WdyV-5kIqO$Z?oNRHIYdRGpFI`-f(m=Wbk6;I_3UD zF;qkO9k!EI!$ru@H8B{~?L2}N1U8t6wl?9X86CUDJS!uHrtj)`l6FZ7nWVyrq*zE+ z#y|YJiB;t5bGj#xQS6+``6tp@wW@mDr`AHnzG8dzGmb3hDd=rv6-AXQU^)*Km?kS{ zcSkAFC8GOUy~kY?>FPPF4zTAYbwf1Elv@Ugrgid>fS!JR`syAU*LWCzSPz#7xozoo zsV3A1kQd8TskL*iN2=g)I{o+#`uxcA#wvuj^ejaCGmAf;FONE1#4R zk#;82={WgoBm}J;wcVSciFrvi6227nR2Q}gvJU`DW25?A9vtZpa+ZZ5L8sLSO!)XQ7npeMD)cUD z70UWwsCH1<1QS)oCNh+j<5g8Vb}J*XGnP4plErTY6`3O7WU6qun3)RodL%TY&)