From c5e2dbbf79b378b39dfafa6bfc64f0d88f2eaec8 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 3 Jul 2023 21:37:10 -0400 Subject: [PATCH 01/14] refactor to simplify symbol similarity --- automata/cli/scripts/run_doc_embedding_l2.py | 8 +- automata/cli/scripts/run_doc_embedding_l3.py | 6 +- automata/cli/scripts/run_doc_post_process.py | 2 +- .../config/symbol/symbol_code_embedding.json | 4 +- .../symbol/symbol_doc_embedding_l2.json | 4 +- .../symbol/symbol_doc_embedding_l3.json | 4 +- automata/core/base/database/vector.py | 2 +- automata/core/code_handling/py/writer.py | 2 +- automata/core/embedding/base.py | 114 ++++++++++++++++-- .../core/experimental/search/symbol_search.py | 21 +--- automata/core/llm/providers/openai.py | 8 +- .../memory_store/symbol_code_embedding.py | 4 +- .../core/memory_store/symbol_doc_embedding.py | 2 +- automata/core/retrievers/__init__.py | 0 automata/core/retrievers/py/context.py | 2 +- .../core/singletons/dependency_factory.py | 46 +------ automata/core/symbol/graph.py | 17 +-- automata/core/symbol_embedding/base.py | 73 +++++------ automata/core/symbol_embedding/builders.py | 21 ++-- automata/core/symbol_embedding/similarity.py | 90 -------------- .../core/tools/builders/context_oracle.py | 10 +- automata/core/tools/factory.py | 6 +- .../json_embedding_vector_database.rst | 2 +- .../core/embedding/embedding_provider.rst | 18 +-- .../docs/core/embedding/open_ai_embedding.rst | 2 +- .../symbol_code_embedding_builder.rst | 12 +- .../symbol_code_embedding_handler.rst | 14 +-- .../symbol_doc_embedding_builder.rst | 10 +- .../symbol_doc_embedding_handler.rst | 4 +- .../embedding/symbol_embedding_handler.rst | 4 +- .../docs/core/embedding/symbol_similarity.rst | 12 +- .../symbol_similarity_calculator.rst | 2 +- automata/docs/core/llm/embedding_provider.rst | 14 +-- .../providers/open_ai_embedding_provider.rst | 4 +- .../core/llm/symbol_embedding_builder.rst | 12 +- .../core/llm/symbol_embedding_handler.rst | 4 +- .../docs/core/symbol/symbol_embedding.rst | 2 +- automata/tests/conftest.py | 15 +-- .../test_symbol_searcher_regression.py | 4 +- automata/tests/unit/test_symbol_embedding.py | 35 +++--- automata/tests/unit/test_symbol_search.py | 1 + automata/tests/unit/test_symbol_similarity.py | 24 ++-- automata/tests/utils/factories.py | 4 +- 43 files changed, 302 insertions(+), 343 deletions(-) create mode 100644 automata/core/retrievers/__init__.py delete mode 100644 automata/core/symbol_embedding/similarity.py diff --git a/automata/cli/scripts/run_doc_embedding_l2.py b/automata/cli/scripts/run_doc_embedding_l2.py index bffebc2a..74b0dc98 100644 --- a/automata/cli/scripts/run_doc_embedding_l2.py +++ b/automata/cli/scripts/run_doc_embedding_l2.py @@ -25,7 +25,7 @@ SymbolCodeEmbeddingBuilder, SymbolDocEmbeddingBuilder, ) -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.utils import get_config_fpath logger = logging.getLogger(__name__) @@ -61,12 +61,12 @@ def main(*args, **kwargs) -> str: symbol_graph = SymbolGraph(scip_path) - symbol_code_similarity = SymbolSimilarityCalculator(code_embedding_handler, embedding_provider) + symbol_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) symbol_rank_config = SymbolRankConfig() - symbol_graph_subgraph = symbol_graph.get_rankable_symbol_dependency_subgraph() + symbol_graph_subgraph = symbol_graph.rankable_subgraph symbol_search = SymbolSearch( - symbol_graph, symbol_code_similarity, symbol_rank_config, symbol_graph_subgraph + symbol_graph, symbol_similarity_calculator, symbol_rank_config, symbol_graph_subgraph ) py_context_retriever = PyContextRetriever(symbol_graph, PyContextRetrieverConfig()) chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) diff --git a/automata/cli/scripts/run_doc_embedding_l3.py b/automata/cli/scripts/run_doc_embedding_l3.py index 71349bcf..d124e8ca 100644 --- a/automata/cli/scripts/run_doc_embedding_l3.py +++ b/automata/cli/scripts/run_doc_embedding_l3.py @@ -25,7 +25,7 @@ SymbolCodeEmbeddingBuilder, SymbolDocEmbeddingBuilder, ) -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.utils import get_config_fpath logger = logging.getLogger(__name__) @@ -68,12 +68,12 @@ def main(*args, **kwargs) -> str: embedding_db_l3 = JSONSymbolEmbeddingVectorDatabase(embedding_path_l3) - symbol_code_similarity = SymbolSimilarityCalculator(code_embedding_handler, embedding_provider) + symbol_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) symbol_rank_config = SymbolRankConfig() symbol_graph_subgraph = symbol_graph.get_rankable_symbol_dependency_subgraph() symbol_search = SymbolSearch( - symbol_graph, symbol_code_similarity, symbol_rank_config, symbol_graph_subgraph + symbol_graph, symbol_similarity_calculator, symbol_rank_config, symbol_graph_subgraph ) py_context_retriever = PyContextRetriever( symbol_graph, PyContextRetrieverConfig(), embedding_db_l2 diff --git a/automata/cli/scripts/run_doc_post_process.py b/automata/cli/scripts/run_doc_post_process.py index 64ee598f..32021fb1 100644 --- a/automata/cli/scripts/run_doc_post_process.py +++ b/automata/cli/scripts/run_doc_post_process.py @@ -21,7 +21,7 @@ def main(*args, **kwargs) -> str: embedding_db = JSONSymbolEmbeddingVectorDatabase(embedding_path) - symbols = [embedding.symbol for embedding in embedding_db.get_all_entries()] + symbols = [embedding.symbol for embedding in embedding_db.get_ordered_embeddings()] docs = {symbol: embedding_db.get(symbol.dotpath) for symbol in symbols} diff --git a/automata/config/symbol/symbol_code_embedding.json b/automata/config/symbol/symbol_code_embedding.json index 10441dab..7f7d8ede 100644 --- a/automata/config/symbol/symbol_code_embedding.json +++ b/automata/config/symbol/symbol_code_embedding.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db9d3265f90dbb085197897410315ff092e8c18a9b3a561c863eeb2e9922ccb4 -size 7849630 +oid sha256:c9f371a01a82fe9ba48d04264444cb36c9089ca2188d12b92e09b8b60f18a9a3 +size 7847968 diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index d5d84648..b9f342bd 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d54222081c9522f2ea62427114f62bdf2dc7bbed35a6e7f5007eb7f24d239e74 -size 2354600 +oid sha256:322f86e95579a3eb432dafa27f18a954b6e875d3a2fa806df3e9092da87a4edc +size 2355028 diff --git a/automata/config/symbol/symbol_doc_embedding_l3.json b/automata/config/symbol/symbol_doc_embedding_l3.json index 7d266977..3414fa73 100644 --- a/automata/config/symbol/symbol_doc_embedding_l3.json +++ b/automata/config/symbol/symbol_doc_embedding_l3.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9039e79cf77e363a4618047854f6c2e00d99241da09d6a17f234e635b5e701fa -size 2590080 +oid sha256:169a981b59f193b503e986ff32142fb0af223e83c11068068daf263d1cfa2df4 +size 2590718 diff --git a/automata/core/base/database/vector.py b/automata/core/base/database/vector.py index d96419cc..d58e2db7 100644 --- a/automata/core/base/database/vector.py +++ b/automata/core/base/database/vector.py @@ -40,7 +40,7 @@ def clear(self) -> Any: pass @abc.abstractmethod - def get_all_entries(self) -> List[T]: + def get_ordered_embeddings(self) -> List[T]: """Abstract method to calculate the similarity between the given vector and vectors in the database.""" pass diff --git a/automata/core/code_handling/py/writer.py b/automata/core/code_handling/py/writer.py index 60233763..717008c1 100644 --- a/automata/core/code_handling/py/writer.py +++ b/automata/core/code_handling/py/writer.py @@ -373,7 +373,7 @@ def generate_rst_files( with open(os.path.join(new_module_dir, f"{snaked_symbol_name}.rst"), "w") as f: try: - doc_md_string = docs[symbol].embedding_source + doc_md_string = docs[symbol].input_object rst_string = pypandoc.convert_text(doc_md_string, "rst", format="md") f.write(rst_string) except Exception as e: diff --git a/automata/core/embedding/base.py b/automata/core/embedding/base.py index bbf4f4d1..8879cbcf 100644 --- a/automata/core/embedding/base.py +++ b/automata/core/embedding/base.py @@ -1,7 +1,8 @@ import abc import logging from enum import Enum -from typing import Dict +from typing import Any, Dict, TypeVar, Generic, List +from automata.core.base.database.vector import VectorDatabaseProvider import numpy as np @@ -16,25 +17,122 @@ class EmbeddingNormType(Enum): SOFTMAX = "softmax" -class EmbeddingProvider(abc.ABC): +class EmbeddingVectorProvider(abc.ABC): """A class to provide embeddings for symbols""" @abc.abstractmethod - def build_embedding_array(self, symbol_source: str) -> np.ndarray: + def build_embedding_vector(self, symbol_source: str) -> np.ndarray: pass -class EmbeddingSimilarityCalculator(abc.ABC): +class Embedding(abc.ABC): + """Abstract base class for different types of embeddings""" + + def __init__(self, key: Any, input_object: str, vector: np.ndarray): + self.key = key + self.input_object = input_object + self.vector = vector + + @abc.abstractmethod + def __str__(self) -> str: + pass + + +class EmbeddingBuilder(abc.ABC): + """An abstract class to build embeddings""" + + def __init__( + self, + embedding_provider: EmbeddingVectorProvider, + ) -> None: + self.embedding_provider = embedding_provider + + @abc.abstractmethod + def build(self, source_text: str, symbol: Symbol) -> Any: + """An abstract method to build the embedding for a symbol""" + pass + + @abc.abstractmethod + def fetch_embedding_input(self, symbol: Symbol) -> str: + """An abstract method for embedding the context is the source code itself.""" + pass + + +class EmbeddingHandler(abc.ABC): + """An abstract class to handle embeddings""" + + @abc.abstractmethod + def __init__( + self, + embedding_db: VectorDatabaseProvider, + embedding_builder: EmbeddingBuilder, + ) -> None: + """An abstract constructor for EmbeddingHandler""" + self.embedding_db = embedding_db + self.embedding_builder = embedding_builder + @abc.abstractmethod - def calculate_query_similarity_dict(self, query_text: str) -> Dict[Symbol, float]: - """An abstract method to get the similarity between a query and all symbols""" + def get_embedding(self, symbol: Symbol) -> Any: + """An abstract method to get the embedding for a symbol""" pass @abc.abstractmethod - def _calculate_embedding_similarity(self, embedding_array: np.ndarray) -> np.ndarray: - """An abstract method to calculate the similarity between the embedding array target embeddings.""" + def process_embedding(self, symbol: Symbol) -> None: + """An abstract method to process the embedding for a symbol""" pass + def get_all_supported_symbols(self) -> List[Symbol]: + return [embedding.symbol for embedding in self.embedding_db.get_ordered_embeddings()] + + +class EmbeddingSimilarityCalculator: + def __init__( + self, + embedding_provider: EmbeddingVectorProvider, + norm_type: EmbeddingNormType = EmbeddingNormType.L2, + ) -> None: + """Initializes SymbolSimilarity by building the associated symbol mappings.""" + self.embedding_provider: EmbeddingVectorProvider = embedding_provider + self.norm_type = norm_type + + def calculate_query_similarity_dict( + self, ordered_embeddings: List[Embedding], query_text: str, return_sorted: bool = True + ) -> Dict[Symbol, float]: + """ + Similarity is calculated between the dot product + of the query embedding and the symbol embeddings. + Return result is sorted in descending order by default. + """ + query_embedding_array = self.embedding_provider.build_embedding_vector(query_text) + # Compute the similarity of the query to all symbols + similarity_scores = self._calculate_embedding_similarity( + [ele.vector for ele in ordered_embeddings], query_embedding_array + ) + + similarity_dict = { + ele.key: similarity_scores[i] for i, ele in enumerate(ordered_embeddings) + } + + if return_sorted: + # Sort the dictionary by values in descending order + similarity_dict = dict( + sorted(similarity_dict.items(), key=lambda item: item[1], reverse=True) + ) + + return similarity_dict + + def _calculate_embedding_similarity( + self, ordered_embeddings: np.ndarray, embedding_array: np.ndarray + ) -> np.ndarray: + """Calculate the similarity score between the embedding with all symbol embeddings""" + # Normalize the embeddings and the query embedding + embeddings_norm = self._normalize_embeddings(ordered_embeddings, self.norm_type) + normed_embedding = self._normalize_embeddings( + embedding_array[np.newaxis, :], self.norm_type + )[0] + + return np.dot(embeddings_norm, normed_embedding) + @staticmethod def _normalize_embeddings( embeddings_array: np.ndarray, norm_type: EmbeddingNormType diff --git a/automata/core/experimental/search/symbol_search.py b/automata/core/experimental/search/symbol_search.py index ee04da8c..a601333d 100644 --- a/automata/core/experimental/search/symbol_search.py +++ b/automata/core/experimental/search/symbol_search.py @@ -10,7 +10,7 @@ from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.parser import parse_symbol from automata.core.symbol.symbol_utils import convert_to_fst_object -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator SymbolReferencesResult = Dict[str, List[SymbolReference]] SymbolRankResult = List[Tuple[Symbol, float]] @@ -24,9 +24,8 @@ class SymbolSearch: def __init__( self, symbol_graph: SymbolGraph, - symbol_code_similarity: SymbolSimilarityCalculator, symbol_rank_config: SymbolRankConfig, - code_subgraph: SymbolGraph.SubGraph, + symbol_similarity_calculator: EmbeddingSimilarityCalculator, ) -> None: """ Raises: @@ -34,23 +33,13 @@ def __init__( TODO - We should modify SymbolSearch to receive a completed instance of SymbolRank. """ - if code_subgraph.parent != symbol_graph: - raise ValueError("code_subgraph must be a subgraph of symbol_graph") - - graph_symbols = symbol_graph.get_all_available_symbols() - embedding_symbols = symbol_code_similarity.embedding_handler.get_all_supported_symbols() - available_symbols = set(graph_symbols).intersection(set(embedding_symbols)) - SymbolSearch.filter_graph(code_subgraph.graph, available_symbols) - - # TODO - Do we need to filter the SymbolGraph as well? self.symbol_graph = symbol_graph - self.symbol_code_similarity = symbol_code_similarity - symbol_code_similarity.set_available_symbols(available_symbols) - self.symbol_rank = SymbolRank(code_subgraph.graph, config=symbol_rank_config) + self.symbol_similarity_calculator = symbol_similarity_calculator + self.symbol_rank = SymbolRank(symbol_graph.rankable_subgraph, config=symbol_rank_config) def symbol_rank_search(self, query: str) -> SymbolRankResult: """Fetches the list of the SymbolRank similar symbols ordered by rank.""" - query_vec = self.symbol_code_similarity.calculate_query_similarity_dict(query) + query_vec = self.symbol_similarity_calculator.calculate_query_similarity_dict(query) transformed_query_vec = SymbolSearch.transform_dict_values( query_vec, SymbolSearch.shifted_z_score_powered ) diff --git a/automata/core/llm/providers/openai.py b/automata/core/llm/providers/openai.py index 9408a69b..4e86c642 100644 --- a/automata/core/llm/providers/openai.py +++ b/automata/core/llm/providers/openai.py @@ -7,7 +7,7 @@ import tiktoken from termcolor import colored -from automata.core.embedding.base import EmbeddingProvider +from automata.core.embedding.base import EmbeddingVectorProvider from automata.core.llm.foundation import ( LLMChatCompletionProvider, LLMChatMessage, @@ -368,16 +368,16 @@ def get_approximate_tokens_consumed(self) -> int: ) -class OpenAIEmbeddingProvider(EmbeddingProvider): +class OpenAIEmbeddingProvider(EmbeddingVectorProvider): """A class to provide embeddings from the OpenAI API.""" def __init__(self, engine: str = "text-embedding-ada-002") -> None: self.engine = engine set_openai_api_key() - def build_embedding_array(self, source: str) -> np.ndarray: + def build_embedding_vector(self, source: str) -> np.ndarray: """Gets an embedding for the given source text.""" - # wait to import build_embedding_array to allow easy mocking of the function in tests. + # wait to import build_embedding_vector to allow easy mocking of the function in tests. from openai.embeddings_utils import get_embedding return np.array(get_embedding(source, engine=self.engine)) diff --git a/automata/core/memory_store/symbol_code_embedding.py b/automata/core/memory_store/symbol_code_embedding.py index f3bbe0ed..59c36cc6 100644 --- a/automata/core/memory_store/symbol_code_embedding.py +++ b/automata/core/memory_store/symbol_code_embedding.py @@ -26,7 +26,7 @@ def get_embedding(self, symbol: Symbol) -> SymbolCodeEmbedding: def process_embedding(self, symbol: Symbol) -> None: """Process the embedding for a `Symbol` by updating if the source code has changed.""" - source_code = self.embedding_builder.fetch_embedding_context(symbol) + source_code = self.embedding_builder.fetch_embedding_input(symbol) if not source_code: raise ValueError(f"Symbol {symbol} has no source code") @@ -43,7 +43,7 @@ def update_existing_embedding(self, source_code: str, symbol: Symbol) -> None: of the existing embedding. If there are differences, update the embedding. """ existing_embedding = self.embedding_db.get(symbol.dotpath) - if existing_embedding.embedding_source != source_code: + if existing_embedding.input_object != source_code: logger.debug("Building a new embedding for %s", symbol) self.embedding_db.discard(symbol.dotpath) symbol_embedding = self.embedding_builder.build(source_code, symbol) diff --git a/automata/core/memory_store/symbol_doc_embedding.py b/automata/core/memory_store/symbol_doc_embedding.py index 85dc0331..4f0e8644 100644 --- a/automata/core/memory_store/symbol_doc_embedding.py +++ b/automata/core/memory_store/symbol_doc_embedding.py @@ -26,7 +26,7 @@ def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding: return self.embedding_db.get(symbol.dotpath) def process_embedding(self, symbol: Symbol) -> None: - source_code = self.embedding_builder.fetch_embedding_context(symbol) + source_code = self.embedding_builder.fetch_embedding_input(symbol) if not source_code: raise ValueError(f"Symbol {symbol} has no source code") diff --git a/automata/core/retrievers/__init__.py b/automata/core/retrievers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/automata/core/retrievers/py/context.py b/automata/core/retrievers/py/context.py index a7a5c4b2..055d74b0 100644 --- a/automata/core/retrievers/py/context.py +++ b/automata/core/retrievers/py/context.py @@ -203,7 +203,7 @@ def process_documentation(self, symbol: Symbol, is_main_symbol: bool) -> None: """ if self.doc_embedding_db is not None and self.doc_embedding_db.contains(symbol.dotpath): if is_main_symbol: - document = self.doc_embedding_db.get(symbol.dotpath).embedding_source + document = self.doc_embedding_db.get(symbol.dotpath).input_object else: document = self.doc_embedding_db.get(symbol.dotpath).summary with self.IndentManager(): diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index 3413910f..b8825999 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -1,3 +1,4 @@ +import networkx as nx import os from functools import lru_cache from typing import Any, Dict, List, Set, Tuple @@ -23,7 +24,7 @@ from automata.core.symbol.graph import SymbolGraph from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase from automata.core.symbol_embedding.builders import SymbolDocEmbeddingBuilder -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tools.factory import AgentToolFactory, logger from automata.core.utils import get_config_fpath @@ -127,58 +128,23 @@ def create_symbol_graph(self) -> SymbolGraph: ) @lru_cache() - def create_subgraph(self) -> SymbolGraph.SubGraph: + def create_subgraph(self) -> nx.DiGraph: """ Associated Keyword Args: flow_rank ("bidirectional") """ symbol_graph = self.get("symbol_graph") - return symbol_graph.get_rankable_symbol_dependency_subgraph( - self.overrides.get("flow_rank", "bidirectional") - ) + return symbol_graph.rankable_subgraph(self.overrides.get("flow_rank", "bidirectional")) @lru_cache() - def create_symbol_code_similarity(self) -> SymbolSimilarityCalculator: + def create_symbol_similarity(self) -> EmbeddingSimilarityCalculator: """ Associated Keyword Args: code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) embedding_provider (OpenAIEmbedding()) """ - code_embedding_fpath = self.overrides.get( - "code_embedding_fpath", DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH - ) - code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) - embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) - code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, embedding_provider) - return SymbolSimilarityCalculator(code_embedding_handler, embedding_provider) - - @lru_cache() - def create_symbol_doc_similarity(self) -> SymbolSimilarityCalculator: - """ - Associated Keyword Args: - doc_embedding_fpath (DependencyFactory.DEFAULT_DOC_EMBEDDING_FPATH) - embedding_provider (OpenAIEmbedding()) - """ - doc_embedding_fpath = self.overrides.get( - "doc_embedding_fpath", DependencyFactory.DEFAULT_DOC_EMBEDDING_FPATH - ) - doc_embedding_db = JSONSymbolEmbeddingVectorDatabase(doc_embedding_fpath) - - embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) - symbol_search = self.get("symbol_search") - py_context_retriever = self.get("py_context_retriever") - completion_provider = self.overrides.get( - "doc_completion_provider", OpenAIChatCompletionProvider() - ) - - symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( - embedding_provider, completion_provider, symbol_search, py_context_retriever - ) - doc_embedding_handler = SymbolDocEmbeddingHandler( - doc_embedding_db, symbol_doc_embedding_builder - ) - return SymbolSimilarityCalculator(doc_embedding_handler, embedding_provider) + return EmbeddingSimilarityCalculator(embedding_provider) @lru_cache() def create_symbol_rank(self) -> SymbolRank: diff --git a/automata/core/symbol/graph.py b/automata/core/symbol/graph.py index d6acaea0..bfa37310 100644 --- a/automata/core/symbol/graph.py +++ b/automata/core/symbol/graph.py @@ -8,6 +8,7 @@ import networkx as nx from google.protobuf.json_format import MessageToDict # type: ignore from tqdm import tqdm +from functools import lru_cache from automata.config import MAX_WORKERS from automata.core.singletons.module_loader import py_module_loader @@ -474,11 +475,6 @@ class SymbolGraph: "contains", "reference", "relationship", "caller", or "callee". """ - @dataclass - class SubGraph: - parent: "SymbolGraph" - graph: nx.DiGraph - def __init__(self, index_path: str, build_caller_relationships: bool = False) -> None: index = self._load_index_protobuf(index_path) builder = GraphBuilder(index, build_caller_relationships) @@ -518,9 +514,14 @@ def get_potential_symbol_callees(self, symbol: Symbol) -> Dict[Symbol, SymbolRef def get_references_to_symbol(self, symbol: Symbol) -> Dict[str, List[SymbolReference]]: return self.navigator.get_references_to_symbol(symbol) - def get_rankable_symbol_dependency_subgraph( + @property + def rankable_subgraph(self) -> nx.DiGraph: + return self._build_rankable_subgraph() + + @lru_cache(maxsize=None) + def _build_rankable_subgraph( self, flow_rank="bidirectional", path_filter: Optional[str] = None - ) -> SubGraph: + ) -> nx.DiGraph: """ Creates a `SubGraph` of the original `SymbolGraph` which contains only rankable symbols. The nodes in the subgraph @@ -564,7 +565,7 @@ def get_rankable_symbol_dependency_subgraph( logger.info("Built the rankable symbol subgraph") - return SymbolGraph.SubGraph(graph=G, parent=self) + return G @staticmethod def _load_index_protobuf(path: str) -> Index: diff --git a/automata/core/symbol_embedding/base.py b/automata/core/symbol_embedding/base.py index 08e2c91d..fb340ccd 100644 --- a/automata/core/symbol_embedding/base.py +++ b/automata/core/symbol_embedding/base.py @@ -4,37 +4,31 @@ import numpy as np from automata.core.base.database.vector import JSONVectorDatabase -from automata.core.embedding.base import EmbeddingProvider +from automata.core.embedding.base import ( + EmbeddingVectorProvider, + Embedding, + EmbeddingHandler, + EmbeddingBuilder, +) from automata.core.symbol.base import Symbol -class SymbolEmbedding(abc.ABC): - """Abstract base class for different types of embeddings""" +class SymbolEmbedding(Embedding): + """An abstract class for symbol code embeddings""" - def __init__(self, symbol: Symbol, embedding_source: str, vector: np.ndarray): - self.symbol = symbol - self.embedding_source = embedding_source - self.vector = vector + @abc.abstractmethod + def __init__(self, key: Symbol, input_object: str, vector: np.ndarray): + super().__init__(key, input_object, vector) + + @property + def symbol(self) -> Symbol: + return self.key @abc.abstractmethod def __str__(self) -> str: pass -class JSONSymbolEmbeddingVectorDatabase(JSONVectorDatabase): - """Concrete class to provide a vector database that saves into a JSON file.""" - - def __init__(self, file_path: str): - super().__init__(file_path) - - def entry_to_key(self, entry: SymbolEmbedding) -> str: - """Method to generate a hashable key from an entry of type T.""" - return entry.symbol.dotpath - - def get_all_entries(self) -> List[SymbolEmbedding]: - return sorted(self.data, key=lambda x: self.entry_to_key(x)) - - class SymbolCodeEmbedding(SymbolEmbedding): """A concrete class for symbol code embeddings""" @@ -42,7 +36,7 @@ def __init__(self, symbol: Symbol, source_code: str, vector: np.ndarray): super().__init__(symbol, source_code, vector) def __str__(self) -> str: - return f"SymbolCodeEmbedding(\nsymbol={self.symbol},\n\nembedding_source={self.embedding_source}\n\nvector_length={len(self.vector)}\n)" + return f"SymbolCodeEmbedding(\nsymbol={self.symbol},\n\nembedding_source={self.input_object}\n\nvector_length={len(self.vector)}\n)" class SymbolDocEmbedding(SymbolEmbedding): @@ -64,40 +58,31 @@ def __init__( self.context = context def __str__(self) -> str: - return f"SymbolDocEmbedding(\nsymbol={self.symbol},\n\nembedding_source={self.embedding_source}\n\nvector_length={len(self.vector)}\n\nsource_code={self.source_code}\n\nsummary={self.summary}\n\ncontext={self.context}\n)" + return f"SymbolDocEmbedding(\nsymbol={self.symbol},\n\nembedding_source={self.input_object}\n\nvector_length={len(self.vector)}\n\nsource_code={self.source_code}\n\nsummary={self.summary}\n\ncontext={self.context}\n)" -class SymbolEmbeddingBuilder(abc.ABC): - """An abstract class to build embeddings for symbols""" - - def __init__( - self, - embedding_provider: EmbeddingProvider, - ) -> None: - self.embedding_provider = embedding_provider +class JSONSymbolEmbeddingVectorDatabase(JSONVectorDatabase): + """Concrete class to provide a vector database that saves into a JSON file.""" - @abc.abstractmethod - def build(self, source_text: str, symbol: Symbol) -> Any: - """An abstract method to build the embedding for a symbol""" - pass + def __init__(self, file_path: str): + super().__init__(file_path) - def fetch_embedding_context(self, symbol: Symbol) -> str: - """For a code embedding the context is the source code itself.""" - from automata.core.symbol.symbol_utils import ( # imported late for mocking - convert_to_fst_object, - ) + def entry_to_key(self, entry: SymbolEmbedding) -> str: + """Method to generate a hashable key from an entry of type T.""" + return entry.symbol.dotpath - return str(convert_to_fst_object(symbol)) + def get_ordered_embeddings(self) -> List[SymbolEmbedding]: + return sorted(self.data, key=lambda x: self.entry_to_key(x)) -class SymbolEmbeddingHandler(abc.ABC): +class SymbolEmbeddingHandler(EmbeddingHandler): """An abstract class to handle the embedding of symbols""" @abc.abstractmethod def __init__( self, embedding_db: JSONSymbolEmbeddingVectorDatabase, - embedding_builder: SymbolEmbeddingBuilder, + embedding_builder: EmbeddingBuilder, ) -> None: """An abstract constructor for SymbolEmbeddingHandler""" self.embedding_db = embedding_db @@ -114,4 +99,4 @@ def process_embedding(self, symbol: Symbol) -> None: pass def get_all_supported_symbols(self) -> List[Symbol]: - return [embedding.symbol for embedding in self.embedding_db.get_all_entries()] + return [embedding.symbol for embedding in self.embedding_db.get_ordered_embeddings()] diff --git a/automata/core/symbol_embedding/builders.py b/automata/core/symbol_embedding/builders.py index 2a51c164..e3ce1761 100644 --- a/automata/core/symbol_embedding/builders.py +++ b/automata/core/symbol_embedding/builders.py @@ -3,7 +3,7 @@ from jinja2 import Template from automata.config.prompt.doc_generation import DEFAULT_DOC_GENERATION_PROMPT -from automata.core.embedding.base import EmbeddingProvider +from automata.core.embedding.base import EmbeddingVectorProvider, EmbeddingBuilder from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.llm.foundation import LLMChatCompletionProvider from automata.core.retrievers.py.context import PyContextRetriever @@ -11,22 +11,29 @@ from automata.core.symbol_embedding.base import ( SymbolCodeEmbedding, SymbolDocEmbedding, - SymbolEmbeddingBuilder, ) -class SymbolCodeEmbeddingBuilder(SymbolEmbeddingBuilder): +class SymbolCodeEmbeddingBuilder(EmbeddingBuilder): """Builds `Symbol` source code embeddings.""" def build(self, source_code: str, symbol: Symbol) -> SymbolCodeEmbedding: - embedding_vector = self.embedding_provider.build_embedding_array(source_code) + embedding_vector = self.embedding_provider.build_embedding_vector(source_code) return SymbolCodeEmbedding(symbol, source_code, embedding_vector) + def fetch_embedding_input(self, symbol: Symbol) -> str: + """An abstract method for embedding the context is the source code itself.""" + from automata.core.symbol.symbol_utils import ( # imported late for mocking + convert_to_fst_object, + ) + + return str(convert_to_fst_object(symbol)) + -class SymbolDocEmbeddingBuilder(SymbolEmbeddingBuilder): +class SymbolDocEmbeddingBuilder(EmbeddingBuilder): def __init__( self, - embedding_provider: EmbeddingProvider, + embedding_provider: EmbeddingVectorProvider, completion_provider: LLMChatCompletionProvider, symbol_search: SymbolSearch, retriever: PyContextRetriever, @@ -102,7 +109,7 @@ def load(cls, config_name: AgentConfigName) -> "CustomAgentConfig": summary = self.completion_provider.standalone_call( f"Condense the documentation below down to one to two concise paragraphs:\n {document}\nIf there is an example, include that in full in the output." ) - embedding = self.embedding_provider.build_embedding_array(document) + embedding = self.embedding_provider.build_embedding_vector(document) return SymbolDocEmbedding( symbol, diff --git a/automata/core/symbol_embedding/similarity.py b/automata/core/symbol_embedding/similarity.py deleted file mode 100644 index e2bc969e..00000000 --- a/automata/core/symbol_embedding/similarity.py +++ /dev/null @@ -1,90 +0,0 @@ -import logging -from typing import Dict, List, Optional, Set - -import numpy as np - -from automata.core.embedding.base import ( - EmbeddingNormType, - EmbeddingProvider, - EmbeddingSimilarityCalculator, -) -from automata.core.symbol.base import Symbol -from automata.core.symbol_embedding.base import SymbolEmbeddingHandler - -logger = logging.getLogger(__name__) - - -class SymbolSimilarityCalculator(EmbeddingSimilarityCalculator): - """A class responsible for calculating the similarity between symbols.""" - - def __init__( - self, - symbol_embedding_handler: SymbolEmbeddingHandler, - embedding_provider: EmbeddingProvider, - norm_type: EmbeddingNormType = EmbeddingNormType.L2, - ) -> None: - """Initializes SymbolSimilarity by building the associated symbol mappings.""" - self.embedding_handler: SymbolEmbeddingHandler = symbol_embedding_handler - self.embedding_provider: EmbeddingProvider = embedding_provider - self.norm_type = norm_type - supported_symbols = self.embedding_handler.get_all_supported_symbols() - self.index_to_symbol = dict(enumerate(supported_symbols)) - self.symbol_to_index = {symbol: i for i, symbol in enumerate(supported_symbols)} - self.available_symbols: Optional[Set[Symbol]] = None - self.ordered_embeddings = self._calculate_ordered_embeddings() - - def set_available_symbols(self, available_symbols: Set[Symbol]) -> None: - """Set the available symbols to use for similarity calculation.""" - self.available_symbols = available_symbols - - def get_available_symbols(self) -> List[Symbol]: - """Gets a list of available symbols to use for similarity calculation.""" - return [ - symbol - for symbol in self.symbol_to_index - if not self.available_symbols or symbol in self.available_symbols - ] - - def calculate_query_similarity_dict( - self, query_text: str, return_sorted: bool = True - ) -> Dict[Symbol, float]: - """ - Similarity is calculated between the dot product - of the query embedding and the symbol embeddings. - Return result is sorted in descending order by default. - """ - query_embedding_array = self.embedding_provider.build_embedding_array(query_text) - # Compute the similarity of the query to all symbols - similarity_scores = self._calculate_embedding_similarity(query_embedding_array) - similarity_dict = { - self.index_to_symbol[i]: similarity_scores[i] - for i in range(len(self.index_to_symbol)) - if (not self.available_symbols) or self.index_to_symbol[i] in self.available_symbols - } - - if return_sorted: - # Sort the dictionary by values in descending order - similarity_dict = dict( - sorted(similarity_dict.items(), key=lambda item: item[1], reverse=True) - ) - - return similarity_dict - - def _calculate_embedding_similarity(self, embedding_array: np.ndarray) -> np.ndarray: - """Calculate the similarity score between the embedding with all symbol embeddings""" - # Normalize the embeddings and the query embedding - embeddings_norm = self._normalize_embeddings(self.ordered_embeddings, self.norm_type) - normed_embedding = self._normalize_embeddings( - embedding_array[np.newaxis, :], self.norm_type - )[0] - - return np.dot(embeddings_norm, normed_embedding) - - def _calculate_ordered_embeddings(self) -> np.ndarray: - """Returns the embeddings in the correct order.""" - return np.array( - [ - self.embedding_handler.get_embedding(symbol).vector - for symbol in self.index_to_symbol.values() - ] - ) diff --git a/automata/core/tools/builders/context_oracle.py b/automata/core/tools/builders/context_oracle.py index 7d9d7e1c..0dfe98b9 100644 --- a/automata/core/tools/builders/context_oracle.py +++ b/automata/core/tools/builders/context_oracle.py @@ -6,7 +6,7 @@ from automata.core.agent.agent import AgentToolkit, AgentToolkitNames from automata.core.agent.providers import OpenAIAgentToolkit from automata.core.llm.providers.openai import OpenAITool -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tools.base import Tool from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry @@ -18,8 +18,8 @@ class ContextOracleToolkit(AgentToolkit): def __init__( self, - symbol_doc_similarity: SymbolSimilarityCalculator, - symbol_code_similarity: SymbolSimilarityCalculator, + symbol_doc_similarity: EmbeddingSimilarityCalculator, + symbol_code_similarity: EmbeddingSimilarityCalculator, **kwargs, ) -> None: self.symbol_doc_similarity = symbol_doc_similarity @@ -32,7 +32,7 @@ def build(self) -> List[Tool]: name="context-oracle", function=self._get_context, description=textwrap.dedent( - """This tool utilizes the SymbolSimilarityCalculator and SymbolSearch to provide context for a given query by computing semantic similarity between the query and all available symbols' documentation and code. The symbol with the highest combined similarity score is identified, with its source code and documentation summary forming the primary context. Additionally, if enabled, the documentation summaries of related symbols (those next most similar to the query) are included.""" + """This tool utilizes the EmbeddingSimilarityCalculator and SymbolSearch to provide context for a given query by computing semantic similarity between the query and all available symbols' documentation and code. The symbol with the highest combined similarity score is identified, with its source code and documentation summary forming the primary context. Additionally, if enabled, the documentation summaries of related symbols (those next most similar to the query) are included.""" ), ) ] @@ -66,7 +66,7 @@ def _get_context(self, query: str, max_related_symbols=1) -> str: most_similar_symbol ) - result = most_similar_embedding.embedding_source + result = most_similar_embedding.input_object try: most_similar_doc_embedding = ( diff --git a/automata/core/tools/factory.py b/automata/core/tools/factory.py index a67f1e94..1d72d3e2 100644 --- a/automata/core/tools/factory.py +++ b/automata/core/tools/factory.py @@ -7,7 +7,7 @@ from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter from automata.core.experimental.search.symbol_search import SymbolSearch -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tools.base import Tool logger = logging.getLogger(__name__) @@ -21,8 +21,8 @@ class AgentToolFactory: AgentToolkitNames.PY_WRITER: [("py_writer", PyWriter)], AgentToolkitNames.SYMBOL_SEARCH: [("symbol_search", SymbolSearch)], AgentToolkitNames.CONTEXT_ORACLE: [ - ("symbol_doc_similarity", SymbolSimilarityCalculator), - ("symbol_code_similarity", SymbolSimilarityCalculator), + ("symbol_doc_similarity", EmbeddingSimilarityCalculator), + ("symbol_code_similarity", EmbeddingSimilarityCalculator), ], } diff --git a/automata/docs/core/base/database/json_embedding_vector_database.rst b/automata/docs/core/base/database/json_embedding_vector_database.rst index 9f6e3f29..46d396e8 100644 --- a/automata/docs/core/base/database/json_embedding_vector_database.rst +++ b/automata/docs/core/base/database/json_embedding_vector_database.rst @@ -41,7 +41,7 @@ and retrieving vectors associated with symbols. # Add a SymbolEmbedding to the database symbol = Symbol.from_string("example.Symbol#") - embedding = SymbolEmbedding(symbol, "embedding_source", [0.1, 0.2, 0.3]) + embedding = SymbolEmbedding(symbol, "input_object", [0.1, 0.2, 0.3]) vector_db.add(embedding) # Check if the symbol exists in the database diff --git a/automata/docs/core/embedding/embedding_provider.rst b/automata/docs/core/embedding/embedding_provider.rst index 11ef0233..9a37b1b6 100644 --- a/automata/docs/core/embedding/embedding_provider.rst +++ b/automata/docs/core/embedding/embedding_provider.rst @@ -1,7 +1,7 @@ -EmbeddingProvider +EmbeddingVectorProvider ================= -``EmbeddingProvider`` is an abstract base class that provides embeddings +``EmbeddingVectorProvider`` is an abstract base class that provides embeddings for symbols. It is used in different embedding types such as ``OpenAIEmbedding`` and as an input in classes like ``SymbolCodeEmbeddingHandler`` and ``SymbolDocEmbeddingHandler`` for @@ -10,9 +10,9 @@ managing symbol embeddings. Overview -------- -The primary purpose of the ``EmbeddingProvider`` is to provide a +The primary purpose of the ``EmbeddingVectorProvider`` is to provide a consistent interface for generating embeddings for symbols. Any class -that implements the ``EmbeddingProvider`` interface must provide a +that implements the ``EmbeddingVectorProvider`` interface must provide a ``build_embedding`` method that takes a ``symbol_source`` as input and returns a numpy ndarray. @@ -27,15 +27,15 @@ Example ------- The following is an example demonstrating how to create an instance of a -class that inherits from ``EmbeddingProvider`` and implement the +class that inherits from ``EmbeddingVectorProvider`` and implement the ``build_embedding`` method. .. code:: python import numpy as np - from automata.core.memory_store.embedding_types import EmbeddingProvider + from automata.core.memory_store.embedding_types import EmbeddingVectorProvider - class MyEmbeddingProvider(EmbeddingProvider): + class MyEmbeddingProvider(EmbeddingVectorProvider): def build_embedding(self, symbol_source: str) -> np.ndarray: # Implement your own logic to generate the embedding for a given symbol source @@ -49,7 +49,7 @@ class that inherits from ``EmbeddingProvider`` and implement the Limitations ----------- -Since ``EmbeddingProvider`` is an abstract base class, it cannot be used +Since ``EmbeddingVectorProvider`` is an abstract base class, it cannot be used directly to generate embeddings. Instead, it should be inherited and implemented by a subclass providing a specific kind of embedding, such as an implementation using OpenAI’s API. @@ -60,4 +60,4 @@ Follow-up Questions: - Are there any specific requirements for the input ``symbol_source`` when using the ``build_embedding`` method? - What are some example use cases for creating custom - ``EmbeddingProvider`` implementations? + ``EmbeddingVectorProvider`` implementations? diff --git a/automata/docs/core/embedding/open_ai_embedding.rst b/automata/docs/core/embedding/open_ai_embedding.rst index e56d663b..1be4ce8c 100644 --- a/automata/docs/core/embedding/open_ai_embedding.rst +++ b/automata/docs/core/embedding/open_ai_embedding.rst @@ -26,7 +26,7 @@ Related Symbols - ``automata.tests.conftest.mock_embedding`` - ``automata.tests.unit.test_symbol_embedding.test_get_embedding`` - ``automata.core.symbol_embedding.base.SymbolEmbedding`` -- ``automata.core.memory_store.embedding_types.EmbeddingProvider`` +- ``automata.core.memory_store.embedding_types.EmbeddingVectorProvider`` Usage Example ------------- diff --git a/automata/docs/core/embedding/symbol_code_embedding_builder.rst b/automata/docs/core/embedding/symbol_code_embedding_builder.rst index a302970b..b3dd9239 100644 --- a/automata/docs/core/embedding/symbol_code_embedding_builder.rst +++ b/automata/docs/core/embedding/symbol_code_embedding_builder.rst @@ -10,7 +10,7 @@ Overview The main responsibility of the ``SymbolCodeEmbeddingBuilder`` class is to generate embeddings from source code associated with a ``Symbol``. It -uses an instance of an ``EmbeddingProvider`` to create these embeddings. +uses an instance of an ``EmbeddingVectorProvider`` to create these embeddings. The result of the embedding process is a ``SymbolCodeEmbedding`` object. This is a concrete class that holds the ``Symbol`` object, its @@ -35,11 +35,11 @@ Below is an example demonstrating the use of the .. code:: python from automata.core.base.database.vector import VectorDatabaseProvider - from automata.core.llm.core import EmbeddingProvider, SymbolCodeEmbeddingBuilder + from automata.core.llm.core import EmbeddingVectorProvider, SymbolCodeEmbeddingBuilder from automata.core.symbol.base import Symbol, SymbolCodeEmbedding # create an instance of an embedding provider. - embed_provider = EmbeddingProvider() + embed_provider = EmbeddingVectorProvider() # create an instance of the SymbolCodeEmbeddingBuilder. embed_builder = SymbolCodeEmbeddingBuilder(embedding_provider=embed_provider) @@ -63,14 +63,14 @@ Limitations ----------- As ``SymbolCodeEmbeddingBuilder`` relies on a given -``EmbeddingProvider``, the quality and efficiency of symbol embedding +``EmbeddingVectorProvider``, the quality and efficiency of symbol embedding directly depends on the performance of the underlying -``EmbeddingProvider``. +``EmbeddingVectorProvider``. Follow-up Questions: -------------------- -- What variety of ``EmbeddingProvider`` derivatives can be effectively +- What variety of ``EmbeddingVectorProvider`` derivatives can be effectively integrated with ``SymbolCodeEmbeddingBuilder``? - Does the length or complexity of ``source_code`` affect the performance of ``SymbolCodeEmbeddingBuilder``? diff --git a/automata/docs/core/embedding/symbol_code_embedding_handler.rst b/automata/docs/core/embedding/symbol_code_embedding_handler.rst index 415b938c..9d09841a 100644 --- a/automata/docs/core/embedding/symbol_code_embedding_handler.rst +++ b/automata/docs/core/embedding/symbol_code_embedding_handler.rst @@ -5,7 +5,7 @@ SymbolCodeEmbeddingHandler embeddings of symbols in the source code. It provides methods to build, update, and retrieve embeddings of symbols. The class interacts with other components such as ``VectorDatabaseProvider`` and -``EmbeddingProvider``. It is used in tasks like symbol similarity +``EmbeddingVectorProvider``. It is used in tasks like symbol similarity calculations and code completion. Overview @@ -13,7 +13,7 @@ Overview ``SymbolCodeEmbeddingHandler`` supports the generation and management of symbol code embeddings. The class takes an instance of -``VectorDatabaseProvider`` and ``EmbeddingProvider`` as input, which +``VectorDatabaseProvider`` and ``EmbeddingVectorProvider`` as input, which handle the storage and generation of embeddings, respectively. The key methods available in this class include ``build_embedding``, ``get_embedding``, and ``update_embedding``. These methods enable @@ -24,7 +24,7 @@ Related Symbols --------------- - ``automata.core.base.database.vector.VectorDatabaseProvider`` -- ``automata.core.llm.core.EmbeddingProvider`` +- ``automata.core.llm.core.EmbeddingVectorProvider`` - ``automata.core.symbol.base.Symbol`` - ``automata.core.symbol_embedding.base.SymbolCodeEmbedding`` - ``automata.core.symbol.symbol_utils.convert_to_fst_object`` @@ -38,12 +38,12 @@ The following example demonstrates how to create an instance of .. code:: python from automata.core.base.database.vector import VectorDatabaseProvider - from automata.core.llm.core import EmbeddingProvider, SymbolCodeEmbeddingHandler + from automata.core.llm.core import EmbeddingVectorProvider, SymbolCodeEmbeddingHandler from automata.core.symbol.base import Symbol # Mocked objects for demonstration purposes mock_embedding_db = VectorDatabaseProvider() - mock_embedding_provider = EmbeddingProvider() + mock_embedding_provider = EmbeddingVectorProvider() symbol_handler = SymbolCodeEmbeddingHandler( embedding_db=mock_embedding_db, @@ -60,13 +60,13 @@ Limitations ``SymbolCodeEmbeddingHandler`` depends on the existence of a ``VectorDatabaseProvider`` instance for storing embeddings and an -``EmbeddingProvider`` instance for generating embeddings. The class +``EmbeddingVectorProvider`` instance for generating embeddings. The class raises a ``ValueError`` if the symbol has no source code for updating its embedding. Follow-up Questions: -------------------- -- How can we manage custom ``EmbeddingProvider`` and +- How can we manage custom ``EmbeddingVectorProvider`` and ``VectorDatabaseProvider`` instances with ``SymbolCodeEmbeddingHandler``? diff --git a/automata/docs/core/embedding/symbol_doc_embedding_builder.rst b/automata/docs/core/embedding/symbol_doc_embedding_builder.rst index 6d9c148a..bcb884bf 100644 --- a/automata/docs/core/embedding/symbol_doc_embedding_builder.rst +++ b/automata/docs/core/embedding/symbol_doc_embedding_builder.rst @@ -2,7 +2,7 @@ SymbolDocEmbeddingBuilder ========================= ``SymbolDocEmbeddingBuilder`` is designed to build an embedding for a -symbol’s documentation. It accepts the ``EmbeddingProvider``, +symbol’s documentation. It accepts the ``EmbeddingVectorProvider``, ``LLMChatCompletionProvider``, ``SymbolSearch``, and ``PyContextRetriever`` in order to generate the documentation. @@ -19,7 +19,7 @@ Import Statements from automata.core.retrievers.py.context import PyContextRetriever from automata.core.llm.foundation import LLMChatCompletionProvider from automata.core.llm.core import ( - EmbeddingProvider, + EmbeddingVectorProvider, SymbolEmbeddingBuilder, SymbolEmbeddingHandler, ) @@ -36,14 +36,14 @@ Here we will walk through an example of how to use the .. code:: python from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingBuilder - from automata.core.llm.core import EmbeddingProvider + from automata.core.llm.core import EmbeddingVectorProvider from automata.core.llm.foundation import LLMChatCompletionProvider from automata.core.retrievers.py.context import PyContextRetriever from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.symbol.base import Symbol # create instances of the dependent classes - embedding_provider = EmbeddingProvider() + embedding_provider = EmbeddingVectorProvider() completion_provider = LLMChatCompletionProvider() symbol_search = SymbolSearch() retriever = PyContextRetriever() @@ -86,7 +86,7 @@ Limitations ----------- The current implementation of ``SymbolDocEmbeddingBuilder`` relies -heavily on the passed instances of ``EmbeddingProvider``, +heavily on the passed instances of ``EmbeddingVectorProvider``, ``LLMChatCompletionProvider``, ``SymbolSearch``, and ``PyContextRetriever``. Any misconfigurations on these instances could result in improper documentation embedding generation. diff --git a/automata/docs/core/embedding/symbol_doc_embedding_handler.rst b/automata/docs/core/embedding/symbol_doc_embedding_handler.rst index 63327eba..5ec5940f 100644 --- a/automata/docs/core/embedding/symbol_doc_embedding_handler.rst +++ b/automata/docs/core/embedding/symbol_doc_embedding_handler.rst @@ -3,7 +3,7 @@ SymbolDocEmbeddingHandler ``SymbolDocEmbeddingHandler`` is a class designed to manage and store embeddings for the documentation of any given symbol in the code. It -extends the ``EmbeddingProvider`` and ``SymbolEmbeddingHandler`` +extends the ``EmbeddingVectorProvider`` and ``SymbolEmbeddingHandler`` classes, allowing for easy integration with other parts of the Automata system. The class provides functionality for building, updating, and retrieving embeddings for symbol documentation, as well as fetching @@ -30,7 +30,7 @@ Related Symbols --------------- - ``automata.core.base.database.vector.VectorDatabaseProvider`` -- ``automata.core.llm.core.EmbeddingProvider`` +- ``automata.core.llm.core.EmbeddingVectorProvider`` - ``automata.core.llm.core.SymbolEmbeddingHandler`` - ``automata.core.symbol.base.Symbol`` - ``automata.core.symbol_embedding.base.SymbolDocEmbedding`` diff --git a/automata/docs/core/embedding/symbol_embedding_handler.rst b/automata/docs/core/embedding/symbol_embedding_handler.rst index fdb5ce78..3f162067 100644 --- a/automata/docs/core/embedding/symbol_embedding_handler.rst +++ b/automata/docs/core/embedding/symbol_embedding_handler.rst @@ -32,13 +32,13 @@ The following code snippet demonstrates the usage of .. code:: python from automata.core.database.vector import JSONEmbeddingVectorDatabase - from automata.core.memory_store.embedding_types import EmbeddingProvider + from automata.core.memory_store.embedding_types import EmbeddingVectorProvider from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.symbol.base import Symbol # Define the embedding database and embedding provider embedding_db = JSONEmbeddingVectorDatabase(database_filepath) - embedding_provider = EmbeddingProvider(api_key) + embedding_provider = EmbeddingVectorProvider(api_key) # Instantiate the SymbolCodeEmbeddingHandler code_embedding_handler = SymbolCodeEmbeddingHandler(embedding_db, embedding_provider) diff --git a/automata/docs/core/embedding/symbol_similarity.rst b/automata/docs/core/embedding/symbol_similarity.rst index 6750b35d..04b089bb 100644 --- a/automata/docs/core/embedding/symbol_similarity.rst +++ b/automata/docs/core/embedding/symbol_similarity.rst @@ -10,7 +10,7 @@ Overview -------- ``SymbolSimilarity`` is built using a ``SymbolEmbeddingHandler`` -instance to manage symbol embeddings and an ``EmbeddingProvider`` to +instance to manage symbol embeddings and an ``EmbeddingVectorProvider`` to generate embeddings for query texts. It is capable of computing similarity scores using different norm types (specified by the optional ``norm_type`` parameter). @@ -24,7 +24,7 @@ Related Symbols --------------- - ``automata.core.llm.core.SymbolEmbeddingHandler`` -- ``automata.core.llm.core.EmbeddingProvider`` +- ``automata.core.llm.core.EmbeddingVectorProvider`` - ``automata.core.llm.core.EmbeddingNormType`` - ``automata.core.symbol.base.Symbol`` @@ -40,15 +40,15 @@ given query text. import numpy as np from automata.core.llm.core import ( SymbolEmbeddingHandler, - EmbeddingProvider, + EmbeddingVectorProvider, EmbeddingNormType, SymbolSimilarity, ) from automata.core.symbol.base import Symbol - # Create a mock SymbolEmbeddingHandler and EmbeddingProvider + # Create a mock SymbolEmbeddingHandler and EmbeddingVectorProvider symbol_embedding_handler = SymbolEmbeddingHandler(...) - embedding_provider = EmbeddingProvider(...) + embedding_provider = EmbeddingVectorProvider(...) # Instantiate SymbolSimilarity symbol_similarity = SymbolSimilarity( @@ -65,7 +65,7 @@ Limitations ----------- ``SymbolSimilarity`` relies on the ``SymbolEmbeddingHandler`` and -``EmbeddingProvider`` being properly set up with the correct embeddings +``EmbeddingVectorProvider`` being properly set up with the correct embeddings and data. If the embeddings used by these classes are of low quality or not appropriate for the compared symbols, the similarity calculation may not provide useful results. Additionally, the class assumes that the diff --git a/automata/docs/core/embedding/symbol_similarity_calculator.rst b/automata/docs/core/embedding/symbol_similarity_calculator.rst index 66bf4c2f..f2c82caa 100644 --- a/automata/docs/core/embedding/symbol_similarity_calculator.rst +++ b/automata/docs/core/embedding/symbol_similarity_calculator.rst @@ -37,7 +37,7 @@ Usage Example from automata.core.llm.core import ( EmbeddingNormType, - EmbeddingProvider, + EmbeddingVectorProvider, SymbolEmbeddingHandler, ) from typing import Dict, List, Optional, Set diff --git a/automata/docs/core/llm/embedding_provider.rst b/automata/docs/core/llm/embedding_provider.rst index dd25cc89..082a27ae 100644 --- a/automata/docs/core/llm/embedding_provider.rst +++ b/automata/docs/core/llm/embedding_provider.rst @@ -1,7 +1,7 @@ -EmbeddingProvider +EmbeddingVectorProvider ================= -``EmbeddingProvider`` is an abstract base class that provides +``EmbeddingVectorProvider`` is an abstract base class that provides functionality for generating embeddings for symbols in the Automata platform. It requires the implementation of the ``build_embedding`` method, which generates an embedding for the given symbol source. @@ -17,15 +17,15 @@ Related Symbols Example ------- -The following is an example of a custom EmbeddingProvider implementation +The following is an example of a custom EmbeddingVectorProvider implementation to provide embeddings for symbols using the ``numpy`` library: .. code:: python import numpy as np - from automata.core.llm.core import EmbeddingProvider + from automata.core.llm.core import EmbeddingVectorProvider - class CustomEmbeddingProvider(EmbeddingProvider): + class CustomEmbeddingProvider(EmbeddingVectorProvider): def build_embedding(self, symbol_source: str) -> np.ndarray: # Replace this with the actual logic to create the embedding embedding = np.random.randn(64) @@ -38,7 +38,7 @@ to provide embeddings for symbols using the ``numpy`` library: Limitations ----------- -``EmbeddingProvider`` is an abstract base class and needs to be +``EmbeddingVectorProvider`` is an abstract base class and needs to be subclassed to provide a concrete implementation of the ``build_embedding`` method. The specific logic for building the embeddings is left to the implementation of the subclass and may depend @@ -49,4 +49,4 @@ Follow-up Questions: -------------------- - What are some common use cases or industry applications where - embeddings generated by the EmbeddingProvider class would be useful? + embeddings generated by the EmbeddingVectorProvider class would be useful? diff --git a/automata/docs/core/llm/providers/open_ai_embedding_provider.rst b/automata/docs/core/llm/providers/open_ai_embedding_provider.rst index 3833073c..8289fdc8 100644 --- a/automata/docs/core/llm/providers/open_ai_embedding_provider.rst +++ b/automata/docs/core/llm/providers/open_ai_embedding_provider.rst @@ -2,7 +2,7 @@ OpenAIEmbeddingProvider ======================= ``OpenAIEmbeddingProvider`` is a class that provides embeddings for -symbols using OpenAI’s API. It extends the ``EmbeddingProvider`` +symbols using OpenAI’s API. It extends the ``EmbeddingVectorProvider`` abstract base class and implements the method ``build_embedding`` to get the embedding for a given symbol. @@ -18,7 +18,7 @@ embedding. Related Symbols --------------- -- ``automata.core.llm.core.EmbeddingProvider`` +- ``automata.core.llm.core.EmbeddingVectorProvider`` - ``automata.tests.unit.test_symbol_embedding.test_get_embedding`` - ``automata.tests.unit.test_symbol_embedding.test_get_embedding_exception`` - ``automata.tests.unit.test_symbol_embedding.test_add_new_embedding`` diff --git a/automata/docs/core/llm/symbol_embedding_builder.rst b/automata/docs/core/llm/symbol_embedding_builder.rst index 0b28a931..2bf00704 100644 --- a/automata/docs/core/llm/symbol_embedding_builder.rst +++ b/automata/docs/core/llm/symbol_embedding_builder.rst @@ -4,7 +4,7 @@ SymbolEmbeddingBuilder ``SymbolEmbeddingBuilder`` is an abstract class that serves as a blueprint for specific embedding builder classes that construct embeddings for various types of symbols. The constructor accepts an -instance of ``EmbeddingProvider`` as a parameter, which provides +instance of ``EmbeddingVectorProvider`` as a parameter, which provides embeddings for the symbols. It includes a ``build`` method, which must be implemented in the child classes, designed for building the embeddings based on a source text and a symbol. @@ -15,7 +15,7 @@ Overview ``SymbolEmbeddingBuilder`` offers a systematic way of generating embeddings for symbols by providing an organizational structure to support the process. Its primary functionality revolves around creating -embeddings for symbols using the underlying ``EmbeddingProvider`` and +embeddings for symbols using the underlying ``EmbeddingVectorProvider`` and source text. Furthermore, it includes a ``fetch_embedding_context`` method that retrieves the context for a source code embedding, which abstracts the conversion of a symbol to a string object. @@ -44,10 +44,10 @@ concrete class (``SymbolCodeEmbeddingBuilder``) that extends .. code:: python from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingBuilder - from automata.core.llm.core import EmbeddingProvider + from automata.core.llm.core import EmbeddingVectorProvider - # Create an instance of EmbeddingProvider - embedding_provider = EmbeddingProvider() + # Create an instance of EmbeddingVectorProvider + embedding_provider = EmbeddingVectorProvider() # Substitute with appropriate parameter value # Create an instance of SymbolCodeEmbeddingBuilder @@ -67,7 +67,7 @@ Follow-up Questions: -------------------- - What is the structure of the embeddings provided by the - ``EmbeddingProvider``? + ``EmbeddingVectorProvider``? - How are the outputs of the ``build`` method structured and used by other classes in the framework? - How are the concrete classes such as ``SymbolCodeEmbeddingBuilder`` diff --git a/automata/docs/core/llm/symbol_embedding_handler.rst b/automata/docs/core/llm/symbol_embedding_handler.rst index 78dbc122..b7109d20 100644 --- a/automata/docs/core/llm/symbol_embedding_handler.rst +++ b/automata/docs/core/llm/symbol_embedding_handler.rst @@ -38,11 +38,11 @@ specific symbol. from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.symbol.base import Symbol from automata.core.base.database.vector import JSONEmbeddingVectorDatabase - from automata.core.memory_store.embedding_provider import EmbeddingProvider + from automata.core.memory_store.embedding_provider import EmbeddingVectorProvider # Create instances for the database and embedding provider embedding_db = JSONEmbeddingVectorDatabase(database_filename) - embedding_provider = EmbeddingProvider() + embedding_provider = EmbeddingVectorProvider() # Create a SymbolCodeEmbeddingHandler instance code_embedding_handler = SymbolCodeEmbeddingHandler( diff --git a/automata/docs/core/symbol/symbol_embedding.rst b/automata/docs/core/symbol/symbol_embedding.rst index 4da0968e..014df60c 100644 --- a/automata/docs/core/symbol/symbol_embedding.rst +++ b/automata/docs/core/symbol/symbol_embedding.rst @@ -14,7 +14,7 @@ Overview The primary purpose of ``SymbolEmbedding`` and its derived classes is to store and manage embeddings of code symbols obtained from different sources. It contains methods to initialize the embeddings with a -``Symbol`` object, an ``embedding_source``, and a ``vector`` +``Symbol`` object, an ``input_object``, and a ``vector`` representing the actual embedding. ``SymbolEmbedding`` is the base class for more specialized embeddings diff --git a/automata/tests/conftest.py b/automata/tests/conftest.py index f686dc15..141c963a 100644 --- a/automata/tests/conftest.py +++ b/automata/tests/conftest.py @@ -1,3 +1,4 @@ +import networkx as nx import os import random from typing import Any, Set @@ -17,7 +18,7 @@ from automata.core.singletons.dependency_factory import dependency_factory from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.parser import parse_symbol -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tasks.agent_database import AutomataTaskRegistry from automata.core.tasks.environment import AutomataTaskEnvironment from automata.core.tasks.tasks import AutomataTask @@ -112,24 +113,24 @@ def mock_embedding(): def symbol_graph_mock(mocker): """Mock a SymbolGraph object for cases where we don't need to test the graph itself""" mock = mocker.MagicMock(spec=SymbolGraph) + code_subgraph_mock = mocker.MagicMock(spec=nx.DiGraph) + mock.rankable_subgraph = mocker.MagicMock() + return mock @pytest.fixture def symbol_search(mocker, symbol_graph_mock): """Creates a SymbolSearch object with Mock dependencies for testing""" - symbol_similarity_mock = mocker.MagicMock(spec=SymbolSimilarityCalculator) + symbol_similarity_mock = mocker.MagicMock(spec=EmbeddingSimilarityCalculator) symbol_similarity_mock.embedding_handler = mocker.MagicMock(spec=SymbolCodeEmbeddingHandler) symbol_rank_config_mock = mocker.MagicMock(spec=SymbolRankConfig) - code_subgraph_mock = mocker.MagicMock(spec=SymbolGraph.SubGraph) - code_subgraph_mock.parent = symbol_graph_mock - code_subgraph_mock.graph = mocker.MagicMock() + symbol_rank_config_mock.validate_config = mocker.MagicMock() return SymbolSearch( symbol_graph_mock, - symbol_similarity_mock, symbol_rank_config_mock, - code_subgraph_mock, + symbol_similarity_mock, ) diff --git a/automata/tests/regression/test_symbol_searcher_regression.py b/automata/tests/regression/test_symbol_searcher_regression.py index 9ac70b46..0e554377 100644 --- a/automata/tests/regression/test_symbol_searcher_regression.py +++ b/automata/tests/regression/test_symbol_searcher_regression.py @@ -36,12 +36,12 @@ def check_hits(expected_in_top_hits, found_top_hits): "AutomataAgentConfigBuilder", "AutomataInstance", ], - "SymbolGraph": ["SymbolGraph", "Symbol", "SubGraph", "GraphBuilder", "SymbolSearch"], + "SymbolGraph": ["SymbolGraph", "Symbol", "GraphBuilder", "SymbolSearch"], "Embedding": [ "SymbolEmbedding", "SymbolDocEmbedding", "SymbolCodeEmbedding", - "EmbeddingProvider", + "EmbeddingVectorProvider", "SymbolCodeEmbeddingHandler", "SymbolDocEmbeddingHandler", ], diff --git a/automata/tests/unit/test_symbol_embedding.py b/automata/tests/unit/test_symbol_embedding.py index df89a416..0544abae 100644 --- a/automata/tests/unit/test_symbol_embedding.py +++ b/automata/tests/unit/test_symbol_embedding.py @@ -6,9 +6,10 @@ from automata.core.symbol_embedding.base import ( JSONSymbolEmbeddingVectorDatabase, SymbolCodeEmbedding, - SymbolEmbeddingBuilder, ) +from automata.core.embedding.base import EmbeddingBuilder + def test_update_embeddings( monkeypatch, @@ -21,9 +22,9 @@ def test_update_embeddings( lambda args: "symbol_source", ) - # Mock EmbeddingProvider methods - mock_provider = Mock(SymbolEmbeddingBuilder) - # mock_provider.build_embedding_array.return_value = mock_embedding + # Mock EmbeddingVectorProvider methods + mock_provider = Mock(EmbeddingBuilder) + # mock_provider.build_embedding_vector.return_value = mock_embedding # Mock JSONSymbolEmbeddingVectorDatabase methods mock_db = MagicMock(JSONSymbolEmbeddingVectorDatabase) @@ -53,9 +54,9 @@ def test_get_embedding( mock_embedding, mock_simple_method_symbols, ): - # Mock EmbeddingProvider methods - mock_provider = Mock(SymbolEmbeddingBuilder) - # mock_provider.build_embedding_array.return_value = mock_embedding + # Mock EmbeddingVectorProvider methods + mock_provider = Mock(EmbeddingBuilder) + # mock_provider.build_embedding_vector.return_value = mock_embedding # Mock JSONSymbolEmbeddingVectorDatabase methods mock_db = MagicMock(JSONSymbolEmbeddingVectorDatabase) @@ -74,15 +75,15 @@ def test_get_embedding( def test_add_new_embedding(monkeypatch, mock_simple_method_symbols): - # Test exception in build_embedding_array function + # Test exception in build_embedding_vector function monkeypatch.setattr( "automata.core.symbol.symbol_utils.convert_to_fst_object", lambda args: "symbol_source", ) - # Mock EmbeddingProvider methods - mock_provider = Mock(SymbolEmbeddingBuilder) - # mock_provider.build_embedding_array.return_value = [1, 2, 3] + # Mock EmbeddingVectorProvider methods + mock_provider = Mock(EmbeddingBuilder) + # mock_provider.build_embedding_vector.return_value = [1, 2, 3] # Mock JSONSymbolEmbeddingVectorDatabase methods mock_db = MagicMock(JSONSymbolEmbeddingVectorDatabase) @@ -99,14 +100,14 @@ def test_add_new_embedding(monkeypatch, mock_simple_method_symbols): def test_update_embedding(monkeypatch, mock_simple_method_symbols): - # Test exception in build_embedding_array function + # Test exception in build_embedding_vector function monkeypatch.setattr( "automata.core.symbol.symbol_utils.convert_to_fst_object", lambda args: "symbol_source", ) - # Mock EmbeddingProvider methods - mock_provider = Mock(SymbolEmbeddingBuilder) + # Mock EmbeddingVectorProvider methods + mock_provider = Mock(EmbeddingBuilder) # Mock JSONSymbolEmbeddingVectorDatabase methods mock_db = MagicMock(JSONSymbolEmbeddingVectorDatabase) @@ -139,14 +140,14 @@ def test_update_embedding(monkeypatch, mock_simple_method_symbols): def test_get_embedding_exception(monkeypatch, mock_simple_method_symbols): - # Test exception in build_embedding_array function + # Test exception in build_embedding_vector function monkeypatch.setattr( "automata.core.symbol.symbol_utils.convert_to_fst_object", lambda args: "symbol_source", ) - # Mock EmbeddingProvider methods - mock_provider = Mock(SymbolEmbeddingBuilder) + # Mock EmbeddingVectorProvider methods + mock_provider = Mock(EmbeddingBuilder) mock_provider.build.side_effect = Exception("Test exception") # Mock JSONSymbolEmbeddingVectorDatabase methods diff --git a/automata/tests/unit/test_symbol_search.py b/automata/tests/unit/test_symbol_search.py index 9fdedd6b..6add35db 100644 --- a/automata/tests/unit/test_symbol_search.py +++ b/automata/tests/unit/test_symbol_search.py @@ -1,3 +1,4 @@ +import networkx as nx from unittest.mock import patch import pytest diff --git a/automata/tests/unit/test_symbol_similarity.py b/automata/tests/unit/test_symbol_similarity.py index 4cbaea05..7234b06c 100644 --- a/automata/tests/unit/test_symbol_similarity.py +++ b/automata/tests/unit/test_symbol_similarity.py @@ -2,14 +2,13 @@ import numpy as np -from automata.core.embedding.base import EmbeddingProvider +from automata.core.embedding.base import EmbeddingVectorProvider from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.symbol_embedding.base import ( JSONSymbolEmbeddingVectorDatabase, SymbolCodeEmbedding, - SymbolEmbeddingBuilder, ) -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator, EmbeddingBuilder def test_get_nearest_symbols_for_query( @@ -37,30 +36,31 @@ def test_get_nearest_symbols_for_query( embedding_db.add(embedding3) # Create an instance of the class - mock_builder = MagicMock(SymbolEmbeddingBuilder) + mock_builder = MagicMock(EmbeddingBuilder) cem = SymbolCodeEmbeddingHandler(embedding_db=embedding_db, embedding_builder=mock_builder) - mock_provider = MagicMock(EmbeddingProvider) + mock_provider = MagicMock(EmbeddingVectorProvider) embeddings = {symbol1: embedding1, symbol2: embedding2, symbol3: embedding3} cem.get_embedding = lambda x: embeddings[x] # MagicMock(return_value=embeddings[x]) - symbol_similarity = SymbolSimilarityCalculator(cem, mock_provider) + symbol_similarity = EmbeddingSimilarityCalculator(mock_provider) # Test with query_text that is most similar to symbol1 - symbol_similarity.embedding_provider.build_embedding_array.return_value = np.array( + symbol_similarity.embedding_provider.build_embedding_vector.return_value = np.array( [1, 0, 0, 0] ) - result = symbol_similarity.calculate_query_similarity_dict("symbol1") + ordered_embeddings = embedding_db.get_ordered_embeddings() + result = symbol_similarity.calculate_query_similarity_dict(ordered_embeddings, "symbol1") assert list(result.keys())[np.argmax(list(result.values()))] == symbol1 # # Test with query_text that is most similar to symbol2 - symbol_similarity.embedding_provider.build_embedding_array.return_value = np.array( + symbol_similarity.embedding_provider.build_embedding_vector.return_value = np.array( [0, 1, 0, 0] ) - result = symbol_similarity.calculate_query_similarity_dict("symbol2") + result = symbol_similarity.calculate_query_similarity_dict(ordered_embeddings, "symbol2") assert list(result.keys())[np.argmax(list(result.values()))] == symbol2 # # Test with query_text that is most similar to symbol3 - symbol_similarity.embedding_provider.build_embedding_array.return_value = np.array( + symbol_similarity.embedding_provider.build_embedding_vector.return_value = np.array( [0, 0, 1, 0] ) - result = symbol_similarity.calculate_query_similarity_dict("symbol3") + result = symbol_similarity.calculate_query_similarity_dict(ordered_embeddings, "symbol3") assert list(result.keys())[np.argmax(list(result.values()))] == symbol3 diff --git a/automata/tests/utils/factories.py b/automata/tests/utils/factories.py index d1f65aaa..dc01750e 100644 --- a/automata/tests/utils/factories.py +++ b/automata/tests/utils/factories.py @@ -10,7 +10,7 @@ from automata.core.symbol.graph import SymbolGraph from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase from automata.core.symbol_embedding.builders import SymbolCodeEmbeddingBuilder -from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.utils import get_config_fpath @@ -48,7 +48,7 @@ def symbol_search_live() -> SymbolSearch: symbol_graph = SymbolGraph(scip_path) - symbol_code_similarity = SymbolSimilarityCalculator(code_embedding_handler, embedding_provider) + symbol_code_similarity = EmbeddingSimilarityCalculator(embedding_provider) symbol_rank_config = SymbolRankConfig() symbol_graph_subgraph = symbol_graph.get_rankable_symbol_dependency_subgraph() From e2013ac73c12f7c03f7437676545c7068ffe6c1d Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 3 Jul 2023 23:06:59 -0400 Subject: [PATCH 02/14] check in progress towards integration --- automata/cli/scripts/run_code_embedding.py | 2 +- automata/cli/scripts/run_doc_embedding_l2.py | 149 ++++++++++++++---- automata/cli/scripts/run_doc_embedding_l3.py | 10 +- .../config/symbol/symbol_code_embedding.json | 2 +- .../symbol/symbol_doc_embedding_l2.json | 2 +- .../symbol/symbol_doc_embedding_l3.json | 2 +- automata/core/embedding/base.py | 5 +- .../core/experimental/search/symbol_search.py | 14 +- automata/core/services.py | 11 ++ .../core/singletons/dependency_factory.py | 15 +- automata/core/symbol/graph.py | 13 +- automata/core/symbol_embedding/base.py | 4 +- automata/core/utils.py | 37 +++-- .../symbol_similarity_calculator.rst | 2 +- .../test_symbol_searcher_regression.py | 2 +- automata/tests/unit/test_symbol_graph.py | 2 +- automata/tests/utils/factories.py | 14 +- 17 files changed, 188 insertions(+), 98 deletions(-) create mode 100644 automata/core/services.py diff --git a/automata/cli/scripts/run_code_embedding.py b/automata/cli/scripts/run_code_embedding.py index 46df45ef..887be35d 100644 --- a/automata/cli/scripts/run_code_embedding.py +++ b/automata/cli/scripts/run_code_embedding.py @@ -34,7 +34,7 @@ def main(*args, **kwargs) -> str: symbol_graph = SymbolGraph(scip_path) - all_defined_symbols = symbol_graph.get_all_available_symbols() + all_defined_symbols = symbol_graph.get_all_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) embedding_db = JSONSymbolEmbeddingVectorDatabase(embedding_path) diff --git a/automata/cli/scripts/run_doc_embedding_l2.py b/automata/cli/scripts/run_doc_embedding_l2.py index 74b0dc98..4f2cd0f6 100644 --- a/automata/cli/scripts/run_doc_embedding_l2.py +++ b/automata/cli/scripts/run_doc_embedding_l2.py @@ -31,53 +31,55 @@ logger = logging.getLogger(__name__) -def main(*args, **kwargs) -> str: - """ - Update the symbol code embedding based on the specified SCIP index file. - """ - - py_module_loader.initialize() - - logger.info("Running....") - scip_path = os.path.join( - get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") - ) +def setup(**kwargs): + embedding_provider = OpenAIEmbeddingProvider() + chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) + embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) code_embedding_fpath = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" ) code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) - embedding_provider = OpenAIEmbeddingProvider() - embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) - code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) + code_embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) + code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, code_embedding_builder) - # TODO - Add option for the user to modify l2 embedding path in commands.py - embedding_path_l2 = os.path.join( + doc_embedding_path_l2 = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("symbol_doc_embedding_l2_fpath", "symbol_doc_embedding_l2.json"), ) - embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(embedding_path_l2) - - symbol_graph = SymbolGraph(scip_path) - - symbol_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) + doc_embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(doc_embedding_path_l2) - symbol_rank_config = SymbolRankConfig() - symbol_graph_subgraph = symbol_graph.rankable_subgraph - symbol_search = SymbolSearch( - symbol_graph, symbol_similarity_calculator, symbol_rank_config, symbol_graph_subgraph + scip_path = os.path.join( + get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") ) + symbol_graph = SymbolGraph(scip_path) + symbol_search = SymbolSearch(symbol_graph, SymbolRankConfig(), embedding_similarity_calculator) py_context_retriever = PyContextRetriever(symbol_graph, PyContextRetrieverConfig()) - chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( embedding_provider, chat_provider, symbol_search, py_context_retriever ) - embedding_handler = SymbolDocEmbeddingHandler(embedding_db_l2, symbol_doc_embedding_builder) + embedding_handler = SymbolDocEmbeddingHandler( + doc_embedding_db_l2, symbol_doc_embedding_builder + ) + + # sync the symbol graph with the code embedding + graph_symbols = symbol_graph.get_all_supported_symbols() + embedding_symbols = code_embedding_handler.get_all_supported_symbols() + supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) + filter_graph_by_symbols(symbol_graph.rankable_subgraph, supported_symbols) + + return { + "embedding_handler": embedding_handler, + "doc_embedding_db_l2": doc_embedding_db_l2, + "symbol_graph": symbol_graph, + } - all_defined_symbols = symbol_graph.get_all_available_symbols() + +def process_embeddings(embedding_handler, doc_embedding_db_l2, symbol_graph): + all_defined_symbols = symbol_graph.get_all_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) for symbol in tqdm(filtered_symbols): @@ -85,15 +87,96 @@ def main(*args, **kwargs) -> str: try: logger.info(f"Attempting update for symbol {symbol}...") embedding_handler.process_embedding(symbol) - embedding_db_l2.save() + doc_embedding_db_l2.save() except Exception as e: logger.error(f"Failed to update embedding for symbol {symbol}: {e}") + +def discard_stale_symbols(embedding_handler, doc_embedding_db_l2, symbol_graph): + all_defined_symbols = symbol_graph.get_all_supported_symbols() + filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) + for symbol in embedding_handler.get_all_supported_symbols(): if symbol not in filtered_symbols: logger.info(f"Discarding stale symbol {symbol}...") - embedding_db_l2.discard(symbol.dotpath) - embedding_db_l2.save() + doc_embedding_db_l2.discard(symbol.dotpath) + doc_embedding_db_l2.save() + + +def main(*args, **kwargs) -> str: + py_module_loader.initialize() + + logger.info("Running....") + + setup_data = setup(**kwargs) + + process_embeddings( + setup_data["embedding_handler"], + setup_data["doc_embedding_db_l2"], + setup_data["symbol_graph"], + ) + - logger.info("Complete.") - return "Success" +# def main(*args, **kwargs) -> str: +# """ +# Update the symbol code embedding based on the specified SCIP index file. +# """ + +# py_module_loader.initialize() + +# logger.info("Running....") + +# embedding_provider = OpenAIEmbeddingProvider() +# chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) +# embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) + +# code_embedding_fpath = os.path.join( +# get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" +# ) +# code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) +# code_embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) +# code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, code_embedding_builder) + +# # TODO - Add option for the user to modify l2 embedding path in commands.py +# doc_embedding_path_l2 = os.path.join( +# get_config_fpath(), +# ConfigCategory.SYMBOL.value, +# kwargs.get("symbol_doc_embedding_l2_fpath", "symbol_doc_embedding_l2.json"), +# ) +# doc_embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(doc_embedding_path_l2) + +# scip_path = os.path.join( +# get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") +# ) +# symbol_graph = SymbolGraph(scip_path) +# symbol_search = SymbolSearch(symbol_graph, SymbolRankConfig(), embedding_similarity_calculator) +# py_context_retriever = PyContextRetriever(symbol_graph, PyContextRetrieverConfig()) + +# symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( +# embedding_provider, chat_provider, symbol_search, py_context_retriever +# ) + +# embedding_handler = SymbolDocEmbeddingHandler( +# doc_embedding_db_l2, symbol_doc_embedding_builder +# ) + +# all_defined_symbols = symbol_graph.get_all_supported_symbols() +# filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) + +# for symbol in tqdm(filtered_symbols): +# if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: +# try: +# logger.info(f"Attempting update for symbol {symbol}...") +# embedding_handler.process_embedding(symbol) +# doc_embedding_db_l2.save() +# except Exception as e: +# logger.error(f"Failed to update embedding for symbol {symbol}: {e}") + +# for symbol in embedding_handler.get_all_supported_symbols(): +# if symbol not in filtered_symbols: +# logger.info(f"Discarding stale symbol {symbol}...") +# doc_embedding_db_l2.discard(symbol.dotpath) +# doc_embedding_db_l2.save() + +# logger.info("Complete.") +# return "Success" diff --git a/automata/cli/scripts/run_doc_embedding_l3.py b/automata/cli/scripts/run_doc_embedding_l3.py index d124e8ca..5a103dcd 100644 --- a/automata/cli/scripts/run_doc_embedding_l3.py +++ b/automata/cli/scripts/run_doc_embedding_l3.py @@ -68,13 +68,11 @@ def main(*args, **kwargs) -> str: embedding_db_l3 = JSONSymbolEmbeddingVectorDatabase(embedding_path_l3) - symbol_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) + embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) symbol_rank_config = SymbolRankConfig() - symbol_graph_subgraph = symbol_graph.get_rankable_symbol_dependency_subgraph() - symbol_search = SymbolSearch( - symbol_graph, symbol_similarity_calculator, symbol_rank_config, symbol_graph_subgraph - ) + symbol_graph_subgraph = symbol_graph.rankable_subgraph + symbol_search = SymbolSearch(symbol_graph, symbol_rank_config, embedding_similarity_calculator) py_context_retriever = PyContextRetriever( symbol_graph, PyContextRetrieverConfig(), embedding_db_l2 ) @@ -86,7 +84,7 @@ def main(*args, **kwargs) -> str: embedding_handler = SymbolDocEmbeddingHandler(embedding_db_l3, symbol_doc_embedding_builder) - all_defined_symbols = symbol_graph.get_all_available_symbols() + all_defined_symbols = symbol_graph.get_all_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) for symbol in tqdm(filtered_symbols): if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: diff --git a/automata/config/symbol/symbol_code_embedding.json b/automata/config/symbol/symbol_code_embedding.json index 7f7d8ede..ef21fa44 100644 --- a/automata/config/symbol/symbol_code_embedding.json +++ b/automata/config/symbol/symbol_code_embedding.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9f371a01a82fe9ba48d04264444cb36c9089ca2188d12b92e09b8b60f18a9a3 +oid sha256:e0c11c470645242ee15405528833d5039df534e2cecb83ec0fb3ba2a5bb98953 size 7847968 diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index b9f342bd..50194054 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:322f86e95579a3eb432dafa27f18a954b6e875d3a2fa806df3e9092da87a4edc +oid sha256:376ad951f4b69a1e38b02df841816852c20ce412bd91e8d2a932147f69583d22 size 2355028 diff --git a/automata/config/symbol/symbol_doc_embedding_l3.json b/automata/config/symbol/symbol_doc_embedding_l3.json index 3414fa73..a310c2e5 100644 --- a/automata/config/symbol/symbol_doc_embedding_l3.json +++ b/automata/config/symbol/symbol_doc_embedding_l3.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:169a981b59f193b503e986ff32142fb0af223e83c11068068daf263d1cfa2df4 +oid sha256:be558f5c7635eceb99efd771f2c47030567271f5d6bc42fb9a461c233bd7fc4d size 2590718 diff --git a/automata/core/embedding/base.py b/automata/core/embedding/base.py index 8879cbcf..329914f8 100644 --- a/automata/core/embedding/base.py +++ b/automata/core/embedding/base.py @@ -81,9 +81,6 @@ def process_embedding(self, symbol: Symbol) -> None: """An abstract method to process the embedding for a symbol""" pass - def get_all_supported_symbols(self) -> List[Symbol]: - return [embedding.symbol for embedding in self.embedding_db.get_ordered_embeddings()] - class EmbeddingSimilarityCalculator: def __init__( @@ -106,7 +103,7 @@ def calculate_query_similarity_dict( query_embedding_array = self.embedding_provider.build_embedding_vector(query_text) # Compute the similarity of the query to all symbols similarity_scores = self._calculate_embedding_similarity( - [ele.vector for ele in ordered_embeddings], query_embedding_array + np.array([ele.vector for ele in ordered_embeddings]), query_embedding_array ) similarity_dict = { diff --git a/automata/core/experimental/search/symbol_search.py b/automata/core/experimental/search/symbol_search.py index a601333d..56a3ea6b 100644 --- a/automata/core/experimental/search/symbol_search.py +++ b/automata/core/experimental/search/symbol_search.py @@ -25,7 +25,7 @@ def __init__( self, symbol_graph: SymbolGraph, symbol_rank_config: SymbolRankConfig, - symbol_similarity_calculator: EmbeddingSimilarityCalculator, + embedding_similarity_calculator: EmbeddingSimilarityCalculator, ) -> None: """ Raises: @@ -34,12 +34,12 @@ def __init__( """ self.symbol_graph = symbol_graph - self.symbol_similarity_calculator = symbol_similarity_calculator + self.embedding_similarity_calculator = embedding_similarity_calculator self.symbol_rank = SymbolRank(symbol_graph.rankable_subgraph, config=symbol_rank_config) def symbol_rank_search(self, query: str) -> SymbolRankResult: """Fetches the list of the SymbolRank similar symbols ordered by rank.""" - query_vec = self.symbol_similarity_calculator.calculate_query_similarity_dict(query) + query_vec = self.embedding_similarity_calculator.calculate_query_similarity_dict(query) transformed_query_vec = SymbolSearch.transform_dict_values( query_vec, SymbolSearch.shifted_z_score_powered ) @@ -102,14 +102,6 @@ def _find_pattern_in_modules(self, pattern: str) -> Dict[str, List[int]]: matches[module_path] = line_numbers return matches - @staticmethod - def filter_graph(graph: nx.DiGraph, available_symbols: Set[Symbol]) -> None: - """Filters a graph to only contain nodes that are in the available_symbols set.""" - graph_nodes = deepcopy(graph.nodes()) - for symbol in graph_nodes: - if symbol not in available_symbols: - graph.remove_node(symbol) - @staticmethod def shifted_z_score_powered( values: Union[List[float], np.ndarray], power: int = 4 diff --git a/automata/core/services.py b/automata/core/services.py new file mode 100644 index 00000000..67382c3d --- /dev/null +++ b/automata/core/services.py @@ -0,0 +1,11 @@ +from automata.core.embedding.base import EmbeddingHandler +from automata.core.symbol.graph import SymbolGraph +from automata.core.utils import filter_graph_by_symbols + + +def synchronize_graph_and_handler(symbol_graph: SymbolGraph, embedding_handler: EmbeddingHandler): + graph_symbols = symbol_graph.get_all_supported_symbols() + embedding_symbols = embedding_handler.get_all_supported_symbols() + supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) + + filter_graph_by_symbols(symbol_graph.rankable_subgraph, supported_symbols) diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index b8825999..1d70693f 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -164,14 +164,12 @@ def create_symbol_search(self) -> SymbolSearch: symbol_rank_config (SymbolRankConfig()) """ symbol_graph = self.get("symbol_graph") - symbol_code_similarity = self.get("symbol_code_similarity") symbol_rank_config = self.overrides.get("symbol_rank_config", SymbolRankConfig()) - symbol_graph_subgraph = self.get("subgraph") + embedding_similarity_calculator = self.get("embedding_similarity_calculator") return SymbolSearch( symbol_graph, - symbol_code_similarity, symbol_rank_config, - symbol_graph_subgraph, + embedding_similarity_calculator, ) @lru_cache() @@ -186,6 +184,15 @@ def create_py_context_retriever(self) -> PyContextRetriever: ) return PyContextRetriever(symbol_graph, py_context_retriever_config) + @lru_cache() + def create_symbol_similarity_calculator(self) -> EmbeddingSimilarityCalculator: + """ + Associated Keyword Args: + embedding_provider (OpenAIEmbedding()) + """ + embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) + return EmbeddingSimilarityCalculator(embedding_provider) + @lru_cache() def create_py_reader(self) -> PyReader: return PyReader() diff --git a/automata/core/symbol/graph.py b/automata/core/symbol/graph.py index bfa37310..3274bcf8 100644 --- a/automata/core/symbol/graph.py +++ b/automata/core/symbol/graph.py @@ -24,6 +24,8 @@ convert_to_fst_object, get_rankable_symbols, ) +from automata.core.embedding.base import EmbeddingHandler +from automata.core.utils import filter_graph_by_symbols logger = logging.getLogger(__name__) @@ -310,7 +312,7 @@ def get_all_files(self) -> List[SymbolFile]: if data.get("label") == "file" ] - def get_all_available_symbols(self) -> List[Symbol]: + def get_all_supported_symbols(self) -> List[Symbol]: return [ node for node, data in self._graph.nodes(data=True) if data.get("label") == "symbol" ] @@ -441,7 +443,7 @@ def _pre_compute_rankable_bounding_boxes(self) -> None: return logger.info("Pre-computing bounding boxes for all rankable symbols") - filtered_symbols = get_rankable_symbols(self.get_all_available_symbols()) + filtered_symbols = get_rankable_symbols(self.get_all_supported_symbols()) from functools import partial # prepare loader_args here (replace this comment with actual code) @@ -484,8 +486,8 @@ def __init__(self, index_path: str, build_caller_relationships: bool = False) -> def get_all_files(self) -> List[SymbolFile]: return self.navigator.get_all_files() - def get_all_available_symbols(self) -> List[Symbol]: - return list(set(self.navigator.get_all_available_symbols())) + def get_all_supported_symbols(self) -> List[Symbol]: + return list(set(self.navigator.get_all_supported_symbols())) def get_symbol_dependencies(self, symbol: Symbol) -> Set[Symbol]: return self.navigator.get_symbol_dependencies(symbol) @@ -518,7 +520,6 @@ def get_references_to_symbol(self, symbol: Symbol) -> Dict[str, List[SymbolRefer def rankable_subgraph(self) -> nx.DiGraph: return self._build_rankable_subgraph() - @lru_cache(maxsize=None) def _build_rankable_subgraph( self, flow_rank="bidirectional", path_filter: Optional[str] = None ) -> nx.DiGraph: @@ -530,7 +531,7 @@ def _build_rankable_subgraph( """ G = nx.DiGraph() - filtered_symbols = get_rankable_symbols(self.get_all_available_symbols()) + filtered_symbols = get_rankable_symbols(self.get_all_supported_symbols()) if path_filter is not None: filtered_symbols = [ diff --git a/automata/core/symbol_embedding/base.py b/automata/core/symbol_embedding/base.py index fb340ccd..cc6d85b0 100644 --- a/automata/core/symbol_embedding/base.py +++ b/automata/core/symbol_embedding/base.py @@ -87,6 +87,7 @@ def __init__( """An abstract constructor for SymbolEmbeddingHandler""" self.embedding_db = embedding_db self.embedding_builder = embedding_builder + self.supported_symbols = [ele.symbol for ele in self.embedding_db.get_ordered_embeddings()] @abc.abstractmethod def get_embedding(self, symbol: Symbol) -> Any: @@ -97,6 +98,3 @@ def get_embedding(self, symbol: Symbol) -> Any: def process_embedding(self, symbol: Symbol) -> None: """An abstract method to process the embedding for a symbol""" pass - - def get_all_supported_symbols(self) -> List[Symbol]: - return [embedding.symbol for embedding in self.embedding_db.get_ordered_embeddings()] diff --git a/automata/core/utils.py b/automata/core/utils.py index 2e3b9c07..8a0c00e4 100644 --- a/automata/core/utils.py +++ b/automata/core/utils.py @@ -1,7 +1,10 @@ +from copy import deepcopy +import networkx as nx import json import logging import os -from typing import Any, Dict, List, Optional, TypedDict, Union, cast +from typing import Any, Dict, List, Optional, TypedDict, Union, cast, Set +from automata.core.symbol.base import Symbol import colorlog import openai @@ -50,6 +53,26 @@ def load_config( return json.loads(samples_json_string, object_hook=custom_decoder) +def format_text(format_variables: Dict[str, str], input_text: str) -> str: + """Format expected strings into the config.""" + for arg in format_variables: + input_text = input_text.replace(f"{{{arg}}}", format_variables[arg]) + return input_text + + +def convert_kebab_to_snake(s: str) -> str: + """Convert a kebab-case string to snake_case.""" + return s.replace("-", "_") + + +def filter_graph_by_symbols(graph: nx.DiGraph, supported_symbols: Set[Symbol]) -> None: + """Filters a graph to only contain nodes that are in the supported_symbols set.""" + graph_nodes = deepcopy(graph.nodes()) + for symbol in graph_nodes: + if symbol not in supported_symbols: + graph.remove_node(symbol) + + class HandlerDict(TypedDict): """A dictionary representing a logging handler""" @@ -120,15 +143,3 @@ def get_logging_config( logging_config["root"]["handlers"].append("file") # add "file" to handlers return cast(dict[str, Any], logging_config) - - -def format_text(format_variables: Dict[str, str], input_text: str) -> str: - """Format expected strings into the config.""" - for arg in format_variables: - input_text = input_text.replace(f"{{{arg}}}", format_variables[arg]) - return input_text - - -def convert_kebab_to_snake(s: str) -> str: - """Convert a kebab-case string to snake_case.""" - return s.replace("-", "_") diff --git a/automata/docs/core/embedding/symbol_similarity_calculator.rst b/automata/docs/core/embedding/symbol_similarity_calculator.rst index f2c82caa..fe0a33fd 100644 --- a/automata/docs/core/embedding/symbol_similarity_calculator.rst +++ b/automata/docs/core/embedding/symbol_similarity_calculator.rst @@ -78,7 +78,7 @@ embeddings only. As such, it is limited by the quality and richness of the symbol embeddings. In particular, embeddings that do not capture the semantical nature of symbols will not produce meaningful similarities. Furthermore, the similarity calculation is conducted in a complete -symbols space, unless ``available_symbols`` is set to constrain it. +symbols space, unless ``supported_symbols`` is set to constrain it. High-dimensional embeddings or a large number of symbols might thus impose scalability issues. diff --git a/automata/tests/regression/test_symbol_searcher_regression.py b/automata/tests/regression/test_symbol_searcher_regression.py index 0e554377..50265a2b 100644 --- a/automata/tests/regression/test_symbol_searcher_regression.py +++ b/automata/tests/regression/test_symbol_searcher_regression.py @@ -112,7 +112,7 @@ def test_exact_search(symbol_search_live): # noqa : F811 @pytest.mark.regression def test_source_code_retrieval(symbol_search_live): # noqa : F811 - symbols = symbol_search_live.symbol_graph.get_all_available_symbols() + symbols = symbol_search_live.symbol_graph.get_all_supported_symbols() for search in SOURCE_CODE_HITS: symbol = [symbol for symbol in symbols if search[:-1] == symbol.descriptors[-1].name][0] diff --git a/automata/tests/unit/test_symbol_graph.py b/automata/tests/unit/test_symbol_graph.py index a6280654..ffad5fe0 100644 --- a/automata/tests/unit/test_symbol_graph.py +++ b/automata/tests/unit/test_symbol_graph.py @@ -10,6 +10,6 @@ def test_get_all_files(symbol_graph_static_test): # noqa: F811 def test_get_all_symbols(symbol_graph_static_test): # noqa: F811 - graph_symbols = symbol_graph_static_test.get_all_available_symbols() + graph_symbols = symbol_graph_static_test.get_all_supported_symbols() assert isinstance(graph_symbols, list) assert all(isinstance(s, Symbol) for s in graph_symbols) diff --git a/automata/tests/utils/factories.py b/automata/tests/utils/factories.py index dc01750e..db674de5 100644 --- a/automata/tests/utils/factories.py +++ b/automata/tests/utils/factories.py @@ -26,8 +26,7 @@ def symbol_graph_static_test() -> SymbolGraph: # assuming the path to a valid index protobuf file, you should replace it with your own file path file_dir = os.path.dirname(os.path.abspath(__file__)) index_path = os.path.join(file_dir, "..", "index.scip") - graph = SymbolGraph(index_path) - return graph + return SymbolGraph(index_path) @pytest.fixture @@ -41,19 +40,12 @@ def symbol_search_live() -> SymbolSearch: code_embedding_fpath = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" ) - code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) embedding_provider = OpenAIEmbeddingProvider() - embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) - code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) symbol_graph = SymbolGraph(scip_path) - symbol_code_similarity = EmbeddingSimilarityCalculator(embedding_provider) + embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) symbol_rank_config = SymbolRankConfig() - symbol_graph_subgraph = symbol_graph.get_rankable_symbol_dependency_subgraph() - symbol_search = SymbolSearch( - symbol_graph, symbol_code_similarity, symbol_rank_config, symbol_graph_subgraph - ) - return symbol_search + return SymbolSearch(symbol_graph, symbol_rank_config, embedding_similarity_calculator) From 11c30aaa4bd930d105b4b2bef4b1d2a06389d413 Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 11:09:30 -0400 Subject: [PATCH 03/14] get tests running, add synchronizer --- README.md | 2 +- automata/cli/scripts/run_agent.py | 2 +- automata/cli/scripts/run_code_embedding.py | 2 +- automata/cli/scripts/run_doc_embedding_l2.py | 4 +- automata/cli/scripts/run_doc_embedding_l3.py | 4 +- .../symbol/symbol_doc_embedding_l2.json | 4 +- .../symbol/symbol_doc_embedding_l3.json | 4 +- automata/core/agent/agent.py | 4 +- automata/core/agent/providers.py | 6 +- automata/core/code_handling/py/reader.py | 12 +-- automata/core/code_handling/py/writer.py | 2 +- .../symbol_synchronization.py | 55 ++++++++++++ .../core/experimental/search/symbol_search.py | 6 +- automata/core/navigation/py/dot_path_map.py | 80 ++++++++++++++++++ .../core/navigation/py/navigation_utils.py | 4 +- automata/core/services.py | 11 --- .../core/singletons/dependency_factory.py | 4 +- .../{module_loader.py => py_module_loader.py} | 84 +------------------ .../toolkit_registries.py} | 14 ++-- automata/core/symbol/base.py | 32 +++---- automata/core/symbol/graph.py | 46 +++++----- automata/core/symbol/symbol_utils.py | 2 +- automata/core/symbol_embedding/base.py | 14 +++- .../core/tools/builders/context_oracle.py | 10 +-- automata/core/tools/builders/py_reader.py | 13 ++- automata/core/tools/builders/py_writer.py | 10 +-- automata/core/tools/builders/symbol_search.py | 10 +-- automata/core/tools/factory.py | 2 +- automata/core/utils.py | 14 +++- .../core/agent/open_ai_agent_tool_builder.rst | 20 ++--- .../core/agent/tool/agent_tool_factory.rst | 2 +- ...ta_open_ai_agent_tool_builder_registry.rst | 8 +- .../context_oracle_open_ai_tool_builder.rst | 10 +-- .../tool/builder/context_oracle_tool.rst | 2 +- .../builder/context_oracle_tool_builder.rst | 4 +- .../py_reader_open_ai_tool_builder.rst | 4 +- .../tool/builder/py_reader_tool_builder.rst | 4 +- .../py_writer_open_ai_tool_builder.rst | 6 +- .../tool/builder/py_writer_tool_builder.rst | 8 +- .../symbol_search_open_ai_tool_builder.rst | 4 +- .../builder/symbol_search_tool_builder.rst | 2 +- .../docs/core/base/agent_tool_builder.rst | 18 ++-- automata/docs/core/base/singleton.rst | 4 +- automata/docs/core/base/tool.rst | 4 +- automata/docs/core/base/tool/config.rst | 2 +- .../docs/core/coding/py/py_module_loader.rst | 2 +- automata/docs/core/coding/py/py_reader.rst | 2 +- .../coding/py/writer/module_not_found.rst | 2 +- .../providers/open_ai_agent_tool_builder.rst | 22 ++--- automata/docs/core/root_dict.rst | 2 +- automata/docs/core/symbol/graph/sub_graph.rst | 2 +- automata/docs/core/symbol/graph_processor.rst | 2 +- automata/tests/conftest.py | 2 +- automata/tests/unit/test_py_reader.py | 2 +- automata/tests/unit/test_py_reader_tool.py | 2 +- automata/tests/unit/test_py_writer.py | 2 +- automata/tests/unit/test_py_writer_tool.py | 2 +- automata/tests/unit/test_symbol_graph.py | 45 ++++++++-- automata/tests/unit/test_synchronizer.py | 63 ++++++++++++++ automata/tests/unit/test_task_executor.py | 2 +- 60 files changed, 437 insertions(+), 276 deletions(-) create mode 100644 automata/core/context_providers/symbol_synchronization.py create mode 100644 automata/core/navigation/py/dot_path_map.py delete mode 100644 automata/core/services.py rename automata/core/singletons/{module_loader.py => py_module_loader.py} (68%) rename automata/core/{tools/registries.py => singletons/toolkit_registries.py} (75%) create mode 100644 automata/tests/unit/test_synchronizer.py diff --git a/README.md b/README.md index 9f69b06f..6ea9df8a 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder from automata.core.agent.providers import OpenAIAutomataAgent from automata.core.tools.tool_utils import AgentToolFactory from automata.core.singletons.dependency_factory import dependency_factory -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader logger = logging.getLogger(__name__) diff --git a/automata/cli/scripts/run_agent.py b/automata/cli/scripts/run_agent.py index 6409fc69..a38304fc 100644 --- a/automata/cli/scripts/run_agent.py +++ b/automata/cli/scripts/run_agent.py @@ -7,7 +7,7 @@ from automata.core.agent.providers import OpenAIAutomataAgent from automata.core.github_management.client import GitHubClient from automata.core.singletons.dependency_factory import dependency_factory -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.tools.factory import AgentToolFactory logger = logging.getLogger(__name__) diff --git a/automata/cli/scripts/run_code_embedding.py b/automata/cli/scripts/run_code_embedding.py index 887be35d..9d21cc2a 100644 --- a/automata/cli/scripts/run_code_embedding.py +++ b/automata/cli/scripts/run_code_embedding.py @@ -6,7 +6,7 @@ from automata.config.base import ConfigCategory from automata.core.llm.providers.openai import OpenAIEmbeddingProvider from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.symbol_utils import get_rankable_symbols from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase diff --git a/automata/cli/scripts/run_doc_embedding_l2.py b/automata/cli/scripts/run_doc_embedding_l2.py index 4f2cd0f6..04225d0e 100644 --- a/automata/cli/scripts/run_doc_embedding_l2.py +++ b/automata/cli/scripts/run_doc_embedding_l2.py @@ -16,7 +16,7 @@ PyContextRetriever, PyContextRetrieverConfig, ) -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import SymbolDescriptor from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.symbol_utils import get_rankable_symbols @@ -69,7 +69,7 @@ def setup(**kwargs): graph_symbols = symbol_graph.get_all_supported_symbols() embedding_symbols = code_embedding_handler.get_all_supported_symbols() supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) - filter_graph_by_symbols(symbol_graph.rankable_subgraph, supported_symbols) + filter_digraph_by_symbols(symbol_graph.default_rankable_subgraph, supported_symbols) return { "embedding_handler": embedding_handler, diff --git a/automata/cli/scripts/run_doc_embedding_l3.py b/automata/cli/scripts/run_doc_embedding_l3.py index 5a103dcd..12fe986f 100644 --- a/automata/cli/scripts/run_doc_embedding_l3.py +++ b/automata/cli/scripts/run_doc_embedding_l3.py @@ -16,7 +16,7 @@ PyContextRetriever, PyContextRetrieverConfig, ) -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import SymbolDescriptor from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.symbol_utils import get_rankable_symbols @@ -71,7 +71,7 @@ def main(*args, **kwargs) -> str: embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) symbol_rank_config = SymbolRankConfig() - symbol_graph_subgraph = symbol_graph.rankable_subgraph + symbol_graph_subgraph = symbol_graph.default_rankable_subgraph symbol_search = SymbolSearch(symbol_graph, symbol_rank_config, embedding_similarity_calculator) py_context_retriever = PyContextRetriever( symbol_graph, PyContextRetrieverConfig(), embedding_db_l2 diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index 50194054..ec8906ef 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:376ad951f4b69a1e38b02df841816852c20ce412bd91e8d2a932147f69583d22 -size 2355028 +oid sha256:4446d566b8532936a1977940165198d2c5390ab33fb475b56ee300173e5d1a5a +size 2355179 diff --git a/automata/config/symbol/symbol_doc_embedding_l3.json b/automata/config/symbol/symbol_doc_embedding_l3.json index a310c2e5..a3155813 100644 --- a/automata/config/symbol/symbol_doc_embedding_l3.json +++ b/automata/config/symbol/symbol_doc_embedding_l3.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be558f5c7635eceb99efd771f2c47030567271f5d6bc42fb9a461c233bd7fc4d -size 2590718 +oid sha256:a9f558a0b3507afaae64c9585bfaf67ea43d735c895ca0d9d8a7bc2344eb4946 +size 2590963 diff --git a/automata/core/agent/agent.py b/automata/core/agent/agent.py index f936d003..94864c72 100644 --- a/automata/core/agent/agent.py +++ b/automata/core/agent/agent.py @@ -77,10 +77,10 @@ class AgentToolkitNames(Enum): CONTEXT_ORACLE = "context-oracle" -class AgentToolkit(ABC): +class AgentToolkitProvider(ABC): """ - AgentToolkit is an abstract class for building tools for providers. + AgentToolkitProvider is an abstract class for building tools for providers. Each builder builds the tools associated with a specific AgentToolkitNames. """ diff --git a/automata/core/agent/providers.py b/automata/core/agent/providers.py index f1b64d7d..8c3e7b72 100644 --- a/automata/core/agent/providers.py +++ b/automata/core/agent/providers.py @@ -4,7 +4,7 @@ from automata.config.base import ConfigCategory from automata.config.openai_agent import AutomataOpenAIAgentConfig -from automata.core.agent.agent import Agent, AgentToolkit +from automata.core.agent.agent import Agent, AgentToolkitProvider from automata.core.agent.error import ( AgentDatabaseError, AgentGeneralError, @@ -262,8 +262,8 @@ def terminate(result: str): ) -class OpenAIAgentToolkit(AgentToolkit, ABC): - """OpenAIAgentToolkit is an abstract class for building tools for providers.""" +class OpenAIAgentToolkitProvider(AgentToolkitProvider, ABC): + """OpenAIAgentToolkitProvider is an abstract class for building OpenAI agent tools.""" @abstractmethod def build_for_open_ai(self) -> List[OpenAITool]: diff --git a/automata/core/code_handling/py/reader.py b/automata/core/code_handling/py/reader.py index 60f33cdc..bab8b531 100644 --- a/automata/core/code_handling/py/reader.py +++ b/automata/core/code_handling/py/reader.py @@ -6,7 +6,7 @@ from redbaron import ClassNode, DefNode, Node, RedBaron, StringNode from automata.core.navigation.py.navigation_utils import find_syntax_tree_node -from automata.core.singletons.module_loader import NO_RESULT_FOUND_STR, py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader logger = logging.getLogger(__name__) FSTNode = Union[Node, RedBaron] @@ -15,6 +15,8 @@ class PyReader: """Code retriever for fetching python code""" + NO_RESULT_FOUND_STR = "No Result Found." + def __init__(self) -> None: pass @@ -37,7 +39,7 @@ def get_source_code(self, module_dotpath: str, object_path: Optional[str] = None if result: return result.dumps() - return NO_RESULT_FOUND_STR + return PyReader.NO_RESULT_FOUND_STR def get_docstring(self, module_dotpath: str, object_path: Optional[str]) -> str: """ @@ -55,7 +57,7 @@ def get_docstring(self, module_dotpath: str, object_path: Optional[str]) -> str: module = py_module_loader.fetch_module(module_dotpath) if module: return PyReader.get_docstring_from_node(find_syntax_tree_node(module, object_path)) - return NO_RESULT_FOUND_STR + return PyReader.NO_RESULT_FOUND_STR def get_source_code_without_docstrings( self, module_dotpath: str, object_path: Optional[str] @@ -101,7 +103,7 @@ def _remove_docstrings(node: FSTNode) -> None: if result: _remove_docstrings(result) return result.dumps() - return NO_RESULT_FOUND_STR + return PyReader.NO_RESULT_FOUND_STR @staticmethod def get_docstring_from_node(node: Optional[FSTNode]) -> str: @@ -112,7 +114,7 @@ def get_docstring_from_node(node: Optional[FSTNode]) -> str: node: The FST node to get the docstring from """ if not node: - return NO_RESULT_FOUND_STR + return PyReader.NO_RESULT_FOUND_STR if isinstance(node, (ClassNode, DefNode, RedBaron)): filtered_nodes = node.filtered() # get rid of extra whitespace diff --git a/automata/core/code_handling/py/writer.py b/automata/core/code_handling/py/writer.py index 717008c1..2cf63ae1 100644 --- a/automata/core/code_handling/py/writer.py +++ b/automata/core/code_handling/py/writer.py @@ -16,7 +16,7 @@ find_import_syntax_tree_nodes, find_syntax_tree_node, ) -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import Symbol from automata.core.symbol_embedding.base import SymbolDocEmbedding diff --git a/automata/core/context_providers/symbol_synchronization.py b/automata/core/context_providers/symbol_synchronization.py new file mode 100644 index 00000000..28852dfd --- /dev/null +++ b/automata/core/context_providers/symbol_synchronization.py @@ -0,0 +1,55 @@ +from automata.core.symbol.base import Symbol, ISymbolProvider +from typing import List, Type, Set + + +class SymbolProviderRegistry: + _providers: Set[ISymbolProvider] = set([]) + supported_symbols: List[Symbol] = [] + + @staticmethod + def register_provider(provider: ISymbolProvider): + provider.set_synchronized(False) + SymbolProviderRegistry._providers.add(provider) + return provider + + @staticmethod + def synchronize(): + all_symbols = [ + set(provider._get_all_supported_symbols()) + for provider in SymbolProviderRegistry._providers + ] + supported_symbols = set.intersection(*all_symbols) + for provider in SymbolProviderRegistry._providers: + provider.filter_symbols(supported_symbols) + provider.set_synchronized(True) + + SymbolProviderRegistry.supported_symbols = list(supported_symbols) + + if not SymbolProviderRegistry.supported_symbols: + raise RuntimeError("No symbols are supported by any symbol provider") + + @staticmethod + def get_all_supported_symbols(): + if not SymbolProviderRegistry.supported_symbols: + SymbolProviderRegistry.synchronize() + return SymbolProviderRegistry.supported_symbols + + +class SymbolProviderSynchronizationContext: + def __init__(self): + self._was_synchronized = False + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + if not self._was_synchronized: + raise RuntimeError("Must synchronize symbol providers in synchronization context") + + def register_provider(self, provider: ISymbolProvider): + SymbolProviderRegistry.register_provider(provider) + self._was_synchronized = False + + def synchronize(self): + SymbolProviderRegistry.synchronize() + self._was_synchronized = True diff --git a/automata/core/experimental/search/symbol_search.py b/automata/core/experimental/search/symbol_search.py index 56a3ea6b..b437bc69 100644 --- a/automata/core/experimental/search/symbol_search.py +++ b/automata/core/experimental/search/symbol_search.py @@ -5,7 +5,7 @@ import numpy as np from automata.core.experimental.search.rank import SymbolRank, SymbolRankConfig -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import Symbol, SymbolReference from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.parser import parse_symbol @@ -35,7 +35,9 @@ def __init__( self.symbol_graph = symbol_graph self.embedding_similarity_calculator = embedding_similarity_calculator - self.symbol_rank = SymbolRank(symbol_graph.rankable_subgraph, config=symbol_rank_config) + self.symbol_rank = SymbolRank( + symbol_graph.default_rankable_subgraph, config=symbol_rank_config + ) def symbol_rank_search(self, query: str) -> SymbolRankResult: """Fetches the list of the SymbolRank similar symbols ordered by rank.""" diff --git a/automata/core/navigation/py/dot_path_map.py b/automata/core/navigation/py/dot_path_map.py new file mode 100644 index 00000000..c08b39c0 --- /dev/null +++ b/automata/core/navigation/py/dot_path_map.py @@ -0,0 +1,80 @@ +import logging +import os.path +from typing import Dict, Iterable, Tuple + + +def convert_fpath_to_module_dotpath(root_abs_path: str, module_path: str, prefix: str) -> str: + """Converts a filepath to a module dotpath""" + prefix = "" if prefix == "." else f"{prefix}." + return prefix + (os.path.relpath(module_path, root_abs_path).replace(os.path.sep, "."))[:-3] + + +class DotPathMap: + """A map from module dotpaths to module filepaths""" + + DOT_SEP = "." + + def __init__(self, path: str, prefix: str) -> None: + """ + Args: + path: The absolute path to the root of the module tree + prefix: The prefix to add to the dotpath of each module + """ + self.prefix = prefix + self.path = path + self._module_dotpath_to_fpath_map = self._build_module_dotpath_to_fpath_map() + self._module_fpath_to_dotpath_map = { + v: k for k, v in self._module_dotpath_to_fpath_map.items() + } + + def _build_module_dotpath_to_fpath_map(self) -> Dict[str, str]: + """Builds a map from module dotpaths to module filepaths""" + module_dotpath_to_fpath_map = {} + for root, _, files in os.walk(self.path): + for file in files: + if file.endswith(".py"): + module_fpath = os.path.join(root, file) + module_dotpath = convert_fpath_to_module_dotpath( + self.path, module_fpath, self.prefix + ) + module_dotpath_to_fpath_map[module_dotpath] = module_fpath + return module_dotpath_to_fpath_map + + def get_module_fpath_by_dotpath(self, module_dotpath: str) -> str: + """Gets the filepath of a module given its dotpath""" + return self._module_dotpath_to_fpath_map[module_dotpath] + + def get_module_dotpath_by_fpath(self, module_fpath: str) -> str: + """Gets the dotpath of a module given its filepath""" + return self._module_fpath_to_dotpath_map[module_fpath] + + def contains_dotpath(self, module_dotpath: str) -> bool: + return module_dotpath in self._module_dotpath_to_fpath_map + + def contains_fpath(self, module_fpath: str) -> bool: + return module_fpath in self._module_fpath_to_dotpath_map + + def put_module(self, module_dotpath: str) -> None: + """ + Puts a module with the given dotpath in the local store + + Raises: + Exception: If the module already exists in the map + """ + if self.contains_dotpath(module_dotpath): + raise Exception(f"Module with dotpath {module_dotpath} already exists!") + module_os_rel_path = os.path.relpath( + module_dotpath.replace(DotPathMap.DOT_SEP, os.path.sep), self.prefix + ) + module_os_path = os.path.join(self.path, module_os_rel_path) + os.makedirs(os.path.dirname(module_os_path), exist_ok=True) + file_path = f"{module_os_path}.py" + self._module_dotpath_to_fpath_map[module_dotpath] = file_path + self._module_fpath_to_dotpath_map[file_path] = module_dotpath + + def items(self) -> Iterable[Tuple[str, str]]: + """ + Returns: + A dictionary containing the module dotpath to module filepath mapping + """ + return self._module_dotpath_to_fpath_map.items() diff --git a/automata/core/navigation/py/navigation_utils.py b/automata/core/navigation/py/navigation_utils.py index eaf62c37..a85bb9f7 100644 --- a/automata/core/navigation/py/navigation_utils.py +++ b/automata/core/navigation/py/navigation_utils.py @@ -13,7 +13,7 @@ RedBaron, ) -from automata.core.singletons.module_loader import DOT_SEP +from automata.core.navigation.py.dot_path_map import DotPathMap logger = logging.getLogger(__name__) @@ -38,7 +38,7 @@ def find_syntax_tree_node( if not object_path: return code_obj - obj_parts = object_path.split(DOT_SEP) + obj_parts = object_path.split(DotPathMap.DOT_SEP) node = code_obj while node and obj_parts: diff --git a/automata/core/services.py b/automata/core/services.py deleted file mode 100644 index 67382c3d..00000000 --- a/automata/core/services.py +++ /dev/null @@ -1,11 +0,0 @@ -from automata.core.embedding.base import EmbeddingHandler -from automata.core.symbol.graph import SymbolGraph -from automata.core.utils import filter_graph_by_symbols - - -def synchronize_graph_and_handler(symbol_graph: SymbolGraph, embedding_handler: EmbeddingHandler): - graph_symbols = symbol_graph.get_all_supported_symbols() - embedding_symbols = embedding_handler.get_all_supported_symbols() - supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) - - filter_graph_by_symbols(symbol_graph.rankable_subgraph, supported_symbols) diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index 1d70693f..8c389ed2 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -134,7 +134,9 @@ def create_subgraph(self) -> nx.DiGraph: flow_rank ("bidirectional") """ symbol_graph = self.get("symbol_graph") - return symbol_graph.rankable_subgraph(self.overrides.get("flow_rank", "bidirectional")) + return symbol_graph.default_rankable_subgraph( + self.overrides.get("flow_rank", "bidirectional") + ) @lru_cache() def create_symbol_similarity(self) -> EmbeddingSimilarityCalculator: diff --git a/automata/core/singletons/module_loader.py b/automata/core/singletons/py_module_loader.py similarity index 68% rename from automata/core/singletons/module_loader.py rename to automata/core/singletons/py_module_loader.py index 09e39992..7601ddb8 100644 --- a/automata/core/singletons/module_loader.py +++ b/automata/core/singletons/py_module_loader.py @@ -6,89 +6,11 @@ from automata.core.base.patterns.singleton import Singleton from automata.core.utils import get_root_fpath, get_root_py_fpath +from automata.core.navigation.py.dot_path_map import DotPathMap logger = logging.getLogger(__name__) -NO_RESULT_FOUND_STR = "No Result Found." -DOT_SEP = "." - - -def convert_fpath_to_module_dotpath(root_abs_path: str, module_path: str, prefix: str) -> str: - """Converts a filepath to a module dotpath""" - prefix = "" if prefix == "." else f"{prefix}." - return prefix + (os.path.relpath(module_path, root_abs_path).replace(os.path.sep, "."))[:-3] - - -class _DotPathMap: - """A map from module dotpaths to module filepaths""" - - def __init__(self, path: str, prefix: str) -> None: - """ - Args: - path: The absolute path to the root of the module tree - prefix: The prefix to add to the dotpath of each module - """ - self.prefix = prefix - self.path = path - self._module_dotpath_to_fpath_map = self._build_module_dotpath_to_fpath_map() - self._module_fpath_to_dotpath_map = { - v: k for k, v in self._module_dotpath_to_fpath_map.items() - } - - def _build_module_dotpath_to_fpath_map(self) -> Dict[str, str]: - """Builds a map from module dotpaths to module filepaths""" - module_dotpath_to_fpath_map = {} - for root, _, files in os.walk(self.path): - for file in files: - if file.endswith(".py"): - module_fpath = os.path.join(root, file) - module_dotpath = convert_fpath_to_module_dotpath( - self.path, module_fpath, self.prefix - ) - module_dotpath_to_fpath_map[module_dotpath] = module_fpath - return module_dotpath_to_fpath_map - - def get_module_fpath_by_dotpath(self, module_dotpath: str) -> str: - """Gets the filepath of a module given its dotpath""" - return self._module_dotpath_to_fpath_map[module_dotpath] - - def get_module_dotpath_by_fpath(self, module_fpath: str) -> str: - """Gets the dotpath of a module given its filepath""" - return self._module_fpath_to_dotpath_map[module_fpath] - - def contains_dotpath(self, module_dotpath: str) -> bool: - return module_dotpath in self._module_dotpath_to_fpath_map - - def contains_fpath(self, module_fpath: str) -> bool: - return module_fpath in self._module_fpath_to_dotpath_map - - def put_module(self, module_dotpath: str) -> None: - """ - Puts a module with the given dotpath in the local store - - Raises: - Exception: If the module already exists in the map - """ - if self.contains_dotpath(module_dotpath): - raise Exception(f"Module with dotpath {module_dotpath} already exists!") - module_os_rel_path = os.path.relpath( - module_dotpath.replace(DOT_SEP, os.path.sep), self.prefix - ) - module_os_path = os.path.join(self.path, module_os_rel_path) - os.makedirs(os.path.dirname(module_os_path), exist_ok=True) - file_path = f"{module_os_path}.py" - self._module_dotpath_to_fpath_map[module_dotpath] = file_path - self._module_fpath_to_dotpath_map[file_path] = module_dotpath - - def items(self) -> Iterable[Tuple[str, str]]: - """ - Returns: - A dictionary containing the module dotpath to module filepath mapping - """ - return self._module_dotpath_to_fpath_map.items() - - class PyModuleLoader(metaclass=Singleton): """ A Singleton with a lazy dictionary mapping dotpaths to their corresponding RedBaron FST objects. @@ -103,7 +25,7 @@ class PyModuleLoader(metaclass=Singleton): py_fpath: Optional[str] = None root_fpath: Optional[str] = None - _dotpath_map: Optional[_DotPathMap] = None + _dotpath_map: Optional[DotPathMap] = None _loaded_modules: Dict[str, Optional[RedBaron]] = {} def __init__(self) -> None: @@ -129,7 +51,7 @@ def initialize( if self.initialized: raise Exception("Module loader is already initialized!") - self._dotpath_map = _DotPathMap(py_fpath, path_prefix) + self._dotpath_map = DotPathMap(py_fpath, path_prefix) self.py_fpath = py_fpath self.root_fpath = root_fpath self.initialized = True diff --git a/automata/core/tools/registries.py b/automata/core/singletons/toolkit_registries.py similarity index 75% rename from automata/core/tools/registries.py rename to automata/core/singletons/toolkit_registries.py index 837bdb9e..6e37eb65 100644 --- a/automata/core/tools/registries.py +++ b/automata/core/singletons/toolkit_registries.py @@ -1,20 +1,21 @@ import pkgutil from typing import List, Set, Type -from automata.core.agent.providers import OpenAIAgentToolkit +from automata.core.base.patterns.singleton import Singleton +from automata.core.agent.providers import OpenAIAgentToolkitProvider -class OpenAIAutomataAgentToolkitRegistry: - _all_builders: Set[Type[OpenAIAgentToolkit]] = set([]) +class OpenAIAutomataAgentToolkitRegistry(metaclass=Singleton): + _all_builders: Set[Type[OpenAIAgentToolkitProvider]] = set([]) _is_initialized: bool = False @staticmethod - def register_tool_manager(cls: Type[OpenAIAgentToolkit]): + def register_tool_manager(cls: Type[OpenAIAgentToolkitProvider]): OpenAIAutomataAgentToolkitRegistry._all_builders.add(cls) return cls @staticmethod - def get_all_builders() -> List[Type[OpenAIAgentToolkit]]: + def get_all_builders() -> List[Type[OpenAIAgentToolkitProvider]]: """ Get all the registered tool builders. Initializes the builder registry if it has not been initialized yet. @@ -41,3 +42,6 @@ def initialize(): # Mark the registry as initialized OpenAIAutomataAgentToolkitRegistry._is_initialized = True + + +open_ai_agent_toolkit_registry = OpenAIAutomataAgentToolkitRegistry() diff --git a/automata/core/symbol/base.py b/automata/core/symbol/base.py index 0d558156..d02e1e75 100644 --- a/automata/core/symbol/base.py +++ b/automata/core/symbol/base.py @@ -1,7 +1,8 @@ +import abc import re from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional, Tuple +from typing import Any, Dict, Optional, Tuple, Set, List from automata.core.symbol.scip_pb2 import Descriptor as DescriptorProto # type: ignore @@ -272,19 +273,22 @@ def __eq__(self, other) -> bool: return False -@dataclass -class SymbolFile: - """Represents a file that contains a symbol""" +class ISymbolProvider(abc.ABC): + def __init__(self): + self.is_synchronized = False - path: str - occurrences: str + def get_all_supported_symbols(self) -> List[Symbol]: + if not self.is_synchronized: + raise RuntimeError("Cannot get symbols before synchronization") + return self._get_all_supported_symbols() - def __hash__(self) -> int: - return hash(self.path) + def set_synchronized(self, value: bool): + self.is_synchronized = value - def __eq__(self, other) -> bool: - if isinstance(other, SymbolFile): - return self.path == other.path - elif isinstance(other, str): - return self.path == other - return False + @abc.abstractmethod + def _get_all_supported_symbols(self) -> List[Symbol]: + pass + + @abc.abstractmethod + def filter_symbols(self, supported_symbols: Set[Symbol]) -> None: + pass diff --git a/automata/core/symbol/graph.py b/automata/core/symbol/graph.py index 3274bcf8..f04768de 100644 --- a/automata/core/symbol/graph.py +++ b/automata/core/symbol/graph.py @@ -11,11 +11,10 @@ from functools import lru_cache from automata.config import MAX_WORKERS -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import ( Symbol, SymbolDescriptor, - SymbolFile, SymbolReference, ) from automata.core.symbol.parser import parse_symbol @@ -25,7 +24,8 @@ get_rankable_symbols, ) from automata.core.embedding.base import EmbeddingHandler -from automata.core.utils import filter_graph_by_symbols +from automata.core.utils import filter_multi_digraph_by_symbols, filter_digraph_by_symbols +from automata.core.symbol.base import ISymbolProvider logger = logging.getLogger(__name__) @@ -241,7 +241,6 @@ def build_graph(self) -> nx.MultiDiGraph: Edges are added for relationships, references, and calls between `Symbol` nodes. """ for document in self.index.documents: - self._add_file_vertices(document) self._add_symbol_vertices(document) self._process_relationships(document) self._process_references(document) @@ -250,13 +249,6 @@ def build_graph(self) -> nx.MultiDiGraph: return self._graph - def _add_file_vertices(self, document: Any) -> None: - self._graph.add_node( - document.relative_path, - file=SymbolFile(document.relative_path, occurrences=document.occurrences), - label="file", - ) - def _add_symbol_vertices(self, document: Any) -> None: for symbol_information in document.symbols: try: @@ -305,13 +297,6 @@ def __init__(self, graph: nx.MultiDiGraph) -> None: # TODO - Find the correct way to define a bounding box self.bounding_box: Dict[Symbol, Any] = {} # Default to empty bounding boxes - def get_all_files(self) -> List[SymbolFile]: - return [ - data.get("file") - for _, data in self._graph.nodes(data=True) - if data.get("label") == "file" - ] - def get_all_supported_symbols(self) -> List[Symbol]: return [ node for node, data in self._graph.nodes(data=True) if data.get("label") == "symbol" @@ -470,7 +455,7 @@ def _pre_compute_rankable_bounding_boxes(self) -> None: self.bounding_box = bounding_boxes -class SymbolGraph: +class SymbolGraph(ISymbolProvider): """ A SymbolGraph contains the symbols and relationships between them. Currently, nodes are files and symbols, and edges consist of either @@ -478,17 +463,12 @@ class SymbolGraph: """ def __init__(self, index_path: str, build_caller_relationships: bool = False) -> None: + super().__init__() index = self._load_index_protobuf(index_path) builder = GraphBuilder(index, build_caller_relationships) self._graph = builder.build_graph() self.navigator = _SymbolGraphNavigator(self._graph) - def get_all_files(self) -> List[SymbolFile]: - return self.navigator.get_all_files() - - def get_all_supported_symbols(self) -> List[Symbol]: - return list(set(self.navigator.get_all_supported_symbols())) - def get_symbol_dependencies(self, symbol: Symbol) -> Set[Symbol]: return self.navigator.get_symbol_dependencies(symbol) @@ -517,14 +497,18 @@ def get_references_to_symbol(self, symbol: Symbol) -> Dict[str, List[SymbolRefer return self.navigator.get_references_to_symbol(symbol) @property - def rankable_subgraph(self) -> nx.DiGraph: + def default_rankable_subgraph(self) -> nx.DiGraph: + return self._build_default_rankable_subgraph() + + @lru_cache(maxsize=1) + def _build_default_rankable_subgraph(self) -> nx.DiGraph: return self._build_rankable_subgraph() def _build_rankable_subgraph( self, flow_rank="bidirectional", path_filter: Optional[str] = None ) -> nx.DiGraph: """ - Creates a `SubGraph` of the original `SymbolGraph` which + Creates a subgraph of the original `SymbolGraph` which contains only rankable symbols. The nodes in the subgraph are rankable symbols, and the edges are the dependencies between them. @@ -568,6 +552,14 @@ def _build_rankable_subgraph( return G + # ISymbolProvider methods + def _get_all_supported_symbols(self) -> List[Symbol]: + return list(set(self.navigator.get_all_supported_symbols())) + + def filter_symbols(self, supported_symbols: Set[Symbol]): + if self._graph: + self._graph = filter_multi_digraph_by_symbols(self._graph, supported_symbols) + @staticmethod def _load_index_protobuf(path: str) -> Index: index = Index() diff --git a/automata/core/symbol/symbol_utils.py b/automata/core/symbol/symbol_utils.py index 6de0aa32..d2f2d078 100644 --- a/automata/core/symbol/symbol_utils.py +++ b/automata/core/symbol/symbol_utils.py @@ -2,7 +2,7 @@ from redbaron import RedBaron -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import Symbol, SymbolDescriptor diff --git a/automata/core/symbol_embedding/base.py b/automata/core/symbol_embedding/base.py index cc6d85b0..52387407 100644 --- a/automata/core/symbol_embedding/base.py +++ b/automata/core/symbol_embedding/base.py @@ -1,5 +1,5 @@ import abc -from typing import Any, List, Optional +from typing import Any, List, Optional, Set import numpy as np @@ -10,7 +10,7 @@ EmbeddingHandler, EmbeddingBuilder, ) -from automata.core.symbol.base import Symbol +from automata.core.symbol.base import Symbol, ISymbolProvider class SymbolEmbedding(Embedding): @@ -75,7 +75,7 @@ def get_ordered_embeddings(self) -> List[SymbolEmbedding]: return sorted(self.data, key=lambda x: self.entry_to_key(x)) -class SymbolEmbeddingHandler(EmbeddingHandler): +class SymbolEmbeddingHandler(EmbeddingHandler, ISymbolProvider): """An abstract class to handle the embedding of symbols""" @abc.abstractmethod @@ -98,3 +98,11 @@ def get_embedding(self, symbol: Symbol) -> Any: def process_embedding(self, symbol: Symbol) -> None: """An abstract method to process the embedding for a symbol""" pass + + # ISymbolProvider methods + + def _get_all_supported_symbols(self) -> List[Symbol]: + return self.supported_symbols + + def filter_symbols(self, supported_symbols: Set[Symbol]) -> None: + self.supported_symbols = list(supported_symbols) diff --git a/automata/core/tools/builders/context_oracle.py b/automata/core/tools/builders/context_oracle.py index 0dfe98b9..5b0640b9 100644 --- a/automata/core/tools/builders/context_oracle.py +++ b/automata/core/tools/builders/context_oracle.py @@ -3,17 +3,17 @@ from typing import List from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkit, AgentToolkitNames -from automata.core.agent.providers import OpenAIAgentToolkit +from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames +from automata.core.agent.providers import OpenAIAgentToolkitProvider from automata.core.llm.providers.openai import OpenAITool from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tools.base import Tool -from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry +from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry logger = logging.getLogger(__name__) -class ContextOracleToolkit(AgentToolkit): +class ContextOracleToolkit(AgentToolkitProvider): """The ContextOracleToolkit provides tools which translate NLP queries to relevant context.""" def __init__( @@ -105,7 +105,7 @@ def _get_context(self, query: str, max_related_symbols=1) -> str: @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class ContextOracleOpenAIToolkit(ContextOracleToolkit, OpenAIAgentToolkit): +class ContextOracleOpenAIToolkit(ContextOracleToolkit, OpenAIAgentToolkitProvider): TOOL_TYPE = AgentToolkitNames.CONTEXT_ORACLE PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/tools/builders/py_reader.py b/automata/core/tools/builders/py_reader.py index f161bf2e..586b0c4d 100644 --- a/automata/core/tools/builders/py_reader.py +++ b/automata/core/tools/builders/py_reader.py @@ -2,18 +2,17 @@ from typing import List, Optional from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkit, AgentToolkitNames -from automata.core.agent.providers import OpenAIAgentToolkit +from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames +from automata.core.agent.providers import OpenAIAgentToolkitProvider from automata.core.code_handling.py.reader import PyReader from automata.core.llm.providers.openai import OpenAITool -from automata.core.singletons.module_loader import NO_RESULT_FOUND_STR from automata.core.tools.base import Tool -from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry +from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry logger = logging.getLogger(__name__) -class PyReaderToolkit(AgentToolkit): +class PyReaderToolkit(AgentToolkitProvider): """ A class for interacting with the PythonIndexer API, which provides functionality to retrieve python code. @@ -31,7 +30,7 @@ def build(self) -> List[Tool]: function=self._run_indexer_retrieve_code, description=f"Returns the code of the python package, module, standalone function, class," f" or method at the given python path, without docstrings." - f' If no match is found, then "{NO_RESULT_FOUND_STR}" is returned.\n\n' + f' If no match is found, then "{PyReader.NO_RESULT_FOUND_STR}" is returned.\n\n' f'For example - suppose the function "my_function" is defined in the file "my_file.py" located in the main working directory,' f"then the correct tool input is:\n" f'arguments: {{"module_path": "my_file", "object_path": "my_file"}}' @@ -93,7 +92,7 @@ def _run_indexer_retrieve_raw_code( @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class PyReaderOpenAIToolkit(PyReaderToolkit, OpenAIAgentToolkit): +class PyReaderOpenAIToolkit(PyReaderToolkit, OpenAIAgentToolkitProvider): TOOL_TYPE = AgentToolkitNames.PY_READER PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/tools/builders/py_writer.py b/automata/core/tools/builders/py_writer.py index e53a16cc..a544f2e2 100644 --- a/automata/core/tools/builders/py_writer.py +++ b/automata/core/tools/builders/py_writer.py @@ -2,17 +2,17 @@ from typing import List, Optional from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkit, AgentToolkitNames -from automata.core.agent.providers import OpenAIAgentToolkit +from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames +from automata.core.agent.providers import OpenAIAgentToolkitProvider from automata.core.code_handling.py.writer import PyWriter from automata.core.llm.providers.openai import OpenAITool from automata.core.tools.base import Tool -from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry +from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry logger = logging.getLogger(__name__) -class PyWriterToolkit(AgentToolkit): +class PyWriterToolkit(AgentToolkitProvider): """ A class for interacting with the PythonWriter API, which provides functionality to modify python code. @@ -75,7 +75,7 @@ def _create_new_module(self, module_dotpath: str, code: str) -> str: @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class PyWriterOpenAIToolkit(PyWriterToolkit, OpenAIAgentToolkit): +class PyWriterOpenAIToolkit(PyWriterToolkit, OpenAIAgentToolkitProvider): TOOL_TYPE = AgentToolkitNames.PY_WRITER PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/tools/builders/symbol_search.py b/automata/core/tools/builders/symbol_search.py index 12f864bb..a6460fc7 100644 --- a/automata/core/tools/builders/symbol_search.py +++ b/automata/core/tools/builders/symbol_search.py @@ -2,9 +2,9 @@ from typing import List, Optional, Union from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkit, AgentToolkitNames +from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames from automata.core.agent.error import UnknownToolError -from automata.core.agent.providers import OpenAIAgentToolkit +from automata.core.agent.providers import OpenAIAgentToolkitProvider from automata.core.experimental.search.symbol_search import ( ExactSearchResult, SourceCodeResult, @@ -14,7 +14,7 @@ ) from automata.core.llm.providers.openai import OpenAITool from automata.core.tools.base import Tool -from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry +from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry class SearchTool(Enum): @@ -28,7 +28,7 @@ class SearchTool(Enum): EXACT_SEARCH = "exact-search" -class SymbolSearchToolkit(AgentToolkit): +class SymbolSearchToolkit(AgentToolkitProvider): """A class for interacting with the SymbolSearch API, which provides functionality to search an indexed python codebase.""" @@ -96,7 +96,7 @@ def _exact_search_processor(self, query: str) -> str: @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class SymbolSearchOpenAIToolkit(SymbolSearchToolkit, OpenAIAgentToolkit): +class SymbolSearchOpenAIToolkit(SymbolSearchToolkit, OpenAIAgentToolkitProvider): TOOL_TYPE = AgentToolkitNames.SYMBOL_SEARCH PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/tools/factory.py b/automata/core/tools/factory.py index 1d72d3e2..ef1b56ac 100644 --- a/automata/core/tools/factory.py +++ b/automata/core/tools/factory.py @@ -29,7 +29,7 @@ class AgentToolFactory: @staticmethod def create_tools_from_builder(agent_tool: AgentToolkitNames, **kwargs) -> Sequence[Tool]: """Uses the Builder Registry to create tools from a given agent tool name.""" - from automata.core.tools.registries import ( # import here for easy mocking + from automata.core.singletons.toolkit_registries import ( # import here for easy mocking OpenAIAutomataAgentToolkitRegistry, ) diff --git a/automata/core/utils.py b/automata/core/utils.py index 8a0c00e4..6cd35c54 100644 --- a/automata/core/utils.py +++ b/automata/core/utils.py @@ -65,14 +65,24 @@ def convert_kebab_to_snake(s: str) -> str: return s.replace("-", "_") -def filter_graph_by_symbols(graph: nx.DiGraph, supported_symbols: Set[Symbol]) -> None: - """Filters a graph to only contain nodes that are in the supported_symbols set.""" +def filter_digraph_by_symbols(graph: nx.DiGraph, supported_symbols: Set[Symbol]) -> None: + """Filters a digraph to only contain nodes that are in the supported_symbols set.""" graph_nodes = deepcopy(graph.nodes()) for symbol in graph_nodes: if symbol not in supported_symbols: graph.remove_node(symbol) +def filter_multi_digraph_by_symbols( + graph: nx.MultiDiGraph, supported_symbols: Set[Symbol], label="symbol" +) -> None: + """Filters a multi digraph to only contain nodes that are in the supported_symbols set.""" + graph_nodes_and_data = deepcopy(graph.nodes(data=True)) + for node, data in graph_nodes_and_data: + if data.get("label") == "symbol" and node not in supported_symbols: + graph.remove_node(node) + + class HandlerDict(TypedDict): """A dictionary representing a logging handler""" diff --git a/automata/docs/core/agent/open_ai_agent_tool_builder.rst b/automata/docs/core/agent/open_ai_agent_tool_builder.rst index e9d42f4f..96fb1594 100644 --- a/automata/docs/core/agent/open_ai_agent_tool_builder.rst +++ b/automata/docs/core/agent/open_ai_agent_tool_builder.rst @@ -1,24 +1,24 @@ -OpenAIAgentToolkit +OpenAIAgentToolkitProvider ====================== Overview -------- -``OpenAIAgentToolkit`` is an abstract class for creating tools for +``OpenAIAgentToolkitProvider`` is an abstract class for creating tools for use with OpenAI providers. Tools are constructs designed to execute tasks during a conversation, or within an iteration of an AI model. -``OpenAIAgentToolkit`` provides a framework for defining such tools +``OpenAIAgentToolkitProvider`` provides a framework for defining such tools to enable interaction with OpenAI-based agents effectively. This abstract class defines two core methods: ``build_for_open_ai`` and ``can_handle``. The ``build_for_open_ai`` method is an abstract method and, therefore, must be implemented by any class that inherits from -``OpenAIAgentToolkit``. This method as designed to return a list of +``OpenAIAgentToolkitProvider``. This method as designed to return a list of ``OpenAITool`` objects. The ``can_handle`` method is a class-level method used to check if a given ``tool_manager`` matches the tool type associated with a particular builder. -``OpenAIAgentToolkit`` is used in the context of the Automata +``OpenAIAgentToolkitProvider`` is used in the context of the Automata project, an undertaking that integrates OpenAI’s GPT-3 model with additional tools and logic to create a more interactive, and rich AI experience. @@ -27,7 +27,7 @@ Related Symbols --------------- Several classes and methods interact or have a tied relationship with -``OpenAIAgentToolkit``. Some of them include: +``OpenAIAgentToolkitProvider``. Some of them include: - ``PythonAgentToolkit``: A concrete implementation of a builder class for generating tools to interact with PythonAgent. @@ -35,7 +35,7 @@ Several classes and methods interact or have a tied relationship with - ``ContextOracleOpenAIToolkit``, ``SymbolSearchOpenAIToolkit``, ``PyWriterOpenAIToolkit``, ``PyReaderOpenAIToolkit``: These are potential classes that may - inherit from ``OpenAIAgentToolkit``, defining their custom + inherit from ``OpenAIAgentToolkitProvider``, defining their custom toolsets and targets for interaction. - ``test_builder_creates_proper_instance``, @@ -50,7 +50,7 @@ Several classes and methods interact or have a tied relationship with Example ------- -Given the abstract nature of ``OpenAIAgentToolkit``, it doesn’t have +Given the abstract nature of ``OpenAIAgentToolkitProvider``, it doesn’t have direct usage. However, a child class like ``PythonAgentToolkit`` provides an example of how such a builder class might be used: @@ -81,7 +81,7 @@ list. Limitations ----------- -Being an abstract class, ``OpenAIAgentToolkit`` is not directly +Being an abstract class, ``OpenAIAgentToolkitProvider`` is not directly usable and requires concrete classes to provide meaningful implementations of ``build_for_open_ai``. This could lead to inconsistency in implementations of its methods. @@ -98,5 +98,5 @@ Follow-up Questions: Please note: This documentation is constructed on the basis of available context and might not completely represent the functional scope of -``OpenAIAgentToolkit``. Some areas might require additional +``OpenAIAgentToolkitProvider``. Some areas might require additional clarification or input from the code developers for complete accuracy. diff --git a/automata/docs/core/agent/tool/agent_tool_factory.rst b/automata/docs/core/agent/tool/agent_tool_factory.rst index f7811e2f..7a3fc838 100644 --- a/automata/docs/core/agent/tool/agent_tool_factory.rst +++ b/automata/docs/core/agent/tool/agent_tool_factory.rst @@ -17,7 +17,7 @@ Related Symbols - ``automata.core.agent.agent.AgentToolkitNames`` - ``automata.core.tools.tool.Tool`` - ``automata.core.code_handling.py.reader.PyReader`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkit`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` - ``automata.core.experimental.search.symbol_search.SymbolSearch`` - ``automata.core.agent.error.UnknownToolError`` diff --git a/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst b/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst index b129bda8..f7e68413 100644 --- a/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst +++ b/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst @@ -2,7 +2,7 @@ OpenAIAutomataAgentToolkitRegistry ====================================== ``OpenAIAutomataAgentToolkitRegistry`` is a static registry class -that holds a list of available ``OpenAIAgentToolkit`` classes. The +that holds a list of available ``OpenAIAgentToolkitProvider`` classes. The main purpose of this class is to keep a registry of all available tool builders, which can be used for creating tools to interact with OpenAI Automata Agents. The ``OpenAIAutomataAgentToolkitRegistry`` class @@ -32,9 +32,9 @@ tool builder: .. code:: python - from automata.core.llm.providers.openai import OpenAIAgentToolkit, OpenAIAutomataAgentToolkitRegistry + from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAIAutomataAgentToolkitRegistry - class CustomOpenAIToolkit(OpenAIAgentToolkit): + class CustomOpenAIToolkit(OpenAIAgentToolkitProvider): def build_for_open_ai(self) -> List[OpenAITool]: # Implementation of the tool builder pass @@ -62,5 +62,5 @@ Follow-up Questions: - How does ``OpenAIAutomataAgentToolkitRegistry`` ensure that all available tool builders are registered properly? - Is it possible to use dependency injections or any other design - patterns to manage ``OpenAIAgentToolkit`` classes more + patterns to manage ``OpenAIAgentToolkitProvider`` classes more effectively? diff --git a/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst index 11d5cf9b..dbca096a 100644 --- a/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst @@ -3,7 +3,7 @@ ContextOracleOpenAIToolkit ``ContextOracleOpenAIToolkit`` is responsible for managing and building context oracle tools for OpenAI. It inherits from -``OpenAIAgentToolkit`` and provides a method to create OpenAI +``OpenAIAgentToolkitProvider`` and provides a method to create OpenAI compatible tools for use in the Automata agent. The context oracle tools help in searching and ranking related symbols based on the given query string. @@ -22,10 +22,10 @@ context. Related Symbols --------------- -- ``automata.core.agent.agent.AgentToolkit`` +- ``automata.core.agent.agent.AgentToolkitProvider`` - ``automata.core.symbol_embedding.similarity.SymbolSimilarity`` - ``automata.core.llm.providers.available.LLMPlatforms`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkit`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` - ``automata.core.tools.builders.context_oracle.ContextOracleTool`` - ``automata.core.tools.registries.OpenAIAutomataAgentToolkitRegistry`` @@ -56,8 +56,8 @@ Limitations ----------- ``ContextOracleOpenAIToolkit`` has a limitation in terms of its -dependency on the inherited OpenAIAgentToolkit class. It relies on -OpenAIAgentToolkit to create tools that are compatible with OpenAI +dependency on the inherited OpenAIAgentToolkitProvider class. It relies on +OpenAIAgentToolkitProvider to create tools that are compatible with OpenAI providers. Additionally, the properties and required parameters are predefined during the conversion process, preventing any customization of those values. diff --git a/automata/docs/core/agent/tool/builder/context_oracle_tool.rst b/automata/docs/core/agent/tool/builder/context_oracle_tool.rst index 23315293..137e0371 100644 --- a/automata/docs/core/agent/tool/builder/context_oracle_tool.rst +++ b/automata/docs/core/agent/tool/builder/context_oracle_tool.rst @@ -19,7 +19,7 @@ Key related symbols include: - ``automata.core.symbol_embedding.similarity.SymbolSimilarity`` - ``automata.core.tools.tool.Tool`` - ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` -- ``automata.core.agent.agent.AgentToolkit`` - +- ``automata.core.agent.agent.AgentToolkitProvider`` - ``automata.core.agent.agent.AgentToolkitNames`` - ``automata.core.tools_tool_utils.AgentToolFactory`` diff --git a/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst b/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst index 18a026e4..a4ab7b8b 100644 --- a/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst @@ -29,10 +29,10 @@ Import Statements from typing import List from automata.config.base import LLMProvider from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry - from automata.core.agent.agent import AgentToolkit, AgentToolkitNames + from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames from automata.core.tools.tool import Tool from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator - from automata.core.llm.providers.openai import OpenAIAgentToolkit, OpenAITool + from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAITool from automata.core.experimental.search.symbol_search import SymbolSearch Related Symbols diff --git a/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst index 92b52de4..80ed6767 100644 --- a/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst @@ -4,7 +4,7 @@ PyReaderOpenAIToolkit ``PyReaderOpenAIToolkit`` is a class for building OpenAI tools to interact with the Python code reading functionality provided by the ``PyReader`` class. It is part of the Automata framework for AI-driven -tool development. The class inherits from ``OpenAIAgentToolkit``, +tool development. The class inherits from ``OpenAIAgentToolkitProvider``, providing methods that build tools in a format compatible with the OpenAI platform. @@ -21,7 +21,7 @@ Related Symbols - ``automata.core.tools.builders.py_reader.PyReaderToolkit`` - ``automata.tests.unit.test_py_reader_tool.python_retriever_tool_builder`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkit`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` - ``automata.core.tools.registries.OpenAIAutomataAgentToolkitRegistry`` - ``automata.core.code_handling.py.reader.PyReader`` diff --git a/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst index 61d2531d..d93b47ae 100644 --- a/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst @@ -16,14 +16,14 @@ The ``PyReaderToolkit`` class allows for managing and interacting with the code state in local Python files. By using a ``PyReader`` object, the class enables an interface to access code, docstrings, and raw code of various Python structures. It is used in conjunction with -``AgentToolkit`` and other related tools. +``AgentToolkitProvider`` and other related tools. Related Symbols --------------- - ``automata.tests.unit.test_py_reader_tool.python_retriever_tool_builder`` - ``automata.tests.unit.test_py_writer_tool.python_writer_tool_builder`` -- ``automata.core.agent.agent.AgentToolkit`` +- ``automata.core.agent.agent.AgentToolkitProvider`` - ``automata.core.code_handling.py.reader.PyReader`` - ``automata.core.tools.tool.Tool`` diff --git a/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst index e5909235..4020b17a 100644 --- a/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst @@ -4,8 +4,8 @@ PyWriterOpenAIToolkit ``PyWriterOpenAIToolkit`` is a class for interacting with the ``PyWriter`` API that provides functionality to modify the code state of a given directory of Python files and build tools suitable for use with -the OpenAI API. This class extends from ``AgentToolkit`` and -``OpenAIAgentToolkit``, allowing it to generate a list of +the OpenAI API. This class extends from ``AgentToolkitProvider`` and +``OpenAIAgentToolkitProvider``, allowing it to generate a list of ``OpenAITool`` instances for code writing. Overview @@ -21,7 +21,7 @@ Related Symbols - ``automata.core.code_handling.py.writer.PyWriter`` - ``automata.core.tools.builders.py_writer.PyWriterToolkit`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkit`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` - ``automata.core.llm.providers.openai.OpenAITool`` Usage Example diff --git a/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst index f7d19290..6104b54e 100644 --- a/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst @@ -15,7 +15,7 @@ tools associated with the Python code writer. These tools are used to create, update, and delete Python files and objects in an existing directory. It has utility methods to create new modules, update existing modules, and delete specific objects from existing modules. It includes -related symbols like ``PyWriter``, ``AgentToolkit``, and ``Tool``. +related symbols like ``PyWriter``, ``AgentToolkitProvider``, and ``Tool``. Import Statements ----------------- @@ -25,17 +25,17 @@ Import Statements import logging from typing import List, Optional from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry - from automata.core.agent.agent import AgentToolkit, AgentToolkitNames + from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames from automata.core.tools.tool import Tool from automata.core.code_handling.py.writer import PyWriter from automata.core.llm.providers.available import LLMPlatforms - from automata.core.llm.providers.openai import OpenAIAgentToolkit, OpenAITool + from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAITool Related Symbols --------------- - ``automata.core.code_handling.py.writer.PyWriter`` -- ``automata.core.agent.agent.AgentToolkit`` +- ``automata.core.agent.agent.AgentToolkitProvider`` - ``automata.core.tools.tool.Tool`` - ``automata.tests.unit.test_py_writer_tool.test_init`` - ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` diff --git a/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst index bd6af3de..378b2153 100644 --- a/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst @@ -2,7 +2,7 @@ SymbolSearchOpenAIToolkit ============================= ``SymbolSearchOpenAIToolkit`` is a concrete implementation of -``OpenAIAgentToolkit`` that provides tools for symbol search related +``OpenAIAgentToolkitProvider`` that provides tools for symbol search related functions. The builder generates tools that interact with ``SymbolSearch`` to perform exact symbol search, symbol ranking, source code retrieval, and symbol references retrieval. @@ -24,7 +24,7 @@ Related Symbols - ``automata.core.tools.tool.Tool`` - ``automata.core.llm.providers.openai.OpenAITool`` - ``automata.core.tools.builders.symbol_search.SymbolSearchToolkit`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkit`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` Example ------- diff --git a/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst b/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst index 4b478182..641aafd2 100644 --- a/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst @@ -23,7 +23,7 @@ Related Symbols - ``automata.tests.unit.test_symbol_search_tool.test_build`` - ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkit`` -- ``automata.core.agent.agent.AgentToolkit`` +- ``automata.core.agent.agent.AgentToolkitProvider`` - ``automata.core.tools.tool.Tool`` - ``automata.core.experimental.search.symbol_search.SymbolSearch`` diff --git a/automata/docs/core/base/agent_tool_builder.rst b/automata/docs/core/base/agent_tool_builder.rst index dff01ddd..8a17d5be 100644 --- a/automata/docs/core/base/agent_tool_builder.rst +++ b/automata/docs/core/base/agent_tool_builder.rst @@ -1,18 +1,18 @@ -AgentToolkit +AgentToolkitProvider ================ -``AgentToolkit`` is an abstract class for building tools for +``AgentToolkitProvider`` is an abstract class for building tools for providers. Tools are essential components as they define the -functionality and behavior of an agent. The ``AgentToolkit`` class +functionality and behavior of an agent. The ``AgentToolkitProvider`` class provides a standard interface for creating tools. This class should be inherited by classes implementing specific tool creation logic. Overview -------- -The primary method in the ``AgentToolkit`` class is ``build()``. +The primary method in the ``AgentToolkitProvider`` class is ``build()``. This method returns a list of ``Tool`` objects. To implement a custom -tool builder, inherit from the ``AgentToolkit`` class and override +tool builder, inherit from the ``AgentToolkitProvider`` class and override the ``build`` method to define the tool creation logic. Related Symbols @@ -27,14 +27,14 @@ Example ------- The following example demonstrates how to create a custom tool builder -that inherits the ``AgentToolkit`` class. +that inherits the ``AgentToolkitProvider`` class. .. code:: python - from automata.core.agent.agent import AgentToolkit + from automata.core.agent.agent import AgentToolkitProvider from automata.core.tools.tool import Tool - class CustomToolkit(AgentToolkit): + class CustomToolkit(AgentToolkitProvider): def build(self) -> List[Tool]: # Implement tool creation logic here tools = [] @@ -43,7 +43,7 @@ that inherits the ``AgentToolkit`` class. Limitations ----------- -As ``AgentToolkit`` is an abstract base class, it does not contain +As ``AgentToolkitProvider`` is an abstract base class, it does not contain any implementation details for tool building. To leverage this class, you must create a concrete subclass that implements the ``build`` method. diff --git a/automata/docs/core/base/singleton.rst b/automata/docs/core/base/singleton.rst index 66f4f8b7..47f38083 100644 --- a/automata/docs/core/base/singleton.rst +++ b/automata/docs/core/base/singleton.rst @@ -12,13 +12,13 @@ Related Symbols - ``automata.tests.unit.sample_modules.sample.EmptyClass`` - ``automata.tests.unit.sample_modules.sample.Person`` - ``automata.tests.unit.sample_modules.sample.OuterClass`` -- ``automata.core.singletons.module_loader.PyModuleLoader`` +- ``automata.core.singletons.py_module_loader.PyModuleLoader`` - ``automata.tests.unit.sample_modules.sample.OuterClass.InnerClass`` - ``automata.core.llm.foundation.LLMChatCompletionProvider.__init__`` - ``automata.tests.conftest.MockRepositoryClient`` - ``automata.core.symbol.base.Symbol`` - ``automata.tests.unit.test_py_reader.getter`` -- ``automata.core.singletons.module_loader.PyModuleLoader.__init__`` +- ``automata.core.singletons.py_module_loader.PyModuleLoader.__init__`` Example ------- diff --git a/automata/docs/core/base/tool.rst b/automata/docs/core/base/tool.rst index e598ae82..c2a32209 100644 --- a/automata/docs/core/base/tool.rst +++ b/automata/docs/core/base/tool.rst @@ -25,9 +25,9 @@ Related Symbols - ``automata.tests.unit.test_tool.test_tool_run`` - ``automata.core.llm.providers.openai.OpenAITool`` - ``automata.tests.unit.test_tool.test_tool_instantiation`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkit.can_handle`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider.can_handle`` - ``automata.tests.unit.test_tool.TestTool.run`` -- ``automata.core.agent.agent.AgentToolkit.build`` +- ``automata.core.agent.agent.AgentToolkitProvider.build`` - ``automata.tests.unit.test_symbol_search_tool.test_build`` - ``automata.core.tools.tool_utils.AgentToolFactory`` diff --git a/automata/docs/core/base/tool/config.rst b/automata/docs/core/base/tool/config.rst index c50e1b44..24324639 100644 --- a/automata/docs/core/base/tool/config.rst +++ b/automata/docs/core/base/tool/config.rst @@ -21,7 +21,7 @@ Related Symbols - ``automata.tests.unit.test_tool.TestTool`` - ``automata.core.tools.tool.Tool.run`` - ``automata.core.llm.providers.openai.OpenAITool`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkit.can_handle`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider.can_handle`` Example ------- diff --git a/automata/docs/core/coding/py/py_module_loader.rst b/automata/docs/core/coding/py/py_module_loader.rst index e63a25de..54950711 100644 --- a/automata/docs/core/coding/py/py_module_loader.rst +++ b/automata/docs/core/coding/py/py_module_loader.rst @@ -31,7 +31,7 @@ The following example demonstrates how to initialize and use .. code:: python - from automata.core.singletons.module_loader import PyModuleLoader + from automata.core.singletons.py_module_loader import PyModuleLoader from automata.core.utils import get_root_fpath, get_root_py_fpath # Initialize PyModuleLoader diff --git a/automata/docs/core/coding/py/py_reader.rst b/automata/docs/core/coding/py/py_reader.rst index 53e54964..1b11be5f 100644 --- a/automata/docs/core/coding/py/py_reader.rst +++ b/automata/docs/core/coding/py/py_reader.rst @@ -24,7 +24,7 @@ Related Symbols --------------- - ``automata.core.navigation.py.navigation_utils.find_syntax_tree_node`` -- ``automata.core.singletons.module_loader.PyModuleLoader.fetch_module`` +- ``automata.core.singletons.py_module_loader.PyModuleLoader.fetch_module`` Example ------- diff --git a/automata/docs/core/coding/py/writer/module_not_found.rst b/automata/docs/core/coding/py/writer/module_not_found.rst index 65763236..ed54c731 100644 --- a/automata/docs/core/coding/py/writer/module_not_found.rst +++ b/automata/docs/core/coding/py/writer/module_not_found.rst @@ -24,7 +24,7 @@ Related Symbols - ``automata.core.code_handling.py.reader.PyReader`` - ``automata.core.tools.builders.py_writer.PyWriterToolkit`` - ``automata.core.navigation.directory.DirectoryManager`` -- ``automata.core.singletons.module_loader.py_module_loader`` +- ``automata.core.singletons.py_module_loader.py_module_loader`` - ``automata.core.singletons.dependency_factory.create_py_writer`` Example diff --git a/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst b/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst index c948280d..7cff341d 100644 --- a/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst +++ b/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst @@ -1,15 +1,15 @@ -OpenAIAgentToolkit +OpenAIAgentToolkitProvider ====================== -``OpenAIAgentToolkit`` is an abstract class for building tools for -providers. It provides a base class for creating ``AgentToolkit`` +``OpenAIAgentToolkitProvider`` is an abstract class for building tools for +providers. It provides a base class for creating ``AgentToolkitProvider`` implementations that work with providers that use OpenAI APIs (e.g., GPT-3). Overview -------- -``OpenAIAgentToolkit`` inherits from ``AgentToolkit`` and +``OpenAIAgentToolkitProvider`` inherits from ``AgentToolkitProvider`` and introduces an abstract method ``build_for_open_ai`` which needs to be implemented by any concrete subclasses. This method should return a list of ``OpenAITool`` instances, which are specialized versions of the @@ -18,7 +18,7 @@ of ``OpenAITool`` instances, which are specialized versions of the Related Symbols --------------- -- ``automata.core.agent.agent.AgentToolkit`` +- ``automata.core.agent.agent.AgentToolkitProvider`` - ``automata.core.llm.providers.openai.OpenAITool`` - ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` - ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkit`` @@ -29,13 +29,13 @@ Example ------- The following example demonstrates how to create a custom -``OpenAIAgentToolkit`` implementation. +``OpenAIAgentToolkitProvider`` implementation. .. code:: python - from automata.core.llm.providers.openai import OpenAIAgentToolkit, OpenAITool + from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAITool - class MyOpenAIToolkit(OpenAIAgentToolkit): + class MyOpenAIToolkit(OpenAIAgentToolkitProvider): TOOL_TYPE = "custom_tool" def build_for_open_ai(self) -> List[OpenAITool]: @@ -63,7 +63,7 @@ The following example demonstrates how to create a custom Limitations ----------- -``OpenAIAgentToolkit`` is an abstract class and cannot be used +``OpenAIAgentToolkitProvider`` is an abstract class and cannot be used directly. It must be subclassed with implementations provided for the ``build_for_open_ai`` method. Another limitation is the reliance on the specific OpenAI APIs or tools. @@ -72,5 +72,5 @@ Follow-up Questions: -------------------- - What other abstract methods or properties could be included in - ``OpenAIAgentToolkit`` to simplify building custom - ``AgentToolkit`` implementations for OpenAI providers? + ``OpenAIAgentToolkitProvider`` to simplify building custom + ``AgentToolkitProvider`` implementations for OpenAI providers? diff --git a/automata/docs/core/root_dict.rst b/automata/docs/core/root_dict.rst index 1b28b537..65362878 100644 --- a/automata/docs/core/root_dict.rst +++ b/automata/docs/core/root_dict.rst @@ -15,7 +15,7 @@ Related Symbols - ``automata.core.utils.LoggingConfig`` - ``automata.tests.unit.test_directory_manager.test_load_directory_structure`` - ``automata.core.utils.HandlerDict`` -- ``automata.core.singletons.module_loader.PyModuleLoader`` +- ``automata.core.singletons.py_module_loader.PyModuleLoader`` - ``automata.tests.unit.test_task_environment.TestURL`` - ``automata.core.symbol.base.Symbol`` diff --git a/automata/docs/core/symbol/graph/sub_graph.rst b/automata/docs/core/symbol/graph/sub_graph.rst index ac8d92aa..43880c5d 100644 --- a/automata/docs/core/symbol/graph/sub_graph.rst +++ b/automata/docs/core/symbol/graph/sub_graph.rst @@ -36,7 +36,7 @@ instance and retrieve a rankable symbol subgraph. index_path = "/path/to/index.protobuf" # Replace with the path to your own index.protobuf file symbol_graph = SymbolGraph(index_path) - rankable_subgraph = symbol_graph.get_rankable_symbol_subgraph() + default_rankable_subgraph = symbol_graph.get_rankable_symbol_subgraph() Limitations ----------- diff --git a/automata/docs/core/symbol/graph_processor.rst b/automata/docs/core/symbol/graph_processor.rst index 367fdea6..cc94d854 100644 --- a/automata/docs/core/symbol/graph_processor.rst +++ b/automata/docs/core/symbol/graph_processor.rst @@ -24,7 +24,7 @@ Import Statements: from google.protobuf.json_format import MessageToDict from tqdm import tqdm from automata.config import MAX_WORKERS - from automata.core.singletons.module_loader import py_module_loader + from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.parser import parse_symbol from automata.core.symbol.scip_pb2 import Index, SymbolRole from automata.core.symbol.base import ( diff --git a/automata/tests/conftest.py b/automata/tests/conftest.py index 141c963a..0a5909ed 100644 --- a/automata/tests/conftest.py +++ b/automata/tests/conftest.py @@ -114,7 +114,7 @@ def symbol_graph_mock(mocker): """Mock a SymbolGraph object for cases where we don't need to test the graph itself""" mock = mocker.MagicMock(spec=SymbolGraph) code_subgraph_mock = mocker.MagicMock(spec=nx.DiGraph) - mock.rankable_subgraph = mocker.MagicMock() + mock.default_rankable_subgraph = mocker.MagicMock() return mock diff --git a/automata/tests/unit/test_py_reader.py b/automata/tests/unit/test_py_reader.py index 626fcfa6..9ab3e94c 100644 --- a/automata/tests/unit/test_py_reader.py +++ b/automata/tests/unit/test_py_reader.py @@ -3,7 +3,7 @@ import pytest from automata.core.code_handling.py.reader import PyReader -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader @pytest.fixture(autouse=True) diff --git a/automata/tests/unit/test_py_reader_tool.py b/automata/tests/unit/test_py_reader_tool.py index ba422b30..b3e1661b 100644 --- a/automata/tests/unit/test_py_reader_tool.py +++ b/automata/tests/unit/test_py_reader_tool.py @@ -4,7 +4,7 @@ import pytest from automata.core.code_handling.py.reader import PyReader -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.tools.base import Tool from automata.core.tools.builders.py_reader import PyReaderToolkit from automata.core.utils import get_root_py_fpath diff --git a/automata/tests/unit/test_py_writer.py b/automata/tests/unit/test_py_writer.py index 10085f04..ebbcfcf0 100644 --- a/automata/tests/unit/test_py_writer.py +++ b/automata/tests/unit/test_py_writer.py @@ -17,7 +17,7 @@ from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter from automata.core.navigation.py.navigation_utils import find_syntax_tree_node -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader class MockCodeGenerator: diff --git a/automata/tests/unit/test_py_writer_tool.py b/automata/tests/unit/test_py_writer_tool.py index 8e3d27fe..104646d3 100644 --- a/automata/tests/unit/test_py_writer_tool.py +++ b/automata/tests/unit/test_py_writer_tool.py @@ -6,7 +6,7 @@ from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.tools.base import Tool from automata.core.tools.builders.py_writer import PyWriterToolkit from automata.core.utils import get_root_py_fpath diff --git a/automata/tests/unit/test_symbol_graph.py b/automata/tests/unit/test_symbol_graph.py index ffad5fe0..4be7556e 100644 --- a/automata/tests/unit/test_symbol_graph.py +++ b/automata/tests/unit/test_symbol_graph.py @@ -1,15 +1,44 @@ -from automata.core.symbol.base import Symbol, SymbolFile +from automata.core.symbol.graph import SymbolGraph +from automata.core.symbol.base import Symbol from automata.tests.utils.factories import symbol_graph_static_test # noqa: F401 - - -def test_get_all_files(symbol_graph_static_test): # noqa: F811 - files = symbol_graph_static_test.get_all_files() - assert isinstance(files, list) - for f in files: - assert isinstance(f, SymbolFile) +from automata.core.context_providers.symbol_synchronization import ( + SymbolProviderSynchronizationContext, +) +from automata.core.singletons.py_module_loader import py_module_loader def test_get_all_symbols(symbol_graph_static_test): # noqa: F811 + with SymbolProviderSynchronizationContext() as synchronization_context: + synchronization_context.register_provider(symbol_graph_static_test) + synchronization_context.synchronize() + graph_symbols = symbol_graph_static_test.get_all_supported_symbols() assert isinstance(graph_symbols, list) assert all(isinstance(s, Symbol) for s in graph_symbols) + + +def test_build_real_graph(symbol_graph_static_test): # noqa: F811 + with SymbolProviderSynchronizationContext() as synchronization_context: + synchronization_context.register_provider(symbol_graph_static_test) + synchronization_context.synchronize() + + all_symbols = sorted( + symbol_graph_static_test.get_all_supported_symbols(), key=lambda x: x.dotpath + ) + + assert isinstance(symbol_graph_static_test, SymbolGraph) + assert len(all_symbols) == 1_874 + + +def test_build_real_graph_and_subgraph(symbol_graph_static_test): # noqa: F811 + with SymbolProviderSynchronizationContext() as synchronization_context: + synchronization_context.register_provider(symbol_graph_static_test) + synchronization_context.synchronize() + + py_module_loader.initialize() + + # build the subgraph + subgraph = symbol_graph_static_test.default_rankable_subgraph + assert len(subgraph) == 12 + + py_module_loader.initialized = False diff --git a/automata/tests/unit/test_synchronizer.py b/automata/tests/unit/test_synchronizer.py new file mode 100644 index 00000000..3e3b0fa3 --- /dev/null +++ b/automata/tests/unit/test_synchronizer.py @@ -0,0 +1,63 @@ +from copy import deepcopy +import networkx as nx +from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler +import numpy as np +from automata.core.symbol_embedding.base import ( + SymbolCodeEmbedding, + JSONSymbolEmbeddingVectorDatabase, +) +from unittest.mock import MagicMock +from automata.core.embedding.base import EmbeddingBuilder + +from automata.core.context_providers.symbol_synchronization import ( + SymbolProviderSynchronizationContext, +) +from automata.tests.utils.factories import symbol_graph_static_test # noqa: F401 + + +def test_build_graph_and_handler_and_synchronize( + temp_output_filename, mock_simple_method_symbols, symbol_graph_static_test +): # noqa: F811 + symbol1 = mock_simple_method_symbols[0] + symbol2 = mock_simple_method_symbols[1] + symbol3 = mock_simple_method_symbols[2] + + embedding1 = SymbolCodeEmbedding( + symbol=symbol1, vector=np.array([1, 0, 0, 0]), source_code="symbol1" + ) + embedding2 = SymbolCodeEmbedding( + symbol=symbol2, vector=np.array([0, 1, 0, 0]), source_code="symbol2" + ) + embedding3 = SymbolCodeEmbedding( + symbol=symbol3, vector=np.array([0, 0, 1, 0]), source_code="symbol3" + ) + + # Mock JSONSymbolEmbeddingVectorDatabase methods + embedding_db = JSONSymbolEmbeddingVectorDatabase(temp_output_filename) + embedding_db.add(embedding1) + embedding_db.add(embedding2) + embedding_db.add(embedding3) + + # Create an instance of the class + mock_builder = MagicMock(EmbeddingBuilder) + cem = SymbolCodeEmbeddingHandler(embedding_db=embedding_db, embedding_builder=mock_builder) + + G = nx.DiGraph() + G.add_node(symbol1, label="symbol") + G.add_edge(symbol1, symbol2, label="symbol") + symbol_graph_tester = deepcopy(symbol_graph_static_test) + symbol_graph_tester._graph = G + symbol_graph_tester.navigator._graph = G + + with SymbolProviderSynchronizationContext() as synchronization_context: + from automata.core.context_providers.symbol_synchronization import SymbolProviderRegistry + + SymbolProviderRegistry._providers = set([]) + SymbolProviderRegistry.supported_symbols = [] + + synchronization_context.register_provider(symbol_graph_tester) + synchronization_context.register_provider(cem) + synchronization_context.synchronize() + + assert len(symbol_graph_tester.get_all_supported_symbols()) == 1 + assert len(cem.get_all_supported_symbols()) == 1 # post synchronization diff --git a/automata/tests/unit/test_task_executor.py b/automata/tests/unit/test_task_executor.py index 51e8b200..659139b4 100644 --- a/automata/tests/unit/test_task_executor.py +++ b/automata/tests/unit/test_task_executor.py @@ -4,7 +4,7 @@ from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter -from automata.core.singletons.module_loader import py_module_loader +from automata.core.singletons.py_module_loader import py_module_loader from automata.core.tasks.base import Task, TaskStatus from automata.core.tasks.executor import AutomataTaskExecutor, ITaskExecution from automata.core.utils import get_root_py_fpath From 0f0bc735855c432bfebf087ccd35a49942bf60bb Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 12:32:03 -0400 Subject: [PATCH 04/14] Refactor SymbolSearch --- automata/cli/scripts/run_code_embedding.py | 4 +- automata/cli/scripts/run_doc_embedding_l2.py | 18 ++++---- automata/cli/scripts/run_doc_embedding_l3.py | 4 +- .../config/symbol/symbol_code_embedding.json | 4 +- .../symbol/symbol_doc_embedding_l2.json | 4 +- .../symbol/symbol_doc_embedding_l3.json | 4 +- automata/core/agent/agent.py | 4 +- automata/core/agent/providers.py | 6 +-- .../symbol_synchronization.py | 22 ++++++---- automata/core/embedding/base.py | 4 +- .../core/experimental/search/symbol_search.py | 10 ++++- .../core/singletons/dependency_factory.py | 33 +++++++++----- .../core/singletons/toolkit_registries.py | 8 ++-- automata/core/symbol/base.py | 28 +++++++----- automata/core/symbol/graph.py | 19 ++++---- automata/core/symbol_embedding/base.py | 19 +++++--- .../core/tools/builders/context_oracle.py | 44 ++++++++++++------- automata/core/tools/builders/py_reader.py | 8 ++-- automata/core/tools/builders/py_writer.py | 8 ++-- automata/core/tools/builders/symbol_search.py | 8 ++-- automata/core/utils.py | 16 ++++--- automata/docs/core/agent/instances/config.rst | 2 +- .../core/agent/open_ai_agent_tool_builder.rst | 24 +++++----- .../agent/open_ai_automata_agent_instance.rst | 2 +- .../core/agent/tool/agent_tool_factory.rst | 2 +- ...ta_open_ai_agent_tool_builder_registry.rst | 12 ++--- .../context_oracle_open_ai_tool_builder.rst | 22 +++++----- .../tool/builder/context_oracle_tool.rst | 4 +- .../builder/context_oracle_tool_builder.rst | 22 +++++----- .../py_reader_open_ai_tool_builder.rst | 6 +-- .../tool/builder/py_reader_tool_builder.rst | 20 ++++----- .../py_writer_open_ai_tool_builder.rst | 24 +++++----- .../tool/builder/py_writer_tool_builder.rst | 24 +++++----- .../core/agent/tool/builder/search_tool.rst | 18 ++++---- .../symbol_search_open_ai_tool_builder.rst | 26 +++++------ .../builder/symbol_search_tool_builder.rst | 20 ++++----- .../docs/core/base/agent_tool_builder.rst | 20 ++++----- .../docs/core/base/agent_tool_providers.rst | 4 +- automata/docs/core/base/tool.rst | 4 +- automata/docs/core/base/tool/config.rst | 2 +- automata/docs/core/coding/py/py_writer.rst | 4 +- .../py/writer/class_or_function_not_found.rst | 4 +- .../coding/py/writer/invalid_arguments.rst | 4 +- .../coding/py/writer/module_not_found.rst | 4 +- .../providers/open_ai_agent_tool_builder.rst | 28 ++++++------ .../docs/core/llm/providers/open_ai_tool.rst | 4 +- .../docs/tests/unit/mock_code_generator.rst | 2 +- automata/tests/conftest.py | 4 ++ .../test_symbol_searcher_regression.py | 2 +- .../tests/unit/test_context_oracle_tool.py | 20 +++++---- automata/tests/unit/test_py_reader_tool.py | 4 +- automata/tests/unit/test_py_writer_tool.py | 4 +- automata/tests/unit/test_symbol_graph.py | 4 +- .../tests/unit/test_symbol_search_tool.py | 4 +- automata/tests/unit/test_synchronizer.py | 6 +-- automata/tests/utils/factories.py | 9 +++- 56 files changed, 355 insertions(+), 285 deletions(-) diff --git a/automata/cli/scripts/run_code_embedding.py b/automata/cli/scripts/run_code_embedding.py index 9d21cc2a..46476893 100644 --- a/automata/cli/scripts/run_code_embedding.py +++ b/automata/cli/scripts/run_code_embedding.py @@ -34,7 +34,7 @@ def main(*args, **kwargs) -> str: symbol_graph = SymbolGraph(scip_path) - all_defined_symbols = symbol_graph.get_all_supported_symbols() + all_defined_symbols = symbol_graph.get_sorted_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) embedding_db = JSONSymbolEmbeddingVectorDatabase(embedding_path) @@ -49,7 +49,7 @@ def main(*args, **kwargs) -> str: except Exception as e: logger.error(f"Failed to update embedding for {symbol.dotpath}: {e}") - for symbol in embedding_handler.get_all_supported_symbols(): + for symbol in embedding_handler.get_sorted_supported_symbols(): if symbol not in filtered_symbols: logger.info(f"Discarding stale symbol {symbol}...") embedding_db.discard(symbol.dotpath) diff --git a/automata/cli/scripts/run_doc_embedding_l2.py b/automata/cli/scripts/run_doc_embedding_l2.py index 04225d0e..c6570353 100644 --- a/automata/cli/scripts/run_doc_embedding_l2.py +++ b/automata/cli/scripts/run_doc_embedding_l2.py @@ -66,10 +66,10 @@ def setup(**kwargs): ) # sync the symbol graph with the code embedding - graph_symbols = symbol_graph.get_all_supported_symbols() - embedding_symbols = code_embedding_handler.get_all_supported_symbols() - supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) - filter_digraph_by_symbols(symbol_graph.default_rankable_subgraph, supported_symbols) + graph_symbols = symbol_graph.get_sorted_supported_symbols() + embedding_symbols = code_embedding_handler.get_sorted_supported_symbols() + sorted_supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) + filter_digraph_by_symbols(symbol_graph.default_rankable_subgraph, sorted_supported_symbols) return { "embedding_handler": embedding_handler, @@ -79,7 +79,7 @@ def setup(**kwargs): def process_embeddings(embedding_handler, doc_embedding_db_l2, symbol_graph): - all_defined_symbols = symbol_graph.get_all_supported_symbols() + all_defined_symbols = symbol_graph.get_sorted_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) for symbol in tqdm(filtered_symbols): @@ -93,10 +93,10 @@ def process_embeddings(embedding_handler, doc_embedding_db_l2, symbol_graph): def discard_stale_symbols(embedding_handler, doc_embedding_db_l2, symbol_graph): - all_defined_symbols = symbol_graph.get_all_supported_symbols() + all_defined_symbols = symbol_graph.get_sorted_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - for symbol in embedding_handler.get_all_supported_symbols(): + for symbol in embedding_handler.get_sorted_supported_symbols(): if symbol not in filtered_symbols: logger.info(f"Discarding stale symbol {symbol}...") doc_embedding_db_l2.discard(symbol.dotpath) @@ -160,7 +160,7 @@ def main(*args, **kwargs) -> str: # doc_embedding_db_l2, symbol_doc_embedding_builder # ) -# all_defined_symbols = symbol_graph.get_all_supported_symbols() +# all_defined_symbols = symbol_graph.get_sorted_supported_symbols() # filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) # for symbol in tqdm(filtered_symbols): @@ -172,7 +172,7 @@ def main(*args, **kwargs) -> str: # except Exception as e: # logger.error(f"Failed to update embedding for symbol {symbol}: {e}") -# for symbol in embedding_handler.get_all_supported_symbols(): +# for symbol in embedding_handler.get_sorted_supported_symbols(): # if symbol not in filtered_symbols: # logger.info(f"Discarding stale symbol {symbol}...") # doc_embedding_db_l2.discard(symbol.dotpath) diff --git a/automata/cli/scripts/run_doc_embedding_l3.py b/automata/cli/scripts/run_doc_embedding_l3.py index 12fe986f..4ab1dc87 100644 --- a/automata/cli/scripts/run_doc_embedding_l3.py +++ b/automata/cli/scripts/run_doc_embedding_l3.py @@ -84,7 +84,7 @@ def main(*args, **kwargs) -> str: embedding_handler = SymbolDocEmbeddingHandler(embedding_db_l3, symbol_doc_embedding_builder) - all_defined_symbols = symbol_graph.get_all_supported_symbols() + all_defined_symbols = symbol_graph.get_sorted_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) for symbol in tqdm(filtered_symbols): if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: @@ -94,7 +94,7 @@ def main(*args, **kwargs) -> str: except Exception as e: logger.error(f"Error updating embedding for {symbol.dotpath}: {e}") - for symbol in embedding_handler.get_all_supported_symbols(): + for symbol in embedding_handler.get_sorted_supported_symbols(): if symbol not in filtered_symbols: logger.info(f"Discarding stale symbol {symbol}...") embedding_db_l3.discard(symbol.dotpath) diff --git a/automata/config/symbol/symbol_code_embedding.json b/automata/config/symbol/symbol_code_embedding.json index ef21fa44..da3c5cc6 100644 --- a/automata/config/symbol/symbol_code_embedding.json +++ b/automata/config/symbol/symbol_code_embedding.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0c11c470645242ee15405528833d5039df534e2cecb83ec0fb3ba2a5bb98953 -size 7847968 +oid sha256:8d67e29349bb2c305353141c823528dfca3e3ab40068924c02aa94bd8fd80a42 +size 8081971 diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index ec8906ef..ab649ced 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4446d566b8532936a1977940165198d2c5390ab33fb475b56ee300173e5d1a5a -size 2355179 +oid sha256:0095a8045368012cc75817a955e419091d2e01064d753d1abb6ad9815711457d +size 2355249 diff --git a/automata/config/symbol/symbol_doc_embedding_l3.json b/automata/config/symbol/symbol_doc_embedding_l3.json index a3155813..3df33a9e 100644 --- a/automata/config/symbol/symbol_doc_embedding_l3.json +++ b/automata/config/symbol/symbol_doc_embedding_l3.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9f558a0b3507afaae64c9585bfaf67ea43d735c895ca0d9d8a7bc2344eb4946 -size 2590963 +oid sha256:f12740234cb0faa7835bcbe7e80894d5f4ee0cd1a639d71ef735a053eee6504b +size 2625478 diff --git a/automata/core/agent/agent.py b/automata/core/agent/agent.py index 94864c72..658b2bc9 100644 --- a/automata/core/agent/agent.py +++ b/automata/core/agent/agent.py @@ -77,10 +77,10 @@ class AgentToolkitNames(Enum): CONTEXT_ORACLE = "context-oracle" -class AgentToolkitProvider(ABC): +class AgentToolkitBuilder(ABC): """ - AgentToolkitProvider is an abstract class for building tools for providers. + AgentToolkitBuilder is an abstract class for building tools for providers. Each builder builds the tools associated with a specific AgentToolkitNames. """ diff --git a/automata/core/agent/providers.py b/automata/core/agent/providers.py index 8c3e7b72..df822e9e 100644 --- a/automata/core/agent/providers.py +++ b/automata/core/agent/providers.py @@ -4,7 +4,7 @@ from automata.config.base import ConfigCategory from automata.config.openai_agent import AutomataOpenAIAgentConfig -from automata.core.agent.agent import Agent, AgentToolkitProvider +from automata.core.agent.agent import Agent, AgentToolkitBuilder from automata.core.agent.error import ( AgentDatabaseError, AgentGeneralError, @@ -262,8 +262,8 @@ def terminate(result: str): ) -class OpenAIAgentToolkitProvider(AgentToolkitProvider, ABC): - """OpenAIAgentToolkitProvider is an abstract class for building OpenAI agent tools.""" +class OpenAIAgentToolkitBuilder(AgentToolkitBuilder, ABC): + """OpenAIAgentToolkitBuilder is an abstract class for building OpenAI agent tools.""" @abstractmethod def build_for_open_ai(self) -> List[OpenAITool]: diff --git a/automata/core/context_providers/symbol_synchronization.py b/automata/core/context_providers/symbol_synchronization.py index 28852dfd..f71fc63b 100644 --- a/automata/core/context_providers/symbol_synchronization.py +++ b/automata/core/context_providers/symbol_synchronization.py @@ -4,7 +4,7 @@ class SymbolProviderRegistry: _providers: Set[ISymbolProvider] = set([]) - supported_symbols: List[Symbol] = [] + sorted_supported_symbols: List[Symbol] = [] @staticmethod def register_provider(provider: ISymbolProvider): @@ -15,24 +15,28 @@ def register_provider(provider: ISymbolProvider): @staticmethod def synchronize(): all_symbols = [ - set(provider._get_all_supported_symbols()) + set(provider._get_sorted_supported_symbols()) for provider in SymbolProviderRegistry._providers ] - supported_symbols = set.intersection(*all_symbols) + sorted_supported_symbols = set.intersection(*all_symbols) + + sorted_supported_symbols = sorted(list(sorted_supported_symbols), key=lambda x: x.dotpath) + for provider in SymbolProviderRegistry._providers: - provider.filter_symbols(supported_symbols) + provider.filter_symbols(sorted_supported_symbols) provider.set_synchronized(True) - SymbolProviderRegistry.supported_symbols = list(supported_symbols) + SymbolProviderRegistry.sorted_supported_symbols = sorted_supported_symbols - if not SymbolProviderRegistry.supported_symbols: + if not SymbolProviderRegistry.sorted_supported_symbols: raise RuntimeError("No symbols are supported by any symbol provider") @staticmethod - def get_all_supported_symbols(): - if not SymbolProviderRegistry.supported_symbols: + def get_sorted_supported_symbols(): + if not SymbolProviderRegistry.sorted_supported_symbols: SymbolProviderRegistry.synchronize() - return SymbolProviderRegistry.supported_symbols + + return SymbolProviderRegistry.sorted_supported_symbols class SymbolProviderSynchronizationContext: diff --git a/automata/core/embedding/base.py b/automata/core/embedding/base.py index 329914f8..355b5144 100644 --- a/automata/core/embedding/base.py +++ b/automata/core/embedding/base.py @@ -1,7 +1,7 @@ import abc import logging from enum import Enum -from typing import Any, Dict, TypeVar, Generic, List +from typing import Any, Dict, TypeVar, Generic, List, Sequence from automata.core.base.database.vector import VectorDatabaseProvider import numpy as np @@ -93,7 +93,7 @@ def __init__( self.norm_type = norm_type def calculate_query_similarity_dict( - self, ordered_embeddings: List[Embedding], query_text: str, return_sorted: bool = True + self, ordered_embeddings: Sequence[Embedding], query_text: str, return_sorted: bool = True ) -> Dict[Symbol, float]: """ Similarity is calculated between the dot product diff --git a/automata/core/experimental/search/symbol_search.py b/automata/core/experimental/search/symbol_search.py index b437bc69..5e603269 100644 --- a/automata/core/experimental/search/symbol_search.py +++ b/automata/core/experimental/search/symbol_search.py @@ -12,6 +12,8 @@ from automata.core.symbol.symbol_utils import convert_to_fst_object from automata.core.embedding.base import EmbeddingSimilarityCalculator +from automata.core.symbol_embedding.base import SymbolEmbeddingHandler + SymbolReferencesResult = Dict[str, List[SymbolReference]] SymbolRankResult = List[Tuple[Symbol, float]] SourceCodeResult = Optional[str] @@ -25,6 +27,7 @@ def __init__( self, symbol_graph: SymbolGraph, symbol_rank_config: SymbolRankConfig, + search_embedding_handler: SymbolEmbeddingHandler, embedding_similarity_calculator: EmbeddingSimilarityCalculator, ) -> None: """ @@ -35,13 +38,18 @@ def __init__( self.symbol_graph = symbol_graph self.embedding_similarity_calculator = embedding_similarity_calculator + self.search_embedding_handler = search_embedding_handler self.symbol_rank = SymbolRank( symbol_graph.default_rankable_subgraph, config=symbol_rank_config ) def symbol_rank_search(self, query: str) -> SymbolRankResult: """Fetches the list of the SymbolRank similar symbols ordered by rank.""" - query_vec = self.embedding_similarity_calculator.calculate_query_similarity_dict(query) + ordered_embeddings = self.search_embedding_handler.get_ordered_embeddings() + + query_vec = self.embedding_similarity_calculator.calculate_query_similarity_dict( + ordered_embeddings, query + ) transformed_query_vec = SymbolSearch.transform_dict_values( query_vec, SymbolSearch.shifted_z_score_powered ) diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index 8c389ed2..08bd5c37 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -27,6 +27,7 @@ from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tools.factory import AgentToolFactory, logger from automata.core.utils import get_config_fpath +from automata.core.symbol_embedding.builders import SymbolCodeEmbeddingBuilder class DependencyFactory(metaclass=Singleton): @@ -138,16 +139,6 @@ def create_subgraph(self) -> nx.DiGraph: self.overrides.get("flow_rank", "bidirectional") ) - @lru_cache() - def create_symbol_similarity(self) -> EmbeddingSimilarityCalculator: - """ - Associated Keyword Args: - code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) - embedding_provider (OpenAIEmbedding()) - """ - embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) - return EmbeddingSimilarityCalculator(embedding_provider) - @lru_cache() def create_symbol_rank(self) -> SymbolRank: """ @@ -159,6 +150,24 @@ def create_symbol_rank(self) -> SymbolRank: subgraph.graph, self.overrides.get("symbol_rank_config", SymbolRankConfig()) ) + @lru_cache() + def create_symbol_code_embedding_handler(self) -> SymbolCodeEmbeddingHandler: + """ + Associated Keyword Args: + code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) + embedding_provider (OpenAIEmbedding()) + """ + + default_code_embedding_fpath = os.path.join( + get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" + ) + code_embedding_db = JSONSymbolEmbeddingVectorDatabase( + self.overrides.get("symbol_rank_config", default_code_embedding_fpath) + ) + embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) + embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) + return SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) + @lru_cache() def create_symbol_search(self) -> SymbolSearch: """ @@ -167,10 +176,12 @@ def create_symbol_search(self) -> SymbolSearch: """ symbol_graph = self.get("symbol_graph") symbol_rank_config = self.overrides.get("symbol_rank_config", SymbolRankConfig()) + symbol_code_embedding_handler = self.get("symbol_code_embedding_handler") embedding_similarity_calculator = self.get("embedding_similarity_calculator") return SymbolSearch( symbol_graph, symbol_rank_config, + symbol_code_embedding_handler, embedding_similarity_calculator, ) @@ -187,7 +198,7 @@ def create_py_context_retriever(self) -> PyContextRetriever: return PyContextRetriever(symbol_graph, py_context_retriever_config) @lru_cache() - def create_symbol_similarity_calculator(self) -> EmbeddingSimilarityCalculator: + def create_embedding_similarity_calculator(self) -> EmbeddingSimilarityCalculator: """ Associated Keyword Args: embedding_provider (OpenAIEmbedding()) diff --git a/automata/core/singletons/toolkit_registries.py b/automata/core/singletons/toolkit_registries.py index 6e37eb65..a35cf7e3 100644 --- a/automata/core/singletons/toolkit_registries.py +++ b/automata/core/singletons/toolkit_registries.py @@ -2,20 +2,20 @@ from typing import List, Set, Type from automata.core.base.patterns.singleton import Singleton -from automata.core.agent.providers import OpenAIAgentToolkitProvider +from automata.core.agent.providers import OpenAIAgentToolkitBuilder class OpenAIAutomataAgentToolkitRegistry(metaclass=Singleton): - _all_builders: Set[Type[OpenAIAgentToolkitProvider]] = set([]) + _all_builders: Set[Type[OpenAIAgentToolkitBuilder]] = set([]) _is_initialized: bool = False @staticmethod - def register_tool_manager(cls: Type[OpenAIAgentToolkitProvider]): + def register_tool_manager(cls: Type[OpenAIAgentToolkitBuilder]): OpenAIAutomataAgentToolkitRegistry._all_builders.add(cls) return cls @staticmethod - def get_all_builders() -> List[Type[OpenAIAgentToolkitProvider]]: + def get_all_builders() -> List[Type[OpenAIAgentToolkitBuilder]]: """ Get all the registered tool builders. Initializes the builder registry if it has not been initialized yet. diff --git a/automata/core/symbol/base.py b/automata/core/symbol/base.py index d02e1e75..17401853 100644 --- a/automata/core/symbol/base.py +++ b/automata/core/symbol/base.py @@ -277,18 +277,26 @@ class ISymbolProvider(abc.ABC): def __init__(self): self.is_synchronized = False - def get_all_supported_symbols(self) -> List[Symbol]: - if not self.is_synchronized: - raise RuntimeError("Cannot get symbols before synchronization") - return self._get_all_supported_symbols() - - def set_synchronized(self, value: bool): - self.is_synchronized = value - @abc.abstractmethod - def _get_all_supported_symbols(self) -> List[Symbol]: + def _get_sorted_supported_symbols(self) -> List[Symbol]: pass @abc.abstractmethod - def filter_symbols(self, supported_symbols: Set[Symbol]) -> None: + def filter_symbols(self, sorted_supported_symbols: List[Symbol]) -> None: pass + + def get_sorted_supported_symbols(self) -> List[Symbol]: + from automata.core.utils import is_sorted + + if not self.is_synchronized: + raise RuntimeError("Cannot get symbols before synchronization") + + sorted_symbols = self._get_sorted_supported_symbols() + + if not is_sorted([symbol.dotpath for symbol in sorted_symbols]): + raise ValueError("sorted_supported_symbols must be sorted") + + return sorted_symbols + + def set_synchronized(self, value: bool): + self.is_synchronized = value diff --git a/automata/core/symbol/graph.py b/automata/core/symbol/graph.py index f04768de..41b41acd 100644 --- a/automata/core/symbol/graph.py +++ b/automata/core/symbol/graph.py @@ -1,3 +1,4 @@ +from functools import partial import logging from abc import ABC, abstractmethod from concurrent.futures import ProcessPoolExecutor @@ -297,10 +298,11 @@ def __init__(self, graph: nx.MultiDiGraph) -> None: # TODO - Find the correct way to define a bounding box self.bounding_box: Dict[Symbol, Any] = {} # Default to empty bounding boxes - def get_all_supported_symbols(self) -> List[Symbol]: - return [ + def get_sorted_supported_symbols(self) -> List[Symbol]: + unsorted_symbols = [ node for node, data in self._graph.nodes(data=True) if data.get("label") == "symbol" ] + return sorted(unsorted_symbols, key=lambda x: x.dotpath) def get_symbol_dependencies(self, symbol: Symbol) -> Set[Symbol]: references_in_range = self._get_symbol_references_in_scope(symbol) @@ -428,8 +430,7 @@ def _pre_compute_rankable_bounding_boxes(self) -> None: return logger.info("Pre-computing bounding boxes for all rankable symbols") - filtered_symbols = get_rankable_symbols(self.get_all_supported_symbols()) - from functools import partial + filtered_symbols = get_rankable_symbols(self.get_sorted_supported_symbols()) # prepare loader_args here (replace this comment with actual code) if not py_module_loader.initialized: @@ -515,7 +516,7 @@ def _build_rankable_subgraph( """ G = nx.DiGraph() - filtered_symbols = get_rankable_symbols(self.get_all_supported_symbols()) + filtered_symbols = get_rankable_symbols(self.get_sorted_supported_symbols()) if path_filter is not None: filtered_symbols = [ @@ -553,12 +554,12 @@ def _build_rankable_subgraph( return G # ISymbolProvider methods - def _get_all_supported_symbols(self) -> List[Symbol]: - return list(set(self.navigator.get_all_supported_symbols())) + def _get_sorted_supported_symbols(self) -> List[Symbol]: + return self.navigator.get_sorted_supported_symbols() - def filter_symbols(self, supported_symbols: Set[Symbol]): + def filter_symbols(self, sorted_supported_symbols: List[Symbol]): if self._graph: - self._graph = filter_multi_digraph_by_symbols(self._graph, supported_symbols) + filter_multi_digraph_by_symbols(self._graph, sorted_supported_symbols) @staticmethod def _load_index_protobuf(path: str) -> Index: diff --git a/automata/core/symbol_embedding/base.py b/automata/core/symbol_embedding/base.py index 52387407..f1a5aac1 100644 --- a/automata/core/symbol_embedding/base.py +++ b/automata/core/symbol_embedding/base.py @@ -11,6 +11,7 @@ EmbeddingBuilder, ) from automata.core.symbol.base import Symbol, ISymbolProvider +from automata.core.utils import is_sorted class SymbolEmbedding(Embedding): @@ -68,7 +69,7 @@ def __init__(self, file_path: str): super().__init__(file_path) def entry_to_key(self, entry: SymbolEmbedding) -> str: - """Method to generate a hashable key from an entry of type T.""" + """Concrete implementation to generate a simple hashable key from a Symbol.""" return entry.symbol.dotpath def get_ordered_embeddings(self) -> List[SymbolEmbedding]: @@ -87,7 +88,9 @@ def __init__( """An abstract constructor for SymbolEmbeddingHandler""" self.embedding_db = embedding_db self.embedding_builder = embedding_builder - self.supported_symbols = [ele.symbol for ele in self.embedding_db.get_ordered_embeddings()] + self.sorted_supported_symbols = [ + ele.symbol for ele in self.embedding_db.get_ordered_embeddings() + ] @abc.abstractmethod def get_embedding(self, symbol: Symbol) -> Any: @@ -99,10 +102,14 @@ def process_embedding(self, symbol: Symbol) -> None: """An abstract method to process the embedding for a symbol""" pass + def get_ordered_embeddings(self) -> List[SymbolEmbedding]: + return [self.get_embedding(ele) for ele in self.sorted_supported_symbols] + # ISymbolProvider methods - def _get_all_supported_symbols(self) -> List[Symbol]: - return self.supported_symbols + def _get_sorted_supported_symbols(self) -> List[Symbol]: + return self.sorted_supported_symbols - def filter_symbols(self, supported_symbols: Set[Symbol]) -> None: - self.supported_symbols = list(supported_symbols) + def filter_symbols(self, new_sorted_supported_symbols: List[Symbol]) -> None: + """Filter the symbols to only those in the new sorted_supported_symbols set""" + self.sorted_supported_symbols = new_sorted_supported_symbols diff --git a/automata/core/tools/builders/context_oracle.py b/automata/core/tools/builders/context_oracle.py index 5b0640b9..3cb9bf19 100644 --- a/automata/core/tools/builders/context_oracle.py +++ b/automata/core/tools/builders/context_oracle.py @@ -3,27 +3,31 @@ from typing import List from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames -from automata.core.agent.providers import OpenAIAgentToolkitProvider +from automata.core.agent.agent import AgentToolkitBuilder, AgentToolkitNames +from automata.core.agent.providers import OpenAIAgentToolkitBuilder from automata.core.llm.providers.openai import OpenAITool from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tools.base import Tool from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry +from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler +from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler logger = logging.getLogger(__name__) -class ContextOracleToolkit(AgentToolkitProvider): - """The ContextOracleToolkit provides tools which translate NLP queries to relevant context.""" +class ContextOracleToolkitBuilder(AgentToolkitBuilder): + """The ContextOracleToolkitBuilder provides tools which translate NLP queries to relevant context.""" def __init__( self, - symbol_doc_similarity: EmbeddingSimilarityCalculator, - symbol_code_similarity: EmbeddingSimilarityCalculator, + symbol_doc_embedding_handler: SymbolDocEmbeddingHandler, + symbol_code_embedding_handler: SymbolCodeEmbeddingHandler, + embedding_similarity_calculator: EmbeddingSimilarityCalculator, **kwargs, ) -> None: - self.symbol_doc_similarity = symbol_doc_similarity - self.symbol_code_similarity = symbol_code_similarity + self.symbol_doc_embedding_handler = symbol_doc_embedding_handler + self.symbol_code_embedding_handler = symbol_code_embedding_handler + self.embedding_similarity_calculator = embedding_similarity_calculator def build(self) -> List[Tool]: """Builds the tools associated with the context oracle.""" @@ -49,8 +53,14 @@ def _get_context(self, query: str, max_related_symbols=1) -> str: results when populated for the relevant query. Thus, selecting the maximum will factor in documentation when populated. """ - doc_search_results = self.symbol_doc_similarity.calculate_query_similarity_dict(query) - code_search_results = self.symbol_code_similarity.calculate_query_similarity_dict(query) + doc_embeddings = self.symbol_doc_embedding_handler.get_ordered_embeddings() + doc_search_results = self.embedding_similarity_calculator.calculate_query_similarity_dict( + doc_embeddings, query + ) + code_embeddings = self.symbol_code_embedding_handler.get_ordered_embeddings() + code_search_results = self.embedding_similarity_calculator.calculate_query_similarity_dict( + code_embeddings, query + ) combined_results = { key: max(doc_search_results.get(key, 0), code_search_results.get(key, 0)) for key in set(doc_search_results).union(code_search_results) @@ -62,15 +72,15 @@ def _get_context(self, query: str, max_related_symbols=1) -> str: most_similar_symbol = most_similar_symbols[0] - most_similar_embedding = self.symbol_code_similarity.embedding_handler.get_embedding( + most_similar_code_embedding = self.symbol_code_embedding_handler.get_embedding( most_similar_symbol ) - result = most_similar_embedding.input_object + result = most_similar_code_embedding.input_object try: - most_similar_doc_embedding = ( - self.symbol_doc_similarity.embedding_handler.get_embedding(most_similar_symbol) + most_similar_doc_embedding = self.symbol_doc_embedding_handler.get_embedding( + most_similar_symbol ) result += f"Documentation Summary:\n\n{most_similar_doc_embedding.summary}" except Exception as e: @@ -91,7 +101,9 @@ def _get_context(self, query: str, max_related_symbols=1) -> str: break try: result += f"{symbol.dotpath}\n\n" - result += f"{self.symbol_doc_similarity.embedding_handler.get_embedding(symbol).summary}\n\n" + result += ( + f"{self.symbol_doc_embedding_handler.get_embedding(symbol).summary}\n\n" + ) counter += 1 except Exception as e: logger.error( @@ -105,7 +117,7 @@ def _get_context(self, query: str, max_related_symbols=1) -> str: @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class ContextOracleOpenAIToolkit(ContextOracleToolkit, OpenAIAgentToolkitProvider): +class ContextOracleOpenAIToolkitBuilder(ContextOracleToolkitBuilder, OpenAIAgentToolkitBuilder): TOOL_TYPE = AgentToolkitNames.CONTEXT_ORACLE PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/tools/builders/py_reader.py b/automata/core/tools/builders/py_reader.py index 586b0c4d..1d38b035 100644 --- a/automata/core/tools/builders/py_reader.py +++ b/automata/core/tools/builders/py_reader.py @@ -2,8 +2,8 @@ from typing import List, Optional from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames -from automata.core.agent.providers import OpenAIAgentToolkitProvider +from automata.core.agent.agent import AgentToolkitBuilder, AgentToolkitNames +from automata.core.agent.providers import OpenAIAgentToolkitBuilder from automata.core.code_handling.py.reader import PyReader from automata.core.llm.providers.openai import OpenAITool from automata.core.tools.base import Tool @@ -12,7 +12,7 @@ logger = logging.getLogger(__name__) -class PyReaderToolkit(AgentToolkitProvider): +class PyReaderToolkitBuilder(AgentToolkitBuilder): """ A class for interacting with the PythonIndexer API, which provides functionality to retrieve python code. @@ -92,7 +92,7 @@ def _run_indexer_retrieve_raw_code( @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class PyReaderOpenAIToolkit(PyReaderToolkit, OpenAIAgentToolkitProvider): +class PyReaderOpenAIToolkit(PyReaderToolkitBuilder, OpenAIAgentToolkitBuilder): TOOL_TYPE = AgentToolkitNames.PY_READER PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/tools/builders/py_writer.py b/automata/core/tools/builders/py_writer.py index a544f2e2..ecefe90e 100644 --- a/automata/core/tools/builders/py_writer.py +++ b/automata/core/tools/builders/py_writer.py @@ -2,8 +2,8 @@ from typing import List, Optional from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames -from automata.core.agent.providers import OpenAIAgentToolkitProvider +from automata.core.agent.agent import AgentToolkitBuilder, AgentToolkitNames +from automata.core.agent.providers import OpenAIAgentToolkitBuilder from automata.core.code_handling.py.writer import PyWriter from automata.core.llm.providers.openai import OpenAITool from automata.core.tools.base import Tool @@ -12,7 +12,7 @@ logger = logging.getLogger(__name__) -class PyWriterToolkit(AgentToolkitProvider): +class PyWriterToolkitBuilder(AgentToolkitBuilder): """ A class for interacting with the PythonWriter API, which provides functionality to modify python code. @@ -75,7 +75,7 @@ def _create_new_module(self, module_dotpath: str, code: str) -> str: @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class PyWriterOpenAIToolkit(PyWriterToolkit, OpenAIAgentToolkitProvider): +class PyWriterOpenAIToolkitBuilder(PyWriterToolkitBuilder, OpenAIAgentToolkitBuilder): TOOL_TYPE = AgentToolkitNames.PY_WRITER PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/tools/builders/symbol_search.py b/automata/core/tools/builders/symbol_search.py index a6460fc7..a9ec9c67 100644 --- a/automata/core/tools/builders/symbol_search.py +++ b/automata/core/tools/builders/symbol_search.py @@ -2,9 +2,9 @@ from typing import List, Optional, Union from automata.config.base import LLMProvider -from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames +from automata.core.agent.agent import AgentToolkitBuilder, AgentToolkitNames from automata.core.agent.error import UnknownToolError -from automata.core.agent.providers import OpenAIAgentToolkitProvider +from automata.core.agent.providers import OpenAIAgentToolkitBuilder from automata.core.experimental.search.symbol_search import ( ExactSearchResult, SourceCodeResult, @@ -28,7 +28,7 @@ class SearchTool(Enum): EXACT_SEARCH = "exact-search" -class SymbolSearchToolkit(AgentToolkitProvider): +class SymbolSearchToolkitBuilder(AgentToolkitBuilder): """A class for interacting with the SymbolSearch API, which provides functionality to search an indexed python codebase.""" @@ -96,7 +96,7 @@ def _exact_search_processor(self, query: str) -> str: @OpenAIAutomataAgentToolkitRegistry.register_tool_manager -class SymbolSearchOpenAIToolkit(SymbolSearchToolkit, OpenAIAgentToolkitProvider): +class SymbolSearchOpenAIToolkitBuilder(SymbolSearchToolkitBuilder, OpenAIAgentToolkitBuilder): TOOL_TYPE = AgentToolkitNames.SYMBOL_SEARCH PLATFORM = LLMProvider.OPENAI diff --git a/automata/core/utils.py b/automata/core/utils.py index 6cd35c54..1a4b2984 100644 --- a/automata/core/utils.py +++ b/automata/core/utils.py @@ -65,21 +65,21 @@ def convert_kebab_to_snake(s: str) -> str: return s.replace("-", "_") -def filter_digraph_by_symbols(graph: nx.DiGraph, supported_symbols: Set[Symbol]) -> None: - """Filters a digraph to only contain nodes that are in the supported_symbols set.""" +def filter_digraph_by_symbols(graph: nx.DiGraph, sorted_supported_symbols: List[Symbol]) -> None: + """Filters a digraph to only contain nodes that are in the sorted_supported_symbols set.""" graph_nodes = deepcopy(graph.nodes()) for symbol in graph_nodes: - if symbol not in supported_symbols: + if symbol not in sorted_supported_symbols: graph.remove_node(symbol) def filter_multi_digraph_by_symbols( - graph: nx.MultiDiGraph, supported_symbols: Set[Symbol], label="symbol" + graph: nx.MultiDiGraph, sorted_supported_symbols: List[Symbol], label="symbol" ) -> None: - """Filters a multi digraph to only contain nodes that are in the supported_symbols set.""" + """Filters a multi digraph to only contain nodes that are in the sorted_supported_symbols set.""" graph_nodes_and_data = deepcopy(graph.nodes(data=True)) for node, data in graph_nodes_and_data: - if data.get("label") == "symbol" and node not in supported_symbols: + if data.get("label") == "symbol" and node not in sorted_supported_symbols: graph.remove_node(node) @@ -153,3 +153,7 @@ def get_logging_config( logging_config["root"]["handlers"].append("file") # add "file" to handlers return cast(dict[str, Any], logging_config) + + +def is_sorted(lst): + return all(a <= b for a, b in zip(lst, lst[1:])) diff --git a/automata/docs/core/agent/instances/config.rst b/automata/docs/core/agent/instances/config.rst index 4b39fe54..821de99d 100644 --- a/automata/docs/core/agent/instances/config.rst +++ b/automata/docs/core/agent/instances/config.rst @@ -24,7 +24,7 @@ Related Symbols - ``automata.tests.unit.test_automata_agent_builder.test_builder_creates_proper_instance`` - ``automata.core.agent.providers.OpenAIAutomataAgent`` - ``automata.tests.unit.test_automata_agent_builder.test_automata_agent_init`` -- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` +- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` Example ------- diff --git a/automata/docs/core/agent/open_ai_agent_tool_builder.rst b/automata/docs/core/agent/open_ai_agent_tool_builder.rst index 96fb1594..c7668c68 100644 --- a/automata/docs/core/agent/open_ai_agent_tool_builder.rst +++ b/automata/docs/core/agent/open_ai_agent_tool_builder.rst @@ -1,24 +1,24 @@ -OpenAIAgentToolkitProvider +OpenAIAgentToolkitBuilder ====================== Overview -------- -``OpenAIAgentToolkitProvider`` is an abstract class for creating tools for +``OpenAIAgentToolkitBuilder`` is an abstract class for creating tools for use with OpenAI providers. Tools are constructs designed to execute tasks during a conversation, or within an iteration of an AI model. -``OpenAIAgentToolkitProvider`` provides a framework for defining such tools +``OpenAIAgentToolkitBuilder`` provides a framework for defining such tools to enable interaction with OpenAI-based agents effectively. This abstract class defines two core methods: ``build_for_open_ai`` and ``can_handle``. The ``build_for_open_ai`` method is an abstract method and, therefore, must be implemented by any class that inherits from -``OpenAIAgentToolkitProvider``. This method as designed to return a list of +``OpenAIAgentToolkitBuilder``. This method as designed to return a list of ``OpenAITool`` objects. The ``can_handle`` method is a class-level method used to check if a given ``tool_manager`` matches the tool type associated with a particular builder. -``OpenAIAgentToolkitProvider`` is used in the context of the Automata +``OpenAIAgentToolkitBuilder`` is used in the context of the Automata project, an undertaking that integrates OpenAI’s GPT-3 model with additional tools and logic to create a more interactive, and rich AI experience. @@ -27,15 +27,15 @@ Related Symbols --------------- Several classes and methods interact or have a tied relationship with -``OpenAIAgentToolkitProvider``. Some of them include: +``OpenAIAgentToolkitBuilder``. Some of them include: - ``PythonAgentToolkit``: A concrete implementation of a builder class for generating tools to interact with PythonAgent. -- ``ContextOracleOpenAIToolkit``, - ``SymbolSearchOpenAIToolkit``, ``PyWriterOpenAIToolkit``, +- ``ContextOracleOpenAIToolkitBuilder``, + ``SymbolSearchOpenAIToolkitBuilder``, ``PyWriterOpenAIToolkitBuilder``, ``PyReaderOpenAIToolkit``: These are potential classes that may - inherit from ``OpenAIAgentToolkitProvider``, defining their custom + inherit from ``OpenAIAgentToolkitBuilder``, defining their custom toolsets and targets for interaction. - ``test_builder_creates_proper_instance``, @@ -50,7 +50,7 @@ Several classes and methods interact or have a tied relationship with Example ------- -Given the abstract nature of ``OpenAIAgentToolkitProvider``, it doesn’t have +Given the abstract nature of ``OpenAIAgentToolkitBuilder``, it doesn’t have direct usage. However, a child class like ``PythonAgentToolkit`` provides an example of how such a builder class might be used: @@ -81,7 +81,7 @@ list. Limitations ----------- -Being an abstract class, ``OpenAIAgentToolkitProvider`` is not directly +Being an abstract class, ``OpenAIAgentToolkitBuilder`` is not directly usable and requires concrete classes to provide meaningful implementations of ``build_for_open_ai``. This could lead to inconsistency in implementations of its methods. @@ -98,5 +98,5 @@ Follow-up Questions: Please note: This documentation is constructed on the basis of available context and might not completely represent the functional scope of -``OpenAIAgentToolkitProvider``. Some areas might require additional +``OpenAIAgentToolkitBuilder``. Some areas might require additional clarification or input from the code developers for complete accuracy. diff --git a/automata/docs/core/agent/open_ai_automata_agent_instance.rst b/automata/docs/core/agent/open_ai_automata_agent_instance.rst index f052da3e..060f27be 100644 --- a/automata/docs/core/agent/open_ai_automata_agent_instance.rst +++ b/automata/docs/core/agent/open_ai_automata_agent_instance.rst @@ -20,7 +20,7 @@ Related Symbols - ``automata.tests.conftest.automata_agent`` - ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder`` - ``automata.tests.conftest.task`` -- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` +- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` - ``automata.tests.unit.test_automata_agent`` - ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder.create_from_args`` - ``automata.core.agent.providers.OpenAIAutomataAgent.run`` diff --git a/automata/docs/core/agent/tool/agent_tool_factory.rst b/automata/docs/core/agent/tool/agent_tool_factory.rst index 7a3fc838..b38c7dae 100644 --- a/automata/docs/core/agent/tool/agent_tool_factory.rst +++ b/automata/docs/core/agent/tool/agent_tool_factory.rst @@ -17,7 +17,7 @@ Related Symbols - ``automata.core.agent.agent.AgentToolkitNames`` - ``automata.core.tools.tool.Tool`` - ``automata.core.code_handling.py.reader.PyReader`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitBuilder`` - ``automata.core.experimental.search.symbol_search.SymbolSearch`` - ``automata.core.agent.error.UnknownToolError`` diff --git a/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst b/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst index f7e68413..e91469c4 100644 --- a/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst +++ b/automata/docs/core/agent/tool/automata_open_ai_agent_tool_builder_registry.rst @@ -2,7 +2,7 @@ OpenAIAutomataAgentToolkitRegistry ====================================== ``OpenAIAutomataAgentToolkitRegistry`` is a static registry class -that holds a list of available ``OpenAIAgentToolkitProvider`` classes. The +that holds a list of available ``OpenAIAgentToolkitBuilder`` classes. The main purpose of this class is to keep a registry of all available tool builders, which can be used for creating tools to interact with OpenAI Automata Agents. The ``OpenAIAutomataAgentToolkitRegistry`` class @@ -15,10 +15,10 @@ Related Symbols - ``automata.tests.unit.sample_modules.sample2.PythonAgentToolkit`` - ``automata.tests.conftest.automata_agent`` - ``automata.tests.conftest.automata_agent_config_builder`` -- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkit`` +- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkitBuilder`` - ``automata.tests.unit.test_automata_agent_builder.test_builder_accepts_all_fields`` - ``automata.tests.unit.test_automata_agent_builder.test_automata_agent_init`` -- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` +- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` - ``automata.tests.unit.test_automata_agent_builder.test_builder_creates_proper_instance`` - ``automata.tests.unit.test_automata_agent.test_build_initial_messages`` - ``automata.core.tools.builders.py_reader.PyReaderOpenAIToolkit`` @@ -32,9 +32,9 @@ tool builder: .. code:: python - from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAIAutomataAgentToolkitRegistry + from automata.core.llm.providers.openai import OpenAIAgentToolkitBuilder, OpenAIAutomataAgentToolkitRegistry - class CustomOpenAIToolkit(OpenAIAgentToolkitProvider): + class CustomOpenAIToolkit(OpenAIAgentToolkitBuilder): def build_for_open_ai(self) -> List[OpenAITool]: # Implementation of the tool builder pass @@ -62,5 +62,5 @@ Follow-up Questions: - How does ``OpenAIAutomataAgentToolkitRegistry`` ensure that all available tool builders are registered properly? - Is it possible to use dependency injections or any other design - patterns to manage ``OpenAIAgentToolkitProvider`` classes more + patterns to manage ``OpenAIAgentToolkitBuilder`` classes more effectively? diff --git a/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst index dbca096a..9a779109 100644 --- a/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/context_oracle_open_ai_tool_builder.rst @@ -1,9 +1,9 @@ -ContextOracleOpenAIToolkit +ContextOracleOpenAIToolkitBuilder ============================== -``ContextOracleOpenAIToolkit`` is responsible for managing and +``ContextOracleOpenAIToolkitBuilder`` is responsible for managing and building context oracle tools for OpenAI. It inherits from -``OpenAIAgentToolkitProvider`` and provides a method to create OpenAI +``OpenAIAgentToolkitBuilder`` and provides a method to create OpenAI compatible tools for use in the Automata agent. The context oracle tools help in searching and ranking related symbols based on the given query string. @@ -11,7 +11,7 @@ string. Overview -------- -``ContextOracleOpenAIToolkit`` enables the conversion of the context +``ContextOracleOpenAIToolkitBuilder`` enables the conversion of the context oracle tools to OpenAI tools by adding predefined properties and required parameters. By doing this, the tools can be easily used by OpenAI providers and can be integrated using the Automata agent @@ -22,10 +22,10 @@ context. Related Symbols --------------- -- ``automata.core.agent.agent.AgentToolkitProvider`` +- ``automata.core.agent.agent.AgentToolkitBuilder`` - ``automata.core.symbol_embedding.similarity.SymbolSimilarity`` - ``automata.core.llm.providers.available.LLMPlatforms`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitBuilder`` - ``automata.core.tools.builders.context_oracle.ContextOracleTool`` - ``automata.core.tools.registries.OpenAIAutomataAgentToolkitRegistry`` @@ -34,14 +34,14 @@ Example .. code:: python - from automata.core.tools.builders.context_oracle import ContextOracleOpenAIToolkit + from automata.core.tools.builders.context_oracle import ContextOracleOpenAIToolkitBuilder from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.symbol_embedding.similarity import SymbolSimilarity symbol_search = SymbolSearch() symbol_doc_similarity = SymbolSimilarity() - context_oracle_openai_tool_builder = ContextOracleOpenAIToolkit( + context_oracle_openai_tool_builder = ContextOracleOpenAIToolkitBuilder( symbol_search=symbol_search, symbol_doc_similarity=symbol_doc_similarity ) @@ -55,9 +55,9 @@ Example Limitations ----------- -``ContextOracleOpenAIToolkit`` has a limitation in terms of its -dependency on the inherited OpenAIAgentToolkitProvider class. It relies on -OpenAIAgentToolkitProvider to create tools that are compatible with OpenAI +``ContextOracleOpenAIToolkitBuilder`` has a limitation in terms of its +dependency on the inherited OpenAIAgentToolkitBuilder class. It relies on +OpenAIAgentToolkitBuilder to create tools that are compatible with OpenAI providers. Additionally, the properties and required parameters are predefined during the conversion process, preventing any customization of those values. diff --git a/automata/docs/core/agent/tool/builder/context_oracle_tool.rst b/automata/docs/core/agent/tool/builder/context_oracle_tool.rst index 137e0371..3f680f2e 100644 --- a/automata/docs/core/agent/tool/builder/context_oracle_tool.rst +++ b/automata/docs/core/agent/tool/builder/context_oracle_tool.rst @@ -18,8 +18,8 @@ Key related symbols include: - ``automata.core.experimental.search.symbol_search.SymbolSearch`` - ``automata.core.symbol_embedding.similarity.SymbolSimilarity`` - ``automata.core.tools.tool.Tool`` - -``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` -- ``automata.core.agent.agent.AgentToolkitProvider`` - +``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` +- ``automata.core.agent.agent.AgentToolkitBuilder`` - ``automata.core.agent.agent.AgentToolkitNames`` - ``automata.core.tools_tool_utils.AgentToolFactory`` diff --git a/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst b/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst index a4ab7b8b..082519d5 100644 --- a/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/context_oracle_tool_builder.rst @@ -1,7 +1,7 @@ -ContextOracleToolkit +ContextOracleToolkitBuilder ======================== -``ContextOracleToolkit`` is a class that provides a powerful tool +``ContextOracleToolkitBuilder`` is a class that provides a powerful tool combining ``SymbolSearch`` and ``SymbolSimilarity`` to create rich and relevant contexts given a query. This functionality can be useful in applications such as documentation or codebase exploration where context @@ -10,7 +10,7 @@ about certain elements is required. Overview -------- -The ``ContextOracleToolkit`` class creates a tool that allows you to +The ``ContextOracleToolkitBuilder`` class creates a tool that allows you to search for symbols and analyze symbol-related documentation. Given a query, it calculates the similarity between each symbol’s documentation and the query to find the most similar documents. Then, it uses @@ -29,19 +29,19 @@ Import Statements from typing import List from automata.config.base import LLMProvider from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry - from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames + from automata.core.agent.agent import AgentToolkitBuilder, AgentToolkitNames from automata.core.tools.tool import Tool from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator - from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAITool + from automata.core.llm.providers.openai import OpenAIAgentToolkitBuilder, OpenAITool from automata.core.experimental.search.symbol_search import SymbolSearch Related Symbols --------------- -Here are the classes closely related to ``ContextOracleToolkit`` +Here are the classes closely related to ``ContextOracleToolkitBuilder`` - ``automata.tests.unit.test_context_oracle_tool.test_init`` -- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` +- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` - ``automata.tests.unit.test_context_oracle_tool.context_oracle_tool_builder`` - ``automata.tests.unit.test_context_oracle_tool.test_build`` @@ -49,18 +49,18 @@ Example ------- Below is an example demonstrating how to create an instance of -``ContextOracleToolkit``. +``ContextOracleToolkitBuilder``. .. code:: python - from automata.core.tools.builders.context_oracle import ContextOracleToolkit + from automata.core.tools.builders.context_oracle import ContextOracleToolkitBuilder from automata.core.experimental.search.symbol_search import SymbolSearch # Replace MagicMock in example from automata.core.symbol_embedding.similarity import SymbolSimilarityCalculator # Replace MagicMock in example symbol_search = SymbolSearch() # Mocked in example, replace with appropriate parameters symbol_doc_similarity = SymbolSimilarityCalculator() # Mocked in example, replace with appropriate parameters - context_oracle_tool_builder = ContextOracleToolkit( + context_oracle_tool_builder = ContextOracleToolkitBuilder( symbol_search=symbol_search_mock, symbol_doc_similarity=symbol_doc_similarity_mock ) @@ -69,7 +69,7 @@ Limitations ----------- It is important to note that the quality of the context created by -``ContextOracleToolkit`` largely depends on the effectiveness and +``ContextOracleToolkitBuilder`` largely depends on the effectiveness and accuracy of the ``SymbolSearch`` and ``SymbolSimilarityCalculator`` classes. If these classes are flawed or not finely tuned, the generated context might not be as relevant or comprehensive. diff --git a/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst index 80ed6767..6c3a7384 100644 --- a/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_reader_open_ai_tool_builder.rst @@ -4,7 +4,7 @@ PyReaderOpenAIToolkit ``PyReaderOpenAIToolkit`` is a class for building OpenAI tools to interact with the Python code reading functionality provided by the ``PyReader`` class. It is part of the Automata framework for AI-driven -tool development. The class inherits from ``OpenAIAgentToolkitProvider``, +tool development. The class inherits from ``OpenAIAgentToolkitBuilder``, providing methods that build tools in a format compatible with the OpenAI platform. @@ -19,9 +19,9 @@ additional metadata for use on the OpenAI platform. Related Symbols --------------- -- ``automata.core.tools.builders.py_reader.PyReaderToolkit`` +- ``automata.core.tools.builders.py_reader.PyReaderToolkitBuilder`` - ``automata.tests.unit.test_py_reader_tool.python_retriever_tool_builder`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitBuilder`` - ``automata.core.tools.registries.OpenAIAutomataAgentToolkitRegistry`` - ``automata.core.code_handling.py.reader.PyReader`` diff --git a/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst index d93b47ae..a8c01080 100644 --- a/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_reader_tool_builder.rst @@ -1,7 +1,7 @@ -PyReaderToolkit +PyReaderToolkitBuilder =================== -``PyReaderToolkit`` is a class for interacting with the +``PyReaderToolkitBuilder`` is a class for interacting with the ``PythonIndexer`` API, which provides functionality to read the code state of local Python files. The class allows for inspecting the local code using a ``PyReader`` object, and it is capable of building the @@ -12,18 +12,18 @@ standalone function, class, or method. Overview -------- -The ``PyReaderToolkit`` class allows for managing and interacting +The ``PyReaderToolkitBuilder`` class allows for managing and interacting with the code state in local Python files. By using a ``PyReader`` object, the class enables an interface to access code, docstrings, and raw code of various Python structures. It is used in conjunction with -``AgentToolkitProvider`` and other related tools. +``AgentToolkitBuilder`` and other related tools. Related Symbols --------------- - ``automata.tests.unit.test_py_reader_tool.python_retriever_tool_builder`` - ``automata.tests.unit.test_py_writer_tool.python_writer_tool_builder`` -- ``automata.core.agent.agent.AgentToolkitProvider`` +- ``automata.core.agent.agent.AgentToolkitBuilder`` - ``automata.core.code_handling.py.reader.PyReader`` - ``automata.core.tools.tool.Tool`` @@ -31,22 +31,22 @@ Example ------- The following example demonstrates how to create an instance of -``PyReaderToolkit`` and use it to build the list of available tools: +``PyReaderToolkitBuilder`` and use it to build the list of available tools: .. code:: python from automata.core.code_handling.py.reader import PyReader - from automata.core.tools.builders.py_reader import PyReaderToolkit + from automata.core.tools.builders.py_reader import PyReaderToolkitBuilder py_reader = PyReader() - tool_builder = PyReaderToolkit(py_reader=py_reader) + tool_builder = PyReaderToolkitBuilder(py_reader=py_reader) built_tools = tool_builder.build() Limitations ----------- -``PyReaderToolkit`` is limited by its reliance on the +``PyReaderToolkitBuilder`` is limited by its reliance on the ``PythonIndexer`` API for functionality. As a result, some functionality might not be directly exposed by the class, and users would need to access the underlying ``PyReader`` object for certain use cases. @@ -57,7 +57,7 @@ correctly if the structure is not standard. Follow-up Questions: -------------------- -- Are there any situations in which ``PyReaderToolkit`` doesn’t +- Are there any situations in which ``PyReaderToolkitBuilder`` doesn’t work well, and how can these be addressed? - How could the class be expanded to include additional functionality for managing and interacting with local Python files? diff --git a/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst index 4020b17a..297078ef 100644 --- a/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_writer_open_ai_tool_builder.rst @@ -1,17 +1,17 @@ -PyWriterOpenAIToolkit +PyWriterOpenAIToolkitBuilder ========================= -``PyWriterOpenAIToolkit`` is a class for interacting with the +``PyWriterOpenAIToolkitBuilder`` is a class for interacting with the ``PyWriter`` API that provides functionality to modify the code state of a given directory of Python files and build tools suitable for use with -the OpenAI API. This class extends from ``AgentToolkitProvider`` and -``OpenAIAgentToolkitProvider``, allowing it to generate a list of +the OpenAI API. This class extends from ``AgentToolkitBuilder`` and +``OpenAIAgentToolkitBuilder``, allowing it to generate a list of ``OpenAITool`` instances for code writing. Overview -------- -``PyWriterOpenAIToolkit`` provides a method ``build_for_open_ai`` to +``PyWriterOpenAIToolkitBuilder`` provides a method ``build_for_open_ai`` to build the tools associated with the Python code writer and return them as a list of ``OpenAITool`` instances. The built tools can then be used to write or modify the code in the specified module, class, or function. @@ -20,8 +20,8 @@ Related Symbols --------------- - ``automata.core.code_handling.py.writer.PyWriter`` -- ``automata.core.tools.builders.py_writer.PyWriterToolkit`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` +- ``automata.core.tools.builders.py_writer.PyWriterToolkitBuilder`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitBuilder`` - ``automata.core.llm.providers.openai.OpenAITool`` Usage Example @@ -31,14 +31,14 @@ Usage Example from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter - from automata.core.tools.builders.py_writer import PyWriterToolkit + from automata.core.tools.builders.py_writer import PyWriterToolkitBuilder from automata.core.llm.providers.openai import OpenAITool py_reader = PyReader() py_writer = PyWriter(py_reader) - py_writer_tool_builder = PyWriterToolkit(py_writer) + py_writer_tool_builder = PyWriterToolkitBuilder(py_writer) - # We assume that PyWriterToolkit is registered in the OpenAIAutomataAgentToolkitRegistry + # We assume that PyWriterToolkitBuilder is registered in the OpenAIAutomataAgentToolkitRegistry open_ai_tools = py_writer_tool_builder.build_for_open_ai() for tool in open_ai_tools: @@ -47,7 +47,7 @@ Usage Example Limitations ----------- -The primary limitation of ``PyWriterOpenAIToolkit`` is that it works +The primary limitation of ``PyWriterOpenAIToolkitBuilder`` is that it works only with instances of ``PyWriter``, which itself may have its own limitations. Additionally, it requires that the ``build_for_open_ai`` method is called explicitly to generate the ``OpenAITool`` instances, @@ -56,5 +56,5 @@ which may lead to less intuitive code in some cases. Follow-up Questions: -------------------- -- How can we streamline the use of ``PyWriterOpenAIToolkit`` in +- How can we streamline the use of ``PyWriterOpenAIToolkitBuilder`` in conjunction with the OpenAI API? diff --git a/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst b/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst index 6104b54e..078742f3 100644 --- a/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/py_writer_tool_builder.rst @@ -1,7 +1,7 @@ -PyWriterToolkit +PyWriterToolkitBuilder =================== -``PyWriterToolkit`` is a class for interacting with the PythonWriter +``PyWriterToolkitBuilder`` is a class for interacting with the PythonWriter API, which provides functionality to modify the code state of a given directory of Python files. This class allows you to manage and update existing Python files in a directory, create new modules, and delete @@ -10,12 +10,12 @@ specific objects from existing modules. Overview -------- -The ``PyWriterToolkit`` class provides a way to build a list of +The ``PyWriterToolkitBuilder`` class provides a way to build a list of tools associated with the Python code writer. These tools are used to create, update, and delete Python files and objects in an existing directory. It has utility methods to create new modules, update existing modules, and delete specific objects from existing modules. It includes -related symbols like ``PyWriter``, ``AgentToolkitProvider``, and ``Tool``. +related symbols like ``PyWriter``, ``AgentToolkitBuilder``, and ``Tool``. Import Statements ----------------- @@ -25,20 +25,20 @@ Import Statements import logging from typing import List, Optional from automata.core.tools.registries import OpenAIAutomataAgentToolkitRegistry - from automata.core.agent.agent import AgentToolkitProvider, AgentToolkitNames + from automata.core.agent.agent import AgentToolkitBuilder, AgentToolkitNames from automata.core.tools.tool import Tool from automata.core.code_handling.py.writer import PyWriter from automata.core.llm.providers.available import LLMPlatforms - from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAITool + from automata.core.llm.providers.openai import OpenAIAgentToolkitBuilder, OpenAITool Related Symbols --------------- - ``automata.core.code_handling.py.writer.PyWriter`` -- ``automata.core.agent.agent.AgentToolkitProvider`` +- ``automata.core.agent.agent.AgentToolkitBuilder`` - ``automata.core.tools.tool.Tool`` - ``automata.tests.unit.test_py_writer_tool.test_init`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` - ``automata.tests.unit.test_py_writer_tool.python_writer_tool_builder`` - ``automata.tests.unit.test_py_reader_tool.python_retriever_tool_builder`` - ``automata.core.tools.builders.py_reader.PyReaderOpenAIToolkit`` @@ -48,13 +48,13 @@ Example ------- The following is an example demonstrating how to create an instance of -``PyWriterToolkit`` and use it to build a list of tools. +``PyWriterToolkitBuilder`` and use it to build a list of tools. .. code:: python from automata.tests.unit.test_py_writer_tool import python_writer_tool_builder - # Instantiate the PyWriterToolkit + # Instantiate the PyWriterToolkitBuilder writer_tool_builder = python_writer_tool_builder # Build a list of tools @@ -70,7 +70,7 @@ The following is an example demonstrating how to create an instance of Limitations ----------- -``PyWriterToolkit`` assumes a specific directory structure for the +``PyWriterToolkitBuilder`` assumes a specific directory structure for the Python files it interacts with. Additionally, it relies on the predefined tool functionalities that are built into the class and cannot load custom tool functionalities without modifying the class directly. @@ -79,4 +79,4 @@ Follow-up Questions: -------------------- - How can we include custom tool functionalities for loading into the - ``PyWriterToolkit`` class? + ``PyWriterToolkitBuilder`` class? diff --git a/automata/docs/core/agent/tool/builder/search_tool.rst b/automata/docs/core/agent/tool/builder/search_tool.rst index 6120578a..e39f9cfd 100644 --- a/automata/docs/core/agent/tool/builder/search_tool.rst +++ b/automata/docs/core/agent/tool/builder/search_tool.rst @@ -2,25 +2,25 @@ SearchTool ========== ``SearchTool`` is an Enum that represents the available search tools -that can be used by ``SymbolSearchToolkit``. It is used as an input -while creating an instance of ``SymbolSearchToolkit`` to specify the +that can be used by ``SymbolSearchToolkitBuilder``. It is used as an input +while creating an instance of ``SymbolSearchToolkitBuilder`` to specify the list of search tools that the builder should build. Overview -------- ``SearchTool`` provides a convenient way to specify the search tools to -be created by the ``SymbolSearchToolkit``. It contains predefined +be created by the ``SymbolSearchToolkitBuilder``. It contains predefined search tools like ``EXACT_SEARCH``, ``PARAMETER_SEARCH``, and others. This Enum can be passed during the instantiation of -``SymbolSearchToolkit`` to include specific search tools in the list +``SymbolSearchToolkitBuilder`` to include specific search tools in the list of built tools. Related Symbols --------------- - ``automata.core.tools.builders.symbol_search.SearchToolkit`` -- ``automata.core.tools.builders.symbol_search.SymbolSearchToolkit`` +- ``automata.core.tools.builders.symbol_search.SymbolSearchToolkitBuilder`` - ``automata.core.experimental.search.symbol_search.SymbolSearch`` - ``automata.core.tools.tool.Tool`` @@ -28,16 +28,16 @@ Example ------- The following is an example demonstrating how to create an instance of -``SymbolSearchToolkit`` using the ``SearchTool`` Enum as input. +``SymbolSearchToolkitBuilder`` using the ``SearchTool`` Enum as input. .. code:: python from automata.core.experimental.search.symbol_search import SymbolSearch - from automata.core.tools.builders.symbol_search import SearchTool, SymbolSearchToolkit + from automata.core.tools.builders.symbol_search import SearchTool, SymbolSearchToolkitBuilder symbol_search = SymbolSearch() search_tools = [SearchTool.EXACT_SEARCH] - symbol_search_tool_builder = SymbolSearchToolkit(symbol_search=symbol_search, search_tools=search_tools) + symbol_search_tool_builder = SymbolSearchToolkitBuilder(symbol_search=symbol_search, search_tools=search_tools) Limitations ----------- @@ -52,6 +52,6 @@ Follow-up Questions: -------------------- - How can custom search tools be added and used with - ``SymbolSearchToolkit``? + ``SymbolSearchToolkitBuilder``? - Are there any specific dependencies within the search tools that should be considered when using them in combination? diff --git a/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst b/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst index 378b2153..be763eaf 100644 --- a/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/symbol_search_open_ai_tool_builder.rst @@ -1,8 +1,8 @@ -SymbolSearchOpenAIToolkit +SymbolSearchOpenAIToolkitBuilder ============================= -``SymbolSearchOpenAIToolkit`` is a concrete implementation of -``OpenAIAgentToolkitProvider`` that provides tools for symbol search related +``SymbolSearchOpenAIToolkitBuilder`` is a concrete implementation of +``OpenAIAgentToolkitBuilder`` that provides tools for symbol search related functions. The builder generates tools that interact with ``SymbolSearch`` to perform exact symbol search, symbol ranking, source code retrieval, and symbol references retrieval. @@ -10,8 +10,8 @@ code retrieval, and symbol references retrieval. Overview -------- -``SymbolSearchOpenAIToolkit`` extends the functionality provided by -the ``SymbolSearchToolkit`` class, specifically to build tools +``SymbolSearchOpenAIToolkitBuilder`` extends the functionality provided by +the ``SymbolSearchToolkitBuilder`` class, specifically to build tools suited for OpenAI LLM platforms. The ``build_for_open_ai`` method generates a list of ``OpenAITool`` instances, which wrap the original ``Tool`` instances to provide the required structure used in OpenAI @@ -20,28 +20,28 @@ platforms. Related Symbols --------------- -- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` +- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` - ``automata.core.tools.tool.Tool`` - ``automata.core.llm.providers.openai.OpenAITool`` -- ``automata.core.tools.builders.symbol_search.SymbolSearchToolkit`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider`` +- ``automata.core.tools.builders.symbol_search.SymbolSearchToolkitBuilder`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitBuilder`` Example ------- The following is an example demonstrating how to use the -``SymbolSearchOpenAIToolkit`` to build tools suited for OpenAI +``SymbolSearchOpenAIToolkitBuilder`` to build tools suited for OpenAI platforms. .. code:: python from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.tools.builders.symbol_search import ( - SymbolSearchOpenAIToolkit, + SymbolSearchOpenAIToolkitBuilder, ) symbol_search = SymbolSearch() - tool_builder = SymbolSearchOpenAIToolkit(symbol_search=symbol_search) + tool_builder = SymbolSearchOpenAIToolkitBuilder(symbol_search=symbol_search) openai_tools = tool_builder.build_for_open_ai() # Each tool in the list can be used as follows @@ -51,7 +51,7 @@ platforms. Limitations ----------- -The primary limitation of ``SymbolSearchOpenAIToolkit`` is that it +The primary limitation of ``SymbolSearchOpenAIToolkitBuilder`` is that it is tailored explicitly for the OpenAI LLM platforms, and therefore, the resulting tools may not be compatible with other platforms. Moreover, the ``build_for_open_ai`` method assumes a predefined structure and @@ -60,7 +60,7 @@ property set for the ``OpenAITool`` instances. Follow-up Questions: -------------------- -- Can we enhance the ``SymbolSearchOpenAIToolkit`` to be more +- Can we enhance the ``SymbolSearchOpenAIToolkitBuilder`` to be more flexible and compatible with other LLM platforms? - How can we add more tools to the builder without having to rewrite it? diff --git a/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst b/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst index 641aafd2..944eb4cb 100644 --- a/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst +++ b/automata/docs/core/agent/tool/builder/symbol_search_tool_builder.rst @@ -1,7 +1,7 @@ -SymbolSearchToolkit +SymbolSearchToolkitBuilder ======================= -``SymbolSearchToolkit`` is a class that helps building tools for +``SymbolSearchToolkitBuilder`` is a class that helps building tools for searching and processing symbols in a codebase using ``SymbolSearch``. It provides functionalities such as building tools, processing queries using built tools, and handling various types of search results. This @@ -11,7 +11,7 @@ processing search queries regarding symbols in a codebase. Overview -------- -``SymbolSearchToolkit`` offers a simple and convenient way to build +``SymbolSearchToolkitBuilder`` offers a simple and convenient way to build and process various tools related to symbol search using the provided ``SymbolSearch`` object. The main features of this class revolve around (1) creating built tools using a list of search tools from @@ -22,8 +22,8 @@ Related Symbols --------------- - ``automata.tests.unit.test_symbol_search_tool.test_build`` -- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkit`` -- ``automata.core.agent.agent.AgentToolkitProvider`` +- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkitBuilder`` +- ``automata.core.agent.agent.AgentToolkitBuilder`` - ``automata.core.tools.tool.Tool`` - ``automata.core.experimental.search.symbol_search.SymbolSearch`` @@ -31,13 +31,13 @@ Example ------- The following example demonstrates how to use -``SymbolSearchToolkit`` to search for symbols in a codebase using +``SymbolSearchToolkitBuilder`` to search for symbols in a codebase using various search tools. .. code:: python from automata.core.tools.builders.symbol_search import ( - SymbolSearchToolkit, + SymbolSearchToolkitBuilder, SearchTool, ) from automata.core.experimental.search.symbol_search import SymbolSearch @@ -45,8 +45,8 @@ various search tools. # Assuming an instance of SymbolSearch symbol_search = SymbolSearch( ... ) - # Create an instance of SymbolSearchToolkit with the SymbolSearch object - tool_builder = SymbolSearchToolkit(symbol_search=symbol_search) + # Create an instance of SymbolSearchToolkitBuilder with the SymbolSearch object + tool_builder = SymbolSearchToolkitBuilder(symbol_search=symbol_search) # Build the tools for symbol searching tools = tool_builder.build() @@ -59,7 +59,7 @@ various search tools. Limitations ----------- -The primary limitation of ``SymbolSearchToolkit`` is that it relies +The primary limitation of ``SymbolSearchToolkitBuilder`` is that it relies on the supported search tools defined by ``SearchTool``. Any additional search tools will need to be added to the ``SearchTool`` enumeration. Furthermore, the currently used processors for processing results are diff --git a/automata/docs/core/base/agent_tool_builder.rst b/automata/docs/core/base/agent_tool_builder.rst index 8a17d5be..ec5570c7 100644 --- a/automata/docs/core/base/agent_tool_builder.rst +++ b/automata/docs/core/base/agent_tool_builder.rst @@ -1,18 +1,18 @@ -AgentToolkitProvider +AgentToolkitBuilder ================ -``AgentToolkitProvider`` is an abstract class for building tools for +``AgentToolkitBuilder`` is an abstract class for building tools for providers. Tools are essential components as they define the -functionality and behavior of an agent. The ``AgentToolkitProvider`` class +functionality and behavior of an agent. The ``AgentToolkitBuilder`` class provides a standard interface for creating tools. This class should be inherited by classes implementing specific tool creation logic. Overview -------- -The primary method in the ``AgentToolkitProvider`` class is ``build()``. +The primary method in the ``AgentToolkitBuilder`` class is ``build()``. This method returns a list of ``Tool`` objects. To implement a custom -tool builder, inherit from the ``AgentToolkitProvider`` class and override +tool builder, inherit from the ``AgentToolkitBuilder`` class and override the ``build`` method to define the tool creation logic. Related Symbols @@ -20,21 +20,21 @@ Related Symbols - ``automata.core.tools.tool.Tool`` - ``automata.core.tools.tool_utils.AgentToolFactory`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` - ``automata.core.tools.builders.py_reader.PyReaderOpenAIToolkit`` Example ------- The following example demonstrates how to create a custom tool builder -that inherits the ``AgentToolkitProvider`` class. +that inherits the ``AgentToolkitBuilder`` class. .. code:: python - from automata.core.agent.agent import AgentToolkitProvider + from automata.core.agent.agent import AgentToolkitBuilder from automata.core.tools.tool import Tool - class CustomToolkit(AgentToolkitProvider): + class CustomToolkit(AgentToolkitBuilder): def build(self) -> List[Tool]: # Implement tool creation logic here tools = [] @@ -43,7 +43,7 @@ that inherits the ``AgentToolkitProvider`` class. Limitations ----------- -As ``AgentToolkitProvider`` is an abstract base class, it does not contain +As ``AgentToolkitBuilder`` is an abstract base class, it does not contain any implementation details for tool building. To leverage this class, you must create a concrete subclass that implements the ``build`` method. diff --git a/automata/docs/core/base/agent_tool_providers.rst b/automata/docs/core/base/agent_tool_providers.rst index ee92196f..82b8fc0c 100644 --- a/automata/docs/core/base/agent_tool_providers.rst +++ b/automata/docs/core/base/agent_tool_providers.rst @@ -24,8 +24,8 @@ Related Symbols - ``automata.core.llm.foundation.LLMIterationResult`` - ``automata.core.llm.providers.available.LLMPlatforms`` - ``automata.core.tools.tool_utils.AgentToolFactory`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` -- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` +- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkitBuilder`` - ``automata.core.tools.registries.OpenAIAutomataAgentToolkitRegistry`` Example diff --git a/automata/docs/core/base/tool.rst b/automata/docs/core/base/tool.rst index c2a32209..b4e83c1e 100644 --- a/automata/docs/core/base/tool.rst +++ b/automata/docs/core/base/tool.rst @@ -25,9 +25,9 @@ Related Symbols - ``automata.tests.unit.test_tool.test_tool_run`` - ``automata.core.llm.providers.openai.OpenAITool`` - ``automata.tests.unit.test_tool.test_tool_instantiation`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider.can_handle`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitBuilder.can_handle`` - ``automata.tests.unit.test_tool.TestTool.run`` -- ``automata.core.agent.agent.AgentToolkitProvider.build`` +- ``automata.core.agent.agent.AgentToolkitBuilder.build`` - ``automata.tests.unit.test_symbol_search_tool.test_build`` - ``automata.core.tools.tool_utils.AgentToolFactory`` diff --git a/automata/docs/core/base/tool/config.rst b/automata/docs/core/base/tool/config.rst index 24324639..b062fd28 100644 --- a/automata/docs/core/base/tool/config.rst +++ b/automata/docs/core/base/tool/config.rst @@ -21,7 +21,7 @@ Related Symbols - ``automata.tests.unit.test_tool.TestTool`` - ``automata.core.tools.tool.Tool.run`` - ``automata.core.llm.providers.openai.OpenAITool`` -- ``automata.core.llm.providers.openai.OpenAIAgentToolkitProvider.can_handle`` +- ``automata.core.llm.providers.openai.OpenAIAgentToolkitBuilder.can_handle`` Example ------- diff --git a/automata/docs/core/coding/py/py_writer.rst b/automata/docs/core/coding/py/py_writer.rst index fcf102be..15af4b25 100644 --- a/automata/docs/core/coding/py/py_writer.rst +++ b/automata/docs/core/coding/py/py_writer.rst @@ -23,8 +23,8 @@ Related Symbols - ``automata.core.code_handling.py.reader.PyReader`` - ``automata.tests.unit.test_py_writer.py_writer`` - ``automata.core.singletons.dependency_factory.create_py_writer`` -- ``automata.tests.unit.test_py_writer_tool.PyWriterOpenAIToolkit`` -- ``automata.core.tools.builders.py_writer.PyWriterToolkit`` +- ``automata.tests.unit.test_py_writer_tool.PyWriterOpenAIToolkitBuilder`` +- ``automata.core.tools.builders.py_writer.PyWriterToolkitBuilder`` Example ------- diff --git a/automata/docs/core/coding/py/writer/class_or_function_not_found.rst b/automata/docs/core/coding/py/writer/class_or_function_not_found.rst index 74e11a93..487fa0b3 100644 --- a/automata/docs/core/coding/py/writer/class_or_function_not_found.rst +++ b/automata/docs/core/coding/py/writer/class_or_function_not_found.rst @@ -22,8 +22,8 @@ Related Symbols - ``automata.core.code_handling.py.reader.PyReader`` - ``automata.core.singletons.dependency_factory.create_py_writer`` -- ``automata.core.tools.builders.py_writer.PyWriterToolkit`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterToolkitBuilder`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` Example ------- diff --git a/automata/docs/core/coding/py/writer/invalid_arguments.rst b/automata/docs/core/coding/py/writer/invalid_arguments.rst index fa45d94e..2826b69f 100644 --- a/automata/docs/core/coding/py/writer/invalid_arguments.rst +++ b/automata/docs/core/coding/py/writer/invalid_arguments.rst @@ -13,10 +13,10 @@ Related Symbols --------------- - ``automata.core.code_handling.py.reader.PyReader`` -- ``automata.core.tools.builders.py_writer.PyWriterToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterToolkitBuilder`` - ``automata.tests.unit.test_py_writer_tool.test_init`` - ``automata.core.singletons.dependency_factory.create_py_writer`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` Usage Example ------------- diff --git a/automata/docs/core/coding/py/writer/module_not_found.rst b/automata/docs/core/coding/py/writer/module_not_found.rst index ed54c731..59b70784 100644 --- a/automata/docs/core/coding/py/writer/module_not_found.rst +++ b/automata/docs/core/coding/py/writer/module_not_found.rst @@ -5,7 +5,7 @@ PyWriter Abstract Syntax Tree (AST) nodes. As a code writer, it provides functionality to create, update, and delete Python modules and their contents. PyWriter is closely related to the ``PyReader`` class and used -in the ``PyWriterToolkit`` class to modify the code state of a given +in the ``PyWriterToolkitBuilder`` class to modify the code state of a given directory of Python files. Overview @@ -22,7 +22,7 @@ Related Symbols --------------- - ``automata.core.code_handling.py.reader.PyReader`` -- ``automata.core.tools.builders.py_writer.PyWriterToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterToolkitBuilder`` - ``automata.core.navigation.directory.DirectoryManager`` - ``automata.core.singletons.py_module_loader.py_module_loader`` - ``automata.core.singletons.dependency_factory.create_py_writer`` diff --git a/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst b/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst index 7cff341d..b9ba4c6b 100644 --- a/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst +++ b/automata/docs/core/llm/providers/open_ai_agent_tool_builder.rst @@ -1,15 +1,15 @@ -OpenAIAgentToolkitProvider +OpenAIAgentToolkitBuilder ====================== -``OpenAIAgentToolkitProvider`` is an abstract class for building tools for -providers. It provides a base class for creating ``AgentToolkitProvider`` +``OpenAIAgentToolkitBuilder`` is an abstract class for building tools for +providers. It provides a base class for creating ``AgentToolkitBuilder`` implementations that work with providers that use OpenAI APIs (e.g., GPT-3). Overview -------- -``OpenAIAgentToolkitProvider`` inherits from ``AgentToolkitProvider`` and +``OpenAIAgentToolkitBuilder`` inherits from ``AgentToolkitBuilder`` and introduces an abstract method ``build_for_open_ai`` which needs to be implemented by any concrete subclasses. This method should return a list of ``OpenAITool`` instances, which are specialized versions of the @@ -18,24 +18,24 @@ of ``OpenAITool`` instances, which are specialized versions of the Related Symbols --------------- -- ``automata.core.agent.agent.AgentToolkitProvider`` +- ``automata.core.agent.agent.AgentToolkitBuilder`` - ``automata.core.llm.providers.openai.OpenAITool`` -- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` -- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkit`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` +- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` +- ``automata.core.tools.builders.symbol_search.SymbolSearchOpenAIToolkitBuilder`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` - ``automata.core.tools.builders.py_reader.PyReaderOpenAIToolkit`` Example ------- The following example demonstrates how to create a custom -``OpenAIAgentToolkitProvider`` implementation. +``OpenAIAgentToolkitBuilder`` implementation. .. code:: python - from automata.core.llm.providers.openai import OpenAIAgentToolkitProvider, OpenAITool + from automata.core.llm.providers.openai import OpenAIAgentToolkitBuilder, OpenAITool - class MyOpenAIToolkit(OpenAIAgentToolkitProvider): + class MyOpenAIToolkit(OpenAIAgentToolkitBuilder): TOOL_TYPE = "custom_tool" def build_for_open_ai(self) -> List[OpenAITool]: @@ -63,7 +63,7 @@ The following example demonstrates how to create a custom Limitations ----------- -``OpenAIAgentToolkitProvider`` is an abstract class and cannot be used +``OpenAIAgentToolkitBuilder`` is an abstract class and cannot be used directly. It must be subclassed with implementations provided for the ``build_for_open_ai`` method. Another limitation is the reliance on the specific OpenAI APIs or tools. @@ -72,5 +72,5 @@ Follow-up Questions: -------------------- - What other abstract methods or properties could be included in - ``OpenAIAgentToolkitProvider`` to simplify building custom - ``AgentToolkitProvider`` implementations for OpenAI providers? + ``OpenAIAgentToolkitBuilder`` to simplify building custom + ``AgentToolkitBuilder`` implementations for OpenAI providers? diff --git a/automata/docs/core/llm/providers/open_ai_tool.rst b/automata/docs/core/llm/providers/open_ai_tool.rst index 9ac6af72..76b4a6a8 100644 --- a/automata/docs/core/llm/providers/open_ai_tool.rst +++ b/automata/docs/core/llm/providers/open_ai_tool.rst @@ -25,8 +25,8 @@ Related Symbols - ``automata.core.tools.tool.Tool`` - ``automata.core.llm.providers.openai.OpenAIFunction`` -- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkit`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` +- ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` Example ------- diff --git a/automata/docs/tests/unit/mock_code_generator.rst b/automata/docs/tests/unit/mock_code_generator.rst index 97c9d2fb..204c4479 100644 --- a/automata/docs/tests/unit/mock_code_generator.rst +++ b/automata/docs/tests/unit/mock_code_generator.rst @@ -27,7 +27,7 @@ Related Symbols - ``automata.core.code_handling.py.writer.PyWriter`` - ``automata.core.memory_store.symbol_code_embedding.SymbolCodeEmbeddingHandler`` - ``automata.core.tools.tool.Tool`` -- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkit`` +- ``automata.core.tools.builders.py_writer.PyWriterOpenAIToolkitBuilder`` Example ------- diff --git a/automata/tests/conftest.py b/automata/tests/conftest.py index 0a5909ed..2bd78c5b 100644 --- a/automata/tests/conftest.py +++ b/automata/tests/conftest.py @@ -124,12 +124,16 @@ def symbol_search(mocker, symbol_graph_mock): """Creates a SymbolSearch object with Mock dependencies for testing""" symbol_similarity_mock = mocker.MagicMock(spec=EmbeddingSimilarityCalculator) symbol_similarity_mock.embedding_handler = mocker.MagicMock(spec=SymbolCodeEmbeddingHandler) + + symbol_code_embedding_handler = mocker.MagicMock(spec=SymbolCodeEmbeddingHandler) + symbol_rank_config_mock = mocker.MagicMock(spec=SymbolRankConfig) symbol_rank_config_mock.validate_config = mocker.MagicMock() return SymbolSearch( symbol_graph_mock, symbol_rank_config_mock, + symbol_code_embedding_handler, symbol_similarity_mock, ) diff --git a/automata/tests/regression/test_symbol_searcher_regression.py b/automata/tests/regression/test_symbol_searcher_regression.py index 50265a2b..7845b817 100644 --- a/automata/tests/regression/test_symbol_searcher_regression.py +++ b/automata/tests/regression/test_symbol_searcher_regression.py @@ -112,7 +112,7 @@ def test_exact_search(symbol_search_live): # noqa : F811 @pytest.mark.regression def test_source_code_retrieval(symbol_search_live): # noqa : F811 - symbols = symbol_search_live.symbol_graph.get_all_supported_symbols() + symbols = symbol_search_live.symbol_graph.get_sorted_supported_symbols() for search in SOURCE_CODE_HITS: symbol = [symbol for symbol in symbols if search[:-1] == symbol.descriptors[-1].name][0] diff --git a/automata/tests/unit/test_context_oracle_tool.py b/automata/tests/unit/test_context_oracle_tool.py index a35863fd..0a78de0f 100644 --- a/automata/tests/unit/test_context_oracle_tool.py +++ b/automata/tests/unit/test_context_oracle_tool.py @@ -3,22 +3,26 @@ import pytest from automata.core.tools.base import Tool -from automata.core.tools.builders.context_oracle import ContextOracleToolkit +from automata.core.tools.builders.context_oracle import ContextOracleToolkitBuilder @pytest.fixture def context_oracle_tool_builder(): - symbol_doc_similarity_mock = MagicMock() - symbol_code_similarity_mock = MagicMock() - return ContextOracleToolkit( - symbol_doc_similarity=symbol_doc_similarity_mock, - symbol_code_similarity=symbol_code_similarity_mock, + symbol_doc_embedding_handler = MagicMock() + symbol_code_embedding_handler = MagicMock() + embedding_similarity_calculator = MagicMock() + + return ContextOracleToolkitBuilder( + symbol_doc_embedding_handler=symbol_doc_embedding_handler, + symbol_code_embedding_handler=symbol_code_embedding_handler, + embedding_similarity_calculator=embedding_similarity_calculator, ) def test_init(context_oracle_tool_builder): - assert isinstance(context_oracle_tool_builder.symbol_code_similarity, MagicMock) - assert isinstance(context_oracle_tool_builder.symbol_doc_similarity, MagicMock) + assert isinstance(context_oracle_tool_builder.embedding_similarity_calculator, MagicMock) + assert isinstance(context_oracle_tool_builder.symbol_doc_embedding_handler, MagicMock) + assert isinstance(context_oracle_tool_builder.symbol_code_embedding_handler, MagicMock) def test_build(context_oracle_tool_builder): diff --git a/automata/tests/unit/test_py_reader_tool.py b/automata/tests/unit/test_py_reader_tool.py index b3e1661b..e87116eb 100644 --- a/automata/tests/unit/test_py_reader_tool.py +++ b/automata/tests/unit/test_py_reader_tool.py @@ -6,7 +6,7 @@ from automata.core.code_handling.py.reader import PyReader from automata.core.singletons.py_module_loader import py_module_loader from automata.core.tools.base import Tool -from automata.core.tools.builders.py_reader import PyReaderToolkit +from automata.core.tools.builders.py_reader import PyReaderToolkitBuilder from automata.core.utils import get_root_py_fpath @@ -26,7 +26,7 @@ def module_loader(): @pytest.fixture def python_retriever_tool_builder(): python_code_retriever = PyReader() - return PyReaderToolkit(py_reader=python_code_retriever) + return PyReaderToolkitBuilder(py_reader=python_code_retriever) def test_init(python_retriever_tool_builder): diff --git a/automata/tests/unit/test_py_writer_tool.py b/automata/tests/unit/test_py_writer_tool.py index 104646d3..238915c5 100644 --- a/automata/tests/unit/test_py_writer_tool.py +++ b/automata/tests/unit/test_py_writer_tool.py @@ -8,7 +8,7 @@ from automata.core.code_handling.py.writer import PyWriter from automata.core.singletons.py_module_loader import py_module_loader from automata.core.tools.base import Tool -from automata.core.tools.builders.py_writer import PyWriterToolkit +from automata.core.tools.builders.py_writer import PyWriterToolkitBuilder from automata.core.utils import get_root_py_fpath @@ -32,7 +32,7 @@ def python_writer_tool_builder(tmpdir): os.chdir(temp_directory) py_reader = PyReader() py_writer = PyWriter(py_reader) - return PyWriterToolkit(py_writer=py_writer) + return PyWriterToolkitBuilder(py_writer=py_writer) def test_init(python_writer_tool_builder): diff --git a/automata/tests/unit/test_symbol_graph.py b/automata/tests/unit/test_symbol_graph.py index 4be7556e..c103b2bc 100644 --- a/automata/tests/unit/test_symbol_graph.py +++ b/automata/tests/unit/test_symbol_graph.py @@ -12,7 +12,7 @@ def test_get_all_symbols(symbol_graph_static_test): # noqa: F811 synchronization_context.register_provider(symbol_graph_static_test) synchronization_context.synchronize() - graph_symbols = symbol_graph_static_test.get_all_supported_symbols() + graph_symbols = symbol_graph_static_test.get_sorted_supported_symbols() assert isinstance(graph_symbols, list) assert all(isinstance(s, Symbol) for s in graph_symbols) @@ -23,7 +23,7 @@ def test_build_real_graph(symbol_graph_static_test): # noqa: F811 synchronization_context.synchronize() all_symbols = sorted( - symbol_graph_static_test.get_all_supported_symbols(), key=lambda x: x.dotpath + symbol_graph_static_test.get_sorted_supported_symbols(), key=lambda x: x.dotpath ) assert isinstance(symbol_graph_static_test, SymbolGraph) diff --git a/automata/tests/unit/test_symbol_search_tool.py b/automata/tests/unit/test_symbol_search_tool.py index 7b9a4d5e..9016bf24 100644 --- a/automata/tests/unit/test_symbol_search_tool.py +++ b/automata/tests/unit/test_symbol_search_tool.py @@ -3,13 +3,13 @@ import pytest from automata.core.tools.base import Tool -from automata.core.tools.builders.symbol_search import SymbolSearchToolkit +from automata.core.tools.builders.symbol_search import SymbolSearchToolkitBuilder @pytest.fixture def symbol_search_tool_builder(): symbol_search_mock = MagicMock() - return SymbolSearchToolkit(symbol_search=symbol_search_mock) + return SymbolSearchToolkitBuilder(symbol_search=symbol_search_mock) def test_init(symbol_search_tool_builder): diff --git a/automata/tests/unit/test_synchronizer.py b/automata/tests/unit/test_synchronizer.py index 3e3b0fa3..b0c1a24a 100644 --- a/automata/tests/unit/test_synchronizer.py +++ b/automata/tests/unit/test_synchronizer.py @@ -53,11 +53,11 @@ def test_build_graph_and_handler_and_synchronize( from automata.core.context_providers.symbol_synchronization import SymbolProviderRegistry SymbolProviderRegistry._providers = set([]) - SymbolProviderRegistry.supported_symbols = [] + SymbolProviderRegistry.sorted_supported_symbols = [] synchronization_context.register_provider(symbol_graph_tester) synchronization_context.register_provider(cem) synchronization_context.synchronize() - assert len(symbol_graph_tester.get_all_supported_symbols()) == 1 - assert len(cem.get_all_supported_symbols()) == 1 # post synchronization + assert len(symbol_graph_tester.get_sorted_supported_symbols()) == 1 + assert len(cem.get_sorted_supported_symbols()) == 1 # post synchronization diff --git a/automata/tests/utils/factories.py b/automata/tests/utils/factories.py index db674de5..4cf07315 100644 --- a/automata/tests/utils/factories.py +++ b/automata/tests/utils/factories.py @@ -40,6 +40,11 @@ def symbol_search_live() -> SymbolSearch: code_embedding_fpath = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" ) + code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) + embedding_provider = OpenAIEmbeddingProvider() + embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) + code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) + embedding_provider = OpenAIEmbeddingProvider() symbol_graph = SymbolGraph(scip_path) @@ -48,4 +53,6 @@ def symbol_search_live() -> SymbolSearch: symbol_rank_config = SymbolRankConfig() - return SymbolSearch(symbol_graph, symbol_rank_config, embedding_similarity_calculator) + return SymbolSearch( + symbol_graph, symbol_rank_config, code_embedding_handler, embedding_similarity_calculator + ) From 265b4bab22f223d98cd18d339014ba9cb341b086 Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 13:38:58 -0400 Subject: [PATCH 05/14] Correcting type errors --- automata/core/embedding/base.py | 13 ++++-- .../memory_store/symbol_code_embedding.py | 2 +- .../core/memory_store/symbol_doc_embedding.py | 16 +++++-- .../core/singletons/dependency_factory.py | 46 +++++++++++++++---- automata/core/symbol_embedding/builders.py | 18 ++------ automata/core/tools/factory.py | 9 ++-- 6 files changed, 68 insertions(+), 36 deletions(-) diff --git a/automata/core/embedding/base.py b/automata/core/embedding/base.py index 355b5144..74385b9e 100644 --- a/automata/core/embedding/base.py +++ b/automata/core/embedding/base.py @@ -1,11 +1,11 @@ import abc import logging from enum import Enum -from typing import Any, Dict, TypeVar, Generic, List, Sequence -from automata.core.base.database.vector import VectorDatabaseProvider +from typing import Any, Dict, Sequence import numpy as np +from automata.core.base.database.vector import VectorDatabaseProvider from automata.core.symbol.base import Symbol logger = logging.getLogger(__name__) @@ -52,10 +52,13 @@ def build(self, source_text: str, symbol: Symbol) -> Any: """An abstract method to build the embedding for a symbol""" pass - @abc.abstractmethod - def fetch_embedding_input(self, symbol: Symbol) -> str: + def fetch_embedding_source_code(self, symbol: Symbol) -> str: """An abstract method for embedding the context is the source code itself.""" - pass + from automata.core.symbol.symbol_utils import ( # imported late for mocking + convert_to_fst_object, + ) + + return str(convert_to_fst_object(symbol)) class EmbeddingHandler(abc.ABC): diff --git a/automata/core/memory_store/symbol_code_embedding.py b/automata/core/memory_store/symbol_code_embedding.py index 59c36cc6..df8fb8c8 100644 --- a/automata/core/memory_store/symbol_code_embedding.py +++ b/automata/core/memory_store/symbol_code_embedding.py @@ -26,7 +26,7 @@ def get_embedding(self, symbol: Symbol) -> SymbolCodeEmbedding: def process_embedding(self, symbol: Symbol) -> None: """Process the embedding for a `Symbol` by updating if the source code has changed.""" - source_code = self.embedding_builder.fetch_embedding_input(symbol) + source_code = self.embedding_builder.fetch_embedding_source_code(symbol) if not source_code: raise ValueError(f"Symbol {symbol} has no source code") diff --git a/automata/core/memory_store/symbol_doc_embedding.py b/automata/core/memory_store/symbol_doc_embedding.py index 4f0e8644..8cf4d2cd 100644 --- a/automata/core/memory_store/symbol_doc_embedding.py +++ b/automata/core/memory_store/symbol_doc_embedding.py @@ -26,16 +26,22 @@ def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding: return self.embedding_db.get(symbol.dotpath) def process_embedding(self, symbol: Symbol) -> None: - source_code = self.embedding_builder.fetch_embedding_input(symbol) + """ + Process the embedding for a `Symbol` - + Currently we do nothing if the symbol is already contained + """ + + source_code = self.embedding_builder.fetch_embedding_source_code(symbol) if not source_code: raise ValueError(f"Symbol {symbol} has no source code") if self.embedding_db.contains(symbol.dotpath): - self.update_existing_embedding(source_code, symbol) - else: - symbol_embedding = self.embedding_builder.build(source_code, symbol) - self.embedding_db.add(symbol_embedding) + # self.update_existing_embedding(source_code, symbol) + return + # else: + symbol_embedding = self.embedding_builder.build(source_code, symbol) + self.embedding_db.add(symbol_embedding) def update_existing_embedding(self, source_code: str, symbol: Symbol) -> None: existing_embedding = self.embedding_db.get(symbol.dotpath) diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index 08bd5c37..f7506918 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -1,14 +1,16 @@ -import networkx as nx import os from functools import lru_cache from typing import Any, Dict, List, Set, Tuple +import networkx as nx + from automata.config.base import ConfigCategory from automata.core.agent.agent import AgentToolkitNames from automata.core.agent.error import AgentGeneralError, UnknownToolError from automata.core.base.patterns.singleton import Singleton from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.experimental.search.rank import SymbolRank, SymbolRankConfig from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.llm.providers.openai import ( @@ -23,11 +25,12 @@ ) from automata.core.symbol.graph import SymbolGraph from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase -from automata.core.symbol_embedding.builders import SymbolDocEmbeddingBuilder -from automata.core.embedding.base import EmbeddingSimilarityCalculator +from automata.core.symbol_embedding.builders import ( + SymbolCodeEmbeddingBuilder, + SymbolDocEmbeddingBuilder, +) from automata.core.tools.factory import AgentToolFactory, logger from automata.core.utils import get_config_fpath -from automata.core.symbol_embedding.builders import SymbolCodeEmbeddingBuilder class DependencyFactory(metaclass=Singleton): @@ -59,7 +62,7 @@ def __init__(self, **kwargs) -> None: symbol_rank_config (SymbolRankConfig()) py_context_retriever_config (PyContextRetrieverConfig()) coding_project_path (get_root_py_fpath()) - doc_completion_provider (OpenAIChatCompletionProvider()) + llm_completion_provider (OpenAIChatCompletionProvider()) } """ self._instances: Dict[str, Any] = {} @@ -158,16 +161,41 @@ def create_symbol_code_embedding_handler(self) -> SymbolCodeEmbeddingHandler: embedding_provider (OpenAIEmbedding()) """ - default_code_embedding_fpath = os.path.join( - get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" - ) code_embedding_db = JSONSymbolEmbeddingVectorDatabase( - self.overrides.get("symbol_rank_config", default_code_embedding_fpath) + self.overrides.get( + "code_embedding_fpath", DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH + ) ) embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) return SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) + @lru_cache() + def create_symbol_doc_embedding_handler(self) -> SymbolDocEmbeddingHandler: + """ + Associated Keyword Args: + doc_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) + embedding_provider (OpenAIEmbedding()) + """ + + doc_embedding_db = JSONSymbolEmbeddingVectorDatabase( + self.overrides.get( + "doc_embedding_fpath", DependencyFactory.DEFAULT_DOC_EMBEDDING_FPATH + ) + ) + embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) + llm_completion_provider = self.overrides.get( + "llm_completion_provider", OpenAIChatCompletionProvider() + ) + symbol_search = self.get("symbol_search") + retriver = self.get("py_context_retriever") + + embedding_builder = SymbolDocEmbeddingBuilder( + embedding_provider, llm_completion_provider, symbol_search, retriver + ) + + return SymbolDocEmbeddingHandler(doc_embedding_db, embedding_builder) + @lru_cache() def create_symbol_search(self) -> SymbolSearch: """ diff --git a/automata/core/symbol_embedding/builders.py b/automata/core/symbol_embedding/builders.py index e3ce1761..8be686df 100644 --- a/automata/core/symbol_embedding/builders.py +++ b/automata/core/symbol_embedding/builders.py @@ -3,15 +3,12 @@ from jinja2 import Template from automata.config.prompt.doc_generation import DEFAULT_DOC_GENERATION_PROMPT -from automata.core.embedding.base import EmbeddingVectorProvider, EmbeddingBuilder +from automata.core.embedding.base import EmbeddingBuilder, EmbeddingVectorProvider from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.llm.foundation import LLMChatCompletionProvider from automata.core.retrievers.py.context import PyContextRetriever from automata.core.symbol.base import Symbol -from automata.core.symbol_embedding.base import ( - SymbolCodeEmbedding, - SymbolDocEmbedding, -) +from automata.core.symbol_embedding.base import SymbolCodeEmbedding, SymbolDocEmbedding class SymbolCodeEmbeddingBuilder(EmbeddingBuilder): @@ -21,16 +18,11 @@ def build(self, source_code: str, symbol: Symbol) -> SymbolCodeEmbedding: embedding_vector = self.embedding_provider.build_embedding_vector(source_code) return SymbolCodeEmbedding(symbol, source_code, embedding_vector) - def fetch_embedding_input(self, symbol: Symbol) -> str: - """An abstract method for embedding the context is the source code itself.""" - from automata.core.symbol.symbol_utils import ( # imported late for mocking - convert_to_fst_object, - ) - - return str(convert_to_fst_object(symbol)) - class SymbolDocEmbeddingBuilder(EmbeddingBuilder): + """Builds `Symbol` documentation embeddings.""" + + # TODO - Make this class more modular and consider it's structure def __init__( self, embedding_provider: EmbeddingVectorProvider, diff --git a/automata/core/tools/factory.py b/automata/core/tools/factory.py index ef1b56ac..2c8884a4 100644 --- a/automata/core/tools/factory.py +++ b/automata/core/tools/factory.py @@ -6,8 +6,10 @@ from automata.core.agent.error import UnknownToolError from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter -from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.embedding.base import EmbeddingSimilarityCalculator +from automata.core.experimental.search.symbol_search import SymbolSearch +from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler +from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler from automata.core.tools.base import Tool logger = logging.getLogger(__name__) @@ -21,8 +23,9 @@ class AgentToolFactory: AgentToolkitNames.PY_WRITER: [("py_writer", PyWriter)], AgentToolkitNames.SYMBOL_SEARCH: [("symbol_search", SymbolSearch)], AgentToolkitNames.CONTEXT_ORACLE: [ - ("symbol_doc_similarity", EmbeddingSimilarityCalculator), - ("symbol_code_similarity", EmbeddingSimilarityCalculator), + ("symbol_doc_embedding_handler", SymbolDocEmbeddingHandler), + ("symbol_code_embedding_handler", SymbolCodeEmbeddingHandler), + ("embedding_similarity_calculator", EmbeddingSimilarityCalculator), ], } From 950910e27a4d6e30ca1c5689279dde4ef6f9e6e9 Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 14:58:03 -0400 Subject: [PATCH 06/14] refresh embeddings --- automata/cli/scripts/run_code_embedding.py | 52 +++++++++++------- automata/config/symbol/index.scip | Bin 2287842 -> 2354098 bytes .../config/symbol/symbol_code_embedding.json | 4 +- .../core/singletons/dependency_factory.py | 22 +++++++- automata/core/symbol_embedding/base.py | 10 +++- install_indexing.sh | 0 6 files changed, 61 insertions(+), 27 deletions(-) mode change 100644 => 100755 install_indexing.sh diff --git a/automata/cli/scripts/run_code_embedding.py b/automata/cli/scripts/run_code_embedding.py index 46476893..ee081580 100644 --- a/automata/cli/scripts/run_code_embedding.py +++ b/automata/cli/scripts/run_code_embedding.py @@ -4,8 +4,12 @@ from tqdm import tqdm from automata.config.base import ConfigCategory +from automata.core.context_providers.symbol_synchronization import ( + SymbolProviderSynchronizationContext, +) from automata.core.llm.providers.openai import OpenAIEmbeddingProvider from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler +from automata.core.singletons.dependency_factory import dependency_factory from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.symbol_utils import get_rankable_symbols @@ -23,36 +27,46 @@ def main(*args, **kwargs) -> str: py_module_loader.initialize() - scip_path = os.path.join( + scip_fpath = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") ) - embedding_path = os.path.join( + code_embedding_fpath = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("embedding-file", "symbol_code_embedding.json"), ) + embedding_provider = OpenAIEmbeddingProvider() + + dependency_factory.set_overrides( + **{ + "symbol_graph_scip_fpath": scip_fpath, + "code_embedding_fpath": code_embedding_fpath, + "embedding_provider": embedding_provider, + } + ) - symbol_graph = SymbolGraph(scip_path) + symbol_graph: SymbolGraph = dependency_factory.get("symbol_graph") + symbol_code_embedding_handler: SymbolCodeEmbeddingHandler = dependency_factory.get( + "symbol_code_embedding_handler" + ) + # Mock synchronization to allow us to build the initial embedding handler + symbol_graph.is_synchronized = True + symbol_code_embedding_handler.is_synchronized = True all_defined_symbols = symbol_graph.get_sorted_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - embedding_db = JSONSymbolEmbeddingVectorDatabase(embedding_path) - embedding_provider = OpenAIEmbeddingProvider() - embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) - embedding_handler = SymbolCodeEmbeddingHandler(embedding_db, embedding_builder) - for symbol in tqdm(filtered_symbols): - try: - embedding_handler.process_embedding(symbol) - embedding_db.save() - except Exception as e: - logger.error(f"Failed to update embedding for {symbol.dotpath}: {e}") - - for symbol in embedding_handler.get_sorted_supported_symbols(): - if symbol not in filtered_symbols: - logger.info(f"Discarding stale symbol {symbol}...") - embedding_db.discard(symbol.dotpath) - embedding_db.save() + # try: + symbol_code_embedding_handler.process_embedding(symbol) + symbol_code_embedding_handler.embedding_db.save() + # except Exception as e: + # logger.error(f"Failed to update embedding for {symbol.dotpath}: {e}") + + # for symbol in symbol_code_embedding_handler.get_sorted_supported_symbols(): + # if symbol not in filtered_symbols: + # logger.info(f"Discarding stale symbol {symbol}...") + # symbol_code_embedding_handler.embedding_db.discard(symbol.dotpath) + # symbol_code_embedding_handler.embedding_db.save() return "Success" diff --git a/automata/config/symbol/index.scip b/automata/config/symbol/index.scip index b9fb402fc94069afa600a6c092cd480ef2ad73da..5e067e7113825109f20c4555a86476379542afff 100644 GIT binary patch literal 2354098 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�{ zp;;8`7GdWQ#XEa8Z(DE(jr3jwBFaO*z)d{quY4A8?Fw~h4a!-s$0RR;%g&$8jBzrI zIZ09E#oz>PS6BB!PvAntu)BKt=f|*=o=aVAz;n9>Mw-oYyGHL=Fwf!4JGdLc$q#yG zJQUFu_2B99#~6>|qT3=P=!IbPab~Kxk-Qk`EQxa$GC($t5ZYM+S%t%3; z1Ooh}Ah>0A(ujI$nV}RsdTW?t%!}lW7lFW2=nH2fZ~zFTCx`+_l!mmo;>nKTrRpOp zawei8!ez&|cytT7lW3wdmYGC8A+ASAAYX;;YJ)UrQ~6cMeeoNWQ5Plnstr-?hIgt0 zm(w_vg_@9tW{7C}s@^*UBKx6@Nw>Y~@HzkLHU{+RknEy1WK;iidx!6+{~JK&>CO|{ zCwxHt>IR_PQ)iZ~6Ra=*RseIH*&v(E5_6DIduG?MmN04={C7LLVA$r9yM3q&J^{Sm zZR~@t@+=x9rG&6Ogf+>zgDj-GN00c>LgI8jc8}oPA9V1^tQoUHqp2OLVOYy^3Kfh|-e2p{cnm(JZUzT3lJddkmxAx&Dc)VJ)3rmk;s;!m%97p zOY{gMy>`uJ@sd5#YquEkC9=xMpM9NAIrw#c;^5c$ii1Jh*Xuh4ZEY5OeYjiF)@Fdq z`Y!R3%_Wz2_ZGbb#<|=-Bp(T$xD09OH}99E+U461`$MYHVdmu{r#%d~*iy}%Y|A$N zeJf?e%HH(%!BiFE!)A>8*K84tv5(7&`;9*FWS9$-`}>EBJ|kH%wq=_y`C_ai><_*m zZ8sK)`bgVBR*VfC7qlgZ277+ c+S#iNO3E94^zg26nW(AF+kOVWtzHp&rgM`}Xv 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
Gr&9!&QS<-<4AT@K{ecpi7a1G`N z2FGXfrNvZfo^M60-}4F*$swI@Ia*&fdR{+YpEi2_!W(sBqaiBuw;wu0m(1_{qo-jq zzo7E{h89UBohQeY=!+(OvljWqu}=9_iXM+xw%~IlWDZh{^ zrN#vg5DIhzQcIk}Ya0ay1(RGz4(!JW>?oA;bFSTd? zbV3}MEoONui&q`}9)YB;GyclHB$RoyynS~FGLKw$pasYsAwcfseVX5Z+{-QPK>%_S zM*fHBp5qNh{-!q+%Py_NyJoHAK8$zOmbr^6&JVi>y{Y0{ANe7MLI4ne8}Zju8XT98kkl>CmUOv+TdR-uH*WOSs#r#2SPIclp7=-2M?#z@&fK-n#;gz;UDv3} z_Af?IiYqvAmOuN^2$CzsGrGCJdp{OIHnjO{kS;3Nvj)o}q?0|K{di<|lYEZ?(x0Vg z+OgmybzIs0rO4*8oH4I2MUWO}&7Y1Dc-D4&qjz2QDoLPV+@Vm!t(Ss`-60V2iz$OV~c#WUxCa4&& zHwno^Uz*RP=k-z{l`B$?xPI@>1D#Slv4!ylfI73rOMv(4W|2ywV_7MCq2*RRj+xU# zQ)ulcqDq*7L$tq%SZhd_ztYA6Vzp>w=Lk>LyhwE1kcwj4F`XxA+wT+2JZ;-g-3xWa zZ?EQOjfsUBV|Er7ZnhuGyLx--uE^@m7shn?BezzLE0JLD<#Ps?xL=JZ;m1kQ{!v7! zUw{{93;? zYjPWyPu*?$3`&oF>Y~{T0n9Yf{)d@YlnG!rYxPhk6rkjx79iK#$ zj|1`D_>6jRrJ&)KFysIL+JC)E345WqeWNf>lM?C7EBUlLmGAeQCCp5W)oPc;2am985YQh@K>Dtb`(eP6rVY@gh;g5ao1< z%dGg=%rgBY4YAFkUj}^-KPu+Sg)~X;tf5o00Qkz~1r&hejeL$Z8Nf>mc{Cg-8n`1x zpAEF2U6$jTxLl?UAqwfEj5=#;IKOG;>^Z(YpLsrS`zj7dFR-_``(8}wG&_1mM5FJ4 z`CLce0}5x&>YxI@Xk?NK%%^_>1{sri8W-a$XRZauy4}G>=yo^NVFxjLdr65S{Xf z$pr|UEf;&~yoB6gArhE-W}&=*^~+{;-i!vMI3+`l=N!kHvpDO7eVRM#v ztEN%$kx?ySeMIEiAZ%DL5?pz*)Wih;5To;%KPVeGwcY*#{>;sd2*apE$+c^zLPnc0 zj#>=khtdvQ+Wv$m*R}j^Kz2i!?pt;H$Jt5KK{z{g{y`)J!4QjKwvdP$!8}<->yk!j z9Ybxsc*fPDOP9iW@vQ5M()3#|j;{UU4MF4JfOgK3A*Z2qyOd2>+@SrU{u6|_apWr) zee7PUkMV{2k}WO+z9@xlMJ>rbhg=(KNw%~lDt6jQCL7p-_Ll?O+wS<#jSRiQBAe_L z7OAyY7>$if@Y62rU0JbKT3*EY44aY8<*94}J%NCn81=c=SQL2|^Dgv?wXF>!O)B>3 zKAUEzwnqSK+`hx3d>F?isJJ~G!=T9c+a7SQvF(BO8rubG`6eYxe5 zj`J70VVFnUD2x3JH4D$36s}$GDahrE?i?KRnSck&lZ+JFct}S7JKSvzZN_2&v>A)} z-Dd2ykhB?lE!=I!U=UtMGbm3|aaQ+(9DSf(e{H||=9Z`}=0 z+=AR;CFZ=M6+J3nM;|CpdQ`5?BqZ{E4Q}e*ovrAgyCwXo+D{ega>{w_icD& zdm=9muVs8?Ooo!=kq^ikKY7{bSsWQ)!OSDWbl)l*5t2r75@D5#4F?)Ms$5)MQr0I< zmMsuuXag!&e=ZynW#eDBG9axR(4%^I%&2T(9GaggFOYjEEdeInX|>JtGYulJt~EEEt^ zzX@5=NAGx4L$qo*MEV)`?k6WF9zDJ@mAroc@x5!wM^lqji3Ls25rif5J@=*$}1B%$${t%*ij+G<=aHgS{|`%?a~*@<(EU^#JIK#!a{UF!vO zi~!b0Mn-F79EtfwT%FgEnDao*#pd=925NXekBc4GJPOpT@268$1W$u!Mk7g;G5K;S zDV--1Af9&2#fb;?v11nUv*oN|?idcnb8+(B`k>vh+Zi0=rA-1P17h|P0Fuo<1O!e4 z6>$07#Tr!rK6m-jW$SY>l}-a!(3QS^P6Lbu*J?KQ1nPek#@?4A%395b+`%~hNQ;j$ zt1}*vo9)uGVb!+3aEV>u2^3Z4gmm`>$@&_Ft{p_LJ1#hV8F6spk&B z?T|VEgbIASqt7FdtLhv8`-Vf1j<(6|{&RJ-O&m(XoWO;fbuNxB7RlO$e(`P)rmIxgR@TKfw^jfrm94eQIv<07l;z^oUxGzAgA8Z9X+p zcmSL4OAX>y5boH`Y}FprZ1UOUVe;!{@(xYFEdGN{TKoq!TYM7vw_x$>Oys%2e=DR0 z|L+k~I|cx_?Zw?mbq3#d;^&tmv`yX`yih;e#Gxa2^OLtOy-`2(JGMD9_-}9C;J4VqbMco-SBrWc(*>g7km}m zeQ#$A+R?cz*XAm9P`|K#4v$rAhSEEf)UpiS_gV)-lcCF76udWlHw-NbP{Mx2CZ;0^VZRDJcUz=c=CcylSPNNq=P??3!{UocTv9Zv4 zVA}uI1Jl8@9-w678MGbV2H<$N= zIhB$2Bj+8XPTA$nbq}Dp>dSC755P2EqIZC8ny8e1>3in@+BHj|Y#aavEg^5-#vtVI zE}?ookgfqg1wOqBW77bz=@ohgm~5h^eU$CHj6E2#jsYNa`Ea`+l=|f1$%kkcV3JNv zQP6q*!!2kQKp#e!&-^g8Ccu-A(J8#MFufHbfgxloHYwVwLgpa(~m?-+^SVa@{NSnYv~^w zmZW^a5?Tg#_QO#nWapF`P_-{yp;ju?_k=p5q$&`#XVEGsUCJ&4u$HMn!lrd7!7#vU z!>tQtft~ixqyBVIkOI1@jJwyV?m)(XSIIH5 zp5gxCUHyVi-BT)nw*gMP8t^u7umLemSjncmEvC{hfV$8N6l}@`B@+1miY1`DuPCzeE;PnLq_I_3eLMwgjIY63o@~86CrTJcllZ`}K0$Ao%MnxNp@^3|y`pJ;i z{DS`5q~JL!0P2Qln~?Wte-TycCP`NNsG5B)#ovypZ@ZkWd9(leYMWh-SPaKrM;=t2 zWkhPoTZtE;NL#cDC2RfV|^{yQP=EGA%xu zEo_~ocQ^CD8}X-?RIP?nE|I7J@U0cWR#5EN_((;o%M?EC-$s>iq;zQC+Cp%85sq=( z{&kC|&IA45H7xr7JfegxEo3v$^9a2J6}NCm*CvqW|KDwa#kQPNaLYgV+YT)M%RaR( za4|XSGoR-sSdDJn8_r13ciHG>orW{=z0+%B!^`*9fv>+VTEv{)9EAK|d~bCK`K3Yz z_a6a3$n$~iP|81mkS_sfdPW~gjOsstkUu5jZtN;f-*hgl1B_K%Hv9lW9#FtPfROhS zLVl&*^BF>35b$963Df;QfRO(IgnTK#kSe8W>j*-9>Tu2brBoptJt~Lf+ADNH7TrUVcN!i=l+2_b*z zV2e-avXy+K;=u2KQBBBZ|5=~PpDJmn*m`zG&E`3yh)?H1rFuvma;d1}XNprr>!3xk z8CC!}gWMLHB-J}MzqZFW2>K07GF5n9qzO`W&0%G~Z`Cy$Akhis-{K>b{|1N@Q2vza z-LmJP`sHxQGoOLL@ozbFG~^nI@0HeYuQ8Quw(e>4tz>f@F%)`=R+-dkYqK71b;_GH zwE5VqVI2<2a;pdx@U?BCSwoxO%^KQ#Y}QaE7o`&ftm<~3v8p?Qz^aaKu4avzHN<_y zs@~W##?;>=`r1ybzO==b-YKP&K4HP6N*ArXIGZXNN#hlQ0SFQ#`R%@hWY^Io6n8`dZr%L$(%^T3OqfJLQ1v@{g$7|#p ziOB_6>F|q*J)&^oKvUQv3LF~mLUY0+F#HwpbCsGVzN#`r#EsP8g}w`Qs0L%88MI%z zS_dM^HCaq0WprU;vi_8j$?U1O>VVloA5iq^!rQ6vMV~xuF|Zlz!OIr*V840ca3!XN z+r4LQ>y>LaYBX|yr-)u@If{D+m-~uMXFYBF_Q~xCBR$sd6S3`m>UYCTtgEwnWng$S z3p6qo?gg^>saMWl+Qdw+!{4d{QH&4z|f_%b+4Z| zTVGo@26936*u`+mr0}g6v6rufn^?PVa(&`%NPUx=o5w}IY2hN9jSy~a#y7cT`6ko| zf${|IgdZ3APJQAc0|zU5cV~zCrGOj_M-2%>KQVxh&Eb*n#z%dFN3J|bSKO~a4u6z5 zb#5vQ@W{UeQtkmB`6t7)Xq70*_ku-9z84%y@{`G1Qye83uvF3eKuP{)m=>x6Ecw3w zV9ED`0ZXPEnuh>O4(iUKKcFq0n!iJ45Xx`)7B4Jw>mHJ{~i8(@}` z7IZQ-cK~$qJb;!wx*JtLI1*{vz(gMXz{*i6I;U=%MUScyKT~aGl zfO91?IaFCD?f82#9g`qv`2r9Crbsy-)2YM-7@JdtGDF5ZLG>gdK~}Dw6WlrW6Ipo! zw8~s@prDb81esZn{S|0>kuzat~G#Z_p@*^V6^pO8Q41v!IT3Mz~OfH0^nNyN2j6ry9QkQmk}kT7xtUMul;8cC7ie0TEdcUk=~m~ z=W}zJ=ZTqA(Ma66bN4|Z|1txBD0b-iBpR55>$Yp+Za2e!+tF+T^n$Bi1JetZ;Ie~N zg3!8y-~RvXy?JmP*?A|(BnsWd1W15M;$RXak~j+>P`FPX-5>}a-MpG0n^IG)LZK=_ zRI^Y8RTW60rB+L_?xQVPhb7ChC0UX$*&g4vJRU2o8SiRmZI3mcU5~usV`A4{d;Zwi z*w~G5Y{bU?zW4H~s;oi*%&g2(jKk3)lUez`_ucP%-w{v5a*X|q@7XuMEpC##L-Sjs zsqM_uHMRYNpWiR`#L^jcgw%d^gs~-hs*Pl~H&$T>vT8IFTc^ghAH-eHzJ2?ocUK|7 zK5ubr=R4MxXkYz-3fmH?sjZC>J^o8wN@uZ$!!6Q?%^r%I8nIt5;Sg}ufx^rx|{1+j04dY*WrQslhSLBFNvm(|E*!J)!V!g z-B7a{%In=lxthtOGx@CbZglDGo0c-}(OFycZt7tw{WwJ)@e+YSJ4TD(XX?A8lzWS7 zQ&lqsy+SFq^_js%?^9bv6my7m&(=>$?{g(%Qhl}@r>m1Mg9Cjixfz)>V5yTK?GplCV0m5Hf~2$1FjC3*@J^G0q* zQx8p`s4BD}AiGp~Q3<9vQ0khRQByHBYl8L`Kx+&%!)Nk}hzvB&Tcmv6Bi0?N@0YS} zfRjvagbmdbPH(EIXd++lQft?dImwlg-1e)R?mq1vovEAZPe=(jcF){qcI3?8Gu)=8 z-T}#Zw+TLlbxpD{w8syD<(lh9rT4h8$z67)Zk~O`rN*B-0K&;$F3d%!`Y=#+L~@!5bQ(Fbm(xfPrQB$*8fcZOGMc>f9+uyJ{ld*_k=qM5UW_a+ zE!8HJg?e@~0+gF!f zUWzQ=ynB0bDYAI;;!@)yBeqT_+eBHWU6nj)< zdTJgzRz{X9r8h+w*{u_6%Z)%=Z|lju2D^e(Th-gyy_Y~+ka-5ZJz=jsgP=rm+FuKD z8blo!Ks_i|r^|NbESC2s8C23I{U-)%NS|;v2-OA~P!G}2!DH2FGL%Q$vYLj6fw*=d zE+B;%>Il`2LJZO%hS1Pxg*P5_f5Qeb(2WueVxYrLXzYylDvcOq5VeU_N$0MdLD+>C z;}7m3;oLqrF;lH`JMYXgh>M}BBo6HnErw4_6xS zi;fDkA+s`f6sm|o8*Xg%UNR||Fx)oa$6x}NkKxlJwICls>30c}qt~Th@!9c86QvB| z=h}^a1QA<=th4D1?;=mk81@4*Qt&9;7V=^6i1T82FkBnF_=kkZk=xR5`jZ!RmNafp z>^O474;=X|AabN_%I_gV&YmMPXKI5zzeiX-tDpJttmBXR z0~7wvhG%LBe@HSuf9RwqNyZ#q=cmrs5W1+_?epl)Se4?rT`C%WBY+F#=bvIe>hsl{ zk4l%Z&tpF7m;H6BW|u6$rg4!#a4x{8`5R6?t9_xR)8Cg?%t={L26Vltwd-6MnKhpX zPzgZ!+2?Bmv}k#}vWnQgAWQ2n)Z;Lx6`zk^lq{g-4Pl&Df-sei`9N(mN5v=$|3K+RqC5U6xv`9_dcx-7l;4qsKe1aV0w)?Gw$ z%g^~+f()C5#yE8s549mT%jSsjbfu7HPJgMq@zN3NLWvI*-G5)ik;LO%_aFx40eiiJ z(l>mLJ*GIdS)~_;Mk-XBM%qm_hhjfwkT09J{aPRH%dN6*kf|pvs!lIsVwo#dr&^Lc z8X>HVP^xry3Wb+p4X{(aRxohtz1$bB@Z4_^tNq z+Qjr8sfR$^_52wTM9=F8gZMO^q$ED{Ic;?Oz1}h4x8rYKM2ZYFx}DWsA3Td9Iyd;P z;;Lq?bXWt=f?XaeC+WC;?n13fM^L(e8Cyr&r8yfU7vB~bUJrS9ucZ?yjsytF4O!9s z9vU05g(s(aq@>MPpZb8nNugC5FSGMN_f{sMIdwM%Mod81{FWPI)A|#d)})b+3Ch zSccZ%s+t7lrLzmQEhx-t-FCogEjPF7hF}hc00H9VV;y@Gzr*0WsDLe zAd$=ANpl53qL-$hv%JLY(emO={iRv_>>^&ebyqrLV?4{4Wa_ZjjRx==Sx#vZ{+EMe zz7zi4mry zJEsd8rFs&f@4?X3KB2j}yH^9|juKMt4PJ36!(zAQuDnQbjYuMN@9K>o1rZ98C3zdB ztC>>3)3#p;cGghZHq-B~OwI05zf+ajD@u>=B8nyR)D3O^djxskXbdMAR*WS12ZW=*LM7$5(?YC0F(x|XT((c!Qrv3_HcyJoG-)=D5ZZ)+P zuUs#aFx;OxTYJL5&LQu3+H(kG;#HhObWKiIS~!Tj`ZNcTS5NdC-=iB=T4H3%ctqE* z^k`Jzc;_a1 z8{T>QttDz4gAS^(=2Px;P%YVBPHUGPls*BH#kxkM_q$@tc359)q^LJ|46-JQ@j#T<>*7sv6?@4Cr6*YO_$evvxX)o}mv3!ffAiMTjfJap z3q%dB)=&%Tb;CScs;~_32xc=z(r6GIi6%&i3)HM_t-F73&DzlLaV<3NPQ%BYy9)Ef zjy3tD=N^2;_%@DV@OU1e++nc!=73mw-f1&k7?9<-nEaRL?g z{2DUy^gT~w&v>+fhMoE&x+TSKJ1Dq+fi_> ztwt#+a)1*r+hWp__KD=oEM&X7$(iIb=1_a*PIKK|p(c*<)=XlPQam*be80o+u}T zDzP6y4&CX@u`5_J>btfQ88xm!`smmx1JW4|{FBCZ;}PA-Es1qcj&(|BZHQdPEU?~# z(M=foI6tdFkvvgO>tBX;WSDy063E43GBR4d94;kKXk%pu6rF)FQErFSeEDNk4a} z8Y8c(zB8Np@9RW&+=d-CWjT)1)+{kF`JyRpnqn&Xa>%BszNWXf78L$#93GWKDyL@9 z4Jna&U=CVewtQAuxOH_%e7v5Btt&9iH2*WJ=)aYObsLG=6h0{NE&(d#fwfizmr zJ$dvQkbhASYh^xw{Fj30vz`HY$PCMqrg(%NMKcLAxPz^b-Qw6JtCd?h|#uCvS><+b;WCo{dWA5`r z3o`W99Wn+}eAAV{4dFN&W=mrHaCom!8l)PKjgiZvwj-R2M>CI=fA7!sS7*ZeF1Jox zJZi(mxTfAR6y!j|!S6SUwGU+XL6iDRAt7ocplLB%uyU@Vd zt<_YVlXABy9R(6UuaF{T?#=u6 zi@)M8bEwx|SxPqZI;+b!&3&=+n`Un8-?wOiLScv0bI0d*1hFQIf@P#&)@F6Lj0_&l zGEK>EnDoq#Y3`Vz7}hkkp^Wj`k9CQ zW>o*pj5T;|`Avitn^)G7>1dAq;#2$m%453t80Ict+U}Y-u}WLHUsWP=|5^}hxVlkB z>2WQWtjd`4sL9`~`~iy_wMPLoc!#@6<;Bo=*(!x2Iy`f7kI8WsiPEKzd^NlvFNykH z?x;Lx`-_aekbbhyck5ndpZU^$-|=Djl9+tyyl?KDNoU2stwcuuSP*NzFiS=`W$l;V z$;cPb*?mm@*wYAX!HLCQRLirGRc`-p|HX-|g$nu7ath5a5czn z(x(EVJ0(99OQt@L7r0n7vYbB}U1EbL{wJ0lI>D!-P^8R_g{OEx>((Z}jMzdNCc84im$ovJCivZUn}h85 zz)qX!GF6x@xLVM@-!L6hwy{1+PGo#$zBq0BqH#fFzBpt1qRkg)%fEP8hjDyVK4Wr_ zMLdvpXqVaiUAO$E3%V%}nRGfA0j4!N9(R|H>$wf2BCM;_ z&6(k}!(E)R^|HBWE)mlyiHMh24gDe?FV4p{I9h(6AXY)`$g-)O$wcC|5xEIk3=Mdw ziZUt-#G9h~8mcS+IAc0J3eBMM%7{g8l{cxl5~-d#D-X)Y1+ki1t~@YE^l(vF4dqvs zMSjdx7O|+rvQW57mLf%2mMqf02;yN_$6VI%r^tI-=iXbyVH?R7%Jbah*G0D%k=u&Z zHv>fanIG=gH%~4lJ*3UQi*J72jm-Il;P`c~Lw{Zs>PjBSy=Db)}SKlB_ z*?hma94xoJiG;_z-_POqM_Q%P-TZzbwH?OR=%?++clXm}6`s5(T^8#C^^$bHqE%P6 zkj~Cnaw8pkXk{0X#4~`23l2$6!9v%g4-&EKShE`-zbe)}^K7GZ#|C8mOjdbe7HYsY zxAW)#u6(9h(z%l6EP`{Mb&PYs3lO!u6>-8jP=Czv6AtN*!~?A;seKX!PX%VHzVqIf>my~jx_y`8^ zEn7l)R%XXRq^@!BoU~n)l{KncZ!U=SaUiQZSbti2>;@2axlEKJlrII;*y!NIqC1U^ zN`t_!T5bazt_%npa5n1>)lUK|)k24sQp76_^6`RnmAXS`uSg&C3K;8Ul+G(nZt=>4 zL~ea+HL?*+L1;GAR4yD#Ch$M`IKi>Cu4&>q$(4%p(jZ(;ANcNEU0VdP*S`zeLoHRW%-mrR9dATfTCwhM{iyUFH{{#WI4`bJ8wE8L+m5WE@D(`B z#}l-mU)^_BX^-Lby;t8&J; zOdt>^z|}lbueji98iEqujApWGCV#(}GkzpA>CT*SZNK`m?0>byaw^?ne(q6M{9NqW zPzW||{U^cgM+YuRA8^N#>2j{EY{>m`Vgs!+GN>M3j3#4SxY$TDB>;c3rM}-Ce=`@& zKFo5zFA_(J2vrH@a{$?nmJyfS9sA{V&;Jg9)ALkF2DZhz*7_c4(+y?FAyHG05}9<0 z?0GR3T8CW4Lf+a|6fBuQ5f*UfX>;q$!?D2ro4am!1)Mxf-l@T@~2wxU2ukgn8^2b-L_QjhQz z!fS~qxvh+f6cFuCq{f5Nn_^u@pj~?8FfJ+j!_x(L$dxXGBPi9|+{#7P5=jIxHdIyu zO5xFyXe6qaS>j3);n9;#husK|2Bm3yTWXbtZMIt+zC>u1UtI^K2!7XgQhM3ucTw#a zTzNE(9PcOem|9BsPulzW@*>f76<`@=478qw5~BQs7#Q*}aw3z-jW4le67xs2L? z1L2)6a#`mdxvUcd0o>yq#9k8XCHSqB{aPFV=N69ImkEEwoSuC+9~@UowJqNyZd$f)w_s*JXRuTQz%xyrjNB zgX4Kgg(`s`Z`i;vHi#^YH8m4N0|9Wd8buS>j3esa8pJO?&=sDng0%Rgmy6GOx%gQx z7k}Q%#V>lf_!Tb~zvkKEu!k=-7}k#lhP+p-yR)yw@s`bn`Uma*uHU-06ww;%-@3hY z>FV1kpAX9Xp3BPoUe%O2MM&QkIO%wVv=EzgPanx9kZ-C+HdLh4#Kq((zh%%Xj$$Kq?(cbQ71;6q*o;GG-J*1opmY}BpFJ;4*cjU4^O*K~{y%hhMa%kk z9B$oh%X<9&0j}zqk#-z=sAdM>Ps78{1cJK2(3~3rEQ9Ea(`g@- z;Kcxp#c?v2r=bNMXiNmIaWWXE;Y#wDcAcwTnlH1`UG4gsfszdv^WbR+4&f+^sSn=c zC_5O|aYWN7K+f#QnEr&4sgX0D9iMY*z?YuEjf5ezXjQY}ctXS3#e@}KIV(>E8NPD8 zr+t90M-5Fnc4#OOwDq>j3T?Y;3JrtRUJo30e6U&x!R2XmT$xd3+Ep6xv z0fTM;f_&QfyoViODAKT+UVTr%2t(6IEW*)yPIP;RBQ{ayJ>hYE$jlh22SVF>CT=;8 zHkONIcxRQRi!lB5h81l=hPF2_qSoo8*&WHM+en7CH=e&}ppCpr%DsDIDdN-II|lNb z0dsZ{jngLnd$VWIV?@3=HD@4_E@udlZ_eNGEg~f`@O~k1+<=*GKTt4;hbMcyL?wf3 zWWs=pjM>K+T$2~wNtNAAb~nZdih&R0<1NVW_5mS0=_TG!1`_z7(9q_WOz$8@*@=M< z37AUic*fq2D$d4oG0J^d2zDBrMNxlH^CLpgoZ3bczz>Uoj|xHKPM8MXMZ~}-1vlNP zBrQ-ie~RSkQv%fJn>OKBJ)5HPv=;N8vyd?Qw|L!Bgx4}fSi>1L!#yle;4LB0WKe~s zb3USH(kU16YRi>y(FH8lMZ%2pgAL29duM6+4#l+B#lUBThIZ+l&d{Ww#L!wZ^cj%< zvjPr&?#$ubL*h6a>j;?IWQ@CZX8$_t@tD>QFkLh**kac3yCg=$`O^YIx_T#D8cvO8Ul9VL z@r;h*c=oeGz?fLgW>L@6GpS_{EHi0KXR1?k$rrEQiQIYnt)@6<-%l z3>j;YTaRbo5b!^m42@GRFniY8Wjv$65uSZh2p-a(vC-%3S(7m)9KQ`p`t`KZ-KKfbN_A)9Oo<>%YVHjKIyzqGjQLBu0AfE6-0YnBP{4|5BqaXf@FW}-h zV~1^x4SrV`7}_HnkWcm4onIBjbBy2vU3B5hkDWO6?VIv6$b#BP?9py6 z-y@@7I4&6F>}Bc8e%orXn*6SC_1Ye{`HO6uH{Jm+*b_rnQXX&`Wumg7X0uSGngjG* z;hoVv?v%XF?+L-<-g=#zTQCV36{AA4>=sP`e-T_rd;PRG6yV-)0bGW}lOyy!q02Kz z$R4_45%}KT9U*f2zb8!2dF%EU5+IkzC3UXI(D6Hv#o=CU(LE!2205Z5?=ZoRUhBsW}j{kd?Y-=k=LP9yj zrh6Q_+xQFXH4&xL07E|zg004V2W2E74e$p-Tb~zcfIkrWPkWOFxImj88k1&hn6vo$ zTZM>^Ea5-hkD^JgTp2F^qYyOmB*wKoiNCbsT+3?xE4Rh^uc{~3kHx@$rc6?&JMb4; zI7>@NL%M%xNnxEBg>)mC?}vhPyh_P@Kcu6TcI!GpWgL___e0^-unU=U=wwv-sxH6B zHP77tYoVdbohw7GWi0eS>WS8r?+$ctUW-m97Jn^thYdVYvIi{N-?%LTe^WgX$ccf! z70~YPH5=vOpg-sJ|2Xhuy!3st8pfG(d}PWQm9b z+20E&&2~ITWN#?bAqz@i?Z2nHJEyxFmw`)TZMOD*p<|90Yr`G;2O;o`p(`n^5+>~* zgacBQOxi!@FVFJrp7}>1^iM*)Uu2z`lz%3DtD9cRDWu|>e-@g$-86YD>&em@+-mi1 zYcu4voXdX}dio6bv^>cFDl{B1o*|b}MzL(wX0OQ#vaaJ>i2EtJNh)aED*wNNsI^BJ zm5-TIIE~+>p0Fv-f#Km{QT{XG2A{t6Hu0SHf1;>AQW9Aus@&Q}Yp|5E8I3&z<`m56 zRxn3ZiBa4Yb8&|h3=ByiHmUs$7gtI)w-w)3(rfghh^e1jF>0bbq{O#T7LbT#hZK5i zZ7UU{FJ$RW#PZRH?1`ea63B){aamQB^;~WbqD1llyyZ^pyQrD!$>e9)X(n*16~Di{EjVW44`kJJqRB)vTm zR<0#dYBZxPBp;}VR}Cqb(p#AX-noNJm@M$T0Yu#frqUY<;6yM&xr`q?54M0%yk#sv#UY9!t`G|`mI~l7Yl#@wkH^Bzh-4 zDFvzkaR>}a}2kg=$GmLdpN;dHzmCgJ16Xl#TIj${4e|e&uR>s)k;$4m3SZI0}{IUYf zZLS#7Og#B0p+1J@&;`6dYi>Pn9r|S`wHeN0n*&%b91bhp^e$QWdFAx-i&t;)RWAXv zSulzwj1UYUB%DaCr9%+UffWedw$7uVZ5*^oryzc`0!Vac9jXlfuZZwYAehirnIw>r z*#dgjlnZC?I5@L34=LvVJeUwfy&JgK;jN)B&sWze$SRM1(V_MwWU9wgJau!RyOBS3p4L=#$3 zQI?1iSTS`omn95q+zlo+HOLmG`fwApg1xLL*{#)KZWHqWXNrdZp34z-7SmXoAsBxx zzmWw)X<-S?{AKMmtC&ozg1P!qtJ%#n#s9s)Hl~Y1mUK1~#;gjH04}91=nH_0MCgA~ z`lUa(h+$B=X`nd^#MxlnXp$6Q@%sD;`%%8lQS=|Lt>t$5<)uq^lnnCoARkPS(#h>q zdLsewOD}oLe2Gn_z^f$MTv3;T^9I>uMSoBKT^x64Se$LO)GwD(&}T6wby?Cw=5LtQ z%5H6vLM1T}p-^DSq08ZSV6s9c3nK7;C9cHCEftb;7wa)CZ&IDXUuMU*w^AC{>LsLv ztSqGW9a?ExnIA8ckaM0T^%^Hxz?jZ0Zu0TN_*PkT-vm27#0qjOPr_O5zDojAEkT%5>E7)bSETsB0yI^uTlR!>P zXm6~vxh=*M_(cw?m&~IYjgwc!#Z$BB8w&f`3c~_liX;N=RCy7*9))fpae}u>pTZ9^ zi5Rob;yWVmh~QtcFbVX>a{FYgr@ae*hWrdsd>Q79zNxED=FdTh>6zwim<&?V?HU%B zb1**oFE~L+?Qs;r!J-i#N@zuMSCrvR&I>C8L(1dz1oZdgL^3IA+KgjpMKRT3G?~yG z1z_yXx(e4^cMex#oA6B46=HV~J`Re*65@&JiNM84GcC+KA^HND4OLs&q$+t7rZP^X zL=BK31#^p4W|q&wgF3&WgdW2W!V~SU%qe7INt?ziWOJ}J@CLxdXEwuwv2=FuxwA_* z?kwH5en5Ya{|WY#eS~B^1!q0|Sd6D1b7PW(zTmsiO(xNglav`k(?4N&VgO)$%kubY z@o#bP0{#eEdb#**k#?7bMTT_IoW23*k;U{TTt(#(yv0OncrzKrzZnOE@~k6XPvc0T zIU6Pw$nRnzvI5r_hby?LSZz~3bZIA-XyyU4^t~$k$pK0A{Z0kZA1Aj$r^E za%`?c)J|j4cuF*B4kqIVBi=L`zE~m*=Vyf+MWBUuy}Um*G(I%(>cAQ033Km411n*1 z=?PhO@`#CI5Y()a!C97hsk(4MnaE$=FM2duM}EaTF+Y!E1B{hE14xXkIMCWo>-i#K0Kk?sUYjWU+TZRM6D~)+c~=?Af{~vy0k*@j@ur4W zlH~i#tofpb$bTikky8{ZwStZU|H3K)we%t!NbUDb$TcrQWbZR8#{NXVhK2;I>o3Ez z2f38ZH1r^yUz0FXaMD=n4(WLkW#gyhb3;<#!9qO9Lw~S^a4cMX`~r-Rw=!{^<&)9OA682s6%ksx3_KQx>>m{zDUk4tjV%x$JQNgN6Nq-4iNN8$SsS21?eyrw9Q$aI=hxWbb^x?gm=#iw;ch5f?i zmnug_!Ea0AVtUuOU|*L1iy*okVP~i?S_YE-xKzRZEkDpUedFQ+wPn7K4hxzZ=`%O2 zowyk7jh`xypajwx`D6RVtjjXV`7OU4u>5@aeHQ-)s)lxe=+gkVIJd47Ge?zWvvsW= z&cqP_fh;s@g~cH^?J=FyQ~fzaV7V4!)`pxJ*2)!8&a9eTlizTi^^3PTNozIrCx&6Q!haZ$S=8yl^d@66wfRs5SCW1aDepqbdimnSRw z@>IoN{zpOdx((k>@}}R@m1yIq3D^RSOkHH*o(mNEQ8V{7{iGSI^9FUM<#AKO^{?YJ zYP87`HW+K8#vm@}}Tr9?55>dMWk#aX$+X{4iV)4bHC`Dt|9V^CO#=TQ`A_5d>VMIo4@H4(dVU(X5w8%h{4;!<{ zAE^@^Zx&pctQ2+7kYfc*S@4F1Eeq=98EcXvt$^uGzI^i@liujjVu%VTKH#B}F9y!Sb_4Ri>=*shw8a{aB`>77vC9rpW#fyW8Jgqf zb+-~!ybmTrXcOg4XB0blG$}&)v5#BQ$iG|X5z6Sg-@ciQ`~jiB5|ns#2i~=_2=q)_ zS?kSF%CA9(DaYxyTQ)C^BY5686Zo^$j*PY&zHhN3gTB6Qjw63f5dGfPM*bI%z3hU% zBl2qnii4jE^4_v24U642Tu9cr#P}Pv`Y53wWL$^)sx1jc69znV+H7!*+c67{2RuIn z`@AkWYF==~1&2NDsU(DC>)_=9|qP0=VJW?BToEdR-#CZ|- z6OP9%ckA9+L1&!!3BjYYV?HDrA9`ls3ZSu)azI9F!z%T6k3Js%^)PsZdf^CuR{@@ydezWd(@Vig-e$hS<8>@Z|B1Ax{gQ7}S9R#DK4 zmN||xuHV-iK#_Mxtt90CMR5Pp#j+}q*}jE@ylmo=+^AA-0-dbu1cfSi!vX`dEZsOi z_u?%ien_weR6+9`{5`}XZ~tMRL4 zu^oU}8PUhB%%d9u=FsnZ_Mmjvkqkm!&0zVyh%RPz`|G=18V%2i^}>A87E=GLI}_1_ z0!yDh=Xi%DE>%TK=TSeBM6E3~-w`GBHm<7=bh_27dN*`u9dXi|krY@nyOqpk;UZ*X z#vDaK`gMX;>63omo$Dg!V8tK;+5q*Y`8L5E8j!y3dze!MZnIeTOk)GO zL(N_K6Y7zKC(TW#3Z5M4Hnb>xhmdgO>b+V(0%mU1we35C*4vJ_VTJSFcOyZ|w!rhKdsVzaaJcmi?K&c`;~sZ8Xr6Xz`-dQ`5BI`)}Ls zSJ}R9pbfV6gl2lv0q@4K$r?D|ap7jKugCydUV1ufnbe+ZgXNodZ!a!I7H?i$ zvYxFrUA7RLRkjdx_I_93q#w@S{A|UVWua0xPD8=bb4^7FGB*|fnn3LwlYYZ{<|qql zX`7J=G#C;<(I47T=8#gGJ7NNyvsghoAd&#*q%MC7FoSr@0x=yAp@p`jc7rVBY15+< z-IhoEt$t(R#Tdo9=&kWt{M^)gN_)YnbYfZrm|;L`O)V z;xQtf`X=ebNR06K#ITPU;cE&B@KUP?j$kJ>ZQycG7CuaOIz)WOSFx4k`y?Wu*LN zseISWCZHsca&II5gI`xtCP?bsXt^{H%r>r>%UAiEf>;Z;uJWkftSK*}EA%LuNl-`n z0Yy!s^{lm56MDY*Eg&M_$>%srv;=HrcQ;4umVX6iaGueTK>m3_tc{CC7wc$tqZTY^ zM`~I=dI!uFjN`WLMks}zWeondAo?J9Vt3bL3%AiG1--^<=Rb5?VZtLblR3rj25F4y2hQ6Lna+88kZZye5GrA ze21n!#(VZXeGDM{A!K$DC|l$iLI(fG2g<=NZYf7hV(utZc~RL)g$UVPH59Y8G@=@_ zrK!P-Mt`X>d&^+F_!};C2->X&zA{o2rn23g!LjJw>r#oUsjXR^MVTDi6)g$3M5ISv z-v#UP-s*+nqDpxfdZ!kHNwV3TaiUBMMf0t4hGJ4rydIk_VF9>J&9?yNx6AcNHD#&1 zp^)C%FSat?AED|EBQ2S-u{U@!cHEVKFs)|IMHXb_B3ET8xuewin_!auY*{>IK?qav z`Z=9NV= zSaFW^L!$H=J|uTaQJW9x>nr2aQ>&A!(be(swej(Z_}pwPJ~kVln3x+K!{fQw>cr&O z>geor(L$TiTx>ne|BF;_6+y7_hp>tP7nytnz6Xo;%}7pn zr!HQUwZFU`eR365YfA)2H&FT*$=&r`?#w{vTh^w|WeTbXJ^&%8A3P^*JHt3Suc3!3 z#{LwoY||^0c8}H|bwSh)I9}n(lt8$&C^F5!<^v(w7vqVd$%xiwMN3jf*q|<`gr%>z zb8E6!$U-`vxi-_%%_z}Z%OasWb!3q=2J(`CX*Z2+y}sWK%YbP-f5qGldvZ`7)SqYx zw1>JU3Z68z^je=lElR>O)liE;>C3?GkwCZPc)zxaxR`2aBN#)p8KHjR7=;pvZYCm_ zo2lLZp%}C7NY9e=Tb^)oS?FNPQ5k?KKB*`m#{5R~5yFfJnr;)}tssfPf0;IL`L6Ue zA8w#n90}bm$hxgjbTfH76%chhEo6)8C=1GBUZnNE`Cd z}r8f=pSE{*@<+xg=zjSru}L1{YuQ$R#Qbe6dA=vN;`)bVWkR z7Xs3PBNRwN*GLnfVFt3Q)Wt@D++d|%)e1nXMCs1kNe-LFN&+7Py1CvA4~b2o;SIzuZ1}yf*lSZQyRhVcjvH3~Mq?ciT@pWtw#N zbT{#T9*np$rSf-=DM>?%_p zEq5VncMmH6tqUDZD~gntyzh~(o4FH|>|E}42uTt;uk$+?n@qW{3Zge>g_1igG$Cdp z=VR~|c)l-V?=WbGGa9AlB8R{;jB9?Ybtm;lb zG?j_v$dB^P>F$264fCbk%ll|;G^9}K=za6A=AZNiv#-9Y&G-FUo%7QtcPGlW$7T6r z`%Q%8r4?HuHK8u+k+f?_xxYKKy*eQ7*2WpUX#;h|`oeOKuE^;9o*>p}NJIWPLG*tt z!^NVt(h7n(%;nh0M&B8p<#cJ!Qu+%FnPn2lGhEp^`HC~bd|ov}iJc$Exs4J#-&fs; zlMaG4uTXFjwExkG zx{K>A{U_G3?N$AB=Av!!5Jw&6PfKYr0W55a_7(je@Cu?9?NrxAOZnifSD=ak|=3t%|@a z^oF$vt62RY+}^ zscEMtgS|guJ7sL%Z!)8n{T(WLGEnqnu;|I@q9;T7PY{Ku8$q>+<3peK#OBdhOx?tw z6_lGq))HzmuJQCA6O=s*((n0#r){CEh=E4~&HAl5CH}uD){PwqOOG7ZFzkfEn)j_o zQz-jPJwP}EEv2GywV+y&0GK{sWdLq%-)5lDAqN1AR}BM?GjtD^f5;;Ms)hj_fLq)5 z7$}4R_@a}613FhwJ~qyslZ_o7ojZflCn0N-CqhW+aDy#(I{5NCXZ99PE2bn=a|Q_& zzTnApFfaQAF|BFoxcf0JzIKPAQ;WLHfq|w^4R|I(45S$o9n>BV=$NS*I%Z6CP#->^ zW2S28D3&MI^=}?-g5Cy^Dp<*SoPnQE!`6e5`OMg~&UsqH$BQuL=1$p57mpk4slBvR z@DlnWUMhZcx%knQ;zw7DAH7iUh!TXa2SU|O5H8_3^IVK<1P=5jDqCqfYcv&O!{!9( zzavlwE=hmrw5r>a^HUnsoqY??^oE7&sjWC|?gmbKwZ1tf(zhB~3`VDOANG5zwZnKs z5fF-3-#R(tdAvG^;aFnbGIGIx$`@>vNTGRig2s?-qMAFmy~zu9_)M1N-V1KcWZ7j5 z#vaU_IUl!7cU&%_x>LO(stedn+bLnkqP^_8m9^%W=RdjCg(uCKaG*H^1b*H@jO>pOoG=(^%E zU013~*A*w|8vRkAYs_W3#;Qu!m=ko3*F0UR67E4@u-cVy1;=lGlNw2;qj7|vBk{!A znwn8lxd`s8vS`Sp#r1KFTMr&Fj&XFUgJhrewmuhguVZyn>IlfCO{MFPLfiMj4>ptCbXYxi>rHsrFb9 zo*9t;AJ>|(R|uz`Fj17!BfrCj93|c^qDVn{jZKke^{el6{x8TBDcX1ejS99hP+3{q zH};FQl?Wqe%aFUWY??iA!Ji4@k5t-?$sFZ+od17<=;QPe8H}*PgQsRet}ggCsT_MC z`yU8m?cOb##oLp%#oNZL1!IuNRQdO2_0q#>dDujKXl*MMqh727DAGW)6iP;!SB!!Y zR*g8U|8hp|vi)UtQ;p3l3#o1Py0Oq~>4o?eamj_|Dq6^Fv_D$9x=8+L)oUqBn1Iq3 ziLz><)$mDlSt#|hJqW~i1+m7j9WCP>%JnLE-+s~0w|sK64884c-1b0g_Xaub(&e+; zPf?{{k^A#st6qj#Ahnf*O5{s6bgbZqTJ^IzzwVYXXk=2pXns>amgvQA*5a&i$zw1n zVdxoa5Nm#qFZ=@P) zlk6R8=<}iM1zDbIQ?SSRJXNa}-iuz)l{VNmqz(6sr(+RyV^xi_`yEzipk@XT*G6`B zQ}2RK+)+IF9#G!w#=V*g+hSD{rS{d_x2W%n5)S_z_H{VeFa3ev)VP&g=3cUijYJYN zoO9bW&Ly^$jH1$9quAllWqoIqT}hoUS^@{%?|fmSBDHX)S!n+A1k9lU_xok<2u#T4 z4PB#a6_>5ZQ#EFN@UG;otz*82oz)DqF2AE18W;+q&BPL2g%O3@Y6VMex87bQEVY|h zqB}&wQhTjnsr{u_s)40X04K*WuI&9ztKf=`l=Kppf9}sw<-_r&LH8>kZ1j-z7KqHW z%_{|}s>7^0qZY&jd`Dxy|AA*N#tF0g0Tp3Er<`aqX4FwbVmvvC_WYVIp2Y^~NwcAy zwRbvkQLnv2)k}D%Q$DFbp;{`OQ9G5MYMoJoGRn@q4UfoEJ72`xFqe!m+&|%o6xslz zb2Ce8eal5gCu>q7*Nr zNcBfy3@K9mrZZtGJ-E#pm}f1$Kd|#+0Ib16L3#y{JbOTT$q`7>*}R~y+a3DQx-Q^K z>pFxvlgW+nT6!x5vf)zMiZfB7A1DL=w}Lw@)M+u zhdO))DLeff1Rb^W5Zwuo+BkTi%g<^fD4hX}BjeJz4f~a;nME`3ZhqoBI5Ds9nZngL z10E8MlcP2vyvd3e-Xo>y*+!Roq%bc;XK?iGL8KNYE}C2!S$^r7p)g~~be8oo2$GM` z?2eBRl&0}*@sKoJ5q9BUU^2!!)e%JSyQUWDWt-pW5?=XT|7JRyctT$uc`cntk-Rgq zH@6L1`Y}Mwg5+8(b7~C~%m8jen%k7TkSUYT5fX54WDM zayMMQqb}RnqgAu9Z$Uk^1e&A|dZh9(MM1?qI!PzDLB9onjs>PLj?9MCyJvgT^{dbZ z(QA9?KhU*^> zRZ6AsYC=g0r^Yak@L12$E_Wui?-U*jN~9cmdPi$fIdDPih2g6uEV?sYG?@JozU#Ox4g4!z%{E#d2pe#m)-BnJ4&ovyeJ|RLr*Ev}8 zgnYhuThDh5*Y>uE8y9O=JuP~xo)&)u)YB!adg8YBQthgz%cgqLDo`#Lsi!N&a(v}S zKs{Y8-qzJxS5Gh|FBEUEu71c=@^e6DLF9p6f-T|ngu20+Px+8qOUReohCx{Bri08L6JhG$@<}v=wkI{KM+KJ zq_|ltiwanWF^46>8ye86=i-T2?mn_@hm^aihpF`Alt%Rr?-y$+O-{aN64@wZ+f}L^ z#3sIKh>F>h3uzCvmc1r_WWQJw2~={#hH8~vI5Tn$;lCE9wxJ&S?bl2)fc%?+=xMOM zGR&ji&w}#`I~0GZ3LT2e#cy_<6(FzMu;wnmQX!9eP4->x3iQWyyEx2$|LtW)b)zy3 zkWm4BAkgM`0ev~ZI8ck}xM~1KRmGnID8ax{>BpQ#QsEVG5ht=Vbn11Xi3LyS|2cxE zWdL139pTE-HA0oZgO&&zo00TZjy$uqL{d#fH&E0oFxEQYL)HqSa6_y+&^PaE{P7CW z#=sHhD?}^fx@bHe;quFw?(0BWTo z=!U4(MN#XieWS00XwwRGgHKM2fT3H;S{> zRGgIfhwI-qE5CBZ+2$|B*=8zEE&r)KALh>h#qEb$TE>zO59mN~+`9u=K0GCr{TB$z)8o=7y;1fBQ0A-p4wDV1HC5l?OI1&# z?trTI=H#iiqKff_+g-WFH~YMnZ}e7WsIV2 zq!WAnp%aN2d!Z9OI&l?Y(O^bq|N5-V$n9UBkF+94+Xt;^k~S#eQNM-S)N_)k-R~c2 z_xqOGp<-%>{6+1Mh1yzpaD(Opng@7HOlRoPwU=1BEkU9)QKy(dB_YD*`4g1ogAj*f~ zQPcqCnV}i67#fO5lc5>$hoK?99D$+nCtot`jpp$scP>V~*W3uHaLoH7nG9tesil7bHGbsN%C7md zQQlBpkZ36M{Gl%QheF$D8EJr&bWtf#INx*Ht8@q*ynLthj76o=T`oDLXME|D5_QkO zDRq4o-Cn56%+pzmOG3A0&nC|Jw=q~w39WQyOj&w=_LBHN^Tq6U$Ts>Xy>Gw@6h7MBKLnB@tq;#a_>+~BY9(7T= zVS~pTKEvY;KjBgSRYCNwqFEl>x#v_tTtfa2g6MdJva*m{e&uV)LGXHUEcyc2DFK_7 zD^OV;CGh5N$^JMY|7St`fHwgYGrt&dZ~3-Os|L#(CGbrhZ#2DOgZeKEqT?f^E8`{$ z$#886of^`OxWlSAM77BWzS&HmQ-{BaFWs$*=Pd?^tEe8iRG~ z-ybX8u|dA2zcel{?GA`#R_32qQO}nBTS4?FL|9lGC*L)9WOU`qe`!yA{xgE;>vAv| zmzo~sAm(EivRKUR6E1W6WF_1_(*EH#OdA{Q!D5tRXRLr ze^or0I(^zo5a)Edp{{3~VqoKovrc`{I|GoHhDbtTX8`hF+LKs#X8`hnFDV$_8Gs@H ziw(e>JEHNDsAoowI>pK6C&!%nQWhaknLA!YTGPC1%p8PyUaB=xJ7ve9cBg*d^+ogaXZM{Fr_sBcV_RWnhlTN{ z+-Ce~r?}K)e8)U9&lq2e5Zf|7`?nfnd_CfA9~bhD@pZTi7s=H4vu-o~oa2l??wH$U zpkaK>6*Nfy+cmL=1s1JcN)s8@sB$~95luxOsH{)v2XR$HeM;RP$q+AGJik*ZCZO%B z?{{Y=dn)=U@gSPRz{juwg>`ii`AS%R2_5nnjBy#=muZ&Mmtxm2+SI5WK z#>Xe(bF;Dd*lc`aVs3N{kLO~m6O&`BqqEaWnXa9?11*F}9FfgvZk-wxQkTbP>ks-F zNZz3^SPMWNs0AR!S^%=47JzKToFpGhcaRk>GzCsoAycDR1u?Zq&P>FxAcY$8TTnht zU4sC#`WkX4@ba`Idc8H9qv$A4jOck zdFxaJr89t{yH6Uo;mR__UoijONGt-c9PS^{cSQ+kcp^2l>Q5;7=;PR@)OK8YpVN%L z8}BKTPUonFpi48)&%RO>M(zc_3Rt{?MM0ErpDJwi>dJm~$4XTP)Cj zq)9GB|B>UJ{y_hS!3#%}ko1NPw>^!QSP3h1$JP_cct%YTA*i8pYe23-L*)|2f<{rK zz#0*nH%|^K_oIK7;5yz7_#DO%JM4wG&}~1g`|$aPJuOqi4z5D;&}NzkY7{``q0OJ> zfza6o^Wax>GJ$P3?E=-{lU-={g@cmBHnhB>soe@Rb@Ay89IHYXpE7!x27P2Bi4-~WTrK0eyRK92l0N4&XYNKV z7l2i$l@(JfQ$;0dWyPObnXsuqEBh3iOj(^Wl`<8Vky1Y83#EMOX_WFQQz>ixRl5R* zb@`*hFUV-u(N6sdb><{K>QY9XKm6@RDU(hvV1IyyLXvJM6eH<@Yw7MLqn$RDL%`+k z!ArY!xz(I@zUj&T9QF6@N1HMCv#!c0sO;9N9%o4KCLRLXOaZWt9_b5Ss;DBs@{|6aYH!BZ37I*_ERisXQ6tJ4;3rFCOE-E_j(0{O{MS3`SNS3t>7 z{`X|eiS+X7PM)ZsB&Sf*$)DL@h3xIZRm4&FF4-P?s;5dol=K{9<`Z!zuA;z{n(Vxv9wpi6@;P zahJ|8Q*xV$T+&o)iIf^=Y=A0C_j7v7utCAuz`E@`F35YYJQJWK-Jj=ElLuxh5%XCq zGWIIweL4@!$;V9|&|3k9lZkAO@xfnKqa39S9~Ajr@}dcD9w!vMS)LcZB#3@J1;{-{ zj&!*q$Lq#h<4*8Hzwx<=vJ4^p+LqYCVqBIyv(4=YJRvwbGzXg!yO3U%b@{r(Sks!= zB}lJe^=A)AFFCS$Iy+*WK8+rs``sL_{U%08*AGgM9D&_TxMB`KjBcjZqp5f@k$M0! zg*m~j$P*<3V0^yH0NmQX&3K3M;eHIqz54pF^tu};$YSRheVI;WvH!?MI=+=uBjh@& znS3;SlAxHr}!agH6(^GdR~<)2=0+P%>e5WkmZE z#odEa4vRInNe|s$EJUVpD~sXYLB>}H5Epftub3jV+`(FuQXYTtI|t$`5pw_?ZrDKvG3o23E)$7pGVwagJq?l)ZwQKRDDj{)jc+$JNy9b_ zSezXL1HcaKV4(}EQfctT$uc`cntamk=fx3syp>GqDjZTduy z%bV`)cW=|7p}lPyHJ;$-uj!56)xLWbTNi(5Vn}6Af zBoA#%l;eR-Dh)=0npWVTv=~FeDPw|Ch`Iy4&L^lh2qIKZVE=NivwM3~2eR)?+dj<(~uRz2*}wQ@hV(wQ0OV8|wqBxqd6M*NriT>zlct zGZSUoU}Jq3Z|YC96zP7G;V5es?}SW-({hwUCc{zIB(;P-9T;%G(9mx4CZpwXT`U>R zvT0s|^bG=Ua1`pmQ*~<#UOwXunQTTmw!r?0mcSsrOQgwqxVBlSnynFfP7er$M(?JzEw zhBh;|!yiGN>5sIDo--DXBHfKm&ssQ2%Q~DrWu{k>B3#5Mac`-0ra<0Y-I-JU(r3I77JI1j+4QW1C&{*gV&^Q6 z$SUE{c?+A8vZQUD2b=nFTZ}i)L;dNzsSo{v{?i|66QZ88Cr=oy;8K2LDEuZU_OcrCa zV1VUImPeW~x@>aYIH^$D++}c`e>cbY<+716x?febgIk&pSU%TXx3Cx) zTTtPK<&kEvZd$mGG$QTnCb-V^e7wEwjIqg0Q{9bgM)szu?#9W;Vzaj_ET<{B*NYEJu2hM%Ug647xuJx$^x-tjFAM5`3q}V3RyhdG;bKb-0?P(4<|HL|8|oPv1j(Jx0`&3w}LYI zXL*sQC!gNAhQ#1p`JV;R!@M0iY37?g57!yWFsx@ZX&FZ6?qs&q0gVnmg##V`fCWc$)z)Hb9CgE`D78Sqae*xCa! zFF)8+D@NQHIl_EnHiKVq_Hn#x!R{Oa15C6;*CNSsub#F&D$6Ec>gTsG&TlMh+jwoP z>}y7O$#|K(bK_eRWxw?|RhZ9V=mbk^lVa!HFl6$JCW`V{q2zDMF+?>|#&@~FVz!tp zOCy7nQ)OQ>*kZa8wwNjVt$(OO8JQi{Olh|bTgo>}utwS6m17UMbbgLtnwn#_EWHdC znJfF6S))*{GOf=jDk!gq{;eSTAo3}nFToQ`U1%Z6ax8#M03XE|WfS}3Wofxn=?4`| zGOJ<|z1%z^bJ_A*29-sgV9S(nYg|#jRD$?+ua{#2^t=f@(SpGufm9%%JF7Kr{r5Z8WJmS=szsSB8ZmyI!h_v|JL=bB z)E58XiE^V`d|8az>K`Prp)CF^Mm^@T1AMG%4lw0T%NUbZy&DwG7v*syw0=W5rus#; zSU;nJf*~UUPF=J>%#NW2lbAu)o4gZ4VBBsSN$;uhX`AsGQ)pbB zQQB~K(~$F$y3?^g50HvDttW6m=QOJGAjo?f2Ye1W(=om1mTy#y^CwNl93-t`yf4_O zzoS(+_ca@mrM=VNWEdX3G*~`q{wgRT=-RLJR4eEjgn`B|gFu_}mZu`_p@?WieWJz? ziqv~1{3=1zJ_SAGgH9z^CEs)Cj;qx-C2X(kt%YmN7XQ3L0`kg(rlpaE&1= ze0Hfy$Qm(`rAa>UGOv8xW*;r9haBl#C^yoBVkS=VsZTr2IhkzX*OH%boJK?MmuWzl3)f>PC#^4*_k-vhR*nq_6hwtl|Y!TT|%M3l>^L>Z3b7wUU+FXcNnqEO)S?SV``FNn2akmV^| zr%lU)CMrUDS=WGqz}Z$N6?qg*ZmILiLTa07Fym)4yZV_?v{NP@Tl&IJ)!R;Qc$`U~ zyIggrH}EyBDG}}_z#*GVa4efFgGmbMjl6UYeBZh05WK@(-uG818?H&Z=g3Jdr#{I& z&O|r!R=^JG9m5ce9fEXu-^UJ~sXyq@4l-(dHJVAM@>WP7jSAt&6-RKiqAwAqvF=FT zS)`U+H}Gdl7J7i}r9gx9PIs2NsIKV?;RJaAJyjgaw=CS#5+;IJRubJ?>6Qg~7&*~^ zl^hy5VeCo&!^+5QHGYA(gDCYH5`+*tjJiXq+f0e;D8yO^-CJv!^}W>BLR7Zd>-5!T zPt#X{fx}h9K(W1I19J{n4Ffs=x3=#wb4|ScVZ`xKpPDXD)ER55yCbR)#}8NksNY?eM!h4^!6Kr9!YfQj-K+i|_{DZjuJ z%BsmVx<8~grN@GYtJ0>lB5Z}$qgmdtioiPy=#I2W6E>=dM?QwLIgB4$RVKo73LScL ziBxuEm1U&!mPm3?s!B_w$~VV*Noc#1kGAi1cNjHWcN_s{*QbyoI92)XjH4*0-tks> zulu8hRvo^hUSeZ2oylp`>)1Q>5Ob(I5$r(QE*sv~ZD!@upUQRstekpUD!5T|s_pZ{ z$*#Rp@mtvE$>4D)8b9rmb;L7EYqf2jJaKBT+az*!`j4Ef&3Ms1JNHh`U&KC@;7RFc zeML@P=@ji$!Cm|wjR)E6E+5+LAX@hWvV*N~)V&lb!%kDZ2)Pkm$GZIKM)0wO-M*wH zd8^$A+dTGGiI&_gA!3r@?Us9d>Nas|_V|*Tl)&9{@K{xvTbDNKL`_{I5?`#d6fH{?id`V^UtA;%H ztGJF%MK@HUEZtxX$)`QO!QjIqhKA;xzxT39x+-nMcsfdiXN^#)3TLNbU$PTTj~qVO zUX|&QrBTL@&=D&?4Idx!1wRcB&-;^~!oK7ubX>&%Ia&I+ry(}|5TD0U;S*tBa8!8Y ztUozw#FrdJ4%f)R6CNLm?T(#f_D0Y&stS46rBx@a3#EIEj6dg3rW*AnQxVEW4|aHr zGMkew@ziMNs4sYGbnLvx2rA)9jro$NNKuV>uc!*nth#?b<`YFV=2t~E?n|bkej?)s zJFC)9q_mMS{3#>9L1(M+t_ff0s`1GM|LH2SGLyj;j{$qY2VSX`DVlWaJc$IOpYYU6 zF9giUtwZhXRIpvIoux)K1n|_UUVj42&-YV()4uaj`84&Zg(bftj-t|2mtOJZy%MY9 zpANR^d`Of0h!3Zc8skgB;U|IV-bs%YPLW&7*>L)~MZe;WF2ANP-t*(-7vsViQyWtM z7~;Yie`~`T@3mo(Bh1-w#^2g-#vj_y26?c`vq4$chBVTd_;5~Y^{Z5q?>yHw;6vY; zbK>0OtY1+_cZqXzH+_1S$aLZvQzuf_DdNR5V^e-bC|%o~nSR~}>56(f6hq><;1OM* zX*xKHg3q;{bf_rUrmQ(AJ&zSSd!-qh1l;1f6ypnVHLj*|{4Nb@=((0&9cpSXMx?*c zbi}Wur>x@(M^E@C>sZ5BSD#-oM#6HTf6NEMqUZK9VOc^=jn)fqnhVPkdJenR1Aqz3 z(#f8u5f&1S%cukM>3M|+eYw5MV?tY#85p6j99DEfQ)5tQoEHyw=ufD9A))oUzctQv ze`y@x@FhgTH1V0?;&Z$4sLSGWyXE-PiqD8)b|x=(4|nUdp3vmw z?f#V)sy=x8QN>r)2Mmp`N?ke{N4X+;wP#X)GO0a*S7}%!{;NyN`V(rVNXjaLLPBqC zKqR)V#vU5w6_NDnYrKu`*9p81Mf#$rv1ohnjEM9v5s+PB>8pMO(zu-gPN^W1fL&>5 zs|8>gzeXF47%R2&J6pFdUoBMnlb0cX{ zk95|Kw5Ygn@-@XNK&@VU*_Q!o9N5;5oY1x9oTe?;P7c-v{n7hvZDh`^K6BRIZ$as> zSoZ*^3MSLBXi^y?Pn~4tL9O5lO${H6%(&mwkYQ@wf+-5F5T@2^2vh6sVajaE$T0Pq z1ydB}CQQ9nLzsHaJxrO6G8v{GS};Z72Ex?C8p6~=_b_GUDKa-3xHYTBY_ih1gxX1) z2VIRQ0JU1!ICjG8Rtr2xVTH{I0nm7;jm}V2#zXB2dm#f{I{XuusfMHe29rr`8pnR! zX3`BVu|OKL%tk#wVNi^4skhJB0B;h=~H8fqd^Y9}Jmgo+Ou=L3PSi(v8(a>a-PQs5Z zIHG7Y;pnmdafDe5kB25)pS8e*ZQFt(3PBNyw*8MHXr%4xX{6UpB#l$-iIDWV|B(b) zd%bG1_HGM~^jW{}_CJmwYwxa#tdaBdhOeC`ayj2reS1QNRccAk)GcB?z*!_In40eeNv3H@x6aXPHs?@-4qp89x1+7R5(F{*u)Y=9;RN)PG1u`|_ixdFfj ztUyt27<*O#RD#|co2!P0i{*dJ3KE?t*|TDhe#}LXtO0N={~;?#bbe#cib492iy&EV zFR=WFtsv21i9IU@>BBC9WW^F{aswX~g2y~oz1ls2)_BLbDEJzK4q@Ui_`$;FL1$bQ zpdT$Ts0^*NUYr6d7*>{OL54xoNNA#@EJ2A*Ow#A%-ta6s~{)?sZgUKW4f$PP;7@V^=ScZ{(Z04;EjJ;7#ORPH~txmpE*G%6hhQz1UQ<$ zM-*7wOH!2R!q_PjxhDvTEWz3tA(j0G4Oez{;+h$#>p)%<~D{5W^)*08sn9< z-9Rq-<^{eWc-|(fsMjFNNC9N69n$AK_2Ua63nkUmgWNiwy#@eJo|49QM}kBuN0?s} z13xLCf5+VJevQu7-LIt+DPE5sp^vnkknY-iWcNoMzE{f}@t|~$7C;$vW#h=S55(5f zi5Qxb2PFny?`enN<6XV;;JZ!mq3ie+8w3=Kf%btYUQR@kYA&Z{vf=!{0qFDe&5Kv1 z$%?*dh!!^g00Yrkd>0>h;g(-HmyzYmg7B*RtwShwz4Wsqxc|n=T8fP!_w={tgC|>F4OT| ziy$P^(YTu7HJqOU7+(V>1-nP0HTskWifF&lDGcKNZ}Kb`7bhfS~{I? z$hR{*x3;gd)6X@ApYB8|kxN9AiPu%mDEGy{&j>+LddU%jrL%deXofzHQ|kZE-kZS3 zkyZD?RI5GHE-$jntIAv1vMkA#T2i-m@4G#V$76eDfLU5Cb=m51tGnsNwgw0U81@Vk z2qXl;u!lh23rm26WC#fZ2?>z*2;cic2qc7;2T9)hks&|Amj@)@|J=HDZ}qB{RNY&=bm%!S^CR-yi^q7$LVNpmJl{YKU}v_yT8m2ZJMaPr)oNtjo+eA z56EkR?R(RfI_`Vx_9gCn$KHDHyQ{m7`|jym;=cQb>$vY6QPjv`?NL`Ks-`Zzpkq+k zQ}yJorJ<_T~8@X&FVnl5-k)%!ezDl+=tr))CZFQBjt4J~G4>ir(V z6jJK_?^jT0>~)RTt&4P7sM=R;jgbiI10F&XYOMnvsQhneI+`-6R8Ara{)Z3M+tB?` z;|$%G1JA#q_}6GR8mHKS?yQVB%i4s~|HA|UPaX?X@)&{jVP)M`*TG`qWF{3eBeT(D zECEXtHfS(olJPq=aB=<;`!Djj5C|VpR&8hy2zHL(#rX#^ad?pk1YqVP3JSkT%vjHY z|5@=jHk^vw2ay?IDQC)(PuWyHGb8^j4)eDZza~JYGNi8tCVxxWw6E!%CEm>d=?*tL zS}sCfgh&J!>v8tiBo7dd{G)~V3s4_=3~p$4eb4eWwJexFUJNsx`NzF-<{wu)edfq- z2d*YBwnQsc5a=h051R<|6CNf|QYJp7`1iQ4OjPl!I%TF6xy=P8`-6~{pLQa1luOG` zdx3N4R6nhB4>r5fV3D+B=;NaDcM6dgKm@ny{~cvRrw5B7Fxmc@Vt`3be#R@O{TUCR zHoe(@Mj5-K+0hN*F3u2sSl+Yp1GR}t>fF~b-sZ$7TNx}{jE0s6E(=VLa4Az1C0rC=b{;CVryx1_Wv|G=uXtPzex)VkAbE4YqJ)lk z*qck9y{{;zA8ZxR-k&S}cHz3GlsvG~pDUUn#weea-g^IB*&THMt+$FdtyH|1DV9$H z>A%oZ((4;|@hm8inB(WaD8oku7AXY{nEkKx-fF+?OmHFfUzIIAO@AmM*WcGXE~LKJ zGD7NW-WO6|Yat=^bqbK?Y%@&V#KB5mS2pgo$HJ6~NJ8rCN>|96Lh8SHQ%LcidH>iRbnH1l!24)UTykFJ`z8H8xDcyUsZ83O;R zP!$bmRFL7Xlnr~mSdf83+%@1hayItO;$0Bhzv)#g2@>I(%HCk{CjPp36Lio0wTB-r zv5&u2&^gnVc9ai`v2PVB4%V~Rw-mHdb)5$mrIMAa1HfXL93Ku_n(p5_%yF=irRn~?XU*~d(G*R$nm}TL z{C_CnBSMh#l5gL0YPuAJN}BHXJf`V>&%>JT_Z?BZ!xZ=lRpt8%ihSBPKQCkVkBWbt z7^9FU%=<@2fs|pIN4MEOd6RhlNjY*>z|ZU8{ZFd8RkY9lsci2NV^o~(P1w^96#q8l z`8LjbAI)aX45D`_<{9zMW;SBJC?8E&E_^bRf1qsN(@-g{9q`n?LSkP-!%N&3IOU(6+(SN z!W%t7ed4SG+Ia#D|k)i%s_fY?=1N96UK>f3>p#F!- zD&dA2;b!m;m3AR>M@SXIar{u}*kvF72*22WsO;S@#>o0$^ZG(!j8v;b^xM&i#q#B2 z@ifoW_@Oc>ooBr6=MR;0SL{`WZMWo)6n|$!d62zO@a&CzIz~wxEZd~OdPGlE|BsZt z{SXsn*ktiV18Pd~UKp|xQ}SOOrsN1|X=Fm0-TdDirX*O&G9~}blcpp|r~ggXfOn-6yMF$+a^_xJ-~-Kk?DB(RjMu3CiQ-=^ z#z=`nrHh{^?d$7SSL7#D7;GtZWPYM-*;dE8B5dE=ch+&=yE>P+@4W}=z3;wY9rryD zUgExo57u$ts3Y?e<GZ5furaX%%CqJEW| z7%n=5X*fcvDsb^LW!0Lx;o@h?T5UFdEc?Crv_}`Va8yv*Ou7Q77cI*^m+<5#CB_KRuqdb)1Ka>q3Drkgk2G~&lp=|1? z(R_`k2Cg7h^ZY$0qFJ+(65B2Fm3&Vx_XT!&#rMQ;@^YVXK;VR5moNAAkJw|t37hu{ zpNy0mr62@S`d{JmNTk#&ecldhf2FS#!rCdE^OZi&hjYHt*E->xkNae#)F^j+JnoZ` zQeY)Z>3`hk#Yia#(%1M_iH2OZKK&Y>-Yoh48 zj3Z*w?)AQa*z_oWGkJs0aZ`|_#5MJVZ<*KB6TZ@G>Iq-LHN^mWlXGz{lHcSjy{6ve zbLE*`%zRb`O!lfDC^Hrd*w{G@OEv^{2@{*%7*!h~e^AC$8<`~0`n zM>#u4AHRK#HdK?ggA$_|b1rp*7eB?W-ds#V6y5e#pTE1I(QQsY;?;a|CKpd7BRAuy zmln-j%g>p~T-JK;0>p3g$?`O#cEN?W`8-md=50RDmnwOiuXRe5{IX9bG>r1cvS0Se zga#0Rbp!sg&x;8SAlJ7S?jWE=X>7wb?SV2JyLdN!4z|M0Of+3kclbChfk)x7GE0=2 zK;jcIGX_o*uVwG>t=T4o8{wIr^xxsz-rLahjMBsrAs~{`IaX30SboYUqnt;{JAfWV zPx;n&xK(Z(0V&hbOe%>=W7dC64O}u~CuoR2A3f#My9BoQ^U=F~GEicaOh$UbeYbBz zkNeL@EY>+0y%E2LZVrGGMbYG+BKcfA!Ahhf128+E%tdcSav9T%BoR~~&imay85{{5 zGR@)LzH#v=#(0fr;N8BnS3F1q@A0kLB2It|Z_veie4QftR>1!rU+Aa@;eW3~+aKf3 zg!lS33a5j8Chzmfr_?e2l=?nj`*wTp_$}M}`+ciKP=P)6fihzsEHn1&j!SloTOPme zLpettB4fkyAtx+cCH|1FU6j1TZy7AV;aerT0@-69cCJA$fjF-Zms#T@&NaA`;Ums9 zxQhLo&NXQ4lc3e#^7)TzA8yidkqz~hw3#SzaF%^^x* zIu9jCC^;W>;>K2TKI#P}hoZbc>ho?@DXIhTQD2MH8Tyz*IT+*W&Bq+-&6us;e9Wur z%_jFStu;I7Cn62A9<6GC|N!{idpG;r@4*3p7PKq7a1n`XS)CI2*z!w}B z;5fhBzu;?^mpdstq?rAQ&%e8&ijC85x9B#WoHbGZHkzDaiY2?$zvQ^g#%=Ham%MVB zeaXX@88o6lbqLsTu8IArKhW(2^@ePyTfau>}!s@Y@EV2VW)qsp?BHW9CsP`iQNQ$;ke7j$r2$u{V%+F zm;Hs~E&~qv4&+@X2;eU~c$a%ODsJw?5gF#Z4f{QDZ3 zqsuPXf^4XW<-iwZ+%1#w0}MD=Wxv`$-L)p*N&mjjw6YEeAt?wd|MkUV2_Z++9Ndf>O5cRx8hNN9b_w_f+Q&|+8Aw|o~~ zVB3o0WGg~5|F%2af%XZ-elWvU!Ay@6ZQ5Ex_5nzvDY{ zhrk8*vwzno(=@5}OQ!7inqtcG>>Be{Jexyn znW9UUBAmYG+j9W6cA1B@#lPLvo?=r4u9Exp`;Pl{!nU@*?}hu7@b`UhzmJ23|G^<> zC%D1=4-P>KoLYkRAG|7P|H(@LzlzMIa&Q zoNe!4e7$4#L2<1!dE&$iU+AlKk{uG^rWl$N4}whVh7wp{*mwSonnmS5Ans1 ze0RN|q2Auow~BJ182{?L;`z1zufFz90Y6uZe(X>gCb$~$W8Y?x>5G#JXxCN$k9`9Z zTGX8j*N)x@Qs4suA}*O|9-q8`KTs6M+kw>o?elkOPc-^|x6*mh&<@r;-h#~=R2gdK zIxG5M8TjvKuR|()D#QQG2RZhZ1|D)LSC=omPSpnJiu-q8U}Hn?iiH8R#Sno=IQ$Rq;V?dz zPGxcgAXV3Yd0Sw+*Q)EYs+Wb;^(mI(=i36?yx&uSkopP_BGt^zrecLirJCZeYzypc ziJIb&=a07`1Xsv&GAP*~VsOPE8SKTUAY8gSU)=@;*UMLDfUx@Nwu=u+tdgEb zu)nq?V1GS9DJX*M=9dHZ*S9sb2QYB@hBl-g3b@D`W`iiRDF(?3`b7Zy1|r{AyM6W6 z*s=JUnUiwDipd3_Z){t&O#(_b4jbInF9(VFeg)9Ku`PJS{Z99!0%n7G^t)w>Vnj6R zm>MX(m#u21avM}Z8Sp;QhGGc<+hi&uCFY5?I#x?~qHT%Q5}s(QceR8k+Ui&>;fb~- zR!exIt=`oVo@lFMwS*_ymRK#}iMD!IOL(HK;nfnra&KxwwFJR(^vVjBdsAB-%O$+2 zZHeU)-qcptatRC>9lIqm$fW{gJlR&ql)NX~mYR|WaGz{LR;T0a0y+|8vyHR*ZS!wZ zKhR@I^j>3OZ-M?nMSV%*fGoXy^nFuPQ&x79%3=|Xk~xzqrs&VKsm+b>wGoV4UjMXD zLLD=&8shI%!^oP6t9|%4^_XWnnlz?Usf2OZI1^1|P5ZB`jDqriXIsYQ|JE`}%l}>R zU0!~c74#WP&7hVe9?Z&5vH+B7LHSuWsFmiay+;2L<3cKFTF3aLqW*&0y4s?&9dT5> z!5%uQUL9W9H+u#oK{dTP`lox+qohM`ZRD#%i9jgnF=!K^2XV$dNIHCQ9_!0k>^ah( zQq*^Pj}N3^>GdEIi#b4^)KQo@3qg-od#gL#yH3 zsS+``zoe+Y*mRs1D`P=DToL!ha~)^!$BO!7)Av%OG6wZf#jO-gb?n3&r&1)dtDZ{H zT*qF%(roR_$<k?q%Y`xerxf+IO=S*l zCRuQozZD!)B;cP>)JFD8EmfigHCUjRzZME6N#H-%Y%8uvY)8q!4e+EUuvEmsN&68VrMp2vFI!}533Nu!gTGZ3YgZ>H&vkU}_xgQiQp-3m+^)OEQryCF%?z6!*& zq1vW}YMU0WI&F^)+pxYx!j?}0?dbXwV|SDQY^3U^#I(`crj1pd_PwTiwaRvM)Gtab zG0$n4Sq>+vV7t`xqld|hD5zGt6jA%`SDLB<@CKYtSm7k*-o^JR>bt!NofFz#UC`cm zRigTKvjujUUZ?sUWhu(KH$gT%4ssHMm1wE?u1$*{1fY_T5C+-EETd9|r3~(S1f0G4 zK9$!M85*uiL!I`#P^hxV{7$oNUcOnbKN1E!iPjLf{5CI01_`Mo zw&weSEj}oOP5#M2ZlUTT>#v%voMjLoo|=nTPi;g+=Oq;#%jQt{Z^kkZRk{xgXM>&+ zX7XBYcG8F^bK>q38XLm*eyOP>R0u9EJqz4k{T~(evBteCbHYfZqA@c=I8HcljMrs^ zLj|wKZy{~K?4d{TeAYaCC6hOM8P1D-&DG+wX41?=bE(XO7w7M0k0p1p&-by{OzWQy zTZ;3i74=5rHY~tdyS8p@jw$vBLemkssbVyh`#}{1jk{J)u5AcBVBxDci~9%(Ipj+xpGKC;|o{6g5|ms?yfsr z-60?}&EcWSnr0Iyt)MbYB}yxth=smvbsGp_az0Ru|I|^Z>H@M zlrjtrj2h`CuLL&8i#Ms(JqA&zSML@CHKuQq#~>V(3Dl)vG!+yR$MrpOq9g8sdMZoD zvi$HwjUOHvtm(spHXtJ*eQ!lTB0~}s`HOJ1UvN6YC-rYNmU5grPWg7b#pe4$zgR%# zqOzE0+hR%qJTmOA03NCC!yXlcHLCA-5SFcy_ZqR3)dqRexG#Ap;wwBRPN)jtJTPpslvh6bJj_o38uR1Lci-R0@ z20Vyr2jV|2@tzfoQ-q2$I#F4v70S!lU=`&>&I;8uYq-j+H~Q38s@JbST$yq#gLhH& z|0~nfn9DRZRwGS~Es3Vas?gMzn_$gy2ak0kg+;2Jp08rwFEhXL35~lf`NykEe!=zQ z;iYi>cooCuyN!LFV=}tH3M^CQRKKSTqgDUW0(w`2-@$6yWm(&I+#O$`xK75a#{~#! zK0a1OPRm*2HO-o+GV2>nkO)<3>J>i(vy-bhe*r3M@I!EQSSvVJCR~nA?r1~06Q;J+iqL2Uvv8jyV~2a^ZZqf z00>Ps7y$eAx^pW7;P!@LfXVDk2?lO&7zS(r>`(y0z$+mJ0xN==+d&(Q2(oxsNtn4* zG7E{rUsxknutp&o-bhf4p3z?6_T%`%U=#xu1X40;+sYL?w74sbC+kKtU`YOEgVWKh zS%`up)cv(xY=0Rmoh+SKrQ?eV&t zI!AOF7;O3{R9uhePFPb2DRXMusuf$cSUqsUySh3Na0|;BLt3hi%Tb}KOe&S5QczdP zEsS?(Y!p{ZyK;NIt`@2U+twavcdMT-fF~`+4&`FKajl>(Y$l-Pu-LjS+I4r(SZy&o zh>R*jz82KG&c9x3SiA~Xpo*f_f~Xcm;&VL;r+Gqrvf_em>(PDI^@1M@OY_2zz0Nok z;CM6pbCNUWx z+#0Ad&2dYm$l>oZnp$BRAnleQQQ2#Nw7X#-*-jAK0YPm{2&9fZ5=#N*7TL3Ew`bfU z0c!o%wg;Wm-r)^LjqO4K;W-}QEnM#D8?kXog~DG2$h&ajFD^sTb{3Bj8XcJ)o{mn3 zLRUkfaBO0HCN?x43x_8LhcG-bGaVitnjRb+!AZ+Vx??rL>W{{W-$ig(XAEmB2jZtlR0(<}JeO?Be$>;;C*4kiGKQl<} z1MM5_5h_xRk-orcdxToP(#Sf&P<&25x@Yq3Q^zdK>DPDKBh?*RSA-bTFx1T@sC zXdCh$XkfdI0s@9>8d=TJwEa57!Y`BNO=mJEaQO!WW#1X?lg**-TA*B*^h5r2_DNF% zS~&hf8+4Z(f2FVA0qryv*w(EbDkBg|J(BhZ@L+H?6P+{T$*U<#vm-cr2I>sw;Gspr zIg`(1%%laY1?PFddF-5aY*E|2l8Mfk)6tphomb_iTYo>$r{{Zv^e!6X!Hc``_Nl2qnZgv11*D3wOv^8T-eYOUtc(}8B zNlx*wYcyBRDNZL0n&T%-jSo*^(#aq z+`D$67HacH5_JR@Z>vhwfQC(t`ZtSBk%37=9XrJkHQT|^804-~7$VICLkAr{q^=w^v{`flA0i!@hKzlVAF`oC5FYl5qzZt=4%JI~fW;1>4bD>D zoepg`ToUUQSnLp5GzlSUVP;S?e6{g+=+Fs)EYgyI(!&MkY7H5EVisv&G%FYqL!?a6 zQ23}ABKz-%+IDp18f|28Or1)b{Ot^%Ji2z9_#`Q4=P0H@!jLA zbg?@1bcF~!zOB~p7ThMdQQ~R&-F@<4=oCQyC+g+0n#8x4+P(!SI8k)EsMp_i#^0kg zu0oSj9WE#{VdcG*>cYQIAoiZrKHd~vcwrD1P=tZ>vr?{x=q`eWdA8n~@L6{>;j^x3 zCAPwCd$T6NDA3r?x}yo7bx9M(X`PdoS%@xKaPzr(U1rd6&MjRPKIeiee6EhF@VOnmVLb`hL&Ll-_*M_u^b5_Msy1m~Bd5`g^gsAEve9ZL*qxudQ@ zEufJ*Hti8KLd{O02i_=csG8U$n{}__Y9`AC2Y*T0 zN}(}p=(4nxLR@XV&+$X9w%#XgCH#Q`~sS{hB~_JSs}7{@WbbKAFzkQBvxpsPuOK4GWu|7yl^>}20r;hX=#MH{CuHn zcH|4C9SQl#w(y{|Bg0&NJ}B)-HVg9eK{xEkhgL~BLfFD?AKJEG;FLrv5cu#i5%_Q^ z0v~n_fe)7=@R5MAWO@bq4>u8+LF3~uht+#PHD~;1I zy$--QopsGPjZ5P+%nhJNrE!XLV;aw+(m2H|M!Ao=VVqu<#;Lv3oHS0uWPZ_=JO|^n z)vsiR$E4KR!`zTeN;?(%WwTQ9;vOce5xkU^cIq&H41AHaQ-`@*A?x@dSBtaKPQ?$| z=d;pI#Shs~PF_C4q$+^ba`n1=V5jDmXnE!8ZF%LSooZt%C+$=lTX_ez_*I>+BewEO z#8$rE*vd;gl?f)$XSc7dkhkoeDN!Kb-e(u&5Ry;z#Awsd{*vQ1Z@<|WHS z%}YvA^Aguk^O923yi^*c3=c3$U+Ric`ci3>+Skm>q*-qh*UO|?&rT+y`d_8gGmj=i z3m~p?)*aK>PVSzIX0B5Mx%>?E20=pk-N!H88996U0tHpQgw|ZMUdz;bO#mUfjdW(O z$5}|1MyqRE1rO7O_Zy1pe_ZhoBB90|m~5{?u%jK^ZoWrXXsh$s$E)u0Nq>DV@$|>Z4*PDoabrj_ZXvb-Zj$PVVnI%f2HpM4mW(*D+ z%f$r9e_N4i&Isv8Q#4jr&&C;A!3Ea_gVZ%Mvz%{(LF$5Y;||)fOWqBf*(VjLGmVe} z`yh?gOKF;o*@Pb#iaUpXfSJ89|V0CxtoQ?%-` z-5d;~_40EtdRd~Q16%%-BCWF#GQ}|VX+@f6BV>zV>~|Gu+m4W#Mc2viDll$a`Z@{F z-aey9HGhPRA~q&%TkMz3`+cYICa)0Y{k|fNRN#-#lU6G5$Hty^3K3HOK@?BdO^ATa zo>rD(dV$TJR_bbd0cTGu(p0r^_Ov2xRU2oYb>fWtDZtrh>xr|^E){2=tvk*>t4Ml0wDCq*01_OpN~_ozU_EbMfWRD@aP`e&JEB3VdGK zw52|Y1>oY(D_gfOK7<@x{CQ=^?mEVhGhFQHwQ*r{@iR{R&}{;aeWsrHd1k5jd8Y38 zc}CeYAn?OE_8DbJ#KD7p7}tGaxm@=JW$ku*p;5Ymz;$0xIuE!J0)}(`f-*i~f1Ys@ z#=hv}I<6snQ7PrRFD{?!U=(~&>D*sq7Ft2@d&W#BkVPhpuRm5~T>U8B%TVwBSXp*p zJ@E0z%DxdBN037N%cBQtlsE-YJ3{usJ%6IqD?tAseSE1A`q=ZI6bpO!oc^rdKBqrx zg3syCn(A}`i?q#oxY;z#xlK5f9){dM#*rYWBF?`-dg)um?rxzhsHZfmK9{vw-jl; zVZ&_Rw+rX-vAgbf94Whx|7KbDG49^KQBK|E(%t(v$_rj7;3EqNd;44G-OIJ$zjfTb zqojD_X8YUa-@RDvI|>RTNTO$0`;M|hFi2mb7_I~7Bu3Xgy3YmUYHqSVQnT{&LyiaRoEZvFic4T3P&CvUswTSStf4AB+e8zup&FZg4OQ=3B)?a^ZINjAHB`{<%WAqFVSxqN zI5h~lE1okm(ZppG5=dSv>2_I6L&!!m{G0;laiJR6rN5eiDM)!=c4H<6bIqzx0NKqsy+7fZu`m!kLugxX^0z~wEw~@JX}-T)o``8 zs{**;8fDsWbxxAstF96VrXDWnS-&WGFg(0uc`#i4D1dwQ9-gw>oaqhb_E8Y>udv0`S>=BeRveXrb-Lyfcc zGHKZQ@zaXh%0WR=Dh*dxLItCa)X4ZFH8TE4b;g(LR=+ldIx|v}(lb&`=@G(aWOT6- zL;iGZu|JhNt*#o0d85@&LVz+lv}905YdoCM>WA~JPxbr*p8n-U$gpf`&V-`8Z?&~%bWy^r){n|2l1LPGeiR~Rohmq=+ScZz*RBBljU&yxzY9-IZKsi)9d{g;@?Vv*Vo*6TNQmG`$A2 z&FF#JzCl})NXv${##f(E~>Dainu1ZUQBwt5IZ?hyH>twM5 znOA(<6haNHaL3v$_16lmKF~Y1PI&H0W?0$j#ER9;d*`lD^DpTD6J@&sds;`71=uCA zt9!)TmjpZZ-G#>vsjwHB(wsdg-;geny&L*l3Hx-B>>WJcG8YLuh;IMwHrgr1nXH>` zb+1RQn*ais0bkds_A$3F>zZxBGAg}oec7ruw8|c#hTEN3snZ0=ynF1Fjc>}``4sKv z%q8tNTW3G9X?rV|UubWIvTLxp{eIDBjl#}pWb0mg4ka_tNcVnwgmM^Zyh{$v%HDhM8QdPEclxP<_1%4=w z8zTeGy;~zCdmn7yY-59Cez3RC9-$0Kd}px#h&@6WdlL8wqn*pE-NsLiS}yvT6>i^> zHN#M2UH7Cc5u{?1i+YfZz~riXLXqxsTKv~O&V?NT1Zil!E7N=?Y( z8bg%73+;cR5!(MmGqr#0`>?FLFhrTeQ2!4%PW?aZN%bFSIZ}WYOaDLO4gH^Z>nQa9 zmf)>`M$+o&_!;j?D^@@5B-BlwUNl6;Kk1t%J+5z_Y*~F140aOwrj2mQR3?S--@wgx-fI&ZKSA1WM}!us2HX;)o2Z~j7gJd=se-;=ovZ)P-e zGBpSHd?$jpEJdDV@A4o4z6JH1_fb4kD3TRu@wu^WnSj%4shQ$*BB+3$yd5dmyC; zOD8_qp^J&*a^m(*pmwcZ z;TF|lA9m=lL}j4RsRDYkT$xjWj+Sy|(j7Ua54X-8$uK{?N>q4Z{WftJ)9s?-8`?ex zw6|kp(;IeaZ>o#+Q0)2R0aex;gNUH9-xq}L6p2lfp8H0E&Dg8GqAsve_)rk>GAw{9 zXld6|0~Bgi6kA1e2%NV79Mj*Sz0PfLYV_w8NB3A7Ch6v;-qkeSybM&u3MM@qn%&1e z^Kb~nS-$3q`XwRt8uZI%xyBbnDpN1xQoRhx2ox~+oK!Dan^UNlbB$0h=bEfuI$E=^ zUan9t(~VOv(_U3CUnEsT)(8+3k|`R3GMJI-WoTGvjoH$PS*c!zM&v}PUb02-#jI2> zt%>YX%9VaGw_~TRhlWPQ7js6pt+3i)=SzQ^cR(Yx;(QS_*z!%OhOlO`q}JZ_xLSL& zmDSptQmti;ElI7t*`jLgO{vz}wD?#7Jy~k)V=boE(#`xB)LO5^hAwn7ThBl*_WaHK zQpe3aAsj!bKlgH_h-#if>B5&QARE`qdMzBcUqu0DwUNvWslBgZ5bC?Mm%8F_E=o@k zIzKlJ1Wa~VJ%fZ)-2fDC!qvbDFGNq`_VE9_f>@R}yKN0Dd~OA)F`dq+EX&@a_$3&u zfUmu`g;@K&4CLU1`_A%Zp){4x%$N~MnIgPe=YH&rx6a+NUJ1VSbnIu(+o4hPB$}e3 zJMPg;cleh*7zM4z!F(bYkJ8K0)ByXJ#ix*SuPl~xC{KsMz(!9x8erK2xJ^5dL*)*R z?7T+{O*MNOW>U#q6s?3TG;SiGx_fNRI6P=+#=!2Y%3&A%%e;wQ5=F042JdJgQ3M>L z51I(&fV~hv&^Zly6vt06;5KbVZgEp781Mapcpq2xbPD1f62$ws($ypEI*Hic5l@PS zUtowGo%D(m5|sIxV#@qDV0;bfkgXIPOj6-BN=w-u!2N3-t@^^eztn3L8IdC-#cP#~ zhGz--waV@;4-xe16!}gO<_)G^r^ts2fz;P29(}1GDe*eRJ5LpdRsZW1G*J(ixeQ9X zJCcc&gW55Wh-Y)1xavUYuU8z6S}Dv7b#MK@p!f|$+L!sLt?(?O(1ZPxlHQ=jk48L; zxFD1aB|T@%bPgpw>AF$04>9O=_d!4R8g#|4A)jWT2G6;l6I0_mQe{Lg@G3$`eiOAF z@H&zM+E&&7i;8r@gk|&%X#1^>Mr`Pot!ObCtNR1V%V?EmzK~$+Z!6q-Ks!NW`v$b} zGHg>tQk=HgkBf`9JNho7ud|}XRsY+S#=O1!3dr*9iYFgmfbm}~#0(Rz?= zzQ2U|Lk52S&N5TqsmM2vFc0uyQ{|%v>#dEizEhEJFxFHCz`GnOWSC-n-US@u|Gk?S z`TGpOmVFMv@w`is?;(&n0gWz#cPXv-Ai{PdUql$OVeGvMau#_2JE$t4kzw*)rNy!q z=~&*Y>>O{k`B-ZFY}=LA}FKCe{8@GR+DP`}_O*RsF5oF68Gf&Z~#%f2w*h zle!U)nOW2`910r8lLqq*8>#6>k-~uTiTLw$JeP@P=8f6ZT_MY5dJuENOjCRnMhvQYpuL)@0=z?IN>mF%{dZ_&@bj zY9>Et!evWvQH99pjc7a(olc-!WYWmpOc`wPNmRC-p*D!gYgq%S(uA9sdNZDzWed{F zLLaLi88s5A6u@Ama;frU#=MH!lgSy=xR%F{FiR|OHG|z4>J(L=WXLB}n(62@(>OGn z%cZlE0|S<)K9#w4Wa^YBc9yiIbU2r!qOfh=HkOdTLT7+6C<#IdX*mrNMqf6D-13ReEGIvdMTl zZRYTODgl~|ffVUG)ALv<18}dQRxtWW^kdzmk&RzVW(&T3%Q$QdhxkJDhg-%0V~8!T z-pA>U8Q=Y&mnmQ_J%xQIE$o0MZ^X@;MpO)SXXQB+tV6%-Nv4BYY_k{31%pAOljf2| zIB6WXeCPR#)~aWKS*mQxnGuWugaqTstEnEaXYUl4Zr-L*oNWwelS+d9XayY66{_5f z|1;EdGy}%WBUuO)QE@;(&sAeSl{d0L3sF=8Olj;nhu;}E>O5_WFFLu$U`3!YFO^my z4rn^tLa#vtjCJm#=^X2Hz{F+1JFs-J&q$_noZ9*rrGTEySddXh60CT`v}uulGnN8@ z(2uSsL0hvHyED{c;dq8E-DgbaA)4|T)ka6JKsyi#`UL5vu(@bvW|plA>@wy@U0CbY zhPWnbpr+Z)R3_Gk9~B%CJ`3i)4$AK7=5xBMAC)De68-6XCQVX7E|`d4H?h>UL@Jvl zAxfM@dnH5@F7e(JpCPcwMUo{9bLs{WO9{fNa^90+N%^_Km*^C*pCawff zDQ&@C092$x{*%zJ{K1nbifLaB)NYL^8-yE8kN_-Q-x^^*D!g+H`^Q(W<`(+pnKM_6 zOeznD8^{ujluFDeQ*&{EUwO%ka#D_iNvv%N>Pm24pgWn>S!Yt7|1Jg}9~Ng@t@O*& zNyxJq#&syrj>_!fH|*BR=F=oli49Z;6x`&H7IWmlUq8^1Q&4~+yEm?KOXmuKRHYr-)RUM0j{Naf5)enABZh$)h$ zF*A*OnQj&mef(aKRL(fiI!s7!tdyQtty0qvy>vaA(HLn}7JIU@hTdebpG`3=SW6LL zP^YT1*xgac7Gfvd{q!mPAQMM%7y9u-k%uDq8)~FP|5&gh%A zB(wA;OW)wih9r=RYFEE{Ifu)~u+( zt${Wm5Am6FaQ{pyyZ`8+(-*FszU2IXJy7@wHp)Iiyq<)zp1P^VQa7#3gx&>`x<3BwZu0P8!J$5%^#3u6TMBWP)I>1>sDmu0~>z&3(!AV*H7(ohwR8=%H` zvY&NBmxe)g(oyeDLEdm>L!JWZU5rJhpc?1$87Q<^Elowr=f{idKKKqyE0=C03m4 zkfoN4j_R;|?2pbutYV~W{zmcN7L*q))6lUIjWdhQ>skxr>IgUUaz$MIHx#v1O5y5w zzVb?(Gevk6Jhl}OX|I03cD{skLponFizF_D2rGC|U8eXdBca}= zsGh7Lrz3f^Ss8MLD7U#uM3eXGA5hd*sBES8+5M={ebtb(Re{%s#O$G3ncWmW3DuL4 z?-k30_0w`6h4P~K9%MoPd9FDtf(H!I4|1{xLAd+bOqMR15LbFO14tW z0v^&Lit|8@p>=~?Pa_cF9sLtDBVWkLaMHO|HOUbd{W_n4yP0Kke}+I5!!V5X|2 zdIn2YRkfQ~wL7FG>%XdH3!f!?Q=6=;+NP}7sXbc9g(>ySiDOlJ5fdUr~T3-SJgco2l~K;T5I=jKQv6-9&SLb#~*(`}XfBIAubicCBs{dO>=;7euFJHvB!GG<5k3_u z1c|9D`z497_6=(I4ts>k#beH@z%Drwpp1^TRiQh)zd^R0)rG)gJ8KKOfYEl=ZtQE3 z?X<5FjZSz2j`q!>K?!989YVK0bYfj%ei6{K4k=%v9TG#~y7mrxgrcKqj=s$vp;Cgl zxz_FIY~amh0nsb^x$vGZ>w*Vuum}}z!pUwxS-8iWz=oxwhekn zt9wIkC)e{QtuhcTBpf!D2#1YQIE-1sVUy%9>Z(IK+yvp^{T(tI+FS@dNP8=?s5tpk z2cTmZ(Y9)1Wn_7kBpiBzHe+<=7DhS(MoVDiG@2D2KcyX7;%<8=-T_BQqF$Qh(9vBK-7x-PEBdTk61?fy%JvW7E^ph)6?Z5jukcQJa2>O`|Kkd*SAR&(9WsqN01_X z*-`ySQC+WQ=zFZUrJU#muTEb-roX;C*}Ox0gWFo$62RfcV3xbg{jyIo^^qk={aS~|AZ7l5745=VOr8~Z zw{9yLxxHj0P%^R-6~DMojC&eZZV)bE`tp;&!D@I~8x;#|Q!*o-a{Q#Q_9?6N-R@U< ztA&8dfK)_8Ya|how}6_xtN{_Z-t1-B&<02}u5I7dG||ZDcCE3`ra;@XzaEc%jnZF> z>8)6NDjG^1wXN?k@Eqy#U0LG+7C}@*ZJMMuazGHU8mP^4zy|0V+|a(WS=S(=wGI0R zZCaxzwpRdIo8iHkZ|uQF@<~Q@mamk;B{r|wP`7Z2;#Y2);2ltKlA=rSMF0kERvQhnTe+J%NA##m#I50^E+9acYZJe9&c0nE$>(sXO&@pYI%>Jvr4(2kQkEY_RKqiwo zTTk3&OC0j4K2BS^`-=9GGM`<(!;(={LA$q8s6U^Hr*o-H;qK@)^g&ZXrdZS$PkDs; zUJCfqFV=DmLQ^LSCviMwi2^C|Xq$ga!y=Dtnaq@4PKE_G(=QW1TkG%$Qi~2!0#K0( zvR$emRM?YX-3}Gx7n-3jRe{wKEIaU|(Zu_n356Y7ciODSqi%L|_BuxN4=ZZ3TtoUm z%?}6`)#{&DR4;fI^h0GlmJCFjlZ1mZTjs3*Ebl3Yg#KrZ%fBrUKV=MD{a6{)mdvY) z-Zv|%=L}%|OO1ObDMoRTQKug*kKux8RS}FhXRq0O`v0S-%@eiyL?KFry(7>#X;?bA zkOnBQGRYogcAQKlQCS2v=%%3?qV5T*soZzzJTI!Fze-VmzQLE9fF7xFme03WKW0BM z4eKLvuZ~wisnyt9mHHst=N~uj@wb2hN^WWWh}?j9ZYr83&aIsIhMUr3`iAy**VUa& zy()bPLh-Ka^bSNX19%3?yR7C`Q0i#a!bhM-u>S39wEJ9H-zxkzV7Eq_#LLGNGC^){ z*B)@?`$-ekJu}yD6|4Y5#mdU(VrSP^^juUJ#hJ;4X#-?ZH=AB>H* zAS-u*qGGW)e-J$tKWk@2(Szh|D-O8+AjwQ_R6R8_aaOc75wxl~28(G?Wmf-f;lr*g z=L>*fT>+QC8k9BlTEfH8d+O8dureMb5V&|yG><^BvR^tHW`kNMLUn;rvCoWH-0X~S zr`NERXi3>9HMu%KJxSCjWAAnhuHE~*0+$&>rA_{xxXQoMHtXz!o7Ex(gI?Fb>Z{r} zH;~nt{kb|Iz@itb!+7CaqiMrsq;wTm7mnweNu4MN|Eo7_^$PwuU9gR=39OO$4`?sJ zOWfMcTDHtam*9L`Sg^A486ZaO}wm&lN48^u~xj!0p~_}J<;1SMmEWj zVQXZwe}%mla_*8=vN^EBD_RK?Hk)^fG)bN~xw%W^57Mg(Hnw%uYPk&-_^@@&cDDi_ zN^SzKU|Z@nN}ZzpK_qoG!mcK98EoCtZG*(Y?kEAWqwzp8F)o1YkU$b9DZF62zq4WC z1rAcCD)sb7UWqz#1DO~xmRwK3DjLMq4n#A#W6PG|X5iX}y%j-U7T$V=K%*OE=RMDN{{~qs zXt@;1%~SDpf(rDt%Sm6XUuD~_9epUe;SQIGn{Kgia^XNNk{L#w zWropEnPIpfGj=1RnTLc@A~?y6-JM~t$c#O!*LzH6?Ag-gRhhBpz_9mZ#$G3VSu$hq z?m_R$jJ-qWB|liQxVt&pJUUk38O4n7L{#$8U1$0N)7^Wd?oQV2=$vpLg#*H z^LE}cMYxkXzu#l({C=sS|DW4~1Asly@malo&NeUN93gw%mGJG>yI09~IyAfO`$ z8wIrWp%#MMkD)c+ilhw^T$^P&FL@tns6!^QldX!OAd2YNG(u(}4WUo3Jw%QxDnAhH z7;wM*K;RtHM+n+Mvri&@+T8-OQS6bWIzok9F=k-ky%MYB{6 z;BK&J4HV)SL`9uN7UDn`v|J~&n!IfwKy?{JG;=-8ox!28dYU`YG^(cEvheh35LDQ& zX)kqIZ>;(f$~`1GryRwB4MS?$q(d$b42?L3$d1C$s6&#HnnaRx)Ju|-V1y)%9vY%RM!aVn zTAr{xgmg4co*}wufUiUP4#yBf;UUOqdlrELS$OEcP+eu=q0o4vWFZ;*N1LNy3POlv z=cw!g^J7}>HJrpTDe^+37`zBWf%b+zUIL2a1yHa@z2mp7ZS13-d|LuQCrSZ2(Nus= zmI8FLsQ{glH%y4073hXJ<(V7iw5;J1qWhk1nA50>*lcb6G%7LLQjU~UklJY|j`k2Q z(R0>u!*JE)>}n~gNi5S1b9U2CZ{0BG95)QVKhHUC7}8B}ot$6Zb#mTuo$wp^yyH3{ zZ3kFA@3>BAU0f&U>wKM@Z`gIBe^61I6JMzJ*PKZ}%7^|F#g1pK(Ea=ti&?e0pMO=k zV1)xd-)ex)dZ61wtSz|RkeDZyv9^iS-f)K6N28l&AKGl9({w(;|3sY;(WNzJw;@y! z4U87p`3zcs$L5pKx%dpa1=1|pVGvCRt!CS|4E_d4J&UQQwrB^=gBGcOHv@q;=a#L7 z+44dCt-glUVIpi#4ODs>*6%0`#VtP%!MN--lN$fA7ef(5&7%sfK`2#dsJX-Bj z(L5OIQ-@%tTv)ALsXKZ6Y8-#ZKFYAnz8chFS9vPn%tHV%4E5?0Hrov8L3wl~Z_+&M zGsw?}@zS3(uFZ`_bX9{A^hpW62m&upe!Y|EwcdZkxR6Sk7NvFBSP1L7{EVo#gjgH4 zV=-;G>NJ7VkwxS5YmH09aNxA+>v-Ahl4`#w!R|#HyQ7u+j8zJ6<*mjpLF!mfuIwPh z7suTCVsnVOk{hxtF;|#ef^I>j<5j6tOq-}WZBlfJ8(cIs%MNoxZk^Me0-TVOFl&43 zbr2IHqi*rBaM?O*|2+H-~EJ>f{2G85<)euFu8=j1U;bl*kTn2K@Xu}*XbcN;wC+e)=CfKOQ8qt``0R#`{S7|jW73S zEnJxCg{-CL)jbpId4-u+XQ|barX4Bsrc;_%Fjdfe)d{?+J&F$@@g!R2L-wt)h#px* z3#FsE8Fb=e|3umijQ_f(kD>13iYC-ud@+{o8P+oHpwPy8kiFMh`KY1>A_&+jzj_**XZ6QfdFs{5K;HegDk`_x@pyV ziO~Qfh0We41!%ropcOPj^R@~)K|!0-n(a@IR5)>3qIGFoJ&;mO@%&V#6Wc#wC4KhXdCC0*u39dgiU6X148w1)l%W(V zOsO!k!!ZRkk@>t|>-B>9OyYF^{vj`75`v(wfr6lKxq_e%T99Ws1_5(@BggG9#34J6 z=u$)s@lr?qPElYrq)SQX&gR9kPHN?Ia6E zy(0@oJu3^w8z>9Lmn#bbA^YnyChb*Av3fyD|OJ%`9ugijir|HkyIruZNhjMvg5GHzD{QZMi;**ky|mUsw* zb<84hN#>H^t=Qv{V3gI@5+Pvvh@Ckyr0SjVn_I6&*XX~d zs9ug&(FL&&S8gm%&59b;X3M@i=?x=N^fIoWC`0E3a|DU=*Zndi{7Z`J!FOvZt45Y4 zt46CF-wztsYpUS*O5d1tv&;z=PZNi@bUD?)j#LZmSUj!k=uOxZrKT9YqKlIq0jMLM z!@G~^k~7AZ#u*b;IAhdK$r>75)W_xTLQDMJ@M3a2y4c+v`^^>^i=W!dTPp;NLD4e>HxKs*z-;2KawjX$urJyb|TY z8fz19X;X0gY%D^-O&|>`rW5Xd)h}X%r~)2DiQ2KJ{-Pwn=x^1kF3-_lK>HYuY}LLn zQhD5=kg_6S@tk4HEF4{N#2<@2S~Yyej`pIc4|-Qv>tEwm?2*_+Ew>!AOsEX9MP?r$ zP}cS!DAr|!E*6$TycIA6Zwc0p+Lb&lfr2&&^7hSx9)~m zX=lkKm_=A{v$bjMy(oCxEW)yZS(vgmpb{LXEXs5w&^N5!=XKDTWZ8%^Zya=!SHfyl90BI5~a z9r{=+LCxg5e&WtX$ak>mHksT)sUbv)+qUfVE-5nEvQvszs`pLDyc6QJwT>Cc-zDWJ zkJ;ZPCe*r)-_anU)-8n^Z&I>fmgYs6yrK~f_d{f~6b=#MdjJx{j_0M= zej0+vu!rmn0LTn`h?k7-htO~iy$=W&L>-v7H;wWa2oqq91pk1b>^Y%*(z{SDz^t@` zAuwyJ?tpRb(1iyY!MPN|4$ig7l!vf88-7p-J7IJLtlPR6#Xd(Jd`u=34LSIj*BBpj z@G%eK9e40C4dG?4?I04z8ykG#v>gf_oEg_r8J~l2q%<}vrV308@F>B12t3*v@G_1( zbm(-0IP$QABgv2lr58Sy zIarXlPPo&-f|T4%2)q+4*fIzNcikm<&~C_dmxBkn=6<*2LA%${1<8Xnr2n>}HuZU5 zAFjE(f+IRX|52lZ2l)+I^`Vdowoh3v;_5N{8)0Wb{>G_NEM>JH^Rl*=D?a#I<>3eI zc+x?=ODu_4b>Q3_1-}iOu?fLR`wk+Q;YOiD)LC zo2O8Figl(?d$(hqE5+A{#htOvEg5P5u-fLkeYJMQ6&p91pG(gV*a4)Ih_Obbfp48= z#|+RL;SCDC->uELvfz{m7iH1l=G?Ryi;=1@9nG4~vr$<#hQIfi>)9A(7d~wRaz6?? zrZN{ZsT*-bLsQiG8$hZnR*Yyr@3uk30GTuAQWu|)^@wUUcuuP0J!7w zJr^vj2#i={bSj#Q5@8b=QP_3Bzs2>iYeq#C0JDH9I4S}K9IZBkqp5JU+It3_n(ILw z#bhDQ;<6C_Xeu#7jbl@cv40NGoO{0Jc9-4i^5uj~XL%3MvBtj-2@fu#qlQb6rbMXY zSQ5E5^xqZ*Wg}Np8CGuD@jA2?tv?#3-iWiB8mI|Ic+->D&3V=bibC}%M`P{!UGC>- zxP?>zJaauFh?QV|nqc025V46KB?JrRYyeVunrFcxUNyNRN+_TmX|27Z4RS{m z)k8bl(AqoNgiINp@jxLxq#SHozqk3yK>&Ft$hAPJzc;(h%!^f2Y^y}3wejlOo7+WZ zA_XimfVb}S7Qi={8DRswYqx#aWKdBu%bsqxl3ADuXC)QSe-x7Fb92{5C`7&+f^MiDb1b~~{g0Ctf!wtl1b%DU);Hd(*cFHV`NV$%zL~A^BxH^Pjl`pg}KvPFn3CrDbN{s-X~$E zL_|~=*tcPOBcfa3uiLkyzghk|w)bxT?Kag>B<-((FS^ye9(BeCv`-OyT|?S$)`f3t zdAca$fwmtDoc5h?hecx3+#Ki*9kEeOvGc!2TRCbXT;O~lLZ-_z$nYe1uk{lUVC4F3m^4`$<^d~5VZb71R; zH{NJ02uDu}2zkzGumI?QhN#`P;N~9ft#uI&0_Xg_@wEL`T=ro}%#I+YggqjY4~9Y5 zd$iFIS_+hS&1Mow(on?GwS-O;yysq=Z*Jo+v9P zwCjlbFKtZp2$*W3VF(lUPHI|Dff2m?@YtP5EIz}EcUjvydau|63Fbp;TNo)g;W9^K zrHS-sbFoBx+6V_H3?jx{JeeIx#IvlICXfOwjgdV)+O;yDwc}G3QQ6VqfxVhZ&Eb#eRy#v3*lTmqTNZZ_W_tUVgPGuP0cK9) zgChsELuIy51=S2QtYo_bH>d8jxt{0$kCqXyqn;P9qh1%Uqb1^Xw87$aqCgBW7M>_0 zh9+7}3{8}Zp~+>5p~+G)H0g#Ink*4RlMNR`lgkoAlci#4(j750Da8;k=5V--7&`2E zF?87LV(4&*7&_cwF?6g{3>_;YhK{wE7&=xehK?^w3>_~OL&x0^L&r3A*^&CDCKskziOGij#sStE`J zEBZ|+Xq<^=bH-dWH*4Y_aq>%~(q;z#nM!7j)D1IZeUfH}gT`HPia<1uC$5>(nP{JJ z25|v#%(;?@CbI}eoXhqZmk?f@nlk|BH2&r+mb5;ns^?NSjadRGoG7e3sR(Z zp8@cUsF6se07f>4KVdfdBVC0xn4B?(X(Onh-BHHYoR4D(hxks_GvUE2`mvowfLpT9VdD7~co zUfi+@>@O0~Ml^OK3IJmUpPZdF6A6Phr(QXJq93av-jB|W?J%CqWm4HR0$XTgCYp{; z#}n~f+{^|In4qC{8}^o^;2Q+yjZr%h{*hAe}Nl69k&@X$E>0lPy?8S1yV9@BKxfF0Z zX&ktG=lP4)s%L=NEC_`&BNzh+3C5FGQ$1kM-YGEMyiKDx+ZfI!l?40I3OJ%Gv!HVP zpP{Cs889XSp)&~}Ba;Vut{U^HypaW3h$s_aN@LGC{La8p=V=do(aAjqPKoB^QfU?9 zfc}$hq1PY+#ya=WbdGg8U}8w%9auWqXCzZOPHlaRQb12;EXXJ$39h|i+O){O8B2jc z=ttL+psiVp-5F}Ja6H47?t?2KXFzVKHadC*+JQ*WCrB@a%~4kYwyG^Bvc^mb(gLL! zz%@|=E`ytJ;`HH11xJL>g1N7QvU|GuobKvJWyz>Se>$H@lT?rkCgRskEOjlB%4SK3 zlI)+6i4ICbwvoxvPm6@Qb{4<>NcCd{uPc19G~F zG(*#vF*C&5LKbA%)n?4bug&&DBLN2H2vf%8nK;dS1;#q`Pjd(4ur&>g(4_e6rFGMOmTI^=uca;FxA^<+?Us;|iX%tcz$CD}tq|ZR%1Cw3LhoC_nnKF8ALJz_S|07ch8C%k(F@^3NYz?#l zd5F)XgZpPv+5JZkoxX78^d;v9?192huu=9A;`Jny_0&x@mbz(OCgfSSc41$cbbeg_ z0{uJm6NV=S0M>UbkFS>gwwGO71T9T2ovqUDvMje_PQfy}?m7cd}T9ymE@XRJqd(7aqprtdBt~J#Q z%$&C&;p7ejg{d^)W4R8UcIs-*OsewCL1fnFt!xJ^jK#fes7dH1&vel@ow(G5g>XoLZBbKNobE0&-7`Iqr znyjNVRHcrR=ssJm5SW-$tp>|Q+g&uQpO$=Wzl2)3C1qd6gJr_Im}^OVam4j6j=J^5 zN96aI`>jlFB7!E|~!tq*57shOeCiE9nf@tALwQ`5TW9}GSLynS7HP%$@7C#x% zw@JwC7yKYSE3RpIR^7!U zWkH>i5&U|6hc;3M{L%mc_Uo8wrs+Q@VnNlW)HdbzcI|;Ozqj{N`}UJ2JgS-Nw+bLc zT!ykiw1T3DBPzAwTj8Zr8$J)0+CU|kw)$3rX_J*;C^Q7MJ^W3q?Lp~JE4)!bgVIiJ z^JJNkv#2uSR`1|IV|oXp9LdUNlp{et!OGr=X5|y8tR2Iu6$jmK$G{@~$g^$U%84jc z+4FbazHpci$9d zgS7`vx?gyy!rENLy_SilXHk#|*qMpYRO>#ZzKrYrgGeN-4<^tQmFWg3tYM#znc-$7 zbA(1Lz~H%xz{5-RmLl}uj_CxbqWwMq)%;u0w#dtX_LQ^cDR}*l2z-55`yFqC&zu)! zT@|#6&(S7EFCYQO(`QhL;(2M5jfG`5=wvpc>_!Wp49h0jB)3H|=CrL%{|9Vqv)mSi znA5g4{~xd|M_C9v2mZOT5QQb(oSAeMOY@vFM_C9;F=(l>5M*$mQp$5>A*^>4Je=Yk z1vr7#>?jLCIq=Vwg_xU8C2C{|M_CBUSZS%U5S%5RD+^J|5<6w36iP}bme}c?N-4WM zT`6Uktdv5Tv&0g+JY6YemyBQLEU~N6l~Q(jzfy{$wglBGAeU9ACo83p!P<#RDJ^NR zvI}{yEQvv#$f#V(UT>B0*jrM@qpK9=E^ooyC1Iw_Uno9~(jzvW_jwEEeG+C~<)IgN zwo_Vpm51Jj)l2DZX1x^T^HO;Qd-GJ?feNPV_jtjS{ViHBWxp(#Ld-!0Q}!Qg)q*KR zJ1Cf9(+;ou(C1$vhN!eHL_%LcwY}9e=|vb>rD?P7xZUh$%iv4`NeT$0jK!G~c52{M z{4BYNJFz4{?Js~UpuGe`x2@H(je-Kf{*ff?Lo3%DSm~E49U1-v;?^Akb$lpT3U#p2 zP@A!966#?62)pV$W(a2OiEo1jf7D(!{)l51Z;yMVT`Tzfuj0^-Y#7j< zbo-TpJwRHXNM3K`{AJcPL{y@oSW$|?MY$B7b3p&a=2(>}^baX&lR|IwpvaW8BVDRS z?dU&I?7*!-y==baEf$?*{t38G{T2o(?FJnb`6{N4Duu`Q1O4ZTeic>2ukp&t;oFmu*ThInQOAR?cvK zF5A@3oMm~c&t;oZBH?q{rq5-YGF9`rY*VW`$#dDJJT;c*raqT#N-ckumu>nvpX%+v zR{dS&Qci0PjIEG8x^T{^<&xl`w~m|po{655VwsR0 zlv$gV9<_q}O^f*|4~yT1^&$D&9@~T1YoJz|nV3ZVHq_9HCLZjzBxU!*ML!>2%Fp+T z)vM66_I60zEi9MAk;R#dX0KEB=1nVmGg-#1Z##8sPhTuaTM@|`w45_*MbRF@!nd!| zF1xaD9;M?7awd`9rMQybbsZnl_i59vfH`H?`3X{5#MA)X{3x)Ko4*@>qK4CtVzHin zEn1hwSnJ=Q^-rwz2xUdC(e86)ExZ6B0jS^v5R<%OMTc8e@oic}l08*9D$~(CkM(vB zY6(~NBMG@+z2hk3m^;ZJxPZ>MbYvOo-Apq3f4y* zqFg>pJI$hF{ED60qxD;r?bj(KR1#0O?+a;eizoK*W}%ladOV*?p$=4(_Ds7)TKCEo zZl!e-5tT3qvV>P|IiTfS#wQc>j7{jjrUpp1TryEzFOJ;7`ICt_NSMo-)yi#+kTonM zZS~$k`)QowPhNv3)ir)y`?uCb!&rf_;R2KS@u=}Xzu{Z_%u$wmj%dyDiUdLCb)(skQLTsxSVp9fa-vp z^$<`2rlWO0);3Z{D|>>L(ilL$Jhe^tw|k7FEJW#ELKF#uZ4K70tDYPIwB1VpLEYcp z_}dbx0NWd^?q588;nevHXSuq+tASVLE_qc_jsakeoLYJgB=@w%5yp8qgB>J~|uCxU=bq<)ekq zpBkP-qUre5KqeYTwvLqza~!K}F|_eAt5u2b7gd@m!-vjkPhg$5&MAPfeSn32P@bV^ z=3eM(l)OQjPZu2hwH3G&i5pfUBRW;MV7u1p4R^r?w4cMm@crh?P^9h7S;W&+(bG$W zJ%pHrrRIz0x-<4(XDN7v||?U z7Tr6#Tz|Ky?$@|-=>=R>BNFX_rSqCbDg(vjP(Y&WAbNU2O*n|2@WG}X1YG0?8g+-I zu@>$yml{zocokT;-hpP_dVT)&ZrytJMOl)VN182v7^6FH8ZE1=D}X!+ecHZ;dJ-HE zSkfPz%;Hz)BdO`EnL*1Dx&~fFaP{m+9x>tqcq4%koX}p;K=I>5Pm#-x3OMy0 zJgL3R9VKaz`XN`TQyKfF#&rImn2v=YQs z0b`w3*uS%(rxi1yde0#!0e$XJM47xX@t7rtKLRv`cOBB+(?CH}37j5VE=17QFqz}c z=^`wu+>*|yK{1SO)wd^75LO12i-p-Zyr!cGW+Olu39PX}p)7xljLH$JG=PyYI4U@} zylT>TV7EO&5gg*Ahp4YPWHse$+ z1}ArjR(0L%v%c zUx*Hwj_>YPI=&0?_(Gf{?~%tBB9a8fUveBDmE^?nU24|xU3Q!mr>-k@{D3^ZFdZ@--vh05e9xE17v?1S0(pF4ez82XYQ23$&?NNecu4Ee=3G|C z%Q{CoxxPRTSRkZ_c617HM`u8w>^;zUP;hTPT!NH`n}n2yB~l<98B!i@5>g&1LCPad zLdqi!q|m(rN_nIiNCDACR&BD0Hq2#YWb<}=D8!+Q?AY6QI!1y@WZ(Y!B&YSCl=M5!FYLzs4v@|2BB#mmwk=T^T=362;tC1*@l6ryNhIx zn%&%fNaCzF-t{Y4Z{WmsoV7O(Ka)5{U>k{zAV3@-Kx`uj{3A|`00t5u{udZ9kbglC zB>B#{_g3BNE|T3;KWdR(EHqMA)xGDQd+xdCeFnkD=#%$aTN4wZ7;n)Z{tY1iFrbyVK88}79_DsS3M=v{R>Mv2QK?Im;WT8qWlIN&Yu(q_HB&YtGMzKzig9C@zRwkaCihLZICIyH?F)Ce3Sm zmqDb<(fr>XMw`=}%rD&(<+~gJ5$Ve2*Vi+-b(L62tzSikV^^PS7oT9xd3!#evwIDv zi@CV(^>iu}k4SL;aV*xS?!%Z{{PDUAhL$N^K=^hcCuWr6J)yQb|WT{SX}~=hAMpG-TF8OFv?K z!$)XP0&s(6X7Azz6(O;!{TVT>rsXO`sEzG4f8jtYS)yMYw)yi7r041hDrs7C-_}av z!*!8(i`ixMird02eZdgy67ltc%Cj-Q(_sWBm&N?)11;r9Vx#zW)56Zpzuxde=$)eS z7%C35+to5s*SY)24&%pKD5m)1kpz`*cNjqlbT-l8CrB~-=C@laI#mX?nm<)V?}&WNn%5f5xeM4-a{yrXqa|J z8ZvMBj+DuXekJH-QaOg&hr7-o!~3Ly51kQ4cG=1u$iV%0beE5Jpo0l#=COJS;gR#{ z%|=kds59KHeUZX=!$@JG0i-ZI_@<;VJhaPh?nMg2!@GQ3K?)=CEI6bvJhE?67#?jX zDGZP8hZKfyHi{I6Z#9Ax#^0C}CU)7)y+~nXaF>rONI~5W4k?Tb)k_NV>KKm_z#bgY{Crb03ZlHG&DwsDm^*Y>vBI zq=|+?G)k26iEKWpNmsrC&gjVg$=BJ?(fx|Kj*K$84>{NUcprkU!^%eMmUJCfHagxA zR_5;LL?d=|Y;fN@8vYa1ce2>SUQwJnkw!IEs&GbCs=tYtx3}JUEBvYj?mK5L4hm9|mr75+Q z^DFh1D>g4fZl^!s16yz0;_|;=4^2DW*_{o+_SzPZ*tt8_p;E0;n`D zn_d+ekMI^9G>*K3>bDKyv2G3bTIP?GHn-B5LSikMqB_}>agIcWW1YuTb_bA*s#))k*K*tFZ5IPF>X8xsw3k|(bo;bb#ojHj}Q%QNWGhn{qCNtk~%a|`p zPn|)PpH_GSHAYC5dBF;iEOGYOx%MPapMBrc#2(=)2hVk$4Ywo+Q%44D<0#jU0w5)= zCi&kaXx=#&{)raf5p;!AKod!?(k(&th|XQO+?sksyW__xQbJfd51tbgEQJ_L=g*uA z5SBt=!qSCfZwCxZ7f`9NC4m_=(NYLyI#8LlUFW~Ng`3u{IRBU0b^g83Xy^Y@yUu?F zM09}=Pa?{`+^+Lq0TXdaan{}o97I;2AflVZY8Q{J*fl{(f^WYMNvJIxX$P24p!)sR zmpz1T{65lZin7>G0)eJik!Im(=MZ0+o}P`z$r?Z>x+`$h+7&Qrg)Z3Lc~og7 zBa#z#A3xEaJHCQ`1t)~s)jcr0Pqm9!MEA(8KpjV<<96Sfd6RTpY}*INoJvcSJxITt zJnL>G|8n)1Q?ZFMb_o|((bgkKtcjXcL^?0FrddU$0Jm-nO{thz-A;V1Y!|kLGWmB1 zs7vpm99@HX*B*8?)|q^PlA;rGH4jEmYW}B#1DKMa2xqtgm$Y$2;)OIQ>n+?A@22YyG&2JGgbimsG2Gt1(Yfuy%AMD z3M^GVdSj}bcd3#Jwqjf7tEh6JnkpB9NtGz}y9BCKoj_!ZjHTn}+Ynw!uyjQoSSWs( zuD^H?uRp*VKXcxJRhFDx_Mnox!!EZAmCG6`sTMY&awVXsT&X}M4%OpoUimnnyz=qB zc_pam@yNJ`iV)oVc;ZeoPoEn}(=AFpkwbzDhd;hM`zDbJSj}f(j*6F17y>r(vnuZR zRWEnMJ70aTTZJ>wEl#BRB&d4ZlVIv?gtMnX#2KjK={cuq#Sl29`I{X^yK+^{f!gX( zJ5C1ke|8v+4r|-PMaL;$<~Kc6&$j8CsLFxkoV43roB4D(Ys)fc_zDG_yop*)#ij?M z*iXLjWXIgkJ}wO){(L4X1hlGbql4_{1HAUibThMCl^+^3&$~JHrR^=M&8=!-uc()X z%#YodRQRD@4>r{KHN{8h#3BT9TlDc;q4#*S(o~&2IxQm1(jQ~WUaehsfbx_;7 zj3343#S}V*&5vAkXmts8D4C@FtSTq{+ZI(B*KtstQlc-zseqy9z<~VItE!NnL;7yP z3-n+ONX`d}UACsae+MZS#ru zhp6Jj-`eHGJJqCy_FE(IV^tb!Xh^@@>k>g#sXKS9{fo1*f@1i$ZX4aKf>jn((h5IQ zT_x1r=DJF)Xeg7==GF@YHMg|V1LI)Fp>X&kpVWuy3JK54=x4-Q2-Tj}fi%J!7|84n zCwvA{3RoTaUlkKQO0H*8k1(e!Pjs*i<%tfqzC6*7g8U92emlI~7^JFw@U6P;CBJ1T zUn@&<-H7v{K*}SXO(++_2QW%I%>Z#0vp*CYrOj-jT*yWN4h2#g$hU4yAf@L_62OU6 zeseRUmt6SU1kgJd!Y%3K;Kh#*Ku+{DSp$uW@3$!OWiLE&v3k2e$=83E0PBt-Kdt3d z?T0T7a)J)kXpX@}(v)g6U%}W%PKHN()?LkOQH^FZ`NBrcB~BLzg^A9NojMyVItzvG z1F9=M;oJLIRK$Lr!HLQvCtob@IHHaMb&Nt`L>wJ&OT^Lf_C*}g2|dwyGLR=UM1sbN zv5%TBXt3+*#GOx+TZ$aKbRnOZi?{Pa4lx5g8RYFbIWXR$?KwFytF}kQ3YBw4Dhw+Rg?QZD#|E zHj-uD4eVt}GX1&G@t_I4h{rjPuJp2cC54XRmkXh=`bEa|n4#0^7g?0#V(7g3h0?$Y z`R@f5`2^jSz(Pl)VFiyg2x(n`Mp{?wQP9p4A+0;mNc$j|ly)t!NJAva!D}NQha1#n zu)^Mrh?VJNHk(|{+HCbs7P-zVb$_(eiF__)CthVr8yvQ2{!T|r8s2+Nj|o(Jg&8z4 zX%5#IPN%6$<}Y>_?Xzi{ms~e;Dht$F%fi|%qNaYOMO_=c_>>@YJEm^abfH`=XR;;4 zIYrUojw90ktiuR~{oDN1h0=-B&`soU*OJGPVzPufT+v?DCrGPRU6H*T;HSU~Uunxc z%GwFp)u3QPHVB~g+#FN!hJ$sr26sLis_U~4)ojD&pi6|BYgv*ZT1plX?&)nzc}smf zV)prdyj9L-6QxWkTk+vd_2H;_W9JW7^J({L(Cw~EuuU-!)eLNV-W4eFO^;WW! z+K7rj&l}VQpsAgVeuO$1T@Sx(%v#j)MdWlUpSBYl$y_>1G1pt$Xzq|q+Xa39jW7W) zJlSFZ7Ppre6p9W20Eb$Jfmdj}>w|$qEyI8UU~&6128A#{K`Vz3MZ=8_TH#W>MeKdn zE}_RRC?Fxy54fvcB^oGf;PB1+jjzA7HyD+GMS&Ew3ppphKryxJSKn{gOPG$}^4 zL@ulmzRDvv##-G&>!oopbm;x?X7g6*cheZ`iwpJMZn!T_t2pgWJcTQE6D`t~f%aK> z0nXJ>37}_0L3KI`4Vx-#Ab4fvbPCQ;ou;Of(pX# zSdEXx*!!gKc(l?APiKOIr=J6!&b)Iu{Oz{0Aa(63B%KWol71dYItxDiowg&11r(M} z6q?Q*zR-AHN!G|>Rcy2rJkbONkA)a&-?KN8FEe@cgX|z_^qd)Kj*zA+9F@|jsMl}_ zQdEl~uXaU*5I|%_*}n(MxrC_MpKUbd>|=*qz#>IEyGG&03?7PZ2Mj#gYyuA&?4?Uq zt2EdUMPFY=Vb&%@UmFy{aK#N+pfX1=6aS>(+r3q1xRit;T!V`D(8+Ggg6_g5eQe?{fAlX@C;tYknO^{e$CX_Tdv+^o=T6jbcIJUp#pA_&Mkv&CogahrLKKUoOC@OkWd>{{S#vJAM{92LXaHolh_+ z5P-xtBZyfDB;Q11TtN5snQ*ol*wZiKW$@{4^hPgdOC*kfeclKe&0wG0O8LgI)B9_s zOmLymMHAS1D0~xRBm1h~2i3kwHKZ~Tt`hjpd@uai=R4*0sNL(cl`m#q)5rr~xSttyLRD^SuY&`3 zJ`VqKAfeO(D+s0kn1G#I2BkLS@IP0?wnJX6qpZ|Kp^<{Uj;y%Cwt{pJxwk=wG{j^& z2t_8yWEu(+nGPYQ@cV#F1xl$QQ?OAA^Nj-2WahEarXs8RSnq((Ce z04a-a^lYS^o3bxuD;E*GZTT|8JxpO=swQLWD)yz3q|bPu82)77{3Rsebm_<{#%Xa0{a)S z*OHm6kgxv<0oOAc{-wYHS1nxsGQoOt66J;)%ue4Jkxm^C5>`L@%7Y+@fO4-R6=F5n z-#&_c+IaihnOzYuDcplCOx|zQX@z9?dsl`7B*Ra;GW>*;;im&2!%w?1yzECa zqXQ}=_L=a-_Dk%D8zj3YDL*rpx|^x|_=YTc)P^a*F#KV7+~?Mx8Z!QK6{#mymq>19o(~j~nW8O= zI{_j0&slGTkRpcY>Ir|*0)Qh3g-vac9|m0OLFgUDIj9>BX{Zn0z1)6!mw|M2k3K-> zodDmX1Y!(IP=G;%ZW?R7Zu)i1di6%Q&=`_dY(eh>P^A&ypNh@R&Jd%dUHLfByV9~Q z8m>ji2??*ci-!8v{L2>Ak5&^tAE=B!HnVQ#T}3;E2oVROrEf16%62a|SE%?}c3E)S zXn3OxeR^m7=>enRVa|K#7|T9!Vdl8IYB$|^mc0^A^jO3j($yO*Ij6T6?J62A&wS`G|M)uwE^GtDGsvpIqMeh3Q zgy*hrG&~u;%I4?Y-fjgU+CFud2(AoR7zIbi1rRRwcA5`VD(|4)pT&E-RE6P)T*;`) zROBpvXP}`v1`^Rw80a%j_~U{8{Q)D8-gfh!c{&)8&=~2;=GWILffR-N*D~wTbS71r z=D&9JSp~aPF60s~li9L;o7%PrR!m%P57$1&41Wod_ROcm-1$0v&_wLox>y54&Yvb$OVl(pc1Ktijx@UwtudcDY|@C3T8hc52d6?G_z| zJMqR0H~fEkjdRTQ^^Pq0e3r`Epds#CZ@tyr5F^%=xka+3}8|fr*JGrSQFBTI-6DyLz{CM zf2SG=AeBnGa4IMw#@NzZ&$J^N@0lbrlhjyF? zLumBy&8A0!_~9^8!mp^PxK%Du*f01-2ri4En(*o28zJ6{?rZzp3);xYjeUL$j&;1r zg*uM6tWd|7DAWOW{MUT8pz$Y)NHswuAR?&1woV*7({i>I3d4nX5=m7Jav>@_Nq-BL zr|tyi9#rIx{4BuqsnD5*V_K+tm6N7XjH!@eCo;`_7qulqr)unY?=Y^laxSIZ&}T5h z`3qqqn@4e0YcTSf&My^*eW&wcql&{ii1cS^4)uV66idk*>WC0@f|jU^^gEZXHa=Ig zURWXyn1mq$>)m6mXl4Woki|45kM*KR2TNqOo(m>e=Yt22R$6rA|*SH)10$BhFApRSkpc3E;~o&j$fu4&AtXxkrIV?Q;O| zd$@NTfJ5dlbQrmo?5?9FnAd73Cyg_0e)B+!KwDOFz1i*R#I7Ti?y?B|A$+D?8KXJ% z{xE~*`h?@|w+k@zcH_0oaVeVqVR$g-0bX|qot==WLpdy>K^in$P13Oa9C@k zSH@YWC5S+TKk6_VRA_(SvXnXFo_?p&xsOPJgW#;j$GO;&;^s_*4ir^lp>}bZ|GdL! z&;4yq?u1XtP8|4su-Lkz6?y|Xvo(|M4oLnt9C21>hR9Zw!?oq;b}=-Om1$$ zk1c|biUZ=GWDF&930XrMUEP-!Dl1NT=Z=bhdM%?*(e3%jv2eU0{2S4v8y>qU#gKM( zo@smx>E4T!Yga0sP@kh|m(JmCJstI{b}xQME7v3SM@iJsj2tJz~>B+-v?6YQ{CQ*Us*zzL?xjY}nas-nHhP3cuS_ zYhLXDIY*AHd0{v#n%TR%Zm^tZ8c{~3! zEd!pq_8kYQ&#LN~FhHK~Jk(4B_Wt;`m zXgNYOKw`O^1{38%T|IujsTpcJ95sKKG6Y^?(=Kh~)8Z`tBLeZlWmJX?2-+$@RF|ds z@0!}KaR)3a!F{iGjlQ3o=ax4zMGOB=TH*!t@}n?&6MYEVpo~Z$H67i&=`|)*z5$~g z$#jk-NtvKcvub5()ToIZ_%=xEm7s%Fvp7m^KHH{z>h>++`VdmHu+CPK2fq_F|8rZ& zqgtRh$GqgBPJ`~X5cEO*2@38O3p=l~;m#n^hmP$0Z0tuk)g4x31F zxgPvY$XX*l`C8x!%1Z^)-`uuPiQQ87ruk(Xt|_Tan7`Cvv{j8Tuef9;?nzh25NK-) zgqjRp4Wau`K=`jajKHWK)zG?niGcPr|6rx_DT*sVUTM+%@6AnX+2P>0XzX@jL|ZS9 zo??!=^g$=f^SF}HYjTKKq)>M}YXvz4Tj2@+Y>)8)`xiuFhZlR&uQ^PP%^!yXM~=;} zw^)B0_IfryYD3P)911>D&c`;o10VVzyww;CP;dfuX@!oQK>+jrLxKoeyCXy7JZwLWLAhUaiI?J~3<#oI9;R5wedMUJ$fo{a$e`?o2d+gS#-d@u)l-r02Xt}#dhf}zF1kV#?AlIo(j3_} znBAX_&A;d{0wRy-RugIVtrA*<8a6&ST9aG|Dus~SgeRPF2bp&^ii-Al>d~nQ2=QRjl&>( z@~EK(b@6|77(tiz%+H#%L*^eew|H9}8>6o0GRpGF6zuZx>rU5kpN{Rg#Xhg#(8O!!#Kr(HQdelLdGTw5p|I!J6xkH zd&<*D^F^KcbR$#;^{;&E$kAr>iEMs76{>A==t2`DbFPvo>J%$6WD@2%RAlaaf1nB7 zg0%TWUB+oN+g;BWwyC1ZH=#ZqI&>ras=?Y5C+^v=x9mb@6EaCM8!g(<V#gNakMX zL}GAq{h^WRh9}qW0YZFxb2Xn`0yqLIgbm8)J$z`i@%g+v!ct@?5&}71yij!J;jcVw zd~{~5zz7V*dEW>-=qz>QP)~C@OJ%d0(XB%MWhRa6h-iMx&LvS%Uq2tz!Q#lk{l<5& zV08G;zW_L6i%p^-mf{_qI@yW*y^))<3dI!KratA;0QUxV992=c)d~(BHK=>RH)-A*l zd5J8iL+^(-o54+8y^p*FUx9F~G`&)ERw26z(1FHkK!fOq|YE?RMrIL+pgfHo$w>}Yw?c(V(O~d;| zq;u|v*e)W8qj|(eXn60M@)42K9moIDv3J{Z{4bq*Ux7jem{39SN|TxVm6kDiis!OA z-)&YrS0#x{9xpWGL>BH7!QDwMwh$4}@St86-~3D#9!Q=K#93umYB3+gt8Sx5Dhq~# zc=c4cX$SEtN)YeoAYMIxsfh;>$L{LoCf&NbNKzp(oLwEd(*)ge7sFX7{B_KF_kI&v zne9Al{PRcm7UpD`%c~FOYAkbU=gOM{v-qQ%+py3nVxsNoJg<1wh#=aYim@K&I5s>n4!*73gmI1 z9Sn8o%zMpYsC((&LsudSlwpCrkhJ!K5ZNv z!-j`M@#!J5AW-S)u?xNJ_l}9`Ik%3T3zXzN9&+LXsm(bMIR0)#Lm*>${Q6ymW!ckv z{9aQ1f*!}__c|Kh_i_izm1BD}dv**Z^lC!pe?4e4+{v^9bW+ptv#XhNZUB&9#m}8T zr4($TGqHa}#MgZL0LP+Dqm3e9L2ykjpX=Yur(Wo<${-t#u_1_6WE;aLqGsmvCFFL? zXgn)kUgc*+3%N{IZN5Y2AmmG0{N<)N}|0i4CeBnIKwjxCtRN)(Al z(;+gWjLPyfm59YLuc~sAgQn>snPOtF;$jqOa9nlLd2MLd*S>e4Ss}7sx_mw$x7@3t zn-AP2>_R7=k6a27TD2gNr8+1CxLw6g7HPu~kfjrgm`PBJi|XNBap<6WWY^dJirTnQ zGw!Zh5she*Ad%#~9HM(V%Xr6~u6kp>UG>;t;pe!H?%=oPL7ym~Z<>p>11&viQE`wx zZeHob;=$8u@LT5RI}N_KH`#9%=}hKX?x*cq`EJGQIi ziU7e#7Gd`a101+Q+=$?r4OA!+V_pmyOzVd)X^?Krg)>;X)i}bJ1(f%-&mhFiG*04CW6RBQ-5w zjmn=#Ya9EyF|m)a>zU!JH6mF-ADh3w;7Qfj5JS&gygaLsEIcFEKKvIoqQ;@R$JE|; zworfv*X(zRL?jTn4d>_Xy5b)t1tfWRfyOg%T?9w3bJ;$yX3dASPY6Vw*G_1g=~fZO!@beO5A? zwYJKu*-VNnsuZo_M!uZIv=D|~Z{g=mDZ6bY(`kT$oAznqX#$_ne;~nNOiBjH0dN$y zM8Ka@IRaY^P#`49;c~PI&OHtBip8ybxl}~d7hVOh0&E`jX(Ep1gqdXae!j5D@MZwF zN_RjwH1#gTV?y0#ks_jV+kJ?q7BSR))-<)cf1E_8f|VS)=k!?%+$AWPC6Je2+iLy-F6+ONjp^j4tC>Ovy7~ z6X=4b4dM83LJ)F;5fGUwT2qU$N#OB;`1e#cgUzM^o+j{l22x~7exTfjPo!EsmM}=oTxR0tu2;UMUy1jK7t#O>@RHVt52T*u&2)? zg7{zD)&V~mb}1DFVE}#?F<6O>bRWPVhzwZcBaSFzwPHy{seGAeVk-&CmISFU9f-*l z5xQLDhwfHPT5{FA2t?bJ@+owTq`?;jc~(={x?OsjpjAChY+yOXJ}VC@BT2juvVO7D z2hBpgklL_QFZzs%AD$-CHg<{vP9Gw& z9hp3`d_V?jAEV}~(O1(g1_Xfv44A_jqjJkAQDVU)L-K@k48S5Ovi#XI=3eVY{fVRd zny7B61pD3XCzarLhWzU_$`8)nLaXl98$*aIjDA*kN`?~OaI_|^nEV^vD2y)eZSpG} zHQxWu?3>B0Zu5n^Lt=9Ls^+GWJd;)=u{?BF*%7z_OCo+3Z;9#g0B{X?z;j=(xbYq- zLHee7&z)E64@-#+S)04T(1n^`{Q_4O(iGCpT1j_P`2NuY#?6|@(OL2qD!fqCj`>Gg zhwF;@#XEdcUuO@NBSHuuiuM*uw$=}GHjQ=L>ax1TBRiL_eDpLYpRHwR6XpF|{0xz3 zHZ`_+<_<#%8)BTbY`M5GY0dHGXP?|pW{dVSOvHb2(*v34{`^3VQiOv9igqR({KkPD z_kdqv6bP{I1Na#v4O8p8d|{!mhzJ}3D%b{=MGD}u{krss3>rX4K`wf=ytalL2*Lnu z8lLnIDNNxq=HGz>KNQ#`-U0JFJVwQ+EJT$ZpQp08WY@48tCT!-+gdJ^C2nbHc45*= z5X@kG&Mp%A1#W32u?5K+8OgtU)QHqXX^4CB@FKb?An$;)_gWOTG-&}vsC*ge$|F|> zKXeIMP>5`Q99oE51xP4Znz#t&mn~ceixl+)=?oCF!3Q$ID@x)iZWl}TruEA1p^HBU zVU6uYQqUqhRX+<`s+<0Sor%b35FFp^j&Z(=9@ zN_Y1_T99kb$^RCf=3F?yxd{}7NBlEc z&Jq-qg~O|1$-;hZr^<-W#*hk%wEZ$yhS(@~fTk1gOG%C&;w9KO3Gw*b0R7Y>=(N`` zAhj%8+2fVAjyz4LOw$v5D#%(G=Wd8Qf(!G2Mmk%izEMQk@SK=M1 zyIdCn>kE6ERiV4$A?ra(m|x1IHl}g$!jyteOX7WL^K%4HO>`&ajg&Y!4GWl0jPaV} zOGk*GeVww|z|^hRxKws>=P3{Vx?at&XhSX4G&G?Z;#Z{^?tnMDRH5*Fr&gsDMh-Xo zQg?zm_D#IOixHCY$kZyNN2&;O4@MJVd?P7^3?;qrdBVWLk}}MPWXT*E8k&fjOEv1} z9KonG-bvlH;Xp&LFgS(!tQBl|(Ysk{#VzQWG>gz*pCmq6zMIBh`mDrb@i%E9SusXy zA{J?dkp`xy$85}7+N%s;yp+#sR3zoF%Dx#j-_!I+Ij(xh1Akg0{mFsZej4?lU5?66 zzdSJJQu;iHZfQO9Nh*f9EHCX*{PA*ojo}cibN#nzsw#pe)WEY7_t=)Pd zWp%Xm7kG+HB)zQUO5LqQ4dd(Z!GD(ZW^6f$|tOIz;rhI7!;05Q6do@k#Y#J5| zM@QBs)4i>h+^bC~Y0c+7iD4O~Ic{!hUn#Y{my`(TN6Iv=xGL0^W_s6ecDWWeCO0l&a+3qDFf&SNRZ6@KtfW<;Cgr1ZBxNSI}(7LqGoKNU?9#p(< zz=fl{W$aN}gBMH~yWl{ex%tG9He5(%;CE!B4n#4jk^(tOOI5%qtn%lCRD8=CDUA2_ zOE|ho^ETKr0BUzC2}K0uNVOR*l2Q^Xe_l9TM75zl;khA!1w&#CA|}^E(+k-8Q6EeJ z!dPMNI<>hV3l9}`ub7yLfV5^SA|jLwHkClt&KHa1G3})ZY;qbty^i;&bPaTM0npRy zWJg3jI8wZ!VB@)gx-;t;@^;B3z!$<$xrnbBq(0c9V0uCl?3vg^07&omYr&IBswY$56v+7G^D)4ahI_D|-{4RV|L?BrJ`a-`)k z4*};8*9$fe?szb~0(=7sC5oT0e;fGFUfIf|UcfjCCkDnMDu;!TBPHY-XfF6`$({Z* z0S7UtutcFJ^v_6dpCNxH$qjB}`i+?&{T0~Neuj}TZVQOfkbolrgsqQ!!UB;-7eixr zu{kw^i@ktO!(hkfav{besY~H+tZhR%6%J-pUAj{fUcP`fKR~YiB1w|s z04Fx``4_!<)M-SMC$)EAEr^iz_Jrd^@W(TjyzrM^UDo`xM)}K;HEB#=MTQt zOj^+>PWV1P7N(wIkDGcJUhS4nAb=S005K9oAOxVJ9zaLGUjY@18S^Y=Z2ya)ldQBY zIygE_RX)?Vy7HNh-O6V=u$9klY723nT~}uqF7p_mB6k*Xo@dndiw}+DuV1N&^En4M zUdnIrcyz^ddqZ96LhrRaZ}23)-%+n6rC5e^)ouQ`X0{b)oF6C_0fvqhDcplYY5#^^ z>tPN%e(3+A`k3MWqDF&?y5BxuoJ~wWoSpt8Hvb@M_PI<>3#eVzUlK-Pp6j*ou%-?1 zoy#+5y))Nol)FzVmakEcpYUQnuQ#?9(la)`wB7AzLR1eWo}`6jwAB`px-V#KmF;^$ z(*s@%N=nog`0E_Q9CT!IY^-R+<+Tp+8_KKU#u?4yLy~^zv3rlwZ7zTGV)s_7vAbF? z$*5I#>$T-|5lp?{%B$$eSDU@uK{p%Ey3GX_+kzeO?}{BMj;k@;#Bw5)zsqk?xEA=X zV|8OZquW-UZXWV8kcA8sm8yisc_tw8foJ(HCH{EJ;z=ri)=>aM6;WAqL5MgcCqi#b z_y1Igj1r zg7eEXPziOva6g+|x4L?}4C56dz=a`T6FLjbRLZxc7JDsQ`mhQGB8Fxa=1h*l8SCd$ zSu`a6*&slhKv|gxql-#A#?u6;)Vu6VWbyN-iAPf(FDxN;es(DyTbS>IeVB|4!(;#) zjt)f!lOrEO!{@`b*DmmIv3Z~2hSV5_cxQTPp=!!O&pS)AbF)+N*{6xQ*~hbU1Xfov z3p(xUv$|m7;{U>Ukgn9ENR}?&IbsDk{MFu4rgn5 zOjuzNjL#unm1jd50yikQitJU}WZz1$?F~`Jm2bnqXOm(rR!|8$Z~K}!tFTKUR0{^q zJkBgk0wqOiiX#vwKpbxsrINLjaRfpapsNwdS}F%qd_xWPA&k=sl~_HNfVf52m&uw( zCSJkD$RY<5ERv5A>uKBRH^()sV#=nbpadXDdqTD}CB3YcmF1QigOu4yOdk|sz?GXv zEU^mBWIaZdGpE&Z95hU82zG-}lkIXzikm|#Or+aNY_I1_MjGNHtVb9xCcBa_e-+n- z!!s@3>Jp`W7>aq5% zdbrh7r)pF~5ElF@nWbiO@YQa?>yqo;N$rx)HPgm+jbS5BO2GiGR|<8e=~zAKHOE|? zN7wPB@*?wN;v$VeBy#YvomT`kHrx<3W}&_yuVpCuQNLItdLa2qonb*sNN_}F3#l7v zE)Q|p>5u*NqdJW}%M?7~YwY1Cyo7SSN;S$3tV4~x?QW@noqtzKHSQ>6SE<0t7)qtQ z_Nvh6S5>Dnk602io%{{WxLBdj(i_TjB5kL-Qm>$impAA0Ga|78(VOK>uR$e}*zrX; zd{i#i;4`6U*BNZ*WZ3#y%G5*N7e|AiXb9=Myt(DEN%fn_gx9KD@4OXJX2f3Ufk)DB zrnJD}B#bYi*>_Kpb#BsnzK)FJ@@mw1$Nk%L)43ssTFtN>hBiFd*j*iN`BEH$8fo8+ zJ9@L#8|bWhwB^UhnR;xn)vI<6Ov@!4XVF6wtzPt}HRi}exI*&XP7xP)#L2D9qiPN0 zkVDowtb?TCmY;`=al0nJ7gj`}mxxj07z_@cOHcqt#1$iS$xywZ$)V3`Gz~k}f0jC= zq-AN-u(;BT@*@yR_%ZJdYWdYx*@ps-;Dtelggs2p?u*(5HM)XwXej%Dz$OX?qM$(Z zTY$PvF~?B%d2G_sDS(Jm9!5u^rh9MPYRJ8T_UN@aFxU%&$oitTRvnkh%C5~&(frw3L3Q>W#vU?)kg)hz+jcdN zh{9GcNqI4^$_pvCH05dX!F9w|a<;*5%?o^9qidOB7n$5_9f4gMR0@IGn>@p!QhkO7 z^}-Sr5-)rg8%pG5N4mh82WGg2ctnRw47FTV*f6GR;u6n6|1x?qDvZT?4<=7co5Gv> z1uwGJ)F4vAG?MlUgQr(`Oy}_38gIzqbH{6pXzz?S-WZ|M8E;~=A?qz0Gd1nL!!8E0 zg>oVVZyU94h-@Zb7g0K-S1%E!UlsDX@PTT^14n^s3|78#pk9R)fDsS+lbsb-dP6cG zSdbAmr!-G*CgL*6v`F+~YbpnJZ^36Wfp;I`;0yh}S}`Hk~BBSNU1e|VTJ^x`G*kBA&1*y=^GF)Dq- zmpf83;KLziPkJiXn?>(Ra@nbp5eRwbxMnAIeVxjiP>rZ^0VX!2jZlGC@>i3vz~dnt zn|xb+1|@hPz?!0~=`LkgDeUs7gGJX_n*WV77}0fi+x1S6B$A?%y6mXoa$u+=B`+>< zOY;D5{lPDSiVxRe&4;sylWOn>&D+n#!5o<6-Hu9H7Qh30iYP31ZW1;_5j7FR4HxB>qGmbRhR*fTE(tab! zC)!x%4;j~Mx+}`%OnP947`^$aN3-$8sp;9o%zPZ(-7|kI7Nh@*)vi{ zDo3&+a66|3H$jXc9|%_4&3J@m9^A9GdDE`FhTqvW?QlxDw%QmK*1kafcv#ukqB8dVPm z@ocEi8baFWj=0-tCbil};#%5vmR$EpJIzo9Ze$Qych=A#Rx{|cn#dSE9>>#BJl+wE z%o=As(KXKjI=63IJ@l7N+|2afp8f2-LqRl31he0#XbId!dcG5mVe(}XOy*P3}QNYzkAy+`kAqO6Q zgf*=dV8AKL_XOzM`7)-~X-JQmwQU1GU`!y1*aFA5L6kw-DWap~ z>?mjpf~HJ54hj+t2{0w4z=@@8+C}0LT#X8ILG*z#i^w8CT!3{1La2%#K@B&R=SsY4 z6MQB%Z_O`Q2t7m5y7ol zeLR|pEzM3Z_gS%d`8OlJI6IBdGx}*dHiPl#?|5?>EuUvUUBM3&m^L%@XzIai+?ra7 z#SwaMEvzhC3-@`_mG~_FYAipD#qrV1Y#)PV#l%wy(!;4Zz?z-6re+?;;mAFq-xBmlcS6Ocx9%&CvnVT!|e-N8E$ztguCkYdGCf>?$U8qJ<@U) znmcvNt*`FX?Q`FawES@WVMl%3Beju7WlC>qj>|p7Q?MxX25^mPb9QbjmwsTEV({Nk zdX9KaWC%O|)YPWoX`~&)hJ(@y%n>cbM6% z?gEm~3o{9-FaXnqQ<6B&Ay*7wu|}7MoW?U=bib2+tE0w1N#9u;1A~)hJvOAb_HgM23+L&$lSG7j$Y2p}s zk5O~N7hrk|kHJ!t?7D%;i2utnpz>J?>-x0l&7pWE9+Jg^bVUq;6s@OElK7fBQXqv3 bQR!q;;fx`emr;%g@1ux@v+EtsgBiS(*3TbI(2Z-1GR3I3ZPwRr$r#O4rI-;b}G_ zRrbUNV!d+5QYx*Ec6WE*&#Sq7cXlzGR-fdu&(-d+)k1bTQAl(rv_B|<^gjz?RXm=` zqzdtPY-LTF7bClN?UG)zd|2V%SB$rY`W6NUdPatZdxsW>&h;*x>m6KN7#<#4N-hiy z_YV*Ck1X`5J^jPR8{PT{qqTyZ7QOnoe57qTn_Nw+?Z(K`zZb+qi|Ld>0nKrV&+)M< zbDY=N62ma_#yB+7=c2bm$TcPNB_gEnRO)kHPNXt?U9)`7OYYA(7LW5`Y?GI0z)D&2 zV!*}h@^T`R%v%Q(r8EX?J}oVJFhg@du(z!}Rx3(Z#K`VQl{D-y8s9Em`9dRDqTor@{o>9Vp)yHTWX_3Z=_# zq=)jU4`USa5L?V< zmQqiwQxT=dkfgo)r8!qdf`l(VvrS}Kj8sn%l14!T}PocRxv8NxS z^Eo0*BMy8lRr>k|AZ)i8iL@3`GCua5Xpuay3@kjsIPZ&*{T0WhyaTOU*Kd|xYvX-R z<=ba9r|KJuW+_Nt5ior1Y3Xx90OPlT_3^a&TusOGgJ5YOai-I;WdG-GF82>NGrX@JEw>lh4z_@rg zdc@>nluqEo)h9gUB5bt7^~xq~G<~~H-Muy)WB<{3cx2zPu<#K2M><%$NwF}*_(3AQ zs!rx|StiXS7Ee^mM{@TR)0S9;GuPi#wRT1*{B z+r!jY?Ofqh_np^y(t{`1Dm4{V9&Qy}Mrw|pbn7yr?IpulO{NwLt;^Iy~{pK4*t{-Ql`TZYEtj6dmT6NS)kdk{y+9;7Q9_>9T_am7X;E zS8p@>pd}AWfle*XB&>N|XTOIGfO@POIJX`3h>J(Pu*ai|M^sAT^SIZ{JMglM-N-IB zu_P>(T%wT8;no4K*y;*rHfD0t!O}GhHmi7yC6vK zV65EIwEQ?XgeJ^c`g_mT~;ZD;m9P;~4!`wD4LWNtJa>J=YFFq3^EtUJF z1$P+Bw*WSPI^TVrgug|*Mj4ynl((DUl)szcJuz~+;+T|khkNU+Rchgk` zOu`LB+!UnGz?e9FT$Wz=Kf1n0K1(E=Y?59EKtdw-Bv1SF^F+hxv(mc((D3YqP6ctI zbzhGsoX9WcQY(dgtW*%}Zn_Ua!nq65a}OA?5eej+Cy5lvCD0y}OCZVwp}n>tP(ff; zUwdQoCapf>3PlEN3v55GC*juWs1SW}Yel6A3|DnXI`1GiuQVxBnWZcz8q#;RA{v&M=yD9#FSEDvmpk9vmrn-Uj;FeUm; zQ{rL}rUZ>|H6<wNC;p`TnosQxbCYdaotZ-;)b`T z#0}p~i7DSqiIr@=5MRk<7u9^;G$p2dGbM_~x0(`DzL^rmL|9FUDc?+qVk+#W#4Vpp z2`d$)ro=6uObI&`HdEqGu%^Tv-%JTB56H^a<$;+JcU&+f?)qy=+;zv4nD)t(u(IE@ zX1OUb?VBlKrNS-*FeUBKvg1PUZ1@pETxxe>-lyJwj zUYcFSD-g(dV9CGtl~z4Zu3vl7*`q%hz!RikJ@9b4NWpsGufdiRBd;NEJmn69^~h6E zQWPZ}u!;|ErMm~iH?VGvy^E3So27UB8(BYb1qri$xUbcd zSzEo~Y=P}o7u5X2?tV|w-yBA^Sz3>Rv$U|*k6>s8u-44FdgOw2^`^hp)tlS5t{`fU zVO)7pJ+^_UMI|iuV;EF{EH>smACMK52*!$9@YRZ1@Y9M~^w6w;6}9N26}4zuQG?uy zS~RVwA#Oz_J)ADAsHDGE6f7DQ1wuYqH1R?r|BRbb$d*)(9`m|@Qa9i9fpvQdIY?^V zNgr~Mc)74PZ6omp*@9|Qt0&olX63G7yBd=>Ei24Fv#-;W`Ij6zYOhYyG^led`C3kc0JONJ3P?TI67t1hy7l zVR@K>V8HdPhvlLFR7S<5>$niMq8}=eLv_DgKR-Xuvzplvdg&YJauX$BDF3R7-}HK`mMFQoJqt zR>dZNyju*QHc9@#$}Ssh2jiDsa@W?rF8fMLT{LcXf~g(knPGqE;OBWUi>i-DxP z%byWk5y;}S<*kThr!JEC$m%ixbSz@YYO=ffEaLf|7+h|?FG5nnN<&0H5CcuS4Ma#O zS;r$G?RQs5`-2rymeoY{*+B>?8=ULW0ECo{u3cZ{Z~LW5i^9Ne3aRbW+*I1y;cjSB z`cjvcOO%Bv@0a$p%|J^>_DwL02lrPni$~W5^Y3(}j!8`14aWy>hX6oG?MV^6E+g=pJfPNvHA!CA*}s zSCq^uYV&h>rI1zFmzp;=ZFxX-3qpTTHy_xWF}X*-Aoa_qP1~kzX*IJ*pn&cA1V)vy z%o@8Yb?I*m$jy##&@|1TuZTW5L~-;nm!$lT=yz;a&WrxXe&lag_{Cb?>nZ;qJ9?k+ zX>4J${6@f!6?O?sWE8ez6!JgEME3k{wxB9q%G}db9=lh`rF`H}=q`HukF5jx3#ry7ckg{oIGE zA6p`0SbiYB6a#XjO5Yk055f!7t(`!GL7V|3FtE>64>C!#QLI4*fij+Ud5GJK7?|+_}AxM zo8~1V*c`}4q`t{hCN{Tw%tS;`BZy9W;hEoniA=G8gCAh@fl+DI9XYY3-)%6u8No#0 z=m0Pqb%#1%(}U3io~qfLtw^q-Ld@I-z*V!=^Tmc?gimQ)jz90f{tpLJ1FbBjwW=ynn=#G^h0kx7jE$ z(?%KLHcGd*$4<9j$IcO8N8yl(a@_u2(*HPA`@NlAzmKyU#G$Isj!ZC2c*rtgGNUlz zbKXw)oR1S8wM>{yLQMF)Wx`q&(M4}3e9^}VU$#t`j6zKKiehEq`E%fBOt{0n!!LL+Ss?{phW*V1K6XD#sC9b9$;{50}O3> zfZOXN*P^<8MCtobz zVLW)&E1G)T_pDpT8>4o!yt&(5B-*rKSR@`)RyMhxc)*9vuBe$riYEfur~5SkLszy> z0U+8z)b;f#3%TEE;MYBawLh32BWoylL(vX4@J|tC0Wm3&7uEm!)C8U24 z>WEgJaX-{S3?c0kdjh}2>OvghAxLM=E|Sy_D;hiRem|^rN57sb+*n<>!-=7lK&W$H zWrzErPND#{Y&dvfio}+)$<;LVLr!2{+Ic{tu&?i`H=?jE1uJWD8%-n%(9uj$>S}dvsTAw?{Wjkt+1)UUGZGqO#e6Iq@Q4S3P=U`7`9ixiC1fzva4|C&Y*>5ikwW%Qyd)L})mVwE_r zH{fs}u%eGn&z56Fv)rhobFY<|8})UX`%y*u9iL>QWb$o{4RNi8g2Mj9i{>-s^J43* z*im^-X_+4pFS^d-NcCr*l=8xU!Vxo=Y+k(SzHDyxTw_^9a)r@7nL5-X_31>kTF*10 zw%Q~{Cu&cJM~rwD7-F?rh9ot8ruD5q+z_JmjY@Q@sBi4>;#RSq*OTM(1G# z{XSg+e&G8pHbs?R^WE(KTDT@Mc%gI;SjR`pTxD?7t(Lh?;}=qev}z8IBr-#UqY|=k zm5Cc}W#KvvzmQF?8KXBvjkH-xaG69hU$rbz9J)Ok^)aHi50psm>)iITA!AN z*VorS=`j4H->1`bhT20YDYZ$I+S)67hS7;>sL zfgOavLdC>zG6bYz*l`g%(XiFy!rpip21&PdR#E8!o&a{b-(k&Pb>3lJP_xpFmL`2$ zdwV&tLU$2*`J}Sdm$i!w&7`^8T%V{kjwd~X(&*M`0hU-xeg(Cw#<|^n<&O2U7^r8j zs6WwaFM6ts5(EuJwAVBvD1(r+Tko+`?rS$^4@k*13+x5qy{G$h!gVqSuIf)H*%LC| zkKD(=WE$fS?Dr-Ea1+Ni+fxI8C>`0F%-Hu7xq1cJ>Fc{xbP!$ml*_+u@DT&7*^xiVH=h9}*>JuS?(Y z#CBSTlnEn5rN_$XKAMahp{tadj{~IvHf1)QH_o^7H|F#sfb!D8*9#T<48D@5i{gG4 z_SXj-_lrt@Ky;jJlYZAvu9gHKIaBRCywE;a%)^nJ1`p|Sk8AivK=t|@9*Rm67&rEW}#eaZVS#rfs^J^d*}AFI=FcmT3zQRdHu*IdL`QC zg-?{yRb%!Xk5^|}L?r+bN3OK@N$)w>Lfg9wGlF<-4clBi*F{hASjuIW**%XdDDdh^ z|0RQ0DBGt zP3g)szVD#>SEhB6t#koo`rQz|YnHQ++*FhYbZviQkaL(5ry?;z(#RjCW zcz878QmJP~Iprr=omV_bo;)?!B-aMVj7_2y8D7UxsH;EnrQlcB4@kx%x{7`gGrEqu z*oUs`ANb<91@(#vAsv>B!DTUW17a}bK*(v!nzY6J<3(&z=_oE#~Tv)zwh=08@xn> z=DSP0Qu4CBsHf-$sOqt0N{lL$Mg0id>M<1_@=%_h8#k(4w`Qkth;;UQtj1$rfcPOR z>YL$Rm>J3)`+i;l`hv2UQvr0z(dihNotjugP2dv!Zdrq?vlk^65jO|aJodqPF{3iMu&#}4R^_3 z`lkQ1P^Ns&q?k%_*<(nNLog*K+d_Cds7AKu%T^HSJ|5?&<%#wtE+D4%RC@o zG?}JfQjkdM9DR$~6$ajv4S^Y4UtkR38{W8<%lOv0^}l8OW@P=}v>G*D&PA?9a}e`~ z&Rs+(DS?UnCF6^Ia-So^jEhjrazmqP1or+ZB}%OsmkfIuA9wHahXyY ztjWxR^d`YqR!OrCcBam?%@)X(~_0xB+=x}|5XEZ@AosWlnb>dm-2Y#g@e6RqB58QJrdwUX<7!RTCc zDDy#$Rh81?O^uZ{+!M8+E5oIgMByo2lSOF_1NTixE3R|boF@&eX%>wDJ~Vk74xoI) zb#KFF&jDLO#{sVkIu2~NpyRW|FI04R(b}oR;?qUNJiF(+;UU6-c5v5T&ki(}czf_r zom+{w#RnSMZG5kDClRFopxhaN^hc%N!)hMcRRy2F+goq5;!g)93}vM)d}4`LJ95QW^Ew+E_3c2(7@(x<;7R`}p@r%i zycG6@g8t~5x@j^jio`5r!&aP-z7c{$95`Ayw6%^o+{XA3kyn3O`fdoxD={w-?TKeDz%}CuBw^?E^^4tsbLB zmE?j}#CdP!gIHmg100Djzd&UXiJRDyf`@r9fIy4R!9yBPJ>jO2Q2OlzKDkyC%{`sCd? zT1)igdHksdo9xM>qE5ei68~v|Pij@Gr2Pu^@;t1N&jn^G8hcp>x|v70u|LUKuTm}i za-0awo$%p9x|J@?PYTO{O51>U#Nmf*ACr<`rqmaFB%~sOFffW~7e& zD?xN0=3$$mHu;j7G)4)Kj!`cpL>f^qp7MJ)n^Ach~x{zMQ%?)5X5XkddSG7>@u9XFYgcG;<~_psb#a?2!q1{qH3E>F`R;VKY3OiGMY?sLgOQg|o1Y)cq?3+a?_zub3lMCd7Mo6kF)r_aao zh2(rU{fSV5fzn>-bCzDE|5x7)WD(l1`ZCrHx%H|kd3HUvXM?No1pbtp|@Q&=$01kzUINb zgJi>be4fZ}NC#@JSnVju1ts0@s~q$o>7K}022xmVEuO~?QDgbF`+*|M#xSikR`p)e^@0#r_7B|k2ysPQ2qz+DOZS9cpAR8HLi_=L z6XFj9k`VtPfyVD~zr8}y&AeDW+H%nkd7X=XXuG-S=u~wGspwwU&KGkD(HpFf1Z>^s zZflEItdCZ9iNGl!6Q!*~CgO@oc#8y9A_1cJ{b0y9uzJ5hbO5Z^^>!|sV`G~gwfA^v zPkdnv#mDQ=X04p~cwKG1xAAc~TI-E*v_XLsi;v6b=;mwr z8B6_^&-S{N`fag~jVj~$?xOhk?87@(r*CTka=CAKI{|W1FY?Icz|{*w;*_t9Zx1^R zsZaGLa5hypU<=mQ9QSMs)?+J`vjyuk7TvzXGUksWm! zVn6I)pq6IH88vMAY_6bceK+Vvf4ZSB3^#f{!TxLd1S!25-9=7M-QHwAZ0Q8s5HX^X zq@(!E+qid^Z==mSna-$%SSi zo4Ij@KqK`~YCReYkJp+lQfv1`eUY?YKy4L9rxwaxCx>cVT~9b1s*L1zKp|@zhf?Wj zhqu@EdAh?bAwJW2#FyRX%QXBpoY4MBolvb(pu;4c0Ita&+X2$U>5pY|=;*(!&q1qy z=oq`FKcQ@Nz!`SpxYNP?=%R!eTc>o)s~8(2tMj-~B&wBM#P*-m$s%ayzXEGx4c$nV zcTlLhUA~1#pZ9 zv<75sFi;r-VEG`tKIb>Jb&5)eQ<95nOcUV(LK1G>D&P*v}*;BW?TE8thT&QyrwieX47bbu$7 zY=-}2MO{oSrSM>Od}>BX0Sxpd%OTYuT0am2jfcp9JrCGTA{&sXJsV*ynm_B^@Mo9x zw8uVqz+7g#?a0@S`wU|IbYnga4f|2M+4OIii)f<44s86p*K~r03Hpq8k zgwE<89+q#c_hF}O84dN)IM4ND8TQdf`bW>nGwXenv(I8G=od1LmrnOF_VJ|t@e%pq zdLMsv3X9VyS_TV^BKv6zyJFi=$`DDiXiatV=Fo zV0xJ;x|q!r)RzTl+E`94{w3%F1drOqQO~hQd zFMZ^R8*LNB@C(O8cF~Y5Oa65p$!V1h(%W8WL|ep6@1HaZX@<*3Iy2;(%V$F6n7bUu z8yV+E1Iai)8c4=D;6JJ>PkR9W0X3%GYx8O%xA-(hdER!>r*2}^T^GISCgwCa7xjA} z#5~*R)>Ts(bN|*wirh{F|682%!_Epy)2bP|>VA&ME2-c-nPqE4M+r9Hu|P`@j)kcN z;dls25NazL!WGIE5uQfoYsE?FOP(BB+CDK{m@(a-o>PD#E zx&ehFUWY|&Mjd>3^WA!^n0e6}ye=JS*ly_v&i)3Jj<^o}^-6yuBCWJYO{gC6f01nU zBTZ%3kI;$Tg!&P$!xg1cX6rkK#0a|1G@*jT{kpwZE~HM1y@=#YXo^VAgszB$Un?`%J!44GE>f_k}VQzRygB z*P!rm@11P*8R8M)SqZs=tJg$P|XMG6^CkN&*~M2 zPBfNPuQ;Tf^0r=aI4JFWE|7Y~b3xWCp4(o%BH2hINdFFtjWpsy$>RA6qmc%cFwt>y z{#b9wj+^s+YUX&t6ZL0(4WxpgT(VO9PMVsgMiRJo}oNo&5PJ4cjLxvp)u~gwMM5HT~{mW z47$j^$0>8Q-l%$|f~y~Z(yQ$=(jR%q`SmJVi_n|mNfkX5lWJxWAY`ixtZvt+Nf@s< zV$6h$K60UrS1azj(6$)#Vj?mTHHvSEr{MC$u})n?sNMx4G7-CCOn?eV=+V{Jj7L;1 ziAUFPAJYYij6_N+x^|)~=(Hj>r)#lMeNHq>N;JB5VJ;+zMvQycEkZ&TEM@;(ukP`v zOl6}?oAt7Pq7u+)BiDO}(5Tf5-B1QidiDgi8dYSdX{w8+bNu@7#n7DN*DsB24|)K5 zYYKT_`re{T0tF(cS}uet5Xm;$&8Tsi(ax8f_3Z}fbT`0kZk|17JfaH(JsLGj@w6B3 z;0B@3nXV9&F?6T4HjZ#&jh^RnC~zo$r~$OkAi$y1PIeiP8fLbS)G!kkqz0NHkQ($E(i#G)Va5fhhH88UPz_Zas-bs; zV>QrIU^UpDvZC0Tz`z>7f_r8KY@b%ce$UGqb{Y~j>^j$J2jJ1HS+fc%xKf{$T0Kze zWHi}Q^0+W|6;@^WqeAAjO)f7iISO?4=2B?DLIB zpIN&FZcv>%br+nSyy<>-!F5){!UBzm@pK}OHgY_oe*f^Xpd*X-kDqX%eEI%`tNKo0 zVvn8h;Bb@vsF$wCKL_g{H1|t??uik$t;E^&(HtHOjOvqM^TIXbwZld;W74#Q=I|Q4 zabYPimd3=$>qqOii{|jUVys>t-C`*Y{xD!^#i91_c>N~vhl+~r?SKvsuidsSE5!BT z%%_Y;+QsmZ?L=Yf{Shz~bd66!O`r;ob`+?>n?(l{rv4_pCiYM z0<7@Z1Xj>@@LT&&SnXZ9vA$K`;?a$jolKj-V<`q!c1TnyxV!7|tAQ8n$Zt@>_k7`jorjfq+3ZRJJ z-t9TyMk#3_go^M1s$pF|aP({$wHv_)sZ1mYR{$dne1<-+@EQ8Oz-Jin5}#qvLwp8v z`Gz(G@-WtA*yVLG5JJwCi4gMGgt54{9*l){i8o6s%?1K-D4-Uw8*88B7yI;dZagIQ+Pd_p~Jt$AF_vw;V z*9&Phu1;8rKD9a;_VGpI<3sXm>wWx{H)MxFEVw9gt1-y%#)viM56^A*L+Rfltp6&c zmHq&cR{E`lLZ2Y5e1f#{6sTO=LiYItX~o_Xa084gs(=H$<0n1&)Z8aXD-8UFB;pgK z6+Lx;fEPYNT2V8Jl#c#l;9*#SUp_%vv9>qX3$kqxdlvW*NMqYLGdvq%uzkE7yk6JMVzn z8)ZrOr$dRf(&~Ty2G&YfP7G~hrRt7ypS{W=8X=TuBq?MtdwDWKvNGroZBCQN>A8F-W07xtA z*+}PHKw25KruB2AmC?{4t&El+tz0mb2UYX}rs;x*%Hu+r%Hx99%Hv{C%HvWX%HvXy z%Hz`ZmB-}}DUZu8D37Zq-Vs3x!LfZcD7>SqcDy5$wM{^?8L7~qjzFX)LZ{j$Ox329 zkY9tfr_)WPmju*wEu=tA*Ghnzu9W~a-LL>P(T#?Hnr?&usAKZW)TJt0X5wW3sBQ76R1gpWx55RCR4y!UF|IkQj>(UWG;0A7(%^O;z`oV@2pPBpBJ?1%AVQed14x%nu!gnv zz=9&A0SmouK@lR00b=>Oi6TV$fl!2A4<(AwLlZ>^1=$Qm=;8KJgdTu;+Mz210qs2AX+S%VEkHY(0r(bxcC04~ zA?>^sGNhgO_K|kt7Ni}zh7gX$y#Gi$wmb+Z{&{zhcIGdR>xk1T;`H5Qrp_pK^ z%uml4^k}z=1)IueHrj#(=7+Wv!Tc=jD43tcq7wvDUo>HU*f~Rjmh>Oy$0leKAi))w zpQHumN7ElFV1BIngKjr!_;7wy3(k+WL)5@kKNcFaoLdtq<`bYFUZ*GO;03%i z;Z<-WwklC8-bhkMu=xiK^mAID<+%-kh73HQkuvdsUN?YMdR&Goddv87uk0<h_ zej^Q8$F`VdZ~?@{$gaHyU25>91K}EWAAlo}E+g#S=S5dDQObysNM)U*x(+g)SxP-& zi04*jiBbXMHFZnRyc}-teDLq+$^ z@btq%gJdyMS=l0Gy5(!X4);VY!~vRz%@$u;Nfe$^>j1XAdyuK($?|IRq=9qUEcEf3b!2i= zMR)D-1&!LSlJ&YUrjVoi4tu7MS;0&6h`h;mJGw>(!)|AvJW+GJyTiNS(}@=89k*q} zp{u-|PjHaZB2`sH16U+m(Q4I6Me1{yKfnHT4o7uG~QO@SONl#Nx5g3j~PByuur?AOWFX_wO zZ)Z~(u49nlDFu~sECo_cCIwkdCT+W#tj5gH)vL*Bj>f`cII^8p(|yt0S?tO2iYony zmYR9|P_6!ivZkn$_wl+$B$GPq5#7zD4D~Gx4)lx+4fhT$4xQ^=I@de6xG+3Cw3J*J z8txx95l!dySGZ@)(oQIDU@+@|U`*r8@k@6+ zYWul+JXD*s@5AE+Zw~GwM)U zZLp9tb^NCOgaXkZ`GobPjY{7DQ%@XfM$alQM113$4ZCL%KFR7b#3NBiWwir<$V9!e zAs?LZ_8$ESO$FYC6MX}oos1_2N6I=GPmEsj@MMH(a^mt#0H%pwQAE4VZ+Ig%8%4Cf z?pGAiI;H{h5soOLowR?vQA9^R_#8!ara_M)j_YBd9{JpQ*!soF6b%LpFA+oNH)2V> z8^)51rWI~C6FH+#qJKj_xqM0g-GJP0PPXlNB9}@mq}6uCu!cqz-jBhsF4#Q(i6Dl- zB9mJkiRS@NopMI7!I(iu#w1gV1@^l>oiRh3{46nTayoCFyLX1)f_qM zjX5@oZ&%Awuft?YeQt16;Lf2joiXB=hm5#BHFx9w)gne5^N22Z+HxyAj5xMmQKLh%k5{qp$ls- zclMOE_Hyr_him^1u8zA7OHV!8|7`82@6XNLpR?}$6Gv;j;WO6%#IgFa*Z&`%>tF?V zz`G7fPdr-xdy_NMvr}`^_a4UYj@_BmRDZox?b-6z*PJMC`O{+LB?DhC- z)Aw%SG$byZ$7lzSY&Bq*$`mMI2u*d;Ll&MalZEo<_K2R}EaX~;7O^a4K>mCs&y`ut zF{h!jluE10QZ}a)o~jBGts* z5;;{_&8taeVa@s(rI1yy7-}xDSWsT13QyU4+10!P<2T=_B=X7&HJzsa$1N;hNMs7d zA1pl0Wmlg(&8`-#9|nDsPSlKwT?)4<-z2m0O){`Yl{ride^Z{RYsN&crwTV#7wB;e z?{Jg+Rqsr%sF|@T{T-{(_9jm5H<{|@qa_yd3dQA!0pJT8H4o1|5P)f>&(&O>GoNyZ zhyXePia&xmuVC8jJG4F-^@UPM>hVC2>$tb$rY)A&Ghkd6AUDvk&n>F4nFks7Ic^KVb$6GZ$a zN+qt61~>I)VQmFRhHYfrL?Wmz-P}!7dw&8RUrKnqh6wr$;)wU$^;+ZJ@5vTYAYuetK|m9->H!jyfVJ;ew$4N}~d5$5$FG{5sz zq+Q&}Ce<{t8LDlMa@H-?W{k9yQq#%&eD_Q)^&I)?V}$}s4;3YN8KRZ-9(Wn_jP*h` zo3@4@SaNg}UNiU4d;5@c7??N;AKE@2bFn{-;glh%;Et&1yMrenX(`d%nlHqksSAmP zcp)3lXA;j;u9Q*tuzydrzjY6S1ZBRzrf%!XJSx457)!-I_tTS^!JyTJjI+NObsA&W zC-2VDO&{4mM^Q1JbA74ESaBYE=HB$38GZ0-p9i0Pc<1W$ZJPOKkVI5daY%aMC@qiB&P%VSS)kLQfMn^;ygE;b#L%i$vQWE;{s z-Pe;A9u^ZkF?nt5{%yAXpm*Al(dc?vgjMep4?j0K%f|jZc3&qz7T@(!_KOD}yFWL5 zXKZdPerIfoZ9ts--FuFBaPnIg;P&l1X4_@9=ehx#R>qz~9$gQ#rTc|O>k!MGbEK!h zrhc#4WLYcPRJhgkOEp`))kP&(sr|x?jQAy*-W(?nlei8-Gi{u+%GP)Y(47+pbJBuRvDM&L7?eu>7LFn z%TY4=2M<^KbjOI2F*Agc3Qvt0E00j3rW-blRk)lFL1UCx zLoTqZbW~asBcrg{R(!HsS`f2Z$mW^K2jQa!j+9F{-FMETP|wr*j+NsGjK!%YokiUA zEqcEC_*Ml*3oB!bUhs2^7S!bxB7PMv6-doR41eU6gXB-rB8Jx#PDpG9n4r z@Jh51CCq;9R&DG=ZXtzOL2fM$FR+@YVzTTDl`RF;gO5cIyI&8!&aJCOBMBJ>&r?Y? zN8$i`ehdl3-URxzi?Z$7!-Qb0@wB%>U>#DwyhJI^GhTUgTX7zy^(UeS{L}h*wXnKE z-b_LI5WQIrO44(`L|7lXEw84R+CcyqczxRpgc7(B-S6%CTa^H%MsWT?*l!G6_Ey-f zBSYiisJe0Buy41O7HzU^i|ITq7((Zf8`4SXeZNG;7~j025*@gr-e`>Zepdu??(NDW z(s_s3mj-r?lNwo2hSAR=J!`FB5PV z)Aq&|xZBX~?G~^qU(UXJm4`Q}b&W+>OegYra}B-*_RU6{A<%yDFHWKy*Ow+vVO9fkD}_3kX52YW(OyHS0bq9o{QG# zwc7;m@&=xG*hq1%%tnfHN~?zn_%!LZ4sX(-;o_Y;+r3E_uN}%|u4mZ8Nvk02+!g6f zFZTmfBt+~1&IS!IfPiygH#|7e>w(>XE9@)d=23|>!Gpew;nW0C=?bX3G%gK0EKBLR z&T_3-w$$@PdX*&xFpj?#J+5<{P+uV5ugUeE$@go394ZH@=rtrrJ#d((elTs`W>|56 zDuUp>zQ0aq1GS_=#>B(@vcDM* z13!r%g{H(v99>whIOvB`J!qKL*HCVP(t~T+)l70Sm&-EO9C#cD?ve$s2%f?Oe9W6m zEHyr!MTG_#$V|m1q$cYZF-8K%yf%i0S+#ihg#KgzY8bhZiw(`*miwBHZJ|tTSej-LzcA@v4!`|PzZD56VvxE^?eh$JND+qIKDaqT& zl#WW%cpcG_YYudl>L@K!T7O*!P{Q77TOf7Sj+KJ{Fu$kPH~-;PfS|%zPC*24B42j8 zdsM=T<(ry4U$H35XDndJ{EF}CEYkcVDQt`{HGQ^`m?-L`> z5w!6uTg~8YJe5fm;&JYLqF$HJQ7`ftzdSV#WEfEaf|+~{%f|yyBa1GwIM$trS!BK< z@-@S5dEVH%NxMZ;IA&!C+onLg@j-NH5nmt@5`snKI^)HG>fm$+hbw&%7CGYmWM4F$ z4#)C*k!0mezx1KQG3wfJ@36%dkt$PAEsk$4DQk#;`hB`A&_T@AA5NFGtN&iGdIEV@@72fwMBt-rTmU^KZ#RT#aXNkG|tXv~H+RyucUuKBs7#q$n-){ysCK!h(nxliBx&|*G z*f+kZ*y&-bL;LLl(WA7KnN3L|_JzPij1?vrBK8HL=W0+Q_J!a?OlN{k#J&)mh#B;- zKahx>CmB&rZ7okluN%qG%ct9YD;ze^jCc|B6uWV{+CcG|{uKeJF56h} zuZC&CQL0k$)qoE|Tx7l~0P)k)s&|VEw1w|vUBbR9G@J^JO5um|@6lNp7M%b`PQ}-S zXtn#@A=fEqvTZ`GHqtl^zb?eC_$DbjCD294QwJ9S{_|UbsA`i9#&L)aS)k}dvwx*; zIy>0mVWCL-qjn&EeH;3bxcm|6$B=NDpNJm`VL1_L%|8`eTKE|X=RiL~b5 z2-TX?q4>EPknNUd?iOKKNxfmMNK<4Q;h3JWZj0bz| zy>UQ(Qy97t!~u!e2e?tM;11#7t@kpN&3&*oBm!{5I48f&2x~rz>qIyR(-)2va>7&m zO`)r2tDa&FFoBr5r|T-;A5e+V;dsyhhY=}Iz|65 z;8T>-00?Nma#~vS&8;J%L?sfwKNQY%hg0}SgZvR4t6|e16f*dhfa1A;e8MI)jB&Jn zOBkLC;%NPS#)`U=9z$_jTqL%eo&_bxdaizpQPtRit8ozLY7teIztTPQ5(!Ud?$F?N^-wB-n(0TTq zfX~zqh=dx&gA!)vRErkN)~4GjiQRXEmRKmoj`YTN={OCQ-asOM#rFi1MSnIBRc!*5 z8As{&gp1Qb9Hr#i_?}Q(ACPOq#tGww`bUhYhBoP|!7mSp(oyB;9KB5J>gX#!a}bxC z?+N`wTfN*ML_-KY#F;-4s%k>V8SW(ez5tL(-;n2QMwz)xrcK5TgzpPS8p9F4rPces zpmcY^fgxku61i6D<`?0)Tr#NZV)-h6TARekcI>)^~S>oeMhT7X>GN zDAYCjADk$r$Ee?YN)-80Cryj-7s4Sa9E-sdnf^jJS{Itdpdz1&A8&u_1BSBVCqndy zZ%{P44a9_u`Xm@Pik}FRuLZI3DP`^_0#NCFulBX_K;QOs|NMz?yxITzr=1!*z#puw zp9rVgH)(BYrQ2FpJr*DNiO|ut$+rz(o_2+JPGfgp^1XKHh*#9I=`ndq8pHR&Si~e%~kV@Wk{w)P%<$a>~3jbV)jf9IE z<6^}xgrg_7hpYp6{so=hnmiA~Ie_o}m9Sl`AQGUz62|X_i)EPYUkR_hZqAn9t$#^I zMF=c?aTMzF9jezg-Rn$iWPq?Y`?0Stc_m@(Eye`UXq|M zutc$63C9EQrj}6C#xOw1Wl8aYUkMFo{f`fn5~aReQ5R8z%!(R_xIbjXbq)JpB3??| zN+Oq7HcG@{qy0)4xlpDV0Dbvu;gA71dQQtC{Iwwa*qTGX9F$H~6Am6c`nAv$K=7!P zs3PGYJo<{?2-`)#BMJKrIbD4RAt;@pRl+#$e0rKU_mK7Rh49FX-Un|-xg8A^(321sd**4q;M9j^8QdtmNi4mi{sfG z-d)LNl6hq*OCWrCC6zJQ(aqn=cfZ-uJS$GS!VD8Dx>k^XD2SdmM749Ug*RfBdrd|= zEqu)W7GwC21TlcF%{zcnt;KUWl>Sr@JxvC*FJp_f9dtS5{(rkgPunf7+kaW^H|3S@ z`t^QlRT1y5_oGpT6bb1BOH)S$MF-TvEFZJ$1mGAuYXr-?Z)%=@QWG)4xAjI>{EZ-b zdyiO;VO(w48(_=l%{6hWF$g6j#r7kz5n?EJqamA`lEG%|o06wAgYYm6`80NXH=Zf9jvQv-LukubC`{qbHY2EYSUl-xHVzV^q1#`p~8y zS(b+Oc1%;5kC|Km4BltB9qS=zA)P_rj4J6=zVK)cZHGB|KM}k&_AI<mZ%r}i&>lm=@vZL1k=A=dJfQd+<3d`pSS;{HreacEQuyyg1%F5{iS0_)B_@|#4ql1@ zHFuW(FCVvr)+AVtZ_Fw7GcXFhj63Q7%w(Za#j?Z5eB*qyJml&z^FAO_lzS^mETF~~;5@;%GSTiY#*PCMp_T8P^_8Ple*+~xRU zw_I0wlmY*u=sKf#!T*CG`UVTwvSABh`I&_W>_o6Ai4ES|%7&OoEfzR)km?$yX2bF~ z1u=|WhUL?umbla-%jWtR#~`#hI|YrO^=|HGeH;F)MIUrPt~Cec`Hiu$%o-aKR}+tW zeOcYc=(VLTr7~(#xu|H}xZ0ZMnmZNNhU;RpMb$R9Gx|QW+c%p^58#)^9xP;OKWe+K zX4G72@zLC4&8zadIOmE1qvfA!-zUGvU-@^V&{?4OV~~eT!LeAs+CPsfb5}}P!rg^6lHGkT z?yyq9EuD7x@BNp?1+7Jo+-hG|{#;vAZmZ4lbLlD*3MG+AB2}QUnnQR$!;L!@08C^S zRfT|?xDB_8ga9MRqooVPGOpaf%SyZ&G?0r9qZE0g; zSyTiW)%Ij=fxBaf`L)KY4(IDcc|ZDg~>WI(a`o?K*~DfXo0*3d5hPl9iD zHf&ryv zjG{Vc_J?-)Uj?+>I&!`BnnT-=F^m7BWqCCpKlNPDeEi{DWqnqf(hF>r4LaB#+U5UN z@Lm72h2$P^+SPZ>U2QD0_OF(8=1)dpLBo}{;SvYNT4PGu8UxeWx7)H!VOj{`Ao{eI zKXAotU#Hb^sZ!;tTZWR7NjS-yG1kmDU*ut*!mB zUH;#K5<7bUhSvObhcz$ym1XJmf60%+dM#|c$q|DH6_%ci3ajuzpUVFxfZG&5r)|i7 z@0)|D7O)0F%lZurLpL z0|?0~1J+QnM;e~hzmmv&Z~&XCo7D)WThzO@iXa-G|E5Vt`q1E5gAfOa_u z8?u-V#>#g2Z+80@_0nw|Mo9+F6q237t7M1$uvl`m#5IO<@CYiTvpD$q3Y{|Rs$j9y z>X;matJTU&E?YsIoOUYAm^9oCy901P7nj>^>U1dd$ygv4lOitB)r9D755zVqB}V5EuNDr(&00#7DJ|{NkD+Lf@guW4 zyP{?isd$3rTdb@}&&9~DUAv@ZZ|?He(dN7LsK_WPs^7%8d#j{bSH@jkO(iW~7Xc$2 z5h|;;27hT%CrYDuAAOR09jGg9V66onDYzf2miu1|hI}bT_EsG89|TL3&>ucpanxtH9Z~u~jO?qZmx3vfY;j(SPErg;W|_$*Rxb*o^E)M{xIDw(F0dRB_ZK)y(2r zd7AFM6^-*Za7F> zFF_rY0x~+%fRp6+0;V*-mWLBHPL9+x%m`xQc~DkUTP8jZ>U$!M6(=!2S1hWMSl4ES zq-b6+_jxg0o@NMRwXw0K9D_4T+-W@3x()6qA>GpiHFcPTXUx zy7gcooG>PU+=Y&1k!D;ZJ_=Z7G-YKG9TFK_$(w7Ha<8^*FE%%wDswvlTrP4-JmFa{ zx6SJDIqhJ&rfVp&L?*<@>3ucQd54`|>TFohdtOx3+9i{~lzMV#}Mwb;e}Y~MP3xYl9!uo&syZ=iVha6Qv~{6yJ$rn|neOjUt- zbeDZ_k)G)}RI@|%OqBdyJwQ(P3vI~;KY~LM4$hv_13o)AqY|RAk)FY;Qh;bkm^}7C zFA(0f0=i!80n)X-4edKw*K$`E-kX_OB6qztw|MreP_y?tbnfUY_ zHlTrfFwd)Eq;KTnR`KW&t8RHao62xrK`8r=pVWo2kBjL*ZG-tlkgkZ4fzxND;Vl}( z*&HC7jZp?VhxKpvVw6dI6EMja%KT>AGj**UpE-)pOiW5*I=h%iEB$RR>GY?E*KgP! zMx`k{yfY_VDR;n}O80G*2Bkw_=*aP%dy~H|x)489DTy0e&FU za$gGLE}#g{rRuKGMR*J^nZ8*rhjFtI_bwml2sii0*LCG^dkB187dbQ48iT~N~11HXiWL8#}%Z9Xy38pd9qlnEpM z=NeD{X~E^$JPjtocp6X$ZKC>2C_`vm(kH`s3=rEUkFNF zmvVhuZYd?q2+1XZ1O#`@>S6(Le!f-5#mMz-x0(j>NaP0ku6tFyzS$MffDUmhBi(#s z;Eo5nc}twfMd%NRk^_e&ui)Ue$Q!*QEhV7bkWL1kfTAs#4L1hs2gm-6#+dIu9pcK( zs$=2g3JZ7Kl-qsh3W7X0J9>Td?=er8-ckcQi1zZWqh8oqTiwg>l--FQ)jeeckW<>- zcaGJCYj^V)${l&YGljf>&Ixv8=nW7wSqz1C)}6sCVcl6IV|Nd=h2Xq^jNLsuWXc%z zgpbT@zeOq8aGydxbkNyjrRcJhC4`jqPa$yWX<3e~WFtyL&K{C|9TJs5vnQIotpu{p zQtQ(K9ZII?{b)moO;MJ~eZTE&nZD5<(FBnP9CR-Iy0*3vFu(?X1D%4ku>Bx}A5P&n z>gu;VakW6v8=CkVC!0b)@u)=3#5bDHhufKm`_LN~u1KQ}H?|FuHIt|fZ9xb*Z-l2G zMUCvFA-=?qYENuqi67M~J7kF;HI0UDi7oXMEZ+H6m67-`h&_ZY`PRt}eM=7E2~r{A z+im%aug(um=wH>wnP2&|{)EQCZ<0|XU1AuLLi;(XoZ114O+`UTWM74@D2TCD-CwOU z`W)B_Mytn+WT_F2(drI3F}UJXPhAY%uCm3jV5O>;#BJ&o!)PDAF{6K&TBAcomR^6XKN;aqo*p`-KOu6+ z)%9%88P9H3n{?;scsGz^7?sajN4zyEEqN%$$Wa)RV&t8QDuf>#PRs3u9ky~a*D2Dm z*})UK&b@QsObD)Xz&CiOeZVbzgID1xu*+h8`BqM8e4bmTnr2xn|zmu4{$_^}RD^LoTSK*4{^2MTpfJzXZO2 zpgMGyz^L>B+^dl#-#Ux4E-2(#AnAJlWb+P?u1_OLFVxcY3$XIT=o#sUAv!dR!Fmig z82Ob1DxRtMtRQv-t<`mF1OoX_LDFXgXp*1q5H=b{(|^qKEwcSZ|rO8GE~bsLZ!Xg1)!|B`6B@MwEy0fWkQe(ty$tunKNjSEJEs zMqBWULhsFg5L*zpXR+c-!u~^2l$ZGS5_SZ8cI24xjB4p=+Fugn{(m6To}}3fjBGbP zLwewM1>~sju#+Sz0lOZQA8C~QZ&?a7^HdUWg$zKP2cIBuzboLLZAxKOf`|Cf@l9d-**4?{_*g(~ zM!p=zzAA&?05AX>z9mEt z8f@s-*zhd@Fl`~Z3~jWKj1AusP;szbHhf1obkbl0!TEtT-x1Dq8qfOi3_Sm?u-%v} zKKwladHJU3vBAD4G@LS?X@mWV8-xA8VX!|H_8&C{qxwz?=KQH}Y$!y*95fmQNyAs9 z_Z%eLg{<3>+D`pguy$g^qN9Ix#h(cPAoabOvXu~fdSev*?m$%iS>N*$A-#VlbdDOr zqivNR*#(M0>s9iQ~ogxjtbdZK$7E1$Ny?-e*ba-|3Uf1Mf(g2+5 zg=}7{nj;4PQaIbYGZ;+N{7CV;i^oek&3uN=hTSHR~;~*BlDHaQ|DSs1~O-Ze3EyD1d9b;2s*Zni$ zkm>Rw^Bnn`czC>Cdf~HqzJT^$yvKnINM(P!w#%of3}iK}wkx_DLGPn&txA^v-EPtS zKEqon_-&ET&(F_uXP&s2PUQ2-*n0hN+bpHa?V}>zldp^^{G~!xd74cpmBLe1;n&br zuGAEy^s=Y=XO(HzXIEh#i#4Z3Pl1XoB%^BG5O+VCS^A79aTug9^p2{C-=XEZ*oTMLQKB8 zsmU2Hj4FiPL6hrLj2Zqvf*8h*w(^4G+#I6$rbJGeNV$A-KG53Zj$NO;I~Sk2J9lq- z;{N#D)bw4xy8o3R292%f(3w^4b)0(XFGrQT*^J6I;Xf0^uLm1gZ7JX9n{S} z+4McMwWNRAs72$bf>w*lMWwf=M{HNRE-BQM)!go!*YDvY=KtoVC#FYjPw3yelzVDd zO7A-avnrKWmes=3Y*I-q;Tp*dt&I8t<3W#bY-(+0c_ookm8Db$3DobZ$(ZfiGVF~V z*`8I#{`z(3_Sd>{)*frKh)}zX!iaxBjY#D)qTWE!(a184#BTj}eex-DzuIgY+FGM@ z7&0yTligxi`e(@9w2HoOtE<8b}H*UQUs5W0| z{Z7lTw3eT6mEL$en@Hv@cVgo*oS?78WHcKI6PCUF&ERcLClGs6u?#pW7P6k1p7?)v z2W~eyU@}{;1Eoeu=?i2bSfGbBS-P$km?W*_vd>dVob|e6h09X&hoWCeEYzGPo=z{v zbyB$6`PaL}(01pLN6l?dTH7ckwzu)Hsc{@W#g^H%Y;HMG;5(X|{R;3F0fbmk6^ie$ z1uFgr!_36j`TyW71M8Bji>mbni_K&N+^ESqdLd_y>y z*yc2THnh2)4Lko#GYP(35%iIAmHf+Uu0@_QC;bW!s`iT2k*Yn?{HcE{%)x=GA1jsv zMf;iNZH3vNP!{<3Ob_6w(hUC06K4D;GK*?n$u8Nym5+&21w38C{Tp9cN~uApQ~FB} zH|-|GEh+Pwt=Ux5D-`xjq#s!Xos6r;o3gIp%ijqIhVtL-4%(5YZwy<)ntaP#I64w7 z|EL{<%&n14s@g@2c`hs~rG1s(bUq`9!KU8{GP-gE?C*Buvvx=Va4^JZb@Crnh+!%g z(tN7Aab;K_IhdOAS1e9GLvq)D!y?V={%EwwCHD#iWEFk+e-I4AZdS9=b-L;JguzIj zIsAzkd$zOPII7tRtYaG}sU;;FeokhSSDKl6{|SvQyKOX^2d;gV2r|l3nM`{ROO!w;?AnHm;Xya{1?GG z1Z`SiU5SGr!xxx`q{MY;F{Qj+{?=|WB2cD^i#_gbogiP=i|rA zdbtO-9fz8=FexjCDY4aMm!n?`;tnnTm;YvWSPoQ&Tt8VgWp7=((=5A$1a?qi9@#V< z9lS{I6-u68{wKzfzgxgnCy}w=rMNH9)ZjFhUGrkR)n)kk5bgfHAcnoZQby@)NK}r) za<^%9m2!({6t&66O%cGcrXskdCfRk#{89hT>G+<4!NN6fZ&)1>^&RD70OXEl% z?-pzM-KLvefxF}A3Y#j#H?b;x zUvC#1HO9aYSzal0C$o!jIK8!0SK`lyoIlUK;SV1+W*^qZFKHeG>^&sC<_ZA?^=08j zF0o=+5mEXrKyL2db-=6g!gc02F+Coie0}WB%$5F*uJ1YtSULys)77~$)VDA=&@(bL+&i>5bgp;lT<_rG!tn6W zQgUHvxPN%4e`KLg?dcy@=Ji+f6JQ;NXl-@lwB3-$GM(EzJO&Z%4BKkK{6OR3|Zo8= zoSn5C1PP+7xx-5V8lxdlO1KRP`hbAuo-7Bn+j$-T?+aJ%`g{fyZ}+H#t@N?*C?3dG ziUM_zP=kq`0-_d&kp`X0%tHeaLs zQuKHX`IytmnNy{2{FxvgU=v?0q|$ks^)jDz(t}yY*dVsKOK*~&wMv?GWw^KV*^IG- zqqU+G7bC*ngVF<6zMjrLd4g0o+W>FCx4Czp^eI;c$mVU|MhDqQW!2U?$Qs5HCO?Ar zj~%6g(0y?+_+ z$A+b$txS1tZADE|(G`6FZ5bmYmo|w;UEn;spFyG;y?g;LUzw2lw=()-BF~)MB01tK zU5hv@X4Bam1lA@{Z;6pTdk;wW9q7~Dnw$58a;O5^_pz7vy0(|s63c1Z*Vn{|SaD2p zzi1|>>WT@;tZ_cCcw!|Lf2OWc{DHSQ7mv4i01NbrvD@gh%^{%#eo3psU}i*_W&H{ z-b7sIyQgO+?~YBy$7ZJDwcP?+0*RUbL(g((!3hVbp`TB*xn>z0}_Fr&EZIZF0lb)Djp{kM|Mr(V*R zyWh^HGCVR(lWuD9ZqldP%A0h1uZNRPV$yx1(j$k}*t#8IRiviKLc+k>nyLeyv9{)* zR2FM%(Er?>`-GD`VO!PIHk;cjDy@o<+6u`7oMn^QhJLUshg!gz_c^R_>5eN_4p=(b z!=;nUTsqm)rGp}uYuo)-<7LS`F8J;H4s7y*Z=Ad2v@i_Pj;QFF)zndS zs4T0g<8ZZyR?`bH(ou8T_XCh=sgCx6z_b)g!s-~g8jzyl^PijvVE$ZJuxn^1wu=re zglj0&S69`s07-%uGzJ^Oorp$}7nI#-W3^2#?Irg0d}2wBYsf16VjpWhV{()&a`%DS z06B_FQP2KHog`|NMNjNRj^jz|S!vWk?U&wHQrYe~n!k!ylZU2ksSN&hA3@}_2N`&?Ug;ca!X5PzD@K5NI9 z=*;ZBd?&~=Gb*i!k%2u&q$dv3amzlv0Vs>Knxj|`a3CmHG$5TQJ6Oc-UBeZkr^k+! zWQHFSr+5Tx)8YMx%Czs^6(i?ho4(@{qm3$Ojqr128>Y|2$VkOL$$hYH)2OzxJFPxf z(;CquRR_1qZNQ|EpA=E6(Te?^My;$w(=~uF$%t;4lA{NYZPJv~Vwq+zmFcU|RMf*< z@K9##q$gAP1Td)LfTGG1%oOa@Cr>aP+BwL!xPd&A&1G8{H)R5IC%p_0%@pES?k7N+ zhlzbE#yO}HKZPst7Ku+X%OxtkCq`~US-GE!xE}FVjRn5ngvKh9beJwT%hp-+@}@0l zO<8K$In2PkiAG<(8JN`DK63MHce$K`Q{z@e)KlxyE};}6rj3Q8`<5vAbaXQd>8{6l zJq(kQt9F}z8VfX2xv$&>f;7&E2eztAHTwuI!Wme?TTjl@>i=NDyASDUZhuFPwL$yF z*;%f+X{Wbt%WG#zT#QWD)Vt)yphLl)n8}LHr%yI*vgAqsz|`Gq(=qlRoDiSKaW~y^ zR(jXN({6n>lOeAqd`))^Zp(b?;ln?6-ztC zZQ5Urj#6}x!qM_RLIzuMwD76`=4g4pwWG}WLv-Hn>@M@=5Abr|1!>h`>$v5mDdJr! zv$9%XYp)r3?_U}#lXwX42hl2Bc!#hEBnuxLY7ABuq7u0JVN?o=t9<;L#^A<>LjF)` z-Ks*Sn@dgwp#7rOqZsS^VONj2zT8guaOhgl>q~@PziB1xL$TsBLRC$0EC+zX=Y20^x*3&pjKodu@En0eKpp;e;1`TFpD>y5zUzNfogf zG&F5v2EQ#-?f0P5>?UUrm9B{uzbzc7-tNAWp+&uns~9zea=mleC@+_izqZ?h4n`(3 z9gDH#`zEX-!8<$r2q2!;s;N=*l+}>rp}-!a(;Dl)#}H+WW=!$~(3yGbj%lp}?aY*d znk&UX?o>0+Q@L!0FgsbZ1M*8N_Cg#P@Eq=U?0p4C>?LCI|0;OUQo$s_NENq~lE_{5 zHF5Y2b*=gTxqI{QxUTC?P!9`PdIClAaRKoFf)6Nw07#&)kpKab5J z0eB$FEL1_Ykc2GDv1MCcWO=tN+wtxsb{sF+m+p9a(w^9puWe^CGo5ifabka+#7=)n zJLyjMH_7zO@7(*gs(Jtm%dL0O`a`xJs_LD4?z!il^>@I1j+*-5d3#z7dMOOdJE18N z6nrGSY5M;o7Rsi0gB( z$YVl($xQGp98+79f>%^fVrm@~Zfccz5*+6>9m4lYxhtzc6nxFf@p@ zMoOhK1Zsi?c1moWC)TInYw}M)xinKvRWq9qmRA;vAs)%)JmrJ`=I5d7BAWyjvtG*H ztt^G3{xG{suL;I$~GN^{uMrK3$=fE2pI& zbq@`zMlw9LC+*XABfT}R=;#O=T})G4(#r-shqRf&?TJV|#tT^?cf-moHb1F8x+$8? ziu*(zVrb&eN5tw)4->*xk=6>cEBRmD*_9alQT{qCz0KW4&$J;P2f#QAmpp*Wh%AWl z@{N~>=wV;d*dN)TT!!Ecz;ux)0A8}3dMdAx<7JvvZ^d|KJnznS{%D0z8{H|b(c4{) z@gr&fspvd*tb86F3yhAXnHGB*e_pIq+3OEmss#x99wWxHclO_D7P)tP{QDKPj8##k ziTv+~HI6Rw4C*Mad-4uMAULt| z7O_VV_UG|>K9`&&$FPGhf*EK`y#Rttq*Bh~W!Nsx(p%kg?2%FH&#vzKeMOa_{z@P8 zC3mHItzm=et{8WJO$6$kYenXB*SXW61Wx)=?0#aHSu0OoOWsVTZYMhp>;F8>sQ#7+ zCd}NrjU})hv59-YrOP@9Yr{D*6*-#5pwtF17t0%7H?wP!nO;} z-_zXtYrKl#-05V-{z1zNv@~Nxf1>~lQ&;eO77O3YS!{>?yc%G#z2w=>!0!_oJIGIw z>CfZ~jQ6h;CSVmEQ78FWI6jVq#Z9ttW1B@Iod8+;IrbBVd1nbBFLRDUXYiUb_?i_h zX#z+V4Eihe48>sR<7b~xj=u}4Pv55xauIhrn% zCz#gmQXrJ&YohcpqA#nrH^m|L$5&Z_aGE>Up}kU}?q{Ho#dC{9qC@&jEfSUKD16n5 znGQa&=$nJ;9uGqR$(BkJRwjBVXo`~%Z-Koz!d~UY7E^#gUU|>9S}h|&I`UpRf{{$w zOR+l>hzX3-lBpqL1aC+G=?R~=uTsl1erMKXSs1JIe%rPKVltt{3z*8LmS_dc(V!I| z`Ms^~@LH2_1wX@T@N2g17gK{@yo#%4CYQ*1ccG@%*w8LOjI{EJ(RnuAE8$&$wsA2! zP(Cpli)CXp?ajM_11QYg$U#85u(EMmy_l4Au?$VeGB~2SOg_wT?{=Nl%zMP zl>=o_sg`R$jhKX2j0QHSQZZu@9m>13H~CzS8?M&NI|@Y$7{7XT@+u7`nz($PdU)Or zQci|;X>Tk)DR%h?hk$wy5wd$9x+wysgb!K=V-Vb}JXw24dnsUgvXH&#&3M)-vOL+; zvd+S$(`x0Z&<^dG4|`WJ$S~I1WH_Ez@O8{IJioTD6K;lU(|LD1gb_>l$-0A*?086{ zQ+Wzq6@j115EH&rU4s${Ur5JHi!%Bzdh-e;WghjW|9XWQgmZQmpl zX+EW{-<(u*6wnB1XZCE(^=`(Jd}l}>@a0?HhuZW0%Sjd8op~9!ZwP#GCM9n~n$M_f z>?6s0GgSk8u0p^R7lc%c`Q-K5^d4U>c|KAkT&GJAuK5_|c2MjHV^QXEvnE1ID6@dC zxKU~PTGvEA@qKxh))+*<5Su+;uz45us+R~P8cRdGK^RnCpBZ-j#C99N)Gwn zZSVksWo0^m`QE7B=PO!yA1Y$nxz(7)`C&N1g)&>lra8+CCTY8cu>|RjO4)B#hzWBR zpT#2Y*E`qUqwWhow+6-)3R!A)HkZyAb2*CM8(FyDxC_i#Ou@mtkPXV(zp4-ud-rFY z$K%%feT9wK=6xS;mIx{(&%3@5Icu`HcYxcWT%M597=EcbuglNp0jBSsjf{DF1mE9d zXctO~;8^9+(~n;nkB(j#AAOkOh57%5X+mgNzo)r%9S!Sj`rAFgVO>X?HJgA|f!W5J zQwYAaJQqW;`E1?{u?39l142U7hga(e(AuwvEXLx=>)jL-yM$IH;EMqiRIRM4uG7rT zd6P|C1bO@U_>BlPOF7(l^gG{(>}0h?G|-6Q}uk-gTQ z#YXSVU+#Mm)T{28(B8KBVO*a#+YM>FH_*d|vzUqmFNin+T!wAc2gTsv(023iLOvIu zv$nPNiP2f!cd`|e;YHe#77Lvds@%1SI){Pj-h1z1F>B%a*Y;U6`Aj7A<9j0`V$hF^ z-fW4G)#1n(OALKCh^X1tq`i6b<=Kf$dF~${D%|Z=G{{v=bGMkiSVgWv8uW8b@346N z9MWC|!}kG4XH`-p27ry(zwRk080}tJ3uy9p1TWn;Z^zO%Y^dYfnqBKL4H*JY z?Yg-EbGCMW-8#(KkVcHGQ+LV0NN#vhsl}H-lpZ>yeLDEvwTOzPXX4p3+B~BaD#%1* ziA3tQIY)9#3HJt|0EzShOT5|AIW{DRovnuUqw7q#lgem-97}L>@C7-w4WA;)v_|d2 z!OMk38EuSRBxF@OG#KG^G9IWtEtqj@p(E1BQSt&>cK1r-1%$NE5=DJywU2K87OclF znZ<0AtQjQ`lPIZSKIR0BY^~94M)q3QU~By$>13K;(5=Q%87RxM(=5um`(>akPY>`* ztM%Bh440OD`!m$ccGM|318fvFcBXw-I7r7Uq>;{SZ|RX%XNEL@7gVf%V~O~4rs@=r7-no1wIujXq&Y37!*-R>iPAi) z3Xf_l`kyMQ1ZJ=IBG%8j;^*m`_k4ul9jJUP@gx(zQ73*KvEl%{E&30nSeiEo;4K#L zEY0%~cWG^Hd=>vnQRVUZ^={w2;WmM{d7ZkUS^xJhNkKjrk+5FxlF#)F{{!#a{+|?8 ze*fFM1RGd8;y^Kcu1aWb*4E>Qx36*~g!y$`*jY{JDY;^MA%! ziIsI7WY9q!pO2#`*ZT`b3Ri%23mA+q&bKYRM_es7`E9smn9i_T^4YDDwwm@Ca1O7x zRGr_rN@c*AVduYzE~jvK*qESeZP}_q$*&P(_mZbb%=wAtJ7P);SH4m#D@maOaS3!j zCx?eR$S9LE#-UHzU^6}Xn5#Yt^S3FOGO>7+ZFj^raI8b(CRv$E9JPP2S3lwYV7rT6 z!-bRJehEPjFgETFP?nbc$V2vz^yv?}KjNXP*b|8OoLTl;t@dyAuU12&edu>9^NKAT zqnsM2#TQ#Ruk$AR6b*A{?%967u(>lTh3yrLyf1AgUu-77JYfJ|-nFO10o(NDk+Y+e zJ;d-^WnZ|&;kWd?*bFphY&N@SW*1Uyyn;&OA}cmhhXR283JlL(SLFw|R#DejBG;@M zmUHoB4D&fz$w`ILvbGoV5sG}#ha+nnuQO#nn?uDVON5uZ%mZ_2s+u-!E{#V4c+zFu z${9uA@CM*^Nxp)r@^}fcg6fX5+UA2QuO*mD901b8w(7>RB0Z=yqi{PWqXp7afHk8l zI#jiC|F@<$U=P5B$Sc_grjpm+GF{sn~g%r(Uv5CYYiUb!CzoIS^ukpi< z)J_a<6Vh8*_}+^bFO4F$cFD|SVC53WUx6~;RTahz7!jN7_kISplwrUxb}!Twt8a-2 zBG820IA=m|mVD@OP-uA1ADJ#tv3si9#O;V<1xL8YkuML#fW5#g5XOMw*PpXMH%Cz+ zKzl&d0sE>9LDd1Y3B@#U$A+YH)Hx_#xp*6B+K;Q}c~Nq@8cCi5Ll_RVkWV442&=Nj zb8u*rs6z4p6o(Kj^wkKlrG_5@MH>wCvHz%hMB=uZ>49jZaODoFBL9Kil@#uPY?N*VG>D zn#La+AH6m`F?l(92GaQhT>6Thsskxbg7Kv@!F(v~DT z_MO4emPnS50&OWkS@sa*6eeQKMdi`jFsf;N)S(@OG6wo)jvwn88W`*ym>oFLJAb10 z`0UK!;K2Oc%)ns(;6VS-OrP1)KWG#{ny!^k?cP+7Rh4+OwY|inW~b4*5kVz1ODfMf zdZb6T@*D*wH3;i_IPlCge~+TS4C0p*()k#F-p2!2I&G-&S(Zu1;WETHrQ z*MfGDZnkdum__BI-8=z1Gc$Xct;AJnpV8|xelx4lp6cLnVEy;MBMY=U= z+rcDUUniQnFKWLi#LZkSqqjolmqwwndnT62U>+#Iqu^B8g%o_lX?rJvw#|$0LfYPm z9lBK8OOEkG{b50l@jA9QHa8bVKNnS_IHz}_?Sy-J`L*;=(8hA{_R_WV&|Y1RYv~SX zsc+I!n;zI(;Z{PF-Ha`g!a%0@;To;Xnc@(Qi+Xs^ffC0>*_Q;*;)e6@iiaDzywZm2 z?V{-G?cxTnx67fuHp#u#^>(?oUbgEEaH5r$8~U{m3b{&3y56GB?UBnMD1dI%rBpKG zYMRT(#%)GYqcmiB5{=S{O+Q6`nSByUs(N6uJh^l4X2|kn?`eBIgdaf{;}tnC#w!wD zj8|m87_YSTd$$*=>JibZ>XD78Dw4k``Q(qh?vz|0I+fM*|LQ)@Xi3BJ0D4@K)-zc$w z($PS#izRaQXvmOu3coRUQtMxv79$8d(qQ1y^;2iOJi(J#K41*IgP2yTci>Q&Kztz_ zTS5~s>%C;JieY4$b9mU38SepO#@o#Or5bN5zlu)f%)UCQPUXjmCcPUP!)K?;R3AnL zJn~eF=qjbo8T3=95>B9C7FM%^T*Yojb7Qw7A=k}^c8fr+^K$`wdbz`P2RQ?UQ#9O= z^FV-G*9}R9!}CT&OyTfqu^zWUAcRO0h|u=K@CZzZye#!zl{eAUZHdouC>GlMn|s58 zHh(pKO;a-iZv~3l#99}^O#os#G%AdnH-T;^7dN?CdGpwi6lNs{Gg}0>Y2aXH4AXRR z-+^@&v64hC!g><`r(dc%@&bIocqEEmKrB`kib5LIpTDrzkf;7UMD2rb(!yfe2YJ|w zjY_hnKIV65hqMRPsuz`AdrQopITi^8xcS8jj^Y-Rra(7mh;@LR=uRS zLDvDC1me<53Y=GYxb$g8Qp2F2>`qA$SN5Tm${s@+V#46siH8JLZm)L90zbnk#SD{K znE;eVCYzsqqFsH5g1Q=cb`?Q1khJTNWW^$!Q{gs=IE85);8c4=jxfTT88zLfgDn-Q zdZ$vpt0*6?gWb(l?^2{P7f_)JlJ<(7gKig8_(SZ4J%z;~4Oh#%lvXFoI|xUFJ?c4S z+x-K0gmQ6w?19OEyWh#Ssd~4fH3tI0!Z`D?va{aH8NdQmy{t5ZwKs_HFX=*Y%T2C# z7vN{0yg!Q}SmdjLG4BbKF|YVA<`oGTgI=ww_bH)+L57h~qV9BGIOR?}1%c53AP+&- zSAz>stVEs@toQ{+WJ{;^aS4gEwH@_r!aoEzBbNmA-ufL!k6Bj?C&N_6`<0zeIp7H# zRpRFR6}?$(PL|A2Don)EwQ zTIqx2hsdjy7%&BhM9%t-h^x1_2iWePb2K>JyO78a1u2oVQy*4PJUg~7Q4`_y% zNV%VQc%ctN+ULRG*XW$T7MxWbU6H|#@&6l)%=^O_Feu`lEh((K3Yi|*mgsycy%@{l z%yIk{aJRK%ZMo~Q_$+g$Ptn#K=~`#vjD5SiZ=K&JhJRM+9NAh7XRglYl~Ao69T|c@ zmQkxdujsAi1dpRK>Z&g&m}GZz)5XAk4o-F)E8mESvYd20IV zwNXOUB5QPnNNDRUu|m^K<`%oh@vrbLDv;v$6KSO{D3Ly?wGzwtgUtRRIfCt!SNei7 zd`U!JiEX}BoxzkP60g>vaI1jF)2`{&hLmnX&5|P*m!~!&7n)l2i%RH#7D}XMV+o^| z8XFNQ{zaw!hJM<+&wfQQTt-{ZzUF20F}@*R zqi}7(cfU@W)P6=a;OEq;uPf;FI_0BXS1AH7DsFr`c>Js6y$1`Z8^Talwd&UtR3wX; zXG3kQqQRk?dwIzOQ#Yh%~HhP{hCr|IQ*x*LseweuPb}&Q32qy0~;=j zTo1Wc8p5LZ*Oi72hhnN3{tPJo4P|c=Ft=o(*sgMmLX{ zpuKKO=sv2Nvq3zhPZzJL*-zzApKs_ z8M6Dypm|6tzoqPH*=kbxEv2k$Ai~seM>nrDX5Nb zwWGXJ+XH5igI`ys1z;qvXbW=XVskC*vBbWu0OZ3~C{+0iGw0h1FvaX=)H{-;XU(l* zCXumBD4osg-Hc_{3{ZYZzrCgIU4C_ZTRAZ<+aV?U`rFF6NkRJ8{~Xxz#ypTb`AbMnOhNNMeq(-VJ@QP(pnrv0v@`yAVc_B-%sY+BH9 zD~XKanG?*#{UhadPdQ4|E^_^jveS@4=D(vfwMr`U-%%pR<(2vGC<7D0%lvnghn@&h z=8I>?FmTkW?$0Y;Lg`~#)tpcGca52%wsPD}X*O4l(ttp+-iKTrTXE!CN% zZo(fZvfxfr7tIfpktq>fG;1nw$Sk9#auF4QfB?Qy4g~1@=B&gN@b83)Y zBhC*?RKs&2sraD+^aH7+f^t_sRCc#ZT9j$CZG1v5wxQDVhsr~*6I1C~+$rFZPL{2N zP5GBf04TMvDgRR01ejWc9RE_e=6cK2B}(VxN79`SvSfaw?Cz8pgMciVA1RoqD+WYo z{gw=N`A5po87C$}yL?@(`Y|ci*KJB-)doVgYh8x%22^qXSlL@wVimXj3myz*62$)? zok{%xMwL`3vkIyciB$)O1i`$mDtapnR_8?qf29CGPfUVz9YopUiGtYn#nhb1DuhVP z{z?Iom{j%vS&4t8)E<<^ul_5gFimWf4&T7wu*@ypnrpC~m45MtXD3#wqq^#=743U?h$ zDqEO-q5yJMD#b)L{ZEv}A&G7JUjm6gRciJDU`)bow(Ha~_8$LK*{{pB#{}o~Q>DH| zP#I83Sqq0vyb+2t>wlEauK-XpsM=8{6W}Dm8-Ev2%IxnpD`ocgRG21}+9T8c@0By> zQjl%WUZ5J3cSf2N#yNI(#G1(zU$ z!Egln9-kwRfKI?a1`H&|21@zi(JR`Uh`P4k;6^hL63ssbjAXVFf1K(LvNQgP47C6O zR_*;`4c7{*aQr7_zo-hwl1v{jN$nU@mP=%*Nd-6t|D-fFtrN$91meF^h9E#_qPqwL zn>h|5ck9xOjHZIu|EBDz6O_hZzc_?Q#r!{nWtS_rkHgB&p@PZy{b!P>x0l_`VkCG2 z!&IVA{uJ%kzfk0{{ACwKG|icr*>rq~vf@PAt03+FRciL5c{7k5^Rmkt0v0!!6G~;l zFILp-6;vX*T3DorX=(G>Ts&>g5ywUV^iE{0al)DHITA!5-7s&h*w-k{4Z|CY-%+tm zP-F2*8iiu3#O$*K;ba0nQPJK2fb5EcUD~rE#IYz1pZD^RHb^fAC{LHq%Zq^vVl%Vd zBWFixN5_CUTv5G88!q{au^9wtW3$;sGrN$ohB;BUz{?dF3@)Z`ztmmecuzpQh^8=T zDjJJZu!H7=fHJlc zj7~p(Wt<#v+Q<)87@ZPtWJrfOnDn_PHjK+sbTVz@YFIx^MG83}#u)ZnfEiyrU`a=d zVOg6R^oHx#uk)K#wd!^v7unQl6@SoQt5TQC!YN+GZDVGQ(7_Dr-7alR#Tq`JYGu&8s4Hnd}+=|n@g#5 zR?RM$_`l?GXN;NH>`nR(JzI>$lLjw$jTjSI19JctbIJHDjg2vG$FmFUQ=BMcp}jnhwNKu0QR+=$;Ylf_hUC6vJ*5CnkD0^h;<`CGAcoR&noDidjby*e*q zyNb>~3`PCBiYf-$q39U-Y-+fuc}hRyN=rMErkQLkne8wNKR0Y#j1vFZWg4r(oCq;d0SuGR`sE;XB!}*hH7#TA$---YA zDvV(R9tAyw^Z|Er*s#@^CBLL~AanSW+F^7(U|dcmO|G}z6R6-h>q03Vt*b+a>;C~M zwxHe1-wqw4BgBMBN|RwG#L*~~9P%yh(7&OmKNlRQI293n*cH@vx)EYCWNF-84DmJn ze^%7;`YCzGjp<@GwRbj^!;~ETnD0^wKIW>t9!|RlYK8 znK@7uPT>zzjK8a>F9x?rcOsSE=es251McpeizPB9-=TjOv{uKZ&yKD>=2CBIb^a$y ztE(NuMwry|6jb3EAJan;m2I!bQrRD?4))fh*`S=iCky#&{mJ1kF&9I!Cddqv zzhObUWg@EclB=;eGRVWuf77d(A;8AT3>y>tMeMj53o#IrNSm>_WwP{_5@r@=dmKIi zBP5lEA2Dm1bL3Mn=ip9!F}G*{ymK!Tu1*6akX2#C zJ^X?D;}Gjv`Sj%2Wd1w5jFGuHBa>Sqm&ZW((O87T6UQ>$mx6F>d)WVU8KZEmZkxtz z!i*(zOMC<1KVrikbUvvEZQnS;X&shJsx>dWM?dRIYrbdhm!F7mb>M-7WkUNsMSUqi z#f+{EcifFvy?Jc`?}wZl#<$;tEy>|f@1}6*wF>pk!EuN=$7Il-aX0&nmF!wp=@Q_d zfWVUd%dPW^7!2|x-|uO-CQoy<|A-^hSACCd;g^hQC<6BD>_CxPV7kOTM*6z~l^&Zn z*2y?*pNu|VCyg3!nSA_Kg&JUWhMmi!AtPP`D}PhnPp!1E=W{LsFy+TGZkWhL+%okD#4Qih$8T}Y>L zH+aa7F7%86k0hRe{lPXaSTYC=J7e%s>=ZJjO>_typ%}wdHnrp! zSBwl+Z9wFw$=sQv7zO_)mNjlK#Ag?br4(X|SOJ2TiG(o&8|S8x%4KasE0Ibqc?>PK z~9m^!!$Rf#MyDVPO zS72TYUme~pyA(B5-m#Lt)RI2X}&Zbyt9&2IH z(EoFgLprx~5N(AGuleF7ug`A}w!D%~-HM|)qabM5{1!!hL4*n}mLdN&P)&mVF+~lq za&RTWEI9)Zht$Jx^)D-GU~@6`9{1>ZF8iVZn#0VaWGC*MRjQP8=JaKEDJ-PJ3uxlW zcs3qG3LhonxN$PJbx;tucPEk!8#G$%Ns8iADF11G;_PX3Pv+|&%Vzv~g>$Ezr6MYR zdswfw@3Tz4HP}WTxf|SbuLW`zY-*Ve!LlR9d^)wruH2%ZMfQ=b4^Ncbiu$_0IfDB< z?>G4*9g1A!D6YbOpeXO?GR1SbQpmu7%a7z5DI{YNii!OIEDI!$ zk+~Z=)Lp=4CrVu(D$OD%$OAhXVGrx61Gn9TPEx7?*xgRa;HlK^2ayuQ$8L&tsoZNk2=pGYxatQ9}c|?tb1W zD!?tyKKJ1&RR%y^{isVLQz$%1+r?RL!uw7UBU#2KB3#nX!{A+gJaq9A;671md3wE99lX(QmU>>Dh z(oOg9HfPjSdAu11_!jO9`gi5&C)QCSohc6wJO*PXq91Xk(sRsry z^G5cayBgWTMZ~CBbpeIB^Us+Z+UHmA$@3;9@^DkpXX(1aZI+3%pe_aZ>>sl%X8v_6 zm>;kkyb@O|H~8NK8u_sqM^)(hpet##P43^Ij<|uqCC$#kQ{0d#aCGd5>D?;HWpL@l zWzOmB(EqGb6*3lcC5lM#Q~aH|ndsH=Cg$?WV+%gWD`Y+2>@?6cV^z#vvXTS^-?3|E ztsWVqcVR0sCzh^O$HwE2>PjhMjZ9_`)BkHA1(VI>~k)r>7g(_bYkbc!YKWFkA zm{=NS$3am^6hCKdzDTO|LDAP{n5U^r+6skREI(CST_6jk>M@v0W#oTjD z_dhOokzB!f4Ci&G=%XGn@H8JW8Ss1(yhVQvg}dlVvs+nE;KWoa8g*ss1SnhMg+alp+JaiCY~QCvH$~rGw_8r&yPz!EyA)M>LanUWey{e(ro1VY@vuq7 z#PZ6j>P9i6*!VWFd}jWFeonz#51$k>zBuo#BTTFzDCb!aDZz@_!Ut3m&#Kc`M2e@i zZij*?q^(Wo{kPT1>gr|z*rQG>6+0gEuYBIW0WUr>prtoOmy8Ww0I!5xdsaxV8+R`p;w?1U_LJjcG+Du$=_uzi^wQ_m z%6sqGCII9q{}|`pa&%RgY3hT=9e3}&yM*0wA?++)0JNDQAK@tmA+WBnZbW}CG7{nE zq7gQS->46ZoKQtVpKl1@wWuzutl4%@6WKvk{9>=d%acz?;4s2mz{Gt=t*f zrM*{Rkx1#Ru#Gg54h0CO1a`fY(sZpWSGbXH72&lJe<*ps|LWk0nPGSBg(vcv6+tt{) z1q3bx2otqZ3+)hu*|gTf!IMZ#ub{G`QoCQn5DA~VD`s`x83TPY$B*?44Gi`U%nqFB zoj=ige0FAVaA1CJW?-;?aG-x^rqAr@A2e1rbW1w5HerrZVdU*SARBokwxma3G-?2- zDUZ>}z$z>C`*zC7jgWRrt<-nz*A_)cQh{X|MzcOlOKv&AqSf`5vRbqua*XxXZZVE= z!D1~l`s(=kiK*%FtK(y2F5><5TC14%bA7U!W6ouJX!ZsFaCkQ|V=X-IK7lcJ<1(tF}Ugu($RN2P5ol@(H_#Ep0pY zl!q+^#$nrjqs+!3F4eZCb}^T#zj1hF{PNhu<@2QVaHF*cccYEr?K}5qCw-iNl|!LC z4jPUp=Tq((Z*MSUJ>!Vgwqt*V0Phv-Z`BC)<5#1auAl)N2Q37=C94!&Cg;3PRL3mHv$PNzVgKVx){62<80IGu6KJ= zLxi%8-r35b(0(8e``iF!4|Nx8qxGLwM;67FA+kdU>enf<7+qL73_$Tu%DC30Tp|(8 z#POU^Dt`TP_nyr=Yo>s&1ymEnlxtC8~3 z;QE+lY#s_IWAjkiGd8$<9%>a7=`L{Etc=anwb9Y>sVOU6^Kg*q8q~&K-nm;uZEQ#z zz;A2&OB}(1y4s~!c7b?;vaHJ(a{oFXmALlnm|}!?=$E@+4`d=9MW8cyxv^RLGk7_C zv^;?^I`?*PoN8bugU!9r{!AfQB&Ck@M(L;aHcMIt!^WpoPKA3kF@TaKMCq-o-@F5; zKPw|o_R3W6$X2me*c6h=X^fzgUJ|EwACg)Ur;V=QBykofbXhaX1(II@B#G0J2ey_Z zKDreo@llB-5mVkPA2qrK&C@DDCo zx6VNwQ7a$Yc|beiW4*58(2v^?l;qZqCP-;&|uGF58QmH+$1(ezoK`FH-wvtk#T-plIGxs)LJR%!?+ zYtf}#W}#UAXLjwCUjAqH9W1~6lVdP*sC(-;29#%>>3wi(&LJf zL^Du7#@rk~#vDHB^<&`KEQI#jPx|1nk#=6Ft(WuYdhL>hh9lAj4qqiE9(_O)1K3uI zcIJUYmatEo&*sbwE8*ga_jpai)=@rG_z`bxm%s2Mq*3ig{7Ap_wHqu>a}%|mR#R6$ zjy)8?%{_(Wm6(No5J8WU#S#2pqErwJ{r`B1@}R>iWihgKkd@VaeY_#WP8CkE!@yYMrarV zlJi*%p0Rsr_-s0BEboX78(i=M3_#d^nS)FZ*kF;^@5C5>wR)KV?Drojs&vp$`ek=- z7>>C;a^Ax6B`nu`=$v8Wycce-aE8D~#STU%=9VUP_GyNR%bOf@SOlLE62J3T3;7)c zURm&xme1S{{X2@#kyoYjFQ2f8KHv(92eUu_Q-!jDujrqyQeT#W>oz!$e!^V|i9CPq zk$2(|hDYMxg~I*s^9E!X*7#{pZ9f}&gRXOXM26dYju{lztSb6>0|*1=EcK+j11Zks z(lnI@lfcX@9}7Sq_s6PpG^TE8}Wb$oicjOXy%e|Lv^ZRw%{?bG~%`dpdMsE1e_Q)#Yt z4_VgLF3t9Ox|IvJ*ZGq)+v`w7P=4}kuZJvadw;t^5*xy9g7!`@qNB^7uduP@zgulG zWx88!nyfATZ&i}q`T0$k`Y$W_O4<8oYk%2%3tWxEhV5ETg_Ce;y*JzZ0A(MZfBfZyaSk>()Ri&_gC84VOxr zix|I#|FKb!JcHS;vf<^%h>hOw8jqmb{l^+MPS-un>G2qnc8A)EAGb!XJLWEZe=&~9 zEJ@GQd3uxe4qkh2#1hD;%`Ic%IyHs3cBjvVXO=o!}s?U}@VdZ(+wd3eH` z2lf7c<{7lwU+iCPpr`inUscrlqFFq5%vl6I(=><&?ZGsNM>G(oX}!`rbK`%gDLhZn z6rTIEsZDWpvhhVTZw?R8^{T3y1XQ8XIH5>t$xO!LQ5FyMZjg$Z0C;i7g!Z=0Kkz

dV_ygjgaOqfR$D)T%dFgn!ICuZ=K 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

1nXt6xL6jD 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�kI+Bf{>k!36DKMobLh|f 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

(mCik4N3e5Tmi!3?1?Aq6KT#w-4@|MWPbnBG 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 diff --git a/automata/config/symbol/symbol_code_embedding.json b/automata/config/symbol/symbol_code_embedding.json index da3c5cc6..681b865d 100644 --- a/automata/config/symbol/symbol_code_embedding.json +++ b/automata/config/symbol/symbol_code_embedding.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d67e29349bb2c305353141c823528dfca3e3ab40068924c02aa94bd8fd80a42 -size 8081971 +oid sha256:793602bb747d91d9e5eaaf81e443f96dbc5bbf5ba5dfa66ee3185d1e99e6048f +size 14813533 diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index f7506918..b0738406 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -54,7 +54,7 @@ class DependencyFactory(metaclass=Singleton): def __init__(self, **kwargs) -> None: """ Keyword Args (Defaults): - symbol_graph_path (DependencyFactory.DEFAULT_SCIP_FPATH) + symbol_graph_scip_fpath (DependencyFactory.DEFAULT_SCIP_FPATH) flow_rank ("bidirectional") embedding_provider (OpenAIEmbedding()) code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) @@ -68,6 +68,9 @@ def __init__(self, **kwargs) -> None: self._instances: Dict[str, Any] = {} self.overrides = kwargs + def set_overrides(self, **kwargs) -> None: + self.overrides = kwargs + def get(self, dependency: str) -> Any: """ Gets a dependency by name. @@ -125,10 +128,10 @@ def build_dependencies_for_tools(self, toolkit_list: List[str]) -> Dict[str, Any def create_symbol_graph(self) -> SymbolGraph: """ Associated Keyword Args: - symbol_graph_path (DependencyFactory.DEFAULT_SCIP_FPATH) + symbol_graph_scip_fpath (DependencyFactory.DEFAULT_SCIP_FPATH) """ return SymbolGraph( - self.overrides.get("symbol_graph_path", DependencyFactory.DEFAULT_SCIP_FPATH) + self.overrides.get("symbol_graph_scip_fpath", DependencyFactory.DEFAULT_SCIP_FPATH) ) @lru_cache() @@ -160,14 +163,27 @@ def create_symbol_code_embedding_handler(self) -> SymbolCodeEmbeddingHandler: code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) embedding_provider (OpenAIEmbedding()) """ + print("loading db") + + print( + "from fpath = ", + self.overrides.get( + "code_embedding_fpath", DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH + ), + ) code_embedding_db = JSONSymbolEmbeddingVectorDatabase( self.overrides.get( "code_embedding_fpath", DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH ) ) + print("db loaded") embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) + print("embedding provider loaded") + embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) + print("embedding builder loaded") + return SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) @lru_cache() diff --git a/automata/core/symbol_embedding/base.py b/automata/core/symbol_embedding/base.py index f1a5aac1..d8ab3a84 100644 --- a/automata/core/symbol_embedding/base.py +++ b/automata/core/symbol_embedding/base.py @@ -5,12 +5,12 @@ from automata.core.base.database.vector import JSONVectorDatabase from automata.core.embedding.base import ( - EmbeddingVectorProvider, Embedding, - EmbeddingHandler, EmbeddingBuilder, + EmbeddingHandler, + EmbeddingVectorProvider, ) -from automata.core.symbol.base import Symbol, ISymbolProvider +from automata.core.symbol.base import ISymbolProvider, Symbol from automata.core.utils import is_sorted @@ -25,6 +25,10 @@ def __init__(self, key: Symbol, input_object: str, vector: np.ndarray): def symbol(self) -> Symbol: return self.key + @symbol.setter + def symbol(self, value: Symbol): + self.key = value + @abc.abstractmethod def __str__(self) -> str: pass diff --git a/install_indexing.sh b/install_indexing.sh old mode 100644 new mode 100755 From b49682017aa5125ec67399c052fd83ba19794433 Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 17:12:01 -0400 Subject: [PATCH 07/14] progress towards merge --- automata/cli/options.py | 7 +- automata/cli/scripts/run_code_embedding.py | 17 +- automata/cli/scripts/run_doc_embedding_l2.py | 265 ++++++++++++------ automata/cli/scripts/run_doc_embedding_l3.py | 14 +- .../symbol/symbol_doc_embedding_l2.json | 4 +- .../symbol_synchronization.py | 5 +- automata/core/experimental/search/rank.py | 4 +- .../core/experimental/search/symbol_search.py | 20 +- automata/core/navigation/py/dot_path_map.py | 1 - .../core/singletons/dependency_factory.py | 6 +- automata/core/singletons/py_module_loader.py | 2 +- .../core/singletons/toolkit_registries.py | 2 +- automata/core/symbol/base.py | 2 +- automata/core/symbol/graph.py | 24 +- automata/core/symbol_embedding/base.py | 10 +- .../core/tools/builders/context_oracle.py | 8 +- automata/core/tools/builders/py_reader.py | 4 +- automata/core/tools/builders/py_writer.py | 4 +- automata/core/tools/builders/symbol_search.py | 4 +- automata/core/utils.py | 9 +- automata/tests/conftest.py | 10 +- automata/tests/unit/test_py_reader.py | 1 + automata/tests/unit/test_symbol_embedding.py | 3 +- automata/tests/unit/test_symbol_graph.py | 8 +- automata/tests/unit/test_symbol_search.py | 1 - automata/tests/unit/test_symbol_similarity.py | 7 +- automata/tests/unit/test_synchronizer.py | 21 +- automata/tests/utils/factories.py | 2 +- 28 files changed, 285 insertions(+), 180 deletions(-) diff --git a/automata/cli/options.py b/automata/cli/options.py index 5e2df0b8..7dca0b3f 100644 --- a/automata/cli/options.py +++ b/automata/cli/options.py @@ -24,10 +24,15 @@ def common_options(command: click.Command, *args, **kwargs) -> click.Command: help="Which index file to use for the embedding modifications.", ), click.option( - "--embedding-file", + "--code-embedding-file", default="symbol_code_embedding.json", help="Which embedding file to save to.", ), + click.option( + "--doc-embedding-file", + default="symbol_doc_embedding_l3.json", + help="Which embedding file to save to.", + ), ] for option in reversed(options): command = option(command) diff --git a/automata/cli/scripts/run_code_embedding.py b/automata/cli/scripts/run_code_embedding.py index ee081580..b5ca41aa 100644 --- a/automata/cli/scripts/run_code_embedding.py +++ b/automata/cli/scripts/run_code_embedding.py @@ -4,17 +4,12 @@ from tqdm import tqdm from automata.config.base import ConfigCategory -from automata.core.context_providers.symbol_synchronization import ( - SymbolProviderSynchronizationContext, -) from automata.core.llm.providers.openai import OpenAIEmbeddingProvider from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.singletons.dependency_factory import dependency_factory from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.symbol_utils import get_rankable_symbols -from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase -from automata.core.symbol_embedding.builders import SymbolCodeEmbeddingBuilder from automata.core.utils import get_config_fpath logger = logging.getLogger(__name__) @@ -33,7 +28,7 @@ def main(*args, **kwargs) -> str: code_embedding_fpath = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, - kwargs.get("embedding-file", "symbol_code_embedding.json"), + kwargs.get("code-embedding-file", "symbol_code_embedding.json"), ) embedding_provider = OpenAIEmbeddingProvider() @@ -57,11 +52,11 @@ def main(*args, **kwargs) -> str: filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) for symbol in tqdm(filtered_symbols): - # try: - symbol_code_embedding_handler.process_embedding(symbol) - symbol_code_embedding_handler.embedding_db.save() - # except Exception as e: - # logger.error(f"Failed to update embedding for {symbol.dotpath}: {e}") + try: + symbol_code_embedding_handler.process_embedding(symbol) + symbol_code_embedding_handler.embedding_db.save() + except Exception as e: + logger.error(f"Failed to update embedding for {symbol.dotpath}: {e}") # for symbol in symbol_code_embedding_handler.get_sorted_supported_symbols(): # if symbol not in filtered_symbols: diff --git a/automata/cli/scripts/run_doc_embedding_l2.py b/automata/cli/scripts/run_doc_embedding_l2.py index c6570353..ebbe76f6 100644 --- a/automata/cli/scripts/run_doc_embedding_l2.py +++ b/automata/cli/scripts/run_doc_embedding_l2.py @@ -4,128 +4,125 @@ from tqdm import tqdm from automata.config.base import ConfigCategory -from automata.core.experimental.search.rank import SymbolRankConfig -from automata.core.experimental.search.symbol_search import SymbolSearch -from automata.core.llm.providers.openai import ( - OpenAIChatCompletionProvider, - OpenAIEmbeddingProvider, +from automata.core.context_providers.symbol_synchronization import ( + SymbolProviderSynchronizationContext, ) +from automata.core.llm.providers.openai import OpenAIEmbeddingProvider from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler -from automata.core.retrievers.py.context import ( - PyContextRetriever, - PyContextRetrieverConfig, -) +from automata.core.singletons.dependency_factory import dependency_factory from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import SymbolDescriptor from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.symbol_utils import get_rankable_symbols -from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase -from automata.core.symbol_embedding.builders import ( - SymbolCodeEmbeddingBuilder, - SymbolDocEmbeddingBuilder, -) -from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.utils import get_config_fpath logger = logging.getLogger(__name__) -def setup(**kwargs): - embedding_provider = OpenAIEmbeddingProvider() - chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) - embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) +def main(*args, **kwargs) -> str: + """ + Update the symbol code embedding based on the specified SCIP index file. + """ + + py_module_loader.initialize() + scip_fpath = os.path.join( + get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") + ) code_embedding_fpath = os.path.join( - get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" + get_config_fpath(), + ConfigCategory.SYMBOL.value, + kwargs.get("code-embedding-file", "symbol_code_embedding.json"), ) - code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) - code_embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) - code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, code_embedding_builder) - - doc_embedding_path_l2 = os.path.join( + doc_embedding_fpath = os.path.join( get_config_fpath(), ConfigCategory.SYMBOL.value, - kwargs.get("symbol_doc_embedding_l2_fpath", "symbol_doc_embedding_l2.json"), + kwargs.get("doc-embedding-file", "symbol_doc_embedding_l2.json"), ) - doc_embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(doc_embedding_path_l2) + embedding_provider = OpenAIEmbeddingProvider() - scip_path = os.path.join( - get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") + dependency_factory.set_overrides( + **{ + "symbol_graph_scip_fpath": scip_fpath, + "code_embedding_fpath": code_embedding_fpath, + "doc_embedding_fpath": doc_embedding_fpath, + "embedding_provider": embedding_provider, + } ) - symbol_graph = SymbolGraph(scip_path) - symbol_search = SymbolSearch(symbol_graph, SymbolRankConfig(), embedding_similarity_calculator) - py_context_retriever = PyContextRetriever(symbol_graph, PyContextRetrieverConfig()) - symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( - embedding_provider, chat_provider, symbol_search, py_context_retriever + symbol_graph: SymbolGraph = dependency_factory.get("symbol_graph") + symbol_code_embedding_handler: SymbolCodeEmbeddingHandler = dependency_factory.get( + "symbol_code_embedding_handler" ) - - embedding_handler = SymbolDocEmbeddingHandler( - doc_embedding_db_l2, symbol_doc_embedding_builder + symbol_doc_embedding_handler: SymbolDocEmbeddingHandler = dependency_factory.get( + "symbol_doc_embedding_handler" ) - # sync the symbol graph with the code embedding - graph_symbols = symbol_graph.get_sorted_supported_symbols() - embedding_symbols = code_embedding_handler.get_sorted_supported_symbols() - sorted_supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) - filter_digraph_by_symbols(symbol_graph.default_rankable_subgraph, sorted_supported_symbols) - - return { - "embedding_handler": embedding_handler, - "doc_embedding_db_l2": doc_embedding_db_l2, - "symbol_graph": symbol_graph, - } - + # print( + # "Length of symbol graph before synchronize: ", + # len(symbol_graph.get_sorted_supported_symbols()), + # ) + # print( + # "Length of symbol code embedding handler before synchronize: ", + # len(symbol_code_embedding_handler.get_ordered_embeddings()), + # ) + + with SymbolProviderSynchronizationContext() as synchronization_context: + synchronization_context.register_provider(symbol_graph) + synchronization_context.register_provider(symbol_code_embedding_handler) + synchronization_context.synchronize() + + print( + "Length of symbol graph after synchronize: ", + len(symbol_graph.get_sorted_supported_symbols()), + ) + print( + "Length of symbol code embedding handler after synchronize: ", + len(symbol_code_embedding_handler.get_sorted_supported_symbols()), + ) + # # Mock synchronization to allow us to build the initial doc embedding handler + symbol_doc_embedding_handler.is_synchronized = True -def process_embeddings(embedding_handler, doc_embedding_db_l2, symbol_graph): all_defined_symbols = symbol_graph.get_sorted_supported_symbols() filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) for symbol in tqdm(filtered_symbols): if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: - try: - logger.info(f"Attempting update for symbol {symbol}...") - embedding_handler.process_embedding(symbol) - doc_embedding_db_l2.save() - except Exception as e: - logger.error(f"Failed to update embedding for symbol {symbol}: {e}") - - -def discard_stale_symbols(embedding_handler, doc_embedding_db_l2, symbol_graph): - all_defined_symbols = symbol_graph.get_sorted_supported_symbols() - filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - - for symbol in embedding_handler.get_sorted_supported_symbols(): - if symbol not in filtered_symbols: - logger.info(f"Discarding stale symbol {symbol}...") - doc_embedding_db_l2.discard(symbol.dotpath) - doc_embedding_db_l2.save() - + print("processing symbol = ", symbol) + symbol_doc_embedding_handler.process_embedding(symbol) + symbol_doc_embedding_handler.embedding_db.save() -def main(*args, **kwargs) -> str: - py_module_loader.initialize() - - logger.info("Running....") + # for symbol in symbol_doc_embedding_handler.get_sorted_supported_symbols(): + # if symbol not in filtered_symbols: + # logger.info(f"Discarding stale symbol {symbol}...") + # symbol_doc_embedding_handler.embedding_db.discard(symbol.dotpath) + # symbol_doc_embedding_handler.embedding_db.save() - setup_data = setup(**kwargs) + return "Success" - process_embeddings( - setup_data["embedding_handler"], - setup_data["doc_embedding_db_l2"], - setup_data["symbol_graph"], - ) + # # Mock synchronization to allow us to build the initial embedding handler + # symbol_graph.is_synchronized = True + # symbol_code_embedding_handler.is_synchronized = True + # all_defined_symbols = symbol_graph.get_sorted_supported_symbols() + # filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) -# def main(*args, **kwargs) -> str: -# """ -# Update the symbol code embedding based on the specified SCIP index file. -# """ + # for symbol in tqdm(filtered_symbols): + # # try: + # symbol_code_embedding_handler.process_embedding(symbol) + # symbol_code_embedding_handler.embedding_db.save() + # except Exception as e: + # logger.error(f"Failed to update embedding for {symbol.dotpath}: {e}") -# py_module_loader.initialize() + # for symbol in symbol_code_embedding_handler.get_sorted_supported_symbols(): + # if symbol not in filtered_symbols: + # logger.info(f"Discarding stale symbol {symbol}...") + # symbol_code_embedding_handler.embedding_db.discard(symbol.dotpath) + # symbol_code_embedding_handler.embedding_db.save() -# logger.info("Running....") +# def setup(**kwargs): # embedding_provider = OpenAIEmbeddingProvider() # chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) # embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) @@ -137,7 +134,6 @@ def main(*args, **kwargs) -> str: # code_embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) # code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, code_embedding_builder) -# # TODO - Add option for the user to modify l2 embedding path in commands.py # doc_embedding_path_l2 = os.path.join( # get_config_fpath(), # ConfigCategory.SYMBOL.value, @@ -160,6 +156,20 @@ def main(*args, **kwargs) -> str: # doc_embedding_db_l2, symbol_doc_embedding_builder # ) +# # sync the symbol graph with the code embedding +# graph_symbols = symbol_graph.get_sorted_supported_symbols() +# embedding_symbols = code_embedding_handler.get_sorted_supported_symbols() +# sorted_supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) +# filter_digraph_by_symbols(symbol_graph.default_rankable_subgraph, sorted_supported_symbols) + +# return { +# "embedding_handler": embedding_handler, +# "doc_embedding_db_l2": doc_embedding_db_l2, +# "symbol_graph": symbol_graph, +# } + + +# def process_embeddings(embedding_handler, doc_embedding_db_l2, symbol_graph): # all_defined_symbols = symbol_graph.get_sorted_supported_symbols() # filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) @@ -172,11 +182,92 @@ def main(*args, **kwargs) -> str: # except Exception as e: # logger.error(f"Failed to update embedding for symbol {symbol}: {e}") + +# def discard_stale_symbols(embedding_handler, doc_embedding_db_l2, symbol_graph): +# all_defined_symbols = symbol_graph.get_sorted_supported_symbols() +# filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) + # for symbol in embedding_handler.get_sorted_supported_symbols(): # if symbol not in filtered_symbols: # logger.info(f"Discarding stale symbol {symbol}...") # doc_embedding_db_l2.discard(symbol.dotpath) # doc_embedding_db_l2.save() -# logger.info("Complete.") -# return "Success" + +# def main(*args, **kwargs) -> str: +# py_module_loader.initialize() + +# logger.info("Running....") + +# setup_data = setup(**kwargs) + +# process_embeddings( +# setup_data["embedding_handler"], +# setup_data["doc_embedding_db_l2"], +# setup_data["symbol_graph"], +# ) + + +# # def main(*args, **kwargs) -> str: +# # """ +# # Update the symbol code embedding based on the specified SCIP index file. +# # """ + +# # py_module_loader.initialize() + +# # logger.info("Running....") + +# # embedding_provider = OpenAIEmbeddingProvider() +# # chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) +# # embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) + +# # code_embedding_fpath = os.path.join( +# # get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" +# # ) +# # code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) +# # code_embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) +# # code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, code_embedding_builder) + +# # # TODO - Add option for the user to modify l2 embedding path in commands.py +# # doc_embedding_path_l2 = os.path.join( +# # get_config_fpath(), +# # ConfigCategory.SYMBOL.value, +# # kwargs.get("symbol_doc_embedding_l2_fpath", "symbol_doc_embedding_l2.json"), +# # ) +# # doc_embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(doc_embedding_path_l2) + +# # scip_path = os.path.join( +# # get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") +# # ) +# # symbol_graph = SymbolGraph(scip_path) +# # symbol_search = SymbolSearch(symbol_graph, SymbolRankConfig(), embedding_similarity_calculator) +# # py_context_retriever = PyContextRetriever(symbol_graph, PyContextRetrieverConfig()) + +# # symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( +# # embedding_provider, chat_provider, symbol_search, py_context_retriever +# # ) + +# # embedding_handler = SymbolDocEmbeddingHandler( +# # doc_embedding_db_l2, symbol_doc_embedding_builder +# # ) + +# # all_defined_symbols = symbol_graph.get_sorted_supported_symbols() +# # filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) + +# # for symbol in tqdm(filtered_symbols): +# # if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: +# # try: +# # logger.info(f"Attempting update for symbol {symbol}...") +# # embedding_handler.process_embedding(symbol) +# # doc_embedding_db_l2.save() +# # except Exception as e: +# # logger.error(f"Failed to update embedding for symbol {symbol}: {e}") + +# # for symbol in embedding_handler.get_sorted_supported_symbols(): +# # if symbol not in filtered_symbols: +# # logger.info(f"Discarding stale symbol {symbol}...") +# # doc_embedding_db_l2.discard(symbol.dotpath) +# # doc_embedding_db_l2.save() + +# # logger.info("Complete.") +# # return "Success" diff --git a/automata/cli/scripts/run_doc_embedding_l3.py b/automata/cli/scripts/run_doc_embedding_l3.py index 4ab1dc87..7a9cef97 100644 --- a/automata/cli/scripts/run_doc_embedding_l3.py +++ b/automata/cli/scripts/run_doc_embedding_l3.py @@ -4,6 +4,7 @@ from tqdm import tqdm from automata.config.base import ConfigCategory +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.experimental.search.rank import SymbolRankConfig from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.llm.providers.openai import ( @@ -25,7 +26,6 @@ SymbolCodeEmbeddingBuilder, SymbolDocEmbeddingBuilder, ) -from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.utils import get_config_fpath logger = logging.getLogger(__name__) @@ -48,7 +48,9 @@ def main(*args, **kwargs) -> str: code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) embedding_provider = OpenAIEmbeddingProvider() embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) - code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) + symbol_code_embedding_handler = SymbolCodeEmbeddingHandler( + code_embedding_db, embedding_builder + ) # TODO - Add option for the user to modify l2 & l3 embedding path in commands.py embedding_path_l2 = os.path.join( @@ -71,8 +73,12 @@ def main(*args, **kwargs) -> str: embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) symbol_rank_config = SymbolRankConfig() - symbol_graph_subgraph = symbol_graph.default_rankable_subgraph - symbol_search = SymbolSearch(symbol_graph, symbol_rank_config, embedding_similarity_calculator) + symbol_search = SymbolSearch( + symbol_graph, + symbol_rank_config, + symbol_code_embedding_handler, + embedding_similarity_calculator, + ) py_context_retriever = PyContextRetriever( symbol_graph, PyContextRetrieverConfig(), embedding_db_l2 ) diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index ab649ced..2143a010 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0095a8045368012cc75817a955e419091d2e01064d753d1abb6ad9815711457d -size 2355249 +oid sha256:10169c8fd91511788bddd51ab7577b64400a36f1872a4a49ce9ba42a7c591dc5 +size 5262511 diff --git a/automata/core/context_providers/symbol_synchronization.py b/automata/core/context_providers/symbol_synchronization.py index f71fc63b..c3b66155 100644 --- a/automata/core/context_providers/symbol_synchronization.py +++ b/automata/core/context_providers/symbol_synchronization.py @@ -1,5 +1,6 @@ -from automata.core.symbol.base import Symbol, ISymbolProvider -from typing import List, Type, Set +from typing import List, Set + +from automata.core.symbol.base import ISymbolProvider, Symbol class SymbolProviderRegistry: diff --git a/automata/core/experimental/search/rank.py b/automata/core/experimental/search/rank.py index 7299139b..d7d64502 100644 --- a/automata/core/experimental/search/rank.py +++ b/automata/core/experimental/search/rank.py @@ -170,9 +170,11 @@ def _prepare_query_to_symbol_similarity( if query_to_symbol_similarity is None: return {k: 1.0 / node_count for k in stochastic_graph} missing = set(self.graph) - set(query_to_symbol_similarity) + print("len(self.graph) = ", len(self.graph)) + print("len(set(query_to_symbol_similarity)) = ", len(set(query_to_symbol_similarity))) if missing: raise NetworkXError( - f"query_to_symbol_similarity dictionary must have a value for every node. Missing nodes {missing}" + f"query_to_symbol_similarity dictionary must have a value for every node. Missing {len(missing)} nodes." ) s = sum(query_to_symbol_similarity.values()) return {k: v / s for k, v in query_to_symbol_similarity.items()} diff --git a/automata/core/experimental/search/symbol_search.py b/automata/core/experimental/search/symbol_search.py index 5e603269..106dc0e9 100644 --- a/automata/core/experimental/search/symbol_search.py +++ b/automata/core/experimental/search/symbol_search.py @@ -1,17 +1,14 @@ -from copy import deepcopy -from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union +from typing import Any, Callable, Dict, List, Optional, Tuple, Union -import networkx as nx import numpy as np +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.experimental.search.rank import SymbolRank, SymbolRankConfig from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import Symbol, SymbolReference from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.parser import parse_symbol from automata.core.symbol.symbol_utils import convert_to_fst_object -from automata.core.embedding.base import EmbeddingSimilarityCalculator - from automata.core.symbol_embedding.base import SymbolEmbeddingHandler SymbolReferencesResult = Dict[str, List[SymbolReference]] @@ -39,9 +36,16 @@ def __init__( self.symbol_graph = symbol_graph self.embedding_similarity_calculator = embedding_similarity_calculator self.search_embedding_handler = search_embedding_handler - self.symbol_rank = SymbolRank( - symbol_graph.default_rankable_subgraph, config=symbol_rank_config - ) + self.symbol_rank_config = symbol_rank_config + self._symbol_rank = None # Create a placeholder for the lazy loaded SymbolRank + + @property + def symbol_rank(self): + if self._symbol_rank is None: + self._symbol_rank = SymbolRank( + self.symbol_graph.default_rankable_subgraph, config=self.symbol_rank_config + ) + return self._symbol_rank def symbol_rank_search(self, query: str) -> SymbolRankResult: """Fetches the list of the SymbolRank similar symbols ordered by rank.""" diff --git a/automata/core/navigation/py/dot_path_map.py b/automata/core/navigation/py/dot_path_map.py index c08b39c0..a90f3ac2 100644 --- a/automata/core/navigation/py/dot_path_map.py +++ b/automata/core/navigation/py/dot_path_map.py @@ -1,4 +1,3 @@ -import logging import os.path from typing import Dict, Iterable, Tuple diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index b0738406..77778456 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -151,10 +151,8 @@ def create_symbol_rank(self) -> SymbolRank: Associated Keyword Args: symbol_rank_config (SymbolRankConfig()) """ - subgraph = self.get("subgraph") - return SymbolRank( - subgraph.graph, self.overrides.get("symbol_rank_config", SymbolRankConfig()) - ) + subgraph: nx.DiGraph = self.get("symbol_graph") + return SymbolRank(subgraph, self.overrides.get("symbol_rank_config", SymbolRankConfig())) @lru_cache() def create_symbol_code_embedding_handler(self) -> SymbolCodeEmbeddingHandler: diff --git a/automata/core/singletons/py_module_loader.py b/automata/core/singletons/py_module_loader.py index 7601ddb8..a619426a 100644 --- a/automata/core/singletons/py_module_loader.py +++ b/automata/core/singletons/py_module_loader.py @@ -5,8 +5,8 @@ from redbaron import RedBaron from automata.core.base.patterns.singleton import Singleton -from automata.core.utils import get_root_fpath, get_root_py_fpath from automata.core.navigation.py.dot_path_map import DotPathMap +from automata.core.utils import get_root_fpath, get_root_py_fpath logger = logging.getLogger(__name__) diff --git a/automata/core/singletons/toolkit_registries.py b/automata/core/singletons/toolkit_registries.py index a35cf7e3..d226609a 100644 --- a/automata/core/singletons/toolkit_registries.py +++ b/automata/core/singletons/toolkit_registries.py @@ -1,8 +1,8 @@ import pkgutil from typing import List, Set, Type -from automata.core.base.patterns.singleton import Singleton from automata.core.agent.providers import OpenAIAgentToolkitBuilder +from automata.core.base.patterns.singleton import Singleton class OpenAIAutomataAgentToolkitRegistry(metaclass=Singleton): diff --git a/automata/core/symbol/base.py b/automata/core/symbol/base.py index 17401853..3c73c5bf 100644 --- a/automata/core/symbol/base.py +++ b/automata/core/symbol/base.py @@ -2,7 +2,7 @@ import re from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional, Tuple, Set, List +from typing import Any, Dict, List, Optional, Tuple from automata.core.symbol.scip_pb2 import Descriptor as DescriptorProto # type: ignore diff --git a/automata/core/symbol/graph.py b/automata/core/symbol/graph.py index 41b41acd..2186a63f 100644 --- a/automata/core/symbol/graph.py +++ b/automata/core/symbol/graph.py @@ -1,19 +1,18 @@ -from functools import partial import logging from abc import ABC, abstractmethod from concurrent.futures import ProcessPoolExecutor -from dataclasses import dataclass +from functools import lru_cache, partial from time import time from typing import Any, Dict, List, Optional, Set, Tuple import networkx as nx from google.protobuf.json_format import MessageToDict # type: ignore from tqdm import tqdm -from functools import lru_cache from automata.config import MAX_WORKERS from automata.core.singletons.py_module_loader import py_module_loader from automata.core.symbol.base import ( + ISymbolProvider, Symbol, SymbolDescriptor, SymbolReference, @@ -24,9 +23,7 @@ convert_to_fst_object, get_rankable_symbols, ) -from automata.core.embedding.base import EmbeddingHandler -from automata.core.utils import filter_multi_digraph_by_symbols, filter_digraph_by_symbols -from automata.core.symbol.base import ISymbolProvider +from automata.core.utils import filter_multi_digraph_by_symbols logger = logging.getLogger(__name__) @@ -513,6 +510,8 @@ def _build_rankable_subgraph( contains only rankable symbols. The nodes in the subgraph are rankable symbols, and the edges are the dependencies between them. + + TODO - Think of how to handle relationships here. """ G = nx.DiGraph() @@ -528,12 +527,12 @@ def _build_rankable_subgraph( logger.info("Building the rankable symbol subgraph...") for symbol in tqdm(filtered_symbols): try: - dependencies = self.get_symbol_dependencies(symbol) - relationships = self.get_symbol_relationships(symbol) - filtered_related_symbols = get_rankable_symbols( - list(dependencies.union(relationships)) - ) - for dependency in filtered_related_symbols: + dependencies = [ + ele + for ele in self.get_symbol_dependencies(symbol) + if ele in self.get_sorted_supported_symbols() + ] + for dependency in dependencies: if flow_rank == "to_dependents": G.add_edge(symbol, dependency) elif flow_rank == "from_dependents": @@ -550,6 +549,7 @@ def _build_rankable_subgraph( logger.error(f"Error processing {symbol.uri}: {e}") logger.info("Built the rankable symbol subgraph") + print("len(G) = ", len(G)) return G diff --git a/automata/core/symbol_embedding/base.py b/automata/core/symbol_embedding/base.py index d8ab3a84..0f1154af 100644 --- a/automata/core/symbol_embedding/base.py +++ b/automata/core/symbol_embedding/base.py @@ -1,17 +1,11 @@ import abc -from typing import Any, List, Optional, Set +from typing import Any, List, Optional import numpy as np from automata.core.base.database.vector import JSONVectorDatabase -from automata.core.embedding.base import ( - Embedding, - EmbeddingBuilder, - EmbeddingHandler, - EmbeddingVectorProvider, -) +from automata.core.embedding.base import Embedding, EmbeddingBuilder, EmbeddingHandler from automata.core.symbol.base import ISymbolProvider, Symbol -from automata.core.utils import is_sorted class SymbolEmbedding(Embedding): diff --git a/automata/core/tools/builders/context_oracle.py b/automata/core/tools/builders/context_oracle.py index 3cb9bf19..0fb46f56 100644 --- a/automata/core/tools/builders/context_oracle.py +++ b/automata/core/tools/builders/context_oracle.py @@ -5,12 +5,14 @@ from automata.config.base import LLMProvider from automata.core.agent.agent import AgentToolkitBuilder, AgentToolkitNames from automata.core.agent.providers import OpenAIAgentToolkitBuilder -from automata.core.llm.providers.openai import OpenAITool from automata.core.embedding.base import EmbeddingSimilarityCalculator -from automata.core.tools.base import Tool -from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry +from automata.core.llm.providers.openai import OpenAITool from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler +from automata.core.singletons.toolkit_registries import ( + OpenAIAutomataAgentToolkitRegistry, +) +from automata.core.tools.base import Tool logger = logging.getLogger(__name__) diff --git a/automata/core/tools/builders/py_reader.py b/automata/core/tools/builders/py_reader.py index 1d38b035..8f93e703 100644 --- a/automata/core/tools/builders/py_reader.py +++ b/automata/core/tools/builders/py_reader.py @@ -6,8 +6,10 @@ from automata.core.agent.providers import OpenAIAgentToolkitBuilder from automata.core.code_handling.py.reader import PyReader from automata.core.llm.providers.openai import OpenAITool +from automata.core.singletons.toolkit_registries import ( + OpenAIAutomataAgentToolkitRegistry, +) from automata.core.tools.base import Tool -from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry logger = logging.getLogger(__name__) diff --git a/automata/core/tools/builders/py_writer.py b/automata/core/tools/builders/py_writer.py index ecefe90e..dc75f1db 100644 --- a/automata/core/tools/builders/py_writer.py +++ b/automata/core/tools/builders/py_writer.py @@ -6,8 +6,10 @@ from automata.core.agent.providers import OpenAIAgentToolkitBuilder from automata.core.code_handling.py.writer import PyWriter from automata.core.llm.providers.openai import OpenAITool +from automata.core.singletons.toolkit_registries import ( + OpenAIAutomataAgentToolkitRegistry, +) from automata.core.tools.base import Tool -from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry logger = logging.getLogger(__name__) diff --git a/automata/core/tools/builders/symbol_search.py b/automata/core/tools/builders/symbol_search.py index a9ec9c67..a68a9f60 100644 --- a/automata/core/tools/builders/symbol_search.py +++ b/automata/core/tools/builders/symbol_search.py @@ -13,8 +13,10 @@ SymbolSearch, ) from automata.core.llm.providers.openai import OpenAITool +from automata.core.singletons.toolkit_registries import ( + OpenAIAutomataAgentToolkitRegistry, +) from automata.core.tools.base import Tool -from automata.core.singletons.toolkit_registries import OpenAIAutomataAgentToolkitRegistry class SearchTool(Enum): diff --git a/automata/core/utils.py b/automata/core/utils.py index 1a4b2984..2a222d8c 100644 --- a/automata/core/utils.py +++ b/automata/core/utils.py @@ -1,15 +1,16 @@ -from copy import deepcopy -import networkx as nx import json import logging import os -from typing import Any, Dict, List, Optional, TypedDict, Union, cast, Set -from automata.core.symbol.base import Symbol +from copy import deepcopy +from typing import Any, Dict, List, Optional, TypedDict, Union, cast import colorlog +import networkx as nx import openai import yaml +from automata.core.symbol.base import Symbol + def set_openai_api_key(override_key: Optional[str] = None) -> None: """Sets the OpenAI API key from the environment variable OPENAI_API_KEY""" diff --git a/automata/tests/conftest.py b/automata/tests/conftest.py index 2bd78c5b..7b4e1220 100644 --- a/automata/tests/conftest.py +++ b/automata/tests/conftest.py @@ -1,9 +1,9 @@ -import networkx as nx import os import random from typing import Any, Set from unittest.mock import MagicMock +import networkx as nx import numpy as np import pytest @@ -11,6 +11,7 @@ from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder from automata.core.agent.agent import AgentToolkitNames from automata.core.agent.providers import OpenAIAutomataAgent +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.experimental.search.rank import SymbolRankConfig from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.github_management.client import GitHubClient, RepositoryClient @@ -18,7 +19,6 @@ from automata.core.singletons.dependency_factory import dependency_factory from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.parser import parse_symbol -from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.tasks.agent_database import AutomataTaskRegistry from automata.core.tasks.environment import AutomataTaskEnvironment from automata.core.tasks.tasks import AutomataTask @@ -112,11 +112,7 @@ def mock_embedding(): @pytest.fixture def symbol_graph_mock(mocker): """Mock a SymbolGraph object for cases where we don't need to test the graph itself""" - mock = mocker.MagicMock(spec=SymbolGraph) - code_subgraph_mock = mocker.MagicMock(spec=nx.DiGraph) - mock.default_rankable_subgraph = mocker.MagicMock() - - return mock + return mocker.MagicMock(spec=SymbolGraph) @pytest.fixture diff --git a/automata/tests/unit/test_py_reader.py b/automata/tests/unit/test_py_reader.py index 9ab3e94c..5919487a 100644 --- a/automata/tests/unit/test_py_reader.py +++ b/automata/tests/unit/test_py_reader.py @@ -54,6 +54,7 @@ def test_get_code_module(getter): object_path = None result = getter.get_source_code_without_docstrings(module_name, object_path) expected_match = 'import math\n\n\ndef sample_function(name):\n return f"Hello, {name}! Sqrt(2) = " + str(math.sqrt(2))\n\n\nclass Person:\n\n def __init__(self, name):\n self.name = name\n\n def say_hello(self):\n return f"Hello, I am {self.name}."\n\n def run(self) -> str:\n return "run"\n\n\ndef f(x) -> int:\n return x + 1\n\n\nclass EmptyClass:\n pass\n\n\nclass OuterClass:\n class InnerClass:\n\n def inner_method(self):\n' + assert result.split("\n") == expected_match.split("\n") diff --git a/automata/tests/unit/test_symbol_embedding.py b/automata/tests/unit/test_symbol_embedding.py index 0544abae..ed05fc31 100644 --- a/automata/tests/unit/test_symbol_embedding.py +++ b/automata/tests/unit/test_symbol_embedding.py @@ -2,14 +2,13 @@ import numpy as np +from automata.core.embedding.base import EmbeddingBuilder from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.symbol_embedding.base import ( JSONSymbolEmbeddingVectorDatabase, SymbolCodeEmbedding, ) -from automata.core.embedding.base import EmbeddingBuilder - def test_update_embeddings( monkeypatch, diff --git a/automata/tests/unit/test_symbol_graph.py b/automata/tests/unit/test_symbol_graph.py index c103b2bc..8f9863ea 100644 --- a/automata/tests/unit/test_symbol_graph.py +++ b/automata/tests/unit/test_symbol_graph.py @@ -1,10 +1,10 @@ -from automata.core.symbol.graph import SymbolGraph -from automata.core.symbol.base import Symbol -from automata.tests.utils.factories import symbol_graph_static_test # noqa: F401 from automata.core.context_providers.symbol_synchronization import ( SymbolProviderSynchronizationContext, ) from automata.core.singletons.py_module_loader import py_module_loader +from automata.core.symbol.base import Symbol +from automata.core.symbol.graph import SymbolGraph +from automata.tests.utils.factories import symbol_graph_static_test # noqa: F401 def test_get_all_symbols(symbol_graph_static_test): # noqa: F811 @@ -39,6 +39,6 @@ def test_build_real_graph_and_subgraph(symbol_graph_static_test): # noqa: F811 # build the subgraph subgraph = symbol_graph_static_test.default_rankable_subgraph - assert len(subgraph) == 12 + assert len(subgraph) == 39 py_module_loader.initialized = False diff --git a/automata/tests/unit/test_symbol_search.py b/automata/tests/unit/test_symbol_search.py index 6add35db..9fdedd6b 100644 --- a/automata/tests/unit/test_symbol_search.py +++ b/automata/tests/unit/test_symbol_search.py @@ -1,4 +1,3 @@ -import networkx as nx from unittest.mock import patch import pytest diff --git a/automata/tests/unit/test_symbol_similarity.py b/automata/tests/unit/test_symbol_similarity.py index 7234b06c..83244c69 100644 --- a/automata/tests/unit/test_symbol_similarity.py +++ b/automata/tests/unit/test_symbol_similarity.py @@ -2,13 +2,16 @@ import numpy as np -from automata.core.embedding.base import EmbeddingVectorProvider +from automata.core.embedding.base import ( + EmbeddingBuilder, + EmbeddingSimilarityCalculator, + EmbeddingVectorProvider, +) from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler from automata.core.symbol_embedding.base import ( JSONSymbolEmbeddingVectorDatabase, SymbolCodeEmbedding, ) -from automata.core.embedding.base import EmbeddingSimilarityCalculator, EmbeddingBuilder def test_get_nearest_symbols_for_query( diff --git a/automata/tests/unit/test_synchronizer.py b/automata/tests/unit/test_synchronizer.py index b0c1a24a..d3512072 100644 --- a/automata/tests/unit/test_synchronizer.py +++ b/automata/tests/unit/test_synchronizer.py @@ -1,18 +1,19 @@ from copy import deepcopy +from unittest.mock import MagicMock + import networkx as nx -from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler import numpy as np -from automata.core.symbol_embedding.base import ( - SymbolCodeEmbedding, - JSONSymbolEmbeddingVectorDatabase, -) -from unittest.mock import MagicMock -from automata.core.embedding.base import EmbeddingBuilder from automata.core.context_providers.symbol_synchronization import ( SymbolProviderSynchronizationContext, ) -from automata.tests.utils.factories import symbol_graph_static_test # noqa: F401 +from automata.core.embedding.base import EmbeddingBuilder +from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler +from automata.core.symbol_embedding.base import ( + JSONSymbolEmbeddingVectorDatabase, + SymbolCodeEmbedding, +) +from automata.tests.utils.factories import symbol_graph_static_test # noqa: F811 def test_build_graph_and_handler_and_synchronize( @@ -50,7 +51,9 @@ def test_build_graph_and_handler_and_synchronize( symbol_graph_tester.navigator._graph = G with SymbolProviderSynchronizationContext() as synchronization_context: - from automata.core.context_providers.symbol_synchronization import SymbolProviderRegistry + from automata.core.context_providers.symbol_synchronization import ( + SymbolProviderRegistry, + ) SymbolProviderRegistry._providers = set([]) SymbolProviderRegistry.sorted_supported_symbols = [] diff --git a/automata/tests/utils/factories.py b/automata/tests/utils/factories.py index 4cf07315..74608ce5 100644 --- a/automata/tests/utils/factories.py +++ b/automata/tests/utils/factories.py @@ -3,6 +3,7 @@ import pytest from automata.config.base import ConfigCategory +from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.experimental.search.rank import SymbolRankConfig from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.llm.providers.openai import OpenAIEmbeddingProvider @@ -10,7 +11,6 @@ from automata.core.symbol.graph import SymbolGraph from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase from automata.core.symbol_embedding.builders import SymbolCodeEmbeddingBuilder -from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.utils import get_config_fpath From 0cc8e17eb22689787fe72715fc99e5bca7cfab0e Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 17:21:49 -0400 Subject: [PATCH 08/14] prep for merge --- automata/cli/scripts/run_doc_embedding_l2.py | 199 +----------------- .../symbol/symbol_doc_embedding_l2.json | 4 +- automata/core/experimental/search/rank.py | 2 - .../core/memory_store/symbol_doc_embedding.py | 3 +- .../core/singletons/dependency_factory.py | 71 +++---- 5 files changed, 42 insertions(+), 237 deletions(-) diff --git a/automata/cli/scripts/run_doc_embedding_l2.py b/automata/cli/scripts/run_doc_embedding_l2.py index ebbe76f6..8cf0587c 100644 --- a/automata/cli/scripts/run_doc_embedding_l2.py +++ b/automata/cli/scripts/run_doc_embedding_l2.py @@ -59,28 +59,11 @@ def main(*args, **kwargs) -> str: "symbol_doc_embedding_handler" ) - # print( - # "Length of symbol graph before synchronize: ", - # len(symbol_graph.get_sorted_supported_symbols()), - # ) - # print( - # "Length of symbol code embedding handler before synchronize: ", - # len(symbol_code_embedding_handler.get_ordered_embeddings()), - # ) - with SymbolProviderSynchronizationContext() as synchronization_context: synchronization_context.register_provider(symbol_graph) synchronization_context.register_provider(symbol_code_embedding_handler) synchronization_context.synchronize() - print( - "Length of symbol graph after synchronize: ", - len(symbol_graph.get_sorted_supported_symbols()), - ) - print( - "Length of symbol code embedding handler after synchronize: ", - len(symbol_code_embedding_handler.get_sorted_supported_symbols()), - ) # # Mock synchronization to allow us to build the initial doc embedding handler symbol_doc_embedding_handler.is_synchronized = True @@ -89,185 +72,13 @@ def main(*args, **kwargs) -> str: for symbol in tqdm(filtered_symbols): if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: - print("processing symbol = ", symbol) symbol_doc_embedding_handler.process_embedding(symbol) symbol_doc_embedding_handler.embedding_db.save() - # for symbol in symbol_doc_embedding_handler.get_sorted_supported_symbols(): - # if symbol not in filtered_symbols: - # logger.info(f"Discarding stale symbol {symbol}...") - # symbol_doc_embedding_handler.embedding_db.discard(symbol.dotpath) - # symbol_doc_embedding_handler.embedding_db.save() + for symbol in symbol_doc_embedding_handler.get_sorted_supported_symbols(): + if symbol not in filtered_symbols: + logger.info(f"Discarding stale symbol {symbol}...") + symbol_doc_embedding_handler.embedding_db.discard(symbol.dotpath) + symbol_doc_embedding_handler.embedding_db.save() return "Success" - - # # Mock synchronization to allow us to build the initial embedding handler - # symbol_graph.is_synchronized = True - # symbol_code_embedding_handler.is_synchronized = True - - # all_defined_symbols = symbol_graph.get_sorted_supported_symbols() - # filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - - # for symbol in tqdm(filtered_symbols): - # # try: - # symbol_code_embedding_handler.process_embedding(symbol) - # symbol_code_embedding_handler.embedding_db.save() - # except Exception as e: - # logger.error(f"Failed to update embedding for {symbol.dotpath}: {e}") - - # for symbol in symbol_code_embedding_handler.get_sorted_supported_symbols(): - # if symbol not in filtered_symbols: - # logger.info(f"Discarding stale symbol {symbol}...") - # symbol_code_embedding_handler.embedding_db.discard(symbol.dotpath) - # symbol_code_embedding_handler.embedding_db.save() - - -# def setup(**kwargs): -# embedding_provider = OpenAIEmbeddingProvider() -# chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) -# embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) - -# code_embedding_fpath = os.path.join( -# get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" -# ) -# code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) -# code_embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) -# code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, code_embedding_builder) - -# doc_embedding_path_l2 = os.path.join( -# get_config_fpath(), -# ConfigCategory.SYMBOL.value, -# kwargs.get("symbol_doc_embedding_l2_fpath", "symbol_doc_embedding_l2.json"), -# ) -# doc_embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(doc_embedding_path_l2) - -# scip_path = os.path.join( -# get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") -# ) -# symbol_graph = SymbolGraph(scip_path) -# symbol_search = SymbolSearch(symbol_graph, SymbolRankConfig(), embedding_similarity_calculator) -# py_context_retriever = PyContextRetriever(symbol_graph, PyContextRetrieverConfig()) - -# symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( -# embedding_provider, chat_provider, symbol_search, py_context_retriever -# ) - -# embedding_handler = SymbolDocEmbeddingHandler( -# doc_embedding_db_l2, symbol_doc_embedding_builder -# ) - -# # sync the symbol graph with the code embedding -# graph_symbols = symbol_graph.get_sorted_supported_symbols() -# embedding_symbols = code_embedding_handler.get_sorted_supported_symbols() -# sorted_supported_symbols = set(graph_symbols).intersection(set(embedding_symbols)) -# filter_digraph_by_symbols(symbol_graph.default_rankable_subgraph, sorted_supported_symbols) - -# return { -# "embedding_handler": embedding_handler, -# "doc_embedding_db_l2": doc_embedding_db_l2, -# "symbol_graph": symbol_graph, -# } - - -# def process_embeddings(embedding_handler, doc_embedding_db_l2, symbol_graph): -# all_defined_symbols = symbol_graph.get_sorted_supported_symbols() -# filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - -# for symbol in tqdm(filtered_symbols): -# if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: -# try: -# logger.info(f"Attempting update for symbol {symbol}...") -# embedding_handler.process_embedding(symbol) -# doc_embedding_db_l2.save() -# except Exception as e: -# logger.error(f"Failed to update embedding for symbol {symbol}: {e}") - - -# def discard_stale_symbols(embedding_handler, doc_embedding_db_l2, symbol_graph): -# all_defined_symbols = symbol_graph.get_sorted_supported_symbols() -# filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - -# for symbol in embedding_handler.get_sorted_supported_symbols(): -# if symbol not in filtered_symbols: -# logger.info(f"Discarding stale symbol {symbol}...") -# doc_embedding_db_l2.discard(symbol.dotpath) -# doc_embedding_db_l2.save() - - -# def main(*args, **kwargs) -> str: -# py_module_loader.initialize() - -# logger.info("Running....") - -# setup_data = setup(**kwargs) - -# process_embeddings( -# setup_data["embedding_handler"], -# setup_data["doc_embedding_db_l2"], -# setup_data["symbol_graph"], -# ) - - -# # def main(*args, **kwargs) -> str: -# # """ -# # Update the symbol code embedding based on the specified SCIP index file. -# # """ - -# # py_module_loader.initialize() - -# # logger.info("Running....") - -# # embedding_provider = OpenAIEmbeddingProvider() -# # chat_provider = OpenAIChatCompletionProvider(model=kwargs.get("model", "gpt-4")) -# # embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) - -# # code_embedding_fpath = os.path.join( -# # get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" -# # ) -# # code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) -# # code_embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) -# # code_embedding_handler = SymbolCodeEmbeddingHandler(code_embedding_db, code_embedding_builder) - -# # # TODO - Add option for the user to modify l2 embedding path in commands.py -# # doc_embedding_path_l2 = os.path.join( -# # get_config_fpath(), -# # ConfigCategory.SYMBOL.value, -# # kwargs.get("symbol_doc_embedding_l2_fpath", "symbol_doc_embedding_l2.json"), -# # ) -# # doc_embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(doc_embedding_path_l2) - -# # scip_path = os.path.join( -# # get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") -# # ) -# # symbol_graph = SymbolGraph(scip_path) -# # symbol_search = SymbolSearch(symbol_graph, SymbolRankConfig(), embedding_similarity_calculator) -# # py_context_retriever = PyContextRetriever(symbol_graph, PyContextRetrieverConfig()) - -# # symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( -# # embedding_provider, chat_provider, symbol_search, py_context_retriever -# # ) - -# # embedding_handler = SymbolDocEmbeddingHandler( -# # doc_embedding_db_l2, symbol_doc_embedding_builder -# # ) - -# # all_defined_symbols = symbol_graph.get_sorted_supported_symbols() -# # filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - -# # for symbol in tqdm(filtered_symbols): -# # if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: -# # try: -# # logger.info(f"Attempting update for symbol {symbol}...") -# # embedding_handler.process_embedding(symbol) -# # doc_embedding_db_l2.save() -# # except Exception as e: -# # logger.error(f"Failed to update embedding for symbol {symbol}: {e}") - -# # for symbol in embedding_handler.get_sorted_supported_symbols(): -# # if symbol not in filtered_symbols: -# # logger.info(f"Discarding stale symbol {symbol}...") -# # doc_embedding_db_l2.discard(symbol.dotpath) -# # doc_embedding_db_l2.save() - -# # logger.info("Complete.") -# # return "Success" diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index 2143a010..d2aca465 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10169c8fd91511788bddd51ab7577b64400a36f1872a4a49ce9ba42a7c591dc5 -size 5262511 +oid sha256:0a3cca5823cb079afcab931bb7141db48b91d2818e265dc782133096d83a9de1 +size 2943727 diff --git a/automata/core/experimental/search/rank.py b/automata/core/experimental/search/rank.py index d7d64502..e6150087 100644 --- a/automata/core/experimental/search/rank.py +++ b/automata/core/experimental/search/rank.py @@ -170,8 +170,6 @@ def _prepare_query_to_symbol_similarity( if query_to_symbol_similarity is None: return {k: 1.0 / node_count for k in stochastic_graph} missing = set(self.graph) - set(query_to_symbol_similarity) - print("len(self.graph) = ", len(self.graph)) - print("len(set(query_to_symbol_similarity)) = ", len(set(query_to_symbol_similarity))) if missing: raise NetworkXError( f"query_to_symbol_similarity dictionary must have a value for every node. Missing {len(missing)} nodes." diff --git a/automata/core/memory_store/symbol_doc_embedding.py b/automata/core/memory_store/symbol_doc_embedding.py index 8cf4d2cd..91c61e81 100644 --- a/automata/core/memory_store/symbol_doc_embedding.py +++ b/automata/core/memory_store/symbol_doc_embedding.py @@ -19,8 +19,7 @@ def __init__( embedding_db: JSONSymbolEmbeddingVectorDatabase, embedding_builder: SymbolDocEmbeddingBuilder, ) -> None: - self.embedding_db = embedding_db - self.embedding_builder = embedding_builder + super().__init__(embedding_db, embedding_builder) def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding: return self.embedding_db.get(symbol.dotpath) diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index 77778456..f8584077 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -136,14 +136,8 @@ def create_symbol_graph(self) -> SymbolGraph: @lru_cache() def create_subgraph(self) -> nx.DiGraph: - """ - Associated Keyword Args: - flow_rank ("bidirectional") - """ - symbol_graph = self.get("symbol_graph") - return symbol_graph.default_rankable_subgraph( - self.overrides.get("flow_rank", "bidirectional") - ) + symbol_graph: SymbolGraph = self.get("symbol_graph") + return symbol_graph.default_rankable_subgraph @lru_cache() def create_symbol_rank(self) -> SymbolRank: @@ -151,7 +145,7 @@ def create_symbol_rank(self) -> SymbolRank: Associated Keyword Args: symbol_rank_config (SymbolRankConfig()) """ - subgraph: nx.DiGraph = self.get("symbol_graph") + subgraph: nx.DiGraph = self.get("subgraph") return SymbolRank(subgraph, self.overrides.get("symbol_rank_config", SymbolRankConfig())) @lru_cache() @@ -161,26 +155,17 @@ def create_symbol_code_embedding_handler(self) -> SymbolCodeEmbeddingHandler: code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) embedding_provider (OpenAIEmbedding()) """ - print("loading db") - - print( - "from fpath = ", - self.overrides.get( - "code_embedding_fpath", DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH - ), - ) - code_embedding_db = JSONSymbolEmbeddingVectorDatabase( self.overrides.get( "code_embedding_fpath", DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH ) ) - print("db loaded") - embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) - print("embedding provider loaded") - - embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) - print("embedding builder loaded") + embedding_provider: OpenAIEmbeddingProvider = self.overrides.get( + "embedding_provider", OpenAIEmbeddingProvider() + ) + embedding_builder: SymbolCodeEmbeddingBuilder = SymbolCodeEmbeddingBuilder( + embedding_provider + ) return SymbolCodeEmbeddingHandler(code_embedding_db, embedding_builder) @@ -197,12 +182,14 @@ def create_symbol_doc_embedding_handler(self) -> SymbolDocEmbeddingHandler: "doc_embedding_fpath", DependencyFactory.DEFAULT_DOC_EMBEDDING_FPATH ) ) - embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) - llm_completion_provider = self.overrides.get( + embedding_provider: OpenAIEmbeddingProvider = self.overrides.get( + "embedding_provider", OpenAIEmbeddingProvider() + ) + llm_completion_provider: OpenAIChatCompletionProvider = self.overrides.get( "llm_completion_provider", OpenAIChatCompletionProvider() ) - symbol_search = self.get("symbol_search") - retriver = self.get("py_context_retriever") + symbol_search: SymbolSearch = self.get("symbol_search") + retriver: PyContextRetriever = self.get("py_context_retriever") embedding_builder = SymbolDocEmbeddingBuilder( embedding_provider, llm_completion_provider, symbol_search, retriver @@ -216,14 +203,21 @@ def create_symbol_search(self) -> SymbolSearch: Associated Keyword Args: symbol_rank_config (SymbolRankConfig()) """ - symbol_graph = self.get("symbol_graph") - symbol_rank_config = self.overrides.get("symbol_rank_config", SymbolRankConfig()) - symbol_code_embedding_handler = self.get("symbol_code_embedding_handler") - embedding_similarity_calculator = self.get("embedding_similarity_calculator") + symbol_graph: SymbolGraph = self.get("symbol_graph") + symbol_rank_config: SymbolRankConfig = self.overrides.get( + "symbol_rank_config", SymbolRankConfig() + ) + symbol_code_embedding_handler: SymbolCodeEmbeddingBuilder = self.get( + "symbol_code_embedding_handler" + ) + embedding_similarity_calculator: EmbeddingSimilarityCalculator = self.get( + "embedding_similarity_calculator" + ) return SymbolSearch( symbol_graph, symbol_rank_config, - symbol_code_embedding_handler, + # FIXME - Fix this type ignore + symbol_code_embedding_handler, # type: ignore embedding_similarity_calculator, ) @@ -233,8 +227,8 @@ def create_py_context_retriever(self) -> PyContextRetriever: Associated Keyword Args: py_context_retriever_config (PyContextRetrieverConfig()) """ - symbol_graph = self.get("symbol_graph") - py_context_retriever_config = self.overrides.get( + symbol_graph: SymbolGraph = self.get("symbol_graph") + py_context_retriever_config: PyContextRetrieverConfig = self.overrides.get( "py_context_retriever_config", PyContextRetrieverConfig() ) return PyContextRetriever(symbol_graph, py_context_retriever_config) @@ -245,7 +239,9 @@ def create_embedding_similarity_calculator(self) -> EmbeddingSimilarityCalculato Associated Keyword Args: embedding_provider (OpenAIEmbedding()) """ - embedding_provider = self.overrides.get("embedding_provider", OpenAIEmbeddingProvider()) + embedding_provider: OpenAIEmbeddingProvider = self.overrides.get( + "embedding_provider", OpenAIEmbeddingProvider() + ) return EmbeddingSimilarityCalculator(embedding_provider) @lru_cache() @@ -254,7 +250,8 @@ def create_py_reader(self) -> PyReader: @lru_cache() def create_py_writer(self) -> PyWriter: - return PyWriter(self.get("py_reader")) + py_reader: PyReader = self.get("py_reader") + return PyWriter(py_reader) dependency_factory = DependencyFactory() From f67139729b3c69978dfc1950e9505674d08cd05f Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 23:26:22 -0400 Subject: [PATCH 09/14] prep for merge --- .setup.sh.example | 10 +- README.md | 10 +- automata/cli/commands.py | 45 +--- automata/cli/scripts/run_doc_embedding_l2.py | 84 ------- automata/cli/scripts/run_doc_embedding_l3.py | 110 --------- automata/config/symbol/index.scip | Bin 2354098 -> 2358800 bytes .../config/symbol/symbol_code_embedding.json | 4 +- .../symbol/symbol_doc_embedding_l2.json | 4 +- .../symbol/symbol_doc_embedding_l3.json | 4 +- .../core/memory_store/symbol_doc_embedding.py | 2 +- automata/core/retrievers/py/context.py | 2 + .../core/singletons/dependency_factory.py | 8 +- automata/core/symbol/graph.py | 2 - automata/core/symbol_embedding/base.py | 2 +- automata/notebooks/demo_symbol_search.ipynb | 224 +++--------------- 15 files changed, 62 insertions(+), 449 deletions(-) delete mode 100644 automata/cli/scripts/run_doc_embedding_l2.py delete mode 100644 automata/cli/scripts/run_doc_embedding_l3.py diff --git a/.setup.sh.example b/.setup.sh.example index 0fa9607d..5aa87048 100644 --- a/.setup.sh.example +++ b/.setup.sh.example @@ -1,9 +1,5 @@ ## NOTE - the code below is contained in setup.sh.example -# Clone the repository -git clone git@github.com:emrgnt-cmplxty/Automata.git -cd Automata - # Create the local environment python3 -m venv local_env source local_env/bin/activate @@ -16,8 +12,8 @@ pre-commit install # Set up .env cp .env.example .env -OPEN_API_KEY=your_openai_api_key_here -GITHUB_API_KEY=your_github_api_key +OPEN_API_KEY='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' +GITHUB_API_KEY='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' CONVERSATION_DB_PATH="$PWD/conversation_db.sqlite3" TASK_DB_PATH="$PWD/task_db.sqlite3" TASKS_OUTPUT_PATH="$PWD/tasks" @@ -45,4 +41,4 @@ git submodule update --init --recursive ### ### Then, initialize by running the following: ## git lfs install -## git lfs pull \ No newline at end of file +## git lfs pull diff --git a/README.md b/README.md index 6ea9df8a..b6f0235a 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,9 @@ https://github.com/emrgnt-cmplxty/Automata/assets/68796651/2e1ceb8c-ac93-432b-af Follow these steps to setup the Automata environment ```bash +# Clone the repository +git clone git@github.com:emrgnt-cmplxty/Automata.git && cd Automata + # Copy the env and setup files cp .setup.sh.example setup.sh && cp .env.example .env @@ -43,7 +46,6 @@ chmod 755 setup.sh # Update the setup and env files with your local paths vim setup.sh -vim .env # Run the setup script ./setup.sh @@ -68,10 +70,10 @@ automata run-code-embedding # "L1" docs are the docstrings written into the code # "L2" docs are generated from the L1 docs + symbol context -automata run-doc-embedding-l2 +automata run-doc-embedding --embedding-level 2 # "L3" docs are generated from the L2 docs + symbol context -automata run-doc-embedding-l3 +automata run-doc-embedding --embedding-level 3 ``` ### Run the system @@ -105,7 +107,7 @@ from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder from automata.core.agent.providers import OpenAIAutomataAgent from automata.core.tools.tool_utils import AgentToolFactory from automata.core.singletons.dependency_factory import dependency_factory -from automata.core.singletons.py_module_loader import py_module_loader +from automata.core.singletons.module_loader import py_module_loader logger = logging.getLogger(__name__) diff --git a/automata/cli/commands.py b/automata/cli/commands.py index 7e74d66f..aa35b32b 100644 --- a/automata/cli/commands.py +++ b/automata/cli/commands.py @@ -47,25 +47,15 @@ def run_code_embedding(ctx, *args, **kwargs) -> None: @common_options @cli.command() @click.pass_context -def run_doc_embedding_l2(ctx, *args, **kwargs) -> None: - """Run the document embedding Level-2 pipeline.""" - from automata.cli.scripts.run_doc_embedding_l2 import main +@click.option("--embedding-level", type=int, default=2, help="Level of the embedding.") +def run_doc_embedding(ctx, *args, **kwargs) -> None: + from automata.cli.scripts.run_doc_embedding import main + """Run the document embedding pipeline.""" reconfigure_logging(kwargs.get("log-level", "DEBUG")) - logger.info("Calling run_doc_embedding_l2") - main(**kwargs) - - -@common_options -@cli.command() -@click.pass_context -def run_doc_embedding_l3(ctx, *args, **kwargs) -> None: - """Run the document embedding Level-3 pipeline.""" - from automata.cli.scripts.run_doc_embedding_l3 import main - - reconfigure_logging(kwargs.get("log-level", "DEBUG")) - logger.info("Calling run_doc_embedding_l3") - main(**kwargs) + logger.info("Calling run_doc_embedding") + result = main(*args, **kwargs) + logger.info(f"Result = {result}") @common_options @@ -92,24 +82,3 @@ def run_agent(ctx, *args, **kwargs) -> None: reconfigure_logging(kwargs.get("log-level", "DEBUG")) logger.info("Running agent") main(**kwargs) - - -@common_options -@agent_options -@cli.command() -@click.option("--fetch-issues", default="", help="Comma-separated list of issue numbers to fetch") -@click.pass_context -def run_agent_task(ctx, *args, **kwargs) -> None: - """ - Run an agent task. - - Note - This is similar to run_agent, but executes the agent - within the task framework. This allows for more flexibility - across multiple tasks. - - """ - from automata.cli.scripts.run_agent_task import main - - reconfigure_logging(kwargs.get("log-level", "DEBUG")) - logger.info("Running the task") - main(**kwargs) diff --git a/automata/cli/scripts/run_doc_embedding_l2.py b/automata/cli/scripts/run_doc_embedding_l2.py deleted file mode 100644 index 8cf0587c..00000000 --- a/automata/cli/scripts/run_doc_embedding_l2.py +++ /dev/null @@ -1,84 +0,0 @@ -import logging -import os - -from tqdm import tqdm - -from automata.config.base import ConfigCategory -from automata.core.context_providers.symbol_synchronization import ( - SymbolProviderSynchronizationContext, -) -from automata.core.llm.providers.openai import OpenAIEmbeddingProvider -from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler -from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler -from automata.core.singletons.dependency_factory import dependency_factory -from automata.core.singletons.py_module_loader import py_module_loader -from automata.core.symbol.base import SymbolDescriptor -from automata.core.symbol.graph import SymbolGraph -from automata.core.symbol.symbol_utils import get_rankable_symbols -from automata.core.utils import get_config_fpath - -logger = logging.getLogger(__name__) - - -def main(*args, **kwargs) -> str: - """ - Update the symbol code embedding based on the specified SCIP index file. - """ - - py_module_loader.initialize() - - scip_fpath = os.path.join( - get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") - ) - code_embedding_fpath = os.path.join( - get_config_fpath(), - ConfigCategory.SYMBOL.value, - kwargs.get("code-embedding-file", "symbol_code_embedding.json"), - ) - doc_embedding_fpath = os.path.join( - get_config_fpath(), - ConfigCategory.SYMBOL.value, - kwargs.get("doc-embedding-file", "symbol_doc_embedding_l2.json"), - ) - embedding_provider = OpenAIEmbeddingProvider() - - dependency_factory.set_overrides( - **{ - "symbol_graph_scip_fpath": scip_fpath, - "code_embedding_fpath": code_embedding_fpath, - "doc_embedding_fpath": doc_embedding_fpath, - "embedding_provider": embedding_provider, - } - ) - - symbol_graph: SymbolGraph = dependency_factory.get("symbol_graph") - symbol_code_embedding_handler: SymbolCodeEmbeddingHandler = dependency_factory.get( - "symbol_code_embedding_handler" - ) - symbol_doc_embedding_handler: SymbolDocEmbeddingHandler = dependency_factory.get( - "symbol_doc_embedding_handler" - ) - - with SymbolProviderSynchronizationContext() as synchronization_context: - synchronization_context.register_provider(symbol_graph) - synchronization_context.register_provider(symbol_code_embedding_handler) - synchronization_context.synchronize() - - # # Mock synchronization to allow us to build the initial doc embedding handler - symbol_doc_embedding_handler.is_synchronized = True - - all_defined_symbols = symbol_graph.get_sorted_supported_symbols() - filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - - for symbol in tqdm(filtered_symbols): - if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: - symbol_doc_embedding_handler.process_embedding(symbol) - symbol_doc_embedding_handler.embedding_db.save() - - for symbol in symbol_doc_embedding_handler.get_sorted_supported_symbols(): - if symbol not in filtered_symbols: - logger.info(f"Discarding stale symbol {symbol}...") - symbol_doc_embedding_handler.embedding_db.discard(symbol.dotpath) - symbol_doc_embedding_handler.embedding_db.save() - - return "Success" diff --git a/automata/cli/scripts/run_doc_embedding_l3.py b/automata/cli/scripts/run_doc_embedding_l3.py deleted file mode 100644 index 7a9cef97..00000000 --- a/automata/cli/scripts/run_doc_embedding_l3.py +++ /dev/null @@ -1,110 +0,0 @@ -import logging -import os - -from tqdm import tqdm - -from automata.config.base import ConfigCategory -from automata.core.embedding.base import EmbeddingSimilarityCalculator -from automata.core.experimental.search.rank import SymbolRankConfig -from automata.core.experimental.search.symbol_search import SymbolSearch -from automata.core.llm.providers.openai import ( - OpenAIChatCompletionProvider, - OpenAIEmbeddingProvider, -) -from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler -from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler -from automata.core.retrievers.py.context import ( - PyContextRetriever, - PyContextRetrieverConfig, -) -from automata.core.singletons.py_module_loader import py_module_loader -from automata.core.symbol.base import SymbolDescriptor -from automata.core.symbol.graph import SymbolGraph -from automata.core.symbol.symbol_utils import get_rankable_symbols -from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase -from automata.core.symbol_embedding.builders import ( - SymbolCodeEmbeddingBuilder, - SymbolDocEmbeddingBuilder, -) -from automata.core.utils import get_config_fpath - -logger = logging.getLogger(__name__) - - -def main(*args, **kwargs) -> str: - """ - Update the symbol code embedding based on the specified SCIP index file. - """ - py_module_loader.initialize() - - logger.info("Running....") - scip_path = os.path.join( - get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") - ) - - code_embedding_fpath = os.path.join( - get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_code_embedding.json" - ) - code_embedding_db = JSONSymbolEmbeddingVectorDatabase(code_embedding_fpath) - embedding_provider = OpenAIEmbeddingProvider() - embedding_builder = SymbolCodeEmbeddingBuilder(embedding_provider) - symbol_code_embedding_handler = SymbolCodeEmbeddingHandler( - code_embedding_db, embedding_builder - ) - - # TODO - Add option for the user to modify l2 & l3 embedding path in commands.py - embedding_path_l2 = os.path.join( - get_config_fpath(), - ConfigCategory.SYMBOL.value, - kwargs.get("symbol_doc_embedding_l2_fpath", "symbol_doc_embedding_l2.json"), - ) - embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(embedding_path_l2) - - embedding_path_l3 = os.path.join( - get_config_fpath(), - ConfigCategory.SYMBOL.value, - kwargs.get("symbol_doc_embedding_l3_fpath", "symbol_doc_embedding_l3.json"), - ) - - symbol_graph = SymbolGraph(scip_path) - - embedding_db_l3 = JSONSymbolEmbeddingVectorDatabase(embedding_path_l3) - - embedding_similarity_calculator = EmbeddingSimilarityCalculator(embedding_provider) - - symbol_rank_config = SymbolRankConfig() - symbol_search = SymbolSearch( - symbol_graph, - symbol_rank_config, - symbol_code_embedding_handler, - embedding_similarity_calculator, - ) - py_context_retriever = PyContextRetriever( - symbol_graph, PyContextRetrieverConfig(), embedding_db_l2 - ) - chat_provider = OpenAIChatCompletionProvider() - - symbol_doc_embedding_builder = SymbolDocEmbeddingBuilder( - embedding_provider, chat_provider, symbol_search, py_context_retriever - ) - - embedding_handler = SymbolDocEmbeddingHandler(embedding_db_l3, symbol_doc_embedding_builder) - - all_defined_symbols = symbol_graph.get_sorted_supported_symbols() - filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) - for symbol in tqdm(filtered_symbols): - if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: - try: - embedding_handler.process_embedding(symbol) - embedding_db_l3.save() - except Exception as e: - logger.error(f"Error updating embedding for {symbol.dotpath}: {e}") - - for symbol in embedding_handler.get_sorted_supported_symbols(): - if symbol not in filtered_symbols: - logger.info(f"Discarding stale symbol {symbol}...") - embedding_db_l3.discard(symbol.dotpath) - embedding_db_l3.save() - - logger.info("Complete.") - return "Success" diff --git a/automata/config/symbol/index.scip b/automata/config/symbol/index.scip index 5e067e7113825109f20c4555a86476379542afff..b4b4f7a6754169f2c44ff83694625ad4e0982397 100644 GIT binary patch literal 2358800 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

ksH4x;d=dm2iR47{CpvkwATKT^vFKz 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 literal 2354098 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�{ zp;;8`7GdWQ#XEa8Z(DE(jr3jwBFaO*z)d{quY4A8?Fw~h4a!-s$0RR;%g&$8jBzrI zIZ09E#oz>PS6BB!PvAntu)BKt=f|*=o=aVAz;n9>Mw-oYyGHL=Fwf!4JGdLc$q#yG zJQUFu_2B99#~6>|qT3=P=!IbPab~Kxk-Qk`EQxa$GC($t5ZYM+S%t%3; z1Ooh}Ah>0A(ujI$nV}RsdTW?t%!}lW7lFW2=nH2fZ~zFTCx`+_l!mmo;>nKTrRpOp zawei8!ez&|cytT7lW3wdmYGC8A+ASAAYX;;YJ)UrQ~6cMeeoNWQ5Plnstr-?hIgt0 zm(w_vg_@9tW{7C}s@^*UBKx6@Nw>Y~@HzkLHU{+RknEy1WK;iidx!6+{~JK&>CO|{ zCwxHt>IR_PQ)iZ~6Ra=*RseIH*&v(E5_6DIduG?MmN04={C7LLVA$r9yM3q&J^{Sm zZR~@t@+=x9rG&6Ogf+>zgDj-GN00c>LgI8jc8}oPA9V1^tQoUHqp2OLVOYy^3Kfh|-e2p{cnm(JZUzT3lJddkmxAx&Dc)VJ)3rmk;s;!m%97p zOY{gMy>`uJ@sd5#YquEkC9=xMpM9NAIrw#c;^5c$ii1Jh*Xuh4ZEY5OeYjiF)@Fdq z`Y!R3%_Wz2_ZGbb#<|=-Bp(T$xD09OH}99E+U461`$MYHVdmu{r#%d~*iy}%Y|A$N zeJf?e%HH(%!BiFE!)A>8*K84tv5(7&`;9*FWS9$-`}>EBJ|kH%wq=_y`C_ai><_*m zZ8sK)`bgVBR*VfC7qlgZ277+ c+S#iNO3E94^zg26nW(AF+kOVWtzHp&rgM`}Xv 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

Gr&9!&QS<-<4AT@K{ecpi7a1G`N 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 bQR!q;;fx`emr;%g@1ux@v+E None: raise ValueError(f"Symbol {symbol} has no source code") if self.embedding_db.contains(symbol.dotpath): - # self.update_existing_embedding(source_code, symbol) + self.update_existing_embedding(source_code, symbol) return # else: symbol_embedding = self.embedding_builder.build(source_code, symbol) diff --git a/automata/core/retrievers/py/context.py b/automata/core/retrievers/py/context.py index 055d74b0..f5a5db90 100644 --- a/automata/core/retrievers/py/context.py +++ b/automata/core/retrievers/py/context.py @@ -201,11 +201,13 @@ def process_documentation(self, symbol: Symbol, is_main_symbol: bool) -> None: Process the documentation of a symbol, providing a summary or the entire source code depending on whether the symbol is the main symbol or not. """ + if self.doc_embedding_db is not None and self.doc_embedding_db.contains(symbol.dotpath): if is_main_symbol: document = self.doc_embedding_db.get(symbol.dotpath).input_object else: document = self.doc_embedding_db.get(symbol.dotpath).summary + self.process_message("Class Document:") with self.IndentManager(): self.process_message(document) self.process_message("") # Add an empty line for separation diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index f8584077..1f2cb522 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -63,6 +63,7 @@ def __init__(self, **kwargs) -> None: py_context_retriever_config (PyContextRetrieverConfig()) coding_project_path (get_root_py_fpath()) llm_completion_provider (OpenAIChatCompletionProvider()) + py_retriever_doc_embedding_db (None) } """ self._instances: Dict[str, Any] = {} @@ -226,12 +227,17 @@ def create_py_context_retriever(self) -> PyContextRetriever: """ Associated Keyword Args: py_context_retriever_config (PyContextRetrieverConfig()) + py_retriever_doc_embedding_db (None) """ symbol_graph: SymbolGraph = self.get("symbol_graph") py_context_retriever_config: PyContextRetrieverConfig = self.overrides.get( "py_context_retriever_config", PyContextRetrieverConfig() ) - return PyContextRetriever(symbol_graph, py_context_retriever_config) + return PyContextRetriever( + symbol_graph, + py_context_retriever_config, + self.overrides.get("py_retriever_doc_embedding_db"), + ) @lru_cache() def create_embedding_similarity_calculator(self) -> EmbeddingSimilarityCalculator: diff --git a/automata/core/symbol/graph.py b/automata/core/symbol/graph.py index 2186a63f..76353abb 100644 --- a/automata/core/symbol/graph.py +++ b/automata/core/symbol/graph.py @@ -549,8 +549,6 @@ def _build_rankable_subgraph( logger.error(f"Error processing {symbol.uri}: {e}") logger.info("Built the rankable symbol subgraph") - print("len(G) = ", len(G)) - return G # ISymbolProvider methods diff --git a/automata/core/symbol_embedding/base.py b/automata/core/symbol_embedding/base.py index 0f1154af..e7b8cd92 100644 --- a/automata/core/symbol_embedding/base.py +++ b/automata/core/symbol_embedding/base.py @@ -60,7 +60,7 @@ def __str__(self) -> str: return f"SymbolDocEmbedding(\nsymbol={self.symbol},\n\nembedding_source={self.input_object}\n\nvector_length={len(self.vector)}\n\nsource_code={self.source_code}\n\nsummary={self.summary}\n\ncontext={self.context}\n)" -class JSONSymbolEmbeddingVectorDatabase(JSONVectorDatabase): +class JSONSymbolEmbeddingVectorDatabase(JSONVectorDatabase[SymbolEmbedding, str]): """Concrete class to provide a vector database that saves into a JSON file.""" def __init__(self, file_path: str): diff --git a/automata/notebooks/demo_symbol_search.ipynb b/automata/notebooks/demo_symbol_search.ipynb index 4c16969e..a0987281 100644 --- a/automata/notebooks/demo_symbol_search.ipynb +++ b/automata/notebooks/demo_symbol_search.ipynb @@ -5,7 +5,19 @@ "execution_count": 1, "id": "659850e4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'automata.core.agent.tool'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 5\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Any, Set\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mconfig\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m AgentConfigName\n\u001b[0;32m----> 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01magent\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtool\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtool_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DependencyFactory\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcoding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodule_loader\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m py_module_loader\n\u001b[1;32m 9\u001b[0m logger \u001b[38;5;241m=\u001b[39m logging\u001b[38;5;241m.\u001b[39mgetLogger(\u001b[38;5;18m__name__\u001b[39m)\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'automata.core.agent.tool'" + ] + } + ], "source": [ "import logging\n", "from typing import Any, Set\n", @@ -22,185 +34,19 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "9389cb3f", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.cli.scripts.run_agent_task`/main().: Module descriptor automata.cli.scripts.run_agent_task not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#run().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.cli.scripts.run_agent_task`/process_issues().: Module descriptor automata.cli.scripts.run_agent_task not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#dotpath().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#symbol_kind_by_suffix().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#PyKind#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#__init__().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#__iter__().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#__next__().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#tools().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#functions().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#set_database_provider().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#_build_initial_messages().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.agents`/AutomataOpenAIAgent#_get_next_user_response().: Module descriptor automata.core.agent.agents not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgent#__init__().: Method descriptor found without module or class descriptor\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgent#_get_termination_tool().: Method descriptor found without module or class descriptor\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgent#: Symbol Symbol(scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgent#, scip-python, Package(python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd), (Descriptor(automata.core.llm.providers.openai, 1), Descriptor(OpenAIAgent, 2))) not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.instances`/AutomataOpenAIAgentInstance#: Symbol Symbol(scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.instances`/AutomataOpenAIAgentInstance#, scip-python, Package(python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd), (Descriptor(automata.core.agent.instances, 1), Descriptor(AutomataOpenAIAgentInstance, 2))) not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.instances`/AutomataOpenAIAgentInstance#run().: Method descriptor found without module or class descriptor\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.agent.instances`/AutomataOpenAIAgentInstance#Config#: Class descriptor found without module descriptor\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgentToolBuilder#: Symbol Symbol(scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgentToolBuilder#, scip-python, Package(python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd), (Descriptor(automata.core.llm.providers.openai, 1), Descriptor(OpenAIAgentToolBuilder, 2))) not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgentToolBuilder#can_handle().: Method descriptor found without module or class descriptor\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgentToolBuilder#build_for_open_ai().: Method descriptor found without module or class descriptor\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolEmbedding#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDocEmbedding#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolCodeEmbedding#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.embedding.symbol_similarity`/SymbolSimilarityCalculator#ordered_embeddings().: Symbol Symbol(scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.embedding.symbol_similarity`/SymbolSimilarityCalculator#ordered_embeddings()., scip-python, Package(python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd), (Descriptor(automata.core.embedding.symbol_similarity, 1), Descriptor(SymbolSimilarityCalculator, 2), Descriptor(ordered_embeddings, 4))) not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgent#terminate().: Method descriptor found without module or class descriptor\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.llm.providers.openai`/OpenAIAgent#_get_available_functions().: Method descriptor found without module or class descriptor\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolFile#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolReference#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolPackage#: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#__init__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#__repr__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#unparse().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#get_escaped_name().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#is_simple_identifier().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDescriptor#convert_scip_to_python_suffix().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolPackage#__repr__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolPackage#unparse().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#__repr__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#__hash__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#__eq__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#symbol_raw_kind_by_suffix().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#parent().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#module_name().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#is_local().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#is_meta().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#is_parameter().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#is_protobuf().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/Symbol#from_string().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolReference#__hash__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolReference#__eq__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolFile#__hash__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolFile#__eq__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolEmbedding#__init__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolEmbedding#__str__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolCodeEmbedding#__init__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolCodeEmbedding#__str__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDocEmbedding#__init__().: Module descriptor automata.core.symbol.symbol_types not found\n", - "Error computing bounding box for scip-python python automata 7d8b52f4284df1ae476fe618b0c221c7ee14a7fd `automata.core.symbol.symbol_types`/SymbolDocEmbedding#__str__().: Module descriptor automata.core.symbol.symbol_types not found\n", - " 0%| | 0/783 [00:00 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe intersection of the symbol_graph and the embedding \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(available_symbols)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m symbols\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[0;31mNameError\u001b[0m: name 'available_symbols' is not defined" ] } ], From ea20985589586cc74083a74ff85ad45c1b6a25ea Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 23:49:45 -0400 Subject: [PATCH 10/14] update demo symbol search --- automata/cli/scripts/run_doc_embedding.py | 96 +++++++++++++++++ automata/core/embedding/base.py | 4 +- automata/core/llm/providers/openai.py | 1 + automata/notebooks/demo_symbol_search.ipynb | 114 +++++++++----------- 4 files changed, 147 insertions(+), 68 deletions(-) create mode 100644 automata/cli/scripts/run_doc_embedding.py diff --git a/automata/cli/scripts/run_doc_embedding.py b/automata/cli/scripts/run_doc_embedding.py new file mode 100644 index 00000000..db955a5b --- /dev/null +++ b/automata/cli/scripts/run_doc_embedding.py @@ -0,0 +1,96 @@ +import logging +import os + +from tqdm import tqdm + +from automata.config.base import ConfigCategory +from automata.core.context_providers.symbol_synchronization import ( + SymbolProviderSynchronizationContext, +) +from automata.core.llm.providers.openai import OpenAIEmbeddingProvider +from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler +from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler +from automata.core.singletons.dependency_factory import dependency_factory +from automata.core.singletons.py_module_loader import py_module_loader +from automata.core.symbol.base import SymbolDescriptor +from automata.core.symbol.graph import SymbolGraph +from automata.core.symbol.symbol_utils import get_rankable_symbols +from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase +from automata.core.utils import get_config_fpath + +logger = logging.getLogger(__name__) + + +def initialize_providers(embedding_level, **kwargs): + py_module_loader.initialize() + + scip_fpath = os.path.join( + get_config_fpath(), ConfigCategory.SYMBOL.value, kwargs.get("index-file", "index.scip") + ) + code_embedding_fpath = os.path.join( + get_config_fpath(), + ConfigCategory.SYMBOL.value, + kwargs.get("code-embedding-file", "symbol_code_embedding.json"), + ) + doc_embedding_fpath = os.path.join( + get_config_fpath(), + ConfigCategory.SYMBOL.value, + kwargs.get("doc-embedding-file", f"symbol_doc_embedding_l{embedding_level}.json"), + ) + + embedding_provider = OpenAIEmbeddingProvider() + + overrides = { + "symbol_graph_scip_fpath": scip_fpath, + "code_embedding_fpath": code_embedding_fpath, + "doc_embedding_fpath": doc_embedding_fpath, + "embedding_provider": embedding_provider, + } + + if embedding_level == 3: + doc_embedding_fpath_l2 = os.path.join( + get_config_fpath(), + ConfigCategory.SYMBOL.value, + kwargs.get("doc-embedding-file", "symbol_doc_embedding_l2.json"), + ) + doc_embedding_db_l2 = JSONSymbolEmbeddingVectorDatabase(doc_embedding_fpath_l2) + overrides["py_retriever_doc_embedding_db"] = doc_embedding_db_l2 + + dependency_factory.set_overrides(**overrides) + + symbol_graph: SymbolGraph = dependency_factory.get("symbol_graph") + symbol_code_embedding_handler: SymbolCodeEmbeddingHandler = dependency_factory.get( + "symbol_code_embedding_handler" + ) + symbol_doc_embedding_handler: SymbolDocEmbeddingHandler = dependency_factory.get( + "symbol_doc_embedding_handler" + ) + + with SymbolProviderSynchronizationContext() as synchronization_context: + synchronization_context.register_provider(symbol_graph) + synchronization_context.register_provider(symbol_code_embedding_handler) + synchronization_context.synchronize() + + symbol_doc_embedding_handler.is_synchronized = True + + all_defined_symbols = symbol_graph.get_sorted_supported_symbols() + filtered_symbols = sorted(get_rankable_symbols(all_defined_symbols), key=lambda x: x.dotpath) + + return symbol_doc_embedding_handler, filtered_symbols + + +def main(*args, **kwargs) -> str: + """ + Update the symbol code embedding based on the specified SCIP index file. + """ + + symbol_doc_embedding_handler, filtered_symbols = initialize_providers(**kwargs) + + logger.info("Looping over filtered symbols...") + for symbol in tqdm(filtered_symbols): + if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: + logger.info(f"Caching embedding for {symbol}") + symbol_doc_embedding_handler.process_embedding(symbol) + symbol_doc_embedding_handler.embedding_db.save() + + return "Success" diff --git a/automata/core/embedding/base.py b/automata/core/embedding/base.py index 74385b9e..9cc9c712 100644 --- a/automata/core/embedding/base.py +++ b/automata/core/embedding/base.py @@ -103,10 +103,10 @@ def calculate_query_similarity_dict( of the query embedding and the symbol embeddings. Return result is sorted in descending order by default. """ - query_embedding_array = self.embedding_provider.build_embedding_vector(query_text) + query_embedding_vector = self.embedding_provider.build_embedding_vector(query_text) # Compute the similarity of the query to all symbols similarity_scores = self._calculate_embedding_similarity( - np.array([ele.vector for ele in ordered_embeddings]), query_embedding_array + np.array([ele.vector for ele in ordered_embeddings]), query_embedding_vector ) similarity_dict = { diff --git a/automata/core/llm/providers/openai.py b/automata/core/llm/providers/openai.py index 4e86c642..216a3f90 100644 --- a/automata/core/llm/providers/openai.py +++ b/automata/core/llm/providers/openai.py @@ -380,6 +380,7 @@ def build_embedding_vector(self, source: str) -> np.ndarray: # wait to import build_embedding_vector to allow easy mocking of the function in tests. from openai.embeddings_utils import get_embedding + print("trying to build embedding vector for souce = ", source) return np.array(get_embedding(source, engine=self.engine)) diff --git a/automata/notebooks/demo_symbol_search.ipynb b/automata/notebooks/demo_symbol_search.ipynb index a0987281..83154e62 100644 --- a/automata/notebooks/demo_symbol_search.ipynb +++ b/automata/notebooks/demo_symbol_search.ipynb @@ -5,27 +5,17 @@ "execution_count": 1, "id": "659850e4", "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'automata.core.agent.tool'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 5\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Any, Set\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mconfig\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m AgentConfigName\n\u001b[0;32m----> 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01magent\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtool\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtool_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DependencyFactory\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcoding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodule_loader\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m py_module_loader\n\u001b[1;32m 9\u001b[0m logger \u001b[38;5;241m=\u001b[39m logging\u001b[38;5;241m.\u001b[39mgetLogger(\u001b[38;5;18m__name__\u001b[39m)\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'automata.core.agent.tool'" - ] - } - ], + "outputs": [], "source": [ "import logging\n", "from typing import Any, Set\n", "\n", "from automata.config.base import AgentConfigName\n", - "from automata.core.agent.tool.tool_utils import DependencyFactory\n", - "from automata.core.coding.py.module_loader import py_module_loader\n", - "\n", + "from automata.core.singletons.dependency_factory import dependency_factory\n", + "from automata.core.singletons.py_module_loader import py_module_loader\n", + "from automata.core.context_providers.symbol_synchronization import (\n", + " SymbolProviderSynchronizationContext,\n", + ")\n", " \n", "logger = logging.getLogger(__name__)\n", "\n", @@ -34,63 +24,80 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "9389cb3f", "metadata": { "scrolled": true }, "outputs": [], "source": [ - "symbol_search = DependencyFactory().get('symbol_search')" + "symbol_search = dependency_factory.get('symbol_search')" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "ddea41cb", "metadata": {}, "outputs": [], "source": [ - "graph_symbols = symbol_search.symbol_graph.get_all_available_symbols()\n", - "embedding_symbols = symbol_search.symbol_code_similarity.embedding_handler.get_all_supported_symbols()\n", + "with SymbolProviderSynchronizationContext() as synchronization_context:\n", + " synchronization_context.register_provider(symbol_search.symbol_graph)\n", + " synchronization_context.register_provider(symbol_search.search_embedding_handler)\n", + " synchronization_context.synchronize()\n", + "\n", + "graph_symbols = symbol_search.symbol_graph.get_sorted_supported_symbols()\n", + "embedding_symbols = symbol_search.search_embedding_handler.get_sorted_supported_symbols()\n", "available_symbols = set(graph_symbols).intersection(set(embedding_symbols))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "b2e15a48", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The search symbol_graph has 816 symbols\n" + ] + } + ], "source": [ "print(f\"The search symbol_graph has {len(graph_symbols)} symbols\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "d5d1e571", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The search embedding has 816\n" + ] + } + ], "source": [ "print(f\"The search embedding has {len(embedding_symbols)}\")" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "id": "2ddadc12", "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'available_symbols' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[2], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe intersection of the symbol_graph and the embedding \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(available_symbols)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m symbols\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "\u001b[0;31mNameError\u001b[0m: name 'available_symbols' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "The intersection of the symbol_graph and the embedding 816 symbols\n" ] } ], @@ -100,26 +107,18 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "988b52cc", "metadata": { - "scrolled": true + "scrolled": false }, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "rank 0 = automata.core.coding.py.writer.PyWriter with rank 0.003\n", - "rank 1 = automata.core.symbol.graph.SymbolGraph with rank 0.003\n", - "rank 2 = automata.core.base.database.vector.JSONVectorDatabase with rank 0.003\n", - "rank 3 = automata.core.agent.task.task.AutomataTask with rank 0.003\n", - "rank 4 = automata.core.base.tool.Tool with rank 0.003\n", - "rank 5 = automata.core.coding.py.reader.PyReader with rank 0.003\n", - "rank 6 = automata.core.context.py.retriever.PyContextRetriever with rank 0.003\n", - "rank 7 = automata.core.agent.tool.tool_utils.DependencyFactory with rank 0.003\n", - "rank 8 = automata.core.symbol.search.symbol_search.SymbolSearch with rank 0.003\n", - "rank 9 = automata.core.symbol.parser.parse_symbol with rank 0.003\n" + "Error computing bounding box for scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l2`/main().: Module descriptor automata.cli.scripts.run_doc_embedding_l2 not found\n", + "Error computing bounding box for scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l3`/main().: Module descriptor automata.cli.scripts.run_doc_embedding_l3 not found\n" ] } ], @@ -131,29 +130,12 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "2ce0bb66", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "rank 0 = automata.core.symbol.graph.SymbolGraph with rank 0.024\n", - "rank 1 = automata.core.symbol.graph.SymbolGraph.SubGraph with rank 0.013\n", - "rank 2 = automata.tests.unit.test_symbol_rank.test_get_ranks_small_graph with rank 0.011\n", - "rank 3 = automata.tests.unit.test_symbol_graph.test_get_all_symbols with rank 0.011\n", - "rank 4 = automata.core.agent.tool.tool_utils.DependencyFactory.create_symbol_graph with rank 0.010\n", - "rank 5 = automata.core.symbol.graph.GraphBuilder with rank 0.010\n", - "rank 6 = automata.tests.utils.factories.symbol_graph_static_test with rank 0.008\n", - "rank 7 = automata.tests.conftest.symbol_graph_mock with rank 0.008\n", - "rank 8 = automata.core.symbol.graph._SymbolGraphNavigator.get_all_available_symbols with rank 0.008\n", - "rank 9 = automata.core.agent.tool.tool_utils.DependencyFactory.create_subgraph with rank 0.007\n" - ] - } - ], + "outputs": [], "source": [ "symbol_rank_search_results = symbol_search.symbol_rank_search(\"SymbolGraph\")\n", "raw_ranks = symbol_search.symbol_rank.get_ranks()\n", From ab2ad220335d5c6fe9af6a99a9838e9bd0a54b44 Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 4 Jul 2023 23:59:08 -0400 Subject: [PATCH 11/14] Update nbs --- automata/core/llm/providers/openai.py | 1 - automata/notebooks/demo_context_oracle.ipynb | 1634 ++---------------- automata/notebooks/demo_symbol_search.ipynb | 51 +- 3 files changed, 227 insertions(+), 1459 deletions(-) diff --git a/automata/core/llm/providers/openai.py b/automata/core/llm/providers/openai.py index 216a3f90..4e86c642 100644 --- a/automata/core/llm/providers/openai.py +++ b/automata/core/llm/providers/openai.py @@ -380,7 +380,6 @@ def build_embedding_vector(self, source: str) -> np.ndarray: # wait to import build_embedding_vector to allow easy mocking of the function in tests. from openai.embeddings_utils import get_embedding - print("trying to build embedding vector for souce = ", source) return np.array(get_embedding(source, engine=self.engine)) diff --git a/automata/notebooks/demo_context_oracle.ipynb b/automata/notebooks/demo_context_oracle.ipynb index 85489d61..6d4f126e 100644 --- a/automata/notebooks/demo_context_oracle.ipynb +++ b/automata/notebooks/demo_context_oracle.ipynb @@ -1,1464 +1,190 @@ { - "cells": [ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "25b4c489", + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "from typing import Any, Set\n", + "\n", + "from automata.config.base import AgentConfigName\n", + "from automata.core.singletons.dependency_factory import dependency_factory\n", + "from automata.core.singletons.py_module_loader import py_module_loader\n", + "from automata.core.context_providers.symbol_synchronization import (\n", + " SymbolProviderSynchronizationContext,\n", + ")\n", + " \n", + "from automata.core.tools.base import Tool\n", + "from automata.core.tools.builders.context_oracle import ContextOracleToolkitBuilder\n", + "\n", + "logger = logging.getLogger(__name__)\n", + "\n", + "py_module_loader.initialize()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "df78604c", + "metadata": {}, + "outputs": [], + "source": [ + "symbol_code_embedding_handler = dependency_factory.get('symbol_code_embedding_handler')\n", + "symbol_doc_embedding_handler = dependency_factory.get('symbol_doc_embedding_handler')\n", + "embedding_similarity_calculator = dependency_factory.get('embedding_similarity_calculator')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4615391b", + "metadata": {}, + "outputs": [], + "source": [ + "with SymbolProviderSynchronizationContext() as synchronization_context:\n", + " synchronization_context.register_provider(symbol_search.symbol_graph)\n", + " synchronization_context.register_provider(symbol_search.search_embedding_handler)\n", + " synchronization_context.synchronize()\n", + "\n", + "graph_symbols = symbol_search.symbol_graph.get_sorted_supported_symbols()\n", + "embedding_symbols = symbol_search.search_embedding_handler.get_sorted_supported_symbols()\n", + "available_symbols = set(graph_symbols).intersection(set(embedding_symbols))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "d9b0114c", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "context_oracle = ContextOracleToolkitBuilder(symbol_doc_embedding_handler, symbol_code_embedding_handler, embedding_similarity_calculator)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "ba92d460", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "context = context_oracle._get_context(\"Provide new code which refactors the SymbolDocEmbeddingHandler class to be more robust.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "35c3b343", + "metadata": { + "scrolled": false + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 1, - "id": "25b4c489", - "metadata": {}, - "outputs": [], - "source": [ - "import logging\n", - "from typing import Any, Set\n", + "name": "stdout", + "output_type": "stream", + "text": [ + "class SymbolDocEmbeddingHandler(SymbolEmbeddingHandler):\n", + " \"\"\"A class to handle the embedding of symbols\"\"\"\n", "\n", - "from automata.config.base import AgentConfigName\n", - "from automata.core.agent.tool.tool_utils import DependencyFactory\n", - "from automata.core.coding.py.module_loader import py_module_loader\n", + " def __init__(\n", + " self,\n", + " embedding_db: JSONSymbolEmbeddingVectorDatabase,\n", + " embedding_builder: SymbolDocEmbeddingBuilder,\n", + " ) -> None:\n", + " super().__init__(embedding_db, embedding_builder)\n", "\n", - " \n", - "logger = logging.getLogger(__name__)\n", + " def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding:\n", + " return self.embedding_db.get(symbol.dotpath)\n", "\n", - "py_module_loader.initialize()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "688ea793", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 779/779 [00:00<00:00, 6200.11it/s]\n" - ] - } - ], - "source": [ - "symbol_search = DependencyFactory().get('symbol_search')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "df78604c", - "metadata": {}, - "outputs": [], - "source": [ - "symbol_doc_similarity = DependencyFactory().get('symbol_doc_similarity')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "d9b0114c", - "metadata": {}, - "outputs": [], - "source": [ - "import importlib\n", - "import automata.core.agent.tool.builder.context_oracle \n", - "importlib.reload(automata.core.agent.tool.builder.context_oracle)\n", - "from automata.core.agent.tool.builder.context_oracle import ContextOracleToolBuilder\n", + " def process_embedding(self, symbol: Symbol) -> None:\n", + " \"\"\"\n", + " Process the embedding for a `Symbol` -\n", + " Currently we do nothing if the symbol is already contained\n", + " \"\"\"\n", "\n", - "context_oracle = ContextOracleToolBuilder(symbol_search, symbol_doc_similarity)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "ba92d460", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The most similar doc embedding = SymbolDocEmbedding(\n", - "symbol=Symbol(scip-python python automata 7bcc14a4733f0168e88f0547befe83864dae01a2 `automata.core.embedding.doc_embedding`/SymbolDocEmbeddingHandler#, scip-python, Package(python automata 7bcc14a4733f0168e88f0547befe83864dae01a2), (Descriptor(automata.core.embedding.doc_embedding, 1), Descriptor(SymbolDocEmbeddingHandler, 2))),\n", - "\n", - "embedding_source=# SymbolDocEmbeddingHandler\n", - "\n", - "`SymbolDocEmbeddingHandler` is a class that handles the creation and retrieval of documentation embeddings for the source code of a given Python symbol (e.g., classes, functions, etc.). The embeddings are generated using GPT-4, and the handler also provides methods to fetch a symbol's documentation summary and update existing documentation embeddings.\n", - "\n", - "## Overview\n", - "\n", - "The primary goal of the `SymbolDocEmbeddingHandler` is to produce a documentation embedding for a given Python symbol. These embeddings can be further used to fetch or generate documentation for the symbols or to compare their documentation to other symbols. The handler utilizes context retrieval methods and language models (specifically GPT-4) to generate the embeddings and summaries.\n", - "\n", - "## Related Symbols\n", - "\n", - "- `automata.core.embedding.code_embedding.SymbolCodeEmbeddingHandler`\n", - "- `automata.core.context.py_context.retriever.PyContextRetriever`\n", - "- `automata.core.symbol.search.symbol_search.SymbolSearch`\n", - "- `automata.core.embedding.embedding_types.EmbeddingProvider`\n", - "- `automata.core.database.vector.VectorDatabaseProvider`\n", - "- `automata.core.symbol.symbol_types.Symbol`\n", - "- `automata.core.symbol.symbol_types.SymbolDocEmbedding`\n", - "\n", - "## Example\n", - "\n", - "The following example demonstrates how to create a `SymbolDocEmbeddingHandler` and generate a documentation embedding for a given symbol.\n", - "\n", - "```python\n", - "from automata.config.prompt.docs import DEFAULT_DOC_GENERATION_PROMPT\n", - "from automata.core.context.py_context.retriever import PyContextRetriever\n", - "from automata.core.database.vector import VectorDatabaseProvider\n", - "from automata.core.embedding.embedding_types import EmbeddingProvider\n", - "from automata.core.embedding.doc_embedding import SymbolDocEmbeddingHandler\n", - "from automata.core.symbol.search.symbol_search import SymbolSearch\n", - "from automata.core.symbol.symbol_types import Symbol\n", - "\n", - "# Initialize the necessary components\n", - "embedding_db = VectorDatabaseProvider()\n", - "embedding_provider = EmbeddingProvider(model=\"gpt-4\")\n", - "symbol_search = SymbolSearch()\n", - "retriever = PyContextRetriever()\n", - "\n", - "# Instantiate the SymbolDocEmbeddingHandler\n", - "doc_embedding_handler = SymbolDocEmbeddingHandler(embedding_db, embedding_provider, symbol_search, retriever)\n", - "\n", - "# Create a sample symbol\n", - "symbol = Symbol.from_string(\"sample-uri\")\n", - "\n", - "# Generate the documentation embedding for the symbol\n", - "symbol_doc_embedding = doc_embedding_handler.build_symbol_doc_embedding(\"def sample_function(): pass\", symbol)\n", - "\n", - "# Get the generated embedding\n", - "embedding = symbol_doc_embedding.vector\n", - "\n", - "# Get the summary for the documentation\n", - "summary = symbol_doc_embedding.summary\n", - "```\n", - "\n", - "## Limitations\n", - "\n", - "The primary limitation of `SymbolDocEmbeddingHandler` is its dependency on GPT-4, which may not always generate high-quality, accurate, or relevant summaries for the symbol's documentation. Additionally, the handler does not provide advanced methods for updating documentation in scenarios where more complex logic is required, such as when dependencies interact or when underlying documentation changes.\n", - "\n", - "## Follow-up Questions:\n", - "\n", - "- Can `SymbolDocEmbeddingHandler` be extended to support other language models for generating documentation embeddings?\n", - "- How can we improve the handler to handle more complex scenarios of documentation updates efficiently?\n", - "\n", - "vector_length=1536\n", - "\n", - "source_code=class SymbolDocEmbeddingHandler(SymbolEmbeddingHandler):\n", - " \"\"\"\n", - " Handles a database and provider for `Symbol` documentation embeddings.\n", - " TODO: Add more robust logic for documentation updates.\n", - " \"\"\"\n", - "\n", - " def __init__(\n", - " self,\n", - " embedding_db: VectorDatabaseProvider,\n", - " embedding_provider: EmbeddingProvider,\n", - " completion_provider: LLMChatCompletionProvider,\n", - " symbol_search: SymbolSearch,\n", - " retriever: PyContextRetriever,\n", - " ) -> None:\n", - " super().__init__(embedding_db, embedding_provider)\n", - " self.symbol_search = symbol_search\n", - " self.retriever = retriever\n", - " self.completion_provider = completion_provider\n", - "\n", - " def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding:\n", - " return self.embedding_db.get(symbol)\n", - "\n", - " def process_embedding(self, symbol: Symbol) -> None:\n", - " \"\"\"\n", - " Processes the embedding for a `Symbol` by calling either `update_existing_embedding`\n", - " or `build_symbol_doc_embedding`, depending on whether the symbol is already in the database.\n", - "\n", - " Raises:\n", - " ValueError: If the symbol has no source code for the symbol.\n", - " \"\"\"\n", - " from automata.core.symbol.symbol_utils import ( # imported late for mocking\n", - " convert_to_fst_object,\n", - " )\n", - "\n", - " source_code = str(convert_to_fst_object(symbol))\n", - "\n", - " if not source_code:\n", - " raise ValueError(f\"Symbol {symbol} has no source code\")\n", - "\n", - " if self.embedding_db.contains(symbol):\n", - " self.update_existing_embedding(source_code, symbol)\n", - " return\n", - "\n", - " symbol_embedding = self.build_symbol_doc_embedding(source_code, symbol)\n", - " self.embedding_db.add(symbol_embedding)\n", - "\n", - " def build_symbol_doc_embedding(self, source_code: str, symbol: Symbol) -> SymbolDocEmbedding:\n", - " \"\"\"\n", - "\n", - " Build the embedding for a symbol's documentation.\n", - "\n", - " Example Document Output:\n", - " ===========\n", - "\n", - " AgentConfig\n", - " ===========\n", - "\n", - " ``AgentConfig`` is an abstract base class that provides a template for\n", - " configurations related to agents. It contains abstract methods like\n", - " ``setup()`` and ``load()`` that need to be implemented by subclasses.\n", - " This class also handles the configuration of arbitrary types during the\n", - " initialization.\n", - "\n", - " Overview\n", - " --------\n", - "\n", - " ``AgentConfig`` is designed for ensuring configurability of agents.\n", - " Subclasses need to provide implementations for the ``setup()`` and\n", - " ``load()`` methods in order to properly define the behavior during the\n", - " agent setup and configuration loading processes. This class follows the\n", - " BaseModel design, making it easy to extend and customize according to\n", - " specific agent requirements.\n", - "\n", - " Related Symbols\n", - " ---------------\n", - "\n", - " - ``automata.core.agent.instances.AutomataOpenAIAgentInstance.Config``\n", - " - ``automata.tests.unit.test_automata_agent_builder.test_builder_default_config``\n", - " - ``automata.tests.unit.test_task_environment.TestURL``\n", - " - ``automata.core.base.agent.AgentInstance.Config``\n", - "\n", - " Example\n", - " -------\n", - "\n", - " The following example demonstrates how to create a custom agent\n", - " configuration by extending the ``AgentConfig`` class:\n", - "\n", - " .. code:: python\n", - "\n", - " from config.config_types import AgentConfig\n", - "\n", - " class CustomAgentConfig(AgentConfig):\n", - "\n", - " def setup(self):\n", - " # Define your custom agent setup process\n", - " pass\n", - "\n", - " @classmethod\n", - " def load(cls, config_name: AgentConfigName) -> \"CustomAgentConfig\":\n", - " # Load the config for your custom agent\n", - " pass\n", - "\n", - " Limitations\n", - " -----------\n", - "\n", - " ``AgentConfig`` itself is an abstract class and cannot directly be\n", - " instantiated. It must be subclassed, and its methods need to be\n", - " implemented by the extending class according to the specific agent\n", - " requirements. Additionally, the current implementation allows for\n", - " arbitrary types, which may lead to code that is not type-safe.\n", - "\n", - " Follow-up Questions:\n", - " --------------------\n", - "\n", - " - How can we ensure type safety while maintaining the flexibility and\n", - " customizability provided by ``AgentConfig``?\n", - "\n", - "\n", - "\n", - " \"\"\"\n", - " abbreviated_selected_symbol = symbol.uri.split(\"/\")[1].split(\"#\")[0]\n", - "\n", - " search_list = self.generate_search_list(abbreviated_selected_symbol)\n", - "\n", - " self.retriever.reset()\n", - " self.retriever.process_symbol(symbol, search_list)\n", - "\n", - " prompt = Template(DEFAULT_DOC_GENERATION_PROMPT).render(\n", - " symbol_dotpath=abbreviated_selected_symbol,\n", - " symbol_context=self.retriever.get_context_buffer(),\n", - " )\n", - "\n", - " document = self.completion_provider.standalone_call(prompt)\n", - " summary = self.completion_provider.standalone_call(\n", - " f\"Condense the documentation below down to one to two concise paragraphs:\\n {document}\\nIf there is an example, include that in full in the output.\"\n", - " )\n", - " embedding = self.embedding_provider.build_embedding_array(document)\n", - "\n", - " return SymbolDocEmbedding(\n", - " symbol,\n", - " vector=embedding,\n", - " source_code=source_code,\n", - " document=document,\n", - " summary=summary,\n", - " context=prompt,\n", - " )\n", - "\n", - " def generate_search_list(self, abbreviated_selected_symbol: str) -> List[Symbol]:\n", - " \"\"\"Generate a search list by splicing the search results on the symbol with the search results biased on tests.\"\"\"\n", - " search_results = self.symbol_search.symbol_rank_search(f\"{abbreviated_selected_symbol}\")\n", - " search_results_with_tests = [ele for ele in search_results if \"test\" in ele[0].uri]\n", - " search_results_without_tests = [ele for ele in search_results if \"test\" not in ele[0].uri]\n", - " search_list: List[Symbol] = []\n", - " for i in range(max(len(search_results_with_tests), len(search_results_without_tests))):\n", - " set_list = set(search_list)\n", - " if i < len(search_results_with_tests) and search_results_with_tests[i] not in set_list:\n", - " search_list.append(search_results_with_tests[i][0])\n", - " if (\n", - " i < len(search_results_without_tests)\n", - " and search_results_without_tests[i] not in set_list\n", - " ):\n", - " search_list.append(search_results_without_tests[i][0])\n", - " return search_list\n", - "\n", - " def update_existing_embedding(self, source_code: str, symbol: Symbol) -> None:\n", - " \"\"\"\n", - " Check if the embedding for a symbol needs to be updated.\n", - " This is done by comparing the source code of the symbol to the source code\n", - "\n", - "\n", - " FIXME - We need to add logic similar to what we have\n", - " in the code embedding handler to update documentation\n", - " when a sufficient threshold has been breached\n", - " the following is a representative snippet -\n", - " if existing_embedding.embedding_source != source_code:\n", - " logger.debug(\"Building a new embedding for %s\", symbol)\n", - " self.embedding_db.discard(symbol)\n", - " symbol_embedding = self.build_embedding_array(source_code, symbol)\n", - " self.embedding_db.add(symbol_embedding)\n", - " \"\"\"\n", - " existing_embedding = self.embedding_db.get(symbol)\n", - " # For now, we will just automatically roll the existing documentation forward\n", - " if existing_embedding.symbol != symbol or existing_embedding.source_code != source_code:\n", - " logger.debug(\n", - " f\"Rolling forward the embedding for {existing_embedding.symbol} to {symbol}\"\n", - " )\n", - " self.embedding_db.discard(symbol)\n", - " existing_embedding.symbol = symbol\n", - " existing_embedding.source_code = source_code\n", - " self.embedding_db.add(existing_embedding)\n", - " else:\n", - " logger.debug(\"Passing for %s\", symbol)\n", - "\n", - "\n", - "summary=`SymbolDocEmbeddingHandler` is a class that manages the creation and retrieval of documentation embeddings for Python symbols (e.g., classes, functions) using GPT-4. It offers methods for fetching a symbol's documentation summary and updating existing documentation embeddings. The primary goal is to produce documentation embeddings for comparison or documentation generation purposes, leveraging context retrieval methods and language models.\n", - "\n", - "```python\n", - "from automata.config.prompt.docs import DEFAULT_DOC_GENERATION_PROMPT\n", - "from automata.core.context.py_context.retriever import PyContextRetriever\n", - "from automata.core.database.vector import VectorDatabaseProvider\n", - "from automata.core.embedding.embedding_types import EmbeddingProvider\n", - "from automata.core.embedding.doc_embedding import SymbolDocEmbeddingHandler\n", - "from automata.core.symbol.search.symbol_search import SymbolSearch\n", - "from automata.core.symbol.symbol_types import Symbol\n", - "\n", - "# Initialize the necessary components\n", - "embedding_db = VectorDatabaseProvider()\n", - "embedding_provider = EmbeddingProvider(model=\"gpt-4\")\n", - "symbol_search = SymbolSearch()\n", - "retriever = PyContextRetriever()\n", - "\n", - "# Instantiate the SymbolDocEmbeddingHandler\n", - "doc_embedding_handler = SymbolDocEmbeddingHandler(embedding_db, embedding_provider, symbol_search, retriever)\n", - "\n", - "# Create a sample symbol\n", - "symbol = Symbol.from_string(\"sample-uri\")\n", - "\n", - "# Generate the documentation embedding for the symbol\n", - "symbol_doc_embedding = doc_embedding_handler.build_symbol_doc_embedding(\"def sample_function(): pass\", symbol)\n", - "\n", - "# Get the generated embedding\n", - "embedding = symbol_doc_embedding.vector\n", - "\n", - "# Get the summary for the documentation\n", - "summary = symbol_doc_embedding.summary\n", - "```\n", - "Limitations include dependency on GPT-4 for accuracy and relevance and a lack of advanced methods for updating documentation in complex scenarios. Future improvements may involve extending support to other language models and handling more complex documentation updates efficiently.\n", - "\n", - "context=\n", - " Generate the documentation for SymbolDocEmbeddingHandler using the context shown below -\n", - " Building context for primary symbol - automata.core.embedding.doc_embedding.SymbolDocEmbeddingHandler -\n", - " \n", - " Import Statements:\n", - " import logging\n", - " import openai\n", - " from typing import List\n", - " from jinja2 import Template\n", - " from automata.config.prompt.docs import DEFAULT_DOC_GENERATION_PROMPT\n", - " from automata.core.context.py_context.retriever import PyContextRetriever\n", - " from automata.core.database.vector import VectorDatabaseProvider\n", - " from automata.core.symbol.search.symbol_search import SymbolSearch\n", - " from automata.core.symbol.symbol_types import Symbol, SymbolDocEmbedding\n", - " from .embedding_types import EmbeddingProvider, SymbolEmbeddingHandler\n", - " from automata.core.symbol.symbol_utils import ( # imported late for mocking\n", - " convert_to_fst_object,\n", - " )\n", - " \n", - " Methods:\n", - " def __init__(\n", - " self,\n", - " embedding_db: VectorDatabaseProvider,\n", - " embedding_provider: EmbeddingProvider,\n", - " symbol_search: SymbolSearch,\n", - " retriever: PyContextRetriever,\n", - " ) -> None:\n", - " \"\"\"\n", - " A constructor for SymbolDocEmbeddingHandler\n", - " \n", - " Args:\n", - " embedding_db (VectorDatabaseProvider): The database to store the embeddings in\n", - " embedding_provider (EmbeddingProvider): The provider to get the embeddings from\n", - " code_embedding_handler (SymbolCodeEmbeddingHandler): The code embedding handler\n", - " \n", - " TODO: Add more logic around documentation updating\n", - " \"\"\"\n", - " super().__init__(embedding_db, embedding_provider)\n", - " self.symbol_search = symbol_search\n", - " self.retriever = retriever\n", - " \n", - " \n", - " def build_symbol_doc_embedding(self, source_code: str, symbol: Symbol) -> SymbolDocEmbedding:\n", - " \"\"\"\n", - " Build the embedding for a symbol's documentation\n", - " \n", - " Args:\n", - " source_code (str): The source code of the symbol\n", - " symbol (Symbol): The symbol to build the embedding for\n", - " \n", - " Returns:\n", - " SymbolDocEmbedding: The embedding for the symbol's documentation\n", - " \"\"\"\n", - " abbreviated_selected_symbol = symbol.uri.split(\"/\")[1].split(\"#\")[0]\n", - " \n", - " def get_doc(prompt: str) -> str:\n", - " \"\"\"\n", - " Get the documentation for a symbol\n", - " \n", - " Args:\n", - " prompt (str): The prompt to use to generate the documentation\n", - " \n", - " Returns:\n", - " str: The completed documentation for the symbol\n", - " \"\"\"\n", - " completion = openai.ChatCompletion.create(\n", - " model=\"gpt-4\",\n", - " messages=[\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": prompt,\n", - " }\n", - " ],\n", - " )\n", - " if not completion.choices:\n", - " return \"Error: No completion found\"\n", - " \n", - " return completion.choices[0][\"message\"][\"content\"]\n", - " \n", - " def get_summary(input_doc: str) -> str:\n", - " \"\"\"\n", - " Get a summary for a symbol's documentation\n", - " \n", - " Args:\n", - " prompt (str): The prompt to use to generate the documentation\n", - " \n", - " Returns:\n", - " str: The completed documentation for the symbol\n", - " \"\"\"\n", - " \n", - " completion = openai.ChatCompletion.create(\n", - " model=\"gpt-4\",\n", - " messages=[\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": f\"Condense the documentation below down to one to two concise paragraphs:\\n {input_doc}\\nIf there is an example, include that in full in the output.\",\n", - " }\n", - " ],\n", - " )\n", - " if not completion.choices:\n", - " return \"Error: No completion found\"\n", - " \n", - " return completion.choices[0][\"message\"][\"content\"]\n", - " \n", - " # Splice the search results on the symbol\n", - " # with the search results biased on tests\n", - " # this is to get bias towards specific examples for the documentation\n", - " search_results = self.symbol_search.symbol_rank_search(f\"{abbreviated_selected_symbol}\")\n", - " search_results_with_tests = [ele for ele in search_results if \"test\" in ele[0].uri]\n", - " search_results_without_tests = [ele for ele in search_results if \"test\" not in ele[0].uri]\n", - " search_list: List[Symbol] = []\n", - " for i in range(max(len(search_results_with_tests), len(search_results_without_tests))):\n", - " set_list = set(search_list)\n", - " if (\n", - " i < len(search_results_with_tests) - 1\n", - " and search_results_with_tests[i] not in set_list\n", - " ):\n", - " search_list.append(search_results_with_tests[i][0])\n", - " if (\n", - " i < len(search_results_without_tests) - 1\n", - " and search_results_without_tests[i] not in set_list\n", - " ):\n", - " search_list.append(search_results_without_tests[i][0])\n", - " \n", - " self.retriever.reset()\n", - " self.retriever.process_symbol(symbol, search_list)\n", - " \n", - " prompt = Template(DEFAULT_DOC_GENERATION_PROMPT).render(\n", - " symbol_dotpath=abbreviated_selected_symbol,\n", - " symbol_context=self.retriever.get_context_buffer(),\n", - " )\n", - " \n", - " document = get_doc(prompt)\n", - " summary = get_summary(document)\n", - " embedding = self.embedding_provider.build_embedding(document)\n", - " \n", - " return SymbolDocEmbedding(\n", - " symbol,\n", - " vector=embedding,\n", - " source_code=source_code,\n", - " document=document,\n", - " summary=summary,\n", - " context=prompt,\n", - " )\n", - " \n", - " \n", - " def get_doc(prompt: str) -> str:\n", - " \"\"\"\n", - " Get the documentation for a symbol\n", - " \n", - " Args:\n", - " prompt (str): The prompt to use to generate the documentation\n", - " \n", - " Returns:\n", - " str: The completed documentation for the symbol\n", - " \"\"\"\n", - " completion = openai.ChatCompletion.create(\n", - " model=\"gpt-4\",\n", - " messages=[\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": prompt,\n", - " }\n", - " ],\n", - " )\n", - " if not completion.choices:\n", - " return \"Error: No completion found\"\n", - " \n", - " return completion.choices[0][\"message\"][\"content\"]\n", - " \n", - " \n", - " def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding:\n", - " \"\"\"\n", - " Get the embedding of a symbol.\n", - " Args:\n", - " symbol (Symbol): Symbol to get the embedding for\n", - " Returns:\n", - " SymbolDocEmbedding: The embedding of the symbol documentation\n", - " \"\"\"\n", - " return self.embedding_db.get(symbol)\n", - " \n", - " \n", - " def get_summary(input_doc: str) -> str:\n", - " \"\"\"\n", - " Get a summary for a symbol's documentation\n", - " \n", - " Args:\n", - " prompt (str): The prompt to use to generate the documentation\n", - " \n", - " Returns:\n", - " str: The completed documentation for the symbol\n", - " \"\"\"\n", - " \n", - " completion = openai.ChatCompletion.create(\n", - " model=\"gpt-4\",\n", - " messages=[\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": f\"Condense the documentation below down to one to two concise paragraphs:\\n {input_doc}\\nIf there is an example, include that in full in the output.\",\n", - " }\n", - " ],\n", - " )\n", - " if not completion.choices:\n", - " return \"Error: No completion found\"\n", - " \n", - " return completion.choices[0][\"message\"][\"content\"]\n", - " \n", - " # Splice the search results on the symbol\n", - " # with the search results biased on tests\n", - " # this is to get bias towards specific examples for the documentation\n", - " \n", - " def update_embedding(self, symbol: Symbol) -> None:\n", - " \"\"\"\n", - " Concrete method to update the embedding for a symbol.\n", - " \n", - " Args:\n", - " symbols_to_update (List[Symbol]): List of symbols to update\n", - " \n", - " Raises:\n", - " ValueError: If the symbol has no source code\n", - " \n", - " NOTE: This method always updates the embedding and associated documentation\n", - " We should add some logic to check if the documentation needs updating\n", - " This is non-trivial because of how dependencies interact\n", - " \"\"\"\n", - " from automata.core.symbol.symbol_utils import ( # imported late for mocking\n", - " convert_to_fst_object,\n", - " )\n", - " \n", - " source_code = str(convert_to_fst_object(symbol))\n", - " \n", - " if not source_code:\n", - " raise ValueError(f\"Symbol {symbol} has no source code\")\n", - " \n", - " if self.embedding_db.contains(symbol):\n", - " self.update_existing_embedding(source_code, symbol)\n", - " return\n", - " \n", - " symbol_embedding = self.build_symbol_doc_embedding(source_code, symbol)\n", - " self.embedding_db.add(symbol_embedding)\n", - " \n", - " \n", - " def update_existing_embedding(self, source_code: str, symbol: Symbol) -> None:\n", - " \"\"\"\n", - " Check if the embedding for a symbol needs to be updated.\n", - " This is done by comparing the source code of the symbol to the source code\n", - " \n", - " Args:\n", - " source_code (str): The source code of the symbol\n", - " symbol (Symbol): The symbol to update\n", - " \"\"\"\n", - " existing_embedding = self.embedding_db.get(symbol)\n", - " # FIXME - We need to add logic similar to what we have\n", - " # in the code embedding handler to update documentation\n", - " # when a sufficient threshold has been breached\n", - " # the following is a representative snippet -\n", - " # if existing_embedding.embedding_source != source_code:\n", - " # logger.debug(\"Building a new embedding for %s\", symbol)\n", - " # self.embedding_db.discard(symbol)\n", - " # symbol_embedding = self.build_embedding(source_code, symbol)\n", - " # self.embedding_db.add(symbol_embedding)\n", - " \n", - " # For now, we will just automatically roll the existing documentation forward\n", - " if existing_embedding.symbol != symbol or existing_embedding.source_code != source_code:\n", - " logger.debug(\n", - " f\"Rolling forward the embedding for {existing_embedding.symbol} to {symbol}\"\n", - " )\n", - " self.embedding_db.discard(symbol)\n", - " existing_embedding.symbol = symbol\n", - " existing_embedding.source_code = source_code\n", - " self.embedding_db.add(existing_embedding)\n", - " else:\n", - " logger.debug(\"Passing for %s\", symbol)\n", - " \n", - " Building context for related symbols -\n", - " \n", - " automata.tests.unit.sample_modules.sample.OuterClass.InnerClass\n", - " \n", - " class InnerClass:\n", - " \"\"\"Inner doc strings\"\"\"\n", - " \n", - " def inner_method(self):\n", - " \"\"\"Inner method doc strings\"\"\"\n", - " \n", - " \n", - " automata.tests.unit.sample_modules.sample.OuterClass\n", - " \n", - " class OuterClass:\n", - " class InnerClass:\n", - " \"\"\"Inner doc strings\"\"\"\n", - " \n", - " def inner_method(self):\n", - " \"\"\"Inner method doc strings\"\"\"\n", - " \n", - " \n", - " automata.core.symbol.symbol_types.SymbolDocEmbedding\n", - " \n", - " Class Docstring:\n", - " Embedding for symbol documents\n", - " \n", - " Methods:\n", - " def __init__(\n", - " self,\n", - " symbol: Symbol,\n", - " document: str,\n", - " vector: np.ndarray,\n", - " source_code: Optional[str] = None,\n", - " summary: Optional[str] = None,\n", - " context: Optional[str] = None,\n", - " ) -> None:\n", - " super().__init__(symbol, document, vector)\n", - " # begin additional meta data\n", - " self.source_code = source_code\n", - " self.summary = summary\n", - " self.context = context\n", - " \n", - " automata.tests.unit.test_symbol_embedding.test_get_embedding\n", - " \n", - " def test_get_embedding(\n", - " monkeypatch,\n", - " mock_embedding,\n", - " mock_simple_method_symbols,\n", - " ):\n", - " # Mock EmbeddingProvider methods\n", - " mock_provider = Mock(EmbeddingProvider)\n", - " mock_provider.build_embedding.return_value = mock_embedding\n", - " \n", - " # Mock JSONVectorDatabase methods\n", - " mock_db = MagicMock(JSONVectorDatabase)\n", - " mock_db.get.return_value = SymbolCodeEmbedding(\n", - " mock_simple_method_symbols[0], \"symbol_source\", mock_embedding\n", - " )\n", - " \n", - " # Create an instance of the class\n", - " cem = SymbolCodeEmbeddingHandler(embedding_provider=mock_provider, embedding_db=mock_db)\n", - " \n", - " # Call the method\n", - " embedding = cem.get_embedding(mock_simple_method_symbols[0])\n", - " \n", - " # Verify the results\n", - " assert embedding.vector.all() == mock_embedding.all()\n", - " \n", - " \n", - " \n", - " \n", - " automata.tests.unit.sample_modules.sample.OuterClass.InnerClass.inner_method\n", - " \n", - " def inner_method(self):\n", - " \"\"\"Inner method doc strings\"\"\"\n", - " \n", - " \n", - " automata.core.embedding.code_embedding.SymbolCodeEmbeddingHandler\n", - " \n", - " Methods:\n", - " def __init__(\n", - " self,\n", - " embedding_db: VectorDatabaseProvider,\n", - " embedding_provider: EmbeddingProvider,\n", - " ) -> None:\n", - " \"\"\"\n", - " A constructor for SymbolCodeEmbeddingHandler\n", - " \n", - " Args:\n", - " embedding_db (VectorDatabaseProvider): The database to store the embeddings in\n", - " embedding_provider (Optional[EmbeddingProvider]): The provider to\n", - " get the embeddings from\n", - " \"\"\"\n", - " super().__init__(embedding_db, embedding_provider)\n", - " \n", - " \n", - " build_embedding(self, source_code: str, symbol: Symbol) -> SymbolCodeEmbedding\n", - " \n", - " get_embedding(self, symbol: Symbol) -> SymbolCodeEmbedding\n", - " \n", - " update_embedding(self, symbol: Symbol) -> None\n", - " \n", - " update_existing_embedding(self, source_code: str, symbol: Symbol) -> None\n", - " \n", - " automata.tests.unit.test_py_code_retriever.test_get_docstring_nested_class_method\n", - " \n", - " def test_get_docstring_nested_class_method(getter):\n", - " module_name = \"sample\"\n", - " object_path = \"OuterClass.InnerClass.inner_method\"\n", - " result = getter.get_docstring(module_name, object_path)\n", - " expected_match = \"Inner method doc strings\"\n", - " assert result == expected_match\n", - " \n", - " \n", - " automata.core.embedding.embedding_types.SymbolEmbeddingHandler\n", - " \n", - " Class Docstring:\n", - " An abstract class to handle the embedding of symbols\n", - " \n", - " Methods:\n", - " @abc.abstractmethod\n", - " def __init__(\n", - " self,\n", - " embedding_db: VectorDatabaseProvider,\n", - " embedding_provider: EmbeddingProvider,\n", - " ) -> None:\n", - " \"\"\"An abstract constructor for SymbolEmbeddingHandler\"\"\"\n", - " self.embedding_db = embedding_db\n", - " self.embedding_provider = embedding_provider\n", - " \n", - " \n", - " get_all_supported_symbols(self) -> List[Symbol]\n", - " \n", - " get_embedding(self, symbol: Symbol) -> Any\n", - " \n", - " update_embedding(self, symbol: Symbol) -> None\n", - " \n", - " automata.tests.unit.test_py_code_retriever.test_get_docstring_nested_class\n", - " \n", - " def test_get_docstring_nested_class(getter):\n", - " module_name = \"sample\"\n", - " object_path = \"OuterClass.InnerClass\"\n", - " result = getter.get_docstring(module_name, object_path)\n", - " expected_match = \"Inner doc strings\"\n", - " assert result == expected_match\n", - " \n", - " \n", - " \n", - " \n", - " automata.core.embedding.embedding_types.SymbolEmbeddingHandler.__init__\n", - " \n", - " Class Docstring:\n", - " An abstract constructor for SymbolEmbeddingHandler\n", - " \n", - " Methods:\n", - " @abc.abstractmethod\n", - " def __init__(\n", - " self,\n", - " embedding_db: VectorDatabaseProvider,\n", - " embedding_provider: EmbeddingProvider,\n", - " ) -> None:\n", - " \"\"\"An abstract constructor for SymbolEmbeddingHandler\"\"\"\n", - " self.embedding_db = embedding_db\n", - " self.embedding_provider = embedding_provider\n", - " \n", - " \n", - " Building context for dependencies -\n", - " \n", - " automata.core.database.provider.SymbolDatabaseProvider.get\n", - " \n", - " Class Docstring:\n", - " Abstract method to get a specific embedding.\n", - " \n", - " Methods:\n", - " get(self, symbol: Symbol) -> Any\n", - " \n", - " automata.core.symbol.symbol_types.Symbol\n", - " \n", - " Class Docstring:\n", - " Symbol is similar to a URI, it identifies a class, method, or a local variable. SymbolInformation contains rich metadata about symbols such as the docstring.\n", - " \n", - " Symbol has a standardized string representation, which can be used interchangeably with Symbol. The syntax for Symbol is the following:\n", - " \n", - " # ()+ stands for one or more repetitions of \n", - " ::= ' ' ' ' ()+ | 'local ' \n", - " ::= ' ' ' ' \n", - " ::= any UTF-8, escape spaces with double space.\n", - " ::= same as above, use the placeholder '.' to indicate an empty value\n", - " ::= same as above\n", - " ::= same as above\n", - " ::= | | | | | | | \n", - " ::= '/'\n", - " ::= '#'\n", - " ::= '.'\n", - " ::= ':'\n", - " ::= '!'\n", - " ::= '(' ').'\n", - " ::= '[' ']'\n", - " ::= '(' ')'\n", - " ::= \n", - " ::= \n", - " ::= | \n", - " ::= ()+\n", - " ::= '_' | '+' | '-' | '$' | ASCII letter or digit\n", - " ::= '`' ()+ '`'\n", - " ::= any UTF-8 character, escape backticks with double backtick.\n", - " \n", - " Examples -\n", - " from automata.core.symbol.search.symbol_parser import parse_symbol\n", - " \n", - " symbol_class = parse_symbol(\n", - " \"scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.agent.agent_enums`/ActionIndicator#\"\n", - " )\n", - " \n", - " symbol_method = parse_symbol(\n", - " \"scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.base.tool`/ToolNotFoundError#__init__().\"\n", - " )\n", - " \n", - " Methods:\n", - " __eq__(self, other) -> bool\n", - " \n", - " __hash__(self) -> int\n", - " \n", - " __repr__(self) -> str\n", - " \n", - " dotpath(self) -> str\n", - " \n", - " from_string(cls, symbol_str: str) -> \"Symbol\"\n", - " \n", - " is_local(symbol: \"Symbol\") -> bool\n", - " \n", - " is_meta(symbol: \"Symbol\") -> bool\n", - " \n", - " is_parameter(symbol: \"Symbol\") -> bool\n", - " \n", - " is_protobuf(symbol: \"Symbol\") -> bool\n", - " \n", - " module_name(self) -> str\n", - " \n", - " parent(self) -> \"Symbol\"\n", - " \n", - " symbol_kind_by_suffix(self) -> SymbolDescriptor.PyKind\n", - " \n", - " symbol_raw_kind_by_suffix(self) -> DescriptorProto\n", - " \n", - " automata.core.context.py_context.retriever.PyContextRetriever.get_context_buffer\n", - " \n", - " Class Docstring:\n", - " Get the context buffer\n", - " \n", - " Returns:\n", - " str: The context buffer\n", - " \n", - " Methods:\n", - " get_context_buffer(self) -> str\n", - " \n", - " automata.core.database.provider.SymbolDatabaseProvider.discard\n", - " \n", - " Class Docstring:\n", - " Abstract method to discard a specific embedding.\n", - " \n", - " Methods:\n", - " discard(self, symbol: Symbol) -> Any\n", - " \n", - " automata.core.context.py_context.retriever.PyContextRetriever\n", - " \n", - " Class Docstring:\n", - " The PyContextRetriever is used to retrieve the context of a symbol in a Python project\n", - " \n", - " Methods:\n", - " IndentManager(self) -> None\n", - " \n", - " def __init__(\n", - " self,\n", - " graph: SymbolGraph,\n", - " config: PyContextRetrieverConfig = PyContextRetrieverConfig(),\n", - " doc_embedding_db: Optional[VectorDatabaseProvider] = None,\n", - " ) -> None:\n", - " \"\"\"\n", - " Args:\n", - " graph (SymbolGraph): The symbol graph to use\n", - " config (PyContextRetrieverConfig): The configuration to use\n", - " \"\"\"\n", - " self.graph = graph\n", - " self.config = config\n", - " self.indent_level = 0\n", - " self.doc_embedding_db = doc_embedding_db\n", - " self.encoding = tiktoken.encoding_for_model(self.config.model_name)\n", - " \n", - " self.reset()\n", - " \n", - " \n", - " get_context_buffer(self) -> str\n", - " \n", - " indent() -> str\n", - " \n", - " process_ast(self, symbol: Symbol) -> None\n", - " \n", - " process_docstring(self, ast_object: RedBaron) -> None\n", - " \n", - " process_documentation(self, symbol: Symbol, is_main_symbol: bool) -> None\n", - " \n", - " process_headline(self, symbol: Symbol) -> None\n", - " \n", - " process_imports(self, symbol: Symbol) -> None\n", - " \n", - " process_message(self, message: str) -> None\n", - " \n", - " process_method(self, method: RedBaron, is_main_symbol: bool) -> None\n", - " \n", - " process_symbol(self,\n", - " symbol: Symbol,\n", - " related_symbols: List[Symbol] = [],\n", - " ) -> None\n", - " \n", - " reset(self) -> None\n", - " \n", - " automata.core.embedding.embedding_types.EmbeddingProvider.build_embedding\n", - " \n", - " Methods:\n", - " build_embedding(self, symbol_source: str) -> np.ndarray\n", - " \n", - " automata.core.symbol.symbol_utils.convert_to_fst_object\n", - " \n", - " Class Docstring:\n", - " Converts a specified symbol into a red baron FST object\n", - " \n", - " Args:\n", - " symbol (str): The symbol which corresponds to a module, class, or method.\n", - " module_map (Optional[LazyModuleTreeMap]): The module tree mapping to use. If None, the default\n", - " \n", - " Returns:\n", - " Union[ClassNode, DefNode]: The RedBaron FST object for the class or method, or None if not found\n", - " \n", - " Raises:\n", - " ValueError: If the symbol is not found\n", - " \n", - " Note:\n", - " The optional argument is to allow us to run this function in mulitprocessing in the future,\n", - " because module map is not picklable (because redbaron objects are not picklable)\n", - " So the indexer would have to be created and destroyed in each process.\n", - " \n", - " Methods:\n", - " convert_to_fst_object(symbol: Symbol, module_map: Optional[LazyModuleTreeMap] = None) -> RedBaron\n", - " \n", - " automata.core.database.provider.SymbolDatabaseProvider.add\n", - " \n", - " Class Docstring:\n", - " Abstract method to add an embedding to the database.\n", - " \n", - " Methods:\n", - " add(self, embedding: SymbolEmbedding) -> Any\n", - " \n", - " automata.core.symbol.search.symbol_search.SymbolSearch.symbol_rank_search\n", - " \n", - " Class Docstring:\n", - " Fetches the list of the SymbolRank similar symbols ordered by rank\n", - " \n", - " Args:\n", - " query (str): The query to search for\n", - " \n", - " Returns:\n", - " A list of tuples of the form (symbol_uri, rank)\n", - " \n", - " Methods:\n", - " symbol_rank_search(self, query: str) -> SymbolRankResult\n", - " \n", - " automata.core.database.provider.SymbolDatabaseProvider.contains\n", - " \n", - " Class Docstring:\n", - " Abstract method to check if a specific embedding is present.\n", - " \n", - " Methods:\n", - " contains(self, symbol: Symbol) -> bool\n", - " \n", - "\n", - "\n", - " The output documentation should include an overview section, related symbols, examples, and discussion around limitations.\n", - " Examples should be comprehensive and readily executable (e.g. correct imports and values).\n", - " If there are references to 'Mock' objects in test files from your context, do your best to replace these with the actual underlying object.\n", - " If that is not possible, note this in a footnote. Mock objects are used in testing to simplify working with complex objects.\n", - " For reference, write in the style of in the original Python Library documentation -\n", - "\n", - "...\n", - "## Usage Example\n", - "\n", - "```python\n", - "from transformers import PegasusForConditionalGeneration, PegasusTokenizer\n", - "import torch\n", - "\n", - "src_text = [\n", - " \"\"\" PG&E .... \"\"\"\n", - "]\n", - "\n", - "model_name = \"google/pegasus-xsum\"\n", - "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", - "tokenizer = PegasusTokenizer.from_pretrained(model_name)\n", - "model = PegasusForConditionalGeneration.from_pretrained(model_name).to(device)\n", - "batch = tokenizer(src_text, truncation=True, padding=\"longest\", return_tensors=\"pt\").to(device)\n", - "translated = model.generate(**batch)\n", - "tgt_text = tokenizer.batch_decode(translated, skip_special_tokens=True)\n", - "assert (\n", - " tgt_text[0]\n", - " == \"California's...\"\n", - ")\n", - "\n", - "\n", - " For further reference, see the local documentation here -\n", - "\n", - "# AutomataAgentConfig\n", - "\n", - "`AutomataAgentConfig` is a configuration class that helps configure, setup, and interact with an `AutomataAgent`. It contains various attributes such as `config_name`, `instruction_payload`, `llm_toolkits`, and others to provide the necessary setup and settings to be used by the agent.\n", - "\n", - "## Overview\n", - "\n", - "`AutomataAgentConfig` provides a way to load the agent configurations specified by the `AgentConfigName`. The configuration options can be set during the instantiation of the class or can be loaded using the `load` classmethod. It provides utility methods to load and setup agent configurations while also validating the provided settings. The class offers a convenient way to create an agent with custom configurations and includes closely related symbols like `AgentConfigName`.\n", - "\n", - "## Related Symbols\n", - "\n", - "- `config.config_enums.AgentConfigName`\n", - "- `automata.core.agent.agent.AutomataAgent`\n", - "- `config.automata_agent_config_utils.AutomataAgentConfigBuilder`\n", - "- `automata.core.coordinator.automata_instance.AutomataInstance`\n", - "\n", - "## Example\n", - "\n", - "The following is an example demonstrating how to create an instance of `AutomataAgentConfig` using a predefined configuration name.\n", - "\n", - "```python\n", - "from config.automata_agent_config import AutomataAgentConfig\n", - "from config.config_enums import AgentConfigName\n", - "\n", - "config_name = AgentConfigName.AUTOMATA_MAIN\n", - "config = AutomataAgentConfig.load(config_name)\n", - "```\n", - "\n", - "## Limitations\n", - "\n", - "The primary limitation of `AutomataAgentConfig` is that it relies on the predefined configuration files based on `AgentConfigName`. It can only load configurations from those files and cannot load custom configuration files. In addition, it assumes a specific directory structure for the configuration files.\n", - "\n", - "## Follow-up Questions:\n", - "\n", - "- How can we include custom configuration files for loading into the `AutomataAgentConfig` class?\n", - "\n", - "\n", - "\n", - " Some information is just included for contextual reference, and this may be omitted from the output documentation.\n", - " Start the documentation with a header that includes only the class name.\n", - " Lastly, if some points are unclear, note these in a footnote that begins with ## Follow-up Questions:\n", - ")\n" - ] - } - ], - "source": [ - "context = context_oracle._get_context(\"Provide new code which refactors the SymbolDocEmbeddingHandler class to be more robust.\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "35c3b343", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "class SymbolDocEmbeddingHandler(SymbolEmbeddingHandler):\n", - " \"\"\"\n", - " Handles a database and provider for `Symbol` documentation embeddings.\n", - " TODO: Add more robust logic for documentation updates.\n", - " \"\"\"\n", - "\n", - " def __init__(\n", - " self,\n", - " embedding_db: VectorDatabaseProvider,\n", - " embedding_provider: EmbeddingProvider,\n", - " completion_provider: LLMChatCompletionProvider,\n", - " symbol_search: SymbolSearch,\n", - " retriever: PyContextRetriever,\n", - " ) -> None:\n", - " super().__init__(embedding_db, embedding_provider)\n", - " self.symbol_search = symbol_search\n", - " self.retriever = retriever\n", - " self.completion_provider = completion_provider\n", - "\n", - " def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding:\n", - " return self.embedding_db.get(symbol)\n", - "\n", - " def process_embedding(self, symbol: Symbol) -> None:\n", - " \"\"\"\n", - " Processes the embedding for a `Symbol` by calling either `update_existing_embedding`\n", - " or `build_symbol_doc_embedding`, depending on whether the symbol is already in the database.\n", - "\n", - " Raises:\n", - " ValueError: If the symbol has no source code for the symbol.\n", - " \"\"\"\n", - " from automata.core.symbol.symbol_utils import ( # imported late for mocking\n", - " convert_to_fst_object,\n", - " )\n", - "\n", - " source_code = str(convert_to_fst_object(symbol))\n", - "\n", - " if not source_code:\n", - " raise ValueError(f\"Symbol {symbol} has no source code\")\n", - "\n", - " if self.embedding_db.contains(symbol):\n", - " self.update_existing_embedding(source_code, symbol)\n", - " return\n", - "\n", - " symbol_embedding = self.build_symbol_doc_embedding(source_code, symbol)\n", - " self.embedding_db.add(symbol_embedding)\n", - "\n", - " def build_symbol_doc_embedding(self, source_code: str, symbol: Symbol) -> SymbolDocEmbedding:\n", - " \"\"\"\n", - "\n", - " Build the embedding for a symbol's documentation.\n", - "\n", - " Example Document Output:\n", - " ===========\n", - "\n", - " AgentConfig\n", - " ===========\n", - "\n", - " ``AgentConfig`` is an abstract base class that provides a template for\n", - " configurations related to agents. It contains abstract methods like\n", - " ``setup()`` and ``load()`` that need to be implemented by subclasses.\n", - " This class also handles the configuration of arbitrary types during the\n", - " initialization.\n", - "\n", - " Overview\n", - " --------\n", - "\n", - " ``AgentConfig`` is designed for ensuring configurability of agents.\n", - " Subclasses need to provide implementations for the ``setup()`` and\n", - " ``load()`` methods in order to properly define the behavior during the\n", - " agent setup and configuration loading processes. This class follows the\n", - " BaseModel design, making it easy to extend and customize according to\n", - " specific agent requirements.\n", - "\n", - " Related Symbols\n", - " ---------------\n", - "\n", - " - ``automata.core.agent.instances.AutomataOpenAIAgentInstance.Config``\n", - " - ``automata.tests.unit.test_automata_agent_builder.test_builder_default_config``\n", - " - ``automata.tests.unit.test_task_environment.TestURL``\n", - " - ``automata.core.base.agent.AgentInstance.Config``\n", - "\n", - " Example\n", - " -------\n", - "\n", - " The following example demonstrates how to create a custom agent\n", - " configuration by extending the ``AgentConfig`` class:\n", - "\n", - " .. code:: python\n", - "\n", - " from config.config_types import AgentConfig\n", - "\n", - " class CustomAgentConfig(AgentConfig):\n", - "\n", - " def setup(self):\n", - " # Define your custom agent setup process\n", - " pass\n", - "\n", - " @classmethod\n", - " def load(cls, config_name: AgentConfigName) -> \"CustomAgentConfig\":\n", - " # Load the config for your custom agent\n", - " pass\n", - "\n", - " Limitations\n", - " -----------\n", - "\n", - " ``AgentConfig`` itself is an abstract class and cannot directly be\n", - " instantiated. It must be subclassed, and its methods need to be\n", - " implemented by the extending class according to the specific agent\n", - " requirements. Additionally, the current implementation allows for\n", - " arbitrary types, which may lead to code that is not type-safe.\n", - "\n", - " Follow-up Questions:\n", - " --------------------\n", - "\n", - " - How can we ensure type safety while maintaining the flexibility and\n", - " customizability provided by ``AgentConfig``?\n", - "\n", - "\n", - "\n", - " \"\"\"\n", - " abbreviated_selected_symbol = symbol.uri.split(\"/\")[1].split(\"#\")[0]\n", - "\n", - " search_list = self.generate_search_list(abbreviated_selected_symbol)\n", - "\n", - " self.retriever.reset()\n", - " self.retriever.process_symbol(symbol, search_list)\n", - "\n", - " prompt = Template(DEFAULT_DOC_GENERATION_PROMPT).render(\n", - " symbol_dotpath=abbreviated_selected_symbol,\n", - " symbol_context=self.retriever.get_context_buffer(),\n", - " )\n", - "\n", - " document = self.completion_provider.standalone_call(prompt)\n", - " summary = self.completion_provider.standalone_call(\n", - " f\"Condense the documentation below down to one to two concise paragraphs:\\n {document}\\nIf there is an example, include that in full in the output.\"\n", - " )\n", - " embedding = self.embedding_provider.build_embedding_array(document)\n", - "\n", - " return SymbolDocEmbedding(\n", - " symbol,\n", - " vector=embedding,\n", - " source_code=source_code,\n", - " document=document,\n", - " summary=summary,\n", - " context=prompt,\n", - " )\n", - "\n", - " def generate_search_list(self, abbreviated_selected_symbol: str) -> List[Symbol]:\n", - " \"\"\"Generate a search list by splicing the search results on the symbol with the search results biased on tests.\"\"\"\n", - " search_results = self.symbol_search.symbol_rank_search(f\"{abbreviated_selected_symbol}\")\n", - " search_results_with_tests = [ele for ele in search_results if \"test\" in ele[0].uri]\n", - " search_results_without_tests = [ele for ele in search_results if \"test\" not in ele[0].uri]\n", - " search_list: List[Symbol] = []\n", - " for i in range(max(len(search_results_with_tests), len(search_results_without_tests))):\n", - " set_list = set(search_list)\n", - " if i < len(search_results_with_tests) and search_results_with_tests[i] not in set_list:\n", - " search_list.append(search_results_with_tests[i][0])\n", - " if (\n", - " i < len(search_results_without_tests)\n", - " and search_results_without_tests[i] not in set_list\n", - " ):\n", - " search_list.append(search_results_without_tests[i][0])\n", - " return search_list\n", - "\n", - " def update_existing_embedding(self, source_code: str, symbol: Symbol) -> None:\n", - " \"\"\"\n", - " Check if the embedding for a symbol needs to be updated.\n", - " This is done by comparing the source code of the symbol to the source code\n", - "\n", - "\n", - " FIXME - We need to add logic similar to what we have\n", - " in the code embedding handler to update documentation\n", - " when a sufficient threshold has been breached\n", - " the following is a representative snippet -\n", - " if existing_embedding.embedding_source != source_code:\n", - " logger.debug(\"Building a new embedding for %s\", symbol)\n", - " self.embedding_db.discard(symbol)\n", - " symbol_embedding = self.build_embedding_array(source_code, symbol)\n", - " self.embedding_db.add(symbol_embedding)\n", - " \"\"\"\n", - " existing_embedding = self.embedding_db.get(symbol)\n", - " # For now, we will just automatically roll the existing documentation forward\n", - " if existing_embedding.symbol != symbol or existing_embedding.source_code != source_code:\n", - " logger.debug(\n", - " f\"Rolling forward the embedding for {existing_embedding.symbol} to {symbol}\"\n", - " )\n", - " self.embedding_db.discard(symbol)\n", - " existing_embedding.symbol = symbol\n", - " existing_embedding.source_code = source_code\n", - " self.embedding_db.add(existing_embedding)\n", - " else:\n", - " logger.debug(\"Passing for %s\", symbol)\n", - "# SymbolDocEmbeddingHandler\n", - "\n", - "`SymbolDocEmbeddingHandler` is a class that handles the creation and retrieval of documentation embeddings for the source code of a given Python symbol (e.g., classes, functions, etc.). The embeddings are generated using GPT-4, and the handler also provides methods to fetch a symbol's documentation summary and update existing documentation embeddings.\n", - "\n", - "## Overview\n", - "\n", - "The primary goal of the `SymbolDocEmbeddingHandler` is to produce a documentation embedding for a given Python symbol. These embeddings can be further used to fetch or generate documentation for the symbols or to compare their documentation to other symbols. The handler utilizes context retrieval methods and language models (specifically GPT-4) to generate the embeddings and summaries.\n", - "\n", - "## Related Symbols\n", - "\n", - "- `automata.core.embedding.code_embedding.SymbolCodeEmbeddingHandler`\n", - "- `automata.core.context.py_context.retriever.PyContextRetriever`\n", - "- `automata.core.symbol.search.symbol_search.SymbolSearch`\n", - "- `automata.core.embedding.embedding_types.EmbeddingProvider`\n", - "- `automata.core.database.vector.VectorDatabaseProvider`\n", - "- `automata.core.symbol.symbol_types.Symbol`\n", - "- `automata.core.symbol.symbol_types.SymbolDocEmbedding`\n", - "\n", - "## Example\n", - "\n", - "The following example demonstrates how to create a `SymbolDocEmbeddingHandler` and generate a documentation embedding for a given symbol.\n", - "\n", - "```python\n", - "from automata.config.prompt.docs import DEFAULT_DOC_GENERATION_PROMPT\n", - "from automata.core.context.py_context.retriever import PyContextRetriever\n", - "from automata.core.database.vector import VectorDatabaseProvider\n", - "from automata.core.embedding.embedding_types import EmbeddingProvider\n", - "from automata.core.embedding.doc_embedding import SymbolDocEmbeddingHandler\n", - "from automata.core.symbol.search.symbol_search import SymbolSearch\n", - "from automata.core.symbol.symbol_types import Symbol\n", - "\n", - "# Initialize the necessary components\n", - "embedding_db = VectorDatabaseProvider()\n", - "embedding_provider = EmbeddingProvider(model=\"gpt-4\")\n", - "symbol_search = SymbolSearch()\n", - "retriever = PyContextRetriever()\n", - "\n", - "# Instantiate the SymbolDocEmbeddingHandler\n", - "doc_embedding_handler = SymbolDocEmbeddingHandler(embedding_db, embedding_provider, symbol_search, retriever)\n", - "\n", - "# Create a sample symbol\n", - "symbol = Symbol.from_string(\"sample-uri\")\n", - "\n", - "# Generate the documentation embedding for the symbol\n", - "symbol_doc_embedding = doc_embedding_handler.build_symbol_doc_embedding(\"def sample_function(): pass\", symbol)\n", - "\n", - "# Get the generated embedding\n", - "embedding = symbol_doc_embedding.vector\n", - "\n", - "# Get the summary for the documentation\n", - "summary = symbol_doc_embedding.summary\n", - "```\n", - "\n", - "## Limitations\n", - "\n", - "The primary limitation of `SymbolDocEmbeddingHandler` is its dependency on GPT-4, which may not always generate high-quality, accurate, or relevant summaries for the symbol's documentation. Additionally, the handler does not provide advanced methods for updating documentation in scenarios where more complex logic is required, such as when dependencies interact or when underlying documentation changes.\n", - "\n", - "## Follow-up Questions:\n", - "\n", - "- Can `SymbolDocEmbeddingHandler` be extended to support other language models for generating documentation embeddings?\n", - "- How can we improve the handler to handle more complex scenarios of documentation updates efficiently?automata.core.embedding.doc_embedding.SymbolDocEmbeddingHandler\n", - "`SymbolDocEmbeddingHandler` is a class that manages the creation and retrieval of documentation embeddings for Python symbols (e.g., classes, functions) using GPT-4. It offers methods for fetching a symbol's documentation summary and updating existing documentation embeddings. The primary goal is to produce documentation embeddings for comparison or documentation generation purposes, leveraging context retrieval methods and language models.\n", - "\n", - "```python\n", - "from automata.config.prompt.docs import DEFAULT_DOC_GENERATION_PROMPT\n", - "from automata.core.context.py_context.retriever import PyContextRetriever\n", - "from automata.core.database.vector import VectorDatabaseProvider\n", - "from automata.core.embedding.embedding_types import EmbeddingProvider\n", - "from automata.core.embedding.doc_embedding import SymbolDocEmbeddingHandler\n", - "from automata.core.symbol.search.symbol_search import SymbolSearch\n", - "from automata.core.symbol.symbol_types import Symbol\n", - "\n", - "# Initialize the necessary components\n", - "embedding_db = VectorDatabaseProvider()\n", - "embedding_provider = EmbeddingProvider(model=\"gpt-4\")\n", - "symbol_search = SymbolSearch()\n", - "retriever = PyContextRetriever()\n", - "\n", - "# Instantiate the SymbolDocEmbeddingHandler\n", - "doc_embedding_handler = SymbolDocEmbeddingHandler(embedding_db, embedding_provider, symbol_search, retriever)\n", - "\n", - "# Create a sample symbol\n", - "symbol = Symbol.from_string(\"sample-uri\")\n", - "\n", - "# Generate the documentation embedding for the symbol\n", - "symbol_doc_embedding = doc_embedding_handler.build_symbol_doc_embedding(\"def sample_function(): pass\", symbol)\n", - "\n", - "# Get the generated embedding\n", - "embedding = symbol_doc_embedding.vector\n", - "\n", - "# Get the summary for the documentation\n", - "summary = symbol_doc_embedding.summary\n", - "```\n", - "Limitations include dependency on GPT-4 for accuracy and relevance and a lack of advanced methods for updating documentation in complex scenarios. Future improvements may involve extending support to other language models and handling more complex documentation updates efficiently.automata.core.embedding.code_embedding.SymbolCodeEmbeddingHandler\n", - "The `SymbolCodeEmbeddingHandler` class manages embeddings for source code symbols, accepting an embedding database (`VectorDatabaseProvider`) and an embedding provider (`EmbeddingProvider`) as inputs. It offers methods such as `build_embedding`, `get_embedding`, and `update_embedding` to build, retrieve, and update embeddings. An instance of `SymbolCodeEmbeddingHandler` can be created as follows:\n", - "\n", - "```python\n", - "from automata.core.embedding.embedding_types import EmbeddingProvider\n", - "from automata.core.symbol.symbol_types import Symbol\n", - "from automata.core.database.vector import VectorDatabaseProvider\n", - "from automata.core.embedding.code_embedding import SymbolCodeEmbeddingHandler\n", - "\n", - "embedding_db = VectorDatabaseProvider()\n", - "embedding_provider = EmbeddingProvider()\n", - "\n", - "handler = SymbolCodeEmbeddingHandler(embedding_db=embedding_db, embedding_provider=embedding_provider)\n", - "```\n", - "\n", - "Then, use the instance to build, get, and update embeddings for a given symbol. Note that `SymbolCodeEmbeddingHandler` relies on the `EmbeddingProvider` to generate embeddings, and a new implementation may be required for a different algorithm.automata.core.symbol.symbol_types.SymbolDocEmbedding\n", - "The SymbolDocEmbedding class creates embeddings for symbol documents using context from related symbols such as source code and summaries. It extends the SymbolEmbedding class and its performance depends on the quality of contextual information provided. Here is an example of creating an instance of SymbolDocEmbedding:\n", - "\n", - "```python\n", - "from automata.core.symbol.symbol_types import SymbolDocEmbedding\n", - "from automata.core.symbol.parser import parse_symbol\n", - "import numpy as np\n", - "\n", - "symbol = parse_symbol(\"your_symbol_here\")\n", - "document = \"A document string containing information about the symbol.\"\n", - "vector = np.random.rand(10)\n", - "\n", - "symbol_doc_embedding = SymbolDocEmbedding(symbol, document, vector)\n", - "```\n", - "Possible improvements to the SymbolDocEmbedding class include providing more context or improving the quality of the contextual information.automata.core.symbol.symbol_types.Symbol\n", - "`Symbol` in the Automata library represents a standardized string for identifying a class, method, or local variable. It can be initialized using its URI, scheme, package, and descriptors, and provides various utility methods for extracting more information and performing related operations. Examples of usage include parsing a string into a `Symbol` object using the `automata.core.symbol.parser.parse_symbol` method. Some available methods are `is_local`, `is_meta`, `is_parameter`, and `parent` for querying metadata about the symbol. However, any deviation from the expected syntax in the string representation may yield unexpected results, and using the `parse_symbol` method introduces an extra dependency.automata.core.llm.embedding.SymbolEmbeddingHandler\n", - "SymbolEmbeddingHandler is an abstract class for managing symbol embeddings, providing methods to get, update, and store symbol embeddings. This class includes abstract methods such as `__init__`, `get_embedding`, and `update_embedding`, which are implemented in child classes like `SymbolCodeEmbeddingHandler` and `SymbolDocEmbeddingHandler` for handling code symbols and symbol documents, respectively. Additionally, the `get_all_supported_symbols` method retrieves all available symbols in the embedding database. However, since SymbolEmbeddingHandler is an abstract class, it cannot be instantiated directly and must be extended and implemented by other classes.\n", - "\n", - "For example, using a `SymbolCodeEmbeddingHandler` instance to retrieve a specific symbol's embedding involves first creating instances for the database and embedding provider, then creating a `SymbolCodeEmbeddingHandler` instance and using `get_embedding()` with the desired symbol.\n" - ] - } - ], - "source": [ - "print(context)" + " source_code = self.embedding_builder.fetch_embedding_source_code(symbol)\n", + "\n", + " if not source_code:\n", + " raise ValueError(f\"Symbol {symbol} has no source code\")\n", + "\n", + " if self.embedding_db.contains(symbol.dotpath):\n", + " self.update_existing_embedding(source_code, symbol)\n", + " return\n", + " # else:\n", + " symbol_embedding = self.embedding_builder.build(source_code, symbol)\n", + " self.embedding_db.add(symbol_embedding)\n", + "\n", + " def update_existing_embedding(self, source_code: str, symbol: Symbol) -> None:\n", + " existing_embedding = self.embedding_db.get(symbol.dotpath)\n", + " if existing_embedding.symbol != symbol or existing_embedding.source_code != source_code:\n", + " logger.debug(\n", + " f\"Rolling forward the embedding for {existing_embedding.symbol} to {symbol}\"\n", + " )\n", + " self.embedding_db.discard(symbol.dotpath)\n", + " existing_embedding.symbol = symbol\n", + " existing_embedding.source_code = source_code\n", + " self.embedding_db.add(existing_embedding)\n", + " else:\n", + " logger.debug(\"Passing for %s\", symbol)\n", + "Documentation Summary:\n", + "\n", + "The SymbolDocEmbeddingHandler is a class that manages the process of embedding symbols, including retrieving existing symbol embeddings, processing them, and updating them as necessary. It operates by using a database of symbol embeddings (JSONSymbolEmbeddingVectorDatabase) and a builder for symbol document embeddings (SymbolDocEmbeddingBuilder). An example of how to use SymbolDocEmbeddingHandler is provided in the documentation. However, it assumes that all symbols have the available source code for embedding, failing which, a ValueError is raised. It also does not make any changes if the symbol already exists in the database with its source code unchanged. Further clarity on the embedding process, its utilization, downstream usage of the generated embeddings, future plans to proactively handle changes in a symbol's source code, and scalability of the current implementation were identified as areas of discussion.\n", + "Fetching related context now for 1 symbols...\n", + "\n", + "automata.core.symbol_embedding.base.SymbolEmbeddingHandler\n", + "\n", + "`SymbolEmbeddingHandler` is an abstract class used to handle symbol embeddings for different elements of Python code such as classes, methods or local variables. This is aimed at converting these symbols into a form that machine learning algorithms can process. The class consists of abstract methods that are meant to be implemented by child classes, which handle the specifics of the symbol embedding process. This can include methods for establishing initial settings for the embedding database and builders, filtering symbols, and fetching and processing symbol embeddings. The class also contains methods to fetch embeddings in the order they were added.\n", + "\n", + "Notably, the actual functionality and performance of `SymbolEmbeddingHandler` heavily relies on its child classes. For instance, child classes like `SymbolDocEmbeddingHandler` and `SymbolCodeEmbeddingHandler` can be instantiated to manage different databases of symbol embeddings. Here's an example usage with a mock setup:\n", + "\n", + "```python\n", + "# Mock EmbeddingBuilder and JSONSymbolEmbeddingVectorDatabase\n", + "mock_provider = Mock(EmbeddingBuilder)\n", + "mock_db = MagicMock(JSONSymbolEmbeddingVectorDatabase)\n", + " \n", + "# Create an instance of SymbolCodeEmbeddingHandler \n", + "embedding_handler = SymbolCodeEmbeddingHandler(embedding_builder=mock_provider, embedding_db=mock_db)\n", + " \n", + "# Use the get_embedding method\n", + "symbol_embedding = embedding_handler.get_embedding(Symbol(\"test\"))\n", + "```\n", + "\n", + "In this context, `EmbeddingBuilder` and `JSONSymbolEmbeddingVectorDatabase` should be replaced with their actual implementations in a real-world scenario.\n", + "\n", + "\n" ] } ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.13" - } + "source": [ + "print(context)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 }, - "nbformat": 4, - "nbformat_minor": 5 - } \ No newline at end of file + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/automata/notebooks/demo_symbol_search.ipynb b/automata/notebooks/demo_symbol_search.ipynb index 83154e62..fe1c906c 100644 --- a/automata/notebooks/demo_symbol_search.ipynb +++ b/automata/notebooks/demo_symbol_search.ipynb @@ -107,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "988b52cc", "metadata": { "scrolled": false @@ -118,7 +118,33 @@ "output_type": "stream", "text": [ "Error computing bounding box for scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l2`/main().: Module descriptor automata.cli.scripts.run_doc_embedding_l2 not found\n", - "Error computing bounding box for scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l3`/main().: Module descriptor automata.cli.scripts.run_doc_embedding_l3 not found\n" + "Error computing bounding box for scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l3`/main().: Module descriptor automata.cli.scripts.run_doc_embedding_l3 not found\n", + " 1%|██▎ | 11/816 [00:00<00:07, 107.25it/s]Error processing scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l2`/main().: Symbol(scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l2`/main()., scip-python, Package(python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e), (Descriptor(automata.cli.scripts.run_doc_embedding_l2, 1), Descriptor(main, 4)))\n", + "Error processing scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l3`/main().: Symbol(scip-python python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e `automata.cli.scripts.run_doc_embedding_l3`/main()., scip-python, Package(python automata 0cc8e17eb22689787fe72715fc99e5bca7cfab0e), (Descriptor(automata.cli.scripts.run_doc_embedding_l3, 1), Descriptor(main, 4)))\n", + "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 816/816 [00:05<00:00, 157.08it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rank 0 = automata.core.symbol.base.Symbol with rank 0.006\n", + "rank 1 = automata.core.agent.providers.OpenAIAutomataAgent with rank 0.003\n", + "rank 2 = automata.core.code_handling.py.writer.PyWriter with rank 0.003\n", + "rank 3 = automata.core.symbol.graph.SymbolGraph with rank 0.003\n", + "rank 4 = automata.core.tasks.tasks.AutomataTask with rank 0.003\n", + "rank 5 = automata.core.code_handling.py.reader.PyReader with rank 0.003\n", + "rank 6 = automata.core.tools.base.Tool with rank 0.003\n", + "rank 7 = automata.core.llm.foundation.LLMChatMessage with rank 0.002\n", + "rank 8 = automata.core.symbol_embedding.base.JSONSymbolEmbeddingVectorDatabase with rank 0.002\n", + "rank 9 = automata.core.singletons.dependency_factory.DependencyFactory with rank 0.002\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" ] } ], @@ -130,12 +156,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "2ce0bb66", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rank 0 = automata.core.symbol.graph.SymbolGraph with rank 0.020\n", + "rank 1 = automata.core.symbol.base.Symbol with rank 0.012\n", + "rank 2 = automata.tests.unit.test_symbol_graph.test_build_real_graph with rank 0.010\n", + "rank 3 = automata.tests.unit.test_symbol_graph.test_build_real_graph_and_subgraph with rank 0.010\n", + "rank 4 = automata.tests.unit.test_symbol_rank.test_get_ranks_small_graph with rank 0.010\n", + "rank 5 = automata.core.singletons.dependency_factory.DependencyFactory.create_symbol_graph with rank 0.009\n", + "rank 6 = automata.core.singletons.dependency_factory.DependencyFactory.create_subgraph with rank 0.008\n", + "rank 7 = automata.core.symbol.graph.GraphBuilder with rank 0.008\n", + "rank 8 = automata.tests.unit.test_synchronizer.test_build_graph_and_handler_and_synchronize with rank 0.008\n", + "rank 9 = automata.core.symbol.graph.SymbolGraph.filter_symbols with rank 0.007\n" + ] + } + ], "source": [ "symbol_rank_search_results = symbol_search.symbol_rank_search(\"SymbolGraph\")\n", "raw_ranks = symbol_search.symbol_rank.get_ranks()\n", From f006406df18aa0df478233dcb0e7a478cd32f009 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 5 Jul 2023 07:18:25 -0400 Subject: [PATCH 12/14] further tweaks --- .setup.sh.example | 33 +- README.md | 4 +- automata/cli/scripts/run_agent.py | 4 +- automata/config/openai_agent.py | 34 +- automata/config/symbol/index.scip | Bin 2358800 -> 2331766 bytes .../config/symbol/symbol_code_embedding.json | 4 +- .../symbol/symbol_doc_embedding_l2.json | 4 +- .../symbol/symbol_doc_embedding_l3.json | 2 +- automata/core/agent/instances.py | 4 +- automata/core/agent/providers.py | 4 +- .../symbol_synchronization.py | 22 +- automata/docs/config/agent_config.rst | 10 +- automata/docs/config/agent_config_builder.rst | 10 +- .../config/automata_open_ai_agent_config.rst | 18 +- .../automata_open_ai_agent_config_builder.rst | 18 +- automata/docs/config/base/config.rst | 4 +- .../config/instruction_config_version.rst | 14 +- automata/docs/config/llm_provider.rst | 6 +- automata/docs/config/openai_agent/config.rst | 22 +- .../openai_agent/template_formatter.rst | 20 +- .../core/agent/open_ai_agent_tool_builder.rst | 2 +- .../agent/open_ai_automata_agent_instance.rst | 12 +- automata/docs/core/base/agent/config.rst | 4 +- automata/notebooks/demo_run_agent.ipynb | 639 ++---------------- automata/tests/conftest.py | 5 +- .../tests/unit/test_automata_agent_builder.py | 8 +- 26 files changed, 215 insertions(+), 692 deletions(-) diff --git a/.setup.sh.example b/.setup.sh.example index 5aa87048..4836174c 100644 --- a/.setup.sh.example +++ b/.setup.sh.example @@ -1,5 +1,3 @@ -## NOTE - the code below is contained in setup.sh.example - # Create the local environment python3 -m venv local_env source local_env/bin/activate @@ -12,22 +10,33 @@ pre-commit install # Set up .env cp .env.example .env -OPEN_API_KEY='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' -GITHUB_API_KEY='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' +OPEN_API_KEY=your_openai_api_key_here +GITHUB_API_KEY=your_github_api_key CONVERSATION_DB_PATH="$PWD/conversation_db.sqlite3" TASK_DB_PATH="$PWD/task_db.sqlite3" TASKS_OUTPUT_PATH="$PWD/tasks" REPOSITORY_NAME="emrgnt-cmplxty/Automata" -sed -i "s|your_openai_api_key|$OPEN_API_KEY|" .env -sed -i "s|your_github_api_key|$GITHUB_API_KEY|" .env -sed -i "s|your_conversation_db_path|$CONVERSATION_DB_PATH|" .env -sed -i "s|your_task_db_path|$TASK_DB_PATH|" .env -sed -i "s|your_tasks_output_path|$TASKS_OUTPUT_PATH|" .env -sed -i "s|your_repository_name|$REPOSITORY_NAME|" .env + +# Detect the operating system +if [[ "$OSTYPE" == "darwin"* ]]; then + # Mac OSX + sed -i '' "s|your_openai_api_key|$OPEN_API_KEY|" .env + sed -i '' "s|your_github_api_key|$GITHUB_API_KEY|" .env + sed -i '' "s|your_conversation_db_path|$CONVERSATION_DB_PATH|" .env + sed -i '' "s|your_task_db_path|$TASK_DB_PATH|" .env + sed -i '' "s|your_tasks_output_path|$TASKS_OUTPUT_PATH|" .env + sed -i '' "s|your_repository_name|$REPOSITORY_NAME|" .env +else + # Linux and others + sed -i "s|your_openai_api_key|$OPEN_API_KEY|" .env + sed -i "s|your_github_api_key|$GITHUB_API_KEY|" .env + sed -i "s|your_conversation_db_path|$CONVERSATION_DB_PATH|" .env + sed -i "s|your_task_db_path|$TASK_DB_PATH|" .env + sed -i "s|your_tasks_output_path|$TASKS_OUTPUT_PATH|" .env + sed -i "s|your_repository_name|$REPOSITORY_NAME|" .env +fi # Additional Notes - # Default Max Workers is 8, manually change the .env to update this quantity. -# For MAC users, the example should read as follows - -## sed -i '' "s|your_openai_api_key|$OPEN_API_KEY|" .env # Fetch the submodules git submodule update --init --recursive diff --git a/README.md b/README.md index b6f0235a..c88099cd 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Sometimes the best way to understand a complicated system is to start by underst ```python import logging -from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder +from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.core.agent.providers import OpenAIAutomataAgent from automata.core.tools.tool_utils import AgentToolFactory from automata.core.singletons.dependency_factory import dependency_factory @@ -123,7 +123,7 @@ tools = AgentToolFactory.build_tools(toolkit_list, **tool_dependencies) # Build the agent config agent_config = ( - AutomataOpenAIAgentConfigBuilder.from_name("automata-main") + OpenAIAutomataAgentConfigBuilder.from_name("automata-main") .with_tools(tools) .with_model("gpt-4") .build() diff --git a/automata/cli/scripts/run_agent.py b/automata/cli/scripts/run_agent.py index a38304fc..7a969aea 100644 --- a/automata/cli/scripts/run_agent.py +++ b/automata/cli/scripts/run_agent.py @@ -3,7 +3,7 @@ from automata.config import GITHUB_API_KEY, REPOSITORY_NAME from automata.config.base import AgentConfigName -from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder +from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.core.agent.providers import OpenAIAutomataAgent from automata.core.github_management.client import GitHubClient from automata.core.singletons.dependency_factory import dependency_factory @@ -63,7 +63,7 @@ def main(*args, **kwargs): logger.info("Done building tools...") config_name = AgentConfigName(kwargs.get("agent_name", "automata-main")) agent_config = ( - AutomataOpenAIAgentConfigBuilder.from_name(config_name) + OpenAIAutomataAgentConfigBuilder.from_name(config_name) .with_tools(tools) .with_model(kwargs.get("model", "gpt-4-0613")) .build() diff --git a/automata/config/openai_agent.py b/automata/config/openai_agent.py index 89b10203..26717df7 100644 --- a/automata/config/openai_agent.py +++ b/automata/config/openai_agent.py @@ -14,7 +14,7 @@ from automata.core.singletons.dependency_factory import dependency_factory -class AutomataOpenAIAgentConfig(AgentConfig): +class OpenAIAutomataAgentConfig(AgentConfig): """A class to hold the configuration for the Automata OpenAI Agent.""" class Config: @@ -37,7 +37,7 @@ class Config: class TemplateFormatter: @staticmethod def create_default_formatter( - config: "AutomataOpenAIAgentConfig", + config: "OpenAIAutomataAgentConfig", symbol_rank: SymbolRank, max_default_overview_symbols: int = 100, ) -> Dict[str, str]: @@ -62,7 +62,7 @@ def setup(self) -> None: self.session_id = str(uuid.uuid4()) if not self.system_template_formatter: self.system_template_formatter = ( - AutomataOpenAIAgentConfig.TemplateFormatter.create_default_formatter( + OpenAIAutomataAgentConfig.TemplateFormatter.create_default_formatter( self, dependency_factory.get("symbol_rank") ) ) @@ -70,13 +70,13 @@ def setup(self) -> None: self.system_instruction = self._formatted_instruction() @classmethod - def load(cls, config_name: AgentConfigName) -> "AutomataOpenAIAgentConfig": + def load(cls, config_name: AgentConfigName) -> "OpenAIAutomataAgentConfig": """Loads the config for the agent.""" if config_name == AgentConfigName.DEFAULT: - return AutomataOpenAIAgentConfig() + return OpenAIAutomataAgentConfig() loaded_yaml = cls._load_automata_yaml_config(config_name) - return AutomataOpenAIAgentConfig(**loaded_yaml) + return OpenAIAutomataAgentConfig(**loaded_yaml) @staticmethod def get_llm_provider() -> LLMProvider: @@ -105,29 +105,29 @@ def _formatted_instruction(self) -> str: return formatted_instruction -class AutomataOpenAIAgentConfigBuilder(AgentConfigBuilder): +class OpenAIAutomataAgentConfigBuilder(AgentConfigBuilder): """ The AutomataAgentConfigBuilder class is a builder for constructing instances of AutomataAgents. It offers a flexible and easy-to-use interface for setting various properties of the agent before instantiation. """ - _config: AutomataOpenAIAgentConfig = PrivateAttr() + _config: OpenAIAutomataAgentConfig = PrivateAttr() @staticmethod - def create_config(config_name: Optional[AgentConfigName]) -> AutomataOpenAIAgentConfig: # type: ignore + def create_config(config_name: Optional[AgentConfigName]) -> OpenAIAutomataAgentConfig: # type: ignore if config_name: - return AutomataOpenAIAgentConfig.load(config_name) - return AutomataOpenAIAgentConfig() + return OpenAIAutomataAgentConfig.load(config_name) + return OpenAIAutomataAgentConfig() def with_model(self, model: str) -> AgentConfigBuilder: - if model not in AutomataOpenAIAgentConfig.Config.SUPPORTED_MODELS: + if model not in OpenAIAutomataAgentConfig.Config.SUPPORTED_MODELS: raise ValueError(f"Model {model} not found in Supported OpenAI list of models.") self._config.model = model return self def with_system_template_formatter( self, system_template_formatter: Dict[str, str] - ) -> "AutomataOpenAIAgentConfigBuilder": + ) -> "OpenAIAutomataAgentConfigBuilder": """ Set the template formatter for the AutomataAgent instance and validate if it is supported. @@ -142,13 +142,13 @@ def with_system_template_formatter( def with_instruction_version( self, instruction_version: str - ) -> "AutomataOpenAIAgentConfigBuilder": + ) -> "OpenAIAutomataAgentConfigBuilder": self._validate_type(instruction_version, str, "Instruction version") self._config.instruction_version = InstructionConfigVersion(instruction_version) return self @staticmethod - def create_from_args(*args, **kwargs) -> AutomataOpenAIAgentConfig: + def create_from_args(*args, **kwargs) -> OpenAIAutomataAgentConfig: """Creates an AutomataAgentConfig instance from the provided arguments.""" config_to_load = kwargs.get("config_to_load", None) @@ -161,11 +161,11 @@ def create_from_args(*args, **kwargs) -> AutomataOpenAIAgentConfig: raise ValueError("Config to load and config cannot both be specified.") if config_to_load: - builder = AutomataOpenAIAgentConfigBuilder.from_name( + builder = OpenAIAutomataAgentConfigBuilder.from_name( config_name=AgentConfigName(config_to_load) ) else: - builder = AutomataOpenAIAgentConfigBuilder.from_config(config) # type: ignore + builder = OpenAIAutomataAgentConfigBuilder.from_config(config) # type: ignore if "model" in kwargs: builder = builder.with_model(kwargs["model"]) diff --git a/automata/config/symbol/index.scip b/automata/config/symbol/index.scip index b4b4f7a6754169f2c44ff83694625ad4e0982397..659bb7e21c4b46f64baef02ca974848e36e60e63 100644 GIT binary patch literal 2331766 zcmeFad2k%*l_$nz0c0^jfCkTKfnrD+B`(RUr0xCgPvrvVu zDv(5<8qMrTGm=JX9jzT5BaPL&yLQBS*AB1k*yEoK$A)7a zVLKe*-}}BitFpjCq4MB(^oP2;keT26-uK@7-u=XDQnT2QUrwzJtZft?XERd$P;@Lh zEDx`w(rRpQaPVGU&E*HP%h|O0D3^Vz4omO#9v{|Z zkBd55qF83pSci7{RCIR<`B2Gz2?*)i_4=My6R8Y8*DT-jO6~U?jmP;iw#`elV7)B4 zvEXucbv2Pm=B*2gQW^_(AD5P0*rB-~(Ayh{wusV2F|;$(AWb@~#@S^cUr44?OUh_; zN?BS@r3+jS?sTL|gG{7<30N3U>S!gN zbdf&wWvt{PNO6$M?nddp!vX3XtyC=N(%DCkQkh2ryAiy2Uxc*-z;2f!+lQW z?6aOzb%vr{3epz@EZ=fm`i$Vi`n^DXJgq)e)A4*E7XdhD0L{rhX~Y4T(t|T@YrISs z^#L)ouWp~TJDpulq?I8~X!{NvahK5cwRCKe&}Qc@-MbRy{|~U~2=?!84#p8MEFK6q znOF?d4Sb-v%|$FiM?282RH&or>^gt*@~tTQKMjXXdkzN$hmb!~V@ri(VUY3tM0#DF z%jL3+nu#o=!Lvcx5}2#GPSVL@7|ezHzxmKfAMXFK^c%oUbMLV9o`am&me91QI*z)B zDX}74;53h%(Qz__U%)Dd>Ka^R6&NFj4tCVa7}0piP*#(v<-!b8T=^Y{LqF8nuWxXe zZ@DGBU;kx<%h*=@;+B5SF7ws{traqpE**+4b8Mtl?lQp+OIPtr&nfAG0|k}dH2PPs zGyR|^4^4q?Esi9dd29cuiwJ;tY#lqj9q|amqg~kLlHn1SQusXVnned(R>6(Tu!$z2 zvE&kkYz|fjoMY>29NE}Ohl@K|!{>J&lpeXYleI)XPnJwUeO}-j0z-Ftk%Y84s%Z2Bp(!r+b7WR8>(=fM9k5E@DNxA7(As3&Bp`QA^(o$^@ z%UJ*npe_zxA>!}R%qW8ij=9SO$Gl~N_r%cgy2DbgHrOk3R=M>ISTCu@)zu|6nS>jN zuqjBNhB9&dh%7zxes!HkevLrr=#rlM074@7C{KL)>jcB`Q_{OW!0_am4h3Q2IUj4G)lNahkH+L)fJk`6f{@p@W7bP1%+Ln)0z?7|t z8Yo+n-YQ#@+gG+Ac25InO)5^n3<5Qt-q++8HHMirdivlIR~YgIqLB-xFd`1XL0gx< zBnjPp%3E@pstGwwwRfB31T|g^o%KnLJ?E(!d(KNW_PmQ)A6&ray;WmB5JMO0TBL#t z7hoyJuVwRv_*yQztmgBidJ2r)FSNFM#O_7w>-rdZpDrBj@xbULO{5qIT_yWF1jWe# z>3u(r!lIQCHm3KCxPpyhoydv{yJAMZxart=*L`utC$czbQ_g1mQ_hGUW}uw;OAkyx zo2h|*HtX$$I=lS~l}K<7-Y_>DFu#cas>D@4R0-rl&I^qm=R&gh z-7B7IFt2#2!CZ4ugMr`bnumU?Yl`8wn&ghAYyCsI4tyHFz)g4E#qC02yY8*RmJ>ra zkZ724T}xmo!dy#xhBX_Tq>N{4>YCYeEZp28WxZQi*T&$Wya8*eU)(S9iSCuI_AK zy8@}*g>vOaxxpr+#v%`Qp-}m8*lyKVnTEDeLRqf9N`F*F7HiFGb!>@Pl(vY93%Px9 zagj%$MJ|%~=%bq$s}+CxiUH;-h$5^enSb{$!`ti z`+?LxQhwOK^zk5FF^ZKt>lvl+SXC&MO)*m0l(p2FnoecZsJtP%AJi<#qhs2l{I2MR zp{@(e#X$$uMWQ^QD!(uKn7JnZS35=buQOW^6=s3_-wWHKMvcL>JcRCn0fU?dSXEYc zzf#y(Q_n$k^()}~#Cp1LZlqs%tftq_b+Z(BCA-3?(Ref39brPEH2BU%MnyzEpv%Zn zx!c@f@5*{+nQAp746K+ko!MZba!7xCOg`@TxCXoVhOxkSnFVNz=Ht&rHr%fP|IWq!3^nx_$g67!l;@~PC7sF_=oVnFD4BI6 z*XQy|A*--2;Wj9zM$!$zJuh3h85(usF`)c zzhZ2Mln8q}2ez%yg<03i{g$zu%_eiA+jm2C^rQ2k6Gq)AVefv<1t$Sto znKp*^xpt-qyfrp9dzLVMVDABab5xp*gz*DS&09?vH+yF^?LDY}ZiL72By$1ENC!tW zyNkVM53zUH+^&`%f5hA_<;P>Yt?q8O)x+(!ncJPUDncJPhFHK_TSh!IN^JX!_)GY>e_Qxc-!a951uREASCxBdDWtSF~Io4+6e^NsT zTw}-49l;Iv!6q`$xW?E%k4r6;o)5 zI^{~Xarwnfr3`X+6iS&ccd3yOZk{oBZ=Nx)ZXWDz0{4u*JJO@DyVLIO?zD%yi{W0? zcSkxQHhjjiVbY|q;dAb8_?(9uzF^rfX@%JEMazasm%@fGxx3*@9&UKnvSHE-vEez( zhDn>kPggCv(-ha8u5M3vqK`s%(us>K8r(JWP@deV3@k6I?7GvuMRy{#kwAj( z{}rfCeyuP6rXYIbos&D9yAx{%Cx131dh1t{m(9>3g>Q&XERHwwVUuS(lZ;V<#PXBq z4FAtf0-m<#crwdR1$;d<%PYOM z&qiYGV}Of%@`+^9_-G-^zj8+{tmiV;4_U!CUw@V=JT_j&htwonTK4%2c({fuJUXtk~Eb|Hu8;z9P^DRe8WPiMo4_POk9Lg0nCuN z5qKHda^R(0P~RSNHx_U!sBbJVvE?01mO)XO9h~0s0#g+&@THLGX@_cg$u0uzHU^}D z#*W*Pfd8qZ1YC!QMM-58wj|b}=IZMRKq4C?NV4#Ug1c;P$M|+dVZoIQIztqe0Lvxe zQ&&y{#0x>h+wR(n$VjVEG@6)8qq1YrebC=?KPBOyRr zpLN4yoNB|5`(roGW9&wKgEa0CMK0}@2Hm50Y)1_5qff^0R^Go3WrrHyaH0M)wQ6BovbQ^Pw{P8@ zU$}MWjrh&!8*{WGvNr1KTWg=S!L}G(O61W6)u^h#dhp)Ybq&?tdv9HDnuc@mR@gT& z38)9lBAcVWzN_}x9DLdAnwm+ZctVtYyI(^6aeZVSb;u5+uAk2q8jZ;$zPt9dh}3P)k%?_BL$ zRXDEffC}0@wanUGf2#H!dI*R|FtXQ|FsLg7L{L&E^;5$?>?A?`?{|-0aHs!$c@VCo z3Rl;cW*9((395__*ALacGM+Gzhrmy(1x)5aFK`fLQq3%H#8(o_=n1}IN5_{5j?=G5 zzgc?@c`+cRz>!R(4jy~zqqXngQG}YcjW{2rhp{dRFpM2BG(%#~#AO#|NW2h?V!#L~ z5Zq$D;)3ADDHXEWbUx}x9v@)Y-qW>@co7bYmSysC0iaywbgJDOdof(e4R57`4yV=p z!6hHZEFHI}EbZOylqIM~dog9njgfZ_$bkd@i(rYy9qnMyTHmH9y>wV|cJA`@z3U6{ z`MY=T&E1XPzH{rw?FIZ}?(+QW)P0HIIp8}yckf-+;Gx@%2EDjZL*{@Uty&?@6V7?7 z18DZmH}6!V*|Q|L=DYW+OoF3(r1_xY!ad?l8zr0XWoU?NN%WM3O1S7gQ9UlUK1@sN zAp0@lV&IJQS&#Un6c;uXb_WU{t8V+Iaojv?=>J>0BkPf|_;ky1P6 zs?}a4sgjf!*c}K{Yw55wx`)oV<3MMC&NwW6m0&vBC;e8<>5i^z8%^2NYnyJ%N>{i{ zB9X*#cWP3{oi+%mbH8!ql<0w>Uq_|(t#+)p5B&lm9i5yhTBj>)%-tI0#MX86nEni{ zj2SXrnA}jKa&eBM=scAGEe^7O^l*t};G%2L=q*j_WB5tec&t{#Pn^~-qzY-(Tpmeu z1{sGXq+NH-UaeKywbSxT+2n??dUx2!lco&MIn1|dmZh@}>O`p@%g7p~uv<@JjqDop z!)?d)ZBc3sC6hKB)_{Oi_Qy;4^&BD?*2%JMlp^iGxvF&$@dp&`7fL^}1Z$?yH<;K4BnKvDzx4|Vyi2K*j@(H)h(<_gNV7;K{B;d)umv>p3iahcI&C72M%&5K$Ev$*HT^g34yO z6GGMi-nBQqbB!|@K8Qqf?XnsN@j~tl;=1rj?yx&#u&r~eT8e$H4(^a4>#oAmS^R<~ zaib3B{-R3|=YqO#2OU}(#svnR$n&fWDIo=n&%UiX7IV8aVfU7olq53 zel4BS1`iQ}F5a+y7QYPdwltb&q%qvkQuNG-sas5fSlE<`!^iwH#u=C+$48369J{3d zLK(lH=`rMk`bN`Oe|)byNs$%Y<&3As4<6ngPmv#JV*jat_@&sMCPpW>x+mg;x3heX z8Ka$v(}t=}$;51zSC)O=rS9!w5Kh$@Rg|Z>e4aY!PJK(Iv@|7GI#Jv(CradV%-j{F zXM;mxKJO~F-CaR4$1cuoQ!*pV{49nZ>6t*}ydhW3*_J*RTs1|Scxj|)aj^6^ayR@v z0_oHh=?`5|q+SqNn>C_sdJu!iEEzXIO{w|#N;U^Y6CoGFdOdq}LBA8U`pR>4dkjRA zPYiLGb9>u;io=8@vbfH5^tu!bdr=^WbCL04luf;2po}bj*yiWaR@CFz5gTQA ze*67J!E6`cDAk#bT#g6I>?*VKxI6-`rbo{kxFRPd zB`aLobI^rkh0P(OvI(oG1ZbC@b}GnS3{h?~3K>BbOB=E?wDs)X&5vrtDr(`t=)!3i&=Eu%ctQ8Xe5tZF~Jn zQn{QGs;mwyp4LyE8ZgO~@o9rev`W*fxC(XgN4^w1b#V#X#VJNV|!Zl=_}}*Z6YBoe^YR!Uzmfjq90XEKIvSW zSMrVwd(T_loX(uCy60A)&>=lFR@(Z7)MAdH{7u zwls>ELTTR*z*Y~b7SrZN&czg~JDoRMW{<;@@sO8fe#FWgZ}X99tl2I5d|siN%H^Dj zE{IAYk$;j`U=%58Vi{GEtSRnl)TuP72(|^Za%MkSTPJEein5jEzYxTrq!GydTLEAG zZ9xo7{z%1zkllJW;Su?WNoeaxKwUw9?IbIfG$?oM5-13%j$v9ddLv70QbmxEo`k9kaA1 zHi%}tJkc1HxRaaLpBdjeUH)6fGgIZCF$>Fj(`v1?es7W7;6ybx<{RtW_Sn zf0WKH+3IbONG$Abl)HSk+X9cp(9Ye5q<~5*t7+TUm#F4uzw|~;Ab&fLvWn%$>T1Ha2E2{Cj-05Kx6xcAsy<&< z*Qiz-^*l&;)A(pEm&>wxqIa-v?~qiZ*&&v7HJ;5<9g+6$EUSdotcAU-Su3DIrE5@n zQj_Cb)R|f@;o>!Nyj*Pt`sgE+$WZA4hG;j`w@5XgGDLUddLflAD$hb)Sc5X;PFv_73w%)5JW5KbaoXpK8|yLO?mgxtpct+h(XExyo5Z{xhq z{Y0StM!DYy>JLl5gVSu<(Ezu9ty!;9@~4XuiUZwcR8I4|0O&Y|sej2gfC?%GtTU)g zs-trf5X}W_t=-Z$g9cmgN-C|!Nt{y2$$4~V-LtR4!hCXj7gCu#y7;S_-;=g^qVY(u zx5>QWC%TM;YpsgoWY|d7qlh(Bx|2w2tBqb=q|z}lbQ0uH8@-x+J)c-nSs^GF3`jaV z*<%dnrFb$lt-kO94>hf@gl4CGO|7+RcKTxFt{2o;NMx2(iX#96eR7W;@}O87gk>LU zC2FK9Q~(Z_O#}=H%f9}}pa@GIEIEb5J>PW~Rz-0N<2#fTk7wq>d-Z21XP16CVBGQ)C&w?B_ZwfPR0jyUD@Z)6 zQ8e0e?{DhcVvt-tdCG(~%vkj5#rcN%nO{fBjp9_8;lxo?6+L|Qeucw|RMhVe&f))h;FDU{3Tr7Jei2&8XM9r?4PMq8;Vhy8*_-^V7l{^b z947)}94BgE9Mgd(1}1`W;2gnAfkE(6jS#%leJUsjCSUk+xIKWra9)hF+;Ji(s3NOA z89o|JtDa*ksYC*TE%`qa!~o>I$Ws+&A(zT}`MZMXw^8$gOl3I8f)P}6%vCc|$Ns4x z1}@YlpEr}nC<)T^NLeCsNQyL~UOeshW;UbpR7mu(2y%>0?$J{hhd0Th`{#lfL?5L! z+0uSEc6Z@s=kq;547k_NJfg8pj>t#|9d~3hBki(ZKkrGo%OvgIr-@uDv6NOL$`f@X zMwz@U70(*8rJQdj+_#!ch`@*kXTLVSVcpq+(tZ)9^&XQzOlNLO+$)VrH&mr)X{49 zxz}9kXjKU`cNvf~fYCtLRTLhjc_;qA?ZA#!@J3?_qdolJc3?*%_~K4`gcSHm#rmTz z_(=_RiayFE)*jor2yS8VE7gb`Y`4cs6=Mlu3!G0An$13~HA@tw3m31f)f^&Xh<1TZ zTW=Rgea!$pUAIl>S^K^};2X_rKTB|+d+mol!C`M>dpKBaY!3&ujcp48=UVm)r5nTS zYiT;@T7H>ohFjcG1vV)WViDq2%whAi0E;C*x1JhyK>;!9Y!?TM zBE)y!xN+&$buC2PIx@MP5HZP_)~O4=%Nf>=vi0K3_8Mp*`KJw~AsP!(em_{S&BY{* zwkne}+T2dkX!nZ+JHm&3V8MEydTnKHJcYl?2KZRK{&~89j`-Usb(Wn_QrF2x zdaCDKKz*eAa8F&l6STuUg)wCTJlsJmONN;{ey~Y#$sMmTC2wCa&zaH)2Bh+EVP%#d z=du|L14)ub3z0EoB|Z+{Q1@_f;2S9^dKi&U=|J? z;0I+CG&*`&-yoHWV1Co+{PhYe3raWGi`Y9AcOJxN7Vb%6I=h@mE0ev?sg#<2eC>7H zkIW_C{5cC-{a6GwF9Q&8N_hMrNeH;a2dwOj~GSBTG`L! z-iQtZ75V%OBr@4|2E`Z-WTyMQw-8CzU*VqmZHC#jW_)I1f`Q4&v&I+t5EYy?Ua?XnW=U!JNowRv&y zmAkiY-e>3gS+my{hqB_H&e1r{&MKn2kSG^n4(TUravzdbWyby=w!SW*Wda9!74`GdH ztwb+MKL$*@>w2X>aK(tK940PD^o!!I;lg1cBUnjWqvR~4z3%Zh?R8JE(q6?trM-#) zPJ3mkb@gK|xs;sz1!XTAQTi76uHo!G$OH$=RoAeplR=OL6#&B-ZZ^AIq6mP?C}nAH z{ZQ>wmY7>7y>wG%HH17uLQ>nFQU>Mtw`&m(z|Y)n`OveaU!l=Y*PSq--KKF z_nU%I3>aky=aCv%-zmNA3QnxfX)AHSm(h4)!ZTmStjcpadG~4LMDO<{CwjkMInf7v z&51q`l$>bHqim}0b!Q%Bo{_r6Fyg*hE75-gjNdf$DrVxk$7>}3ywK1i%?xeBC2y0( zC0~-oG4HM!$>MI$tuE3Xbl)&DQ=8q+6>r{dt~io1nvpAB^PWCM8QVojf`gleTOL8a z-ruP?e{8;VDw8UtFr?sJv_#eoFml2R66%gaM_PL^Hm}wkTNOmTrVl5rK2_5caU`K~ zq<_Q(p;8@)_Du1XU}cK81T|A!F3A*^UCb1htIQOa-Odzm^D9lY&6iB^Ha|1P+qRb} zPI9LWnc}rqX0|7HSlVh^4Kl|&N;1bgT+AHrs4{cB!|lxRPQO_4s4to0NBztkKf1ll zabigYxjunpNu>sv6cdeePyQ8bBdaCa36Ykbi_4vh-$9!SQV}7#a zvF)?u@u0Hg@$IrCnMcPjy&7Eeh$V>in)N4Cb3pFb-r&@qu%d{4dSVr&*W;H{Jp=kL zT5(0cVw6&7#T5fbNAzd3;)-bJkp2th9n-#x(-{eO>Oj+kcgXaSt{&H9`pB`~ zs$}{|WWZgSKDxKP_8u3C*u1Dlc5JWgLxJ8{TbB#Y|MC%hTaD~k_sI&=+a22|lbSV- z6w^SeS>p!}Z@XY`GTf%KBozeEekVKKu=F-bbgIB@&4l~p#rry}+8Bt_);SwIM|=FL z{tRWKQ(!U{yo$eA&@298Cynbxo6~XDEFGdb9dI0<^{txkZ1Af2&IYrZ@0?jsMdct= z&37)~)qLlISIu`WnALn2>x^MKR1HC?Di^!Y1Ts~HOX7>?ZwDtuB#fGCAnetJz!hpz zuHWpQftMuLFDx|y+|gI0Ft3gqruH}ZX$~FN&7Z>3Kftc$lws*FY93$PT2^I68H_pg zQ7Vs&awAA+6za^4oYxf$nrVfNUUt~%<(Ge>mq%{t8>NaQZ1hUeM*k8gdPO;f0>4^E zOkFrpGrLx+NQ3D;Zxx`t+<3lgC?Ms=K=?KIKy?r`n~^C4Ddez1F3ziH4Crw#j;$}?t5x>}{0;EftLO{(Uah6v z=D|-5dZR5M%5y@mqAlPD{(xcTdf5se8ouiJW_s;B$X`J}?PBVQ8L! z==vSM5y-gV^*YgOZqPH+!qTi5dc9%4bjE>@N^7y{H6()T#qcn=O9sR83X7@o9|JhXdGN(;8*FL8GTbr#aOMk|Hhgxc7?3Pw`2(}MpPD#0CNra9Ls9B* zKYr@#;|iP@i77qQ;i0g;mR29!Wt9vL)n)w(4Jgw7{_r6modw?Rn3nE%$;jS|p4)wn#7r#u+eK$;K=3=erBiFvMGRlTRsr|G=b%hM1M_R=?g<* zk5hvT49jNa{G`;-Tr(;?r5+hIFFkc|7+BY~mY%-kZ89($EadTQu#oq&!O*{~uD-AK z{mZ!f9D}bO(=aJm@1V-)vmCX^vC@dh48*#TbM6?3tSOfh1h+S!aJ(oHSxRb@ywp<3pCO+*2NV(K}`h?zN-=)QAwG0)%!Qn3)8lXYjy2!^3mpSm2jN5GGbV#EmOE0{p#MT8 zBiPRoG%D6wN0KLgM~2VoKvTs1 zrv&u*1?i7nasQVA`o)JpP3p6`q?$vQdc(D2wx@5!HLo}AV5s<_j&b%aLi@l#fq5dv)OAN4E*Ske-nW_%eaWCY$i^NRip z6%T=)+N>9GSfU_H+x~8sf-DsohRj@zL#0_?RWk+FUeKU^8lh#735P#oiH6qmLOw|!7tWC$A{eO>ZMWsxSU0Ve-l_dA-Gs^gl`_kwuS z-`VMUv-MKY0_bi=t6`rlCK;Yw|4k+N6+K)sBwr{OE-52ZqZVHq3yl~Nn$0_k8xfij zcOo=KKxuUIxXXEc>tph$xpk*b*D<9?WvZkHxDmJ-(bt)fPdcu{H6DEt)-d}=CqxO2 zb5~N22KCNwb_+Kw2iy>xN*&il*@IXzM)2wV=$#g%{(>G6oc3I zZG8V=r1-ki&4HFAm4U4#?P%~~t+14Z@w1~*TB*&xEZQhP{#&=_ zZcfj~r*F^4ug$$deaoQh9CE9FR1Dv4mZf2b&6H*eX7hv4f;FTwL>zVz5m)9HuHL&; zgowi~BI0nhh**auwxd}}J0MX%-s&0%bBdV3)SbCIcc&NTZ{3W~UW(tIUbw2!#gQYe zZU~341iCmPE7j2j=(VN2(;c`b@a>~LRq5s}=oa9fPYX>q!U zo7}-M&R&KKxhk1}vzH^M+<^;cFZT~sb@uY`xQl214(zfW2c*Ytp8c(R3%BnrSb4wg z;30SLjPq|h++Owh|NqY}UlT*^JN8SDTsr?dbGL8ZonN?h=Z*Ny=^JyJ=x>*rT|55v zLv7U^e_9N6Ko47X2@^M_Uyr|b>&`XYhJ=MPSgo;18gW>yRCzIGKc+I6U%@;`9WJ7< zqe>LYpV=k4Zdu4J4h|J&=*Yibj~O4ZL)LT5BgdwCDJ$6=oBM^lZcJcajf&#J<5Zsi z4QZ;WjG9-V7N#)km3(>1(?l+nSW4s9!sA3iN#s;zoyLbPZCF2}6tYNgrKwKK1?5?) z@R+@qUC%2}e)IiGBCkAC(`ouAtgw6`ktq~^uz>Nh>yI91*9+DU1HL&YXky}k!nMk` zNUeN}6zrI?fSG6bF9nl8jg4MO6|Sx?(a%x5!&UMZy~D?n>+e{VwzqI|zr{p1UoEke zS12S#2moH#s(DOUL>>?A6w|r$9QibXkpQ6EzxX5A^BT6zzC-7eQJ*P=ME*&hUI3%K zrE>~jb2afiwYt8lWY$-g)SQxCQJ!UUPp}dJkz3Eu!prNq9F8x&0R-NJb;VDQX2Lli zE}bixVmR5ATy|ASC{aAf$zq*G7qCNFv{`G5%F23XxsbvnIra{HeUY1Ti^xb`$|Z6e zQ5h9^9@$r$rm?yRMv-;1DHsUqdum&33JgN{o+!DS0)a|D&$O*g0l|D0ude+~;Xn$F z7niOh43Oc>UG_)+VW-##F+%<_7FL6=3~8Q}D2s_5skH%qDJ$APwr?71kzw687vsK? z9d0?ypl%5D;R@A_#L}|O8wTS=IB>8+&RIKwznkL+{~oDbS6& zsumt+liWRaRt)W|-y@Ay^byu3&BUoFoyOZuhor&E-=4!QL%^S>B;N*UyrMS?8*5aC zYF!zYNC@S0m06DkFmm`PAOiK6&Cd+G{5sD48gsDxwvUUGep}i z^hT+XXfsyASlx6ozc_e1mwJkkywimOn;|VqIb>+ocSxz)>`XsQUN2P0X4Cl+amw}> zJ|3yn9?P$}fb|Kd@S^SUFd-U=>3ft3cSZHrz8d1XN zs=d3Ky=~YjkT~CasCDb&JS@G7yuG?Twa*b|DuYISGweTRK>3fdxs9IbD|0s&$ks=W z%|WzO$km+sNnLSX`}Un%H*V{TH+#Ie-s4nY19=bC?XUen-c8UxfAj9boqIDBaUkS> z2(SCD&f1sNTOpW-g`ZnzmLaEs`!G&%DfM7|kSuxqx2%DLrLQ2*sT1u%KUe$YF$>|8 zg`JUaeE#Obom;aeIuS4G+I7gKc#%fS(~n@ub41=utg0FoyAI3MU=eb%7fF-_H<_;( z;Muv$)Az13_JiDsAaC#;FPC4KyUW(5QosJXrrMYKS!us`@6-1dZrzw(n2z6=o@We* z2*cp6CYK@%8pT|{enX%7t5M4!TD?@kb4XJgg0#%Kd0bXtxqFV}6woy4HkvGFMQDOu zH!2<4s$CbBpr?)=QQX&4!&H4YhU>#C=Iw#TgDW+jfz+Whfv_8EQal!R=tPEPdqzB8 zmXJLf^9TE#Oii1|p`q1$+Fu!A)x+%uoHESiade!j!dwoMAvJ!W*()Q1H3^zP zK|{@3k(5JH%G7Moq=<#BCLl7l7`B3TL}4os*rb=-oYaQxGWP(3eX^;!O4vc2r@f@k zRWj8zjGu03tP*NmXH#xpXVyyv2dyH;210?`Zffs=3f*=_d~=D}(qUH1> zC5sl+)inZs9o5jFnsZpb>2QVKLxXBo5T#>r@%Pa{9cMHU6`X!SJm9Y4YULPio{<*$F-ZO*nlFFWRWsFL?L=-Vg>XS` zBMwKfnvW;a>FhI=9R*coPlpfGzAC#M8*1p#r}h##K%t*T4zWA2J}0|}RR>QWJ?<_M zI9V@Y3iZs?AKX@`he`d}@ILRPeqKeNF^Vz?5}KXNHcBouJF$3LtR$>2-J4g_D>OYB z2)wdw1VRX04exdL{H?p7>&twp@Q3(zhi&u|EJvSE7ruTY%Q-$3^jhh;YPzZYQ@Ge;dp!yrzrh00D zeG@hLHShmbPS{hOFuK&)#xF2=f3q{gzspG792Gk4tZn)cp zUfAXE7bjAV>k+j$MOx$B^TLG*4D!44H@0Sw^U!%%`Wo$~=LGsJd&QTV?naju-zKnn zN8!^C2v{XTJGU^n^lz_7W+Fl{J_6kAvFJ;M?dlw?a+trQg6QB)<8SR8y~`o?uD zbtI3U(6>dyi7tsD^{}$l;mP+C>2=lmRdw>R{#BwmP>6c#w*HGYqWDp}(W{7>iDBi( zQv0@7PKOWb>(Ez8<4GSM3aZ8f#H{X@tpGm~Lu)%QFvx-Tb)&WVnt07~%Mx@D?pQ;Z zYfE|FMzVBRx`o#fExGIfXQ?>VlBM<6^;C86R__vts|ZdC{=@vP7SH^Lm)28hbX%h! z0x*%UI^#Vo;l%P?-L9Wlm?bn8aAaP^_jD9#{t}$&xgBk;rYC2O=~j3^iZ8X z>N!=t>Vz==NBw6!kI-Eg>wZmW?2;}yptID*B-vU(%J3k3VDqaO;YS@+RMQhSE7twG zu< zPB%K8Z>~n!;bEskrpj4@N9n0Do03TEv%ZlSt4uIR?6bnqCBI1Qv;L8ojszQtebzq` zGvHzWLL_#EXhb=-wLBHxXMq}!;$`p3)49a>oB%!7ABkb0k0(5`!AW(W6Z}Bx7l}KH!IMTQczbr&AdPXU_H~`}#Q5{%7`=8(N+PT9n9}^A6 zb%+ivfT*q8yV^G$9mNo7z-bram$xAw3Ckaod<+Pd`HlFo5R@B{&irGcy(d6t&hEsI z$(pS4PNXycN}$f1F2%3-d?~(5ARKDLtAwfYaJ5^>7S773>MP)wfRY4u1z9=PlWd4K_r1NMGHO=PWEks1ileO z5};f38$REn90s(3_A05RM`v!mB}!N#;`@ehVlbG*M-t@k(zO~i34-axb>9?FJ?E28 z*z65sT&>>}Cg=UQTEEIr(c0m1Gfs<(#AfMP+T;Kg#=ZJY2G!9%H%1{>;Jhq?%JQFN zhn^?m=^w5zyM0Md9Wa{t5X!$rQq|r5r&~ffzg52#m|K+y;9CNUIKJeIVr4mTB1_AE zlA{&`@GT({-4+3SJ8%R*_u037zEeLW5DqCW)G#}9eUIg2$vP#n`?k;%4J6r--1rV% zr-70i$iS}qu7JAeU-N}i%}!;;Rr+1w+$}$@QgUs4S7>SX$+cm_gmIH%;yQrp?3KRg z|M37Qy{#PGqZbIWzLDxv2VvZNR~Vhxs&Ru54YlYY%zRI1I21U{a3|UC3+OWGS?f8Q zQf3~LsgrR9;rE56qrr&Z(&_!ap!5as^gx!sFZ2&qNtPr1Wd48@gCLO%QlkGz*me&u%9i?LKeDB04x*)mNkHdb0MZ-t zL$M%t#UBf3ee1cq!j1*K=NAPh{#a-|>V0sc7#xaUzNQK&#R=cfD)?@LJ9}0Z~6~1lw@-!3T zDXl$t-t*$6Cb90vWVvWvaVB8R(Bb@8K!KR&&VllW!_fO<0Zl8b8>>Kj`iX#EKY`j4 z4*e$rdMddy{kPntD1O2}5u#JU!p4kP_fz3u$M#z5fS!L!x3@;mlep0F-Jc2DZ5BiX z^fO`RX0T9(-Tq8??R9gv+_wHXDHQ<_^g1*L4+jI9-@+mOTsU&f|8if>gFhG0@+nXf zX-=&Bb7A{s)ue6wLJ0eC?D3KWeSsy4{X#h6gEzGVnqGjnu9BHS@qu3mou|By50nC> zK3`LpQH0Ej8VI;=FyICzy{{231#T^oORQRTv|k8QXRA~LATNI@>^C}&o`$wV9*l*bM(^DNWAleep)LY)g-wIj+QjEfEX2yFR`c_xlBq}<1tH2EhxMNj=9 za-Rt;ryxtZ8x3H!5>CA6ZzjDYXdt(ClPKi!t&my<*^BN{#}5S2tMS0LiM8^GiCRZO zD8ieAFuPEKpjXF)@7dB!~9TJfsHeG;OOIZ2{KuNGYt}@$leT z8@Q-^%8_Q-A4}o;zRN<@dh%NP3wh8HK>k+~!pn(tUgZb=hl1$&P;9GowH&rqt?UTq zPh7U}thg*H_mamPacY0c1bTdkBlZtGf|u8Y;P}n^-~QhJKISW*#}e{`nuc%M2bI&l3K6G>FQL zrnW+=XGuh<6%|7rOqu6iovsF`F|c~e`rY62P!j3WlI56r&=(U+kduk!0-t0mCe;;% zKPM{qm-LDlQ3lR4y5w~5Tzu*ka&>rld4c?Yc*qjklwdi&Ii}cSKoo`<_tQVjWTBX1 z;V@F)I36uOa&#WOjv=mj=6dFD!;hR}|Cu0fK~#R~nO$xh%`AT?`Z|(X{yzoL&q>7c z9m~mE=Pip)98)^Vn3%?5%kjhRxuWtY1OB4uGNbsw|Dzy!))ug5)2X}i6AKR5jbITH zo4mOdhL}w)7dUc|>KdeJ!}8Y!F^I!O<>R83xHKfo=J^=cAf!3F1&zmsD|>8Y)5m)B zMaSe8b5Wk(7@f{+uq9!dxIFC3>Ndu(Ep;W8QIpC!MH|P}+r7};udq2>=ejMTwmZV$ z`}9uFbSgc7UmAO`fTcaudqvHtxzzH5g@>9~<#lnPCU>lsf2w_-{2o8^&Z5v!pbun_ zCrrYzXusN@W6HwCQq-_x`$yjSPz{*PSyu8j6KqnB^ze7DrXQL2eoWDaG~pycluVZ| z(w=@@5Is-2Ga%Mm9>_>`_q@2n3I*46BJ#iSo*I|589nkz`?2!hwKL_q+5*3qE-|7| z5}71Y1q$mqg!eOCxnlvqL}po4sBsh5;ntB5U<7%zbb+Y+k?3{*WqqHT?)FqTC`kWy`DGwr}4Gi)RjJC8iF)>12}<>LH}rMHpI7M0P8 z&GY0U`%b}=7ONp5|4YF$y_?ZB=0@_aW8~CF35xu{a!L-iq2*zV0MvYeqh5$s4ls`>r8KS7pnf*&d{--`2x8AwlYUU6dGGy^TT8>xq@zc-+&Bq_i zQ`UE-2|eFV*?@!nOGN(1g6Hy|9VGXF6Ib6fx!O2p?XQ+|=D)b(h&jCYpivSXj5eh* zhLL*afG&gIUJY>(`G56`?Cb#;I`h{Z&b;U;%hBt9$;Y6*7B**c#2^CIOHW3HRq$G$ z%Kyp-Yl`2~w$6U?8xDkE34mD*R?E+NTx?Tuk76Bna|cTmMy{4x041%7O+AuPj}f>= zZSubs!~pc9vIZ>7i{5C2WTgRX*wL`BaH~DsTqyV^hD~@)N;8`!7VgsSO4Av#o=;^SG3#3kaU{!F z-+owwRs@jkoz6#OKXk}qI2bA;@?Y=tEb67}I1G{uoGC;*g%{Bdd$5>tw8S;m=imWE zNPltg^93^HZcPb`rB+8}KU}R=Tyom-c5_EyQSBW_jg>r- zo84AsNI#fWc`*fK$E6p!-MP0(y{}E;V!{Z)5S6MnsLIO_Ozhj-x0^`iRVAU|opp6C zmqQdjg%Xc~lFX|4%*leXnkX!DC$A2NLZ6KKVweQRvxDyrYYy1N^s zyER#NeLa=5d|gBv;gC?@u(kG=CUl|{!}}PNJnR5n=>%&n@JPY^XbXQAO~1GFE}!tq z;XZnDYjEr8EUmpLhC=oGq}Lqa*4->hVre9i92prJ9UV`OFHfwfQ;C&{#MD$`>h$Po zb!sU&lo%gd8XHselyVzpGgtv#glklEt1l5v|q)yfS&33>GeVu znqI;tkOY!}2b5DD%0M=!F?3Ko;994}N_Wq#d?XJ^NShBeV~)uuwWko)Ut)_8-Mx4F z_N_Y$bF=Xqw`S+A-;Dx9WT}VR!bhd=1Ovo!3G9FrEu}-9xM_aJXGrrKc{o|)AmzGJEuBPc;f@n6Pv7*vV~R zM+qQykaP~IS5R{rc9gARhpYMwJ4)5q0cw>?qyf5ZG=+~3Uv0uM6*yg42_R{rWs9GSxARS z1}1xVi&CxW%XqQ7>sXcSgywUhV`7_Yv)(Gb>=(3)>9Q`NNE4YAL&x_VlFm4AdZ{yF zNuP;jO**8R9Dj~2p4fX#`k~LKU%EvtM-UOb#Cp0AH>5K;0NCx-x36hyx0gje_o2me zbuDrspZku;RlfZ9f$fufCF$oc6SlSFOlo*Y#>mM-QQwV`u=HO5lHR>Xq+h;Nn9MV) zH%?YKp_6Ry-qs#JZSS!3&j3VZZ?E)^UMfsd4v#JxvQROerqpL~j$Ss27i=2YdY5r+ z5bpsoG`QDj_C3VK&ES!?s>RJ<`_U>T2KF&n_5DTSW@!JRmsH$@r4Il;8mxQOl*!hm z1a~9+phL&UJobZzB?N6lL*thuADbp&^WcGDG=kUa?1sSuByxv4BQLYa4NItK3=Q{9 zxiKKOQhz5E$`-O~y0jvFhD+h$*!{mzQkW6Z$N{5|@DTQSNeqolo!e^jdIYw6-p-~n z99JOC(IXu?X^wDW9c$?{e-WgMVrcC6DQR+x+Hp3A{?5iKWBrr*H;1vx9KMO3%4e(m zX73YqgNB(N#AjybBr%;`PNbF5-shwW(2rNH+I|d6^Z4<`f^@Ok1#>DH-{_+qmgp*& zXgcyTUj-8_J$_yV6DKD;zY5;Pp-rBVyl?aein%6+CJ#rXOIstpo7uuVyr?RLozx`D zAt5spEIW0uU1uf|1QcpH6W-@WsAX$DQq(i9ahnp;(?e$(CD(dwS8DFtdwxJT5MXC9 zZO*May($3Y-%`ddTWH{H^Ri(Xw1e|l-C)`QEVcxiN zCo6Ssv-BPMzcGFx({Y~d7?||f1Gr29|MxSR(=_yyG4&T#Lv?H^1ox%CR-+%RJ z)N>~fVda&E!@A%T>D#Teg#xDkyvxvrS?(Yo-jomyo zVbT~)ln>qB{(w``;a)|ywBNa9rM+n>hX@JnuOgo5YEh4^;3G^+-rX;Ix+Lm|?zVNg zTSsKwr8eaSGL%%&d*RLitD-E=`(E#XWp!=dECi&EOXN+=8P=lt zd4v~A;vAG9kk$q_&3iUsb7E!7q*0Q#v0BNJjAJcRT5R7aoA zk`wp^xe@X04h+Uu7bj-*uWIWou6>~YLhIm}WZ1}`m;|K|KPQ!AFTr6`$xsqWS%E7V zVrW(OHtUE!&84n-*vO%p(h#k_1UCj3oa(W2f#WJ$PzzeBdVXfBIq*zyV!+s{DLGg6 zcIgK<$vI@@*p&4bM0rnj8?gS;ioR!%3Dsk4ms;j6dx57S_EFyqSW5A|QB_%Dz5 zAJcy!aLCp5WY-DTEUOCLIeNDo&@q(CCnu-eRVppzr^d=*D3fC7ow^3et)5p~#D(73 z9XKI#?wx%n0$|ReJHk7Wv08OUcu_Y7W-R8nZ!CTn_$xqz`MSTJYn|4#`V*t4n0CU2 z={Ey#!kBv>`Q@V?z4Ov2%jZg zSWgFr{l2jDX->F8=_sF$oO_v$@>w8UgXBZq2uptZP<5$n>txRrk&WJ%ABqTh7B1Jd{G-p&z2n(P_Dt*w8eKD4g`9OTsFVk zG8_Qafn@W$Bd2|r&3aFjFzc!E?$ms6d#W(k%zN8)%@Co!cj8pQ36;d!`$($@uvp_p z;QRZU17`$=rDwq2AzAWlE;*Z_LY@VpuJ=2-Ujpj-07-g*rmmj?l^=yqNPirlOS8C@ zkKqO*zmh=JG9Fw|mDtm^e@l=@|AuUPj&?IP zwcYp($${S%kfZ*R-6UbuND$;rN73ljA+}$GZ0wSpIQ;@HY5fhR0>%Bd06W{H!mtDh z{oBIv-fc+e&%d-M^Z6j1%;yE=xN$PnZ2%|pdEsQ=HcsXX0yOQHj%R)dp7|XitiUbc z4$o{c!pD48mJ$ZNp`odGL-`Jp;*I&%bzdU2DMPUCh(MF)#D&<$VB>xFn4Okzizg~a98aNlSWZu1e}cRrhsa z``I?+2lzxlZHCW&0Nr5G(rwt>u0-w;OU)C|DVd-gxEz4E*`F~`F)}tPSEYr5p4&*E3_Vc8FmnsW@rbntfw55*B52* z8x0JAhHnbtMgt9_8XCSSpl@41jG@gAlA+<70xAx+i-vCt`#TIYP=7z5=G(%Fe&e@M z{05wVN7!ym79akufV_N@^w?tG6*`X@ziEqouNI4a-(j&o5cVE47Nh!33g-NQaCjm> z!5j?e0Z5Y)c4yZV99+3UiXE!G;OtTWn{_NAfs2SQ}<Z+K=VFOvYAUz7cs4FlMww20jbO{1>X_0zkHc=%3nE<#jlFVf^^DX`KD7A zve~qS7=HEA=#=2PzZCYHE-zBgk-v!_kF>im4R~|)dicPvHgGK+(^%1*$Q&nzx3a%Y~noKEEPO4(<7Ev3tmn27h} zi_;2!sgPA3XVXcg@K{y28M@Aenu3&G_Up7Zepmax!af%5PK&NKDzbo#>2mTP38LSP z6}18pxvd!Q{0|(jzYxTrj^ecfPApbHATOFu^%#6B1vl399lh1#@Q?twUi&OjT4glTjbAXz*XJ zsAx({ti1NqkB2OSE@R4FHudrjhF;R2Hk;fSQ!s&1Ij0N{4T%wD;JiX3TTOQ7xPA{G zG5@!4YxY*m_6z-OK)It1r1U{VP^(gTWmPRa&L)+_3d~5RXl2xASPyc9_omi%mRAxv zRar@866w^tYBFm3whVpar5xTWgTHHg@ht93M2jo%_o&li27VbMe1nYk%LnBV9kz_zrNFVvrB7^F28La-$i!!arw#a2lfn(aygwRk-nTI z2SYrA9@;T(u5#^#nrictE^8`tk$&`gHj&I*Y+}P0PCUXOxv2a_K@3tadl_Ry{nk01 zn%J9yWz12qkoL^v#Q(k1cfHY}C$rTYC{;>IUmy*^(t22GWz`2Zhy)$p37o7})6?a?E6VlG;Wov3-n(O^oC6Db~y`XLGBG z0_SM1_ABVOh(?G7RiS7fJD}n}7-}ZI&i@Bz8Bmv8UskOzSadd1JCncXzeA-AvPhZ1 zofnah>(}|XESqRHd_%aI7;_qrO;q;Sr1N8%O7N{Zzps=_B$p((3cnQd(6KnWUm7@*4w%?7(_nC38j1t)RUp`#25|PQFJ9d2h1od7|Al zHCIUS1<2#eM3Azig4F3{7+#q|ip8{|-FY$Vkq)Hci2S_&jUWcBlcv?rZqanLMw^@1 zos4%r-YEvOf291(r2f*&O|yi!CS{u0nof0Vjl!OZ^aBf_lXCU2BJB#k{FkAFq5Q9R z`mI#yjA2VyldqWvM^~cdkJ>fJ+#1=Wsu^O;b746t?W^3<`LrOu?=hQO0H$U!GNy9) z?C*BOvvx_M;b4Hf)yZG06N6MNr1?~J<;u`Na!@tpFIb#>2IZE2!$QqvABq*Z`I!qwi#l~@{SqqY|a@Z0(U1l8pQV?I#;(z(CcLwD` zb;$LTRg?D0>YZlUB`C0u3iC*(>FeV~dM^<2-1wiJLH=$5rcNSbx23o*(3Ie`mR<5< zz4cZ2`4H{?eL)O*eWi@j*?@=~hvV+m>MG?P(I{$@kC-HYYfVLPOHDF!$$V(E{6o{m zm&U9q7RC8m23l_J+_BHC^1?EEoV_&@pL>1!#_j8K@gZ17 zw9%ahTHM=cSh|Q6P}Mx?fXdQBVFOi3H3{)Z-s3PsRfn&r8rD$N;X0~1wudTIt%l}y zG`dyqR)(syz;!ZPSW6Th6Rrr3%YMND=|Xfwa3E?Gy0W7KZRs4yPZ#Igm)92{5ndjw!z5ni*;WVcGO8ZPi3Hf6~O(A?uI+iGr-g3v#6(gno^(9 zAyLn*F9|!2y4F3v47pmbf!nw4F3<%qGk5o{F@AHk7!t$RAqPKjko6RvfTGp_1 zWIy?L1-H^(9M@YMv>R8OrYQId+i-MK*uLpnysix1ip+;V0;lVNn*#R(K@60ku_>@$ z5yXP0H?pR@Z3>jce=dmo*v8ijsdS!py~=l; zbYa&~wuo)-(p%(bZIJHPWVyHV*^F_7u@+H^iy>imqjbL}Ur%QrJwmFRZGku8+uXfJ zdbK7CWb?LfpA|!)`aRO9!?#QQrpwv24cpt8KO2HwI$rtPNmX5=&ydeml<$^4OULkPOM5lLd-%JZ-CKM2I&vNKEg$RO+LrY+HG2O7 z;Eqm86I?ZC0ER-=O`Wf>7q*78dl{t3(aRv0x{I?Fl8g58aw5-M>>`B$ zcGWE2v7Ak3b6^)6L1Km7HCrL07M^8uPoCRWz+Cy=2M_5}uRS%BUK@$kwC(G8G1O4sDZO12=oj@3qt`@EjdGPc%4>xT6ANVY4i-h* z(b_j&C|>j~E0OHMk{e>EvF@-``*J8Osa-ipQ;zfVizn7n@h2*ia(sY&M|yE#1{pT0dGzc%*)#B`m_w9NQ8z<;}&hHYt(O18qo$Nx25Tz8%l0in!vZ4TciO8 z)-6?Xp&;|1LYOrBmR6-kn*CZfpL$MT9(+5S%J7^6+H_Zsdz(JiTivE3!!B+*iA|5h zqz4YCp{ozo#mY^R1%&~%tquEJLv3rLR26DlG1zfdR!!uo+^o?$893%@rOuqV(3KOektX^(6tiURCupdBXSJ`-knqR z;VQg4G{h-%65!T8h-lKZ9bEh90;V0EY-+BOwvqMHTer`JICxp;S5j$})kN~a)}h}0 zQkAd+^ATS#4{wvIK_96a^Phnw(TDqT!!tVXU0%-@va9i=x{OLkHdq{V-`9MkD!PY( zKd@(Cg$BNH?~<`=D5TM_=$h6PZP;Ix))YO^?4s86ObkU29ryeKWKt>`8S_m_vGls= z)Fqz;4d4IVZ6Ef}Wd$=shrljc(6h_h5-lIB5H2sTyu>(1SUrwHqVh&=z)Luzt z2N#g}J%8&GDsy@$;eZQI9Nl=$j;<)o$b7HkEtP7^>}@&~t&2ByJdPgo8llrDo~!s} z^t^PTq8-~l*PC5>TU{>1A7`^qBKQ*Bnd293_<3iBCFrN8UDi)|DK&~^pR;fl)A3GU zp083*qRO1p2NV|)tW71)4soycpGFT{(w1U?0<17x5gBL!JswG96nVPpLFx!4obDg2 z5_uou<&m>4jA$*3yHsXvy}-_1(=kt{t!%s^inL;tuYc&Mf9ua-|H?_}ti%3GF9Ab&CXaSbMGLNFZK?{+_sqbMdA_`u z;>^Tlzt5KdyYh+^Fr4_=hC}{g9ER?NI@wkI6K*F2K?{h0E+v-Yg={>ZNjzaE#RT|; z6Ok&}7-`a>3vF&pl`w@+S>SuwI9kZi3!PotfPcDSuM1N#Duka#E{CS~HE)~Y=p<(A zI$Yfe93*I>5>KWcp~Uuad}$-jlN+>o$`pZ|?Q}Q9zZnR<3@o~uz~r;XPwGrg`6)=Y znC%^`RkDSi6cc5g=G1&tLkSYoQ&$K#6y8H8q|of}yyQX;b(6R@#YdiXt%)0*W%T3H zbe`F3x3;G9@boQ?%-i>Cg-rcgbx4=dGgp|AdKs#%rn`^hjN#?EEXfsmd05h(HSI1e z5w%`!Q(TRgZ+bc!wX*Qk<*pO83Qv{LCR=B5kke%b{x#Dax`KQM4W$#DZLUZi`Y+?4 zVKCBFq^lUuaH_uAIvhx<=7&1JwSVI%t-%Ow zcHVbFODC4pw5FKcu4~Z=ZIWMOx7&KEzs6{bw~s}9-=g(4yWKbF$8C0dXiUfKX?}OT z8s4k_G6h^WiJ?~!($-rS4e=}Q)x&-ILz8$758Xk8#(ap~f_DZC$KjO5t9Pbe4KS~U zC8CVGxC;X!WtkKFuHRSUU6d?nVxG=%O$^=N)g(P~@gBO0w$5oaNB%%{$qO?zH+;O>00uXlUFjw$U=2Oi$$bzg4%_)jWSI&``Bhn$JOS!z_EN@o5vfcSi(iPrGSTS{KMb2gmSa$vKmonvkY!>rO-wzKruFKWu@h+SqU+pTIzdIOa0sY32e#`;Q)BJH$FD{(BobL}j(2Mtp=Oo04FL zum1^B{%hY2z`RZDTQM#|9r!26BHAMGNv67lrT4^88q%uvh56-xw~8#_Jq?jnCFl@Z z>8gbmy7#iC5ZOm{}S(=fwCq3KhD)nW>HV5@auSJg{9g;G@wF&6IbRZ;Tj z?q({|n#-k-Y(Nv2?Y5L&98j*}a&tq3=v)YD%!&K9Doiy630ajnsKQ&X73cBWcc8-8 ze!i8-{*D;yh4hWH%UsJkcxUU%ymptw#n3y4+G~{gMVErT7N2!seW#4w zoLKiQ0S@BIG*L|*)Z2fACH8vtI`~;y{ZLDlk~KzequQ*R`yV*{mY_s!WcQ9(_j>|# z0yq7qseGJAqqG=8J_I}Z1|Lih2l9`3uTH4@>#%y$K3a;0l?b5w{K zZQWB*uh*3!^W1dw8Le96cITd6yyJ=d{|Nfv%^|tf9ED-LlX=dDVbl!_42bf7E8OJ$ zbY2(FY5x;N{U;g^l~8VPV3K@BSxYQG!4wB$VilXl0e?zAX542|YwMVH%KnRnM&=9a z$qkwzg(;9CG<}SmU(c!iN^%2U+0=5rpAEKJSZ0(QOb``65SNtQ^Q~jfz zqIcER7}aCnn6;W25=7f0MYh;*G@4pP2C_Cc6|`)bPY*?pKLz2^O+{hd?2op(R?M%@ zY}kYk{+si|z;!mHKA|nj)-mNyF{04OvPOwzj<>uO4-hUEJVfNDF0`^WMN84j2DT%< z?3m6pBEKj4R|sv2xzSC<9NMb7$v512pjUm#pR%)!^{>Pt%&!nPDy)j9dJ#FvwAoKXKO#wIHEKOF@;7nV9O;wabXY|H`!uJRpBt z5WUYbl}|dt#x+J<_9l3^j@(T5v*L{>z}YC?L>v2Kj5KOS@hCoVvn#X}EZiYHTh!_^ zvK*-XcZM_NeeSBGll{9pU3K^xiGy;ld6=9f^*@#HW28Jk8V)UDOEu>%H-5)ms?zu0 zqlp&G(zf`7EN7?xT~jt;w>@O!^|2s&nDbc~$^Xh-U(W^+tWxCvlqK>83bIdjGF1-yJQ@e+4$Tn|OwhQL)VgvwX#!abg zLuQYjdMY0`k!~SU?a!w0`zt{VLUyS<=?HGQY*dTB@^g3H0e0*fml~wN8ApiCCt^%p zd2lcDB$IuH*p>D#Tqyjt8$+H~4sT0tV^gEJyi$6Uh{!b9ji%JUy|Gu_7Gf+ILto z9J2%Q0I36;#qZd$u;YR={UKMAJMXB7fFjbVeNgkNYogI@x1qyk;f^pi8%Z|3+kzFNl$t(nC=uGST=MXIu^J znE=qyAq7M>ue@>Fm1nBdupl-0#`w;BVWP|nOSTuJ-`Oc1W+TE7_s`QlzL7DT<^-fvYHzS}AIy_JytPwpxZjpeUgQ z0&D=(Vz=!$-aC%B_U?F#mn>f5B({^2$ve)xm&A7Lc=Aqi{N~v{$%!X%9M4ShoXKRF zH}lT>efQP|pa6m(tLo~U^dH@7sDS$JcfWm&&BiSXp#^MM?;vg2TIFC_`tsz7DOw4H zp^wt`&MJpK()VJs5Vo;+eqKkN3ag1@8?oxDu4vcOi}MAbk72c2!*-?LC0J29a*TcZ z6n=t$N11YHg{#v-wXaSKtzdOpXa%d&Lc3S6It|Og)?lsi>O_VX9wlOkJ{3~pUAzG$ zpi!6WG_%dinC)S{A~KI0#O;2XHhK}IAn2w-4>Z=0t!Yv8)p?T%941PTALX*K3wtEi z?Hcf)(9Q9_Ns|5CX}pBO13Kmlc%z`H|qQ;vLeDRxcXkeP$K?cf61c7Nyn-dWsO!%CcElBWhE4i#Ls^ zE|8j)z`Owc^^gcnFjpRWekUAHj<@&Z^wb;`qrXHjV4332c+wMH83jGbGz>tL7*i>+ z(UI5G)l;R}YI>RG4m84MGp6(ehfUU$-Mq2Io2G0RTsrYbjjwc>&22p*TxM9I`)CRH zJ}|1FWn-f^qY7N^!z^u2&}Gp1)qu}Wv*gu{?cU6icR>Ipzsc^2V&OZp00|LrtyHb2 z_6|^*KBe}a6~&SZlcU?VX6uR^U8Z?<_^WxSQY>m~o*n*b9`o&%<^dM9)xhE|U$L0R zx&jl6WYOqS}!a9-s86<;LW#0aMNds5KgBB-*9Y(oM5aC^E1C4+c;uo``tb0I2@!+lj$nqgC#6F!0w9XZUtHjX_d2|K^VZcGuw214 zo}`Fer}b)!&LBr7*EabjM<`NqFPW#9V2*re1kEQAe_nRbJgm?d=xH=8 zjFAP)4ib@$d>Yi{la4g*)C7FyGVXNd*((f%@TH#K+*G?S1xfQXHs1PVu@q1z;)1j& z;Tg<*^Q5bJNeZ}fVRGj5z3)pQQ#URm)KPqM# zLE2b4j{KpdAR!yYI8o0NvV2C|EY`GmG9#{3R9J`P8C%wuO>zQx+Svxp=R7Uj<1*Vh z{{e_)-gS>W!*FY=W zu`ut2zJn%=v@?OhI5rg|j0L30VLWx-gpr2y61}}};hG5a7FOToQJZIhwPF@TO{g8# zkj1j$d(8Nf?|NYB+FK)J8ejK3p4w?2Sxuz zPwCG|lWCL=@>+i0M9&62CTT7t4LIa81^92v^ep`_8&QcrFXl7p%zS1sr_q!7M|>0GL34CgGt* zzwJ?XA;$>&_wD{ko*RlL(@9=npq{W1PmN3_vG$;kiK_Sb@GHB3&M_s)9>()3*(c+y z(*lnMA5n3kiuv=wR~4$i=utzf%jG2<<%|*M_(n&^u=5#vl*2E1)YI$&q+O$?4%r0e zfY5q?I`655JavZB?iQ~Cfo++{zkp*$!Z>#OO8gZf+F?&Qb;o%wU9<_oanqL>U7{u zoqtz{$M`?|?{z+qm%*UTJ~Gt{S57(n2LpI>d3}M##wKZcZ!C8&V*SRX=6r;WS5E5> zs2kX7`p~FRxKDdRw&rozd->o4Tp95@s z!16*28?P{lhfV&_7ce@_8XVlcnA5Y}7_w}h&S+4cus)!_aKnoE1^Vv{X5?b-v!25Q zwj2Qp7}#iM`gIc)Onc5`87pZ?HW8ZPgcP?WBWwhzeySRaW(e?du%IS(ZO)kRzNrCh%>|#n~2_4eK5oJ1W0VJnm zs2(a4F~^B_tCJjY(nu_s({qI+GD!x8S%IYyp0=F*O0)5!YFW)=F~;mr<`-A5ia94$p4UJpR)Fy<*Lcl z2bIN|`}YjuAtTQ;ZlRAWcbOGWw}ZptS4^nv=?w-&C5k{rbn35pG^5HzURc#$&Iu=O zBExvlxcK6`^k__TC4h~q`?Zi?tXohn;v5U*@H?H)^icD*;e>vfoKWiMw$>aZl5=x< zmOM?CQz6O3imJi??+@3#891?coJ$f zp|R2iw12XJrl|}$s0oZjWB%$!m+GS5*7V0>s5SEH8<0(hr>;saM1&qHp<6@=pG$uBfS3m-c$vM+BprtEJoUvzM zhOz&01C5D0r>J6avzV5{MD*lbGOjs+U`4^61kpa{n;@-q8BQliGFBR?J&lMOpY=Agjlrd%t z=_Mhm>(t+^^Jd{q>BU>=wlZSF{QI60=AaV8)HzU1xZR4f8`XP}j=1c3*`B2Sf#l5^ zg$n2cZ_tVv+N}~%PuqrvBS7eQ#13jQu{XuOOj0jm6r%Ak=a>9Hha*21Q3qYm;dsP8 zM|U>|86qp7sx!6U6ura_MO>L?;C^mYH@&^YCrcCM-UH50oBzu)} z0-B_t*Xs#yyGo6hG8VoVdq{aUmQbLQ>Pfu4d6zQg65cAES!F7={!_>-utI#QFGV}T z+O^Fdv?ExfyqpKPp3f{;nM69lDZIXA&vLgs7yS$y^s!-Wqn9J5oTuQ!-ki6vp-EfO zEr5&^|H$YJ%ax{_2T)c{M$P__(Me+jj`IY~*nGbdMxa3>?Q2`T88pIeBqt5cAiwBx z5AAJTD>?<55O#ap{#$&A>v@FXofolN?Of3jzzci*;{|pPNuHxMMC#rZ@&ZxPfWMSP zy4)P{W}ISRg_QJaIW+2vNHvCVQ=rO8Mx!efsnk$DUcbf5hH`@yN)B-9+O^BqqSt4x zOs+jPzw=WW%8 zTXqO?<6(uk@^Jg!;JGr)i0|WyLm!$~?NTuG5GdkWeN2oEh z6*@!esO_*j@K*3pPr?5g$Q!N#c{#XmR4`{$T1GmK%ZFVKSwYklycw2?`l&iE%V3@4 z<@DN|Ma~W^IUXq?t|L|8XD*gR(inv;$QdUV<0xK1u^<}^zCvpHl5b2{;FFYLLgzCj zcsg4NPqc`bmKNXP9;n9d2jx6eImvrXEKZHA9A!Q+V4*katoV13R>4ChNIP8#X+}wv zMO-LmWEHJuNxoIQxKfmT)uTn)Rd~PZ0avkA>?JP)am7TIiN_aFI+j?Z-SoV?SAVF- z7pd=QrHDg9+rtczQ-~2l93HniTo!HiQzb~dQjyy7M&)xlgZ{BJqcm2w7tf<~AHKd- z{Fi~%%9bCj6n&rcO}Z6$`(>n?^O+LVjW3NlJsroo4CqKE=um3T?r)_y@|QOY;t3Ua z)A?Kpt||&OLleMYqxiio`#JSF!WkD|jX=v$F7E*nTi6)q z$&yZPjaaWM%;#bD;}a`cQFayI->NBRtMZD#$*@KGY3^in>g=hh^As;E{68!d!px^9 zI=X6@`6Me7_-gmQTIN*A3O0|`dA@n9&bQ5D^*(PNs}ErF80NdL@nj7c8wmq*FC9xp z8T&YyMrMOI*7Qz$F?hq}&6fekVMTA4OZu3gja>&8i0!I-4A zdxrfVlO!vUI^ockRg^kmlE64w1xKW34B02tqnxs*TeVJfIfj5~^(jPaz~ zgBee{J(%&N+XEa=N@UO|1{pZ2)r^UyjWy5hd=HM*gps9h4W7DrIUSt{)?w2MrkFO> zj15?{O*Kw2B}BGhjHv*K)3CBr@7S#{y^$XT3X)^>Km>(@ftNJY5)&(Z!f`LPoJeTg~%LF@bM4CX=qC zPVAI6fCJM6zTFLj!Z-q91(T^lyN6C-_^^vdzOrO&Ev^Z#fsfLlnJ5jDrrkJfOkmdr z)kGwXG9;SrYTYRuO&gGD`$T}Oz)mwD>mL>YvI02}R!C`ejZBE3v`p>Kh^_~vN(T21 zfqTjG>emtt_vs^MVTr8+4 zU(etxF=U-Fo(mt&>KaHxn_omfCZ?Qf`6TAIu}ooRF|XZ?-RE-}P+~*#Jd?3h@>RNQ z)sJX88$E;XL^^W5_nS9M{`7+XM@bgI?saP7RcjCbKZH1%GYa4=7;tpHJ02K z7Qk0E)c*3D$bVS~@TXX}<`RA7n5rYb175k){L}TG=4VYoo~x`uxIR`7+j@ku-t?(4 zUZk34^FOyoFrH#%R)#(>CgQNcT@KBVfetXoX|M_ayoCRDwF~RSq*_h;gnM#C) zR+~c^N&Xu(myYqBE~6Q(;$b$KF_wO0RH78ti7~~5qGGd9%mS<9k(VW3?6tS;3* zVAx3#&21Mz=yPz4$^w{Wf<`&i%VvY|fO^sA91mmxCmkeDO2VT4yt4J z50-XE=QGh%CYC^}Gs<1_{0C?X3j2|B=8p`i$Lt?*Kvn7sxPirftIPbY;Yx)x$~%8M zR8VnYndSaeTv)Gj=KCZiiW-G=o0J=?;!GK1{QFG@X#%-C1Q(?>;VK(?Xd=Dy%cJ=6 zmaWTOXDTb${UdGftaA4cy|i$EHN}Nw1;r?JD=9`nfWK~QQ*GrRz*=2PdzDx-3RzAk z)3Fo*PA}GWFYm=Pt;#&~p2+gHuU^+*SVY++)+fpe7FYUO>ygL%cJ(XwR)v0@9c)Z2 z&7!yKc0ZRLQz*W@lgU1!QwCM)LEB~5^q%lwyKIRRb~REsCI|z8lz1#qiN`+W&Z=Lw zCGDM>pN@%!?zQ`m`?Xb$nsCtvSy)N4&f7{FqkPdRbupA8T;J%|P>O=q48l1&(4VZ| z?&Sh!@a-Fs0l8WXCUJgJ`pcc)VG zkva4QplJsUCr%TH(c5NhkoRPGd+~c|yg6cQ7x^Xxy76~Fq;IM3#AaA8q?+6N9s3+i z-n){`+)uI<@-lW~$)N_2!2_S*u?Euc_CGR0AOW_n>GtkMEL%8|VO5od^gsyMhS3F{ zA)xg2rx(*~1Jo3@q7qS1mB99T&7&#-B8pNNxYtG0IhCQcR>UYyx_A>{YJ_Bb(JQ*B z1d@YcXq-b6=+l#~go>zfFb-W3CG46ZI3D?p5R+O62pA|W^_#pgP%0sVOci?nyc}v> z)2t-CzyX>AQwWwhO_MBMhxB*S!`IP5wpc!z$F33X2huzDk9qn|3RFbnEEK}uiS?p8 zo>=R_c67_qwYcqezp;=H`AI|rc09SovuHqAIe`~6sLHs@{gt+@o8g2zdY&%^B;16_ z#oW=_sbHgda$!IJmS+6N4B)J=zu$oyypQ-?!&E0v_?$T$wlsG2x~Rwvu8*ef^w0GP zEAPdzyJ3sIDV0LU7^^b3TircP8S`6A0);_3xEEuF;zMtS1CuAVAc&1@X)M_P%7DN&uy zzP$sY)#*sEsR7u~`M_gnVFlx=`c^Qm3bBGdjH~i*jiI%-71v9o+t<=1Ch2lPzdyV| zEQaU%r}uB%>goPzhwFBZ-7W`6*?$Uj-6HiSjT->Cc2Wdl;oh<=dGp z+p8=BGo$ngeRlBMD#`G(ZJKC=O?lR{yCNRtS*r?E#*uK1nszV| z*RK;y{TGy9^2DI5l+!Dd`$hUC%Jd9+i%=yPOXuNKnHge!;dH&zLEGk~x{$7SdZQ}T z^^#*e-MYsk$GC>;jU^IMbav%HtrquAcaPcJ%hl4kppE6y>m{{xZksBGTEdi|bFI5P zm=aV*Do^@iD^p-XMU%FCXplB(2O)Y2Y{IXxRiZ_om^QrnW|(#RB`TE2{y>69<|Fd|AlODqIhzPx$cYS8lK!6W8*Xp#ge#w%hf#w!9U#w(&L#w*>! z&g+G!y6Uy4y1EikMf7)FJo+Q=`?_GM6gB|isV%$A`!yywJk{B6enJd=Tn;^rxvU3W z1XO7Ola&*PeUEAFdGwBi*>J;WkoJ9ja6*~JC9~l-Yzo;kP+WsmoyTZ2;=Mv)sy%$B zZBJ0OhkS+5Gn?ZoEpYgh!_+|dI;GQ_ z20|Y8D&ImJR*uQ_Z;-ZZt1^FPStJzT=86><#V^1X5$BR$E7!kK+S(OZ&a*+Te~V-X zT}QzQgr&Dga9+j1(kB>5Z3jKd?o<_VWe=4rdkiax2?J|m=RB(1uB2o!J;Ex*?4-DG z3L`ag`NHfI-RfH<)YXV{s|cb2q%AuID;D9H>g*N>Q&`*qO!Y*>2qV0nLDPRE*iw=D zw@Ln~qQZF+OgGoRBnf3Mph6WOZS!_1`Vz*Wqp&!vK()Liby-o~gK$LHM+1jVyMGiP zp^*<*m9bWeRIE@=VmEjbviKN&MF!Oe4bE^|G7z}{V+B%h2d*NS_ zLMf^dr8*UJAOOny^BC_&z8Vno^MNAf9WID@hX9B{uU7rLr0|X)!$>Gmx4JK^awoEO zC0Y^y@DODEKyXf0IqPXoapB0m36aCUXHEP^fb|0@j4O`TXa=!KJ8RbaOQn2yOU zQ9i#6JjX}40J~ki%gbJ$Ovaf*eVDFh@BSK7XYAYkLp6Sz5dMo&-{j+kaOUiMS_(Ir z@sV+OWI4J1(~{cd=Kwh>q^|#rgspbI4#o~6`%Lde74PZ~&vevoA(4Rn6V^cP=}XsV zu01tHL$$~pog@&t`>L$b)YFUe{ipD+&ihm%#q|?OrO!x_A)%!b%lQM$;c+p-?UY&i zj5Kl4i_8+ce4{?Ya7bKAcQ{>iI;9~coKUr7(Z!|fE1?TTuKy(|+^mH8(#=6?ZA3)$ zm!#IcHphn*JoYP6xY2ryT14>KuSy%XTA$I%KlWKuxAhs79OJXkNgG5s~ZP~+TUyw8#(Z*+Aaw2+!U&xmzU|aOv zUnfawenwT`r{(%zm(cBX*u@yAPzGL7-uPzV_&3OZ4|b?-7z^gP%4msDY6B>CSjjW zkREDTOj#Z(#s&b)JqM9n@j}2<=b@Gd)1Dn*^qP}*O6u=x()hW+@0gJHhtm4C#|L?= ztQ#;xLU}XP)?FBta!7#|F$Cw=sru2hmk!{fiHE*UQe9*o;`06L(vA*~-WOkH6 z@(@*iL)yCgaihv_NL@psQ6-6*Z%D%j{S-9?n%iMld_y{P%)uVKO6wca@yi}n@>OEx za*YqzOAdTpnekvua#>rD3l|e>oeqqBQ^J@JQ=m}oFU*{8N|-8Uen#CR2zh-|>ge(y zY_DBG`GlEHQ%mpbhut{kA zk<{Afr_d~|Bf^|9X!o{M>_Y4 zAZfmIe+-+CTK^{!W()~2uvuaS8h=6+`fm-;Z#M@>ThWC3a{c!RNq!GvLSX%S(ke`1 zqOzCoNuyqsy;LP}qeWQd`MU2(hbG0y*F7W@oj4P~m<_s}?^Dr-Kr|m#sG95hVpnrv zWd}g)9r399+}%DlEK*06cW24WNV1fFAZ^$ogw^l^Y9Zjx{2$f9@*>W5{j;dl~N{Dp)82trW>C9nQMYUmNPD$_*UscEs$hC2Pfkj~xkvWK4;MrN~s zgFIQj5=P};N&!r&g;DvJ(khIqMbPmtrKfCnnL0&@L4GJ4gODlnL#d%p;5h_j%KT8m zUR`en>C|q@;Ffeh-66s7bRD>Jtf7JH|a4^;VJe%B)xCWd=WzFhtLr6lo1WndFI**q-@J zLT5EXL}ovdFilJ-gMiG$A4yF+gmJ8YB(-%Bc;EQc65qCN-){}M%vx)fyw45r=N5zyK&qR5!7dJM?WT; z?ZYAx6yJeBrHe#MKbE#OiAPI6mYUnepruEIqMcnqtf=@LuIF#14b6zLt%?P8+br>o z#4}5j6O>tM<5X@a-L>XYnZ)$B62{I7C78&j|68ejTwt62mjU8Wqz&6KWK6(oHY?R~ z<{ke;YE;F#V;br86RCB#M}EPo-%>i9Isy|6V$NS_~aZ5#Ya<&O9q<1Q;av(|}0ur>jMRKb1zt#3R9iGA=<5%i(D7don>D0dc^83wW4V*_rf`@;ZX9doZ~53^a`9zXd$a ztQ>x<@(!{y{)r5=0EeuaI|W$FwZuvs|4C}}s>HD>)5i%?4_1{ert;LLf=LGdB(?9V zagqTM#6MGpAi(KFOArLxI}RWlRAJUeQ^o7QNLyPx%H!8g4q*~8|AXe)E&A=_u)1@I zU^0IHU!tft`|f5j5S+d<73q^dMfdeTDe~xl-9-sZ2|X9jCKqU134!(jfcC$n4UK5u z4CKa~=t8Y9EdopG%n8M2j`}y$ZP?~fjbx>8Z3)t{`U{K6tezl@O=8$PfwjynXQt;! zb7D!uys>V3yD%CijOpDNPF=Tlr@u=nD7H$-zL(6OpgB%D#^^FL<*jwvus1S<3pe&} zBNbl^Kv+3QxHvGT>~~>_(g_B!*?9lti7C3+lNdi-w`Qv{QS}#Nvxw8i;`wY?7 zb)pK6x7T4uxW99?TrPvpe!}#NC^$16jU_4UAz^C>;KOY7n%4e6L%hANXULn|U6QMD zNz`xo_ByrQqhw+^?O7#yEi)9f^q#skTdJfbx~V*BO8Vm|bQ5!GB8nvW{&F3<8N8A2 z%Q$R2mX6+yr4uQ`rX^qL<+`nnUPKEJ_O2DOo_GrCM`FpHm+P8$dz9R%8N58iWpqB4 z#t*O|W`xG~)@@dVL?hQL@2%U~=A~X?xO5lhGnX%4h|WBF<&>GPdvBfAC-#+wRhWxu z7X@Obb+p**P%JStG%!4TAaNi*I;W4v=0;=VrLd~A{=eh>S1?*s$)|C3yv(2_YVmS%WQXXZ1D_&@rh217l0 zC#@&6d`8nB>hZaI4nAirDzNkkc-M1M1d@s-wl{87J=Uq=!{G8)N zrx+cBJT$&JW8%5=b7|vnpOs{9T=uH2%bXyae3hPvsIB(FOv5TN3le6x@c&5i8$EHB zs{@ol8jZpdSMS(hCiFSY6z4s%rsee1Tp#}Hlo%5ld=2^#)Q1s~6K?VfG>5;Ed$s*X zwM&__&IQ-c2TFL>xln6I=jv4v8+eZpSJ30cZ?B5|68_rRPF2(C#1p^bUiE8|{4>E} zibD}mCu~CPA(arDB~xQ*GQ`)^|6P*b7TgJ#EM}{Hz#Vm^*|NAV#*DO3ac`R3C7=%jC?APRCL?o!`(O z2QAg1^tn_&X+v*Fb^cd|RF``vv`!Mw*C7gzyBL&$h-~vbhRFW#nqajiEfD4SJyeWe z(-0ox|8QdlhICBJCDV6OFwf0zXqh=?S?6Q9dxo8k z!d@7~WR&y8j+!;}jXki44FH-k{Vf-ft(RPjC6QvDu>PN3JxTrn+c`6#P4gEqcGd32 z08A>Y#}bdo)L%&HdD!hqI0X!lOcstrT-OuiR50)0VRC+PUc-FnS-c%ETL&lrL1(ZR z!cdAI?E+g^S?OGT8bBbcLQ6XE1OLYY)^YNg%O@`vzH`4enMi24#Rc+tG(;t}d3ZcY z9MgU&05`6O{b#>61>fp{uEkS&EWNnEF8~fCF6@}~q#Cq+V-cspEEi>CsrG<+!lu?j z*W4}C8R6oa!s$l3tb@J*hCBUBm!IJ&Ut@8`m9deW3_Y7QBtyz&ET zkIf$r*`cR&Q(_P&u>1egI{9_pg_@Q)1RsB=cH7Vr57Vaw7Y%QmGwr+9*cZEKSP5LC zQ;d%*W!M?{yV=a*9UikIg`U&kkt9>FKX~kqB8h-3u^87A)(=8U8oJ)0-L+U&w`>8Y z&NbN|nl+c#W_8G$JhbMl4sDAN<6=4u#c9iinY(ypk_-)+yUdIwjRt1tG`_E$VumEK zEI=p8bh)0-ELg@B1A~<#5cpX#cM=q%;Qz$(+Jn2v_+4!wgWw`gfT(3ErOm>|xu<0o z^QNJd%48NCh88>WTrwR?8K`lb(N!+eRWMHBU*gEe?=R3RviN09rzNkZg=X3>2HqdU za_MfeNEUHj2CnEUFt*sqoNupe&shgI5l~>?aqEp+k@K-i#+&(d^S=c@lgNOW(wV$T zEEWOT7u)fIJntR*F!Y*{T4PqEq++UOfFhfNVThcQrpOsp$89DqwZH7$yAc?~#b(zV zLh`$VGb+k$Z7q%(x<3a(B*rC9G=&}9W}MOC^qcE1uVgd#lc?P&iW+uczMzLPxPXY< z4?)EW>W3vcz~aJkfEk2_QV*eb=Bj^CFZ)}CQW(+X1t`gMGM|hg?Tun9@%`! zq9kRWbkMOQRBP`6o6u;X*G&qHQ*`_mr(tsk+|5F+Hq5YJud~GT394G+0@(o4R1vvC z1FM^yTsvN7OIotO&2ure%n}aTTsAY$v{=c{BBMtN-EkTtkZS+tBvfR-X) zOC{qfY=|6q&yBPK_N(2&2BEa)v7W^V=8DItzq_$g< zWx)ufRxOEe84qM1z}jcO$dAkYm-z(}R1hl!7v;Z85RKDpA(tnwt$lc8>rpRSw{0^=wbo3eHaRpmrMq&x;NArm@R$oxk zS^6w5>@56#pN2jVqt^2>Cuo$b49m?M`N3?1S3LN3th9b^N~A zzuilyo28Dc^2Jq=(^jX9r2a#l&vAv)8|-B0Ca>4g-J)KzIqG;}a}GWtIw+IrP{ZxJ4 zZ`L+O79J@nIrPL6Pbl$Kkx4~85`2l3`L+p|i$5#Le!NL-Ez^QQ5Gh}*liO`%B+y+@ zf|W&%6;IkT=w%V}t+%bqAoPH`eSM|6y8@mp7?pqhAi^px7|ZG?zd}t{EJc*`GZIJI z1FuNQ0w`j?xB!1j6cDW2v`WKsb1$TjEgp7Ukc?){khCUT<$MOx&^GbQ$|%0PW$SVq zVP$0s-`n0$_BuL*Grxq53u3l-sLLR8*Spq#hY-{X+F^10HOm;jcn-%8gUku20TPU%nJQc_Mmc za^@_Z5H56R-P&f4HqjMGn*zqUW^u2Xd!&AG5b3&>w&fCOn21zfakDmB5kl+3n?0J; zy)0B98kE-Kd14-kw!nwhW7DiR8R#0};)WieL*6sAzHx{0UQhDlwL+JejV{FUcd7js zQgi*zjw+=lIR&iw8tyeUU4yVTub8kfTQIaGyb+TbR$Y#uJ$iX4N@a3J*Y<}9s!fXW zPH~{Jhze-mwqmrSTp+YPyv?IMG|NLfs+{tA6t(F@yZ6?};h0+$+TJ&W$v(oJaxST(B!OfYY?$pB7q~1N zhTA_(gte@gm*5+OR4mH#rVV#lyoAgUMhkJ(NGz^mso=YUzdQ>pi+_m4)$Kb)U~wC` z63$U~?XHn?81nb*6$|;~+VWv`A+>K{x%;3J@EHuX-@Yn5vr`P7L0Ho=C+XUDior7$ zSOq+@Qw*N5fh*yeoi+0eil;(5_w->mOW@kZK3{>J*%=vHo}S^pGTSQ|+BtGm1aW5{ z4USX-6^BSy8ftXs@srCto`>QXASGZt`dx*s|2<;sQja9yLROT%Uf5;KQmC zZwmZY2%jY+P>K`U-QMHT_Lr4HSt2cV@7-UchGo~$KP>2Vn5q`W>2564tjRcKS9$1^ zpjTNUJ$9ctU)wq1(DtlYdXN#`D~3UVHCgCLwvF&!F$@X|EK6395#B3?L16<|A|iTg zHYnKn_6&%ib?x(&@J;W~Xl;Ch#*d%Rkf&ewir9lL!{SFSe17xv224;o^5t;U;I%>Ii>M0CK57r!#Mxto2 zYux8VQ5f-kIW&Y__Cj597#lPI*2V^JhEi64$CRf*{wt7rM&Fl8f$+B#P&8);;i zBZ=AALUQPKzk{XOu-VYi?tQ}X4yVIm@#v6L#PG(gzN?4=8Mv6uWwJzy#H_>E`XwN< z4!3$VnS43S8dh>ZkhVv8es%1MVqTi!`CG&tI^*n8$Wjhtae{~RIjy~z`F+UkHKItDYKN-ZE>6xKn^OGTbLU^Azctl9N z(@v4l#L+3`(DE?Fa+0V8ou^?5zyq=MAsE2ov2~aQN)8EP1&5UdAPNrIDh(Z->507i!y(K0`Mu zY{WpfBj0xvr8PC>`=GLqg}0dEXPBE0$B=Pek@-M)I<{k%P-YHtz3j_)573}L4L)XgFI-hdmPecz z5R%fVqL7I4#I+lO5G5DoVFes_;^|wf!f_{s<2W)NPYPo^o(#lzJRPv{XjS4F#^dRL zjYkWf0^{*?z{aBuRf+LRe?LkgS=el}V=3wD|&PDpoUme5!&?ggz>`!>Q z;oPxlQL%Dm2Mr7D0upOMx(&8$!JjO*;X*@`5OoDCqI#iur=Jm3 z(Afp8%e*JLIT+#>y8CK2#7VGR*ndz+GKD#QVeIItnB$j(q~uE?QSv3+5cFb z;q2O-L(OAX5i9k(dCZv&CgU90R1?EU4SDn zf3?;|9CmqV#1ZWBoW?C{gTGp92M!F0Yj);goEyg1R+@Qez_0G=P^{_fuutft{Sn7U z5+*3%GqgYmNjD7Q>)}QVVk)gbQOEUNT`O}MfQajR_gOznH5~NO=t0Lvl0t-cU2MV& zvkRO-fK#vwbUFz$BIOol{LL*84L#MUi6*?9numGJPjy>9^f>2+r^ZfO+(2bdaBgnE zQLQ!0a2Q`#8kalufL85Mj)KJ0jiy%7sN9jPxY5?JV(*A>)YDfhj)>H5z#eqkftbXcQCjnK_iutsk>tWiqo)0-UDC>7Tb zQg6Z<6%VPrgy6Y=v+VYTJ8jSBM6x}f^Vjwyin$eVU5kAyPWi$J{8r?!Wnd0-1M}AL zQ#Biy?6jw^2+1Fap5MCq^os36Qe#o!*o=&ws4&J()Nf-){Z&a0YP7f7U(K9y$8=-$ z>t5}kFCRR1nWwDw**g#TW|Go}dh9hP$0yA-CiE7^E|WxZZcfkA;wnt$#=c=Js<20( zYvi5L7qHjFgXJP`t@CJw`LZwxb6wGe9~AYLW?AfxetZgd+a@7-KTOS zw3E5JSlVZN9eu;JQiL`xndptscz(az$x7*^(>$QH7Y|c5#2o#s{(~g@oy&Jan9(Mx z9$A8N*mDNmVBv_?sqH_i*>uu1MGr8Vs6-`b5BA%3t#D}Wg{kkZlLeU28ZYekbZ*af zWo75%4t};xEXLBr;=H(xFCccgx~)^}r@-H7{ei~5A5mdRi8}jPMH`#gL!VVNdiouK zb0c#ni9jM6MULv*>SVtsZ@55bwIr$0%A&`3uriI4BAU>sJH>^AG;jZ)^6&Q`k%M(GxYgramCDkr6*K-uq%s*9YoVKe2o7}CLp%ce{0xA$t@ z;<7xV(lQ|R#mWp>{Ef<-$+Zp5Uapcao1S9xj7<$>>mMYs1fFKBBA@tipPRc~SfKcF zXoVl`D&Z?OyxTUpLYnL0s!3QJI{EgULg-H`QmpEg+0}TkGMC!tE3Yq4vPr?>>PrhF zLg`BzDkmR`p_gpf?ECLke^e(2IHXq{vB{aoIvrJ^J*5)QSm@e2l}RHkkT=7fa9oUS zr%)jH1xB_^NOinfl3yRZpvIcczps^sFnXyzU39t5zjnxU+aRej{@npLUw{x` zQTQL!5J0Y^0{#u*{y|9=bSP#J8OTcbGNUzJvN?@XRc#VB2P#Fd$(6~_i22x{+G#)L z&=mJ3w5QVd(wPTbM_A7fm3jVt;q!l6CkrvA&6%PmA-#;~KE+!~qx&82^xyt*G0Ci8 zIXD-CwEa%)Iw{ct#o*b11&IxgEt`AA!4VJAjG62=?6e~IuJ@?^Ft4X`w5Ba`0i#Z{ zvDEc^HkrP|7}xsd$a25=&r+Z)X$5fAj4g18C5^wRPN|klPQagf^=m9{r5=u(lj%pd zCK%2FW)SP-Vlapej*~%Po%-!*I)#W0l&Q!979%!5&bW@neFv7yeU@Gxt*Do+#|~C} z%u>f=Wz=zz`u=E07OR0T4{J^tW{H^biXx_8w)(iMlQDa&FAP@s!{vO5BH{Iq z!TJ(bgkOC{q0BP=qOz#6G0(F?<%E+MZiRK$;N1!f6fvwO8yu$u3fM@ofwIZ0SG5^& zxJpJGsfxpu-}&7-xhiran?k8c#{%{|`WUSg+c%-~2hn{%i2_?5W18U5fHW7Mf zq%iu;-+8+~8cn8?`Dk$O52K^y7 zV%bi79bNXJ(TOU%>l)N5=eL-wc}LG*U?B22SXhy_ z4x_hLX+>T&2tt1%wwpfrgyg|?)3V}ph88A*+MldnUn8|MsAYelK5sxRuK;QqNxyMz zn=g~zOyzZhDbACI9=(#y+)pNSNDOub8+Ytp-W6D~j$OgVu01{z4u5S=ub;2Q&4)?v zZ&?%eMDMf36*|^8gFQ9 zsX>j0G4KW7MFZ|Te2Ax1cOLE~a3gTLm&CArRfwTc3}Q%SVvIs11;o&}0%B+sgBXnS zIEg{^k{Hw#6T`c~Nv+}a%3Ffxq*%hHh1MNfO@e{e%(r6Nt{-dWmkzW8!HWvAru_3js6H$GBR!<}l3uP<**i_@a7)ZIS03nakG52#Xh7J2I3NVc) zw0CEx@(F=4>m<~EFA24O#e_MR31?EW-tdO zEGU5p9SCpsWvkT^*Oo};;<2plLLR^{&*i6x!fb8*fi2raphWvf7N2~W5RO2JA2s|{ zBfQ6ElLM`7L9ofVmuxb=Vm6^D%Y+zF78pO4B|Nc$D9eNxQ5Jq2i#X15ddV6`SIinD(2j+-i6GE0RWbW0n$JXWXPie68#@+2Lg^EPlkF{vA2Z38 z5b{Mhu^8=>1Y)bEd?0wIqZmZ?|Ay6etfSLUb;Lq5Xig8ET-&U?#>G%K6Ytd*OjK3O zaPIo$OE(IVxs=4El=8`zej!rI%sW0gFzEYjfQ3&EkNEjoCU{Z9aPr{Ml_bzl9y{(Q z)QofqStq9ad@Vy3rKiup<@Pf@?ZPrvhuO~@b7i0`;Y*o`GfkSWnTaJp zn@eIq(LyYLmjv%2fY;Hb47muv3Xux*hEkw{@O~EQY2ol5hD!+0Ha7a2EOo)Vg=-3E z6D^!==@66__;pT;d7bFX3r(YNz>jGTrkUk(om9t6H;LNR>8(vQhn}aKTl^Hi4oIA*`hEj)74n z?qbE(;KtjH4-ww~kiFfnr{kFftA^#YdF9|C(P)!wq$`Jyi(w-%vb>7GvpHi1Jbe;- zt{WPaLoT;e>T4u3{WBPEF@5<28pt{yWHH`?O9l}4)uvAKcWL=2$>i(7%VbkYNKANL z4_+o0m$*VE-+-6ABAI-nQ4N~z3y;NR@{QKrqRHeNks*^vhaiDTp*@XUWxxup7Ee z+Huk74}^Y9=(c`@gnk-&$dLTBzkCXxOrEN;Gp11TW161P8ABZOjCdSG-s>~lRYAO0 zZk;>}_f;@KL&?KuTe?I{9x_|y**(^daoYC?8h&j|upS^ZNwCf{1@$Az#MbQ(}a_G6unsR)3 zh(3+T_oYn!bY?M~IF-$2SP&ci%(pfuLG&{-i})7eh}BudX1g)(HSSEN=Q6gheCyCL z(MX0u@VAan3uTv)u#Td-C*V+{)j!3Srov0|v+~|0o>0^PMKUO=GzCpi22{=>fvCT+ zRc4~m9o>d|DbgKOGyaEh7SsMw=LOZv@UT;jfETZ^_%QF53@Vh z5q=l<&dDIrQE42ocV!fEgq7oRXiia;gUd5Y&+Ct@-~c#p?&xIkE!=@ADDEwgQoJLM zXF#Ir4l?=TB8br)rW@4$2%$#S)bEVIxJ0gGTK zXtuAF4PaCeAtbk15e^}|0Wk+15O6=K^Quf^ku08^K;9O?vlx6Ki#4JKeQ%39+I=sd zrL^Q?@bxoAqismQFJiP!z)kWcV{H}#7;8hgxR1z=K)B%9?E4Tj0aq#%kPVM1+!sj3 zAbs*+Wf2{^{0EUi@h<=2=Bx=n4f_n{hX3=!VO zz_zXTVBM;*hp(q&rlU6iz|KdO1nj&4*k9GjulG^B-zXSZ zXKf!-Cu}^%Q?Xo5bAPbM*f(}_rcXP6t9OFo_UvRDqxCQ(AQsPSw6Rm;KQWidYKi3B z9A>_!^BQIm=s7Jjr*XNinVUql1!DzTF4FOgJmXT~WAZ}v^ZSgs2L`Yh%cuTWlKu2s z+_Beb%+^p3+t@yi^qsE$HxmVkNRKqq+j_)0lCbIeST0X-bXDE%3 zT<|mOQu(M{Lkog_qh-1p^s`5+M?XC-6#5Ig!__y`$$nPzlpzV;1*D!@n)vBS$BOOD z?DG@aOc56hxNrf!r^QSG1Fp#5)h#&_QQsxWeuj=KV!_}GSonTsIxB+&H210>tdoV@ zy`)}Unrwn)!%=xoAS>$~{ z>b0e>2H{q>WkLmaMGJy%&fMZAQ_StYVyXCI3eEaVP2`gE$y5x(i5_XQdj5f~r`gAM zlK1ha`^;*FP)L|}t0np0n^tT@#d$+=|QywGG0-iMxpdlFF*8+lLg;?p`R0k zKiSU?qB7FA;JB9DL6xPj3rf_Vt(Svc5u(o6WW>Xyr5U##cYO1pYoF#CgPqEx<5?ZX zEdNmul@V73O&R8^X{*ApjpbRyFb6XhPsTKYL8Do;kq&H95g;JlEO{6V{dOlUL$=;qAv(i7ie zS)#8?vJk}{PJVMBowb@zAYT>F-#qVfh&~dP{3Jh=WHE-ut9|x$l;(^kv`$JJ*>Ymv z_1Jx+;3z0wq7itkobHaR0Tn6vfagvY45C-NWTOvaP*v?yo0AtKBo>KL{wnahF_TP1 zcT<>9D!H5e7mz`6zZ+%*(xnM?JB10RDf4!Q)iL{a9PDMS{Du|m!d>j{_L@I3qV9D4 zk>mt1A$#^~flCu3n|08JlvuDRb7dR;B{%+de*@yBV!4x_z);x1^Sc2KLs_r-fB73a zcR^2SCPSSnyzJs992Q%Ji${lzpc6Fwb}Oqwx-qj!?J%XosM=&-gH`myq{1HrZrs^X zIH#>dlEM5N2a%XD>=N1FbCk&C9!zL0uiocOb!CuPl*qCO4!T+drlvS%(#@DUV$+RN zHBoS-8nraOv|9T8z&%Sx0zoa(P1awzkRVx#b{ZvkkJ5tGBEaBz!U+?jz~2ho2;osv zwcjRe5;gQ`nLD20A%ozJkAe_1mgf3do#!H4oZ)9&s~{Ek>i)uuEhi22sr{br190{!w>iS-1wwO6+{6~&s4FU!g(zPx3tvfl;x(lr6}<;fFMoy{_> z(RgBeXO(L-=zB4vs9N*vCs0>sEyzzbHNa@wM zwEDH1{Jpfx2GP)#ZQ#8gjnB)(J6m6}Zq3#e;XRDOXmThV-lV+N1#!!-Rj!g`tYwManiur(CVJehyh15sx*2=qG}1nk~`4RCyQv#k6Kv{3!p&B}vSK}xl^a^0j0GEi_W^)L**xRx+2EwA6! zS|x4_8Hi$&7;UA(UcUMryQX_#VpA{_uE)$M5A(T8pfF16AR6T+ zBw1|h8@BmkvAN%<4Ngxyl_QIdn(@~+wR+i%Up0z)V%a+kC|dBberK1L3qGm`>fQqr zEV{pqn9AZ|e^>QjvHRl_q&H$FvPdwIMdu*k#xS%t&L59hup26S@6NB)EM}@-b8DM4XxN>xPSYM3O+85jqkGMd~k0azM_e z8mTHKWf^(u|E!aP^1#%=;;@wELiE5PiXb*c4iN$+aBPey)lusaik!skIF+8xEoLc3 zl}V>ig`d_@g~Xi@D#?%Wit9+nQ}R_80k-^raDl@nbsUt3U4FKLw&A{-r2dYlHKR*d z7bb?#1UqbBg(K^3J90+RB|NJ>3Uu)r%YO_Kcw46wSNvG&22nZ~yM6f2Ub4j5ANF#q z+=|p${bW5;)D>)m<7g@hRr6VVVpChhulSes?%Vwq(W55a@(YDjW9}b!CW8^` z4Xq@ZOyA$yy1ZocC3m}(3&+Hm8Vw)J6Sz3 z8_Q-7Bmlr zZn@C9HG_&LO@-;${p1}c4@g?s{})}%CsQCBC;y`1Dzt9=l1GbE?036Eg1LK%Xzmf# z5Il_LvpToQC_t=*I`OKJ{Zw5WO9Hj%7-ULsWm~*7NUnd%kb!Fk37qY zU=#yJ0_!z$NPc3ilJ^29Wz`&seP~$(*r842C%1T}O~Rx_YH@5pC)5DZ!--LoQPeLDMFXhUkYs@gEgf69j8tR)oisCH|!lld6Yp1S1bzvrY z`tnnkPDZcKTq9zEj~3dBY@#K*$L%}WQ(! zh{ov)HKGSw%sNpTYxL?4035QsIvaM0VR?lWOil@Pc0?3!=JHiE1g|{0$fkQ!t1t3_ zb9z30*RWZ+#Y5cF*?&Z2?qTcfcdu`-Z zWIV6h+q_RKi!6-gl5%KYc)RjuPlgFrryvrUIMOKyQ&`roeH zKaXW=e1ZUL+Y4c{I#gd6S*QUpS4(4GUw@5=|0tbr@UY^|9Gx1@S88YMJ9>IWcE-Ll z=W0X_?2Iwn&KNT6j4`q7j4?s&4C0(I*crld4pVXCwv{miMGbv3fdoTP5rD8l+k+?C zhCSLIyi9(K(o`50W#`(Mr1Zqdv`139=I}4O$O#lb84dwmB+0djYqtcIYmCqi1#Z|J z63?*t4DRhnc(3x20QIdSkP>~6%-_u{=A)Le!wggA-XD8%Lydanb2#KtY{>eg$cMB{ zpsx_Lo7$Am2@S2QU33(6b+tuceuEC(8Bu;&=tGwpOGgLBR%9$49Y0(n#%S%^#SQHq zZO2<$b49cIeCEDh!l~F;5xTgu6J5i>Sn#fJ^-!Ld;%LYNUF_-$Di6do=Z(!Rrsf=m z<|KUGP}_yXSD5M+ZtUvuyl#QzxNhtnUiBQ8k>7XJVz3<7jRQw~%5lM`d3uW#))@f_ z(uF^*?H2UH0q-+gHIqO`K%n$VSHJnm0ppW_BjzXc45~ApIdQ>{>I??Yv)e2d8U;oH z;j?YMPIw5%ufV!q5rt4#$pg5SHs#*x2uRn!9+m(;d_>z)Iu|kv+?xQFUV&mP!)PDn z_jq$ltNF=6gEnurcZiF(o1ObS#TzRDVudfL?&WxElS4O$k0@JH8I;m$V?D_PO*fcJ z>RD1K^tZ>R-T#)+>T}!LO$?87T79l#zxl~QehasncA1}y;}fFZTPWfZlX}VUcxCfm z!3+sRhO;KXBt9J-BoQkdV|pqaS3EmlD3wx9te@&?T;R_+$hCqNi%nOdtqUDz`DC0o5zz<=3P-2HJ4Fmfvlv|J@Ua@h6_lPx!RrwsJy8&7 zw_*dRu}STT)E>@3Y$4S@8eD9FP@KcyIAKxD!tnV(^F37YnQ!YCt-b)V{r-AeGf`ZK zZu34;^a9@|>XPs8*yBsg263qSJ^en!p-wNyGqhv?cLV3w1>*A8NR zh#016h)_g`K2m$EkBpGe!~F;S2?^o#kD9s)UJrfz;>z_gr8Qp@?g%Wc8O8c9EVGTG z3l;4*i}SO3Hkx0=gheAQhW)gm*K~HH0Mfqo@v-4CeS9`C5IZn3J2IjbO+~9B2~Y_>OR+*RzNU8|IK}uYgr%XwC<_!3ORxd6 zd3M7_9rJ6BPA=ET!d!eZA2CNF^qQ#)%EtsgXgrfL&w1%;jptP4`Zr6C$PNX8@!4CX z4I3>XK;caG87v}GRE^=Y6ZBk@ri{7JLIq1*2lugcj)dn=OY|eVx`gJtu#zPx_w4hv zg7hT4GcsJ|H0FXre5!6VV%5|1E2GDiW6QfF{6c4LA(hONyfjK$K?84Bd4u0Na8!IgWT<$Xgyu3QDhU3!N$uT_4gCGX z1@Pl~Uy>ZbHOh6Irq8yvD2JCvQMCWAGq$jxrxW~ce-*fSNowtS43r7G+?S*tJMd`G z{!7xn{$hmvoaBg%0b!oaBr0oEm|bTRWoHtV`6|uE2&Cy&ZL_D~82zph-t5X27k%5K zLE~l6aJ%2^H&w6OaG6FRZ>=u#)rj#;?TE(4FWjUwSf6J0-}C7`zvt1AsxmO$?zcKM z)gAVE_yi~OulVAV?kRw)VNq^2sbc|!M$>p$BMyq?HLlY&dW#Cd=FR@YrO)8j>gl@T z2s(^W4|bXg(EnMyti)tea}`bT+FH+MeJ_n+3p8uH&}Y_qw1H-6U`iWA)r?KV#y+2d z7E;HE_`=#cwlJ1vQ8}v5CNy)*%1zMAE$}UE1m%~34>((VwjN*N|D4hD7#L4nLc9^v zatnH#QrHQNzpIbWJL}Vka~9Ka8sXBcIXLXMrxf9X47h>^yu{(N%Ki%D1@FK_2wVr~b zyS$Hyh(7Ba>`=y>t}-wbyo(NIz{JajV)KBCt#yy4@#pT|h&DaP5Kc4sb&bjaveq#f zmLDWB8*G-zq{VDnPuNJjren5Hx(JVSWejcB6|rGr)n5`jW5=ZoM0Rd5mDf&ZutP7> zQF5;294!j~=JD6oU#gyM2CIcncpa?zuaYcozp?t9my}Ou_hy-7P50s8yW-K?a(x>VXP(cuIkl+#mltDyq^&E{vm%fH$DT$|Cq z-EDrPFdl<;IQ8vy@?%wh>al77Iv$@6Iq&twTS6YK#$DQKacwhGj~B{*mxmzhsV8Yd zGeWM#0kkhm1t#e=)?{bfmN|`j#QCgoD?C6y*oXLMd@-9#!W4aEhZ{%$l*Vo7Qx3%p zTm(SE{;%N0^a%Zf^@6<7uNa1crzu+?V7G#*l%CS|Fh|N88J34RTE#O5%Rkd8n|ZYg z?(B&5(4g956Oh%{WBtL5$Fumb{nHhUrGKfD-xW|T07XD8v%a9gIL(J$P0F7ADd%Jxuukbh%0bD#)cNGj595+P`@sS|5AW@ zUXr8sE$2w8O=%T4=BxFAIV}~7q_79I617$Mu0?PLosoHN*Xm3lo}ITpLRAa<#M%=< ziQ}73rSGLP57M`IJpSc6i#n!QSyv8`czTWn%2`zx{fTN9G+yh42hs`lL0P%Ke8S}= zTa0!cuhMu~Ss@XV0&pIgv<3TrN~}4)Y@N&g0z*i_^Y~CwayXfZ0PqBp01F11y=U1ds11QEl8PM!FYT8cHOG|c2+O=?OCjzSl6ID z>r(DxmPAxv7mMxD3)u|z(-y*yhLQS}tko$jb-^t=miOHYplupdPjK(- zuC>vHt@WtyjZ|5?S-jSRb`=kdRJp6z_;Ng!%TxK4tlW}AYu9a1W>)1|p=7bA#;hBl zB`@faU%SPcdP;qo*g~>y-R4!=LbC8^0SY}6FL)>35cYh}N!Y(VCt<(#oP>Sab25($ z!k&}Fs?eOhCZ>1}D{&`nIzb0Yczn{A4iuRN@X2fT`aFQo$#De0(1gzbnB`-H?iaD~ zU`@A@Tb9ezt^8MA-Nb!qu>TRY-P-~ zl|vgu*m(0r0J5=u5Eb?wBgA$0jyd=P8^CxCR21Sm%Ib+q7U8h+a#^7PdYkHdJQ|?q zAfWO9C+8P3=pZTH)DxY3#Ojr};`|uk++4p4D=z{=Y#BHWMAGzwE%hy;4ZD;T+I6G| zvFk_?XV*~<8%ox+E6;mDOu0w%vzZi|Q(h=6U%*TE^sQDqOQEPPcm-!RpTlww`%llxs{0{_$aWUT7281WWM*xqo-LIg!U+*dMMN;H!E-QM7fkC<4Qod z$X0M%%H&zyD?u~~fLc11+vIoZVO(eHE2+tkHuCI}clouEr{qwq`1o@6v|)-Aoo-jh zz7?GgHNT-fvg+4Xr;^i6r|-v7$po@3=&MZUbH=6ZY2Ce|W6|oYeg3V^Dmj+v+K|yD zVSpQ;@o#ljC1|Yi!enRdL;tH!s~;-Dge{7ET`zS6LyGO|@Y@x&J;5-$ts#tw_G!^s zMa)n=STBSS`e{N#8yl6M2}rV9H$>!2q%#DmDj4bTtuZ6v7Qd#tl-!tG0JaIAik z*fggDASj?xP*|bGZj&2*TZ>r2-Dc^6QJl_phd5}9ED$!SA~d=Gkl0)v#%2cK^2k|% z8I|+eiS=7Wnd&|uI*-tj%TwWY zkCt36E$bH-5;TfRe~3I4qE!W!4lP_f4MFWw+hU0;RPJ1Ik!6us5>H|>B(b5;hTG80 zHN&yKH#}OS!$>@RZ|rzrJiXNI79|(%ojAP$xA8^WZ8W#dzbKa5_@bb0BXPxxa2p>N zA;1j3*VxXZv3&lufjf_{70P*}YkeJ@$H(Vd8|3=eOVFA|^k*2+pATR}^XsL}yFIE? zsH!HrxEPyf8W^zlE>$AJFEL;Tj|q$NV*NtPKI(r~TEE#wc^Ks>a{U{m4ch{A<=@3X z*uE>UP)yWNUDPmaUH2QLjy+C9(fIH;N?4#4l+9edeq{lO`Zv*Vc(F~=FnmlIfMRvx zI|8yvD`Xdm!QUk98yA+ri|u8O&bLV69pa%=0^iVT2<&bMs^q2IRa^cMENDQudnmBn zR9Og%Z<@+;0P4uW+I@xkcT4MA#6M|R`FY&RyQN)&qU3}~W4=cU)chok`5s9q`;&O* zWeEmoP|d54)n@0XBhH!M$D-bTXd{Sub;2`Zez*mFw|qR3u=g5ogNsu46@Bg$L- z(c8S(+_71LhE$c*%n=d3Upg@Lm=NIyr0_PA2oHb=Nz#2lYU&n6(qW<<;OV)9%%mq> zY^X&-Xf>10MNq76sJK)nme8|w(HB{3&;|DYoop#caRpO!jsj=YEo;QkxbaR@@B!)a zt;d84J|t~!wW)x6WFHP*zkFCc{qhlM^73PHsUIz1?XYr0uK%di)LLc4vuJoqn5?~z zN^Lu9wD#cke^lDF-$`W0KD;x!+WdWOx9Xtf_c z`nZHdxS?rjo!2S)sCh?~`?iyr{u%vYe){r>SWfR`nGfszAD7yD&0nUyrE$6b6B6RW z9!?GlE63?2TN{;87l~N9gwQd5D7$E5?h{3~0mwh;2jrhzG31{tf*iTx`cFyWZuDHb zAjE9cu6|zAQhQ8Ga$i-{(o0H;fPCh*FOykVSpr_y(-)kmGMYOKmFm)8V7a{5RRvfh zhp~WE)cY$b1!2zbr=;cYS~Xg4D6aD%SD=Kin_3vca%Sb z6_O!eq_EjzBtuvb;EU48gv}J}qhF(CniiihYvtFam2V^e2vGDJQh29`<%$w5pRWH+ z3W$8v6WUt3L8U?=U8x}aO{wPIgU{ihUzX5I@(J+{>KfwxvQ%?73CY~ANa5DtWN!K5 zPOFT{I5aYqq~)NLz9Q}D@<}OCLhq{*I#Gg3=vAQlqMA%efxq@uX(hcV@F2e`)!d8% zKkg5uu$4HbZS1(LKcpzd?CPi^YgE4Zhui(;(0uAACK2_AQtKY!MHJH_Unj%C&?4i& z6-Af7F13z%6kV>WuA$NlHv{PL<0jB!Ksn_(z99u#8jOptER_Z5aO}Dcoso6CVJbqKK&ekEA`|lQ+&D=B( zMs!PZ{ae!d=Ep#;vs?JKw4vR)1?qvLDyVNuyGF&Uf+EWQwsi2^V?_Bx4d0e7Jo~s% z!yij1bu?GcP??z`*Z;Ak_F11%^W5|FS^t=FdzE!B6+q=~_w(h+_%mtVyY#M!N#&K^ zyz8Vscgc7YDV*;}TbctbMZ;7UfY36G{O0N$*NlMjslwHJLUa?+2T5eN;&+p&MAi(u zgBt#Ww5{Kw1{!pZ&;CT(w#WL6D1>nNr&42kfVia6u0NG_js{kXRCWv>*Aagvwe>z0 zQh~hIKa-AMdK|n~PI=!A)@&p${;t%pPh>9suGDwN;#lHh(yiZ>rk{I^bSqMM|8W(9 zV{~2rw-oLW^tvSFw*cVxD0=sK5w$`OpK_kb+OyA@9;b*(ngHL`>(d5=u!14*_1~ue z+oy!Y6w|7hAjG{oBeC**%0>^lsQc1%ZsA50W`})WYVY>N4nw@<`%>?qPw^Jm6n{ls z0j4EN-5JCNe&+-5o7^5{^73~7C2~Zv`a&ueH~K&T-H)X`5epI`5<>e=q%G}_4cZ?PygR#;w2O>0 z{gY)>Xt<*8N;dQG5!-_kTR@Faf*0ukeLpEiAB=|ovI<7SyKoEtm5Qu_np|GoG{lDN z0;KINDAipZOq-Wewewim$HZ5LLWCh)@L#3YovW^+M7Ab=s2GFr^WUjDP&E9!NN~07 zQ?g#;Cz(#@52KlMlq1TL9{*HGN(_DfByHX4Kp)G||H~>!l=tBl{#6Qa7B$ut>9KS) znWh2@3KbC=Sh3T;O8rAsny6N(rcvyKS+_V9N^gRir0jMom-426mAd!Vcti>`y|HdX zaQhw%lOc*J;9A-h$Wrn)&S$M3?=0~3>tWjLG2u{q3M~A<>PFA z2+;PnI&}RS%4LXhdIad(>YCaF0+fmIm+G)U)dtk~Y|q}}&wj2BmP^rdZ?A*0Ec)yn zbsM%?pHUhO$arTR28Nl>(VUPex&B@B-fKT+4XFR*l2IbCicu=^xcOPdm@O4dNiqWy>q zSdP2>W5QqXFN%J_gvnp5YuqI?CQlNK9o@=ARfJMt=D?&+F4#o#sk+Uo&__i$@iTQR zFVLq-!_U@*n?$NKuOSV5-xBLI+?oFWN$jWoUj?7Yb zcC^+|X$x(ks*);Gs><4>s?xr;)GeviT4+Emva&LxsuE>oCK;KM3NW~VhHjdz8!)>u zrtN3I1{!EEV4Gzy_{_{(3>f?Ho_XV$Gv__O=QH@=;n{v1&zbMPH|~wdwKA(JGb617 zEmc&+z5o6H|Nh(k@BjBT=~Rl6xqjCdKHc)P4HrJBb(qMl&7sW(>xpQez5cH6?4_oi zy}~m3g3pO84vVrDU+`^dRP*R%Gf+U=MNo&wwa#QZ7EKz%W5Glmq0+=m!ep@p_WQ{* z6@Jg`!Iyli4Po03Q@okjsUPTfmoms~!K10>Y>t-ti@0@M43?cP%Gh+})d; z6=Cl9vTuD0%chhhXcq`5hTbpxb_}}sgFSoMw^8~m!-u$E@l~G_SjO&Q?|seJ>F}0( zHgLLNJWB8Xy03GWSH*Nd!x7-ueN8(8Or$I`o0G2n*L|U*1^7Z=_KrXD-M>LwC}W?9 zL$5kcB*iC-o|B<9_7m>b#~t7D;eNy0ntfd7fKk|VmQEnP<-cAF7ag3grO=2?#E3spzbkC2Bs+07Ff^H#9;5 zyX*@&`_#Z00mvl|hutO=2pT@@Nv@*2)F1ee_Sy8y01owL&6Js?=6&`}St~z3AI&b1 zZdF)_{0Baxr}-iBS^$*lgUsRqG0$d%6ur?liEF+OxjA^qoD_!Q)gnUANzWT+J&ut>>D{$KzYc$(ay9r)>4V@}Y$2yISWrNSnoFtk_5m%A1P} z`49#_^)06gA%wwCeOhP3guzcqR4qjq{M4uKYOpZ)sc&}+?l0EFjc${QQU0gClc$6* zU>h3S?mzlguPJzjqn!WfTf1?&l_A;CJA1^?jL|4X@UMLVy+QUul{k1Ad}S@$Y~WTr zMGt>Q&TG?4PcH(SG~hXeYc=md7*EG6I%_#hD1 z*qOUO^F8tErF*-7>sze}NjpLrmZ%i5SDGQ?ElrQM?b6JZVf9pgKC{3>{qy-` zE)mUUqYG05>@RNT5l8;J-s?$m1-bs|1W$ycQ?%9{{^|3OR@NW z;oBQ(pv6!680xww z8`S%_#xSRuvhrDzOa}WPiIwlPi{WA4{)6xE1xax#@ejBDmvoH1oEYCPS1yaTG{*N! z-?p7g+T_3Vp?_K9Vthd6FMa4(>MAeRe@}Z#06DwlNW)?Eh6i`tRgPx@+_8-)4t?U%Bbm|VWaw0jj(~#lNfASqV zBiBdaP}u7Kn-J@^$K3uFSa0 zjv-VGFD28n>_DGg75bHLyHVqH9{LVpfq{$c`))IvO*=QSe&riGA<1Fee82KNdQm*X zdILyIR6G8~7ueDKg63shEPi{Ooy75w+NT(FFiC&I15xlo=wwjscNmP_2as9QRGzuA zuqXzDB%NI$f`3`w3769LRfa zD?IBD9d3}VP{+D(A5wU+3Da?4pYVAQC6Y2Z2k zZW*t|GyAp0Y-VBe}}^qv@H-3dEURwtf%Mw4a|Ca-oM1Gr|10*&3XbdpC|Pu7}*XB zKkq+%Nj@XL9Php0cYO6x^7Y_GzTn^8vs^cl4hdfH?;ULIApwTV4r+5M>+rL;gW|bxAz? zn18F>++*bXpHw?O=I`0B9jeKukue1;oz0mJB0uIoAj4pzwkrL&A9sHR>)R~-aesGk zxhxGtew=iVJv3IqR{IJ6R#}L1j65~0>=S-t-!fPB34gD=e+N~{rut34Q`HAkv1gz3 zJHZ;Ufj{Z*?OTD>e$wwGBeLlzLhva+N+o$VLJ&avP=aw&pGWT>Fq(bJ-|tu%wEgLx z(5L-qJJ!N`LadDsdV!MTP8S zs~7#tNVa;>--2YT7yX_{wxVO)7yU@KYI?t9M~zqFz=CY67yZk~wtCUuWls*r(2O|_`H{;7Y|{4-oIvdgF+Y;4?@ZYwF~lW1L&SY=tBt8 ztCBTyj+I`FFypC|Lt%bShU`wQOQE_90a1^=2o4GPKBw_OU)sbI>HQ2m0x zYrn_o3^)HJ|MDw9k%RpuKZ*!8y`Zb3nJG5ra{_;>U)@K}YY`W64) zus5m7yuz3L52!M@Kwcqe^|Jq=H4UTH%YJxFOQF@v{*BukOskjuC}Qi$9mqnY-(CUP zNw*Ha<44b9kKHJrO8<4Hf0d$R5?U8Y#I6;|B}n!KzDwB z1?W#1>_70M?NXUW$15yI-Yn}QmSyeEFyAC$tf8gI~EMsjy zB;(kFYh&u-hyHaNR!ChG)hb67-5>h3O-rbvOAPTt%4qN;(g?aAd6}d?Y9vX2v~-gG z$UipWU6TITkMbOzWH=OM__4opTa85-oO7>SwmX@=D{B8k1^r|NR1ldUf7xOaq}*jR zMLSA>;Rt)Aj1N|tIVaIHolYky+nCJ#zx3n2LJLjEG7Ae*9=WZD{&ML~9Ifteh{HX( zI*$FnAsfJ>@L>=BjUSypYAcK)nTwi3x%MEZLa@)PtK{$vj(Qb7MuoA-rBES{c8PZG zJzwR;D;`~?{(Fjgr;H41TpUSOX41oURo{>yW~*B3RsZgGRa`*Vw@pn=aXG8XQBoNd zPxX%e{(e>e;P%V;`6~} zN;8A!Al8`1ckC;*Hb_RH3snM@kAIQ9C;Q~j7NlQfBLY=wzbE}OP8 zxCKd1V$n==I+0A|kV+ahjBBQ8Oq&p@gf?R)pT*j;DoP>evU&D_g*9B~B;vqg5m6c+ zn72?Wi3k|Y8B=WCQ^s7>!gyxN;Kk(uBOXkpGE(pc!h)Q@>nhLxC2Sp{R?GmaXg!}dhD`=Z#0V_9a%T~SZSDpWI}#+1j-grh{uI_SWgxY?pO>8~0GtUL z{ypDE#8);;GX&$u>I*q3g%+mBL}Rx>W2?MmRg;NnFxS4+w3Rtr`rlJ*VPZR2B(vFO zv`nZ3a49W8OaLxYA^%C}S03HPc&`>0Uo7~<_k)(#eHXdOiX0D^GdFc`0XuNn4u>>Pm24CY@}E_r!N`l=Q*mY^jyL zJez_%i}6Mrq#K=YnAWmjazWD2Hc%l@pvfW2A?Q)aGi!ke{I|rF^T025&JE1Rq`X6Q zmEfwf;;Z?T&9(VdB1bP1vMlW0C(+q8HIt}Dp=-3sInR=KjniJh7kO?$V4QfqD!Ly7 zJF#RGBZdpV*xOPTSWLAUbBWoxepn>H0BS-*KVOR_2-id#V!TR-y`0XOleU5i6A)7* zP2*+;dYLo}i9TB|I9$$lASWiIH)hH#sQeTVqLe!SKybC)BPwXF=QE1V&q($Qu(m7Zf zcmwhf!(_tyV`*#u@grw1Uq5@*J%D&nI0Spj2BASyFxJy|Rl1JHCP-2VFt!SzGKqe+ z{RRGa*(VH73;@jUnjWK;ehWtg_#mPqwy zl2QClItJBQN4=DWys?c9hYDnOu`MzM(>RyU!c4_%nFaAC_gtdcS!U>~K{GrX<~9@A zT2mol=7NC4W_LI!%%s6ScIF{!r)O~Fq&hSQlkwr_P1xCS*kXw=jGrko6oD4@yWq{C zzTv)+TcN|oJ!akoLsMZ@UZ%I%05T+-2hYL z@jo=%4ZgDQ1aDfR?{ol*CE+x{ROG*!WRM*?X^?JA2X`{^tU0Wq1;a*K;3S2sdscMdb+0Y9zZ=m0yB{ zh+T+r=x;f*5fn3rCdnQu9fl}Fwuks!f2YzimXt`Oi|$m@TmN4awdq+k_Wp1KBk>v1 zhvmO(#;yL6qW*e|SXM$C*83ce4c>`n6BO)3)TRuR;zj-W4z=m|EH>t2EHW3N-jZBx z(SCb_13m4x(s#hYV&n0za0eDzpAf1GB(L6`wNp;hhZIP=Vm~UQHQL(JzZZ5GnOw#&QJTaaDDFY zX}v`s$}g`nBe_UYTs7mTqSBwg(qwo@xLi*)2j$o zgQ}1^A-%8gL3MKJ|GT0#y>M@})wmcnqz}4&a<8Kz+v>aF+ZQ;7`*)@la9>WVlfp28O364*|IXSkxnuS#T}d-98jci zs=)l~X~(c3!O78yh?|77p1moTOhX~A>LAky79i6W=9H``peyw$EW|1(w1oIj!N4>) zd2Ae317XuVqM+08TQiwt!o=|eg}@MaoQa|UIGJyJ4F!V;DjGpjYk-Gwp4$_|cUZ!0 zBZ|ldqEAFbu%bhj8nlJLCZAtu3ke7F4T{vwr2>a{(zw7+kn9m^a$M#3`iB*@>9^Sy z+rhR@LYU-}EwcDHRU%@)Il@Ks2DZ(jdKJ_Eqo^PE+>%`SD5PI<{j`X7szGq*KUdV> z^xT3A#7;=RSn%^Q#gP6JMQ!@6#zi-j5M?2KT>P_Msit>{gqR_Hi=$xa*kA@nd2tp$ z{Pz7VlO}N!c@}1b{0C>>IvZDiw#X`|`ab02BDMi{S4!L?f!*qw|05kz0K<34BZ^dmESWZAe#&KZUDue^^})LlH7qk)o4G z#gci--jPcbgOfsb55tvrB1e(I1P+Si@;%oz9|??Ah})^c2HJ>Vs4c} zM$MLwwMb%C-4ZgK1OfLu9tE(F@9S00|HHcrE8Le*S%nXlw^8-~)H*|JF_sfseMJ=4 zaAn0MmD@<=cm7v@%Z_V!e9hKo5j0sLw}T>jk2{)}MbPh39Ip7i>e{S0PWOK~;q(HB zCou!ZNkp|E@R65Cc?NbW8znXJH;~$sK`t3-8b{#PrlXwq8}9eCFs4$8n6}&Vwbq%; z6(K7Yteu4qxct%g3JY;m*B!nTR|diekuW1s?zOSXd+q=8t4*(9Vq4J>J1lN5kr|XO zr-*i)<*bhFx<$UIzW>Ta)%l*3aby4GvS<=Jqw~Bs$z${UE6orVRDq$Yn9`;I0M)__3st+_gZ8L)c|AR z77gjA3m>>`hMFl%H#k~l{ME2z*ES95BSIP-(u2-^&6@FPI;#oGe~4YiHre;?Z`tWg zq+-xX|Gdk0J%QU1$UNt104ftd6+R@f!$d&gX3$V0rMSXTrV=AK7r%7aZt&2yOswISs}YUGkS0#PEldd#E64yfA+{)2HD2{x-nAw-53@kID;1r_ z_yOvA1-SS~qDsZT}WW#)mGrUuD4 zb0OI7aI=I+|FNQeqE(Wy!fqh{)!7ZmL2&)#=7K7Gr2kY=f6IHzD&**pK34d^y|^kY z-cr$CnPz1+TS$kC(yEhz%2FDYsa&U7A^mv4&u%Kzw!a+(HeQDUlg9N#W#jswYL{&u z8r1ifQH{7iW3meSR`@c6F*QME%CTF1S0x0D*yj6Nyhm7b0J^CWiOu2m18xwK(f;9@ zlxUf6A=a1_j-cIu6O^R1*GXidar}^iWS_z}=gd55+(_Y~z)c>|#A~>NY3GUDDpr^O zw`1Dh5bDwv{L`<+Wx-`=%L@iqXQlP9JT?Y^6y>B^3KwPsD=*A7Sedc(|Ej3J z??v7SR=`q7KUCp2i{VfIFN*qUPcF5Pm=IHi59+3_-Xo>LsJ_*aCb-1`>n?mUwNNBG zs(Af>*t#t8h#iR}Y>>1#>#U@V#qECC-uYY>6z^>36yyv$pQ4;M%;31{=dN9M%&}6h zoW0EUYSGr>5Xfz+e?d{7YZbq_u>muSU=HcK7Xe*&w8_EBstU#6XIG|Tfb{nq?KU-V z8K8FK92?hb!}@?ja(8Yg`z=Xxx;~pS-pDeKi+K7_vVaJ94|IyK>&&_JMkkza!PQkj$J89 z;MzK=9m+Ri!K7FedDLtOYz$H%GpHzln@?hf(jDT0&TV7y$2_A7!?1O^#wmLMNK0Y~ z-t2AoOs+w~5(NFvT9;i|j-rKbOk-8l0^e&G4Thru=y8vM|a647n%)4(a=(&K$2ADtF$SsQTV#TbCSfFPA8{w=Cs? zpcVFeY)-W=T($6Wgad4lffRDAm*K%G){CUW@K9AcIPVQteNTE|!y|4F%%yf1c$3B@ zLL5sjWg6#ue)XAFX?fd6=hueWPR%>?E~83{-X|_#L9)`wB3)A8!$v5$$?x4ezE!bJ z^({x?T#BZs;tNwb^K>VlGD+Bve6DJW!-2*K3eU_oviPq=GN#Zy^mkcMOPv86k=WO( zodr3t=-+8wLbr%tIAjzljR?$!bk`5nv7-Oy*2iF6YbZ;Xkbb!A^V;a;5)CyuHp5kn zK%}xRtc)33Q}wE;0e1m)-Ej6Pk1Du+%Wb%!lXij`OeK~=Ag@vL8U=I>xZteO(m&=? z-_~qVbS51WhqSP26S+u))Xs5ddF(hu{0b6BB=IqupThbs1J=1f_&DC=e@e|u`K8;q zq=ziQL1d<*=mN!QyWr1s0p1ASz z7KC=4<;XJTw&F&?vw2j1D)MPb0#tg_B@pZ}u=27J;c4gmQe2TIXH*P~C=MT>KZ#N? zRCkGi5;o4`A`0%7n8s`KsJ7uM$|fa46xUA3TnVGM5KEw97E2WONNj||WzA+yE0bo` zRoJ^YRuIJp95<8|vqRw<3`UhUkcx!@8n*L{qF!_oil{~r)Ha}a&z+!)x_i+SZZyG? z!m_X)a@M&TKoK0OXvCIBV-e_l=_tm=`n|}7xV-C9G3wykz15vX+l5K^YZ6&{E8MtR zIL?-;f8GKcs3!0nbVJHIKh%JG$2A?U(KQ{Z?h-wM(=WxC`Bv)FOI8ASmnR6H_*tk@pKM<6b+)ln+K-kMa7&iO-|nfqcC zXyc;7K*R(!CG)I0nRvBy*Am!9kgXhX{63U2UASetNcfej_NP-4rC@4{x|!I{HFe|&8LG5MdRc zt4`umCVA5@UN5#Bo7Y163Bh$sWk>zrDb3GHU2J(oCe|HN9}@qpd51VI?#M_j(XWx} ziM=xVH8NH;`sKWLu*UbQtD?^+>Khv2U7JF3FDqFZh1ke4B;}SS) zuO89;Er0V95zDYzVM{;#5yyWh(3|epiZo|Mwf84Z7|*Tt%zL(3Oro4AJ4d?HIgym= zq_*sQKg+Eo@fqr%ijSzYvJ-hLui^;An)i&HU;l`rdbRhrj(}6s>v=57K0zU%LQ9cV zm&BRL=#YNW;lsj!SSoraG0S3BVZi|l;WNUwayzqfBaT)VYQ1vWF@3u;t-RGh^&weo z-g)t0^%oDw5fACRoe^E3gc(O($W!vs@ych+f6%DopK|D&8YsqRcQ&2I`ME30+O-z? zohzQeQ1ye3Rz{VyaHyv=c#Z-f%VO=d(bb1g+n&K zE2glh1gz7}lQNKGu$XhHR#m}ZLPEI3u}oT(J6e9ylJXUfoGZs7(zO4#EvT%qC}@P= zCEE6X-BRPX5~}T%^DAK7f3F2812xf$Tlf2jbj6lR>DJIc+=6PD&N2%759<#*>aFyI z*!?bcwA|gUAPHr6FpY8APS}A|v(twtJ%`oRW>FCme)CkQd^#PM#fyvLlRBDAwy+74 zd$|x2a=9V>Grr~*Xmpb-MXhDbh%2D(vh&N)t>^;~&ki@2Bi%*TG=tw)5|x;6a?6`q zuwV^JB%@!0JH9R=&a4_B(bgWHvbdXHVWcXqWGhwunHFUFIiQvF`K+G8TJ$ksaFjeHy9dr+CicRpSu zO^?4WC4q!f|7r`0ELI@}Z@H@PS#;(4C;hDy1!cPQ>F2A7@RAQe0&45$;v=e^#$`C_ z&~i2cBh8ty+c-c%D=fi2IA?Nr%He=gkDbPMn}-hjF=(7m%Q6oG2c5Ba!yaZcbM`Bk zA3e0FgsG9n3)#E4BPSsz)@q>=DM2_i3G1V%?_LBi+F!k(sDn6MGzXY4y_bvFy|}X0 z0Jq^I)9Ttx*-Xdhh%C%R1%)ts%Xam(yE8F zu`)5g3~SldZ{_0D=3^v0LER*9JmdOa)h6-%#x2@VJ>Sy_MtG~LP2k&YJG8-izP)C$ zPc7B&TeVAjZJAF+5W|R04@cv}!-FFuWAU-r!5MQRI&&~OF%g{@9~n0%rsIRrvC-+# zQDaJc!rRz!wApb=2Un{0dQ7@+OnY6!C%tfunc`P?f46KmaP>OOedwq**YLUd)HLNM z!LF$S3LAu_I-vtXa>LN}Nfsk;6^$6BpX7fF{1p(7N+02bUHSif-z+#Vpt z3v_n3g7E^{Va(mTzwXB7W{%qB{vinTV8;&a^9{;1S|)+0?}{0RvCg_o(Z9G0Oyq)K zdvI6RQUqIoHtU1kp(bwDfObapKeTFtcDRguD3#+P;5y*0e?av5GU&BBuuc1nH|dpS zd*95;jfI3Ikm`>KYP}24ms!1#?Mqe%B^th>UacUg%0V3z_5w9+#`a#_Gt!#vO}JYV zSl_0&3ux~l_&4m)8k0ZE<$-Mq6l-P6%(<*QGfvDHU|Mr+V3%jLW`JqUwYx*@pfv;9 zN!7o0f4^2|Yao!O8y!bEMTo`Mh7Yzai$k=pU%qI^xt4!JV58Qko7Bry#nN4(o0SlX z>s9|ofGZkD;|VO0&eiLdXo+CB&h=Zxa6{Or9|J-a4&f>` z+*t@R8HhVK?e&&{xZBePB6;n*cOPm$ubt6<_vBSKN03a|vu>}4Wdfml&%R^rh;Eps zUD~dCqYmiDolDG{XVDxOu}v1c=vlsjiyTP*-awD`m4?WsWk&%PGx=D=X)hG=5<=-L z;(v+E~4w-&novxv>bj!PQ+JmRjUb2D`&;;!pCp%zn?a>;Cp+S7L_#`}cc{ z8Lr8g0y}~|P1iW@!Fy5Ixx^r%p58i_r~t1xf+U+)(MZh=ZrJ28HMcnE{Fh`gFCz0hW!Qe;2usg&sKosJO9C+eu&XBvCfvAH&;>s)WMIle=wJg#?0wx>^9MX z80iqikhlEh8dgDth$vD_jC81TZ<{busUBv5kMZS)Pf(A@KZ&G`ueAd^mP>{JGyZ_q zpzlH|M;mOZa%+(C8QtIglSWYcPTQ`eC^cnr|3qt2Q$7hy9`=Uzg_TKMaRTzCEv&0T=xwgxlI27@OBNkE%QLrT z^y7AA-;g1kJ$`Yd)-yu=8DGOLUM@2YPe0&XQRDS(%O^GSTWBXmsavWqBdlWF5Mo6S z$=SS3KTH)R&Q75s8xqe`F_e?hf7ZA*V9P{>Ofm#yRStPeuV@Rtmei&q{K7{< zC%?iCQe0piR~*~&T7v!-U&ER%EpuZQDmndNHR2V#YxEyu4QIIU>bm9_fT;I~N-#WU zSJD>yexK-jI#|67(NXcK_x)=)$O7FZ32C9=Z&m;%18KbdvC)+To0X;wG1eDR=)LUQIa^iH4JcBj(%E1U&$rW7aEuoURD z0^NFyZW3hI@WY8hgP}Y_@O_QU(DvYgl4EZDDWAv8-tu^cY>~%f`sETb@{=>0id2=F z4l(I(b{5DUh$A&gW2YBJ`v@P216%mCBjoISS#P5)BadbI!Lt5GirU5}%K8gFwJl;~ zrT!fH-V{mj(sx`kpt3D5#JnQ{zOATjelVefH#h>kuWz< z2E5Xnt?cWw7=j82p|+HNIklxwF~`4gbA1(a&=`YCOQCv;f9sC=?$S_i4*HhB-nFm3 zl33Tw*X2z_v}xJ5P&Vm-)!Owk2ovW8wHG4+Dl-cO^uQIzRqHiz#f@$Uzftu+u&P(H zR%F7WVpweF#iO|>`^O#D$jV(oOx2#l0oelsXSJsqa_C!r{#P(K&e&jGan;E}VX#2c z3xlEFPhekP6K`LsT2A$=_ua4EZUoJXB_YWabUZ_v7DSc$;QEG%s(^M16Kv46i89M7 z6*fZFA%J+1fyi$K&tr`3-CDfN81?VJqU}(O8tlF|qX5nQTeLgPnC`6TqH!60zpuj= zrOPZ3&}$&;>K4!eT;oP%l#ctghV;`cMpY^77l(+a2#9qp1Y($gcn5%3-|>+4rq)pL z+GFRgUpo0pg5+sHvhn_%+8dh+2^Xl2AY~@c#$9_FV)6vEgIHtNUah~(8cVl1*-Ix+ zou-?@u){X53N#3)(-{20E!t$wKt-ofh%g$<@p{Z$_)r4QmWCzZRNPZV^rHfA@rZmo z!u2-4Km+?>%aLPl`{7AEIet#NR%YS#3rudXq~g(RHi{yR0qu7PBfGm%Z)ZiuUqm2F zDN`#(Wa`xC3C_L4+KXO=lhr0f*`Rzj#;zft9@3W4Lv`1y$+0{4cTp+j{&iZasWc&N zg)O`tWiT7zN-?>zy>mZfR$U`wWq&9<(8#zEoo@xMyR`S8C|-;p4~Mtyu>|Ap4P6> z$p(2^wJnHi5?TuM$gUDSva4}=gto_SBx1IFdjzyM0FpK9wQO@YDhgx?Q*}4OBF!~b zOZR4g2`s}K6nPt%!&tLTYh~|3>CAL5+nIR^`05F))9y8wV37#?DskT*8nXvY0*1?gQ0gkW3R^QP zm+Y9H^_|U^m0|(Xq5|s&@88^H);~pVpb1PcvpWcbu3=_(aQm+M&F*)CJO^NQ|9W#> zE`b)8p#}`S55V+6PQJb6z(}U~O@P!N(6tY=9wccU$~0)Q0V!D3zhk7u!KwhG-GG;9 z7tqil#y_xTH;kk*lB@o(O08iJ!P}+uA_YhcHPAKcRfb|Zaj20xacJ2(@$Eq2aA1x0 zYb_xwDL7WvoO#B>6GxWh8NZv>uvXLF+8W*zi;!~e0|Za!Ztb0|hKI%0BCH7%b_-08 z;XOS|G(Fx+Yr>)6)2&_;3mcNK#wq1+c(jS9lmYD%K*GU5xAy+lAYsPL#pYaLa2`92 z#L{v5$}cE<@aTypQux!fxSpW)5ic%I?kx(xAKX9K?C`tLL)A$TYmMu@rvZbR;z3afT0Q@Cc7L-6K4YZstkp5gu=(M|gZG9^p;Zf2xu8 z->GHWf8?{CZobbd2v_Q}o@u_{QwA8RZ$1qCoDFoMF;i0wW6K2Us`R1C?fvzz-G zB&X`jRO7bMIh5^cvTalyQOqo6m(b>!+D1y?MIwF!bixbb@V?;snj~>}G>`@uO z!Z8;csg5r$TOE^|eJQZ1*>1Mjl5}@nlAh;RA#42-j`-{9YRt0M1E}_oZ#U~uR4vh+ z#fyNmC32m*Aw?Qs?k?Pgj`F^ zCz8=@BDZilnvCU>(HwOMQZy1kuY}XpWC2tboI($bH2AAv=rq}iUkozI*`EV^uf`GL zr<%L#7KKl;K*@RHt37a@_}jqRO*BaOu*a~L!nKcxD5Q>yCpS0twCv&uyZLgncf5rF zP}=UziNj4!+m&~3F5>D4_v2sVSqZ=!AH4<#(I4~xFPH9m@`5Of;5B>3Tb@Ngvhp>D zFSUiNdchYJW_5FyOD5@Z0qu}a1Wp}mFkZMdYgS4r7ZT) zh?m)7W(1deKXr(WYO03TP>2pgwA^u}p`S}}KV@jb) ztD@MyUMk;ZS#e2RwaezrII$cmXiPtGv&IS<6yMFE#PPs%I-Rt8r6+JD^a0+|d>o05rr z_3fzv_Ll>}W=Z=IK!6kCq;53%gt%K==ixZn8x%Mh0XLF;lk7Xz&h`yo)~Q#DWesuS zrvqEWlTj=bmoGD`*NG=%cn8UB8QiOG#hpY3a%R&$0nRW7Inyg?bI^Vg9uV&wv==cn zDxQqt$w@3?{G>KshNr7oh7w>bkU4d|y;*?lCF`NBZE7zue#o!hE+{(+ zvcQ7M@9L`8f+F{lhsJa6%F z&tjCp5$#BQqe#g3HTQtF8N(btuC3uF;-MhTK!zthKY6zJc|f~>=Z`$DomlF$SreI{ z7RpF4S}m-T)+u3zl;ayb5__mYIWlSZYY#po*o~AUN}BxI>Wz&mX+q}v8$IIvFOHxB z@BfV+@&0Q7yS(=g&G*Kxo+4Vmac^IvXiZ&4-xxmHpf01*;H$}XtpRCrzz8$lNQMx` zj-M>X*r^MR!q^72tCjj^EQSGB12-!p^iXBZR zUT-?76}A>aM`FM^_OK_co*M95Zfgf@F1c{2-M9qV3Bdm4C%ksl5zw#|pHc!_#onK= zx8hUE_TBAYD2y582Sk25;0zY z(JnUF@r)AK>1`>Y5C-0<6uK<8=uzW*malOL$j{OQ;J*((D1h)_i z16R)~J9`>s!G4k9YTp2ASFX$+5h9WYSmh#Xli?N2zMxEMAS3_R8OTGYT9}PRSbI)+ zsIzUb7GPL=PT3l2A=ci?u(rRiWl3x(!W_^vwc}mN>h)T{KBF82OJU!=OWC-|z3)== z2!{YGR9oAnI%cxzc^1Y^#HI$U{5+4YF%Sy3{;LRtord<#S@th+;(ObY6CqpQ ztL&3UbYxb|(j$~kxV4gEB$-G>le6yP7Xd9v6Ag}P(OJ2dBGPiV=;)22YClN5Yk`$@s~wN?tEDl)LvH`3%1mzPEV z5!tzd*^tjGNJ7XSjks zv$Ly6Aj8;wUcqJJl{9weqxT#jJmm=~XD_T&@1sg)XB3En{*ZEUfu_B5Lrbru zT%u}Y=}zapB>Q)+r5WiN{5+jN%b)CmF_)fC&zdPSowp2@4uo%p!^XL&l{4m}xj7U6 zNg%P)NM|TDEs;)HMjAOcd`OyMB#i#&DKnZiP9|r~>1?#mIEVU^3A}SX8%qAf8UCSYE|H>KXT|M#3_p zccQp=J)Ja-M9RqBO&e_TNg5NCtkF->GH^%zP9ko`)w_w@9Gj5JDE1iu&xjhybQ)kF z8lQ^eZ6j;W;Nk}QAsVxJe1x~;1SISXL!Ba!8S)90W+pmo8b{`Gxr{YAFu+A}Iy-x8 z>d8o0Ri7|1Vk|w6<;4x?`DB`45~~&v<}G@Np)Xun$jzlw&Ugu)JQ%h|B%qCG{7w`A z#tr*rYtBq24O*Of{p6{B%$7--gi5x;L@Jj}TN%{LqbIRwCOVx+CUObW3LEI^ZW_~O z6665djG25EYs;#*0g%h)*#{QZaGjHg1B*pOX?$SbLa>Vn7|j_x?lNV}MJY3lMZ5ghNiIT76gxiwsFuV4ZqW%89<`zbKr9P&rmbbEH)-e3uKc(Mm7)h z%oq#lJbLN!eFXQ&G`h~?I|HQ7(;DnaC%X(#i5NGR&ZrOv^iQ^gkU}0aVCi(9kxJ)mZtG*50)8^%Va6FL?Akk~;6;1Pcp3~sAKgxYx90eEXQ;)*i7cDC z&zR2V49E>tpd%#F4n%@K!Fp*dE}D(au~~(jung3L%taF^+BH!F-9_#qEu#+~6_5zS zVsqaHX9s)jcY3Rnip!{EevT2kuO@S@3ke5Gc^( zkmV5c36#XNKm`6<;>vll%T@IT>b5c|?@(POxT=6~HJ`G%HlIr5=w(8dh28rk3J<4d z5~QLkt^68oa?Z1?N*L`0e39oWA0Ni^Rnh$z*y%3HrmLOacZHVzI0d_f^Gbe2Y6(%62NSemY4D>Q-77~57UU0aa?LbaUNN>!P zSy1B%e366bCG}`V<78Fw?P+WDd4qj6#jwDqBEVoyRo`NlqL3}LouK<^D14Ajpbimz z{AA=wv_Q;SPzm(UYU^aIXTJ-3hU^SgeFfARjVUA6vY8I1EzJ?CMvq<)D1T z7n~p@_Be`QV9kILjo_4Rt{D9p&I?naKI86O0`mKABAHZeX~r=$WjNvxxq-H!fJI-Q zGgE!iIGl=QV40dz#O@$`92AEp#1qF7fr*o5Qk7XkGy*>2{JbjldlO*H?UxiSaL_gd90{^@06NV=S0Oog1k5Nm%h5rHk z5w!Gj>Dwx;j#nB7w&P|9a^!S615?qs18z*D`ZLKWcAj($ss zT$0hv#`Wu*DK#7(Y{FC;~0)cfp%OeZzetw?c=Fd(6BGhNi;m*?Xkfu?=lD zfDFmPrDImA*jx}MIx4j`v$M6n!*LYtrqW^FQJVRRzf#l|b$8bL9Kd2p_zK3^;ttTk zvtWbJBmvrWO#&QbR`nF;X0M(`Y8kbhIk+bjN7@-zaK(w2Ib0?NgiF=UMM{ zSfyy|6>YY$lXeqza{l4AFeOLUSv)brVu%R1z^r7piL(hCvGM+<*?P|1QdN&T2%~)@ zi%hz94y@%#1f>^f7rFZivrR+~`OWxA*H+?N>vB3}@=b+?j;(H=t0Pmjxq8iwXLjFK zM-PW4R{<}8!A-o7j@GqLH8;(;02t0RA^k&&+Jf2v`W}bxgLhE*l@1|7<4r|fR2df35Uk@B)%DbitkPr~~aYD}7r%oK7Njt$aTt?!+x zKk4ABlJ1hKTbBEsbX?g&1GHFYJ*%i*X~{}L(wn_l^*>is?{pf~&o~_6lIry^0S3@N z?o(UaWmAti>!>70*)|Wl%rv{nAl1#2mKk??CXH*%`QaQ6OODIhgKqJ`LuwSyGiS$U0B(tl% z?dEO9zlD4(ZH9--@G*IE4*L=_)1foA1|1(21(l2%9Cue0w{-{5;h3wKT%XKw6W74b2dO(Q?W9CS8%-l ztm(lWf$%)#TDvHpRd!M`6fA4Gd z4lM_ZJNB->-(~%+K;(=Jz7!JsScfQ=p(hUZk)9*%H}Ncdak$t3JbwX+i%9E4p*hQr zSU4-86mq7tDEEyVI3%T{V+odB&bb7ccbN=+YlT~2{5XJ~b{fb@1DZG)9%e{?QBgnD z-0ig}U{cY^2x&-1TSD)4Ak%-QG&@tFED}o*7ha+GErEok{MX;AA9 zh|BA^AHv1s8C0Ua$-}p}yg_Y%ZgI8pM+yeyf1E{AbW4JcOn)y%Bwv0GizEX+E26c%F=Y5+P=+;bR1>3U-KXRtBU$%4`|C8c%)z#hxC2o zD(H~D-LV*1+O$YEWAahHH(dR_VKLr_JHg2%iOnQ#Nk~~!IQFP}Y%-y!M^KpR$+P$5 z*kiSiy}tc6*{4&fbLZ^<5X?z6XYI>1RR zEDVUU ztGcqZ;_{`>VFfw+iq{Ku@8`wbVQ$zJ@Aoe#YI{{k)qhV>+oW)u-lK{VCWBRY)p={E z@>|+xedhBi`!v&N)?x>gY8a~GoSw;Gj$T6JQ5e+?M4;nhC* zQ=f_)hGMp}F^LPsw~6zRKFQE{cSUZ8OjRbV4OW;YF2E&qNxg5?L-ln@6`N;rtE!=& z?|mD$ETx~X%I4m-r@pz*N3A(Z{_VEs?(VH`?u&HY6W`LhLqqk={TREG7){dmhw=T$ zc#VBdxsn~Yo=2$%`glt9`yN=QJ+UHWPa$fM&fdN!_a~7B&0KtiHF=Y&-@j_hidA#B zCq+3m`>Lj!tyJxGm~D68iWMX*GuvhU?3H$PB!<+ERclrVshNd%G=%~n1xTG!{T-Wj zX^|Bn+mx6hJdX?bQv;`vl5q+5fYAz8)hyM2|EgUpRUNBPE^t@Ft|{)`%Anc(`&Nu* zRVL-}F)V?5;;)|fFgrgKY; zVp>F71`rIPdTZ~;y4H5A(He9-Ui-RoX;dDeIvh5!)}o>7Qd`pF$k@NGW3ASpRNUGZ zb=O3Zkz53Kcx*zgLtoP2GP1QwOHU-75uwndal`VPg5VgX3t zY8Qf`>coonX@YL+F0DZ+ugifh$ji@Ae+hze%f@YbCn2A)1hU~So={1QdY^*hsB7IOui=OT*1cNu z9$-Yg?oE5WKs*vkJ?P%tIzzdPPzo@Yxo3^mIt+C)SwJQ!$;X~ey2s>WKqJcS^&aI= zPQt%;%|=9h%Q!hATw+A0hokY~;lYuSvG`c*;EXvDojDktn21h{kBplW)A7OR*y!}= zs8Msc*NJv?b16x*Bk{d=^A7Jx03zN#ZxU~xH;5O|$Wz_d+3iVBm2ba&JwdMtPTGF^ z(6z_|+mFWpgMke#i~)AjJsdg@V!go?I>_mNaLrNt9=I@TTxEBtS<6{hj(s z*{(v4@)nu}v2GD|4p6+af5)CBhtNpxg&?9@=oh$&C;gSr0j~XlF0Da1>$RBV1#sE< zv*`#YL&QmnA}vrii>WGjGza$)p?xj9H}yb9_ZS)WP%>(?Qb?g4-AYhnV=s5 zLHiJdY0#yzx;HD%J7-ZEe%7XBpQbNsYxZs5y<|%E8T*<|$-ZF!k|~L^_VZ|%ZMT!5 zc4nj?&I1A7QV`rSJ8y(rYMG%FJbG)G5#~km#*0AU1@wip5jYG4(i21hBuWF?oAG4d z*h=*g6*&`O5#h4qTRggj+(|UiiKJ(cPl)Rg639ofU2Tv?Y$`vB+!wD=8Ff+ok8TZX zFSJfo;Bp$LvQQJ!&GOuFsSlUKZ}+ZfOn1G0^(~3yIVD%oBohM>*$S2}oW(XjA^mww<1n z5QNt&yM|hc*9iF%lIn$8_6p8!T#6sQ`qd4a>ov}xZ)TAr8epc_)h*jSM+AySUER^; zjc61la9!;l@?HWL+i2HTZxal02-^xO;@XZL@nnQ=z3Z!G^I-90tNd!*ey3Z0HO|Mm z9vlmqaNSvL11y(V z@W#$=Z?GUGMc(KMwJ;!Rr-Ir^kt|4fqi>*I!Gku9(zdxVcvSEKvDXHy@YpHY2A5j# z(xdYiU5^-h-?;J`@!diG(ks??%9qH$FXR+#}n9FLKnK%%3#H)A_dPi#LRMj~5^ zUg{f^FVQ26^vcd1;w5{eSMD_AOJtRiKl>_=a`3CX#KEuf6bFO0uhx47ZEY5Ob+Av; z)@Fd4`hM|}%_TPv3>3Ts#<@8(Djx}+xCv?LHSd?C+Rei!y&=`;F!ScAi!BVe*iy}% zY|A$Nt@ScuWpDahFja;4uo>euojV0%OmJE88e>pA8RG)wHA7lJH12r`<|M`gxYGy5#Y?tmo1QpY@DdGv=Dh0>Q=HQmuZ!>O!DH(*`4Td_9>XXo>h zInua`@9h^HLOg>j2=VZUcDTMVneV{*!t-&@Vw6LZ+L8K3k&v;rH2|g)!<;&;J(NtN zCWbL|D0q)fb?E8YbA?X>+66p)^s07ZsZ(aDnW|-mFfI0*xuwg6YIe{%yLS6Zo#x1} zz3bLt(LF$JtR~iKp4_VmT#fL=UL}t|p$EO_@sk0O#7TFHWi5KQ+j$F4f=n{hU*Dl7 zzirGCWRj2$wcTziPLM%%O>*>5jUUT9Z1&YC=;!3bv3m70t6WCmGs-ke!t-n0ohX*4 zR7eb&@IqXi+_k%fTwD&i6bV}*+Mb?ziDq9sgdn{WSR(}~MXQJqcMt{eA|ZG>+Z|ku zZrzpE!gMxvrReUaZQ4YgY7O@ZUz<*(xHbkE?&?k?gj}FE;1MobG^FlDxnwnz0n9{m za~vMTC-1^(s53rEg22k4KfSZ4$zy`IhV3ZS-7}7*Pcchc`o$}*xA>#$uM&@jD5y&N z@9xbfy|@2(s>1@#V_KQLFAl+Fssr;s77Xd!5b|HA`WL$QuegOI5*x~0-T5fUwtzE{ z_j%yxPvAz%bOP>8>o$53IDYx!O`Y3XfBAwX#Jox0+pvU~623`Tk$56&#&Tv{3X(Uk z)`dJ6rm!^8?#+n(c#yF;?cUtg>jm0Di@Z5FvQk<^dPQQ-7bG*~(nWOB)Q+c=0>Uvf z4-dUcIW&&}blxBxu=iF486I{pYM2gMHqf)}GE_=Z{Y~^}S6IuHu|GtLdL37NB#HC6 zL=yKgO_Y|3=F(YfYQV~+V{=gpwQAfcbqve_84knlM1mc`bo{IYox&C{EAbFvK2L7h z=NNR4KJE>l8ICD%b@j;>+7xA@`Jn6Dly$o$T`6Gs3BdYxC9unzNr2=Yb-Yul_qvJ5 z-p|sXngWH0S2+OLnADh@s;h3NDQ_s8W9|`Q9?$syHiC8egbt+3^gC zw+6MWUnZ1AqK^D*$lhlZT^?YQ>;-!~qwMTiDfW=ESE$z#(+G2Z9*BEZLDcHg9+uI5Vtgwp7zS~%0qga>=kA>y`Xe%l9Z{(yG>pjjP zFDOGN+lNE2iuWsl2jwd0#0-1q{R&Qg>nu7Zlc9*@?^o9EZX1%HBY1HQsm_x)cAkgw zU3qb91jzh=vVMa^CY@BXXB%Zg*DyuW*t0E;TS0kW?Agv;u5T6o%-AEJQD~Tu`vGO| zXxkw7EWtZAx!l9j&tl!bp#%=J!Bq!l@P2GL2JgpOVDNryIR@_+L7fkg!P}ss<8_&m zRWG7Q>lY17IzCJ){&OBM;;Ms8Df1`~m`~-%2tGn^FS*PmS`&4AgpB@|JiqMXV2AAi ze5BL^_(-!o0CWNC_^5*0_uuq97AvzB;S-+0N0sGV%!g<2QDvz&^Rx7EldtB(y7{QG zjJx?n`p+m2?QL_?GmGQ1ZbO$&JV_{imMq=&5{mX>T-G=pYm%t@tO9Gi9Yq~m(&v1$DjFgEC1vmNwnsW#;+K>YXP4^|qmn|$mzBUC&)({0j_}u( z;|PDP1&;97mg5NjE@<)o!Rl@)==D_v zRV9bYpuF^Uww*)mIx+sLg4&Nwrq@@Mp@a3t%w_5|ZO1=U9@^Lj+cCf#tFJ2?``ePa zn7#20w_`+A!Zxf`e_bVPFY=)9o_R znIg2xAGN?``eWtEm~@Zqv(0b0-6Q)1@LS7qkBB(mQgG?m`^H5;gA4R6W!vtRaDl$< zc7g2Ezi+!;Ap7+1+in-gKK=W);&Oqg^a+^e+in+#PX7q8-&SxLu^kW#H|N{R@~=rE z&$#2e3hJ@7uy|&L5=P9y`L1&M;ra{}aZwDx_wOp_uhdt1^Stbd$!h6ggdIjpJ;1Wn zour@f`;2;B!>ugoR-Ssn3g=7TRYnhr%f5DO>$}RKV=HA&)|6p}z5hLB^?E6&DK?L1 zf2ug8VMZv#P1yZY1vT_qSOvOf>;@RP->2-=_5kZYg=)6>|&I zc@#=BXS1fsZ(V@o-&dUKEFd{!gYPRthXiYk5{ptK==;j}5zoqj0513vh(}L*C%gOm z%9+a^%kI{p-&@rlS|6yr<2CE7s{cw+?b3aN`nIVl^tjEX3|+BH)k5LtQpNE(y2aUKAK8o@=5!r zXew@4xqN)VNYBuVD(*h!W4V0R>@(sEspxznX7w5L)=WMXqY*56GnSr5W9EB?Er+eJ zs$MfqV=kA=Sd#+-Qaq=#vkV0Oe$F)F=~$jMl&7J>`k(mJRyVTM2OX?4nPTv+2UlgU z+n{VT9GYar=s5`lq-GMcdEPhG;NKChoo~BhYQx(eD>~9?TX%!Fp#Gb_*TG}(PBfdK zp5q~d6^ENNSd4}t@6Qy~Yh7>kv9h2S_QstwF0w|s$(uuigSXgHzNV-iYILiI%C16o z!gUkjPZhOw*L+K_g6@>ya**H4ANFzz{9B*ey6gS+I!b%b>SvtgoUn2bwXt~< zVm+?L%^9Qkebum~i5fEcj~SQKDU*wt*Wow(&(&zcGObDZGd+C;<;=2H?vuua8NSa* z1*FnBBat$KgMG$OsLvqzFM1)ne?4UOkKzrpe>@bHqk@{|js>O)M7qoT1@3$f&L{W0@BQ;vx(f?ypc{BykvnzB#IjB+Nu6u z6xADjMfKM>DpEl0s1R06dRe>0FLjnuuc-Pw{Ja&0*2(tdnz6m#^uTPb!*djsn4 zQPk&Jc*Gc?TSk!xohUN2hICZ9dzUu=;v@}`G2Jo?&F-71_d0CpvMg*)wAqj;WMtm8 zzE+ezR2JNddjxOmf3?1aW?Vrb82uj<2YeC&P9bEM6sUagIBAFmMK|dv@g_Hj`?vvk z>y~kpDL4`uMOW-<|4^KS*7gOLK@=^#c|8xOr5GYEy8m(wAmV>cN0Tw~k4z@T9fO`Z zK4vsF2NfGPNr01M#kdgekNDbopZjB$35N>?0AwUSil(B;h1Z)|<`h}!ncQ78cEPW* z8Qe|}8yBfETyz#ag^VQ1vFFKyo5y!aOO8*j7@L!3PiGhUTte4~S}+svKjyHp1|m}5 zSa|>*wYaNdzrl?X%b1Q@W?aqyC553AS%`cIdMan$%dt^~e~2o1S(AH_)?6ZE8F!)K zY@CRNg^laLkW_zi2AD+I9Hw0`Otg)O$7#J#hRO6aM#Vm1ljSY`7(c^#1vL`na!TJ( z_^X9@KP$#N4?HD-XQrt8jJtCQT7CvaeQ51QCY!#Kh~xLUG#ESuq+^0RDAfUT34K_y zre&tcZiBlkp@!SbsLwUHpud&QXJbUdxar~otlKi3)dB6%3^~<|Wh7pSRw;bUU2j3E zJ{vl|e9#6)o$ba;SgicCWnvSia`4{4C5$&gHTpD$VZ+9?#C$%Pi>AzU-b#W?=$C>n zjN$UIK`bK=$`cZRWlmW+Mbu`jhpBya*f>j!U$}H)TZ}S|(hBnotIoc_$c#yWd9Z~M zH#24`jOKAhQYf)VW~mXI~)%#@Y5gY6N`5dIvt zl;bB-G$JFSAQn-Hm>p*E%#4|(*~A_I4)Opo3v^OQWMO_foh*QxL>B*3!1sM1Z4#Vj zM@iTZru_r0Bs!fyA*ltzG1d^zgWOSrwkEm92I$Dwm!6Ts^SLRcA|||!ajr3lm_5mj zPYj+S@^N-%y@LREVm^_C?~MuRVjcK5nq6SrgZ%|`r3@yyX(!9k2}(Y?O=_A>ZdwA- zX0;^t>pe5Z4BTkSVBTKz3yK3A}sJ2RtV(L8)adKprX-I*u055v~ZUoVz?zX0zXFQu_pY7kU|`jief`T z-bg`fZyhj&Luxks`(|T&~S+;Yzb%d&TP$`VQxHi5(}jI--h#--8u=CeqN8hB*CZ zqj$@XM)WPt@T3f95-He)c%~1@m&Pi@dHKj(kJwNPU>3pJzxTJ&2`6SQtd*)i?qESU zK<+o7+C(rUH3`ciSK?v77?BPScQ5|C;wVHj$CMd{G%gFJXGCMrbX@*3T?eg3>cedX zoXpM^g#a-<>1y75k<<*0X=@qMnYPAq8>UxHXuVX?I47ZQtQ;GFJS2W)BlsT}lhXkApcTzy&Azeh(pZ|hDT%7K*%>7klwsQ1b}I9^t~ zNHOGyfr$!Yfb&R!kQo%C4-e`+&IWJ^B_gu>4B?&r7M>w=%gRj54nqh{pKzdN!OOy0 zqV}%kd)0|v^6mL8XM0}ZZ8+H$+j zz&!ST8v94QA-p6Ek>Y2xs;pajB<#g$4VppW zF4`itKOgUdF6H`Ayh*F)lN8N?jWaZma`8MWF?zQ&oDMv;M~N#PiT7<$gH7KjCBP(xo6V)mpvZ2dZl}_BQ%qDia_V4ZITewC&VamTGr|NH^f z3;D>EU1HL)Kd2H1htC8 zXr$}8lXI2ilw$}u(YkVn^&&^hIj^UIDzD8wZ9ENeOEPmVidb9JEgNA|EU?oEXZFi! zM6&xS{3`;1FiL1LD>{#_Eu$-gs2k#f$;9hf*r>}1j`F}e`4M;@N7guqK!8jH?wrL+ z%n|;s6b?t{6^Ln3&<=wzVeSqOvZDq%2S?;G+i$y=&;};Lu@nn;J3KV{1v-qt3K9rU zNAY{;3m%$v6AHmSgdh?8^sgwY7p`Si-otdPUo721`kyH3H(M9|lwMPHuq*#Iq&v!W zqBi9!wf4whS*;BNuuut)4A-E9M@H&X!Xu-#DBRF8Id*FRTD^@<3rycq0KxZ-z< z=t@$=m1#a{lyMdo@gjaxQ9tGZHW%xcxRIw2zpZ$}+$sm4coy=Cj1vI4u~?a1LXMq2 zGFIb`uf^;hsnhHpsmbjAA1ysfDSz!ppLW~@79pS@wIl)=(N?YD0at8VME!4ZKOdcl zS}E$vEJ^Oo)}9cSr%4%AJ}ex(kqLdDLot_|$qz-`p5|fk&FG*$;QFRCjAegiypbhL zk%rVh@DraJq7(4}cf#s`#g2RjxKSG6KZP?3xR#^(@4N55CSDdQ0AXrC^8@{7s-n0Y&Yyt}IiDY1!X)gJr~)ux3oIuG-ho$vI<3SQE8EO5-lNUk#tuo@$8d zu(2h>^uf1DJ!{kwM8iZv=Lx6g}|ctArx__g~EEV(El z(QjQ#>Bml~P9tjM&=21Dx{ceH>RPg$xNgVp8fjR(6OpUrUw_{QlqGKwN1weHjpeSf zsELCT2&VO&TkB(Kmtb1IZO0PPK@;!ls&8T;n6Q`DckiorV&trnM8wSi|Hk_@?QN~1 z1J@Fq5Z%xXNV)fKMm62$<+hgBTLYbF zWZI%_RX|P`_Ja0Gn7crgh~Xq`-MpviPC`KY1E6SIpqXv-Y9=B#@hD#c2{Ke$h7d(@ zjBPvmS|7&dce>=<2~+Tg50r=BXdYg$BjHfAlc=5*LZ{Cb2f2{9Rt1(O6~H1 z_6>luJuG+V zy|s7EUXSc8?$(zoNMZz1>wAMI+Dff+4%p{u4)_%Cx^K;H?L(f>^tQBcS(ik6vWE9{ zHM0qBHK|p`VQ|44g1<^GSg)t4jvFcdUe9QJ`>Y^BXe4@{Q2n7*YqUdU+{4lo3K_J) zO&ugs=N2epfbwwu{eg{$NtPKy1k-9i*)Kk5FH?oB8ppV}n)~R;>GSVL45xXwf@%j( zy6FVufrr+48Axur9$3G_Bc^L1BL_4>VIK;6dzj7~g?$@#dK86}rqPG0+$~Jg;B@Rq zF?P?>v47JZkI>N;IJOrT&~Vk>-`{n(K_$5PY+*K=IMjQXowy?{HHu0%Ot(;;Ttrkd zB1s(3euKb5opNs#GX!8HI{MF?_cqIs@z{UiriYD3j>v&^8@-K4vd0EG4Ug>IVm0<@ zKsSVFbn`0i)@ZKSImFzkqVvn4!4qCOe-6N11yE>3*t{FFb)!xie5j!6AKJ4I{UtnR zG&^MGjRYxRjswM^;DLG%6zvoXZPS2DUdIx-{tqL}McDUNI|$sY$-?-Kk$t;b1L9yIp0gRBhD zHH7iNP60kO+@_3*aih;G85IEyr9J%P{ihJP@q+HjArfU#QPv3YK!jJ4k*qMWdXvB< zH8dw&PHgG+4lZ$--#^iFSo=*+;1WfbXL69auSb&^+z5+g(sxM)b8M2BJq+W#9mFif z6c2aq_GU~mfLtViXN0uYb=fH>&yJ1pIf7{anO3%cBc)GKWzzFin@}?$dHC$B#l{}7 zUGSrUZ65O+#nlOBx+nln^&cI5#CsXk0gdF)QGJ(JCiw)=CmZ(xb;4-w`xq^?I4L}kM8;Ph$F1V(J4$)F}B2%p|F(VzrjK3ln< zCKGFtJLsATf0rxOHvp)~a}B+1Q|YP?x9v|q{CKRU(Lh$fGDL`_uv(F;|k_Z|t#3MEZ&=kjq221geZVP5SG~qfdHFf1%!)|1p@1ANAzMkqV5C9Uoh}u|da?hW5^7yg?+G&8fdAl}QM)+1q@1n<+eG@tTswtBgquxRyv2FSu0-EUwz_*{! zJoIFDmv}OcCs^XGfzhQb5k;TPERW-0*w+N49X^4nv7p!B26mkbBFw!uok%&Ob_WHp zHuzHyZ5B@s0esr$QMdq}-se2EE4nr0Oy=0u z{T?xy?Klb@@3>q)hVa;dNr7G);qg+0o8Ct_dD-UH9*=t24Ath|(IQmOl%jgp`>3Wc z@a)!uZ4(A&$e%rQ&W(Jihr|l#yTsTDF)9fsazSt7LcKT6=&QM)tZ38i@gwz>C~?(B zxqbA+60I@RM!9|JTzwO}YNOnK_>p=iwrish-`?J{*CTveg*wtY{}Msm8^-Z)8N00M zceAQNTo`J)JvdS?jcikWgX*6TtkXoB$w63hc$8YbMLwbwRC=^+w|qodh*T9K)jiUv zsu0zRa+X%Z0))v7{2+mE zN_eA3TX)Gvl(&UPufxqT@fMwb&?94yd_=}EJ=%Z3^@zXKKO`R=#D^#G*4Qy^ybMQI zacN9c3}zkO$~4uBg(SGht`2Z@{#>vZrx`2h(0`{`tPjTpdGFc`DoLVOT>6rb;3U-Mcn=Wse2PR zIj-_v)YUx_?XqM^rM)zgN;6uzrJ0^x(u}olwy-u!vJIBROwDx7Oj|wOO)naa*|81A z8^jm`N#MbSI1mUVgj|*ccqF-myxb)Bg)ETdCb{>8kdR+O9!bb0xsdz+&Z$#NclAtn z&vaL{fBcYCUCVdA^KIu_BinAj-5c~?z~IrXhOktIXt&wt#ZW!1+`05-p3ll zx^p?5Rnz_gP;)zSHx zPe`jaTjGQ4+h3IEqN=qHd6QrS$Q?VKbaI0(?dob2p%9jylvXG$hNUN^^_B;X1Z9R+ zfu^2@hhV5(QjRfE$-D2*pvpAKMCMoz`-8jNINs0+v}J^6L;;t)U4olm*dhm+X@qO5 ztQr{;mv5Jp4Gq90jS*(HQF3CeXU5P?*CpZd?b61rEr!ddB!}@&Zd`EhQ<7r2stK2A zx`bFjV#(>!h0A=wOuQ#lJ|*F}(OP8r4hJgx=^O=8eTTHp66pP8HL`0+SFy?0ytdP} z88Pg)7oR-_3l@@=JKvS)@=Oh$d1-zJv@(kMEDc!lU zHcMCd%SPzoyVuk)=_rCpM|gJarn=2!bOUR9UIO6-!--U=P%jpx@-d7W(sOg%bOq4$ zwr&QxpO?_Px%Rc%$AgXg7FmS>-YDUAE)rF$ z^;&BsxB;H&k85Z2d_kMhF+UyumqZ%?joJsYx$1c>gMsz@m2~$&TsxOc zqkFe@JT+yE=kzY^40868xaX?S{P`{oX@!Z*j0QNz@yosVB!8VO-KSel z@@%p&%|1v~L|vFYpU`wImB|1M8d9IY-I_JfUYjZcp}5QX0G%8)O&+5W^9=cfN+YXJ z8QP)gLLr+U>FHs|fOsZ1b!6=NXk3;bHt@!Y%nX*7(2yyY$`DLq)dIpI#d_$~XD`ha zrZZ{#eM#<}6>lV%)Ys<;WGyp5I2l80MRjk)SCl;a8`+@m< z9=nF6=mm{Ce#W$EJ&*SpX)QUE&E!z#j=S(;*9KfB*8Mu(^#&^?NJ~@@nyWV|UJFE@%n;)Wo+}8GK zeeC1%gC@N(FK9RDWek|hj$z$tjvdhCt)wvvst}j<1`rZYrYAE|uxD%xOgATJ6nmS%-oQdmY4inb z(bZ{CIsT`~C^7_N7E^jI1!UxkK+mK$mnmv_poNGs1*X(G?!$8$wz^1bFh4rdp<$Qk zo;l5_kuePIhVOOu?kKE=DP!CnFJOl#vG4-ZBI& zn(s_xKp^zc%`|9hnzK7YEk2ygu}^ntuQki_7geb`lS}P%%aES?{$q52$!pIi#gkh7qLBzHMDW=hHhuuGhSC47vz1Pj9 zy9;n8X!!G-j|dQxq#1(o&-oW}+!9*&L{^`;i9ODHOIA6R90zgjPLJoa_muzt3AQl7 z4tbKT5USy7CX*t{2I1-{5`g93=U3Q6Zk?lv zhbJcs3q5(}%vCLy!7RKq$P$c{NzJ7*Gf9A7`IDFIn+hhF#M)d?SAz2b>10jZC!R}S zE-)L!H_zuzryoIt(7lkNuUxN$Pg%W;sdqKWRsYek;f+RUx_MbfM0OV zg9TH{+q*6kT=Rf%xtKPowwO+$s3;F1tjT$B?{#yu$vh8VAtvWEOX4*_yntaSMXvJk zV4^rLx-Wv9W^=Gdv)s%pXKYL*GKV79x8$UI^Q}O>6!P!o*_F! zmLGyTqjw5P#!M_QF(HHc!F;Ti9L=Y7+8}aL@hdInk!m&meaym ztV^4nPC|aqCQ~Wdlx7@5W11}v^;FU{6o9d-(?+_>G7iTkvan2zF(P+td;&WTO^7SD zB?1#C!=x&+gy;>VHVpI2_O6meVGHAAS~dac(h%`Bm|8vr3+l+27M+D1ge&GhnNi5t zk`|3yNatW_pbf}Fye1ppJCVunJ$mT$g{!A8J6|9!xL?7pvX>CA!ylH*%*u((ELSEe znj_9uAyg*qAKy}@2yOd>;fVo&?>jz^x0XMPBMIBqq7zfWk}~@Ui_J+U*QlEv039&p~AT^*ql7wpcO_<7bQv zMWBWK7QNQj)!#L6BX*B=o0)gf*jQXXeVa5p*w7>c$dDX{HZv<#Fc*Z0`gBNs-mgO_ zFS98d-l@*ohshexq;c<80$b$uz6O%)!cj0^xK?uCjT`K!`oAPOIMXlHn~O$+RVN1o zuw`E@!csOD56c)6ybI>i|IW{)mln{euUW*>OJ0VhUu2A+r)dBAM*p)U2WTjyI$8g6 zPnV9EET?s-8*`JtEy=-{!Km)AS3Hrz$z0FD2HXXvD+`>x1t2 z5vH^l-6w8==j!H3X1}ugD$J=9cbB$SrDv=rtlneUMl|c8E6Eu+uwePlA>d+8ZIfeK z_Yv(vCT;Mo`?`cz^8YUDN$lE)^>4arSLlssXZhKl^~n*f-O1pk!?;eTHHHhJYn}M9 zUU~K6sf${-2Gfy$$Pw0g~b>Q@xv_vyD7Ms z%NkeDdak|F{gw11+wgBma$rZSsfWGS$&CqzoD(aw?FF{BuLgxLU4tvseV(gw-ZR2% z4z`9rk>nr_3sX>Pcc8+$5+fx`X65P>6>Ssf8 zFq$wqP-<6{s}I;aP=a@H6RbU9fU_p@Bjk?cHm$uAmyJ9!#QA=lJYy6lrg0b{2NZd~ zgneq?j!+-7lg)jG$A`}@puiw;WL(9BpkS2bdZLY&d#Y#|5d3i>>TZ#U(5G&(cUu&X z#A%0^kg)FS_q>m?{oMBr%zxiY;ehd_)l(M53+go+6;8sp?{Uz*NdriVC?|gF0VfMU zB$+2X?F^#c@KYkDZzUrzr=v~>G58$2_&L5y<7ai|hGzK-dI~2-%L5AMt$3q(qC1{Q zAli#y0-XQFEO^q;XUK=meBC(Eu`afbk6O>G7;F{v=Ey42jDul93jVkD8N?$FNz|uQ z{ezI)BHeY>aW~B`(2sRN1}O0*a_N7D6FkZOoQ}jG<2IB3wUWDvrsXZwZCCxQB)4Fj zU3EZche0)JlLuy4jO)2fI&S^tvXMAJSC|U;>5v@A-l*yYdkG}fU5zIl^lbJ%a7gnq zPcf(F!Am?w4GGR)COoV91oE)Bi30&|+=jP|ymZJMG2$wQX#~UObFH7`7Cfmj6%(9; zQM^$Ko@hy-elIKsvwfxd6D59XoLUgv&zt=%9VAw2E3*!krIEEfHyXMeXBz8DiFEDK z%1E^91}9RSP=#%9iGu^<8!06h&Ryze2^L8INN5Zo7Bl97T28zkoHOU$I0LHf>D?@AE=fp*&~Ze*UR5e4j(!Wlb|B@*0^=^ezn8%X37R0K`8)-;(sj*$_cJwyAt&Yho(G+6Rp*chCBEw zJP01-eNIL+t})M1LJH5tK<08bZgy_DL2+5uHiKaias5H=ld^B&-1$3UOUa0ktm&G1 zteeej>q1}@L)@4;oS{hQxPcevk+^-!ppWqXSgsmU*>I?#kS+6VaX{%2mTHBp{N!X3 znwEj(P?jv|n;-8fc*~M*=^=Q!*c?9L4MWseV;~_#oRZ*l=xjY*pv#n(Z^43hP+lnF zzsUlHV_0~f+-7hE#1V_mCXsOn=`x3OJ^B%udF%xYc5)XGxEy%vo#rBtvzRj%0M`Ne z^avIbVwnswh4mB*2ag+tSymU2oYCUG6%G4ZrK&$TLVdy3Giub5KnK-!TLSUySH^xI944#mJBJsz z(~_0_-lEr%l|AC){e5bu{c(q^WYlWQzo)_hIl)*wTrx{jegC}D&-*bDIcXy*7|G3z z@T5FQe36Pq!iW+gM>GgBRwZ@qnnOC?aEV7Q44Kj5cm)@U_aDz@k@;-rostMMbma9i zG;@ZxA#t1;@Jt#NHTG|DH89qIH%?)-*wDsQbP;cbieJ@c9hWnnv!kg388>!YtTW(D z8*{J@lACSDv2P!&=61`7>0j80QNI7@AsJ4PoY6Cd>b2tdC=$F;sY0bkJrk)U{)lJi zlsBU%*By7yK`xusU-hqLk#L&e4Nn==_+^-K0>%#{J4jRMbiC%qZaC~qO$FYKIL(yF@j166y?t)`@ zdwgOhG1hZ$vOwEDfwyBO(j!X(I(vK0$Y#u8@R#vd`p9eKa2v?t!6o?!=OGu0rt$u@ zn-$DBE~EL{@lT6@bcmlvSL_s%#}7$Y3B5o7-sY_hnz*ny z@T>;Ya1@2_+8%3AC)Y&+nabeYNh7qT&1RN&?Tc5bXN3o{2U?Fh)&*KWVmj-~Me?K^uK)N*%e)?6<0+v{dM6kmng_n*RG zC7%zwmANKr{xpNc9f)+(f^0u?w$3evn$s37ZRj|#BeEqh$AK)I88{&`Zw6O%a31cs z@IW2T!w9-0<5@JVZcGYIElj}AVI_;R1QZ#eJKz^;OpIXhaF#Rbj=GIdI^FHSyrZC; z?n?Irac@)_a(DfXdydq}n~d^~oeC`Fjb{>O_vG-7#R#CCixxoSE7=tUUx`WN#%*MN zm^StyfYvvp40xy%9(!>HT`Ubej&4%qN+Qv^D+r#J(v?|qhj?*U5Iikq5SB}vU5oLw zL>En_?**!2m|6Us-}c2MRk@8ODYjtg#~7yQ)ziY9&bTr3PH#+7eGPiYy(o)5Ns1!H z)PE^j0w2TvD5B!%No%T#Sae^lsshPYBqpA~BD%IiF&j0m|@A7(7+0$+I#?oAf% zD~{U{ns)(=-pFd@ZA~U{7aSsJ%qjaN0%^^9OlB+vIb#O>7oBeR-r9$inTtbzmT>Q( zS1KYH;;Ix4}O_|@eH4H+P89ZgXWx8$umwqq0lQaa$kEi zsEix|nabh*Aa3Wg1lY>84Vt1`<#w9sUD!yZiu7-2Z+xmqgpo}D)>yDfW*~?p^AjMM z0nD*~yPu-hp-V^rkgglpvOA!v0^N`HngUCGe z^&IPw6loo_KS}^1>##93+V$fuT9%b_uoyMo5J<1`EPtOw{AWsA=7wUq~Uqfto zPv@TC?l+k+_eA3XGGp%PInWd{21TqyYmRs=a8a`+fRug~~t(@m78s8d$+F$7MVoz;A=GbB<9mt~VsxyCUBO&invvs#;^ z1Zy7ov&Ulfrly0SPaqOx&XJ@E?zAH();2%SyqX>1=Ew=;nFqogc^xpdHLB#6R880> zh|3(IgEj~ThwVwOq}V?7?++yBM4+^Qn**nVb%vxt-r*BxFIHJ5YGrw3#vero2@2r8 z7SCV0qD(L8j)U?qvM;bQMgG^${IqWG^C`Fqf+!(5Kb{JPZ!n^~Q4XI{G^MztyHkN5 zO`YLlNwOPH?bx}*c4M^wAa*(#1C5f>IyG=4$Vw}sFjSp5?H8)RU4$xVzf)%}*xE0G z`XxDh231zg&i!#~zp|PcGkkFdny=XjJPSZ(*-BJ#bOzN`jp_RfK6Cebuu6~@f)B@U zkIJeubtkow!G8voRsQ;^$|%IcDm+tnRn84lKT^R+@c)!i~gIqM;-*C}L2)-Ypu>}y!SpS?8 zM@%@LYl?8h_MBV4K}ek;NF8FH3n&2fm3bRceqi&xuH{~+WCE&0{3FM`Wp z5u_9Y#&v3d@{(S?rL!q{Npy1Hp+L4zJEMW#C(5*bb!;$Dnbx5AM?l`D$M_&r3L^K9 ztlQq4$h{dUBx%LB@vT77BaoqUOR7OHgG_jXWP$?BCCd_fnD?;~`P zEPv$Ul|Ygeo8bo-DT(KitK&gS;vulEN7nfZmMK>q%{eH7bRCV@{SBJ(BY*(Qa*tBB z*mbl$55fV~0?ui$U+>ser#;K?zGq*s@b0kGuXp#>xiV^Ie!c%-)0>%l9ek}#!&n$2 zm8U>F<~3X&Ia1HOh6oMFxPJ6Rop^yg_Zs^IGYn9O23`XbFMzzqk1nqX)Y0WNO+UJ@ z4Z_hSkQ+p2me&OD%rfev@rd$zIXsG{8u=#L!h-2x3sAz|sJgwW347x6_Nj%`*eH%p zK~!TA_$B}yG*L4Tb{3ArS%5fg6#lC~ahd?`2?7opZHXFS@z7m-{-dvjA)&eWl#tQk zqrp_HyjVx~yI7~RPam`_dL-)g_edn()%`B@DP5IiAd_QT_q)`m47zgHy&kK#)Q9jt zv0}Bqva@W3;;i{JL5Bu#K`HE+*s!BH?!mIc9-_pFef$0O%$4nvixMNsaXDSC18o`&Lw)tjmcYhL z4R^E9>AIVR67nBKA!hK9&&$3Z4N4g%x28iE+4=3L z=t#>w$&bcI0?Y_ZUEExpx=@j1?AJh7wI@20Nfgm5UK8yf<{ylx{(MOGdlI9%*B)~{ zk-`v6%|0gaR=`orjg9en&HIjH0=qd4R^xY1VpcjEuS?_HDF)4gi%BEj@qm2ZL+uO9 zRNueY8eJ=?-;?AQnrsG?V#93sVy$!z!CLiIHV%&o{P1bHa>AGdrb=2ZVSY9lv@}QC zZW}bBp$!b5mVE*DbBx0pZ+2IKYF5nEs|w}X>^i=xptF%0Q@<<8%~p-&FqZUYP#;== zU|jb*sKsGkdy)$}i#5AOV8O+jw1OIjpbYrnSOnv`sv*_4h2&;C49k&MR?Vnp7oe4r zCmht0bJq`9$kQ(yo4xSb65CyYG}Ca0zV*8{dq}lrOAjYMo%`o9H~r>RU)NQnTwK^7Me(? zzAF?Mi?SqO9R#hgo+;I@~>ih!SdAEZ~oY9jJ4I|SynONc(qaS=f z)Hp%6Xe0>2qy#W0E@SFHN%9h9+z2o4{Qhs&$nZXE+U(v!J=oWY z@|fy_d~xzYrxP;AzQ(`|K4gGH&X(`X~$eT2>(D%lX?Av@{qE$ei)g zU9wpK-K(nhc8Dg|af(snvie7o9H=1y>KPkYMmzO}P*FD6>?oj1Q<)Wm{Om?CN*)sM zArWAHuv~{ri)i}hC7S=;{4=O~5oPf(_0bZtDY?U8c+;U_)aDe+&UPTezIOO(u4t56 z*?wD&6D5nYh|7mOjs^CmtmmcbyWA{Co@3`@D)N;5t)=mRFQ)Dj(!5{QY)YR(7hWRg zIF*^Rx)>(YO)MeT3B6b2>n%Br2nZc81~m97!Fhr3^Q)Q zfVg!K%=nVHqWV~gQ1FP7Is}4aXD!om-Wc^IyFa3{S0eYF`;gY>CSi}o2FC>T2F|eq zF*P7(uo9XQvFd5Zyq1o_Y{y@jh53&@yVy$F_o%uj`|?U32j5oU zQPSnSx_m@Cm&_Ng!I^TS)ZX;{9KjhuR4k`V~S?8%T&As zt%WSJqk(EM;c!h%=(nrSl)-j>Nr|h^{kww=9m1Q38Dd)Z5zWpg@tdgKfLp52Z#7c} zmIIG5^{*s3K&9BuTq8Q}JM$YHl)zZQthjaLjEIWtYiFsVnb$Sn;KmZB7B{6X zg;h#+-5JEz=~!*|?qhcdn-)qrE})DnDa%=*~K zCP{s>Bsbwhs#>Ac6YwZs{=Ot{urM*1DW(%T`OgR!w>U0l8ib3u{WTX_sFB(o%OX`a zQlpAXv4JC-WMw}dUcFZ7_5ixPi-T3JDJv)O-1<&sr0VC~wUg8aSEf!2(z3g1>$Knm zei+ZM-JtYV1%%nD0l8%KX>_iWP`%z)%cG}~6PR$upWW6`+p}a7iY4#ts%^TPlHaRfrC}jiHWVN#cax;?~cjg@UoT4!yfn&Tw8tFZ+0%Brwd6pB~IfD z>$fSROY(&=@rgL)M2+>FfHVAjCSjyHu@=aY@Umt5l!g?OGq*d0g3kVuGg3@G=qV@9 z%B+{#GE8WFY-v_2wt(m4RR-b81Lsbepb;W4EqD2{*iuc)^#CHP7m%};&c`$3c_Vkr z$homV-|ri4?)NX6kkI<6cf*~_H!oH11~&qrE?gq}+`027Gc#Z((ifMFd@+T2(vkwQ zzfy_rL2kOcVo9o2HbHK!^$ZE(Ezc!TGkK4q9{d_yy=SKe@HGt~GJO~j~ap$-kcxo!x@P^c*c(Ivd zr`)<*U8L?->()a8SsMCUBDF@)GCZ_RU*sJInHOFtc9Tx9zA?;X_cj zckZrBP?O=)zIt5~4IfYJS@N0S*$QVu^9-^1;NcQt>((7UN{EQUa1!qi3{FVsY#kW! zSLj5T>p{CiX^iW^L-w7;@tZjy_<_?rvuNwLF6zvpZR@O(>)mc7rlhr<{r)Iv{`J8V zetrE7a=3H(dZo~`(^?u1mpt2jvQXgZ?S#In(bF426Jj~MTkcdEQ&HkUvnMkSz~MDH zJ(DfWIWL~h6E$qwp~o^n zfdlGEUj%^z7K@PxqHYX;2?|7fySi6y^l7_93?WZe42}=oo7-zUKCn1ggrXkZTX*>t zbzsM)?m9*|7zh_cFt0=o_e3^>b3BBGILlWbi7OAem&Ys|+Bj!SA&zO}M#Wxm^+YB@ zkGjn#6Tu58i-~A}T8|cO(43crM2shB0(Yc+K#M(l`~9Ou+PPlH7=MgAPxOd!Afy|5 zgCJ~J@ABSFTWYm4^Wa!Lksub~^M-occLtLV`JB)G$d(2T)Le*7ifJ!O0DB-QD%{_$ zHE5DmePCIl1vNO~{*Jwvk?Myi_QqMXM7Z>K4f-csX!iynTpCk5xv1Uaw#+~<#LH=* zY14M)kOvvfcZz^`NhI?Vdd?IvM2`bdbpfTv2*ysy;i1T;1`UQ^h#u0JLUMA>vRv}q zbU`zT@DLo}jp?6O2TYcD!HCoSa7>7f4UmQe>wfr|g9a;Sru|#@_`_L!$)J? z$_ISev?`Y8+|84V-c3qOIu%iynV95o1JH7j*J|XgP38NC`NXIEi|)|0v{PHQH)vW~ zH56Wk6X&Miw*0)X1892~_Wol@lVp|a3UqWr@0UH*u2k!gL2_b_D< zEBJdZ?2h|)B%>ML7kcmUHSat^p~wq|kJTQEBm?+?$ldRZuP+q zB%EE@ur;_iLn=QY+#dH0XGHZ^F;6;}R3Bknd3DX!fWVj6ZyCY}Ce_I)?CQ2%L8dS= zG_USH7$`$CLe+;4E!vzS>U}t}E}+yQDU_P>Fp@reNlhu!DJ9fvX_l7>N~C)nn_9xp~(+`~1qyBVM~67+x#E zti@~O$<&u`Z=Qn?TluhN)-gG+}fi@-r1$wiX~l}kN}szA zV*gHaPlAdBU??zaOar0nx5EvXg?!983O}muP#QC3xNh*=D*RFZbOeYqy=da3lF3YD zWfMy#y@`|g&A8Ske#zXe_|7i^B#R({@cg0?PDu!b$i^lnA$TL4^g}{t4f-eaREnb> zajF8kdDIxEGArT9KT$w9xOqOEYFB3MASR-Q3)^<0hM-w)r>a53WGU1Ym>J-O-Ld*M zfhGnux8aYvt8#lHNA9Njdm*`L6{1!c?=o*|p$^!+6#29-kLDLq%426eSz^2`*Dzhs z`295DE0LU>G;-*)prMKgBfv6~8eT(#c+H@p28n?#8u@s~gxv79F_MZig1;5_YKM(h z$DAN4%H=)q@U!{}Np8%j9WMoLZH2k zY+vCVutUA(te?zAbG(x$1TQDmXB*WhuNovUbFruNu7FAyny zb>R|mdydP7&8Mp!c&@k9|2rh-o2akOn_UFdxQ#knYC@rzH%)dKQ!O;kD#MA|(9)crP95<`n$T+B=z0jT3~mj<>r zyKJJxLGwhrC+H?Se^-(l(&^1ZzLb_*s~H=4BFf5pw7DOS!>}oN7V|ts-@j|D3*R-e zq3m^bkul`>_l+A&q5e`x_NBnsIb6>cUe08Z<0npHnM^uXji8IsnAP<^fbnpG*1@JyWX3bi&!qvx6;M^$${i=$z!zgTZm>!HWNmE&j8_x=G4&TD+3yNqwR?VY zDcyfmrv;=gmxjXngFR7el#i?ZHufARQ@hv#EM^q0iKKY0s=n2zxxoujr&qC=dd^+} ziHq`k9CAY}d_)r~DkTq;x&*DHQf=7if_m_67pkfMy-|Ze7J|#WgsybToY!47(E?Iv zf>#08xFPKIVckIwUv1Qo>xCfms1Q?!++v~Z7S}O|+*;hJfiO?NihR_6kz}6>bJTlm zWFB+(gO|C9#!GlyI7LwoN9lg+)G%WdrZWkgM9EFZ>{~oHRhT9ZajCT%SCKRkj7lE$ z3nBTvO$&rLEdEaN7zzhah3Xsi>im1N;4564W;yrnooCYoM6{9PhE}8#3;F$N3n{I_ z;pva72zCX$v`76p(PKww$SZe;4FB2p5098dF&Yc6T;P~ zCCksAakXKySL#BN=^=WHUpvP_-la7)>b>*toX111owK#jUXT4^PkV?--!{f$IaXlf zJ8k~R?y~Gx^^(0OmN&-f$tiszDozGnnq%k!{G*l^?1;5F3wyy5=FkQWQR`dD1lsz= zJLcq~hx0~w8S8EVM8L%7D`?&%b-Ypbb8dyy2oK;VLjD+RrF7G2RTVkK09i-o4<@VA zyumy#p25IDw^ysL4KC^)NLx1Qs2<=G=!1q@VBXs z-m2-Au>c#8>^?z&aTUpuzId0*cG9(cOEV!^GT0Rl>ZgN3ZqB0vWe8MZn2Mu8)MePP zxvFkrGh>aXylD(y){tu_h%B$oVkj-6vrH~Il}zg?xFwOhok?rSM1V-H1Y@R^`i)TY z4)Cz!Jre)D^SV6mjoOCJ*%}NT>@Gh=$gI-6lkbov~sa%KPW+7M1 zn4jv-So>p3XIKkG%l!p`DWiG$-*u1z9`lHG!Bi>qkC(HeyY>L){Tu!;lJYxeQN zO9eYK_G{O`_DRFuV7w99H*L%c;YeN>(!he-_T;tkA|+tPn;SUrlqS?iQFySRLQH{( z=9K}hRZ#!EnHhQBC}Zbp(zhe?(-yzaB_(VR!l0*YKrD~Z3Ul{(5KL23`sQD~Nh-h7 z*2EZ$H$>$H0P5xWcc%0S2j>InNa1iyzP3_R|GyA!M1muL##olIr z;x_8x@P&+qPUka8PAzco!nvEl_opy4i9JC1OP5TShV@?d-8_<-#aHviY&MlNkX?qK zGTCf~JjHmC&P@dYa9ozHcU+y$WoGju*1riMR`SY-cGe6O;Pd4Ij}l}M=g|_ztxPgO zXhBX0oA_tFuDR#TYU#=rT!jlu4rf@^&<&cErLNh&GV@%2~SrCeDO-`b=3OxiVWc@#5vUvanc(2~48m6^gJX3F(} zBXT&j$dSsSI!7wgr#ES}4VF2H;~7aKbF6ZxV|P8HsMtv6P_(PIXT?b7V}Lt;P&weS zC*`Sd=0KYZ`izlaX_+)fmR3G;qPCTbS%D_UW&Q@80WJ2&@n#PXf;Tv+e?G-DO zs~+Ij?hH;BXR>oHfJ;zhc!AjhZeb zZx%8)4L29+a`+X??p9v4Br8BW{F#YNDwA_9B8^X=caX6ppBS^g5x4#}*26w(u;#xq z4WGYr*$$;4wP?o7xRFRe(!?n^;1riKhEw3fv17{Xmu8`YVtJBu>4#4XKpsNRs7&sX z)mV+KUvAX;OZA?}VH^SXQA>uq+P3=Ml0hc5xuQ*JoZ6hs6j8uR79>w&hUPyn=3nwr z+AG^OHgD!!X)zb}0^P9gZd>b9H!NAnVOH?6tqNLlC$rsLb7wC264&0jx?xsgL^**EtWlL=kHwXnJi^R`oADe2kq{J7 z@_5IVPUTULcL+MFo7}w-gpa-%;&#LG2F_0`-`wIz(%;ibXRNdG!AbKbs8re(iC9da43rTz|fN7+bCe*u)Q-{ z)B+(T}~h#f@vFi z8wCd@E@!u4wuirRHbO3??Es@8E+sZjZhO`9c$q^gfkQqUf5JzyY~L9T)V7gS+#c)q zPbxYz3u`snv21mflQAqdXE}mA+D3w&S}b*{WjteMDiqwuG(v!`k^M+&mJK0m6 zCoeW`9`yon0XJ}0hdZ}yg9PzV-VL%OUFMJ{ZlV*ZJT(VGpMY?u)(t2F1)Xav2~H^Q z&Ypp~)nMn~fjX5D)L>`bnvAf!YsKb(V>iO6VE6W}z{5$r6ovafh`hvFtjA!sm=mq2 z#X9YOY<)-I@d_vS-qo800Yxf@OTBc#8+6O6b1n~Ea3PCwSg9Je2Z44 z{$dtzDx)V%3z&#Cz9SxZq@I$)eaqG;_js5gqkVcZ10ak!^fXuKhuYH;PqicR9meq5nlKN4t;V=jXu zyY|-VG9aID9(isBZbV_}M`4?o>i+OLzP%C0E)-9G7`(UhL*u2%;T>K8EV~WTyMu)--VTPPyWo2P-0Rb(C6j zQ!E4-UH7luQg22Vi%Q&&LBI7zCGOv`vr4UKakUvz!U)y-q3wG;h^^dAG-D~|2vzEo zem=6gft}K8+7ppwL$X3*!`RNRS>M2B=k)?-g+M+^_}jQ$`N?2#x&wdFoIX2BrIln4 zf5{V5dDCH>nkfZI`n!HGhtW05sY4W-WK&!KcDL_t`LPlD+#hsWief$_od$=`b9uArRVSPGPhFOm5~ zo_2lZnx@8As@&2j&3Q3nTRPHR>YJZOz6*U*VEi@iJ>V7RVvTjX1AmUzxO)KZvp^UR zt~I*MHCic*HGSyt;*2%@$SeKSm>&YZClIy?h)>3aZJV}Wa>nu+arDqVUPa=uF zaovf_ZH?MkJ;FSVlOxB2;%RhaR&Z-XA%>g0s<#5e@dWwQ@{P?*khizpDjt=nbTzeU zw?Cz;5#>c}Sq8DFr+tx;0u3%{XojFNiwQx|`61ID^-~&BQOIi%QEFyUNI8Ky0wGW` z?*&Xbc+DHvo_{`BCwAKblXZ9|$nt@L%wcBb?_N`Bs60ladqk zF@#B*=>+vMV#InZdw~FZ9ipQF11!Q4%wC6}sBaU1!M_YSh=&FaIZx28Aq?v0^kIP? z1V96a9}>K;L)&=bS-}CAYm@T6ER{9B6G%Ns(J0zqW_*0&+Ag)B(!7l+}?~qn*Q$FUa|DfWYM$0yu z{G>P@0BUU{Kq)3DY;Su;LM%Ga8y-;1ZV)h$zo9sF7~^ zc*96{p%iCIgC%D$FR%n^pOaRswNOhHiiFzdq;C+{C^4f&^tns-DT*5ome2?FDK1E+1^GvuTX1 z$f4`FsmHF)Wkm_KgfeV^wYx_-SXGqFiUL~mNT@K3Oqq8}h?O_LfTQx-98qfMxR)7- zsKIPzFEs86uL?xVmxJtJ;Bw0~&J5U5&bUCy*4a@&j2B0`%F z(DSP|DfiY!wBd8#*o(~LE zmV^T5eqb@2`wpz_1H`&-^5C<^)Y7GIVd^+*^496ZbA;jfgA#)Hfx|OvZ`<}kY32F` znvGRarYZ1QtMYqffCT4WO>rAOtBBQ`;_3Eo-`xo>fC4`xAt2^MZl6>9jgF>_v?zx@ zL@?DJ=uf5#q$ zq8g=ZsuH0k;5kg_HxPiGeSW2ngEv1aq5qWNO=`_SNc(7jk;WCtN2Sg|-xUcR>VHO3 z`hs<+=UezQQvYyJ={~{)$IE1R1yOKtCGc{fY_EuNMs9mq+R$EW%efS$*>>t#bX8;1 z_Be68EN$HxT;liy*y>|aBYl2faYD^IB5(aB7X5309gD7;MrY~qheNSLV0CT0&G zxTm&<#qb}Pj31K@9j!AH3f`NKNykss<-PeuwnM18d)Z&bTEz}o#sGBP$EDR9EnP?b ztH?F~aS3&_J{WtB8HBFzGJ|t>w*yW|A$)&a>Kkeud<)#}KjH^&om?z9nC8BrF-_Yi zB=nGe!GF3<=>;Qi2^cO*U=Dsl+S%`yIf%YE`2LpdIG_1yFB4mrp~qrmg7T9RI<*8C zN>2Wtl-9Kejr>0q0P;tY33eC(Ny{(C$)9%iQvskqPxxH)_i3_SeWt(ppyc%T>42HA zk7Iv7BQ0O2%r#rQi0(iXazICwwqGWf{}WA@auyg)H?+ip!~dBms`-TjUJzN7PUqXt z1qd!0{z-vH7`~sA>MrUfr`6}lo7ViZrzf@(7_^SQ;xvQCT-@iS^_%Ln>e0-o?F$kz zlbT;M>A5)g$Iw2ukTlptG8}ilK<>ht&PtBs&KK(NkfZjDJml=tD15E|(M8nWG5&8W6q2JomfcOeM#D~JCMqb@8p*QxRYcfepy<%(N7!ER-Lqwq}abKsXK$H*!ezwC4l?* z9I*BkIt9JeKU-fYOxi_K=3k-ca^RFXPXYfbrA0I@1-w$U)RJBfPbjrMX#1*EZ0S<6-1tyu&}5v+-yh<_N4`C*wOvU`3F3M_^%>{Wf=4xpLcY zkTn`C43Smw8g*1R*5-)%EooDGzz{`h@wcR{yMmz> zBM8UHZNDQe@9-ld&oyc6QZ92ViBW>&CnU-AJ5uMN#!05qvYiT`@VM1~BOibdaVu}2 z+zw1~-2cC1{`ue%Ul2Y^15&Bb?^Eis-=#tpl{v5&oxuppl<5HceM*?D&#i$bu5I5S z@21~#3_KTEFlOKm)CoQ)`t$!-6gG8D6oKyI;+Oy$RVDESasDQP`9s%Mj< zH;p;o6y-C()L%%EUCPe}Wos!BHf`K4jOzJ3>Ns?^&okMSLFX-=Gf7Rl{zB?G=6f;J z=NTZo_bNZ%D%i6eLrA&*OFCYQGPnV-4ZDUkEOCuy4N;S%zmzs>0f~^Y{!@P`?b+)9 zQc`Fi{!)tfx7|4Hp9Ta8U4%4Zqq9mmmXrFlDG zRvUXCm`OgPwl0^sot!~A$7msQ(@5tjvprv&G0cKHNRq#j?y{zq^$%b-aqZiZJ;|(p z2oh(Mu5H|^Jh&u_;}p~*Jj^5bD0M*nwzRElsXCzYPsB-wA{RYV%uN{i_yjNo1PCQH z*5kHX$el@Hx^GL}14|aBs|%0`IA;rXv$?;PR@1PzJ>0 z-$<+N{shznl3i0fEebNl>EB9dG%u)%+8N@$?@FsTh-(AXcZ4YIyVSs@^(c)zO5c^* zJA&s?VyOOmw>FEAHv9XAYqP%(h&KECplP#zaA>mu>gqw1{|~LJ&Hh0Osy6$cLz@jy zO*vuud#$U@zSnBn?0c=G&HmA;kw|k9wftl2YNUS*s74~ReqX{&oYqwI-zPF@eu}vJ zsAeU5h|m#J^#4?<=qY#apQMcg0m|KD6So1>;K=|5usIe*LmBRj`Oge@r>??Dza)qL zG0{IWj+W0x+}o!#uSbJM4+xBmi?fK52@D>=! zFh{EpIsTh;x8f5ydc@!ba8^)+K>T+K$2PyKyPF&>JyZf>L?Q3Xzqd{-mgjN*yA->} zk34Rt_l04ytN{yGn?I5w8-t@ZDd?HdQ<=0eI-#dhJm!hot{+M9zC~n6|A=Zb0+a4k zzDSD;KM4~5k+f~6^5LLJF%Mu70GY`a%-r=KNxNf<*qQ$zt3CKT!-da(NUQg?jO&-0 z-TjBuH5jChR43)OH;0sVW!S^~&CV63GwJSpA(2XsYXk9N%^E-Qke(`v872{yzxa3v znyMAZhScigA!LIFMyzDg^uP}J|4pSYd_~$Qmpjx(9of!ij|fh z%sh&}#3=#s;{tNJDC|%2|MAe_lPw|t*%|PO5bD&-GvL4=;@Xs6{6q*fA+5lklmqre zXwy&&<$&?P{u7~tNBt&N+UX}-MG({Z@W~L$FM@YIWPJ3t&?>80E%+#+Kv%wf(Yg|j zo2N=&Oe*Q=5K0Dvs*?EpuBSt2UeNscT@?of)G=@3Q^G=F|qb%2`faLHJQ zo_{*z>+peRLiX^10rD3T`krYC^l{(jGob*CA)w)Q&xSCDG}z3+k4(>o)^xSZk?AFd z+3te@8@$44@43+G9lrb3-vvM;m|c!x%#bCgFv*hVLVM!D7sV0u;UHLh z27Ep9P>ZqW=*-jn-l3$sy!O&O3EA6u_*5%wC!HRj3!Ogaw?R&t;a#nw8Q#@un&Dlc z0BQ!3dhZGiA8Q3RK|#e&gnTTh_=(UG6jTt8y%0h{MbND;DxY{E)NaX+Y7~JBI{9d5 zebjP&Q)LUG`)5M!0rCcwEx|-Lb2+{ovTG;?hOs7s|K*UjEBNHX;Q!gsTFt^g)qoHQ zeJr$bdrOcI2lwM4bO#Phu)mC4Y>H@}JD)1lq_S_J-I2(8^M_5|>=J^97ZjzQNo zV))Or6#0E7bm*dM2_Us!3T@gauEE}5OZ{x9=Y+T>mjAiX?qSz8TK?x-YWbfJop{i- z1T6mx9?SoN$MSzAv}(I}7A6=&)31a&_gmLY)ctD6F6|xcIkY!a$*9wwveAXyzXx0YTHp`}IVBfA7G+P-19e|D-XjPwv-;hxOru0|$-a z@kFmaG&nvusErkj+{{EKmC41ezm4^<3!=0giFjWQb?mA$-3wd&J*En;w3ur{CcpDJZv$)PA47# zIEB)&m|v%pg?Vj&>iu!;zl84EW?duU0hat4A!1Q1`L&R;xp^#!Wqd8Pwb!)_FxA&W zCr&Q`Q++LT|E0w<70~+iMWglWO+_nE`1Md%&k~^U>!G2M#iJ10{Qpp9f}^w+6`vCKbM^fJk7`A4AulzCA& z`j08#^_(wGIIj?9&J0Im+y6MU#wKs#I*Pb{GqhrDFe9#j_?w}1mgkcZ+lK-1w@Br` z6c_}HewVC3glx9AFc{U{%B+X=SBD)e9+|JGQcN&9i6RvWH@ug@uxD6#wuyLh0l`WQ zg}Y{yq#8dYU{}8t8o5`96(%Zi?N36h+FjQuT=eIm$R0QWn}^1EYg4P}w#8<{{&}cx zuvTe^GZbyx7ulkbd;aOxS+tdVh+X`)BYH7JM_rw+p(yv^CE3G5@+NC>=4vZeq))WR zm77cQi81kwIO|3})?=h6G70pu8=cJLM%gt^$Fx=7rj(i1+bZ7s{oA3zVW0GrNByVS z`<=3yYi1`05)VZf6iJ!`L|1K0g*)nOM)I$01LZ=d~(KL;Q zdwoB&e5((`y-v@J8wnEDmmG7n=y34;(6*t*q%;`flW}Tz4Z$J){g5$H$mDE5xX}F< zQjpC*99U3U@HjG7!Ot`!;$P@=(EJ$@^MYpC7E~khFCla%ZGMf&`~VthG`eNOq#$|! zCA7U-$!pb;l6HVPqaFAGc~pYA1ALU=4?-9z(fpZ<M=R2J0#R zuOXj$%2RgW4?~e{K4b@$?;6p3V$={4a`YAxkz{#D${K=m=z#KyR0fR}G;%h&Kzp zepF`FL)_fQ_v27}aH)KJ73s5-RuEz41_u{lKMoBIw}b%W2E>m;BgX<|Ktz-`$!%{5 zFJG+`mxk%9an^D#<5f0YQ&Pa^ZwbTnUZSiCHvk2EByS!~_y;2>CPa^caNFI=o15-r zWFR1^4?|cBNp$On;=hN0!EDl+CU%~JJDJ*3z~+7;j43Jg&8lUeMj*2OPuFekGr)K5 zsS|J-4gF-eZAIfoLt~HFAZmLQh=XWz#%qhooRKiM@5wM4$<>6za~LLMZr_vPwHxZh z0yQjrTexkl4-E?$9dnsID&jwc4VobPw($B+e<#QigFh99qroQz7d92Q?5Xe5JHj~G zzRe$TjL=9k1H29$;9Quk&}m)Js?UXyZ(5T^a47WW!kgRc+->&hZ5@mFG-4n1*%DCb z&xND=>U^5y(enY3M?$-s^62@R<#UozjupKttgNqVMMqE&97c!a z!K$!fdx(lSK9C0wVc~a&9bsWgttC!+cX<8QU}<&+>x*F|hKa~3rC*V{eUXlS0kDj? zx@B;_C%nSy{53=go1{eF6W-JrI3>!!eJQ-cnzA%RiI=1rUkY#B5j54vpnb2CU@3K! z2==`JAy`}VGg#jjUSVb54N*!c9dF(jZr|(g@rE$=esUQ!-*^`pZkouc~#!S zG7}Ew8Y=n3BlBf23yC_S?u#NBu!tsV+QQGNzqUmdA!Bv(*w`5NlE~I8(pec-)wb^L zZdrZLmJ7w1OLOvJ`cIZGaVKY9*0jF3c08@IV3?K}e-wdfEi;LKk0%Q`%$(7tGcy^? zxi>P!yp}8&GxSVF$BJb`F^$dQLl@ znli?7dY5(vvC<^&xti0{d8C)l=fWcbv<8CcyOd2_4N*dZ!G0E<-K0s;UnkJ7C$PD>}N+YXJ z8QP)gLLr+U>FMF2$xLqQ$k_GKxGXJa@0kE8$OarhYdmxWBT;*HDfyE+pnn(=H=V>xCmZBH5 zF}Ch8ZCcOceMVYK&SW#W0${|2v2=E9L?+q=?HoCB#QafX&(IB=ux0rqwnfXQli93M z!25Fs_7vInm@S;p#^>;*9KfAo!-jL+_-+dCl{98S72?vKyiG~2@6eOcbT*#HGGq8$JRa9N>E42o zFN|pWuH1k2694KMU^WjzF_{sJ0ffYp>B&qK>=_#a)6EGQ#oi{cH<>ipkG_B{x;hOi z$Nw}rt0U4hQB3K%6p)cC0zH%3T&Aeyffk~u6qr)$xDU^1*yF((Uj#4NM}k)ThIUIvTPa}(3-t3poXHEL$4 zC)30=x^~l;o6Y1BU3kc~MR+Zk`z9zmy2rd{&-`1(WmKv=Tg+uiD%c-PC2tz|)Kn^y z&yx@(*+FY1L=!HNF`1kouqKRbAx{`KsT)LWi>P8c0ZB;rkKxs0TD~~m%@u?Ta3*N@ z^PGvIHY#Qgi9dOcLN%{^TY5rh*A3u{IafmEgQUI$0C$ zEc7yI77~4?Ua+a0aUkDJNN;>8J0~X)C!Q!k^pbis^aNQ|oIOpAKBKY6#uyg(r-&n9 zPR-9^=XJ;yVkhW+dKDhXCDCq-9=<+$9l3?MJX8Yxb-r~n(lhUcJwtYeEI$NwM(-4o zjG0(qV!CD;8#aMdG`qUxD+MSY@dV!x5@Q@iFt8>;h+1^aG*`6lET@IBSeG_CorL_J zO{P+^Da|;B#xz?T>Zzn@C}7c7r;T)%WgL!8WMP>aV?^%Q_yl$wnh;lPO9UoPhDlXs z3DFx!Z5Za4?Oi2{!WPEKv}^*>r6K$XnGA(-2o}_lF)ca^I|x_Ie=?(xu_Y}Uw~)@k z(m)%Khj>jkzIP&%-+T1X=?hm+Uv|DgTyVdFU1cvJUQfeV&&rT=gyD$+fbTm#kGGaTi&F^jN6^yE<#)@px;)Ez1hx}K407aTCJR$hy9H`Y zrn|E#9h_$!4CW^t`FsZQ#xyqUT_C%QvB(%q<3ce9gBD-Q&WStu$pub%b|#RcMtmyH zZ6>m{#$v$CSpkVj?l_<@lLmZje}{HEGl}Uhvc2aZGX8qr%@Vd)G7jTsj0{Dfh5Z)2 z*4NeFHE<(#k9M1xchT5bTt0o9G&|VPBm>Bh91eEON)^lnVWPrw_S)v1G*g+WDI*tG z+wJ2bT>^K<&#|A_iSf5WvS0PPYPSv9L<&a+?Tl$`Q>Z_B0g>^<)gsKz*a!pl#Bq(^ zmLmb3hYd=SN^B~QFF5Idw#N-fNgNi~sld>9Fjs?-gHb;n*W@KC(d0P^HjJH{B=RJ@ zzIprWL{=v`XX9#zjnL>VJ(r|(i5Nu44740X1jFLzCHXB)jI6n!6pWjXtNos!S~rYn z6e_<4pt}h28w~Vs_y~F-BZ|A#^ET)S1G2^Z1x9$@NKMKyt^0@r`Ulex4A1uUR2U$p?rKR+0%EtCF#{OJ9%Y=H5C$I|>seBjy zaJ{LFp4cuqKhHPgMM?e%zc#~THP{!dCZ?ins+oPSop|BHlwHU~!kay=8cvu(Ozjr# z$v&45nluHv5JHIYGfwUoxA&`i?EQ_}w>t!Zc*gp~Ky9BGto{@Kf17{Qk0V|pWsFh} zIGlLNngE*BSKHV*=Ipi2$lv1;(7gk7B=bwe5eZXH>Q97mGym^C_HAY+JHD@(LyY** zh3r3^+sLY7(82x_kJB-#=giqxojhgxldb5I`%nJBp+ib zg0456;jT-ZHVpP2(@4k{@doCh#LP`b=1UvWe1_n||(rU6=XPb@h}DCO0Z8 z-yA)6?)*vkQ&I-eF@J$+k{%W&DK_1*O4*r3+)io;bx1Z3nfB=MOK0O9ua}!Pe6s|8 zGFN{?lAB+J>$w|3?z7%Pakb0d8;2R|x@knafMM0bD)eWPPAN?|vnA9c_8Q1i5n;b5 z7@sUHW}xV^qY1sBk02&D$K^CFic4q2m;LGeG~cRBBk=>0{FA|8V+*Zhk(lU=shvU^ z4Xc~%ZQyC-abZsEl+7HqzTT?t>YL}Txb?373bqNgC$rCB2d(=DT*NL&JVu(9X4A4q zwAb6j{uN2~dyu9nK}Tt@#^@*+Df?_Bb6V%Wn551r8<#j?Bg?M&HSC^J$6kR+*MBX^ z?+*rDQ#qs{1|}2<&G)&{Tz-!W;UYcx+8Kva#WelksPKDAut`PbivTC{qv&TtO+AWL z*8ltj1gnU;2dN*B>}~Kqkg_|m7vdZ$Sf6CRldtLDu1y|+vx-a%J>}jsI3Ss}W2Ss% zID@7**m>4O8$ZT2+19O$D%X}qS?@?}Y*4hC8*y9{#MF;S@`r*Uom}v_C^)9}TdHkP z-EDJ<<7hARG&g&2i~81ZGySGERfs;K>V6y0(!+px4?6?c(-Tee|A7kTKTd}<5(v@o z3Ce&G=jf{!DJpd4^2PJ)sLcVdz@s2q7nyOe-O#`gRKRg3869G1Wfw4Apq(*4x_{DXKvEybqxAW6W2O3Ymp;2Mhd32#~P~Bx4 z+>VohbvPD}9Izf4b~>3HkGOP_eWG|a{^C}X@P9u9O*Qp-0*XulB zRD2?8r4;d#M#mxfpohrg1pwXoLV~gg2jas>n@*zXSvuciy?|`{Kla1tR&jAIKlx!B zGnGu`862gMzT@d8Z*pLq3zn)@W{PD@a`<4=dAd3PO}xg`zYjG|q2eg)*Z zy!p)yoVavxpd$;K*{62z0oP6P0 znSsI++&75Q%1T%REPiKGS87+%}pzRPW0Z8n?&)alKf25C9jK6QLr^? zZakU6_uG^~jOP5+L@K#@%m+ruFX%Xfma<`!6V*IO#RZM%=&+r%D-w!m+{1S}3R0vz|r$cu0Pt z>HH^F;5tV9Uk)dq*Exc08>;_l9gvC56CiXNx!s&%8lRAR~5A91#^~I$0#E*kCVyZ8ZIZv=`>Won>U-OT_o=^!^ zh^fCM`H)_1!Q|MqxEix%pTlr-++rs~{-)%o2($Mz?#$VB0Bzqfk4$2QC-DDP|Aeui zgG#9r;&+@Z>6}24l0p4tNq*cvsO>mbz41Wx*+v@0*nLm`rA7Ak0!*>~V%Vot6gw7n z$ppGnJ!kWw(*|*e&cy8^$*KHBrn7a(;cPV#C^M||(Bg^-iiMHW z^`Ct?3wVR$$n{YFtO~n{O%3I_;D@!2scfNpu!F21bm(GzxKPP7qD`hUNFqC|^~Mj- zZ{Tl3pBd4{(F6lm&*-VVLDwfu`!sLL0q)rm1<`KuD*8tHo$+nasDmh|t(%dGQ9-%idD@=fIp{7HguGc#AUOlXRE*C1K-2Y` zw}5pXn5-Z+%6kKl+UtozrwoXxzwB2cVYxo)WDF8_9vsIvPL-P+D708&gR@{}wVfUMGY90pq?>4un-c(E8I>1tYac9ukfqv@- zZ~e#?^pBGKk)Vha*4V`5VPr*xXgY_6AdZqD#}emx#7on&CI7o5|7=i}OwMQ)J3-GF z9A)%$X%yw6ZS@LId*%DdRalLx?-JL7&tm9G2V=+f2b{DXIN)@Y zTlx|Y@L-RyU~Tsxi+HiGp0ZwY(8cHWSH<7(78a8CdW#Lpa0O7rTUe1ENeuK)K>5}l zN+a3B&(~Jo+d!{NV2Vd$E>qo&vw^-EaW>Fj0njRNW&=7ay;)e%zZqFI10NJq$W08Qfhs3d9b zNfVGd5CCahr?Bb>-n~4?PhYZuE1Z$sz?p>ZOEz$I0Gb9uO#NgiIFg=vOu&mN(xyne zL(q%q2jv~HO7DlfhkDJTGp8|%j`TBV&+SMfuVCzVU11+ZyD7B15|3MIfXZChFTA6q zih=c?2#V|~T|RY1DOr9@wGIXY-c6knXz0eQ(A}1}J1}ooC;PtnyFdMTb30wxyXzqt zA=0TrdlV;+f=*;rVnDcm2N|&&$$k(Bm184l>W@~BmNBUYiM!nk03omi#MB_E+Aa>spGuqCvi0R`-~)ix^;HYG*o(p>>uh=ciMYeNZw?~ z<`a%iqu?z8^e}B&inY_RHkN8_XbizekYV5MQehA%Am&I!9aIjnnCMtfvCx6d(UvKcYJpJOYQ#2$}k@ zy&)t_tN^JgHAov9X*4wFoz)PK?kFImzS~-Kx1P|udwcskN`ulb`4JJCcdaJd`QiYY zA25#LmsnL^d4cz(mUjLrv|Q%uUX6pxM-uQ9}p;Ozj}K zLHhENo5U;J=pcALf`NO>SwAq0CO}u8Tuz_kUaYQr*?_FHW_^z7PSTcB7{-LTSbT^B zu}a(@bFc;knSAlG9|5m@6=xOW0d~S)K15RcCy;l zl6|AYazUC9>xOI^Kw_8^5e}zoF+(9K8;w{ZL6A4~6ah?138DKpH{Et(9|y9{O!UR) zg~CP9u>7}qi9)1&)|wLfYknjWGqeNgX+3H6zN{3aFS*S#I{8;2zi7uYR3PC0yo&Tb zah4d-Xz&RYdtAfFKt3dbjGX3{P0$zjQrkx6DP#ZIdvn&hP-;uPqmdD`d8ylhW>Zc0 zQc=O^)(MN)&X^hu-0@-)js=l;Q+Qwc{G3s2VtQ7I7_Fg5`piiB=c;TVb zm#-YZdiLUl(NiZzFCD*nAFc3~91btrq0B7#XEDt+m70k=qve8ANATU(;DqgO#VJp3x9arMci-*;4}oWfiUa(P}7-dzBMRG9Gc<=d6UG%To|@s86d z!jm4r;>63awp=?J6s$#*p9j|NjI34~lkmJ0SQ8`oBFyleYt}1`iJC1jy!_k( zsJ}o^Z``3YCQ`KYP$Tg=lO9bbVu1Y~fZn-V>Gu$C<;ufqP>9Tq&P@>oy?w)XMthV` zHpI=d)C*6Hk7o74v{-fDV4bUmBD(Xy{Y_Rx5yl&GWJOEyMudq(dF8qWiA2&8aT>$K z{*p7$l824p80)$6z&W8tIuTn=!)Z?xEFDC2fXT+M-K}DDbU^H*aWH8q+JJIvzu=n5BdX zq3WsoS{I?D*3`3CT12fy6wq}0s`WNaN0eX03bsYoDUB%%T?*Shuir8p$>ZQdwAc-A zTfZ5{S`V?jIDZqoF%5v(k}2pK9p1L3L-~c4fn1an0PS!^ZQI%Jk1Hy|HeI`GRm*KU z_r7SW)s_(wC*<%BrCk~JV6J(50T1b^qB$x7+8=_ZBeFpVnm&_hJ2r1^!Tlo(u47wY z>sfGY8#*Iv#WwU~8%P4}T(_kaB~V0p3jq(CvS|~yk$rxi7piyCh%s^;5CV5?+}4^1 ze1d@gKkU5;bR5@pCahwEQoBToWN`sl1j!;mEDZvUeHAGR1h`2QNr|*UupVJ|~e>=tpN+E)` zv4h<&hy78IJ%x4*@pW&EAM1aFAlh!Os4$V@D!vVAxF< zJ-L0td7_XM4W7JcKN)C<>S#xmrdCToT0vdfa&=$&FGT{H*s&hDFWrUQ#=BUSES4#q z2WMZ^+7&-mze^nbF0N7=!@lX|4aHew96()YW=`78EhyQRq+kg{W;X-`Gq@gG<*K^T zFFSRnOEqdbSEQ_WjoJ#VVhS7A*spr7wAtX3N&y`ztx?Zp%@y?MpH|e`D#p=& z5L9>IdPs#M_;J16(GyqGs`Cj41o5YeT5FfS?)g@?+qc*%*#o~zVymTWtYG3v)kGAs zLfgn*K}mORp=iwJt`cYl1KKbJHa#19ROmF!_~p2bGVi2QI~f2+4vndK4=@L{Qt&SF zCiKxi8OSx6U!KwxUX%tQ%^sF9K)%4BWCIWY%Z;I=w)QR^^%h$rdwtQXU~^bQkWkz{ zU&R$@Sid2&;+7;>+@_cm*YjtOOwc=ReHhXY_{JefYjAKp z{8jsJpHS3}^4_Mx;@ng&1IVY8>EKyVR};DeSy$7m0x`QD+vZDyyU|C{5+LTLTeN$9 z5^g@j-qv#6iv5xlguQ=1L^r5D&P zQxnh2sdcGc3uIEdwT}X)#An4%L#pcPT2Ooz+?ri-OjT%?y6?Df?kwkkKmg%DPqud_ z#{2>(+gMkxJzhn^I8hVOJwX_eg85gG8|!o}nAu}X>{1DXP9?LcjERm8m0h$)H+BY- zfh?zHA)SG5D!BDu)iBC15*;|J1vBq)86r4aJX>^(Q)ml~dc%#u2u&q6l1!PIry_M& zNc9C<1GA7(4V6IZHod}1Alt;k6P{rt@(OB7W~+MwN@iEWFQl&D4;nV#XlTKlCn_Pr zN2Y|jDNOq}9~hQH`=i<~fn8hCF8F~!EcP1NWjj-Tdkt8g$Tr*oe?)Rp#nmtM%4sMO zs6u+qGI8EG4=qtFFz}c+TNGWqZ5J**k(#2LGIHbEu3_oicvSlhP_{j~8`T#<`0@1< zR~JheMx2=^zLJ~UzGqM_Hy728sF9t~&DwwuOP9NLT>#(~b$^hw?A+Q=U1{NxE#fL4 zsRm`FfID}$)S3cvG2huXQj=oNi=gXKEl`CP^p)E^I=l;e#~llu4eGm(1rz336pB|` zrzRiEOu9tf@b$a&YIOXropr*|VbWlvzOhLQ23UWMR=IS;+xf!D9^-&sf3Ty92Xwx{ z4O_O?)CNbj_h5q?b{N`Q197{{sz{lM7n+1%g$j(R(XHXY!K##sav)fqawy3$K+O0d zh?JqB#WEWk{#IEC}l_n@W;r3y)C$O3Bt&Du?Ln3$*2o0i7p;TaSz}+t_l@? z>$TOE(_^vOfv$m&Vl&c_rcGOG(Akk?YTDKz=aw(bqqZ5h^4DvQmUK3wHGz#D%fjk$4EgrU$x@?#xZwu~XH~+;m38ftN5*NFh4+9;jJ` z;JNtDrnt1mytBJ6Y-28R@uW7L{i8LkHtg)zIW`{B*$=0XuABGT-jHxFs5Q82Uq>*l z!Al00&FSp?LNSq>dKiF$lqMv%&=nu8b+-^@g{kpPS}>Q-l^Axr#*nq&$G10B*nV%9 z0P_03=9D?LaG6I?q;&Da$7)*X$W3%3*00sLiMxqzNn?H*snWf#MGK})zvBF0DqWaP z=B>D&q_!LB!P4{|*< zeoTvMWCwbXp{iv&K#JE}^WLjhQtw3>t6sS>R=rNfig1)*iu*S2cSr3s+^G*0AHiUy zSZS-$==}ma`im>}X8tiJNbKwAscAK%y3u}VLihf43f=o_I?WViQO7{d8@~ZbjUR>X z0}_Vr1GOKz4}=-I4{q95>MsTX&L@?>7)0G)t%qepHE)@QB(+QwmJP`jmJKxxxRr|H zg%N4ug^_iN7e)^C*0NUWI4ns3f}xLA0ujMZ{z;Z_dw|120uFJ$E<{;f*}FC+%I zWy&)Kb(Ym9W@O4L;2s{U71fwo&YfBkBJ^;2F6EC0-Or0i@i zYjUwVf1dZ@0mRPbLOC$BA^hyrqQUCQ2>mWS!#?YFy|c*zfly{Io2huydlmIvffQ6( zyc2F^`97#}o>UP7Z+*7eQl;tuD6bdEyfV!Jp6u}jo4zN^bHNk~ z;Y)~^=J?!{nMy%3>_`S*)SGRb!Ct+=`Jv+CJU$m6&n~jXe?L+UWbBo1>~bZfddgW2 z#fnRR)@_2EqD=vO&dKsRKgTQ~L@})YP0X6pSC~OcrDtZ$yqQJcurXy8ubO7I%oOD; z>%_#6VdRowa~Uh~yVfV|RuLy$jT@)gkK|1Ne42*qt)13#y~Z*wep1JzyBfWhrxSZ^ zUo-0%ELXFMO#O^)F#6oMwKhh88xzy%X<`mAe!+Vo$SjL6KmALaAMJ0@Q5ahi-87Y( zcD)JUrf)!^?S>m}&|VpcbN9N@5p) zO|J%_VHL0oH9a`10@rlE_Vz&Jr~(?w<;e!!L#ZcW8gDj+WI;9k7|0=1)Az~8EEn!3 z_=Z#&!!&(HYC=Ub9?m)p(eydF$ra8@dOTC=EhRkD>VZ;}M5;?`wM$U_(M-v+ZQnB> zm1q0E7|fJ(kHAc8O80p8G(nlxo`gpM;Rk?70GWPRK6B^2siAx^i|OjS$AgLK$^%U{ zd!gKX5Q-_G`4Ng~_0aq(wrZt(6RwRRuL8sL6Y}r1z*Pwa!IU^+6a!OP zSKKmSSx^jKnNNy9_@%X^2qB}FVgx5cFa4-|w!{B!5iNNfyR>>2-xXVEKZ=EwCJY`z zF0CGF)EepLcZ~4Pz?u#Lx76_BmeRHxaLl!}?Hsk#kR7$ukQlX;^u|C}W3A~8>t$;y z!z^uHD`qM2qZyc`wZ{)q;T9m4)|v`43^IxFN?T;ZD`jwV=xVAx5e1TbOK81Jq#vzl zvZ*!wpzUr2R;h&By>#IW@(#>Gw|bFE*;;^9D&boEqf0AFV{3^;8|?)YrLmC-d(R1_l;k&d{LUJbUy{}i%*d-X>qpT+$L8JAg4%WH zd&35`b0d^??2Fs-N(iMSubn_BmC)WU>pK+fH;HoKlYUOV%*k?;i+seliGHAye!14@ zcgkEXY|_qEW0MlvOea7is#i{0aZYCWJ#^=0I;)RN+T}$iB~|DGGHGq90?)B`NsLR{ zB@r$usZ1AeNo!SQSiZe$EJRe&xEGa_@Qvd84$6a9K|34=UPbNhFhHc@eUo;WLC~+{ z?BW*_we9Sp?4GgF3 zx<+cm3nQ!pbj;_5E30K+D5pb&MPQ`^B6A^o>-; z^fsm&XmRHy#s!HGv3_-fDt8Bw{PZzwHCUW^iL^jEwxhU zRmE2ESWg?f%f0z_@89xWLi*1YwFa6e^m`mLM@S*wCIL4(2)i=yB7u~*KybLC=M=SO zO62vbLUvUwT;6?%#qGui{mpf1jnrDNBmULP1bEB&N`SDs#K$KV@_?c#W)_XBz=+8i z*<5kf4Uffy+DHStGLtuxsYQTPvccJAO8kW6P+3)laI08+{cDZP%uG!GjG{_-S?^CU zzb35|CQIPCEC(m`t_?CSf4SS@DuGFTQBi9$!Au9lTCRbpE*w_H7Gybz6wYv6@tCw{ zHmG|T(o#10X!>%pn9gOp?I14>Y^6MhR>J7C^nBO+VsSQ?HLQQw5Ku;PsxO)9TRHHL z^GXkdl8)=F>b*}tutb)@p-%h$vm4aLQZA*^c?_q_RWzC_Hs9*czC?M73jB+%{bs^;ul`rrHvR`2P$83gVrq1^fm;cpmoo zjer=0tMqGX5Sy1)`PH_yC#EY5OHbXlGaxKI$ELdF zl5xOAhA6irU_Z5fPq@TnlXIq3G^y@2Ryoj}0F%_F_J9DBDrD#OWfOUdx~)A}m=(=uXQ{DHkpd_1 znn2pdRzQpJ1dJkhg77JFxr63ay925yZiYK}UFZz96_1^P6Ad7@Y0p$#e;27i)(kL3Rc>{U)T(Zy9uO*5$?+gYf;CiNVdN!R&AxT0PN;$nhlDA6p$3Y@!+<;f7c#~B!!&> z`WuaEo&;E8p8`C>4I<^~KNypWCFK4Fqq{;15~$v726?gsv8ceU9=y&V)Okf-hu=st zuQS-vzDlq2PGSZ8-5WzOw`HslHW!^`M{$6>DU+K{W(dV%WqF?z?#-LiMRSfxE8mLoJ8i~OD>7})nY-;L zgjNFwb@alEs_CFuHUw{`i3Q_8-3VqD&-G$S66wOilwGosc4_$d!S+>a_;{>yl^RZ< zOXGkxduwPKUd9f$mfz`Uc|RAVI~^_WhfYJZ?sT+#08eN|cS6hMTM^gvJ0;QdJJ&_i z?{qYM(ApqJ(+BVb*P(Y_cu6$_4CnBG*Hhy4E&w1`Gx6#WkS-+hxm+;;ednJ1FsK2( zPyfm+>{Kq7p~N~SAV%)O-R>`hqO9J<2rVU|E@BpdL_|e3-1T1Ep@(+Y%jNFgFy$^| zCTBcyckkNd?%puv&b1gJcd+~qB1*R+z9H@l9@@0celpC>QDW;(=ZV5pC;=A|nzWWL zg}a5szSi&qz~gEp0YvP>D>F|l0DLr=S>VwOi}x;V*=@6Zgm1(peZT#Lwg!IT(t(c9 z`~sxs((yY=3A*!KH3{;Zgh9~M_5(ISL*USVfnhao+@-zDXEy?>brhcKu4Fce;f!=y zM;V=2T$zQE(Xr|9UY)&*NW#_Go5JveJ|qd7L<1UU>y3a0G+yU$;YS!vd`ZkFi?dd- z;%rmPDh~?8^Eo8;B;z^1=buBtT{Z9d%k+ezJh~rXT!N>Rj!Pe=?c3d_JsqmbWOB(A z1tq*kB2g&j7p98~d6R-;KHhY$|FD$W6U6{HHIf6suDl#n$f@RTovfx06PiHhlaCXN zfaLprS%pj(YMSboYwrnYs$ZpsdKqk8EiO zO-hLOkL*5B6TIg#od^G9muc<@^Kv*sb_B@74+^P^YTMMv0>&ytdCtDK2ZBhFu+Vt0 zMkE1>w9wj7vZSka!m0YZi|vYk5CD)fNk)buOxn;I}*CTDQ-s zp}cq#ZFg6bnJe7?(so?!9)eE*#>X#nr9pVw)3(=!PgW?h0J>bz}Tepix zgZzt+;hM{qO}ewdr(TYFCHoQO7hpGEzUN?Qc9ST=O`c5=rCaGyhqF4$x8l(&wmM6p zM^wS_ipG|3BIIUwg@Q$2Yh0{?4!R)u@vVkfEZ0BcLwrQ=!IIU-$Bu|c)}B9p><;mW7^tarPbj!4 zu|;DT!pfeZEX96C*C%-PYNbRt-l)(+S)^l;h=GxIt_@dCb+1$4+};vq;A>x(7ZT~Llli@sNbBld-PPh@`tqtH&kr)TAldqq zWNZ<~08ZilX89B+?{O%Mqn6d&2LxG953mvusi@LZ0JDh(Z@zt zEA^QmeafN_J28{Xvm6??(wu)V6w>mKO#0iEo`G;2zMY2TDY2*}Z$o49@r&yiv-0my zZgwIKpjTr|^R6&$oiAgAm*g~}`dmU9U4HUu zrLAL?y8tcvu**;OQF4M-{bBNx60X|ri@<#oXq44cat^{%O3Xp>l^>SIS8|TQS4zk+ zm$!Vz!CyBy=eTEU*I-q@2QbL_8QI|ja zxH2@lN`Ll%TK6l;mTkf0&xYy8(Sx<(1llF~V*TC#GibEYzoP8xteK6bA$oP6Rxs!y z1jsiUK8BYg#Hp;}--cx4cx=t->`aayiHYr>Rt6_(i0#mj&nTO22}VPX(2sAaudvJ) zcQA9wD<*7!)j&b){EX7jT0`t4SMXT{(|Y7~1yS_=5TRAZ-kG#3UP^N#oNc%-l$~wQ zFt+U-lDPUMs*&D&RvA8CLwZ98xX*>27x7PZD%w#Z4tGr}f?;*wOrsjEb3Uh>IbY4| z99C3|;|Cq3J{Njo#h0@pF6A_aomlawkHUla!Y-vM&;XzzE4K6aEbG8QABO?jS8HQQ~NDt$3F3l3YGBex2Yb% z`JD9(mkRbXD*nJkMSRd`55LO@6n{_IB+6C#r~->Ub4sxKY>L09pg!>BK4KU2HE^>7 z`@{J8J*6ck_(^pjp!j!{?V`Y@&nm?ET?LI?Hs7gU2eSUVVLDLI`2)8cS%pA9aOXjZ zPJHh7+;W7^=?MG7m|mbCy6*S|2P#|#hDi03C)XL}h*2n2EMa0XufE$EV8-Vx(qle{ ztb2S4y%x#oqCpKo))+>VH5f?@f=Zc2I?F~e67Gmm%$uhE{S9h}kn{Qj&QfR=o9O;> zjbS5rlraOV>cm41us3GdXO9PH=?@x5*hoUPWH@0_Otc!$UoMP^|1$7D`cJpi<=CuakXJRk^~*SAp*8Al74EVAi;5Zw+PmK5s7d>y$$UCFl`&&XhM8ul z__K}_Q%H#CdZ#aWoU2eTNT~4`*HA|2hH9EjR`sdxcPQj0lO9_-&A7Ms9&dh7X4wQX}LOT)3vWmH_p zHWSOLZJWzzT#0RF1pm>7YT9Oz=x^2!mYNpvH@AH`;ju5c0x6f6qP}P7r>y_!ST(zNx=nQA2@M@vzMbKcL~^=!~;XIHoez z#q|BxVWIw^NJys9?y?g2ton#o>PkL<%_h;~vPPh+q&g4sw9FqXLKIG#MF?C5f2WiK zIdyi9E7+--isVjw$Y>WDg5-qwcLP!k^4vc^lh4gLqI{1DG>&XZPQ)SFpnts{edO-w ze>AaGD%@DTOSO9TdMY|OciSKDbq8~$Cebn_kOBSc5mh2oQT=eaT$W&ME+?D+w3KYR zeq%8}8TEP1>SWdDhpZ#KP#2+vI=~F2!wq%hwtr=EJ5ZtA{_%#YCftNMYW5;Z>OEe8 zb^p~PsRW0~4Jgu?+}Ie##H=}e#Yj`S*6pSZ{0Aj)=~m6pdHY&C_5$N#egT>B%6_oZ zIFZaCv!27d@>kOZCn2Gu;w&_C+Td?aG3#|oMYGVdDoMG($`43|AMFD0-)7)YD4-SN8Rj_lsE+-ET9+8Z@5Au z@`s8VCQzZ?;;e?Ja)p_(iY~du=sT6nrjRi)au`;}CfgT`yqQTB%@jpP!X?nn62~Ts z>mS_^PLys}i@LL~N1bIZbu%U~|M(?9$?eyD!eW-^G{iUUE3jj9TS!$-_C1&nf5h+U z7@Qy%?w$VsDC*n8Z255QT)SXyOdk~gz7j_3zq~<}7JN>>SR$B9Vw+j!ozCL6dvXb? z&|0ppqi28^=%H}x=bsD-$W1}e!hyY!DJ>W4!W&m}hr{=(jz zn10;$8Ke4`v&(h?PJB9-H{*VgcX6>j%%!xcR#{AMkFW2cyb}B13Gu;!HNDXJouM`T z&Icl@Y``x1NoOO-57|cHa6yjad0J8B1mn=ZEFopIK{5Tnb@xec7J4|M*E{mI zkcGshvu29P&*vkme3%aUX@^`}J-i2i_KFqcM@uP)_Xq7nUAUU!Pm_W0dJbUT+pI_ zKvAXcz0?0pQEQ}YT_0T4Ug$py*@O6YmFP*Y7WjO~r2rHwyY5+dNvbF6@>Ztu!_9v< zI&mV6^NU?*YVgWj?n%h(EGPf;YVUQ=J@h0?)pb_!DwV1Ui6<>AbNx^ZcyuoX&P#p6 zw2}q!ay}xQR^gCNm&93?MkTGD$su?Ur08KgA)ieZPUxEYps zfSypVpF(S^yZ^yewwt2PBT{#;H+YoqRjiFCosv@prf$~ggS!5qRW9`twA7IaKv2rJ zjaG+~XQ9VWt#YAABu47)IIsPpj0;5p{Y?6ry_xsCa1Cp`u}+nHjZuxZ;>PW}Yl6&J zcP)^4)6LstCo`!=Zra%xpf6_V^Ed517$9~Q8OxhmdTPK}M%mzyoBEE{gbyQ>t;kK| zr&c;u5f{+Sd2>FKoVLbek&vCfGjJih`(l7XMl%i78@C2N)37Y|n9LQ=BYwIoIZrbU z-wZM~*WIkWy6XPYMaSg1i-`-z&r?A6Hqf)B8Z#D`N|Vn@iw;odXBi) zdjUAnVRDZOM^nr3kb_f^7if@G1{-9NL6P&bl6@@Q3>n1W!QGoS+XJTvZ=IfO*=j!_ zv~_y2bC>gkf2%TW7(Yfcx< zISbpD)V49&Q44CTQ2xFV$cwAU-$yA&-8g!9l~E&o`L^*@ei<;Zkw#3N_?YyTQJiU@ zz5Algw)PTmA)f39_?y+RMwof@WT$RFAvCxop6oLMO$cC^=zidnu40%d?ZW=nj@sD; zJ|}ZO1SfEWq~$_53fl-a5!-EGq@yJO1d&HiFwoI@LJ)L#asc;h;xke01fDb)+7X|a z;5tC0W;Rv0n&vl5?3bH%81^sI@KXp|Q*%q8!iE8xO<@1MKE&G>Xhw3XFPZA=>*?%_Pf7YFf~<{eG; z6Plz+mx0YKlX6}LGSutHK|qMtjJe~Ab`XJxEQ)rpx!c}wLUAP1b+C7^mN-h;jDtgm zQJJtV%5%xqx3c2?Wla}L8Ck}wb%)?7p_D?cT6=D@xlFTF>B+IP_7mbep0sTd1Gec~ z&th3IIL7ycxhyJGwQk{ggg&)cb{!u(c6^o53SGOzFpjwTchs&^@bXI(VG6KGBC(DU z?Gy5DhkdPX9igneY;4uw+_XK1fUYb5_Cz&0MjhJGBlj_iWav=u(VCJWZiu=hGDLQU z0H%o9BvBXCb^F8`3{jUvhRA1$!VrBHLe$kUqdpbYd6uhyVY%4PsHBGs?oo^iOfTl%;F+e16n5*SX@%)0FrQv5G3YLbE91k41p<<$h`cr^Byt^&jP4)20KaLoV zb*@tRiTSr-qM3Be=Rx#sTa9o@6RyEJNAW5Nl8f68bjvIkQEgm}9M$${BR+xfGB-@e zuT7it#dI!9;XbYNX#cp}>qIj8_NcgS9pN`%x9{B_^bOeUEu8`0fD!A*H|cV-9`*9$ zdz#i+)|y9It@(I-P?B2nC|%@^503^d#^Xni1t`YkU&fE04%di#J*XYA z(M{YqTJhw$iJQRr&br_pxkD{X_j(sE3VElD6R%O$&Sm#Bv!YdmBWuiKse@n`4=%;wJX2EO*39`2ke?pY0u5 zW5qv>%nJ`ENbj{$doiQZl0F@?oT`6sf{fU8aBuXY1L{PWp4a;ZV8#e0D`BI_FjzuD zX0v=L6HB+mts3MsG242vQSQd=nBF!WQjq)E7zfqOB4i)m9hc)_dRbkRZr4-Q)#q^=oZIu2yO7Ph7 z6|aOtKIp@?H(a5_(2!6W(w<99tg%;Ro0E?#!OyH*j`bul@g*jDacQzC{R>46H5XyG zKUjvsn=sLjJ0{yT9B;Yr5LB)`LlkS|BSd9cq;GcMI*auCj(bq5SY(GiN~6c^!(D89 zl)DJ9R2QG^UE;G>oX>u0gDO7|fPS|lDHOpc$ipv>9$>jsK0VVbG(6B5JVw7k!TE~f z9kg}SO23>gMt1oF;8KS<3y)fC*&13liV`0iUiM=cdL?n!m42^Rl$L8?vSi40^t0@k zD;k4>a(U`LX%;y&y&W7=SR@X69N0RIk66DE&UtFmISVYeasg)jNky%po-O@Zd1TLa zd9FsA(ot8g9Vq*Bx$H4lvApD2zp{kj*>Wk9Wyo z#%t)xK2k1W)@Hb5%o&(kjY&z%#k^(Y3qipsSJ}HO^gjyu*eSTjj0lPb^;1ho2me61 zY?N9bM=~&=rTSUlNym?st<5^>hms0hmM$w($ygcFF;G{Yx@Y}_R~}rK$mOz7ZYP|a z6ee@nIjQpth;~E(L=Yja5g*oX*u$?fx#?sEqf;?L!8JZ4iFwE+Gv!4+=$LVuCM=tF zO46G6!{`5qnQw^g1wH!PL$=Z`rV8uz-jGk|UYaZkwKgZFi;#b0*^pm+Y;@U=wc3L= zFvoGZbnO>5gqu^guR`^bnYsMAr4RgMdDQ(oiqUW!3X)FAR~m&cNESz z1|v>WadR@iNY_&2!!b_6E!MW4l;_^*+)BeI#4B`E5K44etNjA>t<`5JiZdc5u~1BB zFh68bdo3=TX)wymeX7Il`^U;5e3nHaDSf?ra*3iH105T;Xrn%Klvk-I5;F_Mg}j+a zxCX4K+THk#`X=qvN`E7n#i%1bS~~9jcgz(*<=FFY_ z`CQh+o-}4N)NR%-t;-uO*{_Jxu&u(S?uksYP@rK#G=JtY(At48{!lQlnlxwZ7iHB* zv`*8^U|w_rH;AX_=5zU?{l16Q$P4Oj(UQTu&-*Uyms%HH_x)nyx2;XHmo=wGZm!#; zrPg^_rLUstwj>@`)W{~hZfc!hXN%;e?t9GCF_M3J*%L6!TQ+uuIj>69s2yX=;L&i~ zF*q69Zn&`;WR$xoGTCOHaE0Lsw!L6$V4fgK9&p<>y+RLYyAq_b&M*>rL)y#n8+)3y z;`#`wZNvRA#mZTQYCLLA-%+=_D$VKT1kgalL}3xp+_eNvP)v});Ju~rlDpuj27UNa z9$i>o&he70%y8E&+gIf!qZ(`?;f$}h4=XiPR1OIvwM%cRijj%}5f=#fFo}VWB}RU# z^4)Hq#;zxFQx6k_5B7cMExXpV?>p-oSGn)ljGcR1sn>!L&vgY#99nDV zz|pE;{HNbs(cU!>ZbO9_55<5{J8%rLWTF=`K^CDyZi@gxKBV5_5Y3ix zXnUjm#F}H!iLqDK!YthLPVZ+B$aZ3^Qe~+eAy_mPxOqM|&*ciVbfGayFffYVI6T_Y zh*OD=z}k^&aH%RDTrN!6F(qS87a);cBofihhwLX7h;AIH8m`YU9TWa=G0x_ZBfV|nlGr>b-;j{@=;@530b_k|)BOe&V)r`^i|1Au6-x1+C0 z(I9c(QXxb<6vI(bg-E$4))Ms~UQQr&TaEiR9!frh zNFu~ga%pCI)#{{vrub0-bqo)!JaR~9akm?V z;lQ`s2Z3`Knj2bXrPJsloy(T2b$D#0QIfS*Bq`>@p<_@iCPh#3AOIk%FR1hnoK{PO_|q@=kqys8~Ij6t$UqPw@sGZxuP8< zf<|ty(3blYWE`d+7(Y>=5A@b8MzvY`_Q|t>*ZM`Zhv`k{@2kqaJX!$oGEJ`vj9|HC zPn2AdcnUExL|Ws)Duwf$6RmMsIDygxmJg;B7n9tc{t6{mgfUiO0j=yw1^0;6XnR}H z9!IskM4HiIr>sUxjmvDgGkm)S!*h50}>SREkb#|wL6{0UAfdk z#squWGG}rNU@SJ?#WyMfVE;)}80i@U{UZkZAYVU$1j$!Yj z)b48awN(5qWp>JXj7GkKnaoemUe_Wx;UMmw4Jk}&{KrL}qf263jb!)x? zZT)GTD&^(4{u)1*wbTWmkKB=~a$SFp;T%__XP%2f_Ov9>vQKbUp!FlSpR!Je2Hob9 zuSyz)#kr|m1}CW*GjC?6;Zd^79~CPOz-%w(T7=P#MOa>p9vl2>*LG&5v^eKX&!XMG z!vApH-vQqY1g3OabU~g7pHGVAISFR3clP^jCCrFvDKWySiEmGA1se3{N>xBAmpFke zvlN%$#PnNT|K%2dO2kP2YelVvTYvrN8s%JXwmti>-r)E_elrpu&n_}w-erGiWC@sC zvJPX0{qf(aQ{`yK(C3{ck!$zfMKIIIn?jv4C>cy-4p?4(>0saTnx4!Zcl6JDjHmFf zc_+t*tPqlG0)MG6Z%$KXdy2(S>^Tf7Md}QrlG!0jq)~dt^3uL%g(cHBC0}+9ca#hy zI~JqEfPDzIZLrOQrH&CiyRyP#gfH7%#|MuQwNA|lMP$3w&`+!nv-NLEvo?FXV|us! zuNCgR-sggms_<~2J+ndG!=Q+ekIkn|ObjUqd>6tW%5(UkbPyL3&MQ4oLpnOis`ozq zfbDlnZfP9qv|rhv?ki=|{Gx|X3!G1xVEKd{@v`bEMXl;9^@G>t7D>(1pQuy!`f!Y( zyio2%9{~~u;aUZPgyC!*-UM(A_EHby2rcA>Kyjn)S0lccF^= z#+`esQud*0j{#U~W1Cj+;q{sugb8gWo=O&z>|Y+mwQVl%R(Vx>BMK9v-N&_81#*4u z|NeU!9g`MW=kvKoai5EtFI9USpkEt1v`2&B1q+I1aSehK)@3q*c{7REdf7n)^o>=S zfb)y@Fj9yE1wfH)+^0Pp1P6FJB2Js)UG*b)X=|r88~95vu;dJ_vj`ltjr+AL0lxBb zJ~=<@UFcQ3wXILf2LD#R(vw62E%#->VcXcM%-(3!p>0LGH_+|iH1*7AZRC!+y zhsfsa6?2K1LXm)tp!3`>z5&$SQrDopG7yX7OASHi=abnh$*GKq9yv-7GTZ=FLucI9 zjScJ78E4yT4n4-;O1(RA4X-nLwOkNlV7-p5l?D>dFD7jKZZ3ct;OGJoz$GF}t8@z0 zgNQ4&pi$_wwW83$B56RO3&bKV!67sT5J1Sz8}|iNwv|?$H#1a?XnVHug*UbzTIIqCl4Wmndq9vZYu#?^*llg^-klAr zTqW6+{Sw=iC@dZ*+`JvfwID)=mF`1<*%HE+C40AjSEI!CE~?S)8dC2r^=2BI+XL!O zTj}mDV@PSs$paXNPSlzQ;Bs(4YB?Y*m;;*+1%w5&8aY_nwU8)~TRadyQ-f}iOGA^? z((sGmZqw!l?QK%ne6k9bzoo6Gz@TYQtL%Y6RC^r=ZMm^Qdqt>@lTKDof|7Qetb&=k zQn7Y7d(TvK-itvGLO$=gsS>9t(twWW=CC!uLmSH~QpAZ|V#gM}>bb-y5HA3EiZkZh z!?g<@uD~)Ne?V-ZgvOz*?Xn~^c!uTBp$T~iBIJ_JXhT5AC9ARn?Wx>!!UQT!Duv6D zL~4q55*L`AfaR|Yxx}a2ozl*o&7%ROomY0X#35I^qPxR(SRSoGq9Vr_jywgs10%NM zdb108$n_advlh0wYi53uB1LlI-8*#|ojBjg9!Yl+ z04R|jHt-p$e^Y%Lpw^* zf1jj0W3+AF8~VwlG&Ul>Q4H5-^hh4Vah>RwbbrY)^l#o5x?>Pt-j2d(gDJn!f1pqH zaFOruprkweHZXAzvB+yf_F#FlU|MjBsPG)#xP3h;JfqsXvAmJ!&VX=!DnG~(Zd$f@ zms5PIXf&{6WS1V$z>d|ECQ>^@;3&j47_5jj6UcAeMy2!EQMR+U%Fei3C1f1An#A%3$z!Dp!Yc;)KT1e6SZy>OY-bm3qDowXnUv3n@Pvqqg|t6v##Wr%UL%Lrzx=>P^>(@c}M86vbf`A zvz^B=D{h4&@yM1woJ+HT3Q?qruq^Zz$YW9&y7f4)Of7VAYe3-m*b(OmpN2U;eoAU@ z7u7HgbNuw#HBQ5%nH&>QJ)oH!l{;$^XEidpV~SQN9gpd(o zC*cHxL8@IfVO*|G%H;a^CZ3X!SLkhzoI+998$z}exha}9#yY7eU5bX`Q~KUjGz>>I zG#{SYcd&}hhfz8to?3ZHJaUM1sZDBhT1L^J;QO=$iI>Zn+*C5-y<@sFx-0a196Ptc z#g@kwR2zN!fI26{axXA6!}re)Sr?rP~p3_?y9N^Q_1{UWb=X<^HsSs zE8n=1l4;@(pd8Nb-n$wo2WB46R@pp~QoMNcHffcD-@Lq7+b`eE3$H7`Z_`$ZnMYL| z_iZ~6dKHJQIzxlQZ$DL*R59~IC% zH0_Bp(`4@+L4k<8+d<8tk976P(wr34-a!QQ-=Y0NAlE6}c*ZRt!V4^4${_*iqLu&E zgIVOHKpwgCZrS63{8r()1|hqI>z8joECa3|vsL*cciFaTfLpKPj(zr%ArK6ER%{x! zpA7QPEYx?|Px>vDTId~=Sf%KsvM_X5qLT_8P8W{6IPAlzRX?{ZnhiguEJ|}sS(N>l zvMB#CW$})SwgwMb8vK~_$CSrpKc+lhf1s4BkH@+swu^L3c|1NU+c5$f{8V!j# zhnN{89_W_xpt6l<>k%gv((q$y-4n|Gc5P&3QS3Joy$__jGui%=@hPi7~#QV zYTc`q#->mpbEDb`dV6!bcDSNNStH52`AG6+GoR0~;z_o!S1YG4xOEq6eYNtyOYBF( zeEF|Y8shdNihM{=U#Cc18o>(nL85HMP)s0Sr|fQAsX$VFQ8Ja{XMkrI`z609dmo5= zy#gqkumJ(=Y?b>eS<#4xuUAlbA+16Fn z8XwxfH!3%8k$C?Y8W)J%xA2d zpHxuaZ{1>#f`_CGPg3M9r84k{<4I*-SLhLkZ_uWxbx$eLEm|~_!{lP4w+9>@r)OG& zHtb_umbn@%oo9%rX!66@6hNqO#!xd&3#D$~y)%GjqVhq2tlYVFN zxOTHeac}!IIyA7yCr^1FN11fIOF@CTq|$+l`nq>1(w3LkJ+18CFRwX3Ao{dow1pHP zkehp289pL8e{MS-5`V}tzgyY4TV~yRx1zVn*xEt7dyljs9`|bRQFgb7?$zuN&vTB3 z`+1MjIplUfc=TRnySP{yg(o2%zfW==zfUF}r|0J3^WI)LLB(fbFLHc^mC(L2rwA6B;S66XY}A7;<$_lakOZbM6ZMsl0_j7&Dw(5oLFqG}robW^p!WolU{ek0|YN!BDz^Ms)BI zrRO%c5kc!}-NzJ(Kpb7(mkq-MbrPXCI@F0YAn=etBO1!zElHZvO``x5$PitHX(vkkNtpJ_X%akF70lgtc#tWtvschD|Fklm&PF9!}R0zd$cZ}A1_bo;LCK~ zLM_sl=!+;Jy4UB6E2nBcS4dx@pYC>0+ZNTj=afx*t3RkZiV}FddesP?B;L@tkt%j=+@TIpxlCt5S~Vl=Bw? zR1U2BlZv(@uyucu(le_u3ZGQ;{XwtWXbN!MXnk4Ty4$-0TsLBqPbxj5F2}%}#ix`_ zJ3Y@J7oSoZ^uYM@DFtQBtKrY5C>^sgY!oC;)Wom=6Wzu05UWzGz-6o<4UhSukN^lTJ|ldG|dKRi)x> zpU1_DcpDYK;@KCJ=nnCWZZX-jdgs()eeR3O&9{ip(Xkw#`=YYNIYUx4D0>DpH|uoM zM`uX(Y+r}{te4K8lq>l)D*BKmSK^K(&CCqlOwozq*QBlaAP)YzvTdi#9HiT@UsrZD z%b1aeRDMa>vEP=;J^~wI&zc=cwIupW3UI0I^SUj)U#9cAq&c9u=@VI! zPcSYT9hkP_QP_8=BSNAm%)?D@ z@%nd^&c3P^uYZ>9D?O5&d0d%ih{CqU>N| z2G*@erIAA5mtmyM&ntts)`&JguN5~&1l9CWY&xy$fy}Vs2$Dt zL3o-${^9p1c_+Pppw!9lNt?hUKK_src+&Hcl6XIqG>J!C{1GLaq~{_@%zB;{3miqZdE+A>M({GThaJ`tl^rR;y9Y&{^JQ7Jn~!(R}_rp!9Wi9{+=W+K7y zzjSkV$l~r_Q6I0&gcEoFN*TFLY9h%X{572~T2 zI}GiOAs;Ez*%V+(5*hPRGeb27WG4PjiH1LsZK?5lOoabVY3*382!D*N5N%%X4Vm>z ztWd}?jLY9ETQp%@s3nGo|9fS7z2wAmEBNFNtV>L9$$FZ6VlJZB0iyb}M z<@L$u6w_CVxhrOtfxceqK5o6TnZ4WUyXHHG;vKogE{drD#GIic+G|7B52}qpgC*@3 zXWp?B(lhUEjCm*Tl4!6O#Up>OoV_n>O>|B6a_#JKweBC3joY+aeKfJW=T@{F7YJEv znx_}2!jN)>KT)E(q`5-ow0@#sc=ig1MA{XUlr;H?vZp2Vq=|1Xw7smi=_g8CcNMeq z|4Z4jy9QVjr4jIT|4Zo_t_fnHoBy~Dx=A;3|0KhWTzPjF&29y4J^icfh9$rBPYQ;t zh3?c#8`sKJ@}HFELse2qM6N$|K^ycDw81OEs-G(L`?W`XEd82$GZEvNiP>Z}l|i|5 ze0~wA4@uP5Ug|!-cn|wGauVbTf2tV60eQmf)8N^p#7sUnm&k%}UM@(o^iyTznB=m= zU^0HHOrEX~Cd1{j^Ua0%j6FnsLaqB}%1@8_h{LjuKi}*iUO~|QS#e=r5H2OLk2p^xlt@nsHkP#jMd)w{D*Z4MA+Mlh1r6q{bpDWQlp##Y# z=97hjJt}!7ohh1ZupJA7ey-g8!qtXBpJoee?9e_E^4Y|Hf$g{@o=fHzt(8-yLY{Uc zgbt&hD+80E7soHbrGkkAK+1xuL0Fd=3D!IwrdnePV_+hmcFmY7*F=dT0AwF13&`V}|{% zWrjTIXi3RekxZH;Yv$v6BY=vO;r9PfDR_Ld;_E_GJVqrvIvDE2e*5QA57twJ7AaC9WTI%uxHI$$UCFMJ~-{d6>cdQ$_ud6wn#-%*WPQY0z^gW>uc%@i zRUS<=>unCTOT{YOS>8)gO8GAs>4LFPFjGb`XV_6D3tgGY|M9EIf#xq-ch|TviG&W{8`6`_3L87th4!5o#t7 z`A&jOn;R4*e1* zknQ!) znBnh#9(ZB)N;Y>j+i6(;@}Th;b4YB#-woeFm+5g_AMjmq*$2mr<5r;?Tgy)r^(`T* z(P>u9dRH==L@tbSE-!Ibayzt$k{xsWuPOyD-p?aKpgfEk8#9_I33AfRLO6lm^Z*MW zco@O{|ARc-1CZ2HlC9YC{Qo_Cxv~;eXqYS%upP7;C!O6O?w5YT;y+7d@h`DNnAi^| zDTRi?uxqg7RQ^lwQ+aWsoumVtM}*!oRzx1X=Y3=;`ponyrMoC^3G6winW@= z)WXaRH=;uh?WDFo9}Gm8)K+yqxu38LrAncP$|V|C&zu?F{N9D8F$ z&p)UOJqKZX9-hl06Mw}k*(D!vxqSW=J7YvaKuLO&)>{y}hCIy!50++Op5K74@&BFY z_hUY3ws~_pJ(ET@?h+S(OL0|v>*6d@bysuwD+Oa}(U?i+3q?CjL0uvHu{pqX;u)^p zatlRq3CXGNG_KC3r)QDFo6anx%mVuY|5IB*yaY!F2XD8NQd)dsaHoO#MT6J07vctT zi8wW+XIwu*iA1{cWHg9Znl_2z4fGkyj+ao_RD6^dP3?lsI7FNs?8L|Vm;G3){c8jI9-m*! zKzZ5EiO&r#|G7U2KTl}O-YiOpQCPg(Ax3-zN+@pgnKalYt<+daB*21rp)w}GD_;_B$5|r4MLg$l_AlT z7JdxEF1VZ5bRpAyeap)9FGr+F3WL+m36G>IwWL(JKIf7wezvnCM>-69fgZ;U=5|VC z4S@50$6pUM?pl*hIyeFofsVGY$qRGTyJA>nwO0I5$SvfjDGW)O;>Y=Ek-mi*m8-KR zY&b8)0TPqR5m$h zB5jnv%*3O>Ge{^gTgYb(xMkB(xYIMnRTG~S$s+m*zg$u>Q^@g`@IOPlb19^a$O1S& zCsSrf?31Oq5*@4^()ho{bYR6vk0k1Hxr58P+-5r<>>JYS9UWP~HT(?HB`FpUN>Jla z4#efIaiBP_^b?j&^PCO&T7DTR!O5hQQsJ+D6ndvd^Ad?t#oyDDxPGwC@r zg)hNz8Orkf$Q5k=pW$EI`eL%^FLV_0b~juOt9uKClSbX)kJk`_xz3DR2L+)GuK$OKtS4>k^z;{C5t)Bd$!{s02ZJEyH&F%uC`HWf2WeeTnDt9q4lcd>`i-5xc z9Gx1u;f5Qu$AW03ao!#;fBU6wyLDs?&HDF)jGJDd-Mubk>5_9CD4+D-aKa;h(x>g((2?;lJJP7lqPqsf_}z6tj730%`$hQ(+GXA5fNrj7fwhu8hBc{7fB;B1lqfA3Ns z!%JI-wL;)89VZGdLjSL%i)WEUDOgL62D@Z4pQmBKjzv^8EIAtNlC77rCG(p0%yFWF zmi#ijee`rNI3#?Rt+!j<55#iu^2gQ43pREH0|>`Pw$3Mu=r73@;=)6Dc@Ipw$P4;z z)vg91Z%a~e!FJZP0pNie6c3gJq;tz35zsdl%qA>JfP>1%IB;{-IB+#j9YM6j(q&I^%#$4ZMWu3=ic46-O2bhvnTH_XluT7CIhhFaloHzKXZD^=a84 zWR+VM`>k9oPZFRCEf<2Q2PKI7#g2mdM35-;jp#jhYi|xjOP3(vjtl3`ayAIn^!DBp zV_pTy_H69bt_8OxZq6*EGk_Z}c%=eJCy~aweTbr}Oa$kS$Ic()6cTFy3lrH}w^s`W zQmA~>1aCN5ZjTlY?%g9O(Ej$3U@UpbYemlK1kcOUULec1 zf9&>PvTP-sC0jjcx$=O&LQj^B0c_~hj2vnM?o)zRD%m_~JALgQ*Qs^d_1uo`tJ zER8x8ibfp@Q=<;8O{0Dp8WpeGuYFi9jhZ|+v4ld!n+^u1Q1O=7suU{T5f4_Oy2Dba z?obq}J4}V@UYkOptvk|Rw^a+KZ+OL_UV_2t^3oX!@=(3fukBh{1q!cTiE1b#>922G zRT&BY@?N9DFWUeK-KfK&v0|uw>2E)@vf39`t`pVJst_5BZVhN4*~<6B0U*V0e29qK zwlknH+G`<>H+q0X6eC9lckh?w=wjciQxn;ht7yw9&6lK32XR(^hU7qU^V ze5J>g945Zx(*RAPEhoJ`F1KDsF~U`ioQ&?&f|-x9Vg>@zEFqXk2{1+bC{ege4``y~ znkf`!9Odhgllu;8@0UXqOF8MX<;2lb(Cha~N-1kyModD=eM(B@j%u{qr=Z-j?{*ZL ztw!#M-mC>Pz-7hygDf}KYebxPw8mEDnCM>pj!jzwx>sN2l7t~Z&wb<$tx*eRuG4C% zbDA0`oWnumj#Y;gw7`3B-YM|{*_hl~d{Jch)X0mPI;GYNqVc{O(B1o_)m=(=+_$e?#$zT|-utChUSi$-4NY>gjx^)` z<}RtV7gz5uiEg*A-f3_!QT-C5Lw2ekyjioU#`s&DJk-d8(uyg#{NV0`HoY{~7f&AA zw8wrj0KSjo$-b5f`!q$e6~QmMdDs|v&V+|>!6;{lLQC!(wwFvyK$%ZslUCI-9~$2r zNkC9;^-1rP-)LLIg1h;!V2tva$b$s#xN6(al4u=cC9K{g2qn!6JOyG&^tl9bUSE0YwCZosaG zXKx!{rKG?WU5N_kGz3zRzPqw(_sV34fh90XuIPJLNeMDnR}LIp@t4ga-Ew0YnN0!* zVHnFGfynG`sZD`k3z~B;h(B?vbBD3$2{kg;)TWJ96hetmmFfcUf9ZK1L4kAGO}lI} zI|9xj7Rm1J2r?F75y_=)QF89U9I$0(4-MG#&@w^c{FdGJlMy^YDdr=)S_3G>6zC62 z;sP*o9%<`!lLG<^Tld>fM!`bV?H5{yLaN)3vL1@U@SOqmP?S{ei(RxU$uFKecjnI1 z7ZVrnJAXWJ@mym3o|6|SRwp){xz}bB?IWHPw>H{OhVWz@Pf+So8A^^L(l7$aR7wbR z@j#FLqoerIZEECdbhjn|@UcNS@?4AFQvD;(wJqD%dgLL)cI~!1YSpk|GZtZQ?9J%K zWjAJOV@rP#rj@)Fz#9(lfRd3+AALQaFKi&QjHE5q8bHWFYD~7 zt-y=lLcXkbK(bp%&h){f9u8w`UcSW;k7yr|g?JpOT$N=ZmVnfXY9CY7x>qXEJ+fT9 zPv=cwB_*t8H`Wo#4o%ri~TS225+7Iw*^sz`%E$z=Dahw37UZZT$gK2KL zE~8$n;10YN7{zMy>RzjC)1|z(n@~a9o_*Tr$|B?xAm^H`a)v1GH0W2x?v$ocFREdH z8%R3ykSvv@b~BH=DK4rVSLOYyb8t$XoFEL&LVo{RnrE*>g3#+MhZ&Z+Z zutOla^MciVqq6Hj2v(OE_eSMlyY!5UqEMSijde;FabZW_q-@#a+EErA;$h=ppeO@= zAqSA$lM9(*f>5-QQyBz9E`4RT=`HJEn^16B_f{pUqg7&kwA?lffD>6wnX;{K46%!? zoyUEzW_03M5+Zb1R71lYxV2|LdJg2}mfJu*rJ(!8Hc*;lHUB8AUy<3TP;$$wNG4>+WC1yDe9Cv1z zD*?)f&Pxha7u9}~5!lr$ON!PT6)eeGx99tS;!2oPSrlfi*L^@~JR%*K7H9VdDPtnZ z-S5iS&CTZrB~GDya9vU;A5z*!B}$=u3iA9RW$fPCz(a{@h!UQqgN7ZAQW@Esv4&@r z#(p^fO}QdIs|=0RvLZgK+&U?19P_Ml{M6dw7?PNeC{3fXNDQRwR2u2S1lj{)dei8imloCCJ6oiDqt_Nt?8|wlR1%wZt4XEsOZAimWDzXB3 zxU~LkE%DVI=zd-SK9KEHscwt{-Onp~4oev561TrVfo?5wo5#6dkT}l$!n(w{UsT#g zB#LwC-u;Wp=tWtslkKZQUz9TD1HR-AbEzJYf|f5y6y}l|eu=`|+Ev3ZNgU;VXenpAy7jA|sMBf1+`igSkh(rT2xI6!fa{FWrOZHck<7Z_(zkNkHchB0+ZzMIp zskBWq=+0jNATASLUXV%6BkPqVAhi>><%O!;O=1TC+oiBObRkPPeB{8Vkdp?|+J>uT;R3sq@r2X>T<8?64OIo=1eb=G8 zkM4V^;^F&BW2X!i546$WSGxOaWupNG0D1?G$a)U>zJhk)HPytEbo@YR>XSh_;M;zv zL|cS!qnlB>L;9i8HZI#;4N3A3mB~}JBFS{>_@Q$8jEv#u?<>(ZvFUVi_+}9M`-&_R zgQFU4_U|jF@2aKE{(a@_-O_C~1#W*xmF1Gm)@AYZA1Rx}#SsD__Uym8jv4Tx?Ad=; zHpPUP60QmC)t@Mv4vA;hHRqqNLo5z}l)C?+M4QndBvULtznHM5VAQ2e=PBJ!H?H`T|lDpx5}Xjc|?T_{@*EE z4oG0|;fMd;?Zd4++5c2FIbkKG3dyGZ165tro^=0%#MKu6u;ywD)Q0_k>ku@33H$qx zN;Izhid2qYOrB2^(sSudGM_FYj7nyv7c$9WjvS0Z4c8VEtuF|Y zCIm$U!}T@BOJr(3Ut_#<$5TIZ=fdc&o(`5jlc)fNxcoCJK&eqKbJzPbiEB`Pwk|a& zKbNQmg=F|&l`WmJSPFRGf2D(;9of6*BWmAXtXb?wr*5t*y<}m3hKED{}ufEiMe(@eg1X=4(FcN^r{{gA2wVP4GE)%={ zLjfLac()HtcJXPs2-D$dfQnY`{cA*1>i3F|5ntSGC7?0j2?aWrAwFiOaxW@R`!~Tr+Qsi zSC^_kubefDS9AF*FIJCO|5H`_k&!MKN#p!taW zF_+Ay=jm+8{tNx~MxnTnS~PMq^g$Jf!3)#Hg}m8mq!zQux%70Q)1Xf=P(*yEK%bn> z&CO@bYla0@RfwzV1=BQUi^ciESa-L;u*&5xGZOgci>84VsD(K*iy<2Lskr`gMSV>e zQax$To7t3^onExTZ1r0m<}>6iqwF*7a~S@?{&wVoJy$d~#FBgCy~;-QwXw zgVS|qDK=_v9E)a@e?w6vso=3GpEx&pJaPQ4W5*{aPoF)RIB|ab;;HzuYxugNN`lvD zufeauX4xhDp`yw-cwHZNM5p~xq`?TyD`vQdvyT~s*!aN31=yYkAXS}4JRX0r)4&+> z2bqNZRv`S3>k zk^k>ba}kz5WsGBcyU{P9PN#HerhI@ zyULKojP|CfbSj-Unc+%in!KMAxx>VKKKCd_C+Cg!b9mYKX^};2k9ogRf=qH<68+TF z`-|Sr+Ux$HkIs01&*CG2%F&hfO!~6X&b!9%!J`TGq;yq&x8LH+=NIv%qIs=&j|oVA z6H})Be*~<7Yav!X41Op0<^iHKk`!4B}jvv@`3=@*XSqiO>#qB}P`fn@Jm@8-0 zz25JbE4LjMpRlYjv%kXf{*IzbH_%fb@?D9TPVQca6=88V0uL$aG#Sg|?J|V|K>4MEq%UM@nt6OU@E0zVZfDt_8P)fw3`z*g)&Em*M&Z z$e1z>ySOIh{4N~-LOxsa)AU1vMvEtT^N|I!P&896PP=|4nJ$$&ZG-j7ghRGiu!gryfH>kBSN>8707E11oQV2^<-gB8a z_ms6UgXX2t@$f-z>L%&TD54c^^4m(!1$S%W6KF*|@1Pa&?O7`&Dy>giulR7v0zm)&d_2KOe%^hsMgM%?FX zZ{`&V&}=cz|39;ll!miskTLaXQ>{#UZ;!smkv);RB8gxh{L2lp#7&kLbo(z#GMsU! zzde&*Kn2nCtl1t@NsauzVrdUo5tqy4`mrE9@OYt+n@(fOOv-R)AiN&ZP0Sk74*Ex= z$*%daOgN{%l*T#PWICAl`pF6e!Tz{M2(s7W)`STz1M)=T<*T%!gzs)pWd`Ke@2Fre zToC@A?ch2|=_bA%53NciE6!l)C|8glgk1lAM6E3xYdur343wlrZ7ggbshG&6Op#qZ z#WAzFlzduQnV6Kk^SYVS>!)H@m=BgH0I|&s*T@pi*t;Q|KthBL1NsGLkG&CyEp9N$*dY1PG2 zzrw}BBq~UuciBd*525eL^gAdjpmS8f*>R7OG?c>Pnd=ciFB9ByQ)Lwm)dO9 z)~28563}F9MCO~B&BZtydC7!Xb|#NFe@|A$?pC7jcb7Z~&sbeLe3;~rnaK7Z4Mt1A zAS6Lz_=VDXOb-+NhYGd_FCno^Ez@qKo<@Q@~bkR}arz9o)zBJ_!=9J=yI{KDQ zqk1d-Mn#=&alarXEpo~+5R3LSn6WOmih!fuBQ#+mA&zF=#pd$xrdX~iKa2*H| zkhbI}<5sI$K|gbHN^$Qmpb5L&fN%dJk}7(sfsi}lBukgL6W0A>cH$zISugHRIIFb0 zI6sn9QBs@rx4RrLMg_GqJ~5Eh$)$2qqW3tLtb9_k;IvMBD-f;(5aH zREGEtMLRU0PC4b2Q?#qAoWMNx+r2GzT1pR+y5j)iwAtE)6#*iZIdTLj^L#+n5~?EM z0~c511HBnEEXK0;1pWvC*>vQ>mRI<-#k98Y7mR0~_51yaDSlcj_ z=PAGxTf)D+w03IW-iJaQN_4EZp08gwwdcjCliA%j(3xs zkYnlc`+csz>lSBc`RQ z_&KCY@T5@Y%%V0+DjEVQ(bk<>CWz1CEb)B#dTg_L%Bk9kYJA#ZF=|y)czX7>&_RP! zl%HSf>2s@genquiSmQjs#Ey#g0f>D%hk;026xFWAJC@aJR|SqIeESY;(yUV#pkOiZ zuOApamla2y!*rf{?ABbsvT%iF7e4_!5}C7BHijoMS#6@SI5J0jSLhf@rjz+(B9*+_ z93a}h7r0pxnOUul+pcn3%wS`-&gOf93fk6^*^A26SfZq{ELp6VsIk~d87;`=p|WB0 z{#2GmW>>$AbW)VC+%7A`HvdSSd+qc1O$>>vng zRyLHsxv&jt8e0Rg4Y=S~5uGc5;IOT4QVk>x#VX2*c?+vFZeT(sYK)Bcz{PzufQ}?f zExMZC6*}R&M~W9A+tuQo4rK)fLNGobdRkj>@UvZy0ZBn z_D)^k_D&SD?(p5V9?)jk!nknfZ5_$R>z3_h%2gP2b-NA)Z_q_aJ#UT9x7BkR_LIPs zMa!$`y^E3uvUSDk3R!T&nOyP&X&^0EWRhuaeG$R5u89duFj4e$28^veLW_&2Mnbpk zj5&e|U2e&>&0Qv%B^T9ps!F@IOxxrmv5Gy^j?J_8M8C;gy=3_i?mLA&@S;pr=$y4w z09B#T2#KOUE-+WKCTt^u#878Li_l^S2SDeBE$#up$!?>-WJf-djk6XCnoIWwD&yJp4!w|zfOAl4YwAIeuIh>j6VfbN_#UvxmZ;<$6cO7W<1r>g8a zNyQPZT9iG}1=XKdHaWFWT4_Fk+V^;zQ}Pyo*4(PKPfaiGLq#X4#2==W!Sz}7z8zCt znZp1dB?y<*RliyBlp(Yn^_H_@&#HzpofWhPZ^tK;Tj66kNAWr!=#IU%0|IVmm@ z$q{_c0z*LS?g4_Vc7t|zRosCkCYv~N&0;I=cp~mUr>$FL?vHAiIWae8G%+-9DjICQ;82d z&KfH~O^~l^pBm(DK3`NrP;7t4mVkm{#5?iK^9z(qmNmhQ^C1~qjR-{Z7z?3Qt5IkpU9v7#rcOXxkr2X08oN-| zcMX;_*+>bok2FGJpAa_Ect|80sZUrNsZUHBiG)C3+m2}<1lUL=#XMu_w1Ab^#jIT| zfJ&iRx|0gdv0uE?X%uLP`D%8qEUwXeeYhxc=-ah0IFy z(NOJ-b+EIv?Rej)ohiT-e-cH5`!1R`?0p1dYs2>#PQ>0v<{4tLH*NKi+Lr0F)$LsZ zZ#6nNDn~Y*r&YZz-{esaDzA39JewJE%hgzR-MR8)(fxajDr zwrRmdp9HK|L|4Po5yRLtPoRY`Dr;AQkLukiL?v1vy@9wFM;<8VVvn~mju ziQ{7XB@pmAfg_}}<`Yh|D2=H=TYl@45? zy}TyYHl6m8jByBrEeeMM%vZEFG^~PVf&=dsgICyGfj4iYcwAbT%#fSe?)>0VA^1n4yi{ZAyXCTka|R_ z-6G5(G*)6lSHa1ExEb-sr=`{H(||vaOc;4qiY^tk3P#c}^9c~@ zD}+hvDXi0RRI+($PSt*D0XTO!YUDurlIza%YKBKn@*$KYIAD_DynLf@Ck*b*gc&zHfY zkdOo?dMVvr6}p>BB`DmF%n?WI03q{bsd1w%WIFk!uShGJ$6R_rnzP({iSYiyG!R9k z3%?+(?G{rPCM>=v&0Qcm^%53eloqZM6N@0?7fE5V${dJ@Ibypui;h?h=axglz-gBj zj7d6XC_elbHi|a_#e3DrH>4T!rkZS&%VY9N|B#tKni-((H-v$gr07bqF~CxCUXo%P z%TLLHr{^W9YkNSRo+lYvja33<3iASWKf-FH7PnSB=q0J_W);Bf_oVsD0>UhEv%V*x zZP^r4B{RdO)yS8&=6e!~+QLubo^)%d9v;9ptkZgY)aBxW_++N#Fmgioowo~vrs}h1 zg7tc%@iUR{OLLZ-RO?vCpzljHjuz4dg9u}yB0rF3Y9Y?Jg6n<<>orV(J z$>5n^E5gvAsE%Cc5N9OnZB`Jz$*?zK($+>ge0QM@#nNlsah4X(#5m8;d`kV75jFf# zQ2Hhp#{LxgTpESLC>o*WB-jsI582~qn)qMYJbm|;X)x+oQIj_gq$9|(9jQ*6F zNE^o!qXaC0U3?edKnb)aP6{d$7NXwZR)6Do+buf|4nYkY4-}C`z2nP=KLH0D13j;?Yx8cALS-gXEf};tX$B7i#ZlgF5 z%`}cgXP%?`k^PxGh|L0?{lV}-KpMHDnUNH91kA3BoKFE zB$bE8k|U)cnJf6hQ1ZypJTQ~F(#U1Vg+ypcC9gD%x|R#jWIWe0WVY-a$!CTV`9xha z-#1{tM4$@3Wdk@0M-}uX);}#bKAgssU~92;@H!WvI(o^6pO)k9HMqlK+lM4o;Q3!V zDl&x~qNT64703;`?ur^m1B0Ys2hPokDr%>GuaU#f9-n^x;2i3~HdeeLrPvk_yN{av zSHkpgWe*u9{=#Q`p;H0Lmd@mhrJ4<;j*Nzf!aq2DFzhfRDCM5;AuMcxukUn8o2w^I zC+T>jMH_TNT6S!YL1fR4Lb5>kQTWtEv|_&wRvnkb++wB^<4E!tjwtKRt~9MWrNB25 ze%GRS;Xc@EmZUx)8i_PoJJh6qK~bxdZ#9(|xSfEZ?=PfWe!W1P?aP~4GC(h7owd2q zV3%57YI|NTzx;Ae#y@t+_@J2|$)?BXVLQG49gD00BNZY~`DNfcE`zs#*j_n(Y zRh{Hxjttk|BdMab6V`7PK^~6j9;RPdNL2+td*mVCUfaI*h{a<1;?xCI$3CjgGV|OD zm{1^ApFA9Z$Xgt~L@YqHb7*3Of$;5lT~)DdLRInm5jFe((PRyR^nO1M7_XsFF-yRS z-Q&1sxT@gr1e6C$*#3>|P~TW~u!ZO#Ok9$!xnZ+EIhZsDY?;d4=TF_jU!&H*Oww+Y=O`SNl_?ZieFNagqbpERTnVNO6s)hf}y`IsnfW* zi{4ZyEsXKWOaD?t6}`QKez=hDCn^^%W_HFA9{rlmWG4JxJP8egy|fet=locV|FJJ9 ziMefQF|On(dh5wY119#FJua!!qh)~pBN23mi6|Eai^a8U7n}6e-hcYAFyCzbmWTj> zwSq!6{gOg{_54`Oo)%3r1|>fsU$m>PjP)zu?{e({q;E{(6trVY2za^9l5w?t2NqKF zZDzBAK^!gs=>BJe>M;x8x4~+CzgqQ!R)`pqXRjR#{M(W$c(;ME2PQY#d?`TxstB%* zLNs$iY|>YiLXrAE%c_`@%k+(fa-(>RGk+w znO@|gH2ohGVc_F58z1ymo#>all(55FHKMW*6Xi$PUB^AofjTJK@6q)fv(EOSTh60b ziwFh*$t?HTBWu#@YqxbR9%~v*rjT@jk4&ihv77^s&gVR3Scl00o>`E~jAZ*M-*Le7 zyw6t^JeT>P++)!LqQ^;(ysYs3gOe2&=pE(YNB^#*ijZ5bpXrjOoyjq2Hg&8pZIH|l z?T&rwYUHMxEpF_pC6AEkl}V%*nMcrDKbtgjvEfneW^`aa<&;yjYpa}DU;Opn7CVuv z2RZd|fN|Pv?ZS$HF?{8bk$f`c`GBgS5xF$uj1sGBtj@@NQvrB8V)~P&u$YhVwXIIos?X!oG@JydQt}4omIxX$K!TKaGgb7xz?awV*4`P&m(N25)Xsf7382HA#&?Y*Q-G=-IC!V3L}skjj#UGa zJ|vUHAa4-JP3K|`s}5#{c8G8cFA zCHv2FJeF2$#kogLUh*-^A$jCDBUo2uQz%`K+O%sUyWI8Pj@xOmP6k)Y%*A1eDOF=K+d7>D<}p=SJ!hRZ zR1M>fREAv4KKTnBXK)FvZrNtLgf>7@;7Y?Br4Gs@K*Qf3~-!1dqCYjvGki4TL6tXo99f z<#wxiGk^@fGBH$Oa>l&)^5n%A+=S4-nZJ}`YnNKcERHx`&f9$aO8|8b<*s{-57}FV z?Ol1{Z9T?0bf_g#m!63>M?sHn7@M25r4(myDOF=_}WF9?Ja)w`$v@we80Ow`;bBa1G zY&5U1Dds+}Tft%_xAV{|E~dxgj$<1*v(Ze=ZThhnRR4^GE3OV3=(fUg^?1h>JB`*x z{BWZGN+?k-QV&zZH>AlNL9mGLk@X$48OE!uWGm;B`J>s)$dRK3+g}iHa=XR3-_SSM z1y&pMH7=n#+KBab^qFD6vC0DUz7SE<)R(yM=SQi#U~Ff4lqDm*S5_DEWTerdzKold zL+M9po_%Ecm^ddNIb@&n8kG{{zZ%T9^ySVj+6%EVxfoR13*U*T^SxN%$t0s%j$`DC z>R}{CpDI9$b}40FsoKGcd^FM5Uyylq2~wC&J6$`!A}>cyn>Qgv7POGiSu`|@>L4PD>F_n(GO~-M}`WZ*o3F&E!0{{f`UE0 z7q6iF9;CKKPA0VtX(N%Trj3BPX~_uFM3&S{Edad-jY#ch%M0=FC9i6pS~j1ZuuI?G z47g+MCFY56dDg=EbkM`dt2?z?d38A^9%4iU@!`HUFPo~`C_cRQEN$3_L~J2bc0ym# zhxb5GW|PC{-9~G^28kx8F4D49{4^I!hZq9fk5hISq_#3MGF!VY_^%(rMjWEXttZHt zf(@8C&j?`yqSTUHnXS&%MuW$}fzh`o(-^8CX^>H~%aKt$M{G`XR&}yXEZQB1fGqIO z$v`KhO}qn`oEx28t?u2NfhUHAXWSDolqx$fRJ`n_2GcfPw2<+_#&_6wnI9@%E=;6G zkVY+Ow_=MHV7BRBhQ@j4q8YS}l!c)pkLN}${Yq%4ZgtJ1i$k{J3xBAY<7P7~*o zq@jhBvN*aBn-$tFk>95PCOWp3M(2icY}q<8DW-h0bWre(At1*Ci8Gauh)18Tg$_>| z^h0Ts&<6Ddi%Zl7$tXwP+*}KaXefUH1%iscbR{Zjf~UL!G1QklGD7Y72`8|T^qu?4H5gc8x&F3u%Onw^_ZngNkJnbz z%$ir7+KP!~H?f>8l4>xWGHj8=MF5*IqbwI_i%8vHK5Kp$>OPxO!OR^JZOa$c2qW6~ zHmwk7o5+?}F-s4{mMD;M#8V`ES1eyEn(&P>``rjj5z3mwS(XdK4|+pieiBmLfb|=W z$a0oZpheX#uN4FyeyY^gtqJc`;o_loZA=)HkQA?N=?qhfbEMP>L$^`pf2mtkFM`ap zkRuSq(1B9dvPBH!P;-FQ(K%IW4ltoIKaw6!WOF9BUtyoEM*V!7kAYPjpc!kQy^9us zQOH$l@KE9^9H~vIpwR_(nrABxCAiib7B__ATIbelL*u4UR6I(*K#(CZY!1Xp52wwJ zLVE!|y0?n4U;I>S*tRRoQ;jgvc*Y!2FhYk~>B}vUYu!5VW$cm{yv_qLpR=Xr(z+ zT4@%9R@N8ON=z(Ti3va}u~2CxCJ3#x6w^wpShUhA0Ijr!N-M2`(8`8lTG_C=NfdpB z%Ir+nxntkkzuC7+I zj|opRO!YlxqOS{`3@9y)^L>c(bS)kzB{k@*)8~Yt2H8a-Q4JNU%9+un+G8P{VUyvg zalol+vJht_%$~VyZ72z|gsijAsF^m%ic+}xY@;>AXv*0eHisWg0T%YnuMY_e#OC`} ztqqsWsd8!Gy4LV3y12x7`>Ykyi;3P|*A^1_Q26@o?OTOlqH{uJqI1G#BJww%vu;Bu z{$}gMwrdeN8||NNY_vaAHrg);8=V&_8=V(68_`*GUZ`i0RYl90==|x%MCXUfMCS{_ zLG5uHT`Lq3bF`ftugho>7G9S)U^4hzCY7lg`27lh45bQWC@>RDuUF5pab z(R5>?i$Z0hiv(e!i$i6ii$!3fi$i51tJ4K%qD!V56I~K26I~(*6I~iA6I~iM6H(iN zOV@RTQVnT27d-t?I44~`-8kv;P&w&xK{)9hp>onY!saCEF7ysee-o#>5R1bkLfw@_ z*tYuSISV%Zd)DBTh!ZeF`U(+%;T4=iE7t@T zYqk;NX#l{1$e-onaOx)^8926Lcb8)z%$2T{tHqQ|a=RQ0cBxm620t zYDWX&d(!2OsgaLJk<+wPP~RNMCP|6dLf<`oW|>;hs2X`hil~7pzxBEPqb6@g2*4ka zX3i-S@T=9xMwq}(8Ds@(#H|mHUc^}g^K`) z{*O!DJ3b9WDlN3VdAJcQ~X|fOO`_CjyqF7|M3kZYYXF=o4i~(qx*AJ|`~z zM8J~Nf!>j%^VG-_5{lGLOVNZ3gC;E#U{6SB&m5q584DN_u1`p?xP#SW$+I4LQoS$8C844)XlABO ze@a@pD%4Gfn)sBox-sy@g9)CNW-YdvfX2)dKAx7AEDseQI5wY_R@RkhyE#J6nz%tS z?wRn(`I)fD`I)fE`A%%Wvr=?Zb5R7^#x(zDX0 zZGovup3!)2%`FlX00pKg-V#&*Yup`i)BxzfsxNi##S*)wWBn!3h<$^ zurNEunn44m-Ir-M1x-cS#Bm?q<`6w6MQcTYNYY^PKPRp0sjA6OYBQhy=`uUD#zt=i zd>kVd?hs;s98M>=z96APwNP*|o%0LQ-1&j4UHb?f3sz{`ee9p&?imH@O)j6v=5xoB zd8@k(gy;S$)F zgdwmmOX#2|o(%i4q%90whJnDoEG=455d!;4xCHhUVF>K2ViMR_Ln5%RR*JyB7A}E( zO&9`uK}-UBAtVBOp;83)Vz>nMqA&#ZbukI->md=?*DFO}-w2n$z99^Oy(A`qy%Z9G zy;Laz`~Dl2u)h_P!2UKQ0{h!a5!g4wC9rP_L14Sp$lpsR+gqJ{9e*#Oxw?3! z=-*2_b_Z^XA|K=1f#zdi^d#DH^OmZJ*MD1Dx-#&1{kH>6;&4{%_;e9E{;m|&?a*-t z(ngV*@?8l7huf#-)=VXHEZd2~w%;Z1bzoTtV^_tJmcJ`Cw1t+g25Nd)nzJx)YI<2( zq=$)jBtX0@En5+|=pdSVSwc_o5NQrsvM)=k*M*TK%a@Ouo)DLhfZ59uYI%Y$kBDm9 z=-ZojXdP3NSosmmW}s|32*H=7orhc@7}a*Fk?%`0W@%khd*yI8GmPflqx4q9bbcVA znlbD1ifYVws2|AWhZ8)a#Hw_DKv|XLO;e`yp&v*nWDG2a&IR5%o1kUALis=4J_wv7 zzIH_>ndXh^vA3@f9;~$2PHYUZ%PVxk1;s9Ic(M9$0@*#-i>D z3MJHUf-c&n<^La&P(igf9dG%pO&dUgWfzv?EUFa~C`f|0=~g0zEa!)9|m-f&jfN zh0AX2PvywVg3jiEV`+VGDLTt``ESGvFQrR! zwd&0F-Apf^zf{{$5)069Uo(-l$88hp|0Er}Obpbsc*(y>a~8PBi)siDy?N3}IJC|; zrH*X^t@F=P^bC8QT_6(B&7X-#tO(X7`x5xmy3}o7(pTD-HbQ#sqz8>PCB`s80O!)U z_4*^(%*b$#qz@~t`wwYWbvqis;>nrW-j;YgnNH^8@t!3rdDs3!YTZ&*@0$Hx_Gg@P zI<1<0{XeBS%R>1&BlZ83YMh=$YGf!~xRM*?`K9)SbSfjQm5^)aCOL9?V6Gi^ zCD}~MWSuQ>KHnsxn!2>}+3IY$C)uAT!3B|%pzC}h?%bNys6M_a!p-`0-UKNx5@Qu0?#qzn*l$E5Cp?RfVau9?ywIP zn@qRt5Ct=IOx-5$+#mii6-7f6HFAfHE`veE$GlRepxxjda{28BsT0&4B%J~qoZ+(! zM^wIxL4(GF*M}jxEu=O&EeIjG@08Jk(3afPS(8A#Q$`O$5kO?EF7K3=H;1A2M>Qgz zyJX~X3P3#k47*ESvLfs=>@FFN@q+G>$hQKC4nk}NnMHTWYdga~!8l$vZ4m=6bbj3> zZ+)8x=NAdGyTuV?l$UMQ?}w zzuxEV#ZC-*dgrd)6xAaS#(lwfFvcRq_Hpyr9+{N)1>}R601`*BCV1W_M`s3M$W0Cp z*P`Di&#DQ6ugAiJG>6=1y8mc4lTKc34v_N{7c+`h2rp|P|_9L2Z7!RWACkB13Y3#S2-JR9j;_+)9Xx7F5{w^~V{K)l^TTp`ccAEegrO6zg!c=F zPKTS)m{cgwGPHqe9EBtKWGYvfwQv=EuW^HRq>A4oy@atPPgS68_$Ya1h1~|O#(h*? zP%nfU7u8U)^f6gmp>6irrDD6mi5wpsN#~P8=H6^J1LG#D!R`APooBY&w+%v(cH=P_ z)9M7?4bl)FlUHmOQbUYt;GxImIZJ}$A-0o`%P8iwcar9(TuWfoHdZwSs9@Ts+y8*m z*5mT}b`L}n(c9y4*IwrujXFXK+$ZFd?L&nZe^Q>ayx_(6fJiRS8%Yf+zt6M0Ll`1*Xk>6Oc_OCoaaTI-F2vjijIDM?* zWrVsH7m_klfknJ1sX>+3`LG4rOjKYEp>D*viT-S+0*m;jq~2J4J$dW_Zwsgcc5QtH zR`P90y*0d*93CAuE4iBg4n=pd)kj!(`nB%aH((AL&QGdgsS5xIp}9#%UGmK#(02hwm|EMU!x{0ekU=RRsU{s$C&TI;sn@xT0%Jd$O!TG9 zCYLvu9{7n+RCud7mcGsx!eWMHpng6am9=0)V|tq}$OShs$zxp0#RqQJp9)E4l5xt$ z$m`86)Ldp-KUp%93pq%=kY$_$uqETZC8qF(U<7I(m?r8hU|Shhft)iqgFn!f)L-;SVTE)Pvy6%#N9leMFTE=eQ2}i6` z02E%7#4u7rtTw6oE*H!ln1`89_VYv*mG-3Q0c;LEIEJS0mec_Ju0{G}5p+1e`LPMw zzCDDqilTzaA+)oOBliw*s=*{{Af<0{aZFhCz0JXFk5Nxr5%t>S663v+dXG4Zu`qnA ztiCq{p!&HKh?D0jp3lU&N70>7t`EDYE+*%RpT-UhSU$!K(o~q*Q>58)%ID4=zCAeQ z9}^H0jYVr|(tj$cnTq)ACh|seHa!3-oj79F>+3xmGLXn8m^-n+1#I2QvAKC%|L-t= z<3zsSj|8U>+Upxiq_NCw%RKbq`63K^NsCz9!$0VjHc~PJ9d^EHv36m!6ODgRCye(+2HD6v%wzZW%0Jb8*`sWO8`6x1u{L5$PQ4hwxyc8 zQ9S6D6uL{KQur~!qIJe$1on_+kWZXoknytv3KEO>4Q5iQ%yFpqJ*rx7G_FbIH=kH@ zB)_?79sf{{Jp(@y!8U}%X!@3!PttdC6d81$Q0Z?u7P6ri7={1!^lW9f=K7DCLngbS z!DwKYhWVl6Tw_4EC#wa`wMGL+41b9IeSLC(eq~?wzNO&P_Lr?=!ubq=Ydy4{#CO3D zmP~Zs?g6{t%P0a?^{EZx5jBTc=_r^eG1bz#CDaJtcLQ?QHdKnyg zCP)fV>&!8;*%-;0Y@dcxc;nGb3iT#NL#)AoX_ib6B>O>j_`YEd4d+JtV;@ zO~`2W{NQ&D_ar>G43Q6?{>>Iw2+TOpvZotb8rTyKsGghIU%l(&Pt;pa*sGcR32dIh zzTyBq`7=HIE6%zmf1=iUf(6GIsD;lIucVPP7T<{V1r8y;)TWq=oiRJZ-%amqxa?B? z9+#yqyPQ8)xN#nE*mKtB-N%~vQ_cm?1MIK%3S2Xgz_c-owuU}yu%F=;B*cepK{}5X zUh;f%!bjmOBeJ*be!utnevw{J?`0Ct{qp+$qoDhKi|m`$u{DkNGkZb9W$^~U(6EmE ze?9yED*FGRd)0rO{u_fO`OW!v_1;WmYYOs`8`hvN+GR*jo5=Bk^RqFE_lo`2TeisUlsS9h=%V zcDE&vSJd9x-_euQd!X>O%H0Nez6moZjLKnx!7~ zSPJX`uBb5^`}yE(?0Q$-K(>mH=awGhFipF=lBAjBx6Et73FVzJoe40xb8 zHxW};Bx8_&zrK9S_L{&2^K7hoMvam#=rGbLBs-)32u`GiXsO{3q?;z>Q%u} zk=2Yx?{GPlN5a?-7J4WrfOYHPE>zdQJsMaP7qn#e4Wev@CjDwPs3w@6PxF>V`t@>f z&Y^m)V8pM4T^8>f_4v!rE!;By`w9qrtn9KfA34#lcfxd(vdewwWQo(iC|t+lb_s*~ z&tp1zG~5!D?|fVwSS)jgtlktfEZM|ypFP>$$oYo=@N>V4W|4BfIsWnIFl*^+eRpZ-#S= z+Hu${&_9x;cUxCudVr$OS(QcZYwSpMhrZ0EHz!g}bHtfG^1a~71w5m3^-dS29T;@M z#`&_4v|XW9unSIhMV)sGtXpm5^R0*lDfDe%9Xjr|vEHf2+!cD1MKguuI!;tBQ?iZt ziKK=!5kl{FK`q=2@5ojE4O!#e5Pmz$AQ-zTe;HUZO1&3oXJdX5pxTZ2KXVb2h}r8w zZBhD#b0guF2@;z&#_CY3Y&0Lvj+jQ0AGnt6fj6CfE~a0nhB>rS|9OC-1gIk)CZX6< zk5ilyVBa?>hU+KBFntW^vw;OCX?~2gz(&5$P5SSH3xAItu%&x+7GEUe_~G92#z`^V zI5DQ3H^uY->&N$0u;;GbDV|t&?o)uNo0p}@1!VqG#7vIfsml}Sx0lhOrD@> zImQ{4q~9b5cOVuHq|wj!V4nGGxdW6bDBfFvcnr~DiSkT*(@Y`mO=Fqw{G8{?W7qDi ziGUeJQTb)qN)%4*Hx2G-_K&9qD%8D8!^uhWfdb9EoM0}HUT14o8}-HR?!ftL4r2Ji z08^oU7@QU1c24&CFL(H7Ksh&aQfNMC7rqiTWbNS{6jw!vof{O%H2#hbMy3vLSWr$3 z2TseDj_D09sy#|9htbhhaF33>ouJBcT`0X{H}oc7P(8QwkavR7$PW1~-#;gkNc0R_;$BpOwL~1d@0Nj?QdPIKw2E*|a0Bn&h zEDHhKhwATe&(R%3JB9sEnF>5{3(^9#Q&&+d9C|rNKQg3+?eeMrM<8`ZV`-zPQ>A{@ z63>C`_gsbV+h)PE+a;`O-n`e`VnF=0#0Nf`A5 zk}7J0J-tD-+sL&|9NuVmZfq~znEAdGM5u7A6!7UYrk~}?0ou-@TRdFP5^#H1U76Zs z6`8q*UN8Z_5|(5ge!-L!mI4oN<)+>F`P0+|)P1{!TemGovWelNvEflIuPUdUa*B3k zMf4{B$}09PZ-@+N_s0+K|*eTd$(Yu^aI) z<|0mUD1eGqii)(b{-nCEtJ*oLBF|W??e;-Uac9w9)Jj-k+1TI+;Pni89NDQk7E_bSmGGn&3sifr$j->lp8f3wC?7=G* ztt_$Es{4vmb|l`PKve{^XaKSUZ$UH8t|Eeec0TME`J_DKlrpsx+$-tcH>c6v#n!iCd`(zwqs40!F7MUkb|9r{rCd7PlA+09dXmcd*;p6R>7 zv^9=90L|jalIjllEQE$UT-ikWN@~#Nojs&#L#ncL#*)CslAx!cveejKojHxx&Rag; zp^;QR8Am-OxhPn^KT8^5GnZ5h@KTnYa;lcBBIjHF3UVu;HwxO|!&|ZJ^tn~@Rz$U3 z_`p0}>-JexvCVJ0J3t%fFc3*3Mzt&Pj%D>)pU*pNnO?f#F`**|AH#XK;?xCI)h(=D zIE$#j@-2`@K_c(WiiJz2>YbrM7fS7n`6uO_VYAqky67COnyIM%E4LgiwAm8P!&d6% zE~u_xoD2@`>;yD70GftVYqV-MYO#QcA2d^}6-Vx9a=3sjK#~p1*M&inQ4RiHWo>kB zbtj!ni~-w!$?4-h0tohNRm)&X2FM{43_A*4wftc@_yc8V2=ILQcz0?SX36ag~l7OA$$?x$6f7^n@w6 z)za*onGYo%7z*3J{}T``-`J`yiC*L8@@%TWzcQzZsnrm9`bC&pfZQiE}-N(@R( zRhyrd3XgMU;cPfCbBTR6Y{2FcoCj(Qq2Odwq?7}-?V|BQln&SPXRfpnNFxprI5@wq zC7i$kho^Om4bKJ~0f6wJ7eZ!`9W?4oG|23-(-w3M%hwNQhPgq8w;r0Q+uv!&y5UPX zw7jXRzLfD?W^9p%)^4=Hp=A>tAD%f^Fgm95`0%{NBAmxjjocoGml&0Ddlcz`%-7*4 zgXfax!`28B0|Rk$;0TKV^S!!2Fxkju&IJn_gp@fK&Rt;>I}PImH(oT?iJErsD;I04 z?R#hxCXyvCJ9TNLk|k`fOTiF3_xKq!QB2=&j5}sYD*-{+E7Op;hfQJ^_vjOi)a`Rr;Z3 zRkg2ENx(R#4iuNv%tf}E(h2S(AXEAZae$0M5CEi=4dK%{Q}ohvYi)dO3aTA2rNRu=7ST7KUlFaGAK%E(MZvny9xfk1@hM(W$DYR>R>xrbPWfU^SHV02ee zj)5aW>n^}a>e%8&8%Y~+h5QM}=Ps+N2Ir3wPpbe5#(>(7*EHLpZNe22;V0%Uuc`?5 z2d$tjfCb!%6)`VxXxO5R!h8>_PXNc*=%O_?P~Esf=kPV~p9!NZaQeCi&a;p$1Pc%m z9A_Z(YrX0K-?r;S((yR&UAM5hyf=Z?>6!^q4PyK+=elB?{KRyrw$mfo*`;@a9c^Jx z&a-)Hv%q2lQ+)vuX6( zr%v^8nvM}aj(h+#j6~Y$UR*njOBeAg_50C-%!8ATZK2>qQzJJ@a~qw#r@#iT-6Sns z=3FE9D!aD4-nm9P7OveaEm`4Q>)_AcEE#K@Yh>ZD`x={_Yox`)yvM_>9U_U_TNzB9 zo5Pp49Fi@2Dh0_@A{EIr3skTKO(q9!mi9W@J83;^J1@S>*-p~vaqSjqu}d=6eYZ&q zbmutkkC1Du1aFg*cP>q*1}S z59}E0D&}RG3VmeFAxvEI1hcSzw@b}!&i;}5$*y(uIM?X>pgp})66>fYM!S<_UFa$n zhoojzr68HgmKFvlX`kLD81JDuJ78K`TUC3eWSuHUWtXyj!(nec$X|+bhe1RSBfqd&ut)~EFYjXw@$4jn3oerQGbnxH*}O(nCrn0 z(#E537~$!SJtdZJJ5ST32YMVWTkt%pneP+K8PiB!847kW^sH)_Dte%T()u8O?~`Ua zDt#L%{YXU@24YIjyxy@RDrOYW`Jhd{|mD>t|1`8 zDnYmhD0o;3ss_Oy2c9rIc#e$chozv35GIAl38)e8JuC%Pg)li>Oo<=?4iC!1QeiGf zmM#UH%t89Y!xFMN0tq`zjvw1QMJVba(8|o{AbR|e6jT!Xkb32*SSbN0=>XiHhhH_=toEj&P>{E4Pe%R0^tc#UED%X+tP&13=K411VjZ3?N6- zfz|V*G*fd_WpdRMs833ZbfG|HwMYO9_3J{AKQkhqk`N8IB3x}0skl~+JS7>;Ate%F zGoO;yw>uD#(|ea1d0INjTq3;pX$i?h_DU)Kl2aqkNI|C)ok<_9Kt2%`^o-Qv#4Fnf zQS93J2R(~q*PfN;)Hv5DXhpi%v(oamiuuWXk1cN+#JGbU0SyT5S!vVRRV6qtEZ&|* z+^Bw5+IL=6%lgOpJRh-1iUi-00~ZFjBOWYRV4Q2_G4-C}D4?U~q`6K|vyB3iBvGG} z)~ppwqLN^|T~}~2Xp&Rm z1!+lRh^N8}Qd3L#r@{+T>&D=AWTI06=k$x=?#PRw?+C?PUzA!qs~T_hGHUUL>`o8!TLlq>Ddf$+mHab#|R8CSKzC}Sck!(kcS;?jFzUjKv=iUaHx8`a>){E4*8 zIO)1bEa)fXezOm6ix7VzUH%T|8ZB~Ejr?3XRns!nFA`*NzFi~96dLYRD^|>=jQoO< zPOc94+n&%Kz#t#tFDTO_2wk-R2Oc<_s0(Hf02(;5uMfb_H7+zs>K#rg6C(u8iuzz% zmPfTm7#3D= zrV*R|Qd+x5TsGx9`72>|5~awIUs1Z&v49!P_J*)T!Cy&>oSu|qZ)ORorKnh`sNY#2gbmzF!Vrxrq9r(k`BM$i;FjGU%@cE3Js0)^aOr#hG*I;u{9 z5l0n)3i$_V<^o$?Y^QJ~0r>~A_Qe2_9bA8qme+-KaPe(>LqZ|HC>Wu7syC#0s{^TJ zETE$}6?XB!SDeP6Br)63iHg1Z}elF3J5#TJ89KA-y=s{hKsrzA(H>irv3S z3u0m^b{tV}Qc9vILX9-dH>HK$A!wR5fmwDS`@<|W2OUm*Q|j4O#Hs%-62*}M`tRh` z3QGayh1qXO(He0MC`r2?Xn9LoUK>a=;zHT)e`q>d*asP8_3O|uC}@*m9LVfMZ>yx{ zEopsgSxr)*U;d{w(+RYEgik?oYN;_i&! zmmN6#FKNvt2O^3T!XN(M6-YPxZ%?{eJ2lRLKm32fNH_bR3Za$iRfpsJ%nLz^czi%9~dGXrjJ<@Iu{ zlaK)RV|#eL+~imm9b~n3?+eINx`g<{Osm&e+&jz;q^_WdRqrrCP~*J#Ft zZH!KHlibo)u1<5a?CLZfG_Z!&d$SCkM#%Lt5qgX4Hecr%Y<J zJLITSu+c$9lBDC_Aun$Yf~ov^R)c}4_WTZcL#JSbzy;17^2RMe;HHp3nVhE7c%sES zr(02Pbt%@>gxm)hq zEIPGt>3O%jWmkyOlL+>1dCxi1fnb?9y{C}qxFUIvykd1Qiljf)6-ZP{A$_kLSsFwN zsck!20q(xcNP2+98YOKzIvvV0W@(*1KH%bECTP^1Odn}Ej}2r&_ih}lTj&L|=a<-h z(R#sQ8b?A;XX$B#bSjjs;+q`iEuN#wdi2t|Pe#>J>r|F(&GNVwlz?4Bpke7K4V$6Z~%r)nfXjQ7aJap4`l{MQf8bJP;blFE5wo* zz5{q_8Zjo@hazkaD}VaVMDQFKJ(mG^4kPgT_&_EqlIdhVnMftCwgL_$sP30nw+bYv*une(8GqQ?Af@F|_Vfqjg=?#uJ#C$QBl%=1 z*W1#cNmG(nJfDdV=JN4O-xX%RHFbkX>;v+;4b>ts)`KHvxeq6mNDO5U%26kivBT;i z@u2K>g6*LEAo5E+D5F(FrP7$P=0IN}n@Pv$_+*hRAnq(PZDy1G`w`d5T|l_3PxR$7 zsgb-HXG#Tl8-F>$U1fyI56W|b>Fib-DnBSMc6!(Vl`P==kbK61lP$n{NM7RfUGAXJ zIs(oQ%hB0^7hpXs&slKN1z5Ck4^sdsh@NC6Y}_#dXUA?WRh9FIb7X;%IFe1$aRVpy z!}3{YJK~DsXw;YG5&6_*RV{C~#6$cLgN=E#JWVEfD)XZ<%Flwxar1}5Qve2Xr%LKa zWfY}z#e>DMlX|q-4lW0KNxIblbhkYjCA+mUmUxxD2tdO~jR4s=I8!LYiz3F#1mV%0hE zpt5|D3}oBFvZjVTNhxL4wN9%|%aig#M`y(~)|&1~;uQNnnjb<-e^Rb*5Ps?W*mzQI zjD>$}L^WuvPs(TlULlRODBIBDK&BbiQNIEhO;TJG3)W8AQ~K z&h|!D(a$b#>?*v>y2U;vZ`xkfH0A>H!179QJWz_%GjeogASqJ*IwljjOv1(o%wZD^ z5YqigP7-W##53|#Cr2DIZDIS2ymfb=!uDefpT;WqA$^F`)(6UWKbD}gkB?7B&Qed; zXXG`_A@+2g2uij{%c1>@9P0>l2XO{{nlhy9bA+;EXjeZiV~Uu-yUIKDep;^I72>Xz z)Tx)K@6+<`eIdeG0`)Nm%4cM^0d6OC?I8!sXDH+sa(}?j$Sa-UssN0sKcA7;xMwHz zlKK#U{j3}{w0lJmMq|^G0W@NnpOt&IPR&?wrTb^)ZF>Th4UaN})~?2w4FRP4ScE#_ z{o@SGhV>}w5)w?WeE+PBp8r7_sF3e}ExXe-I;|Gg&&l&$dx9c6xbHcyJwc%h+W+Us zo)CHexh?UWAhyJ93}r2ww7;wjDHa(MLnEnt(rN2)F8#~y?U5PDdq-RoTRcaB0kPSF z9X!v;XmDk#AXWv;=VcVo+t(=kL-PIk@a4OwB|k!vImX>&T`=#}^HfE!!DsJ_4K*vf z#xpned3pP;GIKNFrg>i8bN19eZM$hO67qR@-^JQhK5$n`hxgiKZkJl@DhZkA<EuiR-lvR;reaL(f3jg}+p1sP3!>}%xRz`^sP zjOjr3HOsm6BH17IHF9ndoxCVxfJwNA(YPC6rUuCy!aB@TN*$#WeihkLEY>BP&PMN{0rBN;zMmuL#%j{3wfIrAKM>)*+-Z4Pme zDUCIK%Lj&U$zxz(_pR+2`|Nk*IZg=^gP)>DFNYsJ8qVa+G$pgy4Y_z#g&RG3S>Cp5 zYGi3^L{Lj!mUkZvhb*)7@xzw{YO7KF=4Cnb(A5N6>Zn7XWT4`h`*5f>_k^H&Ric-J z4nu-?|3RL)EF9t`x818U8pwp~wtH1x>{JtNB+mmih4>Lk!3s5nu&tAVj01mDqj-eJ zkEjgSKEKJpB;D;FWz5s8rtanso!_{QfAp%r1mE?5?=^Yu!jMOEye4BXs~2xLvi=tZ zDD7*O0smv7K=&Fu)_*K7aT+m!BCKl&Aldhk--+blkLAYZkmJ}B3Kx&M|6>^gPpe5X z6Q*$34R^V^|6{phs{rag9S=VyceVJ(1JlfYET8F22;69CmOt^T{KS5was5nGjmwT8 z!v^_T*%}v=o}W>qDo6)44$7a&Z@(m*gOVi8&qUR@*p?P(Tt6enf`}|-f$G(`eipRG zg;VI4o=8U*Ih;UTzmyl$heKSXh5bqZE$mkwEv$=t7o>&#S`;np*B&jbi@YtQg}pA0 z7WTSF3uEw+7WTix*TVj{M+;+cf&PEv(YUbFOuPDxN8o=lmTwXcI z$>TQyXSgepXJ#Lro-Bi{r_iq;gU*a|4-_Xtas~G|16*V zb_bW1*Wu6dIhQ%tta#SH%X6GU4~E~}=&dgs^;)-2!bWkTiIcj|;#9+#VIHKSywtbk zXhVp3sa}EZ3C)6$a{ZZM>wtwv<1I=LDmS$GmVD*~;TV9_i0LiTs)OhpHn|A*$FOt2 zKgFO$`uRtNIN-;F*6U+8yfKyhS-*tI$*0cewDVBMu`KHs^|GN$exyX>pb5m8xMs~z!Cm~38~ zLX{ftwL{IWdRul;e?GVbc4bb~=QG3clsU-C@vfjx)~(TcEC0y@nH>5@WzzK&)3$n_ z+~c$4djei^N{!s3pg&w+6_?Bd<<_F#J$BI;BmHg#LvpUHJOti-?#tx!nW1<#dE}_Q z*Y8%4ni|kv->XFDIV4ZM0y-`4RWQM@j?Lm8@$}q1j*9&rkCe)#rIqI=HP~O2?FgjVC_bGe#J2|j z3^PG@{t(f-eLPTs4sFzj6oj6H-Y70iKBP3YR8^QvaxTySA<{WX6n{u*-Bc-2Tz+_g z$oE4^_nv7%zU*B4kmBapbz9Y7A5q*^N8MIg%_GWuCzZ6D+yEfnN0h}*^#<;E3>sy&#vT<*^7Un-$&Af<4pHf;orV))&KJ!yb=lKHnALL!+ zKdm7CS*7;IAh#(s+^3nZpH_@@)tcKo5j&&2S_(TQ1~;7Rx{P0@P&!gh`BeL z&9Dg(kmsLM+_Khg@-9L3{G76|)R_}whla4Hm#rvMab-^<(p_G574^pcYh`AQD8xfE z-~L)z-cYTXZ&M(iY$lVB50VR;XonE>oIr@8X2;Jd%U2^A*yrG|Jv&qI*xQd-&Y&qE z3R5>6G=V$5ptyYwy2;B%qXfUG%rYu9@CiwV{Ug~difUtnBl(f6iBTZgOuv~!NB;x- zF9$N2)ZP>WrTf6X>y`;(9{?>Usg~H=zv2O9ANyi zqSv|?$t1+ZuPEqD<++nx{HlT;bk0RG3UTLG70kVHE|TTJE}}%nxoDY`UsD!1%|yVo z?3G_r>YLmfDGrLKzoxA3b}y1cHis4(VQ9@SRzPb;=G51f^Dijd5c|4v$>q-G5;921 zeMvzN`srney`%`#57ZVtQq5miap2X5X+!Ci(Fdu z;2D%ieN)kD18^4a<6p)hb}WgBXe2>sy5!3WW@C&7yKc{c1r$)l(aQ=3Vgyjc>&3nY z3df=HZUzhH1qG2xG#)TXbR|9!C*{y`J-@8fubJv0Va=TT2wPC&F718QQRNsl`_Z-+ zyOaVu5a+E);suQ)X@Og5`_c2K-G>N^ofJ+wZ67oOBI0dob_r5(E6~N-FMj9dt1Dll};Q>9!bC_K>NjkK<;b+K=_v)fIj%Hv;@)}#fu5g zv1Tb&jDucLI(ow5peVYMqbZYu*%P+~tO$+Y{T+0Ip5(78U`>)T!er`eO8IjhUQ+^|^Y9=x z`85SCxbF#1ZjD8wBUB$^z@aJYdqe`xD^*{knxG)75NW@DN>Ww4{o-Qvr(ug#8Wr$U zWyMB8N5MqV)PVr(+A1VfN3{n4-p>_`ro1ZzrkkMeB7`e~8b4P~qNVW9mEGaB6#lsq za7$rggr6&DDICO1B(Ii3C*%Yh>4HMX#d8e=x&c*$&#S-^+PBg^*ugezqS$a75ex|=x z!s=&AV&m6hiF5cj_oOWb?+jf?x=iXiTPE2_BX0*eQ> zek+!^FQjnpHu+sxZj-|L+8ooexZ4Dx{&&hrj8FTWax&x7en%Mq<@T8Rof6jgH1Y-f zE-c^8ID6?R_hjY%P6^3(GcIsm#r}6;_-=k5mhWa0DL+aXP4B}B-=KQoI|6q9448un zj5PJsSdH{KQGQ9AM_{d6ubsy8nki!#+S(gRtYZGxqJms!)T%vY72l+w$QxAR9&}J- zBJ?;ym!SJ2Nf-g4wbF8oJHCmpLCt#j6(m{G@_Csm%JL){~T*?D$zzEvBvoFO{J}43}3#fbXKf8V@Z5T z?w~i7ruBiigS^hp5@^d|PXhAK#GdyDEL%$ll3NIWRu(h|9$2-2bZcxq@}GnCA7L0S z6M@CZ|38(}&lp4g|49`%6$%TMME+z7yhS;1L5Bq=z>Y)q)NK-SXG!OZRf>DwFf|KIq^Ld) z^|Wu5ZzdxN^u|c^bTDmRx#IWUedg zHc*8*?tE`#!D8pm4OD)Oi}!kE9WF{}IY(D9uU^EHkP`LpjjY-%Qlh?v$1S@YxcGfAQop_sl|cG~5u_+PDkveH@cTj0@%xY;ejf@K zzYqD*??XlO3#32n2mQn0LjSNIbv#@|9q1+Y;mC@{lj|k6OO1RiGQURK4+*}lU82Iyrf^2ftakw0D;75VYV zoVm_|TItZEDzr~VqN@Y1LgVwzCU9)9boNh1P$64Z<_UtIpNycUwL*S2UqE!B=qFz+yv~wE6AUUpygh` zJs7ylJ)U!YkP<8w^h=GP5p~e5d5VB>Nc~X;((+D-IGg8Cwwm=Xc$$=+kUD_yW*^T)X0EGFvk$AmvPD-z zNCHa6t=yY<->8=nc^jZ-BF(L0?ani#)rGb@Bnh60be}J@Bw+b9pNY(vSE47>6Ff-d zll?KI+g$ zW(lRh-9(^vNEfQ>xn2Ydpk=i=PTG~LJ!hrg}j?A3rUZi$i>|$NL zdy(2dolSRQfXp@@-J{qfPG(wmjSLQ&m=3w`yj_W$S)Vl%1CCMrTx8Ay_x1Ru{$5F~ z&>TNsX0o&zyH`+;UT@9ZX)?yYU;n?7YGI4}yCmNteH{Z}TAn8sixYvhlbMn7;vSsTs9P$Hci9!XjM zN~8yjTz+I=)W{6djVi*bBmLASy4e^Q#jv1cf3De}yI4{o-jJg^Y5YjaJYiV=+FVRk z51FQMG@l>N^|Z7&Zrn`v2m^uNpEr$xO#jFbdQr2_$858>H+S0SbMEb5bL_1#9dZN1TjsXvv-<&44`8h7s6-PFV2+rG08o0I6z8)QNo z{BGJ`WLi@@Z}cEH%z-0j&Pb-&p7)+hT91`y+#9PqUp==X>r3?Yw*V|Od)5C{Qm?7V zJ9}+37o1NPOBJG|-dZm>UEktjZ%4vH4?opaB<9+fX;cj(hmr)f$ymS5*q=$89HVVJ z2L^JW;o}zGI13oLVY5Fum^23rBs`f$KEtrdV2SDI(tUjZw$Zpt=BAqde`Pg*7Ps+( zCKnXBqsd_p(QbCp&dJdK#>T=`Sake0hILM<7H$hEl}U_({w+oy#GYxUjb84+={3@s z0W`9&8wr7BLH56u)SChz0)MR5+b0Y$K%cu4MDWf}7R5K?Pe!;sM*2j|D-Y-w?u|g- zPe_p=CXsuLo$1lBY=U79LDX$bzFLd+@0Qd%g}{CzLv53e81w^T093rAP5QHv`d1-B z$8Z$W*Smz;cr1}k($KOdBW@9=monL5_oAe}D?Ff!(HPTPeHT!CCubqttp8!QdSiHN z@SKv(F6bqkieH!s(ZK)nNNP)`;Du7<%4^km^WozeTbSp1jYQTon83%Gn`C&|p?D3P*mAfd?r%ke|M*ZXkJfzdv;3Lf^rbJ03NAbpk z|Hxm+sWE1p39Zn=LNj#rbdLJt(|Vov4Q5h67Xfz|I?kc~Y;rh{I|rcd5D*{}jDpV@ zFg9#Zj9$Ll`Wy|YZ*0P@r3ak%5u%)5dfdysy?J*L$u!c=2NT#w{wm`d=SCavhVc&e zABTWVrMGUb_uOlN&;!#Yi#2$D8Si213Fpr1oWF4e2H+b>q8c(za^t~=w|fDjH8*pj zuxK)8Y&9;uhHpcUQD!#w^ab248?dmNx2+ zXEK9zh6}obw4zmec7p)43D0(W0?NY8EM*lIT)vB;wXj7x-|8{Otj`6T2r>`qA;u$V zNq+(&(!&9FW0MCZ&I<7tw#aw5tFf2h+)nS!q|6v>yGH)@m<98AuVk<1$a4U-37$weRVcK1>9-B(1OO2CoW!XFq{|m7Sc+u{Q?^z=f=8shH4E$F@Kk&2GP26 z997jlaxG1DjqTfM)0eqtumHL(GfH9^GX>+M##3 zk2c!gnkFNaz{%KSoRfs?O{6Yu@ETSPm$P^LQC5#t---v)EIH({BsaM*JC@|wyZp__ zvpmX)%{N{(vez;rZP_Q94f(TR90`6{cdSGhkQcifFm(gc_U8GTjdw`ut-+|jV+qD< zAzPe?!mS|Mq)&ov+h7dNf}IdG_VzXDPfO}`;Ya{(0Z!RId_qzK$l&nXP8(@4eT~aH z9+TGo-L(V%J`$7xUbNfpiKI`>2)s{rPIZr*o!khVOxn6O+fG;GpvVR3O(Qu9S-=aM zuvI90Fo9SGW+e6_WRWFXCU2g|drYkYQzzkhXFp6wm`e#KaADB6Cd4uf+x@`5=h}QQ zni7toh|;n&CNomZB<7$Zd<6#qlUqU(sxB>AGS$&qHcnYF?=iS4R`{MB&U@PQ z4&V0_D`ghrSQ=S_^M-ccb*GX!t~qu%H+FbKNgjCwJ0{z2_81qWuS{o-r`bZ?r#i=Z z3Wb&ME)+i1?R;zFIPScGL_Xm>V_eHZE$o9W&ZAv=y)Q=iqcj4IJ+R$=psiJJ_kCb2 z3Q061lIfgQq+SNN_jl?aoGS&>K7(X$#>dw!Szb%~&LsRY;$0 zZR5}y?@cC?H-EhO-tXL7TQ_2tgd_R+0VJ>o-?AA9o@!s`cFvm+eLV; z<@aDSz{aDtcWxJRdRHD^*V*1=;PyLP3f$sFmZd_qg&Vs~rJN);D>~ypXOUaVdwxZS zd1hWiA4sY&pz<_&lc%|H%EY~CH@q5;EJn2Xg>;%umr6c7AJcK+4UbU-LT|7?w$FPa z!Ru+%mvw4mbh3?0M^ZQnL+NDByoJ~jps<*Zm9$wIa72lP91hfS2sDw`Pp-KT z`5*9!%4pYOL(9gDIPP5k7J@!2M(Z7{9@Gptiwvpl9*yJ1VM&}$MpK2An2~k;zcbFy zhSk$$e-=+C3oEI0KXf+L*X`YuCyCBn_z}(Zy-_B^bLWrRi}v-XJ!KbN7pO2w`*i#faq=ku`JRowf1U4RQy5gC<<*sh|> zwSc=qMW8Vri>N1DZuF#`ybQ?vKZw7GD#9WND>Q$rg`E z{(DHoxlR$J9D|FbXDR39NsExK^8PK2qGJG?W*fn4|)CST8A=B$2xv>fAZESBA2V+FUM}+%U<)n_svY0;_ohW`*5B(YQo(M(}yl9 zoVPa0PJ*ggHn1y;mvGTjL?6hF0OT^#Wrvaaz1P;NGm=G%VlMh8Kf(~3KX|GSvng;C zWklC0s;4WkRkfdOl+Vy9=rg{lh-w>v!XQVsUHzgYe=evHx}4~$w1JJPv@w>mV*l@+ zc``fw^9>?WAvX6}^%pU^g20Z{-&)LX<=+E?QF8$!8%0$^ZbX}-@)CZAj#Tk;Nz53D^LiH9=8Lm)6hhEt=K^xkRMNyC zrOZ(*eVbP{*&#g4^GfobNWQTv)Q@gs93)?L~x z&CZEB9N?_a?A>+!mbs|sadq8OMQo`*Q3v8R!C}~ISASYek!X2v7z~@PYyF-W53xLt z+R7>lWff69rTLz`p7)&*jczbJ!}re>BNMd$EXg8<5tZLWjjn#Bj&If1Ezg9D-6U%6 zti4+5AG78^E5O`uX`hxzI)#M&GIMB1@g1~{^ zjTHp`y_op03a**?k0uP9B`0u=)8u)j8^yYuu~V5hEl#TBYRnoXtR?D7d0E|6X%mj0 z`&mi;l)sE$2E_y&d)%%%TtCoX{iNCD;DHJpj2x`(6&4ry{(~fcGzd6Y7lPfa$dSdb zZk8o6rc^{%$eI#ZybFgXaRBz|AkxEOO2@MuDDrGQwzX=}^}v}599p~RdSGZ{I`)ep zpIO>H@QCKqRu-Rfu_M;v#W}kfaYhk`t!9EM&Wv1^Jr1ZiTOgK- z^O^2VNS7m%XL_pr3MInc%a2aXccypC9`%{Njfpd|79uJJ%g0Q7S_s2%)VduBr;?`s z(o}i%&BeyK+S@gR8HXsmUQ5sk-Bz}1NdtU@AMwq&RYP&P?8TWH*$bEdD_!F)clp=l z|E*u+J+r}UyuY*E$3&4A-JYPpOht2XTm&H*Sgb4q<$h5^4$4NATr$2Na*T!(RPxBq z8(TV6g8I~7u)*En^J8N{KM@l>Lf2a%+&r?pMS`yt_5a1>ZoO*2~ zohTF)Ez%vEoZH@wzBz{jPd!fIYsqmZPDWz}sv6O%7>n?57LePQI9TYMbO57I&C@A* z1Q($V=qq-H%7&>^t4JJ4;4qKW7tSWgcDT*B7!Vd(vIc&L7H)PyWiD={aH%Ivz4g$1 z4={QlAUras&23{x-_qmRH2N^pb||pPx=r&$o$uGyZ{?WNap1o!$zKSBj;jQvW%Q5R zM-D?hYO^bde9C-;8qwmRdmubibQjz?2X_9W=s*}P@)z&U4Gn(mOhNv9*LjNx&!=y< z=F^#I(pbnxD&z+2zaP=2(>d12kZlKt{_}SqFnftsx)@dIjwAhDu`7hitymp_;n%Gq zm3%XH8LJo|B#-V=i~dSvi>34V^hz{qE-ry|T`t>sB029nCFFb9;n_h|b$?7{?Rhkx zz@%ed>F1n444v8F3B=G)1#c8mRQ?3w#~Z{nec)M_($jxBB=QJ2^0nMrkXenpm|+DD z72ow3RQ_vEBM8>4y^2ZgbPTBr2G7p&PuVs2))cGsVE2&-<&j zE5YZXOuOn-+6)a>uC#H|9>d)mi<2Cmba>Ml({5WLhkMoIF5h{?IT|fiGT&JNCFH)TGfKjep|42t zm;K|>4f%z3DQ26)7JX$~Of8`Ljki#8RQ2#cbye-YSYD@7F$}Zur=7Kj)uS#;GS3%1 zdvX!h(M;!^j!wzW9OZ8Hu=}><22D`gPLx}*5C2t2PTd`QUAgRdzRRQUTfKKL_zham z-?mNgKTK!Sx2VIkHQ?dbrBN#}&uj*3+D4t3m`iOl7O`Q`Nv_ku29EbiL>?>P-fb$M zTW2)ITJL}vF4i80_ zweC$;x?lV@Atibh_G($)_ll{xs|19L&35$@lKgQ23bqm`m8saSKH%!9e)YWjhXHlK zRa%wRN`!IRd4BVrDYG9Ha$~t@tCkttz|#iU>|Eu}pZl7THu0wXUUHTM@NRs@n&D zsVdDq+>36c!QozZ+P-n_#p@gA-b(cwaI1xKFJ?d$sgj`buT}ZLE{q0>e=Wc)cj14D z8KqJx^TkO>t~kkE5LyE4la;QpcYm#PMW8G``7<$noxFU4GX))^ZQaA+Tp`9nJ7SdU zZZ!HhZkwXvV}6Y_*slC5OV@F`j7CJ($XtGM?}Ia68B)ja{j+$NEy}Y4)qqoV5Au`Q z0@?(iGN5fmznwE*G#>3~=bg@LeW)ruJ|*UIp_kt_uyadBztJc>#ZxT`DB+cb zcS$ZiKsT-8yB=$g#P}+ctVdg7W&-68tdpvqY@swC9fMN=8C=Q{&AA^BSMxa}_-L?l zc^UeQ+sA8+29Z+|SF-`NUD-6wWX%*t!C5!tS;A-@g&Ssk2}|>T?2IlZnfPnNK8us)nUwK|Z*!H@nad}VW=!jg3{y*4q-cwNKZ4)y*{}3$=J%wmBF%j51IISEw(ZT+?{jh} zwEc+ke3`ZF6JAY^_3DY<-tNA>fy6+3aKRYX7Y6m=VSRY0Z^#&qCA#&2{#bv%HgEqV zLbQ)?+DEuz^CIj8Ec$SVvQ+m)Is3L^pD$s_$T=k|XvqskjtyEz^CT>O8;d`FO{r&3 ze2!$k-)TL*jPZ)J@{4llzWeqlFVu0{jzThq5M| zRg7#ljVV-wmGgk%M3*vL28Js7@g_~I9H+04nncJJYI;af>N&}}JkQ%3aqJJ7!=}9l z{m|GBEGtHi20*uS>(g{t+oJUWY4-0taA%|;eC$7bJQ(=koU*^I!+%Z*GY4*e=NX^X zl7*7d@gSgtY}fvaSN*eHVJK%gbRfJ_d8v#(s;~Ks^Fn>D72!1=IB;l-a{B?=!>+w> z*L>WBqY()jb?2TyK*L>Fb+7893maA#Mh+eg2u4WgRPBVHLWlai(4p{d7? zYa8+<1s+x~^eJ>qJp#`n5U6xa2=rx3_#swCL3FQ7Hb_pa5!+-qP*YnBN0FHe$3nR=s8kz zVFjo=@t|U(t_M%X@np{d<&iSlqe>Ev3Y}VU3kGeX+z+eA?GN|yr5@h7&wfHn5jNVw z%|XG2M2fqurPn9LjT>X3Ht=j+C;C?K`AcjdNa)qurx1@>er`X6ivT^fw>emV@^sCq z1De0-8YWSvAK2^SE6niK@!+nY;fvh9j@?Z@o4HOP#^S93i?=!vF9b>m!V3APoz3lj z_@{b2Ze;RN+>u4&yam%>XC;iyBCgFF1nQu?A_v-iQeLnlky8?k@D~aGbh+3zxmY!zJm_Uf=a-pI47^zUvF79_1{nVrV>-1>9 zuX?mUD0*}tc(PA=bRb}Qba0&>9a^s&hJvXZhJvOWhTY)!jOCsV?>i7Q_mobmht*?# zhd$)&j08_e$v}_zZlKS)xsNm4y?JDpd3c7sQB37PM=~kQ1WqPkDQ>Nf%CX}$|rCrRDAsO zfd8Q);pN;_8!tA8pGWadz>*>4^qk*!A~?Y#*`2Xq;%O{McmjuA*zf32E65(-z2D|J zvP)167x$m^NfrU%MO0)KtA>j{-6jevq#73=GEMqPrpa|=n)H=SlK~;qwRL2=?kAb9uOriSU&(Ym z2xKDXYr07dnv+Twnx+qGeqLze$A&Zhl(m&THe^>&XCggYtV*UDq#1uo%gSxXDN$f> zq43s++NiQ{tuE<#>&Dg0!|iu~>{*mt2W3;#%BLLx0_B5dckTB(A4D{tL#{Ds=%Hle zoWIFNLd^{%5`%`C&kFy7lkTJLhCjEfR%z2b%w4{oM!FBD;e!x|g zm&j*%V&OujCorzY7|+$cKBT ztY7-258SfZ~^rwmBg8mJ0OP%r4n#* zaJ^y%Qm+uBn9wVMMWOBQl4@QK9}ApnW*TMr+VmD#n7ps$mWO@xzRFr0N0Bi2;6VB3 z9hQgBqd%6nd;s}XLVn+v@`i8fy!__)Q#TuC9sVtkU)~~@Ay1n@=Q%r1OWiVvurDC1 z9W=svv)eEDp51=IlijAa84PR4ZU+@>6n($obCw&-mVNLchuNrq2B9sBPToO98zpqJ zO^5wX=mK-Oox44l3oE3eawz%@zKY_)k;fTgP^nDGmb|}bi6jUGoTUdDMTO?We&(Yf z1chVA9U-8b+6-$a+5?L<(z=CH-M%(0A{?y-n6pU5uKIuPi}dO0iGh1UpF$FDqu;md zwXtqWw-2@4aW^IUa_b4_%hXN@9l2jT(z4l(+%!z$`LvnhT^I1#7h6v`pQWBmc=T3O zca`knt!SBeryZf_%SVqnU#2~f47`j3(I9Krm;F5$B^139V7H&n{9b|E@8jSA&PT7} z%r9tsWamOiiM=}U)IFiZaDTP&?UFxT*{qy;QB?^mbpu5HbVe%!k&|k{h*`jOR8!vL zTROsvskSVo9UdW=T25>+?|?&U{QTr;KdSl5q1w(Gv0Zg`-@&flA)%Jqhl{l3c4enb zFpZ}19g_dG)Wpc|kPaUS5F@h+fW~)9a1H`SG{g>o%U`E}#Pr<~Du4opn|Cm{{H_2Z zc7C^X>U7}P`Q6gUxuB7ZbkMt{$1eJvO5-g3Of)F?v0b-ux$(Wy_T9?aG6e=z`r+pC zIxZTl7?_isps`dKcHQ_sDSXtAf~G1ZyOQ!K!G#m@zRm3~mQE*WU!P?A(vG2*ZPt$NR>yo0anpg> zgfT3-`=IiQ0CiEauVfwXZmIvY~a^pv&#_dizi<%d|M9;$e{1^hvG5Zmz zN%I}EVFkGPsMIJsxS{UE?AZ?YlyLyY<42%kKPv5v_?Wk;Qtb%<0rbbE`*(OY!lpws zzAo)Ns@xL5!6{=E!{9Ms$RoI%)UQk0sbG-$b*ZD%!4Q!ZDM4T;((mi>3P|_5G%#2M z7=>=HOJ^SO^Rx_b{jk*dfCCqGm1NHza?3qz+4x~;S67f_=`N&EVPjD*h=Z-i~`GtvR~u!cIhVRN66 zde1qVvz~ocYTV;Iqg%ar@3T^qd;DS};j>cnnII$KjpB{44Zk5BI_=q<^=#-;>9fyC zjSlPgc5@_rPEuUN5E4EF(fypX_k~NvH_2!Ld}&m!zXE6IxRDC8_ff z=RLY=cusEovV`mP{bj(e665C!nWVk;m!*de*xv*bb2s6uQsZ9V+yv&|f0fLzX#f7J z(mpZ%eHrh_^6@SI{;ON}?@|8H_*JRpxbk8drnuXAjdB|?6V4{K+(QN`>c{<1QC}y; zAVNizLmZFts8tQr(NFrMju6@Zl=P+pb&c%3n$R*(}H$>S2WJMQ~=~z+7$kM#ukWi7g#We4G*$xD$^)fpsR_ou` zx>|o#Zv0tk=Mkk)N0ziRZrDfp*!^dvqbG!@$7+}iE5OCK$Zz)v7mO*tC82}+7MYR+ z{96*Pu8WuzzMh!HJozmN!=QW1a8(rtlJfD;*0hhGCo}EyKElcb0iqmI9^3praNw2A z=T^=95)LSK7TtdGlT2^Q_SojhZPlAB~Pcw++$9_wH9BWj?-MGvdd&LX0aA!q0al zv;grNKjch*Uutajm2sJ|{61CYZP8eMfb9ZBl&^_6sIMS@UY+)R>1fLqbs9MK*Q5t_ z)Q4k7=;IIVQMxzEu`7B$ZW%p7@~;uk1^~%n6`h%rWj1lQZI>hN>hZRfbfSXdHT781=+N|J zI<=^gPo(9S42=f3W({q0c23La^em09Ml?-c%I7n=k*+S(EG!jbz}ZSyE?vmRjm4~< zS?VHWb;S_Vbs5IsnKLoH@65npJP}XC1_ok%!^8c(v4Jz)Jqz6n31c`hIJ}^DCDQR6 z`(0!u(aN_W&jEz_qFv9^R&QZjIe@-s#tEW$I(5s)<{7~5{xvg&ztgp)!it{i%o=)v zcBn0+vnvsqeVKp2OyP%SPFpbXxA-?j=Ls!MPYvx7_DeQ-1&Ba(R5~?Mm%Yc#RKiRx z=DHTs9Cdsfk;SxpapK8q<65USkw2N!Qt7<5h^^3G+5Z9FV)$qW^cHr7X{8D9Ln`i) z6Wd9rK;>8gZ_o!9)9D0=oGvUb5oYky)rk6wk}Sf2716cT7D-rA^%0lx6UKt({FSU} zREOL_|7Mahq9GoU+qKSf+I4Jb+pCC?-sv+O3`yIaP?)e zuzK7jW}B^N+KcE%dhE-Ryeb?-NS$#zqMj-XA^Xb_ZPLWRUp@Iu_j63&e#H;j;HZp( z*CT3MSzz5axJVF6e@T-4yWylh?!rkjY-F?PY@0`bSBzW^=U^TQzNse*#yGvlQA8!+{ z_-vRQ+WovFi^xtDn}LjBEJstuZHBco#aMIyt_W{a8FDP3Vt~NsI0g|&zC%0)UHBXv z{(&UF%LhQn0ge_|FQ}JGkh$)iBBV~5x%@M;%>KFOOcr)A4A6%jo#je0EG_e}Y_$>X zQ4hMij1|me-c02pN$iCgpE3KrK6S`_uWaB#UTmav|Lh|lYVgA?DcwCOl~H#OWFpqR zQbf?wy>LOfz+xqM`8l}H@ZaZMV$YKgOg=oJPeb^Wj+=TOuDui7%=2%~s~?nPA8sYB z+pi;aCu}uEf+PpN&!BozwrjF$L}U*;FZPvnY;0Hk-}#aYwmd|K zamnAEDl3rgD;_z_GFdBed`Gm_;&i(|!Bd&7S;6%CB{?w7ZG4I>%OQtL-=F%D`oPh; z>#4dehlw30U3Prj+kil(V64*bz@u@G9iWT-JRR_1Nen2yMza|-HFGg{%*n>!(58lND|B{jMAtW!QOvyS zu1q)#>{uu>QGt&IvDG>d$rH1VU*9VGcp*pqIWc5}t}dWtaWL`@dIF>=NRtyDae9Co1MPD}mD-xC0exXs`PX&QpT$!`# ztY{|I8_BFGt8!@DwrxtPjtBGfX>>&sH@ATV}%9p zQnG?EhuaSg*kca6n`K)3K5>iRcjz&D@gBbT{o)qC|4^5`crRZ(EN=0zi}pUg_?yHn z{w5dg{a8FJhve;t6|*i37s2U|kwpPSG3TL*BqX00yjxBFO1RuvG-9L*E7AN~#)z(> zbTwljma+>DN3iuU0Icdq`Go_M-^}FXG9;mb=xd zsT3bvzeN*zUg!5yFBl7YA!&6aTa!b(x5-LI2o^4k&yLMZOwUctScurYh}&r z>^^d$UWjnZPNEqk7UsK(5b>%U+P7_2T{|Rr*kO8RYHn(5YVzjz%Q=&7nMswoV$MNon<0BZQS7ATW;ip=Z?Hk%m%9 zwAEob%`^^WH3wbw1Xopb6%!oU)PKP@j-)H|q5a!-D7m|XjanLVZv4r)@#|w#7bdP> zvgBd^F4Y%#cu5X5Z+oz=tpZ$mm_tqBcq*QzdjhsFH1E`cAPmjNx`QGN;Kk;ibN=um zGfW4zJ#e=SQ!PoDed^lzsmYnC$#F{#4m{NCiyXitsluFtS(a3rNh4yhOoF=OND!nz zJsJs$6u?1JyGH!rLnZ?UMasbSxzQ)DPF%lW$-qJXWZ;lM8Nh9{+gEWz#g>6X!H|JN zfs%nkB4xnk!?1E&4jtb1rn^Q=MiMgjN2{`;l7gOmRMmEgpPDG&XIu-;u&{}$eA_w3`t@m-CxRIHHW8zG~ zlIK$(ITai+lK!7v8n$f4G4YJGc) zxUSHRlvP+{B+8@@aj7zNeB1uIwk#_POKIvRCx=dKYgC>WVjyqKT^u6O$jhOJw{2IJ zMJ?JhXba@YZTs$)O{$R+@zB3GO@ItVo3Q8%=LOVE%1T-nZiwQ-qlVkMK# z<_Ymg0h|&RhCcyU+@Omhxg4zxY@Zf}?HM$7ahHbI+ab){UNTZ>4S_4Av}p)+r!b+O zGjfc|bRrV*N4&fl2%M322|FVlORrEj9>O_lL_*!$_SUt_nJZk=g;YFWU?r;;jHJ0j zjX?+sn#|s_O{weXkg`ym&!U&S!7u>|^a`WERby>6on>5)8of~8w%v7|PU7x;B0>GA z7EB}S0fErpFAV)I2vaB((DP}=0?>E^!Ze->0&yQvV9*B&oafyM2n2*!XM_d(?(VM_ zl1W?shJ0Xvv2+SI7PuxN-*Q-(Z|UOTS^?!6N#hdho=wQ0+2$kL_SAK@c{zc^MFCV* zS{f0B0%wI43b@Faq^VOjM?B&KN6aqiiS#P>2Z#`l`ap>5AOpMoO^85kz&T;nDlQ?e zv6hN9B_8vE5*Nud_kD^?DBSzO zFA9qnXN*PT_BgBbCOV*K=c6)o@bJ%z8=goUp~K+Mtw zOztefN4PG`M<@aUK^)Nn089x3U<_Sx^*H=g4>Ldpr-jMj^}-5HuH(hazggJw=TXvZ z=qb!=cyle6L~C-uc5Q-{UpL@r*Wa7ppp5Tq-)U`e%fp{zfWg&=G{5Wo89Axo3stDNn6dxp~Y>IvPjCjlTRAa ztbf^loTkTm^+a!PcVFK?Vjw=aU<~UEgZl8WK0MSnWDLg=-TFX(tiNBIw|`PJK*hBa zW3(bXk0oKA$Ji9^M_42^g^_e@+SY{6i(7Mcmi7rYS{BAeW5{-AGqfxmyQDD3ZY-I8 zzJLKeSQn1`iZDlhEWNN`pgTd<%rKFKdyx|6UeK9$8bMo*;Tu{pEsnL)FA%QbO=N@_ zybGAiXz}w4!uT0sT4u?#_L>#9S94*376m`$gz*#X`m&LwiANTi^WxCFh7nV&UK!e| zAZ*$3q_ta6LvC*iHHZpjj$HF1k3F|&$Wp%;Z& zp^GT9%jztV4Z(d$nBZQ*kV-NJ7{bPN##;q1omwy%J7d=`3tf7~U?VNC>lftEE87~B zB_UqxC3a>Co$;zL;k}eir*E@uv)m6Fi9g;BJaaqqT8@zO>AUD2K5*80lB(f&kZ%%G}mn6)CoJcXR>IJ#+ z-IB0q^9u14IQc!|IQhyf@6du(-z#uc{T9neL4MvRPJXUn)mbMNdR1cF zDoE51iIb>FoR3=C<3l1><(DU*n?Ed0H%}HAKi!raKOzas@LtoGaYcs5o>=*#B3I5X zqe7FB7c%rQaWZsG&nI=(*bM~!xHtk|H*XU!LvUXgC%98%`U)$=eMxToVM*8l;8g5+ z167~5j3~=BzbrR?LK0SD)eYs$1=r4$q+!_5vesc+%{i49l8nbhjYxO08s}^E*I_1kESLJs! zVF!LxoE?}QWha3k>yL@s>g*Ulf5cY5B51($pH~z9D?3!5g+W6e)h0(cD zk|AvSmnEOtm|@$$B5>PtQ&W=@*Dp?4+x`_FxBXp#+rBV0cH`Rkbru(b+TZnS+b|RV zQkU;+gEs9^Ngd;sj{9}Lm>$yp8v-}(HYBz-{u_R6oTU9X1xmZC z=c2PWE?%5qek-v5o6qpr2x zJa?ybwG_+iM!4}Ns28k}ZmsCQVdl{Kz#;;sgo6wakw1`{4-0AxYl#T;#cupVagOIT zBd^nBJJQJD{y&r+XtKHA7S2DE_V)!uIRALPaQ?Ai;Y8^B@1&-qqQ(cf5kHg9Kl4pK z|15Cw2|@WYsaX>=SHl$)CZc~XPDJO>n1q@qSR(r8WkmGPgCnAUv0g;~LcECnl|T`7 zvr|k&|Hd~F{hJ_)=--GFQCCoyi2j{85yh=RG%w;kMqow%u8fHOU2sJ7@7Igy--{Q~ ze-J35ZYGt9=s)@5~5&cJTBI*hX3v>QS+<6iA_$?dyPtu$Amb$tBB<<@7h@1P* z>jm_m1q&!*!T%*S9Tqj++s^qj@%-PuiRb?goOmJ^@V}+zBZ6`PwvaF~yw)J>;@>n% zOszphFrTkA$oopA^RUi}#7+izpH| z(F87s@Epgge@UoYbre?2&k@lUQ7)}ItCtZt+ryK`c2vN+|Ud2r(+Bg>fbw3yX4L=wEO+Od^Ek76kSH3My8Ij*^XlxRd5pgS& zohs=t%_D34oge`5yFmcr_xuI|LzNrE;>CkH8(XjHFOZv{F?Zn$dsrGMw!;uIwR7r#S80^;w30K|V4 z2m~)&F6!gJa~A*LHxLLC|C_)dvACfFi&6h?AD4$N_lAET*z(&bXZ)PeDA1(e5HjKPbsB z2w@8=4q=(oDhT~WQKHP%$V?jZP3}>2I_cP8pfi=%Z(lW2iMxr;4@h!a5O>-+-YUra z1yLq_*0^P4&HUQkMCFGh*_Xs|6@31RD0S|Zkj&|KReOr#PbV8)1)swBa}vXH3v@;D zE^5vAjPI4Gk6VR(knEAoEiaD#ndMx`9&c@KV3-0^96RH?1GUr zF&rIXepS$3m*m@`K|7!26UM3nCX9ktjkVQu7BN*de)_m1uL?oaL;~DIj#G9+a0w%y z3)d7bP;vEkW5ww$_KU@OQ&*qy_O~w z79hCTx>m^Rv7~V+nT{cgT9xU4Sd!NSYl&$cBX*3MY91YT#iXWPyiKMtHLW_nd|5~d7_VA_c22}_m~K{iY06}6Bi%=sz;4T*s2 z{3Q&mu_Z(sad6j$SWK91xQ<@jSu-9ipw6R~uWms;BgwA_Q9vGsE~yv^1nq95QU)DT>e(75S6F)cf|1D@@!G+GA1cYMQK?2e zVQfBnessDzn+vnEqtlZ?fh3_hz5SwrQB zW8T%}>WC2r$$7no-4a$!bKZ>28BbP6%ey3bQHT*8s}6@SA8>36eLAYcB8*kWrh}sU z$7W}%<3t$Kj^VH?o2d?rFeiO1nSQ>It&s>87VC|raTm+#+g=?(!aO~yBuXP+kgGv4 zaUzv|p*m`WxegcfT9u5#WC|IA%#s-tyqF6M)j<))z3`@%jqHL+cYUfw1L6p^rYF<5 zi4X{2#*^l4vqr^~FwBf+lek=$g_Hl zGcI9@<`OPqlc_Xoga(2EN-dZ*L`o5?QkbW`xBD z6R8@0u&{*4mFmnZOpdP1PF)WQDEh4$iCo&>|E2AaV@x3N<<(y*=1aQsKGMA#QK_^PwKJi{40!UuA8^3Ln2JUOpWO)HSWy_ zt7VyrJ#XNW#VsRRqz?}F@U#@ZXB#d{aCuiRrl%R6j$kt$EVIJr-ZhU2D zmuiM_!c-rcq68;7J-wD+q9$_HGUdWTxtZ#42&2%<2Ck?J^Ydo(WZ6FUVOwMnbxq_ZNujkAf_0huY)XhQ-9VkrWJdsW= zpx;V$r&AbSo(znTKRFwetiw~IfkDdCwJJhj4#f0=v__6q>1zuK64T}|>P!O*1T@Z+ zu0TNJOwXzU4g47~oek}&R#jkuBP`~^PIP*7>?#cktOAUjaVw%&A1yQJQg}*`2g3VxN7S?+<28-+J?oyI6*acVx=cjL z@ijrcVmVTa`VHg-weOfQlB~;cZpp-TB~eJ8ipLAttdXK7iK5nY+Z05UKZ(i*X~wj^$gq}Yl;W6#0M9QVSQmxA0F0+hx&$$;aH+uALx(u_iI@rf%@NcstCGetg!E}61yua z%-c&u?EjeWnlTdRY1LM2=N*z9YTO=C>eI9vtxA$c9_?$)WArk0|w=fI)W_igEA)7JaxwspmZfz9`qFM0^PG_Q<)q z3bA*|3y$HS#Sw>x!i@)%x7D?0X^{?zr&Ab(l#k}q(S=+-nr0a2+$)R11JC*yB)IeG51`vl~I1{ zRl7Y@rz;8N+}g|$yKDd9Kp~dq#fEkrX;Os++;uLQM3zNp#_uwI4G)`DS>!;AZ z!z0Q^>M3?!N_Z5Wt$GM~q<=UwM{^jIYTo9!0af;$ov<<93v6NRbZFm|X{DZ>)+@lv z0kcTfwDYJ>BqIzoX%G8>f$24xKS){yxxY};$xfxN6U8df!GgkSOb%ecCCv}2Hkb5q zNo_uS+I~WO^BMqd?&wzPIme>{yeaf{x0KF-ori6p`T*2rIdtGioATJ^)JHC#ZN;#J zY(BSY=9e5nQFk5jej7+pk9Czk>F%?i^mD`=e9*BqJ$OQ1=Ru_<7+z;sK|}4(!PYM2 zhw7uAsyV^aYn;I*nQz{@VC3UVmcQp#1P2$6^pVVIPh(X`8hVH}zz} zU@aC&)bQ0KgBR>|Y+gPxKH(=X!)R%~8Z9l*MoU|7w6p*itz*6#tz&*0Eu6T9j-BjK z>N(h;f(@{2)>x8C-MCPWP z=IDsVeT@%@q;Un@S-Hv_B`bl%z8$-_jKn^rStt@e1tj)2D$0lI6Wg&YcVt5h*oIr$ z7;6zlV2y~7;gWzG3I=dG1}A4Q9w@qu+zSH^!Pn5<<36UJhEAOJKm9b+(OX~TRo#_G zrHEx{i5&eG{3OTtRe#Arfz{CDn*$P9J>Iz2HtJ`1F7SNVG4n%sLhAdxav)IZn+0ZL z;XO9w!+>+Q92#pnpoIBRP!AnA&?EJv^T-P5#!mOxzZ=3!1-#TdpwzRv*ee^Yg{(;q zC&4yy$pf3DkQyDk`cx2gJVW?}2b^@>FyFx?kibT`b>?%a>5vz@ApMbU*@}U&bC>h{Fu$mydJ=0q3Qri#cmoA5?_;8L!Hrt9y!n(qMw?f-yjcVAq>kgazG%f{Z<)+QGwh zM8{Tn1K|Oo=}frUesTs+#_{C9QRR^`5?ia_LC<82RKi(m1{tB^rDh*EXg|SH>gVb_ z@vNxU#;Mm+Pqp#NuXe4hKJi8^>VIsI-zF|ZvJd4;>w(nE^Yil@`*Olq(8|9jYZ`}r zM4M$>m)o_@bDCXUHzMOBDk}ap{4>TYk8+x>oU#kpPA6QQ~uhDPVTp0e*pyeTHNAxeokAan|9{ww9ccFJxLev=&~f+tN;N z75h++ww016!jG0BJRa?^jjPU&d)3F>A8%Z(S#m*;D8JAkAM;f9M=_7fNRYvCiqNUP|2D7huj5TwcVTZG zw4@@87QL!^vZ{;XLaKb^uN&mU<*~=?2{4ChPr4aV$7)X(9xE7gd@bZrp270>%gRg{ zf70fcjo(kuV{wNoMo_bjix<+JT)Y^@?{Q4mT?V-I&aQQFV>Go!HTg*ROU;M2lJMtX zA9;9l_eG{Mc{82Dm~5>5oE!?>|DZBg2JFq_G*wv1tQBDuK>>=MZBLytUkG5gZ$DX| z0G9D7UHfDIaSKf^(%50Z9k^e zN9Z(hWr4-Y6W)C1|iRpcS5@5`}Qd> z)o;J+3>4qEht(yLF}dlea2X4ef!wh@To(fwR>tu0H|keVd2eF_3eQeG#JcJD*UbeWxP-UgP~1TH0;0jVu#Bp0X- z;Nt|?eigUL0s`2wv1VPSdgxG#K*0_xKSHQD-mQErD5x+~nSy=Gj&O1o@ZqSgw+yA$ z3x}Np>Y^I}aEU%ayMwCy!JzDpdrq`3_-_wAHtO}?p2d^%6UuCvoo-%OxWkxA=-I5k zMyPmH4($x@Q2NV!y&4`188Y(xR?*H~&Gk7&ujpm8dKF5T$?eVqhXN+IT!?laITchP z;&QMP)gXbBgRt^AE*j!${F%-1CC(4Qn0dz8Xpk6EP`~g_KZTrIBX0NLpDE2pgsO4$ zzzHck_u$r989Z)Ydu+|rIyi6)ErGQsXkdjEs>a!~cYi&raccS{F!@vxLd?4l*^z)S zF9)b8IMNh`QpH8epz#p*A)EI3>_fT|cZ+VsSw3WwU>}kwv_Je{u#^v%^8Gt@`7h<1 zS@!Q~_SbP)$1E(YJy6fE_P`y7wP?o|Qo}oycll}9qEz@CjdJUbfJB84y0w6WB2RVK zUVjw9}5=Ai?S@oM#oCBEXOWftz(v@ba*AG93B2?z}AT* z>4(L;^_5}s#yOq4nuNwVp9Ml9V4;r&2q6ipi@O!$M9_j`Ye^fTc2~ftZM$#mAi1l! z5D*8+U3=7eg*dnn6zawu(ANV*>RfR|i;B~3G{fFht8ce-GfXuH-A9gXky|Jt?twe) zL%>v7HxyP@^en3}0d9JBAGjmj^r(mL05`n>!wv3f<&E2U(h|T;?;YZ%cgwgzfkyuw zrVjdpl{z53*^ksg5UpfbA(PdAtUaJ6E37c=p>08suxDEx9%Bp!(mUg+`@tQ}ex&Y; zG_c1iQ8^?T&cTBZ2iI_Ns-6ibRVg=mX2)JXa-+pm<+hY4N~ZqI{v*LO^_-eR0jB0q z0H|qMf18>^0i&kloP@z-a%cp;(|djQyX}-FBmkcB$d_z##aDue zvsdNDv#-9($NVhr@@_x-3F$LZ5V3o^ZXs8F)7M9k2Gd|qMQx)5%BU_SRn$Q zKhScI5HPI#DB!&i-i!Q%z$5P3dKwdzvuiZR40m6gTIvgf!&~IEuhTB~9ZJ`2Aak@VZ1wO;c{EYR(b|;@9%QwBYw-w&k@#- zwklu0N3ibbNL&Vb08^9JpGZMVs?FdCr(_8wzT?pICpKOS_yilcq>d=c6? zhfUshs7@TVvDnmU+ayujs>#Ehg3Cai^}`A}I8An)^P__kyLUNN&wH0scYN=XQa#hi z0SHa?l%#oVVtIoxiPdeq8K;^)lo~n-s4|c_Htfs5+zf)RPm46ZwK3P`_&L!;jI=OO zc&6!$SPIt;5@CD32FPZ^2T(8}&}rNh2C2^wyhlPK)Y$C7(}LBQ(|wPZG2INTIPfBb zn>!BpQO3PaT)iSdC;lX=HxIQ1TvR!Yp9nCGsfpMVJC69;|HxL!E{!cAB|?)%dE!{_ zy`WJzwVwQsiRkFC_LMt_lcu>-vz@1KGa@j}b_m3S z&QSV(08Le?Phm7@FufbD&YwEz%k9M)>YOK=p6b7H?CT*J;!6Z1`Z;|n0KV{g zAiY=4o;!X@=#{f)K6FwTQ;&$vXjPDb zav(Z#K*#+t%&HQ4+`lP6y|NH%iwKnka>*8O%o2p0LyfbQg*!Q0S@8dC<;MxtI9vIA zKooM>V=PB(2--!ISl=PMya5Ch@ZT3Zy6nQ<0r>9>;eBWB z5rmW8SR9%Tgx;te%7t-KB!`y6C&ZR|RM7rWQgD@krpu;TTnB3bDczL5NL@L}A zh%AIX1d#bxR*l9N3BLUY(dnj)hzV+UZ6_Sp!RN5(cL>VE!^+PD63UdZT2YPB!3LCA z>g;1%R${5gFA7y+#1a`~O@qu5TmfVPpF0gJ#JZWb3-=`JhE*g@e3_)Dc5HAYAe-%^ ze(#_?47OW6;7(|CzLCnXDUgkwot?7!@q^b3E7NQ8qx6p~Tl1iDm>Jp=(MD64K8isf z*2G_$O{!;OCWZuM*R-YdN_x>q8R{yQpJ`=?W_K4E&!N*OMBJRKS0x zQ#mbt%gFLi(%XFzjAl(4dR7}vE*i0{-l1JY#}yOr%w_ddZXumr$#rO$bec%7Xn-?@ zzqy1Z`R8Q$a(Y$6yy8O6V1tGeR%afzn2haJ{71%Z$ifPWE!nG@iCM_EbTdiAFEIjH z%de&}rx=TmX!s`XrD7swPD3JrW@RPhRWrZD7Nl0E9U8!+;jQU3z{utCCz`yPH5O0? zn2H-FLq4I>$molP_Q+B`pUI7Mb+I`sk#u(P-2AgqjCp;+ zz!&4`6~LU(jN6%HnqabbZ9`bd(L;QCVtNfDoKo)hOzt4sUnHP4J#kA1fC!JL0d}~v>ebv zOqqmGYAu)XI}OAy&>pNsM_M#ciQdVlGcwcx{U_T(yG9I*b#Bn>7S@TtBxT?+U}>y_ z4FKod*1rbudZ4Yh@CdIDr*6GWi@~*y3(5 zv8zEaK^>Zq-k-;(=P@2S*2(AE7Xi)`4gWotBLc)?X@+3@vHC_v9i@dOGJ1R&G|rXR zta8$ffw>+|#d4Xm>;L~e+n7z49O-N}%sOYlB!Ek43-$uwA{qLhlz!z8j-`PT%QVbk zvN3Ts7*|h{0$jg7f5LuLY;!dG#|sPjTEDz_aZbyo3wg)~6Qp!`N@7H3-dR=Bbn2UNRS#I^mH311p3n zZ8mNau8B6pc$E-)J)Jj3ECUrGAm&M%CX5X1GFcWpVjusSkHPF{tWpUvV0TfjJ|1WGVV8Vf5UP%Tn4G=c6G|Lc^Dtfc268filYb) z7F`(B+U6~HMeEFPUYKw1&{mgB=u6o)0m6W0@gi<4$rm3cz+1u`3kwX#c9@+e$oY^G!jkPZz=H|S&-j7Q)> zotxL%R^bQXiS+TKVf)c0APL3^7!id-?lRaLD166>))1X zcf3m#u#IT|&?95%3|vL+7P!$&b!L(}B+m&9s!0(f3^YS?xA+@7mhuBl7rdvg|AvV$22|k}ZJe zX%$SMR^vZ`iq&!~zsA@= zb80MdEpXQAkz#XJu%;Y4K(;nZ>bo1{pbS7zUvkm=I7aVAY|L?fk`u;)=9H(yW1|VP z9r!oY#fU`-`lGjJ_Xz1~ddQpUjSwGNb2{aAt@E6AJ)JT*sWAK~ShI6gRL})#Xs(JX z_F#^#RX;4rJ~Xy+1<7H{_DGx6w^9ABBnPARQ9a|4E4UMEm?x7au7}zzS>h7GRT`Ix z4@$BRBbi*ZTJQm>Y?`$CW0L%8Jv1a=$F0|~6eUN63l0=bL_O{zv+b6iH7PyT?$tp| z@&8F+h=1LM_i?_@NX|e2k}bmlOjFWuLtCH9?ITFM6zR#J@r2)6(&bS;7E=8!Ne;*W zJ@qjU?JF8oSV)Z9E7AdY#1(+w$Sv&_sQz7p4;r9&%#1qhV%6&f7QNM0qB|^q@boC0 zzEm8pIYM#fK~`}GU-i}5g>U%(`l9}e@aP>%u9`05EBS(48g2DO`pnZ9coW{>MgiJ9s%96^Im(Ao zF_mDqyu-h5kbNFAqz<`A^qPhXo>@c{EJIf{%V6g~yvYLJt;3%-_`$zkR2CVB-<4e4 zZ`?ZAn5|+O))^6dddV}8kmr!wq8tKyi8m`B(JH+F(@)bc%D+&WkMKvtDxudBF-#v1 z(uf4x{-9B;4|n(~;>u>Kb~Rx5vP}=hefe-trXs#PE?T=!=DIR$)-<1>!DZ=^cJ)_$ zang(M<)L3h?RM3$CqLqOg{fNYtxRpQT*3L7e!w8N_#jdN za>wM9K>qWRT%WF=TqRdXr4`}ajqNw*d-{{>tpK`Z7rz^lg*NZ0-P%P3BhT~tHkrGk zHGk7aZ`>?u_x#K(JE?L~pdECc@|=~-xI9*z%D~Z`RSk$kM{a5~YH^109jlTpr{BVH zCp%HrHCj!hqwPq`+a&qrdgOI!<%kVJgo8BSwSJp)5ca2%Ec9}6O>z`@x1LO1CFhn< z$=V7t1zYM)eqNG=UgzA@_ADvF1=)L|ZL|8#207U6e$^|k^b@}nbx^fZy%e&r=XSQt zk#f#EkaV5|cI6x;CcJi$SGqvpsn!`)NL0R;V}DCks!Ob77^fw?W=FRUXCo@Ez}*WC zgw^0NVi5sx9>)IMuKu$m-z(i-)yZO(tZ;R?=p2IX>6MzG=QvaTlqBCWTVN0=j5vRJVf$t;b{1W~J1*ofwE+_NEN^MSc%;sg#ibZ#j-8$uUCDBVXL@Gwx@WP z=-Dqp1B;D1%d5@SQphZ&g{$d7?uDg(FXTradmYCk>#?rillp9Ju3!JV8l3M|s}6Z> zqs#i%7pt*9N_y&Z>|B%m*Ke1Jz#Ed-V7h_`l!ML^1JSvYO+m<%TD$u9!7z-ZNXm9e zy364oZk>NV0Pa-9?OL4EWgGK>3U#9%W6o^&`$J+gBo$b#R%e*f{8IJzE5-CYly8C0 zUe8123K3a#keOyef2n(?o&$uf`?3L%c?5KDIt$5A> zgzXO~17$$q$7!9pe1h(r_C<#2Y9sPmp5M#V%4gf2{ab0}BP(x_Lk(E_MwzuY-)QN1 zGxfaQTLfDY-`{gkiQkp)&+`Q$M(UQCO{b`(!F<=8fg=K(2edZJ%Bymyar-Id*4{I!)#K9Wesp~>y;Ctgy@3d&_ejlEM!9d1!o1L4B>#nBs+bI}V^W6?|F z*T-i@=O(7EN2h0|u1(KHfS6lyX#4hK%F10w3@)dadf_f>%QQY?d;73o<1=LCU7*MI zvop$DMQq$LOgtAkZ6&RVF_8fX-M778d95xUBpT5eS(EkAN#d#vHQ0z)T95y!m`M?j zh3$>d68A&sl)>;SPC5$^#a?r%S@)TM^Ebm7U# zYh&oGGv>7O@$$#ZawxpLO{q&;D_s3RFDJTM4TDFzj4DFcBO=^gCqz_Oe|inY90baY z4Ii;WP7b|k`w`{&ddMpm3ClV6YAH13eAB}n0{hv?3J5OOi{PaWPnjLR7o0D5k168s zHWpXZgW@EF^7s?=5yA?n;0mayzzUF{bT+i(J`Kvce%x2q8RXy;Va7V3!YLlv&>hEm z{Ia3EZSyY7{1$Z&h#$@6=DVt(g*no^8!xf)uHi}lS(%TV*!7SiY~;jdFvZhDV5hGV zzV;qf-Utwv+vIHX6zx)z(z5^+V@i9=$m9CRh(3aTPPs0e+P0$AGR@Z51+^~fJYjRx z;7L^M5yod%q+g)%VSUYahnwxb=G_2-hNbMrcv?~Qh?~O|x^A?CptzqB+O72}^(iAR z4PzW{-d4rV3sD4u)PXWf4ZU%e5Zc{0fyl26liCp^I*^n^@09af4??w{{)U&nb^t!swBi<0_55j^q7k0(I<}$=_Y~SedWeI zAn;+3Rt_mUTY{j>Nqs1-?ZH+bVW!TN(}VW}bumvt8M^H1oiI9(%b|Vu9aZXcKDgfd zE73b%56~8KXhV2h`?PNVJT4lzcmUIRMYX=!09Nd9iThk68!EbS`(#?nk?vLi7&$`b`Y}VxMfS~y+|d|h+k5n#}1#m zM^q>$eM|63Pvd`Dc8DAQvjNNGs5l}!1*|OxTJ8bG&q>}Ie3GM$VW@S7hWXQhk@hkU z91)+~&eqn!d&=z$W8#+_Isvm=&#E#vz2m7PnPqvza=r>n3Gr}^oZ=J1SL@@QtXK88 z0&OSny?~K>L00DkGUNfWIyRo1sF7yTokzCqi-eRU5@UmP&sH9#D``Odjtuf%SO9%7+NP z{fCtL^u>3a>zet4tbu}LPH2*xXYT>BJ{w@NqUl-a+5IP!`ZTWGI9ZWiX1B$-tH$X| zChgh4n>47KXCuS5y6J_w!IQUyAF`kHLC2%S_$|8+h$%4+vkKq0sAmFJ;mhz6eNeUW z($6s!JveATAyp0B&Aac=gmaSed7S$PU3t%I?ZT!NZ@@k}qDTG@8JGD}kJJf1XQ`UX zn{I|#)t%^guz(SWF!BCmnx=pbT3%5cHwJ=Cb;?-8n@c-EU*vwNsiPo@D5IX4+|B>@H@%y+ENQ8IVPtI8EkWiWe&kl+Gr|uDUNSq!C zEISxa={E5PIXf)kkj>H#Ll!$M?rjbY+aX!GMU~m8y$DHVm$WN(3 zbLX)Dqz1_$ef~iu(CH|i=v@Ysq7uE8a;ct!QhWRp7v|+Xhg@L}BdH*Vk`L}zg4%o; zKvTXo+1wiZd@FbLRvz42Cs%LdnRGAp6V?=Es*r_zuk1T))1TxUmy1KG2logo-roqn zV$S#qhAvwGr}iGS0X|~^oDLYkmRD^7oZjn%S>#Vq`YszjbT6duB)Te`y*#;%=KOp?} zgFBoZ3}6Q+@4UUcX|v^>kjF(d$Y9l>xA&`?{rQT1n~O04bnu7+5ILCi=;)C1sM~sU z_MG#GygGX8v1gn|l*q@UHMr6?c_{M$i?askHhbOA$kW#7dj}tOzDF5wJbH2GF6R*? zyy?-NCg+hQhA-}SW!2iji-S|nTlS;rH#?8)Z#^Az9u4u&zqIS1^N4^LmqRZdYEd33 zlN_vaJWeOBt$HS7q!JG5Uuu2C`LYGlOOLvEwm^D$*KX%6`_bP0_M=|whc7qx+mCuI zYP_=7MS}gPr`LJQ`qnFF$DBvBV?}O!O)A;)MS6A@_RPNB`k1pGLB*auKI%Lpu<-0{ z(oWTR2DGbRmt^01`l#J)E9nHr$+v5E{+D0ptLVO||D!?J+~X3DvFx>Tb=2*k>yNa%w0je4)!eB)0cTI<9dO^`k#hQfKzuyx#%5?(_;@~=>4wl`H z^Fmq8ho7i_E6D-B=c8UKyS2?(2}ZoH?W=1i=Plm3QQzY3?=JZ7Uiswi`#1K$2J(NH zvs0!0{>hw{u#O0s{}XY3IeuHG>1rB2U!dlZ+EgK*Ddb0-7an#0ah{Fh00d18sT-;D z%zf=q=h^(c=gs+f&CF?f3inCToJo)8H8!D<`*(SCMYP8_;w3F_HFTw+JI?2D1cwz1 z82n~pEDy{-wR}y`>gLO_#*=+W$=&3(8k%GK!+!>H7!?&F|duCi^#bp?2d0nPv-1NROknd_RmFt z(>N+U8#94}EZRh`WiXpEfol{PRE2jP=**OvH}$0XVhO>f(8TeUX{-i_q<&#i9s(o%UOTS?5z84BHez zgKXBg-=ZRJprdy-#KlbUDPA#SNxx;{yJb+M6B|_UbS(Af|1hepICq*{f~pq1vK z(Ly?zOs_KXIN+Vf!SyxVs!9R?!dHj3qA$}Y%)DmkIS?zYp;sl+aeTQ#E}vd8U&Iu` zI2tvv#qw$AYq^XOHy6yf#=*=QFBHtIK{Dpyni-3Sd5oTOeryx9l(wB3kXxKjVxNzI z-Sc`172c64S z_}{T~gprMcR(c`Hs!k!C8~$`&&n-tiJ)9$RSn$RSru9{TjkUt!d*%OMV`r9PbHBz> z>HK*Pe9D=CC~R12Fk!5)iC<7GIc+JuN+geG4g3*GDb5Ja>FIo@nCYM#IEPr`3~Dhr zZNzg8;cC}Ngr&kpMl_xWc0Rj+KGT-ouv$+?xvGFFLL+(2^Ht|JT>FeMC_R7Q=J{`= zg%Edgy1&qLeAyh@*>7Dy(B(+f#wUtClBvq)GwuJWF`Iy!XOkdtw}RjQyTH@xt~C+u?ZOct8B?@Qd(w?#-JEm>@xrnRzkO z{iC`H1TxP(_uRAHbG}1NBAM^aC!ZR&p}oO0cQ17QgEi<3as_MwaO{uuuhvqaJa6Gh zga7(VFoet?-i9~m^adC}5Cm6f1-=9M58?H^J9zu~! zT(N$np;BC;;E8E*TrQbO2(*I8-tipdsEjf~HJgEE#=R-l8$|8TzqL*>$ktu`E)I_Nav%=oI#gZ z$`)3Wh2=5*Vdi-z`!eJH@wv@^3`0jq-R>V-t3AKzYOSx0Z2C2eDHohf*_f^VcY6XG z8d-)2l&A*N40|ic#(91XdV!1uWivOa#Bz*QcaEdsVPN{EV;DAr(`VBiS)792>P4Z( zc!~*8Qy%VGUWbQFW`QS0^p~l^GXHP>1o5qf6nx?(_GRW9YQSZwmO?!3uOdp7SKw)A z3O2hkMzt?EQu4wxHxXjDn*9*x@x?4kvS!)->zA0^xhF)3|8iDtU7UKg3Sr1Yja=?x z`l3S->YQ|WvtdUt*E_TD|S z%EJU2JcN?2J*}N(mUMB~rjKa_`tbsWDeXU^zP&3f{ve;ttfm&9rw!LOrf4wFG4;u= zyu+EEp?sx#AE7ArHFo--DEO=9C+6NrT)&pMKQVucxQ9_H`~4cF!cJb?$mOy*_ZmNo zLf`%ECM+#6Ij#w|q1tRHx-);F^rQ?KC#M>KWRV{seHb%kF5=!LtCL|&^4&3mAs z)t@0&TpWrSgd$kNZ$1nt{V({^c;x+BAsLn~wvT^AB_(uNKO3qNilHwCLkDUO`Gmo< zUAD|mT)R7!n4Y*dMZ!#|kw#BkG8A8h}ImK`+`ab&i%-&_+{N zv?IrTYPH`1ZB`#3P1Mm&Hu*GBXD1XcEhH!tXyQj|dTW{9xrp+`d?mQE8tl*R2cur@ zEFZMf06;Q-2JP&Gq3r(5)W8h~kNKp5%X7PssmfD6>iL z2|UVVSSF`!oH8+_@HBABB<5F)W?7$x+vm%qbuM>gFfjI>f^qsFky;`g0JN9uHjWoH zoFjXxA8Yb6dm1C`P5pG+u3>LlDcU&C)FQcPWT-I2_Gk3=Zn*^j8_^s)CR*aDm7d(N z=93L_lZ|VoXfv|YA9*A`cIO%^&cydgpGX=o38vb`+!`xY$eUu^;)Zu6?zJG)lls&{ zOSYV7^ixYZPCe?xkay%q;woNzszn{~*tL!6Dg)&deN*^H>x*Q1&2gw`f{B#;6`|FS zK?qt89z{;cW1%}1&+=Sw?qt}S=*)pyxtT`(_n9LNQu^Px7i>RKUt#6}Dz;r~7Alqy z4e&`vo%M-{b=(QR#jKzp6C1a^GJ>FiR~8SzD~ku~mBpp;$~+~29sWMsD=?Y>$n{&5!RtX+kKBIfX9UeCE=oT@?r7TR2u7gz130uRthJnN!WtfFZubdm zcz0-J@?c&rj{rfkGHn1zl;}wB5C+uv5%BNMN>`J)@Sfh#vM4UcBD}$vg8KCRM1II1sPr4_> zmoC;>Lj_ET*UPmw)~tCucKKwpzqex0{v7F`cN)!Y0O5j%39Kpj;?90S88#dQWMo%8LZV72$ zNa0RNQ*KEezl5X19eXI;srcY_74AYdo2E^rN~I}jiZvZ8v;1mCA!1KCY73ndlBa5B zu%}LSg%BP=c5fo}C(bzy+$3(@lz2b6Q+g9hP8O$>aSYm0KKT-y7}O(;PYM3I=2q1mew)B{BIqt zw?3l#+aH3^zOheJKjYzXRN!EVpYX=|&1H5TdU@7(2B?nQI)KF0Z-SI*SnnSRAz$I5 z#oZ@Cvq`6+s{NTwx(yaN$g-^NPZDt_>(RLs^8PuATUsDEx}p9@R&r6MMO4)A{7=)WrPMbt;(!-oe{yTUdAp+%&!O-VY=oPxk4Y{crGrp!UU>INSTAv5TQSAK2u?YPV)M=txGO><-P|C&L4LV z1RtCez|H$=hd%%}4B0{;3t6F%8{>!Tk@qiLly+aqb{d>lbk(~P0oZ;MCkDZjY6S>9#2l_L5Cin!E&3=sxSQWST=+n zvr{*3&&^NG^5_HCvq{_!g#ZQ>Q?KLQD3coZSp3Ed=c4P`ROV@x-_DXaCuKcrC^$_v zcLr}u$QNEjYm{uha74v0x9B3eqP`)Qmu{u27=37nl8rt`#%eK?UMOPB2RN>>F~;ek zd~oc999e8$5Awmu(~{iCI%*OSkFu@Q&q%kG!U;f1?0J|eG2+kj^JCKT2Ug|z__g4z z3h^Zk&rvoNAmj$lV>*<)7%^r=LdH0C#>i*y&fYTe{^f68hHFE z_@P3lQtvAm`l%v@;-imU-(vRo<4`!<#MIccgcj~*0Wzzdo=tKtFdIzh+p@MAwK;(ek zenOqc?6VW6EY(FVoA~VW?(fA^9Qw~kjyCvt=ep^Rx~H=Ddz6bWlzk0`-kzH5#4P*3w>J_kk^wK zS-+S}>-j767Hb{Wpn43(2qXI1oHQ|1N&A-(MaG&!?S@-CoD(w~5<*&R zOcy$mT;gKEkcRut704$WMbr^ryR;TD(7RtdX>Z5c8YVbAe0cjh(=CYIgPk3rwcDgP z=5rIpNSlx87G)Oo11{<_&^D=zvBaov6)POn>g>mI#IyKBW}SWMdl4nfDFa&Erp&Qm z?3gu)0ISYC&tzX_+>098WKq(bd-rX0@ws>YwK~tea|QC9`y%R!&i!y1C+FNILS`MW z^P7C>ul6Vs!-Q%n`}C2Y;(;aVkV^(8$^4Zbe98eA$8xwHT~DsArq?mjo&7bxYAmLnri>+>y)RCIpY(8`8g9~l zK?={=V+(OGIS#0X1l2D}Or?q8skIBkHR9>|ll(ASV14hx=HEM`h#YtSCP%f^`qm~k z^>ce93F#a)pxUJS6kC6CoL$m=UcMy3g7Nd&Ik{{sKF{l^rwFR)>$>p@jK&8Ub}mKe z9oM7@N34ZfrbkNBxZUZn#A|4CX+=OAHinMYWlNMhQ!@|2m^GnxxZDgQ>uz9p;d%2~|~>hd9%wSs;gPX^BpAs-PFL%s5!*pU!*UC=~dgNe|F?H2RvOQ%$iRKbuVD zjr^GP-}F)ogLF*44JQ%Wg;}FiUe9C;;(-Ek!}_Hr!&z5?|~rKc3H(?VDd5t%ja zugox{=VaO|T7TbCtXr$-m9=yswVLL78Y0au;?`gYUZx7mJf=^s7&;QG)KM_6ZDA30;7)W+5|Dh{nYm&5_`eC~e$BO0#l>LS zReLESZ)F#YnL@vLIx3_{anog)(r0h(=6MbEU;UeiqAud%yN~T%AJwA7SJ%~?68*#{ zKB1=kYXIO?FCxSkLrKm%c<27t)Carr&TPKVezu~%r$i(BUsvaL<=J$@<9a$UiT3P` zm5E7|Tv&Ad_&k1GdsOZ9AZ;V+0sR=*^R0D?I*H#MZ&k<2{#|kbdONvTSTPFAS%#*h zsJE49bnh|sYFQ6?vY1WNWR_GmlaGUvC$4p%Cnwr?W_vw3x03ng4e`@;r?dh9@ z6pXhY3i$1_52vT?w;vAp?Q;(&C#UA-Xzia?qO~;#{ecbTew|&XDnLtT?%lgR&tOX< z>PJfSNR6WAc3n5*jChIn-c>h{tvR3;0(|-G)cow*=FVd<(D8lBZVd(! zTHEPa+q@@qddPWG&5>Y~3<~My-bmb?xtW-rxHm=2hLSm5b1WDoW50cN>Tcrt?O7sV zU5PdWbbB?3-EI}8o;Q$S?aeR@f#7pFUv2eS5CP~{3Z8&u?irhn_&GEqHS6u_tDw2x z`TV7z0ZiyY2U+k;5KXuMT0ow$$tW1Pl~e|| z$f-pR1uJl1Ne+9v`$Lq&m`XIn4<8SehHD_U**??gkH(J_my=^w+KG#quBn;xFT14C#au-4SoTq>JO71qhhk#G&vHH9r) z1E*VdCS2IT!BBS)kd}i7>->bYba-bg$yW(pt&kU+IM~n}_9hOtwC#8kheF*%Slpq& zEN+6|InxFr|1gBPqR&0ltMJn+%dV6TYtV@Z2Y;xgD;Nh~1atNT3Y^&CP&XSVb~vyT zOQ&@`v6x-U6llY-_;aBy9tP)JUjGJEz_{~<%5APqxz`T&&&j!?To%ClSPw{0+E9(7HPuCN|734DiB_aVn$;W{R{YDZj;U_{SFe@u$LKsHb zL~UI_(jYd2hO7|>t|99y0|%}hsSk?-n86S_2d*m7>w6EXBOZrhlVs~^F1u>v3K%TS zq-YBBRf4IVwsi_iWK7ky1miK7DFrMS7qe3UhzsOmw$)m$r9ANZJE6Uv8O}S$8Uiw$ zR?>fAHp#RN4v&Uq-h@>X$-LYKk&BjaWEtgyl;0&k-% z!dHkxz%lm|mDN$yk|>|-xCHgFOLfy~NUHcIq zA$#+z{`7XUH~DO?V3@<_>6y)K;+X^33HqcvZhsQNjAwi_ctIXku)(^|MlY8+Sl7Di zVl{%Pg0Yh4S!r78^=YxxL38mlbK(uBqNP_0OsybOim@PPtV2O|HXOxeBh$s?GQe}-PH<)K?HPn zRa{vRQE|_~s5D@uR^vrk=;MF=?W_E?P7PuO)Fl9%jT|t zu5|3$#F&cS#+PUNg6eH#rByHcuLjicVf8jz-GwyqCHmpMWB%6}-JVAU=+rA?ag6{K zsI3z=?8D=AW!f+c2_i;F5FhV7x+5fr80JZ0mKW-))_27cJ`u)qV-su9x(&twgIAr9 zvHUdBe!hD;C5fRBFH*T| zX2r-9=nRa|yV1{9o+IZt1lN_CFGhCb6x4hv5<3`7C9-qvfIM7VwN3$uIHU%X0P`Zk zc?v+vvAPgR5vL%lfD**QfgJ-#)Q{|3qJY>}^W_NI)dLA4ots%OlDQ=eJ>Wuxxxt_V zU7nu{Bt=((5KFMY+^_BqbH5e}b6)__6nNIA-6H0GEga@L2yrs^n>%MNJc62Ug`x{l z<inKwU#+$W>-8F2TE5&`*mMu_u1($v&u$*18W2JnoGH~ahnYc?hwN<18G;c3W9Fl zo|~VV1rkmr)CSC0f!0(7qzY)KDj-$hKvhEOZ$^|rvh(6(S)fss5c_KpC4_pEN+|t} zh!V&ZzNH0BII2o${mZBlj90DI+v?OdA$$tNpYEB!^q`E9OD*b8NToi}vkM;pZc<;% zW0Vgt;|a)}{e@>uvbiTfxt;_A0O`Q$SW^gFI=ZCz}~zA;2&7=mKM-hfS71 zftfj7A|F?77x3?kM(PDnu=zzY-kB^gJmS@4p2#rK>M1DEpRQ#X7^ePm+29jS*vBBm zOlknG7>`V*^I3d?%K?Uf&*3-eL2R|~Apwi;x?nfa>ak{6`6WHepS=vMOg8ffi=lrf z{793^I8BYs?~2jgBymG~V&ic!G_XxafqpX}J807+vUr=4_3gb%;K*UxHCygWjR)x_ zbSr|{?(XKYS3DBre~en-*B&z!_*rqlzQ19tzs%;A^a(uHJsv^GT~QT9YDw>;VLn}B z`lDrF#2UG>gcJjF(Y|E^bBn1D?6@vMf=OsgNO%wX5e&%wv3m9-Te zuJ8hwho_lHFiaVFKY7T0vi2$%zi}h3Tqtj5U~bxnN@zfGG!`zH78xO6ajoCh1CAjv z;_ud+O8rxqy}&1w!9VwL9=IL&v^s=3t_^w8>G+BlsTfur%&b$<>ZD!rB-8x!n0^=4 zOF2v@Aj`%5q_`Q_J!X;GuLQ+gXY)b{8E|~XCcK~138eX81eG)~10~sPiY!V&*a%0) z!f!>CK#?DuNeIUYg69XN@0bCDsX2ku#O%Nu!U z1_u0x%!LsB+eM*4p3kycTux>%;?80EKcj@(+pPV?o`6&gX94acv~gQ7uZk9Fg*L$a zii_{I3g?1~WULrQL@u1kScd~g-Xx#iYsHSt&*Y&QoYo{CCCfg<>z_e|P=Hog&Slr0 zEn81tNAN)8#nLRIL`Pu4Qw-V9=k^Y zjoqaRf7>#}#o^6=ZSUxunDgu2R-P4bggEAKH#}bm05)ATNb=Z%nN^*kyOBhsGK)Eb z?wT>+T*wa%oDfHr7Lt;4mY4vaCKwJ*F2 zr>RGOn0cPTwLT9G+QiR?Jd<7`iu~I>K{<9sMeG|gU#`D9P9R016ngN`qD$|+3|(w` zr3f;Fvc4%yLw2pOx>nHf3#5p%m>c{QHeIN3Tdv`oiKHo6dW^3VhTr~WhGxqdnfw}D z06YQ-U-2BrymT=94dsrMMQ9QT40<*1o;R|H!eZ zC{pXR^%1|Uaetu`gUI-mzt(XZ9#!sXa*^M=F#cIivc6y}Ctm>AJRfg)pxoP)D9gUTR|w0jp@1&P+c;c#gn z_H=3A+Y`(sjk8Q`hy>$vIJw{`Bz2BW_0o6NS1l8~LB(nFs7uwUFm>Y|qeJa;;g_ds|9uEdcGPih z#boQNrI}p+rdgjV36Cw3Ei3cChM=+F-?O?>=e?1a6!Y(u=I+^9dQdTIDO;36n2m8o zg;X-lQb|TU6ul)D%Jr7|3;!&l)H|m9I`t}s{bHUP4g2-6D#GzX=S0y6wcmbX|Dj!K zzlF#C3^vy_m3Em1{~lKpyW({|G2eiurj5f<(HyzQukposnvL6}ey}^Ma2K*7sg21O z?54`OH;PI~Fg5Mt{vg4)-a0`fkh67@>c5idDY`bJnZQ5~sJV3CAM^lk3g&P_V_5Ge z7VO=7)*lu;!)*Jtg~UoS15(Iej4!5B_&@h9P}BC_p)3BhkCZ0iW~y*&ZDEoTL_2|j z;QRKT3UVO0LVa)h+Pc(WN)xe0=)rww$NbcTcDaSqzv5$#_g%aZEW(?jLaprgORbQ* zn&*>S-2x3%_5JO>qN=l3Kk1uTD`Z!ag(N8!5@EdfwNLExvxVAa=EznUY`hDM+-tAZ z`ex)}DrNw_c0?<4bcwK%NSNJaBvOA^OkKq@8d}w7ewY|83oh>9jcDzO9@uxv&kkGH zE1mM-I(}@T?184<5KewfMU`yyFxmru#K*X&EH=0Y-TpL@g>J#GNkkU+X3-@4T_Wye zoBGo-5$Cd{3@nFC_u-DAa7}j%T*7E@APP#jl`$2iZPD6;4M4ODNb!`?0`BdjX*VQg zwM{*8OIb`s>3>v3$NCS3%|V{$gE5Jy-zJ*SwE1JQ&}69&Mj86q<)Ms>qlxmM2HDMK(?_tQ)QNgrAO@?T6d-RPacEv#e=ng7v}~;*HkU7YyPJg|}<@*4ZhmXB5ju zl-;1Vg%xGTn6_wKPRl8YjVt*OB(YYBHXW`PK#BxXNyoJb`a#O$+NAgR$t2H!F2)j6 zr_~OBvNPW4A$Nj`sj60g2cEcmcM(&@)F~y}dia=n(Zg%n2!bj?J|6G2E*T4J&v?{F zQq?+jTTZEJy))~lR5^?Q2^i~pFb`TA++}$VnwZi`zH*z4zA|^?+Zua(a^qdTxhqrZ zN>eVT(Px3_>jc9|C1JLRxAhK4w4dDLW6Gm#a4aMd?~qEw9W3d9WMsp_IM@6E0uYgwGVbDaPj0()Iy3ez@ih| z8cZ`Jvt1nFmU4;RGUO7iG7y#xpafL647o%HSyn>e4JF!hs9C*MmMmHT;nUf|ZBgcB zESdL(JeeDpVFMiX7D&g?2E=9900&vl4d~ys4WMM$pbW_{QGsD5!v9~P90Xw#heRLEqL+<6 zZVMyiWL!9;`RUQooASliy)hL~QPEKhfccJO8)xq03OdG+V=#v*jMg<&D4)NKWsb#E z^`|6T=IUBHohYOVX|cqyV<#(IB5*pQNg*n`QX!NLBap>s>;7SBI5 zMw3s^Cr3w@C&ZB}%~I-)sOSi?B`#!_*3C^EKYF6V6#^_Q zdNEd~{=Aec%q266%L(d|G8cMLJ5}LAp$%?@5^^A4c54^%Wu$HI;L=1+ZOcNsJ7Ha& z+zI~b1o88oww^%aX92Z{_!;*mZ-jYof{N2=AIEV_S2&Ji`sArys&(?3r$Z-jx~WCx z6FA*^)=z(@MBbWeRcFGz4WYf6Lt;lZ?dVLP&mC*=DND`#(0Eynge#$q8o`)~7U$?( zYrpzsUpxTU`${L!7r3Q2UZwH{bLby=CUXN5Rp6P#;OS!=JLcBPEPnGxPRlBO^LlT% z;s76gtBiRQ2pe*%aw4Ie!P9OZpWn`C^35b;w5`U+QRkW_>E*uh>3zE_5MuArtvn!W#%@)c07z~e}Cb0Usd?~boIM1a7Fs7-CA^He-?E)kr_-_A z*ezqO?`Md0XD_31Fia)PbA9XzJ!b$`GheVXeyIbERiS67_9E5PDRu2dOr`RPRQHg~ zyK0d{eT!1;s)Hg^ef;5`@C}~mWYxOe2bF(b zVn0JL1cFXU41plW+{u4i6TWS7x72CB6>)E<^UoXn7!l;m!-mkDNq1)@8ze>_vpWXX ziRk`_I`@h`u{+(^AM{Il%Tv@OV=!1>0XGyaMH8ide-9qd|2N4ll^r8RO_vDMCbJ0P zY;VaizLGmR`h-9~w;deovGnlL&W`9sD*5#dL(C{N$AA)C z2he~LAMtef5VUO03040OYC6e#G@ayib#7O#{0pfS!!>0E8&tEm*@q3HF)Q)xs*y>i z5)6^ixj_o*Ch_8~+v*p0zm&n_%`>25;a3Q;IZ;L;5ah&f~CfzN9KL8Qj*L_L#Wd`MjH+zVnIh|#H(9>C7 zVU9=Jkeb~UjpB*P!S57`##Q2sVJ^)6bE9ftb724ry?=ZvSZqM1Nn(C!67nlc4QGjk zGMoiGRxq69xqs4Rn|RSm#SFaS_hc4jr;}M$z#2?uSqg$Rxca846$ke<`ZKkH3!c3d zmNlgqeu}w#xZ=dUp$heK@YLDh)k};y6}7R$emE65gHJ??Z^;4v1%ryuA`Bd$7Deg) zfCH4dCpJYE_85T{)Sl3!p^H{xj#8)vFlayqf>n#uyV2T-Gxb1gmu1H|XIR}@eP~$i zTDa&Wv?om{;goPsn!+mGYzn?~6PQg+0b?G|KAfJuJ$;jKR#4cbA2=ckyQq(w?45qB zJ6wCmp=0&4BmT|-Gjl3W`byZ{1U0`e@kpE3J=3AlFI<%F&|n{%(c|Li2%%4oYvPju z>@^LTYi?-rXTV%pp;>M%W3#aZJ%h68o;4-fa^$3%_RqJp3&UD*{j`=Yn5VEs)5Ts< zc_qnNtAq?fUZE8X^0B_r!Jr~Q`qoeY^;*LN)SFPEXLjBVcgF69qdpQumTk}!fku`w z^)}vmv{Ak4aj-T*j+iB^eY}LV)eyiVTz5dRwVgXJ4hvN$(_v|s@UVc@?MF`d$!f=8 zVH2xKnT+GD^^Fw*l7hMIr<#hH+aV!yp@}-e(nKA>Yod>^+_tl7&f@?j&B4Aqg#5K- z$?WjCF>(9u)OCTz*D0Y4paZV+NaJobAqYNVoV}Hpu$cmLUC6B`7PD)ZOparQlhUOg zb)FRTBAwlPq|7lM7OWB(xzyr{QCQ9{wc@!nw4w*iy}nk7Z`bjSsFc_5>A4bSUZ0O{ z?KxiW6YfiyiJzjNpi^X7ppbeRI{b8v7=as+-64rXb~pGiY&_iq4xJqFBV||7Js@wo z9lCJKj~=Z`C_*C%K`TDZWmgi(+%ps0lVF90-k6b5ycoLj(ET_4Z1MCGujem`J*4kQ z0Sq5*310!6gCX*@$7Gwz(NqBZrr_L>Q+{SnytXKnLCwh8BK1PCjeGz zd+#RX6Ty2=p89zr9jOmzA|CGL%mFL!aSqDi5XECAwslx%w&%q%uE4D8oz zSAU>mu^c59Bm#5Nh=2fOq{wCNcvJY^I6_O2UYa}I?q`mIi$+oXv|Yw$nxeUmvy$m9 z5}jddGu+c3uGO?CT@jEe1@uoT-n!7H|pF-oIrKrMJ|t+){1?ZSfDsrlKr%>q=? z4)01Q1JJkcqIfb8Keg3ax%2KRz4FSPcbi*mt-vZ2-al$pfSxlC-1`_7DpxiQq4xW& z@o++IWHS<)1#C%537x?-@W7YOU{;*90KppcIBgqqC9JPFpEitDUin5>unP@+e)`B; z+@OI!bVW|QH1v8h~lGFvNi57EYL=nsx+>;1(}chbScv~8J8C-ZrRPs`s#SdsugGIAK|K_LS`YV%6q4doH- z-`6NUAV^r5(k6A@`qJSzFP$mLoJ{^Cp0P3krcOwPZh@K3qxW zo*PSg5~2gJDSD~}c(o0jPzF?`V*%Dutf#bmtoQ=oz-4-?G+cxLv}I`wV(C(u2qGSK zX?Fzr(13QuJ|QAr;|0t`9a(V?tPD3G(V(W;&k}w@+yo@j{;#ONn55gRy3^jXX}#*K zp;j1-HIXkG_beqL4z{f^)E*Zl$49VX1YT zfc2|;yvT)>V{3-_nd>upua3Xw38);$b2Xh>Ocm1W`YOx?(^n|Tq?gl!`BQEr7l946 zZoQI&@aeZv8VKY%QYzxNyr5J3+N^_JWUxItFG9CT@f~qJ& zzo8=7OZGYA*k=Eeh_dDpkclVmF#W-_UQyMySyrnJ+4MU=w)tPj03E$pco*ldM}L@k zp2@zGdBkW{pCC^+<>BzQ|q!x_5kuXca$HZivaDnT%0u~x^72EUoe)F zFH%`p!mP0EdXky+xc0XZMUGlg?T)?VQW*J`5d|1GsTa;K_y@&K3GUrws$tZAJfiqB zZIy}rR&~K5{GbXri-lds|4v@QX8~)-f=!HN;hmazD@}Ep%c%1=W90coBGbq zb6za2|CMbAxkx)~q0WyqS)u%@v6y&zs#yZ;$_jG=l+*j7>q`yq1)26FTPatv8 zQ&06&!StvtTLw2eg?I?xDaTcIyv@Xu-8PJ@s6DeNa3I1mGP&zaQA7DunHE{sel()U zk$&Z_tu*8iXS=lj-RJosmdD`~dM?>8ZY45N+C%#!dH9-M=_|;NJAE}qV1K&L-VI;=*P3I@}AM)*{Q&E?dXk`C!HL*LZ zGOt1rkdaU7MoN5#AV^k1m+}qX_6uOq80{?E`-a3Eq@77>y^X^?;$LsV#b#+(7vXL3=lHR@ zFc~2vgoO2k9D9P6yAy!m3@0gW>c0~w8YMa`C!5>Clo4@QurVjwd&1fnt~XBh56i-e zbK~K$f}-8JU=e)X(JtSOdO0)(p~lu9tPdCagsby)gjPgJ%x#7>D) z$bM*5B%B)b7C#bBG4(v2-P)n{dbsf$>spblqG+4izR4fc*r#VL*m`MRu3_h_z?+|Pt+4yS<6#*WT%)yOC~rEs$k4G^qf*Dr>~>o%=rN#yRBFfEBgs@MT7Em;N(A5X z3yJKESu-{WgB@OP=dp%eIs~HKR-``7e%;Q-?e^R5p@9_zK^F#<0q;(8Gu1f0X$NE{2odP5AtaAxDSM^8|D@aW?{di3!MJ^Hxc z9(~;Q=n2po9(_Duk3Jr%M<3rEk3L?pM^A?`4v$`fLkTxN9)=r_v)AuqN~FKSlt{nd zDUtrBc43|gPyv&i2GrIvCplU11^Q!nqrrxayf#8XFkb5{{`p6VVVa~3{akF zwjQ3vAbKk+I;grJPoP5w&saGf0!zXtLkCWZw~m;fxIsWB@f}Ff}`Tuy2;^SO7uTWF# zunYS)HnVlkQ%eFb)gPST9V&(8Bx~xX)=xvUtS#y2CZ|>q`hjRBh_|GafF|xnw12(F z&z3+h)`@HbL|rRtG_wALCI~8Apf3Gxs&Zlf(#;FYiW`l7C1SPPykV@r%;uK#3H)Tt z`ji@IoTD!EP9&SU(D@I(yFPzP?Sy7Wk=@HmKQFo%az26nB${IB-bm+>0Kgg2Xu`E0 zqkS%-1Z)E>b_$gEkZEA`N*XTwC8$o+ej}pfJ(RQvMtx}ArRA4u45Yt}>4mk`wDGRl zvfHD_<8j`%+a~&!`!{X0|C5Lk@`b53Vyi_*+hfu3853Q}`loapMb?`9Kkf0g_t8rc zd0sy{S3tdw9$zw*Q?VZUj;)7oTNj&o-OTJTuoj_QNb9o(de)OqU(qS6ftOkO2QAz= zgSF<{D&+Q4k3Z{6S#(xrpm>Z|seGY_`XJFO$@}vixFLSG50=eg9>8msOb=`-)7IBE z$C$9bHstv<>Y#&U(xDHyXx)(<(0c5{L84{-$t6%Y5ZrMH-d#!$V#o@KS zcCNgyjcoQc^(%Xn6TEFOn@!u@X>oK8qJxP#2bX+N-1IhQ2UCPhRUog@8cX@xM3efT zbt|faA#{gF%*b(Oq=CXIT}8?2vM>LW)0B zqK9h^`-DVXOz{%3L%9?)EGFTHj~uIza8xdZ#$NXcC%jl-08vSaWhUb)YEa4p zk+$>#+RN%CS>ZXV zKtQj+b7Z2TwzgNucc3(@oo6fjF*fb!;iF+}T8ymF(PND}u|l-%M^AT!x9u_QyAdV0 z2uo|;ED&U_s&?!)0AX`aQE$m}O6;&}-`(TWok6iK(azXe41V)5kFRuE!GU@0(f@=# zeuAVFN^Oy#O6tP9(2-@g41t;EO0UOT78T#amI#4Rrvp(Tro*i@6myIJfv0#dbTF z+~V(JdMEPsU3%|jE4TfVeqG)c)5u&|t=p46`rDX(HwE31OuyUF!EY9RHKGJ#&z(N2 zHsDF2<0~5p{h5eQc;>}Cv{X}E>+~ek`ofq#jad>*3jfeAZ2MyBxLc%6*_2TxnLag> z$PCyVzv6z&m`=GXjsy!Y?lHf!uu{zVfHvRh%xUXNSWcY!e?C`^WBZIg=5F@Eh7$HM zGjA?=Z{VPaNYw6aKkrYXmM_^vVl?XwXwhbYouYmQY4E+>>I;u^F9P?9D_z{rv+TLOHv;L6t3SeiL4U;M0jxcW|bBoLI{QAlQJUISeZlR!?hSx6M z^691l!TMIj%rV;L7@@=+!bec{p7RMGVZ~U1gO&H&_hvTlt80CZKw?{dT z9@$OJv5|{qUbeWSKmOxOSIhjd$Yu7K*J}v1k6oLpAk=2;J|3$Ni``#>_#W3<)sOwK zxja%~|HNFO4Z+#{w-d8d6W6C^3BUp_`|;t6p~VbrA5Mh34=2Lghexxw=dFD>5!gO# zj9l10oD6Rt$R$3hb@=2GZ*d^z-oAHj=5AtcYGQWs799$T7*5I)F|f_43vY8MxUADU zeF`qO*qq6k>G`R*<`Xls6O(tRXm`j5ukXDfr4JrcDV);cwF?~pxZjNGEj{Yb`V!;vH(HT|<(>%NeluovGF`zKP1Qy4 znDzLTuw1xbA~sFlR)11HHrdkzz6c^)4qi|{<%ge1GbYnU0kcz?93lIk$QjRYrIbq< zuC5RTW8i_Xcp$F+gfGn6f)I~!uq5lCcb1d8PKgC{s<$6FDmv8(!k36{KRGHd(J}Q8 zh{Ulw>TgKOS89(!jkQpSHk@L|;S)BiV_-4h;($=~qrR+zyBMqHg&aiFln6&?bd785 z*2QFo-?Ny=e54FJsi^^N{ODcy@LTKdc+}QyyX1D)p+lrrckcNxl7rL znq+Z|+uc`Y`L&T*Tj`s^KU!ZT(`%-|xUNL|b{^1Bl-3_R>Qj`ql@HF3Ao~^% zVUXAEAG=&xb{H2#{Z}S~3txVkSa(bhDHe3Iu9J93esLOJvDpyO-_l+gBT;14-_c!R zru>`4mA-ShnfD_S*q%T+rkxRB6gn#%0PzsDK{Q`%>k36&L_pLAF<#0aARv!O8PpFS zI4-CkM94tGH(cK)qwq1$VO&_SL?P5HBO4B6}`kp#>7d(z3q5?S4j7^F?K-4yC*|BAe$wZOr~Fd)42_# zHpkz2BA41^(sAkVF+nJ#Lj$3K7Gi5>Hto7H^LrYKcLJ=`*aGtI|A{DtFsz@}X15-g zz;`0^U}imeYtuV~t~OEhC!PNS@I*NyzlvO23aA{ci;W30QgA?0L*iMd#4}pPo~2$G z8J)#j><>C`aQQzXiciq;%r2JB=X#b(Xpe1XsY|djYTsI$5OCh0YUE`@PT_isViI2a%EJ^zLh$43w zr{RK7-lV+tyL%LWs&u#KglmhNNux82fq2oQMHoYUW;l3o_a1MAnB-^Dmb&XVxjNFx z57Dy#VX>_n7#l9Z+LU*n?&pYx`FnG)eW>?o^Bur zVr*}RKZ2M}uf#1uh|`TxGPU6t#`=6ZhTd=IGBFQNM|AtVCRMl3Ym#^SC^B{XDAIQO zko)!e-hO}FuPsVyoC=r9WDeA{%UdR+5bW!r5E`Qn1=$!y6UJ)M8Rg4_u`RrDSEp31 z-HG7zGn5SK4z#&#!UbYq5x!u1#x7e5Y}5h zV}yLxqb=vc@>ydl5R{@PFoo-F&6H$mn}jD7zFiOIBZ0RLkUTNgW{{;|}= z^8RgCx2su*m!pewD*CT$zanYT|6hZ;`dFL#Csn{=cQ3e;$JDw|-!b7+37A)>wVReF zeVcWH$JGB6^l7mU_0MGHvef~R$XnnDiA4(?fn=GAdo)?XvzYo%Ku!ZtwSP%ww%R4_ zqtt>ru;SH=OGmxw369M!A~oqLY?Uupt=Xf z8DQSD)gJQ`^TyEu%IbxXrT`Lodu?5rrSQZeRtYK~eF^-YHnhF|l=K@KQ-7T(ZR%Ek zPBzg?Py?NL_swf-KSV!TZ9_od^bUAoYHh+jct_(I|L(z=&~>1tXT(DTcwncBoAf1P z31D!XKeUy-v19UYC7UeKJ8`|jg8tv8bsn!r#>|6PqUfVyyvZ%{y_;nbi$vB^n!iH? zH|XlG$WAa|ZFB1sr=#Jbx23JZ{rPiRZpRopbS2-PmEnF9#En9oSBb>&;Cr-btlEO_7>)=yJ^lbmPd{YG4E-%n-Gu7kxi<^2Lm)7c0m6J} zBM0%Yeq#4=kHxH>;{iww$;jBL=IW6V3Z%wbCaN%yig9LNOZvoYYqQIOauFF$Bf-?C zGxv;mucdP z@zSNaYEX=qV+}$`r~!_I!pE-dQ;Xc&L{BxOTilJdm0qui=51 z^ESG@2a-ija?)*LX?u)0I@0qN%AcxL@We7PY zPior^IgA43TR`??L$7!Nu?O9}lYPV6?&ihg)-o8uZ1HE(%?-ThMyyf1=se%*oAy?Z zaAIy^C1z*$2)=`a(#@tbWybc_=I66HL?#v`H`~sMXAa{nKwG$Zeq0@|VE-{aV8!%f z(OP@+%C+sb)>@QxJ~t3A#?+&D%$+w>C7p#gq+jTKMR62;I6dR~knPkR+dhnP2Ht5J z6iYjgryWtEcVn$;j6ZFF0IA4`+->jnNw4jC%pX(9)3|%~Ruy_0-y_Ozzp4JRFCo|t zYau8mv#gMHH0~WZE#zmE%g_DTAxnNJI)g~vKhk4;L=N~Du+ICvqv}Ta8AOr@Q{S_?_xYH~bb6{>EFl(DFkFyky-~ z<|WF0yoMThOZt3mYmubCc|f&uois6mCmZ-F0S76LQ4inorI z3s*t)!{}u1yUQjnw6Y;fmR@^j!*0J@d&IHgm`b_U$FDb4X|9!R;`>DcOiOxy>|Ql5 z=?Ty@h4(_?07P}6_Js8jxw~*A7qqxI%cj?}c(mT}CFU$Gp6VB0GEJKStV8?ZTm+1! zfokU0@-cf!rVd+f?yy!#0Rup4mOK0W0jc2{%#{poUCI_#lZ9n|6tRD)A`;0V{h;A= zb=l|-^o!MLqd&NGr%G%zMCF4w9=Jr8%U&!6oRqNdDW+1>`1;iQ;Wv%P0OhSj zKdd>34fR6?cf65=(ZuFnQ7I=H={~G&_NS4Kx7xFRx*-nC5wm=h#fL5ZK7pie@&1i- zNvQJZqnZN}R33SrKpT)dLV(;K9oB*d9kISfEU7VO;KgyPObw39r%}``VoSQ*z^&D% zYmaaD)+)b-!LXE~p*rzT*PW8MPCTZnO3mjY_&>31y05`!KNLYPuK4T%|LjL1sIC;B z(bWaM_vHx6q0P?*>865xcFcAODYVCDKN>l3()u1{q(4KSX=lO{)d{8M$09o`bH=)U zEP}c?d;Jtg;IpRo?Ot{{tEaynQEI*tLD{!I3Ck_dv7_U;lWM~0h6_vmN(4ox&ZQRU zGaPmwaXvk&(|;1&`Dz4(&_Cvjo3t(NII5&gCVe%6#tA2rJ|b!Xdi6;keY#}cc+xjd zs51_ND9!wB@ak)kTFs~FD%;`}uzH{t3m6b&vg&J*20K`$i{o#B+ON}*^aosTTh!)^ zPp+j<`DoJm^+Q9#$XIuB&1d!O8Tm^uUdD)G# z_Kk>sRy=!n<$H$?(w#uoU2MF@TxkkUg;hiriq{2xRW z>Cic}DI3(0V*+ndh2J^hNFQ9|m~dSj2sS||!<+n6H{rAZzDZCf`pf0i;<8@IB{O*{ z64$5i-q)$d6Gs@|08(e#cmecY-Rx3{x2!8`erUOp@tC1@W}68FmyMSh?Z?av}g^&+Hb|4~G#V(<~|FCt1+ zqk3p)*{BBm4DEA!lwCtA zFYi&pPtZ`j;;%8gfF2;>7MHOiq`L%v~)#NrXpSsiZ8I&%)_p&(* z0n9Yv{)d@Yo4J##hvZI|U8bgpwlw zX#eegMfOf{=RskfCRNgz+btxAd^XmtHKqg2pZ?3E7xdBq7chK-dvkxc7hmN6n>A?E z?+bITgb*fx$MaDoWAcm5#cf}R!=M;#Dj2DR_Ua_`V;4&*7wy;irS%lbTFffCj zhacs$Yq>>|-X%k)X#wz+*H+L0j&Ec$Y{~$>w35ZdfxLlBQViO_4BB<;y(Tc1X+wxY zdMKmLJ{s<4nnioAXD_FoEjyly0O>i-7I)wCah+C2pApd*d|-aAWAFi`vzByFir1!c z7LB?M80MlWZV`SzXDp@=C#?72r!*19d_4Y@R)F1eK4ZZsyfiQi#$Fs4OwIy=6)+dVS{KA+Esc$Txs0!_W>?o(H!>S?Lv&gpCKn)Zb}ipS@e+!M zg-BrSsg<=A>|Z*q^Jz37#Vr}u``qub7p(!YqBNP8mDqI#}Nu@cbTi8@azX==r^k&l~dm-p1z*Z~nbLv5s@v8G9WLXBz!0 zB0JzF^t|VTEkY;7gGaOro)5+m9n%YIPzUew#6^$(G@VTr^iSb%7Wk~DQSp#bEp9(V z6x$$em^0#Bd9vEXIDZhM^MPXK*a!NZ*)gx*+WivFr?_$<=F-I@2Q-P7`f3-7(Q}pIx&o_f%?0a9YQ6#PLfl{(Lag|@aPHa-n6!$D=QaqBIUe~yt zlck}Idvx>drLv$QCMjDUDED^7$4)LR_Dx)yq`c?9j40BV3+-Sik@hzc2^?-OA#Am( zYDy?CYg~N%?%jL$bJ-UuKxwdZ{N<=pMHMO9HT!5=A*icr1>O~ILF3?nHg3z1+faI4%EoPO(0Nh+5-Dzkd^w|!-AnZ`zR+N@ z)pg((C2_21CfR3EY(q22UhayDec~pQz1YU~w_fZVI1|7)G7Jlg>~L6Eq|#ww^ln^& zpYvev#+J3h`YPfx97c-Elj%4{A^|!v8t|~ODC#bjJ?IsCTNy~2rP!bJIW#*B`~g~H z&0e4CVO*D>;`VS1FGa~;O~}K>YC;`0wl}n4V|(QoHuf1BxYn({*mX%q{Kak(qM+YWbr32FC&>;Qsn7BZUqgs?qm{I%jNum~+Oy2+J3fWE|9M(vO3B zJ%n*kuLn5}3I^dIra}2qic{JTat(qy==UI~gF77rg&~y(F$l_+A(f?>ghIZr;;`24 zYs3g$Kh$;UR||DH@4j|LB{t-x7G2i9$cxKsnb??>M1I6oiFgT(<$iWfc!EV=MaD+d(#frITsb=In zP6a$JqA84V5vO<7M@8Fs8huo9ZX=(QcDm_8Fmuu@byia0C30(-L@KjnyaFCT&aA{i ziO-V3;aV^#LJwio;obSfjhTnj z*AsK|v($+NO>j0~P0$mDCg|O{Cg_z|6Z{^etGDSA2HZ#yy?JW_lxOjxE=wK6!%_zj z`~HB%ejp67AKbav4@xZdzYDP+Y`Uoas?1`aOTKg)!J)9Ep605K#9FGuUtrMFqpuy< zHuQ9XVI1K4JbD4~>aWWz8m4b#`Q-#tap6#XFfbK6bm+_;+XTV!nX`#5G&EJXTWsNI zEe@ppW2Xz}Ai>tcaRGgy_gtkH&@n<-zi@uELdKDpU&YmV6^S`d)LgA=mM~Gn2YOs> zx$aYz>Ws;*6%v;7WFo}ViMcv;zdBCLN_J^2ZI~y9qw!pweOw*1 zyG}d9W1QF_LNYLBCxDP_4k93M8mNG4_J+AXwmgEqy+LT$SelI1e0>baYJa^^aH4F>xsg za{-rbRnY=m=bTyn>785sY1`@()Eun-%+<-tt^UmQDPi>qiiwgT4`S`rlMG=Tn5)?6 z({z(r82v!dBPuoej^vMJ^J$X8ENp%tJ&3zOxa%~tU7M}g-Y zdFRTV>Y?9t%$dP|cjpHGUEAQ(05KT+_b}CO&_m8PwyIF+3w3q(;m(Yz#1Q7cH+fwc ze3~CcC0Pmi#}_23b9}*9z}+YN8ZeK}W4m_Nse}H7t!sGfW;3+jp{15p=ssy2l%_(L z&nS2@d{2fM1!&}qCNZPnD^l!M@koMXcq0kEM2u-Us|Jgr#3v%$e;YL?6W6C$r3o;9 zqYD^D;14|VcF&X5C5?lH*#ir~&mLF^XZ8RU8!ut@Kv>1bZnehhJ2&(`tElx{+QF!S zr7%Yg(9n$~ppOTF$K?^-ZOvdS5QR%&pw`#Ch@eT07%X7yV6Xt4aRY+|!aC#g?j{ne zdYE}n&wy5KF4dd`p2I8w^AmISUjdT@%umcA(rYLaGC!da1Yp@3rU;my&|E2e@&Ypi z%ui?}0UB3cggHR~W36BAtnLSEdWo_hYuzy#mHl#O(*r24`bw_h0a)fM%nooY6P?np z0-qc}r)FKs!2w{I=a_GnHumD;M0dP4h;aCKE%ublT9?WkE(q?!Wooo zVgLyJsJ>YcN`vz7$;TKMV3JNlQ80S`<6RgQKo3Tm&wMbACcr13!K48DRoZVxl(0}S zw7&9Y1Xu=E!xRW#S`kZou4e1%7Lx&fH>ya|v#DLR(Ns8OmZ&~=+vQD00i-5${>!J? z909T!xgb)IBlD4n4W z1^8bgihNC_PFU+wlK`yKFs6&G-3(?Q4SBM*3u-?XQKW86)qWK3jJ+}UFU`bkEu!WYvoqaK?NEWA5fU14z8jVt+xhFIkC0T^1 zy@XLgi-q($0Be~FBy3uj5|ja68*ZJH4R+c;jRrG8!4lAtGVa|^V^)uAFKw}Bio0|h zo{5OZfVJ(CObcw=aR)L6yh@Id^)Buo9_yEMnx0YwybW;TQo!55!3M-MVI`aLwwhdg z4%CGnpkPxiD3QSbmoEUtCz;06E$HnY?gaDz1zukpUqx@SDrFtr)wV+x5VFx zsqeU)t@yD2YN^9+y)iGxSw|gIl~qJ)sN}4k5?F^YbyXMT#Yewd+6J|c$~pN~so5@D zd0c1+TkRgNffw?L7v7fM`ju(%F>GP?EWNjx|D8xMv!p6DoYoeJ4uHT$5$p!Vu7i(K zw5lxO)Ba6Vk)xzT`}Qt^(~ESB>-MixeCiJ9|FL1w{}&NOwz80&K+hxf5?0>AC0#o} zn*V?IgqGWKFTtz+;2%1${4WMHy1>KaY|VULn_v&R@g6v1fxcUVZnhXWV}0-3=GgGo z_qKqqzad7%T-X_e{NH@9G=%)iTnhIeAwbCU7dxSpzYif_0MPV;J`^9-zYihbEAnpa zDo)>VEvyTSRa`cFA3`2bz~6_E4-!ItquvV`LS7JXfBg~D{ojX>|2~9#-WnaW$=os$ zl$;X%K7@QBS=sCq&yEan9KR1CpDZN#*h6;B?3ymH4RE_VBIy_Akhuwe=0yI|7{Q{p!})S`_#ds>W|7H z&wK>}$N$uc(~@f>epZ^~-eYRnY&v*6u$IjBud+GSFwO?A55>XZ*_&;uOSumuOL zcB=?A@aa1k)}RMHtU(WOSVNgyw45MdRksF=RedH5tm?L%^{mmbhPD8)s<*d|G4(fy zzNT|(AY-vD@03bPAF*Uov5U60x|A#!3FB2N4=?Lkg5U02(CqDDfmB1>`vMmC{xHOS zVCUjKAhEcU2_0zam&SxHVn8UwJ!8Bqmh{1}B%L(ENbGbKXaojbbFpHiHk4&CEcRcK z!<$c(RDG7sC3NM{*onXpinlN(n^0^PWi4e34j}f?x`ql-hG?tC5I4xbRn+}p;?9p9 zI#S_s{}{_1j~!QkTYAY{O68L)3#n&o$wD?q>jw1f_{q~df}J1NTPx%niOCgMY5B#( znNhfM^CnQuE#XF-FxP?UcY{` zLL&!wiskLR4-D^QgU*l1y+IB? z_4>stJ6P#0_*+#ViZR^JDbZUpx>|(FbE~e)CsdxTT`jKz3|&e`_g43X>N>hHkPEWM zF3T;G!nb0?UcD|iu};oeUm#o$3?zl<06}b5Z>5{Z}Nuio6sNxsuP%&9~XJL zI&qPKgB6|G*P?zoBuB&5L&DHc4B%sPc;uPZ(ZJx5iv#JR`xVIH4-u!v=VgFL{&|pc zAMnWEl4;Y5QIhY6i;{dlJe1@|v$y9tN-|)nq7Q(Q{7soQst7FkLGWP755fUUrW=|$ zfF*}@XX~l!ym}U)|4?!58TtCu({%ysM!B?5ag%>=PhhyoTkMxO3@De>az)@=iBu+4NF<#2 zdsaCnLD2FIAOK8Jaz3V0iwiI|=W}Ze8MB-ENhCp5E}s+JISvw8c^kA@ThOJUQds6b zDJ?+Q>}@cRwKxTdO1%x*1S<8PMijX^hO{nQIXEDx`O<7rMTAN zNxt|y*ISJEf43(vP^vA67m;fPVA}mGoeUUlJ--I*9fn}caJ6X~0loGgJAQVVtTzq8 zzu2RMl{hO(#+R<2)xP8a;bZ98CFu4BOhqzvcrhG~jZEl`kusy{04t2xz^9h?bTFfo3f#sjGv(?0#GOy@*n670lXq z_ekS~dDUfT@7Sh~>4lA7+J;If0?zN6WZfuaY0!|e=_&u^h$4T{j|LdKYAQU_WalbB z*8e`LNOjAO(9S*-SNWyM#3ryr@tpAt-GxRjLB)=Vm1G7`Z#hNGhI+&j9A0-X0IubK zbQ_v~Y{0dD8&M>^u-^%O?SCFo1&+`Vq-3XGq z1^BH6YCEzsP}@KIwLQw2#ca;#BekFJV`6FK@_qUBl?B*=yphZ;E)%fr7jW0}iBEh& z{V0F}d)Ld|;I@Dz`o!MX%7i5{GHWY+BL7P$r5Et)BgfS~k2P!rHDbS>!XpT>4=sF= zy{~Vth0pnBlzc>vo>T|Qdb5dJdlv>dZoV7$S?9L%TQL%fem{m#7_wx3sX{_V5*(ubMnne599EqaQ`pcMlm zc;DU@HRIpQ&8ez6z>qpM50$p=>z)k1v{gYfhZ5btcUb+bFBOx}g>G~fBRj<_?LqW11f>H*H=CW(KMPm{P zQa4dbs6;VuWHy<3ZWBdap|96yK6PG{!zoUb@zlr}nMEUSllB#mcA%yfK2unm$VlU| zMat(>O7zg)4mIxwIqCFD+)_R9?5dGTrra6`m4b)*Mpa)%a(lnscK2!ZgiL*SZ@>B} zKbD`zMN`@+WHb3VxzNv1Pry?txs*|)iK*G8wx-=DP|Pg|;VjuK1w^a@GPSz*l$!E` zQ!K(@(YaeZ;9;t5UFz<8m^M;0G6GNf$Q;uezl3c#zOPpO*vCcEq+f(l@gn=fPb4QK zLea?aN}`b%TDbwQT601TWHfo{HO#$z@7m1W#O%cM8;QB8iP_0pgvf}Rh-d>0>sNiz zex?*{&0s;?)Qzdxsp-k7Iid}dF{6z&E$YvPOWW+!{Os+iH>VPFGY@AcrxKGh*QXNK z-cE3uiBKx7JOvZ-BjFM{_147Xykl>_4YKrox*Et-t75@(7&SUVP_?WGfcKQa$mq?( z{umio5a*0%toO$lobVY`+6OWSzI@JzNPy#rBLf$017y_Cg&|d?x6eT&&%faS;GQ(v z4!Ea4X8u;h&ra8`2aFTH-C9YaEyg^9jx+JFJ%gA^=d`OD&S?yNU?BCN77WUE`6A}}CK*)H zCtatyt4N=4G3c%iF(3@l?t}HgfDE}dcT-Kn(?DFikQ9(Y>~8F=9)%dAK@8nJ{bk;G z(ESY?#6UMnG>CzMo$i70@KqWKNDq1w11aY&UqIM}7n2X}At4y;85#*H80E+;J-8SO zq;RN0wpczH_5SwMw*=GsTPd*=ASQ5&#SlkH{Ci}u=;%O;+nu@nP(?&q-+>e1pG-<7 z^quUIF`2;6N8j1LYB(P;^^b^?{rA-GNfut2M=6K=xp||XK*km+>wGrHQRGP&`(+SD zN*?u}?36Hh#AUI+J6;{K_~*pPzFGAT4mb6!$^hnO@X1Cz)Ek5q#RCXQW@fn#J3F34vOD1k8c`mw4>ATZ>ZvAPzaUxb10Q-t8+Gw`Kqzm!km+I2T^CQEQAa%7$<0c;UnJ9O29JRO{&i`` zfMS>GTb;r}e7tm~w~7QF&{vnknz99N=5k}N;2+@w6aOy9N2-W_C^Ei!s40{pW6rLt z=Pp+fy9n*}8qgU7X`b7rqTx3JxKO^fgZZe}f}D>^m$BC{AN6PCimKTq3%F@rBoLjG zFluts$!E1s9zQMjr4@5hCiO0%H%++C$-WErClROwu>9iH>R|cAJ=s|9zDSNCNuWfh zP@eQ1xlWpypGtgk&B(2D{e|wYo39e~id%kJ?h|C$ECAy~ZyY*_+ANO{V`r_9 zcA*5pNx#9l%211gMYu#fQln3s$b*tZ%oO?`hnzKr8^z@afHm$Ood;!gV z%pl*kZ~ILg?%O9cVUP)v7G0;eF|o{-u2Zu}-fnxypz$(p64u=2Bm+_J?e=(?akI6~ zr)!zT0y>1nVo@?<=Aa2;oR0SG@heqwv}2eV0D7-ZNgISPfx2_p%JUQUGO43GT5C0_ zBbKDObEd0IVYB=19Z4F}BX`dBSBoCuH6hcnwyLWMVFMYb$1hi?0jd08y1iT0@`F;P zFqXCd3!=Yg00ZBovi9O0x+MKh`!zjuzQWx@B5uY#BZBsG25AsU%SlS|L(FNT@OP%M zOSbUWm60L?4Yaf9O!q}J(fJ{FWp_23t-~gH4({?)Ih~G~OV_IPbi~wan6Y)NP961N z^2XZ&%j+TU?t^S9!~*6>O588z+k)Ex&1d@IcM**O*uw65h+rc-yn ztIsBc&2PCsa9(^u(^`nwu^ZwOnt(tjdNy`e))Os6uS9_uGf%S<*DF+TRDLvzs(RVV zkIYqXzIe+>{U@}F!4dUOeNh%>5V8G`R2Zo(R^c>Nv!fR)+(`)boNcNuK-6h(=U}R; zd2e}N)m#-AtY0E-caQtj_gbmJva|+Q)pStiE>2YUL19*Feiy9P!`c(V5RAeQAVK`F zzOlmNcLYB^)vm_U*~Mg9AD{vWoXCgqVfzgcmA-WTisMVn9zC3#5nsB1pIyh7?mtw= zJ&fljCYccSS^)sRlIJ^3hyShEfOLm{J9VYZw!L-pPK8_Y&xi$s=heTI%qnby1(t>T z=d_j!m(;(i;d|eJD9F!p8{UC{a);J6_sr>{r=v$3l-{j>N0yzKOcA#B^#)K0!~y-bJU@yNyMI}9uid4H#I2+l+Tafs05bftwr zB(ak~Byp<4dLG@d(kuGTSs&3gEPXUGVSPlGmGsfn1M4HIoULruEz$OtKIsbfMqq_h}nlR(+z zd*K5D^C~){=3wYmbe@|yKLc#T`M2*+5pWC;RE^sIpS?GMZsWY~MLi^BLqkfWMxscK zC~?FUlt^$VMQSr8QHyOY))FUH91tXiA}kPKut=g)XWtwrPMm#dVmnKdF1KluHr>)D zH*M~FeQlC9Crw|Qw7s`^O?%sWPMf^b_T;9^`~AOJ0SrKpp22*`c|ARjG#bqJ|Ni^; z|NhGXZ#t-!Y%iy`%MMCUgJf#wkn}oFY}q>N>x~qR29H73L~$w5=ubtoEfdO-YL_3H zy>{l(l?z0)SBmvZO>z}`$p@voSaRd`A#8Gl#xLy+=#4$W-Zjr_v*tSgYHIqZfbxHxF1gd!3K8_Qpu;&Ca@{B!CV$XP# zLc>nu5#5sF(JO5SHM&j0qjaP7*0la;*B68o|* zuAB{<%I?``Y-)t=3h1Nzdn-)fGVjgp*@Eu^tK?An@n%m<*}8&jZ#7Cuk^LI+axE4; zX`e{W%t5xRo1955<89R5dDC2XL#T%>d~QAqwf&(1BU>de`xEXK#;*C&~$-O61GTM+r{O)sCaP-X0I zeG-Q)d@@A-sUULK+1{O<{Xc@pcVB#Ww)ss#^hO!46EtFzey-6FioCA+?riG+tQWm; z8`jyB?KnnX|$hv^61kq|EwU^%6tI% zTY|`0&wxB+hUIZfJVLjl={PxD{Yu_T`4Yi=if;=dXMM3XA5m|dE>Ah{iV3*(&Wuth zzieX|FU#4+v`8dbHJnZ4bJoU4o7w)+rqAeQ)=?UiGmW^WmPpDpwRD_m@Qe~wGCAZU zDyb#S!B)s_Y1kyIm0ebqDEjU$#-mx-9cnMh3{KU?+~=`k+1~j!WEibGWDKVGlqZ23 z!f__dmUNn%Wi#=Fa+{lx52Z<}e%TzkJnT5axp*}5Ncs1^URRw7?;9i#aq+MN7aImy z<5MP_gt^BUw|2fx@aEXMu7AVG#e)Cx$GFqw25?%WT%H#7n&wgaxOtmeH@PiOF@PBI z)Ab_fok8HEKxmSj++44ZLE`@WhjX zUKIn%T;WL60gYefqnEXQR6~!R$fYDKOF9Z9enufh%G{gR)rtRwFLP+r zUfD`E^E#``m#lrU^P6sNoZq);fkI)2)N78<7X+~;i-KjOVAf`Jw~P!P-7-zcPg?ZM zk7=%(p%~URwW*PD;HD(c{Gp}B-)syL(z0Ti1dJMxOv-&0BsPiB_{%u+u-^RVpur=F4^|95UdUmb)#Evq_X8h2*Q@1$j<1?sA9aX~$or zjfISpeZE`w82ikJ>bT>>@+C3((s{$$Ig`$ce_M%+enk*#zA#HhIc4pa-pR-pFxY)W ze(J>tY{7}eSyaojkzH>8nZG!(y-*=vTFw_pONlotkqwMt>KW5rwcQaKHA-Y%ZHxiDskr>(49dP27Z~*TRm)4`T6Es?%zrt0g0*1GsWi zle6dTYo63@AGIr2AMZXp9~LjTl8h2vSR9%?d5W%6za#h_igTh+msMV1_rUT+(-uw* z+v&v$1DFT)4WDv0Z0zN@J2MU6F2A+{NV{mrPhpo&S|V-T zAKBm0t)VRnZ+%>k#eY!nNMUK*qo+ZnGxI~*(soAD1;5K_bC4Yl?6ifhqDvn;o=rR5 zXPS-)$5>UYvA%(YzqCUYv4#(cz1S%fEQmfN^wKK4Ni@O+1ix=#<(Swy;5a zkiM`}Y>cHAGee81xZfq5TS7qe6=vLe=t_iUA7-YvG6T3t)WZ!WXt9vABy?zvZrdbb>~yPQhX)-Y12 z`5w{rkwP}Asduw#GJ|aH46T!o|POL6b^hK4+=30%TtBCFBtGOd{v>v!JMEZy>M zP4(_#B8O>>SP@xb+D;)4E%yYyl!tUGm5l(?Ivw|VOULEx3Q`f4RqE!%CcmUek6!HU>&m=)1M;mZCUf)A}-rVwosnuCO;v1y@=detiBl_(x?BV&e%M; zl=P4`|4ME1%U*1r`L4839u}lWvE+SQrH5TvGG)z4tXr*W6h%x3aocxZu6blCdDo zSp>J<=Nh+y{~&64E8>K+b;};tPdKDM;y3lC*w)EZq)yyh4-9+IiQBdwi=&)k5Kugh zc;zhVxg}f)KOz*tLcR zBbo$Epn$qzi$?|2T3pKk4QSHR&^zT%lNM3BBi1)=>6DVL6Cc4KZOgV$o}Jlo5UFoG zcuZQW%E}JZ*I9p?C#;X%t1Am?ECvhaAn9+%=C}2qkzVgU>pQGGXFzf_zJhAnGz!X2 zMH7oT#5z*wgds{em)39Ja!9)41udLXx+qmDUl~w;r|n~>yy@>$8U*de=?cKnlmTG_ zK6ic7mT_RETIkR-tF(fPe7qoQr@ravIq8jl0b{?DGkB%hD_*%7&o1W{A}i4(bjOOC z%!U^ear{p{PH=j!Zyq}#c~W>^8icd)?77^+DFzT>f>^eB_F->Wwlo-5)YVib4#{1! zK%rJ!JGM-C)M{%*UBPOR4AxYQ%u1>OikK=cpFY&(ZpX1lJnC{+2{anho&t=f?mLIm zNP-&wh;TR%O5QRo{gfB-ZR;NxQ>mMTnp|9qETR4vILyZrb(N70Kj2YUnRNgu29Az8 z6!6~C;d;QEwWQFrT=-@>y1JZ?2sj}-`$oNSLh@JD7~?E~K%4-Nd)F4l1CQGjl<;aa zol(>I`^C8RU7>Mr#;xo7HI`-ntLN8K1(Qfk0b928dE;+pqnTS7&F_oEkRn1=g85q~ zrP(s%k)3y5-thUa0XQR1g^0f<*6-fZEv`8q!2X-Re+YbQuSWu(x2S#Ny1=)2CGc9Rm7}JAQmk(a9hS15uo}zo zGMAmb32viWpEH`tpU)DtZe6KIv=zcj@w?evT15(o{wLC3 zLFqMOeS4ryy6rM9Df*+O3uqx%x(tq>RBttxjV#3z2x6?LtOS%s#q38TQKQTfSDFaP z?r+-RMMyR%P2$_qZfVeAyTu_>gmbm4>!1|D?^^duFLC%?R1bnw9swke^DcdP$eJWa zo9;N^-KINxH@E4&u!oyQ1b6??lv@#8gAn0D<^!99%Q`GBqc-3`c!!5v*0D)0>%c$& z@3@T6(B5qc8$*mDnsH!i!4AY6@a9H@iQfTn`=&VYKvRpih&ix(zkwJX4V^*J8-bh= z>pL5ERM_(tS}2Vp<87ud8NoUwbBZ`Y3VYP!u|4Xknms~ZQg5Ka^}M7)m7w|cY+x80 zL>9)Hx(T9z060<%qX}%<6?Jb9;uoJ}3Xc>)T72Bk#Sizu(WrPy4y}IX@SF z$hXB|4#3i6+ATR4c~YS9Cf4RpkExtM(W(y z^w=t}p~EX$*1vqm?v1vr$M0|As-8Jc z^B&9EeAQ%)u5qG)eXd{Ql#?}9h*l(OF+W8u=Ci29UW};4JQlUsixM^U#fe(nV^ND& zP1F$Temo$#9_n_KH1kr>jFu%Dwi!niO4~wORbu;2x6-Q6EPQoMYlyv)L#}%?osQz3 zjs1@nFoZ=&wCwfNA|%>7UxYAC5;_t!9H#FE%*Z5-S0WtU-Ph$Gj+o%x4UZavM>9?cYj?*k zyN@-NmSNg!Jx|fhm~qY)WB{(&u@+=lTf@*&xAOalcHYZ9b(`OLa@hDB<#@}g`jykNE5vxV&JWU zmrhiI7O0vR^%My6lmPYl8izQXajjl?euH)4RY(`(TUr52L@R2Eu+AfDTJx(wl(z|i zCX*<1SAUzHNe4X0EG$>cLpO0)7nu|8Pq-_y?zOqA*C@ETEC${oG_*;taEB%Z^=ETKofKd8e@Npyy-> zN^x50(70RaF$D}@D{y3*@SVcMtSNMK6NY^1z_UWbA#N(lf|P0wkOn4PKh0~3NO##; z&YxDmVpOv&rBf>rBWI1F>sevaLKkIWz$CoaYm@Na>Y0Qm#K8N6Dg-$VvD7SrW&%*m zhQ)X8k?y)I`sK|L7PlR)Kg@vGdsuRP(%4>9gR9j|uw*%(ZBGF`hjy z;D2-(VgtL`v)!G>vk_V!&t4FM+s$X>|FdUJ=DcV&&X&BW7leI7ym?VC2*YFCc~K03 z|2$au6ac z20kwYTig$RR<^ygiq4mj1*DoSE^EB-J_gZl84VG9;e`T-Oh))=23LEZ^ei86X*gqt zZJiB1FZ2&=k`2fw`+^W`b>Anej1896#apO)%VPvGfL{>W+TAyRn}o?^g^x4H_7B2F z`@*6{*b0$CjTGsHF9<`Un`8)5dtVU7Pxz(winmzI?_UsRPj7O2@4@zdgKk*f>I((Y zCHAHoi6#<}#brve)zhy(#GsP*OV4lvmC5s;WUwhi(ueqg&6(?eLl_y~BwG*xzDPG+ z{t#d>wX%W%@n{(mSox8|0vlJ{wUCOf=@R`V;mr9> z?u|~iU-9o`t23c`7c*3J_wE=0G%`_P%D#EAvw*HDbW|r5^%cRlgK^=8OeH`P@)g0i zgK-gD#p3^!%^!>@uKiUZxYPZ(c14HKB{jRa9EoQ#IlT)EE+xN8_Y@oNMIFRZj()tW z&8I_8{$5P>AszHpLGJZQ2NgiYP#r;a&w^GKf#}*-h0vjm>L5(mBaua}!|!{Y>+t*4 z%XL^41OJy02ue#HJA>3qOA7|#8s`t}S2mR7hG_mD2s`_HislEUyJFxEDP7c)ij*>K z#Ms@&*X-9sluiQ-eO(CdHt#zqBME7MUl&??{YV4+y3lvXpEST(+VsGPH08jY#c2~N zM0{ut|LM9NO=!xM;qn_o(9Dw<)$=6&$c}S8tMyx6i}kmvC)Rhwz@JbisoSmC3oV?j zH=rrq-?pW&j#AbQlKH+ZNPDZ4%=c|NS{b*lRK7u(bKe#Y40@0`hn6;_uj=x<{07;T z;hzc(o!(p-YFfrd52T*x-Px`|_vZC#WMc8BLRZ+t6D51Vvi-T&BJk(c6M?K4_>O?S zXOBB54>zwLwK=uvHI4s~JNO-8+YZkQq;0E)i1c*0qT|tbDb(qDi|<0Qx2;ZvQxRkc zM;HS}7SkkqL3cCiTDJ;!4S6bFnogwL~w982^}Cq;9$cN^A{f0rADmfI@FA z<&ul^g$%ukSUwt3-Bt8~PnobNUR70PIh$S0%nS_~bD+Yh^i2kW_I_4XF#Iq_U9Q>k zVfib2joptp?|#*``}gg=m|MBLrfppmFQ-$t<1saZ8Pp?TWj3j>P992Xfkx^QkkRx) zJe!WD*OcYdN(xE4YATme;^@~)zZnfHXQG)b@IeDdX#{9Ap)ID@4F(R+-01baicBS&nA# zJvFJIM_VeL1&nwwpIn`v5s7!fJI9Y7*Z)yrzo8eBjIl+LCQm3CNaU)T#rM-hQ;gV(<_hqcD=dDA(3?)~?8Ems3%Z0;XrHkGr3qPYAy87Vx%i5}E zfY}TfMHfa01`raCCznzoh-d#igl^5?QP4I9+N6>YKUx7Ky0#2ehW}SYcqb4{XsdJr z$Vlgao+V{1l~Xc63o&H^LaB6~!|xQ3I!AlZ7oF);KqY!7n_3k$?Zy@e^+P+}RI$!= zdR@ml5ttMc@D41U8c>p{tj=u%j8ni*YAnn+BMB98TQzu*p`{;q0E5tvZY9B6%bK_| z)B=Whnk_w`Eaae?a%s^(N56@7_5otO6gC%4FD|oHfnBCAGf=tEn(-t_O;ow1u3^w# z3_3cMMS{Ja7}mKPOl)b89Ojy6CTJdenO8Eog+a|G<^j$WjrMy@j###yt9iTDDTt2eojSv^wx-;-=(hB#zMXER~Us4xlOQrd#C0Junm z{wJkh`h%x14#zMJ)Nr3T8;l!GkOC}TUwguSly7qss=4Cx{3 zH_U2fa;v0JNeo0N6j*ZTa`+u+v7gR>2-?3AS7PXp3dy;S^_Z5osLtRov*Rndq|UWQ z2`M2f1L=LaUYb_s$5%Vgb2 zZOU@|=JFss5?}yc8|?Gd#W>-b&2cCL*u_*>n^5`KwoIPFia-VPa`QagqDB8@WcSX z`nKiq)#Bgc;062(R^L3(6GgjnBtrPS8I5xmo8N*=2n2H0f z<7k!{c&&rSjni2weFJPZpjA;1y#wd(jPE~3~mH1 zCifcj8ZSHOUPgXK&SOeAw^J|6A5YhbZci*E%Gie;255xB(u43$_dreUsk?Az2XbMk$Yn|wIhfMp1788gP*cwO64_A(ig5Q?J z#pH%@!M-g2wIF&OVP~i?I|Y*dI8(v?Z9mXAeev`x_2<2T4hy;(>9sbkpST$9&7Uf_ zp#)NC`KdZFI7IF~OFGe?!HR##IaoQWd<0$CZj zC7PRdhfeCrzAPfJnigZ$hMXDJ85L2^jG9=IpY)vdi??O98j(i~H98^pTG$C04okm6 zLAn{`dXi!$@J;9E$qOaI>t<126aDI&DI>{(ht76#m%&k!a+^gpoMmA3!_XCs zhfKDcs+jG}pB%3ECnhMnD<$8x0Cdt{1wY7BVEO-6(2mJeW)6)eG@UkN z=`?1HXZ4gMhEhYb*;UvRqHm3_Wb{$suHlv3XENGE`J;yQ;-uq?xHZZ$)-_)o9dUe- zyl3`eud(!K`BUj{)QN7-qb)p6klnjtc9_t|)yqdLzGnU_J3p=LHO_8;rr6`5v;RW+IZ34sALAIg;|Xmado8eBJL+#k6Uiky|aVPIPq!0r?X=|Bsw4ZX5b2- zv6Hf2Mr*+;^;eOPTAb!|)kj6zAtMFBxQx4ohuU@B8S}%Pa>S1y`gnUGI9euZlGkWH^f zV#uvbub}#cQU)V&+Xv4?6B$+e-Uah}lk%+N_v}?(HkgchBTDo{2B{9-mjto8?KR|! z7SK+_wKacmq_M3BghuWW6CqP_kM(V%)FHfrTeq+|EQ`@3Z2si1+-d#9Mp-Ro$GGqQ z9YL&O0|xoB1(Fkn%wl|KT@nQ|RAd(gqi9&eQQGtSdJ`z}?x>Z6{9VEOOBdU!L}up} z4)RqCpX5fBdK2hmT^}e^p*0LJG0W0@^K&nr5k%J~+ZA4RRkS_5AB0?uICfD?BP z7-w{_nXXhaA2xn6HZ0FsWHWU)v-HGY8ErI?Su!7XVtx{K=`%OPF^1S7K%YimR^<8* z(E~kwHKL`wscAGgHU2%kx`uYfV*Ne$+~ZZ_Roi0g05d;ij60b@H-c9Hs{6J{*Ih{; z)T#+=-xtwEtiEnbmq!EHS+QJrDM~4<$osSJOhgk1EPd#h>m80XsVZ7JFX1tgK&>k^ zzY!($7OvkC=X$ywJCrlH->B+#5^+Y4Xy<^igM1~+E!@Wn3)dm@Y z5-z{$w+6O*)c}7ZoW4jGk&$I2pKIN+evv>!dzer9&(L|Gg=h#mRSZSqNt{tu8OX%a zpCN#I#=L5tzG+;BmQtu3%>xy(CSv}W-aLi|$`Q83wt-r~Hd7Z3LD|>>&34148XH@T zC)7HWDAKs6kAI4=?QCn>YXDDE%&?tp9U?qT^rJo@psic0W&@99662!fSrQfIxh(pCLvF-sqfN_ty4ju<{5&J(N^>EAnOy4{h zG`%*Ou1vIeQ0lH}T4?(^eB7c1d-4#bChF9onbFX-54D@xmztu|6SRrc-=S`{^kn3) z@r3#b(~}EVjVJoAE(F_+Cp52_=zgJNlyACUfFo}5D%;mZw4v6YP}@T~;9cA^UIPa_ z4f=^W1A6N5Opfp+G%EBc-)bYKC(ql|Sm+Y^pX;cmuEk)gOZ`*E6KYmSEOdnr%ZZxv zQ`aJ=W*>T}&~h$%Y&jRJY&i+(F-)81z+GXM6RqYJ5q@K3qnf4sJVCfS1ljc6p>l$- zgk{_z)~mL`;?yjZP_6P|8XfsNC;{lD;C`c9=m?#u2+38K5VQm_Sn)2K%^) zxmZT!DIKhi;?e%jjn1*5;6C+MB_6!lHBnPMsG;H1c@qtU88Q*ee3}RlZFy(E2`wG_ z=+Pl_ko*Xp7LmGJf9sxR%!Kw`8(h6~{mQAi$f--G=j>;zRgW#iYLzVnoxNWf*w4e+ zTRU5^W>u)vjnPnU^gL5hf~=W}FA}I7Bhu&mXO6Oo%tP8peu_U_|xX?co}x`t6I?%pK7Y68pY`NT;z$Ix!L>+}StCF(cdw zkDCzd#Jk&Qjx8FY10(izR~|6mqJs?{J<)7!l}ImPjs0p-wwKr5k&llbTBJ#C- zjS70XRnH>q_PYYsgTr_%EN3#*NU_(1n)AG^VZ?!-ib?hQSDfBF3 z@K*(qgW!qNU5_K&W}6f=8mp1(5;)lSR%q{1u7f4a@MTUbU!2zq` ziy5m)*hHEBS!Rn*=XN?~mz*&}<4(yTiw-u8s~N<6rE7ltup<+iA2;8dF8>}MLgo~K za)jFyGWb6nCH0L`Z6TLA0ZQ)M8qWU0KNke;a%cQf7}qUsGZEt#^hSF~j8 zm?r^YTFst|EXc@3uF6t!d#Up`!6beCs(8SL5T@ddbGp_Uk#O@m1X(Ck-J7O^1c)Zf z`77rkOgak?wn)-(2l{A}t_CyN7>&yq3r{Qa^iA3fE6%ZhNR%GOhvW_^>hK|BeI>du z8jX#P4v&pZ#3mLem(=O#(qwdcIy!xL?65k$5F3t8j4zCj7cI0J#n}3=_FtrWBbUC; z%Ut@5SRdH3-}T|GtOz1X%|XK|227;$5%^PBw0BB!yE}C8qOASph3MV$s9KvNIJ$t+ zJ4o){(&^0%a&61{)VFj&^}y>P1X~Uslh)i}9D~=;Llt9pidJ^$6-v8DYmoXNY6o1e zaAis$Tv`;FW?=JqknD@`K+!}*Z?mE&DI;u9A5_B9N4>c<*(_us1J9Z^)6>l;(Ob_V zp*wYCku(PKl7MM9jjcW0?}lZ-G#)=^?S?(sCLc7O=n1sjyT%HhG_~~DpFk~2!oAf{ zi$Uol!0ygK7Y4MtEK3z}G1bsUFa~HfLe0W4iX;+UjYlxIQosL0F=qYF?m6jK_=66% z9F+l>qLYjQV$4rOA0f226kBRm4@(qAp>LO#+#-+Uy@sbY2|l1w37U}$G8v*b4k zGG$i!C0`VCNysX*D&!I!JoT_oE>UUVi!BP2&7pu~C=yD(AlL`+$RFpla@d(N9XMp> zms8RMF-;iuu?CqYNC)82txaAPlLw^)zTdoCT6D0q248I8FmF@|X-1md!ug?eG>&;e znq9`pceFL+&&fB)n0O482K+NIiQ5Eh6aSDxRZI*Xu~datBzQP5>{X&->2s{zwZ~=H zDh5WXnkBK!h;ioD%n5|+yvJ#x=c}A1N*>?&ZEbFOe1^MPvlRg`M?V4&NpRJ+oW!D3IQ5iKPRUjld!!A}0Fzs{8- zc$IlrNcBP)-I(+|k2|0kiJ_J#$Ut2-9-27iReOgQ#SIQYKjMx{HOw7BiMZp^#B42a z2XkYuSTPYQ8YO!u@X6l%V)lr^DN6vo&1$L z_h;2qMA5Q$AM!_S;~DN}m)N0B?Xn?!3YQJ1%y3p%yKLy}w=yQnd>I^IKioLpTTp89 zx@_`mf>@ik1o9^Zu?B8qtd!5uGTAo2Q0IPw<%*csJOUJkR^<=92*xe(Ro9pnRll_t zx|4m=$R)^u)cSn&&@cBGDa8}AY?&kDIxS3{!SR?zVSAK{SlTVIt2^V+R3?@q-?rd4 z8_4RnyzBp5ALdKh!Z*;`Xh5OV(HquZtv?wJW*>V@pYQuZz5CNAHzvxC$7Kwkw-Az- zR&0yZggWg<(#`?p#>TMzSiiVY8)x#S1Jo7k3)?xmBBS@~f>@&=4fzv-$bT%u!=km) z3W7Pz<=DwV-R;7KeSIxM+8mz-s` z6fDcgehr|UVa>VMXxDV3ur<(L?HdJ4{Wz&dN^jNf*C?vBb>E?CN3|*fuh1LTBdlWe zgK(PzSBn`o)E2mnwF53LwzoCdlAJYsZ)@6D8{EtS@Y}5oP!=oW}w)yr;T5&ev>rZbV$ZPXvd(V|OdU%l4kPYCd-YtkRo6yO!{^FE88DU+IZxe=6+q9^@DPYxD6IaKsyApZ%X5cNZ-HgSFE^QPE5y11yWV$cf8O(IKi zH4)Q!`YQxw_pJ2mT=29bloc`XaG=?^HK)Y?*NF8aTf@?Amo*GKVX)?X%h4ptK9e^Q z&Ol44XiP1rRwMu>k5?Ih%WGE{D0IjH0HamIz@0SR!{s0H2!N_#zyRR#+9M1U!T@~H z@xWGtD<~fu=g#rQcAw6jLFw&~wefu+q;z<}mg^mSnZd&l5}eAlv|>s^wPuh|;R~Kj z2J^B{5Yw8J_Ie-F($;QQ3~EuAIWW-Vfqvgah=DX^p@Z7v0Uc9SL&ubb4(h`PbWBwZ z9mVp*y8g|;O)%OZQUxnnk0bCCYS?-(G9MY4G&oOh_;?z|+}bI7>GWQcJ@uF73SL5A z#52W@&K5s9SN!OF@uLR{9#Mkug+Qp<3Bn~DXDt^a6M+N0ipo}+&KgZFvSD+A^nVbj z{b!`#c3ahL%K0e`>iWI~XnN7c_0(3JHg^%Hy;|QK6Y0whEheMWxexojyu00eL=g~* zS6|*g<$Jt3h~Zdb{Z-_Gf0zrliYL*$IZk89R#DBJU0c-(cC?u+S9?x+HIrq7F&Jks z*XMlPGF|hyi0WGPil|OvH?0SxX$RMFbB+&ISkLmhYRq6Ve8+3iePXb-%J*Mk? zRp~nK23?~+33Ofbn68UerR$;_bdA+KU8xf8X5e78E8z-`-`Y)TB$0~75Pput;!8_v z8ZGl8xUxYInw(WMTOeU@8$JxKPUtKINIG^5TB6=hkm17*Cy8azRl zE`TI1_g5Vfgn#1)M?47smO;SjxihoZAG$`>Y9Pri+jJJXrl6DctsMtBI9b1wAUQN7 zy~*v9wPQA1>7+E`Yb`uY=o+?0qv3{$89fS@kQI~9DT+-`ddAF1+h3!?ui zuJYlHR{j|pNB$q4^?Uah3K%e&bjFKUkk;hBE< zUp#BZULl-D!bDL@kNk26a+G+xh$02)H4a6Z)vvxY_`e`iq-f&>G%DCie`RHDpR5yW zD-lM{lp%Lz*)*Hrg0BnWPgL5C#T?~&od1U)a-2Rw zznqdg9e4mf_;*twZSG17TXn(j&>F-;sUQ1cR1eCr=lvN9@ zrcYwXLaCo^LLj~@h&6ugXdCZPu2;cp>qMS!`Q&IBdOO{?ZGzU`4RYF`%jdM8qDsLc z_vas~UWQp9wUvZQqqEc!J^Qt9YoLS@-pR8aY59C@jr@=1r=O#_0>RO}UITR1FlPx|}+iz(p^ zp=Q&Z@G^rm#55IC?vvs!lg3u;riI?j*{4{O3OIZEJt*Kb>-w}csj!YxE#CzG+p=X? z`Y8`LnTsdj*knkMY$9N1KM}dsfaCC0>7DLJv8Kgqd6M>`Coq!V%Ib zf?l@GyoK)vo1_JINMN+ET#Db#=Fkjcen|h57M#;cC_B6_q0FZ?Q+V@34i630PvEh> z?_$8r)}u^CWNwOG164|7Z3rAN(g`VF3~M)Z4_0aIMwA@rJ@KhB32Qg@4pn1qlD+K> zy&TG3kmad11-sqPQ?+a1&FBR~X@hM;`f$%!YB8d&ET}Pdzr*Sb)O0`M+Q`ms>X|i& zJB%m43zRo|aj)jVwpi6fseLu~o-+1D35Q?BzIFurq~GFAjoZm(?Ijami6=0_IlD&V zTo!YQD7yRV6x$IxYwV1&E2;BEOJJM#oi7|zq#n++3e7)Fz-;gLzF+pbz=Ry$Ff_Ve zak(3Ls^+W@ttw?Jg39bPF= zRqa;Q8MPoL;M*Jf_y?Z382ha52ULUwowBdVoKZ&&iScAV+VktW_%Jp|Pnu2btiRKN zi+cSXs$Rl79rAwT3Dr{JjM|}eSL=)#lu>r>Z+JwWSpOp4fw^Ri;eNL-Qs@AT!RZhL zdBKWu8O`$aGa|bUD*J0ae0Hkzk$Hw)L<}4E7Q=FnwH$>nNky>USmFGe4)Yfy8~(*; zrN8)E74kY9(3kJP$>%JDm^Tj0xkISg;nxP~9In`_(RI@SqWt}oRjl$i1d#(%B%gP{ zIlJWvZ5Zh<2;MgcEsb;y=ylAQbxB>W_up5a5JSwW=f|ljA2G^CM8=}oD8&mYQvFsK zLyAkfTrT^I1AbsfT- ziNs2HDV0ltY`9dm<4lxj2y?$jLzoNKedwVJ)c*T|n#rJv9)(b!1@mm#as(NEuF!1W z-nMBf_D0PAAxaSi}bYHEWQyqLfMtoSUeqB()u{+QK7~_gK?&yC_h2kxV@b- zNZILU8|bK?hv-g#)W){0ojj|JpmYQ<4vk8q4(wN^W){uByR;MEwy_yw&lIl48F0I3 zo*eZF;Z1hDXgyMz?rZd@M+);o3_vj>@nhp9D0JJACfpKIGq~18&TdrS)Hi%w} z+*GrXL==Cpffqpoh&#(_k_Io^9_wXT=%Qc0XY#Q0i!}sxD7HY>l|YxFoNEsBAOn4G z?SkIku&oxc{$Ic_9f7d)2|szAIt4Mipp`&NL@5|*X)Uj^3a_-bd z6?eW8Vb|8j0_L?f%@HAHK31d54ADGpiKd>ceY~mF2p3X81l~E(u+#p82zjF8V9gWq z{^D)j-#J*@+ahi}RlDlxl)vif)K7qVI%8K)nyo!kyXxtzrJnQ(l(R+Z>0GfKpZf_= zPv?ubb-vcs6O73N#oKz|CxBWH7H{jp8mE?wz^C7-`SMgnbyCF{tMW5-qMxa<@-u=} z9#T*erKJ)d>s(32atXC_K+)5Dk6laW)P7blg>+jKk>sbjn#DS2)g%(4keYs@WTN+g zLfwe8|30RbPa%zqtE644prl;8x42RCH6p*lLa34Cg$6JvQm8apKU@-BtiJ43Zv3hbL?V;AP*W|aY?9$%_IZJpBF@5gYA`J z9`$}UoLAVP_(N6bP+Ts4v*D}&dD($AH~5tbdDL&RZ*W(jKd$TLYBZK~m7*oMwp{Dv z57db@bzLOibYR+zg)S@P+0O}L&E1E{)o27=j%7DSiIRGDqI8#I=@UOIh@I?q%vMNk z6f0r8%ObpgDxrQo;(b&?z23H}LSTWq8Qyc>HtD)6FgSG0#H^OOEg=tPwczZa zH(E0rcaN#D~Q4kv3_gs4A=P6DnuIt zJKe7kt&HoUu~dkge4KnN3ynToJ){j}@{7QAr`I{di523&%fNYT>VlX#LX5lpz zBhXB@oq^r%&vdIyHO16~npN|ZC5CO)?`%CJeZ(INT?kQ0efdFxb8uXGh7&k7gJY=7 zT^1u!t~#mAU0kY6BKIz+Ouos@M5o2lnlzY^7@!4OlRE}r!0xsbC#55i;@r)R;@oX1 zPD=d4^>3@4Up2+q%9rA7wG^kG|J0Tb^Rqy4+x8ZZI!{%s>|^YrcqbfDPl-+?S2o|4M`{RHKqQR(geDEk5^^HqJj#fFo*s&D5~)f1`P zq3V4)dlw+l`RvV<(Y}D$sdh@&o%`Aj@!)h4AMP6%CgM4AlE5Fdty_;Lt_hEKj^*c;B{OU=0$_Fr=&q@rnVh|aLh+)zUXJQ}gl zoFe8#^AUb%KEgN6M;&NB$`{Q?Z8WFgGH5;xq*lH@c!)BN@1vrJy+^*-9ZR}>ViZ=p=Y*tdOsA}Im<`~q@;^Vfx?;YLw==07~thQrAKTkmF{xMDLulaQ%cl50;kmT zS#+DBE;CO@Z7vDjmXS+xln-HPBb)N@>of zj_IC`jP4vi>UhpSb!;HdG{#}U2wCO_$Itn7 zU^3KC8Qp!slIjs%&@Z%^*T_Jxrk*Zz_i+=8p@YOUfgu8)wejGJtbqi=x| zr}U$ex>fe9F<6)J{gKig z8|2HzOQZ7K#(=oW%KY;x>e;e?C5S$S2n%cDF}ias(7+= z`lOv8?&)+>T~E2iz~&bZyY)r?3_xBQA_;|)0my%8Q)1zt0muiwq+s}G0Ez%CHUQJ! zh{nUBkr_Gc7AISu9C7QD|5Ffo%F&e{b#RgLXsBiLZc0p0P|1J#r;M6KE)%Wfh{@2S zUQ5iFTkLH~%(z>h{6j(XH7iJd$U#KdCF-Vx0?llAOh1uv>E+Y0tuV90#`qInGybGo zTxv1CYo3{JjIT$C9T}hfTa7Wk5%G483;Dx@6@n%iZfVRXb3 zG)RB*kl4)vi}o(1@ic2xxfWT8CZji1)~EE1xT>K(rCyI@h!rlL->DQ6(C*pN=gmy^ zWb}6YW;Ba|k6{xE`|2X{m9YHK3D=Rp(w3Z;KW*USf<_B!)k)QN^?`j=sJ=56H#lK_ zXfdru(Fcr0bAhD@CKlutF+NkJ6mo&})vMp%3lJTW$c@9l5?vUL#zsen$HpdN6N{5e z>U4BzGCDmSojyEvSe;&o4M!)&7skhxGF>}223iP{I3laj>@qbfq%M#5ZP~^%kXnbr zU@ZW-wHAOBYXQiHS^%;UbCNig?jS2%XbK#tLZ(Ks3Sw%JoSBGeK?*hG&p`P!bshwm z)z^^gftRNx(d(_*8bwEWVq|xkn?n5AouEWmZSEi89jmPU#114q*?PK?Q?Wzp^w+5f zN=E=iSFbecz?Ef+zhM5mkXQs>+0i#-?1~c5@I-3ZZ9Jjmqqkw7QtMvnwQe*1M!ctV zDwU=Fs^~~BwJY9qq<41YE~4Rj7qtzi<$-Jo`9qsVwiGh^+3LvNY0X)rZm~fB&L+7K z{X6$|@PYm}gBNxxA?Zm6ZhJ9aVkNB5wYVHl#L{Y#2tf^%cL(GuG*m8OENB!(608xS zdGq9;YJT){1lQg!z~?fC*kLc6L%02~;lt-2_Vi2*C%6jDL#t&Ts8Il!hgLq#1EI4O z=7CpqGJ$Qg>;l!`lU-=z!Y;JE7`xDB*#&Ag0L8QiiOIVCqasOq(!AGrLdEGH#?JS& zhoyJ9&HR<92jiR_agqRi14A=*aLKUkIdXyz%?fPF4Z95R^!~Sd^Pj-@?QPlPoACpP z?UuFDhnBZDwb_BDEo+M{pQ_HySuJ4dLrT4ncnHy2d1z;6w zWyR9UR8dJaPF6E+oSWlpill+^)CDN}J7DdhuPDCGk$Mkyb#l(ODmwKK58kUuK? zf{b?V>M)*AXHMdyPG#8r!{0`fGU?<3_6KMvBRn=mB}p_afZ0o#6v)vDFD{qExq4Q6;%XSo{|E+LQql$ zy{PbqxGTh`mLi0PpryD)C=-BwtCDJj`k|4c>gPgH^>12HflvCOs4PBVJ3SbX%tv(W zz*`4f6!Q_Ce#wD6cwo$52aX1!a>D`zPHSIIEKz=gR)xf6J6;Lve|2-LV zBK^F&lgBD3$tl!y^0ReS$lfkowfr5IJd>XTQ~ExPQUml$Csc^Af`F5FrYNV_6DFArLD0dl=XDyaCf^XrHURn6G zfqwm@%sBg-)hH=47PfAq8Qq-@>heizPbR^OUo1~)I3=70j4TqDo0@Erc-##VcNz>c zA-7t{B~7&yPpUD-2B@O+KBu<~8x))k?Ay-cg1q<2GXYA{`8=OmJTO&>m>;$yW3yu3 zYw*Cdyw~CZqZME{5zk~9AAGACLU43w4mKrrA-yc)@pXr}raiGskRHYA z_idFPc4hTcX2?E$8a+bmyd19m8jO(Ma!|VM3hY+G6>|U<>1JvdlkGT1prU#5~7>_4)Sisce&gj`28osWjM z6BLtY+#hAkC{Y%SLcqd63fL|v+~-|u+FSU3ut{2Q2j@m>+NJniN+!(A59xoRxO-5_ zVzK5{>6Z74g~&AKG8pb1WPG(1aZ$JViYY?d9jr|$9+RGZF*m~$D8iy z^KR3jfz53iA`(kw$=V{^xJphaA*z`l zM9~d&GcLYdzky!gFD&VZ#SA>{;0I6d0iJfW?312y`$Bxfc!Hn5WH^SzOcFmxqC8j$ zUj5U)BZ)G!Ei~a2+v4#lwxw#PSj4z?2gGW|xNzf2*I)X z|BOm-D0k9&LYXsovL8&PC)85v2W@Hpww*j~iKW!-?;JG1)r%MQTM4!L{L2m`dFWfB z91m<#X)qJi^a2N^#T*h&855L3)D`G)KS8Y$O0qy{G6k2xV6zo9yPVS7`cn!~SMPxL zDMYqNlF4LcK+9*fZi}%f{~S2)v7YFe+PxO5P2wHeST9)3^IMV4Zj3Qp@6<_ynJC)^ z8|yuN$#|ltNcUL`M_IFYCuA|4o}(PH7>=?gsU`HGK)?5ehEAKe7%h+M78B77o8~1* zpCs@O4nrOIs%{;@%V)d+i_Iv<7Pud@o=`R_@|nV5JR=c|6d~;{49??vcZ}D)+ao=PaMH$Lr2c3-lVC8{j}0$kJB$k^q0OxA zXpf-Ij7R!J&nX*6k?zK(r)?aiXB|!-u+l3@5uUl`>LvS+|qo&^11G!jm5~=f(n;x zk931|*~WFG5ou?a!F8VJ<85wdj7=_E>TXmwvX?D&H%dkpn|;{Ea=K!_Vq-a7PhPRH z9O+3KU3)!n(EDk~mG3`dKjwal;5#$|o8*Jaa~25;zI+CJiH+OHjDjYQ*dFO7=%p3| zj?tlmHuzF7Am1Bg9QINhAL`cgr8Yj)&mAwb_;5^D^^aP7h&{7!J!e`K`S&dYtQbN2?_*kF$uC!xB4$+CUJO&POSUiLMSVj?Fj#{bB?J6Kg6%yZ^YVi& zwPMDNkt3{a%wg~g&OWYpE!dbtV1kL3=z1hs?lID~hh^E~OXK_&#`%q9ZJV!+lzq)C zFBvV9cW!=btn9b`vI_G#Or2nBZBp#Kn}$q&&_YojE0p|AIfkf4%J>F1Sj-mVWocxR za-!^OCRr;n z&(iu@dDrsKt5Acujt`L^0&^@vC)Ti(MP4+o9A8wUDs@AfGo4C{JmtMg>%H;{-(re# zex>!b@(SqhsxacFa=cm5Df#lchQ!Vr#t+M}2%@E2$Ej@Uqr7uz(YCxfFgazcBJXmn ztTK|`dQm*UPTo!xtC4Ifm7ucK*C8TEb*p!)74c*%+Y1l9EnYn<)(cxC>A1u8iZ6uc zsjVmrb*-cpZ`pwqrDc3b?vf%7AKJuaSiwRUqBrA<7qBK(gCb?L-s5`PEn9r9x834< zz3shR)Z5<6PrYrLW=ian;_fiGAro337ScAE@Io}B<_lF4YxeX@s@H2?!}=szuZ6Y? zZaE~~@o>Q$nlr0uR&4E5Y>q*v^}(_8lIs(?ST?_oXa^XK*fpWzRy=!Bdxem)BGzx+ z(k8{cz)21nEU1OHw-dOF<&+UA<>7MVld?2?crvVDfifDHVr}#|7r(J;x%j9kZ>)Yr zIVNn?Z$m}-Yh0#Y$twcgT`0IbLV+R^H@c32f6QOJJKkErErW zX=>@MzLsGX$ITw1yLpr7ZuT18&HkX9)uHiKjJlIAt+bQdV$@yyAd0f#cJW$_+QJW> zC^x!=%VN~s{2+-9W#O|Jb&tmm@SdtUz?3^JV@z80ZcubzREry-^&84D)!S;CJ&sT^ z3eJ66?lfv-_G0*hUI0j$cPL)ni>BuO6|d5{v%TQ}H|NeEOGa$(Jmh{d;^t1m#u*h9 z44Dyd>Y@c=whzo�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 Y4regIu#L(^cpvpPoL!&lbbQAD13_uAssI20 literal 2358800 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

ksH4x;d=dm2iR47{CpvkwATKT^vFKz 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 diff --git a/automata/config/symbol/symbol_code_embedding.json b/automata/config/symbol/symbol_code_embedding.json index 6ab19f1c..ba149a48 100644 --- a/automata/config/symbol/symbol_code_embedding.json +++ b/automata/config/symbol/symbol_code_embedding.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0cd9123254a435937fb7dbd64775864812c0ef8631d79ae9bad4a1f9a3659fd0 -size 14939587 +oid sha256:ccb9416efecef6f214e0afbb6a6834ba265ca6a3380798142fd1940dba61f874 +size 14940402 diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index 2d7599af..702bb612 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59ed7a1c582e5ac8c2fdd7dc5c3b31b47c53a5a20d32e03528b60826005ac14e -size 5150071 +oid sha256:c57f8f813d09954110faf5704ca54dc64082b0b40a1de789d3b8f1214444057b +size 5150405 diff --git a/automata/config/symbol/symbol_doc_embedding_l3.json b/automata/config/symbol/symbol_doc_embedding_l3.json index 2d7599af..33dc2f8d 100644 --- a/automata/config/symbol/symbol_doc_embedding_l3.json +++ b/automata/config/symbol/symbol_doc_embedding_l3.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59ed7a1c582e5ac8c2fdd7dc5c3b31b47c53a5a20d32e03528b60826005ac14e +oid sha256:9413652690fbce38e4f0192f9e1afb45fbcd9a103f700cbfec1ba006eeaa1402 size 5150071 diff --git a/automata/core/agent/instances.py b/automata/core/agent/instances.py index 49f200ce..362a38f3 100644 --- a/automata/core/agent/instances.py +++ b/automata/core/agent/instances.py @@ -3,7 +3,7 @@ from pydantic import BaseModel from automata.config.base import AgentConfigName -from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder +from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.core.agent.agent import AgentInstance if TYPE_CHECKING: @@ -34,7 +34,7 @@ def run(self, instructions: str) -> str: Raises: Exception: If any error occurs during agent execution. """ - config = AutomataOpenAIAgentConfigBuilder.create_from_args( + config = OpenAIAutomataAgentConfigBuilder.create_from_args( config_to_load=self.config_name, **self.kwargs ) diff --git a/automata/core/agent/providers.py b/automata/core/agent/providers.py index df822e9e..e6f6d652 100644 --- a/automata/core/agent/providers.py +++ b/automata/core/agent/providers.py @@ -3,7 +3,7 @@ from typing import Dict, Final, List, Sequence from automata.config.base import ConfigCategory -from automata.config.openai_agent import AutomataOpenAIAgentConfig +from automata.config.openai_agent import OpenAIAutomataAgentConfig from automata.core.agent.agent import Agent, AgentToolkitBuilder from automata.core.agent.error import ( AgentDatabaseError, @@ -41,7 +41,7 @@ class OpenAIAutomataAgent(Agent): EXECUTION_PREFIX: Final = "Execution Result:\n\n" _initialized = False - def __init__(self, instructions: str, config: AutomataOpenAIAgentConfig) -> None: + def __init__(self, instructions: str, config: OpenAIAutomataAgentConfig) -> None: super().__init__(instructions) self.config = config self.iteration_count = 0 diff --git a/automata/core/context_providers/symbol_synchronization.py b/automata/core/context_providers/symbol_synchronization.py index c3b66155..4cf5c008 100644 --- a/automata/core/context_providers/symbol_synchronization.py +++ b/automata/core/context_providers/symbol_synchronization.py @@ -4,24 +4,31 @@ class SymbolProviderRegistry: + """A class for registering and tracking `ISymbolProvider` instances.""" + _providers: Set[ISymbolProvider] = set([]) sorted_supported_symbols: List[Symbol] = [] @staticmethod - def register_provider(provider: ISymbolProvider): + def register_provider(provider: ISymbolProvider) -> None: provider.set_synchronized(False) SymbolProviderRegistry._providers.add(provider) - return provider @staticmethod - def synchronize(): + def synchronize() -> None: + """ + Synchronizes all symbol providers. + As part of the synchronization process, each provider has + their synchronized status set True and their supported symbols + filtered to only include symbols that are supported by all providers. + """ all_symbols = [ set(provider._get_sorted_supported_symbols()) for provider in SymbolProviderRegistry._providers ] - sorted_supported_symbols = set.intersection(*all_symbols) + supported_symbols = set.intersection(*all_symbols) - sorted_supported_symbols = sorted(list(sorted_supported_symbols), key=lambda x: x.dotpath) + sorted_supported_symbols = sorted(list(supported_symbols), key=lambda x: x.dotpath) for provider in SymbolProviderRegistry._providers: provider.filter_symbols(sorted_supported_symbols) @@ -33,7 +40,8 @@ def synchronize(): raise RuntimeError("No symbols are supported by any symbol provider") @staticmethod - def get_sorted_supported_symbols(): + def get_sorted_supported_symbols() -> List[Symbol]: + """Returns a list of all supported symbols.""" if not SymbolProviderRegistry.sorted_supported_symbols: SymbolProviderRegistry.synchronize() @@ -41,6 +49,8 @@ def get_sorted_supported_symbols(): class SymbolProviderSynchronizationContext: + """A context manager for synchronizing symbol providers.""" + def __init__(self): self._was_synchronized = False diff --git a/automata/docs/config/agent_config.rst b/automata/docs/config/agent_config.rst index 59b12cb8..72ce60cf 100644 --- a/automata/docs/config/agent_config.rst +++ b/automata/docs/config/agent_config.rst @@ -66,7 +66,7 @@ YAML, it raises an Exception. Once the loading completes, it adds Inherited Classes ----------------- -The ``AutomataOpenAIAgentConfig`` is a concrete class that inherits from +The ``OpenAIAutomataAgentConfig`` is a concrete class that inherits from ``AgentConfig``. This class specifies ``OPENAI`` as the ``LLMProvider`` and allows the use of different models. It further enriches the configuration by defining the system template, system template @@ -76,16 +76,16 @@ instruction. Example ------- -Creating a derived class ``AutomataOpenAIAgentConfig`` and using the +Creating a derived class ``OpenAIAutomataAgentConfig`` and using the ``load`` method: .. code:: python - from automata.config.openai_agent import AutomataOpenAIAgentConfig + from automata.config.openai_agent import OpenAIAutomataAgentConfig from automata.config.base import AgentConfigName - config = AutomataOpenAIAgentConfig.load(AgentConfigName.DEFAULT) - assert isinstance(config, AutomataOpenAIAgentConfig) + config = OpenAIAutomataAgentConfig.load(AgentConfigName.DEFAULT) + assert isinstance(config, OpenAIAutomataAgentConfig) Limitations ----------- diff --git a/automata/docs/config/agent_config_builder.rst b/automata/docs/config/agent_config_builder.rst index 874006f3..e3686d54 100644 --- a/automata/docs/config/agent_config_builder.rst +++ b/automata/docs/config/agent_config_builder.rst @@ -26,7 +26,7 @@ object or the configuration object name. Related Symbols --------------- -- ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfigBuilder`` - ``automata.tests.unit.test_automata_agent_builder.test_builder_default_config`` - ``automata.tests.unit.test_automata_agent_builder.test_builder_creates_proper_instance`` @@ -34,15 +34,15 @@ Example ------- The following example demonstrates how to create an instance of -``AutomataOpenAIAgentConfigBuilder``, a subclass of +``OpenAIAutomataAgentConfigBuilder``, a subclass of ``AgentConfigBuilder``, and configure its properties. .. code:: python - from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder + from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.tools.registries import Tool - builder = AutomataOpenAIAgentConfigBuilder() + builder = OpenAIAutomataAgentConfigBuilder() builder = builder.with_model("gpt-3.5-turbo") builder = builder.with_stream(True) builder = builder.with_verbose(True) @@ -58,7 +58,7 @@ Limitations The main limitation of ``AgentConfigBuilder`` is that it’s an abstract class and can’t be used directly. Subclasses (like -``AutomataOpenAIAgentConfigBuilder``) should be used, which implement +``OpenAIAutomataAgentConfigBuilder``) should be used, which implement the necessary methods, and can be built efficiently with specific configurations. diff --git a/automata/docs/config/automata_open_ai_agent_config.rst b/automata/docs/config/automata_open_ai_agent_config.rst index 6224e8d3..7298fa28 100644 --- a/automata/docs/config/automata_open_ai_agent_config.rst +++ b/automata/docs/config/automata_open_ai_agent_config.rst @@ -1,7 +1,7 @@ -AutomataOpenAIAgentConfig +OpenAIAutomataAgentConfig ========================= -``AutomataOpenAIAgentConfig`` is a configuration class that helps in +``OpenAIAutomataAgentConfig`` is a configuration class that helps in setting up and interacting with an ``OpenAIAutomataAgent``. It contains attributes such as ``config_name``, ``tools``, ``instructions``, and others to provide the necessary setup and settings to be used by the @@ -10,7 +10,7 @@ agent. Overview -------- -``AutomataOpenAIAgentConfig`` provides a way to load agent +``OpenAIAutomataAgentConfig`` provides a way to load agent configurations specified by the ``AgentConfigName``. The configuration options can be set during the instantiation of the class or can be loaded using the ``load`` classmethod. It provides utility methods to @@ -34,20 +34,20 @@ Example ------- The following example demonstrates how to create an instance of -``AutomataOpenAIAgentConfig`` using a predefined configuration name. +``OpenAIAutomataAgentConfig`` using a predefined configuration name. .. code:: python - from automata.config.openai_agent import AutomataOpenAIAgentConfig + from automata.config.openai_agent import OpenAIAutomataAgentConfig from automata.config.config_types import AgentConfigName config_name = AgentConfigName.AUTOMATA_MAIN - config = AutomataOpenAIAgentConfig.load(config_name) + config = OpenAIAutomataAgentConfig.load(config_name) Limitations ----------- -The primary limitation of ``AutomataOpenAIAgentConfig`` is that it +The primary limitation of ``OpenAIAutomataAgentConfig`` is that it relies on the predefined configuration files based on ``AgentConfigName``. It can only load configurations from those files and cannot load custom configuration files. In addition, it assumes a @@ -57,6 +57,6 @@ Follow-up Questions: -------------------- - How can we include custom configuration files for loading into the - ``AutomataOpenAIAgentConfig`` class? -- What are the applications of ``AutomataOpenAIAgentConfig`` when + ``OpenAIAutomataAgentConfig`` class? +- What are the applications of ``OpenAIAutomataAgentConfig`` when working with ``OpenAIAutomataAgent`` in a real-world scenario? diff --git a/automata/docs/config/automata_open_ai_agent_config_builder.rst b/automata/docs/config/automata_open_ai_agent_config_builder.rst index 0157b3c4..1095b9b7 100644 --- a/automata/docs/config/automata_open_ai_agent_config_builder.rst +++ b/automata/docs/config/automata_open_ai_agent_config_builder.rst @@ -1,7 +1,7 @@ -AutomataOpenAIAgentConfigBuilder +OpenAIAutomataAgentConfigBuilder ================================ -``AutomataOpenAIAgentConfigBuilder`` is a builder class for constructing +``OpenAIAutomataAgentConfigBuilder`` is a builder class for constructing instances of ``AutomataAgents`` with customized configurations for interacting with the OpenAI API. It provides a flexible and easy-to-use interface for setting various properties of the agent before @@ -10,19 +10,19 @@ instantiation. Overview -------- -``AutomataOpenAIAgentConfigBuilder`` extends the base class +``OpenAIAutomataAgentConfigBuilder`` extends the base class ``AgentConfigBuilder``. It provides methods to set the agent properties, such as model, stream flag, verbose flag, toolkits, session ID, max iterations, and temperature. The class provides type validation for these properties and raises a ``ValueError`` for invalid inputs. It also -provides classmethods for creating an ``AutomataOpenAIAgentConfig`` +provides classmethods for creating an ``OpenAIAutomataAgentConfig`` instance from provided arguments, configuration name, or configuration object. Related Symbols --------------- -- ``automata.config.openai_agent.AutomataOpenAIAgentConfig`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfig`` - ``automata.core.agent.providers.OpenAIAutomataAgent`` - ``automata.tests.conftest.automata_agent_config_builder`` @@ -30,15 +30,15 @@ Example ------- In the following example, we demonstrate how to create an instance of -``AutomataOpenAIAgentConfigBuilder`` with custom configuration options: +``OpenAIAutomataAgentConfigBuilder`` with custom configuration options: .. code:: python - from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder + from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.config.config_types import AgentConfigName config_name = AgentConfigName.AUTOMATA_MAIN - builder = AutomataOpenAIAgentConfigBuilder.from_name(config_name) + builder = OpenAIAutomataAgentConfigBuilder.from_name(config_name) # Customize configuration options builder = builder.with_model("gpt-3.5-turbo") @@ -53,5 +53,5 @@ Follow-up Questions: -------------------- - How to support type validation for more complex custom types? -- Can the ``AutomataOpenAIAgentConfigBuilder`` be made even more +- Can the ``OpenAIAutomataAgentConfigBuilder`` be made even more flexible and easy-to-use? diff --git a/automata/docs/config/base/config.rst b/automata/docs/config/base/config.rst index ef64103f..4547ec94 100644 --- a/automata/docs/config/base/config.rst +++ b/automata/docs/config/base/config.rst @@ -28,7 +28,7 @@ Example The following example demonstrates how the ``AgentConfig.Config`` class is implemented within the ``AgentConfig`` class. In this case, we are -using the ``AutomataOpenAIAgentConfig`` subclass, which inherits the +using the ``OpenAIAutomataAgentConfig`` subclass, which inherits the properties from the ``AgentConfig`` class. .. code:: python @@ -36,7 +36,7 @@ properties from the ``AgentConfig`` class. from automata.config.base import AgentConfig, LLMProvider from pydantic import BaseModel - class AutomataOpenAIAgentConfig(AgentConfig, BaseModel): + class OpenAIAutomataAgentConfig(AgentConfig, BaseModel): class Config: arbitrary_types_allowed = True provider = LLMProvider.OPENAI diff --git a/automata/docs/config/instruction_config_version.rst b/automata/docs/config/instruction_config_version.rst index 8ec662a8..f357732f 100644 --- a/automata/docs/config/instruction_config_version.rst +++ b/automata/docs/config/instruction_config_version.rst @@ -3,14 +3,14 @@ InstructionConfigVersion ``InstructionConfigVersion`` is an enumerated class that represents the various versions of instruction sets available for use in the -``AutomataOpenAIAgentConfig`` class. It corresponds to the name of the +``OpenAIAutomataAgentConfig`` class. It corresponds to the name of the YAML file in the ``automata/configs/instruction_configs`` directory. Overview -------- This enumeration helps to identify the specific instruction version to -be used in an ``AutomataOpenAIAgentConfig`` instance. The different +be used in an ``OpenAIAutomataAgentConfig`` instance. The different versions of instructions can be managed through these enumerated values, allowing a user to switch between different sets of agent instructions easily. @@ -18,25 +18,25 @@ easily. Related Symbols --------------- -- ``automata.config.openai_agent.AutomataOpenAIAgentConfig`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfig`` - ``automata.config.base.InstructionConfigVersion`` - ``automata.tests.unit.test_automata_agent_builder.test_config_loading_different_versions`` - ``automata.tests.unit.test_automata_agent.test_build_initial_messages`` -- ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder.with_instruction_version`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfigBuilder.with_instruction_version`` Example ------- The following is an example demonstrating how to use the ``InstructionConfigVersion`` enumeration when building an -``AutomataOpenAIAgentConfig`` instance: +``OpenAIAutomataAgentConfig`` instance: .. code:: python - from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder + from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.config.base import InstructionConfigVersion - config_builder = AutomataOpenAIAgentConfigBuilder() + config_builder = OpenAIAutomataAgentConfigBuilder() config = ( config_builder.with_instruction_version(InstructionConfigVersion.AGENT_INTRODUCTION) .build() diff --git a/automata/docs/config/llm_provider.rst b/automata/docs/config/llm_provider.rst index 668785ce..818c5c25 100644 --- a/automata/docs/config/llm_provider.rst +++ b/automata/docs/config/llm_provider.rst @@ -12,7 +12,7 @@ Related Symbols - ``automata.core.llm.foundation.LLMChatCompletionProvider`` - ``automata.config.base.AgentConfig`` -- ``automata.config.openai_agent.AutomataOpenAIAgentConfig`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfig`` Overview -------- @@ -32,11 +32,11 @@ create the desired LLMChatCompletionProvider for an application. .. code:: python from automata.config.base import LLMProvider - from automata.config.openai_agent import AutomataOpenAIAgentConfig + from automata.config.openai_agent import OpenAIAutomataAgentConfig from automata.core.llm.foundation import LLMChatCompletionProvider # Get the LLMProvider from the agent configuration - config = AutomataOpenAIAgentConfig() + config = OpenAIAutomataAgentConfig() provider = config.get_provider() # Create the appropriate LLMChatCompletionProvider based on the LLMProvider value diff --git a/automata/docs/config/openai_agent/config.rst b/automata/docs/config/openai_agent/config.rst index d875337b..187e29ac 100644 --- a/automata/docs/config/openai_agent/config.rst +++ b/automata/docs/config/openai_agent/config.rst @@ -1,7 +1,7 @@ -AutomataOpenAIAgentConfig +OpenAIAutomataAgentConfig ========================= -``AutomataOpenAIAgentConfig`` is a configuration class that helps +``OpenAIAutomataAgentConfig`` is a configuration class that helps configure, setup, and interact with an ``OpenAIAutomataAgent``. It contains various attributes such as ``SUPPORTED_MODELS``, ``arbitrary_types_allowed``, and others to provide the necessary setup @@ -10,7 +10,7 @@ and settings to be used by the agent. Overview -------- -``AutomataOpenAIAgentConfig`` provides a way to manage the agent +``OpenAIAutomataAgentConfig`` provides a way to manage the agent configurations and settings for interacting with the OpenAI API. The configuration includes the supported models, arbitrary types allowance, and other necessary settings for generating responses based on given @@ -22,7 +22,7 @@ Related Symbols - ``automata.tests.conftest.automata_agent_config_builder`` - ``automata.core.agent.providers.OpenAIAutomataAgent`` - ``automata.tests.unit.test_automata_agent_builder.test_builder_creates_proper_instance`` -- ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfigBuilder`` - ``automata.tests.unit.test_automata_agent_builder.test_config_loading_different_versions`` - ``automata.config.config_types.AgentConfigName`` @@ -30,22 +30,22 @@ Example ------- The following is an example demonstrating how to create an instance of -``AutomataOpenAIAgentConfig`` using -``AutomataOpenAIAgentConfigBuilder``. +``OpenAIAutomataAgentConfig`` using +``OpenAIAutomataAgentConfigBuilder``. .. code:: python - from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder + from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.config.config_types import AgentConfigName config_name = AgentConfigName.TEST - config_builder = AutomataOpenAIAgentConfigBuilder.from_name(config_name) + config_builder = OpenAIAutomataAgentConfigBuilder.from_name(config_name) config = config_builder.build() Limitations ----------- -The primary limitation of ``AutomataOpenAIAgentConfig`` is that it +The primary limitation of ``OpenAIAutomataAgentConfig`` is that it relies on the predefined configuration options. It does not support custom configuration options outside of the specified settings, and any customization should be done within the boundaries of these settings. @@ -54,8 +54,8 @@ Follow-up Questions: -------------------- - How can we include custom configuration options in - ``AutomataOpenAIAgentConfig`` to allow for more flexible agent + ``OpenAIAutomataAgentConfig`` to allow for more flexible agent configurations? - Are there any considerations regarding backward compatibility or dependency issues when adding new configuration options or modifying - existing ones in ``AutomataOpenAIAgentConfig``? + existing ones in ``OpenAIAutomataAgentConfig``? diff --git a/automata/docs/config/openai_agent/template_formatter.rst b/automata/docs/config/openai_agent/template_formatter.rst index f3a4eeb1..56f603a7 100644 --- a/automata/docs/config/openai_agent/template_formatter.rst +++ b/automata/docs/config/openai_agent/template_formatter.rst @@ -1,7 +1,7 @@ -AutomataOpenAIAgentConfig +OpenAIAutomataAgentConfig ========================= -``AutomataOpenAIAgentConfig`` is a configuration class that helps +``OpenAIAutomataAgentConfig`` is a configuration class that helps configure, setup, and interact with an ``OpenAIAutomataAgent``. It contains various attributes such as ``config_name``, ``instructions``, ``tools``, and others to provide the necessary setup and settings to be @@ -12,41 +12,41 @@ agent configurations. Overview -------- -``AutomataOpenAIAgentConfig`` provides a way to load the agent +``OpenAIAutomataAgentConfig`` provides a way to load the agent configurations specified by the ``AgentConfigName``. The configuration options can be set during the instantiation of the class or can be loaded using the ``load`` classmethod. It provides utility methods to load and setup agent configurations while also validating the provided settings. The class offers a convenient way to create an agent with custom configurations and includes closely related symbols like -``AgentConfigName`` and ``AutomataOpenAIAgentConfigBuilder``. +``AgentConfigName`` and ``OpenAIAutomataAgentConfigBuilder``. Related Symbols --------------- - ``automata.config.config_types.AgentConfigName`` - ``automata.core.agent.providers.OpenAIAutomataAgent`` -- ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfigBuilder`` - ``automata.tests.conftest.automata_agent_config_builder`` Example ------- The following is an example demonstrating how to create an instance of -``AutomataOpenAIAgentConfig`` using a predefined configuration name. +``OpenAIAutomataAgentConfig`` using a predefined configuration name. .. code:: python - from automata.config.openai_agent import AutomataOpenAIAgentConfig + from automata.config.openai_agent import OpenAIAutomataAgentConfig from automata.config.config_types import AgentConfigName config_name = AgentConfigName.AUTOMATA_MAIN - config = AutomataOpenAIAgentConfig.load(config_name) + config = OpenAIAutomataAgentConfig.load(config_name) Limitations ----------- -The primary limitation of ``AutomataOpenAIAgentConfig`` is that it +The primary limitation of ``OpenAIAutomataAgentConfig`` is that it relies on the predefined configuration files based on ``AgentConfigName``. It can only load configurations from those files and cannot load custom configuration files. In addition, it assumes a @@ -56,4 +56,4 @@ Follow-up Questions: -------------------- - How can we include custom configuration files for loading into the - ``AutomataOpenAIAgentConfig`` class? + ``OpenAIAutomataAgentConfig`` class? diff --git a/automata/docs/core/agent/open_ai_agent_tool_builder.rst b/automata/docs/core/agent/open_ai_agent_tool_builder.rst index c7668c68..5071d11f 100644 --- a/automata/docs/core/agent/open_ai_agent_tool_builder.rst +++ b/automata/docs/core/agent/open_ai_agent_tool_builder.rst @@ -45,7 +45,7 @@ Several classes and methods interact or have a tied relationship with - ``automata_agent_config_builder``: A fixture used as a way to standardize and isolate setup procedures for testing by generating an - instance of ``AutomataOpenAIAgentConfigBuilder``. + instance of ``OpenAIAutomataAgentConfigBuilder``. Example ------- diff --git a/automata/docs/core/agent/open_ai_automata_agent_instance.rst b/automata/docs/core/agent/open_ai_automata_agent_instance.rst index 060f27be..8319449a 100644 --- a/automata/docs/core/agent/open_ai_automata_agent_instance.rst +++ b/automata/docs/core/agent/open_ai_automata_agent_instance.rst @@ -6,7 +6,7 @@ the Automata OpenAI agent. It stores instructions and configuration for an agent allowing it to be run multiple times without needing to be reinitialized. This includes procedures for agent execution, error handling, and interfacing with the ``OpenAIAutomataAgent`` and the -``AutomataOpenAIAgentConfigBuilder`` for agent creation and +``OpenAIAutomataAgentConfigBuilder`` for agent creation and configuration, respectively. Related Symbols @@ -16,13 +16,13 @@ Related Symbols - ``automata.tests.unit.test_automata_agent`` - ``automata.core.agent.providers.OpenAIAutomataAgent`` - ``automata.tests.conftest.automata_agent_config_builder`` -- ``automata.config.openai_agent.AutomataOpenAIAgentConfig`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfig`` - ``automata.tests.conftest.automata_agent`` -- ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfigBuilder`` - ``automata.tests.conftest.task`` - ``automata.core.tools.builders.context_oracle.ContextOracleOpenAIToolkitBuilder`` - ``automata.tests.unit.test_automata_agent`` -- ``automata.config.openai_agent.AutomataOpenAIAgentConfigBuilder.create_from_args`` +- ``automata.config.openai_agent.OpenAIAutomataAgentConfigBuilder.create_from_args`` - ``automata.core.agent.providers.OpenAIAutomataAgent.run`` - ``automata.core.agent.agent.AgentInstance`` - ``automata.config.base.AgentConfigName`` @@ -48,7 +48,7 @@ of iterations. If the maximum iteration count is exceeded, an error is raised. If the agent successfully executes, it returns the result. This class depends on the -``AutomataOpenAIAgentConfigBuilder.create_from_args`` function to set up +``OpenAIAutomataAgentConfigBuilder.create_from_args`` function to set up an ``OpenAIAutomataAgent`` with the appropriate configurations. To avoid errors, make sure the required configuration parameters are included in ``kwargs`` when creating the ``OpenAIAutomataAgentInstance``. @@ -64,7 +64,7 @@ Follow-up Questions: - What is the specific process the ``run`` method follows when executing the agent? -- How does the ``AutomataOpenAIAgentConfigBuilder`` integrate with the +- How does the ``OpenAIAutomataAgentConfigBuilder`` integrate with the ``OpenAIAutomataAgent`` in initializing an agent? - What are efficient ways to manage the agent for large tasks or numerous initializations? diff --git a/automata/docs/core/base/agent/config.rst b/automata/docs/core/base/agent/config.rst index 72e0fe87..ea62b453 100644 --- a/automata/docs/core/base/agent/config.rst +++ b/automata/docs/core/base/agent/config.rst @@ -36,11 +36,11 @@ The following example demonstrates how to create and run an instance of .. code:: python from automata.core.agent.instances import AutomataOpenAIAgentInstance - from automata.core.agent.config import AutomataOpenAIAgentConfig + from automata.core.agent.config import OpenAIAutomataAgentConfig from automata.core.agent.config_config_enums import AgentConfigName config_name = AgentConfigName.TEST - config = AutomataOpenAIAgentConfig.load(config_name) + config = OpenAIAutomataAgentConfig.load(config_name) instructions = "This is a test." agent_instance = AutomataOpenAIAgentInstance.create(config_name) diff --git a/automata/notebooks/demo_run_agent.ipynb b/automata/notebooks/demo_run_agent.ipynb index 8a640e9d..8472a302 100644 --- a/automata/notebooks/demo_run_agent.ipynb +++ b/automata/notebooks/demo_run_agent.ipynb @@ -11,13 +11,15 @@ "from typing import Any, Set\n", "\n", "from automata.config.base import AgentConfigName\n", - "from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder\n", - "from automata.core.agent.agents import AutomataOpenAIAgent\n", - "from automata.core.agent.tool.tool_utils import AgentToolFactory, DependencyFactory\n", - "from automata.core.base.agent import AgentToolProviders\n", - "from automata.core.base.github_manager import GitHubManager\n", - "from automata.core.coding.py.module_loader import py_module_loader\n", - "\n", + "from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder\n", + "from automata.core.agent.providers import OpenAIAutomataAgent\n", + "from automata.core.singletons.dependency_factory import dependency_factory\n", + "from automata.core.tools.factory import AgentToolFactory\n", + "from automata.core.singletons.py_module_loader import py_module_loader\n", + "from automata.core.context_providers.symbol_synchronization import (\n", + " SymbolProviderSynchronizationContext,\n", + ")\n", + " \n", "logger = logging.getLogger(__name__)\n", "\n", "py_module_loader.initialize()" @@ -30,52 +32,87 @@ "metadata": { "scrolled": true }, + "outputs": [], + "source": [ + "# Construct the set of all dependencies that will be used to build the tools\n", + "toolkit_list = [\"context-oracle\"]\n", + "tool_dependencies = dependency_factory.build_dependencies_for_tools(toolkit_list)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6130c6f1", + "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 779/779 [00:00<00:00, 5976.35it/s]\n" - ] + "data": { + "text/plain": [ + "{'symbol_code_embedding_handler': ,\n", + " 'embedding_similarity_calculator': ,\n", + " 'symbol_doc_embedding_handler': }" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# Construct the set of all dependencies that will be used to build the tools\n", - "tool_list = [\"context_oracle\"]\n", - "dependencies: Set[Any] = set()\n", - "tool_dependencies = {}\n", - "\n", - "for tool in tool_list:\n", - " for dependency_name, _ in AgentToolFactory.TOOLKIT_TYPE_TO_ARGS[AgentToolProviders(tool)]:\n", - " if dependency_name not in dependencies:\n", - " dependencies.add(dependency_name)\n", - " logger.info(f\" - Building Dependency {dependency_name}...\")\n", - " tool_dependencies[dependency_name] = DependencyFactory().get(dependency_name)\n" + "tool_dependencies" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "id": "fb0430f9", - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [], "source": [ "# Build the tools\n", - "tools = AgentToolFactory.build_tools(tool_list, **tool_dependencies)" + "tools = AgentToolFactory.build_tools(toolkit_list, **tool_dependencies)\n", + "\n", + "with SymbolProviderSynchronizationContext() as synchronization_context:\n", + " synchronization_context.register_provider(tool_dependencies[\"symbol_code_embedding_handler\"])\n", + " synchronization_context.synchronize()\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "id": "1e5b36ce", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "RuntimeError", + "evalue": "Cannot get symbols before synchronization", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Build the agent config\u001b[39;00m\n\u001b[1;32m 2\u001b[0m config_name \u001b[38;5;241m=\u001b[39m AgentConfigName(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mautomata-main\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 4\u001b[0m agent_config \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m----> 5\u001b[0m \u001b[43mOpenAIAutomataAgentConfigBuilder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_name\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwith_tools\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtools\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwith_model\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgpt-4\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuild\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m )\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/config/base.py:124\u001b[0m, in \u001b[0;36mAgentConfigBuilder.build\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mbuild\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 123\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Build and return an Agent instance with the current configuration.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 124\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_config\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msetup\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_config\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/config/openai_agent.py:66\u001b[0m, in \u001b[0;36mAutomataOpenAIAgentConfig.setup\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msession_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(uuid\u001b[38;5;241m.\u001b[39muuid4())\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_template_formatter:\n\u001b[1;32m 64\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_template_formatter \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 65\u001b[0m AutomataOpenAIAgentConfig\u001b[38;5;241m.\u001b[39mTemplateFormatter\u001b[38;5;241m.\u001b[39mcreate_default_formatter(\n\u001b[0;32m---> 66\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[43mdependency_factory\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msymbol_rank\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 67\u001b[0m )\n\u001b[1;32m 68\u001b[0m )\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_instruction:\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_instruction \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_formatted_instruction()\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:97\u001b[0m, in \u001b[0;36mDependencyFactory.get\u001b[0;34m(self, dependency)\u001b[0m\n\u001b[1;32m 95\u001b[0m creation_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, method_name)\n\u001b[1;32m 96\u001b[0m logger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCreating dependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 97\u001b[0m instance \u001b[38;5;241m=\u001b[39m \u001b[43mcreation_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m AgentGeneralError(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m not found.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:149\u001b[0m, in \u001b[0;36mDependencyFactory.create_symbol_rank\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;129m@lru_cache\u001b[39m()\n\u001b[1;32m 144\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate_symbol_rank\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m SymbolRank:\n\u001b[1;32m 145\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 146\u001b[0m \u001b[38;5;124;03m Associated Keyword Args:\u001b[39;00m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;124;03m symbol_rank_config (SymbolRankConfig())\u001b[39;00m\n\u001b[1;32m 148\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 149\u001b[0m subgraph: nx\u001b[38;5;241m.\u001b[39mDiGraph \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msubgraph\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 150\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SymbolRank(subgraph, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moverrides\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msymbol_rank_config\u001b[39m\u001b[38;5;124m\"\u001b[39m, SymbolRankConfig()))\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:97\u001b[0m, in \u001b[0;36mDependencyFactory.get\u001b[0;34m(self, dependency)\u001b[0m\n\u001b[1;32m 95\u001b[0m creation_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, method_name)\n\u001b[1;32m 96\u001b[0m logger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCreating dependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 97\u001b[0m instance \u001b[38;5;241m=\u001b[39m \u001b[43mcreation_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m AgentGeneralError(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m not found.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:141\u001b[0m, in \u001b[0;36mDependencyFactory.create_subgraph\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;129m@lru_cache\u001b[39m()\n\u001b[1;32m 139\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate_subgraph\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph:\n\u001b[1;32m 140\u001b[0m symbol_graph: SymbolGraph \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msymbol_graph\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 141\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msymbol_graph\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdefault_rankable_subgraph\u001b[49m\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/graph.py:499\u001b[0m, in \u001b[0;36mSymbolGraph.default_rankable_subgraph\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 497\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[1;32m 498\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdefault_rankable_subgraph\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph:\n\u001b[0;32m--> 499\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_build_default_rankable_subgraph\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/graph.py:503\u001b[0m, in \u001b[0;36mSymbolGraph._build_default_rankable_subgraph\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 501\u001b[0m \u001b[38;5;129m@lru_cache\u001b[39m(maxsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 502\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_build_default_rankable_subgraph\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph:\n\u001b[0;32m--> 503\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_build_rankable_subgraph\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/graph.py:518\u001b[0m, in \u001b[0;36mSymbolGraph._build_rankable_subgraph\u001b[0;34m(self, flow_rank, path_filter)\u001b[0m\n\u001b[1;32m 508\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 509\u001b[0m \u001b[38;5;124;03mCreates a subgraph of the original `SymbolGraph` which\u001b[39;00m\n\u001b[1;32m 510\u001b[0m \u001b[38;5;124;03mcontains only rankable symbols. The nodes in the subgraph\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[38;5;124;03mTODO - Think of how to handle relationships here.\u001b[39;00m\n\u001b[1;32m 515\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 516\u001b[0m G \u001b[38;5;241m=\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph()\n\u001b[0;32m--> 518\u001b[0m filtered_symbols \u001b[38;5;241m=\u001b[39m get_rankable_symbols(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_sorted_supported_symbols\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 520\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m path_filter \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 521\u001b[0m filtered_symbols \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 522\u001b[0m sym \u001b[38;5;28;01mfor\u001b[39;00m sym \u001b[38;5;129;01min\u001b[39;00m filtered_symbols \u001b[38;5;28;01mif\u001b[39;00m sym\u001b[38;5;241m.\u001b[39mdotpath\u001b[38;5;241m.\u001b[39mstartswith(path_filter) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 523\u001b[0m ]\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/base.py:292\u001b[0m, in \u001b[0;36mISymbolProvider.get_sorted_supported_symbols\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 289\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m is_sorted\n\u001b[1;32m 291\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_synchronized:\n\u001b[0;32m--> 292\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot get symbols before synchronization\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 294\u001b[0m sorted_symbols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_sorted_supported_symbols()\n\u001b[1;32m 296\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m is_sorted([symbol\u001b[38;5;241m.\u001b[39mdotpath \u001b[38;5;28;01mfor\u001b[39;00m symbol \u001b[38;5;129;01min\u001b[39;00m sorted_symbols]):\n", + "\u001b[0;31mRuntimeError\u001b[0m: Cannot get symbols before synchronization" + ] + } + ], "source": [ "# Build the agent config\n", - "config_name = AgentConfigName(\"automata_main\")\n", + "config_name = AgentConfigName(\"automata-main\")\n", "\n", "agent_config = (\n", - " AutomataOpenAIAgentConfigBuilder.from_name(config_name)\n", + " OpenAIAutomataAgentConfigBuilder.from_name(config_name)\n", " .with_tools(tools)\n", " .with_model(\"gpt-4\")\n", " .build()\n", @@ -84,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "67aa2161", "metadata": { "scrolled": true @@ -98,497 +135,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "4cad1214", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Function Call:\n", - "context-oracle\n", - "\n", - "Arguments:\n", - "{\n", - " \"query\": \"Explain how embeddings are used by the codebase\"\n", - "}\n", - "\n", - " The most similar doc embedding = SymbolDocEmbedding(\n", - "symbol=Symbol(scip-python python automata 7bcc14a4733f0168e88f0547befe83864dae01a2 `automata.core.symbol.symbol_types`/SymbolCodeEmbedding#, scip-python, Package(python automata 7bcc14a4733f0168e88f0547befe83864dae01a2), (Descriptor(automata.core.symbol.symbol_types, 1), Descriptor(SymbolCodeEmbedding, 2))),\n", - "\n", - "embedding_source=# SymbolCodeEmbedding\n", - "\n", - "`SymbolCodeEmbedding` is a class that represents embeddings for symbol code. It inherits from `SymbolEmbedding` and provides an interface for creating, updating, and retrieving embeddings for various symbols in the source code.\n", - "\n", - "## Overview\n", - "\n", - "`SymbolCodeEmbedding` is primarily used for creating embeddings of code symbols and storing them in a vector database. It is used in connection with the `SymbolCodeEmbeddingHandler` class, which handles the embedding generation process and the storage of the embeddings in the vector database. The class is designed to represent an embedding of a symbol in its source code, along with the symbol information and the vector representing it.\n", - "\n", - "## Related Symbols\n", - "\n", - "- `automata.tests.unit.test_symbol_embedding.test_get_embedding`\n", - "- `automata.tests.unit.test_symbol_similarity.test_get_nearest_symbols_for_query`\n", - "- `automata.core.embedding.code_embedding.SymbolCodeEmbeddingHandler`\n", - "- `automata.tests.unit.test_symbol_search_tool.test_retrieve_source_code_by_symbol`\n", - "- `automata.core.symbol.symbol_types.SymbolDocEmbedding`\n", - "- `automata.tests.unit.test_database_vector.test_lookup_symbol`\n", - "- `automata.core.symbol.symbol_types.Symbol`\n", - "- `automata.tests.unit.test_database_vector.test_add_symbols`\n", - "- `automata.core.symbol.symbol_types.SymbolEmbedding`\n", - "- `automata.tests.unit.test_symbol_search.test_retrieve_source_code_by_symbol`\n", - "\n", - "## Example\n", - "\n", - "The following example demonstrates how to create a `SymbolCodeEmbedding` instance.\n", - "\n", - "```python\n", - "import numpy as np\n", - "from automata.core.symbol.symbol_types import SymbolCodeEmbedding\n", - "from automata.core.symbol.parser import parse_symbol\n", - "\n", - "symbol_str = \"scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.agent.agent_enums`/ActionIndicator#\"\n", - "symbol = parse_symbol(symbol_str)\n", - "source_code = \"symbol_source\"\n", - "vector = np.array([1, 0, 0, 0])\n", - "\n", - "embedding = SymbolCodeEmbedding(symbol=symbol, source_code=source_code, vector=vector)\n", - "```\n", - "\n", - "## Limitations\n", - "\n", - "The primary limitation of `SymbolCodeEmbedding` is its dependence on the provided source code and vector for creating the embeddings. It assumes the source code is valid and the vector is a proper representation of the symbol. The class does not currently include any error handling or validation mechanisms for these inputs.\n", - "\n", - "## Follow-up Questions:\n", - "\n", - "- Are there specific validation processes that should be included in the `SymbolCodeEmbedding`?\n", - "- What are the potential issues when creating a `SymbolCodeEmbedding` instance with incorrect input parameters?\n", - "\n", - "vector_length=1536\n", - "\n", - "source_code=class SymbolCodeEmbedding(SymbolEmbedding):\n", - " \"\"\"A concrete class for symbol code embeddings\"\"\"\n", - "\n", - " def __init__(self, symbol: Symbol, source_code: str, vector: np.ndarray):\n", - " super().__init__(symbol, source_code, vector)\n", - "\n", - "\n", - "\n", - "\n", - "summary=`SymbolCodeEmbedding` is a class that represents embeddings for symbol code, inheriting from `SymbolEmbedding`. It provides an interface for creating, updating, and retrieving embeddings for various symbols in source code, primarily used in connection with the `SymbolCodeEmbeddingHandler` class. The class represents an embedding of a symbol in its source code, along with the symbol information and the vector representing it. However, it has limitations as it depends on the provided source code and vector for creating embeddings, assuming they are valid without any error handling or validation mechanisms.\n", - "\n", - "Example:\n", - "\n", - "```python\n", - "import numpy as np\n", - "from automata.core.symbol.symbol_types import SymbolCodeEmbedding\n", - "from automata.core.symbol.parser import parse_symbol\n", - "\n", - "symbol_str = \"scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.agent.agent_enums`/ActionIndicator#\"\n", - "symbol = parse_symbol(symbol_str)\n", - "source_code = \"symbol_source\"\n", - "vector = np.array([1, 0, 0, 0])\n", - "\n", - "embedding = SymbolCodeEmbedding(symbol=symbol, source_code=source_code, vector=vector)\n", - "```\n", - "\n", - "context=\n", - " Generate the documentation for SymbolCodeEmbedding using the context shown below -\n", - " Building context for primary symbol - automata.core.symbol.symbol_types.SymbolCodeEmbedding -\n", - " \n", - " Import Statements:\n", - " import abc\n", - " import re\n", - " import numpy as np\n", - " from dataclasses import dataclass\n", - " from enum import Enum\n", - " from typing import Any, Dict, Optional, Tuple\n", - " from automata.core.symbol.scip_pb2 import Descriptor as DescriptorProto\n", - " from automata.core.symbol.parser import parse_symbol\n", - " \n", - " Class Docstring:\n", - " Embedding for symbol code\n", - " \n", - " Methods:\n", - " def __init__(self, symbol: Symbol, source_code: str, vector: np.ndarray):\n", - " super().__init__(symbol, source_code, vector)\n", - " \n", - " \n", - " \n", - " Building context for related symbols -\n", - " \n", - " automata.tests.unit.test_symbol_embedding.test_get_embedding\n", - " \n", - " def test_get_embedding(\n", - " monkeypatch,\n", - " mock_embedding,\n", - " mock_simple_method_symbols,\n", - " ):\n", - " # Mock EmbeddingProvider methods\n", - " mock_provider = Mock(EmbeddingProvider)\n", - " mock_provider.build_embedding.return_value = mock_embedding\n", - " \n", - " # Mock JSONVectorDatabase methods\n", - " mock_db = MagicMock(JSONVectorDatabase)\n", - " mock_db.get.return_value = SymbolCodeEmbedding(\n", - " mock_simple_method_symbols[0], \"symbol_source\", mock_embedding\n", - " )\n", - " \n", - " # Create an instance of the class\n", - " cem = SymbolCodeEmbeddingHandler(embedding_provider=mock_provider, embedding_db=mock_db)\n", - " \n", - " # Call the method\n", - " embedding = cem.get_embedding(mock_simple_method_symbols[0])\n", - " \n", - " # Verify the results\n", - " assert embedding.vector.all() == mock_embedding.all()\n", - " \n", - " \n", - " \n", - " \n", - " automata.tests.unit.test_symbol_similarity.test_get_nearest_symbols_for_query\n", - " \n", - " def test_get_nearest_symbols_for_query(\n", - " monkeypatch, mock_embedding, mock_simple_method_symbols, temp_output_filename\n", - " ):\n", - " # Mocking symbols and their embeddings\n", - " symbol1 = mock_simple_method_symbols[0]\n", - " symbol2 = mock_simple_method_symbols[1]\n", - " symbol3 = mock_simple_method_symbols[2]\n", - " \n", - " embedding1 = SymbolCodeEmbedding(\n", - " symbol=symbol1, vector=np.array([1, 0, 0, 0]), source_code=\"symbol1\"\n", - " )\n", - " embedding2 = SymbolCodeEmbedding(\n", - " symbol=symbol2, vector=np.array([0, 1, 0, 0]), source_code=\"symbol2\"\n", - " )\n", - " embedding3 = SymbolCodeEmbedding(\n", - " symbol=symbol3, vector=np.array([0, 0, 1, 0]), source_code=\"symbol3\"\n", - " )\n", - " \n", - " # Mock JSONVectorDatabase methods\n", - " embedding_db = JSONVectorDatabase(temp_output_filename)\n", - " embedding_db.add(embedding1)\n", - " embedding_db.add(embedding2)\n", - " embedding_db.add(embedding3)\n", - " \n", - " # Create an instance of the class\n", - " mock_provider = MagicMock(EmbeddingProvider)\n", - " cem = SymbolCodeEmbeddingHandler(embedding_db=embedding_db, embedding_provider=mock_provider)\n", - " \n", - " symbol_similarity = SymbolSimilarity(cem)\n", - " \n", - " # Test with query_text that is most similar to symbol1\n", - " cem.embedding_provider.build_embedding.return_value = np.array([1, 0, 0, 0])\n", - " result = symbol_similarity.get_nearest_entries_for_query(\"symbol1\", k=1)\n", - " assert list(result.keys()) == [symbol1]\n", - " \n", - " # Test with query_text that is most similar to symbol2\n", - " cem.embedding_provider.build_embedding.return_value = np.array([0, 1, 0, 0])\n", - " result = symbol_similarity.get_nearest_entries_for_query(\"symbol2\", k=1)\n", - " assert list(result.keys()) == [symbol2]\n", - " \n", - " # Test with query_text that is most similar to symbol3\n", - " cem.embedding_provider.build_embedding.return_value = np.array([0, 0, 1, 0])\n", - " result = symbol_similarity.get_nearest_entries_for_query(\"symbol3\", k=1)\n", - " assert list(result.keys()) == [symbol3]\n", - " \n", - " \n", - " automata.core.embedding.code_embedding.SymbolCodeEmbeddingHandler\n", - " \n", - " Methods:\n", - " def __init__(\n", - " self,\n", - " embedding_db: VectorDatabaseProvider,\n", - " embedding_provider: EmbeddingProvider,\n", - " ) -> None:\n", - " \"\"\"\n", - " A constructor for SymbolCodeEmbeddingHandler\n", - " \n", - " Args:\n", - " embedding_db (VectorDatabaseProvider): The database to store the embeddings in\n", - " embedding_provider (Optional[EmbeddingProvider]): The provider to\n", - " get the embeddings from\n", - " \"\"\"\n", - " super().__init__(embedding_db, embedding_provider)\n", - " \n", - " \n", - " build_embedding(self, source_code: str, symbol: Symbol) -> SymbolCodeEmbedding\n", - " \n", - " get_embedding(self, symbol: Symbol) -> SymbolCodeEmbedding\n", - " \n", - " update_embedding(self, symbol: Symbol) -> None\n", - " \n", - " update_existing_embedding(self, source_code: str, symbol: Symbol) -> None\n", - " \n", - " automata.tests.unit.test_symbol_search_tool.test_retrieve_source_code_by_symbol\n", - " \n", - " def test_retrieve_source_code_by_symbol(symbol_search_tool_builder):\n", - " symbol_search_tool_builder.symbol_search.retrieve_source_code_by_symbol = MagicMock(\n", - " return_value=\"Source code\"\n", - " )\n", - " \n", - " tools = symbol_search_tool_builder.build()\n", - " for tool in tools:\n", - " if tool.name == \"retrieve-source-code-by-symbol\":\n", - " assert tool.func((\"module.path\", \"symbol\")) == \"Source code\"\n", - " \n", - " \n", - " \n", - " \n", - " automata.core.symbol.symbol_types.SymbolDocEmbedding\n", - " \n", - " Class Docstring:\n", - " Embedding for symbol documents\n", - " \n", - " Methods:\n", - " def __init__(\n", - " self,\n", - " symbol: Symbol,\n", - " document: str,\n", - " vector: np.ndarray,\n", - " source_code: Optional[str] = None,\n", - " summary: Optional[str] = None,\n", - " context: Optional[str] = None,\n", - " ) -> None:\n", - " super().__init__(symbol, document, vector)\n", - " # begin additional meta data\n", - " self.source_code = source_code\n", - " self.summary = summary\n", - " self.context = context\n", - " \n", - " automata.tests.unit.test_database_vector.test_lookup_symbol\n", - " \n", - " def test_lookup_symbol(temp_output_filename, symbols):\n", - " vector_db = JSONVectorDatabase(temp_output_filename)\n", - " embedded_symbol_0 = SymbolEmbedding(symbols[0], \"x\", [1, 2, 3])\n", - " vector_db.add(embedded_symbol_0)\n", - " embedded_symbol_1 = SymbolEmbedding(symbols[1], \"y\", [1, 2, 3, 4])\n", - " vector_db.add(embedded_symbol_1)\n", - " \n", - " vector_db.get(symbols[0])\n", - " \n", - " \n", - " \n", - " \n", - " automata.core.symbol.symbol_types.Symbol\n", - " \n", - " Class Docstring:\n", - " Symbol is similar to a URI, it identifies a class, method, or a local variable. SymbolInformation contains rich metadata about symbols such as the docstring.\n", - " \n", - " Symbol has a standardized string representation, which can be used interchangeably with Symbol. The syntax for Symbol is the following:\n", - " \n", - " # ()+ stands for one or more repetitions of \n", - " ::= ' ' ' ' ()+ | 'local ' \n", - " ::= ' ' ' ' \n", - " ::= any UTF-8, escape spaces with double space.\n", - " ::= same as above, use the placeholder '.' to indicate an empty value\n", - " ::= same as above\n", - " ::= same as above\n", - " ::= | | | | | | | \n", - " ::= '/'\n", - " ::= '#'\n", - " ::= '.'\n", - " ::= ':'\n", - " ::= '!'\n", - " ::= '(' ').'\n", - " ::= '[' ']'\n", - " ::= '(' ')'\n", - " ::= \n", - " ::= \n", - " ::= | \n", - " ::= ()+\n", - " ::= '_' | '+' | '-' | '$' | ASCII letter or digit\n", - " ::= '`' ()+ '`'\n", - " ::= any UTF-8 character, escape backticks with double backtick.\n", - " \n", - " Examples -\n", - " from automata.core.symbol.search.symbol_parser import parse_symbol\n", - " \n", - " symbol_class = parse_symbol(\n", - " \"scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.agent.agent_enums`/ActionIndicator#\"\n", - " )\n", - " \n", - " symbol_method = parse_symbol(\n", - " \"scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.base.tool`/ToolNotFoundError#__init__().\"\n", - " )\n", - " \n", - " Methods:\n", - " __eq__(self, other) -> bool\n", - " \n", - " __hash__(self) -> int\n", - " \n", - " __repr__(self) -> str\n", - " \n", - " dotpath(self) -> str\n", - " \n", - " from_string(cls, symbol_str: str) -> \"Symbol\"\n", - " \n", - " is_local(symbol: \"Symbol\") -> bool\n", - " \n", - " is_meta(symbol: \"Symbol\") -> bool\n", - " \n", - " is_parameter(symbol: \"Symbol\") -> bool\n", - " \n", - " is_protobuf(symbol: \"Symbol\") -> bool\n", - " \n", - " module_name(self) -> str\n", - " \n", - " parent(self) -> \"Symbol\"\n", - " \n", - " symbol_kind_by_suffix(self) -> SymbolDescriptor.PyKind\n", - " \n", - " symbol_raw_kind_by_suffix(self) -> DescriptorProto\n", - " \n", - " automata.tests.unit.test_database_vector.test_add_symbols\n", - " \n", - " def test_add_symbols(temp_output_filename, symbols):\n", - " vector_db = JSONVectorDatabase(temp_output_filename)\n", - " embedded_symbol_0 = SymbolEmbedding(symbols[0], \"x\", [1, 2, 3])\n", - " vector_db.add(embedded_symbol_0)\n", - " embedded_symbol_1 = SymbolEmbedding(symbols[1], \"y\", [1, 2, 3, 4])\n", - " vector_db.add(embedded_symbol_1)\n", - " \n", - " \n", - " \n", - " \n", - " automata.core.symbol.symbol_types.SymbolEmbedding\n", - " \n", - " Class Docstring:\n", - " Abstract base class for different types of embeddings\n", - " \n", - " Methods:\n", - " def __init__(self, symbol: Symbol, embedding_source: str, vector: np.ndarray):\n", - " self.symbol = symbol\n", - " self.embedding_source = embedding_source\n", - " self.vector = vector\n", - " \n", - " \n", - " \n", - " automata.tests.unit.test_symbol_search.test_retrieve_source_code_by_symbol\n", - " \n", - " def test_retrieve_source_code_by_symbol(symbols, symbol_searcher):\n", - " with patch(\n", - " \"automata.core.symbol.search.symbol_search.convert_to_fst_object\",\n", - " return_value=\"module1\",\n", - " ) as mock_method:\n", - " result = symbol_searcher.retrieve_source_code_by_symbol(symbols[0].uri)\n", - " assert result == \"module1\"\n", - " mock_method.assert_called_once_with(symbols[0])\n", - " \n", - " \n", - " \n", - " \n", - " Building context for dependencies -\n", - " \n", - " automata.core.symbol.symbol_types.SymbolEmbedding.__init__\n", - " \n", - " Methods:\n", - " def __init__(self, symbol: Symbol, embedding_source: str, vector: np.ndarray):\n", - " self.symbol = symbol\n", - " self.embedding_source = embedding_source\n", - " self.vector = vector\n", - " \n", - " \n", - " \n", - "\n", - "\n", - " The output documentation should include an overview section, related symbols, examples, and discussion around limitations.\n", - " Examples should be comprehensive and readily executable (e.g. correct imports and values).\n", - " If there are references to 'Mock' objects in test files from your context, do your best to replace these with the actual underlying object.\n", - " If that is not possible, note this in a footnote. Mock objects are used in testing to simplify working with complex objects.\n", - " For reference, write in the style of in the original Python Library documentation -\n", - "\n", - "...\n", - "## Usage Example\n", - "\n", - "```python\n", - "from transformers import PegasusForConditionalGeneration, PegasusTokenizer\n", - "import torch\n", - "\n", - "src_text = [\n", - " \"\"\" PG&E .... \"\"\"\n", - "]\n", - "\n", - "model_name = \"google/pegasus-xsum\"\n", - "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", - "tokenizer = PegasusTokenizer.from_pretrained(model_name)\n", - "model = PegasusForConditionalGeneration.from_pretrained(model_name).to(device)\n", - "batch = tokenizer(src_text, truncation=True, padding=\"longest\", return_tensors=\"pt\").to(device)\n", - "translated = model.generate(**batch)\n", - "tgt_text = tokenizer.batch_decode(translated, skip_special_tokens=True)\n", - "assert (\n", - " tgt_text[0]\n", - " == \"California's...\"\n", - ")\n", - "\n", - "\n", - " For further reference, see the local documentation here -\n", - "\n", - "# AutomataAgentConfig\n", - "\n", - "`AutomataAgentConfig` is a configuration class that helps configure, setup, and interact with an `AutomataAgent`. It contains various attributes such as `config_name`, `instruction_payload`, `llm_toolkits`, and others to provide the necessary setup and settings to be used by the agent.\n", - "\n", - "## Overview\n", - "\n", - "`AutomataAgentConfig` provides a way to load the agent configurations specified by the `AgentConfigName`. The configuration options can be set during the instantiation of the class or can be loaded using the `load` classmethod. It provides utility methods to load and setup agent configurations while also validating the provided settings. The class offers a convenient way to create an agent with custom configurations and includes closely related symbols like `AgentConfigName`.\n", - "\n", - "## Related Symbols\n", - "\n", - "- `config.config_enums.AgentConfigName`\n", - "- `automata.core.agent.agent.AutomataAgent`\n", - "- `config.automata_agent_config_utils.AutomataAgentConfigBuilder`\n", - "- `automata.core.coordinator.automata_instance.AutomataInstance`\n", - "\n", - "## Example\n", - "\n", - "The following is an example demonstrating how to create an instance of `AutomataAgentConfig` using a predefined configuration name.\n", - "\n", - "```python\n", - "from config.automata_agent_config import AutomataAgentConfig\n", - "from config.config_enums import AgentConfigName\n", - "\n", - "config_name = AgentConfigName.AUTOMATA_MAIN\n", - "config = AutomataAgentConfig.load(config_name)\n", - "```\n", - "\n", - "## Limitations\n", - "\n", - "The primary limitation of `AutomataAgentConfig` is that it relies on the predefined configuration files based on `AgentConfigName`. It can only load configurations from those files and cannot load custom configuration files. In addition, it assumes a specific directory structure for the configuration files.\n", - "\n", - "## Follow-up Questions:\n", - "\n", - "- How can we include custom configuration files for loading into the `AutomataAgentConfig` class?\n", - "\n", - "\n", - "\n", - " Some information is just included for contextual reference, and this may be omitted from the output documentation.\n", - " Start the documentation with a header that includes only the class name.\n", - " Lastly, if some points are unclear, note these in a footnote that begins with ## Follow-up Questions:\n", - ")\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR:automata.core.agent.tool.builder.context_oracle:Failed to get embedding for symbol Symbol(scip-python python automata 7bcc14a4733f0168e88f0547befe83864dae01a2 `automata.core.embedding.code_embedding`/SymbolCodeEmbeddingHandler#build_embedding_array()., scip-python, Package(python automata 7bcc14a4733f0168e88f0547befe83864dae01a2), (Descriptor(automata.core.embedding.code_embedding, 1), Descriptor(SymbolCodeEmbeddingHandler, 2), Descriptor(build_embedding_array, 4))) with error: 'Symbol Symbol(scip-python python automata 7bcc14a4733f0168e88f0547befe83864dae01a2 `automata.core.embedding.code_embedding`/SymbolCodeEmbeddingHandler#build_embedding_array()., scip-python, Package(python automata 7bcc14a4733f0168e88f0547befe83864dae01a2), (Descriptor(automata.core.embedding.code_embedding, 1), Descriptor(SymbolCodeEmbeddingHandler, 2), Descriptor(build_embedding_array, 4))) not in database'\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Function Call:\n", - "call_termination\n", - "\n", - "Arguments:\n", - "{\"result\": \"Embeddings in this codebase are represented by classes such as `SymbolCodeEmbedding` and `SymbolDocEmbedding`. These classes store information about a symbol and its respective embeddings which are vectors representing the symbol in high-dimensional space.\\n\\nExamples of these classes are:\\n#'SymbolCodeEmbedding' class is used for storing embeddings related to the code of a symbol.\\n#'SymbolDocEmbedding' class is used for storing embeddings related to the documentation of a symbol.\\n\\nCode example for creating an instance of 'SymbolCodeEmbedding':\\n```python\\nimport numpy as np\\nfrom automata.core.symbol.symbol_types import SymbolCodeEmbedding\\nfrom automata.core.symbol.parser import parse_symbol\\n\\nsymbol_str = 'scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.agent.agent_enums`/ActionIndicator#'\\nsymbol = parse_symbol(symbol_str)\\nsource_code = 'symbol_source'\\nvector = np.array([1, 0, 0, 0])\\n\\nembedding = SymbolCodeEmbedding(symbol=symbol, source_code=source_code, vector=vector)\\n```\\n\\nCode example for creating an instance of 'SymbolDocEmbedding':\\n```python\\nfrom automata.core.symbol.symbol_types import SymbolDocEmbedding\\nfrom automata.core.symbol.parser import parse_symbol\\nimport numpy as np\\n\\nsymbol = parse_symbol('your_symbol_here')\\ndocument = 'A document string containing information about the symbol.'\\nvector = np.random.rand(10)\\n\\nsymbol_doc_embedding = SymbolDocEmbedding(symbol, document, vector)\\n```\\n\\nEmbeddings are managed by classes like `SymbolCodeEmbeddingHandler`, it provides interfaces to build, retrieve and update embeddings. For new implementations, different `EmbeddingProvider` could be programmed to generate embeddings using different algorithms or libraries.\\n\"}\n", - "\n", - " " - ] - } - ], + "outputs": [], "source": [ "# Run the agent\n", "result = agent.run()" @@ -596,55 +146,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "8809bae0", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Result:\n", - "Execution Result:\n", - "\n", - "Embeddings in this codebase are represented by classes such as `SymbolCodeEmbedding` and `SymbolDocEmbedding`. These classes store information about a symbol and its respective embeddings which are vectors representing the symbol in high-dimensional space.\n", - "\n", - "Examples of these classes are:\n", - "#'SymbolCodeEmbedding' class is used for storing embeddings related to the code of a symbol.\n", - "#'SymbolDocEmbedding' class is used for storing embeddings related to the documentation of a symbol.\n", - "\n", - "Code example for creating an instance of 'SymbolCodeEmbedding':\n", - "```python\n", - "import numpy as np\n", - "from automata.core.symbol.symbol_types import SymbolCodeEmbedding\n", - "from automata.core.symbol.parser import parse_symbol\n", - "\n", - "symbol_str = 'scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.agent.agent_enums`/ActionIndicator#'\n", - "symbol = parse_symbol(symbol_str)\n", - "source_code = 'symbol_source'\n", - "vector = np.array([1, 0, 0, 0])\n", - "\n", - "embedding = SymbolCodeEmbedding(symbol=symbol, source_code=source_code, vector=vector)\n", - "```\n", - "\n", - "Code example for creating an instance of 'SymbolDocEmbedding':\n", - "```python\n", - "from automata.core.symbol.symbol_types import SymbolDocEmbedding\n", - "from automata.core.symbol.parser import parse_symbol\n", - "import numpy as np\n", - "\n", - "symbol = parse_symbol('your_symbol_here')\n", - "document = 'A document string containing information about the symbol.'\n", - "vector = np.random.rand(10)\n", - "\n", - "symbol_doc_embedding = SymbolDocEmbedding(symbol, document, vector)\n", - "```\n", - "\n", - "Embeddings are managed by classes like `SymbolCodeEmbeddingHandler`, it provides interfaces to build, retrieve and update embeddings. For new implementations, different `EmbeddingProvider` could be programmed to generate embeddings using different algorithms or libraries.\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Print the result\n", "print(f\"Result:\\n{result}\")" diff --git a/automata/tests/conftest.py b/automata/tests/conftest.py index 7b4e1220..e2766dfe 100644 --- a/automata/tests/conftest.py +++ b/automata/tests/conftest.py @@ -3,12 +3,11 @@ from typing import Any, Set from unittest.mock import MagicMock -import networkx as nx import numpy as np import pytest from automata.config.base import AgentConfigName -from automata.config.openai_agent import AutomataOpenAIAgentConfigBuilder +from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.core.agent.agent import AgentToolkitNames from automata.core.agent.providers import OpenAIAutomataAgent from automata.core.embedding.base import EmbeddingSimilarityCalculator @@ -143,7 +142,7 @@ def automata_agent_config_builder(): dependency_factory.get = unittest.mock.MagicMock(return_value=None) - return AutomataOpenAIAgentConfigBuilder.from_name(config_name) + return OpenAIAutomataAgentConfigBuilder.from_name(config_name) @pytest.fixture diff --git a/automata/tests/unit/test_automata_agent_builder.py b/automata/tests/unit/test_automata_agent_builder.py index eea8f750..508485a9 100644 --- a/automata/tests/unit/test_automata_agent_builder.py +++ b/automata/tests/unit/test_automata_agent_builder.py @@ -3,7 +3,7 @@ import pytest from automata.config.base import AgentConfigName -from automata.config.openai_agent import AutomataOpenAIAgentConfig +from automata.config.openai_agent import OpenAIAutomataAgentConfig from automata.core.tools.factory import AgentToolFactory @@ -78,7 +78,7 @@ def test_builder_accepts_all_fields(automata_agent_config_builder): def test_builder_creates_proper_instance(automata_agent_config_builder): config = automata_agent_config_builder.build() - assert isinstance(config, AutomataOpenAIAgentConfig) + assert isinstance(config, OpenAIAutomataAgentConfig) def test_builder_invalid_input_types(automata_agent_config_builder): @@ -105,5 +105,5 @@ def test_config_loading_different_versions(): for config_name in AgentConfigName: if config_name == AgentConfigName.DEFAULT: continue - config = AutomataOpenAIAgentConfig.load(config_name) - assert isinstance(config, AutomataOpenAIAgentConfig) + config = OpenAIAutomataAgentConfig.load(config_name) + assert isinstance(config, OpenAIAutomataAgentConfig) From b9b4a698a181530e57ab52096b2b68b3d81cc405 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 5 Jul 2023 09:46:37 -0400 Subject: [PATCH 13/14] Check progress towards final merge --- README.md | 10 +- automata/cli/scripts/run_doc_embedding.py | 9 +- .../config/agent/openai/automata_main.yaml | 67 ++++++- automata/config/openai_agent.py | 1 + .../symbol/symbol_doc_embedding_l2.json | 4 +- .../symbol/symbol_doc_embedding_l3.json | 4 +- automata/core/agent/providers.py | 20 +- .../core/memory_store/symbol_doc_embedding.py | 14 +- .../core/singletons/dependency_factory.py | 42 +++- automata/core/symbol/graph.py | 18 +- automata/core/symbol_embedding/builders.py | 18 ++ automata/notebooks/demo_run_agent.ipynb | 182 ++++++++++++------ automata/tests/unit/test_automata_agent.py | 7 +- 13 files changed, 273 insertions(+), 123 deletions(-) diff --git a/README.md b/README.md index c88099cd..dedd86af 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ The following commands illustrate how to run the system with a trivial instructi automata run-agent --instructions="Return true" --model=gpt-3.5-turbo-0613 # Run a single agent w/ a non-trivial instruction -automata run-agent --instructions="Explain what AutomataAgent is and how it works, include an example to initialize an instance of AutomataAgent." --model=gpt-3.5-turbo-16k +automata run-agent --instructions="Explain what AutomataAgent is and how it works, include an example to initialize an instance of AutomataAgent." ``` --- @@ -102,14 +102,12 @@ Sometimes the best way to understand a complicated system is to start by underst ```python -import logging +from automata.config.base import AgentConfigName from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder from automata.core.agent.providers import OpenAIAutomataAgent -from automata.core.tools.tool_utils import AgentToolFactory from automata.core.singletons.dependency_factory import dependency_factory -from automata.core.singletons.module_loader import py_module_loader - -logger = logging.getLogger(__name__) +from automata.core.singletons.py_module_loader import py_module_loader +from automata.core.tools.factory import AgentToolFactory # Initialize the module loader to the local directory py_module_loader.initialize() diff --git a/automata/cli/scripts/run_doc_embedding.py b/automata/cli/scripts/run_doc_embedding.py index db955a5b..ddda9e9c 100644 --- a/automata/cli/scripts/run_doc_embedding.py +++ b/automata/cli/scripts/run_doc_embedding.py @@ -12,7 +12,6 @@ from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler from automata.core.singletons.dependency_factory import dependency_factory from automata.core.singletons.py_module_loader import py_module_loader -from automata.core.symbol.base import SymbolDescriptor from automata.core.symbol.graph import SymbolGraph from automata.core.symbol.symbol_utils import get_rankable_symbols from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase @@ -45,6 +44,7 @@ def initialize_providers(embedding_level, **kwargs): "code_embedding_fpath": code_embedding_fpath, "doc_embedding_fpath": doc_embedding_fpath, "embedding_provider": embedding_provider, + "disable_synchronization": True, } if embedding_level == 3: @@ -88,9 +88,8 @@ def main(*args, **kwargs) -> str: logger.info("Looping over filtered symbols...") for symbol in tqdm(filtered_symbols): - if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: - logger.info(f"Caching embedding for {symbol}") - symbol_doc_embedding_handler.process_embedding(symbol) - symbol_doc_embedding_handler.embedding_db.save() + logger.info(f"Caching embedding for {symbol}") + symbol_doc_embedding_handler.process_embedding(symbol) + symbol_doc_embedding_handler.embedding_db.save() return "Success" diff --git a/automata/config/agent/openai/automata_main.yaml b/automata/config/agent/openai/automata_main.yaml index aac386e8..a949de68 100644 --- a/automata/config/agent/openai/automata_main.yaml +++ b/automata/config/agent/openai/automata_main.yaml @@ -1,18 +1,20 @@ name: Main verbose: True stream: True -max_iterations: 10 -system_template_variables: ["symbol_rank_overview"] +max_iterations: 5 +system_template_variables: ["symbol_rank_overview", "max_iterations"] system_template: > You are Automata Master, an advanced autonomous software architect developed by OpenAI. You are designed to specifically operate within local Python repositories. With your capability to understand and process natural language instructions, you perform tasks efficiently using your available functions. + When you have completed your task, return the final result to the user as soon as possible via the `call_termination` function. - Persistently execute multiple actions until you have amassed enough information to ensure an extremely high likelihood of successfully completing the given task. - Upon completion of your task, your return the final result to the user via the `call_termination` function. + Persistently execute multiple actions until you have amassed enough information to ensure an high likelihood of successfully completing the given task. + + However note that you have a maxiumum of {max_iterations} iterations to complete the task, after which point the session terminates. An example of the Thoughts->Function Call --> Observations --> Thoughts->Function Call --> ... chain follows below. @@ -43,6 +45,17 @@ system_template: > content: Let us first analyze ...THOUGHT CONTINUES... + ...CONVERSATION CONTINUES... + + *Assistant* + content: + We are ready to return the result. + function_call: + { + 'name': 'call_termination', + 'arguments': '{"result": "```python\nclass SymbolDocEmbeddingHandler(SymbolEmbeddingHandler): ...CODE CONTINUES...```"}' + } + An overview of the most important python modules, and their internal functions and classes is given immediately below to help you in this task. @@ -50,7 +63,42 @@ system_template: > {symbol_rank_overview} - Example + Example 1 + + ========= + + + *User* + Fetch the source code for `automata.core.base.agent import AgentToolProviders`. + + *Assistant* + content: + To best answer this we will start by retrieving retrieving relevant source code. + + function_call: + { + 'name': 'py-retriever-retrieve-code', + 'arguments': '{"module_path": "automata.core.base.agent", "object_path": "AgentToolProviders"}' + } + + *User* + Execution Result: + + class AgentToolProviders(Enum): + PY_READER = "py_reader" + PY_WRITER = "py_writer" + SYMBOL_SEARCH = "symbol_search" + CONTEXT_ORACLE = "context_oracle" + + *Assistant* + function_call: + { + 'name': 'call_termination', + 'arguments': '{"result": "```python\n class AgentToolProviders(Enum):\n PY_READER = \'py_reader\'\n PY_WRITER = \'py_writer\'\n SYMBOL_SEARCH = \'symbol_search\'\n CONTEXT_ORACLE = \'context_oracle\'\n```"}' + } + + + Example 2 ======= @@ -59,7 +107,6 @@ system_template: > *User* - Return an answer in Markdown text which completely resolves the following issue: Github Issue Title @@ -127,10 +174,10 @@ system_template: > content: We are ready to return the result. function_call: - { - 'name': 'call_termination', - 'arguments': '{"result": "```python\nclass SymbolDocEmbeddingHandler(SymbolEmbeddingHandler): ...CODE CONTINUES...```"}' - } + { + 'name': 'call_termination', + 'arguments': '{"result": "```python\nclass SymbolDocEmbeddingHandler(SymbolEmbeddingHandler): ...CODE CONTINUES...```"}' + } Note, the examples above are meant to provide necessary context to show the nature of the system. In production, the string '...CODE CONTINUES...' would be replaced with the actual code. diff --git a/automata/config/openai_agent.py b/automata/config/openai_agent.py index 26717df7..873efe56 100644 --- a/automata/config/openai_agent.py +++ b/automata/config/openai_agent.py @@ -52,6 +52,7 @@ def create_default_formatter( f"{symbol}" for symbol, _ in sorted(top_symbols, key=lambda x: x[1], reverse=True) ) + formatter["max_iterations"] = str(config.max_iterations) elif config.config_name != AgentConfigName.TEST: raise NotImplementedError("Automata does not have a default template formatter.") diff --git a/automata/config/symbol/symbol_doc_embedding_l2.json b/automata/config/symbol/symbol_doc_embedding_l2.json index 702bb612..e74443e6 100644 --- a/automata/config/symbol/symbol_doc_embedding_l2.json +++ b/automata/config/symbol/symbol_doc_embedding_l2.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c57f8f813d09954110faf5704ca54dc64082b0b40a1de789d3b8f1214444057b -size 5150405 +oid sha256:87c5732485ea200c62f8324929da435d84d8aea28c8aadd397873ff6493fb665 +size 17527913 diff --git a/automata/config/symbol/symbol_doc_embedding_l3.json b/automata/config/symbol/symbol_doc_embedding_l3.json index 33dc2f8d..e74443e6 100644 --- a/automata/config/symbol/symbol_doc_embedding_l3.json +++ b/automata/config/symbol/symbol_doc_embedding_l3.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9413652690fbce38e4f0192f9e1afb45fbcd9a103f700cbfec1ba006eeaa1402 -size 5150071 +oid sha256:87c5732485ea200c62f8324929da435d84d8aea28c8aadd397873ff6493fb665 +size 17527913 diff --git a/automata/core/agent/providers.py b/automata/core/agent/providers.py index e6f6d652..b88c7940 100644 --- a/automata/core/agent/providers.py +++ b/automata/core/agent/providers.py @@ -37,9 +37,10 @@ class OpenAIAutomataAgent(Agent): responses based on given instructions and manages interactions with various tools. """ - CONTINUE_MESSAGE: Final = "Continue.." - EXECUTION_PREFIX: Final = "Execution Result:\n\n" + CONTINUE_PREFIX: Final = f"Continue..." + EXECUTION_PREFIX: Final = "Execution Result:" _initialized = False + GENERAL_SUFFIX: Final = "NOTE - you are at iteration {iteration_count} out of max {max_iterations}. Please return a result with call_termination when ready." def __init__(self, instructions: str, config: OpenAIAutomataAgentConfig) -> None: super().__init__(instructions) @@ -76,13 +77,13 @@ def __next__(self) -> LLMIterationResult: logger.debug(f"{assistant_message}\n") logging.debug(f"\n{('-' * 120)}") + self.iteration_count += 1 + user_message = self._get_next_user_response(assistant_message) logger.debug(f"Latest User Message -- \n{user_message}\n") self.chat_provider.add_message(user_message) logging.debug(f"\n{('-' * 120)}") - self.iteration_count += 1 - return (assistant_message, user_message) @property @@ -196,15 +197,22 @@ def _get_next_user_response(self, assistant_message: OpenAIChatMessage) -> OpenA If it does, then the corresponding tool is run and the result is returned. Otherwise, the user is prompted to continue the conversation. """ + iteration_message = OpenAIAutomataAgent.GENERAL_SUFFIX.format( + iteration_count=self.iteration_count, max_iterations=self.config.max_iterations + ) if assistant_message.function_call: for tool in self.tools: if assistant_message.function_call.name == tool.openai_function.name: result = tool.run(assistant_message.function_call.arguments) return OpenAIChatMessage( - role="user", content=f"{OpenAIAutomataAgent.EXECUTION_PREFIX}{result}" + role="user", + content=f"{OpenAIAutomataAgent.EXECUTION_PREFIX}\n\n{result}\n\n{iteration_message}", ) - return OpenAIChatMessage(role="user", content=OpenAIAutomataAgent.CONTINUE_MESSAGE) + return OpenAIChatMessage( + role="user", + content=f"{OpenAIAutomataAgent.CONTINUE_PREFIX}\n\n{iteration_message}", + ) def _setup(self) -> None: """ diff --git a/automata/core/memory_store/symbol_doc_embedding.py b/automata/core/memory_store/symbol_doc_embedding.py index dec9397d..a78e7dd0 100644 --- a/automata/core/memory_store/symbol_doc_embedding.py +++ b/automata/core/memory_store/symbol_doc_embedding.py @@ -1,6 +1,6 @@ import logging -from automata.core.symbol.base import Symbol +from automata.core.symbol.base import Symbol, SymbolDescriptor from automata.core.symbol_embedding.base import ( JSONSymbolEmbeddingVectorDatabase, SymbolDocEmbedding, @@ -27,7 +27,8 @@ def get_embedding(self, symbol: Symbol) -> SymbolDocEmbedding: def process_embedding(self, symbol: Symbol) -> None: """ Process the embedding for a `Symbol` - - Currently we do nothing if the symbol is already contained + Currently we do nothing except update symbol commit hash and source code + if the symbol is already in the database. """ source_code = self.embedding_builder.fetch_embedding_source_code(symbol) @@ -38,8 +39,13 @@ def process_embedding(self, symbol: Symbol) -> None: if self.embedding_db.contains(symbol.dotpath): self.update_existing_embedding(source_code, symbol) return - # else: - symbol_embedding = self.embedding_builder.build(source_code, symbol) + if symbol.symbol_kind_by_suffix() == SymbolDescriptor.PyKind.Class: + symbol_embedding = self.embedding_builder.build(source_code, symbol) + else: + if not isinstance(self.embedding_builder, SymbolDocEmbeddingBuilder): + raise ValueError("SymbolDocEmbeddingHandler requires a SymbolDocEmbeddingBuilder") + symbol_embedding = self.embedding_builder.build_non_class(source_code, symbol) + self.embedding_db.add(symbol_embedding) def update_existing_embedding(self, source_code: str, symbol: Symbol) -> None: diff --git a/automata/core/singletons/dependency_factory.py b/automata/core/singletons/dependency_factory.py index 1f2cb522..cf49860b 100644 --- a/automata/core/singletons/dependency_factory.py +++ b/automata/core/singletons/dependency_factory.py @@ -10,6 +10,9 @@ from automata.core.base.patterns.singleton import Singleton from automata.core.code_handling.py.reader import PyReader from automata.core.code_handling.py.writer import PyWriter +from automata.core.context_providers.symbol_synchronization import ( + SymbolProviderSynchronizationContext, +) from automata.core.embedding.base import EmbeddingSimilarityCalculator from automata.core.experimental.search.rank import SymbolRank, SymbolRankConfig from automata.core.experimental.search.symbol_search import SymbolSearch @@ -23,6 +26,7 @@ PyContextRetriever, PyContextRetrieverConfig, ) +from automata.core.symbol.base import ISymbolProvider from automata.core.symbol.graph import SymbolGraph from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase from automata.core.symbol_embedding.builders import ( @@ -54,22 +58,29 @@ class DependencyFactory(metaclass=Singleton): def __init__(self, **kwargs) -> None: """ Keyword Args (Defaults): - symbol_graph_scip_fpath (DependencyFactory.DEFAULT_SCIP_FPATH) - flow_rank ("bidirectional") - embedding_provider (OpenAIEmbedding()) - code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH) - doc_embedding_fpath (DependencyFactory.DEFAULT_DOC_EMBEDDING_FPATH) - symbol_rank_config (SymbolRankConfig()) - py_context_retriever_config (PyContextRetrieverConfig()) - coding_project_path (get_root_py_fpath()) - llm_completion_provider (OpenAIChatCompletionProvider()) - py_retriever_doc_embedding_db (None) + disable_synchronization (False): Disable synchronization of ISymbolProvider dependencies and created classes? + symbol_graph_scip_fpath (DependencyFactory.DEFAULT_SCIP_FPATH): Filepath to the SCIP index file. + code_embedding_fpath (DependencyFactory.DEFAULT_CODE_EMBEDDING_FPATH): Filepath to the code embedding database. + doc_embedding_fpath (DependencyFactory.DEFAULT_DOC_EMBEDDING_FPATH): Filepath to the doc embedding database. + coding_project_path (get_root_py_fpath()): Filepath to the root of the coding project. + symbol_rank_config (SymbolRankConfig()): Configuration for the SymbolRank algorithm. + py_context_retriever_config (PyContextRetrieverConfig()): Configuration for the PyContextRetriever. + embedding_provider (OpenAIEmbedding()): The embedding provider to use. + llm_completion_provider (OpenAIChatCompletionProvider()): The LLM completion provider to use. + py_retriever_doc_embedding_db (None): The doc embedding database to use for the PyContextRetriever. } """ self._instances: Dict[str, Any] = {} self.overrides = kwargs def set_overrides(self, **kwargs) -> None: + if self._class_cache: + raise AgentGeneralError("Cannot set overrides after dependencies have been created.") + + for override_obj in kwargs.values(): + if isinstance(override_obj, ISymbolProvider): + self._synchronize_provider(override_obj) + self.overrides = kwargs def get(self, dependency: str) -> Any: @@ -100,6 +111,10 @@ def get(self, dependency: str) -> Any: self._instances[dependency] = instance + # Perform synchronization + if isinstance(instance, ISymbolProvider): + self._synchronize_provider(instance) + return instance def build_dependencies_for_tools(self, toolkit_list: List[str]) -> Dict[str, Any]: @@ -125,6 +140,13 @@ def build_dependencies_for_tools(self, toolkit_list: List[str]) -> Dict[str, Any return tool_dependencies + def _synchronize_provider(self, provider: ISymbolProvider) -> None: + """Synchronize an ISymbolProvider instance.""" + if not self.overrides.get("disable_synchronization", False): + with SymbolProviderSynchronizationContext() as synchronization_context: + synchronization_context.register_provider(provider) + synchronization_context.synchronize() + @lru_cache() def create_symbol_graph(self) -> SymbolGraph: """ diff --git a/automata/core/symbol/graph.py b/automata/core/symbol/graph.py index 76353abb..a1e62376 100644 --- a/automata/core/symbol/graph.py +++ b/automata/core/symbol/graph.py @@ -502,9 +502,7 @@ def default_rankable_subgraph(self) -> nx.DiGraph: def _build_default_rankable_subgraph(self) -> nx.DiGraph: return self._build_rankable_subgraph() - def _build_rankable_subgraph( - self, flow_rank="bidirectional", path_filter: Optional[str] = None - ) -> nx.DiGraph: + def _build_rankable_subgraph(self, path_filter: Optional[str] = None) -> nx.DiGraph: """ Creates a subgraph of the original `SymbolGraph` which contains only rankable symbols. The nodes in the subgraph @@ -533,18 +531,8 @@ def _build_rankable_subgraph( if ele in self.get_sorted_supported_symbols() ] for dependency in dependencies: - if flow_rank == "to_dependents": - G.add_edge(symbol, dependency) - elif flow_rank == "from_dependents": - G.add_edge(dependency, symbol) - elif flow_rank == "bidirectional": - G.add_edge(symbol, dependency) - G.add_edge(dependency, symbol) - else: - raise ValueError( - "flow_rank must be one of 'to_dependents', 'from_dependents', or 'bidirectional'" - ) - + G.add_edge(symbol, dependency) + G.add_edge(dependency, symbol) except Exception as e: logger.error(f"Error processing {symbol.uri}: {e}") diff --git a/automata/core/symbol_embedding/builders.py b/automata/core/symbol_embedding/builders.py index 8be686df..461cad9a 100644 --- a/automata/core/symbol_embedding/builders.py +++ b/automata/core/symbol_embedding/builders.py @@ -3,11 +3,13 @@ from jinja2 import Template from automata.config.prompt.doc_generation import DEFAULT_DOC_GENERATION_PROMPT +from automata.core.code_handling.py.reader import PyReader from automata.core.embedding.base import EmbeddingBuilder, EmbeddingVectorProvider from automata.core.experimental.search.symbol_search import SymbolSearch from automata.core.llm.foundation import LLMChatCompletionProvider from automata.core.retrievers.py.context import PyContextRetriever from automata.core.symbol.base import Symbol +from automata.core.symbol.symbol_utils import convert_to_fst_object from automata.core.symbol_embedding.base import SymbolCodeEmbedding, SymbolDocEmbedding @@ -112,6 +114,22 @@ def load(cls, config_name: AgentConfigName) -> "CustomAgentConfig": context=prompt, ) + def build_non_class(self, source_code: str, symbol: Symbol) -> SymbolDocEmbedding: + ast_object = convert_to_fst_object(symbol) + raw_doctring = PyReader.get_docstring_from_node(ast_object) + document = f"Symbol: {symbol.dotpath}\n{raw_doctring}" + + embedding = self.embedding_provider.build_embedding_vector(document) + + return SymbolDocEmbedding( + symbol, + vector=embedding, + source_code=source_code, + document=document, + summary=document, + context="", + ) + def generate_search_list(self, abbreviated_selected_symbol: str) -> List[Symbol]: """Generate a search list by splicing the search results on the symbol with the search results biased on tests.""" search_results = self.symbol_search.symbol_rank_search(f"{abbreviated_selected_symbol}") diff --git a/automata/notebooks/demo_run_agent.ipynb b/automata/notebooks/demo_run_agent.ipynb index 8472a302..41d9b0b1 100644 --- a/automata/notebooks/demo_run_agent.ipynb +++ b/automata/notebooks/demo_run_agent.ipynb @@ -8,18 +8,14 @@ "outputs": [], "source": [ "import logging\n", - "from typing import Any, Set\n", "\n", "from automata.config.base import AgentConfigName\n", "from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder\n", "from automata.core.agent.providers import OpenAIAutomataAgent\n", "from automata.core.singletons.dependency_factory import dependency_factory\n", - "from automata.core.tools.factory import AgentToolFactory\n", "from automata.core.singletons.py_module_loader import py_module_loader\n", - "from automata.core.context_providers.symbol_synchronization import (\n", - " SymbolProviderSynchronizationContext,\n", - ")\n", - " \n", + "from automata.core.tools.factory import AgentToolFactory\n", + "\n", "logger = logging.getLogger(__name__)\n", "\n", "py_module_loader.initialize()" @@ -36,74 +32,35 @@ "source": [ "# Construct the set of all dependencies that will be used to build the tools\n", "toolkit_list = [\"context-oracle\"]\n", - "tool_dependencies = dependency_factory.build_dependencies_for_tools(toolkit_list)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6130c6f1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'symbol_code_embedding_handler': ,\n", - " 'embedding_similarity_calculator': ,\n", - " 'symbol_doc_embedding_handler': }" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tool_dependencies" + "tool_dependencies = dependency_factory.build_dependencies_for_tools(toolkit_list)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "id": "fb0430f9", "metadata": { - "scrolled": true + "scrolled": false }, "outputs": [], "source": [ "# Build the tools\n", - "tools = AgentToolFactory.build_tools(toolkit_list, **tool_dependencies)\n", - "\n", - "with SymbolProviderSynchronizationContext() as synchronization_context:\n", - " synchronization_context.register_provider(tool_dependencies[\"symbol_code_embedding_handler\"])\n", - " synchronization_context.synchronize()\n" + "tools = AgentToolFactory.build_tools(toolkit_list, **tool_dependencies)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "id": "1e5b36ce", - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { - "ename": "RuntimeError", - "evalue": "Cannot get symbols before synchronization", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[8], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Build the agent config\u001b[39;00m\n\u001b[1;32m 2\u001b[0m config_name \u001b[38;5;241m=\u001b[39m AgentConfigName(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mautomata-main\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 4\u001b[0m agent_config \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m----> 5\u001b[0m \u001b[43mOpenAIAutomataAgentConfigBuilder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_name\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwith_tools\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtools\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwith_model\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgpt-4\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuild\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m )\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/config/base.py:124\u001b[0m, in \u001b[0;36mAgentConfigBuilder.build\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mbuild\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m 123\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Build and return an Agent instance with the current configuration.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 124\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_config\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msetup\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_config\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/config/openai_agent.py:66\u001b[0m, in \u001b[0;36mAutomataOpenAIAgentConfig.setup\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msession_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(uuid\u001b[38;5;241m.\u001b[39muuid4())\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_template_formatter:\n\u001b[1;32m 64\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_template_formatter \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 65\u001b[0m AutomataOpenAIAgentConfig\u001b[38;5;241m.\u001b[39mTemplateFormatter\u001b[38;5;241m.\u001b[39mcreate_default_formatter(\n\u001b[0;32m---> 66\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[43mdependency_factory\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msymbol_rank\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 67\u001b[0m )\n\u001b[1;32m 68\u001b[0m )\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_instruction:\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msystem_instruction \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_formatted_instruction()\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:97\u001b[0m, in \u001b[0;36mDependencyFactory.get\u001b[0;34m(self, dependency)\u001b[0m\n\u001b[1;32m 95\u001b[0m creation_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, method_name)\n\u001b[1;32m 96\u001b[0m logger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCreating dependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 97\u001b[0m instance \u001b[38;5;241m=\u001b[39m \u001b[43mcreation_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m AgentGeneralError(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m not found.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:149\u001b[0m, in \u001b[0;36mDependencyFactory.create_symbol_rank\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;129m@lru_cache\u001b[39m()\n\u001b[1;32m 144\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate_symbol_rank\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m SymbolRank:\n\u001b[1;32m 145\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 146\u001b[0m \u001b[38;5;124;03m Associated Keyword Args:\u001b[39;00m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;124;03m symbol_rank_config (SymbolRankConfig())\u001b[39;00m\n\u001b[1;32m 148\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 149\u001b[0m subgraph: nx\u001b[38;5;241m.\u001b[39mDiGraph \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msubgraph\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 150\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SymbolRank(subgraph, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moverrides\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msymbol_rank_config\u001b[39m\u001b[38;5;124m\"\u001b[39m, SymbolRankConfig()))\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:97\u001b[0m, in \u001b[0;36mDependencyFactory.get\u001b[0;34m(self, dependency)\u001b[0m\n\u001b[1;32m 95\u001b[0m creation_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, method_name)\n\u001b[1;32m 96\u001b[0m logger\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCreating dependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 97\u001b[0m instance \u001b[38;5;241m=\u001b[39m \u001b[43mcreation_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m AgentGeneralError(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDependency \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m not found.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/singletons/dependency_factory.py:141\u001b[0m, in \u001b[0;36mDependencyFactory.create_subgraph\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;129m@lru_cache\u001b[39m()\n\u001b[1;32m 139\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate_subgraph\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph:\n\u001b[1;32m 140\u001b[0m symbol_graph: SymbolGraph \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msymbol_graph\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 141\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msymbol_graph\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdefault_rankable_subgraph\u001b[49m\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/graph.py:499\u001b[0m, in \u001b[0;36mSymbolGraph.default_rankable_subgraph\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 497\u001b[0m \u001b[38;5;129m@property\u001b[39m\n\u001b[1;32m 498\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdefault_rankable_subgraph\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph:\n\u001b[0;32m--> 499\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_build_default_rankable_subgraph\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/graph.py:503\u001b[0m, in \u001b[0;36mSymbolGraph._build_default_rankable_subgraph\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 501\u001b[0m \u001b[38;5;129m@lru_cache\u001b[39m(maxsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 502\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_build_default_rankable_subgraph\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph:\n\u001b[0;32m--> 503\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_build_rankable_subgraph\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/graph.py:518\u001b[0m, in \u001b[0;36mSymbolGraph._build_rankable_subgraph\u001b[0;34m(self, flow_rank, path_filter)\u001b[0m\n\u001b[1;32m 508\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 509\u001b[0m \u001b[38;5;124;03mCreates a subgraph of the original `SymbolGraph` which\u001b[39;00m\n\u001b[1;32m 510\u001b[0m \u001b[38;5;124;03mcontains only rankable symbols. The nodes in the subgraph\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[38;5;124;03mTODO - Think of how to handle relationships here.\u001b[39;00m\n\u001b[1;32m 515\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 516\u001b[0m G \u001b[38;5;241m=\u001b[39m nx\u001b[38;5;241m.\u001b[39mDiGraph()\n\u001b[0;32m--> 518\u001b[0m filtered_symbols \u001b[38;5;241m=\u001b[39m get_rankable_symbols(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_sorted_supported_symbols\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 520\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m path_filter \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 521\u001b[0m filtered_symbols \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 522\u001b[0m sym \u001b[38;5;28;01mfor\u001b[39;00m sym \u001b[38;5;129;01min\u001b[39;00m filtered_symbols \u001b[38;5;28;01mif\u001b[39;00m sym\u001b[38;5;241m.\u001b[39mdotpath\u001b[38;5;241m.\u001b[39mstartswith(path_filter) \u001b[38;5;66;03m# type: ignore\u001b[39;00m\n\u001b[1;32m 523\u001b[0m ]\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/symbol/base.py:292\u001b[0m, in \u001b[0;36mISymbolProvider.get_sorted_supported_symbols\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 289\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mautomata\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m is_sorted\n\u001b[1;32m 291\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_synchronized:\n\u001b[0;32m--> 292\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot get symbols before synchronization\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 294\u001b[0m sorted_symbols \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_sorted_supported_symbols()\n\u001b[1;32m 296\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m is_sorted([symbol\u001b[38;5;241m.\u001b[39mdotpath \u001b[38;5;28;01mfor\u001b[39;00m symbol \u001b[38;5;129;01min\u001b[39;00m sorted_symbols]):\n", - "\u001b[0;31mRuntimeError\u001b[0m: Cannot get symbols before synchronization" + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 814/814 [00:05<00:00, 155.34it/s]\n" ] } ], @@ -121,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "67aa2161", "metadata": { "scrolled": true @@ -130,15 +87,110 @@ "source": [ "# Initialize the agent\n", "instructions = \"Explain how embeddings are used by the codebase\"\n", - "agent = AutomataOpenAIAgent(instructions, config=agent_config)" + "agent = OpenAIAutomataAgent(instructions, config=agent_config)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "4cad1214", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Function Call:\n", + "context-oracle\n", + "\n", + "Arguments:\n", + "{\n", + " \"query\": \"embeddings\"\n", + "}\n", + "\n", + " Function Call:\n", + "context-oracle\n", + "\n", + "Arguments:\n", + "{\"query\": \"SymbolCodeEmbeddingHandler\"}\n", + "\n", + " Embeddings in this codebase are utilized as a method of semantic representation for different symbols in the codebase. Specifically, the `SymbolCodeEmbeddingHandler` class is used to manage these embeddings.\n", + "\n", + "From the method `SymbolCodeEmbeddingHandler.get_embedding()` which we analyzed, this class has a method `get_embedding()` that takes a `Symbol` as input and retrieves its corresponding embedding representation from the database (handled by `self.embedding_db.get(symbol.dotpath)`). The `Symbol` is an object that encapsulates information about a Python entity such as a class, function, or method. The `dotpath` attribute represents its fully qualified name, which acts as a unique identifier for the `Symbol`.\n", + "\n", + "The `SymbolCodeEmbedding` represents the embedding of a source code symbol. The embedding is a high-dimensional vector that captures semantic information about the source code symbol.\n", + "\n", + "These embeddings can be used for various purposes like contextual retrieval, semantic similarity calculations, code completion, and more. Would you like to know more about another aspect of embeddings?\n", + "\n", + " Function Call:\n", + "context-oracle\n", + "\n", + "Arguments:\n", + "{\"query\": \"EmbeddingBuilder\"}\n", + "\n", + " The `EmbeddingBuilder` class is another fundamental component in handling the embeddings. It has a method `build()` that constructs a `SymbolCodeEmbedding` for a given source code and the associated `Symbol`.\n", + "\n", + "The `build()` method calls the `build_embedding_vector()` method of the `embedding_provider` with the `source_code` to generate the embedding vector. It then returns a `SymbolCodeEmbedding` object which encapsulates the `Symbol`, the `source_code`, and the generated `embedding_vector`.\n", + "\n", + "This shows that the `EmbeddingBuilder` is primarily responsible for creating the embedding vectors from source code.\n", + "\n", + "Would you like to explore more about embeddings or any other topic?\n", + "\n", + " Function Call:\n", + "context-oracle\n", + "\n", + "Arguments:\n", + "{\"query\": \"EmbeddingSimilarityCalculator\"}\n", + "\n", + " The `EmbeddingSimilarityCalculator` class handles the calculation of similarity between embeddings. This is primarily useful in tasks that require semantic comparison between different code entities, such as search-related functionalities.\n", + "\n", + "The method `_calculate_embedding_similarity()` exemplifies this use case: this method computes the semantic similarity between a given embedding and a set of other embeddings (usually the available symbol embeddings).\n", + "\n", + "To be more specific, it first normalizes both the given embedding and the set of symbol embeddings using the `_normalize_embeddings()` method. After normalizing, the dot product is calculated between the normalized embeddings and the normalized given embedding. The resulting array represents the similarity scores between the given embedding and each symbol embedding.\n", + "\n", + "Would you like to inquire more about another topic?\n", + "\n", + " Function Call:\n", + "context-oracle\n", + "\n", + "Arguments:\n", + "{\"query\": \"SymbolSearch\"}\n", + "\n", + " " + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[6], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Run the agent\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43magent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/agent/providers.py:132\u001b[0m, in \u001b[0;36mOpenAIAutomataAgent.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 131\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 132\u001b[0m \u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m AgentStopIteration:\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/agent/providers.py:73\u001b[0m, in \u001b[0;36mOpenAIAutomataAgent.__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m AgentStopIteration\n\u001b[1;32m 72\u001b[0m logging\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m-\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;241m120\u001b[39m)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mLatest Assistant Message -- \u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 73\u001b[0m assistant_message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mchat_provider\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_next_assistant_completion\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchat_provider\u001b[38;5;241m.\u001b[39madd_message(assistant_message)\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfig\u001b[38;5;241m.\u001b[39mstream:\n", + "File \u001b[0;32m~/AutomataNoCruft/automata/core/llm/providers/openai.py:230\u001b[0m, in \u001b[0;36mOpenAIChatCompletionProvider.get_next_assistant_completion\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 226\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\n\u001b[1;32m 227\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mApproximately \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_approximate_tokens_consumed()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m tokens were consumed prior to completion generation.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 228\u001b[0m )\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m functions:\n\u001b[0;32m--> 230\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mopenai\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mChatCompletion\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 231\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 232\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43magent_conversation_database\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_messages_for_next_completion\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunctions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfunctions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 234\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunction_call\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mauto\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# auto is default, but we'll be explicit\u001b[39;49;00m\n\u001b[1;32m 235\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 236\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 238\u001b[0m response \u001b[38;5;241m=\u001b[39m openai\u001b[38;5;241m.\u001b[39mChatCompletion\u001b[38;5;241m.\u001b[39mcreate(\n\u001b[1;32m 239\u001b[0m model\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel,\n\u001b[1;32m 240\u001b[0m messages\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39magent_conversation_database\u001b[38;5;241m.\u001b[39mget_messages_for_next_completion(),\n\u001b[1;32m 241\u001b[0m stream\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstream,\n\u001b[1;32m 242\u001b[0m )\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_resources/chat_completion.py:25\u001b[0m, in \u001b[0;36mChatCompletion.create\u001b[0;34m(cls, *args, **kwargs)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 25\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m TryAgain \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m>\u001b[39m start \u001b[38;5;241m+\u001b[39m timeout:\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_resources/abstract/engine_api_resource.py:153\u001b[0m, in \u001b[0;36mEngineAPIResource.create\u001b[0;34m(cls, api_key, api_base, api_type, request_id, api_version, organization, **params)\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[38;5;129m@classmethod\u001b[39m\n\u001b[1;32m 128\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate\u001b[39m(\n\u001b[1;32m 129\u001b[0m \u001b[38;5;28mcls\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams,\n\u001b[1;32m 137\u001b[0m ):\n\u001b[1;32m 138\u001b[0m (\n\u001b[1;32m 139\u001b[0m deployment_id,\n\u001b[1;32m 140\u001b[0m engine,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 150\u001b[0m api_key, api_base, api_type, api_version, organization, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams\n\u001b[1;32m 151\u001b[0m )\n\u001b[0;32m--> 153\u001b[0m response, _, api_key \u001b[38;5;241m=\u001b[39m \u001b[43mrequestor\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpost\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 156\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 157\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 158\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 159\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 160\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_timeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 161\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m stream:\n\u001b[1;32m 164\u001b[0m \u001b[38;5;66;03m# must be an iterator\u001b[39;00m\n\u001b[1;32m 165\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response, OpenAIResponse)\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_requestor.py:288\u001b[0m, in \u001b[0;36mAPIRequestor.request\u001b[0;34m(self, method, url, params, headers, files, stream, request_id, request_timeout)\u001b[0m\n\u001b[1;32m 277\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrequest\u001b[39m(\n\u001b[1;32m 278\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 279\u001b[0m method,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 286\u001b[0m request_timeout: Optional[Union[\u001b[38;5;28mfloat\u001b[39m, Tuple[\u001b[38;5;28mfloat\u001b[39m, \u001b[38;5;28mfloat\u001b[39m]]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 287\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tuple[Union[OpenAIResponse, Iterator[OpenAIResponse]], \u001b[38;5;28mbool\u001b[39m, \u001b[38;5;28mstr\u001b[39m]:\n\u001b[0;32m--> 288\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest_raw\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 289\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlower\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 290\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 291\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 292\u001b[0m \u001b[43m \u001b[49m\u001b[43msupplied_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 293\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 294\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 295\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 296\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_timeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 297\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 298\u001b[0m resp, got_stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_interpret_response(result, stream)\n\u001b[1;32m 299\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp, got_stream, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi_key\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_requestor.py:596\u001b[0m, in \u001b[0;36mAPIRequestor.request_raw\u001b[0;34m(self, method, url, params, supplied_headers, files, stream, request_id, request_timeout)\u001b[0m\n\u001b[1;32m 594\u001b[0m _thread_context\u001b[38;5;241m.\u001b[39msession_create_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m 595\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 596\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43m_thread_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 597\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 598\u001b[0m \u001b[43m \u001b[49m\u001b[43mabs_url\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 599\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 600\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 601\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 602\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 603\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mTIMEOUT_SECS\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 604\u001b[0m \u001b[43m \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_thread_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 605\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 606\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m requests\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mTimeout \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 607\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error\u001b[38;5;241m.\u001b[39mTimeout(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRequest timed out: \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(e)) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/requests/sessions.py:587\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 582\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 583\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[1;32m 584\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[1;32m 585\u001b[0m }\n\u001b[1;32m 586\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[0;32m--> 587\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msend_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 589\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/requests/sessions.py:701\u001b[0m, in \u001b[0;36mSession.send\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 698\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[1;32m 700\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[0;32m--> 701\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43madapter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 703\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[1;32m 704\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/requests/adapters.py:489\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 487\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 488\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m chunked:\n\u001b[0;32m--> 489\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 490\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 491\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 492\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43mredirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_same_host\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmax_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 499\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 502\u001b[0m \u001b[38;5;66;03m# Send the request.\u001b[39;00m\n\u001b[1;32m 503\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 504\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(conn, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mproxy_pool\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:703\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 700\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_prepare_proxy(conn)\n\u001b[1;32m 702\u001b[0m \u001b[38;5;66;03m# Make the request on the httplib connection object.\u001b[39;00m\n\u001b[0;32m--> 703\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 704\u001b[0m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 706\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 707\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout_obj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 708\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 709\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 710\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 711\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 713\u001b[0m \u001b[38;5;66;03m# If we're going to release the connection in ``finally:``, then\u001b[39;00m\n\u001b[1;32m 714\u001b[0m \u001b[38;5;66;03m# the response doesn't need to know about the connection. Otherwise\u001b[39;00m\n\u001b[1;32m 715\u001b[0m \u001b[38;5;66;03m# it will also try to release it and we'll have a double-release\u001b[39;00m\n\u001b[1;32m 716\u001b[0m \u001b[38;5;66;03m# mess.\u001b[39;00m\n\u001b[1;32m 717\u001b[0m response_conn \u001b[38;5;241m=\u001b[39m conn \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m release_conn \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:449\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 444\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m conn\u001b[38;5;241m.\u001b[39mgetresponse()\n\u001b[1;32m 445\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 446\u001b[0m \u001b[38;5;66;03m# Remove the TypeError from the exception chain in\u001b[39;00m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;66;03m# Python 3 (including for exceptions like SystemExit).\u001b[39;00m\n\u001b[1;32m 448\u001b[0m \u001b[38;5;66;03m# Otherwise it looks like a bug in the code.\u001b[39;00m\n\u001b[0;32m--> 449\u001b[0m \u001b[43msix\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_from\u001b[49m\u001b[43m(\u001b[49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 450\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (SocketTimeout, BaseSSLError, SocketError) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 451\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_raise_timeout(err\u001b[38;5;241m=\u001b[39me, url\u001b[38;5;241m=\u001b[39murl, timeout_value\u001b[38;5;241m=\u001b[39mread_timeout)\n", + "File \u001b[0;32m:3\u001b[0m, in \u001b[0;36mraise_from\u001b[0;34m(value, from_value)\u001b[0m\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:444\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 441\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[1;32m 442\u001b[0m \u001b[38;5;66;03m# Python 3\u001b[39;00m\n\u001b[1;32m 443\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 444\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 445\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 446\u001b[0m \u001b[38;5;66;03m# Remove the TypeError from the exception chain in\u001b[39;00m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;66;03m# Python 3 (including for exceptions like SystemExit).\u001b[39;00m\n\u001b[1;32m 448\u001b[0m \u001b[38;5;66;03m# Otherwise it looks like a bug in the code.\u001b[39;00m\n\u001b[1;32m 449\u001b[0m six\u001b[38;5;241m.\u001b[39mraise_from(e, \u001b[38;5;28;01mNone\u001b[39;00m)\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/http/client.py:1377\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1377\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbegin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1378\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n\u001b[1;32m 1379\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/http/client.py:320\u001b[0m, in \u001b[0;36mHTTPResponse.begin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 318\u001b[0m \u001b[38;5;66;03m# read until we get a non-100 response\u001b[39;00m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 320\u001b[0m version, status, reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_read_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m status \u001b[38;5;241m!=\u001b[39m CONTINUE:\n\u001b[1;32m 322\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/http/client.py:281\u001b[0m, in \u001b[0;36mHTTPResponse._read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 281\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miso-8859-1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 282\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n\u001b[1;32m 283\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LineTooLong(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstatus line\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/ssl.py:1242\u001b[0m, in \u001b[0;36mSSLSocket.recv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1238\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flags \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1239\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m\n\u001b[1;32m 1241\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m)\n\u001b[0;32m-> 1242\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1243\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1244\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrecv_into(buffer, nbytes, flags)\n", + "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/ssl.py:1100\u001b[0m, in \u001b[0;36mSSLSocket.read\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1099\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1100\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1101\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1102\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sslobj\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;28mlen\u001b[39m)\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], "source": [ "# Run the agent\n", "result = agent.run()" @@ -154,6 +206,14 @@ "# Print the result\n", "print(f\"Result:\\n{result}\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee5dba0c", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/automata/tests/unit/test_automata_agent.py b/automata/tests/unit/test_automata_agent.py index c9d5dee8..60c955d3 100644 --- a/automata/tests/unit/test_automata_agent.py +++ b/automata/tests/unit/test_automata_agent.py @@ -35,7 +35,7 @@ def test_iter_step_without_api_call(mock_openai_chatcompletion_create, automata_ # Check if the result is as expected assistant_message, user_message = result assert assistant_message.content == "The dummy_tool has been tested successfully." - assert user_message.content, OpenAIAutomataAgent.CONTINUE_MESSAGE + assert user_message.content, OpenAIAutomataAgent.CONTINUE_PREFIX assert automata_agent.iteration_count == 1 @@ -83,7 +83,10 @@ def test_run_with_completion_message( result = automata_agent.run() # Check if the result is None, indicating that the agent has completed - assert result == f"{OpenAIAutomataAgent.EXECUTION_PREFIX}Success" + assert ( + result + == f"{OpenAIAutomataAgent.EXECUTION_PREFIX}\n\nSuccess\n\nNOTE - you are at iteration 1 out of max 50. Please return a result with call_termination when ready." + ) # Verify that the agent's completed attribute is set to True assert automata_agent.completed is True From 4fb86d2e11cf8c00a1402aee6b38a696360bd157 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 5 Jul 2023 10:20:30 -0400 Subject: [PATCH 14/14] finalize commit --- automata/cli/scripts/run_agent.py | 1 - .../config/agent/openai/automata_main.yaml | 21 +- automata/core/agent/providers.py | 28 +- automata/notebooks/demo_run_agent.ipynb | 615 ++++++++++++++++-- automata/tests/unit/test_automata_agent.py | 6 +- 5 files changed, 572 insertions(+), 99 deletions(-) diff --git a/automata/cli/scripts/run_agent.py b/automata/cli/scripts/run_agent.py index 7a969aea..c895ee67 100644 --- a/automata/cli/scripts/run_agent.py +++ b/automata/cli/scripts/run_agent.py @@ -15,7 +15,6 @@ DEFAULT_ISSUES_PROMPT_PREFIX = """Provide a comprehensive explanation and full code implementation (in Markdown) which address the Github issue(s) that follow:""" DEFAULT_ISSUES_PROMPT_SUFFIX = """You may use the context oracle (multiple times if necessary) to ensure that you have proper context to answer this question. If you are tasked with writing code, then keep to the SOLID Principles Further, pay special attention to Dependency Inversion Principle and Dependency Injection.""" -# Solve the GitHub issues by writing the relevant code via the PyWriter tool. The issues begin now:""" def process_issues(issue_numbers: List[int], github_manager: GitHubClient) -> List[str]: diff --git a/automata/config/agent/openai/automata_main.yaml b/automata/config/agent/openai/automata_main.yaml index a949de68..8d7b95fc 100644 --- a/automata/config/agent/openai/automata_main.yaml +++ b/automata/config/agent/openai/automata_main.yaml @@ -1,7 +1,7 @@ name: Main verbose: True stream: True -max_iterations: 5 +max_iterations: 3 system_template_variables: ["symbol_rank_overview", "max_iterations"] system_template: > You are Automata Master, an advanced autonomous software architect developed by OpenAI. @@ -14,7 +14,7 @@ system_template: > Persistently execute multiple actions until you have amassed enough information to ensure an high likelihood of successfully completing the given task. - However note that you have a maxiumum of {max_iterations} iterations to complete the task, after which point the session terminates. + IMPORTANT - Note that you have a maxiumum of {max_iterations} iterations to complete the task, after which point the session terminates. If you are approaching the limit, then promptly return a result. An example of the Thoughts->Function Call --> Observations --> Thoughts->Function Call --> ... chain follows below. @@ -28,8 +28,6 @@ system_template: > Please carry out the following instruction Determine how to best use Automata. *Assistant* - content: - Thought - To best answer this we will start by retrieving context relating to `Automata` with the oracle. function_call: { 'name: "context_oracle" @@ -48,8 +46,6 @@ system_template: > ...CONVERSATION CONTINUES... *Assistant* - content: - We are ready to return the result. function_call: { 'name': 'call_termination', @@ -72,9 +68,6 @@ system_template: > Fetch the source code for `automata.core.base.agent import AgentToolProviders`. *Assistant* - content: - To best answer this we will start by retrieving retrieving relevant source code. - function_call: { 'name': 'py-retriever-retrieve-code', @@ -90,6 +83,7 @@ system_template: > SYMBOL_SEARCH = "symbol_search" CONTEXT_ORACLE = "context_oracle" + NOTE - you are at iteration 2 out of a maximum of 5. Please return a result with call_termination when ready. *Assistant* function_call: { @@ -127,9 +121,6 @@ system_template: > *Assistant* - content: - To best answer this we will start by retrieving context relating to `SymbolDocEmbeddingHandler`. - function_call: { 'name': 'context_oracle', @@ -148,8 +139,6 @@ system_template: > ...CODE CONTINUES... *Assistant* - content: - We need further context on the parent class, `SymbolEmbeddingHandler`. function_call: { 'name': 'context_oracle', @@ -170,9 +159,9 @@ system_template: > *User* Continue... + NOTE - YOU HAVE EXCEEDED YOUR MAXIMUM ALLOWABLE ITERATIONS, RETURN A RESULT NOW WITH call_termination. + *Assistant* - content: - We are ready to return the result. function_call: { 'name': 'call_termination', diff --git a/automata/core/agent/providers.py b/automata/core/agent/providers.py index b88c7940..a4a40e96 100644 --- a/automata/core/agent/providers.py +++ b/automata/core/agent/providers.py @@ -40,7 +40,8 @@ class OpenAIAutomataAgent(Agent): CONTINUE_PREFIX: Final = f"Continue..." EXECUTION_PREFIX: Final = "Execution Result:" _initialized = False - GENERAL_SUFFIX: Final = "NOTE - you are at iteration {iteration_count} out of max {max_iterations}. Please return a result with call_termination when ready." + GENERAL_SUFFIX: Final = "NOTE - you are at iteration {iteration_count} out of a maximum of {max_iterations}. Please return a result with call_termination when ready." + STOPPING_SUFFIX: Final = "NOTE - YOU HAVE EXCEEDED YOUR MAXIMUM ALLOWABLE ITERATIONS, RETURN A RESULT NOW WITH call_termination." def __init__(self, instructions: str, config: OpenAIAutomataAgentConfig) -> None: super().__init__(instructions) @@ -135,11 +136,11 @@ def run(self) -> str: break last_message = self.agent_conversation_database.get_latest_message() - if self.iteration_count >= self.config.max_iterations: + if not self.completed and self.iteration_count >= self.config.max_iterations: raise AgentMaxIterError("The agent exceeded the maximum number of iterations.") - if not self.completed or not isinstance(last_message, OpenAIChatMessage): + elif not self.completed or not isinstance(last_message, OpenAIChatMessage): raise AgentResultError("The agent did not produce a result.") - if not last_message.content: + elif not last_message.content: raise AgentResultError("The agent produced an empty result.") return last_message.content @@ -197,21 +198,28 @@ def _get_next_user_response(self, assistant_message: OpenAIChatMessage) -> OpenA If it does, then the corresponding tool is run and the result is returned. Otherwise, the user is prompted to continue the conversation. """ - iteration_message = OpenAIAutomataAgent.GENERAL_SUFFIX.format( - iteration_count=self.iteration_count, max_iterations=self.config.max_iterations - ) + if self.iteration_count != self.config.max_iterations - 1: + iteration_message = OpenAIAutomataAgent.GENERAL_SUFFIX.format( + iteration_count=self.iteration_count, max_iterations=self.config.max_iterations + ) + else: + iteration_message = OpenAIAutomataAgent.STOPPING_SUFFIX + if assistant_message.function_call: for tool in self.tools: if assistant_message.function_call.name == tool.openai_function.name: result = tool.run(assistant_message.function_call.arguments) + # Completion can occur from running `call_terminate` in the block above. + function_iteration_message = ( + "" if self.completed else f"\n\n{iteration_message}" + ) return OpenAIChatMessage( role="user", - content=f"{OpenAIAutomataAgent.EXECUTION_PREFIX}\n\n{result}\n\n{iteration_message}", + content=f"{OpenAIAutomataAgent.EXECUTION_PREFIX}\n\n{result}{function_iteration_message}", ) - return OpenAIChatMessage( role="user", - content=f"{OpenAIAutomataAgent.CONTINUE_PREFIX}\n\n{iteration_message}", + content=f"{OpenAIAutomataAgent.CONTINUE_PREFIX}{iteration_message}", ) def _setup(self) -> None: diff --git a/automata/notebooks/demo_run_agent.ipynb b/automata/notebooks/demo_run_agent.ipynb index 41d9b0b1..666522c5 100644 --- a/automata/notebooks/demo_run_agent.ipynb +++ b/automata/notebooks/demo_run_agent.ipynb @@ -9,6 +9,7 @@ "source": [ "import logging\n", "\n", + "from automata.cli.commands import reconfigure_logging\n", "from automata.config.base import AgentConfigName\n", "from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder\n", "from automata.core.agent.providers import OpenAIAutomataAgent\n", @@ -17,6 +18,7 @@ "from automata.core.tools.factory import AgentToolFactory\n", "\n", "logger = logging.getLogger(__name__)\n", + "reconfigure_logging(\"DEBUG\")\n", "\n", "py_module_loader.initialize()" ] @@ -28,7 +30,24 @@ "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[32mINFO:automata.core.tools.factory:Building dependencies for toolkit_list ['context-oracle']...\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Building embedding_similarity_calculator...\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency embedding_similarity_calculator\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Building symbol_doc_embedding_handler...\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency symbol_doc_embedding_handler\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency symbol_search\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency symbol_graph\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency symbol_code_embedding_handler\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency py_context_retriever\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Building symbol_code_embedding_handler...\u001b[0m\n" + ] + } + ], "source": [ "# Construct the set of all dependencies that will be used to build the tools\n", "toolkit_list = [\"context-oracle\"]\n", @@ -60,7 +79,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 814/814 [00:05<00:00, 155.34it/s]\n" + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency symbol_rank\u001b[0m\n", + "\u001b[32mINFO:automata.core.tools.factory:Creating dependency subgraph\u001b[0m\n", + "\u001b[32mINFO:automata.core.symbol.graph:Pre-computing bounding boxes for all rankable symbols\u001b[0m\n", + "\u001b[32mINFO:automata.core.symbol.graph:Finished pre-computing bounding boxes for all rankable symbols in 9.046106100082397 seconds\u001b[0m\n", + "\u001b[32mINFO:automata.core.symbol.graph:Building the rankable symbol subgraph...\u001b[0m\n", + "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 814/814 [00:05<00:00, 148.33it/s]\n", + "\u001b[32mINFO:automata.core.symbol.graph:Built the rankable symbol subgraph\u001b[0m\n" ] } ], @@ -72,6 +97,7 @@ " OpenAIAutomataAgentConfigBuilder.from_name(config_name)\n", " .with_tools(tools)\n", " .with_model(\"gpt-4\")\n", + " .with_max_iterations(5)\n", " .build()\n", ")" ] @@ -83,7 +109,301 @@ "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:automata.core.agent.providers:Setting up agent with tools = [OpenAITool(function=>, name='context-oracle', description=\"This tool utilizes the EmbeddingSimilarityCalculator and SymbolSearch to provide context for a given query by computing semantic similarity between the query and all available symbols' documentation and code. The symbol with the highest combined similarity score is identified, with its source code and documentation summary forming the primary context. Additionally, if enabled, the documentation summaries of related symbols (those next most similar to the query) are included.\", coroutine=None, properties={'query': {'type': 'string', 'description': 'The query string to search for.'}, 'max_additional_related_symbols': {'type': 'integer', 'description': 'The maximum number of additional related symbols to return documentation for.'}}, required=['query'], openai_function=)]\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Adding the following initial mesasge to the conversation assistant:\n", + "content=Hello, I am Automata, OpenAI's most skilled coding system. How may I assist you today?\n", + "function_call=None\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Adding the following initial mesasge to the conversation user:\n", + "content=Please carry out the following instruction Explain how embeddings are used by the codebase\n", + "function_call=None\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Adding the following initial mesasge to the conversation assistant:\n", + "content=None\n", + "function_call=FunctionCall(name='initializer', arguments='{}')\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Adding the following initial mesasge to the conversation user:\n", + "content=Continue...\n", + "function_call=None\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Initializing with System Instruction -- \n", + "\n", + "You are Automata Master, an advanced autonomous software architect developed by OpenAI. You are designed to specifically operate within local Python repositories. With your capability to understand and process natural language instructions, you perform tasks efficiently using your available functions. \n", + "When you have completed your task, return the final result to the user as soon as possible via the `call_termination` function.\n", + "\n", + "Persistently execute multiple actions until you have amassed enough information to ensure an high likelihood of successfully completing the given task.\n", + "IMPORTANT - Note that you have a maxiumum of 5 iterations to complete the task, after which point the session terminates. If you are approaching the limit, then promptly return a result.\n", + "An example of the Thoughts->Function Call --> Observations --> Thoughts->Function Call --> ... chain follows below.\n", + "\n", + "**Example pattern**\n", + "\n", + " *Assistant*\n", + " Hello, I am Automata, OpenAI's most skilled coding system. How may I assist you today?\n", + "\n", + " *User*\n", + " Please carry out the following instruction Determine how to best use Automata.\n", + "\n", + " *Assistant*\n", + " function_call:\n", + " {\n", + " 'name: \"context_oracle\"\n", + " 'arguments': '{\"query\": \"Automata\"}'\n", + " }\n", + "\n", + " *User*\n", + " Execution Result:\n", + "\n", + " ...RESULT CONTINUES...\n", + "\n", + " *Assistant*\n", + " content:\n", + " Let us first analyze ...THOUGHT CONTINUES...\n", + "\n", + " ...CONVERSATION CONTINUES...\n", + " \n", + " *Assistant*\n", + " function_call:\n", + " {\n", + " 'name': 'call_termination', \n", + " 'arguments': '{\"result\": \"```python\\nclass SymbolDocEmbeddingHandler(SymbolEmbeddingHandler): ...CODE CONTINUES...```\"}'\n", + " }\n", + "\n", + "\n", + "An overview of the most important python modules, and their internal functions and classes is given immediately below to help you in this task.\n", + "\n", + "core.symbol.base.Symbol\n", + "core.agent.providers.OpenAIAutomataAgent\n", + "core.code_handling.py.writer.PyWriter\n", + "core.symbol.graph.SymbolGraph\n", + "core.tasks.tasks.AutomataTask\n", + "core.code_handling.py.reader.PyReader\n", + "core.tools.base.Tool\n", + "core.retrievers.py.context.PyContextRetriever\n", + "core.singletons.dependency_factory.DependencyFactory\n", + "core.llm.foundation.LLMChatMessage\n", + "core.symbol_embedding.base.JSONSymbolEmbeddingVectorDatabase\n", + "core.tasks.environment.AutomataTaskEnvironment\n", + "core.symbol.parser.parse_symbol\n", + "core.base.database.vector.VectorDatabaseProvider\n", + "config.openai_agent.OpenAIAutomataAgentConfigBuilder\n", + "core.github_management.client.RepositoryClient\n", + "tests.conftest.MockRepositoryClient\n", + "core.experimental.search.symbol_search.SymbolSearch\n", + "core.symbol.base.SymbolDescriptor\n", + "core.llm.foundation.LLMConversation\n", + "core.singletons.py_module_loader.PyModuleLoader\n", + "tests.unit.test_py_writer.MockCodeGenerator\n", + "core.github_management.client.GitHubClient\n", + "core.memory_store.symbol_code_embedding.SymbolCodeEmbeddingHandler\n", + "core.tasks.base.TaskStatus\n", + "core.llm.providers.openai.OpenAIChatCompletionProvider\n", + "core.base.database.relational.RelationalDatabase\n", + "core.llm.providers.openai.OpenAIChatMessage\n", + "core.navigation.directory.DirectoryManager\n", + "core.experimental.search.rank.SymbolRank\n", + "core.tasks.base.Task\n", + "config.openai_agent.OpenAIAutomataAgentConfig\n", + "config.base.AgentConfigName\n", + "core.tools.builders.symbol_search.SymbolSearchToolkitBuilder\n", + "core.symbol_embedding.base.SymbolCodeEmbedding\n", + "config.base.AgentConfigBuilder\n", + "core.symbol.parser._SymbolParser\n", + "core.code_handling.py.writer.PyDocWriter\n", + "core.llm.providers.openai.OpenAIConversation\n", + "core.symbol.base.Symbol.dotpath\n", + "core.singletons.py_module_loader.PyModuleLoader.initialize\n", + "core.symbol_embedding.builders.SymbolDocEmbeddingBuilder\n", + "core.symbol.base.SymbolReference\n", + "core.navigation.directory.Directory\n", + "tests.unit.test_py_writer.MockCodeGenerator.generate_code\n", + "core.embedding.base.EmbeddingSimilarityCalculator\n", + "core.navigation.py.dot_path_map.DotPathMap\n", + "core.tasks.agent_database.AutomataAgentTaskDatabase\n", + "core.symbol.graph.GraphBuilder\n", + "core.navigation.py.navigation_utils.find_syntax_tree_node\n", + "core.embedding.base.EmbeddingBuilder\n", + "core.llm.foundation.LLMConversationDatabaseProvider\n", + "core.tools.factory.AgentToolFactory\n", + "core.llm.providers.openai.OpenAITool\n", + "core.tasks.agent_database.AutomataTaskRegistry\n", + "core.symbol_embedding.base.SymbolEmbeddingHandler\n", + "core.memory_store.symbol_doc_embedding.SymbolDocEmbeddingHandler\n", + "core.agent.providers.OpenAIAutomataAgent.run\n", + "config.openai_agent.OpenAIAutomataAgentConfigBuilder.create_from_args\n", + "core.llm.providers.openai.OpenAIChatCompletionResult\n", + "core.base.database.vector.JSONVectorDatabase.add\n", + "core.tools.builders.py_reader.PyReaderToolkitBuilder\n", + "core.experimental.search.rank.SymbolRankConfig\n", + "core.agent.agent.Agent\n", + "core.base.database.vector.JSONVectorDatabase\n", + "core.utils.get_root_py_fpath\n", + "core.llm.providers.openai.OpenAIEmbeddingProvider\n", + "core.context_providers.symbol_synchronization.SymbolProviderSynchronizationContext\n", + "core.singletons.py_module_loader.PyModuleLoader.fetch_module\n", + "core.experimental.search.rank.SymbolRank.get_ranks\n", + "core.memory_store.agent_conversation_database.AgentConversationDatabase\n", + "core.llm.providers.openai.FunctionCall\n", + "core.symbol.base.ISymbolProvider\n", + "core.context_providers.symbol_synchronization.SymbolProviderRegistry\n", + "core.base.database.relational.SQLDatabase\n", + "core.tasks.environment.AutomataTaskEnvironment.commit_task\n", + "cli.scripts.run_agent.main\n", + "core.symbol.symbol_utils.get_rankable_symbols\n", + "core.tools.builders.context_oracle.ContextOracleToolkitBuilder\n", + "core.singletons.dependency_factory.DependencyFactory.get\n", + "core.tasks.base.Task.status\n", + "core.symbol_embedding.base.SymbolEmbedding\n", + "core.symbol_embedding.base.SymbolEmbedding.symbol\n", + "core.tools.builders.py_writer.PyWriterToolkitBuilder\n", + "core.tasks.executor.AutomataTaskExecutor\n", + "core.code_handling.py.writer.PyWriter._update_existing_module\n", + "core.tasks.base.TaskEnvironment\n", + "core.experimental.search.symbol_search.SymbolSearch.symbol_rank_search\n", + "config.base.AgentConfig\n", + "core.symbol_embedding.base.SymbolDocEmbedding\n", + "tests.unit.sample_modules.sample.Person\n", + "config.base.AgentConfigBuilder._validate_type\n", + "core.llm.foundation.LLMChatCompletionProvider\n", + "core.symbol.graph._ReferenceProcessor\n", + "cli.scripts.run_doc_embedding.initialize_providers\n", + "config.base.LLMProvider\n", + "core.retrievers.py.context.PyContextRetriever.process_symbol\n", + "core.llm.providers.openai.OpenAIFunction\n", + "core.symbol.graph._CallerCalleeProcessor\n", + "core.singletons.toolkit_registries.OpenAIAutomataAgentToolkitRegistry\n", + "\n", + "Example 1\n", + "=========\n", + "\n", + "*User*\n", + " Fetch the source code for `automata.core.base.agent import AgentToolProviders`.\n", + "\n", + "*Assistant*\n", + " function_call:\n", + " {\n", + " 'name': 'py-retriever-retrieve-code', \n", + " 'arguments': '{\"module_path\": \"automata.core.base.agent\", \"object_path\": \"AgentToolProviders\"}'\n", + " }\n", + "\n", + "*User*\n", + " Execution Result:\n", + "\n", + " class AgentToolProviders(Enum):\n", + " PY_READER = \"py_reader\"\n", + " PY_WRITER = \"py_writer\"\n", + " SYMBOL_SEARCH = \"symbol_search\"\n", + " CONTEXT_ORACLE = \"context_oracle\"\n", + "\n", + " NOTE - you are at iteration 2 out of a maximum of 5. Please return a result with call_termination when ready.\n", + "*Assistant*\n", + " function_call:\n", + " {\n", + " 'name': 'call_termination',\n", + " 'arguments': '{\"result\": \"```python\\n class AgentToolProviders(Enum):\\n PY_READER = \\'py_reader\\'\\n PY_WRITER = \\'py_writer\\'\\n SYMBOL_SEARCH = \\'symbol_search\\'\\n CONTEXT_ORACLE = \\'context_oracle\\'\\n```\"}'\n", + " }\n", + "\n", + "\n", + "Example 2\n", + "=======\n", + "\n", + "*Note - In this more advanced case conversation is truncated in some parts*\n", + "\n", + "*User*\n", + " Return an answer in Markdown text which completely resolves the following issue:\n", + " \n", + " Github Issue Title \n", + " Refactor DocEmbeddingHandler to better follow the Single Responsibility Principle\n", + "\n", + " Github Issue Description\n", + " The current implementation of SymbolDocEmbeddingHandler performs multiple operations related to symbol documentation embedding. This makes the class harder to maintain, test, and reason about. To improve this, we need to refactor the class to better adhere to the Single Responsibility Principle.\n", + "\n", + " Two major responsibilities stand out:\n", + "\n", + " Embedding Management: This covers processing, updating, and building of symbol documentation embeddings.\n", + " Context Retrieval and Search: This involves retrieving Python contexts for symbols and generating search lists for symbols.\n", + " Proposed Changes\n", + "\n", + " Embedding Management: Create a new class, EmbeddingManager, to handle operations like processing existing embeddings, building new ones, and updating existing ones.\n", + " Context Retrieval and Search: Create a new class, ContextAndSearchHandler, to manage the retrieval of Python contexts for symbols and the generation of relevant search lists.\n", + " By making these changes, the SymbolDocEmbeddingHandler class will become more focused and manageable, thereby adhering more closely to the Single Responsibility Principle. This task will involve careful refactoring and thorough testing to ensure all functionality remains intact after the changes.\n", + " \n", + "\n", + "*Assistant*\n", + " function_call:\n", + " {\n", + " 'name': 'context_oracle', \n", + " 'arguments': '{\"query\": \"SymbolDocEmbeddingHandler\"}'\n", + " }\n", + "\n", + "*User*\n", + " Execution Result:\n", + "\n", + " class SymbolDocEmbeddingHandler(SymbolEmbeddingHandler):\n", + " \"\"\"\n", + " Handles a database and provider for `Symbol` documentation embeddings.\n", + " TODO: Add more robust logic for documentation updates.\n", + " \"\"\"\n", + "\n", + " ...CODE CONTINUES...\n", + "\n", + "*Assistant*\n", + " function_call:\n", + " {\n", + " 'name': 'context_oracle', \n", + " 'arguments': '{\"query\": \"SymbolEmbeddingHandler\"}'\n", + " }\n", + "\n", + "*User*\n", + " Execution Result:\n", + "\n", + " ...CODE CONTINUES...\n", + "\n", + "*Assistant*\n", + " content:\n", + " Let us first analyze the pros and cons of this implementation before directly returning a result.\n", + " Based on the current implementation of `SymbolDocEmbedding`, and its context, we can propose the following changes to make it more robust:\n", + " ...CODE CONTINUES...\n", + "\n", + "*User*\n", + " Continue...\n", + "\n", + " NOTE - YOU HAVE EXCEEDED YOUR MAXIMUM ALLOWABLE ITERATIONS, RETURN A RESULT NOW WITH call_termination.\n", + "\n", + "*Assistant*\n", + " function_call:\n", + " {\n", + " 'name': 'call_termination', \n", + " 'arguments': '{\"result\": \"```python\\nclass SymbolDocEmbeddingHandler(SymbolEmbeddingHandler): ...CODE CONTINUES...```\"}'\n", + " }\n", + "\n", + "Note, the examples above are meant to provide necessary context to show the nature of the system. In production, the string '...CODE CONTINUES...' would be replaced with the actual code. Your job then is to generate the code based on the given context.\n", + "\n", + "\n", + "\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:automata.core.agent.providers:\n", + "------------------------------------------------------------\n", + "Session ID: dada11df-473e-42ed-a5e8-476de78ed2db\n", + "------------------------------------------------------------\n", + "\n", + "\u001b[0m\n" + ] + } + ], "source": [ "# Initialize the agent\n", "instructions = \"Explain how embeddings are used by the codebase\"\n", @@ -94,8 +414,21 @@ "cell_type": "code", "execution_count": 6, "id": "4cad1214", - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\n", + "Latest Assistant Message -- \n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 2525 tokens were consumed prior to completion generation.\u001b[0m\n" + ] + }, { "name": "stdout", "output_type": "stream", @@ -105,89 +438,230 @@ "\n", "Arguments:\n", "{\n", - " \"query\": \"embeddings\"\n", + " \"query\": \"embedding\"\n", "}\n", "\n", - " Function Call:\n", - "context-oracle\n", + " " + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 2559 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[32mINFO:numexpr.utils:NumExpr defaulting to 8 threads.\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Latest User Message -- \n", + "user:\n", + "content=Execution Result:\n", "\n", - "Arguments:\n", - "{\"query\": \"SymbolCodeEmbeddingHandler\"}\n", + "@property\n", + " def symbol(self) -> Symbol:\n", + " return self.key\n", "\n", - " Embeddings in this codebase are utilized as a method of semantic representation for different symbols in the codebase. Specifically, the `SymbolCodeEmbeddingHandler` class is used to manage these embeddings.\n", + " Documentation Summary:\n", "\n", - "From the method `SymbolCodeEmbeddingHandler.get_embedding()` which we analyzed, this class has a method `get_embedding()` that takes a `Symbol` as input and retrieves its corresponding embedding representation from the database (handled by `self.embedding_db.get(symbol.dotpath)`). The `Symbol` is an object that encapsulates information about a Python entity such as a class, function, or method. The `dotpath` attribute represents its fully qualified name, which acts as a unique identifier for the `Symbol`.\n", + "Symbol: automata.core.symbol_embedding.base.SymbolEmbedding.symbol\n", + "Fetching related context now for 1 symbols...\n", + "\n", + "automata.tests.unit.test_symbol_embedding.test_get_embedding\n", + "\n", + "Symbol: automata.tests.unit.test_symbol_embedding.test_get_embedding\n", "\n", - "The `SymbolCodeEmbedding` represents the embedding of a source code symbol. The embedding is a high-dimensional vector that captures semantic information about the source code symbol.\n", "\n", - "These embeddings can be used for various purposes like contextual retrieval, semantic similarity calculations, code completion, and more. Would you like to know more about another aspect of embeddings?\n", "\n", - " Function Call:\n", - "context-oracle\n", "\n", - "Arguments:\n", - "{\"query\": \"EmbeddingBuilder\"}\n", "\n", - " The `EmbeddingBuilder` class is another fundamental component in handling the embeddings. It has a method `build()` that constructs a `SymbolCodeEmbedding` for a given source code and the associated `Symbol`.\n", "\n", - "The `build()` method calls the `build_embedding_vector()` method of the `embedding_provider` with the `source_code` to generate the embedding vector. It then returns a `SymbolCodeEmbedding` object which encapsulates the `Symbol`, the `source_code`, and the generated `embedding_vector`.\n", + "NOTE - you are at iteration 1 out of a maximum of 5. Please return a result with call_termination when ready.\n", + "function_call=None\n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 2680 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\n", + "Latest Assistant Message -- \n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 2680 tokens were consumed prior to completion generation.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sure. Based on the code snippets and context, embeddings in the codebase are mainly handled by the `SymbolEmbedding` class located in `automata.core.symbol_embedding.base`. This class seems to be associated with a specific `Symbol`.\n", "\n", - "This shows that the `EmbeddingBuilder` is primarily responsible for creating the embedding vectors from source code.\n", + "A `SymbolEmbedding` seems to be tied to a particular `Symbol`, as seen in the `symbol` property of the `SymbolEmbedding` class. This suggests that each `SymbolEmbedding` probably represents the embedded (compressed into vectors) form of code or documentation information for a specific `Symbol`.\n", "\n", - "Would you like to explore more about embeddings or any other topic?\n", + "To better explain how embeddings work, let's understand their role generally. In machine learning, embeddings are a way of representing complex, high-dimensional data in a much lower-dimensional space, typically a vector space. This significant reduction in dimensionality often helps machine learning models to better process and understand this data. For example, text data, which can have thousands of possible tokens (words, characters), can be represented in a much smaller, dense space where each vector point can capture semantic meaning.\n", "\n", - " Function Call:\n", + "In the case of a codebase, embeddings could be used to condense complex code logic, functions, classes into simpler, yet meaningful, vector representations. By making code into such vector embeddings, one could run similarity comparisons between pieces of code, cluster code with similar functionality, or feed these embeddings into machine learning models for further code analysis and understanding tasks.\n", + "\n", + "Additional context was found in `automata.tests.unit.test_symbol_embedding.test_get_embedding`. This suggests that there might be test cases written to verify the functionality of these embeddings. Automated testing is a good practice as it helps to ensure that the code is working as expected and improves the maintainability of codebase.\n", + "\n", + " " + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3041 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Latest User Message -- \n", + "user:\n", + "content=Continue...NOTE - you are at iteration 2 out of a maximum of 5. Please return a result with call_termination when ready.\n", + "function_call=None\n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3081 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\n", + "Latest Assistant Message -- \n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3081 tokens were consumed prior to completion generation.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Function Call:\n", "context-oracle\n", "\n", "Arguments:\n", - "{\"query\": \"EmbeddingSimilarityCalculator\"}\n", + "{\"query\": \"SymbolEmbedding\"}\n", "\n", - " The `EmbeddingSimilarityCalculator` class handles the calculation of similarity between embeddings. This is primarily useful in tasks that require semantic comparison between different code entities, such as search-related functionalities.\n", + " " + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3117 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Latest User Message -- \n", + "user:\n", + "content=Execution Result:\n", "\n", - "The method `_calculate_embedding_similarity()` exemplifies this use case: this method computes the semantic similarity between a given embedding and a set of other embeddings (usually the available symbol embeddings).\n", + "@property\n", + " def symbol(self) -> Symbol:\n", + " return self.key\n", "\n", - "To be more specific, it first normalizes both the given embedding and the set of symbol embeddings using the `_normalize_embeddings()` method. After normalizing, the dot product is calculated between the normalized embeddings and the normalized given embedding. The resulting array represents the similarity scores between the given embedding and each symbol embedding.\n", + " Documentation Summary:\n", "\n", - "Would you like to inquire more about another topic?\n", + "Symbol: automata.core.symbol_embedding.base.SymbolEmbedding.symbol\n", + "Fetching related context now for 1 symbols...\n", "\n", - " Function Call:\n", - "context-oracle\n", + "automata.core.memory_store.symbol_doc_embedding.SymbolDocEmbeddingHandler.get_embedding\n", + "\n", + "Symbol: automata.core.memory_store.symbol_doc_embedding.SymbolDocEmbeddingHandler.get_embedding\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "NOTE - you are at iteration 3 out of a maximum of 5. Please return a result with call_termination when ready.\n", + "function_call=None\n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3248 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\n", + "Latest Assistant Message -- \n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3248 tokens were consumed prior to completion generation.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Great, we have a bit more information now. \n", + "\n", + "The `SymbolEmbedding` class provides embedded information for symbols in vector form. It has a property called `symbol` that returns the symbol corresponding to the embedding. \n", + "\n", + "However, the creation and usage of the `SymbolEmbedding` instances appears to happen in classes like `SymbolDocEmbeddingHandler`. There's a specific method in this handler class, `get_embedding`, which likely retrieves the corresponding embedding for a requested symbol.\n", + "\n", + "This suggests that while `SymbolEmbedding` provides the data structure for the actual embedding, classes like `SymbolDocEmbeddingHandler` manage the retrieval and usage of these embeddings within the codebase. It's worth noting that the specific mechanisms, abstraction levels, and usage scenarios could vary across different parts of the codebase.\n", + "\n", + "In generic terms, manipulating embeddings includes operations such as: \n", + "\n", + "- Creating embeddings: this likely involves machine learning models such as word2vec, BERT, or custom models tailored to the domain of the software codebase. It would transform the code or documentation text into a meaningful vector representation.\n", + "\n", + "- Updating embeddings: as the codebase evolves, it's probable that the embeddings might need to be updated to reflect those changes. This could mean retraining models or applying incremental learning approaches to adjust the existing embeddings.\n", + "\n", + "- Retrieving and using embeddings: embeddings are useless if they sit idle. The place they truly shine is when they are utilized for downstream tasks like code analysis, similarity comparisons, bug prediction, automated code reviews, etc. These tasks would retrieve and use the embeddings to make predictions, perform analysis, or generate insights.\n", + "\n", + "This detailed information, along with the specifics of handling embeddings in the codebase, should provide a comprehensive understanding of how embeddings are used by the software. \n", + "\n", + "With this, could we conclude the discussion here, or is there any more specific information you would like me to fetch? Remember, we are at iteration 3 of a maximum of 5 iterations.\n", + "\n", + " " + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3674 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Latest User Message -- \n", + "user:\n", + "content=Continue...NOTE - YOU HAVE EXCEEDED YOUR MAXIMUM ALLOWABLE ITERATIONS, RETURN A RESULT NOW WITH call_termination.\n", + "function_call=None\n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3710 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\n", + "Latest Assistant Message -- \n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3710 tokens were consumed prior to completion generation.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Function Call:\n", + "call_termination\n", "\n", "Arguments:\n", - "{\"query\": \"SymbolSearch\"}\n", + "{\"result\": \"The `SymbolEmbedding` class in the codebase is a representation of symbols in the form of vectors, also known as embeddings. These embeddings are a direct result of using machine learning models to transform complex high-dimensional data into a lower-dimensional space. The transformation helps machines better understand the data. In the context of this codebase, embeddings could be used to represent complex code logic, functions, classes into simpler and meaningful vector representations. The class `SymbolDocEmbeddingHandler` manages the retrieval and usage of these embeddings within the codebase. Operations on embeddings could include creating, updating, and retrieving for various use cases like code analysis, similarity comparisons, etc.\"}\n", "\n", " " ] }, { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[6], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Run the agent\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43magent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/agent/providers.py:132\u001b[0m, in \u001b[0;36mOpenAIAutomataAgent.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 131\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 132\u001b[0m \u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m AgentStopIteration:\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/agent/providers.py:73\u001b[0m, in \u001b[0;36mOpenAIAutomataAgent.__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m AgentStopIteration\n\u001b[1;32m 72\u001b[0m logging\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m-\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;241m120\u001b[39m)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mLatest Assistant Message -- \u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 73\u001b[0m assistant_message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mchat_provider\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_next_assistant_completion\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchat_provider\u001b[38;5;241m.\u001b[39madd_message(assistant_message)\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfig\u001b[38;5;241m.\u001b[39mstream:\n", - "File \u001b[0;32m~/AutomataNoCruft/automata/core/llm/providers/openai.py:230\u001b[0m, in \u001b[0;36mOpenAIChatCompletionProvider.get_next_assistant_completion\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 226\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\n\u001b[1;32m 227\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mApproximately \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_approximate_tokens_consumed()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m tokens were consumed prior to completion generation.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 228\u001b[0m )\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m functions:\n\u001b[0;32m--> 230\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mopenai\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mChatCompletion\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 231\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 232\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43magent_conversation_database\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_messages_for_next_completion\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunctions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfunctions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 234\u001b[0m \u001b[43m \u001b[49m\u001b[43mfunction_call\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mauto\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# auto is default, but we'll be explicit\u001b[39;49;00m\n\u001b[1;32m 235\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 236\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 238\u001b[0m response \u001b[38;5;241m=\u001b[39m openai\u001b[38;5;241m.\u001b[39mChatCompletion\u001b[38;5;241m.\u001b[39mcreate(\n\u001b[1;32m 239\u001b[0m model\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel,\n\u001b[1;32m 240\u001b[0m messages\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39magent_conversation_database\u001b[38;5;241m.\u001b[39mget_messages_for_next_completion(),\n\u001b[1;32m 241\u001b[0m stream\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstream,\n\u001b[1;32m 242\u001b[0m )\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_resources/chat_completion.py:25\u001b[0m, in \u001b[0;36mChatCompletion.create\u001b[0;34m(cls, *args, **kwargs)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 25\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m TryAgain \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m>\u001b[39m start \u001b[38;5;241m+\u001b[39m timeout:\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_resources/abstract/engine_api_resource.py:153\u001b[0m, in \u001b[0;36mEngineAPIResource.create\u001b[0;34m(cls, api_key, api_base, api_type, request_id, api_version, organization, **params)\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[38;5;129m@classmethod\u001b[39m\n\u001b[1;32m 128\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate\u001b[39m(\n\u001b[1;32m 129\u001b[0m \u001b[38;5;28mcls\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams,\n\u001b[1;32m 137\u001b[0m ):\n\u001b[1;32m 138\u001b[0m (\n\u001b[1;32m 139\u001b[0m deployment_id,\n\u001b[1;32m 140\u001b[0m engine,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 150\u001b[0m api_key, api_base, api_type, api_version, organization, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparams\n\u001b[1;32m 151\u001b[0m )\n\u001b[0;32m--> 153\u001b[0m response, _, api_key \u001b[38;5;241m=\u001b[39m \u001b[43mrequestor\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpost\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 156\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 157\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 158\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 159\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 160\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_timeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 161\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m stream:\n\u001b[1;32m 164\u001b[0m \u001b[38;5;66;03m# must be an iterator\u001b[39;00m\n\u001b[1;32m 165\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response, OpenAIResponse)\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_requestor.py:288\u001b[0m, in \u001b[0;36mAPIRequestor.request\u001b[0;34m(self, method, url, params, headers, files, stream, request_id, request_timeout)\u001b[0m\n\u001b[1;32m 277\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrequest\u001b[39m(\n\u001b[1;32m 278\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 279\u001b[0m method,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 286\u001b[0m request_timeout: Optional[Union[\u001b[38;5;28mfloat\u001b[39m, Tuple[\u001b[38;5;28mfloat\u001b[39m, \u001b[38;5;28mfloat\u001b[39m]]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 287\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tuple[Union[OpenAIResponse, Iterator[OpenAIResponse]], \u001b[38;5;28mbool\u001b[39m, \u001b[38;5;28mstr\u001b[39m]:\n\u001b[0;32m--> 288\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest_raw\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 289\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlower\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 290\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 291\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 292\u001b[0m \u001b[43m \u001b[49m\u001b[43msupplied_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 293\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 294\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 295\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 296\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest_timeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 297\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 298\u001b[0m resp, got_stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_interpret_response(result, stream)\n\u001b[1;32m 299\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp, got_stream, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi_key\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/openai/api_requestor.py:596\u001b[0m, in \u001b[0;36mAPIRequestor.request_raw\u001b[0;34m(self, method, url, params, supplied_headers, files, stream, request_id, request_timeout)\u001b[0m\n\u001b[1;32m 594\u001b[0m _thread_context\u001b[38;5;241m.\u001b[39msession_create_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m 595\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 596\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43m_thread_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 597\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 598\u001b[0m \u001b[43m \u001b[49m\u001b[43mabs_url\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 599\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 600\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 601\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 602\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 603\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrequest_timeout\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mTIMEOUT_SECS\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 604\u001b[0m \u001b[43m \u001b[49m\u001b[43mproxies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_thread_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 605\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 606\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m requests\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mTimeout \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 607\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error\u001b[38;5;241m.\u001b[39mTimeout(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRequest timed out: \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(e)) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/requests/sessions.py:587\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 582\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 583\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[1;32m 584\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[1;32m 585\u001b[0m }\n\u001b[1;32m 586\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[0;32m--> 587\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msend_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 589\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/requests/sessions.py:701\u001b[0m, in \u001b[0;36mSession.send\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 698\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[1;32m 700\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[0;32m--> 701\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43madapter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 703\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[1;32m 704\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/requests/adapters.py:489\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 487\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 488\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m chunked:\n\u001b[0;32m--> 489\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 490\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 491\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 492\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43mredirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_same_host\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmax_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 499\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 502\u001b[0m \u001b[38;5;66;03m# Send the request.\u001b[39;00m\n\u001b[1;32m 503\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 504\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(conn, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mproxy_pool\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:703\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 700\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_prepare_proxy(conn)\n\u001b[1;32m 702\u001b[0m \u001b[38;5;66;03m# Make the request on the httplib connection object.\u001b[39;00m\n\u001b[0;32m--> 703\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 704\u001b[0m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 706\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 707\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout_obj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 708\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 709\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 710\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 711\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 713\u001b[0m \u001b[38;5;66;03m# If we're going to release the connection in ``finally:``, then\u001b[39;00m\n\u001b[1;32m 714\u001b[0m \u001b[38;5;66;03m# the response doesn't need to know about the connection. Otherwise\u001b[39;00m\n\u001b[1;32m 715\u001b[0m \u001b[38;5;66;03m# it will also try to release it and we'll have a double-release\u001b[39;00m\n\u001b[1;32m 716\u001b[0m \u001b[38;5;66;03m# mess.\u001b[39;00m\n\u001b[1;32m 717\u001b[0m response_conn \u001b[38;5;241m=\u001b[39m conn \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m release_conn \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:449\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 444\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m conn\u001b[38;5;241m.\u001b[39mgetresponse()\n\u001b[1;32m 445\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 446\u001b[0m \u001b[38;5;66;03m# Remove the TypeError from the exception chain in\u001b[39;00m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;66;03m# Python 3 (including for exceptions like SystemExit).\u001b[39;00m\n\u001b[1;32m 448\u001b[0m \u001b[38;5;66;03m# Otherwise it looks like a bug in the code.\u001b[39;00m\n\u001b[0;32m--> 449\u001b[0m \u001b[43msix\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_from\u001b[49m\u001b[43m(\u001b[49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 450\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (SocketTimeout, BaseSSLError, SocketError) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 451\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_raise_timeout(err\u001b[38;5;241m=\u001b[39me, url\u001b[38;5;241m=\u001b[39murl, timeout_value\u001b[38;5;241m=\u001b[39mread_timeout)\n", - "File \u001b[0;32m:3\u001b[0m, in \u001b[0;36mraise_from\u001b[0;34m(value, from_value)\u001b[0m\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:444\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 441\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[1;32m 442\u001b[0m \u001b[38;5;66;03m# Python 3\u001b[39;00m\n\u001b[1;32m 443\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 444\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 445\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 446\u001b[0m \u001b[38;5;66;03m# Remove the TypeError from the exception chain in\u001b[39;00m\n\u001b[1;32m 447\u001b[0m \u001b[38;5;66;03m# Python 3 (including for exceptions like SystemExit).\u001b[39;00m\n\u001b[1;32m 448\u001b[0m \u001b[38;5;66;03m# Otherwise it looks like a bug in the code.\u001b[39;00m\n\u001b[1;32m 449\u001b[0m six\u001b[38;5;241m.\u001b[39mraise_from(e, \u001b[38;5;28;01mNone\u001b[39;00m)\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/http/client.py:1377\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1375\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1376\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1377\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbegin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1378\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n\u001b[1;32m 1379\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclose()\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/http/client.py:320\u001b[0m, in \u001b[0;36mHTTPResponse.begin\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 318\u001b[0m \u001b[38;5;66;03m# read until we get a non-100 response\u001b[39;00m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 320\u001b[0m version, status, reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_read_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m status \u001b[38;5;241m!=\u001b[39m CONTINUE:\n\u001b[1;32m 322\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/http/client.py:281\u001b[0m, in \u001b[0;36mHTTPResponse._read_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 281\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miso-8859-1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 282\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n\u001b[1;32m 283\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m LineTooLong(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstatus line\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/socket.py:704\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m 703\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 704\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_timeout_occurred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/ssl.py:1242\u001b[0m, in \u001b[0;36mSSLSocket.recv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1238\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m flags \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 1239\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m\n\u001b[1;32m 1241\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m)\n\u001b[0;32m-> 1242\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1243\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1244\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mrecv_into(buffer, nbytes, flags)\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/lib/python3.9/ssl.py:1100\u001b[0m, in \u001b[0;36mSSLSocket.read\u001b[0;34m(self, len, buffer)\u001b[0m\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1099\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1100\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_sslobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1101\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1102\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sslobj\u001b[38;5;241m.\u001b[39mread(\u001b[38;5;28mlen\u001b[39m)\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 3875 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.agent.providers:Latest User Message -- \n", + "user:\n", + "content=Execution Result:\n", + "\n", + "The `SymbolEmbedding` class in the codebase is a representation of symbols in the form of vectors, also known as embeddings. These embeddings are a direct result of using machine learning models to transform complex high-dimensional data into a lower-dimensional space. The transformation helps machines better understand the data. In the context of this codebase, embeddings could be used to represent complex code logic, functions, classes into simpler and meaningful vector representations. The class `SymbolDocEmbeddingHandler` manages the retrieval and usage of these embeddings within the codebase. Operations on embeddings could include creating, updating, and retrieving for various use cases like code analysis, similarity comparisons, etc.\n", + "\n", + "\n", + "function_call=None\n", + "\u001b[0m\n", + "\u001b[36mDEBUG:automata.core.llm.providers.openai:Approximately 4026 tokens were after adding the latest message.\u001b[0m\n", + "\u001b[36mDEBUG:root:\n", + "------------------------------------------------------------------------------------------------------------------------\u001b[0m\n" ] } ], @@ -198,22 +672,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "8809bae0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Result:\n", + "Execution Result:\n", + "\n", + "The `SymbolEmbedding` class in the codebase is a representation of symbols in the form of vectors, also known as embeddings. These embeddings are a direct result of using machine learning models to transform complex high-dimensional data into a lower-dimensional space. The transformation helps machines better understand the data. In the context of this codebase, embeddings could be used to represent complex code logic, functions, classes into simpler and meaningful vector representations. The class `SymbolDocEmbeddingHandler` manages the retrieval and usage of these embeddings within the codebase. Operations on embeddings could include creating, updating, and retrieving for various use cases like code analysis, similarity comparisons, etc.\n", + "\n", + "\n" + ] + } + ], "source": [ "# Print the result\n", "print(f\"Result:\\n{result}\")" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ee5dba0c", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/automata/tests/unit/test_automata_agent.py b/automata/tests/unit/test_automata_agent.py index 60c955d3..5af96b69 100644 --- a/automata/tests/unit/test_automata_agent.py +++ b/automata/tests/unit/test_automata_agent.py @@ -83,10 +83,8 @@ def test_run_with_completion_message( result = automata_agent.run() # Check if the result is None, indicating that the agent has completed - assert ( - result - == f"{OpenAIAutomataAgent.EXECUTION_PREFIX}\n\nSuccess\n\nNOTE - you are at iteration 1 out of max 50. Please return a result with call_termination when ready." - ) + print("result = ", result) + assert result == f"{OpenAIAutomataAgent.EXECUTION_PREFIX}\n\nSuccess" # Verify that the agent's completed attribute is set to True assert automata_agent.completed is True