From f214d347477606233450d6f0a81e4dde78037423 Mon Sep 17 00:00:00 2001 From: Niels Lange Date: Mon, 13 Jun 2022 14:37:05 +0200 Subject: [PATCH 1/2] Create Cross-Sells and Cross-Sells Products inner blocks --- .markdownlint.json | 4 +- assets/js/base/context/tsconfig.json | 2 +- .../cart-cross-sells-block/block.json | 17 + .../cart-cross-sells-block/edit.tsx | 45 + .../cart-cross-sells-block/frontend.tsx | 6 + .../cart-cross-sells-block/index.tsx | 24 + .../cart-cross-sells-products/block.json | 17 + .../cart-cross-sells-products/block.tsx | 10 + .../cart-cross-sells-products/edit.tsx | 28 + .../cart-cross-sells-products/frontend.tsx | 6 + .../cart-cross-sells-products/index.tsx | 24 + .../inner-blocks/cart-items-block/edit.tsx | 1 + assets/js/blocks/cart/inner-blocks/index.tsx | 2 + assets/js/blocks/cart/style.scss | 2 +- .../js/blocks/handpicked-products/block.json | 162 +- assets/js/blocks/product-tag/block.json | 169 +- .../blocks/products-by-attribute/block.json | 179 +- bin/hook-docs/data/actions.json | 1492 +++++++------ bin/hook-docs/data/filters.json | 1863 ++++++++--------- packages/checkout/blocks-registry/types.ts | 1 + src/StoreApi/README.md | 2 +- .../best-selling-products.fixture.json | 5 +- .../featured-category.fixture.json | 5 +- .../hand-picked-products.fixture.json | 5 +- .../__fixtures__/newest-products.fixture.json | 5 +- .../product-categories-list.fixture.json | 5 +- .../top-rated-products.fixture.json | 5 +- 27 files changed, 2026 insertions(+), 2060 deletions(-) create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/block.json create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/edit.tsx create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/frontend.tsx create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/index.tsx create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.json create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.tsx create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/edit.tsx create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/frontend.tsx create mode 100644 assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/index.tsx diff --git a/.markdownlint.json b/.markdownlint.json index 5efe30c7d25..46f253c2e8f 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,5 +1,3 @@ - - { "default": true, "MD003": { "style": "atx" }, @@ -9,7 +7,7 @@ "MD025": false, "MD029": false, "MD033": false, - "MD046": {"style": "fenced"}, + "MD046": { "style": "fenced" }, "no-hard-tabs": false, "whitespace": false } diff --git a/assets/js/base/context/tsconfig.json b/assets/js/base/context/tsconfig.json index f486316e06e..8de56c5a7d5 100644 --- a/assets/js/base/context/tsconfig.json +++ b/assets/js/base/context/tsconfig.json @@ -8,7 +8,7 @@ "../../settings/blocks/index.ts", "../../base/hooks/index.js", "../../base/utils/", - "../../utils", + "../../utils", "../../data/", "../../types/", "../components", diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/block.json b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/block.json new file mode 100644 index 00000000000..5af4f5b4166 --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/block.json @@ -0,0 +1,17 @@ +{ + "name": "woocommerce/cart-cross-sells-block", + "version": "1.0.0", + "title": "Cart Cross-Sells block", + "description": "Shows the Cross-Sells block.", + "category": "woocommerce", + "supports": { + "align": false, + "html": false, + "multiple": false, + "reusable": false, + "inserter": false + }, + "parent": [ "woocommerce/cart-items-block" ], + "textdomain": "woo-gutenberg-products-block", + "apiVersion": 2 +} diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/edit.tsx b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/edit.tsx new file mode 100644 index 00000000000..a2ea2931276 --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/edit.tsx @@ -0,0 +1,45 @@ +/** + * External dependencies + */ +import { useBlockProps, InnerBlocks } from '@wordpress/block-editor'; +import type { TemplateArray } from '@wordpress/blocks'; +import { __ } from '@wordpress/i18n'; + +/** + * Internal dependencies + */ +export const Edit = (): JSX.Element => { + const blockProps = useBlockProps( { + className: 'wc-block-cart__cross-sells', + } ); + + const defaultTemplate = [ + [ + 'core/heading', + { + content: __( + 'You may be interested in…', + 'woo-gutenberg-products-block' + ), + level: 3, + }, + , + [], + ], + [ 'woocommerce/cart-cross-sells-products-block', {}, [] ], + ] as TemplateArray; + + return ( +
+ +
+ ); +}; + +export const Save = (): JSX.Element => { + return ( +
+ +
+ ); +}; diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/frontend.tsx b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/frontend.tsx new file mode 100644 index 00000000000..4fc9ad2897a --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/frontend.tsx @@ -0,0 +1,6 @@ +/** + * Internal dependencies + */ +import Block from './block'; + +export default Block; diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/index.tsx b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/index.tsx new file mode 100644 index 00000000000..3d70d65b8a7 --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/index.tsx @@ -0,0 +1,24 @@ +/** + * External dependencies + */ +import { Icon, column } from '@wordpress/icons'; +import { registerFeaturePluginBlockType } from '@woocommerce/block-settings'; + +/** + * Internal dependencies + */ +import { Edit, Save } from './edit'; +import metadata from './block.json'; + +registerFeaturePluginBlockType( metadata, { + icon: { + src: ( + + ), + }, + edit: Edit, + save: Save, +} ); diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.json b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.json new file mode 100644 index 00000000000..673dbb1e4f5 --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.json @@ -0,0 +1,17 @@ +{ + "name": "woocommerce/cart-cross-sells-products-block", + "version": "1.0.0", + "title": "Cart Cross-Sells products", + "description": "Shows the Cross-Sells products.", + "category": "woocommerce", + "supports": { + "align": false, + "html": false, + "multiple": false, + "reusable": false, + "inserter": false + }, + "parent": [ "woocommerce/cart-cross-sells-block" ], + "textdomain": "woo-gutenberg-products-block", + "apiVersion": 2 +} diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.tsx b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.tsx new file mode 100644 index 00000000000..d5662f4c9bf --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.tsx @@ -0,0 +1,10 @@ +const Block = (): JSX.Element => { + const divStyle = { + border: '1px solid', + padding: '5px 10px', + textAlign: 'center', + }; + return
CROSS SELLS PRODUCTS
; +}; + +export default Block; diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/edit.tsx b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/edit.tsx new file mode 100644 index 00000000000..925975a1ed3 --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/edit.tsx @@ -0,0 +1,28 @@ +/** + * External dependencies + */ +import { useBlockProps } from '@wordpress/block-editor'; + +/** + * Internal dependencies + */ +import Block from './block'; + +export const Edit = ( { + attributes, +}: { + attributes: { className: string }; +} ): JSX.Element => { + const { className } = attributes; + const blockProps = useBlockProps(); + + return ( +
+ +
+ ); +}; + +export const Save = (): JSX.Element => { + return
; +}; diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/frontend.tsx b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/frontend.tsx new file mode 100644 index 00000000000..4fc9ad2897a --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/frontend.tsx @@ -0,0 +1,6 @@ +/** + * Internal dependencies + */ +import Block from './block'; + +export default Block; diff --git a/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/index.tsx b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/index.tsx new file mode 100644 index 00000000000..3d70d65b8a7 --- /dev/null +++ b/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/index.tsx @@ -0,0 +1,24 @@ +/** + * External dependencies + */ +import { Icon, column } from '@wordpress/icons'; +import { registerFeaturePluginBlockType } from '@woocommerce/block-settings'; + +/** + * Internal dependencies + */ +import { Edit, Save } from './edit'; +import metadata from './block.json'; + +registerFeaturePluginBlockType( metadata, { + icon: { + src: ( + + ), + }, + edit: Edit, + save: Save, +} ); diff --git a/assets/js/blocks/cart/inner-blocks/cart-items-block/edit.tsx b/assets/js/blocks/cart/inner-blocks/cart-items-block/edit.tsx index 2ac1a66db44..b761a8d4240 100644 --- a/assets/js/blocks/cart/inner-blocks/cart-items-block/edit.tsx +++ b/assets/js/blocks/cart/inner-blocks/cart-items-block/edit.tsx @@ -18,6 +18,7 @@ export const Edit = ( { clientId }: { clientId: string } ): JSX.Element => { const allowedBlocks = getAllowedBlocks( innerBlockAreas.CART_ITEMS ); const defaultTemplate = [ [ 'woocommerce/cart-line-items-block', {}, [] ], + [ 'woocommerce/cart-cross-sells-block', {}, [] ], ] as TemplateArray; useForcedLayout( { diff --git a/assets/js/blocks/cart/inner-blocks/index.tsx b/assets/js/blocks/cart/inner-blocks/index.tsx index 003f6f54634..99df256e16c 100644 --- a/assets/js/blocks/cart/inner-blocks/index.tsx +++ b/assets/js/blocks/cart/inner-blocks/index.tsx @@ -4,6 +4,8 @@ import './filled-cart-block'; import './cart-items-block'; import './cart-line-items-block'; +import './cart-cross-sells-block'; +import './cart-cross-sells-products'; import './cart-totals-block'; import './cart-express-payment-block'; import './proceed-to-checkout-block'; diff --git a/assets/js/blocks/cart/style.scss b/assets/js/blocks/cart/style.scss index d3539cf4097..c495532e6cc 100644 --- a/assets/js/blocks/cart/style.scss +++ b/assets/js/blocks/cart/style.scss @@ -21,7 +21,7 @@ table.wc-block-cart-items td { background: none !important; // Remove borders on default themes. border: 0; - margin: 0; + margin: 0 0 2em; } .editor-styles-wrapper table.wc-block-cart-items, diff --git a/assets/js/blocks/handpicked-products/block.json b/assets/js/blocks/handpicked-products/block.json index 7e0629c907f..b6819377598 100644 --- a/assets/js/blocks/handpicked-products/block.json +++ b/assets/js/blocks/handpicked-products/block.json @@ -1,86 +1,80 @@ { - "name": "woocommerce/handpicked-products", - "title": "Hand-picked Products", - "category": "woocommerce", - "keywords": [ - "Handpicked Products", - "WooCommerce" - ], - "description": "Display a selection of hand-picked products in a grid.", - "supports": { - "align": [ - "wide", - "full" - ], - "html": false - }, - "attributes": { - "align": { - "type": "string" - }, - "columns": { - "type": "number", - "default": 3 - }, - "contentVisibility": { - "type": "object", - "default": { - "image": true, - "title": true, - "price": true, - "rating": true, - "button": true - }, - "properties": { - "image": { - "type": "boolean", - "image": true - }, - "title": { - "type": "boolean", - "title": true - }, - "price": { - "type": "boolean", - "price": true - }, - "rating": { - "type": "boolean", - "rating": true - }, - "button": { - "type": "boolean", - "button": true - } - } - }, - "orderby": { - "type": "string", - "enum": [ - "date", - "popularity", - "price_asc", - "price_desc", - "rating", - "title", - "menu_order" - ], - "default": "date" - }, - "products": { - "type": "array", - "default": [] - }, - "alignButtons": { - "type": "boolean", - "default": false - }, - "isPreview": { - "type": "boolean", - "default": false - } - }, - "textdomain": "woo-gutenberg-products-block", - "apiVersion": 2, - "$schema": "https://schemas.wp.org/trunk/block.json" + "name": "woocommerce/handpicked-products", + "title": "Hand-picked Products", + "category": "woocommerce", + "keywords": [ "Handpicked Products", "WooCommerce" ], + "description": "Display a selection of hand-picked products in a grid.", + "supports": { + "align": [ "wide", "full" ], + "html": false + }, + "attributes": { + "align": { + "type": "string" + }, + "columns": { + "type": "number", + "default": 3 + }, + "contentVisibility": { + "type": "object", + "default": { + "image": true, + "title": true, + "price": true, + "rating": true, + "button": true + }, + "properties": { + "image": { + "type": "boolean", + "image": true + }, + "title": { + "type": "boolean", + "title": true + }, + "price": { + "type": "boolean", + "price": true + }, + "rating": { + "type": "boolean", + "rating": true + }, + "button": { + "type": "boolean", + "button": true + } + } + }, + "orderby": { + "type": "string", + "enum": [ + "date", + "popularity", + "price_asc", + "price_desc", + "rating", + "title", + "menu_order" + ], + "default": "date" + }, + "products": { + "type": "array", + "default": [] + }, + "alignButtons": { + "type": "boolean", + "default": false + }, + "isPreview": { + "type": "boolean", + "default": false + } + }, + "textdomain": "woo-gutenberg-products-block", + "apiVersion": 2, + "$schema": "https://schemas.wp.org/trunk/block.json" } diff --git a/assets/js/blocks/product-tag/block.json b/assets/js/blocks/product-tag/block.json index bcfd346e9fa..04edc01d402 100644 --- a/assets/js/blocks/product-tag/block.json +++ b/assets/js/blocks/product-tag/block.json @@ -1,89 +1,84 @@ { - "name": "woocommerce/product-tag", - "title": "Products by Tag", - "category": "woocommerce", - "keywords": [ - "WooCommerce" - ], - "description": "Display a grid of products with selected tags.", - "supports": { - "align": [ - "wide", - "full" - ], - "html": false - }, - "attributes": { - "columns": { - "type": "number", - "default": 3 - }, - "rows": { - "type": "number", - "default": 3 - }, - "alignButtons": { - "type": "boolean", - "default": false - }, - "contentVisibility": { - "type": "object", - "default": { - "image": true, - "title": true, - "price": true, - "rating": true, - "button": true - }, - "properties": { - "image": { - "type": "boolean", - "default": true - }, - "title": { - "type": "boolean", - "default": true - }, - "price": { - "type": "boolean", - "default": true - }, - "rating": { - "type": "boolean", - "default": true - }, - "button": { - "type": "boolean", - "default": true - } - } - }, - "tags": { - "type": "array", - "default": [] - }, - "tagOperator": { - "type": "string", - "default": "any" - }, - "orderby": { - "type": "string", - "default": "date" - }, - "isPreview": { - "type": "boolean", - "default": false - }, - "stockStatus": { - "type": "array" - } - }, - "example": { - "attributes": { - "isPreview": true - } - }, - "textdomain": "woo-gutenberg-products-block", - "apiVersion": 2, - "$schema": "https://schemas.wp.org/trunk/block.json" + "name": "woocommerce/product-tag", + "title": "Products by Tag", + "category": "woocommerce", + "keywords": [ "WooCommerce" ], + "description": "Display a grid of products with selected tags.", + "supports": { + "align": [ "wide", "full" ], + "html": false + }, + "attributes": { + "columns": { + "type": "number", + "default": 3 + }, + "rows": { + "type": "number", + "default": 3 + }, + "alignButtons": { + "type": "boolean", + "default": false + }, + "contentVisibility": { + "type": "object", + "default": { + "image": true, + "title": true, + "price": true, + "rating": true, + "button": true + }, + "properties": { + "image": { + "type": "boolean", + "default": true + }, + "title": { + "type": "boolean", + "default": true + }, + "price": { + "type": "boolean", + "default": true + }, + "rating": { + "type": "boolean", + "default": true + }, + "button": { + "type": "boolean", + "default": true + } + } + }, + "tags": { + "type": "array", + "default": [] + }, + "tagOperator": { + "type": "string", + "default": "any" + }, + "orderby": { + "type": "string", + "default": "date" + }, + "isPreview": { + "type": "boolean", + "default": false + }, + "stockStatus": { + "type": "array" + } + }, + "example": { + "attributes": { + "isPreview": true + } + }, + "textdomain": "woo-gutenberg-products-block", + "apiVersion": 2, + "$schema": "https://schemas.wp.org/trunk/block.json" } diff --git a/assets/js/blocks/products-by-attribute/block.json b/assets/js/blocks/products-by-attribute/block.json index 09ab00fddc6..968e28868f0 100644 --- a/assets/js/blocks/products-by-attribute/block.json +++ b/assets/js/blocks/products-by-attribute/block.json @@ -1,94 +1,89 @@ { - "name": "woocommerce/products-by-attribute", - "title": "Products by Attribute", - "category": "woocommerce", - "keywords": [ - "WooCommerce" - ], - "description": "Display a grid of products with selected attributes.", - "supports": { - "align": [ - "wide", - "full" - ], - "html": false - }, - "attributes": { - "attributes": { - "type": "array", - "default": [] - }, - "attrOperator": { - "type": "string", - "enum": [ "all", "any" ], - "default": "any" - }, - "columns": { - "type": "number", - "default": 3 - }, - "contentVisibility": { - "type": "object", - "default": { - "image": true, - "title": true, - "price": true, - "rating": true, - "button": true - }, - "properties": { - "image": { - "type": "boolean", - "default": true - }, - "title": { - "type": "boolean", - "default": true - }, - "price": { - "type": "boolean", - "default": true - }, - "rating": { - "type": "boolean", - "default": true - }, - "button": { - "type": "boolean", - "default": true - } - } - }, - "orderby": { - "type": "string", - "enum": [ - "date", - "popularity", - "price_asc", - "price_desc", - "rating", - "title", - "menu_order" - ], - "default": "date" - }, - "rows": { - "type": "number", - "default": 3 - }, - "alignButtons": { - "type": "boolean", - "default": false - }, - "isPreview": { - "type": "boolean", - "default": false - }, - "stockStatus": { - "type": "array" - } - }, - "textdomain": "woo-gutenberg-products-block", - "apiVersion": 2, - "$schema": "https://schemas.wp.org/trunk/block.json" + "name": "woocommerce/products-by-attribute", + "title": "Products by Attribute", + "category": "woocommerce", + "keywords": [ "WooCommerce" ], + "description": "Display a grid of products with selected attributes.", + "supports": { + "align": [ "wide", "full" ], + "html": false + }, + "attributes": { + "attributes": { + "type": "array", + "default": [] + }, + "attrOperator": { + "type": "string", + "enum": [ "all", "any" ], + "default": "any" + }, + "columns": { + "type": "number", + "default": 3 + }, + "contentVisibility": { + "type": "object", + "default": { + "image": true, + "title": true, + "price": true, + "rating": true, + "button": true + }, + "properties": { + "image": { + "type": "boolean", + "default": true + }, + "title": { + "type": "boolean", + "default": true + }, + "price": { + "type": "boolean", + "default": true + }, + "rating": { + "type": "boolean", + "default": true + }, + "button": { + "type": "boolean", + "default": true + } + } + }, + "orderby": { + "type": "string", + "enum": [ + "date", + "popularity", + "price_asc", + "price_desc", + "rating", + "title", + "menu_order" + ], + "default": "date" + }, + "rows": { + "type": "number", + "default": 3 + }, + "alignButtons": { + "type": "boolean", + "default": false + }, + "isPreview": { + "type": "boolean", + "default": false + }, + "stockStatus": { + "type": "array" + } + }, + "textdomain": "woo-gutenberg-products-block", + "apiVersion": 2, + "$schema": "https://schemas.wp.org/trunk/block.json" } diff --git a/bin/hook-docs/data/actions.json b/bin/hook-docs/data/actions.json index 3d8481c2f82..8dd7578c4a6 100644 --- a/bin/hook-docs/data/actions.json +++ b/bin/hook-docs/data/actions.json @@ -1,776 +1,718 @@ { - "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.3/schema.json", - "hooks": [ - { - "name": "woocommerce_add_to_cart", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires when an item is added to the cart.", - "long_description": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.", - "tags": [ - { - "name": "internal", - "content": "Matches action name in WooCommerce core." - }, - { - "name": "param", - "content": "ID of the item in the cart.", - "types": [ - "string" - ], - "variable": "$cart_id" - }, - { - "name": "param", - "content": "ID of the product added to the cart.", - "types": [ - "integer" - ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Quantity of the item added to the cart.", - "types": [ - "integer" - ], - "variable": "$request_quantity" - }, - { - "name": "param", - "content": "Variation ID of the product added to the cart.", - "types": [ - "integer" - ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Array of variation data.", - "types": [ - "array" - ], - "variable": "$variation" - }, - { - "name": "param", - "content": "Array of other cart item data.", - "types": [ - "array" - ], - "variable": "$cart_item_data" - } - ], - "long_description_html": "

This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.

" - }, - "args": 6 - }, - { - "name": "woocommerce_after_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_after_main_content", - "long_description": "Called after rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs closing DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper_end()" - } - ], - "long_description_html": "

Called after rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_after_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_after_main_content", - "long_description": "Called after rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs closing DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper_end()" - } - ], - "long_description_html": "

Called after rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_after_shop_loop", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_after_shop_loop.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Renders pagination (priority 10)", - "refers": "woocommerce_pagination()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_applied_coupon", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires after a coupon has been applied to the cart.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches action name in WooCommerce core." - }, - { - "name": "param", - "content": "The coupon code that was applied.", - "types": [ - "string" - ], - "variable": "$coupon_code" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_archive_description", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_archive_description.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Renders the taxonomy archive description (priority 10)", - "refers": "woocommerce_taxonomy_archive_description()" - }, - { - "name": "see", - "content": "Renders the product archive description (priority 10)", - "refers": "woocommerce_product_archive_description()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_before_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_before_main_content", - "long_description": "Called before rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs opening DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper()" - }, - { - "name": "see", - "content": "Outputs breadcrumb trail to the current product (priority 20)", - "refers": "woocommerce_breadcrumb()" - }, - { - "name": "see", - "content": "Outputs schema markup (priority 30)", - "refers": "WC_Structured_Data::generate_website_data()" - } - ], - "long_description_html": "

Called before rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_before_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_before_main_content", - "long_description": "Called before rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs opening DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper()" - }, - { - "name": "see", - "content": "Outputs breadcrumb trail to the current product (priority 20)", - "refers": "woocommerce_breadcrumb()" - }, - { - "name": "see", - "content": "Outputs schema markup (priority 30)", - "refers": "WC_Structured_Data::generate_website_data()" - } - ], - "long_description_html": "

Called before rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_before_shop_loop", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_before_shop_loop.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Render error notices (priority 10)", - "refers": "woocommerce_output_all_notices()" - }, - { - "name": "see", - "content": "Show number of results found (priority 20)", - "refers": "woocommerce_result_count()" - }, - { - "name": "see", - "content": "Show form to control sort order (priority 30)", - "refers": "woocommerce_catalog_ordering()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_cart_enqueue_data", - "file": "BlockTypes/MiniCart.php", - "type": "action", - "doc": { - "description": "Fires after cart block data is registered.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_cart_enqueue_data", - "file": "BlockTypes/Cart.php", - "type": "action", - "doc": { - "description": "Fires after cart block data is registered.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_checkout_enqueue_data", - "file": "BlockTypes/Checkout.php", - "type": "action", - "doc": { - "description": "Fires after checkout block data is registered.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_cart_block_scripts_after", - "file": "BlockTypes/Cart.php", - "type": "action", - "doc": { - "description": "Fires after cart block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_cart_block_scripts_before", - "file": "BlockTypes/Cart.php", - "type": "action", - "doc": { - "description": "Fires before cart block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_checkout_block_scripts_after", - "file": "BlockTypes/Checkout.php", - "type": "action", - "doc": { - "description": "Fires after checkout block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_checkout_block_scripts_before", - "file": "BlockTypes/Checkout.php", - "type": "action", - "doc": { - "description": "Fires before checkout block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_{$this->registry_identifier}_registration", - "file": "Integrations/IntegrationRegistry.php", - "type": "action", - "doc": { - "description": "Fires when the IntegrationRegistry is initialized.", - "long_description": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.", - "tags": [ - { - "name": "param", - "content": "Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method.", - "types": [ - "\\Automattic\\WooCommerce\\Blocks\\Integrations\\IntegrationRegistry" - ], - "variable": "$this" - } - ], - "long_description_html": "

Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.

" - }, - "args": 1 - }, - { - "name": "woocommerce_check_cart_items", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires when cart items are being validated.", - "long_description": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.", - "tags": [ - { - "name": "deprecated", - "content": "" - }, - { - "name": "internal", - "content": "Matches action name in WooCommerce core." - } - ], - "long_description_html": "

Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.

" - }, - "args": 0 - }, - { - "name": "woocommerce_created_customer", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires after a customer account has been registered.", - "long_description": "This hook fires after customer accounts are created and passes the customer data.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "New customer (user) ID.", - "types": [ - "integer" - ], - "variable": "$customer_id" - }, - { - "name": "param", - "content": "Array of customer (user) data.", - "types": [ - "array" - ], - "variable": "$new_customer_data" - }, - { - "name": "param", - "content": "The generated password for the account.", - "types": [ - "string" - ], - "variable": "$password_generated" - } - ], - "long_description_html": "

This hook fires after customer accounts are created and passes the customer data.

" - }, - "args": 3 - }, - { - "name": "woocommerce_no_products_found", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_no_products_found.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Default no products found content (priority 10)", - "refers": "wc_no_products_found()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_register_post", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires before a customer account is registered.", - "long_description": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.\n This could be used to add extra validation logic and append errors to the array.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Customer username.", - "types": [ - "string" - ], - "variable": "$username" - }, - { - "name": "param", - "content": "Customer email address.", - "types": [ - "string" - ], - "variable": "$user_email" - }, - { - "name": "param", - "content": "Error object.", - "types": [ - "\\WP_Error" - ], - "variable": "$errors" - } - ], - "long_description_html": "

This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.

This could be used to add extra validation logic and append errors to the array.

" - }, - "args": 3 - }, - { - "name": "woocommerce_rest_checkout_process_payment_with_context", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action_reference", - "doc": { - "description": "Process payment with context.", - "long_description": "", - "tags": [ - { - "name": "hook", - "content": "woocommerce_rest_checkout_process_payment_with_context" - }, - { - "name": "throws", - "content": "If there is an error taking payment, an \\Exception object can be thrown with an error message.", - "types": [ - "\\Exception" - ] - }, - { - "name": "param", - "content": "Holds context for the payment, including order ID and payment method.", - "types": [ - "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentContext" - ], - "variable": "$context" - }, - { - "name": "param", - "content": "Result object for the transaction.", - "types": [ - "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentResult" - ], - "variable": "$payment_result" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_shop_loop", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_shop_loop.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_store_api_cart_errors", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires an action to validate the cart.", - "long_description": "Functions hooking into this should add custom errors using the provided WP_Error instance.", - "tags": [ - { - "name": "example", - "content": "docs/examples/validate-cart.md" - }, - { - "name": "param", - "content": "WP_Error object.", - "types": [ - "\\WP_Error" - ], - "variable": "$errors" - }, - { - "name": "param", - "content": "Cart object.", - "types": [ - "\\WC_Cart" - ], - "variable": "$cart" - } - ], - "long_description_html": "

Functions hooking into this should add custom errors using the provided WP_Error instance.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_cart_update_customer_from_request", - "file": "StoreApi/Routes/V1/CartUpdateCustomer.php", - "type": "action", - "doc": { - "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Customer object.", - "types": [ - "\\WC_Customer" - ], - "variable": "$customer" - }, - { - "name": "param", - "content": "Full details about the request.", - "types": [ - "\\WP_REST_Request" - ], - "variable": "$request" - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_cart_update_order_from_request", - "file": "StoreApi/Routes/V1/AbstractCartRoute.php", - "type": "action", - "doc": { - "description": "Fires when the order is synced with cart data from a cart route.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Order object.", - "types": [ - "\\WC_Order" - ], - "variable": "$draft_order" - }, - { - "name": "param", - "content": "Customer object.", - "types": [ - "\\WC_Customer" - ], - "variable": "$customer" - }, - { - "name": "param", - "content": "Full details about the request.", - "types": [ - "\\WP_REST_Request" - ], - "variable": "$request" - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_checkout_order_processed", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires before an order is processed by the Checkout Block/Store API.", - "long_description": "This hook informs extensions that $order has completed processing and is ready for payment.\n This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", - "tags": [ - { - "name": "see", - "content": "", - "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238" - }, - { - "name": "example", - "content": "docs/examples/checkout-order-processed.md" - }, - { - "name": "param", - "content": "Order object.", - "types": [ - "\\WC_Order" - ], - "variable": "$order" - } - ], - "long_description_html": "

This hook informs extensions that $order has completed processing and is ready for payment.

This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_checkout_update_order_from_request", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires when the Checkout Block/Store API updates an order's from the API request data.", - "long_description": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.", - "tags": [ - { - "name": "param", - "content": "Order object.", - "types": [ - "\\WC_Order" - ], - "variable": "$order" - }, - { - "name": "param", - "content": "Full details about the request.", - "types": [ - "\\WP_REST_Request" - ], - "variable": "$request" - } - ], - "long_description_html": "

This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_checkout_update_order_meta", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires when the Checkout Block/Store API updates an order's meta data.", - "long_description": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.\n This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", - "tags": [ - { - "name": "see", - "content": "", - "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686" - }, - { - "name": "param", - "content": "Order object.", - "types": [ - "\\WC_Order" - ], - "variable": "$order" - } - ], - "long_description_html": "

This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.

This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_validate_add_to_cart", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires during validation when adding an item to the cart via the Store API.", - "long_description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.", - "tags": [ - { - "name": "param", - "content": "Product object being added to the cart.", - "types": [ - "\\WC_Product" - ], - "variable": "$product" - }, - { - "name": "param", - "content": "Add to cart request params including id, quantity, and variation attributes.", - "types": [ - "array" - ], - "variable": "$request" - } - ], - "long_description_html": "

Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_validate_cart_item", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from occurring.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Product object being added to the cart.", - "types": [ - "\\WC_Product" - ], - "variable": "$product" - }, - { - "name": "param", - "content": "Cart item array.", - "types": [ - "array" - ], - "variable": "$cart_item" - } - ], - "long_description_html": "" - }, - "args": 2 - } - ] -} \ No newline at end of file + "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.3/schema.json", + "hooks": [ + { + "name": "woocommerce_add_to_cart", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires when an item is added to the cart.", + "long_description": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.", + "tags": [ + { + "name": "internal", + "content": "Matches action name in WooCommerce core." + }, + { + "name": "param", + "content": "ID of the item in the cart.", + "types": [ "string" ], + "variable": "$cart_id" + }, + { + "name": "param", + "content": "ID of the product added to the cart.", + "types": [ "integer" ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Quantity of the item added to the cart.", + "types": [ "integer" ], + "variable": "$request_quantity" + }, + { + "name": "param", + "content": "Variation ID of the product added to the cart.", + "types": [ "integer" ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Array of variation data.", + "types": [ "array" ], + "variable": "$variation" + }, + { + "name": "param", + "content": "Array of other cart item data.", + "types": [ "array" ], + "variable": "$cart_item_data" + } + ], + "long_description_html": "

This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.

" + }, + "args": 6 + }, + { + "name": "woocommerce_after_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_after_main_content", + "long_description": "Called after rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs closing DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper_end()" + } + ], + "long_description_html": "

Called after rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_after_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_after_main_content", + "long_description": "Called after rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs closing DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper_end()" + } + ], + "long_description_html": "

Called after rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_after_shop_loop", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_after_shop_loop.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Renders pagination (priority 10)", + "refers": "woocommerce_pagination()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_applied_coupon", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires after a coupon has been applied to the cart.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches action name in WooCommerce core." + }, + { + "name": "param", + "content": "The coupon code that was applied.", + "types": [ "string" ], + "variable": "$coupon_code" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_archive_description", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_archive_description.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Renders the taxonomy archive description (priority 10)", + "refers": "woocommerce_taxonomy_archive_description()" + }, + { + "name": "see", + "content": "Renders the product archive description (priority 10)", + "refers": "woocommerce_product_archive_description()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_before_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_before_main_content", + "long_description": "Called before rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs opening DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper()" + }, + { + "name": "see", + "content": "Outputs breadcrumb trail to the current product (priority 20)", + "refers": "woocommerce_breadcrumb()" + }, + { + "name": "see", + "content": "Outputs schema markup (priority 30)", + "refers": "WC_Structured_Data::generate_website_data()" + } + ], + "long_description_html": "

Called before rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_before_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_before_main_content", + "long_description": "Called before rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs opening DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper()" + }, + { + "name": "see", + "content": "Outputs breadcrumb trail to the current product (priority 20)", + "refers": "woocommerce_breadcrumb()" + }, + { + "name": "see", + "content": "Outputs schema markup (priority 30)", + "refers": "WC_Structured_Data::generate_website_data()" + } + ], + "long_description_html": "

Called before rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_before_shop_loop", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_before_shop_loop.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Render error notices (priority 10)", + "refers": "woocommerce_output_all_notices()" + }, + { + "name": "see", + "content": "Show number of results found (priority 20)", + "refers": "woocommerce_result_count()" + }, + { + "name": "see", + "content": "Show form to control sort order (priority 30)", + "refers": "woocommerce_catalog_ordering()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_cart_enqueue_data", + "file": "BlockTypes/MiniCart.php", + "type": "action", + "doc": { + "description": "Fires after cart block data is registered.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_cart_enqueue_data", + "file": "BlockTypes/Cart.php", + "type": "action", + "doc": { + "description": "Fires after cart block data is registered.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_checkout_enqueue_data", + "file": "BlockTypes/Checkout.php", + "type": "action", + "doc": { + "description": "Fires after checkout block data is registered.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_cart_block_scripts_after", + "file": "BlockTypes/Cart.php", + "type": "action", + "doc": { + "description": "Fires after cart block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_cart_block_scripts_before", + "file": "BlockTypes/Cart.php", + "type": "action", + "doc": { + "description": "Fires before cart block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_checkout_block_scripts_after", + "file": "BlockTypes/Checkout.php", + "type": "action", + "doc": { + "description": "Fires after checkout block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_checkout_block_scripts_before", + "file": "BlockTypes/Checkout.php", + "type": "action", + "doc": { + "description": "Fires before checkout block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_{$this->registry_identifier}_registration", + "file": "Integrations/IntegrationRegistry.php", + "type": "action", + "doc": { + "description": "Fires when the IntegrationRegistry is initialized.", + "long_description": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.", + "tags": [ + { + "name": "param", + "content": "Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method.", + "types": [ + "\\Automattic\\WooCommerce\\Blocks\\Integrations\\IntegrationRegistry" + ], + "variable": "$this" + } + ], + "long_description_html": "

Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.

" + }, + "args": 1 + }, + { + "name": "woocommerce_check_cart_items", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires when cart items are being validated.", + "long_description": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.", + "tags": [ + { + "name": "deprecated", + "content": "" + }, + { + "name": "internal", + "content": "Matches action name in WooCommerce core." + } + ], + "long_description_html": "

Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.

" + }, + "args": 0 + }, + { + "name": "woocommerce_created_customer", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires after a customer account has been registered.", + "long_description": "This hook fires after customer accounts are created and passes the customer data.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "New customer (user) ID.", + "types": [ "integer" ], + "variable": "$customer_id" + }, + { + "name": "param", + "content": "Array of customer (user) data.", + "types": [ "array" ], + "variable": "$new_customer_data" + }, + { + "name": "param", + "content": "The generated password for the account.", + "types": [ "string" ], + "variable": "$password_generated" + } + ], + "long_description_html": "

This hook fires after customer accounts are created and passes the customer data.

" + }, + "args": 3 + }, + { + "name": "woocommerce_no_products_found", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_no_products_found.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Default no products found content (priority 10)", + "refers": "wc_no_products_found()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_register_post", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires before a customer account is registered.", + "long_description": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.\n This could be used to add extra validation logic and append errors to the array.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Customer username.", + "types": [ "string" ], + "variable": "$username" + }, + { + "name": "param", + "content": "Customer email address.", + "types": [ "string" ], + "variable": "$user_email" + }, + { + "name": "param", + "content": "Error object.", + "types": [ "\\WP_Error" ], + "variable": "$errors" + } + ], + "long_description_html": "

This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.

This could be used to add extra validation logic and append errors to the array.

" + }, + "args": 3 + }, + { + "name": "woocommerce_rest_checkout_process_payment_with_context", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action_reference", + "doc": { + "description": "Process payment with context.", + "long_description": "", + "tags": [ + { + "name": "hook", + "content": "woocommerce_rest_checkout_process_payment_with_context" + }, + { + "name": "throws", + "content": "If there is an error taking payment, an \\Exception object can be thrown with an error message.", + "types": [ "\\Exception" ] + }, + { + "name": "param", + "content": "Holds context for the payment, including order ID and payment method.", + "types": [ + "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentContext" + ], + "variable": "$context" + }, + { + "name": "param", + "content": "Result object for the transaction.", + "types": [ + "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentResult" + ], + "variable": "$payment_result" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_shop_loop", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_shop_loop.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_store_api_cart_errors", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires an action to validate the cart.", + "long_description": "Functions hooking into this should add custom errors using the provided WP_Error instance.", + "tags": [ + { + "name": "example", + "content": "docs/examples/validate-cart.md" + }, + { + "name": "param", + "content": "WP_Error object.", + "types": [ "\\WP_Error" ], + "variable": "$errors" + }, + { + "name": "param", + "content": "Cart object.", + "types": [ "\\WC_Cart" ], + "variable": "$cart" + } + ], + "long_description_html": "

Functions hooking into this should add custom errors using the provided WP_Error instance.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_cart_update_customer_from_request", + "file": "StoreApi/Routes/V1/CartUpdateCustomer.php", + "type": "action", + "doc": { + "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Customer object.", + "types": [ "\\WC_Customer" ], + "variable": "$customer" + }, + { + "name": "param", + "content": "Full details about the request.", + "types": [ "\\WP_REST_Request" ], + "variable": "$request" + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_cart_update_order_from_request", + "file": "StoreApi/Routes/V1/AbstractCartRoute.php", + "type": "action", + "doc": { + "description": "Fires when the order is synced with cart data from a cart route.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Order object.", + "types": [ "\\WC_Order" ], + "variable": "$draft_order" + }, + { + "name": "param", + "content": "Customer object.", + "types": [ "\\WC_Customer" ], + "variable": "$customer" + }, + { + "name": "param", + "content": "Full details about the request.", + "types": [ "\\WP_REST_Request" ], + "variable": "$request" + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_checkout_order_processed", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires before an order is processed by the Checkout Block/Store API.", + "long_description": "This hook informs extensions that $order has completed processing and is ready for payment.\n This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", + "tags": [ + { + "name": "see", + "content": "", + "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238" + }, + { + "name": "example", + "content": "docs/examples/checkout-order-processed.md" + }, + { + "name": "param", + "content": "Order object.", + "types": [ "\\WC_Order" ], + "variable": "$order" + } + ], + "long_description_html": "

This hook informs extensions that $order has completed processing and is ready for payment.

This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_checkout_update_order_from_request", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires when the Checkout Block/Store API updates an order's from the API request data.", + "long_description": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.", + "tags": [ + { + "name": "param", + "content": "Order object.", + "types": [ "\\WC_Order" ], + "variable": "$order" + }, + { + "name": "param", + "content": "Full details about the request.", + "types": [ "\\WP_REST_Request" ], + "variable": "$request" + } + ], + "long_description_html": "

This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_checkout_update_order_meta", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires when the Checkout Block/Store API updates an order's meta data.", + "long_description": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.\n This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", + "tags": [ + { + "name": "see", + "content": "", + "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686" + }, + { + "name": "param", + "content": "Order object.", + "types": [ "\\WC_Order" ], + "variable": "$order" + } + ], + "long_description_html": "

This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.

This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_validate_add_to_cart", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires during validation when adding an item to the cart via the Store API.", + "long_description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.", + "tags": [ + { + "name": "param", + "content": "Product object being added to the cart.", + "types": [ "\\WC_Product" ], + "variable": "$product" + }, + { + "name": "param", + "content": "Add to cart request params including id, quantity, and variation attributes.", + "types": [ "array" ], + "variable": "$request" + } + ], + "long_description_html": "

Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_validate_cart_item", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from occurring.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Product object being added to the cart.", + "types": [ "\\WC_Product" ], + "variable": "$product" + }, + { + "name": "param", + "content": "Cart item array.", + "types": [ "array" ], + "variable": "$cart_item" + } + ], + "long_description_html": "" + }, + "args": 2 + } + ] +} diff --git a/bin/hook-docs/data/filters.json b/bin/hook-docs/data/filters.json index d1d57008517..e2efdd482aa 100644 --- a/bin/hook-docs/data/filters.json +++ b/bin/hook-docs/data/filters.json @@ -1,1011 +1,854 @@ { - "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.3/schema.json", - "hooks": [ - { - "name": "__experimental_woocommerce_blocks_add_data_attributes_to_block", - "file": "BlockTypesController.php", - "type": "filter", - "doc": { - "description": "Filters the list of allowed Block Names", - "long_description": "This hook defines which block names should have block name and attribute data- attributes appended on render.", - "tags": [ - { - "name": "param", - "content": "List of namespaces.", - "types": [ - "array" - ], - "variable": "$allowed_namespaces" - } - ], - "long_description_html": "

This hook defines which block names should have block name and attribute data- attributes appended on render.

" - }, - "args": 1 - }, - { - "name": "__experimental_woocommerce_blocks_add_data_attributes_to_namespace", - "file": "BlockTypesController.php", - "type": "filter", - "doc": { - "description": "Filters the list of allowed block namespaces.", - "long_description": "This hook defines which block namespaces should have block name and attribute `data-` attributes appended on render.", - "tags": [ - { - "name": "param", - "content": "List of namespaces.", - "types": [ - "array" - ], - "variable": "$allowed_namespaces" - } - ], - "long_description_html": "

This hook defines which block namespaces should have block name and attribute data- attributes appended on render.

" - }, - "args": 1 - }, - { - "name": "__experimental_woocommerce_blocks_payment_gateway_features_list", - "file": "Payments/Integrations/PayPal.php", - "type": "filter", - "doc": { - "description": "Filter to control what features are available for each payment gateway.", - "long_description": "", - "tags": [ - { - "name": "example", - "content": "docs/examples/payment-gateways-features-list.md" - }, - { - "name": "param", - "content": "List of supported features.", - "types": [ - "array" - ], - "variable": "$features" - }, - { - "name": "param", - "content": "Gateway name.", - "types": [ - "string" - ], - "variable": "$name" - }, - { - "name": "return", - "content": "Updated list of supported features.", - "types": [ - "array" - ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_add_cart_item", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters the item being added to the cart.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of cart item data being added to the cart.", - "types": [ - "array" - ], - "variable": "$cart_item_data" - }, - { - "name": "param", - "content": "Id of the item in the cart.", - "types": [ - "string" - ], - "variable": "$cart_id" - }, - { - "name": "return", - "content": "Updated cart item data.", - "types": [ - "array" - ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_add_cart_item_data", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filter cart item data for add to cart requests.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of other cart item data.", - "types": [ - "array" - ], - "variable": "$cart_item_data" - }, - { - "name": "param", - "content": "ID of the product added to the cart.", - "types": [ - "integer" - ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Variation ID of the product added to the cart.", - "types": [ - "integer" - ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Quantity of the item added to the cart.", - "types": [ - "integer" - ], - "variable": "$quantity" - }, - { - "name": "return", - "content": "", - "types": [ - "array" - ] - } - ], - "long_description_html": "" - }, - "args": 4 - }, - { - "name": "woocommerce_add_to_cart_sold_individually_quantity", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filter sold individually quantity for add to cart requests.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Defaults to 1.", - "types": [ - "integer" - ], - "variable": "$sold_individually_quantity" - }, - { - "name": "param", - "content": "Quantity of the item added to the cart.", - "types": [ - "integer" - ], - "variable": "$quantity" - }, - { - "name": "param", - "content": "ID of the product added to the cart.", - "types": [ - "integer" - ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Variation ID of the product added to the cart.", - "types": [ - "integer" - ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Array of other cart item data.", - "types": [ - "array" - ], - "variable": "$cart_item_data" - }, - { - "name": "return", - "content": "", - "types": [ - "integer" - ] - } - ], - "long_description_html": "" - }, - "args": 5 - }, - { - "name": "woocommerce_add_to_cart_validation", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters if an item being added to the cart passed validation checks.", - "long_description": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.", - "tags": [ - { - "name": "deprecated", - "content": "" - }, - { - "name": "param", - "content": "True if the item passed validation.", - "types": [ - "boolean" - ], - "variable": "$passed_validation" - }, - { - "name": "param", - "content": "Product ID being validated.", - "types": [ - "integer" - ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Quantity added to the cart.", - "types": [ - "integer" - ], - "variable": "$quantity" - }, - { - "name": "param", - "content": "Variation ID being added to the cart.", - "types": [ - "integer" - ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Variation data.", - "types": [ - "array" - ], - "variable": "$variation" - }, - { - "name": "return", - "content": "", - "types": [ - "boolean" - ] - } - ], - "long_description_html": "

Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.

" - }, - "args": 5 - }, - { - "name": "woocommerce_adjust_non_base_location_prices", - "file": "StoreApi/Utilities/ProductQuery.php", - "type": "filter", - "doc": { - "description": "Filters if taxes should be removed from locations outside the store base location.", - "long_description": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "True by default.", - "types": [ - "boolean" - ], - "variable": "$adjust_non_base_location_prices" - }, - { - "name": "return", - "content": "", - "types": [ - "boolean" - ] - } - ], - "long_description_html": "

The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.

" - }, - "args": 1 - }, - { - "name": "woocommerce_admin_disabled", - "file": "InboxNotifications.php", - "type": "filter", - "doc": { - "description": "", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_apply_individual_use_coupon", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filter coupons to remove when applying an individual use coupon.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of coupons to remove from the cart.", - "types": [ - "array" - ], - "variable": "$coupons" - }, - { - "name": "param", - "content": "Coupon object applied to the cart.", - "types": [ - "\\WC_Coupon" - ], - "variable": "$coupon" - }, - { - "name": "param", - "content": "Array of applied coupons already applied to the cart.", - "types": [ - "array" - ], - "variable": "$applied_coupons" - }, - { - "name": "return", - "content": "", - "types": [ - "array" - ] - } - ], - "long_description_html": "" - }, - "args": 3 - }, - { - "name": "woocommerce_apply_with_individual_use_coupon", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters if a coupon can be applied alongside other individual use coupons.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Defaults to false.", - "types": [ - "boolean" - ], - "variable": "$apply_with_individual_use_coupon" - }, - { - "name": "param", - "content": "Coupon object applied to the cart.", - "types": [ - "\\WC_Coupon" - ], - "variable": "$coupon" - }, - { - "name": "param", - "content": "Individual use coupon already applied to the cart.", - "types": [ - "\\WC_Coupon" - ], - "variable": "$individual_use_coupon" - }, - { - "name": "param", - "content": "Array of applied coupons already applied to the cart.", - "types": [ - "array" - ], - "variable": "$applied_coupons" - }, - { - "name": "return", - "content": "", - "types": [ - "boolean" - ] - } - ], - "long_description_html": "" - }, - "args": 4 - }, - { - "name": "woocommerce_blocks_product_grid_is_cacheable", - "file": "BlockTypes/AbstractProductGrid.php", - "type": "filter", - "doc": { - "description": "Filters whether or not the product grid is cacheable.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "The list of script dependencies.", - "types": [ - "boolean" - ], - "variable": "$is_cacheable" - }, - { - "name": "param", - "content": "Query args for the products query passed to BlocksWpQuery.", - "types": [ - "array" - ], - "variable": "$query_args" - }, - { - "name": "return", - "content": "True to enable cache, false to disable cache.", - "types": [ - "array" - ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_blocks_product_grid_item_html", - "file": "BlockTypes/AbstractProductGrid.php", - "type": "filter", - "doc": { - "description": "Filters the HTML for products in the grid.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Product grid item HTML.", - "types": [ - "string" - ], - "variable": "$html" - }, - { - "name": "param", - "content": "Product data passed to the template.", - "types": [ - "array" - ], - "variable": "$data" - }, - { - "name": "param", - "content": "Product object.", - "types": [ - "\\WC_Product" - ], - "variable": "$product" - }, - { - "name": "return", - "content": "Updated product grid item HTML.", - "types": [ - "string" - ] - } - ], - "long_description_html": "" - }, - "args": 3 - }, - { - "name": "woocommerce_blocks_register_script_dependencies", - "file": "Assets/Api.php", - "type": "filter", - "doc": { - "description": "Filters the list of script dependencies.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "The list of script dependencies.", - "types": [ - "array" - ], - "variable": "$dependencies" - }, - { - "name": "param", - "content": "The script's handle.", - "types": [ - "string" - ], - "variable": "$handle" - }, - { - "name": "return", - "content": "", - "types": [ - "array" - ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_cart_contents_changed", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters the entire cart contents when the cart changes.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of all cart items.", - "types": [ - "array" - ], - "variable": "$cart_contents" - }, - { - "name": "return", - "content": "Updated array of all cart items.", - "types": [ - "array" - ] - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_ga_disable_tracking", - "file": "Domain/Services/GoogleAnalytics.php", - "type": "filter", - "doc": { - "description": "Filter to disable Google Analytics tracking.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in GA extension." - }, - { - "name": "param", - "content": "If true, tracking will be disabled.", - "types": [ - "boolean" - ], - "variable": "$disable_tracking" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_get_item_data", - "file": "StoreApi/Schemas/V1/CartItemSchema.php", - "type": "filter", - "doc": { - "description": "Filters cart item data.", - "long_description": "Filters the variation option name for custom option slugs.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Cart item data. Empty by default.", - "types": [ - "array" - ], - "variable": "$item_data" - }, - { - "name": "param", - "content": "Cart item array.", - "types": [ - "array" - ], - "variable": "$cart_item" - }, - { - "name": "return", - "content": "", - "types": [ - "array" - ] - } - ], - "long_description_html": "

Filters the variation option name for custom option slugs.

" - }, - "args": 2 - }, - { - "name": "woocommerce_new_customer_data", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "filter", - "doc": { - "description": "Filters customer data before a customer account is registered.", - "long_description": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.", - "tags": [ - { - "name": "param", - "content": "An array of customer (user) data.", - "types": [ - "array" - ], - "variable": "$customer_data" - }, - { - "name": "return", - "content": "", - "types": [ - "array" - ] - } - ], - "long_description_html": "

This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.

" - }, - "args": 1 - }, - { - "name": "woocommerce_registration_errors", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "filter", - "doc": { - "description": "Filters registration errors before a customer account is registered.", - "long_description": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Error object.", - "types": [ - "\\WP_Error" - ], - "variable": "$errors" - }, - { - "name": "param", - "content": "Customer username.", - "types": [ - "string" - ], - "variable": "$username" - }, - { - "name": "param", - "content": "Customer email address.", - "types": [ - "string" - ], - "variable": "$user_email" - }, - { - "name": "return", - "content": "", - "types": [ - "\\WP_Error" - ] - } - ], - "long_description_html": "

This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.

" - }, - "args": 3 - }, - { - "name": "woocommerce_shared_settings", - "file": "Assets/AssetDataRegistry.php", - "type": "filter", - "doc": { - "description": "Filters the array of shared settings.", - "long_description": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:\n ```php Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value ) ```", - "tags": [ - { - "name": "deprecated", - "content": "" - }, - { - "name": "param", - "content": "Settings data.", - "types": [ - "array" - ], - "variable": "$data" - }, - { - "name": "return", - "content": "", - "types": [ - "array" - ] - } - ], - "long_description_html": "

Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:

Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value )
" - }, - "args": 1 - }, - { - "name": "woocommerce_shipping_package_name", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters the shipping package name.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Shipping package name.", - "types": [ - "string" - ], - "variable": "$shipping_package_name" - }, - { - "name": "param", - "content": "Shipping package ID.", - "types": [ - "string" - ], - "variable": "$package_id" - }, - { - "name": "param", - "content": "Shipping package from WooCommerce.", - "types": [ - "array" - ], - "variable": "$package" - }, - { - "name": "return", - "content": "Shipping package name.", - "types": [ - "string" - ] - } - ], - "long_description_html": "" - }, - "args": 3 - }, - { - "name": "woocommerce_show_page_title", - "file": "BlockTypes/ClassicTemplate.php", - "type": "filter", - "doc": { - "description": "We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "", - "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_disable_nonce_check", - "file": "StoreApi/Routes/V1/AbstractCartRoute.php", - "type": "filter", - "doc": { - "description": "Filters the Store API nonce check.", - "long_description": "This can be used to disable the nonce check when testing API endpoints via a REST API client.", - "tags": [ - { - "name": "param", - "content": "If true, nonce checks will be disabled.", - "types": [ - "boolean" - ], - "variable": "$disable_nonce_check" - }, - { - "name": "return", - "content": "", - "types": [ - "boolean" - ] - } - ], - "long_description_html": "

This can be used to disable the nonce check when testing API endpoints via a REST API client.

" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_product_quantity_limit", - "file": "StoreApi/Utilities/QuantityLimits.php", - "type": "filter", - "doc": { - "description": "Filters the quantity limit for a product being added to the cart via the Store API.", - "long_description": "Filters the variation option name for custom option slugs.", - "tags": [ - { - "name": "param", - "content": "Quantity limit which defaults to 9999 unless sold individually.", - "types": [ - "integer" - ], - "variable": "$quantity_limit" - }, - { - "name": "param", - "content": "Product instance.", - "types": [ - "\\WC_Product" - ], - "variable": "$product" - }, - { - "name": "return", - "content": "", - "types": [ - "integer" - ] - } - ], - "long_description_html": "

Filters the variation option name for custom option slugs.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_product_quantity_{$value_type}", - "file": "StoreApi/Utilities/QuantityLimits.php", - "type": "filter", - "doc": { - "description": "Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart.", - "long_description": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.", - "tags": [ - { - "name": "param", - "content": "The value being filtered.", - "types": [ - "mixed" - ], - "variable": "$value" - }, - { - "name": "param", - "content": "The product object.", - "types": [ - "\\WC_Product" - ], - "variable": "$product" - }, - { - "name": "param", - "content": "The cart item if the product exists in the cart, or null.", - "types": [ - "array", - "null" - ], - "variable": "$cart_item" - }, - { - "name": "return", - "content": "", - "types": [ - "mixed" - ] - } - ], - "long_description_html": "

The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.

" - }, - "args": 3 - }, - { - "name": "woocommerce_variation_option_name", - "file": "StoreApi/Schemas/V1/CartItemSchema.php", - "type": "filter", - "doc": { - "description": "Filters the variation option name.", - "long_description": "Filters the variation option name for custom option slugs.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "The name to display.", - "types": [ - "string" - ], - "variable": "$value" - }, - { - "name": "param", - "content": "Unused because this is not a variation taxonomy.", - "types": [ - "null" - ], - "variable": "$unused" - }, - { - "name": "param", - "content": "Taxonomy or product attribute name.", - "types": [ - "string" - ], - "variable": "$taxonomy" - }, - { - "name": "param", - "content": "Product data.", - "types": [ - "\\WC_Product" - ], - "variable": "$product" - }, - { - "name": "return", - "content": "", - "types": [ - "string" - ] - } - ], - "long_description_html": "

Filters the variation option name for custom option slugs.

" - }, - "args": 4 - } - ] -} \ No newline at end of file + "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.3/schema.json", + "hooks": [ + { + "name": "__experimental_woocommerce_blocks_add_data_attributes_to_block", + "file": "BlockTypesController.php", + "type": "filter", + "doc": { + "description": "Filters the list of allowed Block Names", + "long_description": "This hook defines which block names should have block name and attribute data- attributes appended on render.", + "tags": [ + { + "name": "param", + "content": "List of namespaces.", + "types": [ "array" ], + "variable": "$allowed_namespaces" + } + ], + "long_description_html": "

This hook defines which block names should have block name and attribute data- attributes appended on render.

" + }, + "args": 1 + }, + { + "name": "__experimental_woocommerce_blocks_add_data_attributes_to_namespace", + "file": "BlockTypesController.php", + "type": "filter", + "doc": { + "description": "Filters the list of allowed block namespaces.", + "long_description": "This hook defines which block namespaces should have block name and attribute `data-` attributes appended on render.", + "tags": [ + { + "name": "param", + "content": "List of namespaces.", + "types": [ "array" ], + "variable": "$allowed_namespaces" + } + ], + "long_description_html": "

This hook defines which block namespaces should have block name and attribute data- attributes appended on render.

" + }, + "args": 1 + }, + { + "name": "__experimental_woocommerce_blocks_payment_gateway_features_list", + "file": "Payments/Integrations/PayPal.php", + "type": "filter", + "doc": { + "description": "Filter to control what features are available for each payment gateway.", + "long_description": "", + "tags": [ + { + "name": "example", + "content": "docs/examples/payment-gateways-features-list.md" + }, + { + "name": "param", + "content": "List of supported features.", + "types": [ "array" ], + "variable": "$features" + }, + { + "name": "param", + "content": "Gateway name.", + "types": [ "string" ], + "variable": "$name" + }, + { + "name": "return", + "content": "Updated list of supported features.", + "types": [ "array" ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_add_cart_item", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters the item being added to the cart.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of cart item data being added to the cart.", + "types": [ "array" ], + "variable": "$cart_item_data" + }, + { + "name": "param", + "content": "Id of the item in the cart.", + "types": [ "string" ], + "variable": "$cart_id" + }, + { + "name": "return", + "content": "Updated cart item data.", + "types": [ "array" ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_add_cart_item_data", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filter cart item data for add to cart requests.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of other cart item data.", + "types": [ "array" ], + "variable": "$cart_item_data" + }, + { + "name": "param", + "content": "ID of the product added to the cart.", + "types": [ "integer" ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Variation ID of the product added to the cart.", + "types": [ "integer" ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Quantity of the item added to the cart.", + "types": [ "integer" ], + "variable": "$quantity" + }, + { + "name": "return", + "content": "", + "types": [ "array" ] + } + ], + "long_description_html": "" + }, + "args": 4 + }, + { + "name": "woocommerce_add_to_cart_sold_individually_quantity", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filter sold individually quantity for add to cart requests.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Defaults to 1.", + "types": [ "integer" ], + "variable": "$sold_individually_quantity" + }, + { + "name": "param", + "content": "Quantity of the item added to the cart.", + "types": [ "integer" ], + "variable": "$quantity" + }, + { + "name": "param", + "content": "ID of the product added to the cart.", + "types": [ "integer" ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Variation ID of the product added to the cart.", + "types": [ "integer" ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Array of other cart item data.", + "types": [ "array" ], + "variable": "$cart_item_data" + }, + { + "name": "return", + "content": "", + "types": [ "integer" ] + } + ], + "long_description_html": "" + }, + "args": 5 + }, + { + "name": "woocommerce_add_to_cart_validation", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters if an item being added to the cart passed validation checks.", + "long_description": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.", + "tags": [ + { + "name": "deprecated", + "content": "" + }, + { + "name": "param", + "content": "True if the item passed validation.", + "types": [ "boolean" ], + "variable": "$passed_validation" + }, + { + "name": "param", + "content": "Product ID being validated.", + "types": [ "integer" ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Quantity added to the cart.", + "types": [ "integer" ], + "variable": "$quantity" + }, + { + "name": "param", + "content": "Variation ID being added to the cart.", + "types": [ "integer" ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Variation data.", + "types": [ "array" ], + "variable": "$variation" + }, + { + "name": "return", + "content": "", + "types": [ "boolean" ] + } + ], + "long_description_html": "

Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.

" + }, + "args": 5 + }, + { + "name": "woocommerce_adjust_non_base_location_prices", + "file": "StoreApi/Utilities/ProductQuery.php", + "type": "filter", + "doc": { + "description": "Filters if taxes should be removed from locations outside the store base location.", + "long_description": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "True by default.", + "types": [ "boolean" ], + "variable": "$adjust_non_base_location_prices" + }, + { + "name": "return", + "content": "", + "types": [ "boolean" ] + } + ], + "long_description_html": "

The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.

" + }, + "args": 1 + }, + { + "name": "woocommerce_admin_disabled", + "file": "InboxNotifications.php", + "type": "filter", + "doc": { + "description": "", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_apply_individual_use_coupon", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filter coupons to remove when applying an individual use coupon.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of coupons to remove from the cart.", + "types": [ "array" ], + "variable": "$coupons" + }, + { + "name": "param", + "content": "Coupon object applied to the cart.", + "types": [ "\\WC_Coupon" ], + "variable": "$coupon" + }, + { + "name": "param", + "content": "Array of applied coupons already applied to the cart.", + "types": [ "array" ], + "variable": "$applied_coupons" + }, + { + "name": "return", + "content": "", + "types": [ "array" ] + } + ], + "long_description_html": "" + }, + "args": 3 + }, + { + "name": "woocommerce_apply_with_individual_use_coupon", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters if a coupon can be applied alongside other individual use coupons.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Defaults to false.", + "types": [ "boolean" ], + "variable": "$apply_with_individual_use_coupon" + }, + { + "name": "param", + "content": "Coupon object applied to the cart.", + "types": [ "\\WC_Coupon" ], + "variable": "$coupon" + }, + { + "name": "param", + "content": "Individual use coupon already applied to the cart.", + "types": [ "\\WC_Coupon" ], + "variable": "$individual_use_coupon" + }, + { + "name": "param", + "content": "Array of applied coupons already applied to the cart.", + "types": [ "array" ], + "variable": "$applied_coupons" + }, + { + "name": "return", + "content": "", + "types": [ "boolean" ] + } + ], + "long_description_html": "" + }, + "args": 4 + }, + { + "name": "woocommerce_blocks_product_grid_is_cacheable", + "file": "BlockTypes/AbstractProductGrid.php", + "type": "filter", + "doc": { + "description": "Filters whether or not the product grid is cacheable.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "The list of script dependencies.", + "types": [ "boolean" ], + "variable": "$is_cacheable" + }, + { + "name": "param", + "content": "Query args for the products query passed to BlocksWpQuery.", + "types": [ "array" ], + "variable": "$query_args" + }, + { + "name": "return", + "content": "True to enable cache, false to disable cache.", + "types": [ "array" ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_blocks_product_grid_item_html", + "file": "BlockTypes/AbstractProductGrid.php", + "type": "filter", + "doc": { + "description": "Filters the HTML for products in the grid.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Product grid item HTML.", + "types": [ "string" ], + "variable": "$html" + }, + { + "name": "param", + "content": "Product data passed to the template.", + "types": [ "array" ], + "variable": "$data" + }, + { + "name": "param", + "content": "Product object.", + "types": [ "\\WC_Product" ], + "variable": "$product" + }, + { + "name": "return", + "content": "Updated product grid item HTML.", + "types": [ "string" ] + } + ], + "long_description_html": "" + }, + "args": 3 + }, + { + "name": "woocommerce_blocks_register_script_dependencies", + "file": "Assets/Api.php", + "type": "filter", + "doc": { + "description": "Filters the list of script dependencies.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "The list of script dependencies.", + "types": [ "array" ], + "variable": "$dependencies" + }, + { + "name": "param", + "content": "The script's handle.", + "types": [ "string" ], + "variable": "$handle" + }, + { + "name": "return", + "content": "", + "types": [ "array" ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_cart_contents_changed", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters the entire cart contents when the cart changes.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of all cart items.", + "types": [ "array" ], + "variable": "$cart_contents" + }, + { + "name": "return", + "content": "Updated array of all cart items.", + "types": [ "array" ] + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_ga_disable_tracking", + "file": "Domain/Services/GoogleAnalytics.php", + "type": "filter", + "doc": { + "description": "Filter to disable Google Analytics tracking.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in GA extension." + }, + { + "name": "param", + "content": "If true, tracking will be disabled.", + "types": [ "boolean" ], + "variable": "$disable_tracking" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_get_item_data", + "file": "StoreApi/Schemas/V1/CartItemSchema.php", + "type": "filter", + "doc": { + "description": "Filters cart item data.", + "long_description": "Filters the variation option name for custom option slugs.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Cart item data. Empty by default.", + "types": [ "array" ], + "variable": "$item_data" + }, + { + "name": "param", + "content": "Cart item array.", + "types": [ "array" ], + "variable": "$cart_item" + }, + { + "name": "return", + "content": "", + "types": [ "array" ] + } + ], + "long_description_html": "

Filters the variation option name for custom option slugs.

" + }, + "args": 2 + }, + { + "name": "woocommerce_new_customer_data", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "filter", + "doc": { + "description": "Filters customer data before a customer account is registered.", + "long_description": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.", + "tags": [ + { + "name": "param", + "content": "An array of customer (user) data.", + "types": [ "array" ], + "variable": "$customer_data" + }, + { + "name": "return", + "content": "", + "types": [ "array" ] + } + ], + "long_description_html": "

This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.

" + }, + "args": 1 + }, + { + "name": "woocommerce_registration_errors", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "filter", + "doc": { + "description": "Filters registration errors before a customer account is registered.", + "long_description": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Error object.", + "types": [ "\\WP_Error" ], + "variable": "$errors" + }, + { + "name": "param", + "content": "Customer username.", + "types": [ "string" ], + "variable": "$username" + }, + { + "name": "param", + "content": "Customer email address.", + "types": [ "string" ], + "variable": "$user_email" + }, + { + "name": "return", + "content": "", + "types": [ "\\WP_Error" ] + } + ], + "long_description_html": "

This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.

" + }, + "args": 3 + }, + { + "name": "woocommerce_shared_settings", + "file": "Assets/AssetDataRegistry.php", + "type": "filter", + "doc": { + "description": "Filters the array of shared settings.", + "long_description": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:\n ```php Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value ) ```", + "tags": [ + { + "name": "deprecated", + "content": "" + }, + { + "name": "param", + "content": "Settings data.", + "types": [ "array" ], + "variable": "$data" + }, + { + "name": "return", + "content": "", + "types": [ "array" ] + } + ], + "long_description_html": "

Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:

Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value )
" + }, + "args": 1 + }, + { + "name": "woocommerce_shipping_package_name", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters the shipping package name.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Shipping package name.", + "types": [ "string" ], + "variable": "$shipping_package_name" + }, + { + "name": "param", + "content": "Shipping package ID.", + "types": [ "string" ], + "variable": "$package_id" + }, + { + "name": "param", + "content": "Shipping package from WooCommerce.", + "types": [ "array" ], + "variable": "$package" + }, + { + "name": "return", + "content": "Shipping package name.", + "types": [ "string" ] + } + ], + "long_description_html": "" + }, + "args": 3 + }, + { + "name": "woocommerce_show_page_title", + "file": "BlockTypes/ClassicTemplate.php", + "type": "filter", + "doc": { + "description": "We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "", + "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_disable_nonce_check", + "file": "StoreApi/Routes/V1/AbstractCartRoute.php", + "type": "filter", + "doc": { + "description": "Filters the Store API nonce check.", + "long_description": "This can be used to disable the nonce check when testing API endpoints via a REST API client.", + "tags": [ + { + "name": "param", + "content": "If true, nonce checks will be disabled.", + "types": [ "boolean" ], + "variable": "$disable_nonce_check" + }, + { + "name": "return", + "content": "", + "types": [ "boolean" ] + } + ], + "long_description_html": "

This can be used to disable the nonce check when testing API endpoints via a REST API client.

" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_product_quantity_limit", + "file": "StoreApi/Utilities/QuantityLimits.php", + "type": "filter", + "doc": { + "description": "Filters the quantity limit for a product being added to the cart via the Store API.", + "long_description": "Filters the variation option name for custom option slugs.", + "tags": [ + { + "name": "param", + "content": "Quantity limit which defaults to 9999 unless sold individually.", + "types": [ "integer" ], + "variable": "$quantity_limit" + }, + { + "name": "param", + "content": "Product instance.", + "types": [ "\\WC_Product" ], + "variable": "$product" + }, + { + "name": "return", + "content": "", + "types": [ "integer" ] + } + ], + "long_description_html": "

Filters the variation option name for custom option slugs.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_product_quantity_{$value_type}", + "file": "StoreApi/Utilities/QuantityLimits.php", + "type": "filter", + "doc": { + "description": "Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart.", + "long_description": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.", + "tags": [ + { + "name": "param", + "content": "The value being filtered.", + "types": [ "mixed" ], + "variable": "$value" + }, + { + "name": "param", + "content": "The product object.", + "types": [ "\\WC_Product" ], + "variable": "$product" + }, + { + "name": "param", + "content": "The cart item if the product exists in the cart, or null.", + "types": [ "array", "null" ], + "variable": "$cart_item" + }, + { + "name": "return", + "content": "", + "types": [ "mixed" ] + } + ], + "long_description_html": "

The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.

" + }, + "args": 3 + }, + { + "name": "woocommerce_variation_option_name", + "file": "StoreApi/Schemas/V1/CartItemSchema.php", + "type": "filter", + "doc": { + "description": "Filters the variation option name.", + "long_description": "Filters the variation option name for custom option slugs.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "The name to display.", + "types": [ "string" ], + "variable": "$value" + }, + { + "name": "param", + "content": "Unused because this is not a variation taxonomy.", + "types": [ "null" ], + "variable": "$unused" + }, + { + "name": "param", + "content": "Taxonomy or product attribute name.", + "types": [ "string" ], + "variable": "$taxonomy" + }, + { + "name": "param", + "content": "Product data.", + "types": [ "\\WC_Product" ], + "variable": "$product" + }, + { + "name": "return", + "content": "", + "types": [ "string" ] + } + ], + "long_description_html": "

Filters the variation option name for custom option slugs.

" + }, + "args": 4 + } + ] +} diff --git a/packages/checkout/blocks-registry/types.ts b/packages/checkout/blocks-registry/types.ts index 7bbcbbdb7ee..f752f2910bc 100644 --- a/packages/checkout/blocks-registry/types.ts +++ b/packages/checkout/blocks-registry/types.ts @@ -18,6 +18,7 @@ export enum innerBlockAreas { EMPTY_CART = 'woocommerce/empty-cart-block', FILLED_CART = 'woocommerce/filled-cart-block', CART_ITEMS = 'woocommerce/cart-items-block', + CART_CROSS_SELLS = 'woocommerce/cart-cross-sells-block', CART_TOTALS = 'woocommerce/cart-totals-block', MINI_CART = 'woocommerce/mini-cart-contents', EMPTY_MINI_CART = 'woocommerce/empty-mini-cart-contents-block', diff --git a/src/StoreApi/README.md b/src/StoreApi/README.md index 2e301ec8e6f..b4760294b11 100644 --- a/src/StoreApi/README.md +++ b/src/StoreApi/README.md @@ -141,7 +141,7 @@ Please review the [Store API Guiding principles](./docs/guiding-principles.md). ## Extensibility -The approach to extensibility within the Store API is to expose certain routes and schema to the ExtendSchema class. [Documentation for contributors on this can be found here](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/extensibility/extend-rest-api-new-endpoint.md). +The approach to extensibility within the Store API is to expose certain routes and schema to the ExtendSchema class. [Documentation for contributors on this can be found here](../../docs/third-party-developers/extensibility/rest-api/extend-rest-api-new-endpoint.md). If a route includes the extensibility interface, 3rd party developers can use the shared `ExtendSchema::class` instance to register additional endpoint data and additional schema. diff --git a/tests/e2e/config/custom-matchers/__fixtures__/best-selling-products.fixture.json b/tests/e2e/config/custom-matchers/__fixtures__/best-selling-products.fixture.json index 83be6820f4d..592c5ded3ea 100644 --- a/tests/e2e/config/custom-matchers/__fixtures__/best-selling-products.fixture.json +++ b/tests/e2e/config/custom-matchers/__fixtures__/best-selling-products.fixture.json @@ -1 +1,4 @@ -{"title":"Best Selling Products Block","pageContent":""} \ No newline at end of file +{ + "title": "Best Selling Products Block", + "pageContent": "" +} diff --git a/tests/e2e/config/custom-matchers/__fixtures__/featured-category.fixture.json b/tests/e2e/config/custom-matchers/__fixtures__/featured-category.fixture.json index 60f0ae7b0d9..b6c77eb3381 100644 --- a/tests/e2e/config/custom-matchers/__fixtures__/featured-category.fixture.json +++ b/tests/e2e/config/custom-matchers/__fixtures__/featured-category.fixture.json @@ -1 +1,4 @@ -{"title":"Featured Category Block","pageContent":""} \ No newline at end of file +{ + "title": "Featured Category Block", + "pageContent": "" +} diff --git a/tests/e2e/config/custom-matchers/__fixtures__/hand-picked-products.fixture.json b/tests/e2e/config/custom-matchers/__fixtures__/hand-picked-products.fixture.json index 907b84ea5ec..4b2f1de3f43 100644 --- a/tests/e2e/config/custom-matchers/__fixtures__/hand-picked-products.fixture.json +++ b/tests/e2e/config/custom-matchers/__fixtures__/hand-picked-products.fixture.json @@ -1 +1,4 @@ -{"title":"Hand-picked Products Block","pageContent":""} \ No newline at end of file +{ + "title": "Hand-picked Products Block", + "pageContent": "" +} diff --git a/tests/e2e/config/custom-matchers/__fixtures__/newest-products.fixture.json b/tests/e2e/config/custom-matchers/__fixtures__/newest-products.fixture.json index 5ffe302fc75..d3aa952f8b7 100644 --- a/tests/e2e/config/custom-matchers/__fixtures__/newest-products.fixture.json +++ b/tests/e2e/config/custom-matchers/__fixtures__/newest-products.fixture.json @@ -1 +1,4 @@ -{"title":"Newest Products Block","pageContent":""} \ No newline at end of file +{ + "title": "Newest Products Block", + "pageContent": "" +} diff --git a/tests/e2e/config/custom-matchers/__fixtures__/product-categories-list.fixture.json b/tests/e2e/config/custom-matchers/__fixtures__/product-categories-list.fixture.json index 7e6a4d9e3bb..6f6baf27aef 100644 --- a/tests/e2e/config/custom-matchers/__fixtures__/product-categories-list.fixture.json +++ b/tests/e2e/config/custom-matchers/__fixtures__/product-categories-list.fixture.json @@ -1 +1,4 @@ -{"title":"Product Categories List Block","pageContent":""} \ No newline at end of file +{ + "title": "Product Categories List Block", + "pageContent": "" +} diff --git a/tests/e2e/config/custom-matchers/__fixtures__/top-rated-products.fixture.json b/tests/e2e/config/custom-matchers/__fixtures__/top-rated-products.fixture.json index 4adb6788563..a3190e493b4 100644 --- a/tests/e2e/config/custom-matchers/__fixtures__/top-rated-products.fixture.json +++ b/tests/e2e/config/custom-matchers/__fixtures__/top-rated-products.fixture.json @@ -1 +1,4 @@ -{"title":"Top Rated Products Block","pageContent":""} \ No newline at end of file +{ + "title": "Top Rated Products Block", + "pageContent": "" +} From 60af7e1a4ed5fa4a06033080a537c1dec3d460c4 Mon Sep 17 00:00:00 2001 From: Niels Lange Date: Tue, 14 Jun 2022 19:15:52 +0200 Subject: [PATCH 2/2] Add Cross-Sells products to previewCart --- assets/js/previews/cart.ts | 110 ++++++++++++++++++++++++ images/previews/hoodie-with-zipper.jpeg | Bin 0 -> 56609 bytes images/previews/long-sleeve-tee.jpeg | Bin 0 -> 51118 bytes images/previews/polo.jpeg | Bin 0 -> 44409 bytes 4 files changed, 110 insertions(+) create mode 100644 images/previews/hoodie-with-zipper.jpeg create mode 100644 images/previews/long-sleeve-tee.jpeg create mode 100644 images/previews/polo.jpeg diff --git a/assets/js/previews/cart.ts b/assets/js/previews/cart.ts index 4a06a8a0e0b..6f4533369b9 100644 --- a/assets/js/previews/cart.ts +++ b/assets/js/previews/cart.ts @@ -172,6 +172,116 @@ export const previewCart: CartResponse = { extensions: {}, }, ], + cross_sells: [ + { + key: '1', + id: 1, + name: __( 'Polo', 'woo-gutenberg-products-block' ), + permalink: 'https://example.org', + images: [ + { + id: 17, + src: WC_BLOCKS_IMAGE_URL + 'previews/polo.jpg', + thumbnail: WC_BLOCKS_IMAGE_URL + 'previews/polo.jpg', + srcset: '', + sizes: '', + name: '', + alt: '', + }, + ], + prices: { + currency_code: 'USD', + currency_symbol: '$', + currency_minor_unit: 2, + currency_decimal_separator: '.', + currency_thousand_separator: ',', + currency_prefix: '$', + currency_suffix: '', + price: displayWithTax ? '24000' : '20000', + regular_price: displayWithTax ? '24000' : '20000', + sale_price: displayWithTax ? '24000' : '20000', + raw_prices: { + precision: 6, + price: displayWithTax ? '24000000' : '20000000', + regular_price: displayWithTax ? '24000000' : '20000000', + sale_price: displayWithTax ? '24000000' : '20000000', + }, + }, + }, + { + key: '2', + id: 2, + name: __( 'Long Sleeve Tee', 'woo-gutenberg-products-block' ), + permalink: 'https://example.org', + images: [ + { + id: 17, + src: WC_BLOCKS_IMAGE_URL + 'previews/long-sleeve-tee.jpg', + thumbnail: + WC_BLOCKS_IMAGE_URL + 'previews/long-sleeve-tee.jpg', + srcset: '', + sizes: '', + name: '', + alt: '', + }, + ], + prices: { + currency_code: 'USD', + currency_symbol: '$', + currency_minor_unit: 2, + currency_decimal_separator: '.', + currency_thousand_separator: ',', + currency_prefix: '$', + currency_suffix: '', + price: displayWithTax ? '30000' : '25000', + regular_price: displayWithTax ? '30000' : '25000', + sale_price: displayWithTax ? '30000' : '25000', + raw_prices: { + precision: 6, + price: displayWithTax ? '30000000' : '25000000', + regular_price: displayWithTax ? '30000000' : '25000000', + sale_price: displayWithTax ? '30000000' : '25000000', + }, + }, + }, + { + key: '3', + id: 3, + name: __( 'Hoodie with Zipper', 'woo-gutenberg-products-block' ), + permalink: 'https://example.org', + images: [ + { + id: 17, + src: + WC_BLOCKS_IMAGE_URL + 'previews/hoodie-with-zipper.jpg', + thumbnail: + WC_BLOCKS_IMAGE_URL + 'previews/hoodie-with-zipper.jpg', + srcset: '', + sizes: '', + name: '', + alt: '', + }, + ], + prices: { + currency_code: 'USD', + currency_symbol: '$', + currency_minor_unit: 2, + currency_decimal_separator: '.', + currency_thousand_separator: ',', + currency_prefix: '$', + currency_suffix: '', + price: displayWithTax ? '30000' : '25000', + regular_price: displayWithTax ? '30000' : '25000', + sale_price: displayWithTax ? '30000' : '25000', + raw_prices: { + precision: 6, + price: displayWithTax ? '30000000' : '25000000', + regular_price: displayWithTax ? '30000000' : '25000000', + sale_price: displayWithTax ? '30000000' : '25000000', + }, + }, + }, + ], fees: [ { id: 'fee', diff --git a/images/previews/hoodie-with-zipper.jpeg b/images/previews/hoodie-with-zipper.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f9b27c9fd35813bf315664b3a9c87bdb37eb9541 GIT binary patch literal 56609 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 V;60%Lk@Ba|4Mc)=z?b{a|JnD&2-^Sv literal 0 HcmV?d00001 diff --git a/images/previews/long-sleeve-tee.jpeg b/images/previews/long-sleeve-tee.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..64c7d9d9e69aa55fceceba8e6ec64ec77c0cb731 GIT binary patch literal 51118 zcmd?QWmH^2vjsXh1SbS{cY;H3x8N4s-Q6L$ySsaEcZcBa8r*eody{;54O-*%mo$50m%OBeS6e%%DF#s4C03ZQ+06x|LfuOU$0uFjYfP;fWKtg~7 z5(@IKKtV(O6X^dEn12HMSK$6f{-MFaAwf?#Xej9aY5#xy=A#dQ3JXCDdVrAtz)`^< zP{BS100aOq02n01UtRxOAiyD^;J{!%!9ahk0$~5sbHDxHz5kzo4Uu`{9k@7b%Kcy8 z)Ja%ESLbPOi@o0^rt?K|6KuuPT{@e_m;P-(&J=;7t9SNzu5T) zz@c8_{m5qZwv8C5^nz1aP&`E*o!?PdV^MOg6UvwRUktC5*}AFL4@?Oy0eOT{FS0rN z7uDc|c!MhY4&qN6toJEy{AK@vLx^qQuInEEsZ!Tq z+*EN^nA-~4=67_z^EnzZH`RWd>T{aw>|T||#B&@pdrFTW=&-ClPgl3~Svdt?6@1w!l9mn_Sgf z>po5J>Sh(qJkm11z9{RQC`QBjUKMRgG)ex6x6r+1oAZda1ARHEe=2KHTi4w`9M~Kp z!##hOT9W+)hLiTDS+yrdORFu}K{RnoOHS&!^>J%kd6vNaQgi(n{TFd}M5Y!^_u0F= zm#cs1m|^I*Zg2N-wvB7c!6m^DfaFHIm(+9V<4)UQe7Rn5+1>#bt9Ywz;gY?Uk_A9`#9=~@O3q*i~EBry?`{g z*U1Quh4|L!(4zL8)pUyx++y!H7uLUMu;F;TgS#6wJOxoNVcBR`m1k)ypKq(_7biPy zNB$A*6{q350TI#ekBf~DxE^&wMi*qw2jArNSc^_-{^92lg`DfXmYP-iMYV*N-fS-N z>1;SYe;G(YRZ`>WA9_-rq_Fa>YZ=|pJzq>^7=dYEn=fjhlhy8EP?8nD|=<7%9hOyZ;@_eo}6wTlWx9a8JYF=@Tut4b@Da+1?g?R zM)Z*}%DA0TM70UusKh?^FA2|xwIR^s$EL{dqxoi~HtSP@`*gZL0~*4Nn0Rv{PS@fz z#vLO%o04kGdVFlB&DUVfj*L9CzjD`W9bYFpf;_-gO@rms&IN zNZN~bGKt$Fu-6u55GPdOB&o1Iq!LD1^3NOdDLsU6Of|;U*;Y<4qU>DZv~ON+`~;~5 zaj2u$JmTnVpO1fV8c^?n2pq`>rj^EK;0m9NwzjT32`5+5-I&eSEaNIay(MH=SSkw{ zdOfzuIe3oQXi{u5kHHLhG97Tu{QDgVNpICUY11#9Y8&x&p2crP+a%9R>%%SF^Vu33 zoaFF$=I}QT(P!xA8zrZve8Hw;q@k0$EZ4lHFP<+-Pj;~b2Tw6)bN@1VQBF2pRUI7O ze3N-jDav743-7GkSqxHMEpOThvy5gS3#Q&LZnZhxX?bURs%rFrB(V0ZuX>v_Y7H-^ zvs=cu@R0aRgVg1|yU8}Nu6Y8Zfeclbo(48uogh*D3ZBgonvQ z%zIBi33X4$mv+%?PFdGbceIQOS2y2jA&S>gQ*&OBK_4S$U5rrX3-8v#M_35ac3qU8?NIDFSM_!Rd02Q}7PkwlAv z8QY_N7oQPxCydU5#{YQ?2E5r_fofWylD>{mxc_Ldws^z&8oK(ELsRWVPnNv3GD z&_gS#ieShjOTfOMqyC**X6^NrHF10I#B58A z>JI?^mG@A<*!%WPgJ4oe0DjOSM?ueDo@1m+7gXMNMJeJ#d2ZrGpS>#U+DEstbex+f z_{d*B=-3kHv^4uCHid31GqCHL-f%ZLc{Z#*032h)bey(Rry(=3e`$FBoZ&LYk4|B* z&86Qxb!M9l?~?AckWXmu*@6~!{-5DK7LM9?=Z@NIV{sw58EY^ZGI@uG2Rj)EzK3_W zM?e2^5GLO;HRFyqj&AbR+`&|597k)y(`vXE^UoO9xvF+&y$(3eP4R5*ksVmBnzuJD zRlR{7T$&OV{#F@`3j87C@XYX+1wwH{`%-(z1tDkudiS$;Qifo9Q9Jegdw#WXE!pIvr8xnHDCga?GTfp)^P(xQv(3=;vRO z$4USD{->?!F>x&))Rj(|OaIkL8|yQsE7N*x8()s6jLe{6)ZXt8DX40m!yHVO5Hqko zEEB4mH_l6RcN4Z1-Yed~zdSJ6Hm@ovzqu9;T^orzJ^mE8TraYxA#`(gcrQv_bitNa zmD*C4WIQ_8A7Qb50A_sdr3a-~s&W^QF5Ca&0T4G`dd;8NZH}vS{&-y$y;w^kVx8ie zUFJ7;j_54etDq>-bj8EtJ~mDqp|hU4E~g)9ugkC%r@xWB5B$SVG1_(oWsgog@sB$e zS>MT#sWvTQJ+?;g5+`Kec$9_*DF}PhcYV9y)%RdT=Hlk+ZrN!q+BYuhRv`L|NA7zH zT;KHNVCByodezj;NJ)vHp<}wQS#tD_ZRu`3NOdoXu+*%m@Z>&XQ#!`tSvps}xK}qm zD7{{d23GxL0J!(8P$+T71z_4Tq`3s#2eBvaTmxm?on3j~hT(lU^KsQLh#K1i6n#>K zC)uYMm@yp}gy<+5-;n;HaoV0jHa`H;DFvvZ-DYzhbCpl^!}iXx0$>mmjvook?|XUZv0_xAcZ4$#ltm6Z(qq~$$s}W z(+5T5r>>CwcH?JUE0=6<>7W1b*Qm$!cWU#RKZFT#o4A0>BnRPK(upH`2Rpc)w3>L4 z56)xAf=#u{b~nwfXG=;RA+@%};$aJv#nb=b1gz}Bbz>K#4Ye_c8aeC6sE#z*T$-F2#syy%01K0?&y!@Id6j6$A`qHs*c|SWLdQN!u~V5`_yrB9$pT5uce_eXcbv# zMv)<>DbIc&_9X923W~&RmhO(<|0Z}O!bf<}@2Z{|vfbvsx$aWc_TM@UK!k9;)$(P#2$A{b_&AYu+Hawbw6Wm%t=-Mqva>ac9$k&zW%c_;A}_-}wpMeemwu)FXM9%anP1RB55pVTt3c$^m)$oQ0UwUW@etM@tDCw@D$3W& zDGzA3vy6QYt4rECK@h#Z#+S|7x84>PzNg=m?!^9?0C374cz?JU^}`30b@4a12ApP9 zFBLO(b=DPo-OIL|gwNi*?{H@~TC}_IXjod#P?-yBXwojQJ9^?&K5-cFV*N)Ke4Rx# zH6P=b55VHK(X#1+4@^Z`yUKk|;d>4+r?hqSkAvz5fa^J?r>*|lx982U8{g+7X5aA6 z4bjZ~XoEaC`vahVJEg$e`5&dASt#@x8|N7Ne7ZY2JwP#y;~MF6BbLeM}#D|X;;-#rtjWo3Bdp80|1<6cfUJ&K6!EMR$B8DKE`aS8?wzT z5ms8I+@*~$`sxGUez~xMi8%iE=K-4A9&?6j%UxN%4*yZ&|7S;jP^}01UkU1emwEu; zV4xz@zcLRv3dkZa{}-zu+=%OR3jAfr!CSoK%rQD!yp;V3Iwf$gVu`LebXAviU&;lY z+eN2M6^munM-==R2ZAm|AfH}rd841W+35GPSO>3xpacugup?or>7d}7Deu@gbL%sR z=K3Ma7O7#p&faT&h{hYVC}b1La&WmA%dlt!Zd!8W z!;iQpfMV`VPEdGPqfC3PEY6OG1uy`pW3|%CGgwLwG4(5M4^~Zj8owv2y-p)=p)= z1^eH&?0PN6hFMor>a;occ23nnN065z(`Pn!oLEQ6>L|O|l~wMZfK2i<7ciHgWNzqK zSYJP-sXjK73rfa4$GDyLTU!$+I*eT1+l=M-K^BMIU0|9sDA8%(PE|EQ5r@`7os6m`~5Lv3JhK1u{Fdds}^s)uN(@a3M?m#9WA5 zRS#(C_o(M|E+3kb$c}V&x3Nw61pt|)sXj((B0XZT)paSMnxGb>AJ}k;id(0;ds5Q3 zG+;rWN($@_YiU)pr z+aH@bXK%nBPAkJAa{#JHq_eAgKc}^| z(!w4+czc)u0H{xhNa_|T-!cxSqPm^E*V>(Z)NN;ytIcOYjE6k$;#)Zk<%XiY-3KfD zSd&YoYh@+%+CKphQ8SVY!E4_odBcD#|~WQJO^cEeStlDyGnS>rDCY%5-^Ty=T{ znxkIB)50ycxVuaHfm+UDPb8)*njG$vgZ87;wk%HytKL5VV3RyNV@OHk6;9@3du|@r z!&b|;WUsf{b1M#$?$(V8mmW0$uraS+W%!P1PiJfeyLl1F8HZkD{qGeuG5xG2A(o(m z1Crr>*Z#$85qpdM)iB=8%LD#w*RJHVuVIYpfOy@-PXG*2;bUA=6&+`{L%)vtn0}pD z2E#4!gcrNIq5ir60Et+V&Gbr~CM_(AH z&MKz2O!>M>e6YUP#c%-Gk-3M^-ha4U0l*V(8(Qs+mwU>h?nN6$u{@nGQVb)rFNxK9 zDK3J%S9<_3#D@udLO}UH;!C8{zi&})rPlPbdD}Krdd|Q4oxBhM01^FEd%KKOwL8W~ zw>N7!>?29_mu9W*e3bgl=groSpgC)cSW{Ek?w1egUTZ8fCBE^}Wqr0J>puQ2y~W+~ z3i5((ZrcpO)ABnt!C~*HV2|{s)2Efr&k0ZTt;U{9JpizA_rXTxkN(==um4L-BA z>O(`|h2%aN(-9vC|79zSAx{Lz#(5&M(M-?eG;VQD5cRuba>99|dluvmmw=xU_R_aJ z8HZ~F&FN;E=LR-GoRXM?nc^x8#1`J^Q{e? z?K7bHFnrrVednrzQ)0Q0IZk4lv{iT#x{fj0Wa|RzoJw_XTWcFZIVMq;n1Vy2ob$N& zHTM)UqxsAb59)T8xjs6gy1S^I30%hDbC44~f{EYz%$*4eI{?016|vIWx=x+X^z=2z zIRc=j|C1nt;tCHaZa_kVK>|QqIiMp9D87J!Lxa{-7+6$d6f`Em&qVSHaOfn=`d=_G z?XgJ7g!Hh8_zU96W!m`pxHNFRHj!F|ee6(UHg@U*JIdT!UL`Q!0shQ=2X%z77bb zLTSG^ASZ#hzuEa@X-=Qu?WfpLSz+#Sd!Vy9YvC~edgs9L=L`GwTF3NoMG$AY$S>?x z^H5_9%=awk>ds$v4s{7?#7l1V43`ZjDJP4Xpo&AMEJYvQ0=Dfy`l^yCf60215BcNL zC(1q%!hyCC3dRord%~-vy@vr~e+K`6?iV;CQI5wbgUANLFvt%8+PKBiaptSEm3d09 zjf`p5OrlBmEvm%+S#nE+bw45$d)IZ>1Zvs^HFoa zB-vo?fYevxahswT#Nb-a4j8F3bEQ+626ZuaG$xIVhL@GC^U}26$1Hm-3=*@yYrZsF z+Z6G#ar=G%^0eCPZLJ}^Z8U>)yVIx>P>@m#&knf1TCKC>6uIPd#OiUW+qi$vY-FF^ zYq;1I(%zowV26uvKT@DZvZ!L)Pb$n8Np6atg0GYoM^f<5-E&hsM8SAEolxPNx92|Ol z?3qSVpLrk<4fQIJHCoQ^Qs8$7c8`cM4#x8Uyu?u!2ZW8-^IjFZ*!QU8MvlHEopLT! z>!qd4$;Ez#B(#=uyZxfo4y9XG1Qm0GN)n6qwLwj>btX8St#j7?Vm67_&_Y3{U7Mjur zAmoLtNq*+hXALW)e1j33sV}=bf^}o)1!p0Zy6KfhE0L2Nj5@_XW-%fok=6noJV8emzJ>$G z=9LDn5YnQ-ETpjz`S8_24`{{(g2s9NIuAuz)f`gjBxxau7RY#pU@fy7#U0;Bs||x{ zQj=eMw8R#rRz;jRmBT?4&4FXhmK9{C zQkgA_&p9x+pSKP*sXLKxI};h8JSooL4df3k?3t7QXf2-+@a%ESrGvVRb8NW{Bntq{hBbXv{Wzn8;Qr7>O`M5o^m8nZ(Ip64H-**CCqcXXOb=5$ERh^VcY(?)8#hBqHD0TetI_ zG#1ov-dwadhqBboOGj?mO>ZQcyMDIRMm}E>)(H;wi`@+Fjn!Z$Y+8wPIEE4S8ffN- z`C>tFF?@=c#6J3>^kNohWL)>0)z=dF@?#;*y^B)k2`a^I;SG9OBUz=unz(BCj09Q) z^MOFR-;nVqQ^8lAdhVG^t5A$L* zd`88Fgbf$OO1Qvp)OqYi4$jvs?)yne=~L!yFXWZzMHMx+Sj35@bmQ@6)X9ea0%dY0Z8Jw= zQjVs1+_NQ2WR73#1zG5?P#Z1(=~S0v@B@$oMCVrsOnZFdUx_^@5{URIdgfT;mC6F0 zSN~NY;4EEU_zuOx%3OhUGn5gap@SAY70X5{D zxggY4?X_yrQjHw10ZwBtWKOj~Sa2Xr@Yj?{vd~m#7P~ z`NQ-269d?R6t9Szuu7^wKh_Wvs4G$Q}x@eVE!5ZE5l- zPV1g+tLCQ{*q@PTy`|&BFEfZ(Qk{s=f379anqZ%f_bd%{+N`jcK*1@MHYL?{hT`gE zn`Dp0{0ER+3wr+v+0hTLLiiIYj2rkPmRhcgr3C2 zPsdRClr#QOwA>5z1`R$isHEML0 zZ(P(`xz=x6){IySY!`>df9_0SxK*y-RBZbRU2c4_H3(f~ddy$0r*2FRG=j_e2 z#(`hKIqtghkP$rB`p2+yQ$jKY@ETN@)R4((5%eq`E5`ZhZ2cuwPrW7n=d^Ae22M$?F@prVh9?w z(O~B}Jzt23bPe+8R2$LEM;?af7c|W+LiAV5JF^P0J6v*)zFs%7r9n)DDTgGTGlPOoD8c?MW*?%`L8KCA~ATNIPtJ6nz|1c$nd@;}?PC7-dzepm9Igw4OTFO5H@SQV^GD z;RGy_6+)B}@b^A7LjSU7WrZCt-KrqNM@|Bc{mQC7mEci3Y=)CKw-ThEF2=-Sk6m9(d78oLxJM9JkdAxtl_-Ac!UN7 zD+Y$7+@v#dG9w16R)I<>uid};$$+2|4gq+VNSLK?g$do9v_T2j2*sN=z z!{y90%ko#H3+KwJ5V0+ATNg+5dy#}c4d0AAci)S?x}fHS-&MH&XkZ?+{5~{QC2@0?8w&C~U==`TAA@;b5sB>WUQF#^BoNsd>` z5%&z`))_3%PQxUnARe4e^Jh#JWvi&1taTB$qw1}Kpvl} z$9S4iGFG-gdW|2!3XeCPSZPAvSk2!RCXkYn$|C=iBg0?AR8z18rmL5~%o;tj`%|E+ zzo9o^+rhBK6@oWM1_=y>1ZB+c0}#8s{O*BLR`8xO@ELyk*Nj=T)tCiGru`r7OsrDz zV%0Sp8t$qPsy*A3CG4|bi}(xi0D@EBU%0&jxVN|o`^cDCg!rTpdKEQGcuXUiaq=<@kGOvMcM$|ANm zx$WM^PuIC002j&H)H~P2cZjtRJm&Jv!z7K0Pbs8KDjB__WKtP4CC=p@jA8JQNbsE!)u(@5?K?aN?wMsnW7_A{Yr_%F%Hvv?T~6&;Tk%|>%lzR#(ZpSLg+7h zo`>SK)!h&}{s|Av3Rq;9Q|5>mEnjo>dcpUGI?<$;$-M8X0+E03q53n`#D5{f*-I(i zugCPkDXe0vtnS4wvB`>ONyJNTN^U!3W0(_CKbitk%r(R%_Cae&4rUFjv2uQY0xILM zmH}OnkVmCI0H~FA$UQ$|DkG}Dwll_#x4+0dvk8&?U{)~b>AQU|`O(T?CLa-<9W1}9 zvau%3B~@gYv=ZW8$;-8dZCcZa0km1{yQ~+wHd3gq@}w_{sdOz^OhcSYOTmf#qrv0E zPob}`BQ`ZdQH>n1(kp@eLhgz}?PBiXMN1@j7{`2-_iTmjj!a(mfE9j;e zOO7XoU-TbyGi%@mmr04+5= zDMOe#SzMeMPJ;&{9@G=GCZxuRzG#gmfzSuQOal|q6p1>88>RsN=d@wNu)aUT46+8y zi_mv0M$&1y=q^93vNV^%Kz*EpT#^`vA9rH-zMnT$f-?uDv1~;C*!*}v z2W`Tak0mzzFcU=e;fXB$5t3VwRBxKCnu=);6&nJFutzRB z5V=UvvW-zMwCfL!ipuyMkWM=--4!QO!&$uAXWFLw| zI5wIxypc8+G>P{p6J(CT?;pQ&cGoxD>d3ny?3Q3NW{4}m(M0v7C9c@IzPW!{<>eZd z$h1|tX71)0&Z*k{+!ln7#6N(MMa%s4g85H#&R6L6P*12A!2n2J;MW33L%k^zbha~0 zzxS9tWI+**T&Zo_5`W07>|RVce0Iv0gs%<1#tat5dhJcWjQ-K^GHh;T{A&A+#US~-EK-nHfe@DU5wdF&d73W+cX^vygo|m_ zP>hp!a;TS}jZg^Y6$-OPw-=n?JEksRxR%c|U8g`a1RSS8v?tt4sM)imz-WP zK1wdD8T~n!aqGClv&=XNTP4%YF%Mxihuti!n(2ES!SJ=Gg5KWekI zgkK)AjqS-O&>J9s!LL1f{Ci7SH*b?W)G8(q3zV^*R)TLe_-{YEIxVx{uZQjE4(oa! zRpHvqv|5G@G<^W>huB%DDR16M_@PtSY_uFwaFWAsKXnW9$W>DhM^9+Pj}2=B<<;#B zDC2Ao`P&_z^Vpbxx&xwP7%|aGh{s|@80t-%u{M$=CAfs24b5Q+Zt!C`Q^V}H&_k24 zYoYS=R#?gU_`tB1x$9s^B&+ZLyebrp_@$x|Xqx zZJ@rg8J~m@k~_psark9dPzNkKxR-Y3j^vX9C_NyLeawK&hpZ9rN@vJKS-ybO*AcHV z;g78&FOiy{`kH50X)omWRY{pk(*Mc9ucbtlkB6$J)}+M-!N+1A8OuUktld>63=Qp_ zj^qamqzCR-F?0-_0p$ptv@pD9I|{j@R=!4+Tj+&p5&?c8oKVy&p6u~nL~B8&v~o1cAY2G?*0?OT)r|hs=Nr==WU{x-z@ms3&V6>~=BOM@v=uY~R7=_TCq`b((g`ST7aQBTYOXA()8~Gm}qG~gTvYRj4gg=8kSRV;{peS@~9j6CddY=5HFkwYS49@x&p6 zX@wS@QDMgFi1}S15fg;_tvWelXv8j z6BmbWmh?h!S}a_<(C@I4T;#6H*6nXs?{iYljNA)kUJ@Y$jK!KD45+}H(|M z*ks{Vvb%upx{I@>T=m{TN)Cz@x)=Pk1W4o#abt_9bfZcxW`jmFWYu8OTEr;fCb!D6 z%W=60y$#w%6YGR6M29baB>XLxt)Ieu6zIS0-vLDx*|%^+`vCqmVM!Qfm_kgiBQPa5 zHixJe_1)+#Ur1 z&5EYe_qm5ChZi{j<@F3DT+7P9!a&|8Y1N4Kz+E_SV=Aef6?qlDM=c66+0RMg$UkN| z(vWaGg7xB?+|i2EYG&<&Vn$MwhqYqzpF*h?GZEB1lq+;}F%)Kukhcj_yhPHbDpI?( zQAD?2Fpi8=HoTpr+r1S(y-;*x^=9FC5rk33e(DIJ!TX_d6Mw!xqV@Sr7UI`cCLw7X zE8ypI5zZj;RlFzEw@}?IT-IP6R`gbPA?5YB`D&o`%pX2FP#Xb=Q7xzgDX2f4#Wryo>QZ?ed$1T7TG)oj3FHPTz3K_jwFnW<>HdvEnfkA(Gi; z`j-H3RRe_A2CgSV;^6@P8cw~jnfq8p?|>J`CzMxMBlwO~Jux|4+FqP5FeJa`CY6p( zg$#(MI}*)?hT3POMvCh`({q7+jbd_oXEHPAD7Fn4`XR3`9Xkb~a6p>2p|oqFJj7=h>mAVIRk%ZNxq z?lIe1I&GEsOyiw4` zL!Tv7{nR8yS$bGrf@q|X%qI_yj}XXJtz6B^eR&!UWjcTH%ZO(!GcPlLl2E#lI`V|t z#=1vG5LWf0T~?Ms3B!AHsHPULNd%YJ_KDlGTt0^sh`3xAUY7E{le~dt?8#$b-fyyQeah z%Jsoo=Tek&BI8vrY^bMCHwgZMgt%FY$DsNwGdqTqZNPsG#sNkeH5A(k*^FYCYxTYE( zO;Cu=NZOQ}YWKBu1nG13zJ{hFbIdA=7BXoAnjmHMbHuhW85^grYOjAx5m!dTu%(B6 zt@>cgLWI4h!!B+sfe`Y~pFV=I=_%iJ=OyD=vnNm2%0*Y37bp-dF>ER|$f)k2k5E7r zZhdopV&gNcX%a|*j;q+5by&=GD=I>5yDu{^GvYn>@I60Tu0hdbpRL$I^vU6m0bc0WmFa+l06uqHe~SZZ1R>c~8i zP5LVPdu1ySw&%A85f0c+OJlxy0o&N#$vS>fkcH!@;DX?=pi3NIsBH%$*ggka*e2~q*zwbq9*`;*46w0Wi^{em&ju&Ch2`3z#csTrw3jBt*hu^5RtpUXPx z#A<;ZBh3~q%P(4q2@SR)>uX9vKCq^_0dSw-8F^7ELvOAqwi#3{F-%BS+oLas((|ZX zA-;OW2#VGi*GRz1f-Yd@^~ul#g4+mnwhNB3!*O>7!GxI=&6*RrLiri=3GeXY>k}nY zh0i`ucOXUu$SVsbR@IsR;9wIm3}C`|A86Dl0=8V~fA7_57-B;^@6Y-ZrD9B3M-j;K zMoegDM1rDjE=XAfj%_NJ*37V2B_nS{Sy*28mBwk8^scr>3j#V;l0Gom&jGd#MQ&7I zjO(igaXvpBe~bLI9GH)oz*t85`D!uTYpZqllY;3Tq`!15s5V6iCWXuLNzH7`F#P1# z+NoF|@z-hjKW{7y#z_{oO1NZ1GDXnF7!%;ywYc%dsYyE#ILWxdgE@yHDaiHW@au?P;M-Q5HB&D>cHD4$4?0E zbcyvzEj2F09{_4%3>#S;Iw}?lC};Prc-zYH*9Kp|=xnH1cF{Bv~)A@G>7P zmOO({B#u89?D3vU05NW0YO_3v%)z-Tvyaw(M%brQ^+!th-vUH?X%Y4g_fldARAU-V z#FbJ%#ky<0cDZ30(j$HV+%80K)#gg$q0Cq$S4Yz%g8ycK@L#K2V3R1ZZe#y z=$jD|%G!wzif-pj1d=(b-9YgqzB5~QD1jOoYac&mk7uyRPmHEMYAJ-Dct*}J)M(#wbtB0 z^KP=g-v@@0$0K!1d`Q1juQq1-IpMOice5YWSB4;pVP1*WL&usgB@hXKwn`%`RCeae z8cMF>CfF3~M~xT!s9e1t@t*gvqqn8uKsph8vqQjQhJ(L?6(;;G2_#*CxFX79D*n^2 z11`W-A*kXm`sBz9SH5SQm5awn%qKeI>}$BD@zP;P>%n5u*JNZuRa`wrYx)4KZ^ELX z?~Lm!(tHD4^{S-E0#70Z9^Q(jzZuW3G)D5|T?HO4T!ofPbC@Y?6GGL)Mv@aptuMmxK zaC|OO41x^g2Y;_G*;-T|ohvddXv(~-vwkXfCb9ivO}jbQdxbf29X3nu%&h$Z@HFkp zOKoc9fTy&ePqWf&ovupCDOxBdeuU}Pfse~=cp-2{T3q1WTPkg^X!*WhI<855YOQns z<*G{}vE8`H&#-nI zmJN>qu)XvbsJ-^#$IBcoo&zi)(s@q=4 z6egI-dJ8>|;bXE_js^3HYe;hU+mvYTVlX6bEY>HU>>E?gEz9$RoA}_chq}wS7q3i& zy1d2sR-WTbYK*ztW3dx`;A|wsj9VV{3Z87+EnXI_|QTCIq8z)=C)f6^@6|EBD@&76& z@LS}HB0nFJB?=P?7sheDN~_4tTbv6ME&jNXAx(X2j%lDR0>{DH7yEPk+eWyEvIu>F z0nc7XH>!n-f24M-ZW_UnLo0=KGM74@OMG)eg%=NKQnsfxN+-o``(;n%OHWIQg<3`j zBMP^mzJ(dKP`yD0d}7EdHsMwkMiww?~A^hm&nPqwN{R?4!Snv{U;W7Kzrhe6e6veZn8=uS9RL<~%S@ zoHKBVO=%r{x*8r~po@2jP&D6E$D-7jq5@XW_|*J4gWgKo0A?UNDt*3f%c--gl+EGf zZZwN}XVP?S45g38D)4Qutrdcsd3tD#(rC3wuK${<)wtzw3uzk4|4@}`k^Wt zUSLsR$Ggb{Ue6Elh8M`Z?eaE4XdCF$g&GGT8?>I8+`)yiP*;b`=93@x;zW|>#kdNAc)4ww-Ln;{`hT&e0~CFKYO7iOJynu9LjDDSrjxd6!m zFBalh7i~4kcIfiedUeGG=X?m71EJL9Xpa>9JtP`$8mdP>@^v^!wz;@U@Edl4(5X>{ zynG@N6U1+r?`Kjg6}IdrbcT)64d1y&3$jQU{fvn!vD+RL-!)j8iBeK9!AS`U?huW`OE(-c{inQsR8`R=ODR#;Ry4=DDzGyf{*rz_Qho(TFO5HOd zrNAwvJSg01KPMgN3AU-0ciQe6+9+v$GA=5vwOOF(nDmm!+?73ES+t%pA2w+_R)wKU zS1jB#60CPG_zaYxMWCq)AZCCL*1t&VT7_6AJWIxQ!f!pETHHd(;C8&+`8X1d&W!-XWUnnHN5e5XF4 z?;SAtwIOON&AKqsEZSAw-{da-=s9gt!P*@4l=GaCKcfE7DClfz*?o08{Jb|aznaj3 z)-;p2#{bT~*8m$RPqc>cT3Cc~^Z}UVN1@2)=T_hzO90+7SBxCsl4P-_8&8?@ry;kH ze@QPA5j?hCvl(ce-#V5neQdjHnpsdEW;I$^HWGgA+&16m4RMuvb$8=vnivVl}F77)|5N zSUGAz~X1DrG20S$sZV_-(u!-?GjicZW#N1dsIDYN_3;8-tcqU7k>TOwGOks?SBPZgjfL(y z(Q6Ci#K;pbBkAsx{|A;pX}^*7G|*8BE=Ab_KGR-CSkyu_M0vWfN!Ku{g=sV_XRe>Y zw{%M>ScMrC3N0xaaY>X+tsyR)oTZ@6$^Kq^ltM%(RqV8?na850g`RE`?5E0N9sGVo z?!D0e01ixXt7xm0PiMP?Gh0+GcJYIp?8qihWy1*}D$#aS+qcc-{jM z;-zh+PaZI-3JTen&eOf>82#%S#DeIq6UJf?_ypf~>$pjVx2UsMypF^-y!! zhdUqkJ0uedrBY)t8p234G&_h0_3bKVP{t5~S`~T9ZFSRCtn`|07I%fsB9np!2DMx6 z9EL+Y0P8(NJ3_&bJ!MT|^^iG_(+^fVxt&sH^QOL z^#hh&YU#D$ZUQ-32ziPX2<3No${?PFSzx7Fj>FOZr_B)nBV5rknkj2h+Hjx~g*#QK zT40$?*q22uP*T>CI79Hz%HueAiY{v7rw|8>0HC*HS7%TusvL@xI-&y8tSP)M6dklD zR;;ae=QmyRLK7DbR0>YsEfw}{5g!<7t{M?!ba%pwN$1c^o=dJmCkgjCXz2Jcu}?v+ zhw5TBp1X&C1$*`_JbocwV{mWc_@obwl{F{-00;j7^=Vx4X%clb)F21qyLKg;yAZBI zqgGmOn+m(w{|aAqW8}NXP&(0CQN<(ui4rR@Yk?$3n*# zbsJvW$9ExtsE31&QD}Opa4Merc3QmbWkv9<6j1614ZAPJxKc;%$y_qqBb^}D(`&hX zS@R!Z$$Q;cXy3fsu?nKroV1WL7M9uQ$eVUGpIyj8Xkyz)ie)~r0Urw5@xewqv0VXk zM)>Jz%q#eRsSJJ+UntX}g_c8{couaR@Me%a-cjZmiJ_0Zv$$tjU?Yyiu`Z;6qempE z71TJX*;R3@12dbK6zn?Ds~Zk1sV)uU5hA;aciMaM3{+yYkus-+VBS_{gIGu>P*P|s zkw~<;o4K50|qff;Qb?&1a+&~7KMxKm3!S$2~=Cf=vGM9 zrQyPr(`Y9S^RmvOXL=thG&`1oVS$ z$uaG+*CGORI9n9mh=Wh5Yod4n%jLNpUxys-v`!@Z$E#`7EYS)TDQUr^Pp;Xb)7A(2 zhcsqg4vLV+Rb?YpeG2;G&8j|j@H{4I6UT^f ztCdRE04HF~?I*O>DXg71X3&Y%83Z|116fLPK8+5v+3@r;;0GH#wp^zfw+6)zj(<-8maxf0ZDbJV;UkUBl=Hf{;B>vCV7cJ-SgY6UK>yQDmNCl9Nt^ z(%qY#ieHMBo($8aD|IK~Zpm|qmYmDIJ`OH|95$cN`rl9N*)j74dC`$10)3nxeWh}E zOgfbm;ts9aWt!SDO63Mk!!XIiWcrXonE&^^^r=?zG{Xvm|zy<#Nt5 z&JQ(e%zM=f)t)lF^yck0nS|J<40Pct{9Xk$qOh+~Q1i2)$stPB z7WD4!Puffr?lEb^>oH0=^xk#?tj2XYgHua5msxoMZLKD$QdBAkJBaNfgxMoIDA{~l zYOwB76qO1PbrI2KUb@qioNdQSR#+)s{TSkVu%3HBF8kef&J@n2=o~4uex1GJdcLu= z-I(D(TxPgmYnjH689wT6K3|wa%V8P>sn~}S+H%jv)_I0@kpnGhdKKO|kiiZWw?x{8 zblF@-dMz?~``!f_;8K!{F5 z>e_ufm?O+~BvasixV)UwcVL!2qhM#$ogmOvESOH4%0Yso~q zU--mAmUSfI;-}g*=CNO6tDfe#bZ0P$LD;=S0yp7LqN_p(Xms(MS>rnD{P!2*AAr;V z7H5P(N3>db2XWdC#RHf-4W2PqN;PE?S;~e?=aVmP0=~|%#MMPtG?AFkZ*{881(V5E zqLcc^cKg>p@uI3ke6PI)DE|Nm(r6W3w8Bo>+5k>&@~GQal3Lj~cW{=+$0VKDtuSI` z0T3#Om{3xB4&pY0nA_#J#-Jc!Q;pZ2P(l(qO|GN!_Yg`KG>iqPCeHlu)}E4+&}}$! z_RWrIf(lX~SlfXqP7+5(5zK7EaFB56!pu7e4Yb;KB?-uPE>de8fi9ONJhJ>(5R~(w zyhMo%Jd#6=1rhjn87>BW+4G->CaK;8QSo@cVd;sT(TiW*eAB( z<6@_@71AwpW-?f|@>FaST6jk(;{#l}l&fC27J>01SHavJDR&9AsUP2zp;ppW&a!OUQwCOfFUzt1fxtt-#1^o}C^V+Umo%O|32Deap4l zZOUwM=hQve?Q~#%-|brH!2Q44wbhog@XRc*mlQe*@lwDgDbxl)b$4)yi-UhLv2Cwn z+g7xwZ};VAT)kb7maxkcM5LIhdUYi)4C;~p0K|?>qT7yvicU73Wmu4*{{ULXvET)V zbu4CO53o8o$UD%n#!2-}qGBiaY*fZw=%)(S+IFfLT-$)I@ViBDX`4x`L<~m}_Ku@e z?G^EbM@FwI#-auW6*VeR%|~JoooZUPBw5F94Z(;62S@ovIkU7M6$%@uo^{#`La;M& z!^U;x`R=b;kHBoFfL@Lk36;L`w;{CRQTGcshC2Gjsm4-#NH$4JX&lw~BzI{zYf959 z*m1f+_}Gf`XHNvmA|c;NLyb6)q%9{{Qcgr!rA+R_%F@j)+LTmM2Pw!ynW!5zk4R)9 zwC!?UWm!DJ_My~xr{H#d0kli+oT1JU-gtsJBb0@WMPzT~4k_7Yj5N{#LAi_*l}oVB zYB?Qf#10eGbMl-5uO;%C55=X79GeGIkqYq>wwlP#A)Timgfj+s>`EEp%V8_x;U73g z-G^yik`ROd5|AhW8i4RC!!*8;0TBuxnSf~Gd1t1bU@Faqp&%JVJ183v*up#j@UezL zdeWS4L$^T*F{c=z*7-PAS;;bM%3A1)?!-=Ly0v?(sd{u z$5`@lqEneB%?O^y_ci6i%b=I@F;5(lrH>mB8b$gz5vZF&wFL(bFto!72yFv$QZ;xr z;f{)HfWZOEFT`;M9(1P?x~zbhq%)_B=ZJfb<$YS=>iR?}jJp%1Avca**v+L^_giDH zK5}c4vW#vz0x30Z*3CyaJCrtqnDFgspk@szms7Ti+BYa1!Pso#mn?B-@P1^kn|YNU zD3 z6#{EA^A#4V7La;4f}XvP(h`>&aV08Bg+h{YAcL$MG~&A-PaaECiFzuez`UbG#56W1 z{{V*6(d0x!M4>LU>J3t~C{-#4aUHQ`=)%o0Znr5Wgmhb1Z&!3MFXtg*QaJGMj!M(_ zC~X#B{qDL{Ky^l@G7wND+MZEOMOEV@r0cJfQm5A~g@~O;p&lv{nk1{$LRPN3FBnX@ zrj&Ort|Es~6!2>e!ONIjL&`pDV!rdJbJ-YX7usg@c_&_hDk*I}6~|6$eJULha8Zqx zo@K#QtqRr+pIk-6oV^ z_s5Wm{x<}i+-*Q|u!`li1w&mdyin5yf{H6uG~mf?tI|TU`1vs(lOu6m*b;w%N{?2cgR475y(@&A!tnUGCcs=MQXD8zEf7)=a`kFJAX(PmZZU@54l-)mv7{QL z?%mxXE~-}uw~&Pz1uP07C#6JLrkIbJ!M70V8K^+Vn8FDpRWv&Lr3O_Pkf=zX^LV6Y z)14kFy%KHSZ;i}f0**qpywW(Wz7E>biaSje;}0b9*tyaIv$#DGT6`W)ySAMatFk;9 zhJVfB@cfl@tBO6N-6}RNXDnJ;Q!uP)G>#}#p$f%Hr&6m-^;XdC_By(Uinz#-eo=@U za3>;>(Lw2*R?@}7LpUb)u07S_ej`VlY`C$jmB|{4!PYBgki$CCgowQTjMnK~G+R7p<-x`BT=(V;5~G?(B&N@%DhfHI zyu+!~q$^kbZ0>wmEPqwRAJuJ0l|hf_Q)AsWy331F>&Xg(`=Sk0LS3geN$J3L8#*6^ zjcE_E;&myv1|*)ae36o&cq9@A%pd{(04#RWeqFmyrfC3E%EZ=gB|POhfwZJriCjuB zM6?ZbQ3%Pz9=yk*M{wY2sca*$7?rCM5=uu}s4Wc-5Si*#z@idjD}tZd3+ zAfwq^54NpJLxT#3y3XlLw5nkxh}iTayke2jTvXU`jh(EmzqOfq9So1<9YSr(W?u^0 zx>C|X?#JS@D0d;A^&CzU?$>43b#Y=0IuG!$N+&|G%r$zYK1is?I}pJ<%_-4ehj0T| zL$W%{(7O>09yOqB6;Y=`ljipeJR)ko85M_QGY5(l>p7pXZbMSIW7f99)$b}cG=4d; z0KnQ;5^x%HBN4JdejW+EC$6!Le`uR(`hLv&Svtk*g@*^wiAs{O?j5LZ6*#%2TrM3W zjQj$=aAldm3cZyRvd`&ZpA=G0EvE-5w+6*0a{f4*RAR4D}O!VO2DM&oXt(5r7vrN~&`lK7~%Cuc{1rWu?Y(Any%s3{)eZB)!I ztXuNPgdJlF%F*yvA7{wIz3o)@TWr!V`<=>vE8KYI<3SqL4y6F%Pc?9p&08xJEXp0Y zmXD(1aZ{vfHsdfO;%1Knom9yMBAdI{#@{y(+M8EGg$y$gp{(@N#WAmnm|`6l#9RiK(n zmytrj!;KZs0Y6mbxSM~bWxv~t8u%Kw1A1kRP0-(pUqKki>rw%n5mN@xkv5J6UjuMNv9J2Gop+*+d@} z&+wQC_QS0&ZhFBR6qAt~4YeX~EGPZpHrRX$c+qm1i!M`YTT0G-82pV|;axX!O>1pR znZ^;(i6gr2H_Gl1wyG{Sj65(qc0;YA-FggmkB$=O2hH6qM{J&O*Lfmt5SXxJ=&guy|UJ{?HGCl#W=?q z7{~B{3ME52(zYQHX-0xz-|%rQ3OFgS9#VZ0ES#s8mSGgZ{Sd;M^{ejk7P{G3RSzwQ zDLVMdK}vom$iRL~Y2rEG@2C3x*AhM+@iGwR(42`L@GYt;0x7So(uIvyh!n%CrW}^P zyWoCi=}40f(ETJyP9yy)yo_l5;f{ruAnprZkzWK;uD~Uz2zH^;2Ii0x`n&*AF7^JE zMMg`ojw@3jg$x;Ls+CTHjn)`l5~iXYPo)*#$?2-kkha@f&9KSnarV-F`zHW~gJGaI zU~MV=UC}9wyK!*yCJ#dJD!odtRfbb2R$>VLH33KOvg+KbeKCbV+>quVK0X9utP~zy zA+IB6!zbbLlgS~S9=@d;Z}1K2CNfogp$;~vHV%~orLua!v&H46Uc@X;Dpe5>$PG9R zIn#@vk0I@H5B@2u0Gv%A&}!A)S4ixtAflU8gyRFOrpm^oK?VuuVMV|0+lu28zmywC zp%Gm}>f3LCI7DUJhFhHYR)PKBBXOF8Vm3Pt<3mLs=KK!ZQK=Q}Y|Z5<@lf#j#*@?( zDY+@~AMmh$@h#e!G>uxdcR(pGHlz@tP(p<>76lPkR&42MD*pgBeMbrRiu+b+#LcHH zw#-Q`9T`h>p$OCo!YX;Z4LH|Tk)Hi9@-nd|MRt{@+>+^C2Uv9{!6)+N$BInFtg}-9 zjWQ25K}VPyAI0WuCD5IyR;8fxr9h{v$XQj$FZiad;-n9Uc0u7%h8=o?BDCmpu&06X zZnFnJD%?pxP)$BO(Zx{2QX4^c1Dpf0pU-L=Qe|E|XR8*!7 zYa`Ckrx(V(-zc#LMRnmRZ^04xz1L$GNpw(qv+^>WT&np%@E8cCEa>6lQj|7YR>~R* zY~$Bqw$9Nb2*u4^UEDL#A1_Q10N#q6La!ZF*eWs>uMCkm)Xjw_SS%`wBiK@nv-wI1 zm(}a3BN*yce1d2r7;%Hp>Ix6Q+xK1Ci;I*!UpgJqQaX^Nj_-<>q)@9^-a=Ra_$_S9 zWr_B1XXI)(5=NQ^AnRf&1HG@KV!aY=R&Pz#d*tb>4rJyeR5tH8SWOA@f!;euUv?_H zxj2N4JM?()E8br6AGWSP9w2A()9bQ7@F+6HwfDaat?G@$q zd%ynSy5P6#u;=Wx;J?wb>U}}vcy&20e+;_v!?ZI~DxgF~H>QAegzq+aF)&fBCFUJQ zrJ-V=_yP0M=hTzwww)q=DHi?rFNSw5>S;Cj+lvh|49-|jI_Zv`ZquvCSqCK2rK_Du z1pxcIzw|6${Qm$1JLFWJUi)66LQ;Mw$m}L24mG7R^GnSuLd6shRh~Fu7O3mI^Pj#T zoh3y8?NSbO-;Z~IRS?{^ElTLoD%mUK)_&`Ewr>n9M4}-1$`!$0wWHnSEngu^e*WxZ zasuzfxbLDDrl$*%-rY#2w@u!ShD%`qdxl}vs zkqthTuY%2Cbt$)#mMl9Gx>uOgZ0(8>+#D)Q3X{~OBpV7h4+9Q_j$qPklBX`r_7*QK zjjJVnq^8ELK7_b~=%`eDK88Foql%DAlm_q)XYTIyU2|WquLV>g$hgT%>gRnU2t7E- z9!M1jBV;KuIlIZ1-ZoG;v~wiBK--mT=cIYY%MP^aLeRA46qO2s4&pmPgeHfl{{U{_ zVpqxPH1$-Hegel6ZoxyTCwMKU!yB;>YFk5Tb)NcCq~d z6bhBXih8Yt{;t;+4mp1=N_S}8rZf(LPpEu@tMEW8{{Yzu?v5CFd^@o&A3>y*pMbEW zMeCYHOw^rJN|k^QdP(c>Nf=$=q@BE2gd0~M$xwB!y66$)mb8)AY=~*I3H|XeaM0rQ zF%eyWgW}oEG!(^zL^8eTSg7mRdHa!6oQOL`tA^}N;-J~Cu?*?q41I?(=0 zVMFq3D*D3^`}`27{9hMFox5u?s5AWnJd)6U4mp*u^Jh|fwF3^+Isn*~(h@%JB`5OD%Wx^+2hTyNTy!g#RQoDbm5LH& z4%|aWnZa6gjYqkJYAH}p2#9j(0*g+kQqf&X71!J1UHjPDWm9zyOK)X?)oj!fs`@Lo ze@`^w5*dSS^QaXlk8tk0Z`Yt2O;C8J3R z9?IBxJJ7L0J=Re%w^}7nz^MLq1@nm|Jq1Bt-#2y2vC7m-am`V+>(M%#+i-fS_lk>F z8undrp#jg|P^jcMf_Yd|PL$DG>GbLborsT@l5*od&J_Lq*Cf3bp0k6&g0^mqk?7|$ z$U6~KC$5V}yUB^sK~B)@hBd*E#=7Wn{cOEY0*n`i=PW+FI^Tl_z9Cz}K_}EIv8*h~ zkm^R%ok~IHLaLL|^z5Bt_dwBGf!Ci<{9E9-a^D@h}XL=?;;^N>#xGw7<5?G4sgb{-|Py3)p_A!8CxSU*kUH5oqPj-z2j zAWHME{C%$lh5 zr8YQ{a|CK5z#~ZqGG$CT&5KfpI!zQg#hk}7xpD4G&Lf#(r$^KXP#o0yZX$^kjy7PS z;^KKlgr1)3iwvm9sC-*7t4BfCUg6X>x6T%lr2tkytr8BiO!Dr#;v^6;GdF+TI@{f{N)A;L9q_~As2)k-LOtZlEi zw$*W$BGV^;aO%*p%fr$V-;>F13jD&NZvsw1Pq$qv2S3hxya@cGb7m~ZppAMWpp}k_ z;3t?_SfS=H?Zmh0x{#sw{V-K6$3jY)JkX60vGu9lDwt<^4wW_k0H<-Amxl31xE1;q z6{2W#01dWVQ0=b*p&(t+pVF*gZ|$gAqSQolCOzuwDv428C)mO~p0&eHZj?ZXY9W$P z>R5J&c8VE_aaGl4RS^7KwjFLbqg5?Et%*q+qWpim#Q(moh%0BAGy)Ahs zSOG<7`^tL0mI+QFT5j8FmoEhVVH{MhQ3YWFzf|`_2;tAf75@MhTOfQpdgag$yq{Sp zIDXYF^RGhirS!z8z5VNN?kZipv$#k+Ddj04SdBfbHckd%n@dfkY)S|{{YMF?Uy*8tU$JA|EN=)i?_9sUGio7||zrcmqs z9wdiSd9^6|w#kW{Gf^oUw220tM=zx=kHx~KSjs&0Myp0g)v2~lOQo=|>-EsmLcTrF zq$S3ch+?lf*TKvBRefIA#T6F>y$XEi5l0fAXr`7|9ts%{F(^Ey--iJTN%$yp8){c@ zG?4N|i5#~UcrfJRle;AU07!hI)+nis(NshZ9egSc!mvG{3VQ7Bl4Asc1s;`h!|aSC zsCsFly8HmFG|C;wXF42C8ue?kzbIVkgVOb+>(OE*A8QyK!|7aTS*_sVkE3Fd0Fa^& zQqOitYBumGmhp11w5Le;D0c`V;omosBZ_%269s;Bjfh^e%t-M?lpI39QdE;vsV6W& z8o}-BBwIBb%NJAZH{~B1?L~iC&+xI}k`Bml~OsQoptEHEu(C;vRuQfgz_N zSpcQMu$3()pT=|jB4o_66BYpD$CRVuqySW-&@B>}xCqwtjJ%LQQhEpn-Yr!K86?6y zpy!2d<3=O9Q0|3OE`xd?^frR8)niwub10~?b(2CHsXnp~aSoWM2ppk%5kYBM-G^dZx?#GfwP)< zlj>At!P?gpOVr0hxgZ3M^se71j`cK^$IH@xNZ4Bc0OkuP49XZ7sdK}W+)HAqq1YG6 zJvG^7$dCBgLPWw5gy_c0j5)Fp)akM$bQ>1LmijsDk>^3TP z^ux^q>^RTPIP&SHP^NjgqDnb{wOJP>c$T(!_j`yAK zj{UV7cV>u4DpBSd?4uVS7aa7ySC2HqLbpyp*-)U4fPCZSA>ZL|D{O=4y@wF5I8C?P zy6EY-lI6`u+E=r1blZLv2 ztrBkq@Q&j|OdhKAWkWPGU0bnhJi{wth=90oMc9=CREU*UiKy{{)Qq>F?)o|J5Gblp zIZn88Luuz)viR5&daruKTv$K7*!;vYcLXO`>e<>g{{XwP?S7Vw_eQ@dPWWrXW{w{S z`;@C~J=?k{hhdB)IU4k_9qlyesXbO~wE2QeOX*Od(!}@WgV0q@uPJ2g1?7Ns3f=Ra zq*ghk@Tdh1VkMl@L+NIYyFQURfk=axu(AWGeXcGdoqT#?>8ROg_<4JNbVI3VeWERT zVd4oHHwaY_qx{$--bJp2_H_{EOm~b8tn8|WG6z+npl)1_EK&AhJLFoMSBOX_Sl7o- zIN4=0E0sW}97IdxCmOc6>h`Gr0O$tGK`sVSQp`=`iv_f#9F?IO!KSTi=1#i;^i$+H z8ye@%#5=t1Nbys%q?2I$9O4xrZHRQxhmMGRjn3v)V*K?+G39hn<;S&#W>=CJw{ zVHB;S30kuDI;|^|UzjvxObWCSJvexp`H-t!Y313A9wV%25U*8SL-4fSEyo>Dv1u$i zuT(1~bR?5(k8JRXl-_Q{R6{Ax1S%>D*SJurT?r<_iAbOv!^%~~1sewaM$Y+yzi!ey zzc7b!hTTHLqZ7zdK??cdnud0`b14HA!NTF{`#8rj179-FU6&mJBD^ZY65#w*Oh&m- z97*GhDpnG%a%`CS`>EB#;uKN`LwG(W*JfVBhsP}k71UhBM^%Vz08?^6v{9SRT=}VV zyT3X~)r^dhUVQfhXft=Nq!NR$vLvYKVimDb2O>J?b|faG+8wx9SagIm%Si}A5;g>k zyH0Q$(Ii(1mBpuupyGJiBCj=P+;iV&K0v+D{o*PbEjko9>T;?Sc%ZAyG|yEncmB9Xj*)+FFKUfU8l^U^5Vn++aA}3I@{%i}P?X1jK2D zW1tXxY+2PKrw+;^U8YRTVU#n`o;nWa5O~Nu#CC~(Hc;q+g;KvZ(%f1oH*pzA=&t_& zDeIa+xYK8Iw5w;SU>iQS*IsSaxOsk)ZznFiWbtxdv$ zs&jXg{r2pKJDwt-sg~8EY}3|LpLMT9-cK`V;$|Qg)KT>VYWr5~fiIY)ypWiRx+wgL4Ul-=c{>)pkv5kjLx1|p0I`EAz>bDBJGbJ248LN5`i*}PVk82I3tVbmL z)Jiz7C)9NuYJ4p-oXVopnj#sBsY&RSsb9v*}d?J(Z2-|#6znZ%LMQ9 zeyLEjD^akniY=GW7K7BQO`f{5gz>mOGUOB9f|9I61J8*()|LJa#job0+8Cf>2BK;! zhp3Ui4Wb#2g?T)t)Rz#Xo{EAk812ivpp~KcB`GlOE6s6{kV*7%^i7~sDVSkA8g9;T zae+H>$tpX>Rmg#alC@}=08Od^~VThGHbrxntoDs0?!*@+|n z0H#E#2tLa3)2f!gmy%r>;y7Opr>!Z$UwykR$0+Ou9IN4^wdj-0;mN|6BO!E7bf^aZ z09~b*cJnp0h-XYY!=S4Ie*1PFm?)s}xHM8+9?cM{+EF;U(MKvw;T9XOGSUuQ_(i91 z6C$lmu@c&yKgr_9@US3@OBt9q;;CYeBh+wFY3eq;kut>${!N%GO$z6uT4mOfdF|Nl zVA*FUBPE^rg;T}@F;C?!co>0ja+!|&UBsQ-ekt}zwds{9NByb4@wD<@P;<&DoX0mB z(}-0&o-kq>r!^?6MKa=drNp1O+2;PRv(1|NLc-11-iqrAWe0U9O}af5v{@qy;?@FVp(=yW_4Q z{{Y*x6l5UtSc`B2^|4tqFZacNg}zixHi*OfHoQ~z7#xt85K$q19hZgABer?198(p#|?0Elr!xigc6=oU_8M@F=Y`)1QO zD@vGmrg2c~Pc{c!9}3zIQ1nR5I~f?5r31~ST8F~ZIWsIIaj2+udy<-y)Ga2Bp2sVS zhTtJ|4XpY~rYd_jy&r+_4(gZ7b9g6m)(FpiR(dUcr}IdE;7j;H_m$dA>!f(giF&7| ziUZ+mw+0vdBgoUQ-tH=OS{)20&1nGx+>vLSWg}Ty(w$u<(Flx#bx^uD+Bln43WpU# zBbYt{0jZ1|f{SJ0i6nG=+pRn@cyVr3w9}(M9u|5R|KUPXDQ)g*4yw^g5oruR3ag2mFvx${IGc(y6#(TP=S(N_;KYj&d6rsId^s%IZo* zO{H_2tflRlz_^CTwv1N2a_TEpU7`08TVAPu^R~Tm><3?bufPi`5!i~=OM_x1r6}|0 z(vYimI=okj!;s+Z#3dQ(<0)p9=(k`v#}!(jN6a$zkh*+DyA;b|83KuInC6fvx``lL zu_Q~oj0AHod^0xeL3-A@W`!jv7`=Q4E~|DaZV|15GGx$SyNheTcP`>Q_=nXHuAVBE zJ{Ihk5Fr)IfsvzwwxPQn5%EE?X0bWdT3FR_x@ZNZOv@qMAx>!OR^ou5E-gfq>?s`;Jz-5~VEWNrGcD^(}R!ApZd1nf;qxi9qOqWA-g9g=Hz! z5X)(&xi&zit0WKn^}qkb04opy00II60s#X91pxs80000101+WEK~Z6Gfl!g55FoL^ z(c$p%U@)Nn+5iXv0RRC%5dQ%7l;9lr0@QE;m12yP0qr)*b6{|TFs%45Lw3W)N0trA zg`hN10a#KPGV+#vDE|N@{{WzA4C5!1%xHJeoIoMOLBc`4gl3o^!u2xt5OUx;3_&J| zQ>$EBJ^YL!;V|Z4EpSzksUshQJ3Y%rN4JIo5;gHw*u$~ z%3#N>Ud6TGbc^N-B|}bWL%r}hH<`vFQh3>irT4@}ShlIi411pN$U0Gi%d_zh2>~w| zDJjlppZrD7!o|YMF`CscB$DJB48I*Y1tTO9A{73)(oCU%Oy*?tG@#llyr4A!GgR%k zDMWZN5%NcM=@Zc4h!4fsMwCJMm*t(4@pXs_lzL#BFjbDh*7SVlGQ?1Ay$X*) zd4Y+@>bVll_YzCSkb0kx*YR8vHe&9=oCl*Rf^o`6POsd4=Zm<9XhffR*#ST9z8>~Cg@tQ zTC2?&jwo`os0FV`W32Mr<2yaxhWpBV%Com@NG70yg3KEUbR0IvasjACZLgt7p@^t~ zO~|2WcV?vKTy|>*8>kh8crg3G1q~&7?MHQ)QJCCAoPpsCOYKAf$S?5viqcJ@x0f=q zjR%Vhuh|qz^?mH^Rk{``5YC7cJadZ^CrcY$J3Dscn>ey_lq%hHmzwY@q0~2;LC7>Z z5EngWE2W6DYNV?Yj0lY(g7Bus6rj15Qx&iw>?jfBVx>cs@MZhN(Gst3-MF+tr3!JA zB=mfoZDbmYIcl94bTvpk z34(^uw{F34ikG#aVa2vP4E=n&5n>Ahj2f|M7Fw$R01I*juqtFkfx-*R4UbYZ5OE=9 zL%|dV05ArnbYWdZ%YNbT3Rgmxyk@z?yh-i6z&a>6B8y&P4OlrBEjeR1Ex?gWw4P0z z#p>28^lltAa;!Oc%IG!n)?>DC!Uo-o%KDZLiYPcuH6Mz$18&|@H?#z<2N)>%m3eE% z8z^M0j2N|0tOKH|j|5`GGeCjc{o}?7UxEQDy*(3&wm`QA=EEV7ywe9oO(9(x3<97c z$4PUXA_b5hA{@~Gwq9=m7kd>dhyX^wT@wh76BRFRVmLd9OB$UjoE63J(YfzxCb*S+%V2e; z#gt1jqNfhTa5@ZO^X~iZ(7{mghDWA=8aSYElHmM}ud*(R=Nu{kdY5M!8oD@jser7v zM(AH5XPIuLLs9gH@eps-vF$Mgtid!?tQL!@172Ck_!9hq<}jdBHtLC>*m(}3R*2An zZAb-T+j&$WBnMl{=3JhX0@SR|ZWIJBK{~8Ft2xG-6j=x&%!*@ZD5)u9oKaJGl)GlX z#G?l=Qxc@VQq9a@fQ3B4HcUd>T*FiWK%r_3A|uqo9koVQ73j0_5qBLO_!DSu#&Na@ zxuPbL7AFX&pR5rE9=M_|hAE1WE%;AUYXWrUo*>jovy=l5ox59)7y3tCVj+okMqw*= z7d*>PgLIOD>cwD}M+KJ(cGW7sFvc=vT#y2TpsfzXaQw$DcGvAzMe^KmQ~v-0nfQtY z!1qe3&&z=S0GSzWF@mzu7Sui2Q^j`<`B8v$3Io)5rsWAwT(Z^x@dFivJ%M9G2};}G zZy-`AqQ|iYSkwZd6u^+BGl}$?O(iA}aWBRRg9OO|sF}WHX09Ez5z5##p&s!TV$~?g z4iB^iT(P)f;~AnRmSQr9^eKz^j>2v?b1RI?9aLM? zBCNIrw6GiMDYoDut4Yw61`!fxx$hlmMT8bbC2$d`R5klW9vqHRMNcR%ANCk-16!sc zL0|`pg>r5#9}z4%;!$_Z3f5WXTreE%4O@qaONJ<9Ls7&XrCUG;Bgj;1w9s^zQUFUF zkJPa5;Dca&EC8l*?&jwLhJul;z!11m0FWvHfC>P>Vl84>N9b9Rf}8}ib0?V9(3}4N z($Z+#3yy|`q3{5kYm_Z{RpvNu@hPG$${ob*#I_DJ6Lqf>NFWap!Qh2~){}{i)+Vyz zB&J%RgPL~*7}T{^n3sATj?F_}I0#B|SGEIaC_?b&2<3J-{?sF@|5s8RSyi2o2Uu&2g z(r9bB5vZ_&(FMu>0H+^lEW-g=crYEx@XddDrAluIqSo1wpFSag_KIWw0A+T{uh7o% zEJ~UP4$ZN8YY4SJYLPR_hzQt6Cr{IXK@=zewO#<1s+Ja=7P88&z;iiT^=bfGy{=Vr zFUuVe46*mQNi5U=%ml>z6BbS(2e^aW)4HI_fs-UEg(=M1pjU$vqMiGfKqOU%GMZYJ z2<&2cAar2V+G8MI8e*EvOf`#*qL(C7L=YXLhAR9->xhoWQxc8eXbS^rZUSshQO@zx z!rT~4Brok3QR~cfOQ#ZmX~R1;4c6Cqg2aE>mys_tn1y7dj&Eg5v|k=L%7d zglGz6%xb!&mrnkhqm77Eb|8{u&xkKV*QD(2c`pnw1Lh5Sg~|xmA|kca-asTJDGDm) z5pxAFpG2IG^tQ3WIAC+D=KF%Q+^SHN8;Da{gIV0eFh=>@I3*44WwQ=b7deHH^Oy_F z-Uo0DxQW71Z7-=u45bibFcZ1sC}IJmN=!4!7zYd)a2{473CAeN78D4@ZEga#MNdxV z)#24ASA1O#VUwbqQYx}djr8hfQ|$)5`yyW6jG|S_rrG3#o5{u!8~dxlOy=n}+!de} zV-Cc&pVLvILbk$d>>*iUs4zGS{H;oB)WL8DWhqjv^9z&|#kR~$Lo)P;pc}m2RfodqgLYBgCl?-_u z$6q|kcLxd0zoEHCpR`iTa4W*26c6DtG>C&5X!lh~m{Ww7!htu~*6}KX2o=tL@PJCe zxb`(dfSMG#+_Pf1ER$Hvu$;0)Sz?2WA)8W@3^L0TGnyjZV^Z%Bq*`)ioA3q|7f3MB zpFm%93?lt0K(_%km8e_qq)6?as=AY=?mB6<>a|g>{J@4cGgIf(uy96_xf5bXH3LFS zQn3}LAleP4hh5!VW*p>jUw{_!<|wMlN2uDkjdVdK<+OkTWB8O~amL9|#lTE{W(rvH zI+eIG(Q!7Jr3Jla7GZo=eiF`}oUNDGQ93pZi zE0}=5Dncctks90w(#}}YX-N+hskAXkO{`e4c`B}nS;-KjC(TrEZh~lrih+^Np_BQP z4mfg5jiOz;figheZkY@)!gqu^7P3JAklrd2D$sO7z!yZpK9Zxe98raXlZX_JVrpY( z8C^?*dzKr*Q@!^sRRlMdS;VfVtqTw4QWltLgO)XL?650jsfg*^EplQdxb+svG$7-$ ztyTsCH3v%&1y)(83unr61SH15mLY^j#A!1gDHml^h%KQ{n2Z_7)LTYQNU#+aTfqUt z1?x=4-N11Mwc=TM@dG@sZ+9$9uK7>hl>cKx<3T6Dk-HYIK~oL)CT;` zj|b#GJ%T#*R=}0j0hxp}uaV+*LfD>QD9am)cN%~Spa5l6z#OiiW>lYp2S6*5j;jCy z0Kgan!NChn#Z+)hsJ+2RxQ*Pg@WFF2IC+f@;)cn@mncunrNnNkc3;y=qB-dPU=8ZJ zj;3$Ks$_y_hAgy~nU=80h<7?S2jWNA5!S@W(jpMzU`n>;Q@lqcF-I}OR`LRZCdeA& zD#@qrO&h+`!g&&r@zeu%QrxtRw}6l)9)Cz;thNelMA=?AU!^wk z#iOvK3i(SVPEZnnU;}_L8aTkc5zxWz5G|-jW*pEC>PKpXIc(Ir(Q}YfkC~Oag0aLc zYbe&qPJp{*aJ6XBkZ>*3iG7=3a0o8AVO2#}F&7zhfE6NoOAWx4{32E*n5|639mQTE z`!O21<0*s~W};5&XU+a1cM}h^bRtJ^3DjU!x`j$xI5P4+;ouDd&?ys0m`7v{Q(iSd z7SN)lx2MkO@B8Et)t~iZ%p5PmqHgF8k4Q8-r9uYAjxIrpaDqK$- z_DT^V>Z=l#po+R?!}qvrx53by6*j)%~FCI_@W)Ux<&4|IvyfPv8s}m>g5;3Tu;vi5gl{Q4MmDHiOQgJwq zvA0{)LXIHSppq8GrCa(r!LPCN2_c4Fn$>V5tksHaK{60=Fl7h>R9MPEFkj>jHr8n# z5v2&^W2=58Lo9LPIPEn;`NRX%b$A}h{J>;SurtdFG9uQ>{_q^9OhDNkJV8>m5aP=g z*yQXc4u(_j&1OU357G#w;&MXyR{3J$W;_{+w@=DQYiVW+x`pRp8{uf?Ud_0Iw9yfw zt|AH9FeS@S8B__T2;D`kqN&9NP;T_@j0-P|CogH>$jvEL84eQ#=pTp)DN#%mt%}v$ zMo6A_E-5M0S<-q4(4m$AgXIF++`}nBzGrR9&SpT&2hZ^>-w@pquG)i-5~X}188a`* zDY(*Rr_{lvTjb3~Bl9c`Ep)XGTrdcscC{YUPRAxj6e}ERH4C9e0l;R1Kzv5KWjcx)QdX&6CTCuKN zzEkFIm(sm~DeyulUbayU8u-!5eJ%?u+%&5(%cNTDpth;DE>XeE1W2SswuAwz#8Sed z6z*~Ep|HN=w;V-e4Gf@iJCxFnmjO8VfnVNl)I8zZIDst86OB$rP#lBoV&unh%)<{U zJ&1e#H(}gcpmGE)2hCEku5(WHIp887%T-HtD<&n^TRWV}p~&~}&?TS;U~T#s296=^ z@XM98)6Qm9>-t6t$jk&51gM1kC@I=pMd#@1(3wty&&J|bgm!MV;XX@&DS+*O3M@=2 z9-J$B#lVHR$`liv28RWBf#||e8_t2s_zbd^a-6$0pgXG8wj>1dA2^7WqZH_XLdw6C zWH$>6Go-z9k5y1C+(Ws|mPw#cjh7E5aZ>MN3sol~B;WdWhl*?BWD#^c@&==yZmf{{S;0wJ(V6b`3Ljb;s!7 zz*0F8gdJy!R&2;>t-wTyPTFa%P$Sa?htKn%iy z+DHKWpioYS5!$420`X9BT1?Ii!H7}~;@jquU(t&9id|@`d7>(qbf%K|yJnRz0xeeI za|F_K#%*&j3nqn@4w}^1^@&BaC`JcOtkzL1j0me`YdJ2%(iTt`v^7_{!vMpu$b>in zpa6u{^D#}c1GLF_mzZK0GU8*FcuQ9R#m`!1N}|+tj3RL?%?{g&U>bq{0LUwn;$;Gs z9@2)pk1>oii^~q*qudI#B*x*WW}oR9p5aVUg{i)@mMg^{t-GE8;jQ=I0L%Iq02moi zdLIENf_gfO!@2I_n2F)4gqVO2Ljm@MGQkjJn6u2Y;s*#R`9F!3aKcQ(VKK>|{6I}! zdE{&g*UAlJ=&K^qv2>`vh-o&z$cdx*N3>+anOQ`_louqX(m}6$GFN~t0IRVM5jcZJ z6Gf`_2KzwT!@GatV6WW)Qv-zI)To!s1A|OL-g}q}aX_s=tmo8p5-nON<$!7+(J(3M zITE0-g`HnebRNJXgLB_halrrd=X0mvGDAsW?e z@*mbyAyhH&KoQ)!-v0nFwpeWQKQdb5k}`_vXPYa`E%!HU%JPaDF468=)-&g(_&WUp0N7Qu&9A@A z6(=yJ3joT_MZuhIILnCBn~WSl;trUC(oh7V)VrlZWeQ4+91#aAG_DRMf0P=*<{)1B zsK~i(LpROBu47pJ4RMG9#J=WkVBaTotmZPcgV+@`7>5EnwKVc!a%7nFV46HnVT3YQ(i>4L~B*%=w7e+8_gITmTtaM*6d)nQi*n`~JX* zGYZBwA|g8`e&RSXZw(Z!10W6MZzz2hLKl8GvJ${zD&P)(LvVKnN?7?!<`&ohL&^P~ zzKodYa7(rQp3-KU_)x_6Zq7uP!PL1N)Iv$RoRAflh{3E(vL$K)V(eBBHUfz5p~7;u zO%oPZRm!`qy9(kJ=^DVeU966W97-F+qTsP%nm^xC?>m;5g0pd2xss5+97lW!V+C6b z@c}93ReV6S3YT+O?p5=+j~Vj^YQ|u*6ud`l9#7G3rL{TOT8oKz6>E)4enfyUQ@b)Y zQs27Pe5zl6xsd^wTM&9woYrA7W9ea4j|wxR8M*PEs2O|Iqh%m<1iK+7$19_Nd z-NU;(zSxi0d;{a?z;fL=1JdrZ8nL0l9OChBGRi`Mg0h&c8@i1`HGhZ#zq%!v*^jhC z2#H^TO088=w5ptRSu-i!tO4d5q+`LC#Jh1n9_7wjSha@c zT+A_W371gWPIowj4Ut8npbGKSH87Z!POc|WFw_cLhFi!-7cXx^m~&}Eu4 zcF1!fJ)h{mg3#5wm=HCHaAWY59%Wuu_=|&4m@o8i^pHWydxl|Hgh#>$d zVaw*|>pw=Z=0dt~90;ewIopagD5YOqM8HLD{h)4B4#Z(f88r!tAf!tl3Dmkm&6c@1 z!(;B|669{T6(ip(Fbvr&GYC_pF;&u_b2Kd<(tC+D4 zxRk1xD^jcwIb1;v*={hq)H2gVS(!0<)U{xHU30`OCR0hRp~3rzoSaZXVG+pgVxcH1 z1$B#X0*(ubChjv5t&%sOTWfESw>OqF?pr}DRH2ziWW{NlG}R#}#swYXzF(s>+?3uiD=Ps$CyyHsB9X5 z-9rYZO*wTkQ$))bb8Nwk$b>z_93RZP)Z;^d5~`uIM24O-1+@@Hx&CMUOXyv(aZ>Lq zsBN!OnqO( z05d|}eW5&{x85O8W@&g1yyp+msaVOiw%Y~BbUK{fvl5_!+Ao*aF%h;3U#v@U6>@#Q zK-m@!biO7OH2(m-!43XfW1J!)bj9^St*u+l8`qaDcLiE%R!CE`P!@QV;uSN=|Mz?7GeKBWgt591Uah7d0&xg^I7hnxm zIIv(18ERC&Jjzz%B}IW{N&!HyX{uj$6DQsS7kIjYcMgzQnWYd#%v>noEXvO^^c~Rz zv1jg=2ijvboe(Ko8EpHQh?A)h#n>?}j)`^*eqi=rxOydxn}fi{TH>G(NLs?lsYoXb z0<;9R-3xU&+N1DG0$O=nqN?v|W`Z&^LXplN}ed_~+;ib&%`bdQO3F_~s%gia0`;f}^TbPB zRhRJvW>m5>-ueQ!b!qkDB`XpQc=2FfElred1^5b@+lqj*;uaOeS-ld2=BMHP;0Ah& zWlb(!AcV>_P}B|*Jq^U?b1{jsL&3V1Y&=`Yd2CNa2oVY#hi-bje?t0+ElIT}X|Bx6A}R4Gix8iR>-SLO!mxcOttPwX-< zg{^A@1^BTNf{$ReF`QVQYoL~}<||E9rKdTUYsE}k;sseM%U3WE(NkguOSnJ>`%yF( z_?Q8SVJTfzvS(6@#eZ(bEH9YQh)$ z?IF7lllx}JsepKid4Cb^Yb2?hqpyBCy7r3^~)4dU*CNkgSs#N@Q)P|hyBDW(F7uSk7SD{ z^qloB1Cc7DxLT{}7z9F+foT|JVQ4}r{Ht?v^JEPS*6@meEm|vZT&hK)mA$PP(uTq~BP*8D^pj^Ra4EcGwG zA=X-&X-MQ0JzwwU8OZG%{4&6(1)hJIaZJOBiEvnwhW`MhX}pl#tN#E<9w>*6RtjG+ zy81vw8V@5fa12VoC|NmV-Olga1qWe3k4zT2B}{1PLehPg=5|4IazNbBTrQP-BMO;| zr9ym0o*bDF&p#xUt6MZ%ystBg?r|sLl$iA#;2SaHxmLD_&Gi*wIVkr;CN=sAbEu%@ zH4LLVOs-I$pAwpYxn@~z8)+{W0y~T;h4TxzMEz9MB;dGNZ(-FDrlQEjg&Jn z(=AsJ9%WQ=xy|gDU4@Hs_XG}QN^~%kCmbc2br{(AiF5rTHYJY{Tp0He->Gv+6ndCu zt{RqA#H(nbUSXm_+6cClfP962QTva&WY8?%86g%i1XZiy3wRlhVa8+5VimZ9nP2Iy z^97c~bs6%G*^QJXQ*~RsM%b0TnHT2w^qQcZ5N_ew3iMJ*Xa&LCa4wDlaT3Y*6U#)( z#Htdy1j0VdMBbffoAqN#tMYu*ZG z!ppWWLW%JoB+!a$=MBm?HR1q2%M+UhoYbQME_6-$fNzMaalt9l$#H2|i(Ek4h^&k# z!DVHx(OCCm_XryDYm_?(Ia-wQD^+2W4hbpz}ZlnM;Z^rTeNhN4NDyOpih;caELaJr5{(G|s0*h1L0 zFI~bem(6iQ$S7#lmmvoz1IQjrz1>Xrsd3cEK`r+z6d}rpT=Nw*4T6G>VH}`Rrl$e- zfD8CV$pXLzq7ltC=2=<%OU;I0%lJl?lgvUycKDcI=zs`xcM_39JfG-z{mK2CpkvGN z$%&~d5pD-a;UQ;;vn00^xP?Vr;y_j=drLJKT+5;bkjy><;b1L53I@f^0N>K7iC{os zrdMY0Xtgq%q_i#mRq_l}AsE98{7tnCN1(|Z8i)lY&fKo<>~c#K;-w7DFc=G=mTcx? zz#u^pu^vaC5aI>ErZ+0`fG?SOotugpVR5n=8AC}{ua+7xlrpZ2AdJZtMMTYR3%CHp zqNs+2js`iF_}mwlQ<&f|({Vf%PQBt>{^cw*R`CrqY0}DPu8yuz0Oy zmhPjB(U~ZCg?Y#O5V7>Tl|bpYdrVsror0+BpmB~Z5Dd%WjWKZhLK|}((MrC^7*yR$ zEHxWDys#8K0|EvvE-AebDaT#O6{$#~;x*X?x6C6>AT&ARA#LUjWjT!F;#P+YKo!|2 zxG`|i8&d_&($|Wplsv~{#8{?haZN!JQmbwPTZy7T-vq-jp@cJeAe;Zx+S>#8L(B4Uw$Vq&l-`xmrHv;P78O2As zF?_Ju<`Bq!L9CTUS5wHqy#d0`AA5fG}SX2;t4F z-kfpt!Qc?s^oJre#rYTEt7<>Ue!1f{m&ZU-u094uwnXt{ljOS94QF#3b8ab7U+!s@rmfuk~Y{4lgmMZQf zik~dQP+4;KP;!WH>N~GvmV5?#e&M`ceyDHaB9Dm6UNHpYJjJ1yjEF_EC0Za1VE$k> zDFE18#THA&z(^nk0AK@vKAPAFdtpc3Oz0b^NrEM4$ceEu&7*mgkwms2wNPF61?8z= zuHXX^uPXNZGxJ8cX&tK|IR1n;DN(}@{fn)IV4ODMqF*`?UaZ{Oh0lwhHRpKo$ z=P|&=m1bLrYK04D6~I~vjo6IhI8hb{#6jiYU?}+)=>5)Gp~0AZA>5#BtU-6=z)Zy} zR?QoNK|oLzs$3WE`bSuT7WL*MQi~lE3*B{qG)y>G)4csQn9)0_N6($ra~C!bQ;|8g z!tN(jh@No0lwpJ_ym2klP^23nbP^g)LhBN8ua#vMlMn`Yf#q_K`ItP<6;jSj)YLo= znUlOqGB+<`y0$XaE@~4JWtbJ66OtO^QMp_Ktizg>X^Cdz;&PQAqMr(zSaBzh+z%o% z!)x{j-e2;#uJ5?UrdPU!*nSn{UHD4Uu5#VWMzNdc%tW)S`?--7jV%VDw7LUjxJMYv zPS2-+pmzAuVG8SXF4pEPax+p~R;9!_=>k~pCRgS!6;Ysuefc`W!m{O=lAINL3O-2Z zm|pjAv5zq-mg)h+?K^WQqRWWdD+D#BdX%RK`G%3VQ!w*2#IUssVTsX}j?{S!yTR@- z$LL1flMGkX+39x7s^-?>?!R*^NbEKm_79k<-dN9l#8_%MWvSDJ*oeEJdtjcW0Q0+s zyc!4=Sx&sl6;Cb9*2wdNDoA|RJi)u>$N|UG+6VU#ZwlB_hubLHL#LX}Db3yHHNvew zX}usOqhSa#hqn`y6H7j5C$d50`Ip7bK*Ky%{{XnHTM)aK8h}}aHo1wHa5r|bsbE1} zeWgw^cPQR0U}n0933~a4$U_!VVzF@Irs&R(sb=7&p+gFD8o;hCqko0Y-jyc5Ew{`2 zh?gT54(pzL_?ZslL*#;Br{i7MW?6AAwaE9sV9guz9hF-BvlbQ10_A6ovGF%PNCTg< zb=(0b-~&t;00usvUed;_g6JgkQh}5j9Km-!UQ4hxuh6T9HF#mai3v zjWaBHOv9ARVOX|OtdV~PKAymhn?}Zj(p2WJ1Sz<9YM>3oIUsHYuF)@KM*Q&y;K*8! zHApEC0vC*{;B`n>mva@@P*-b@-k0s5 z`2q5g7jUPNnMS`_~cLtfAWg zfUecZ)5UjE;AG3jC7J3roCq``iATD19#Rh^6-|T(BO1UwCTj`TIhDxVG`L3&WzIF+ zw$cuUB{d*0A`|l|it^- zX*vp7SviAh0$(#g!SqKha-#XC<6>zyb(OoKKg+0 zSSitCXk$zbg%&$oMUZkA0Dv4z2xi76)@}`>qjWMKJGwoVdYn@%8G{$4IL`7#w1B z=vAgH>iz0c!0^ik34?TBFS1^=GM1Maz5tCm`>Phx+zKfoMjLIxKwQOTP_PrNmhU>l z1v#@pa)`T|mJe_lp!~u#L3GBp8en%79_2LNVbWEX@iOG9h4nAPnUJqC+(x=!HFT^x zPca3W<}??)MgH9?U)#WRTENRuE;pG2mIsNYtQ@x*_%9Wbv~^Z~?U<8XG_y_9>b$_x zgnWEJ3}^X_FP*~bwG0r#rp7MqjU00}F7PLa{9(Yd3z7J-gX%;|IqA?>!`G>J4XgK= zP+U<7@K(&~{6nNb60%$f4Q;Uz^*gfy+&3^dFHznC4UQ-#4j^z0Y@ac2jm2z)oyp8_ z3UY`*-AYn`crV}&1_COMD|FeGb_Q$G4G}=X8+%kJ3I$a{x<~9w;)QHMv0{f{slqVt znXv9T=m>@=m*hh= z9-4T7NcZtp3&N_)qFSAGs1}qovN#&$3!aWGNLf`iOTa{w+t5`>J%rR8k1IW?;V`g5 z;tUv|IH*Rj0yXN}+7isfW)7b}ATZi%P?8yZ5flml@J)-km3z2{vZz(rUX*R=tS_&f z9NL7KitHe@Xmf<|BDqb;SA549dTvz%0C3j?mXIgDi(`U}X}~#w9A>Nma=Qw9A|gCRjiT{E z?2puphlLjv2#_9Nu`q+dJsQ@=>=*6#*g%;qkG})hk`HF4O zX~N1`93eNXmZMTxO5SKzZWb{S7b|iw1rw2(LQt12s21j422s9YLfyigXmK7v?hHv9 zqZW-t(YOr92$vT~yfBu6NC>C|YjXrycc?b&=B+94qvQ7%9Ecimh-6&$%2K_Iw^BN6 zSk*@I5gX8!xXC5?*~Dhp*k^q)C>LFa@ix||=J`-vV+^qX3QJ2Ea-1`M$x}NSG$^<=B?$+H=e-S6>Y%8C_E-*DLEvdF462Xs%BIfZ>G#rJNW@@f0 zV^Sg`$>J*;D(v=@dPk9mVik>%0zqnr$9DqWA9u`Ik^TTvjuRv&HnOh zM+L>9RvI~%7zUAx5`7x2r_-AL5!m+C?`1a^rR99qh_XOrdEp)(RD+` zMY(3s7S5=uvmQmn1&KG=EZ7ZdE`8B-i)fMR-Uumn1xdYs^VUnsak$L_*;mGzw)`2uSSh!bnyhwP5%ML?dF0_H)0n7_~R2z#xU&LIZ0+ zE1Q)}6pos-s0iki$NvBarvhtsxg4UEkr?8gx8=39tx%srTjK{l!b1wsdepcgCbZDH ztgNw7x@|JlB0x8LvY@7@r4UQRh^$Bj3qUOWe`W-8*sLt*CbtkPwh*ZH&l41gDfd*H zR9aiWOHRW%hsYuJq5+x3UEhR$Wj2p1_6VUgP^Uv4(IU!Qv)F)2l@&{d=fCACh%IDNqMT`JwyOUC`K@+4V{kgK=pV=aDIr4* z)KJOnmGVX9Hp|%d{$?!ADx>i=iRzm_Yl71N8VvveQ1C>cmIpzg^-!{lsssN3-EaTI z05lN*0s;U90tEsE1OWvA000000Rj;N5Fs%^5>X;DKw)tN6ChH7k?=xLp|KP*fRMq_ z|Jncu0RjO5KLGy#z9~s1Y@R!QQ>s_tV)}-kOqc8|XzhR6Cp8sp#FV7z=!JByui%C(UW@w+W5>TD z6g9T(l8;iO?x!CbAJhI(;K^_-7x_hlF2cZXc6F%uVYu*{)=yF|uO^YwD2_UlgkFqY zQQJ}&iduT479)e(|v*Q%V8n--H^k*WbKPW$1JBblV%iYYq`~+pCh~6lgXAZVY(9> z6qcqO_N>9#`yuT@bU9^aCap&#=@vH5rY4S}%E=oe5nss(U&&gF z@L1xUX_zv8NqT1KS<}|!k~38$&`55v;AC$dP2(2E*( zq0)xG1d$Xz*>FK=WSHAXk%PN27fb5nk(i!VB&xWByDP8O5&b){CtS6SjeJI+Vq&wr`P+5i0XMI zQ-0^uy%Hs$grm7BS~wynsF;Tv)V>B;!AB+sm-qhwdHqJq?eB&t!QyblNN_qm-ZkJq&*<6VuYkbj#WQ0KDfNQzr)17*p!h zZE`eomf16;Xr?H!B(*BUil=4|KRL_(r|2l1IZ2rQMn!4qaUsUT2zKDL>}I$zH`9;xBJcj;f{GC+tXO()l{r+hu8! z?1bo+Om3AP;}>JOg0*io=9lw9s(w_oky~g!1R+re&Rg-pKVM~Tc zLRyX67>4^BqXTRC&3U9fh%S4L=|gm^z>Ps)sG8}-zT`&6dl1{>C1PBZhoK=0aqc66 zOF`&hs)Eid#V7pOo2au5Y=*Tlysdhls!yjvF4dxlv7u={k*!40*0yI-8@6wf*n8#f zgkwJrf>ow?TBgbD(SnE(Dy-q&M*z=B~VDK6c<&om@&83{{T-@kK}B{T3X#7a@C)DD?zsQ&`CN`*o>@h z#T_psxyd^u_z_HGJW{v8E#vc_)H;dxTJs_}(QcD0$CXDyF{Mk?;>W5j5M4^+Bkefu ztWEy_Oi3v><44|0b^Z#s)dnd~@{3_mkwRpmhWJI2m-NSS5z>(@u>UX*>?W`C*Es#k@}kyrS1Ivhdbu}2uY<;M0)FUqNN*ugA)eb$8pK6B#xw?hePSp za&mvz8c%WHM|7zBKJ5EGmrav~u0@AF?-e zoy!FDj4ELEs)%(XCc@iKM=;)cl|GQrO9!+G16zB0*=Og}pstQw<2M{eVKMD+yHEH# zXAY1-xaSug3NKDgZ@6G5oV!2t z*+0{TIUn|j=p)P_>B=H(+H!Bt_#^2*5}XrHLi=K~DhBg|C&1oES0p9KUvv#jJBbXIUO8MVsA0W^;Z~%U8vAjW(I7Ju0+=rPw=kP`D zjr!4>9wQ}3rx>gz!dvu!d_tl0lUy5lLr+z_ESc#p?amDPZRAxZozO{PCD?hz$7uR0 zdWhy{DHDT-5&i-K#`KDofLd2w{{VDt>*3b1ohPcUC8ynQ0p@r3b1WU^I+l&Z*zdSG z5oJ+;7EP^2?|He~W5)izuCTqh+=<|8iQ3@Shj+At*ttD#f@d?ElZ^OV!9E!^ZSAk> zZI5vtDqIefooQx~=bVAwOO-twP#tP$n%8~fce|?j1JtQ-ciWYj)(2~ywE2}$jKv@7 zB5&%>PU7x*rmeD0!lBv%eI15LkcNP7_#+r4QpqGI zUKbXgWrk^U+DNI-pLb^NthtpHbaS&_Gja3SzB^AwEhD||8&Bt@SLuCg?${h!IPX1s z2T%%4XS}{ca(9)`um&}?LU{$lF5}g+zRI$0R;ASuja!@T^FtNa7OHN)KEvC;tQ7gE zIJkBnFu8gGwa@GyQlfnUHyX#VeOKu*82y={y!%gS@&Q!TzDH|3-1DZuNmzYLSknx- zuaLs29|x+88Qap?;Q(;K))A-6H| zcJJoD@hWPzN-o{I#_`fVYjw)U^uREfD2OL}wvMhnJ)Bdn;$HJ|Q<|LH6v*yVTgcMq zwf_L=A5-AE6Pa}CRQgaex971!!U_Qf1VXqQ6(wt-%WF>1b|23jp;XbZvzCC}yTPv)^N$E`%U*9$8qLZeQ2nNNCmi#1Z^E(F;`m^ zJVtrVnm;yJ?v=}keyTC69}YY(^w^l&dbJT|YL=AABV%sTY_VB`<~qL!$aD<96(}J_ za#ymrKqIpy&Yg0a)4dj|YPUk|W_9o*f#y}zfLdt22X`I^qr7IC?kePDns}nzuC^T3 zt+pecMQH9S*1Wz=pjh*PvE41q9rn*VAbwxc6vWdpfaR^^e-%v21#nPhkU63=Sa<5# zB|+Vg=|4eqU3`L>!pKcz=}AIF*%6+_GEi2v(J9`l8oo%7;dY#e!y@n!3j4f zJnT(My-NooKyk?IJCEnJNC6404Hit1I9%j` zAv^`5SfgnxgJk$$k?Gufd{diaWAd+%Fc&*u%}`hB*K+RINxwnc+^T6z61pR~GWJq! zLA%s2I+_n^Bi=aNaa6v=Lw{E;fl^qGOhju&a# zJo%45lB%N(hB}zd*!`SGG5qF$4hW7ansXz=8^0wiBofoP5UL@#S}}`zZ5VrxzTBPU zddJG?O+kwenZt#RQRnE^uphta}lLf?sE*ZnMVHa~I|t zHu1Wzu95O`FEvdYn1HK7YhN$P90Usk#@Tx zIllyLwWj0cG}@$l8{xKjAM+?QCw^z7r>DkAO@TfnVnkUVP!>@!HI`O8R?va6 zXw73|S?kf0?}l50kJrsV8Z=F8FjD31z> z+ud{CQ=4&Ow4(+wz4Asq)3=zN{T>IZ_$B?mFXA355s*Q*Db33zSjFhtx89PN^p3Cj z?)gnEHLXun5{({thr2=D2wi? zXv?cu!@a}BMJBsL`1puIB;Wmy&`*n?d}K$xuyo zlGheg8qA%A`8G?pw=Uw0C9f?bFr6KSN@1EOG)0sxxlzTM)Bq}%jftkkYbTV#qD>hs zQ>>vPIaw>V0uNzQ3po1pwmob*Q^0wJPV2QfnV?7jr#iuCyqeXd+V%teP5DhB!5Lpl z=&kPz+IjeOsUve7TI`C6)=!Yxa)nmn1+t!r;Z++OE$BZa=Vqf~Xtqi`!UNt<165JZC54iW;2!T@I>71~!TYDe>WKTO zH#A2TQzlkg1k(D~4sQoE{H~s0gh*=R86CZQ`VWeZTWv!;k!^~^+p9V)3wsaHg(DN=-i%`D>0Kg^8)Tc8uG%qwrC>#WWXeQPY`e1QLZpF`B)q8NO@`>gofVLY2H7>Jn-u9i)uVU)9|=4>&#%%e z{{T@FImzz)Q)1wQ4f9NDV|c6)n%IN`_lJrnd?#_sqjz$p z*oZC66#7>On<;;2rVk$zGCdoQR>Rbru}Z}w6UCMIDB7VJrnho)EQ%IRHbL1ZoYaHe zS|a^yHWSQ$)O~t-@@m))z&z7-AkFA=En{_}P#5A%JDLgZw}~Gw=^F~x46JYPpAqNS zsH8>2g)^*H9bRFONI&Fn3lOIe%v#NxM?uUY>#19kk~G+pB2hBQnG2$B5k<;En4h&j z;aV0?=(z92-Y3`T0#DlGX#2ipLT(edAWAO-HK0`2Y_&Xn(c*l*Ul^hGnpeU$+T)~t zY=AMyT9|GXTLO%ylQkH3+K(^gJ39}G6`DCmLYb={&)44Nckl37Tp6f19-7sW} z4&^RQ&1i&rxNKbaJ*4@1{UICHNBllzLJ?Cw!Am99hts+|HZbk?J*O`3mj>CbFr(ya z-C9hwl&+$KF1@I(uDMz}_F+ev1r@Iz}1TbS|3ZxVsSTtC$JOqIK(lzpRM?8LF?buWfeQ3d!l~OY`0xKp-Rgq zHKD_P0>BPySo9bPUV70Rz1`1kt@}6c_@4WVMBq zuTq<)obpV4mKzIYeV%O42|Yv4V$dx|S4iMCG~2Xy`s)SaEgSOf$zoMJwQRCCVJ6)h zlrG78Tf}A{aw@AKb)xt)XsLBR)3b5s;m|&1?AB>-5PTI4V_>Lsb9@iT`5vR1mcCeK zbv%vC8zCKRjl6K4laTMSc#0Qm%tW#sjTy9bk++x*vX~~PFR86}>s$y8`=If*Lo9&j zRTQ#EVIZ}@BcSX|Vr*eJfSl`WQOm(HTd5zCBH;>WSvm(dGMw&0ow5C==6W{{y}gUk z;2za49bYl)tbVL7b?uSQaLamw428zgPSSW1T7S$3ikAkdjk?ZZw;iLjCb?mhp3zwx zL}h&X25Y0{V|APg(o8jtbA;63jw0Z*|Ljb|S4JXJOyhd|rV$OHcKwSgbQkprh{Iy(0s)yT&lXAAe)IGAG;n2clrn@HL? z+i@J%>qe4;?9^MOhsc#xBUtjrJ6LfSw|ED+a)rf1PjPa&0J%E^BD!QiAkn>2(YD;Y z-vIAC2cH0|D&?qtv;P1&-|*-FFGpk{3om%x~G&tL9{NE{74N4Ln*) zO}LAa4`RaJ_WrVpLf|)ScFP!0IpR6sUkxzVnlTvTAtlG5fM2v(Rp~7huDsO_ckr`k^*DD0NsM8(_gLp1atCk( z_pJz?NoA437O|ji2Kz?xN&f(&NHkhH(POiQ%N`)u*!La$Repq5(@Fa`z5Y@=O}fEU zP-3#o*lHqdm&)bM4!1~k&AGu?ZVL?rJd7lpo91u+01dV$+20tyPHJ2(mEz8cy^3uV zp>|?0KRqaDP8@zFb`m_wtn_n1C&I!y97m3_m(evjB!|1TzeR`oHElb!;gRh;LxAuF zL!#~i&z0w;?>+^g4FSTB{m4PlRahKb)9&CBG`L%EcXtTx?j*Rod(hw#+}+)s;1VFX4({$QXR>#`@0`o?Jpbii z(-+-uzg4Sxb*)-9{l56V0YH)dEcF=x1_l5~f_{Ma6+jT^>W_ef4hV2?a0o~UkU&B~ z{t+l>sDA|dufY5xuzv*Zzw(bZI5;HefP;pD{xAOjee&K5K!t@Mh9H3eBL#q?fu;V*G)#SK^{Xh1>=2HBx`~tf&OJ0ul`oiw)jK8u@ zX{>!?7t?! zq9T<|Ja6|DP?YcON{wCQiLaxYA^0g1GM_!@=b_4xw2p3R;aXdk;AeI^>`dH>J>LPu z@wO`Dj|+fq8;!p&PQZ?rXpP5xrtC_8I$zh!HM_ZK%MBaHy;|UK@QJLpE{;L~>-vj4 zefO9*=OEB6{kf>o7VYj9iT^Ft{~tfVh6JGAf;+GG1j$V}T~FJaj@tpPx7FlMpzl}ZW_1Sr?is(eHa9%Ev)fuF|L9!%r>h2 zb?!OMg|RzeJ2SyRJL_)y@%aiCygTcJw=X}M6dPaWCc=tpseqnb!>K#(Q_P9szm8mc z9m*-usr^{2+qKB!)q8V)!z>O1#CXA zR+Euu53wuv%=yO%675xeoNeBQkh) z@f%vTBm%j*n(>U(G?h{nZ7-S|ji|Tie~bW#c=d;ltGfG>r;F05gr|L<(hohh_ZEPy zq_;Jz=|ZYp<5Lr=bfmYdY|y>PDRzSFvH!mp-Z zi>D3RMYfra5m?fT@)IT&X%?R`UzzNVBHesG?))3D2$qj{)A!O@YFiJ76V?88yruzF z303#p&n4n3-xz>*$rTqa>1iBce0dUh=?svmEhfM0DD&}5cw#Sb5>J$NDYG~~`vO`0?|^BuB)Y7=Elg=Qyz#YN{V43k(*d)Y zs^EjnGGdF^YRBx z-JEWSTWWZ_M;$5iGIa80KEOhvL0DXXPZ$42AHchOcMt0Al0`73?HO%dBGK2W z?)Y%zT9y885yNsQv`v4J00fh- zDs)`y*9um9X!#FC${bFd zUh)4`2e?qcdWw>?Us5h|BV7-?14xMkA4%`z2KT1tjO#>zRfoytz_Uy36{}#orbWst z+8=32kq$oCf3@-bKD?ovpFQ@fcI{3MV!sX@WQjUd*8xrHgv%XMS*|_XbemVKIm*@I z*GCwywR?sPe*XNkb|b?w)qwtTR7aDO0qXQ8%dx`256Mb*=fA4kocH$aYn!u17f^h09)5@swuW z?x<5KIZvxM-h1|vCC;*^?Q_bFKdpgXN$HIXwj)@)atjGo z>Wz}_RZnXFaou}#7iqT%XkE;(tKkC6X0BAIUy1!(RZq6^)e%WfM>@S^i|laYKYj$^ zbY+!8ub^qwp;tZ|DHRvBv#mIG>#{d$bXs+lo8oj83H_xKYChim8kk1^;5st5Bhe%= z&u3$0TU!;N{pxZ#O2*c<&r+R5qA`Ne;g}^bV8Nty0 z6xClcByvK=ir(D{eWRIN%W)yBJ;!0Wb5!l&e4>70v&-6cebm?I!ykXiU{}{k>7y9k zT5fQ>E>TEGgFwskd4a~gktOSV=S-2GVef!a_?*9FB2FBVPO01va@Pe-KO?XtkL?K|-T_nC|54+wy*^KjLFjav0Y;qrYK?fyJb1s|m-ng^htPRV{2zk=0GR(ffc}=#!t{Lg|APN} z&-_5sT0GFS6&&KF|=T$_yZb5#myY+kak123Jzco94 zxtHebjej~Wh;Gi@%H8IbIeR;gHf?_p13~Zfl(ERYs=8ufV4Qz+)tx)h^$+aQo;I#- z@v8pdG1|yO06$xKJai4hA^817)kj3$fLi&RTX@Yb`%BY2S)las5cLTG_d{N|SBH3`D@N3Z!O_cU0Cg60<}MF0S4p}g2t-tTjP zmrT@6vbI&a;>!MOI4;OTde22(8V!p+`jK1l$q27{rIr0Ue^4FBtsXghWVWH$xb`!t zmVTWpyS=+$0rA1IC8~4kWzZ%OR1akwUnQF^Yd|Q#llGPVqg>h?l>+@Z$z;m@AIzom z(|B{Ofp#OE3`eY4z~CRO{34U=5Pp!A3^kfz!3sLW(&FrOjZmlX4nfKe|Cojfgp%!SG<9WrDPRJ@33ouM(ucX3@(%sKn(@|Z$tTi7Jwk3z#*Vvz+nGrDG(^20*e0!h5S{u9>Tuh z#vvFvILb zw>$Cd_8`vUq;2Gtf1w9-@44Up@hB6w{g?epXpYX}w4&zH{P5AMf;q@|3{;;&aPo?F z*h__!UX>FKwJ%U(Jn_p3H%N~O6#W*tMEvt=1Q>JV7>RNmtY@?Z)_v_~AglN>`v#(q zL>InrC~&irodNbL;y601Z$@%;b*%sSjg+sG7qvl-HHa4LyKTilFTT!^EmpBSjj z(T7C6Vzc3)XQNJ=nK_5pLZfSe@Y1Mpn4jN9 zTF!Z0&l8+%yVH6ZR88;J0-=C_ZB)`Pf?N)DW4^;_CQC-=|8&Ab14l;1lA$nX1};)d zn1hVX%YV2YX4Db3iw-V6&q0R{*L^eXOdt@6aj5FX=iz(4v0uEk>rvv=6DU0apv(e> zC*>b;yr=N!U0K*)AJ4h`L9n|Y?X>sO2iNmdcC%|bVz2%U5QxlnMR+aGL@J+*=W6iP zZt25JyW$_1=W68R@3K4VM5k-(5qcjDcMu3R{J1MYe_eJ+VbPF!@4Cdp?(8ZA!ZEU# z{SGvUL1+I%fdREXK2Ym|1_vz(L&1PULPLNog3dwf!2lRkl#gh{%&_PfB!-w+q@S3C z70FnzDcHVHvWh4<)R1$C{#}~|g9T;p-;DeYtHFrw}z607pNN8nV}mE)$qne` ziw4Cjv{(vNqP`qkMj0NQ5ECdVB4J-?D!%vZl=XI2$;phA)>toh^`66C@JY0WKU5e^A324P%vAr_H(ZM)?Drq z1fL*n2_HDzG+~o4gyeWmvtnSQ$=f=k#GXJi;zQ)3n7#G!lfQ!O8asQz<_F7&N?~hE z6uEUpi1R7oje>wRJBUuP+oJw-&c{Lm7)2(x(a~e=V6h8ilD1`zO2Xn%g=vC<%8~K# zGP6%;PC*XW{V}W9{Oy#EB~!!ur`LX%*Pg4ZG^-83QX~WDuBdd6Il%>yXW?o6R@ldf zV+4dY!wQ2bmYLWK`pzp$onXmiM**z$2-uBPJf$ByesqF&(psh><~t4`iH*`wm+Pd>e2H6fq;W+RCV^a}n0Vu! zT&X(JU57H$H6cLirH^N>)bAA=$={IVoAJDzUZX08sAb=Ho`a5P%&`qe(9WKaQxMg_ z!TszoG0|;+sl;!N+xTlcuX9nBOmmQfmg{WQeKQ|=&;9A+rdmx4W{p2KIRuPFoZft5 zUCGjxB}JWK9d|voqwiDZTdI1qxGwhd3<}bB+5qBBSB_o6=&Ot!j+)F$^5tnkz}en9j+;{Ndyt+Fat*LMg&;PHZrLE{F`1tX2ZkFm0O8 zh5WT_5j#sdc-+F=lG7!b0%54-QE8KV zOAQN{?gi_8inelRHROIXul2@O&Q++pyqa>+TlAAlosr*4S|rPxh>}oV%)W zgANP^Fb;PL@gT{3W=%0{Fb+wtp;ycFD77XUgxEhI! z{ZH{wiu)+G#NM;HeJeDdg}O1;#;E-XM4yGagb}(GmsV5!ljYafR>-gdYeAc4jXQ%B z0d&{wj>L&bOf11~DvQ&z6+1A$`^oFg!mT_Yoif0Vc@d`jkhW0Yl9TPX>IxlYin%9j z;b0;(zU9KY>rGZ19<)2Ken4)r_~f|u)3|PlcCSp*s)=e)DK9M#B4cBBr`wXl8iUUR zAGHsUw?5;nw;)v_wt8l|dU8yTM4s~HYXg$QEMGA~XFi!&ZS(T&!*^4(+Avx1cK~(w z8c)iDdQ-Ugr?evVl2g|sF?zfj%^_~76=k|8(_#`Z)6`^@k{HFFV+t^Z)ry_(6HZgl zcX5%4@qQH?1&(;ar)m4%t8k0C8dXR8EQNEb(6ft2clG|{-a7KrHh7VE-wjFb*=VA_ zu`B|6>L`}?%ORL#1TRbz;fkPv0 zy#qcy9&64^5A)}Fi)??1U9Qtl<;D#<5lu1ER(9!2VLxWcl&B`uTPJiwuT8c=rjQB? zsq5drA7fZ8|5?I(xgh!a)5=(iyX->o4#Ort$d%woQ2%FQh7IYDhnOhG7Rk7!)N;^L zi&=FTIR@SM>@NiN@6D~_qgJg?AK@pCm!Ve!n{(*b4u$y2(6H2M>_szBuAr$O+_p%e zUa23b+7Udq_Nbb)_KhW=YJPdS#r( zZxBy%ZF?e~^%}pj?HbLNBTzHWeq6J1ZX1_Fkw%6sQE~eek6=-Ic874jhT+fTB-O_1 z1r-k^G#UF6`qcslTnbaeV9F3twTvY|BP-*}Sl~_uRelEvrmUc(XzW-9f=hhK9gB>N z*4hgDHZ?Wl4rNiQ21&-m@XrKj8O+fDF6{ zZx!GH8{$brMyxZ-?QHM+$>C3zi(P% zLqet>0k!G<8%()GZ`?_cH#cT+CyeDw%;wmoN^agbEsz6VQVp@c% z8=9Ybh9|&&RsXWj6DMaApr+Y#K&UskI@Ht)d#C|rpd;aGA(yNWSkz%*UR7rEy?)Jl zN2*`_feSBZ<7wY~p8|mqB%!nT!th(TwqzcOD>V89KZ~;N{)01$L5fAhX9D)#lmR#QHkKn8Of_(E3 z7r<205V)`;r&`b$&$9Wf3%XKWbr-b{-6`5Bnu&>tpNS_%? z)j}|GI1W8d5>?bBrswQ7-JuN$=9hhLW^O2>-7i=!egJFanq0JYzQ^7v7TJ7hhYa`O zgp)t^;f&;7nSghKhukFDB^)X%2O=B}jz?>2IFBMbP^v7UghScV8~~3GbNPHaG_WS5 z_)(_;q9LdU;dJQ5YwBSe_ioURV>G4Je5=$ms=0`~FB#?{+G)b~0b3WDl7O?tuWukG zO?DmGPf(9jZev)_s@XD$WWQUi(G#5eIEYc+eslPXujr8Cq2o99__8;Yv~Rs=&i&eS z{Ge=!keMA?@tIKD8Z~1@Ud2zK?y%^)4rklSBy^g?lynhUTo(seVa^jfX? zV$UPvXJIeF`H@^bXwy2x+3oi!VMbSL;iL3Nc|qjBZ#aVhLuarfF0R8CUdwV(%VRb* zp5v{>c_7am`tzmD^h7R-K>co4S|1B(4gO*q4^22v=AMb`o3&@c& z%y0&=nOVO`3|qU=Ok{S+Mleb4J?_lzxLC4lS%i#JxK@O_TJcq+Q-yr?eCkH_SPobn zES9aBHu}cV`I2GIOCFK!5w!&VLqA{Ygu+CZ-53J0M+!m32%b0S<+6`Uc{!^9e!5!(zO`6VlBj;V! zXqvI4f4srSQXJcU1FvzCJt^5WG3*l-M9xlZ={dxD61ca9{Q~Ka36>CncYssFXil1+ zfG3R7&ptD5VCEuO#-D5)7=%FLJ^{n))C|eA8Pd~hh^&MP_Gq3@&_CXI9GMsro@r`+ z=>Pkvp^j?glk$&XaJ0wIjmv}mOLw2=cU^3j(P2(nUBxG|n%k|lU#|*HHc0w%q9rK| z?aBOcJ`rxWZDdhrTqxnsz$KrQoiU|gV-rXq&SZ0PflW}zQn~Cydh~79Fr^T9Z1iyF zO0>R~tb+!)28ceg(IEnttkMbazVjdRHjy!?GgZVgiBO%aBBC^|J@1e$OCsZ}+F`QS z2`B`ZqFo)*4Z|gxBAW8V;d6yW0B$h0mS7iF3|jD(zD)ZN5IGy0HQuX8VBGy9!ARfu z%=jVgC6EJx5D<_;kh8q_9ZNLVV6IsendUhtA~XGp_YaREi%JQy3O*K^)Z|(-H9?B^ z(|>FKU>S|wI$76_W)Kr0^QFa*fD3kv#umjsmSK4X8?7;Uio0wN+%=f+Qs`!z)*Rt; zf34`IkVmhh@u(3@6^zQ48qdoNLo7gw^4o**h8ecu0om`qZ+tH`x&FFj}Eata_e&Yv8vt(m1hv{x&a`_XfDQPLoOx;|+4!$7wQB zcawE|EN~82mPLsdPTNrNzJTFA;Ibyn3Jji<-Tx4TkCb5;g55&$4corg(9i>hEjI$o zwsHQ)6Zm~u87~+rTb(BjXqE#v2m=Gp53q-U=OPja2n_kj0Oz3mQq!V~OuUJB!T*ZC(JgF8W!Hf2CJQH$`GH(S zz^DKhDtr;`H@29VuTUyv&?#yU5!DS+Vecjr>)lU$)T3NqtpjTYm}GM*R1VL|AM3)J zsewtI+XeD;+vK#L$5ZBBM3ZWXcshmoyYzEHp75o*AVO;EcReQqX{H#3>Ua^4E0oVk<5ZWR5 z0Gluqc_stwC!vGFd9R^|wY3yA;Er3tY=mssa_^JM0UC^hmt&F0(CM?TAr^O^;SJb+ zPKfJ9G9(iWZ+$<)rPDxfWw0Xa0K%mx0kgvLinHzVGr{m1KQOvIr4GK9a}*7W_bIB za~Ty3Ij1uxA6i3~M~>%5@nE?uxjmC83?xse($(AJr10T8;M;~FG@QLmaL?7-k~d0d z_Z;2GE0q1$j3CnSA5+z``vy4yeK{dW$jOl?M2C04Yt8 z3RTBTdaviH#&krIm7PNtxVz7N1&x)naRcI*PAQUNRqOggA`lEb!7LLnI!Gfei%qEf zKoUA2*+C|Lgvmip&OkuQ|IHI-a)-5j^IbD%?mFAN@kKS~6{4ABCZmuqhNCUXT}o#mVh zK?br=t{vXkvXcQEqLE2OPyk_*gI>%8lReP=0F=C8M!hq+bM6LAdy9YTAXfk66n9jk zgnI}J`#NIJ-H^thiEg&k=o}O%mfg7hi{Q^Yomkz5WNilZFT75XfS#TM0Tt6NwqYS+a&s-0d2A8_q8C_ytTAnj$5SS*wK=)jAYzHqX>(TG1rAx&EVq>^XrgP zS&A9XN`?pbs{m{BjRbNU*ZPOLWy^J8nHqU@>R(^m#HT|FU+CQm&#bxZA9pK-0-A+Z zWA+IBt--FHp1`>vcJKv+Xv`6BsC{6dQx-T*Lt03#k(hglq466;D8E$m25}TMWKAl{ ztn(H9oH*GBIA!Gtf`TDv-? z-_<^6Wu}>AG9d%CNAbfX7sQ`+lZ_Zf{Ih>&1^C+lCe}bhU&hmq8zK4|aK>ewVH}Bd zv}Ox*gsq^sqW)%kYt=Yz;9NfZ*>*vX(Osr*2o66SPL3RD-jmwhYCH}sOiA4AroEf41Az*SYF<$@GcW??|@MfOWK%3}Q9K3)YE3?XZWQ-@Q+zC$2< z&ITS}X~Gc)bO66`Z7P$dCJEMy80?rSbbVVvggR?V6KebUQ}_5GQD&+y2$$51p}=*k zdc72@IyqyFA)LAhcL0v{`E;|XGN+l-L$lTd-=95Z!+`=RaYI@%nUwFV1ANRqq*5p3 z?~ct}0>8&n^h3tf@N~8y{!@$`&^&l$x)e`89Jz(vV9u}-&UiRX0?pKZ3vdiPqZTzY&lKaBx1*) zC)_-ZJ-h1X=NyWrjW#fzpeN$6DkVvanmhH5)l^{xeUvqeel5lap9GjlH|u2Ltj!rt z3y|b6hb!qjU1qpL!Kbqg^oOUzx4FEIwxu@X{|@byDz;6aIBUXMy5k$%*uC=%dIwbS zXVY$Q*&yO)Z^a-ovKYjh{zl05-cR@9wY>Sz+r9Y?Q1je)7B~v%cg8Fg5))zzsYZ}d zvucpIXqjDJT6j5cjnd0@;^`)94CxFP3>&7ojlFqh)cP42h5ka4FwgU32uZ{?#Z#O1 z#;v1z^s7H_j^co1GT;XN$&w!Y_LFlN9M?Sc2N$rf`#^lt5WPaY13;TrnkfJ5Qh~!Gz#>3_K4kc3(+U8I3iXkMSy%}Ljg;k! zLqJ?^Ei^hY8Iy>jvZ3S8DOS<1-{R{wFEBm{iK!SRN(U9yR*It7xmUs0&#*Es*^ z`@5k9CkWcmI>5>{)d;Wz5`NnM=!DrnGP-3;S?uy$%gngAlbq@strEqVJck*%av}>L zFODrM$Ren_g^os|O7--Vxn7c}Z{xEWE@m(aCxQ}k8&v4!9OQ5Hq%w!pj%ukf7iD)l zQWd)z!ej8tTTJe#sQwsJ0m&CSQ`rdRVx0!7=T2%)eR)X*WK8k0z$70`?sT=#@MJn> zUV<-}_N7p8gkfK|hA`*rSWV-68@6b5o%@a$?$p0kH0LMdbWa1 zs1y)%%8>xREu%4n2oW?xw(aoqlvi1IeOc!xqZRsSvAT57DXTSJ0-Z<1Jpti&z9eir z>4r>EEgndEbp<0UrIu-AZ|_fs3%BkFn&7r}j>-D%&8Kd4oxUBlB(%?%?|>vakFOY| zoC-V^1dS$btg7w(fj70$W0cb|?4#um+jXUl4lzg3qZF+%*Am7mRTq?w0u9VfyjhE9 zr)s;S2uAe*C{JGM9>1?t5@({04rb6Oo3$S(cU64kvOY4AeXEhKgcDmgnYpYq%W5;y z(jWcq2ezqfVfo@m zsM%+!0QDj?=L`F2D#575QC>Z7Q>i=i4YDa*)CX=&LP{g|D`|}WT*-`&l?C+u9Cy16 zq>W{2a%9*|1W6t)Y$iHJpETf2FzXdmL{{EXQhyL}K7Cy>;gjq;8Zr*9FKw6sVqVu@ zt5oN97F3J8Sb{tEe_L0&%+OBMXa1ozeR5GqUCqZ3sQg6=KGi%2|G-()PDVkBr`02> z(m8LYD5Q3YZWa_O&Z>UfNb+THg1(NM-;{o`q$CsSd z*AhEj@N^xmpc!!&%c8;E)Pgd7(=5Z@dtx;Y;x*}DVO-%GQGwqY?|=oP7rhk3BllnB z-rPLpm=Ub5P9t4O6wp)xEFKSHQp4Av?>e~6M!hp$!z26}f3t|i7P{ZpGIMfWjt{g- zn&{QFTWU4Z45^E>8oOV&-cATc$HW^tSlZl2)FZL)D9iZ6?iu#dE zH!+mZc`4I#_y~ks@@lN`qNwCJz^bm+B%&3dkuZr)dRh8mP>f+G$^wjKVx>B_eddWI zehe9PoW9aRLnBv3PP&253>|F&%_`mLmYym)O{7Q%AK|s;Z8dsE zTZ%Z)Gop_mz=H;z_z)#8oo0^LIzC#;AoXN#k-3!@kU%fUuuZCaUO?Np_yl{G5@%^3ev!E#;P8DBBMMl^y;i7$9baFRmau?VE@B%k z*CJ=xad>T2^C79QdaXy^!fKGO)oJi(?{MJpn0NbZV=2kj1UExcm1Kqg97C3F!#(ON zP%dZM(bSB``{>pD#AX^TJyJbuYUX2t4Xv~^TIjim8O)2p92&#ug3Nd<4=vh>>^q=o zOYPu8$(N)7)yDK3$CUWgW(t@CMNvP==iED9fw8T{4Mm?YW7q|i(ZMT`+4#- z6EYDL7*!I!DVi0hB$;-nQX3LpBVTrlOrCP+N?D3~)M;c`UKmRs=$H0o9eazd1?Z&8 zw8|nw{5e^0(1$a&6QtN;eJ=3JKn%Ihie;3Fk-BrMRgq0J(D9XU_!Ln1_P%6{xkWd$ zz{wihLehduiJ>-=LfS2s$l>SXV13*>344I=LYgQS;vA5lEhIi^QPPIXTvmqdik%+N zpSJi8xLl>;OATufL|EF!kd!BUh`Yi#D@F|}6PdN!Bq#i->Cxq8kZh`xXd=Ke&fRz= zR`2NQD7UtjhFv|Yu;@WL@4G}blE1b@#O4z_ifzG74t{X3=s?#HsoIzZHimZct0hBP z*`XM7koX{|)F*0LUf;%uaKZlId5<`lL?kCNj28~{N8ZsFTG8#5IXTJ-`vB0oY(Quf2Ph4H07o zAH_6#g@a94&2b5t76<7$D_tm2hRlCZPW1YlzhGi0Tu6}QS-3W z>f2+TU#tY|C_BuTl;Rsdp8(lJL*-o1emVCM1)i$9m;Ge$?BK&+1M94FG*{YZ;|R?D zY^G||h`9W6n=x14W;$p+!GD~&@zgmHwz{m&ydp7XH6(SsAGI@MVQ;S?@d>YrV+!%< zXtlTs#y3U5n#VbjJ4PtyEKM}mg3~VQsDajija(%OJWSXD`boP=oJZv-V^i3sEw-S< zSa|sH%QUE2$sB*S;qd#er-;SMFU`&J*iq+gX}Kg}E&r?BGBFvaW%CY^sS4PXJusve zuKkFJ2yipAYP8<9nJ&kfHI3H8XX0orYF{1GR@|73Jy_zEJ!$ReTNa*m=gF-n=ZWOF z;$6uQwAEG2*}@1@mJ{ARQ&~ZCf?wWEyH0Xv%?anWQb<3q92uHsH0dtFt{8#KQ)#Ft`+IAq7mkM@@xZm8*C!G;)9F75mj4d z)=g@^xF$wToo!!rfe|N+V6fJ!;2C$-gfO>pGwlSbaiwt|7ehIpsHv_tExS$7ohxT? z0hjG4BI~!Lo4i$DD$RPrwUW}BQg0CA>l3opeC+MW|Agw&7i3E1VBaasyuxV*mPy-{ zyIb+F??v&9SSEAQNGWy2n%b8_upO9ONT?(nJt_8_KC?movW%7{aUPaTOR|aCYbSTn zYJ{BF$6IH}z9|G%>lJ$hYEjqpAKu!Ur4RWhqN1*B*yow$Qi;*}3*P~|8*0nfSI?yu zLFci#QCvB?O>~7eDiD*nSm)2)mBHldaf6-1$3eQ~8YR9;6dkoe4Fisr*kr)O-=>b1>iW-Q-y^$W<8LY{P1emRO^0D9PnnF@0{tV4&+0KsOhbk^RsX6koMM6$<%&R)ttk-OOjl#o#98aWmK8h{>zFp{3n`}j* zTaFcD;L!F}5odo0^R5HPzZg0?W671wQDztnzYyIRGu3!;lCK$fwIzByib#=QTu3SZ&lm+YsY6=`JIL=0+pr*93MvTW(f zld=5OA|Jt)Z}BmH$h3bQxAe9}p12RwbZ87OlwyZTHgeXoD2jJMoFE{Cxh_@D#83AA z2oco+ubOBq{7Yoy#C1kXwS4piII~3?_tbHg!_${xrs-Qp5g8TdIf8 z{Bf`-QvF8_x}CDClRGT&9|&$*@t%!h3G%gc91V3_!gO(4KGz{C&8=&TCU|lBBsn5Y z$7(Oi$O91hF=e2_`x@8Q)`~E8{lT@*RBuGnf+mM+kqTqnr#rqdoem7H68c{e|c z8_z!Af2gx9)Fsxx2;9Kc9s3~vh}4ueE1GUS%E-3W5FaS4kE=3Dam-SgSe_t3hdfj{ zkeK5U|3a2Q}nB~*cW@??BUe$SHVR}y!<@z~5^cXk$ z!&~B6#2Ts)SLLsp_3%-Q06EXcyyRUoA{*~d_%C^FuDwD1SD|5}4xoJ_s96qhWp*(C zGw8#D(1dG5&vNK?=Qi47Fwq(4EPT~esptSrCvNBKusYMqswuWK9Vs^9Yhl1_fB7`p zc+uVTMSnCbIwvk!e(#QnKK^~@8p6EC`lSkl7ef@+BT&~~K&2}4I%59Ic+;qIU*qgm zG^b1CW9SdWSz-*d9x^{mS?VTV8T#E5{LG2l*&l@DUtrwK3y}x@l_JOA2jdEQmjXdl9ZR3_(gqjm^ZK9wpL`O@rk9#dLDK8N?hd7 zN!Y-E&%|QsIg8D2bJGb;yhN{hvL~Mb0adT;gp`_2q z*ZEvF@AI2uMc&V`yc>P#SEi=3h#M7#_D!Xy!Vknb>daC;+cW+eD&=0)YAvt)h5BMM z$W})~B)+!>ifdL_Dh=EJ+X5jC$mkhFXSsI1wmFvLiZ4xIu-=Me#jcW$o%BHgQhS zj>~?+%d2xF!u-vn&X(Oehkb;)ZbsOvuS5j9Ii)A%k7Yf9ILaoI^N=5^U(xs|gY}W2 zE}MJKPNLyLT=un~Ybk}2r<~aLG3(sBFRCSrclK`Zab8F3aRkPQ+DiHhz!KYCH&Z0; zCYWTru+>#Bxe~s%^CxDk2Dpx%Z-o|`dVZFN+~5#{z;NBC!Y<|2>dU^X)2v~1)hC?? zR;Pj6Miql#f?JViN|o;e0tbRI!)~F|PJNzL`n7cj79rwN{GwV+;VgouSH+$|9y?ZV zPdONbuvQn94Q)kX14#nPb4mEio0Glj$18^tlCMs8qK|o#nX%+n6q%34; zB!3w%4GET7=wVNQqtpCFbCZ$!Fqzcdjft{h5)wiwv_W_PUt2-RIRmqqC0}qsXp8nk zCM02-mc8Owx#3aaZPSXeQ4@lH9`rBS!LOOS{1-7eecc*@5-#~hcz56Iw~8hYwT}dF zb@^UWNZOZ-DvaGp)v}k0fe5)6*UFG!n^DV$%uFF_rXlITKo_gRWqUhW9V#@qO5-eE zBUK!w&#lo6Tqcf9*7@OvBygk#O=y`f$9+G4Vg_~11|-P9^9fUj%mV}Hst3puL)H~= zba5XWd*GzS0XSg0QV}Oh%DEd$BeY~BgOY+PMiNdV1GN{{Bu@Bw#Sfn+=x9vnKONK0 z5)pqrIz@B8)L%>%8~ZSh1Rqupjy}?Xf>|DPQIKJ%h!C2ndeZUW8(#vyJm=6>l&=p) zS;R}>O-=+o+tZOn>hM%+@^SL1RaRw`Nn-;zy?RtHe ztHUnZ_zogRd}o)Ia=|H%pMScQcNV|V8L^Gk%i0tXm=QwLxUHn-6LR|3H!UFFOxWCnyaUgQ(V0%8xcIaJTA%bEG#%haq}ZWZ zJrW_G`cP+Jx|*U2jey02~ZB)Vto8S)@rv(|_0jmU0rB~Y)E{&#%5q&9rRf|r( z-nn@SB)jgzyjTI|@W zkk1gLT;u0DQ>~mwyIxR^)N#^S5fsnU+$85&_7{JmeHp>xcC)#OiXuw>A|t*kVCmg8 zWHn))YUbFb2fzD0ZV4kRa!JqiHy3RTGoO+c+=jWy9w$WyjDjvlGP#b8v;*xJ*g}~A z(qfVieUy%Ncd^lC0mC?1RDxGoZHEt>z4xXjm#^Np8Mf4*D09b_TTk%81vV&DmNg{g zJ$z{TIOZ=*70|D`p#ae7rh#@8whg}Of!yFqBCDwNOQvV0IKu5np;#LvAk#X5& zf5x-y{J#WS5^8B)vvnh=dI#{WpuUe;z1O@(`PPO109`wkbd8P3nJv$>o&}4pQ|EqP zyq2F0ty+@0dyk-Ew837fjDH5tIDzV)?Xce1?UYJp5HoUFd*R6#CDetAiW(~)%ZBb+ zX3y|XUcoTVbZfo4Q+cIMSi6JH?Y`wk-j2uGI$fS`O%R1v+#=hSm@2uyV znCZJ-nBGjZheys8^b1&w6vd+DQ>*V!ApCs0fO^1HJs?Fdu!6z=0Epck6!Z&Jf2c#_ ziFNn+2Png|=S$6l`ZqG_9)VZ>oReF9DMQ5ncisc7{a%d26+(xw_x zQlW(oi2nc+EIVFdCotn%lU~2e@I|jC+}cOWMhfY@=pGHu$t8H{D4_Oio3fpdBKkE6 zlxOsZPvz!}%x#iNJSyJwtI#uq;#^@|wf<Vd4J(8iJ2NgHq(Pb>pQB4U7|LS)iU3G_QB%_#v5~ z`UeA*`#l2Q%rv&o&J>Isv*sO_P}Pm^Zq5v}>6CoxL)Zhze=qnuZc9&|*Zw^|f#BTm zO#58B{{XCcwsU>56Tqy}dE@+Km*Ud^=Xn_(QPcTB#Axon%jc4pKihLYuR!-DFZP?q z^=^ID+-_{^QAuKbIuNtGci;B+VzvB}M$T?FRF7FZr1Xe2d5~q-#@+*>o`GPgR~mI3 zcfxv%Z{13N_FrsC&QDAnn@e=*$ErIRoo%gXH;*+0S(cDIEPb(N+CQ=TW3kIg z#AsE@SD?pZ7LU>UBEYnm8V=WAbXk^%?1#QA%R}}<-xf`xwP;9dKA7xaw1bl7*LS0H z64rFL$|k!93IxC*Sf)lMqf-MMXxPUt#^9q7PP1BQx>$4uj|q8i&|Jy%~sjK z_k8WB)87`GAxA@<@9R=0<&fCZwxg=GiQ=+6#@2n2CowfOG?Im^qVCp%pFXonLPB0? zy1h($;;~jdet`<5QqF=tVT&1dm6!_lry1X;b%->so(Sw_f2a8)v6Z!ZdgRKe2N>MM z+LqH~ZE~!v2G0q*{o#}_%5q8t2Ed0AEZTEZrr_y@rfsQ@Hchgj^o&@t)=CZuRNC(^ z=%?Ksl1(3xD@IU0{84M#e0{O@MYC#t-|UNC)&BtYKFGIiW)-h*ud+KWwFl0NdefZN z3$z~CmUZ*3$5md6MVtQs%IEV%oBsgH=krCD6<;~UpW=%puAh8Z^0XQ@q{WLX$clAE zjK}YL;>Kh5z42qq1#40Q{}F(PvA3$sXvJZtkn1kz`97+ERdn&YBpq(zB^+ zT8A+)X3DlvkxNJv=!7K|)G6o~s?@`PQ(e;w@2ouNbvn0I*}x3p{@s|Z15(?wUOc*D zQ8qlUh#faxbLk8@gmy{ViFH?&mVtG3_0>vpLz5QN!11RRRG*`lJz<1PwmeqS5;=#X zwv+Z8)AcR}u|kQ*DvEVQzb`OTp~iFL+`{B%LWxxk(RYAgj<~f#Wl{OGo)zQ34!DtR zw@1dSbm!7I{{Zw5fB(b)D-Zzy0s;X90RsgA0RaI4000315g{=_5K&=qfsvuHAW&ez z@X_J%urUAH00;pA00BQC{{Zk8yZtOUA0zlCu{5H-!}vVLShzRtLnp=UFDHyi41xu> zbuL#1nB!Z(5n3lMY(c=qAdels!!94Y(7vQSZ_Ja3E&PyeMnCcupd

w`B5xagctnTXXuMk&_Fqs`LhM!O+alu`dp!-U?mC2l$4nfX4w~@&I01^t|<5C8Yjd6V&m&FUpWtB0Otpn z{^lCVNrE15L7bbv{6_O6o#N5$N}#%l5P$K5Q-IOB1FA*^bZ3Emk?+G4#oD4I7H z7thO;@00sZe>)XE5Qfd{kB#C|zj;)vrg{GW)FEE+_R-i1 z4nJSU2>xNV?W(Xd-ZRyEL%@USEm#Vq`xhvttam54N~|Pnle|n+DwTu)$7(ERGwt3b z!R`m9ZVQ!Q4`FXKKY5B_x@(l7$_x^okC3}aKchd&NhzHRj^V>nAkxE7N<_HZjK%_|RKe8oRsu>|9xvSyXwB13h9k zsRc)&Iq1`}B69}D>C@ZO#yLo>S2zn$016{?)F?L{jd;LaF22b#m(4q<>f zEFS(F4=udJxnwlj?09w$1-OjH3mf}4fxscK8AAJ1k4ux{G~~@IynV2cp$|aI$^1eR z#Z2ePi0II}g}Yn;%6Pwp7CEog{C_nLf_sL14WGbh#sQ1X1auQvljN4X8jy01STj)Eo+jyf=z4TH{OSF1t;rr?yT1@-c9#Qgb zdn<@zkXC~w_?E3zMd<^&QSZtsHR$7i-+rL0sM%RApo*}!?FO2HjxiMaN>(V-oU6g) zIb9TAp7A1g6Z@E!sP_o>58#hD^L)z^{%~KROf}lgQ{Wt*zKk$zcCH53fUzhDI>QR$ zWB!)J${(Dg+4#$tNS=ouh(r;0KsS{{4aDg7(NdmCf{2*GQnDkl@Xuh&aYC^X%r@~WS9jHBZQaw`qdi3?2Ze6O zt0J^3#&(zGN=8)31~dzhaLx3c^dpUe237@#gBvelS^fhVUC)bK+EGgUBtSoQC%6u}4?#3&OiR?ej4b4#>zbq~8LmOqcH`@_@feb2J-IhToFU ziEOZ6MD*L@RWicS@BRWR@fhjZG9|4^*^d%XN4R6P`Bxiy9e{AmORQ~=VD?YmEiZLb zR8ztfa#`&yeqFDex~-k-YbYWbm1GXVp+<9B_}dMc`61|P*}gG6y$QHWoK29HTRks@ z4i*_~Zey_@XVJ0gLMt$l({l?r^LMt{Jdwj)VlqNyGd<21Leo(wjglI+ zGTPSgb1k7e)KpInX@$mvrsc|uwhLdR8Mk28F!7p!3`Q`D;U94M<`WkSkg@b*0=ysf zWrGk69N$aWeChxefE*nN9W6~D)KEEJgxK)Q{{XF8ZYFk{Jthy`*84>83tyxTRKG7z zZwDq+aHq+*_+O@RD5OV-waUJRW6J&zF+9&U`M4F*`q?TGE)U1KJFXxPUw{wF=s9E0 zD5Ey};kQ`MktNe902AkGy&3X$Q(+z7vU@%>=;vCX_K!@^?myF_b?qie)4YOf+p^R&3cYJ2(=rI?KE&T}3I$m0;X+ZDW2e!rFR zP(#QbWmi9AcLo@&#J9v8zquagbjeV$mo8HdGa>sge=@K#svEg{^m;jiDyFfi4#_On z1hE-TA1|q$Ko%yG_dO$lfLQtn7}fy3RBHD3K4PM50&d~;6+aTpPR{4-52SeNs}al4 zObXOG;cc&Ue;N3kK$o?2__>K~8Cko47Ont~A?TFUAp6Vv1GQn(@H5L@v0esa@L+m> zvSz!6+2c)M)rPTZv@mAa7x#|7EG|%$-0KlO1x@$LEb{I>iSqW5h|e8{Z4t9>(t3;F z@@8O#Pcx_C@i>~)tt;r?#1<}PaQyEy!oHi7!z3XxLRF9tc+zmc3I3uX#lkpKMxpf& z+}{ACW&9R90Va5?;Ar`F`HeP~I;Wr<{{Stc+~zGu%y&7QLE;RtihfeCSNNn##xl@Q z!e}#Rj#1;8L*eZKSQLl)rZ9M#%)@=1Ag@)0cxoZNbCS$=sn4AB1W{9SG1TrT@2A%` zlu3Z3aw8uKm!~L3eXjj9#O#XX<>kw{r%Kf`iV4N_P<=r-$Dh)4cPlW|#6|xAcs$^* zkfh|94-Rb_d9Hii{^RHNou&tsLFJWqVeFh8ij^X@Lld;NSY;B+9~LXxpv3c;%v|(u zrMQ=ufQxWhXx`NzI~JGz5wbod6FWe7zc8qDPz%_9b`g&d^OC))N^NrMr7l@Jp;KA3 zse%yy0I$UV0Jy3q<{#4Qrz1(Z=K*BZ z(C9q`a&75(mdC!k;bf{8U?-jj+p@Qgt!TGVJw_?eS{8#UnBbFUXJsx5Nuz;W3OW?7*j-8*z5K~SSOy0z18m3ZI) zVZ1^>A!WV=er1OHjuITB1aKj3!VK1Wb+m#7{td%Y;Cnj zA8cnEaffJMIz?M~#1<71?q@W+W&90{NAx9nuk5-YkkQaL6O|DvWd&wA>15^>=CC{Y zO6n?n$BED@6sr#nwJ;Ipg7d!|_&)*!OMCA1?b}1%VhKHqQ!kTmS$3RkmZk6SZo3%$ z!sIO8Ll1{9x_t0{csJ905|WkiFBn(y+jNQ~Q}M|1vUwt%yyOi1AbN^f0SGP>?dfpo zQ1jA_%NOxS-T8b$U-0rsTvUh$CXeJkWlm&(8UVmeXyW6M;=YV*YAq4N3>lXZ6f7zW zB}_KLG2$xNEuf=Y?|?rtsEpjFN-R8tCaZfq98Fxb#_5Ab6Brl8#%s`Vqu+QpRMtq?6%5r~d#oN8hHlqox(9 zrF0htQgZ}_eR>l#SR$e|iPQYXLD}{Vd{V0rDIzuv{a>ESwoM^ZY3i5~8x;+%-u>C0F zU(0(wTYU5^h>eiTGtAN|i>4zIvnxd)-~ACiTbJM7zN4e5zD;;)ABLEI%>sgL>IB_% zYSgZx_LmgKbcqNiwFF;+JcEMQ!?iPX!BdK1ynQBz<>8@U;H`Kz`e3KLAS| ztCCAd8M~djGc7pkPB{3kI~~@4aij}7;(D*(GdRiTf1C}zNOKIwy0wT`O2j*3dl~0-ek!E7^;Wqw4V$9>g55yYG#N)Y{&)|%t21Zen###+@9q?ksjbjHO z+63(Xz^#ABbA+sqr6s&31`!y-P+LbTZVlr9_SZpo|rk z@qnvNRk%cwd!@C&`T-xgJ}7rb@2=r!#h48MeE~IK7&_?j{{W&4F*W}HbW7}TAGw@G zHn*tyRCow5gx@Qty*vUNTQGizL*e)4zdN1>5&`&dVeE#_A^NPOg7~T7SBU}%d z@i22Xg?Xj8dUs*`OBE1o7CvS@(hF_AL()PET;G(t{{Rb)O&~|eX=}}z>7_(v+by5i2k+?@A0$wsU-+9ke9}g= zdIIB=bdb_IE)>oe+b)FwSVP99o1rR=XqOAlK**;Cs{!q~-Jed5+0#bR5gA&SGMe zIh6kZ_&nIb!yZO?=bCq!OcO97c*T89p}A1PJfpa;`k!CmbzbbL-F!phZYN1E5Gqj) z$xdaRHt3{#CQgMSUYwB(vNz0ph>6Sc0cEkq^w0f3HNH=f>B8$ro(~0UZs3Mi^jQ6kLb=Q`=r5K-z zb<^oAM>9T$wi!hg^bpYBBI|V= z%{G%Ly;FSu00PjnOd4TBi)~lYgAl<5kVM?8EDm6Xx>e>ixN0RZ>r$9SCi(vX0uh6{9Cf#i5X-Mi_bkm^J7E~O=eHKkR zNE!h+u>KF2eJm`0fmX)e@M}Ln`H7toJB~&d!N8PBXQkC?fN9rF!fls zu7n(08}!#u&ZV6pti>+i#ZG!FfzqnY!y}1(iyJo!c*XZ8&+s7kVO}pa@h~n0_TNv| zHsOl+i?-a(EHA{q!)AHyn`rq>^!Em(BgdzR$8ly~LOr94F!ZCKcg@Q{Nl-#1CK=$) zu|WQ%{0Ri6Vt7-K#p>iM4N^k0=;CS5-}6b5Uw*Wfb1qphVm$@A0#5m~sZT&u)}^{D z6DdOq>8Ng9vG&7g`yZ$9F}^;+gWs|eWw?uyHb;KASp3w%j!&^5qKZCLITR_=HV{NQqfv`f+TIw1ARD(8-eCs%f~`jTkSJ9 z63Sc-x6q8atnQQ^&h&a7kKkPI@|GX_L-wd!rAOZ|QtL6uP%XPfQ`obkhxJxb1((`f z5?s`@_0xZ*mRTel_1~+IJzYjA629c+XnT_1+m<9Eto2<0}3Kh4_BH znva7l1fsnHrHAM9fNaU!mP;j(=_o)=Bgc{9jb1h8Q36#dQ<^#Xn#WcT(AC9p(jB41 zGM97Ftizd!n?@KW%~vt5T`GsSL~d!t&*du)G9R{VgR11H0^Vo56Moif?KJwQ zlHkO7{`5<|MG}~ILE8^!*&mW+{?v_l2w#>{rZw7$zOSLn+ndSXnkTjxgx7_8)|Kmone@KjK1i z>$M*gZ{Z<%4y~Wv1R#db{xH*p00+f%+Tj=7EAcr9JeGH9O|$bPAmrfp35u2Ty#{!SYj^Xc8BMssjj>w3{{a60 z#0mvtE7l_XT;)W@UqLT|Q~Wm5))I;QF@%dyLsk!Hb(RjDt-4e_kKjZxpva5@T^9B* zn3t;_*x{_+An{H<#3A{_6PI{Fs2!^=^FqZ>W8L!RJk{K+3N2&(S`k48D%Z&cc?MGC z=-+(? zJwU^c3-mODW!vu|0(B(&rNDtTs(-Fvu96G)Zb|W~X-!D6Ol6B}SH|sCQP2B-yUt(( zEq#-(%mBy?laZs2mt{A0Y4D`0N^fn10AKBepeL}yVF;C^2M%GN9{BW=fD=K-~%egBtq&@ z#Kg_t#BX2K81lNqra(@6s~&{~+olSZ&%NhemhWb+ zV{L8m4xMxMTb1aWWFj`Uw%^OiTPHZE-B#DO)`YjU+qeNt?aPIAAk~EURC%m9_9{ZNWjA1_)r{ zI^=Z2h*C6x*{?283n~OMV#+#iPE^%kSQz!=wGOSfx~;}l!#vpo4x_*-vQ9BxiFJjI z0OJ4@QenARBm!CwHXfly(2_U7mOh}oD%L|qTE|;oFmBN+fs!m-^Et$^VCApnag#%w zzUASwaK)21oy3@%0_)-TE!0LCmH^OFh%Tii$i%iJhCmK#+$p3H)13flDyv|MLhhC^ z;}JCBHl+Zx5SGv*$o|ncjU|HMb$(tb^Kh#GeZl2wxr?EcDzsb^8oq%Jwi`vSNr&Py z2blKN{6RBRh5rDuVT&G%f~E7~3oG~~tso;;RI8_Wm8iYD1q{4Vj$&vc)yY)W(E!MC zGYVcZZW_(n%@a-=AWuOU);K$0SW^lUDFS-zByjz@YEDRd)m7Cx!L)L6 zKo+m|PRoey^nqS1_?X}-0`hp9viQbj6$+-;yJhgMqs&wG9yE6rXLAIqhAWy0R$)RW zk(Q_v&xP$YJmnD0gi_lMPwc*-v^?#0bl%BY!CBdSHokK(8CrOKL`YPK0x%#R(}{*% z#MRz3TRAZ)#X9#-o0$2Go+o7o3oQ&$$DmhaDec`ZqGAhD)$+yIMhfN|Xrp;?38jt+ z{A*CgGkC+n)T=d>EVyrVhEx7ykhIQL>A4X~?<*cFVSq6}(nBJG)LE7d!I3Q?SH;?% z%Wsr02Z9&EL{R?#B1*7zR*I@SC^Gu3Oc-I+O*K|sYn(hvqO5`&KwWwvbVBlPIo6Kc zf!Tf399>>&S98E3qy^~K1Q+%T(P8VBtPi}zU`vALqQByhMy-RG$P7TU5S)+G^a>{h&MQ2%NCxB;N3&g>GR|H%evmnocI20z0O?9|HHPcph1j$}rGC=G~V93)eQ2^!s^V`ZlBt6zkJnouHaVz#=3qt`{ikfFAK9KevJ zY1AxmE$fMbQUPEJ0AK?EU?(VI*7oL~Ah6OUU?c{UM!%8AF(ukw!HCILQ$|1BQs9GB zm;$`y(m)IwmVuSTOYXAUr;Uo!j_ejp4LDF_E~|E7G;i^r%o`>7kF*(f$1+mt;K-I+ z+NYL}MQBVVIkKFE{{VnGz_Ak|VLw_dV`ui4Tnbaoa#Q&hadiuN)Fl~YF>tt4H~`Q9 zO$0;&nr9b^@oFnbWdJ>twOcG_CC`FRYfhkHHD*SQ!aKD>QA`5~HB$w#6mHza2?LFU zx@_(k;sY+>zO<-#i#4Zej|8-0^xY2I;2*KCUm{@{X}NxDV{i!B5Vk{Mhe#0q#{G({ zfXwNYrBL!P>0V-?R})q+snZ3^{V#A1kuafXrC7d(v~|VBCAyJnnY$(i4Dv(3MZ!n%McXJ!H)s})2A zLXKQuE@2Ji+5u|P*O!wYV6B$U-KcLUJjLXCmBJ`puqC{pG$_Qul*ORks*%u9YEKI@ z%P^IABZwzCl+8MuiHI=WMMWc}UC)R@3t)hUVL*=~6u%HRxPc^S;&JOITgo#Q!>b?# zwM>(bqJ*hv11d1zfKrq*m2wJf4+{>48_TB)Dq6%01~D%SSRra#|S=o z98#F}rY5Q_5Sk4+7m<$uX;9#E76J^)^|Pw7%xz#8`AQ!+l-~~HG>fflh9q5tP;RVj z;5Gg^OlY>aNN69c3zmU2wCgjY?l}_2C8(o?{Y6%&Am;+QF;(>tYq_Sg zD&rAO_tq#4VuUWJBoOV`h$Adq3qcrm5do*Mm82WNO(C6(EcLafiF7K00KrHUWd_$f zZ!wLYZUMMGAn%I1E~C{nqsJ@4jq+|WLvae`B|OR+H36e(Oqa4A*TpLN!f>;3 zj&}s}?iQ(;g@{~mH2?~NWnc^yh3!|AnZp~wJLYfak0Cs?P#H)WNXKzW@}SZ?HpN7W zExQ*|1waoftQ8j3{cPD*5^rp*`mr!#hzSuCLC^SGC+k*t5lT;f81!1Ubm|9dNCfQ) zwo{RRrwCP~_%fb)|c+C=WA0zGJ(ovIY(#EOiU2B_+XC1jtPt#;epE zT|Kk|umt+}fxQ_Tu>6SljhsPa02{Z6AzgZsispDH<8CqK5t(ENZxmt|3m7C#fGZp< z*BE)!QU<^%1xTni4K-H^!~un>uV_fbiuv+}5qw6jGjtIl3KvMuGV{boOH){x4S7h7 zDwDZjC=Qie66Q*b)rv3(n@G5ztj@i+iuh3Qdxljxfa=Y_LaHP45iuPK+6XEw0%ju} zajU+sftVqA0F!XmlBLOluE{N`50M>LMB{{Uda z;VNMa;SDQLE6P!Po+n~rvjj75ZmN4HLeElyc$+v{CX`X8#jX9EhHWS@^lP0Z9`}2j zZ9C|P0K^s3W^N&+wBgqYx`?5bL|Pi0p-wIN5|RancPp0}sc=iU(BMWWd1=(>-yCLL zxC#JLBZN#Nh8UI68N50u-=r5%^|BJmurxLctDvF)wxV7R<*)&8<9qH>^h&&b2zE;~ z9yv&_%6&@h!vsq;8cTOH)LPSX54d9Szvv9JrdtVgin)nX65gy!npSC~vAh&j8Q<b^jkRe0To+R7chGrNo~Q^FL-@dhiYpOW?$7<81bZfMMd(~<>34XQ8P zMPQg3->3!?0WMt75M?-qQ@AJsB{#{`M5C+`+NuD$001D#!v+|!Mp)rhqeB4)qC8@I zHrGY@NOfc(a)gm;Wgj{(;Fv;#5GI%^EK2O(%chUGS=s(!X*;hjST-fy$9#8it9yih6QCP5V{b0fIlzu3N|=Bjecd;<{n(MQ|RLPmY0;ardP0R&$lS709!?> z0n0B_5_c0={$UPZsE&vprxEyIVXBomW%8@@6=ET$1N{YEBR^G6el-fjSWlpcH6>Un zjCPwcz;D$u5K%?-MHLQk2&rhWYfNQIzeA)<`HSg_XAHPekLdswVZ7WF>FQOua;{)g zOcJ+J^9f3Fa4Qqh{S07#u+Bj$;;MTfrLg2&8AlSjW@I?q!H+EDH)7(D@XbCIbz^z7 zi^@7Ie+rJPhTx>LD`~)8clvtR0qJv|fmku(2Ot7jkgP9wc&ry!EN2cjG-mDkh@s{i z_LE3Q(wq%847p^|BZTfnx&}6A>6Re}kOi>5JTPa^T#e2(sOG0^#*631fSOfT_UE7?!Og1h$oxV-JIwWk(p7ZxWs+8JCoQC`4a- zVg;VyFnWvHkQ}Qtcjy|R5*h;cfdUxM;If>BRGf>HrF^y(g3e89H*VaxQ*k0&GJ=Do z7(Yz+CzS4sCD~O7uc!o>y31UZJ5@7ivo3Bta zFS$UYs-y4^5a=T-eJ$mny-lH`RTR3!bexjPpNVVKZL2ozJ#^9;M&j%gl;NwxY0>RfZZH%#CAMT?`q{+OPE&;JQqh$3RHGe6FvRU#`7l0b|eai8X*UYOmXf1)>8W+;XwQ9Ri z&--{x-TXpd8;YbHj(C8woYMEQY_0B6ms*uqW(f0ljanB$SL#E;DzLS7jSVY_x`NFuxX7^a3!rn$3a?O&ADEi0n}(D# z_-KsrS26wp{g;#Qpanwz0P2+$2t)|vNpqKJyhnp2cCwO*ggAol9;L;cLmfb*mscrw zl-jD5o0+~KosogAgG08w*j1w{7^tCj9lk*ONOqPvtQ81){PzB*K!f3LDkeAsIHEBuoe#61-(` zu#Px^%jR!xE<;k1okUnoml1`n1!W!*C&|2==0B2PI#WGF;phEsH#xTF&Zm?q5WAMK z>@X=SR{~prA$RHqPK8K})o+6jWr#pV z>3d;|sF?jt6KLEHbVJBKA0RBljXj^RdkP#8tka6Bv3W>V~h z$hNbScB{lt(B=x(kGZ{fPowc04a^EIR`TbqOW`fkR}(XujUJ)ExpfCNX3>tICh90% z!W7JzM?eH7%8Ovlm6m23UkaeL8?f&X)#iM{Wcr`t2AQBL1Heivf!<>2iNc#=Od$j` zN`{7DV(}bIq%L5MVmQ=XI*3B-C{q^kZ67liOIRKLICY?C+`QA^qYf|>+-T^79ffiz zdPA_K>H1xbilqer0A_<17t17}ZB4AL&pJR~0z^Q-000yiKU7l|T;h8boX{?yxG9(e zLc@Z=Z_84|M+6(BDp1^3=mt8rPw#$XOF|{TE(Po(k;XbXqfwd3ZYkN^Q*PneQ<&7{=TYm8&cbyI ztUO#a->49?WNg#gB`5p-ltg?n5{_cBs$gbp+%4GI47%8&$OC{~AJVUQzs9JvI24>D z71Tii;xb}N69J(CAPNA$1_1q5gl(`?F{stF8&W|jtHGNAKoDdv@UP&qLv zm&Hh&(0PajC^r;8FX<9kBRmfu3{ph8=)|FkJ-?ilxydM&uD79O1~Ntx+s-*^*-T>k z)Xt?~#9=r~8yK1ih;pJG_c>aW8#4szZMj2*xlZ>H#mZG(!7kk#O#ru*hB8XhpDLsur0b zjZi9t&aV*$`$FTzjJMhA@>)AGoB5UG(W9p<=w$JfIkZSzlpG1L(i#vTKmoBv5jG~O zFecjGlOIMU=`QyGJ`&}*&}x~@bc3l5*iar7WKw8Gx&*17_NNF|Y_aF27R$tGtITgg zD=%?So*}mh}AbNft%X_f*lgby#`EL^u5A>m`8vv z)}zxa0Ah=>Bw#nGD>`L@5#6&kg@l>ljk^b=L78bF;y$vSkBvW4POn3We$QrrWS z7HG{wPB2i6N@^5-p>7B}nR}Aq(R+g^R5OzkghDu|&bo`@H8h6WxrA?hm5hsY(h;_l+DIZiuexxRhKh_P(3qXRIdrh~GA(DUX7 zrgffUFkBu(JjxW5^czr6bbF&_Q4x4+LGrq161~MN1T=y|m}=t`r>`5DtG4L7pqXRp z9?`Owki32&7C4;dNVzjpvu>iiGl*(#aK|y!$f$Q!a+Y5N)=R}3fYwXN>Lt+-O0Hpt zx74#nok|qr`@nK$Fg?rmyOf##0Eojgt0@z1<=#^Q!e#B_<{-U>IgeWXedr3yl!Y~F z+?avIvbuKdDk#h36BMIzP&UFrI4QNvu_ne&i3 zU>slMRu7CHQBxEOyG?3W6yY$+YMe11BJ%26c4c?DO1X@ce9LCkMURP#I**HqYKSUz z7(*(UnXnSl>w$}Z5$=btxRwE#7bc_J<1ii>UC<|q&T46H#FJnXct`Eu>XK z3kkhTE67738a)__+xePA3#H6y5Y!gC69C)zJRMuM?v6iUp+X{7L>j8&S{F#teIB|nT#dLH5FPNhdYiXo~BK^iA&ULhj0Zr znS)!37IR#{3r0=Ex+N<-Op(pzA}(cti~|rkC5}i~s2E^b-GsSAzwWYDa5(l954(9&fR$=d}tb?E)4~l989SH0JAA2ZUYEvVYc;AHq-;m zy2BEe64uh(>N`lB8#1GchO~zV#8)E$C=B83pKu?01V3o>o8nE zEX_-{!T1$iRj&{|krJ;BaE%j${e@D0|0L)sW+!25lpt4_2 z%&D#-?xI{4LsHNaJAar!u!;>U>AP+K_6%*B;# zgYZQ(Xa4|U_J*sdWC*ytwD>}Lm%nDUR1mH*Oyl+tBtuxjSy+`RhwO5LS&MU52C3$9 zIhLq%HoQkxKrnK~4r)?(jF&V%YIRR@F0Lj3Q7jpUf8+R-sJHfy4b?=rexswGGYTUV zvrv__j5gzmPW;reETG#f9rX>^ORu5^d8Mc#n=3BedY8Rj_HetWN*h*Ga zLj(|Z+i9FO&R0>QIN2&y73hBwjFOufA{t?o?Sz@k4}D5rbC}l~mK&&7{{H|{iAyYk zXVDYB=6f3xd}58s%^Q_#M){Qi?J7=oHeuo>x75O$n^B39N)BDOlxc+3<@*gFQ{s}V zvZ!A)7v?SUrmj+`brHicH?lpg8QZAaW+D$cafTz##2es*I?EFImoK>Ml0y@E;tg6$ zH3XoDT-H7yWfdceo}-9=O9Kw-FsCyz07Z#jyhQ3{0HO)Zt9o}p2chrw9(}_b85#co zhcykx@=qW>oTh!QRbw*^n#s5A$}-Cc^-WU+Oz_N2}tY&>XjXJXiO)o048Lj_-+Tob?^mzCYBf za}5cirY%c~P+(=bov6B74o!^?TfTo`0ZJGfypPE%62%3N-V(U4!mcazm%2ucJx6l) za9Lf-io_hE1#>RJ_Yl%pUVCEMnOz{vX znhndM_cDdNMpJT^!3@MaN^(3=Hw<1i~w z5O^XLM)em&!Ix6P?ZkD#6HtaC)*#JXqo2e9FHrPG6lFAu1(5Bl<{&JB;|^llHcPt8 zIe}%38qJ^AhmKIS(?EFxBvmV9a6%!>Em1?m&7X zQ^w&{aza!tG=||mDA8ohT-h@TM7Y&1<}q;2h8%)1`m7nAfNUP3@aOgsB{m?m8#%~) zEOa;%#E5iRfC^UPyFka6{l>=P*(_K@O6?~xQ@_iBj>{}}oL@*H<~MLUVlFijs8n;f zrjOLaFoF&vIc5m{lyM8tsDX$#tdOTWl}vgoWTSr)?vrqoAL4ld8Z^V-5`hT__Z`P9 zGOB=%5i1L8FYG2+#HJz&=yDs{-)d*T!0o+C?c&(js9hEhfg{Kf$(=##C@!7%Eax9G zhNm`Av1cAF%>TN24LGPb1E`NR5jKn6@eGT=ET5i zCQ3dGZN9%U>w4-2tR*p&1s~>UX$^#^zG5bwE4rr2bBrD(bXOyES6v!uuh>WSdo0lkXy8E_Jlx-E=S;#;C4$Ji;l={Y9q2!R(wL77=uk5>5P`# zvw{L>AiIgCQPv`=BCAnr8TBp*TwSv=B-#p@Z_M3=IX4w5_bpl=a>=-d86jIZoc>`P z4U)|~d6902g260xPm0GMu$pk}2pH=}2GsoeMJwVvrN2++;L#Pjx$Xksn;Jb!lPg8kY8QfXut`c5!z^5R za~vR5j6$5n;~I!NipM&b+`1KoLzX{iDdzFCn&0H-L7V1l*<6gw*lZ*IR~x4*)y4kE2uNOsM^hhjq znQIzhQvU!F(%K@+h%hu@o5a(&zNHbUmrX=G?h*@#%w?$6g|)=7mGLrBc1{mXY4E}~ zWfZ{k6_HUdAJCzBF;v-F$8)o@m0kYAPvv!57vt^J;wy1({!+qT)>eVvj^P%J8~#rZ z@f-_)1#-W~M?^r|UfvC91hs-~Znm0^L5lPBC^P)Uq5~@cdx!mKAvV1Sm5s1z%e^GV zRuR>71iw=M0BR7pRV|-hBLLu6Bh8vuwi-1xDeWH*f;E|MwDKkE6qGZ%N8DE&(#U>m z^v$M=Xm$rrw6>ggEsfAn?O1{Fm=h=tL-~)(k$*F!hivcwb@cqkidu1Xjqvn~#mDsr zO>kK+ltJ}pfPJdk`HI)&Ij>^gEe_>$U63~oDdya4Gsu|I?Rl6ozKhZrOY?sB60Fg# zLCJQVVZ6j-Afb%imq*lI`_-Tt0I@cQ>>#xu@B2FptS|d2e*)ui6g>(fs%z6y(+cu` zn4{?l1DX+GMdB(PZ_tHy=j8}7Du5f(x6vCcQp*izaQE{F*Np&HONT{C>1BK<5L8BbN z66kK$E0yEV`2K|aP1vHyIf-VcODg8$&LfKXOPnw1pNN+dCgk6o zWPf2Pgqx2S+kxhx;D(<60F7%dn70gi%L09>2eg?{keN6@j|WEMGc()}B&q-nmR4## z#}t)siyB1N8D=$<2(R|mGxGJvv;z5aE>W1R1O5gU#2NgZluts{I!Mw;U9+U)O6(7lCo{QG?hFyil*OJi*{@><3|iL>(XGHx<`H0#LeYqpHNMzH7lk$g{a7`$i#RXiO zwG=q$iYs0MzF>aB9AnJ|MC3*xO&A5FDvXw#1yCrTApZcLQkvS%-V$USn&TrAql}tT zBVZh>AP+9oHO(1*QCzIDF5eQT55N_D5x4-M4lhT+mI_a|_~isYi^*4nZx#ZBb&i|r zX61zou^6&yr9vYbvad?N;t-|Eym_?_IskFksS`)gC#8tQ9&Dn&k_#+PsCh3Y;+wEO zwT*Av%oDQhaVT3IJA*~wQB}PH`NIlQ18$Rw$LDat)ln~M7s~(%&1cQOY}A2wgnu8= z<*D}oUd4srs4yL+9eR*UhK6@7cC|)2PZc>S)Skg7v=_``q9fF9)%8$B*#U41Aw?*z z?%?4pP4Lq}b?5dOz`?0vIaC452bnuZZLCbZBGyRP`KAplHL(()a-0F$#7gxorUf>A{t2im3v` z&oK=tjYi)qo??~ok0dbk4t#wmC|hmAQ}Ys{4Qqa~u9a@>SC3*>sNU1`t*w)=^TUDslomsEH z;R%%SnKpS^c$TP4MrC)d%!F?bUmw!?g@Y%LBg%4IO}1a$V0Z8-jg!$-%y#EUXCF`qnxdI9x+mJKa?jq`sMP?)4XQ7W*;Wy;!-G-ks3Wr`?Hx3HIdjh3s+GQcK#_MQMp&b1QdS zTAMOSvem5g1KY@%{A$`wh(iO_{;fvNrwf2ho~?~&0J9>S52*hDJO2Qr{-}uVuj*G{ zGywj$`pzS0&Tlx@t4%dlwT^=K6{&NHQCid$S%+^&6O(cJn%H8UwT@#n6OzI8kQDm1 zZ38msHBnoPs*cruKyH8W#AOULa7pXwo|Bo$^y=!oMfS2Vb*lVp1Laj}ST>oyde&Ad zf*}&xyD(#b-?WL^ACNknzAskwm+H7&UsnF?6da}2OI$m~~_90d}>NM0J%;i8d9a(~M zD6dBxQ%cQ5Ivbv^pDd%?3ENVi7g)1o`I;~Zlarzqac~xq`kbCmk!vg@{YS%?=c`*S zK4%`%AM~cU0 zsA<1%h-@&3$u&Co)WWf;4Ov_3Ki|dV)Qr_GzDVA5Z5lJQbPlB(jI=Tpd)bSMtGgo~ zjHgYVoo-E@rQcKV_Aq-5t!a(#FcbIgb8Y_sPE;`yh$Hm-7C!u*-)N=<+$dtCG%oim ztV`_Ih;04^hF9dv#48XJ?OA4HY{2F2#s{soy^LPZs^cD{JuMa72GjL=ZnohaH0BQI zEErBEz2c-Xj7ePUI!>TRv;pGFH#*HqycuzgDwM95Us^`}@v?28{{Tj=Z5(yK8yNU} zR?5&Rm5FBR8{=FG*&~l6MiC`P%qQ;+(#s5Yo}q}qh@-@*b>>*pw&EW$leO9U`pYAC zO8zIXR8rm?fmuPv*{izDx_~_p1{o(K?DfbfJpDdcZpTTjq{^dx*D#DufUlB+K z6XU^C4MfMOgfz6R5439k0E~6>=F#)!*UC5Gu^X*{p&BtvFprWs-0pWgnb`fnCO3)P zA9PW@i(vV4i~SX0_#9LW{Y@5ktz4=8RQ~`k;A(GCU_ZjP{KCLa;#p_fG_07&V=lg2 zx^ETC2kh+MeehZGjMMTHPTU3Um71|PY<`KUzje8vkr|%5xHxLbO6R5-Q97Sl& z;&1Oc>Vc$L_$sdH?}cuUS;!|#!@%2{g@k6E=W`Y3sXM~)+vVK*e6pzZDQcx{wFmGl zJWe{`=#M#--67`Y{y;`ueDr=@j2>Vcgh4AlWz}@C)9_pylT#$13u`LWt0wAkG++i1 z86Y3dr$Y*v(l3t@$H*VN=IZNzf5C8j?%Tr1=yZ7m7Ff0?SniAc>Dj-=ynadYUy8V$ z!NFL3n|Q0&+w@n@(O(W7@vxu%@6aj!;l|S!j!(BWK|@~u00YHjitRm@IS+-S4TP~%dKwC6c6|t|HJ?`5dZ-J1O^EM1OfsB z00000009635g{=_QDLF6(GVa&P;r5g!SDkT;UY3Z@i0=5k`uzx|Jncu0RjODKLGy# z0!1AG2bzP)xiaByLFuwhKsa!EcnwLbYASWty1v$DYG8d)0n!vNOg%DsoYNNwS z!5kjFHkx+hXPn|#rmIc@!N0U z?v8QI2tGZp)|)WO?Gq|2JHUY@py)lzraf0e#$%`bXM7?Ug|q#n0@6jdY>*zBTwCtNo4xR6waraN1|4kPl;k z)}D$8O*#VvUOnB8y?utS?!;nV9Z;X|j??&u^@e(F9Ygys$X+$<#Tf+`5Kb6t*lu@i z2S9l;2)y|K6y?BG#=WMKhlfoB8{L6Z5ei3GP*nt~K~(EXN45Cr4{G6QO-7TFfTPOJ z(=(}2(L?So*KLsEXZs7*=;4}a?}+cMBx1>Oi$}+s7u4CJl4~^u$WS(_AT=oYDcpXVheew+^}}AoMya-OW16Jm8si<22kVn9O+u z&$aM;$67h5h;)LWo8#Yj7aJ2k5w`6CP!a{ z>(CdV&FS3^XamGmsZTVgK3y2mu2D0SEy90HGlhyrR-PlBTy5 zfAU(_E5hF6?)syo!H}8i(`1-71G_E~;@vk;j@%-6z9)2Q&!totcZTe?%LW$5>L#xb z+Z4W~YYzvho9|eV^s-I4uWAqPPW^!-F$rw5Z&i=^?fDq%VrJR8bop*Fg30=WVb(CoarQ!4i05~ z({?g5q;BaYm9QAM;3u6kaMQFf($YNsXc=1G?`%#nQ?+)@=|^zsOmF=1MH5~7G_5u~ zvP+eWGIXt0gcqR^*uSMsQcm3LwZ*onwSy33lYk}Bwv>IhK!xvuLs0yKr6Y<3}mhmH?bCd zfCtLKDwZdY>6}Iiu>>+h*qYAJbC39^YU+&0J4Z-t@;cS2<$TUEI;=)%8yj^S4U%U$ zvPuUFRfV#^Lff%B=w@TJAXywSCPt!(9~fJAS^6o6k*^LJZ{A&LM|uFK5&@w*L62m4ekknn60g+_w0!z-8Aa5R(4%#o%kOPpENT-dS%jD8ecG! zkfd?S5-PS!8tB`sG#MCIP85H|7YrxI)YY@~T!Bts%HGMOVnZ&r17nvL4-Cbfn)Pt|6C^tR-b*<8A;-q^8U z-}LZR=Y6o0;+o8OM4lJi+&P*yrY_YMKO`29x!apoHtd;JuOHlTpg*pI9H%${BOpd_ zgy5#Q9!F8fNR~V;wGfieZPxa#qhjpcowq{OXW5QtH2VjTpqL*rymY7eQMF$uq7=yp zI9UX7z)f&f>bh6-w`*<~dgZAA{Eg{*vp}>AxaDgNBLwXm8H#v>*p{Hgjc_Zdrl0Bp zx-tLFvWS<2WXMsYGP%o2H z*57U4K|^Y7ra=pTC)69@%G%qjJ|`cYmnCXR|vcT9hUk-x044c_fB~Ip-iVBPoLcQ61=CT{-*=ah2IBcV+<8f*%WtRd6 zS0lB8nU<*J$A?M?MnKZFINN2+ow8Jz58K=n>`4-&n{W6*Z>Z8jdwZ^_@fnT|HrZFb;{!Ui(6+3^k*(q?W4sDN9U zu653nUM`V@T5**B00_y1EbyNpB@2?^G|MqOnzhThEvxLG2MT@_S74~+&kA=mV7uue zY)yb`yE3)+x2}yCt3=o!{H@JW)Q#@fe6?KcPBh~7_14wf)gBhs0hYrIPUUVHfYc=i z3O4YjZa7jDBq$J2cl8t{H*)H3e@y!w+HzbHbsaX z+@*f+C7OhKe^bP?H3)-jJEvcOx>ib}cT)jSyM;fMD^PDZO@TpJcu>~?1^}jFl$5<^&OftfV1A+PW>P0&{b6WJuKdEfBcSLS&hQ0dqALDl$rde@mX=I@}{^~)L z;qI9y3K@A&KPiKSD+UzsWlX{!gH(79c6KZ4iTA63jyyCF`+oN}7{rv~9Z zF_htt(;n+SYf?Ftoc7s-MPf*Yk;~i44aW(rI8ro) zgP+v3M#7;SD-3Qjp_l~8GMask*qFCbj|6-UsTW;o7&TXBdVa)ZJJ1MHj*RBgaTzUZ)mqHqe+vI@|r?$Cw*00q0-nG2I$?6H%C8|4wn9C&+jIoMWu>An;2JEDMae2Y-jA6`b5&hX$TXns*42M=R~ zBSFvQI;79)eb-Jb}%L&@D;^Bz7pzuQ) z5b=cPfy!in{)75O?Fq+}V+9e?FeH8k6mQCxg*f|Gm1n(HDSiujLK$tcE3W!!!`n2G zOa+*aO6qG=rKI4o_)yG?z!@1$kYfZrzDuVHR};#B_)?Cc#H`3$65m}z3HTlNj7D3l zX~t&tH$s)r!uTb0ztnA>O!nt|QS)M5cTfH;k8)IClBTr~0`A_RhCuNv%Bp04K z`fV$YXRqmmC4b_`u%GDlX9Y{r+E9f3fnUgrWWe4NwjEdbX2PHdPT6z_z>{OrKga!t zQ{PI`VW$y_AA#2N*zQzyc^~PV?{N|7zLP*O>zaPwrB$7{hl~&U8vn!qJ`n%`0R#pI z2Lb~J1poj50003301+WEK~Z6Wk)Z<+5^=G?(I6r+KtfRAQt&XMvIJssf{>EJBSX^S z@&DQY2mu2D2|ob-f zmrc!hq#wC^SB+A#v-ewRRo#IvnWhpIS{qKMZ+{lj1N^Dz$^_Viza+MeX4OOW5z(~B zNF~&&Hk5)XZ`#uP60^uQk$OeL!kv)-=#uhaDvc~02peO3@R+rW!Itl7p(BZHB6NF3 zAfz~{(RpzZ4lx(Oj)2>;oC3L(Fo#!KQxP%W}Y|!SMqISXSf8e#%_hO`}pn^OkItBv_|^k2ZeD z8!?z5lN?*Xso7Dxt4w`@EG>%-qVhwn;hPs4lg(4X%(6=v{ke>NMzdDonPBjmD<(sA zCcwqz@nYjxW$g=N^MPc}ka~r2Z4@`hgDYiKDjx^f9HaG7b$l3=8V5ibKv*JjfV{Ka zZ^H+qI9c%arRW3r*)S0!0(8<;rJNFuOl3|w`GEnXV|ny-+&>ZiPKfXj}c(l9nC zb)Gde&vaknI70T0uJ(?qM(&KDMV@rPD`k7!2pgw{A>^_CBVB^dJDsezh($cb^jp7D zc9JCMDL=w$tQaY#b;(JC0jZz@+duaB%$}<(3%O_;) z3^tRGZ|VO4C2KmNS)dBbC%Tsx)?VWM^a_WWnv1RxJhj-Y3yUA77uym zcQAI+NCPpL?a{O|e?3Q0azxJ|SzzSTYpGGFU>Z~YBU`8y3ZpaTeIqj-4%I_?f`(5S zfYLBKk4dnI?N&IoAaIUtK?gRV_NU?-#Kq%=wK*A+Q0qe@yFe1&Pc}PBGc}sG3aK$P zJIqK$j7it^3@K?fE;xXDdL=382fHoOE&DI`Jf1@)KuH0`&Jr-m!tT_=4(h;A6+U9( z#mE?wP`8B34UH0D`VuM?o^dQUlQZUw;(2yGAxH9^RVVa@qqL&oDE)Cj~EX6;q^3P9oKkn>o9 z$EYl~x>O#V8%5r%cU92+#g-OCT_p!bRNPAl7>&j}+LVk_-Q@fI!68D{Udmqb494Tv z7MTvi;D!=c>L2wO`3i>!=Kla|aZ;QcqvOEPHky zUc@HxdyBJo;hxngJVE8`R5;*4Y6rIR7o@u707hW>A3@0c`w^ORNqESY+|v2A;k`hM-0_$mK+Pi;IOptMpfM2O=79y_yep35NVw$faP1z^iVj9R zU+h94@gEH^$$CshhQ3GRQc2)9lL32aQY;5-AX7TdcL4oSpXC2=xvQF=oS-^E? zNYNJi{&Kr1d=;M3-&{jPL$~pa0n* C;e*`( literal 0 HcmV?d00001