From 6226f4ae666839686d0b29234803b3ca67f4ca8f Mon Sep 17 00:00:00 2001 From: Beck <164545837+validbeck@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:14:10 -0800 Subject: [PATCH 1/4] Quick gallery css (#517) * Lightbox experiements * Finishing up --- internal/testing/lightbox.qmd | 31 ++++++++++++++++++++++++++ site/_quarto.yml | 9 +++----- site/styles.css | 42 +++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 internal/testing/lightbox.qmd diff --git a/internal/testing/lightbox.qmd b/internal/testing/lightbox.qmd new file mode 100644 index 0000000000..25873688e1 --- /dev/null +++ b/internal/testing/lightbox.qmd @@ -0,0 +1,31 @@ +--- +title: "Lightbox gallery" +lightbox: true +subtitle: "CSS styling" +search: false +filters: + - tachyons +--- + +:::: {.flex .flex-wrap .justify-around} + +::: {.w-30-ns} + +{group="image-group"} + +::: + +::: {.w-30-ns} + +{group="image-group"} + +::: + +::: {.w-30-ns} + +{group="image-group"} + +::: + +:::: + diff --git a/site/_quarto.yml b/site/_quarto.yml index 5fda68ccc5..e386b51486 100644 --- a/site/_quarto.yml +++ b/site/_quarto.yml @@ -338,13 +338,10 @@ website: # - internal/testing.qmd # - text: "---" # - text: "EXPERIMENTS" - # - file: internal/buttons.qmd + # - file: internal/lightbox.qmd # - file: internal/footnotes/footnotes.qmd - # contents: - # - internal/footnotes/hover-only.qmd - # - internal/footnotes/margin-only.qmd - # - internal/footnotes/margin-hover.qmd - # - internal/footnotes/text-notes.qmd + # contents: + # - internal/footnotes/hover-only.qmd page-footer: background: "#DE257E" diff --git a/site/styles.css b/site/styles.css index 2873a5c4bd..8ab591ea3e 100644 --- a/site/styles.css +++ b/site/styles.css @@ -545,6 +545,48 @@ figcaption { font-weight: bolder; } +.gclose.gbtn { + background-color: #083E44; + border: 3px solid #de257e; +} + +.gclose.gbtn:hover { + background-color: #DE257E; +} + +.gclose.gbtn svg path { + fill: #de257e; +} + +.gclose.gbtn:hover svg path { + fill: white; +} + +.glightbox-clean .gdesc-inner { + background-color: #083E44; +} + +.gslide-description .gslide-title { + background-color: #083E44 !important; + color: white !important; +} + +.gnext.gbtn { + background-color: #DE257E; +} + +.gnext.gbtn, .gprev.gbtn { + background-color: #083E44; +} + +.gnext.gbtn:hover, .gprev.gbtn:hover { + background-color: #3E6C69; +} + +.gnext.gbtn svg path, .gprev.gbtn svg path { + fill: white; +} + /* section#footnotes { display: none !important; } From 56ef50e27d5e68eeee3983ec2b954588207c171b Mon Sep 17 00:00:00 2001 From: Beck <164545837+validbeck@users.noreply.github.com> Date: Tue, 12 Nov 2024 16:23:05 -0800 Subject: [PATCH 2/4] Training hero bg no-repeat (#520) --- site/training/assets/training.css | 1 + 1 file changed, 1 insertion(+) diff --git a/site/training/assets/training.css b/site/training/assets/training.css index 4d8953106c..542b725c71 100644 --- a/site/training/assets/training.css +++ b/site/training/assets/training.css @@ -20,6 +20,7 @@ a:hover { align-items: center; flex-direction: column; text-align: center; + background-size: cover; } #quarto-sidebar.sidebar { From 462effd52806d9f7da198de3301019ecb0d9faef Mon Sep 17 00:00:00 2001 From: Beck <164545837+validbeck@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:55:07 -0800 Subject: [PATCH 3/4] =?UTF-8?q?Updated=20product=20terminology=20=E2=80=94?= =?UTF-8?q?=20`documentation`=20repo=20side=20(#521)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Changing the variable values * 1st pass of Developer Framework & developer framework * Changed filenames from developer-framework to validmind-library * 1st pass of ValidMind Platform UI & platform UI * 2nd pass of ValidMind Platform UI & platform UI * 2nd pass of Developer Framework & developer framework * 1st pass AI risk platform * 1st pass product name > variable * Added API to style guide conventions * Quick tweaks * Updated glossary entry for metrics * Edited drop-down * Replaced overview-developer-framework.png with architecture image * Replaced overview-api-integration.png * Replaced validmind-lifecycle.jpg * Fixed an open div & broken aliases * Quick tweak * Next sweep of ValidMind variable * Some more cleanup & automatic uppercasing of sidenav dividers * Tweaks to _quarto.yml * Oops, missed one * Quick cleanup * Added templates/jupyter-notebooks * Proofreading internal/ * Proofreading _quarto.yml * install-and-initialize-client-library.qmd > install-and-initialize-validmind-library.qmd * Cleanup for client library * Proofread about/ -releases * Proofread developer/ * Proofread faq/ * Proofread get-started/ * Proofread training/ * Reset notebooks to main * Proofread releases/2023/ * Proofread releases/2024- * Proofread up to guide/configuration * New legal & training variables * Developer > Developers * Styled the sidebar * Removed extra space oops --- README.md | 4 +- internal/templates/about-validmind.md | 48 --------- internal/templates/before_you_begin.ipynb | 97 ------------------ .../jupyter-notebooks/about-validmind.ipynb | 63 ++++++++++++ .../install-initialize-validmind.ipynb | 75 ++++++++++++++ .../jupyter-notebooks/next-steps.ipynb | 70 +++++++++++++ internal/templates/mermaid-diagrams.qmd | 8 +- internal/templates/next-steps.md | 20 ---- internal/templates/tachyons-flexbox.qmd | 6 +- internal/templates/task.qmd | 3 +- .../templates/videos/_revealjs_navigation.qmd | 2 +- internal/testing/css-grid/tachyons-grid.qmd | 6 +- internal/testing/variables/variables.qmd | 42 ++++---- site/_quarto.yml | 62 +++++------ site/_variables.yml | 13 ++- .../contributing/style-guide/conventions.qmd | 44 ++++---- .../contributing/style-guide/style-guide.qmd | 7 +- .../style-guide/voice-and-tone.qmd | 6 +- .../contributing/validmind-community.qmd | 27 ++--- site/about/deployment/deployment-options.qmd | 9 +- site/about/deployment/multi-tenant-cloud.qmd | 9 +- .../deployment/virtual-private-validmind.qmd | 10 +- site/about/fine-print/data-privacy-policy.qmd | 31 +++--- site/about/fine-print/license-agreement.qmd | 4 +- .../fine-print/overview-api-integration.jpg | Bin 0 -> 208034 bytes .../fine-print/overview-api-integration.png | Bin 178713 -> 0 bytes site/about/glossary/_developer-tools.qmd | 10 +- site/about/glossary/_models.qmd | 2 +- site/about/glossary/_validmind-features.qmd | 8 +- site/about/glossary/_validmind.qmd | 4 +- site/about/glossary/glossary.qmd | 4 +- site/about/glossary/key_concepts/_inputs.qmd | 10 +- site/about/glossary/key_concepts/_metrics.qmd | 4 +- .../key_concepts/_monitoring-template.qmd | 2 +- .../glossary/key_concepts/_parameters.qmd | 2 +- .../about/glossary/key_concepts/_template.qmd | 2 +- site/about/glossary/key_concepts/_test.qmd | 4 +- site/about/overview-developer-framework.png | Bin 269074 -> 0 bytes site/about/overview-model-documentation.qmd | 53 +++++----- site/about/overview-model-risk-management.qmd | 41 +++----- ...-platform-ui.png => overview-platform.png} | Bin site/about/overview.qmd | 45 ++------ ....qmd => get-started-validmind-library.qmd} | 23 +++-- .../model-documentation/document-models.qmd | 8 +- .../documenting-models.qmd | 10 +- ...tall-and-initialize-validmind-library.qmd} | 29 +++--- .../store-credentials-in-env-file.qmd | 2 +- .../model-documentation/supported-models.qmd | 8 +- .../model-testing/testing-overview.qmd | 8 +- site/faq/faq-documentation.qmd | 18 ++-- site/faq/faq-integrations.qmd | 24 ++--- site/faq/faq-inventory.qmd | 6 +- site/faq/faq-models.qmd | 16 +-- site/faq/faq-privacy.qmd | 30 +++--- site/faq/faq-testing.qmd | 14 +-- site/faq/faq-workflows.qmd | 23 ++--- .../developer/try-in-your-own-environment.qmd | 21 ++-- site/get-started/developer/try-with-colab.qmd | 21 ++-- .../developer/try-with-jupyterhub.qmd | 21 ++-- site/get-started/get-started.qmd | 25 +++-- .../explore-sample-model-documentation.qmd | 19 ++-- .../generate-documentation-for-your-model.qmd | 13 +-- site/get-started/platform/next-steps.qmd | 10 +- .../platform/register-your-first-model.qmd | 7 +- site/get-started/quickstart.qmd | 11 +- site/get-started/validmind-lifecycle.jpg | Bin 198046 -> 194804 bytes .../configuration/accessing-validmind.qmd | 5 +- .../configure-aws-privatelink.qmd | 24 ++--- .../configure-azure-private-link.qmd | 20 ++-- ...nfigure-google-private-service-connect.qmd | 28 ++--- .../customize-your-dashboard.qmd | 2 +- .../configuration/log-in-to-validmind.qmd | 12 ++- .../configuration/manage-permissions.qmd | 2 +- site/guide/configuration/managing-users.qmd | 6 +- .../configuration/personalize-validmind.qmd | 1 + .../configuration/register-with-validmind.qmd | 69 +++++++------ .../set-up-your-organization.qmd | 4 +- site/guide/guides.qmd | 20 ++-- .../collaborate-with-others.qmd | 2 +- .../customize-documentation-templates.qmd | 2 +- .../export-documentation.qmd | 2 +- .../view-documentation-guidelines.qmd | 6 +- .../view-documentation-templates.qmd | 4 +- .../work-with-content-blocks.qmd | 6 +- .../working-with-model-documentation.qmd | 6 +- .../_view-model-activity-overview.qmd | 2 +- .../configure-model-interdependencies.qmd | 2 +- .../manage-model-inventory-fields.qmd | 4 +- .../register-models-in-inventory.qmd | 2 +- .../model-inventory/view-model-activity.qmd | 4 +- .../working-with-model-inventory.qmd | 2 +- .../add-manage-model-findings.qmd | 4 +- site/guide/model-validation/view-reports.qmd | 2 +- .../working-with-model-findings.qmd | 2 +- .../set-up-model-workflows.qmd | 2 +- .../working-with-model-workflows.qmd | 2 +- site/guide/monitoring/enable-monitoring.qmd | 12 +-- site/guide/monitoring/ongoing-monitoring.qmd | 4 +- .../monitoring/review-monitoring-results.qmd | 4 +- site/index.qmd | 8 +- site/releases/2023/2023-aug-15/highlights.qmd | 4 +- site/releases/2023/2023-nov-09/highlights.qmd | 10 +- site/releases/2023/2023-oct-25/highlights.qmd | 18 ++-- .../developer-framework-dropdown.gif | Bin 2076096 -> 0 bytes site/releases/2023/2023-sep-27/highlights.qmd | 23 ++--- .../2023/release-notes-2023-jul-24.qmd | 6 +- .../2023/release-notes-2023-jun-22.qmd | 10 +- site/releases/2024-aug-13/release-notes.qmd | 4 +- site/releases/2024-feb-14/highlights.qmd | 38 ++----- site/releases/2024-jan-18/highlights.qmd | 6 +- site/releases/2024-jan-26/highlights.qmd | 4 +- site/releases/2024-jul-22/release-notes.qmd | 10 +- site/releases/2024-mar-27/highlights.qmd | 24 ++--- site/releases/2024-may-22/release-notes.qmd | 42 ++++---- site/releases/2024-oct-22/release-notes.qmd | 34 +++--- site/releases/2024-sep-09/release-notes.qmd | 2 +- site/releases/2024-sep-25/release-notes.qmd | 4 +- site/releases/_how-to-upgrade.qmd | 4 +- site/styles.css | 24 ++++- site/support/support.qmd | 2 +- site/support/troubleshooting.qmd | 8 +- site/training/_training-register.qmd | 4 +- .../administrator-fundamentals-register.qmd | 2 +- .../administrator-fundamentals.qmd | 16 +-- site/training/assets/_revealjs-navigation.qmd | 2 +- .../developer-fundamentals-register.qmd | 15 +-- .../developer-fundamentals.qmd | 24 ++--- .../risk-governance-fundamentals.qmd | 10 +- .../course-registration.qmd | 2 +- .../training-templates/course-slides.qmd | 16 +-- site/training/training.qmd | 19 ++-- .../validator-fundamentals-register.qmd | 2 +- .../validator-fundamentals.qmd | 18 ++-- 133 files changed, 950 insertions(+), 958 deletions(-) delete mode 100644 internal/templates/about-validmind.md delete mode 100644 internal/templates/before_you_begin.ipynb create mode 100644 internal/templates/jupyter-notebooks/about-validmind.ipynb create mode 100644 internal/templates/jupyter-notebooks/install-initialize-validmind.ipynb create mode 100644 internal/templates/jupyter-notebooks/next-steps.ipynb delete mode 100644 internal/templates/next-steps.md create mode 100644 site/about/fine-print/overview-api-integration.jpg delete mode 100644 site/about/fine-print/overview-api-integration.png delete mode 100644 site/about/overview-developer-framework.png rename site/about/{overview-platform-ui.png => overview-platform.png} (100%) rename site/developer/{get-started-developer-framework.qmd => get-started-validmind-library.qmd} (69%) rename site/developer/model-documentation/{install-and-initialize-client-library.qmd => install-and-initialize-validmind-library.qmd} (68%) delete mode 100644 site/releases/2023/2023-sep-27/developer-framework-dropdown.gif diff --git a/README.md b/README.md index b2759c93b1..f9a5aa7e1f 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ This is the home for the user-facing documentation and related infrastructure fo We believe in the power of collaboration and welcome contributions from the community. If you've noticed an issue or have ideas for improvement, please create a pull request or submit an issue. A member of ValidMind's documentation team will review your suggestions and support you in contributing to the docs. -- Follow the [Quickstart](https://docs.validmind.ai/get-started/developer/try-with-jupyterhub.html) for a 15-minute introduction to the Developer Framework and ValidMind Platform. +- Follow the [Quickstart](https://docs.validmind.ai/get-started/developer/try-with-jupyterhub.html) for a 15-minute introduction to the ValidMind Library and ValidMind Platform. -- Read the [Developer Framework docs](https://docs.validmind.ai/developer/get-started-developer-framework.html) for more information about ValidMind's open source tests and Jupyter notebooks. +- Read the [ValidMind Library docs](https://docs.validmind.ai/developer/get-started-validmind-library.html) for more information about ValidMind's open source tests and Jupyter notebooks. - Join the [Community Slack](https://docs.validmind.ai/about/contributing/join-community.html) to ask questions, get support, and connect with Model Risk Management (MRM) practioners. diff --git a/internal/templates/about-validmind.md b/internal/templates/about-validmind.md deleted file mode 100644 index f1632fde7f..0000000000 --- a/internal/templates/about-validmind.md +++ /dev/null @@ -1,48 +0,0 @@ -## About ValidMind - -ValidMind is a platform for managing model risk, including risk associated with AI and statistical models. You use the ValidMind Developer Framework to automate documentation and validation tests, and then use the ValidMind AI Risk Platform UI to collaborate on model documentation. Together, these products simplify model risk management, facilitate compliance with regulations and institutional standards, and enhance collaboration between yourself and model validators. - -### Before you begin - -This notebook assumes you have basic familiarity with Python, including an understanding of how functions work. If you are new to Python, you can still run the notebook but we recommend further familiarizing yourself with the language. - -If you encounter errors due to missing modules in your Python environment, install the modules with `pip install`, and then re-run the notebook. For more help, refer to [Installing Python Modules](https://docs.python.org/3/installing/index.html). - -### New to ValidMind? - -If you haven't already seen our [Get started with the ValidMind Developer Framework](/developer/get-started-developer-framework.qmd), we recommend you explore the available resources for developers at some point. There, you can learn more about documenting models, find code samples, or read our developer reference. - -::: {.callout-tip} - -For access to all features available in this notebook, create a free ValidMind account. - -Signing up is FREE — {{< var link.register >}} - -::: - -### Key concepts - -**Model documentation**: A structured and detailed record pertaining to a model, encompassing key components such as its underlying assumptions, methodologies, data sources, inputs, performance metrics, evaluations, limitations, and intended uses. It serves to ensure transparency, adherence to regulatory requirements, and a clear understanding of potential risks associated with the model’s application. - -**Documentation template**: Functions as a test suite and lays out the structure of model documentation, segmented into various sections and sub-sections. Documentation templates define the structure of your model documentation, specifying the tests that should be run, and how the results should be displayed. - -**Tests**: A function contained in the ValidMind Developer Framework, designed to run a specific quantitative test on the dataset or model. Tests are the building blocks of ValidMind, used to evaluate and document models and datasets, and can be run individually or as part of a suite defined by your model documentation template. - -**Metrics**: A subset of tests that do not have thresholds. In the context of this notebook, metrics and tests can be thought of as interchangeable concepts. - -**Custom metrics**: Custom metrics are functions that you define to evaluate your model or dataset. These functions can be registered with ValidMind to be used in the platform. - -**Inputs**: Objects to be evaluated and documented in the ValidMind framework. They can be any of the following: - - - **model**: A single model that has been initialized in ValidMind with [`vm.init_model()`](/validmind/validmind.html#init_model). - - **dataset**: Single dataset that has been initialized in ValidMind with [`vm.init_dataset()`](/validmind/validmind.html#init_dataset). - - **models**: A list of ValidMind models - usually this is used when you want to compare multiple models in your custom metric. - - **datasets**: A list of ValidMind datasets - usually this is used when you want to compare multiple datasets in your custom metric. See this [example](/notebooks/how_to/run_tests_that_require_multiple_datasets.ipynb) for more information. - -**Parameters**: Additional arguments that can be passed when running a ValidMind test, used to pass additional information to a metric, customize its behavior, or provide additional context. - -**Outputs**: Custom metrics can return elements like tables or plots. Tables may be a list of dictionaries (each representing a row) or a pandas DataFrame. Plots may be matplotlib or plotly figures. - -**Test suites**: Collections of tests designed to run together to automate and generate model documentation end-to-end for specific use-cases. - -Example: the [`classifier_full_suite`](/validmind/validmind/test_suites/classifier.html#ClassifierFullSuite) test suite runs tests from the [`tabular_dataset`](/validmind/validmind/test_suites/tabular_datasets.html) and [`classifier`](/validmind/validmind/test_suites/classifier.html) test suites to fully document the data and model sections for binary classification model use-cases. diff --git a/internal/templates/before_you_begin.ipynb b/internal/templates/before_you_begin.ipynb deleted file mode 100644 index 2970cd210c..0000000000 --- a/internal/templates/before_you_begin.ipynb +++ /dev/null @@ -1,97 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "CAQPDHbf9J-o" - }, - "source": [ - "## Before you begin\n", - "\n", - "To use the ValidMind Developer Framework with a Jupyter notebook, you need to install and initialize the client library first, along with getting your Python environment ready.\n", - "\n", - "If you don't already have one, you should also [create a documentation project](https://docs.validmind.ai/guide/create-your-first-documentation-project.html) on the ValidMind platform. You will use this project to upload your documentation and test results." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": { - "id": "nK4I5iddCjjN" - }, - "source": [ - "## Install the client library" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%pip install --upgrade validmind" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Initialize the client library\n", - "\n", - "In a browser, go to the **Client Integration** page of your documentation project and click **Copy to clipboard** next to the code snippet. This code snippet gives you the API key, API secret, and project identifier to link your notebook to your documentation project.\n", - "\n", - "::: {.column-margin}\n", - "::: {.callout-tip}\n", - "This step requires a documentation project. [Learn how you can create one](https://docs.validmind.ai/guide/create-your-first-documentation-project.html).\n", - ":::\n", - ":::\n", - "\n", - "Next, replace this placeholder with your own code snippet:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "## Replace with code snippet from your documentation project ##\n", - "\n", - "import validmind as vm\n", - "\n", - "vm.init(\n", - " api_host=\"https://api.prod.validmind.ai/api/v1/tracking\",\n", - " api_key=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n", - " api_secret=\"API_SECRET\",\n", - " project=\"xxxxxxxxxxxxxxxxxxxxxxxxx\"\n", - ")" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file diff --git a/internal/templates/jupyter-notebooks/about-validmind.ipynb b/internal/templates/jupyter-notebooks/about-validmind.ipynb new file mode 100644 index 0000000000..e2d202ffb4 --- /dev/null +++ b/internal/templates/jupyter-notebooks/about-validmind.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## About ValidMind\n", + "\n", + "ValidMind is a suite of tools for managing model risk, including risk associated with AI and statistical models. \n", + "\n", + "You use the ValidMind Library to automate documentation and validation tests, and then use the ValidMind Platform to collaborate on model documentation. Together, these products simplify model risk management, facilitate compliance with regulations and institutional standards, and enhance collaboration between yourself and model validators.\n", + "\n", + "### Before you begin\n", + "\n", + "This notebook assumes you have basic familiarity with Python, including an understanding of how functions work. If you are new to Python, you can still run the notebook but we recommend further familiarizing yourself with the language. \n", + "\n", + "If you encounter errors due to missing modules in your Python environment, install the modules with `pip install`, and then re-run the notebook. For more help, refer to [Installing Python Modules](https://docs.python.org/3/installing/index.html).\n", + "\n", + "### New to ValidMind?\n", + "\n", + "If you haven't already seen our [Get started with the ValidMind Library](https://docs.validmind.ai/guide/get-started-validmind-library.html), we recommend you explore the available resources for developers at some point. There, you can learn more about documenting models, find code samples, or read our developer reference.\n", + "\n", + "
](/index.qmd)"
- # contents:
- # - text: "Training"
- # file: training/training.qmd
- # - text: "---"
- # - text: "FUNDAMENTALS"
- # - text: "For Administrators"
- # file: training/administrator-fundamentals/administrator-fundamentals-register.qmd
- # - text: "For Developers"
- # file: training/developer-fundamentals/developer-fundamentals-register.qmd
- # - text: "For Validators"
- # file: training/validator-fundamentals/validator-fundamentals-register.qmd
-# - text: "For model risk governance"
-# file: training/training-for-model-risk-governance.qmd
-
# COMMENT THIS OUT WHEN DONE TESTING
# - title: "Testing"
# contents:
@@ -345,7 +329,7 @@ website:
page-footer:
background: "#DE257E"
- left: "© Copyright 2023-2024 ValidMind Inc. All Rights Reserved."
+ left: "© Copyright 2023-2024 {{< var validmind.legal >}} All Rights Reserved."
right:
- text: "validmind.com {{< fa external-link >}}"
href: https://validmind.com/
diff --git a/site/_variables.yml b/site/_variables.yml
index b654974fa3..135edfe56b 100644
--- a/site/_variables.yml
+++ b/site/_variables.yml
@@ -14,18 +14,21 @@
# Long form
# Rendered format: `{{< var validmind.platform >}}`
validmind:
- platform: "ValidMind Platform UI"
- developer: "ValidMind Developer Framework"
+ platform: "ValidMind Platform"
+ developer: "ValidMind Library"
product: "ValidMind AI risk platform"
vpv: "Virtual Private ValidMind"
+ api: "Python Library API"
+ legal: "ValidMind Inc."
+ training: "ValidMind Academy"
# Short form
# Rendered format: `{{< var vm.platform >}}`
vm:
- platform: "platform UI"
- developer: "developer framework"
+ platform: "platform"
+ developer: "library"
product: "ValidMind"
-
+ api: "Python API"
# PRODUCT URLS
# Links to ValidMind hosted web applications
diff --git a/site/about/contributing/style-guide/conventions.qmd b/site/about/contributing/style-guide/conventions.qmd
index 6c4ae50ffe..fb4e49738e 100644
--- a/site/about/contributing/style-guide/conventions.qmd
+++ b/site/about/contributing/style-guide/conventions.qmd
@@ -16,7 +16,7 @@ Conveying knowledge and empowering users starts in the product interface. While
- **Show only what’s necessary when necessary.** Progressive disclosure[^1] can help guide workflows as well as minimize visual clutter.
## American English
-While the ValidMind community spans far and wide, its heart finds its home in Palo Alto, California. When writing for ValidMind, keep things consistent by using American English[^2] spelling and grammar conventions.
+While the {{< var vm.product >}} community spans far and wide, its heart finds its home in Palo Alto, California. When writing for {{< var vm.product >}}, keep things consistent by using American English[^2] spelling and grammar conventions.
| Correct | Incorrect |
|------|-----|
@@ -45,9 +45,9 @@ In general, follow sentence-style capitalization[^3] to minimize the confusion o
| Correct | Incorrect |
|------|-----|
-| Get started with ValidMind | Get Started with ValidMind |
+| Get started with {{< var vm.product >}} | Get Started with {{< var vm.product >}} |
| In the left sidebar, click **Model Inventory**. | In the left sidebar, click **model inventory**. |
-| [Honor the Human with ValidMind](https://validmind.com/honor-the-human-with-validmind/) | [Honor the human with ValidMind](https://validmind.com/honor-the-human-with-validmind/) |
+| [Honor the Human with {{< var vm.product >}}](https://validmind.com/honor-the-human-with-validmind/) | [Honor the human with {{< var vm.product >}}](https://validmind.com/honor-the-human-with-validmind/) |
| `On the landing page of your model, locate the [model status]{.smallcaps} section:` | `On the landing page of your model, locate the MODEL STATUS section:` |
: **Sentence case** examples {.hover}
@@ -58,7 +58,7 @@ In general, follow sentence-style capitalization[^3] to minimize the confusion o
| Correct | Incorrect |
|------|-----|
-| Login to ValidMind | 1. Logging into ValidMind. |
+| Login to {{< var vm.product >}} | 1. Logging into {{< var vm.product >}}. |
: **Heading** examples {.hover}
### Responsive columns
@@ -237,10 +237,10 @@ Use emphatic styling sparingly, in order not to overwhelm the reader with visual
| Correct | Incorrect |
|------|-----|
-| At ValidMind, we value **transparency and accessibility** — we aim to speak simply and effectively. (e.g. Highlighting the important concept within a sentence.) | **At ValidMind, we value transparency and accessibility — we aim to speak simply and effectively.** (e.g. Highlighting the entire sentence.) |
+| At {{< var vm.product >}}, we value **transparency and accessibility** — we aim to speak simply and effectively. (e.g. Highlighting the important concept within a sentence.) | **At {{< var vm.product >}}, we value transparency and accessibility — we aim to speak simply and effectively.** (e.g. Highlighting the entire sentence.) |
| In the {{< var validmind.platform >}}, click **Model Inventory** on the left sidebar. | In the {{< var validmind.platform >}}, click "Model Inventory" on the left sidebar. |
| *Uncertainty* can be summed up as the difference between reality and the outputs from the model selected to approximate reality. | “Uncertainty” can be summed up as the difference between reality and the outputs from the model selected to approximate reality. |
-| “ValidMind is the only platform today that is purpose-built for model risk management professionals in the banking industry,” Jacobi says. | At ValidMind, we value "transparency and accessibility" — we aim to speak simply and effectively. |
+| “{{< var vm.product >}} is the only platform today that is purpose-built for model risk management professionals in the banking industry,” Jacobi says. | At {{< var vm.product >}}, we value "transparency and accessibility" — we aim to speak simply and effectively. |
: **Emphasis** examples {.hover}
#### Callouts
@@ -314,8 +314,8 @@ lightbox: true
| Correct | Incorrect |
|------|-----|
-| {width=70% fig-alt="Screenshot of the verification email sent by ValidMind" .screenshot .lightbox} | {width=90%} |
-| `{width=80% fig-alt="Screenshot of the verification email sent by ValidMind" .screenshot .lightbox}` | `{width=80%}` |
+| {width=70% fig-alt="Screenshot of the verification email sent by ValidMind" .screenshot .lightbox} | {width=90%} |
+| `{width=70% fig-alt="Screenshot of the verification email sent by ValidMind" .screenshot .lightbox}` | `{width=80%}` |
: **Screenshot** examples {.hover}
#### Videos
@@ -390,13 +390,17 @@ Within our documentation (`https://docs.validmind.ai/`), you are able to referen
| Product Name | Variable Key | Description |
|---:|---|---|
-| {{< var validmind.product >}} | `{{{< var validmind.product >}}}` | Risk platform with a {{< var vm.developer >}} for documenting and testing models, alongside a {{< var vm.platform >}} hosting cloud-based tools, APIs, databases, and validation engines. |
-| {{< var validmind.developer >}} | `{{{< var validmind.developer >}}}` | Open-source suite of of tools that connects to the {{< var vm.platform >}}. |
+| {{< var validmind.product >}} | `{{{< var validmind.product >}}}` | Comphrensive suite of tools with a {{< var vm.developer >}} for documenting and testing models, alongside a {{< var vm.platform >}} hosting cloud-based tools, APIs, databases, and validation engines. |
+| {{< var validmind.developer >}} | `{{{< var validmind.developer >}}}` | Open-source library that connects to the {{< var validmind.platform >}}. |
| {{< var validmind.platform >}} | `{{{< var validmind.platform >}}}` | Hosted multi-tenant architecture that includes a cloud-based web interface. |
+| {{< var validmind.api >}} | `{{{< var validmind.api >}}}` | Used to make calls to the {{< var validmind.developer >}}.[^19] |
+| {{< var vm.product >}} | `{{{< var vm.product >}}}` | Short form of {{< var validmind.product >}}. |
| {{< var vm.developer >}} | `{{{< var vm.developer >}}}` | Short form of {{< var validmind.developer >}}. |
| {{< var vm.platform >}} | `{{{< var vm.platform >}}}` | Short form of {{< var validmind.platform >}}. |
-| {{< var url.us1 >}} | `{{{< var url.us1 >}}}` | One of the URLs of the {{< var validmind.platform >}}. |
-: ValidMind product **variable keys** {.hover tbl-colwidths="[15,45,40]"}
+| {{< var vm.api >}} | `{{{< var validmind.api >}}}` | Short form of {{< var validmind.api >}}. |
+| {{< var url.us1 >}} | `{{{< var url.us1 >}}}` | US-hosted {{< var validmind.platform >}} URL. |
+| {{< var url.ca1 >}} | `{{{< var url.ca1 >}}}` | CA-hosted {{< var validmind.platform >}} URL. |
+: {{< var vm.product >}} product **variable keys** {.hover tbl-colwidths="[15,45,40]"}
::: {.callout}
Refer also to [the glossary](/about/glossary/glossary.qmd) for extended information on product names.
@@ -404,7 +408,7 @@ Refer also to [the glossary](/about/glossary/glossary.qmd) for extended informat
## Training materials
-The ValidMind Academy[^20] is delivered in Revealjs presentation format,[^21] with a slightly different set of conventions:
+The {{< var validmind.training >}}[^20] is delivered in Revealjs presentation format,[^21] with a slightly different set of conventions:
- Training courses consist of:
@@ -413,7 +417,7 @@ The ValidMind Academy[^20] is delivered in Revealjs presentation format,[^21] wi
- Training materials use several supplementary style sheets to apply an alternate site theme:
- a. **ValidMind Academy hub:** `training.css`[^24]
+ a. **{{< var validmind.training >}} hub:** `training.css`[^24]
b. **Course registration pages:** `training.css`, `training-nav.css`[^25]
c. **Course slides:** `slides.scss`[^26]
@@ -553,11 +557,11 @@ Try it **live** on the next page. {{< fa hand-point-right >}}
[^17]: [Mermaid charts](https://mermaid.js.org/)
-[^18]: **ValidMind GitHub:** [`_variables.yml`](https://github.com/validmind/documentation/blob/main/site/_variables.yml)
+[^18]: **{{< var vm.product >}} GitHub:** [`_variables.yml`](https://github.com/validmind/documentation/blob/main/site/_variables.yml)
[^19]: [Code samples](/developer/samples-jupyter-notebooks.qmd)
-[^20]: [ValidMind Academy](/training/training.qmd)
+[^20]: [{{< var validmind.training >}}](/training/training.qmd)
[^21]: **Quarto:** [Revealjs](https://quarto.org/docs/presentations/revealjs/)
@@ -565,13 +569,13 @@ Try it **live** on the next page. {{< fa hand-point-right >}}
[^23]: [Course slides](#course-slides)
-[^24]: **ValidMind GitHub:** [training.css](https://github.com/validmind/documentation/blob/main/site/training/assets/training.css)
+[^24]: **{{< var vm.product >}} GitHub:** [training.css](https://github.com/validmind/documentation/blob/main/site/training/assets/training.css)
-[^25]: **ValidMind GitHub:** [training-nav.css](https://github.com/validmind/documentation/blob/main/site/training/assets/training-nav.css)
+[^25]: **{{< var vm.product >}} GitHub:** [training-nav.css](https://github.com/validmind/documentation/blob/main/site/training/assets/training-nav.css)
-[^26]: **ValidMind GitHub:** [slides.scss](https://github.com/validmind/documentation/blob/main/site/training/assets/slides.scss)
+[^26]: **{{< var vm.product >}} GitHub:** [slides.scss](https://github.com/validmind/documentation/blob/main/site/training/assets/slides.scss)
-[^27]: **ValidMind GitHub:** [preview](https://github.com/validmind/documentation/tree/main/site/_extensions/nrichers/preview) extension
+[^27]: **{{< var vm.product >}} GitHub:** [preview](https://github.com/validmind/documentation/tree/main/site/_extensions/nrichers/preview) extension
[^28]: **GitHub:** [Tachyons Extension For Quarto](https://github.com/nareal/tachyons)
diff --git a/site/about/contributing/style-guide/style-guide.qmd b/site/about/contributing/style-guide/style-guide.qmd
index 17c0af72bb..68137964bf 100644
--- a/site/about/contributing/style-guide/style-guide.qmd
+++ b/site/about/contributing/style-guide/style-guide.qmd
@@ -1,4 +1,5 @@
---
+# USING THE VARIABLE IN THE TITLE MESSES UP THE BREADCRUMB
title: "ValidMind style guide"
date: last-modified
listing:
@@ -18,9 +19,9 @@ aliases:
A style guide helps create distinct yet unified communication across all areas of a product experience, from in-app interactions to technical documentation and blog posts.
## Goals
-At ValidMind, we value **transparency and accessibility** — we aim to speak simply and effectively. We also believe in **creating community**, by presenting information in a manner that encourages collaboration and feedback from users old and new.
+At {{< var vm.product >}}, we value **transparency and accessibility** — we aim to speak simply and effectively. We also believe in **creating community**, by presenting information in a manner that encourages collaboration and feedback from users old and new.
-Our processes reflect a **holistic journey** — accommodating the needs of users begins in the design phase, documentation supplements instead of replaces intuitive or engaging and guided user experiences, and publications should help our audience understand value and maximize their potential with ValidMind.
+Our processes reflect a **holistic journey** — accommodating the needs of users begins in the design phase, documentation supplements instead of replaces intuitive or engaging and guided user experiences, and publications should help our audience understand value and maximize their potential with {{< var vm.product >}}.
The following guidelines are meant to reflect these above principles, and ensure that all of our communications adhere to our vision:
@@ -31,7 +32,7 @@ The following guidelines are meant to reflect these above principles, and ensure
Google offers [Technical Writing Courses for Engineers](https://developers.google.com/tech-writing) for free. Go forth and write!
### Additional style guides
-This style guide is meant to help get you familiar with speaking in the ValidMind voice, but not be an exhaustive list of conventions or rules you should be following when writing.
+This style guide is meant to help get you familiar with speaking in the {{< var vm.product >}} voice, but not be an exhaustive list of conventions or rules you should be following when writing.
If it’s specified in our guide, follow those instructions — otherwise, you can check out the guides below for more inspiration:
diff --git a/site/about/contributing/style-guide/voice-and-tone.qmd b/site/about/contributing/style-guide/voice-and-tone.qmd
index 9381e07916..3685cad91b 100644
--- a/site/about/contributing/style-guide/voice-and-tone.qmd
+++ b/site/about/contributing/style-guide/voice-and-tone.qmd
@@ -3,7 +3,7 @@ title: "Voice and tone"
date: last-modified
---
-While we work closely with technology, the ValidMind voice prefers a **human-first approach**.
+While we work closely with technology, the {{< var vm.product >}} voice prefers a **human-first approach**.
When we adapt our tone to fit the audience and context, we always aim to build a relationship and foster understanding with the person we’re trying to reach.
@@ -33,7 +33,7 @@ The quickest way to accomplish clarity is through use of the active voice. Activ
- Try incorporating different mediums (such as visual aids like images, charts, etc.) to help fortify understanding, and to provide the reader respite from walls of text.
## Everybody's welcome
-Engage with your audience in a friendly, open, and encouraging manner. Every reader is here to learn, and at ValidMind we believe that experts are always enthusiastic to share their knowledge.
+Engage with your audience in a friendly, open, and encouraging manner. Every reader is here to learn, and at {{< var vm.product >}} we believe that experts are always enthusiastic to share their knowledge.
### Appeal to humans
Behind every page, there’s a person. In every word, lies an opportunity to win your audience over.
@@ -97,7 +97,7 @@ Keep your audience involved in the process. Engage the reader with questions, an
| Correct | Incorrect |
|------|-----|
-| What if you were able to more easily, more effortlessly discern uncertainty, unleashing the full potential of your model outputs? That’s the power of ValidMind. | ValidMind easily and effortlessly discerns uncertainty, unleashing the full potential of model outputs. |
+| What if you were able to more easily, more effortlessly discern uncertainty, unleashing the full potential of your model outputs? That’s the power of {{< var vm.product >}}. | {{< var vm.product >}} easily and effortlessly discerns uncertainty, unleashing the full potential of model outputs. |
: **Audience engagement** examples {.hover}
## What's next
diff --git a/site/about/contributing/validmind-community.qmd b/site/about/contributing/validmind-community.qmd
index 2b402216ac..151e778b82 100644
--- a/site/about/contributing/validmind-community.qmd
+++ b/site/about/contributing/validmind-community.qmd
@@ -1,34 +1,35 @@
---
-title: "ValidMind community"
+title: "{{< var vm.product >}} community"
date: last-modified
aliases:
- ../validmind-commmunity.html
---
-Work with financial models, in model risk management (MRM), or are simply enthusiastic about artificial intelligence (AI) and machine learning and how these tools are actively shaping our futures within the finance industry and beyond? Congratulations — you're already part of the ValidMind community! Come learn and play with us.
+Work with financial models, in model risk management (MRM), or are simply enthusiastic about artificial intelligence (AI) and machine learning and how these tools are actively shaping our futures within the finance industry and beyond? Congratulations — you're already part of the {{< var vm.product >}} community! Come learn and play with us.
-## Interact with ValidMind
+## Interact with {{< var vm.product >}}
- **[Join our Slack community](join-community.qmd){target="_blank"}** — Be part of building a space for AI risk practitioners and those looking to break into the industry. Get technical support, share ideas, chat about model risk, AI, large language models, and much more!
-- **[Sign up for our newsletter](https://validmind.com/community/)** — Receive exciting updates from ValidMind and curated material surrounding AI risk management.
-- Keep up with the latest news in AI and MRM, as well as announcements and original content from ValidMind **[on our blog](https://validmind.com/blog/)**.
-- Want to connect with other inquiring minds? **[Find out what events ValidMind is hosting and attending](https://validmind.com/events/)** — we'd be delighted to see you!
+- **[Sign up for our newsletter](https://validmind.com/community/)** — Receive exciting updates from {{< var vm.product >}} and curated material surrounding AI risk management.
+- Keep up with the latest news in AI and MRM, as well as announcements and original content from {{< var vm.product >}} **[on our blog](https://validmind.com/blog/)**.
+- Want to connect with other inquiring minds? **[Find out what events {{< var vm.product >}} is hosting and attending](https://validmind.com/events/)** — we'd be delighted to see you!
-## Build with ValidMind
+## Build with {{< var vm.product >}}
-::: {.callout title="ValidMind style guide"}
-The first step towards producing material for ValidMind is to familarize yourself with our [style guide](style-guide/style-guide.qmd).
+::: {.callout}
+## {{< var vm.product >}} style guide
+The first step towards producing material for {{< var vm.product >}} is to familarize yourself with our [style guide](style-guide/style-guide.qmd).
Learn about our company vision, get to know our brand's voice and preferred formatting conventions, and find additional resources to strengthen your writing skills.
:::
-Here at ValidMind, we embrace an [open source](https://en.wikipedia.org/wiki/Open_source) ideology. This means that we think expertise is inclusive, and is also open to evolving — there's always an opportunity to learn from each other, and help each other improve.
+Here at {{< var vm.product >}}, we embrace an [open source](https://en.wikipedia.org/wiki/Open_source) ideology. This means that we think expertise is inclusive, and is also open to evolving — there's always an opportunity to learn from each other, and help each other improve.
-As a member of the ValidMind community, we invite you to be part of our process. From our public documentation to the code behind our [{{< var vm.developer >}}](/developer/get-started-developer-framework.qmd), we've exposed the wiring for inspection in hopes that great minds think differently and dare to spark change.
+As a member of the {{< var vm.product >}} community, we invite you to be part of our process. From our public documentation to the code behind our [{{< var vm.developer >}}](/developer/get-started-validmind-library.qmd), we've exposed the wiring for inspection in hopes that great minds think differently and dare to spark change.
### Contribution ideas
-Please note that all community contributions are subject to review by the ValidMind team. See our [software license agreement](/about/fine-print/license-agreement.qmd) for more details.
+Please note that all community contributions are subject to review by the {{< var vm.product >}} team. See our [software license agreement](/about/fine-print/license-agreement.qmd) for more details.
-- **[Code samples](/developer/samples-jupyter-notebooks.qmd)** — Have a Jupyter Notebook that works perfectly with ValidMind, or covers a sample use case not already provided? Send it to us!
+- **[Code samples](/developer/samples-jupyter-notebooks.qmd)** — Have a Jupyter Notebook that works perfectly with {{< var vm.product >}}, or covers a sample use case not already provided? Send it to us!
- **[{{< var validmind.developer >}}](https://github.com/validmind/developer-framework/)** — Live by the {{< var vm.developer >}}, and have an idea that will streamline the experience for others? Let us know!
- **[Product documentation](https://github.com/validmind/documentation)** — Spot a typo, or have identified a gap in instruction you think would be beneficial for the community to fill? Submit an edit!
diff --git a/site/about/deployment/deployment-options.qmd b/site/about/deployment/deployment-options.qmd
index 0d2cfbd148..f79d7f727a 100644
--- a/site/about/deployment/deployment-options.qmd
+++ b/site/about/deployment/deployment-options.qmd
@@ -28,14 +28,13 @@ We offer two deployment models:
## Architecture overview
-
-{fig-alt="An image showing the ValidMind platform architecture"}
+{fig-alt="An image showing the ValidMind architecture"}
In your own environment, model developers can continue to run models using your existing tools for data science and model development, such as Python, Jupyter Notebooks, and R, accessing data from sources such as Google Cloud Storage, Amazon S3, and Snowflake.
-These models are then integrated with the {{< var validmind.developer >}}, which communicates with {{< var vm.product >}} via our API.
+These models are then integrated with the {{< var validmind.developer >}}, which communicates with the {{< var validmind.platform >}} via our {{< var validmind.api >}}.
-The ValidMind Platform provides:
+The {{< var validmind.platform >}} provides:
- **Model inventory** — Centralized tracking and organization of models, accessible by developers, validators, and executives.
@@ -43,7 +42,7 @@ The ValidMind Platform provides:
- **Template management** — Allows for easy creation, customization, and reuse of documentation templates.
-- **ValidMind dashboard** — A user-friendly interface providing insights, status updates, and governance reporting for model risk.
+- **{{< var vm.product >}} dashboard** — A user-friendly interface providing insights, status updates, and governance reporting for model risk.
## Security & data privacy
diff --git a/site/about/deployment/multi-tenant-cloud.qmd b/site/about/deployment/multi-tenant-cloud.qmd
index 581e34a1e0..b0aa1210fb 100644
--- a/site/about/deployment/multi-tenant-cloud.qmd
+++ b/site/about/deployment/multi-tenant-cloud.qmd
@@ -12,7 +12,7 @@ listing:
- path: https://validmind.com/contact/
image: /assets/img/hero-platform.png
title: "Request a demo"
- description: "Find out which ValidMind deployment is right for you by getting in touch."
+ description: "Find out which {{< var vm.product >}} deployment is right for you by getting in touch."
author: validmind.com
---
@@ -31,7 +31,7 @@ Optional private link connections offer secure integration with on-premise netwo
- **Cost-efficiency** — Shared infrastructure reduces the overall cost of ownership.
- **Scalability** — Resources scale dynamically based on demand.
- **Streamlined updates** — Centralized software updates provide simultaneous benefits to all tenants.
-- **Security** — ValidMind ensures security with data isolation, encryption, and role-based access control.
+- **Security** — {{< var vm.product >}} ensures security with data isolation, encryption, and role-based access control.
## Security
@@ -48,8 +48,3 @@ Optional private link connections offer secure integration with on-premise netwo
:::{#request-demo}
:::
-
-
diff --git a/site/about/deployment/virtual-private-validmind.qmd b/site/about/deployment/virtual-private-validmind.qmd
index 7bb25b1454..617f16bbcb 100644
--- a/site/about/deployment/virtual-private-validmind.qmd
+++ b/site/about/deployment/virtual-private-validmind.qmd
@@ -1,5 +1,6 @@
---
-title: "{{< var validmind.vpv >}} (VPV)"
+# USING THE VARIABLE IN THE TITLE MESSES UP THE BREADCRUMB
+title: "Virtual Private ValidMind (VPV)"
date: last-modified
filters:
- tachyons
@@ -12,7 +13,7 @@ listing:
- path: https://validmind.com/contact/
image: /assets/img/hero-platform.png
title: "Request a demo"
- description: "Find out which ValidMind deployment is right for you by getting in touch."
+ description: "Find out which {{< var vm.product >}} deployment is right for you by getting in touch."
author: validmind.com
---
@@ -40,8 +41,3 @@ This option is ideal for high-compliance industries and also supports private li
:::{#request-demo}
:::
-
-
diff --git a/site/about/fine-print/data-privacy-policy.qmd b/site/about/fine-print/data-privacy-policy.qmd
index d2054c2fdc..14db974d68 100644
--- a/site/about/fine-print/data-privacy-policy.qmd
+++ b/site/about/fine-print/data-privacy-policy.qmd
@@ -1,55 +1,56 @@
---
title: "Data privacy policy"
-keywords: "data privacy, ai risk, model risk management, ValidMind"
+keywords: "data privacy, ai risk, model risk management, {{< var vm.product >}}"
date: last-modified
aliases:
- ../data-privacy-policy.html
- ../guide/data-privacy-policy.html
---
-This page outlines ValidMind's data privacy policy, explaining how we protect your personal information. Our goal is to provide transparency about our data handling practices and to demonstrate our commitment to protecting your privacy and data security.
+This page outlines {{< var vm.product >}}'s data privacy policy, explaining how we protect your personal information. Our goal is to provide transparency about our data handling practices and to demonstrate our commitment to protecting your privacy and data security.
-## What is ValidMind's data privacy policy?
+## What is {{< var vm.product >}}'s data privacy policy?
The key points of our data privacy policy include:
- **No personal identifiable information in documentation** — When the {{< var validmind.developer >}} generates documentation, it ensures that no personally identifiable information (PII) is included. This practice is a critical part of our commitment to protecting your privacy and maintaining the confidentiality of your data.
-- **No storage of customer data** — ValidMind does not retain any customer datasets or models. This policy is in place in order to protect your data privacy and security. By not storing this information, ValidMind minimizes the risk of unauthorized access or data breaches.
+- **No storage of customer data** — {{< var vm.product >}} does not retain any customer datasets or models. This policy is in place in order to protect your data privacy and security. By not storing this information, {{< var vm.product >}} minimizes the risk of unauthorized access or data breaches.
-We believe it is important for users of ValidMind's products to understand these practices as they reflect our dedication to data security and privacy.
+We believe it is important for users of {{< var vm.product >}}'s products to understand these practices as they reflect our dedication to data security and privacy.
-::: {.callout-important title="ValidMind does NOT:"}
+::: {.callout-important}
+## {{< var vm.product >}} does NOT:
- Include any personal identifiable information (PII) when generating documentation reports.
- Store any customer datasets or models.
:::
## Do you comply with the SOC 2 security standard?
-Service Organization Control 2 (SOC 2) is a type of audit report that evaluates the security and privacy controls of a service organization, such as a cloud vendor like ValidMind. The report provides assurance to customers that an organization has implemented effective security and privacy controls to protect sensitive data.
+Service Organization Control 2 (SOC 2) is a type of audit report that evaluates the security and privacy controls of a service organization, such as a cloud vendor like {{< var vm.product >}}. The report provides assurance to customers that an organization has implemented effective security and privacy controls to protect sensitive data.
-ValidMind's security and privacy controls are designed to align with the stringent requirements of the SOC 2 standard. This compliance means that ValidMind has established and consistently maintains a set of security measures and protocols that meet or exceed the benchmark set by SOC 2. We also regularly review and update these controls to ensure that they stay current with evolving security threats and regulatory requirements.
+{{< var vm.product >}}'s security and privacy controls are designed to align with the stringent requirements of the SOC 2 standard. This compliance means that {{< var vm.product >}} has established and consistently maintains a set of security measures and protocols that meet or exceed the benchmark set by SOC 2. We also regularly review and update these controls to ensure that they stay current with evolving security threats and regulatory requirements.
## Do you offer additional data privacy options?
-ValidMind's platform is a secure, multi-tenant solution that can be hosted on Amazon Web Services (AWS), Microsoft Azure Cloud (Azure), or Google Cloud Platform (GCP). For organizations that require a stricter trust model and the highest level of security, such as financial services organizations handling highly sensitive data, ValidMind also offers a _{{< var validmind.vpv >}} (VPV)_ option to host our solution in a dedicated single-tenant cloud instance.
+The {{< var validmind.platform >}} is a secure, multi-tenant solution that can be hosted on Amazon Web Services (AWS), Microsoft Azure Cloud (Azure), or Google Cloud Platform (GCP). For organizations that require a stricter trust model and the highest level of security, such as financial services organizations handling highly sensitive data, {{< var vm.product >}} also offers a _{{< var validmind.vpv >}} (VPV)_ option to host our solution in a dedicated single-tenant cloud instance.
-The {{< var validmind.vpv >}} option provides all the features and services of other editions of our products, but hosted within a separate environment that is isolated from other ValidMind accounts. VPV accounts do not share resources with non-VPV accounts.
+The {{< var validmind.vpv >}} option provides all the features and services of other editions of our products, but hosted within a separate environment that is isolated from other {{< var vm.product >}} accounts. VPV accounts do not share resources with non-VPV accounts.
-Access to any edition is available through AWS PrivateLink, Azure Private Link, or GCP Private Service Connect, all of which provide private connectivity between ValidMind and your on-premises network without exposing your traffic to the public internet.
+Access to any edition is available through AWS PrivateLink, Azure Private Link, or GCP Private Service Connect, all of which provide private connectivity between {{< var vm.product >}} and your on-premises network without exposing your traffic to the public internet.
## What model artifacts are imported into documentation?
-When you generate documentation or run tests, ValidMind imports the following artifacts into the documentation via our API endpoint integration:
+When you generate documentation or run tests, {{< var vm.product >}} imports the following artifacts into the documentation via our {{< var validmind.api >}} endpoint integration:
-{width=80% fig-alt="A representation of artifacts imported into the documentation via our API"}
+{width=80% fig-alt="A representation of artifacts imported into the documentation via our Python API"}
-- Metadata about datasets and models, used to look up programmatic documentation content, such as the stored definition for _common logistic regression limitations_ when a logistic regression model has been passed to the ValidMind test suite to be run.
+- Metadata about datasets and models, used to look up programmatic documentation content, such as the stored definition for _common logistic regression limitations_ when a logistic regression model has been passed to the {{< var vm.product >}} test suite to be run.
- Quality and performance metrics collected from datasets and models.
- Output from tests and test suites that have been run.
- Images, plots, visuals that were generated as part of extracting metrics and running tests.
-The {{< var validmind.developer >}} does not send any personally identifiable information (PII) through our API.
+The {{< var validmind.developer >}} does not send any personally identifiable information (PII) through our {{< var validmind.api >}}.
*
zs{EirHxZePsMt1wx3pUcZLB&JE?Hr6>q$b}w`{}ad`$wD;?^$UkW9kBMaM2_-^xQU
z;f-AQRSCHjXYABd&Q1aAlAF7@cPVXLf+YDxR^XLNPepR}$myG-~I-!3B39!q@&|(Qxq`J=d zzQO_gch4eW;#lqz&?5m3E(BvX(+WIxl&96iw-gfGM5o|!DN164wRsGI5|zS{w755L zrnU3i&rrZejWUo2<=QP8KJnvwD(=vhEBrVsWbHkx!u@FE`&i7oI1it&Y z`G@t16vCBnc4j5Ura6|3-j0teSC^5qSZx{ Uj z0~^!d8JrlS_`%40D3uTihyQ5_7-Zqd#8HVd+P|zJDvCr9DN^~@kGx8&4i-AEg=qOZ zRb>nSpWsIBcr{R~2ODfBknwqOXLXeh!B|r(izwwk$df=W0sR=}c|Tt$nvQV{|1AZ$ zt3}I{llhX!PB=HIqMk_e8jpbf$ag$+#<3FjEI(pWvka}_9Se?o*2gsqQ6UL6b3Nz1 zHZ&hV!9gl;@By8J;9msaBI($--F$*4y9&;+#8GZP+ !U6bDfo5_bt&B)8L|O^|8=y0u2a;{-HXz94 zA!w*)a0#eekkfi2fg|Jk2FwuDZafAT`Qc*Vo=|i2d0TLF7Q|7bmRnydP Wc4e5({jZ1* zkLs9TC(-qLu*17PKOvOEpaa~x1W~mmrB&q&cL2X;hG5-=h4CWK*9cBX7lP2vY-42_ z>BW+l*8b=?`4sR2_JflpNpex0$ldG0Vl|GSY`tCgN*?Ill;jbLE Nxv`^L4($dHF)X?eX_06}BVB48vE%L^4iwQN=ucn(0Y51tx_2KVQO$Qp!p z^X|#GAIw7cLk>gYP@PUa$TRq9F6iGmn4}OplT|g;st@uuwn^Ew67be{fs94#Kohw| z@vU_+VuKXEfd_ lEw!^Ab2i=%uftE4*gv!T2j z&Dq39LR6GucjYh(0<)0Wv?J<7;PK2a01YRU1_ggEWLO1M6lp(z?6CAu7kw?L+Vsv) zNCQJ-wZ}ddxzLx*+ZY0R5*0Nub_C-tiE2G*>9>i1G6_`pC+;4%Z&Q61!*7ejqa^v? z)`a?ngBF|&r1v{mi1%&UD&Jpj2)wV=f!$sr5d;p9u6Ql`gK6CW7l-USQ|G#Lm&%(l zb_axK3P)7|K!yS*IMRQlvge1}YfyUR!8N^2{5E6wj@o``-h{L|XmRr5%z8_PZXXb| z27sXlO=nfJ324>Jc#TY8*#|c=grtfq)qkxo)&*ms-U*FCD8aP*6*sN#;e`9l#*PVU zo30EpS2qAO^&PV`=SwsPo=FrBwjtw9Sr3Kr`?}i^;1iBp!hwn?toO@1j=iC%DjO;M zlLq(J4*%`~s7N50MM00)bQR!W5yks83uDkOgQTDn#KdE{j2pm&Ob1>)adf657Znv_ zRY5wV6+sR6d5fk1p8@{yZxBcb3C)PQiPRhc-ty{yiSP$--?%}ip F#NvEOr$(uCSu{W!Vt7WXOqssI2wX1vO+~DXl@`$#U7 Dl v6L>qTBx9@^M--E0W@(a zSZ? 9>10w%r)VifyyIte zueC)ERxXc1G5HRna#w687|HNk-cTt<9t_5~IH3~RTBWfs9C>`FhIJX)_rR5kc=_6* z{^@idRuNt{# BPxQ|EtY{)q@(o1J!;zZ?Uy80~FX1cvYS?qC2mnEf!niT^KY-qXh>)_k{ ztLoJO&G6xqY!lqrCmy<8I6c$+uj3~F3I88SOz>?Cly)u%0rNg0a%DJXl{L~lMG# z<&B15MinHlv0g>49xgu(4%dJ#AGi_u?nTW26VpqmFi5Cp!>8*v{W`a$^-awYtEFkW zc2RDr8SsSJ(;#tfMY8*DNM8=OEhsnUYQp8Qk7J+(z|0DSXT wWw1u>+V=+$T852xG{bExrE3MLmDre@K^aB9Se#5) zu*TuK>G1qRZ(44kCbUDb9cw7puA7Y{9 _O%hKbc**6jiks9v<^AKe$HcE?zX?E+K}abB37_f()~2#)hS{LhJrj_lXRsOAR| zXnAQ~+(Q&cM9IAxR6rJR&-L@tJLnv1II9kq({Fp?*)$bQpyijKRP2CJGDYV+H|}D0 zbCa(u-5h4;zBeRQ1m{nWR>%|Mx&Cs#o>N-&v&F>4OW>zD)K!XPh7jMCqG||2!1h}d zced288)Oz{>&Xm(l9LN`rKYXC_x;^MDS5ULmr)^A>Y8006igmsm`}E&(s%s!b@SLY zcO_4iIH~S0&=Y7C6Sehsok(wv8FyX8?oV#Xm^c;q}*7i!S5H@*^$BVAgPFlul9T+UUL=20K8J zb^dg27fW;uqjM<-!JAl)LqDGRJE|dCYAUkJ&iO(hk8>UCPsY8BmQ5ICVs3_2sb5H6 z63nbtC*emn?3wk^e =wx3{n)vMHJkwUEM(19*>iGdoCx=RAGt!dpleGyl=g*Gb zF)*Mjs^QwZ;TT?F4sUOgXmwSObvBon0U0mAi1q8lCwk|;?P(9PJo8iQVdzbRt0znG z&+1NL6BWOMr1-Y5!ugvE2Z>r +hX&>7`=={@G#QQi z9pF@fJRWCu7;p4e4D3bIe+DcMOaces(mkP>L9GO-H36}~*TzsIKpVb3qf1ZW7)@r# zZd`8Djpa0!C>NxUv3b@5H*C+GMVW-ofB`~&q2qb?Rf5fDGmdKD!T{;Q$mOGFBb2QH zoIydoF7qa1Hh3b^#qEr(0xyjUl0r*oL#rYAq<^TCUnvRjNy_z?w0Rc?e%CSX;wV;_ z=$1hlDC1qY2IhftJf6;Ya|D7HE@mK+NHDrpf53<-E}234T8zEY&3W0q%j2KOOeG9% zQgndM=MRXV&X}v&4)0H9R)mTjQ!bM8sJRm;#-`n|P8 o=2f%D1SH&xed>l@Tbhd1DWMnMX@0wQ+odU8(V zK
YuW|b{p0IzMLMNsMy z4^A8g@2efU3`d9_l)-U7>FKI`rU;ZbNlt*&jGHU9p2I!^5($QH=geSNwU)Z=1aFXt zRX*dN^~}_hJ*Z5atn}&;*xM31V_XenMcgVBt^;o!JVr3R7fMq^V?)zzwC;uK{VweV z=FD54ak~U9)Q2u0Dr&RWKwdSm$EAwGcV>d?^-!1Z7h&-(KcwOU)RJ?u;iXpyyYA(& z_~|le-ihr5Y3_92&UPLvbWqGcmClLkYyl|Y`Xn4E-@w4>{6=bm&bC+F^UGBvh!Y*$ z6vp?SmA2b*IEh5{pXU>UCPK!gt=8V%^CG-o>llNBG1L}XeU--{S9A3MOfmd2tZ3`5 z&@?!Aq2A?5xsejO0ks0%_*GyQ%@F~|h8dh=Agj1ly1C%XIF}5tjk!R!WrI>vInMlT zn7MNV^9%>2V??rqoxl;THPKq_`EzgYK9WZ~P#nq0eFy6I76AV~?LEdgDoT{xNFIIl z@N{~S=cAlj^=r)VE9q(@eo!m6U}}ySbgiGXkd(hlihq>aC*kFO*Ire2+0MevQO6^H zOF8#F#?Rq_k$A?m>mn}zyi_K~%?8LaKcR$X@7n*fncM`?^RPbMAqUsCQX-W22l2(r z8-5ca{=^*juASZ26cb>Ah#7_P{xTl_K62dL!K|z-oY`A~`_c~Sr%*@Gjoi4Xv~R1# z86Sl18=9PWBX53vnF$Hf*r~Jfj>z8kGW |%;96B7X|lYYQNU(U;grW1%CaeHPsyZB@i7q^HN{^1IO9N zknD*MikXOU|E8|Q{~qA~cFRBC9Cz~=+^Bi8^z8Zly}F1#lmU%%ls>4j#Ok9dSbjaS z&dq^*v=dU QuZNDW~dv?J_l zvBbWbDcBX^CU*o3AMPD4caf5Vt-^D;bU4&^vv}9p;}(`h%q0$ZU=pu^(l8BZ5~R18 zI+y^b5Q`_|1>b}g0TRtLO)seU2Cee$3JeFUP>*H-qd*QB5Xio(VYd@CzlN;c4w`Xx zT2-Dgf-aKpfM>7J3K0GQu1}=>W;PPG&E*H?iNtcC&gud*WNKTv2(Z}syvk^Hu!4fm z@k|cVUbhv{l72yT@ktl3`ynntZfFV #LH82vs4pp^WETB~F018b*)1xd9B33LNjWz2n<_j *zjp_v z>gR)a&=m!3K&Bk}5+J-zXrzp)i{{HUZlva!0k8LIzHNk4LfrF=&x6=Iw^PBOjkH-V zOlv6FT#(s-5)w7jU6AfuG1c 1fg)U12G@{bl4PVI*6yC;n6!F zB?`=O3h%?~a?^iFL*jCvXF>1?Pee@28NT?HfTTUU>t|dOXGFTi9||ai 04=;1~>KI3+NB<>+UakdazAZv3c;1JtwDur<1 zYlGe#nguxXd?r@Yy7idip7(qB;evNQ7J9n*3$5H#$yCwteepW2@rC0EDbFl)NbZDV za<%xx--HPw?+DxHUvqph_n|Yof^!xz$_+hO#=5k{49%4OSd5B9m^c%Ss(MW5%L!=( z_f$gJw8?CQp;`hBscX5Tb0WZccHk?i;3={;AOaLs!x9D1pSfmc+`06oWF;CWXe~Y! zX_{`;6+XTIIAG+Q(S>chv_=cbq_|fIL>Z46?7S204@n9%+1ttqA;S>kdt$ZAYa>BO zs 4x$i!34jgq;ny zoqE8?0>@4vonf^q5`gL|oDv7wku=#-uw~qi4lgX8G!SI5VFhK;yFi7 my8HAD z=18jzX1(VK)JJ6R5i>D;TUcn-$}0B!;%;KZK jf4? zeG#K<49Aif(5A(mK4R8a(gSrg)Gz4e)ZoU-FzjQe*6ybJ;}p+p28~zTQGfdVa9vGJ zPBmLm4e+{`?XO{oe#P|W;NUQWO`lXF%7nBCv;`qK(t5gXalyBu$ eO+(CSAqJ|ZH0BP>E zK^QfF3d46QEcIgayW2o&B&Ai}(?qV4=)Q+$d_8pkEGU{aEO$VQPTKN{3F!_1eX2SO z?Pt$w!G^7tQx9Cw_=q8cb{7*p;NeMFWxO*QD@@>wGxO%@{#MSx+87-8AwBl>=zZxN zlFr0EJz`wMs*5yn)2;pX4)!3@0J96Q+Oe6Up=UB?P`o9fs*py`!4)`%@rMn_b9(H$ zSRMR5;{nVMwPfao&ee! J_cGSf}{0RTY`Hm zKt2Nb&LG~_$lCDqKgu+~A_l;lm8Z_%6fJac=X5-0X$JUvG+OARM+9mE?(puPY-B*G z-XQnkc}@Zrjth^+(A 82NqkR8)qoqj{H3Ws(aBCq%4{}ZqiiK9K1`B0s# z?}g`sBSg|P41eZ3A{qyCzJ;=bK)odL^{ZSC=mi}P{+W8jM4v|&PB{kPkBw&JdvLXY zvFjF``io(9ydzxhlIq?I%8yQ*xeGLRVbL-|S3oC-I%sARG5Hc|Bhv0{=&v647f%sB z!&gkljVChKbS_%|C7VKri|}G8xng+>YJ+%Z3c6z4(+q E_3RHj0FeVZ4t-V4>G=#B^0;Z897lSIGPIJyBR__=RgV@M`O zMD9U)$?#^p!n+7s!o5mHk1Hh5*z4u<#eLbWNZg&Hsr>p+p_k$rzVY+EkHvDE0gU(} zqgNfuTK-@c8E#fml6V2xS|_Pd^sSxP4;$_QuL=oyxBG5r+J4P7tCr*V60CT<-R7%^ z)Yt>EBXOst7|KZqjsylq4-WM!v*+MTT@eYdYdmUs-Phb}{F{4_)AO|6>fX)DsjT7J zyJ{NOQhNF}y5l3-Mr!SC>pB gV^Rmpid) zHF7}J?6wN}mW_Z{d}}lIrKT3;D^M=`rq8OCu7`9xFV;5VF0X#Au3n@(T)586hor3p zT5(B975N{_gkSlcN!}Y W)WhX$c%m_+40hTqJ4b6yCs-p5@i??>HZIjh?xu%>$jajb zS;r8fQSpn9ki`mcrfZ$tsF(*XcAcc5f7qYyeTDxE_2KUk+U91j2#{U&EBDsZ1I<78 z1s;jNr1q~Q;t~=*m$ts_wVMPWBoOW>`RewejI|Q-&XEj&cDm?V-*{zJjZu|4p^z^zD4CvZgzq^ql!aXIw_fA8iBCQu7^#uderKE@-P qos?ZXVvTnwvwj6qXHbZS rL`oE3I0-U-LrH&wd>qQ`m6d5bu+(V65QVcvhE^v|4@Dd_> Qjr}h{7E=xN#uOXb>EP$j30t;692Jb1{&el3Bte5ze_9w%sJ+-R zJKDBYeE}q4J$*~ny4y`|f(>5K4pbDhA{;xGeUV$lkFYY@nCpdiic1ZE8Cs>Z{+X2S z8M3E_aB%vK*ay7dF9iBT6)2SAd^-Ij9lnSj12!g>_uad9581pqeAYn(_+(X5@L ?`TevQgs{`e|)wCkRRv-ox9RuR**ljNpjp)CO zb7K+DeypR^hK}vG8(GkZYhoa-I>2>_#t~Qs@oWxp6`R@;7O6;e6Hx0l;=aOzlQK{d zlWgqT-Vldz@CqzS9O40r{hNkLD$cl aIkZRs5y9qs0P50wKeBb@{Y zO Y&pFEeLUZ zRl>q2FL7`T0U;5BC ;*Fr0Ys{>_cc&PPIsUhVZ65@4&(FnVC?a0i`*;tFCiOjRQ0o0(vOP z3jZ^v6W=qy{2dBy@bm7$z*U0;h<>(o$MxoUsu&9>J#uvsd}=IQijI}FwlDg{*&bo1 zaqc^jPsR{#NJurqgsIRag1!A(7t#|*g=Yc|czI0mMW!#8in@8D9#45okTC5_syxb% zh^?|SdKF;m?|c2<36Ri=d;3<}8AEJmtx|ZXQh58_9Ye!IX_HWS&&57AuTSjq9iOx> z-H74j bs&+EizO{6ZBh?n+L~m$n?6uF?Mp>wuV`AUOYE#~H*R+k<6Td0nhf z#lO?_Sf1x?bx(p#ckZmp7Z-m-!n4iCMNaS+07vRPKp5ZG% ;d+h!d(^zRZXyH*x5V|O?HEb=BQkvM&;G#i#T$CH1oXBz7ax6xCagHOZf1wwKN zGWS48%;W*%C(boI9?Ay|Yd=k>y#EfAS1@D;T^X0^1y#^!v~q~&2H-)oCzI3DxqFY2 zuK2NB|3x@a1#-ZyOsvtY_1p6zgh(vHz73Xo~;4!{_MZW`>G;9r)Thwn#x3LHLrAg|D>! h<}16kG&B^B)uZ+iCM} zkb(Qpu#}?vDnQ^sYIJAEnC94D&ds0b(ta3&26=RfKKIT}jW=)JSVb#&dH>mQ=r1SB z?x)Z`11$E*l6mH-|NW$o6yxIKKk^Fbx^rbI?%A;-Xarv2u;Aj^FaE)mjdSRw2y( gp!HWvI_|p==y-3n;j{cjQI%6fr03 zif{0rY9kvBFER6Y_d@!=|L*ab2m*s#&BJ$0|GkDhixSM1L~yL{f6;I6Qy^>X0S>2D zsZ?i}GpPnDmPD6RQZT#P54Cq!Bk#hMg(v!d?GL>p*wGwRXz{BKN=Xv?Mn?I1Sxo$D zE$V+h!T!ww&*x4Dl|1h@*;sEQlq?mb%uGxPSy@f(5_Er-_Wxs>&>$ZX^lY^7_n-U6 zm;GEPwC;fW6ZFgJ9o_d&M5vG5sb?Z_*)#nTrDf2nMRG^Z^6=ib;@czVkv#gr-WT0P z?j0qnje4%d^SS4Le)T~RjuU MpT 1-0-fg!3 zF- !fdcUyg|%Cxxia!=9c5sWZr2EBL9iS`Bf)8X!i@N8Mq&$R3Pss*v|y_Y&ZT`F=u zaESv_-Ms@rg#_Oq8{_>9?4Ea=w)23>Q`v3nSjFVsLt>uZPdR_vN?4~X@f>Ke{+8$M z`J6q|pw|K%5re Z$+hoE)LeL1NYV^ewA>|D>$ym<>z1t=0oL zclF7EZ2!3?p3rAPH<`hB&QGp4ZiKw^`*m!<@|HrVz-K!`BPaH)Ne|JZEq!yIyx1q@ zbPZh(a3vq(IK6)}{2Bzko5(g-HD~*uRCGhE$fsrB1edR273N<^YENcSk(um+j-bMT ztf c#y_>J2j_RMCAKkWdXiEp+4jOSSO#8SoI> zjcc>shw%R27|7Rifk8p%fK2&nb*UTs=eqqlzW Y9rE~;9;`Ze;qe_dq_jEWLy z3Da}^xryK;m+x4pMxzgLv3u 4eE z=HY1_bUs#G$PYjEdBKbSBze~ zaoN~ESHp>5BF;1si$gNN`G_9L*H(r`gi`hB`{NF#!&K*Q|LTJ+lKgX #_`Q%dNv;l?*8}6oSl>DFJ3&IqUQc{RYe~ykaQ_XN9s>Xb8|Qy1IE#5i zj4ty>=?fwY$vmk@O^!VFpqexE(h?n~uaSq*f4>(onmIwQs`k}Ky_C?Rh%5A0D8?tj zIDWS2`qF< ^0`Pi}&-hnhd7g&eGWmyS2BU)re5xyPAd9DbG==#6;R$;a$X_S*-m5 zS?YzQ$ gr&*1e`MJdn{S7fSj0zPwF~rYHu@p& z<=VQnZZ(Oe=b{+%BEPAbc2=Os*C@lpPVvTi@NKK%JKlNkW$w3fNw*o1PnSk>_2qGz znH4iHZ7=$FX=km3-*yXBU}q(+QPQ3s~aLk*V*LFex4;HgQ^cp3J7b@R*PmC2OwO z$Li) )r zj5}5~x~8vF+ZXRv+NpeMiH!BRtTvH%b2jhtt4Z}{hMri9;LysxfQf?UwbJN29n)mo zF1q?fsqLfox0bI12BYdR_qw+Vi9SbJ8cf8)GP-B+IObckX`M<@Pnl~4T (o?3iTZ?fyBvIwQft>0D*rt{ZrzT^^6X<9aLnQP{nJY2-8CQP@5%{3nVGBG*v zDz}bvDKU{<0#Wouft-%}JLlUoHk((19+iGzSax${OAUBK-5ZK+R2!P}Y%@+~I41w~ zR@kky*o7s*L0t#gS%U`Jzg>*5JG-x>;@0B%vdrhxPO4FymQB!%HaT}Gs5UTbr_qR& zZpWoKKW&s^>y#;v&(c?MySSjsrQ wROqcf0kGvAy`pbTA*Z*TU=)iD!83mdSLZcM&
_7kDbWPEh1+pXDjY1n7p7dLXq$i}(kb7(Z2H!qqg{Pr4^60! zwT$Wq<&u#%M7M^`OdIKJ;j#(tP>rt*#B443C}hvnDc!Hs+NeMN`f12~0YNrZ;C;;2 zW|XubHh}8m#PyRGNHE{9^`mA(le%g#uH1d@v?eb>9q_&~>rl3F=*yeFt|Cp-jhMbk zm7J%T73p>!2tAe4cvCJVuT*#3E$t{7&q|o&XClENN;4NrHeOR*fg_c=JXKyz0;3f~ zf 8LqYzt}(G&Oax! zi1aaI{GgJO=!?3X4DMy_Lp!z&sKTWJubcJP4{2z`t{Y3`PLqw@KXgexdu?on*o(1o zrUieRYoWBr{`zcy>pACqnMQHqcno7Wq`YGxDgSQtRTeVU8cfaYwWsYSglQrX4e{e- zat6)`2Tn0(D`vc3ebe=vjm`8Jn+hW@%EDxGl-cgS7|O!6AH^Ki*jSNPj3XaQSG!tj z5Gi5f#H=!(Yk#dP-e5Z^=Q~BCW3*3Rk=lAB|7Y#~i|L}3ex)nH`BS5jPM>+Erawlv z63Bfp&uG0J@xHWBFmeWK;?)LCRF=Z=yu|G<^tJcJnS@NqX}FsINzz3=9=W3_+Wz0^ zdcb1{KN)BSfARq~z>9BTFZmW1%5~^T8ym(?sW*#flPf)wq1qYxKoMIh=Ja|!l|fy) z@ylag*B^qBPA#M2sCqXtxwhmDqUaKZ>n^rDcw5ixyRu`&z6rC%q>g$KTBJN9&UTy4 zr;*Z1|3rHvArMKHmkg~_j?l)qzZVM6d)2iz&=f*=HveUWNz-|v)1;lcKdx{`+lM(6 z zjMP;>dzy7o)V73BK)Kic_7=;#R=uaitM?NJDo7HyJ4d%Z_`2OoCQ@glzIus#JXilq z7{&QzH`mrao)N5`^~tw`6pxo%^VBJEghOZQd9ID{oWC~1W6xQ_&M*3vQXx3x@MfbG z+v`XEd8+D^&cY|{RUeJ%io|SZg>!Sat)1h##e!v?>2$-TjP&t8tB*DvNw$@P^Q-j@ zeyzugM}ot`DjTBG;U%cw+9RIa3HpFvf7yVhlu8w!$D>%^&Ne#5wBwM8 r-{E?YxVZEs_ z sP;;#m2@PcaW2b(9vLUtel;Rs@qW!);fOPJ=t<* zJD!qAPFy%HLulLZC~k148A^zI_^a;}-ttTRC9e;M6m2uw2|9-yblhqeRm-l+DHa_P zCyp_~mL-**7Y`AoRF>>+TDR<5>3-d0Q%~OXW99C+>Ett9Q{9ov%!9;#hR=`KJ|j2y zT^*%LZ-QtFshG7eYEQMy-6&HiR_mCr@NrQ1>P*8B$fsXCKcO9K9>`VMJ!Ua!Iukh4 zS=+S!`LJEg<=2g)2jo_Z$7cs^0=e1hw-?^K{@` -e` zYBx2CEB4wTYX+~Jerg;0OOj|l%`CiL`KB}@esfc`qb{M}rR{y&)(M<-uNEz(ngk+g z ({YS$+GQR_ zD>j(kn1Z}wdKaK9JT4LN4r1MROc&NOtz |*5w(w`iuA=FQ^nliD7TUgJj~g1|ojyG}gg@+J6wqM4QXp~Tu(=7bNlIWL zGbLA@(rSvNABNa^x%GuF*=?Ma1C#XyGz<<>0xMiOUz4gSgP-gOHuI*Bd3qT%6XTJ0 zU18>GKhNnPwK2A#>d c1O2jcRaz8GnrVb9UwRMK%IeO11luTisHzXAIOM z9xkLU=WNbuX8p)hShxRlq}Y3$^m)dIQdBwT+BMyIwjcCUCec~L9(mJ7MumiudX4V! zo6ilU7e8zrw!`+HTy4jZ(onm>Y9PbLbBNPmn!BKnaSXO%BZBh95PpE*t%QBQ6bGLp zRY5rVM=ou3_btztm90#2j*&n7l=X|c^tbhuvF?Hh Txh!`o+S{%JxNy3*U6X4$9dC?mUS}SnU=+Y!K@sT=Koa_2j0fiVWtVF?rfyW zxif3g8*?rvwz=TYLBFkfnwZEllRX9ME4*rkk(}F;H!58T(}lmS4I5TssCu2zvYzNw z6=~*Gw>Naaw^?1_uN){`6syz>@_I{g7%%f&8m(> 2>sw277lNxwhyo1f^T7O($m0| zy~9~sDL77Ugx#^`X_v!l%JbMoKaIPVfXKA*2M9UHEL^YoxH{-L3}uHLW!zbENf^&< zo01`#STT4M|Ar;%)T4v=>Q3!szFbBF9UJ6P6wGP3vg;Ucjkd~GFkA6_k_g7J(pF~Q zr;p~YygttQQa$EM7gl{yTFXm$@#gSIOm9w^>w1TndhptBK5AEP4$2kWOrLN14Osql zrhuvgjj0`LmU(IC0hw`YT$8{EdOe%ukkI7O=~0{B?6*3Fp{T$b(mGu>d$N>eeXyf< z>TK4`SC`A#my&K+M`o}kYq}9bZNO3;G*b~*Pjsb}D(%w}U#R(eRk!Iy-CB+%VV^qT zDu e~i6#KvdiJJ}e-Jgn$wX5&}whH;8nHbSWTR zlF}G}l!SnEcXx*%Al)G?NDL_r0|W0Ky;t$x`+0xg|AxcNIcM*^_S!3+wI1(?fqY(Q zO5t9sV|xs{Zd%bd4-@CPCj$y{b;Pw)me7%fWWiSgcABSKH_AT<7O&~ZfAMo4A1s)W zZ8H;8(Vuaf$XTtlk-tyTY?Ds!Hpa=#@Xqx=!zMp=zp_>`EV9Vi74^+PfoylwxlRBh z_k>+s@c@g@ier;2{de}&iK!VnXq$D%QxBTDZ&*~^oZ}Y|%|RYnu@y)2y@M(w8+R%M zp}Ht53~qEmdZ^MHS+^zSP9DpSdEa}y-2%@E7JFhnBm+_S5Av-rw$t>d&(A%-9=ysQ zWXh~V@2Rue=P1W~?&M41?X3WUzk=62$>FK}f%$uU!$D7$fI=0ikiX;bk{5F~eJ7K^ z_zZInGw#0q=}o@L$;ili5S1Pg5zO&MY)-}~vbf@pJB7u9^hANJ=br%bjL{Ekzyn9{ z!zs$Cr+BsR@EPw&ftf-9!`Q~6$W?_ew=lj73FKWTBP1hk{V^FgW#Q0(350%MN4(xV z_7UYb|K6*Q@J&6x6VuclW4pOAsVJzc)#6@!QyjG9#=LM5Bec#hAy==@EPUdaU{iE+ zM(kee JPH_K+`4-SHplDQNl-a-(V _l5CG2-~sT^k3-5J8=0N% g>m)mkC z2u!&k1B{^vVWB>IJ;9QBnsTzUN|_}Ta?y2cq42iab0#(SSZG=DYt6OKQF)2)mrv&c zCg#Sgzn;}mrdbA+kGe1Cp+R%{9a-~*qZeM-1AFZgBqpS2F=|eT0T>SvV-j<>FsacP zKyW17(PWxdB{7y@(kRL8FoDsk-}C0kn7Q$hS zUtnKVso)*y?M!^g%+Q*RSt(+vEI8tgT|F9?%4OboA-4K-qu~!-p~H;o znznmsv|SbaEvYnG*JRaNodd+$a^8YX?XLt<(YHUYf@<-%_mT(uc_OFy7&A{Axn523 z&T8J5e?qPAxybco$`2Vc lCh|lMQup>Yj%hZE|X|Rx-ThuHt;w_km0$ zv0hS(#B-cveA}CvkJ~C@Os$OG)E7hwhP3A%)HZ0C((rDReX&G#Ytv$vtUrV4iwVdk zAwzfpAO)Kgp3q+WOb=9c5F%j(KL~N%Rl#$es>^^aF}+k9*;(#N-fNDyOBc(hXGXGK z {d=K?jL3A!d4oQo*i9Cik~3uw1i=(vO3%L*2qkU`M Vw_%8JUZ=0&W-?1OapOUZs8H2=U iwCLsF~gJ=(Nd{(RMn-dpO#AW)D**21`kc8CqL-yYzWA)Iwx2P5ey1bxt;g0 zuWWvi?GI|Komfjdr(L{Qq3jfR9(~SagUoBzp1NOJQo6OTojSYFYqpRtkTp4#7c 1+Xx>i|f7mZ05EeAdB>3`0UTx3EA` zfOW*4M}mm>D+21XuRe#KRhgUR?qzX}31i~}%hj0U)fc>KYFng9L4pE#YnxbkkcdF{ z?h>!e;C=$Ry4zZ{f>V^WoGK8FHSB$(UbgdC6{A*U=NMm1se~=VyupPOv9x9Myu-+L zZGCjBaF*!1Yq!6R9(=7WK9|QMWX>ejaBNy=4hL=xx7Cx(ZBYX$%I;=IyFbfBE?IWi z^z+@USw5nTi}NJ$_tS(IoAfH!An!GN*lP1cy~L_G;?9oWls?^_ jbDrKh95aEa z Wn+ zC_7N@Z94@c^C@uLO%NU)-Y?uu3o@GgR7YQN8YwfYb1e0p;f{bU$Qo!BVdFd7TQGFo zukM~DB2a z`%I0I#e4T=S$PD7;HnSfxuSeR8g#RVjDuJoQ|_+}5F2frr9Dd9Z3~4-u;Joq_z0X( zZQqYAF>UL~6V396)bB*81Mi2o^8;PueKqp?X0@AnWaM ELcsGymlF|5z)^IB#oFp3sGE&PM|S!u#QdvLL~sc>yz* zN>Zl3uTEOU;Z6T={@qr*qWjK0<%<=QS65go>B6LrV9hKM@`@|B74}cM)35cFRbmm5 zE`FY SMxe` BNVMttcfvh)ujGNFaEiSWmQd( zl(ekf5Xo9b7 i$5`LI5@kXFuk zuV`71C1pd(>Mahw&59(cqb#C~^*}i_(&+R^d@1NLKc6j)t(O)icQ|PAUBy(1Wcn%8 zj@lOV%8&A!y`GOISgFipUAuAbju$NF zCyiL6zE>y~U*phn$S8Mc=RKmBXbo^oC}}#b462wd6QrB(ys^8h%a>m!*^0?AG(Kcz zYFGF?Bdhauocsl^25oo&Uhl~5SaCKV`h@N9{{ZS4tRi<2mo7y|Mq 8yb=}?bM_he=CMwP*@p01 z7C(o=L+6y+pZQCI%)A_H@&(U$J7=A1-=9Gq4eBz*cTMOM(^x3LvQ+FpK|wC5xKhvl z2B|Hyw0=09$8U3W1XrcO`tfo_A{~U&8QSLBp-c5NHnIG@>zIH-O+ctjg}FZXMEtfVe^l^EJxsJT&G zq=)3ia~!RkovaR4e>K_;T}5o$TlVjf*?(Lr_{*mEF}<3bo0|#|Ck2-bgb_Do8aJHp ziipB)4t}NcNvsHVVwOFpaqFy}BQc!zm36ioSmCQZ^@*};;(74&yCTT{IB4;y?dMO> z^ESDN1$eoxs;dW`QCxhB!FlD!J|O1Yx>~usrB~B-! })ve8+hpJvMlwq={MoB6?-xyn!e#V=v8d z%$j&c>0K5m(8Z7k7R<*J7D7- Pw(#f!+0v|xI7PC;t1pa{8Qz3|o` z3N~J! JC*5pFBp~nC|NJyujQR*R2R+ zk0%1N8LMZnj9XtgiwhJyKr{8&ZOuL%27MM5;BXFiffxWg_f<-snl!iUCQS;fToDR} z adq_uIxj1ChUt0|zu8eKAs%^md z?i}fNNS|MKyG^lybm~XqR>07(@OZ?vw}eX?BCyh4?rb~mw{8UcQYB;Kq1_`h7$hb} zaCds!!va4SMDnQDmQ-(c4w(gy{0qS7?T^A7%@~jV15VLQeG_%2F(^4jX@5C*KzTU8 zKGoBDV0X1H1mRI5lfe3+c5Lux)k%GA5`6x2m_xLmsSF6-mgEUyO@0>@4GqG3zqo63 zyW_Q5ZE4kEAm^0)DV_dpB>#si!H4`HHL@5*L-RfM%Qfz64#d~9WC_@6Jgr~Y+=^_hWQ0_fVnX~ ;v6LvS7KxWWn*1D9y3@MZo`=nybz-`L@@SCG)*!st zDNTrFO|#5D7L?@;h7?$oq?Hp{yLL{9l^xs;Tq4dfogeP M@pB56?^(l%s><;ubG-fRjBp`~&FnGr8p>43hsn1nlVtuCgM{Qe-Q|#G776<4l2E z)5odhXQv)vsQpyW-%XC1(eA*s-J##eI|OIC*MqE1ZuHy9CL| cx?{3%jl>3HLH)&4x-m-2Tb;zu^S)>EcAU`QDV{Zl=ixbvD zuc#YcLcS%j54(tXa4w+VSku(B*+`45QN!+DM!vXV&Xhf=eizB^rK`07#A2&F@zrY~ zy(13@AG4d{*p^Cu0&}DBhqe^yrf=59^g{=$GD%My>uYs*XR|99_PaNsmJjS#l<%B& zQ*0z<#-z@`$ZhkVS$9p-xbv}Z4wn@wah`wkLaHNr$JW*U`Mrs!r6nEz$`wTaAXZg! zfI0l?)pCE9P+~NI-QOQr*=Z`mLIzMlqmTf;VpfPlV;*U$`n%QV9E#Zm?P&P9Czh)q z$k}HhPVUiGLFsR-v;DRcIOjgx*8zUD-Rwc;zu |u&k+6oFdt 6=_Hhx3rZwRGs3-^Gva*C{NiB8sAtOW2)5F zuBk!ie=^=b*;+c_&9bhE0WupmwaLyD`akJ0 k5$xvOh&8#@cBx4wLNl}Ic<;qFtKt<<}n)T9=7Q!U1O9u7uj@ `?y E!`n$B_GWT)5ZTtWxh3+y?nN&6j@GpdX;2 z9VSLwD>j+gO%lE{o^W%t)@@zO=m3Xn0znRVgXD4y0_%hnl@jI~T9qPj)W^QHdB{lb zgqp(^Lc43hNYKL)TsODsEj>Hq^f#E@@hr1w^ $wa~URn-y#Vw>H)HQSG zzUjf;r?rC)M#h9|Q1`SE*a8m3-6l9kLe=q0B-`CnGw~D+84#UlW3x9uW~Ni5Kl+{k z)6Re425mVtl~XUO5p37${cJ? R$DhcPznBtUoR`9e>>#($DGlT7!dX1xtM>$)#L0RKhYvn#K{V%ZyGMqg z`yGdL9?B`Ehb{YW-;m$2hEyyM&Swl1)Hs|Tn#zDYhbFAoVw1!5kfv;Wqp!P^^-6_g zRwP0W9FwKOF$;}d&1*_Msy^XTm|&8!muVk)+Bs49h&3}9Ct9NH$U*7{ysgy{Ag2cB z9F!`Gc%Vf}2Z5EtwcF=xxrKB`r=qGblu0uXDZq4~Uc{C(gGYgm57%Es{qUS?myob@ z|3I} COQRsCCGwK}y-~#fjKW#8d zU+;r^F+Ze_c^|PcUlht#jEzc~{gDL`hVJ0(EaT?pc0mmJ+2yAh8x5C$0PE|9ET{#$ zyf&dhaN%C8>k@#2*3%RXhWkm%56Sy5v}-c&WRNkBAf_PP67>*RmLS8q>fUrjrf36;Kczt??+!=A0M=GepYsx zN7rge+B2er<>Z1tyrfc=@u?Fd)9{{8F?gpcL>J2?5ui-$bNU}`4}R>za1CJiQF_|f zTK*^^jo>Axzqh`R5;Z6RrFI|IV7)w#L0WM6I2(g-RsP+;kh%8i=StSvStd0; z7lgSekH#e4H0vb-jeU1e)Ne$A_UP-S{qy@}e|++x#QTBF%16P%5yq8Jyi}@n`zFGi ziQ1e(gCt &Y4*$Nl NCh$k}RaMoi#`lJ7X!e-zJ!nZ^)A4FWPZfCt<|Rz(4ct5bbEto13miZ)m>s?XmsYm9 z7}c~mw9$Qv2$Ydbth7G2W4xrncM&ninZlv#`pmrV8ROv)<#x_X*xw(|L3uDwGQs@2 zQU=VXa4EVeKDqv&Fu6W+SW(FTLR!JMUg+H)#Yd;rpvlr=5OmY(kAfypHRtY0%&?8S z{=1y#pJOwy1zQ%gkIA&$lR~@7$(EMi+b%riM}g~)SukKnU0u-?91ihy4&eB+MBviG zlVQV2wn| 0f+bHMvvC8JDEReap<2A1$H3 E-`^Q`K>A%N3tuh^9qOd8 g^s&Tci`n!3 znZSC!C5(P)8(dx}umS$@=k*6aDm}0<|HWJP`>g%vCuS``1V#97$r6`@Cq5S=1 f)2m$a@*4f zN~DLKMV1O|RE&$4)#Sg%((DZn?_cAO^0_>^(0cfJwC&cNa4(b@(c{2s$bD`Ip&)Cu z{?(^4g%<-8wHNNHu4A0m1v2)5hn+%Z3c$sqT5x)+aWQT?EHh-=nwo6a7%|=I9A1CR zL>d6Oq=+KuK#4*%>+qv`a*tl(p|VD)+NKH0gYgD3-~_w3-t~$)`+C)lME@FyvRYPu z-zvx&a|OY0iCu*$ZIJK^praB^uLH<$4#{!gD#9w3hM>pS7B(RVm{nfOz?|Dvn3G`5 z#Md@tEvR^rQB C>J&!~;_A{`Z ZtK#{RKx`j Bno8uR&dPh`IZZuN@+Bx1vM=j*{!^2nXLElC Du|7`>?TXVt%csgr$9Ya+Q^7(toVQ`=-$Gq(LwroJFys4k<| zb@e1;M1QY-U#saIEE3?KGUj_cUe&&t&C *Y CkZ zMjYn~RB-$}Vcakk!P~~tqbYH;{#ktxwh`rII(F8WJBuht&Kqhec0KxV*YJu`JLjTh zYcYcU<8OEC8_F59@W*sakzX5=*6V6CsQA)4H%dG>Tg2Gu!N9T}lF||5S*X;jO+4G) zVo2C72s=Re-$l)5_1)lM>W(mHqmi^mUN4&HVdSxuPlHK)_mpa^Ba?T?50Ltw}e o~@LBiX@RnNMl%L+Bu(!#3Sr6nc)ain>bZprKfiB G!@76Q(GD_i{1_U}6hR$!nr5;FgfK$-4==lVh~WD%GWT8e{lfaYBR6P~qdzv(ECi zXqnnb7 8N mD7iop(ys$#>B*pT)i0T@z zz~X-!0GHLT1cD#?-4K|WKUuPyggR*T;|6RBxDEBA5YS&vxC}||#Tq%EcIfcu*$PY% zxws-% )5`J-0RoZ-m8*I{ViaIgKQz&?sC;$Qn9y=Z9M;*iEx` zM<(3MI7+N@bSs#6R*4kxVD@U%%r)))2|R=;)*{6GgFrhP$!<^l z@
4n_N%2zoDrx%_Bf@CK-MJ3F zYgn2`)8iA29&*I(C0aRm!hpW)n43NMsI}u1o3JY%57}Pf8(?T9#~XGseL=Npb~kl= zbp2Y?b>N}95bl*&-%_jne##QOx1oz); 9 w|u4q$$HT3Bjy1NIb!vAYsoPz^KDK603T~y)anb+W;iDqjysQAM=iU} zz8|9!{BGk6M@L`xx=7?kerrTpov>Q1A#)VKFa#a(8>&mu+zpxPoqd?s#KTS}-%YXo zc2)u)pTjqhsvPfzn^~!3-Z4j%0Yyh{-IdL}b9URl4>a8-o6=1V)F@_hEyI_>IR)p& z+b--kBIlx(>*l^EIeS)*eej`Lncp<(_ByS5Yn`y%C3#xg0vvP2p)1*-+;6{XnWVAo zg8O^&9*n~$OPSkQXpo^PUivhz+v*l3=di_UrEz9zQ}hc^lf>|@$;LdSrqD#!c3!LL zmIg{hL64|Bf*n+^fam;yg$=t+lgi-F)+jzHxWE&+wsxt)ml=u-dZ7tHZC>*IKCFSA zRt*X-ah;VPfVwtC1k8{RyCd}jYsGt$x?bxazCOq=D{ARVAO0t1n2t=mZ2fgqNCutp z@O>=F)9xgA4#Bi+zrvxbmd!eHx2lNU`hH|Z7T)XU9Sg;FVYIyY^B twBfH{B1tG6@U?HgnJJ QiiaFkzrBIuVoqvNNilPSvG^NF zg^c1ArR9)Yh;gtELRmbGfOA9ndB}Lj*mkQg=?n!x@GKM!Gv~C}W5Hn(TSe&n)W_$Z zNN8k33{wE!71md!HYs8Xi9ic(Qui6(B|bena28<`hzU5qQ6#uq1bf!O8vK{M`nZ5* z1@^~tvo8AnC;ut6@M#x^6Ex#ISxE(wi-ln0T$InVW%EQkLagiN$gYMhne+s2zAV!W z9j6R<>(*G-Dh7}^(n$G8zcPn6X577<6gA{l`RpN@ML8{}j!Tu0%jfaNlctM)7H?|9 z)15}^^Q1ddG2@fxEv3nzHslJXshQV~eP;|?tNPMK&Yc)`4RM)n(e2L@ClV)9?$-!i z(qX)_I#1MNSRZhlFB;P{eq)})KFtDn=ZhE1^0&m0qFMr$CU(E`>8opxKVNy~;Xz_M zQc}%H4W2s!00QarZe^4n&%=tkE{6M}jI2zSfsHhN;9LwTy;i`{Ks3VOFjb%29vVSn zkymD?PQ3o%PUqCD)iuWh4n7+e0@nLkmn}iKo}!Ed)dJF&3x0p7bOV>G7z*ZoD=qLs zTI}2T!ZVTYUL#|P@nu zzP6qnk32^VGgR ze_Y wu(jjk};Yx$8`uTi8-l{t0DVOWLPHf8oHZfEAoAt8rsz|ki zF{>W-)`-Hkau1DJXQ!iU*cl2$x7Z_5R@i5Eb8#>B2a `INA1Ox|s) zmgWmnWGQ>Kl4m_ItF?d2gC159tkE8{lNythN@LaUeixq~x3{`kFcH9RKurl^-dTrv z#qy^(D-*B#*Zw&d|I*_irUN#s$#g&f+F}qW-1OP7g9QL^ZVb5DuVux&MI$b~^`>u;uO9<4 zcQ~{X?xpNftZ?W#H6hA=OKDZjR3MLN14F1mdy>-1ve3r7F3Eaj?BtNPQ_$4S%VS;y zSiC-2P6O(SV$E-vkd%cZFNzm~3%-P%;UQd$QTwi1j_@eXb4RlIvk!4d&F)kP(s+{H zlsD4iU8;;rEu4OPqknwzCu81M7@*MM{}Rg%=T9(lQ?E&Sg134g?opFifvI#f8gk!@ zTLkEA2I^Be*;^RN_S@~xR+Mg3<$m$FE2E!O(>b|7SG*dfvqPWqQLXo=-VCS-I)-v4 z3qC*kW`c>~gRfehg52DS)Z44Nn^#izX}*GnV(h)n4A)~B_J}e>R?cr(obn7ti@pT} za;EK+el#2OiXOq6^1VvqekdBqHyqw|Ugux>-$9+f$8-BRFo%8PKcIuS!S=G6rq|&n z&OL`f+TN~PR)ayDgZO+dtH(2Gn #?<)F;P)eg6~V31bMT03@2}Q=AiaTe_J0o*)pF? zxiIO6ieK0b`0!2K%kJg1>#|LUxsLJl+~Jjytjro%c8Om -c#md`zY}%}0lfV (fWxH z0PAAp5p@OtBc0Xy Z2n=Lco>wP5IE&y=IFdY^xHLk0hF zr5#Cs{%&z|MjzHoHgZP~!utC$D7;@5ADWcEOa}1Q1e{V$P{Ay`N`Jn0rgFGTdW~4) zOTH@?JMv@94k`F4v_@f5d??12^}0*QiqxX6YSY({MhEHF9RC$Id3|eDLzxaVfEqmx zz}0zg%hmD^z6&KlAvQ?;B2D7~5JXurE7=gc 5VeL8mu_z_Z_AbHq1ZqN)wBXT1 z(ecjvh2erF%@g=C8P*nKbu?#$u?W=V W!j+l}$_p_LFT zAIt&;&)Y7v0Kbjvu;nmx_|SG<$)G7@{0GRgmUwbxg)yppq3D(MP!>qS5O|Uo?z4L} zHNP?)zs3EmxI;I|BjHWX*GvL |4NCV$c?Rn8UfEq=EaDTZ71W_h*e(P OL*^`M)Q`=s6y)dxt4`tZCrz_BgmtQ{thPM86jpjKE1gFy8qSiU*TS9SGQxQbC zN*TR(f5g~IB=b%(w9Fcuz-H2Q*4;@-VV&1B@4U(1?0+Z&0z@&D$Io}1w7vx9Kf`RX zqXqE9oYVe}gjl} ?T+RMD=VXoW$bS)4*}c#q#MwTQ zMVOl#N~75Osww`;qKsh|29*qy{``2D+a0f&oN$ltPMM749(oWLlM2iFc}70(G=PzT zi*}8TX~DR~^n?7O6o&GZ@s+Uy*|w=CoFk3$Au!`~(9I+xfBNE`@>zsv#(a50n{Ft> zf>R8m&G-ud`Qn|^rH~sfl3I@- Nc|3D2|!tNk6N>H2zWApb!eqnqt9 _=90{|rHZjT$_C8YxEaU0&bgQh7{ea2hdBCO9eiXet uio%gdSh>QIj7-1sagXPEUbP>acPv6!o ztg2;bz5|B5MN=w~$p58j4;L^^{+Q(dpFcxufrLuW93}GonRZQu_v=}o=m(v9OM-u& zV*ul&0eZ*UDOqY-UT!oufAOV`fSV_m)u!3cHtx#9mgg+w>8+1(aglH055$n^Db{48 zrV3+h1yFxPN6oLo#w{W<7uLaHzB=9(i6@4P+Z#-lTp%R3(i6F zOHGsoVjz%2NaBmW?Qy4roLrTx#5Iu*XL}@whT_8Brak=TT+-fG5D>4TVv`AbU-5xn zjY=pZ8%4vB(^Njcrg)&+srlExetqZX2j-iIh>s{zwqpPL--;>*C(~QyPj`lfV7J~S zC8~ t(T}Q>{`2O~hi|K6riwp`UC#TH9!ondB-s?X`{l9 9`S(9p8h(Xcf()@IV!7Y4Z(jWVAHN&D+Fmf0_UivKxmSEx zD3TGCUXePQn3zEPBc(IS^{M{*d6%aF$XXaKHko;{=j+#3-w>jjQ(v06->>+OpJbwg zg-n=0{vTfuwm=0ij`4U&5UuX@aJuwkX1KVCAMH6hUz%U++ojDO61wlz7}scs0qHbP z2JE*)XsH-{ZF!S%OGUToz1Z&ofzgr)vp*xLAo^p*{vNQf8|ovM7fTC?L!C~t1?eGX zk^hvkWI?c~(CK)wOPk^EUxWFUyXpUZptJ^ES|W+v>zP@T{2$Yjt#6 ^#FvVWJs{x5m`^GSc)1K=azogeGCFJINtH#h@5+7yN`er-7vN@mcz8-aKQv}FIa zp6yZK#}lrzTTz#X_zM36vxRFc^J-cAuU8)kKm@Xemt`#f``4&J#o*_tLRX^y*ap8| z#Ag=q)-%Tpuqv|&UKb-Nyiaoi|CnG5F`yKwUHkrXZLj!bqN1X4yctct^h9iGJZv&r z #_g%z ~8I>#px^p z@sN)dVsn(ud%rdO=lmXA56atSH~GIvB{mr|;Z;>K^Y1DfTU(68gV4bY`rn)Vm;C+v zgSZAz;yzf(U=snJ;NoR}9P*)mf9pT4l!t>IL??i0fA5#f{`o-;cXeZfo_I#zo8kX7 zrJpp1Rbn5{)%5*ZGgAg1aE^_|hJN`ytz-l6lbK=XHV8;vn$`k3aB2+IMzFE{+-(M` zXb!S@=^<^AN-u1z|B#~sYBJ%G0EM>r{}>dQMqgy|W`48t9v1rfvCE6jT#vZud-S|e z{J)m-(wqDg24TAE*}@~uSxPyoLqT`g2)R>J{_}BvP8m3})WLFmZ2Uhj0;mX6s^h2G zqx|QM{+cn-pK^@~NVntx%R$De!_D8?6y$ussd2&P R@Mn$I;7Nx+2X#(B7xcvN2wXv;X4cv0>PCs#EyR85DIy!aMY zKI^)kA#ga6b|jyKif!r--?^ggETCQbuZO0|0JY>Gpx_K@H!fYiDqaD{4h}~*?q_U} zc -^v{rJN pBL$(^ |zNX z8}J@Z7)qGaiq>vnd47MjANJ1ONYW4xb(2}u@3e~&rbWt!(5k~( M7x(6sT*db_DrG<*Z+_YANabjRoMfkh+k^}KHMHfWO5x0 z9I6=Ci;ld>DfBSCr_3Z>B`oV?J 6(lukb5QZWojw&Nmd+7E0B(;VaF<5L0V(HF+Qv~n}*b^g6i5fl!_(LYbU&3m@< zKG!k ~626&0ZT%`$>aWn7i-fJoGIJDu!?*?uPXN%FB(W zk5egH-BYuNmE}gA;pL`-sj*M|qZ>Ai&B}T?Wt2QtgKgXmRWRdtTwV+4fpJFbEdUB4 zNt~#+m4HGbb4Bo|CXbllNy5%zN70zjP2wGTJ=mIhmQ=)p48ZymjT!UMUH{@F>4Jxd zuEiG4?=egYXiYXw!}RCr^iQPK9 IB pW3TA4P$ k8ca`ypKlT(dFv;Xdk)6Nd zui^O{_v{Lpp7l95MhG63ygSfFrV8nt`szojSNlzqz8_act!+p_=?#^h0-%`=xF4@~ z+(M8!-U#|>sAEHmE}%vGSwb)x?PZAm`I7!_PX3{1zray?()oTC4WdF5Y}2M}sa0=3 zmB2V92yoDH0OnGKrllu;_X4o4u *qXTpa^jw})%4*J*0DhuOI1~BlZ5cO@ZMV7ZO2fDNx9ijbPtLwk2}w1b z&TJ0>CZ@Q3Ko)D<0f>zHG#@9GW_;W&$t~IoajvI8r=J0Y)?dm3R`BFmir_>xd6e&& zsv?twl()ae2zAF<*V2f6{)WutBH{{!KS}Q(SN-7BBbcYdc|JF E7$$
KsgxYxNt7&!pWqWb;u zrgM( Yvmv_U_G+Hj%WD))X}T@WDk*WQmeOW*Gq+}^@|Nec;~&5q!j|N2jIHw=^P-- zfj;G%^EYTQ5jy>nDy=lD4 jYpvikUIFTKx1RXKhWSgkPQhy86uSQr&JN>Wgm( zsi@kIkYh~&Wm3@{vVi%4x;fa^XnTlBbQN5^qNjdK%A3n8Dg!KoS#aGZMG778%f+Ip zG|VYLb@kY?Pm<|(9V-hs|2peGFa{2R!-bfY@pl7~<;2d@EN#x@QH$$SfG0Q#Y~1RN zI&iR@pRgsJ$l`AV1PI{>zrCV97bO%|f1$hWs@{t9h{fr(-Y&jKR%s=mg5K~HI^TJB zG)dggYD0S5d~GOSvrM|x11E?Vk{%HdD(@*jcXV5*Md-yTbi7HA8*ZsIG;W`;oSYg* z>#AKXUf>f9H9lD|*#qLPFZk$?L} *+`vzCFPW7dXAX9U^(F}kB>+y-wsOu%(=>L+wUPW5 zSylG81`4kY$41Ea6^Tgz+p4nK!Gjidr5q|O7BS-}f~Mm(NW!+e3ClOYHXM^`-Uqln z^{;X~<;h(m>#Lly*1jtg8l2s8b2Mca{|Ik1ehio`dgE`g#a}-mKOWW(#Fq8MVo~GI z`k=4M(S>ve&h}eY+zvmg&wb4&8^80dCcg^UG3>0bUNH?MVCu7^z{Pv~4DiKsJ=(9V zYGBA4ion87$+=C@@ wS`|sQAOp{{}L^>~=5(6l_Of;h$Fh2?QT1$_PPx8(a+nt$npBFS7PJUr~ z7a;y3Fe&D%rP2;{{9@8Ar5buIccvqtlJtfrfc`J*-?6`o7q^?N$3LFkSpE@($Vld6 z+Y$F%)zPfm5n=1KKNpHw4OmHpXWt?PteLaFURqc(VS`V|@WTq<-rx2ieMCj)gE(A| zllCg0g5ArWMaBUVJ$iJMhMi!W9@>dVsAM)c&$*$iX=TRI3s^^K%2Jvc$!EtO8zqjD zd5!kKKI8D%jY!&f{5B(hNa~B@)0on1RorgA28f)ERsrpR*I9>`QKZhoH0rwQHMZ1R z<#N=$Z;#&rqnOE9=9w`c%85`(kLrPk7;?-}{fdC*cM4Kk`m{CK@{6 dmlG4*SAb8BVmn9<7%S3;K?`oZ@2dR zz16P9HG)AH4f6svtkToI6_;*?D%`IrsHnQ`J8gL$S!uO{fJZOQvZj)oiFWFfeK5XA z#&L+aE&X=46Z?)Ad3|)1MrwggV9oN^ln)lKyU2y#SD}Wq?LKAMMr|Sn+};gQ6M;(? zyZDdea$7YAFFxH;NCzs{L{qr1$#{R4h4AD&K)s&4jV@7& dd^X;1WApB^` z&`2~ds2E%0Fj8fBYb)~l)z}D>Z<)d7g$#cA+gt{_UZIPVeww0?(oDN+br&j0P*uCG zCfHOHo=8gSo(&OB_y=ygrvXbDsco!w<2v?oMT%mTX=`4o59Jzzv}TF*aHs>&_)DfA zm&3POD+w8N_NY-^RWcx1W{y@;iDh*->D)ohil$LQNrWzHr>m8! -s-LtJN-l@sB|XV zu~Pp~DQJ$1ANO=z-wT!>tD@>)e&DoTP=&9;zu-@ycAEH(h>I}~1Ap}6pK6Xwc>V%C z2ub8m*9{e0BSQG9|1SQhCA1P$P2uXEZq?bi_Sq+@xRdm>17=#SyNOJZj~y`V(rR0z zuZlu_{dT`%@q7!VPY?4dJQARt`c}YO9Dc;H0Nd#x-Nr+VVKEf%eL`^@rk?&bqrtlR zt8Z+FxN(Bky<%=NKn~ef<2>W2ULv4FM4;=SWS66&AW$(;IICfj;8?mQ`C<-m5U#tk z +zsQ040?v@;72jCvz6`@`cYu F$;I4eVRh@7G6%Os|x-2IA8{T#qnej z(46)~ZRc?~yl#>gg6)^XsfC>+9VZH#w&AaqFmuY}b<%Aabh_OnWK}V$_QmOS%Py@% ziGu+>?BKAfNdRtp<>?lU^6g5iu=Hoo;tHLX7|jDJ@!2&ME+NELa%P*^`l0ntLJFs+ zCgu>S%K@$193Tvowyac(b6IPHkbjFP9l-&+iEUbCu<&czr)DMDK{pv*qMYo?V*z4r z==o8T{&Y9OwY!Rz(N>?rW$oNmbxvAI&qJ-j2?X3&EWGZ($ON{LMqnc`wP7onWvCsb zoF!|RTahumyj~Koruy6;TjKR|Up7S*(7LOp-(!m~E8b6Rq4|SFftrWT7Z#jHcXAHF z!Hqu`SzLI7?SL!G1)NLw^Ha%3LAc~YFy7Zx)SgG#tKcj0B^#r$7`r9DivqN3pN{C4 zb;okI8D6sP5K7hoGdAEfs7nmzX;&U!g4g*8jh<2st?Yt8E^meC)Du7Ap%*I&>h$AI zz?sQ(*{og+fdE6aGs?()tSoW#Mip!3%EVlg8;F7hnE^-O()RRuhWh?uEai?m>pubj zWCLS}qun2L0sUfIgAO1|ZF8b`dz^ 6{8qO7kUUDgY$&T3s zgQE6*w^TDWQVBeDPpr4|iY^Y0ju{|Uz~-^8JtqyU4<=s@e%xF6dW2RHa-0z7zLGL% zW3C)DQNu%L&VvG015Lcf7Tx$bITcOmwKO?*L=`IK5A(3(Y?^QGq;Dii$x}XUmLi!z zB=gJ>SpImA8y8F{qqOoybLp^0c{B5yCMh2}!ae5U=^A@Ch8=uy8@H*c(u|P>w^>Gp zbItvkZBMQ^XTg=@n&A7}3tu{J+65OrkJ9gOGrX$CxFvN&?5G6EYqC``EVRbGEKxxM zK8ME^qK4Zw)rOa^W0MU$M`U`@DN`yeO0SRq)i>Mq=Ksgudxulq$A7>jN;D`^Nu*>) zQC4v(qpS#-A+lF?*+-Pj2C|8894k8`G^CKdXUJY TuXA+l?7%ghpFP%P&3pDl4D;XoNe@ z+RBRJvfz&o`%7$+eN+O}dwyaTEMe^Kfm<&yD*KQ5Qx$%955DH$t5Y3KAnx`uqy;-M z0$#RyZ!FAsPU{H*1FoofJin$aK=<7_GxF^MprI%ImJ7`a=lc`K{3beKwt2X_I6cK& zL#k8O-4t@cN8csoyB{$ug>>}fYb>AFwyzB16Nyb#(i)>oy(?mXN^SiHXJk8j^T;QM z$knBRIexZF!aukiJ{@~_TY}OFwjcra-rfxDo`Dq*mY)J=y>#9V-y9x$B6f7h`iriU zM_(uXUCPyhJQ#KFIV^7eg_vvQ>kgqSQv+4kz@D_`ioa#N=>!iTnF1%tj*gDl;~zQX zdqINYDsi+8rN^DOs$C0>Nj=i-mzQ|%$V)wXERqSqGmLIEeIT<}*~xoeeKE7J*(L2C zg~l!ETKP|?8x$UHzy9{*yM0+Igwm5bW%SkLFP^1ymV^XeO+34zxo|wmKL-X?^K>Q6 zJFPCyQ7yL4%uzT#Kj5YF=|O9DyG1$M5zBV-Qk|{A#N!`q=~%Q&YIQ*=0#39Zrs-zg zJo&3O_<9{;Ufs6j8%fGYmyzw7LS}PD8x4fpRtD;_@((wAaLT#G^-x}X3lr6O9G6El zszmc9%UCls)d&NI4I0YF8!VkJ47h!Ux#v&TOs*>wZ8g#KH83ms=}NEAN=(G9@Xhhi z02hXe!#{a@saOy*$gxClQ+_xzAH_!MpJSAgdvX~Vwn|9%R&+X@)R8-&5hzQ)gz;r? zpQqUIVN&XgzU&u &>0=^!eDHqc@3YN&(8=47(6V6L>Eq%Ay%lCz&XU_=$VS~6I3yt z>$nRcxsX||&N&sGNbTSvVnGo)Rsz2odg7K*28#0jXg_>sIWq*J;E5N=r#7V`*x6pe zrNqL2?4h^hkLE2+mV31nLg11kd(pHV<`;`J&9<3ozzaQwPku2>`=HdRr5vNeeu |CVFg6CFqm=NeM>s| zCEMOFHevDr<%`1|T326b`|`ydoCOUikw!yJZTkAwEMFmM`E!nmtkfFXXgg`Q@yP=c z!O1FFEUQ6pCeq7Kl?*7IOD)=>X8x6qXDv1e6K3`FE oX~HS8icOf zML6(m;ia3JwM)SUNTi?RiniQWDKk4c^Il-Oob)l`0|nn0IG7g}P30By6H-*<9ou0* zZymTEjtO~*FWM#?1_Zo*Ky0%r79t-RKf}z<&wqP1gqWu*=2>$vH$0wL_CqB^*iEvu zZzL%_VGqb`^%bOPc;Q96JSgTkyJx9)&F}x}=kV=#f?aUBgILATecC0>mD8l9#t^S5 z8L(-)ySmt=AvquIbxQpCO&jGOxyHSFoqt|Vt(GDbT_DZ-aIk?g{9NbVUiJ4k6ql6c zWRjX5Sv&E9aP{)!likf6xFyN-bmSo}U5c9%;LXc*J-(I(M!4Vk$t$UJYNLw~^nDg_ zx98FDdpncTyYp2Q(gI`kMjA6!wuC`tDq*w%-VbWebvaD+OcPgh05_Km4EtaRJ9(xR z-UvBWI?p6(P~KEEP7_HpxnHbAHaI*iu9G?(*_Zb9>rtEp(jfaQ=?OnUTnQJYR-9hY zcgk+3w+I>u^9^05U64st6&ii@{yJNZe4>KlYHp7wYwc_E-s|2O;8ng9S{}MK1QFGX zA&{+1uA{Ck0uwRLpe`;J>XCH1A1M~}P_{S v6XMr4I4acwBXqgC@ zGjzX*gX*@eO$3K2iN3Dxnou~AeoyE7lPp9Xb|c9KJs%#mn1~TGM%-kRJJ2snIRdtn zsS2z!WB3BO_u@yM!Y4G;>OUM3RppmH-@lB|OUA@^7(hQc4S{86=9HT^$uSEBb~!v9 zR&{J!0v{IBGaZ=YhtQhVr)Sp$`ADyqSg555H%VwL)Ka|2#b{Ez4Sjgjj;RBLcS`{h zUbY%dD~)T((4!hCwWYtLKu+d8p-x!QQ$VbG(|LJjD9o~w+1Cfl&|m^u;#xNuJJy!Q zak^$mV|7NO4ha%Z4+yRDkuo|C%S9fZync)Ps~3s>e3iahFU`bVu> lq}-S*caVIN~>w+lTD zIU<;2uICZ;y*O_8X`l-73(7O$#I3@hMDGu`ooh4BprF(!n=MI$+3$v)u|Yjc#Bsu$ z(Pm!NpY;T%f~Qk#-y}|?^h`|;)n#lc=YaTW(gfUug{NXBuk+`p3@x)ED~y*YVF3I^ zPjO*#?|a|h?ocGX+ovu3nBJ9gb^6+>zirmoA}E_kg^JHba^z|WS<`CCp}Q8_iyBXN zQ%Zy= zYz&8cbdFmy^CK zcEnuR<_h5>tn yMG5ee|mwH(l;l+`NGC-)v| zi?)EcmWpK80ZQBGfSbn`j-#gDOgM6ol8eY-@=Ew*8~Tta_YN8>nKV{fu8C%ga`rkT z_DX-HCa2^ekgfj0=W9++6_m>6o_{&Za!!Q7ALCM&gP4&w8wPH4Ihz-EoujX(ELRbE z%y5a^QFU5m@VF~YR$vJAC+kV`#7L ~=(*nA=XCXQ{nor$bGgAK|Vc==auILjZZCeFm7 zmTuXt>==e5_ s0y)F6ie$6eGivlRO&B<4xAv4j$MLn7>!k)D+y#YF*8=YsD%grZZ%{ z;~8fR9B75q=Exyza^)ip^A2Z-wVk<1o=H-A_h{M)HD`7wQ|+OYQd;Npq){Jik5#J5 zMKRKH1y&-dwd=1-@BO%drJOFSI+QX8+izDbFoS?c@KyOp?4DCI;Sxuv6#}$AXK+4> zl4jd|E@(oA&Hg}F5k^0=PFg?*BGsu}^;PpiVk ;2j)2x);7O`z06oWfTk!)io zSjxsn%_R?JmT_St%#P>8&?_9p7=C;GalQ5eIcRhZE0odLMJ5Yu#MU@(qYEMKzgK}{ z_nB{`2VGG639*S5!m*zE? X-vnLSqVwVc!^s8@6<6c;C5S7xK13!Zpx8hj& zD0Xx~x ?ZUnaG8+W=W89?=O7PO8(--QhtbHwdWjhamg9}A4fTUS-YGEi25sn zQX`;*t$ScSS^~3Z8yfa6`h!Spi=$Ad66ml^v zS@fJREtr(4xueKvD6-!YZ}-29BoveY%^$_7K;dLUD;;H7(M>0-iE2J_-kab@hqt1e z`-0KE$4s5>j~1S#|6`x-Dk`4L?Jy|miH)U-xVto6@2Nm0!I+3w-DW}$#V9BDmT_-b z3Ykw)g-7IBzkF6BmM8siT?ew43bY)O^2xUVp9M}f^8qTE#AE1ZV^E|r&Z l(xxgIcnm2;;L%$Fc(h9OtK^Vw5>awz@m;p=;UfT+{Q&=R5l7 zy(xN2BsOju=Z=c?ky^&Day~-BkNS?3srbL2+rg@HW??-j-YP=3_nQ2}{^OeDsXymB z9Gq7=PtEB>5H9TZn6QTfeiB=`Q1|b#;I0{|;)4P+!zM<(&JC$6ibASI6Y}%(iRHe@ zeY!6^KX8}o1h!FsVl3QlTvE01wY!S*qv(&_?;GD(^p(Y_vF_d1_cr&nM-f{sh2i~w zgKSd!Ff$WFvevRVThbhb9Ia1>-bCfbdDk<@&;)*ZPoc9-L6L=}Ej87V@Z7wr-QWs) z6HEAaC8x^yxgvhaOb`nJ{6oKt=}b@5QtXyr1i5xpj-a6zJb(TwTLr=|K1?)8CR^}a z;e<->mOc8c=ujK>y?e77q`1w~f8_i$T9#Tlsoq$ Raq({t9hwB)MXVM _Zn{x) zH#r&IVSH_Nl5moRZGJK6wE<7dQvz}=quVY_tJ2TiAE@jreu=ZB4OZqPhSb(Y&E4Os zf9hB$mpiwpWnTkSe4LGN--setc-2$XJGuICs>{m9QBV};8rJs|l|=|<&Cl~aRAo*H z?I@Yc>m& nF^mh7u)KH-p2)F=BI5?B0b$(hBGW&M z#t3pl!RqauzBla8^mBy}t(6LZ<-6t*m}Ix;8Z7<%Vcj*3)ByQpfd=8eH~B5I`vG<1 zg~0tA?DUJhx1WOL-bp-r^iUC|ay8DV>wb)Up@!z1!jIrz6pfs=59Rl+n?5t#t%DSI z7lz{NDuTJ{l5;vkka&PqgMwnL)VY=u`7KCD14( V9s97POBV RQO{211!a*KJGeQI1Q( z91h*2br5fkaNmYxJqqLJ79604Djr;|q`~~JuB5f5`C~U6#?6icjw{rgL9#j`ATK}P z>vC$rWZ880UT5A#hov8-dNw7})Hu|?b_Qr!M7Dq3ap+id`hlYFlU}1|4s9+KExtn% zhJdrwMM&v~&` z`>w@KD5P6vA{AGlRm@(7`ia{E{d1ADYe{; JQDe$5eWMS@)53j0sY0x&lYyTC>d zQX 5#1)eq%(Y`ACnaM0|sRhYgtABT;x-Icy z8G`uNkie2kroODr74MdYh5-6IRv*a4zQxZh9(@sMS;@!vW_5XDV(#^d4HDQIs^F@U zM67EYCAXBqxi=HBgH6CK)xHF2?TNS*o#;Z?n4^dTo=icjBSk#d_S?<;gl>y`5(lVU zV2yKv5}}t+&P5g3lu0fTDMA!c;0Q-61!)jt6{sDXOzByMcb5fj^ I8?APjS zKC=*{;0m2Xf@M|^k*ya9n}YRoMia2~`7srF?O&G(`pRf?b^)&aze`*FAe5V(7V|58 zSx2V8{=<^_KpLL!p|ECd8Y+_3B7;amW(e{Ur*87Iv5?%n*B4Ntv=#^=xv10qf|n`K zy$E7xbx6fh*wha{=Yr;xEb_Ua9AcUaGxc)wrFor+tTrF68$v_I7fM9?Nafwu9ZCd) zE|-djAD4taMnNU}L5D$8JYj%PmOTNLhJ(3z9hY9EWEO!y2>>J`6^GG!z?dA_J2KLs zxPx1-GOWiRqnQbWLltRcl9bbFX8_e+CF6;yh5V2}7Gf2AZW0EmtCs8fX&hK8M+nle z3m6wWBCcy4+)4-yZNsyaqLqcMks~Mq!r}dcK`K{uQWr!m58y77cp3`H>mz+P^DWeG z(|re;dO5tMCbV-p?qZjMwMZl)g6<0nNqc;iDx^?$@MRI*X0rdJ {=~6m}smGm0v?q_xFe+B?Ajcks8e;Fq#n5-0B##zg}38 z?hsrYl~Xg6qI~SR&E%JyU)Rj7sHnoOz|6Nk!M`^>6|YiZ)J=_m){?z+K#dF`sRr}$ zos40R1tCTfCwBDS%R$vTQEL}Wgidt?+#uC+51D#M;wm_d=aX-Z)~8);F0B=%Ht{#% z0L+1#7M~efY%Z*FfeO-6&Sa1XdCgN5YuF70HO?|$tlpZSMPlCvB4_8G(voAU# z)584P(94q*!z^P>S6xs>JK59=UI$e}ibd9VuZ?zNlJXGvW95PLUY0S3tLFzIBlif5 zzMAgmDdHQ0i0$$o+IRL1S&`0W|J!P&btL9qhG`?xk4b{0A z58QTY(E$S6aY&flATc?cMZm
A8KWAJyJ6K_$8BS6~~~Q)%$x18w&^ zn!y{bgQDIDU)~;%o_eLjWA8{gBvT#wSnH6qWXkIv&rDz~E$5k!V>w;w4oN8|<*oK; zYC}et*%y(}USoySRp+N9YbeWu-t !|6R9B1TU+$%1y2N?5dhg(`_7%T4&3UNkz&MI9fATLDI@`Z z-C7CLbkTWL#>|BgOV&^)IFoRVGX5q+42R${SOxd$YOiI!HL{JBAr`v@{gDK*-~z{a z^QS2r$dP!>2GQy#p&X0M4MvZ6 kcz9wrgKyqm1At{q9VA|Ws ^RGmJ2)oLn0|%@jiz(KuqJT7I7wAh@c)?`AGiC!U$EH zPqT;Tc|=4awvQc=m6kyU1TyFHgk!HW3$B7_X3O4@N3P&C4te38@5$M%*yf|3K8AKJ z^{-WWKK!^OIQhhH*SE}nOs0|n!=~uE-!E=Ah@ba-Iivo^dAX5X{Jizwdkeo%41#zg z4|+6 {s|& zU4Hp<8!43GvZ?u3^|_Lsy22Q7SF13;Yfg;TkvkkLoRZU}M=T}NE;RcnS&ShS^hn8R z-Tl3SK}4SC+V8yIx_iG9WJlYOka1>cF?6A{nw0h9bR!jWLS$q2wseUNu2|z${ |9T9q}S5}GZp=bT-ET)zh@?%H=emjp?dQuiB9JOKipWLN^H2bS*gw)5 zP~GQwlXm6%L$5JA9;5`u3d(7y;s-2G@r$2}xYr+S1!Wfp?2(EH%C>VLv6E1QL5yD_ zl@~nkJi(VJK9ta=m=^K7|Cg!k_i2Tf2$C8T-#$MBnAZ4`Qxio1*7%L=T}n>h zomU2&`$OM!YVS-hDB)`u+iiCDGCz_NBN1*`ZfGOFZU?qns3{atAo50WLdC=$u~xKc z7nSm+YbENayMBH|T&ffsN$)1`I;6p(XS URFq|nfST~ zFCq~2V7;fTLqO+q7}UCfP>MjYDce+E+z~tBG?(9UUH69*QUSByM^na{2@>Af%(Dt+ z-cWUD0=(Rkm{&yJMy?O67=HM){QJ_M!-_>J-uIwTV~qjns!a(lT(~fHPG<_IyH)cb z#FrjyZDIILW+c UG< zJ_))k- P6hsMV!J~u+aV0XVaetbiRiT1|ssi7G^1P1u}TYc1+Hea5$Y#&hXVp=sViE zlUw57<}Mm1NZjK#btAisa@txnhUuyd#^(Zv6lL!R%kOwCLM~2Ay|nR2-YRQeOsW6- z`@I^;&Pg_Eko80i(=v528f*EG^Y dH%<*gg_v#-b#xKZ#Ou9 znS89eu1?O9e#O;T>M)LS_O^pNkX`lYpu_oN!Urc`S;$^f$$cGf^%$Ba#22mCcbpkl zTySqnoH6d56Ekk#y0$1>$6ug4L_9D_JIMkP27i;SYsY2}DUqzEsWYm$=eBO{c-x`- zEc5Hq0ghn85?JZa-JY6ij`4h6zbIyNBn &2WV8L`f z+Mr;4KBNOXF!b5Zjj%Qy=Oirm`0B2Tzw8K0_-_?M!<65b|5nHFi_{NBqe|<=J)h%S zQ16d(n%+It%kq~~*tCqyXz&1bJFo E!E{ku>XHPG(#yWxgsEah}iG+ByKQ)4zC-3UV^b zRn0W(tN;tryh2c3sr=Z`-6M`InCoTQIvxrgbfN>Lytluoh(q*I>_7^wJ*R`$vafhM zLrC|d?|Lqh=lqYKLsuz3Tt5stc;gQ-kOaY)@-yPDVdG>`8H9!kD9KWu5zmh}`qibl znerfyjaf(dMg$U%BR0_`aL2ZyZD}^s2&0RQj*d$H)|CE>6n=lqL1yr%M8!L;@l1=2 zHR7{qrVEe(`*$))H16+{+5Tw|T|YT}XEZp@Ijd5yx8YpmVMONLxxNkeFf^?|fS+}= z>Uf<0o7cH^j1VR!5PrkExklmNLq Sb{6{r7YJ=QmP7l!p9iq#G21_m}8Kvcd83 z6uu`QA3_!ZgJb<3G_4@P 3Nd%XpJnC#!A+3>*{X1vW+BRbic|DWXAZ%0)8iu6~m%&z0lxias>MajSL z1TI}6FRh*>U;!K^^4aO>mntJ-wl+2=jjr&Jwf(2#-VJ$KL*ibc?T^T0l|#?pOWz`U z$XgJHBykUO