From a16948c8d68124e0d44c392e1d0c529e4fcf4f60 Mon Sep 17 00:00:00 2001 From: Holger Drewes <931137+holgerd77@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:05:32 +0200 Subject: [PATCH] docs -> website-docs, initial MCP docs, docs landing page --- .cursor/rules/video-playwright.mdc | 2 +- .github/ISSUE_TEMPLATE/general.yml | 2 +- .github/ISSUE_TEMPLATE/library-request.yml | 2 +- .github/ISSUE_TEMPLATE/new-exploration.yml | 10 +- .github/PULL_REQUEST_TEMPLATE.md | 8 +- README.md | 26 +- community-token/README.md | 3 +- community-token/public/llms.txt | 2 +- contracts/ice-cream-stand/README.md | 2 +- docs-hub/README.md | 53 + docs-hub/index.html | 166 + docs-hub/main.css | 512 + docs-hub/main.ts | 1 + docs-hub/public/favicon.png | Bin 0 -> 1789 bytes .../public/fonts/JetBrainsMono-Bold.woff2 | Bin .../public/fonts/JetBrainsMono-Regular.woff2 | Bin .../illustrations/card-community-token.png | Bin 0 -> 296798 bytes .../public/illustrations/card-mcp-docs.png | Bin 0 -> 265183 bytes .../public/illustrations/card-roadmap.png | Bin 0 -> 300302 bytes .../illustrations/card-website-docs.png | Bin 0 -> 271808 bytes docs-hub/public/llms.txt | 27 + docs-hub/public/logo.png | Bin 0 -> 7120 bytes docs-hub/public/robots.txt | 4 + docs/public/llms.txt | 47 - docs/public/robots.txt | 4 - eslint.config.ts | 3 +- mcp-docs/.vitepress/cache/deps/_metadata.json | 52 + .../.vitepress/cache/deps/chunk-WUHDQSIQ.js | 12840 ++++++++++++++++ .../cache/deps/chunk-WUHDQSIQ.js.map | 7 + .../.vitepress/cache/deps/chunk-ZHNGGLER.js | 8738 +++++++++++ .../cache/deps/chunk-ZHNGGLER.js.map | 7 + mcp-docs/.vitepress/cache/deps/package.json | 3 + .../deps/vitepress___@vue_devtools-api.js | 3818 +++++ .../deps/vitepress___@vue_devtools-api.js.map | 7 + .../cache/deps/vitepress___@vueuse_core.js | 601 + .../deps/vitepress___@vueuse_core.js.map | 7 + ...ess___@vueuse_integrations_useFocusTrap.js | 1334 ++ ...__@vueuse_integrations_useFocusTrap.js.map | 7 + .../vitepress___mark__js_src_vanilla__js.js | 1665 ++ ...itepress___mark__js_src_vanilla__js.js.map | 7 + .../cache/deps/vitepress___minisearch.js | 1813 +++ .../cache/deps/vitepress___minisearch.js.map | 7 + mcp-docs/.vitepress/cache/deps/vue.js | 346 + mcp-docs/.vitepress/cache/deps/vue.js.map | 7 + mcp-docs/.vitepress/config.ts | 101 + .../.vitepress/theme/components/Changelog.vue | 34 + mcp-docs/.vitepress/theme/custom.css | 198 + mcp-docs/.vitepress/theme/index.ts | 22 + mcp-docs/README.md | 75 + mcp-docs/guide/overview.md | 75 + mcp-docs/guide/roadmap-relationship.md | 59 + mcp-docs/index.md | 36 + .../public/fonts/JetBrainsMono-Bold.woff2 | Bin 0 -> 94588 bytes .../public/fonts/JetBrainsMono-OFL.txt | 0 .../public/fonts/JetBrainsMono-Regular.woff2 | Bin 0 -> 92164 bytes mcp-docs/public/llms.txt | 32 + mcp-docs/public/og/default.webp | Bin 0 -> 77368 bytes mcp-docs/public/og/render.html | 108 + mcp-docs/public/robots.txt | 4 + og/src/topic-colors.ts | 2 +- package.json | 16 +- public/llms.txt | 3 +- roadmap/.vitepress/config.ts | 4 +- roadmap/README.md | 9 +- roadmap/concepts/api-mcp.md | 3 +- roadmap/public/llms.txt | 3 +- roadmap/vision/problem-vision.md | 2 +- shared/vitepress/fyp-tokens.css | 2 + .../__tests__/IceCreamHomeSection.spec.ts | 2 +- src/libs/__tests__/docsUrls.spec.ts | 37 +- src/libs/__tests__/roadmapUrls.spec.ts | 24 + src/libs/docsUrls.ts | 29 +- src/libs/roadmapUrls.ts | 15 +- video/README.md | 6 +- vite.docs-hub.config.ts | 30 + .../.vitepress/cache/deps/_metadata.json | 52 + .../.vitepress/cache/deps/chunk-WUHDQSIQ.js | 12840 ++++++++++++++++ .../cache/deps/chunk-WUHDQSIQ.js.map | 7 + .../.vitepress/cache/deps/chunk-ZHNGGLER.js | 8738 +++++++++++ .../cache/deps/chunk-ZHNGGLER.js.map | 7 + .../.vitepress/cache/deps/package.json | 3 + .../deps/vitepress___@vue_devtools-api.js | 3818 +++++ .../deps/vitepress___@vue_devtools-api.js.map | 7 + .../cache/deps/vitepress___@vueuse_core.js | 601 + .../deps/vitepress___@vueuse_core.js.map | 7 + ...ess___@vueuse_integrations_useFocusTrap.js | 1334 ++ ...__@vueuse_integrations_useFocusTrap.js.map | 7 + .../vitepress___mark__js_src_vanilla__js.js | 1665 ++ ...itepress___mark__js_src_vanilla__js.js.map | 7 + .../cache/deps/vitepress___minisearch.js | 1813 +++ .../cache/deps/vitepress___minisearch.js.map | 7 + website-docs/.vitepress/cache/deps/vue.js | 346 + website-docs/.vitepress/cache/deps/vue.js.map | 7 + {docs => website-docs}/.vitepress/config.ts | 18 +- .../.vitepress/theme/custom.css | 0 .../.vitepress/theme/index.ts | 0 website-docs/README.md | 34 + {docs => website-docs}/changelog.md | 0 .../contributing/adding-an-exploration.md | 0 .../contributing/ai-assisted-development.md | 4 +- .../contributing/available-e-components.md | 0 .../contributing/code-conventions.md | 0 .../contributing/e-components.md | 0 .../contributing/how-to-contribute.md | 6 +- {docs => website-docs}/contributing/images.md | 0 .../contributing/styling.md | 0 .../contributing/third-party-libraries.md | 0 .../contributing/ui-components.md | 0 .../contributing/video-authoring.md | 0 .../contributing/video-pipeline.md | 0 .../contributing/video-voice.md | 0 {docs => website-docs}/guide/architecture.md | 0 .../guide/getting-started.md | 22 +- {docs => website-docs}/index.md | 0 .../public/fonts/JetBrainsMono-Bold.woff2 | Bin 0 -> 94588 bytes .../public/fonts/JetBrainsMono-OFL.txt | 93 + .../public/fonts/JetBrainsMono-Regular.woff2 | Bin 0 -> 92164 bytes website-docs/public/llms.txt | 47 + {docs => website-docs}/public/og/default.webp | Bin website-docs/public/robots.txt | 4 + .../special-actions/ice-cream-week.md | 0 .../special-actions/index.md | 2 +- 122 files changed, 64443 insertions(+), 124 deletions(-) create mode 100644 docs-hub/README.md create mode 100644 docs-hub/index.html create mode 100644 docs-hub/main.css create mode 100644 docs-hub/main.ts create mode 100644 docs-hub/public/favicon.png rename {docs => docs-hub}/public/fonts/JetBrainsMono-Bold.woff2 (100%) rename {docs => docs-hub}/public/fonts/JetBrainsMono-Regular.woff2 (100%) create mode 100644 docs-hub/public/illustrations/card-community-token.png create mode 100644 docs-hub/public/illustrations/card-mcp-docs.png create mode 100644 docs-hub/public/illustrations/card-roadmap.png create mode 100644 docs-hub/public/illustrations/card-website-docs.png create mode 100644 docs-hub/public/llms.txt create mode 100644 docs-hub/public/logo.png create mode 100644 docs-hub/public/robots.txt delete mode 100644 docs/public/llms.txt delete mode 100644 docs/public/robots.txt create mode 100644 mcp-docs/.vitepress/cache/deps/_metadata.json create mode 100644 mcp-docs/.vitepress/cache/deps/chunk-WUHDQSIQ.js create mode 100644 mcp-docs/.vitepress/cache/deps/chunk-WUHDQSIQ.js.map create mode 100644 mcp-docs/.vitepress/cache/deps/chunk-ZHNGGLER.js create mode 100644 mcp-docs/.vitepress/cache/deps/chunk-ZHNGGLER.js.map create mode 100644 mcp-docs/.vitepress/cache/deps/package.json create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___@vueuse_core.js create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___minisearch.js create mode 100644 mcp-docs/.vitepress/cache/deps/vitepress___minisearch.js.map create mode 100644 mcp-docs/.vitepress/cache/deps/vue.js create mode 100644 mcp-docs/.vitepress/cache/deps/vue.js.map create mode 100644 mcp-docs/.vitepress/config.ts create mode 100644 mcp-docs/.vitepress/theme/components/Changelog.vue create mode 100644 mcp-docs/.vitepress/theme/custom.css create mode 100644 mcp-docs/.vitepress/theme/index.ts create mode 100644 mcp-docs/README.md create mode 100644 mcp-docs/guide/overview.md create mode 100644 mcp-docs/guide/roadmap-relationship.md create mode 100644 mcp-docs/index.md create mode 100644 mcp-docs/public/fonts/JetBrainsMono-Bold.woff2 rename {docs => mcp-docs}/public/fonts/JetBrainsMono-OFL.txt (100%) create mode 100644 mcp-docs/public/fonts/JetBrainsMono-Regular.woff2 create mode 100644 mcp-docs/public/llms.txt create mode 100644 mcp-docs/public/og/default.webp create mode 100644 mcp-docs/public/og/render.html create mode 100644 mcp-docs/public/robots.txt create mode 100644 vite.docs-hub.config.ts create mode 100644 website-docs/.vitepress/cache/deps/_metadata.json create mode 100644 website-docs/.vitepress/cache/deps/chunk-WUHDQSIQ.js create mode 100644 website-docs/.vitepress/cache/deps/chunk-WUHDQSIQ.js.map create mode 100644 website-docs/.vitepress/cache/deps/chunk-ZHNGGLER.js create mode 100644 website-docs/.vitepress/cache/deps/chunk-ZHNGGLER.js.map create mode 100644 website-docs/.vitepress/cache/deps/package.json create mode 100644 website-docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js create mode 100644 website-docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map create mode 100644 website-docs/.vitepress/cache/deps/vitepress___@vueuse_core.js create mode 100644 website-docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map create mode 100644 website-docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js create mode 100644 website-docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map create mode 100644 website-docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js create mode 100644 website-docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map create mode 100644 website-docs/.vitepress/cache/deps/vitepress___minisearch.js create mode 100644 website-docs/.vitepress/cache/deps/vitepress___minisearch.js.map create mode 100644 website-docs/.vitepress/cache/deps/vue.js create mode 100644 website-docs/.vitepress/cache/deps/vue.js.map rename {docs => website-docs}/.vitepress/config.ts (87%) rename {docs => website-docs}/.vitepress/theme/custom.css (100%) rename {docs => website-docs}/.vitepress/theme/index.ts (100%) create mode 100644 website-docs/README.md rename {docs => website-docs}/changelog.md (100%) rename {docs => website-docs}/contributing/adding-an-exploration.md (100%) rename {docs => website-docs}/contributing/ai-assisted-development.md (95%) rename {docs => website-docs}/contributing/available-e-components.md (100%) rename {docs => website-docs}/contributing/code-conventions.md (100%) rename {docs => website-docs}/contributing/e-components.md (100%) rename {docs => website-docs}/contributing/how-to-contribute.md (95%) rename {docs => website-docs}/contributing/images.md (100%) rename {docs => website-docs}/contributing/styling.md (100%) rename {docs => website-docs}/contributing/third-party-libraries.md (100%) rename {docs => website-docs}/contributing/ui-components.md (100%) rename {docs => website-docs}/contributing/video-authoring.md (100%) rename {docs => website-docs}/contributing/video-pipeline.md (100%) rename {docs => website-docs}/contributing/video-voice.md (100%) rename {docs => website-docs}/guide/architecture.md (100%) rename {docs => website-docs}/guide/getting-started.md (85%) rename {docs => website-docs}/index.md (100%) create mode 100644 website-docs/public/fonts/JetBrainsMono-Bold.woff2 create mode 100644 website-docs/public/fonts/JetBrainsMono-OFL.txt create mode 100644 website-docs/public/fonts/JetBrainsMono-Regular.woff2 create mode 100644 website-docs/public/llms.txt rename {docs => website-docs}/public/og/default.webp (100%) create mode 100644 website-docs/public/robots.txt rename {docs => website-docs}/special-actions/ice-cream-week.md (100%) rename {docs => website-docs}/special-actions/index.md (92%) diff --git a/.cursor/rules/video-playwright.mdc b/.cursor/rules/video-playwright.mdc index 5f8eadc..47d9140 100644 --- a/.cursor/rules/video-playwright.mdc +++ b/.cursor/rules/video-playwright.mdc @@ -52,4 +52,4 @@ run `video:setup` / `playwright install` as the first fix. 2. Still fails → ask user for `npm run og:check` output; do **not** run setup 3. Selector timeout / 404 → fix app or playbook, not Playwright setup -See `video/README.md` and `docs/contributing/video-pipeline.md`. +See `video/README.md` and `website-docs/contributing/video-pipeline.md`. diff --git a/.github/ISSUE_TEMPLATE/general.yml b/.github/ISSUE_TEMPLATE/general.yml index 2cee510..a3a68fa 100644 --- a/.github/ISSUE_TEMPLATE/general.yml +++ b/.github/ISSUE_TEMPLATE/general.yml @@ -8,7 +8,7 @@ body: value: | Use this template for questions, feature ideas, or anything that doesn't fit the other templates. - **Docs:** [How to Contribute](https://docs.feelyourprotocol.org/contributing/how-to-contribute.html) · [Architecture](https://docs.feelyourprotocol.org/guide/architecture.html) + **Docs:** [How to Contribute](https://website-docs.feelyourprotocol.org/contributing/how-to-contribute.html) · [Architecture](https://website-docs.feelyourprotocol.org/guide/architecture.html) - type: textarea id: description diff --git a/.github/ISSUE_TEMPLATE/library-request.yml b/.github/ISSUE_TEMPLATE/library-request.yml index 4b6a33d..48dd11e 100644 --- a/.github/ISSUE_TEMPLATE/library-request.yml +++ b/.github/ISSUE_TEMPLATE/library-request.yml @@ -8,7 +8,7 @@ body: value: | Use this template to request a new third-party dependency or a managed fork branch. - **Docs:** [Third-Party Libraries](https://docs.feelyourprotocol.org/contributing/third-party-libraries.html) + **Docs:** [Third-Party Libraries](https://website-docs.feelyourprotocol.org/contributing/third-party-libraries.html) - type: dropdown id: type diff --git a/.github/ISSUE_TEMPLATE/new-exploration.yml b/.github/ISSUE_TEMPLATE/new-exploration.yml index 48ae000..0ba9e32 100644 --- a/.github/ISSUE_TEMPLATE/new-exploration.yml +++ b/.github/ISSUE_TEMPLATE/new-exploration.yml @@ -8,7 +8,7 @@ body: value: | Thanks for proposing a new exploration! Please fill out the sections below so we can discuss scope, library needs, and taxonomy placement before you start coding. - **Docs:** [Adding an Exploration](https://docs.feelyourprotocol.org/contributing/adding-an-exploration.html) · [Architecture](https://docs.feelyourprotocol.org/guide/architecture.html) + **Docs:** [Adding an Exploration](https://website-docs.feelyourprotocol.org/contributing/adding-an-exploration.html) · [Architecture](https://website-docs.feelyourprotocol.org/guide/architecture.html) - type: input id: eip @@ -31,7 +31,7 @@ body: id: topic attributes: label: Topic - description: "Which strategic pillar does this belong to? See [Topics](https://docs.feelyourprotocol.org/guide/architecture.html#topics)." + description: "Which strategic pillar does this belong to? See [Topics](https://website-docs.feelyourprotocol.org/guide/architecture.html#topics)." options: - Scaling - Privacy @@ -47,7 +47,7 @@ body: id: timeline attributes: label: Timeline - description: "Where does this sit on the protocol timeline? See [Timeline](https://docs.feelyourprotocol.org/guide/architecture.html#timeline)." + description: "Where does this sit on the protocol timeline? See [Timeline](https://website-docs.feelyourprotocol.org/guide/architecture.html#timeline)." options: - Fusaka - Glamsterdam @@ -62,7 +62,7 @@ body: id: tags attributes: label: Tags (up to 3–4) - description: "Existing tags or proposed new ones. See [Tags](https://docs.feelyourprotocol.org/guide/architecture.html#tags) for rules." + description: "Existing tags or proposed new ones. See [Tags](https://website-docs.feelyourprotocol.org/guide/architecture.html#tags) for rules." placeholder: "e.g. EVM, Gas Costs, Precompiles" - type: textarea @@ -72,7 +72,7 @@ body: description: | Which libraries will the exploration use? Are they already in `package.json`? Do you need a custom fork or new dependency? - See [Third-Party Libraries](https://docs.feelyourprotocol.org/contributing/third-party-libraries.html) for the process. + See [Third-Party Libraries](https://website-docs.feelyourprotocol.org/contributing/third-party-libraries.html) for the process. placeholder: "e.g. @ethereumjs/evm (already available), noble-curves (needs adding)" - type: textarea diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 056fbe9..cb4b8ff 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -20,7 +20,7 @@ ## Taxonomy (new explorations only) - + - **Topic:** - **Timeline:** @@ -30,13 +30,13 @@ -- [ ] I have read the [contributing guide](https://docs.feelyourprotocol.org/contributing/how-to-contribute.html) +- [ ] I have read the [contributing guide](https://website-docs.feelyourprotocol.org/contributing/how-to-contribute.html) - [ ] Linting and type checking pass (`npm run lf && npm run type-check`) - [ ] Unit tests pass (`npx vitest run`) - [ ] E2E tests pass (`npm run test:e2e`) -- [ ] Production build succeeds (`npm run build` — website + community-token + docs) +- [ ] Production build succeeds (`npm run build` — website + community-token + docs hub + website-docs) - [ ] New exploration is registered in `REGISTRY.ts` -- [ ] Library needs were discussed in a separate issue (if applicable — see [Third-Party Libraries](https://docs.feelyourprotocol.org/contributing/third-party-libraries.html)) +- [ ] Library needs were discussed in a separate issue (if applicable — see [Third-Party Libraries](https://website-docs.feelyourprotocol.org/contributing/third-party-libraries.html)) ## Lightweight PRs (optional) diff --git a/README.md b/README.md index 5a1256b..7328dc2 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,24 @@ npm run capture:social ## Deployment -Production builds (`dist/website`, `dist/docs`, `dist/community-token`, `dist/roadmap`) are **not** in the repo — the server runs `npm run build:deploy` after `git pull`. See `server-config/deployment/fyp_deploy.sh`. +Production builds (`dist/website`, `dist/docs`, `dist/website-docs`, `dist/community-token`, `dist/roadmap`, `dist/mcp-docs`) are **not** in the repo — the server runs `npm run build:deploy` after `git pull`. See `server-config/deployment/fyp_deploy.sh`. ## Documentation -Full **website docs** (contributor guide & architecture) are at **[docs.feelyourprotocol.org](https://docs.feelyourprotocol.org/index.html)**. API docs will follow on a separate subdomain. +The **[docs hub](https://docs.feelyourprotocol.org)** is the entry point to all FYP documentation. + +**Website docs** (contributor guide & architecture) live at **[website-docs.feelyourprotocol.org](https://website-docs.feelyourprotocol.org/index.html)**. + +**MCP server docs** (concrete tool reference & technical setup) are at **[mcp-docs.feelyourprotocol.org](https://mcp-docs.feelyourprotocol.org)** — grows as the MCP server ships. + +### Local dev + +```bash +npm run docs:dev # docs hub landing → http://localhost:5176 +npm run website-docs:dev # website contributor docs (VitePress) +npm run mcp-docs:dev # MCP docs (VitePress) +npm run roadmap:dev # roadmap (VitePress) +``` ## Community Token Site @@ -60,6 +73,15 @@ Organizational home — vision, milestones, roadmap tracks, timeline, and core c See [roadmap/README.md](./roadmap/README.md) for structure, the data-driven visualizations, and deployment notes. +## MCP Docs Site + +Concrete reference for the Feel Your Protocol MCP server — tool docs and technical setup (present-tense, as capabilities ship): + +- **Production:** [mcp-docs.feelyourprotocol.org](https://mcp-docs.feelyourprotocol.org) (after deploy) +- **Local dev:** `npm run mcp-docs:dev` + +See [mcp-docs/README.md](./mcp-docs/README.md) for structure, the terminal-green skin, and deployment notes. + ## Cross-site constants Shared fleet URLs (roadmap origin, project X handle, etc.) live in [`src/libs/roadmapUrls.ts`](./src/libs/roadmapUrls.ts). **Project X is @FeelEthereum** — not `@feelyourprotocol` (domain name ≠ handle). VitePress configs duplicate the X URL with a comment pointing there. diff --git a/community-token/README.md b/community-token/README.md index ffbb72d..c761df7 100644 --- a/community-token/README.md +++ b/community-token/README.md @@ -66,5 +66,6 @@ After first deploy: sudo certbot certonly --nginx -d community-token.feelyourprotocol.org # or expand existing cert: # sudo certbot -d feelyourprotocol.org -d www.feelyourprotocol.org \ -# -d docs.feelyourprotocol.org -d community-token.feelyourprotocol.org +# -d docs.feelyourprotocol.org -d website-docs.feelyourprotocol.org \ +# -d community-token.feelyourprotocol.org ``` diff --git a/community-token/public/llms.txt b/community-token/public/llms.txt index 10d7aa8..668258c 100644 --- a/community-token/public/llms.txt +++ b/community-token/public/llms.txt @@ -36,7 +36,7 @@ discount on future API usage, not a gate. - [Main site](https://feelyourprotocol.org/): The interactive Ethereum protocol explorations this funds - [Phase 3 Roadmap](https://roadmap.feelyourprotocol.org/index.html): Future Ethereum protocol API & MCP — upcoming forks, EIPs, token role (conceptualization, not promises) -- [Documentation](https://docs.feelyourprotocol.org/index.html): Architecture and contributor guide +- [Documentation hub](https://docs.feelyourprotocol.org/): Entry point to all FYP documentation - [Treasury ledgers on GitHub](https://github.com/feelyourprotocol/website/tree/main/treasury): Open books backing the Treasury section ## Notes diff --git a/contracts/ice-cream-stand/README.md b/contracts/ice-cream-stand/README.md index 9d9f95e..c9df4be 100644 --- a/contracts/ice-cream-stand/README.md +++ b/contracts/ice-cream-stand/README.md @@ -14,7 +14,7 @@ Pay **10 FYP** → mint one receipt per flavor per wallet (Option A: up to 8 fla | Chain | Base (`8453`) | | Owner + scoop revenue | `0x4AEef6965A4cBcddb2e96555dCD0cB1afA7Bd202` | -Canonical mirrors: `src/ice-cream/constants.ts`, `docs/special-actions/ice-cream-week.md`. +Canonical mirrors: `src/ice-cream/constants.ts`, `website-docs/special-actions/ice-cream-week.md`. ## What lives here diff --git a/docs-hub/README.md b/docs-hub/README.md new file mode 100644 index 0000000..3b6cccf --- /dev/null +++ b/docs-hub/README.md @@ -0,0 +1,53 @@ +# Documentation Hub + +Static landing page for **docs.feelyourprotocol.org** — the fleet entrypoint to all Feel Your Protocol documentation sites. + +Each card has a square illustration header, audience-focused copy, and accent styling that mirrors the destination site's skin. On wide screens (≥1120px) all four cards sit in one row; below that, a 2×2 grid. Illustrations ship at 480px (~1.1 MB total). + +Not VitePress. Built with Vite as a minimal static site (same dev/build pattern as `community-token/`). + +## Development + +```bash +# from website/ +npm run docs:dev +``` + +Preview: http://localhost:5176 + +## Build + +```bash +npm run docs:build +npm run docs:preview # http://localhost:4176 +``` + +Production output: `dist/docs/` (served on `docs.feelyourprotocol.org`). + +## Behaviour on production + +- `docs.feelyourprotocol.org/` — this landing page +- `docs.feelyourprotocol.org/*` (any other path) — nginx 301 → `website-docs.feelyourprotocol.org` (legacy SEO URLs) + +## Structure + +``` +docs-hub/ +├── index.html # Single-page fleet overview (four doc cards) +├── main.css # Shared FYP tokens + card skins mirroring each doc site +└── public/ + ├── favicon.png + ├── logo.png + ├── fonts/ + ├── llms.txt + └── robots.txt +``` + +## Fleet cards + +| Card | Subdomain | Accent | +| --- | --- | --- | +| Website Docs | website-docs.feelyourprotocol.org | Cyan | +| MCP Server Docs | mcp-docs.feelyourprotocol.org | Terminal green | +| Roadmap | roadmap.feelyourprotocol.org | Purple | +| Community Token | community-token.feelyourprotocol.org | Amber | diff --git a/docs-hub/index.html b/docs-hub/index.html new file mode 100644 index 0000000..39fff75 --- /dev/null +++ b/docs-hub/index.html @@ -0,0 +1,166 @@ + + +
+ + + + + + + + + + + + + +Feel Your Protocol
++ Ethereum protocol change is dense. We split the docs fleet so you land where you + belong — then dive as deep as you want. +
++ Live explorations on + feelyourprotocol.org · this page is the map +
+
+ Ship the next exploration.
++ E-Components, contribution workflow, architecture — turn an EIP into something people + can actually play with. +
+ +
+ Simulate tomorrow's chain today.
++ Tool reference and setup for deterministic future-protocol runs — wired to real + EthereumJS logic as the server ships. +
+ +
+ See where this is headed.
++ Vision, tracks, and the thinking behind Phase 3 — an oracle for upcoming forks, + without the marketing gloss. +
+ +
+ Radical transparency, plain language.
++ How an independently launched token relates to open-source work — no hype, no + corporate control. +
+ +$e47EOVh78z3xo0l-vpLyv5>7hR1IM9Qn3z{~9o z8e*u*cWBYXKJcJXD?L)eh@QO=%tbhvZnM!FuyaLH3T{F( YyZr=`rT}cD$B@Id(ECoo>}eF}gUA zD35(+mQ`;{mQmTIB0<58Is%k4v u_=3Y0Os%1cksjHsnfp@2#)2|a1KLS~8is^qJap7yenfW&%|Y|X zGrL;Zp3qGtn{9%(S3^eYX>I=5sgiQsOq<5F$|~G-i_O%E%oseWLc1IX9v36$ }Q&+mroy&Y$Jila*B$)D@!@*2LjC=%% zjR(Vp9xX%~0x+}AOK7-3Wn#KPGSh=V^Z8%`TSq`6k4XmxQu`6OGS(SiT^j7Hd9L9K z7%ID@T&&brRa_L*PYVbi()rPkSU@^d%eD+7Clhk=B3TbypAJ23;&f@WO-fEtNLMlm zuyRUdLFLvV`!yG{Jo?djlh 9E;5v~McmPJ4IK-m=r zI`hF*#N87o>*gK}S)|booQ5NAb}FE0ZG&NmcXqN{q?lMIxhK$tdd{KT#^!(u=OoHM zR|kQNb`?;C!^4<7W}|mv>zd418J9CpMannb-F!BJ!m&F$VF~C@hN+dr06o)S6w(y5 znzS_BnIRC@2!u0+flwADiT$zHM`H>dbTVfKa3%**K!wg_FR**F>1gDR%;YkV7U%+5 zxn`%RhTzDf%UKl4BEg;{30W7wGmB44RCCrzPpTkWkdI k zC$bbpw<^OR+=*LMWyy%5Fwj#LOaRnjS;p-lXVOk;aQO$mlbI=291aEuD}ac(eU_Dl zgYII sU@zt=>-A+fG_Q 3O${(Z1Uc&Ud4??<;OH|j zo~4CO*ECZtUSNDlWlrMwh{xs@L5gKC=3tGwmHmtc-& zusy6Z(VSjNngG85s*W6|Btkn4+z2fgGx&6vv|(Tc2X-H_uDQ90j|}w_Qr`afy)Q3_ z$D1vKF&~=|^7v+XoRwk5%#d;`?ugD;>&>-npqP`((L9(CUy~Z@#;%njN7(@H_^RzT z$i3oFqbbRrKvTx$LK8AzWW;-H3c)3q$${V*vgMn>1O>B(WeANaF#;I*D!<>vFL^BT zPgQV#GDt 9ZTLi<^G@B%fpe7bm zI>B{R=Pf3AV1_ AY#+p z6KSQLWk4&$r*Y!idSmzoV27I8S;aM%Y%<{|#6#wM+?aF@08HB8a9RbeXUkgkA(4lJ zkA#(sD~f+J@W;0~J&Ux29JbC0-?%+{?e1c;XKg!FHHk@-H3>qMkG*bV@J^Q}Lq158 zYYQ9~$TfeK_Hn>L@%awCA(JK11vEvS9zg{PA^+sxK5SYb4z ;aGF4{Z`}xv^O1yrY#~$3gw*O;0U9vk*NlZ|6d&-?iAt`v z{E#11{3b*TvwWD24T_sNRxy%7)lqb-hy_exiyLZqV1w?HuZIXyKy%OynEB~fu&C`I zbf*}lg7mncCv_N5Q5lH{_y{HL%CZ3ggw51yQA4jRMevpTt-PRz2r?46 TAfdo4cO%(sGA8j&Lgax=>i zzkH2GSD6dxQG&|WV6m1MkGT>Z;>WoNagoQz5UcEy@A;bw8DJSmuP771$bewVw$Kqi zP6XhGrY)ObW38tIa5w|s5u{`TI2J*W33pvaly^cPNy6g%L{eJJ$|1xB%VVN(%k0HN z7NBB0(1lE5l&U=eFf_E)x%qQHcf~$PG{Pm2rg0p%yL8Goc`$j6iRO^87B &O&Z=Lp6Y$wx|g+Ci5aNQs6ql$7Sn= z1B9ZAW8NOc0Xs+XMOax3&XoA!?#hMr_W3x^rP*b;>^6i`<*+1Ueh!+fa4LsXJk|t~ z{GJ8P1vn~zdm$WgiUau x-c$3o1Xr%BQoUSfxM-wq-h@Ad#3Wq55cBXbd zS+u01kYGtCyKsR6Bh;HxiActSfhZqcYMRg_kH=qp6+s3svDmAt8n2NP?MVdfxf&@q z9G*I@jB4QuL?$&`J4YX8J%SMt %D+;zxHA1nInrM8wM#3{IYsxu9lWBa{l*)B+edwPp)4oZ1u!G1Lhlk7D9) zT$biVtvi7k!o{(#CK>ux2zVk!NtJmV9_FxwEjLYICB;4&u8Ah?gir*POd28_p$kW- zj!vPjQk4zL<>1M 0} p_-P|FLIDLts!C2Yx#%ErkSp7OufHo8 k5e$$zpU|jbX}wzn(p!Dt5Z!7e!^Q39C_x;Wr6yw$cj$Zwa~Xy}U+f%&2TNmPGbU zsH-1@Hn<*8v))MwU>>Fd!WtmOaK@&k!LV;U`Z@=xzWCIEoq%F}(rgZl`yDXYfE3mM zRT&&$O?%=@XM`k?Z7-f|{xyB;1Ib&90+#+69i4-r?G9%oLA}$T{?*bAqytQFb%* zXDUHrOW2SBW3Cwr9l~HA175C6a6rc2DGPvHPwU< 6M=VnYGCZKb(a`Q526ULUi#0$hGv@2?ULYm!7<43_+)d!otVv#U z#RaR*(__9t?KCI>yJzZn`Qizz?u7I~wTigQ3vCw=3G(1n3o%znpFMVG%>o8Qp+M{( zg0}2t3u-61a&7~!4ohn-kTUGIIl0|PTKj1B1y8;w9KC)8>J!px?AmOmnOm1tgaS^3 zq0_Zz7Cf!7Rx-z#wWu!YFIB+y^Y(J1BjwJi?Cl{7n~!Q`*bozQ$cS(e%P>;7<%*zA zaIDo4bR}P-@fr`4Vcl| HozjREH~Vn){SEmh$}_0+}`;?l=49xuRzMNPGbgrEn@O>BHvyu zS95t xDKZdDDJe82&OfbPtDg 304KrEsCNMM2ov}uwz+dxTB(@rnR~TH^Xrvw*5Wc)~ZeZ#doeBqJ7-#ZQ zxJc}*F*MI%mvD2-fF(%4FqDjW77H9BB{UW3{$kWaM3P0Qz(KJgoho!A0q;ELg!mKO zSKFei27RMRp^7d;f#wVm(gmxM%x%l=3pp{8un=dM9j&047+@R5L}||P2)-7lH^F_T zWCGd*PL3w@EplzBKx+T3iIg)}y;WmC^*9Jo{$W^$!1mkdy$BA?E4`ZpZM%_E$Xr-T zR;~SbccGVQ;`5m$&mew$J|a*c15uKI2-auYlnCt&j6@h15ac&|iIGPSnF}K6;K&Ht zHD@LbtZuTxL_cp}Xb7M*a`h0yCi%pAP$UPU5L0QAVwv7I(?~%{V3&D|gJ3M2C-whN zL7c`=ZMZlQMUe&?zyiA(oX@Oux{MP;q;$jOnmoCgJNU^MMja|v1!42h6$ITBX+sBf zyca4O4NcBbNJHc&yhfV{0`0Mh#
q z!(6>605`#+ZW~09S_AOQ>H^uIQfAu*bLB8+tEsD07z3equ*qaXAts+CI4Qif$Qkttu|` zDGj_@a^MU>Nw8npYa4(`Hd59EOUcF=pXQWFkIWo05XWomT_sJXeQF#vu&3I4VMGT~ zjGFx``(zd>~^dEShPHJ*pPjrW)0_z-%7gSbEZhho5?@KMPU| z5_a518^g`eC-Q-pWN72EOTpBS#sOUSPQ!H>tmz>(WzGqsx2VZ*GBk_X_~CEN5pWH2 z<^kmafMGY-`75#JIxV40gz#obu-VzW^UD|a*<$W){IL(7!0m@(?94TtGu3gR5ny+8 z+AOgVdn{aYB}q#t`T65jr8}4=BBus(uaqkc3EF&1WbRPOLWm+vov{9y+5`%N#>9sh z0{btK^GzqPv2!PZv=A9?>QhquQhy>b0f~1ToWZf_t)mMvw8ADK6SbMOIK#y-qcmF~ zn>&?ANaE}`W^AGX>rvFf0No^q69%_kD;B1bKW2%!h6XXbU2Io!x3Si5rq#ZMS@(IbQV?8tl&_~34u!TBzMX5$VX zQWu+3H_zNd!kpZ3@*st2vlJYsqxQIha-MU6hsQ`rG63e}wXyJZG>i4YP^8Ja)OK?i zO>Ib7 Mbfi|{QT9%z)z!U1yx*pN|T zszj}zN)&cgqL-~`P&Jn_$C63_kgB~`U(v~EbnBC3r?TWG4mirXbs!QDtpl5QlA- Y1!15k7#35khwl(W)Ev;#|c zP^()`GvZEeiep16Q4UFCw-c-Ax?19%b5wwA@+A{$X22XG*NVY@cukKX3U)9XJqpe4 zS^yPburF4fLvvRt4rGR4+z^Q<&Ki65!4j-}C9e4!W|R^})S6)qI8mfv-bzu+TyyO# z53yoh#knad3UzzkLZ^}(p*pCCow~xInK y6-S-Y2srEunOb#$`7GBX6@ORfTGeyK^{kG^_U1915eJYF&}Vlo9f$6fUa zF-FwZX+whS4|Q0sAcP|ZaHBXviQ*2QvK5eW#3i+Ycv94okRyF&bwf0dD;wmPl`m1y zC5d@d2;qQm;EKtjJX{NgbeFmf%wq(dV^;Y%h~+Tb{+OLGkQ2d)EJS7^ee)?#V*EQ9 zcq0nIos1ALLLxcH>fRhU4;;B93)rmQhDwt4m5is1T##o51z8fcWa^H?XxK#hm5lQm zls2FyAPIy-G~sYh)aWQ-U f_N)o*$N*{7Y$NR2(~9!p~TL^X-G1+1A8DK z h6%r7 z4{=Uj4)6rVBRtNN=|&6IENRy@n?O7aD0nC=)BcxNI3#y-1qNVX% wEo?#iJK6kBmoZz=-WQ7)jVb>Mlk6nJ+bAM2)pgsjgnjW zdN_2 CnWn6X;f|I-cGLOW`MWA;vg@`k? zOz`-fE=2i!34s5y1^pyMrfQOF2j0rRQW^jy=mHy%MJW(lN^3*E5(3US&zb!n0P%Fh zo=-DGS>_5P%+V(w@kdCqA*v8~h%IBR0eaoXz5CK#5P$I6A2L`BW>OQBsmnqwA km9AgE%!9Mqx~h)`CBS-rTOSg$&R1GhRl%NjQJ7KMTkN>B?bt8qeXPCf1&s+0X`( z)Zw{tMVC`lmCbbd)R$ckFJmQSq6*%vMzedt#Q`D@wKy{(%U*vs6oLpL{FeMC3D SYtvTDdt(2nWIKL3;;~$x-UpYvCsD_T#6YmC-$)fuvQYl=@70Y z4w8Q;>XtOyfQ;;+RPknFH?Eg7fD9sst}lUMC!kso $)Qh)GG2?(L0 RZHs(}m0&*OIAY*`p$bzKI!n(_*W2u`Zj+;Qjt1c7%k#3TD0j;PdU!{>kTsb`% zmGsos0U&&~I~FU6xZ}R!7A!-&Nr*H?Ry(eAw6xZ!!Aydj`Pdg!qKnc>gij?y-KQZL z(9MY{A}g3@RSfl;HiT8Swmpw`(P&6FpelYQ=o~_}68NlHvgz79IzLE4Q?`aQvKB%Z z0BF#x*IdS$CuzXGf-W>aow8V1$ZO>`A)Z@r{CWo%SF^U5SckwFhoW=j1`_VWkSWVJ z=(77tBGZG?$jTc}2mmt*$^<$tmrwPHAq#+;utv(7koek*ZCHpBl7kP@qU(rv4&hBQ z%Q4+bs 9 z>kiu_a1L>pW*RYb;4?L&ZHIW&l~Qt`*Ma7Y=5#(ZSg+H_t8;*K8bl&d2$H!+5170Z z3E;{Kt{~k8WfsWn;=yPXE?K1{Pzo+K7AD8FJTuwWn`yWStV+KfN>tos7 kavIy5M6ag`Ctv~2{p3nDlioJqnR7aKBwF|WwrrguifGusgNzz*a!h8gwI zKtfgo_OasaH9~immPx90KilYeFt7uOJl#TYpNR73zaJ7FeqU2<|wGQ57~8d5Wo zC***;)ewxh&PX}7v2&TrN`6L}hGjvbA}ec-2P MhR0A|*7EM~|WcM0aj>)=NnE)uwHlc~`S`ov^|0E5`GbHhtyG&%cioB-P~nqy#O zI`QD^OfEwINKl_EWmrtQYIn&v@l0)Xm^HaKva;MqH>^C#X?Npm^SWh&UY4j)wfv;u zLJE@C5y-HiW`qYL>SpLnp7c36L2bra$B1f1gEEh;rsD*qAfrVGpMY|XOO9Ag3W Y)ZK6qK2%!Qq6keXE8MLRK B#AOOa#=e9s z9wnMrii_q-65g*O7O**Tlg#@9Fq=`a_#^>{PcXAe3MFo=DDD4j3zp6^*vsn}Y~s6D zquf|20&Nmw65G;}?aFg}a+vyvE;0B4G9|feij5dVt{6pP!0vfdS`mwohL~dx5t28! zCuK}uJj+`g{pkz D$7o?U>oz#_@RK* zr<0S78Rpw0M7Qn>zX6IC9vLRMo jdg@B{b(K)4XsTw_8`1{U}+8#FwGe4oluh2rXN354iNRLOdu*(_;Hq+sHT?^ z4#5e}m>QWIj}CEuu4Gy;Q3Ie$8+l7rf~uN&m$kXFnuOYiWm`i}%!NI9QPxc}3=>0V zOGQPoI9Uy5R<5P2y;z+d=90kanzL$#hfQETg(m~o2k_f5`hmidA8pA*K4SxQv$|sm z?+b1LS3 NexFvNnJz2r6DUVoejdCt4{`lycUT?#h@gd3xrgV zXIbKQp%RJd=1y)n0(LC$*db}qSR#J#3*~*yc7(MUcqJb)3W3lP>y$;=YxUd&bxtrT zjd9(qM@(#n@SMc25F263g2s=UF)k?9I7bpj3~W_fO#n7Yb<@gBOfUxK07zc9a03fO z)D6+_k#~5&GNr&HS8Syv&y>J4LsX(;g>1rLNC-A8MULq>#g*bfdZk#ZNGzWYRMi42 zv<$78j^0YcF&TA8j|~Sdq?QjNL@ONYUzE%fJZ8fZ*_osyg#$p2hbHl?wFHAp0&)>x z1eQsscMAfNm!~Qsut9<)!J(0pdNK(sP~L-nl2Zm e5g&M`dvWzU1 z36r+_t4&enF^dY|xfxmbO2BkX6JNI(M;(?Hf&A+jDr+Kjor~~X;x%1EGi&j1SY{?e zWMAnTVH8o4;sVRk*tiWM5G&o?VKCfdQ{J-CBj$~;Y1j4|WEdT{hmr p6?8f6y z>7a(5lNw8vV>3WD7z@EYc@)B$L9DWT!!_$0fz!~bBW%Tc>S48%ghWMovK9WwFh9nU zm3jnGL|*&BN4|_`$ULa-yY&ZB$@t Qsk;WupU&|ddTayKn7PS^duw=4eq+fAul0n)f zwB3xz&8i)&naIoes~7ou(2OkSl(kvb)JjbyNpV3nB*!CvC)(Rf)D3O%xtgYPRiqct zmU|5b0AcdX<$$tDyD6d9E3zTgb)+o~OZP5x ^pF|#qoqn{6i^TY zzF}?8V(676XA?D|8R*BT4-?mz!=w=Ban0=#Kc+cu8f+`C*GZ{pV-u*K=)5y10}WGn z0W!4{O)M6qkC~9B4xf;|9eqHk4_1|nVov&AR5x?gu)S0C+>IM;8#W3gI=MA~HU)8m zB@dNv>eg-cmWL`Uo)T7G2%sslQL~8Y>N)(t$$}2ylk%owRH#gbvWdb-BQh+8wxHUY zj$A~;zk!o_B3MmcNM>O|SJDvNJO&S5+W7*vq#h5B8#)Ap6S-KCGO%jx0y8ybv_5iD z5@wSoR6#szrspvXY_?o|+=tHU^Q(+~J|sv85@;Nieb Q1=sR&pLIUQ5q4Oz?^hP24} z)S0C$N3KqK-5{&n-4e-iP(V*1yg^hp?q;bT0QA8NC``SOFw|c(GFgutjR`c8Qn!-| z)=nM<{Kc_1;967@48s8vZpbh)kE$u84N^$%imbebi_H}F+`<{HC-ZI>bwzw2oy5T} zZH5_cJr)Bu;Rg1^a!1i!DdYGmWlLyFd}jNc>3ZU+CgbKb}s-9y1q~^vFQZ_O;QC zpW^$>+=z*xvgRS0nP=Fk+Ce8W0cQ^u2?ZCqu(lS4W0@KFp*fVnGagv6PgamL&KP(y zMf~<|ak!R*nZQmALg1k}b8aU(N?9anOjQBnQVa2Qg@qd rtptx@4*HCSN**V-gmC< }~ z)3-_t782U-jxtZMMl0{Hjlqm2cg@I25i#g#KpY|_4FWUT-oa;$cx!OZlu1dQn 5)mAEy#{2vk?Bpg{(}%aNdrUZu40+akd7oYH@2LZy0eOHu&8)AD`t*E zE-^kBrpQ@xGOT9=%qN2i3Y-7<*$n47B89;VTL{Cte@`PnN#=doz3KaF_{o6DeQi2O znDySpA^?D8r$|h
%th9-%g+A*(<+0AwCGVKQJpJdiIctkw<9$irRD2PlS$laByYWoQKkf1M;e!eN&$ z2<$oXubAUEa>@=85&{4ZtYN-^QGd|Gk{L2eM^gT|noRQa5E@%FdMwuO`&tM=6S~vs zhu@1%p$!fwFxiiYL{fnLfW=EM*&t%cnvbro(ONj*3$DE)Q69H-=uiMP4i$kcN*|+% zo2JM3MVHEcj$ N{kknLKvtFAEByVxlP`vXTN(g}kXo=0lA@hq-_~|-!KN_?Y zQ u$62Rm0lr@R=JKe$svT)d|U%Y5;1`}WuGxagmNNhNm-7pRn%3{nRmmY zTUId1RYARv5KbF7@xe47&{}NinTo_LBit1Cx*koHDW?5m!Q-M(G17eMM6J5j>N2 zICj+}Jm1Cl8SqK^Bd6&t3%}`1xS|!YIY yFprB~g2W37|kWViNf?s=Ob~2i_C^0or-~vS?tuj4>`zxjdsP zPgEwS^GAP}H3yeisMZ|qPM6oxA@-u!>^V~u8E#u*95PF$Vl~GCbZCO80T?kDc4W== zY04oVvf;M3;>HS=DFFk^QqCgUG#GEBO)$biC$babARMl#P~9fo8faJMu#z5TC^=)e z&bt;c^==~hK<^~yR>1@Zs-QAYR;@Gl5h*5)l)$pQGG#VWO63h&?JD*fP%4Mo3Aqx) zo+S373>usk#5y^xn9%%V$v*-sIwt?hX0#0TK;zD^KzulxfIx;W&fN)x^vWS;$rjt} z4I@vp)tlu| P=mSl;8p)E?Tv^GE zK}k8y{*b6uRP!W9KJ;jI?^(o@fz@Q3GGeq4>30qmIEopb%`GifNN~w275L@GQv~Jr z`yqf()AtWpK zP5q!@;%bK8D-0 z{FX+3 s1dHgvYdrXf>`BZdj-ZVXFlco*oR z+4F43*%=iX%;!u6%j4`yxO-5agdC(Nw>4yiIF@m-*An!YNaeG#99J>s58K1T+YUvJ zKVk#yzY)?lsDWDIpOBz@BWv?<9gv;M`n-~83DL<2iu)2h$*1Ig;^x{w57BcH3r<@u z34RsMMMOxIL)HyRTmxA4dd+NyVF}v0V460TlFY+4DnXPJQO@e2YIDR|K6-i#1-Yuc zI>OC!a^4p62?b~3xZJE8vZf-jT1o68CvxP#lCV7RGH6HJji(4<4HiT2*ZC=qjUgP$ zY0N~G86(e0F{&a-mx+N2LqH=Zt1GeTpshaR;z!{`vYN!j7%~SVn++Txxt(xkSZb$U z@c~+I?lVG!xj_>k*0z{2%R-t)9lcm6$gOK&Wsi7Dq20n^sQghwsSH{_4Q#F(4g=!N zRUBls60@;$t}4xk{v)mMbi^yeNV)0{+$WNzwk!4YJ&i2WpUktR=~L!Ua)Z7*KjqGz z3HNs<>`%%#f3#n@H9uU=A0BxD_3`l(V~*UieF4BrYQWJt)l`=TXj&URu^Da5^(u8H z1q@M0>CK A2;(7+QA z5yZ}5)>SLU93UkO7aALdD@ISzIwV>S((EQ6pAQ)Os5{0mCC@zhL$q-u#MkDog!;3J zdF0^oaTS1GiBXo2+ n)6q)p55`mo%(!vviE4I$(;8zaxeby@st~M zJ|6fu$I?4>bk6fO2}TN {n5}Wg|RxD(QqM736><9{HlHukJF(fXgZ)5tFU!DK4B^t3d?Mi5<2t z2_XV#ol%DbY&j0=L<~rHg`y%|Q1OvnLc=W;4*56l&3RMDWX5I%VCg;aZ56y+mJx YntZjt=9BR0BNLGw7aaEv_G>WM+ zzS>|Wymcf;K&%1h UZwE|Uv6TPx#X|8?+ z;fesUnUIlJrm`T_&Ra=rIRjRaF0!j4F#4Y2Q4$nffp!VM*SR|I(t-GiHHt-6gkGma zi6O_J;~i*{MMEC>m%O}!=61}>=lst9^SjIQ+@|kOPkllCgzJOn)yLD>+wti`ZqVn` z`;WP;pWoRvKb4RscWQ)nmk{yjD}|;)I0_2kTr7 D-Zft$Qd?S7R@)m$4Eb!80n9Vk zSS&1?a@s{>kTE(kp)5I9H2$EmmJo2c%u!8v0k&?$2R3?Gpvm+(K#*m>NFqDm{^sp0 zLqK}_rh_En+YgtI=ktAT&H1b>O W&qz h&CIW#HWg9CRW>uQSOXs?w({(?frBhcFDeK%8sBT8QDqEv z7-h=c%6;fwgrV0u%Y4|q7)L^9Wj9H)qw)}D@2@-Io=P@0wJKskTnP|04SQfkU}B1d zYRjS#+KJd Tz>r7nlfjTlqHnzAqd8Rg6 zqC^gi5LI+ ~jyyV@Xj;LZ90bPimmbLz9=lnXB%z@fq}qL;srCs+$ecHq1z-tJ zszdsGMwq*=1{G`>BS^uZO=Kh??Fe?u;RY5V$QdNUl;h^Gh}$Bpa*>ptVXvdw;JH;G zQZ^AZAVD+trkr#Ukb_@E;q@C2mwUf#iZPYu%c-32@;xJNJ-mIvds+GR!$ o zgCBsGL1s#ttAscxdQBQGms_vTOyNs=%0e&AI2slJGoDJQ`q`#|7g>zQL63S?9Z#Z> zS|-t&bFKs?Bnv>uT;N`0@iY!G@rMWgN@H4^fpZzbkJW!ThGOsX#QRPhzzlLaaJXn? z*qGH^M_0hG4)K;3h$wt51w~4ww0RnE+Y$i(^5x8B9!Fs2 VGguJ)v-jr{Un!0`Z{iOYE%gG5ai>~+)2qj#xTx=2 iZhGDhI-p?fP8AS>rau}#fqD-NyPf^|}>gCc<0Cj_GSl85=Z^QPfCU0(fq0a}a z-n!|>66qlp7R;HH+i5(kMt_KDQ%srEaocAzg~Vp$2p6B8v-N(SellMz ?h)nyrIF{S-h{67ttRt%#-Z#oZTlWQ;W^PT;9=0hq-rfk$~DS^G1GR!Bw~I zNa2)F%|@}tg=q@xCpt2FBcTrlV+b~s7D?O^VejP=8vHnWO*C9%B9G^_5m> oOeBlKk2WZu(p50VoX p6>6t;XXV*zWeyM-+ug8Ke_z)i}Sz#htuy~^D^q;oR9oTuv5PNwRy=yX7AV0 zcQmwejs~EHc8|uaaue|CQ7kwkwqSRjDv0q;+uQ2Wh9?1Yd%D(6J5xOW=rt%Tf~O_; z(^dM)U@ocH%#hMyxKjW=K*7HOGNXq`IR(Ix*n~x>IpF4l1VaU6=au9qv_69%Y?^6b zBV(TAoLns5K|FDIGqsQ-5tCjU=ymJ!K2={n=Nk`P08evkzR#Oomwa35`8{nT7J~o) zKmbWZK~&zrK72gCdAPiP PaCVhIj4~HKQ7)RU0C4-LwyH}kypnLrAYfFmNFf4>Ls4zONX-BfDLQJIV cBRoJef|)Eo;dU;G%#~o<8A#GP_7oGz zS(+IV7Dus#<5d_-b^}5p*J$vTcZ5T3!=ZBmdo{P7kR;;-=z ;-~HX)m;cR+` 4QNXefc z(SLY&{=+vfzI=Or^6=fe%b)+@^#0+TH%9WL%?qgTaF4P6zN?4G6oqh$qxR8(%}c6l zG1xMEekAI!C5-Y_oii`a;`2eea>fhh;3RsVY0~0^hV#`hG)B%`%%Vy@dxa#DSWaP? zt7`~!>sL?nHD{6|8HvP8+! du_uoDK^Xv0>AAHfB z?-fQ37X`J1GOKXH+a2G1$r=&3Jr#oXV7no!uQwdz*{g0B%Z{XIaCzupHMA3~9pc*I z6mB#= 2I^eW%I6373q9^k=033F&t^%22vs}Oa%!2UpHIo@M54KnH z%9up)!CXoFWMX+aQf5^nz&+I5EXpyd2XbG z5ucx^^SeX&%iyQK|LN)H|LxsZKl|+N2VduZLlezCF;D38{j>AaXD{xb{`B2<|J^qa z|LHg9KfmK^{Cq@v4*Yx$-!`ISh-#@)%w|&+ULz0(#6wWwp_;J;*rz@+c@tC$cpEkR z >KQAUM(F~vv>=I~%_Ie-{cKq_j<+)S-b218{DLo@E`R^y z%fI>g=@)->`q5XH7oVN)@3{rP|8RQ!{p0Wdbo$kAF8{}GPv5+T_3`2KkT1OEn-DS3 z+)yIKrgjsk8dG 4dCzO-yQkq_?jSAx{^|L%&t81-{SRM0eD%C{_THe$P(9Gn z8V?##r>d~Ui%n)HECF~T<_0jn#QLUMJX}FQZf~|kLQIlQprH%kZ3bm9CU f^8Mj49)GT*x4$-7Ikdo*M@l%N!~0`= zN-74i3I@ElMJ*iYA4hytR>zbHspVlOxOjU2E7m;heS~n;l!KP&ZV0$IWV?x*aIq6f zj XW?B_pbwa%CacBDTb^PKTZ2llw;M30j7gh9Z!&cQ2%rcY1M_r) zWK-j88C7ysBX}eL^GTF5)2+9w;is@(JV{AmP;)sE%`F70YB<=j!g; C5uvgg1ONds*xObUx&xMZSI6<2qbj|mDG^oSpH@;@! zS$4^{h#o$E%nK<02g~Fp5dJXC95gkZAJNTqoVg%nfF}t?gE=CCt2C3a42~1wu{U01 zO|zHNVdG67bnpan >X%0W!y)Dlw4B5Va7%w)u&Y}{Z3LeP1R zjNs-cRxr00stsB4XdGx5^3O$Zc;w1~Ij(9Jfv 6icd{_CH8e)sYv-x?-I$=UT6KYIK5%hylt-@Sc*`P2V%diRmH#d0Cb z)7NnMqSi}_9^DR@yilbh{Wf}qMonX`k%7^YG-9p?braiYuaQbTa!u2kz)A et$xSJ;3or~B-G3*DB=!@r-X}mqK^n`06_aqhEbjQS zRGZy4eSHn;JP2aL<-jP? Ejz*;^Bqse16D#&) GY?!=iJScJ0R*;pBd;Kw`Hzd%=w9FoPO$pC39)# z1kmR3*0ljqwEgQP+Ylq$axQ9nDXnfa!kCdWJ6UCxNc|Oo` c`MUE#+l} z_IxTRi9CF2?>8PU`L5ts&rkp6=a*mn&FSS&U)+85)#d3^-@4*GYJT?Q?*8)R$?5Z# zFMj&fPk(;@cRxM->?J>kmu*eYgD^4A7d|Q*`N&vB&TG(0ZGbzt4Y$FuWb0)zRB}3h z1%t2#O$qQqLqkB@8hA9BgD$lT=CiSxHK}oPD6orYQWiiTIYOHc);ZI8E_4?I!-H#z zs7CM#;jFWhnNuIBj A-1WVAOalqXMqPT7d*|WYZf>;DK zflgTx$`*Nc6QP^Pq=9 FUU9&$9T`H4c6$tNB|K=enoUG7mE{_yj_ z&hsO4dBthx01I6yXXe6UP=5(z>3Yq;!>NLG&zas %N FMDEzg-3^2M9Cab@OU;s++2-E0A6rac)@gGR$^#ZkGscotY)g zB%=s^jRp()^@$~e8$sXj_d0e`6>yM~pv;_b+e%Z?bL7bp{${=kjiIT!A?)3ZVBnLp zCmfTsQxJieT#1Gkq7M%IDS&@+%b7xa>nqyWHI7wSVt##+N(mRh8Q5GnrqrE70>j@Q z;Yh$2&rd)8>iqKS`}@y7f6ON>@`(x}!}REW{_L|KJp0j?Z+`fKH?JcHp1v}m|6ntw z^$DH8nzKYt{PjRhrZ!C*kyAf0Ej}rz74(|$0mxvdV&_SD7}-Mp8HJr^d<+8dNz}l; zH!VImKlu@<3YmK?OomAUG5e!_$TCArW}RLQW}{4DIWujD_^Mw~tXj1|(p>l{4keqQ zcdDU-Cwz6xoRFEe2)v_CAOa?gc<0j#UAS$R6R`-$;J^bm9@D1GGQ`-Ht60rFU~D|{ z7+^av TV4A~HE-MLce3WwpWs-|K*RoHo{y1}f2jSP>o&LA~ zH$Q82`tM(Tc=>~e)6?J*b(bHe`|$4Z^|ufI`M0P4{lDD(`rEwR%{`m1jzjY5J)k6= zw={fV<*%8|r9k28@NP=oRF!imtb~0SZFm{ nJvK%jF+C8F=e8ZiO1g&f$9&~ib$ zyfCf;fi2YhO+Q&VsT4S%va5?FjB3sykODq_#GmgO@~eVK@hu5j=XT-r)1Tc;2v<#h z^|Ze=E_DuJqf2V%G-cD4gsf<$fr_%ggrTt)w%w4*po-6N65A(N20 A4V{@ z8f V`-aRFvxrSdn zQWey{W;ab65=bQ`l1WBR8M6V2?pk9V9LKm-cs`Jn)-70ZGz%d}6h^$chQShe &7pE*ScIv-&NQHpWD#Ma1K~1uDq!I7|NG6`YRNlQg>mAxRF+{*8K9f8 z;1J~FrvHZE^9oVPvM3)5`8jc3no5g-UM)r-O9^9D=GGOXP@YI2TQ0mj4Ja=N`PtX} zR#<+D`NX$<-anq6Jm%L0&;RisFaP}Q`O7cpLVhYXKS%fW!}-;l%OC%I_h0|z@`pG4 z;Us=r;o~VkC;dExm&>>BFApU(#lD_JBKuRRtuT_3|LCg4pqYtqIv4PLf2jJ=!?TfPi{Su-2UI5kYu*$fVy5z&%yQH_lKr c3&Z;+S8;CHcc(Y+-+%YvPv4#X@Rrxh%|R(G#*FGB*OWLFPfNz` zg{r4wBKvx84-NZ2gO?EDHy3gllhEe3cQN|X0B7*l1x+uX3MJAIk8b7E5G4AV#Ih36 zAldY~`R>Rhkd9nZ5$**-FB&BU*I+D(aVO%Pj^x}Bd_qMjBJm1Jp)vAP9ET1-4$|ad zHYuI0lQ?|@63v(sQ^1s**&w1Xv$ @%fv4hUbMq*oG+(%u4u;VR} zPZUV%bC!butpjZzCUQ_E%EFe?N=U0EVLEu*%}%tg%$2+^ZGl14EEWV1(LzfG1`=Q~ zkI~|fNP^VusWms(IF5^W+ZOcRkT(!*CLs;RELs;eMre{#tbeI4zlM+(j8Az=Ufz5- z{g*$SUj6R;?Hk^yj4k(KepTV)<=x}y?T1Sy`2$J8=Pi)e@3 hmDK_&odC zZOcUpN$$t*UO)WdyMOx4$6tMO{@p8{ld*He&D<^P_Ht#nk0Y!*z(Tg8fhbPsqO4(e z1S8ytr(EYbPTyE!&S-}Q#Co#lY@of6Ax fp z$do6hjsql}^ad0TPiey`LGn$Wl*%uTV$LJ=GY8{arqE?UIJ5OhgRC$cXgClC7e(2L z1Y_hZ1|u(EnCVthk4>^1=JPxOtT3#C+#30`(&cPaYg8y91SG b&N9%SZl#62AwWUvl~UIp5>U594t|=SQ>HlM#@FR(51T9!`_0 z_n4_At^}Y;&H0qQP@3MM*Fw4miL>uXx0e%@h0Yu@lw$ggZW96))&?57X(`42T~me2 zu(}eX9`*YC%jGZ?;&2@6(Bfqq_%|P5=IMY$o(Odn)gZBBNJ_G2NPkmgcUW#*nQ)Wl zlLF}c8fy;c)8|i4U%xp0=mkFtop(9jy**{y?;qaZJ-oa7_~Gv1!};MM*30WRmv3La z`R4U+|MB5J{Oa`Y|Ka@m@BNj+kLULv`2!uf0P?rAay(>oVoTUX^hKlq=UQ@2pj`Pt zTZJa$5BXW)p70XwhEAsO0*s#`aiqfpc0mGNgAf472jslKVN3ui2(RvX<`^4fj2w4T zWg6 6&2uw 4o1Gn?W_5sfGYLdiy$uOh6FM>%NSx%}7&Q zNE=YO3bO$9hZcJfNEISaY+1+*S!mNQj)L(FxFINLYNL}kcAij6#(5VrORG(OK+;No zRf`m06_CbwA%!0SsLX`y_AD?9r~dC;U^Vg3-Yj#`#njmi(4>#e4wBo%j0(-eJsN zM|$;;AHzgmz y+&1rg+{+uL?hW9z^teehRiS|v=&Ty;F!iA*Csg$ K;4&q5R>%@{otb%s;WS(7bw^q!eB{dsHLb&G36C&PR2YQe zxnOdAjNraR2&66~Fy}97z$>}pV$H7(=GRibddBae ;Q#RJ^Y8wA`sFv5 zU;OmLkH7x#*=PJ_X}0Ra`^)#=U%vU{`Tzdy`9J>V^vx^(0(kx+2S39@LvoLvC!0z5 z#oVMrRts-&DV#EMnoXiYEQrge3_NjVP!l#RtQi#Uiqf4=v+6Y%i_f5}1h>a+2w~wJ z57Wvq2i7)~Op3~SlI!e>cxY-OsN@M@5|GbD95MONyhQLXjA6|zmrFVLn>BvnM|zXf z1bomL!p}k11p9uSTnZ%`=i3aU-26zmDFF`ntFj29`=~cZ3CEgwKJwNUVtg74%Yjez z6&nb=EC4H|NnGk{YqW+-6C6ZZk$owFv>eox-(kK|uaWa)>j_LAc3*shW3&9xthgHN zEcl^uW+a)-&RO^DD^_yww2u#WO|+O|8d(`24{9bTNyn&@ZgKxkH yns ^BHuvb+6BW0!ip!L&bTa3x+}2nKLDDu37;7G>jhigz;PN}9x%05Z(4i~x zH_CP0(3*OXx+Ziq#50JBa20xt>_g5x5;T;f(gFynSLs9qB_A_lo0;GMRTGms)H_&E zJGBtjwg-MlCw 4YzGCBqk2XX)udq>r?AkM( zp)Ej&)>s?AqcRb^T*<5BK=NBE+!=!87Mx!>eajmfya%mw-p$DK9&h6F^4>}R+S%K@ z^v>=0;rx@&`6Ca{p61VV@B;7ar>Eb)yL_L&ezyCR)+yXfNb4r!w&Wb`b57P|bJ1Y? zpwWyare$@hr<*QIc 45GBn+iL|urbsw|{PX4wCsfk4$WDV%Q+zWPlJh0^<$V13^N6~< zetZ5t?_oUhZdJZWdiLb}?D6s}Umo$*&*|6y!uI740A!1EFZQN S97Is2&5rR_znOEdg=ECK9|CQaoNTyttuP zWU0k1VlI*ckQ}bV I7!{Mr^~yb4iZ_Is?90GRFBwFnlrWQC z=7ABYo~p{ d z>aVXKg3QS6BbP`<^yj|7iL&_8+#*Pw5gKmQ*jimRW*!T|IeU$Rq56#2FlH`dt}0$4 z;mAW}ob9tQ2~P+Jbrg#M(#9B$0gH0#&l9KCEGI!G`DDb+krc2XnB-Zd6TxN4!hA6> znwxTL&FF!$a$rgXFvyJXq)caUkPChNGFeh?xa So%5zg{?v|SXz+EpVp@2$Qw0!| zPdU&!rbTE*zEsAJpHp|o8Im#3!!=J+%yNX@-qG}+;TT$SXu6u^g*4Q3gaCSuFz4iK zTB}Go3|M9EmT6GlO+q;>@X$xF2{?pT3bK !+8O&v`lg z_5(j0d4GTY=Qn(=&3jq-L7hw<@{{iOrzaotpEjJ{-~04T_?iDk$Cu2P+@Nze&zDEJ zt>?SMeEmfFsd}=tK- 8YG~Z*XaE^kJU)V2cT6=onC`{8!B-g0^nk4Oz643X-Q`7 zMdmT(vW>~DzD?2Q;Tf=`WUMfrBw3Vjj0ZEx3M+XiysG4q0{f^`l8Y_R;4JJ3&o&Eh zT>Au}>*XLD1$wH)ya#QPRYEHc9fgp=q;^8lBTOKNK<46cp14r}1B7A}i(uaDj?KTP zg*Ugw`A_hucWMe#KD-5RzsUaqmnVECF!RjF!J-42beyXO_G~P-TUtPG{y( 8R^USvLu()T@EK!05F)1&Cz2Hv+=`3W6chr~B~Hf08Hga{2v2j0 zR z#PNK& ZJ(rIhDECI_q@Rp~@ffu%=!2mWPhqam8 zFD&v=sKti9&OtJvVIFBsv(B+FQzdb8aLX&`oIB@2XRd|w^(=f-GRN!0%CUf{!cXtlcjQQneux_W01pKc1RD<*cVx2%ET_>PIIc(GzB+6Ms3?Ze}rd#kR_iC zj&CGyT#3o?-KY7!|1-I1I@(k!h%-~DUks>D8}dpI{Ykn+m~?Eq!f*950;O`01ZcIH zEFgw0nBx;30L03HtGh9WjV>#IXtilEsq}#W3R242rpR?AT!)IS9JHg^!;)i$Zs4_N z1+x>7NbEN-@@nzZG`87^a@Kt1+;-#A@uR2PljpmMgF11cIab(NQN}I@3q*>sM#rSgHb(4cv|NK+e=wBecp~!bV>zS_rv}*xhf{!S zku-@ ?QRE2;O)$XCZka~b{ZmC2gh53+rt!|z=T9Ew>Svyd_7^YaFtJ@e zv%P)g_~DD~&Xb(S&7pC;%28iHU|hJxA~MtPAng7}Vi8FQ59oGhqaFDGoB}I?J4w-q z aIsyGXyKs2*tp2VSLLA;ZR6<) L6I|AehYX>JTB!yI5TT#8MSvfVJZls~A9B_A zBu0IW%1ZDw5NE|H-nU1(W0ohF$O{HLjPY5k^y`MIgobl05QNk+L4t4aL;*&?m43m6 zKGXw*0AUJz9O X1**uKj?5K-@w8}v8;oWd63s!FE~= jQptJN%w|5}gW@ zkan?5Q-M_&ArNWW3yd+wFd7b|+(!L0 zfS6gLF2)h&MFI)J2GhWD#%3wl|EZ`^b;Xei6w}hsOBawKySz o&A!9O#Q39C|4kT7yd3DsF(ebx{#cK-7D k!@B~lGj(DaDQxbKkve&jDf}IW-1z~uxOv4FG$FZwS1-T-(JTPY=BeHAFgc6^O zYN{ce(vS#afQvp9Eei+{0$<2QT^&%ES-cntpvLAYTaB_>C~?tKhSO?MpiDU7v{$Vx z7o}tZFAGC(xXTb#vw`zuqH~LZZT^QsnxtsPi+RBtKXyGXN0@J>&QrOk&-|3brL+0P z(%og>Vt)1V@s;y@Q`&>4`%J8_9_4izm(qN@s>L@Irw*}MU|%vafD?0fW`#XuS&|6W zlZ~#B)YJ^R8zV}>r0oKFM><{XI7Xx)p@v>ro@}j7jrEv*4Rl)YCsAnO(p9!PAppWL zh }f76JU8Wa?&FuskGL9s%43y5nS>6}7lHWV^jo*8lM%oZ|I z)B)%4DLO=Q)OohwfAlc-2Jov|uU H2!&@T zSSX;Gri`Nt!EDBo6W9@x3UUJAOozgEOlhEEqg6U~vyYtH?OwmUzj5I>cWB&wnyPOP zUTk0UW}rFfDg#}4j&pQ`3Zk(FE+IXVl^;*`oG<&d=)sy}cQ_;gyk)?PT1jeX2wApf zQ^;)Ao{JxB0&o~J+Hr3s76XkiRXiKL2 $HlfD_#s0`bQ*5ckCZG?;H4?9G<0dR9bB{6sU)4wpCaIbq6mRaV8>9b zdKUofEDcy6!pB~MQKf|SS^{0boa}sk sfmByZ%nEWVhu zL_1y&@!7N&T%yml(OmlMP1dho%y}OlBG3KQ#*DZ4qzZ5Y(G0W|SW;3`OPW!&9Xo8( zDKYy8C9;6%i6LzB$6+*&h;epFCtk5P?83s=$u3E-Fm^u=jJ8=v)J{wTFFoy8!8DTK z9G1g=tagck7Ty=QH3yAcqoO=%=ZKj*XWq;&{N|nX>>YbP9C+v1(HD=sr %^W)r@;@PCwU`(` zcsjsTx(wz()VBapN|S7KWW&HPq#CYGw&R~zlq5@o@a$OAkxxJ^G*nQf&}bS?VOA?z zHL!w^(gabO%^V}l8Zy{uI#pb(5Z0&P#gX>J#c2jVb;YeXRhzVqtfFOFBaBZgRjNfN zdPxPfqQs@WPNg%Aa=T?-l;vsvFMhcF{`a@nUq8BZ?dWWz+wSS37w_JF{`w7Wq5r>s z#XXyOaI=S@B$q+$PYZ{H`;FveRN~B=gv%lUnlunj-OP#fYDOWPtYMG_rfgTE-4TTc zeH=9y2x{OGXzNkr0*`7)#gQ5>ka1*emB+Z?DAs=oN1li275)T~5QJtMliJ&pZh*=b z$SKb ` dz;Q#_bie>?aEYhe__RSt14QDmsmea?!@$w2uxJ3?RG^JT5 zERfP0IYCK_b^mh&s|l&0%~H5D@EUP+*r6f|4w2-5k0lV9Ea1nIGZqX8RNN6qQZuA@ zBXD5jYu~6Bj`sP=s_W WIXr?j@^k~^V#=)s5;X{)XG?wgy zx!jyX@x?RSkG`}0!4J0get7=MEBR`GvkcSj=+g1=)tisbpMP}k;qfo?-9688No3NF zIyj_FDO12Sj6#GwCuc2DD;dKm {XA@MJg$^i_?#VT?;`q(p*B0!K^O zEDaY`Lsy1DED4}z?erfZ>NF)aFgO9zfi8Z_ih +QjXW5) zE@eJ&8u!(s{Ccz;8Gw3%yIKUb_$Rw ;Olz_O%$QBYPt}Q~{$CwChnzwdf^1qJP*i$ a^Lo!j2Ml1~Qh z&!6ArORVxH&Fv? i`|Jom-ZHxW?9AwR1}*crr<_plWG=P~A90 zr+_S?g;5F69hw#BO_Tq@AX9>V%XmV>3@aJ%{sA?>mDh=Y*c-AHz;b|Nw}J?OPn?M~ z&UuqiuFR1MMXBOeU;(hGXmEALK4xiigiNPbEH%+UjW!&U9r&p^?BkTFkl$svc42$_ zmHlh49bL(_$qV`RN+1cCucy6w`TDEJx2`{W`O>z10|JL`v~#y41Ug{|D R>`>or%sK+qwE|Qi6f-o3D03e`0%hCbe-QEEy1L*W$Yn>0GG!np^1iOJP`vP#frl00uZ?9Z9&gH?&XL5ATnP1MAcb`5u zdgwhHIgi1q*4ap-p2#{nWdmAvMzdl!fsVT|tvDKxm}&T6+!78L5=06~1TK0oT~XO_ z`k_0RXlSfB8wgTS=h-uLX4+^BnSijdSj!fvDmJl&sw?huFeV#xaHDyM!vTc%ON9nQ z0QGt{RzV`|e#ghLFx0%WsLiYc)p{Nz$U4(n1xRLr=bCGDlPqSk)W8*V0g$?l+-4`e z*0fk-p-0CtZqAiBY7(y24HI|=f|gZo!J?jov_PM}xlBS*L6Z5zEq5HSn;8QH2RARC zAA2K5+yg>2_@7kM%q+<}(3m #hD!zdDtb;l;*NZ&%q;*{5* z`DR0BESORd9DkP9u{cG>hPtr@dk9T08xn0e3^dD1GgoL`+_OwX5XGp()TVoo&6wmN zw6WO%QlhRoKxZH#OU(gb1(VfspM(whSP>Z5r-3N{1$ND#Mz&Z(q*Ex8xaG0&^-Mp% zlk3sD*Dh~wUCu3)y9;ObKYTeau#SIye|Ilm=OeaLls0f=+5*@zs3nkv4w9EWGJ0L& zmda3^P|G5Xs N|%&1R%C(b(T4YTg+_4FD}U(13) zq>a~z5mBWq3^R3xc(z)t>evOab`SwbysYcy83F|I@TrVOe`_ o zr$&Uz68|{xOqRG0pYA`qv%CHEcKwxS=U&d6N8GcYOUwBhp63sq-1++XufN`XcCSuG z2Tcf|c*jsgp6+;=)()E(kIHt6n7#&aFE6?wD97eP0b}k)@8LY`2Z1!TVwD8|rT|ta zc}B!_EvhwPV}7zDPLu}J3 OwtSKP_B5#PY<>U#oUb}ZmNWxL@SL;%9PWTPw#UIb>Zyp z(wY6s7jyZR7xEw8<86i<#20UhL)=A!f(JQyq>&~nS&WgT#2h_}vVodhszMz<^#dPK zacqd3KIc9Yk>o(>0)d=;;vBPtA#YR=j@YZ7hf>7Y=#9{vaAQH|X3ZPC{czv*?$zDP z7hW(x`B2HWJ$iBU!QC@_9ST2T6%?rDZ!&-Yv_NZqZLu!zzVsswo}`a^A C#q=q($)1s|Oi(O7rh)2c8I@B{9`6k2& zGq>_thM#@BfBmKWl<>2guRS<>F)8uE!Do+;?|pOp%TM;d{>n_fEgH%u0a`l*1G?dr zC7$$FM10&wWTH7i;>id_IEDl0z%{{uRtP@3TyQa-#by*%B&^d%Pkfgg?gUSlcp<^A zL_;;Nxa_9KWWgFv zWIf4~mS!?&r)~rWGg}1!o95U9i?T6dq_cyA5Ob12pI&Cg#}B#L=hmey2k3m-F!%HP z-fLjLe}`{VOMFTsj8DekWr`()H2^4ms94W-4FCzsinjsLL6r@v(g+2_{LvVvQKE}k zXR;kavEc4Urx;JMFw+nVun1)-;u8~6S1KEmLgY{o#J9`rVV-wu@{$hgEuYx8c* zClB-c3A?W!a~(fGz1HL%XA_2iBCh15g)NK%nsrn;jEpG7RY8CBw6bVGja3D|q9Vk0 zpp-Jb$%77CIs`Mbs8mv4WW+hdIG|vYg?Q03?+L8OLW%()w9IomwKjU})d=O%< zfXf1ori~GnBH%IV2xtnV3>%YTZC+?60OZo-S!QH(wO{2Ci&Vy7v@L=eF9lKH3={`SB9 z!}jI7=ZAGs8fuSrtjlSnE#U!(_mGP;CO=snzsMR*Qwd21oN;2=43t49$=( zdabpgDRaqoqGviTrcBkC*lqQvjXeLu8E2e?&)SNmL>_>@e7rsWk{4ueUE9BuA4ELP zeLndTA8t9w?=AI^RG^08^m =#vZa+PIJz4UhpCT5FXW65>#I)5M6C2zigX@m^zP* z>3~92acVFF2%i L(&{WY59z% zgkI}yqZBHWDtah0dhiETY~2cHwIYo{=}4$=hU*W-@XXTn;)va;gNJU=w2>Tg&V+?? zA?}7Y1Ttb P00%ZRg+e2nGoYrD^m_Mbk~Ukb@1(GnQw748&A^ie`g z`Vd2%MOWJ+z|_jb1oK)or$N^zHt}$ $6vM@LUi3w9JB4H6*1Pvfey&?l64c7D* zdRoz(9QUh(Kfpb*m^BI-9MAMuu!JNMW&D8RRD)>!BZ8qlk;fw+5sn?^nf`7U*r~0= ziy(0A$S8i;5fgnjPElLRk=C7LW8V`+?qm`rYhD>5&uzT1%$F K2P}4&J3_~Rnoy{VX9^KegL;-2#A5OhhgAz}vv`q)4OB;1=`1k@^7uE-3NFq=c zOqJ;{B`k-^xX)2XY`h_0wPLVRP#&Q^Q%bXlgufGFwnqq9SRCkSMMQBA;G~9~De|i5 zTXCFB6sp9hhAm3GLbel<7TL?u75vu{rL_ptG)JTHiB+8WB%uPxkaSkMwnLunf&*nX zvwMi&^mUA;TN<>oOt5T5mKJZMlKhMPQ9fYCDe-eATs~g>;CWuj<})lY=E_<= (Bi#qvk) zMCD&w3#bzJlV!p>$u(`Zpw!c%ZG7MVfBZ5>tlc{=?Z5xhi+q*GtC#k9s*XJ0Ynt6X zO9HP5k%(ZRFzJgeDZx#KwP+?tBF@@UOFY(9l1{m)7gO7!7jGt8Jy7VrAcQ{!*eQWA zKn-9}dZbPyHY_ eR- zB-r8!_;M+i$ho@X*>Sc$4QN79gR;sqegdl)PP|uyA9c$XGsDGorf6NzVPbl$sA?>G z;saO~!cPIYVyq}`of%EQ4&hK51W${MB#Xt>IM<-bB8!8H22vBO@aQyVwGz;09IG6k zY=X$1W7N|o5eBI ~u{WpB$j0>{kF67?3bpAQ(ddW44D;mUW(N4}usn19hZ|=0GGV;XVgN zVZ?M51; TbDhG%J;CW@F%l@Hk7xx&)Lx@iKBA}=UkW9W?0~e3VS|+p zj0rCGNSekfz!=3Cp(~STHEhfhcP-KoxgM<{o=aYc^kXg3DCN8=076`)gcC!oTZ1;GC~2W2;HrsO&234M_f#SV=`vZpsPjQ5ras1#Y<;sc0_RN!c@eU z$tNp%bDJH`#zGV=VOq9>>0%glG^;LjT=1X)kCH}FWyu?yRUTYD%QfiQ=7x`^9CdHXj z$?TBwyr4x{MKzNQh0C9rr7W=`fBQxDovTPtAj#1=oO<$|M!;%}6y$6G;XxUA=~@G! zRfvFHa)1?$tnCF~npjJqMjaGi9wtaFoAH=er0XC?GN=OOH$%Aw9X>pD7KC}QtV#eE zQ%$XrG*qh-Iy?ncYMwY74by=-_#>*Eu_h$db%F->V4W=T?Rvksliv{E{_wRI*U#{@ zmX}kpH5&1n)@&lsITpOwOFLjre73Qs-sGU2+vTxjM2`im;K(=uK0D7z0AC$bW)s20 z91<}$nALP0>q> qFP`ON1gbRa*>Hk;Vj(mYk`CK$Br^8>F@7lq7u& z6i+DQC}B6jgdF&nRzxR6K+974ic3GTj0}Q_EVX7JXcXe&&70A&!&<5ff-#Dbuv+8M ztV~Lb2$VH%sTx!6(deiXV7_ZRpm-S702mf%qA-QfCyl1(l<75SEThw3&;;l)i*UgU z7EW|P&y^{I(5p%livnz|VwhRQnWDz<2|_lw^X43gx&9m(F9~wzkT-Y<7~5O`p;?#M z WxbmWplVeCb6cv3BYtP?tjF(U2> zk8~}ml4Vo~<3*nyUWBG?U;_d}cz|75Cg7Fi3+Hfc#A#9zQo;)&F${tZcJvI40Z~R8 z+e#){>TFEaSz)3x=4hZ%H{cM!BipFm^SExrl*o_cz4OMFW7ea*dKz2Ih)CZ!V1e2H zMo7mPkq&OPBQ_E)!HGUl(qhj9XYpxUJ8Y?@6pM`^i}69>51cHsX{YN0|4u`dov6 zetFB6X?$?+C@*Ma69j{GHur@!5Y6upCS6gouC}>I)qz=co=@3%b?oOLxsKb;X5z8Py?OI9nuP5v-*I=uMO=VgPeMjK5KP2S>bvQ_l&cqA{_I zX;2SVGYAMoa!Xwb3Y0T&4Yhj!06+jqL_t(Kjij3eOE1r~i=>GHToByR#*}rMt-NpD z#)gF
ID<~Wh^-d+wg6mP2b>8I^ax|4+03vaO(e6T9Yfnj zp?vwDR6))TR-}_aVs?;l5|;YxcQ-HZ?mpU%&g6$e_V@0Y>p<0qaK?$TB_vwnc{H(F z*r_3tI>E_w()Xzd2!Sjk&6tiY!1P+5B1DDOQdSuNq5vG7!)8aQO4VeQh*@y+FRyBM zd;xEs8#0B~$Kd0VDp|OqGN~3LBw{L%bE#w)GxfBCO%~@%Qdxtpuolo18;-WJ!iA0f zjxtmrQWKm8d#vkKN`#L+|G|uDW+WB140yu34ih29<*1i-;KnRVY-&7S;gMF+s~$7P zJYpk7B-aSYJB%_JibEt>*k@vMP6>vAjWVGQgFC*Umol~t4(M&^4oa6(NyaO74vNxP znvh&Ai>V@ma~|Bq0Y%) n$ zwespC`%Nym&y@{c21SveOqZ@2hdE6vvII#xO~XN?OC%0ZHXS>~g-f#q*Ux+-GLptE zbJqmQ;UI5Jg(~k`7LAZnXg5}vQydm(K`hM?VN3Bm=8{sHWgi7>w5MV#scP|Cs0$by zmSQ%|UA|g+fA#8~->B_CYXA+2Fm&+IhmygLXq;tD3^FQ%npz_(rnKA?#sk*fWNr4O z(P^Lc$d+y;5yb$=2k=@-Vqkz}5hk0M$}|J9<2!gCJi)66I1L5uXp@w@qG;hJ^FbJ@ zjs+&z<{#~W44p miK!v zZ#OP)AKd0k(aIuD1Oa7ecQ9bXITf`vntg1%CXhzu2s*iugi&y@x9VxoWCci}@)VHM z!K2-A&PMay$6@7t5$t9_m~5U0a%j#qnWT{Cr#zcxU19ePZGp80P~|U=7S#c3+^G*^ z8KoiOS3?2H9);t;)EFelxQJmZ$Axgt(@AV1O;ULdu>fFY86x&VAl+7R)LLLgG}mH` zcxph+0jFS2!>AjLc&33X77<4_*0dtbeLlN0XZA1hvxmGxSkszJu6i)()Ddni2+$r5 zB1DW#u3)8u-}KcOwy}%10M{H~f{$ T6BF9idKzh1hOfDiY8=?i1P_JtKRUu~t znG5J4S6n5SGfDE-;g&%;Ey$23b{9%QK87oc#zb1Q!s{XC@X)_lW6_X >%$Vbn2Uq0OB_lB>YpSxvmUD@YCYHk$uhu44zO_&le|LiK^dE_}QK@N)sSj4Wi zIjGVwO;avGkt4<{pR#4cx%2$EB0rOwZ|Tdgrsi?+EO!d#OZu|*S4DcPiVJv?6to&| zHqN0~pw9^P6mTqXEhWgFxY5l2Fr+hP3w)J=ij$EJ2x)}y4`1O2M)RGYAKgP%1K<{F znzP^$N6t)*Csym`VCt)pb_cH|8i5;=%#_qpF4C(hMA&T*?RVdQIq#ljtn(cm{AgCf z*J?Oq6Ny#JOhGA}$Yv42qC18ruYoPRA(d4cZ4!7S0xs#;Dm(F^)flw!t35TR1ymT$ zj#-jOD$hDMGQIl}5rgvSeJ>}fJfN~itj@pOc@5c!hH8HaX55F>6t;E~umodoDN&VZ zB8DUn|GU#7OqWulz?yzLvP2kLimoRJ*w-$y84e|~o4OdwgPNeiP)Ys{l2pO4NDqvM zcs$nemK>0dw+x*g*%RZhgFJkl1+~bU5OEt1nIKCclOT7y%ubP$8V5y}n$>wk2irp* zItipzSN+2NLz<8XQqpmf8?`MmY?5qjo9HAjhqc14Z8uq2AI?v~2Yw7%xPe18qZbZy zF$kUeE`cUM_hmb|({B64-Q0(_{qW}Q)vMf mG{Fr`3 Vmuf&%3nd1N*>~+m%8sVA{kWzr$7}+R ~fvW*d@!+z`%NN9YlS}g89JNoJ8+uM)1&~fox ze)VVj{qN+e^!|f8`3VnxxdV229O6#Fl>^imi>+pmpyAx485&TJjEA~VP4;QW$VVFd z!ayGR@Y|KM`yaf#|J}E?cW!N0E^g1CZJ&R${p_Rd?>^t|#5|wO@$Qt|)sj~XIbM@l zR)M3zk&CGVhZz&&rcL<##~o!~0HsBpX6yv3YmGIJF$+#v#Ia!~uLE*#OfJqO?wG7d z5zJyum>!4-scIaY7miz2Lnc;~F3&m45)AdISjHq?Ft+8^WM~7#8b$W-yk m0}C~XvC}eZGDkYTWqGJ2U>478RKgKJSUVENE*oM52#Xbo!)Q7M(lHhhflGsB zY~fGtC(>3Xrp9Zf$i+ui`3!e1;Jo?j_T^VTSNCq{sH5x7K`=Z{YHUCyS!J;)Vq2wv zpgJ#3WyZqS+{O&n%?eY?XaXctrin>t4IP`>TMlm@@Bk`|E_f0bKfT&j22ATiIVs-M zq{W>IkE0m}#ya3h4Mc?w|1QR(HPQ}RlQ71?l6^HnrD{qxsp$ckR*4r8-=+3deheD0 z?1zRX&4Kj+K}wud G#|z;7wdj`hg0bv+}ysC+ep1C z{mPZ&f4;r@`~g#OQ3NcbHscM|l7YX-t`ZlD*jf%|<$4DiF{x-E3taO^-ShgC_XhnT zf 0{-f&~d4P{9O+6y1|@OIY6K)6}P6FRwLINd`&t) zOGr_e_M^m|k<)nm9Z(G5TT9Yex2yn4e3#X77!ofxSw4NXo!jSkShmj|@_t&DgLUI1 zhwKE-4>LZb%b;~>4J43og~-OXTg)8yXgP*?EbFtV 1!Qc> c*YXql+G&R781+%_A({{bF zg5YrH9^R v*?b2! ;l3v3qDzOgL7F3lnzE}V~{qX0teA)rlBu=8Z$*P2yML^NmBCi zV9_uj2^6llfEM~K8zwRmXLu|fvMTdES&T^Z_JI*L+Y0F+RsAg)47E{J4#bJnGca2P zX+br|CI7%?8|+}32lZ+-y6-?FCS-9^i{^ B GnkOO%0pYM6iF*+Ato^iTM zn7kZ|t#o4Uh$I5TmQDoH0Z5#aM*6izPE}mktd5svkm5Q*@C_G{M~4$Xvlb*D{l9X4 zdvv_zHw^VdMVNTrjfi)x_C3dYDHaA}~rBLiURXx3lYr4nlum{ 8hPQo`|ge+oO3oPwt z3+42ch~|JwpX8EQr%9h&p<&cW9sTq=YGNMh1)#7sO1q^GZrlw?(gcqgsaQa|t1*Br zwK<6hsc 73tfgSaPXE2I6c{Vh*!oa;8$g~hGClR1FBY9fa8o @ep z<0S9by?6ciKY8oL>z8uNzupjudDCLLBpC3K#5sLbmN?CD&P(g`t(vrAYfN3BpnKMd z7Xne|_SHA9ZEwACbm6t@yGvJ&j`GfyXBOwqpS}6=&6{Uly$rDB;XH!c5Hl^@0i>Cd zP!zeqDpON&^mMVL#4dDbu)>P8vcbKj#DfILZSyq3IbkzU##oLRi&N;2_wuV{BsJ zn(P085K~fqj5I zBOrtkFh1kg2tkVxBnY_>rwMoW5xg`2q?34zo7?aw&QQnhBq@O5EiRs@?8wSYM=++b zCEwUg1RCj`Ae66| 9qwO$(;>L7zrZ=;YrA5E!gwl~8e2IeQojQQ|n2 zR-IMrnuf2|W-jnihyfja`bd_30xv5=)MMdkA5r^|z^H=gXwZ*v@ w-8-q}hRg`o->VKJ~NUyZl7y_9t&{Ke?6P)|~79Gq8!wBg@3A zK!!OYoP;SO=Uk%`D%>2uaUSc%(c9==aD2~8@$9Dg lF}OXG_-^--!iamo~^Wk~$r{C_)Z=a1=2%fljtx_ zzuanRT#woyms>7z FrV1 z&`~qOxaX=4SL~P&^y3hvD~rK_+5}^oC2NlFUE0@iy%ORYQLDt7w^t|*;aKrtp-1#@ zQ9UViL*X;iu%spj `q>vFt;m)^ zY}3mEGC(9_Zv_NsVo#oyu{J2Xz?@n~S?q`d1WnSg(C+u9c&Mcs7}eViG}eEbK-!l@ z6NxmmF)|`n9gOCXo r7_ zACvpR&HbOfwa*uNc*4%LvdlrTKqYocMW5A5VT~gOD?K@27$fYYLHv$Qy8B;$vwiTZ z?deB%b`S6DUOdY;sOHeTzjOQ1N8fz*$?>xn$N53I$oetDkY$iuXagv`PrFf6=hUs$ zvTdzUYf=jeN(%_7NmEF=Si&_Cq2CnN0XlCI`qYt<>Mb-t`jMG|=#x1cQPLo6mt`Nx z7-1Kwh0Qv9?Ck!F%y^z`;t9;~rxUvQzQfGSr}=u8 ?rcdV^rbxRGo<&+|;;JNgWu2Z6o&k-+OUM{z zPKM|GC;NQKYJRXWUt$-#78Z^U8Mr_axj0A~(tIEl*sM;I0$;Fj)fy#sifdjEK;7>s zSP5Vg@zf9l-@;yD skTJM UEGo|p#HpGOcX)}st>yOAf2%!jCnQQ z8ct-fVzCtTTAC#gDqyveiDMWK&qH)&kSzpel-p3_6T`Si#)zR9`AIwShC#!Fozf|# zI3DV8jam*XFGK`9bNRf-0I^9b9y9N$VQ?aId(w%B(>d`lXiTk^3vO8sUFlackb!Gu z@dpC@jBhQ)#{Fa=$_i>rIQ7_(DLBw#{#gg6%d`FNiw8${9_L um?YLr>x!^9 z3`)t+Cr!kMCDViUSkfAM#6;?}8-tbOAQ)G7{b`*niPH*Ne QAXdZF)1BbNuL=Q`&saIJ7mY;|JG^4%dpt=a0v5|gqm&MzVw*P! zfycFao)v>+u3oP-bu1&3iMe5n5sPt`7B)pgIk@JOzTL{?Bmps&r6V7S$j+q$SVe&1 zYY#&wiw#y`StUmCr_)k@^6=>PNBbY#*!|$fac)ok;mz&!Yx|#lk?&fHlQqnkC0XME zs%tPy8?ohE)kKYw6#!`&oHOFwPm SRWm~ROAcl&qW-`{%q`K5EubMI7seevrD z+qFx4k;s*E`ybufUb(XS*=PGt?`JFkYY;#kz;YuxQz{#mG=>lxE*USCTexFDTCf@{ zTr)bnV&lptomk+}|9IpBY>)Q&acFDO7(p0nF=SfDtoW>Tt$ LF1 JWKY(lcEY60mop}{O6N|fvK^z zKHyj{odME<91$;%2*(NqW(a0$2Q(IkQWNxJf{K(~7C=2l1e%w@(zjg1L56}gDX~Tv z3zmfH7L3+0>+GmGUH$UW(U%Xmq?|M8{IJ%WFL6u2oyXiOT^~{72M&LX88|8bQYkky zE|_XwGrbZE7auuE=RD~4?)@*brk%6DFYfQ}JjzFwbFVbtBJ%o6yL>b*U-p!5RmClI z3u|tHQ~(^n#1p!!3e7!+>M)U-_5n-3Wzt&^T4@|CW0bEn`SI(!%jdUG@9w{NB!rF! z!{XqwykU~|dL&3;8(45H5G#|5gNC8VsG{p%9qI6FSzs+a-%NThr(BmfX1#xR_t>uk zkC70w#s?A7she%4NBl>HHf9h`%QYJw z}^ai3!wxt!bv0uRTs72s)Ya-rMAl|{`Dn&M2tuV$& ?mu^do+(ne^+{h7<>&a|gQ-h93-<^~j6X)p>J<;5* 6M#VXgNIK**Z5ZO9AaL?yxe)H!3i^scvyv@}xtg(|`kO_)(wstgtMGePe z37knXlR!Q2_g^4`L;~|U9CylNyq3%yX%t=t6w9E{L?16BHAi;-w3K(^ab)TN|JLR0 zwaa{#{nL9$q(NF91ne?J6hI&iR$#T)Eg~u4Rt?)K6MhKB2wu@RHnd?r2Kvno8KVLf z)lNhU)ESnJ2OVuEaAft2X@XJ25rv`LBFCEw%LaXCERE(dV2g{yVCvHPlL|Ai(V~c_ zF~@2)OFf3#a9}4^z1squ>`J>z3|!bLm)82lznS;AoouwwW@yf4AxU-k8NJ-`z>-XJ zfaahy8AY1r5Re!vrEn1*wI*!Ge7U4MOE95lR1tKV?jT~Lxrkt-o54#9N~0Q^&gKI; zjhK;82N?VM)Hj-g>VQ?^iSpIMqt74g@?pR07mxCJzx
bVUj80^o=Dj?7F {avFjLgV$(Mi2xrVWg{8K9O;u(BY;%w1@4l8VcidmU za`fRHrix6451znu(|{vW6f;UX3&|~Wwxf}mtJ;B$A!=5t3R4;KsROMvwbHwp;<^B$ zq}$Lc@ODnC5W-Rv>#znj)hLcr&Irv&pkYCqnhVDW5RB3aoi!TJuxg7=mzcV!C)hId zDc+tY&SPeFp#x(^CqVcTY9{>Z0v=&wxTY`Fk*%IKLnErR=rlmu5#>$78ABsMR)gA{ z3=#ctUl^rt#Dz(RbU8Yg0}SYjS7;;{o-8;p@!60Hflg^{R(Dz+%LuX7tzNVpHd8GL zvG|fX4-#?8Tsh+VDnGird-#-7>0Aze< IBUJkRx7`t7$AG?i 8qB8Q7&9Ad@4vb5lE(50cib5yxcU3x=R z*v?6sVrA+mrhmX&T5MAAd}5FTw2w$$y|le^WBWRnIPS>4Y$l7i5?QEh%NdFWiq@q8 zkXaDbm>d{H!cnAJm
A! zJU_{r_5R3XG#L3-oa~Ap-r Fj1>b!yZ+SM)BSnog03;7A0jVBkwfcRmQO`^8~ zHmQKwQux#7rP`vhQ23e?dB%fWxPXvrpt-y2n@8Kj =@5Wb zDbP!Q1?*Uma&QS&LoM1h#&Q>AlEWMd>0-&+Bd<*iBSOljH1|J#ZTs@c?r* }sMCP>j1)$vR@gK^6r5d}eT2Y{ty$_$G>uRdi^f>$6OC?A zVgZj*9Hil3f2r5D7FcRJx7i&WQLHJ84GYAwSzWgJBc>>LNI)w+NDBwy#uqJ1HBGDi zqRC8%tc+>JC)9YZd_kci1|ix(5e;2|$`Dr#Ys9Iv?yS;&dd%hE{7m?bEBQw0-7A;* zP}N8GJwQX`G}E|HSK%NwHMe=tAx=fI^ruO(&il4GUfa!KZngaw3_}f{(D?Y?_W8YC zekSJHrQNj)`?s!ddCs`|INyN>2Tmf1Y*NH_p+_u-ph_)hHtA`d^aK%r^x_XubHc{Q zH%~%_9}>&WUN86n=Jx#?{5--J57sy3pL({a>##{lvpYKQjKf;ev?42xg=;>pnXcN> z8^CPMlJlfN-2cfN+l{mPe2Ht`J