From d417909b8363fce070a4f23b1ebe499c13b9babb Mon Sep 17 00:00:00 2001 From: Nathan Evans Date: Tue, 9 Sep 2025 13:51:05 -0700 Subject: [PATCH 1/6] Remove text unit group_by_columns --- docs/config/yaml.md | 1 - docs/index/default_dataflow.md | 4 +- docs/index/outputs.md | 2 +- graphrag/config/defaults.py | 9 ++- graphrag/config/init_content.py | 1 - graphrag/config/models/chunking_config.py | 4 -- graphrag/data_model/schemas.py | 4 +- graphrag/data_model/text_unit.py | 8 +-- .../index/workflows/create_base_text_units.py | 53 ++++++------------ .../index/workflows/create_final_documents.py | 18 +++--- .../workflows/create_final_text_units.py | 2 +- graphrag/prompt_tune/loader/input.py | 1 - graphrag/query/input/loaders/dfs.py | 4 +- tests/unit/config/utils.py | 1 - tests/verbs/data/communities.parquet | Bin 25391 -> 39880 bytes tests/verbs/data/community_reports.parquet | Bin 156921 -> 334388 bytes tests/verbs/data/covariates.parquet | Bin 59240 -> 70374 bytes tests/verbs/data/documents.parquet | Bin 126826 -> 126826 bytes tests/verbs/data/entities.parquet | Bin 41136 -> 60987 bytes tests/verbs/data/relationships.parquet | Bin 37492 -> 73213 bytes tests/verbs/data/text_units.parquet | Bin 148830 -> 163602 bytes tests/verbs/data/text_units_metadata.parquet | Bin 128451 -> 163313 bytes ...text_units_metadata_included_chunk.parquet | Bin 128513 -> 163634 bytes tests/verbs/test_create_base_text_units.py | 10 +--- tests/verbs/test_extract_graph_nlp.py | 4 +- tests/verbs/test_prune_graph.py | 2 +- tests/verbs/util.py | 6 +- 27 files changed, 49 insertions(+), 85 deletions(-) diff --git a/docs/config/yaml.md b/docs/config/yaml.md index 7d7dcdd9e2..2f89779b73 100644 --- a/docs/config/yaml.md +++ b/docs/config/yaml.md @@ -100,7 +100,6 @@ These settings configure how we parse documents into text chunks. This is necess - `size` **int** - The max chunk size in tokens. - `overlap` **int** - The chunk overlap in tokens. -- `group_by_columns` **list[str]** - Group documents by these fields before chunking. - `strategy` **str**[tokens|sentences] - How to chunk the text. - `encoding_model` **str** - The text encoding model to use for splitting on token boundaries. - `prepend_metadata` **bool** - Determines if metadata values should be added at the beginning of each chunk. Default=`False`. diff --git a/docs/index/default_dataflow.md b/docs/index/default_dataflow.md index be290ed7a6..a6ff1af526 100644 --- a/docs/index/default_dataflow.md +++ b/docs/index/default_dataflow.md @@ -60,9 +60,7 @@ flowchart TB The first phase of the default-configuration workflow is to transform input documents into _TextUnits_. A _TextUnit_ is a chunk of text that is used for our graph extraction techniques. They are also used as source-references by extracted knowledge items in order to empower breadcrumbs and provenance by concepts back to their original source text. -The chunk size (counted in tokens), is user-configurable. By default this is set to 300 tokens, although we've had positive experience with 1200-token chunks using a single "glean" step. (A "glean" step is a follow-on extraction). Larger chunks result in lower-fidelity output and less meaningful reference texts; however, using larger chunks can result in much faster processing time. - -The group-by configuration is also user-configurable. By default, we align our chunks to document boundaries, meaning that there is a strict 1-to-many relationship between Documents and TextUnits. In rare cases, this can be turned into a many-to-many relationship. This is useful when the documents are very short and we need several of them to compose a meaningful analysis unit (e.g. Tweets or a chat log) +The chunk size (counted in tokens), is user-configurable. By default this is set to 1200 tokens. Larger chunks result in lower-fidelity output and less meaningful reference texts; however, using larger chunks can result in much faster processing time. ```mermaid --- diff --git a/docs/index/outputs.md b/docs/index/outputs.md index add60182b1..4f2d6d8d57 100644 --- a/docs/index/outputs.md +++ b/docs/index/outputs.md @@ -104,7 +104,7 @@ List of all text chunks parsed from the input documents. | ----------------- | ----- | ----------- | | text | str | Raw full text of the chunk. | | n_tokens | int | Number of tokens in the chunk. This should normally match the `chunk_size` config parameter, except for the last chunk which is often shorter. | -| document_ids | str[] | List of document IDs the chunk came from. This is normally only 1 due to our default groupby, but for very short text documents (e.g., microblogs) it can be configured so text units span multiple documents. | +| document_id | str | ID of the document the chunk came from. | | entity_ids | str[] | List of entities found in the text unit. | | relationships_ids | str[] | List of relationships found in the text unit. | | covariate_ids | str[] | Optional list of covariates found in the text unit. | \ No newline at end of file diff --git a/graphrag/config/defaults.py b/graphrag/config/defaults.py index dc84fc4595..110da904b9 100644 --- a/graphrag/config/defaults.py +++ b/graphrag/config/defaults.py @@ -27,15 +27,15 @@ DEFAULT_OUTPUT_BASE_DIR = "output" DEFAULT_CHAT_MODEL_ID = "default_chat_model" DEFAULT_CHAT_MODEL_TYPE = ModelType.OpenAIChat -DEFAULT_CHAT_MODEL = "gpt-4-turbo-preview" +DEFAULT_CHAT_MODEL = "gpt-4o" DEFAULT_CHAT_MODEL_AUTH_TYPE = AuthType.APIKey DEFAULT_EMBEDDING_MODEL_ID = "default_embedding_model" DEFAULT_EMBEDDING_MODEL_TYPE = ModelType.OpenAIEmbedding -DEFAULT_EMBEDDING_MODEL = "text-embedding-3-small" +DEFAULT_EMBEDDING_MODEL = "text-embedding-ada-002" DEFAULT_EMBEDDING_MODEL_AUTH_TYPE = AuthType.APIKey DEFAULT_VECTOR_STORE_ID = "default_vector_store" -ENCODING_MODEL = "cl100k_base" +ENCODING_MODEL = "o200k_base" COGNITIVE_SERVICES_AUDIENCE = "https://cognitiveservices.azure.com/.default" @@ -68,9 +68,8 @@ class ChunksDefaults: size: int = 1200 overlap: int = 100 - group_by_columns: list[str] = field(default_factory=lambda: ["id"]) strategy: ClassVar[ChunkStrategyType] = ChunkStrategyType.tokens - encoding_model: str = "cl100k_base" + encoding_model: str = ENCODING_MODEL prepend_metadata: bool = False chunk_size_includes_metadata: bool = False diff --git a/graphrag/config/init_content.py b/graphrag/config/init_content.py index d08abb1c81..a37e634118 100644 --- a/graphrag/config/init_content.py +++ b/graphrag/config/init_content.py @@ -67,7 +67,6 @@ chunks: size: {graphrag_config_defaults.chunks.size} overlap: {graphrag_config_defaults.chunks.overlap} - group_by_columns: [{",".join(graphrag_config_defaults.chunks.group_by_columns)}] ### Output/storage settings ### ## If blob storage is specified in the following four sections, diff --git a/graphrag/config/models/chunking_config.py b/graphrag/config/models/chunking_config.py index 902bffcbb9..4d1214241c 100644 --- a/graphrag/config/models/chunking_config.py +++ b/graphrag/config/models/chunking_config.py @@ -20,10 +20,6 @@ class ChunkingConfig(BaseModel): description="The chunk overlap to use.", default=graphrag_config_defaults.chunks.overlap, ) - group_by_columns: list[str] = Field( - description="The chunk by columns to use.", - default=graphrag_config_defaults.chunks.group_by_columns, - ) strategy: ChunkStrategyType = Field( description="The chunking strategy to use.", default=graphrag_config_defaults.chunks.strategy, diff --git a/graphrag/data_model/schemas.py b/graphrag/data_model/schemas.py index 42d28d9029..20b2360f40 100644 --- a/graphrag/data_model/schemas.py +++ b/graphrag/data_model/schemas.py @@ -54,7 +54,7 @@ RELATIONSHIP_IDS = "relationship_ids" TEXT_UNIT_IDS = "text_unit_ids" COVARIATE_IDS = "covariate_ids" -DOCUMENT_IDS = "document_ids" +DOCUMENT_ID = "document_id" PERIOD = "period" SIZE = "size" @@ -146,7 +146,7 @@ SHORT_ID, TEXT, N_TOKENS, - DOCUMENT_IDS, + DOCUMENT_ID, ENTITY_IDS, RELATIONSHIP_IDS, COVARIATE_IDS, diff --git a/graphrag/data_model/text_unit.py b/graphrag/data_model/text_unit.py index 07b1b9ae9c..55006ab15b 100644 --- a/graphrag/data_model/text_unit.py +++ b/graphrag/data_model/text_unit.py @@ -28,8 +28,8 @@ class TextUnit(Identified): n_tokens: int | None = None """The number of tokens in the text (optional).""" - document_ids: list[str] | None = None - """List of document IDs in which the text unit appears (optional).""" + document_id: str | None = None + """ID of the document in which the text unit appears (optional).""" attributes: dict[str, Any] | None = None """A dictionary of additional attributes associated with the text unit (optional).""" @@ -45,7 +45,7 @@ def from_dict( relationships_key: str = "relationship_ids", covariates_key: str = "covariate_ids", n_tokens_key: str = "n_tokens", - document_ids_key: str = "document_ids", + document_id_key: str = "document_id", attributes_key: str = "attributes", ) -> "TextUnit": """Create a new text unit from the dict data.""" @@ -57,6 +57,6 @@ def from_dict( relationship_ids=d.get(relationships_key), covariate_ids=d.get(covariates_key), n_tokens=d.get(n_tokens_key), - document_ids=d.get(document_ids_key), + document_id=d.get(document_id_key), attributes=d.get(attributes_key), ) diff --git a/graphrag/index/workflows/create_base_text_units.py b/graphrag/index/workflows/create_base_text_units.py index d94ee5951f..1872cbd833 100644 --- a/graphrag/index/workflows/create_base_text_units.py +++ b/graphrag/index/workflows/create_base_text_units.py @@ -35,7 +35,6 @@ async def run_workflow( output = create_base_text_units( documents, context.callbacks, - chunks.group_by_columns, chunks.size, chunks.overlap, chunks.encoding_model, @@ -53,7 +52,6 @@ async def run_workflow( def create_base_text_units( documents: pd.DataFrame, callbacks: WorkflowCallbacks, - group_by_columns: list[str], size: int, overlap: int, encoding_model: str, @@ -62,26 +60,9 @@ def create_base_text_units( chunk_size_includes_metadata: bool = False, ) -> pd.DataFrame: """All the steps to transform base text_units.""" - sort = documents.sort_values(by=["id"], ascending=[True]) + documents.sort_values(by=["id"], ascending=[True]) - sort["text_with_ids"] = list( - zip(*[sort[col] for col in ["id", "text"]], strict=True) - ) - - agg_dict = {"text_with_ids": list} - if "metadata" in documents: - agg_dict["metadata"] = "first" # type: ignore - - aggregated = ( - ( - sort.groupby(group_by_columns, sort=False) - if len(group_by_columns) > 0 - else sort.groupby(lambda _x: True) - ) - .agg(agg_dict) - .reset_index() - ) - aggregated.rename(columns={"text_with_ids": "texts"}, inplace=True) + encode, _ = get_encoding_fn(encoding_model) def chunker(row: pd.Series) -> Any: line_delimiter = ".\n" @@ -99,7 +80,6 @@ def chunker(row: pd.Series) -> Any: ) if chunk_size_includes_metadata: - encode, _ = get_encoding_fn(encoding_model) metadata_tokens = len(encode(metadata_str)) if metadata_tokens >= size: message = "Metadata tokens exceeds the maximum tokens per chunk. Please increase the tokens per chunk." @@ -107,7 +87,7 @@ def chunker(row: pd.Series) -> Any: chunked = chunk_text( pd.DataFrame([row]).reset_index(drop=True), - column="texts", + column="text", size=size - metadata_tokens, overlap=overlap, encoding_model=encoding_model, @@ -128,7 +108,7 @@ def chunker(row: pd.Series) -> Any: return row # Track progress of row-wise apply operation - total_rows = len(aggregated) + total_rows = len(documents) logger.info("Starting chunking process for %d documents", total_rows) def chunker_with_logging(row: pd.Series, row_index: int) -> Any: @@ -137,27 +117,26 @@ def chunker_with_logging(row: pd.Series, row_index: int) -> Any: logger.info("chunker progress: %d/%d", row_index + 1, total_rows) return result - aggregated = aggregated.apply( + text_units = documents.apply( lambda row: chunker_with_logging(row, row.name), axis=1 ) - aggregated = cast("pd.DataFrame", aggregated[[*group_by_columns, "chunks"]]) - aggregated = aggregated.explode("chunks") - aggregated.rename( + text_units = cast("pd.DataFrame", text_units[["id", "chunks"]]) + text_units = text_units.explode("chunks") + text_units.rename( columns={ - "chunks": "chunk", + "id": "document_id", + "chunks": "text", }, inplace=True, ) - aggregated["id"] = aggregated.apply( - lambda row: gen_sha512_hash(row, ["chunk"]), axis=1 - ) - aggregated[["document_ids", "chunk", "n_tokens"]] = pd.DataFrame( - aggregated["chunk"].tolist(), index=aggregated.index + + text_units["id"] = text_units.apply( + lambda row: gen_sha512_hash(row, ["text"]), axis=1 ) - # rename for downstream consumption - aggregated.rename(columns={"chunk": "text"}, inplace=True) + # get a final token measurement + text_units["n_tokens"] = text_units["text"].apply(lambda x: len(encode(x))) return cast( - "pd.DataFrame", aggregated[aggregated["text"].notna()].reset_index(drop=True) + "pd.DataFrame", text_units[text_units["text"].notna()].reset_index(drop=True) ) diff --git a/graphrag/index/workflows/create_final_documents.py b/graphrag/index/workflows/create_final_documents.py index af81e8dfa8..f12560bab6 100644 --- a/graphrag/index/workflows/create_final_documents.py +++ b/graphrag/index/workflows/create_final_documents.py @@ -37,19 +37,15 @@ def create_final_documents( documents: pd.DataFrame, text_units: pd.DataFrame ) -> pd.DataFrame: """All the steps to transform final documents.""" - exploded = ( - text_units.explode("document_ids") - .loc[:, ["id", "document_ids", "text"]] - .rename( - columns={ - "document_ids": "chunk_doc_id", - "id": "chunk_id", - "text": "chunk_text", - } - ) + renamed = text_units.loc[:, ["id", "document_id", "text"]].rename( + columns={ + "document_id": "chunk_doc_id", + "id": "chunk_id", + "text": "chunk_text", + } ) - joined = exploded.merge( + joined = renamed.merge( documents, left_on="chunk_doc_id", right_on="id", diff --git a/graphrag/index/workflows/create_final_text_units.py b/graphrag/index/workflows/create_final_text_units.py index 373b9b4cb4..fbcf0af890 100644 --- a/graphrag/index/workflows/create_final_text_units.py +++ b/graphrag/index/workflows/create_final_text_units.py @@ -59,7 +59,7 @@ def create_final_text_units( final_covariates: pd.DataFrame | None, ) -> pd.DataFrame: """All the steps to transform the text units.""" - selected = text_units.loc[:, ["id", "text", "document_ids", "n_tokens"]] + selected = text_units.loc[:, ["id", "text", "document_id", "n_tokens"]] selected["human_readable_id"] = selected.index entity_join = _entities(final_entities) diff --git a/graphrag/prompt_tune/loader/input.py b/graphrag/prompt_tune/loader/input.py index 29010b05a8..36c8fca003 100644 --- a/graphrag/prompt_tune/loader/input.py +++ b/graphrag/prompt_tune/loader/input.py @@ -58,7 +58,6 @@ async def load_docs_in_chunks( chunks_df = create_base_text_units( documents=dataset, callbacks=NoopWorkflowCallbacks(), - group_by_columns=chunk_config.group_by_columns, size=chunk_size, overlap=overlap, encoding_model=chunk_config.encoding_model, diff --git a/graphrag/query/input/loaders/dfs.py b/graphrag/query/input/loaders/dfs.py index 7182090cd2..17aeb604a2 100644 --- a/graphrag/query/input/loaders/dfs.py +++ b/graphrag/query/input/loaders/dfs.py @@ -234,7 +234,7 @@ def read_text_units( relationships_col: str | None = "relationship_ids", covariates_col: str | None = "covariate_ids", tokens_col: str | None = "n_tokens", - document_ids_col: str | None = "document_ids", + document_id_col: str | None = "document_id", attributes_cols: list[str] | None = None, ) -> list[TextUnit]: """Read text units from a dataframe using pre-converted records.""" @@ -250,7 +250,7 @@ def read_text_units( row, covariates_col, key_type=str, value_type=str ), n_tokens=to_optional_int(row, tokens_col), - document_ids=to_optional_list(row, document_ids_col, item_type=str), + document_id=to_optional_str(row, document_id_col), attributes=( {col: row.get(col) for col in attributes_cols} if attributes_cols diff --git a/tests/unit/config/utils.py b/tests/unit/config/utils.py index 2fa5b14107..07f178a4b8 100644 --- a/tests/unit/config/utils.py +++ b/tests/unit/config/utils.py @@ -208,7 +208,6 @@ def assert_text_embedding_configs( def assert_chunking_configs(actual: ChunkingConfig, expected: ChunkingConfig) -> None: assert actual.size == expected.size assert actual.overlap == expected.overlap - assert actual.group_by_columns == expected.group_by_columns assert actual.strategy == expected.strategy assert actual.encoding_model == expected.encoding_model assert actual.prepend_metadata == expected.prepend_metadata diff --git a/tests/verbs/data/communities.parquet b/tests/verbs/data/communities.parquet index d8a5c82dec9fa9191502542c57c62779f72d3c33..d85403d6b6f4f4e9a344b6992442392ef1ba7917 100644 GIT binary patch literal 39880 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ξ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 N$#;}WSszx_YwTkEX4bGyWl6!&=Iu3B%@ ziRE))0ct_^y<@Z{QivCMm(W_%N598!Vy)y2#6_3ni%YdICr>0$3%3=0wVJCg@cLkHVy;@hUxf8~{bI-iQwjuqaHvst ztsB85aVg@8yCVKtx5p<2qrr&R2R8}AeuUhyfD0BQd8JyH7gi#|*82P|G3IeaT_8aI zxW^Ungp|d^15uw84aVZImtq|DLh|~9!JsD?fw@Mk>z4-tFjFxqdEne&Dzy<8Y?W9W z0P%4}Yh$W+E{MUQ!{&gHhyh@vLt1Sl0&h`0%=-h9#~+G& zg2Drhk|z`idBuP$SPMcRfmBK3FQ^s8+S*#L%NLJEV8=X>5J;!b2aomo-0(-0$VH+%IXk*2i{ z(NpV@Bp1Bb6%;S0A|aP>Sp~>^ZPXu#!yN)1G2r(^qyQWf?4v6bhx@?!!36=>6V*>a zcRb*)1;LNFJfNt4;U!lf8U@jIdqW|RZ1gY_^oDA~M;l?aUSAB>5s5`X%w2(yaES1= zOw2`Lx8Y6kXaH^y@&s!`-df4!2YHFQJ#lN}1p$zrcpwr92H@cR?qCokQc*jX7k1s{ zkDvtO_q!!jx**^K+u)76#W?I;)E9`jf@SnZ!8uA)sZ6pV8jDb8maZhYQ1sM7lW+^<0IC_{UJ{@ zAVox9$m;WJ6tT1daM#HFrVTVx-V+@QU7z_*z3=E?fh8Bhn1`DGE zh8~6i1_z@Qh7m>?3=@oU7!@!^z%auY34@0rXeb>bkcK7-;D3cMNEj*@!(a@DL20P* zG%Q#7QV)G2{(WbSRL$vEjMV8L2#%=w55I+1|Nq_lH@W=ZyL%H2!Knsn5I^x`p(1z% z^zexU`t6)fe}^OG4VC{=79&-7`j!8Br2qZ5aG7@ekU|uwrnk3mvlVcKAoP2XAve`v z9DMS5WVP~StcbiKs)|^G82&-@PK(|6VW*$^>*+6;*F;0(ALmv5`@DX;MiI6D{#&?= zzhG!yq=wK5o=J`EQarwF*=1`tZ{4=*N##pX&Id@tg9TF!&4UxY;r|fj9M7L#rEvN? z?8D{Aa20YG)}zz*?2mF&bow%``Hx!n+i&5;rq3Id|8az_pVujI#I&0bF>0}k(6(iq{4DzlA~5p=3VoXeqLDuoyA4!XXr6>TKKHLCDD?IbaiPN>|% z)mJq|)7hSEPD(mqBGWVJ#jqxRay}=eB2uPHfK2Hu@q|O$XPjO{hG*zAEB$MbewnoP@t--|G7Z;s_7^NvbU(b zkZBfE6WX@Z^MqaDk~)So&P*pHkjV*B+5T{$s&m?zg-oX;XC`D9KG!=n^e)*b(tE9+ z2U>{UcdE{cWTW|v#7`G9O^5v7pzW?RVP~3BIXNdw*^uT{R8 z*}QReuMxd}7p^t(vvL_p%5D9aYL>Efd6hN{(%P+h(`SSIoSM$W_%^X8ol#w5Yy*V= zIo>gUlZTk1`DI-JIXb&^K2cY8J;jSTtB#l|?w!~PS|B<2Hqebsb~HaF-*yUSA$Nt} zXlBSTKV^D8l8~c(V>$`S3DS_0GJUU-(j?7AEv-a)_qP5uR8~s0e3*>F-3?z`=N#zK zrc+}GV%i!c?3*^cfbdIGh+O|HeS)70H(6IqO_4G?-t>G`xUg5))AD#wipjZj2F|V# z%s?lPJ_?`Bwx_7EkTCqZ2CU>9(6qt_V8&S~xV#QRcLyY#ELCl%1 z5 zQIY?)RXN9?jZ(JDI4b;ycMa;{?{@F^3BUpUN325?>sw0N=aqKH-rbi!GJH*gU_RP# z-N&?ITX$_NG<^36`VA`{ei3~>)d6;QcBh=>qraQcjMSY@bW31tK`+7HDw75k&nYGi zeojhYwEi_g2fwUSj&|}{DbtO77r?vt?4Y(OS1nHWIQR}QdzmyS5d18n86W(?xTaH1 zUJ-P-`=FqMxFG=k?Db@LF#%6a@u=P<^3hH(-Z?P>x}_b7=L0Bw*`vyx0Lcm8BO~M8xQlSSH`|ELDRYtpa=W#BBM`7FAlBAw#96c4I;KzNA);ci*1<(J91PBgV$be zXVv^kk)a`n-fPll2Yq(ZDl`TL3an3^EvI5~w;aohi7Z?PIsgErAsxwIPRsh#pkHly z4z=`Fj|ZP02VWk2ZmYyMNQp$UiAsr?@Tv1)BKcGtyd|g&Adqa9?*{1xGa5c5JV9n1 z8_pK?mJR6B@i;hHx_dmh|I@B78wC%TD7%=xO2HqBIZ-*2n^4;powOF@MR8~0GYLmu zo3=~LW@YI-BDHmrT@XqCn&xKOk6n|!olgYHO5AC3&WE$-w#e}D=fB{YZNcxG8(2)aU>UI^N z91&^rYhl@$q-P(Y2Nw=b^>r7yOzd;VSc^fKWxdVvB}Vv0?77?$^*QI9Q=yqpXC*${1<1(y zL}gc(Bq|6)$}ajCG4Ql5^pCdraBt5CXmbteTy@dkQCR~qMJ_?_QCT^rx>Nd8FY+-! zGS=rANy^C1UxyhT{1VW+l=!x_`|t?Q3{szt0z}B5S;;DCWnVuNO{BBJ8w}usm~gk| zN~@mY6Ec3165V=<7Zd4}dq!g#j;}EfsF6>CjZqN9-ac(4FDG)UwMIA_368i|ODtpG zpvbt?`(EE6N=`@{zSKu##Z~t|t4$=p0`^`=rc?B7M7I9T;Y8=gDs%~Q9GL{kF z6j;^$dR|;6E|FG$ChXAW6FE8AH{W>*Da!M+^pmrYu0N)7UZNr#4Uefpcj>_?M5Qk4 z5y4{rP>BU<#{cp4#5+-=C}RfYrwwp7?O|BK>~dUZU`SYu0GNU5gp(SgKP_3V%g=iD=y?NU)o)q^V_M&+!#hKGT7o zM74_hl#&3~qkAVckf^1cnFLq>ogivgu9FxFvb9=@jMEz)eM~4(t)mRo`>{c zcRIzashrsGFZ{Q(-%2_ctXf8*S zG`Nzu#J6R#PD5S0ePCV{xSQW1o$xFD?}B(H#Cp$8wDGVJ{3D=(ocK35096>D%hXIW zy`{ldF(CgjsY}K+8v7|Kk?t0535z_Dy9Giog^k>04yM~NICep z7)7P}xSRsj#rulH-DF2czYagm5XtIE6d|GtaDE*i7OCv9?aq3v>aIw4!5P9XsO}}@ z49bT$sJ1eoQ$5^K4VhcEnzepNG&N`#EqH~|S>YpXBHbfp++za;g@;>-9Gasa#HQJr znu@5LiRP2pTz{O%aw=w1tK}T^1eI!+V^TVk0;`|kC6& zSo#F~9@V=+3s}oJ{;l&02$?O_3V-VLkV%Q1O&jjhPM5%)Ej(vloA6mnB^ei0j|Xll zI6R)VQJv`|cfPvy83wc_hd*bC#1m`w&L$yxJU)zbGP>ml=2|~D+-9#FsNoLL_8V&^ z&e%*wrSOGhQnpT2_IAg7xJg&|Eef0?=8Bkfx0Jy@7B`Kt)l)=HJb`W6{t>;aDVs^Tkl#=2Nfw%FZ zUl4nXj>zIKv@I71AFFOcYnUXsJI<@qtu^m0M&_+w1ElEVxfgWgvQFU=y2bfaK}*Gm zr*T8k&K4ra-pTf@B6FE_Z_(TR>w7*~UEg-6wj(1;@qzVQ8;PjEnjT^FU1PkI1Sz>S1H(#pfZY*K%(UTo= z{~~U=o|z5^R~)X*NKv_~|B|Luvi<`)&xRQT*r?w49hfArQ-xZZD6jq>l6@VDQymUxCHyzUxBFku- zrXpMTLi!n9kUfL*^p~(_vw)7+MLNrFx`t_K+)SI=I49));(ZImfAoT#6i+c7kh{T; z()0E?3rJY0$v`cWGJ;Q-Y=m_wsRh&J9O;}T{j}m-79egnI1rH^-LMxEqj57^cLIYI zHNUBIz!r2Vk!!Y7iiN*q+(Dn0KB}9^e#IOMaC5YnWf?J_>%?P?4ReX=Ace1@h$z0k z2!CHnrZcuplrNmgfzRP*0yOW0z~d)Nt(HjphgCrR#?M2{I(4z~mYHnHYLoMhJ_i zc&HPS5<=6>6fK5OPq&R{Zfd=O#hErApBwx7K`wLVxj{l zXndB5f@iVAIVvV+O()9C9~-D-I>tV&6J8R!2nlZ})@EQ5QPt%{RwyI7%~Ny@O9^`! zk)XSquBiKjMJuY?i?vZDt;ANC7&x^U7tvGTi18jZ`VMDxDsO{KSVn8X>+<+~hU!XZ z;e-am5qAY3Jy4{i%s#^fHW6H)tU^iuiCtZZEtm~c4BwuT(IjS8PR!wAH3Mcn&px4t z=Ow!m_;J`W`dr)zCXo#r9AJJk03?+?$eNy_DA+>0f+JHMXbqSf{E@Cg?1qR+jL0~t ztDA|8IWVYM=c5<-$cA4CyqjjaApF7C>y6++Vt`C>Q7Myvd{}t09%_U#R1*(q-czl0 zeuh+QnTB+FNnePaY!Y-t+_}fpD>G3(md0jm-@tWfu!(LyR?)hmpzTdYNmKL%h-SQY zMAKZtvHE%6omG8Mlm~0(|U`ZaMra_;cXjw58Xy|Iv*~9 z?3oxzqk#&Dgdl&O&Kxi2ZYv_B@LeH(>oPKyt`Th0^@5grutErEb5gW3#qKgJe2U3+ zin*3k?6Berh@1dvXXUnsQ7yGJFV5H_EVmCQogGcP_U7kLD{KC-m=J%VD&C?h*i~hg zcgpamI{c?H^E#tYX&4dtx=f%^wdV{DzpW8Utc`4xGhak`T4}ON>~AqSitXF0I~XF5 zTMaGu?3**p^g82ws@zmrtRRXmK-v50Zq(0B)rsffj|@bOsgx#U{336vqi3GvgikH$ z3if@@&6;m2p7*jjsx!Y>fXU)R-~djB!YpvK7=6vN0O67G+yQKQw<&Ot>ArU|B|kW7)68?-kEGM|C*72;#oO z3_#lq>nI|fPXR=Jcs@;{1&}u!Ox<#u^bExMN&J{VjgVo^@+jk?Z9jzYdUWv znxKWOeXPTFj+U5<*N)VKp3IcHaafO9!PE_`##fK*eIammIeV4PJYpn!y_P+qA!bMR zT58Tzea<~*EW6&n8<_xxRVU5h**a|_%58Zy7~)Imu!vrsK(RAe^dfkZO^hC7SdRA~ z?XeE7m;>W8mpxd-7L|})8Mc>ZAjZwIb;>FJsMg#M3tcU%)}qBk7EQ(-oDsC6TTJBl zK99)urTE+${j_KS7`{}WM0Da%1(@%-0(WhN^BE%< zPY0Sxh`9MmjnEqI#CKOzKO)Gh&|98MDf;G+swyQ*QAnfCPIq-RnL$IjD!k=;tqhJ` z#E6-3Ze5VTM_{E{>@P+^!Kv>`Mcp3wz6wh(dM2l@yk)w2%I zy`=e)BFj0&j0nCJf2k+r857Va!cj;Esn)agMzUMxChFKqgXX1;OW9woy?)h8WJba( zitq+QxP^Xkv$kdjDd+l2@RLP^xbPVwxAo5b$JiiEWus|!t{JqsN$cFBQ)St4qq(~JXcpflZK9kMMd+$aa&ee#Aluazg!%O&1TKo>G6y|$M zwVioL{FuL2AG)eC)&udo9L+k%topQ|rfEyF<#_pwq9o>IW9M}gz4z*GsChl8BRNylu$LH|-wYSeL@Ddy8fWM%+kI5v zl$pJCglZchyI&%m(^rixfDqw`$#!$4eH{G+*^%yhhY&sY5VoBb`@?K=rRQAr#(y|} zwmP3StL_)_EyJ7E_8cUpv)yW9IxegXZxD_W&8rgXHlxb9|3}^Gg)iD3rfef9!oh7U zyQ`hY{xQwdXwAjP9%7eQ%9j(->cc$RkG>|OY11+@w}Rd~f8fmar_8%(e1O8AmqXNe z2i`?-Equ$$O;sSvo2m&uaIj$S8UPrt(nQ4c_v)sx_%G%e$L2+<-zy^0?4PtPci@Lc zF&&cgfmO2$(EH{OjDg|;{3P4^1-FZ#02#6?EqeIYEoTp?#f`0-3h>>6J{yH3s>Dvv z*A?q$&Kfm8H9T+uVZTLn8QNTbVF7xXNhjqLeyK_u1yiv^90qnkU_dRu5!^46$)15M zA*0cFnNDMa>`4URn{|s~2@|YuBv(4py3w?}44>4SZYVR=n}{^v4af;BY;*Et&vH|> zG4NNSsRgYvT}K-s9~6Q7vF(0+D7pXd=-B)MG-Lg-^{9%190~5Lp>k4J;5Gt00)C1m z(icuweS2NG>X3+{*vQIz81P#X{<;+4fOAqAyB&kIhr_Vv(lHUdDupqMp*I2QS9wwRJDO=Nc9i#Vf;Ea zJ;UwThBq1DgpTR(2Tt~%mB$`8tZjdzdWj3utgXUEzZn=moC3Jix?b&hg*;J5Bsu38 zBD$r?)Tf_wwOS}vy_8R5p-lH0`*0b%$By^ZfS+orsDLsn_!Z|5EQdXYA_xibt3~3o zn9!@{6O;D4NxmCDqbE|_Zsw7G*bVnNBp`_AOYm)#3?I$pS&|n&7Mto%k|1CW#sUT) zViYedKH;7)3xA{SUl*8+xPcP?hW-tfOErBWddswOB)h(d%J9wjIVU8nz8gh?);3f! zG9(z-X`|Uks|ksF--#>79I7(EU}yDOA#P{zj&jo`o$UomFXjM;&{cBmnr5125?Gwy$rNa0INL?+xxMCpf!2>yWr@2O$|+esdkqo&Pn+WM_|WF?s$U7e%N`-<^O zyK{kV|M^M^W&!vmlJgat2$~dQ-0l&Oo)!-}msu@t8}|xh`x@d&?rS?Fd$~dyAj#A; zyW9cCNI?P}-{(T_5ouGI!!FQI29~JA99yp=B+UobXY6m9?spyjYV$5M3ct)jSjP^p zLLcG1BkB6;Rtv%ReP_9(+O*P0I-gy23n@J7mNYlApQ)WoDxYASHu7>*xCdoz=Y&do{SArUbsBG`y|)r>gKiTxvKmn_MB8 zE)3xH#eR3sgqOCN>TGDB27foga*W-3PhjG3@NS`r=1s+1ms$up$x@)hjW_n!XR&u4JI@Y(7zhPxAi7JC7_niA?v?Xk*z_&&*=;J^r2Vo2qqa zhCZ8*yX{91+U^v+F{x@fzFbncaY!0n}rw;LIyu#S(o$mt>{I?az5@%iIa&w~k)lTr=f zP25>SK{22@X?^{A?XrxNi{kC0RJ$r1d@Pes!NU%j*vBk*QqcY+yK?M-Yuh(JQriE8 z;ogm9LSXjP^s<@;FcnbBP>Ssi9^S%7>`N-3@YYi^MU?RgzjmgWjfy5s5Cy4hKEqyA zB>boiLyfD)^6gl>V4i?^CVY)nNfG1}h~e*%oFi3w}}K)^zTp0s`$pH-t0OZ4s3x+LDvMH3_%M|ROyjiN%d|6DA29n^!w3NAQ~mJIDbEfo zeof0=XTi6PB9;hSjgS+c4QY1VSRG3!>j**~XfuGfJCJI?h zml_UT%6_Vc)O-ZrS5D?r?9Cd);kb$Yu2^UwvpKw~mPoQ&u|5HjUpmF@FF8=Jx~I;i zGT%~i`7S+?#B~&Rzg}~jd?mVm{<9^A&nIk67cHJlo~B2HXY~@{i>c0hgnbL*-L9^T zD6?bgt#^?bQCbh?rmu{O)pR0#-!lB;XfmE#?Z&T86qZ_xw2(qrn#b3i0V>RH9>bnb znY%UYD|l1W#<809ibCx1FpY8|g0EDgl7s@eN2O`qetbm&U_Ts`|j9s6JqlN9@6$bm4AI^y<6DHdUXB5oL8vi$m$}8&}+GiCYwdV zQh24iN_rf>TN2igiG)zZJ+41^4E3PVmNAV)cl8+#YKffUrj(%B;^%A!P3*qn77CAM z^+QaUzFX;h(}_Mm+Ocu5`6jjQq3~{^`}hpg<<+6xV3=7)u&#l0@4;qr>U>h` z16op7*1=B)w+vZ!?rFOoC=<<)?)-T)UR`9F?XXOwoX1ME(M~Ar;Rk426D2gFJpi-c zw|>~a&iokLUn8yg*-mtBicyfV!u{&rUXqXEFDD6~0$%u~cwhm#$!t=C)4}&QX}e`e zn&G>!$yGGLjK3I->RH<)Z5B#}5#d83jxz$gc%*8}hBw>`h35gO%(3=+P8K2!`<+Y}}UX`a_Wa?qpEu9L*bn z9U?B_lbg=!e^oDcL1ib?lA<7&+W)*sn*87|1*Wk&C>ohQoMJeJuhCd8ZQebFggWh= z+)oe#H<|qP$j!Z6%8h25&LyI@jh2>X`{KIW3c{ZP!o|Z4q~yQ_4a5>O?RbN&vbgO5 zLiP+Rkj^>uG<%4`kBkA_wzbwa3|2YNRJ8a)y5VZT81ygp8usF_!nnKxA(j zGn$*K-+4#tZ4CY^Ro7#%KM84}%k9>=;-BzWPVOg~;OFaV#K#)ikxg{v|HdtG;Mp{h z;QV9J1D+WUy0`kT7~jCKhg&hhkUhKyIS)3l-_>w`QHRg6kTt6FoK*;QL9(D_r6tbb zog=uzZalNpbb%9WRo#V7`o_S;x>eH|nDX=G^;>K3g9a^-2fzi}IAVo)Rt@5~lWu%! zjOt#t#6e}cC0mIHYJ2#eRwdrMzv)>21k10*;=+M>2b$}j!Qo@SbhMZ{T7=Ixdrf`1 zMHi3md1y^%jpyUCbq)6WgtyU2TTH{ZGZJ@j;O}3d% zLiYS3wvA%1rfrXzJzG$lm%W{4M@An@))lFv2^24 znpagVm!rZNF1%)RKaIoXh(T+^)9Y)^)l-G1J1uq+H`d#(DXl-N02fa>IdO{Z#gQ`~ zFQb5sH0|RO%~iOwmdIKxjHSQw)I)5~cyI@Zs|0>kE)6Ls$hXZYH9|J2rYj%o)8mC$ z_@WX#emvJ%6BU=>tDtPb4M4Gw7vVy-NmBu~PK*FajBOMw+h(9&Yxab%fKXd)Fsn_y zQDLL)<>I=x3qw!0{2VDCZZ9Aly2a~GqI1j@8p97BkIHhe1i;J2N$oaLPI}%gXD_Tr z2hg0IZ*#9zlg_SH-6Zl`2;E){CUh6QVlI1Od4q%kMe~Npy^C>mA zf~wy!+&-(}I%4KGX11veZ{ThBlw0kpm;2wLVp2Ez#Wc&|A}(Lv`c)J6L2=+E#GOs= zFIUa#ANRc(KStF*O|V5HPV5n$nRa<$_%Xa>wrSTS_IhS@cUcV}X8cgON-(qbq64egn~c~(qa}iq5H0)l`@iMfMlGCXI?t^u zS-gChN;VbH^eS7f2=^A%XDqmxVf##`+iZ*ju$}o{4#Lm;*qx8#s#139*^o|NcLrqL zdPcC_TFv{BWhT;TTGdfdHi^5-fJw&ifc2_P6VQ6|r6YEK>b%9Y`AgH6Md%+C2v_(r z%vM-0u`VOTx^oTe&1!R(zI|@E+J0|KSA02HN2_oXzu5@v2FP1|M95;3r(&G5hGG9| zKx2sMb(hX7I~KSRakfz#4=N(jgnP?EvB2A^`Y{EYrm>F~nY0Wp)#LXJrdLayJLi_I zvzR8@HWpcU&a};dUOIJ_>5fw3#pZ;*&Vm7;wuz>%S|ADi_cH4>P{PXWINn!<@0*W4 zK{Z4(8*QZ=e52)&O5wTv(}*eT*P-e(*F>X0a(ENTUQOW&^AjIWc**V!3@H-Bl=k~(m|ioW8(V)S=%c;kkRZ7611xtT zv*BXhFRFPUQ9t&E>!7lBy`}e`)m=2^+5s1Q+dxPrlhwIdaK3_;iZ!ng-!;F2rXA7C zZ72@b{ETY+&MZK(8Z{(Wa_PRy^brZN2C`{32Z2b0dvgYn>%Cs6u6f#W*DNAuSj*M?OH|5(*01^jTP# zYCBnC+NZ->OaHkfl+iA)CSv<9vfe^QGlpMH=V<859@*Vs-)6u;Q6 z=jY0aB{B}X$*wL<+O)K2#95msDbzuHv56&ZFrU6sJZd}v4BAt>y!iz;ywYb$E3;H#!jo*Hhp z2q?--nd^ zbjJ(m`B0+(B-sYZlfQAbPxJMF4+!C`JV-)<*x*0$SqG_lP(e|+waK(Xj)uzy>DjqK z(iB(%pmk;V(^kRx8}Ati*}#PRBlTH%6Qns|{zFvn-zd;StazYGgDn~4xkD-iE?W+@ zds%65PC1 zAuTjW$5oyIyLkE$lESDR+Igq(1J!I;#=nu%72-9}-GQhi4YHU9-wKQ?h3G!mKA`X+ z{zc4B4^DBA#XZE&R~Wbdg?RZd&OY$ofXrJxv`a%&c*yz=?FdlSexC^-LJ%&nMX;?( z7Wnr)gE)1FPp2Hv;KYD^1~LXDFd*_KfE5js1Ucza=wML49whk#feI)@S@``B$NzM$ z_zzE0&R1b8XFz z)A9nFG}M=-ocRz}59S0^d8OtFIxr}5AZNezhz)Wsm%~OYqBz8#1**$wUO6ll(xo{? z+m+iXnd?l<0cr=OQpjC{8Y^5#xaZIr4QvJf9#v!l_Li(wjwaFjv+q2(mD1Y+g1MW8k_grRAG4V z+oIpvRc^Zif8O#YM-Zd_a01F+{Ezzq)#^W3SR?>>81Tb?ZgfG6cCgQ-ELo+<(dh;k zm9J9K$)WxhGd;GsQx2WnNhXJaFo}?goq5Ge8wxFl= zAaVciT3gQkFRd*~AJG37dRvIe&YA+osaB8jEG{6js@Z{&1>u$R3Iit*saDUsn~>=V zRew-PNP$4r=?VxyHLdn5uRg1QY{_{x6ad*YtkMthF59+0{s#x>_+9h2fWML)n7TewyF7